
/* 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)

{
  _Base_ptr p_Var1;
  _Rb_tree_color _Var2;
  _Base_ptr p_Var3;
  _Base_ptr p_Var4;
  _Base_ptr p_Var5;
  _Base_ptr p_Var6;
  _Base_ptr p_Var7;
  
  p_Var3 = param_1->_M_left;
  p_Var4 = param_1->_M_right;
  p_Var6 = p_Var4;
  if (p_Var3 == (_Base_ptr)0x0) {
LAB_002dc770:
    p_Var3 = p_Var6;
    p_Var1 = param_1->_M_parent;
    if (p_Var3 != (_Base_ptr)0x0) goto LAB_002dc480;
    p_Var6 = (_Base_ptr)0x0;
  }
  else {
    if (p_Var4 != (_Base_ptr)0x0) {
      do {
        p_Var7 = p_Var6;
        p_Var6 = p_Var7->_M_left;
      } while (p_Var7->_M_left != (_Base_ptr)0x0);
      p_Var6 = p_Var7->_M_right;
      if (p_Var7 != param_1) {
        p_Var3->_M_parent = p_Var7;
        p_Var7->_M_left = p_Var3;
        p_Var1 = p_Var7;
        if (p_Var7 != p_Var4) {
          p_Var1 = p_Var7->_M_parent;
          p_Var3 = p_Var1;
          if (p_Var6 != (_Base_ptr)0x0) {
            p_Var6->_M_parent = p_Var1;
            p_Var3 = p_Var7->_M_parent;
          }
          p_Var3->_M_left = p_Var6;
          p_Var7->_M_right = p_Var4;
          param_1->_M_right->_M_parent = p_Var7;
        }
        if (param_2->_M_parent == param_1) {
          param_2->_M_parent = p_Var7;
          p_Var3 = param_1->_M_parent;
        }
        else {
          p_Var3 = param_1->_M_parent;
          if (p_Var3->_M_left == param_1) {
            p_Var3->_M_left = p_Var7;
          }
          else {
            p_Var3->_M_right = p_Var7;
          }
        }
        p_Var7->_M_parent = p_Var3;
        _Var2 = p_Var7->_M_color;
        p_Var7->_M_color = param_1->_M_color;
        param_1->_M_color = _Var2;
        goto LAB_002dc55f;
      }
      goto LAB_002dc770;
    }
    p_Var1 = param_1->_M_parent;
LAB_002dc480:
    p_Var3->_M_parent = p_Var1;
    p_Var6 = p_Var3;
  }
  if (param_2->_M_parent == param_1) {
    param_2->_M_parent = p_Var6;
  }
  else {
    p_Var3 = param_1->_M_parent;
    if (p_Var3->_M_left == param_1) {
      p_Var3->_M_left = p_Var6;
    }
    else {
      p_Var3->_M_right = p_Var6;
    }
  }
  if (param_2->_M_left == param_1) {
    p_Var3 = p_Var6;
    if (param_1->_M_right == (_Base_ptr)0x0) {
      param_2->_M_left = param_1->_M_parent;
    }
    else {
      do {
        p_Var4 = p_Var3;
        p_Var3 = p_Var4->_M_left;
      } while (p_Var3 != (_Base_ptr)0x0);
      param_2->_M_left = p_Var4;
    }
  }
  _Var2 = param_1->_M_color;
  if (param_2->_M_right == param_1) {
    p_Var3 = p_Var6;
    if (param_1->_M_left == (_Base_ptr)0x0) {
      param_2->_M_right = param_1->_M_parent;
    }
    else {
      do {
        p_Var4 = p_Var3;
        p_Var3 = p_Var4->_M_right;
      } while (p_Var3 != (_Base_ptr)0x0);
      param_2->_M_right = p_Var4;
    }
  }
LAB_002dc55f:
  if (_Var2 == _S_red) {
    return;
  }
  do {
    p_Var3 = p_Var1;
    if (param_2->_M_parent == p_Var6) {
LAB_002dc6f0:
      if (p_Var6 == (_Base_ptr)0x0) {
        return;
      }
LAB_002dc6f5:
      p_Var6->_M_color = _S_black;
      return;
    }
    if ((p_Var6 != (_Base_ptr)0x0) && (p_Var6->_M_color != _S_black)) goto LAB_002dc6f5;
    p_Var4 = p_Var3->_M_left;
    if (p_Var4 != p_Var6) {
      p_Var7 = p_Var4->_M_right;
      p_Var1 = p_Var4;
      if (p_Var4->_M_color == _S_red) {
        p_Var4->_M_color = _S_black;
        p_Var3->_M_color = _S_red;
        p_Var3->_M_left = p_Var7;
        if (p_Var7 != (_Base_ptr)0x0) {
          p_Var7->_M_parent = p_Var3;
        }
        p_Var1 = p_Var3->_M_parent;
        p_Var4->_M_parent = p_Var1;
        if (p_Var3 == param_2->_M_parent) {
          param_2->_M_parent = p_Var4;
          p_Var1 = p_Var3->_M_left;
        }
        else if (p_Var3 == p_Var1->_M_right) {
          p_Var1->_M_right = p_Var4;
          p_Var1 = p_Var7;
        }
        else {
          p_Var1->_M_left = p_Var4;
          p_Var1 = p_Var3->_M_left;
        }
        p_Var4->_M_right = p_Var3;
        p_Var7 = p_Var1->_M_right;
        p_Var3->_M_parent = p_Var4;
      }
      if ((p_Var7 == (_Base_ptr)0x0) || (p_Var7->_M_color == _S_black)) {
        p_Var4 = p_Var1->_M_left;
        if ((p_Var4 == (_Base_ptr)0x0) || (p_Var4->_M_color == _S_black)) goto LAB_002dc5e8;
LAB_002dc82b:
        p_Var5 = p_Var3->_M_left;
        p_Var1->_M_color = p_Var3->_M_color;
        p_Var3->_M_color = _S_black;
LAB_002dc83b:
        p_Var4->_M_color = _S_black;
      }
      else {
        p_Var4 = p_Var1->_M_left;
        if ((p_Var4 != (_Base_ptr)0x0) && (p_Var4->_M_color != _S_black)) goto LAB_002dc82b;
        p_Var4 = p_Var7->_M_left;
        p_Var7->_M_color = _S_black;
        p_Var1->_M_color = _S_red;
        p_Var1->_M_right = p_Var4;
        if (p_Var4 != (_Base_ptr)0x0) {
          p_Var4->_M_parent = p_Var1;
        }
        p_Var4 = p_Var1->_M_parent;
        p_Var7->_M_parent = p_Var4;
        if (p_Var1 == param_2->_M_parent) {
          param_2->_M_parent = p_Var7;
        }
        else if (p_Var1 == p_Var4->_M_left) {
          p_Var4->_M_left = p_Var7;
        }
        else {
          p_Var4->_M_right = p_Var7;
        }
        p_Var7->_M_left = p_Var1;
        p_Var5 = p_Var3->_M_left;
        p_Var1->_M_parent = p_Var7;
        p_Var4 = p_Var5->_M_left;
        p_Var5->_M_color = p_Var3->_M_color;
        p_Var3->_M_color = _S_black;
        if (p_Var4 != (_Base_ptr)0x0) goto LAB_002dc83b;
      }
      p_Var4 = p_Var5->_M_right;
      p_Var3->_M_left = p_Var4;
      if (p_Var4 != (_Base_ptr)0x0) {
        p_Var4->_M_parent = p_Var3;
      }
      p_Var4 = p_Var3->_M_parent;
      p_Var5->_M_parent = p_Var4;
      if (p_Var3 == param_2->_M_parent) {
        param_2->_M_parent = p_Var5;
      }
      else if (p_Var3 == p_Var4->_M_right) {
        p_Var4->_M_right = p_Var5;
      }
      else {
        p_Var4->_M_left = p_Var5;
      }
      p_Var5->_M_right = p_Var3;
      p_Var3->_M_parent = p_Var5;
      goto LAB_002dc6f0;
    }
    p_Var4 = p_Var3->_M_right;
    p_Var7 = p_Var4->_M_left;
    p_Var1 = p_Var4;
    if (p_Var4->_M_color == _S_red) {
      p_Var4->_M_color = _S_black;
      p_Var3->_M_color = _S_red;
      p_Var3->_M_right = p_Var7;
      if (p_Var7 != (_Base_ptr)0x0) {
        p_Var7->_M_parent = p_Var3;
      }
      p_Var1 = p_Var3->_M_parent;
      p_Var4->_M_parent = p_Var1;
      if (p_Var3 == param_2->_M_parent) {
        param_2->_M_parent = p_Var4;
        p_Var1 = p_Var3->_M_right;
      }
      else if (p_Var3 == p_Var1->_M_left) {
        p_Var1->_M_left = p_Var4;
        p_Var1 = p_Var7;
      }
      else {
        p_Var1->_M_right = p_Var4;
        p_Var1 = p_Var3->_M_right;
      }
      p_Var4->_M_left = p_Var3;
      p_Var7 = p_Var1->_M_left;
      p_Var3->_M_parent = p_Var4;
    }
    if ((p_Var7 != (_Base_ptr)0x0) && (p_Var7->_M_color != _S_black)) {
      p_Var4 = p_Var1->_M_right;
      if ((p_Var4 != (_Base_ptr)0x0) && (p_Var4->_M_color != _S_black)) goto LAB_002dc69f;
      p_Var4 = p_Var7->_M_right;
      p_Var7->_M_color = _S_black;
      p_Var1->_M_color = _S_red;
      p_Var1->_M_left = p_Var4;
      if (p_Var4 != (_Base_ptr)0x0) {
        p_Var4->_M_parent = p_Var1;
      }
      p_Var4 = p_Var1->_M_parent;
      p_Var7->_M_parent = p_Var4;
      if (p_Var1 == param_2->_M_parent) {
        param_2->_M_parent = p_Var7;
      }
      else if (p_Var1 == p_Var4->_M_right) {
        p_Var4->_M_right = p_Var7;
      }
      else {
        p_Var4->_M_left = p_Var7;
      }
      p_Var7->_M_right = p_Var1;
      p_Var1->_M_parent = p_Var7;
      p_Var7 = p_Var3->_M_right;
      p_Var4 = p_Var7->_M_right;
      p_Var7->_M_color = p_Var3->_M_color;
      p_Var3->_M_color = _S_black;
      if (p_Var4 != (_Base_ptr)0x0) goto LAB_002dc6af;
LAB_002dc6b5:
      p_Var4 = p_Var7->_M_left;
      p_Var3->_M_right = p_Var4;
      if (p_Var4 != (_Base_ptr)0x0) {
        p_Var4->_M_parent = p_Var3;
      }
      p_Var4 = p_Var3->_M_parent;
      p_Var7->_M_parent = p_Var4;
      if (p_Var3 == param_2->_M_parent) {
        param_2->_M_parent = p_Var7;
      }
      else if (p_Var3 == p_Var4->_M_left) {
        p_Var4->_M_left = p_Var7;
      }
      else {
        p_Var4->_M_right = p_Var7;
      }
      p_Var7->_M_left = p_Var3;
      p_Var3->_M_parent = p_Var7;
      goto LAB_002dc6f0;
    }
    p_Var4 = p_Var1->_M_right;
    if ((p_Var4 != (_Base_ptr)0x0) && (p_Var4->_M_color != _S_black)) {
LAB_002dc69f:
      p_Var7 = p_Var3->_M_right;
      p_Var1->_M_color = p_Var3->_M_color;
      p_Var3->_M_color = _S_black;
LAB_002dc6af:
      p_Var4->_M_color = _S_black;
      goto LAB_002dc6b5;
    }
LAB_002dc5e8:
    p_Var1->_M_color = _S_red;
    p_Var1 = p_Var3->_M_parent;
    p_Var6 = p_Var3;
  } while( true );
}



void FUN_002dc460(int *param_1,long param_2)

{
  int *piVar1;
  int iVar2;
  int *piVar3;
  long lVar4;
  int *piVar5;
  int *piVar6;
  int *piVar7;
  int *piVar8;
  
  piVar3 = *(int **)(param_1 + 4);
  piVar5 = *(int **)(param_1 + 6);
  piVar7 = piVar5;
  if (piVar3 == (int *)0x0) {
LAB_002dc770:
    piVar3 = piVar7;
    piVar1 = *(int **)(param_1 + 2);
    if (piVar3 != (int *)0x0) goto LAB_002dc480;
    piVar7 = (int *)0x0;
  }
  else {
    if (piVar5 != (int *)0x0) {
      do {
        piVar8 = piVar7;
        piVar7 = *(int **)(piVar8 + 4);
      } while (*(int **)(piVar8 + 4) != (int *)0x0);
      piVar7 = *(int **)(piVar8 + 6);
      if (piVar8 != param_1) {
        *(int **)(piVar3 + 2) = piVar8;
        *(int **)(piVar8 + 4) = piVar3;
        piVar1 = piVar8;
        if (piVar8 != piVar5) {
          piVar1 = *(int **)(piVar8 + 2);
          piVar3 = piVar1;
          if (piVar7 != (int *)0x0) {
            *(int **)(piVar7 + 2) = piVar1;
            piVar3 = *(int **)(piVar8 + 2);
          }
          *(int **)(piVar3 + 4) = piVar7;
          *(int **)(piVar8 + 6) = piVar5;
          *(int **)(*(long *)(param_1 + 6) + 8) = piVar8;
        }
        if (*(int **)(param_2 + 8) == param_1) {
          *(int **)(param_2 + 8) = piVar8;
          lVar4 = *(long *)(param_1 + 2);
        }
        else {
          lVar4 = *(long *)(param_1 + 2);
          if (*(int **)(lVar4 + 0x10) == param_1) {
            *(int **)(lVar4 + 0x10) = piVar8;
          }
          else {
            *(int **)(lVar4 + 0x18) = piVar8;
          }
        }
        *(long *)(piVar8 + 2) = lVar4;
        iVar2 = *piVar8;
        *piVar8 = *param_1;
        *param_1 = iVar2;
        goto LAB_002dc55f;
      }
      goto LAB_002dc770;
    }
    piVar1 = *(int **)(param_1 + 2);
LAB_002dc480:
    *(int **)(piVar3 + 2) = piVar1;
    piVar7 = piVar3;
  }
  if (*(int **)(param_2 + 8) == param_1) {
    *(int **)(param_2 + 8) = piVar7;
  }
  else {
    lVar4 = *(long *)(param_1 + 2);
    if (*(int **)(lVar4 + 0x10) == param_1) {
      *(int **)(lVar4 + 0x10) = piVar7;
    }
    else {
      *(int **)(lVar4 + 0x18) = piVar7;
    }
  }
  if (*(int **)(param_2 + 0x10) == param_1) {
    piVar3 = piVar7;
    if (*(long *)(param_1 + 6) == 0) {
      *(undefined8 *)(param_2 + 0x10) = *(undefined8 *)(param_1 + 2);
    }
    else {
      do {
        piVar5 = piVar3;
        piVar3 = *(int **)(piVar5 + 4);
      } while (piVar3 != (int *)0x0);
      *(int **)(param_2 + 0x10) = piVar5;
    }
  }
  iVar2 = *param_1;
  if (*(int **)(param_2 + 0x18) == param_1) {
    piVar3 = piVar7;
    if (*(long *)(param_1 + 4) == 0) {
      *(undefined8 *)(param_2 + 0x18) = *(undefined8 *)(param_1 + 2);
    }
    else {
      do {
        piVar5 = piVar3;
        piVar3 = *(int **)(piVar5 + 6);
      } while (piVar3 != (int *)0x0);
      *(int **)(param_2 + 0x18) = piVar5;
    }
  }
LAB_002dc55f:
  if (iVar2 == 0) {
    return;
  }
  do {
    piVar3 = piVar1;
    if (*(int **)(param_2 + 8) == piVar7) {
LAB_002dc6f0:
      if (piVar7 == (int *)0x0) {
        return;
      }
LAB_002dc6f5:
      *piVar7 = 1;
      return;
    }
    if ((piVar7 != (int *)0x0) && (*piVar7 != 1)) goto LAB_002dc6f5;
    piVar5 = *(int **)(piVar3 + 4);
    if (piVar5 != piVar7) {
      piVar8 = *(int **)(piVar5 + 6);
      piVar1 = piVar5;
      if (*piVar5 == 0) {
        *piVar5 = 1;
        *piVar3 = 0;
        *(int **)(piVar3 + 4) = piVar8;
        if (piVar8 != (int *)0x0) {
          *(int **)(piVar8 + 2) = piVar3;
        }
        lVar4 = *(long *)(piVar3 + 2);
        *(long *)(piVar5 + 2) = lVar4;
        if (piVar3 == *(int **)(param_2 + 8)) {
          *(int **)(param_2 + 8) = piVar5;
          piVar1 = *(int **)(piVar3 + 4);
        }
        else if (piVar3 == *(int **)(lVar4 + 0x18)) {
          *(int **)(lVar4 + 0x18) = piVar5;
          piVar1 = piVar8;
        }
        else {
          *(int **)(lVar4 + 0x10) = piVar5;
          piVar1 = *(int **)(piVar3 + 4);
        }
        *(int **)(piVar5 + 6) = piVar3;
        piVar8 = *(int **)(piVar1 + 6);
        *(int **)(piVar3 + 2) = piVar5;
      }
      if ((piVar8 == (int *)0x0) || (*piVar8 == 1)) {
        piVar5 = *(int **)(piVar1 + 4);
        if ((piVar5 == (int *)0x0) || (*piVar5 == 1)) goto LAB_002dc5e8;
LAB_002dc82b:
        piVar6 = *(int **)(piVar3 + 4);
        *piVar1 = *piVar3;
        *piVar3 = 1;
LAB_002dc83b:
        *piVar5 = 1;
      }
      else {
        piVar5 = *(int **)(piVar1 + 4);
        if ((piVar5 != (int *)0x0) && (*piVar5 != 1)) goto LAB_002dc82b;
        lVar4 = *(long *)(piVar8 + 4);
        *piVar8 = 1;
        *piVar1 = 0;
        *(long *)(piVar1 + 6) = lVar4;
        if (lVar4 != 0) {
          *(int **)(lVar4 + 8) = piVar1;
        }
        lVar4 = *(long *)(piVar1 + 2);
        *(long *)(piVar8 + 2) = lVar4;
        if (piVar1 == *(int **)(param_2 + 8)) {
          *(int **)(param_2 + 8) = piVar8;
        }
        else if (piVar1 == *(int **)(lVar4 + 0x10)) {
          *(int **)(lVar4 + 0x10) = piVar8;
        }
        else {
          *(int **)(lVar4 + 0x18) = piVar8;
        }
        *(int **)(piVar8 + 4) = piVar1;
        piVar6 = *(int **)(piVar3 + 4);
        *(int **)(piVar1 + 2) = piVar8;
        piVar5 = *(int **)(piVar6 + 4);
        *piVar6 = *piVar3;
        *piVar3 = 1;
        if (piVar5 != (int *)0x0) goto LAB_002dc83b;
      }
      lVar4 = *(long *)(piVar6 + 6);
      *(long *)(piVar3 + 4) = lVar4;
      if (lVar4 != 0) {
        *(int **)(lVar4 + 8) = piVar3;
      }
      lVar4 = *(long *)(piVar3 + 2);
      *(long *)(piVar6 + 2) = lVar4;
      if (piVar3 == *(int **)(param_2 + 8)) {
        *(int **)(param_2 + 8) = piVar6;
      }
      else if (piVar3 == *(int **)(lVar4 + 0x18)) {
        *(int **)(lVar4 + 0x18) = piVar6;
      }
      else {
        *(int **)(lVar4 + 0x10) = piVar6;
      }
      *(int **)(piVar6 + 6) = piVar3;
      *(int **)(piVar3 + 2) = piVar6;
      goto LAB_002dc6f0;
    }
    piVar5 = *(int **)(piVar3 + 6);
    piVar8 = *(int **)(piVar5 + 4);
    piVar1 = piVar5;
    if (*piVar5 == 0) {
      *piVar5 = 1;
      *piVar3 = 0;
      *(int **)(piVar3 + 6) = piVar8;
      if (piVar8 != (int *)0x0) {
        *(int **)(piVar8 + 2) = piVar3;
      }
      lVar4 = *(long *)(piVar3 + 2);
      *(long *)(piVar5 + 2) = lVar4;
      if (piVar3 == *(int **)(param_2 + 8)) {
        *(int **)(param_2 + 8) = piVar5;
        piVar1 = *(int **)(piVar3 + 6);
      }
      else if (piVar3 == *(int **)(lVar4 + 0x10)) {
        *(int **)(lVar4 + 0x10) = piVar5;
        piVar1 = piVar8;
      }
      else {
        *(int **)(lVar4 + 0x18) = piVar5;
        piVar1 = *(int **)(piVar3 + 6);
      }
      *(int **)(piVar5 + 4) = piVar3;
      piVar8 = *(int **)(piVar1 + 4);
      *(int **)(piVar3 + 2) = piVar5;
    }
    if ((piVar8 != (int *)0x0) && (*piVar8 != 1)) {
      piVar5 = *(int **)(piVar1 + 6);
      if ((piVar5 != (int *)0x0) && (*piVar5 != 1)) goto LAB_002dc69f;
      lVar4 = *(long *)(piVar8 + 6);
      *piVar8 = 1;
      *piVar1 = 0;
      *(long *)(piVar1 + 4) = lVar4;
      if (lVar4 != 0) {
        *(int **)(lVar4 + 8) = piVar1;
      }
      lVar4 = *(long *)(piVar1 + 2);
      *(long *)(piVar8 + 2) = lVar4;
      if (piVar1 == *(int **)(param_2 + 8)) {
        *(int **)(param_2 + 8) = piVar8;
      }
      else if (piVar1 == *(int **)(lVar4 + 0x18)) {
        *(int **)(lVar4 + 0x18) = piVar8;
      }
      else {
        *(int **)(lVar4 + 0x10) = piVar8;
      }
      *(int **)(piVar8 + 6) = piVar1;
      *(int **)(piVar1 + 2) = piVar8;
      piVar8 = *(int **)(piVar3 + 6);
      piVar5 = *(int **)(piVar8 + 6);
      *piVar8 = *piVar3;
      *piVar3 = 1;
      if (piVar5 != (int *)0x0) goto LAB_002dc6af;
LAB_002dc6b5:
      lVar4 = *(long *)(piVar8 + 4);
      *(long *)(piVar3 + 6) = lVar4;
      if (lVar4 != 0) {
        *(int **)(lVar4 + 8) = piVar3;
      }
      lVar4 = *(long *)(piVar3 + 2);
      *(long *)(piVar8 + 2) = lVar4;
      if (piVar3 == *(int **)(param_2 + 8)) {
        *(int **)(param_2 + 8) = piVar8;
      }
      else if (piVar3 == *(int **)(lVar4 + 0x10)) {
        *(int **)(lVar4 + 0x10) = piVar8;
      }
      else {
        *(int **)(lVar4 + 0x18) = piVar8;
      }
      *(int **)(piVar8 + 4) = piVar3;
      *(int **)(piVar3 + 2) = piVar8;
      goto LAB_002dc6f0;
    }
    piVar5 = *(int **)(piVar1 + 6);
    if ((piVar5 != (int *)0x0) && (*piVar5 != 1)) {
LAB_002dc69f:
      piVar8 = *(int **)(piVar3 + 6);
      *piVar1 = *piVar3;
      *piVar3 = 1;
LAB_002dc6af:
      *piVar5 = 1;
      goto LAB_002dc6b5;
    }
LAB_002dc5e8:
    *piVar1 = 0;
    piVar1 = *(int **)(piVar3 + 2);
    piVar7 = piVar3;
  } while( true );
}


MOV RAX,RDI
MOV RDI,qword ptr [RDI + 0x10]
MOV R9,qword ptr [RAX + 0x18]
TEST RDI,RDI
JZ 0x002dc770
MOV RCX,R9
TEST R9,R9
JNZ 0x002dc4eb
MOV RDX,qword ptr [RAX + 0x8]
MOV qword ptr [RDI + 0x8],RDX
MOV R8,RDI
CMP qword ptr [RSI + 0x8],RAX
JZ 0x002dc7b8
MOV RCX,qword ptr [RAX + 0x8]
CMP qword ptr [RCX + 0x10],RAX
JZ 0x002dc74c
MOV qword ptr [RCX + 0x18],R8
CMP qword ptr [RSI + 0x10],RAX
JZ 0x002dc788
MOV EDI,dword ptr [RAX]
CMP qword ptr [RSI + 0x18],RAX
JNZ 0x002dc55f
CMP qword ptr [RAX + 0x10],0x0
MOV R9,R8
JNZ 0x002dc4d3
JMP 0x002dc905
MOV R9,RCX
MOV RCX,qword ptr [R9 + 0x18]
TEST RCX,RCX
JNZ 0x002dc4d0
MOV qword ptr [RSI + 0x18],R9
JMP 0x002dc55f
MOV RCX,RDX
MOV RDX,qword ptr [RCX + 0x10]
TEST RDX,RDX
JNZ 0x002dc4e8
MOV R8,qword ptr [RCX + 0x18]
CMP RCX,RAX
JZ 0x002dc769
MOV qword ptr [RDI + 0x8],RCX
MOV RDX,RCX
MOV qword ptr [RCX + 0x10],RDI
CMP RCX,R9
JZ 0x002dc535
MOV RDX,qword ptr [RCX + 0x8]
MOV RDI,RDX
TEST R8,R8
JZ 0x002dc525
MOV qword ptr [R8 + 0x8],RDX
MOV RDI,qword ptr [RCX + 0x8]
MOV qword ptr [RDI + 0x10],R8
MOV qword ptr [RCX + 0x18],R9
MOV RDI,qword ptr [RAX + 0x18]
MOV qword ptr [RDI + 0x8],RCX
CMP qword ptr [RSI + 0x8],RAX
JZ 0x002dc700
MOV RDI,qword ptr [RAX + 0x8]
CMP qword ptr [RDI + 0x10],RAX
JZ 0x002dc760
MOV qword ptr [RDI + 0x18],RCX
MOV qword ptr [RCX + 0x8],RDI
MOV R9D,dword ptr [RAX]
MOV EDI,dword ptr [RCX]
MOV dword ptr [RCX],R9D
MOV dword ptr [RAX],EDI
TEST EDI,EDI
JNZ 0x002dc5f8
RET
MOV EDI,dword ptr [RCX]
MOV R9,qword ptr [RCX + 0x18]
TEST EDI,EDI
JNZ 0x002dc5c6
MOV dword ptr [RCX],0x1
MOV dword ptr [RDX],0x0
MOV qword ptr [RDX + 0x10],R9
TEST R9,R9
JZ 0x002dc593
MOV qword ptr [R9 + 0x8],RDX
MOV RDI,qword ptr [RDX + 0x8]
MOV qword ptr [RCX + 0x8],RDI
CMP RDX,qword ptr [RSI + 0x8]
JZ 0x002dc710
CMP RDX,qword ptr [RDI + 0x18]
JZ 0x002dc720
MOV qword ptr [RDI + 0x10],RCX
MOV RDI,qword ptr [RDX + 0x10]
MOV qword ptr [RCX + 0x18],RDX
MOV R9,qword ptr [RDI + 0x18]
MOV qword ptr [RDX + 0x8],RCX
MOV RCX,RDI
TEST R9,R9
JZ 0x002dc5d5
CMP dword ptr [R9],0x1
JNZ 0x002dc7c1
MOV R10,qword ptr [RCX + 0x10]
TEST R10,R10
JZ 0x002dc5e8
CMP dword ptr [R10],0x1
JNZ 0x002dc82b
MOV dword ptr [RCX],0x0
MOV RCX,qword ptr [RDX + 0x8]
MOV R8,RDX
MOV RDX,RCX
CMP qword ptr [RSI + 0x8],R8
JZ 0x002dc6f0
TEST R8,R8
JZ 0x002dc611
CMP dword ptr [R8],0x1
JNZ 0x002dc6f5
MOV RCX,qword ptr [RDX + 0x10]
CMP RCX,R8
JNZ 0x002dc570
MOV RCX,qword ptr [RDX + 0x18]
MOV R10D,dword ptr [RCX]
MOV R9,qword ptr [RCX + 0x10]
TEST R10D,R10D
JNZ 0x002dc67a
MOV dword ptr [RCX],0x1
MOV dword ptr [RDX],0x0
MOV qword ptr [RDX + 0x18],R9
TEST R9,R9
JZ 0x002dc647
MOV qword ptr [R9 + 0x8],RDX
MOV RDI,qword ptr [RDX + 0x8]
MOV qword ptr [RCX + 0x8],RDI
CMP RDX,qword ptr [RSI + 0x8]
JZ 0x002dc730
CMP RDX,qword ptr [RDI + 0x10]
JZ 0x002dc740
MOV qword ptr [RDI + 0x18],RCX
MOV RDI,qword ptr [RDX + 0x18]
MOV qword ptr [RCX + 0x10],RDX
MOV R9,qword ptr [RDI + 0x10]
MOV qword ptr [RDX + 0x8],RCX
MOV RCX,RDI
TEST R9,R9
JZ 0x002dc689
CMP dword ptr [R9],0x1
JNZ 0x002dc888
MOV RDI,qword ptr [RCX + 0x18]
TEST RDI,RDI
JZ 0x002dc5e8
CMP dword ptr [RDI],0x1
JZ 0x002dc5e8
MOV R10D,dword ptr [RDX]
MOV R9,qword ptr [RDX + 0x18]
MOV dword ptr [RCX],R10D
MOV dword ptr [RDX],0x1
MOV dword ptr [RDI],0x1
MOV RCX,qword ptr [R9 + 0x10]
MOV qword ptr [RDX + 0x18],RCX
TEST RCX,RCX
JZ 0x002dc6c6
MOV qword ptr [RCX + 0x8],RDX
MOV RCX,qword ptr [RDX + 0x8]
MOV qword ptr [R9 + 0x8],RCX
CMP RDX,qword ptr [RSI + 0x8]
JZ 0x002dc928
CMP RDX,qword ptr [RCX + 0x10]
JZ 0x002dc940
MOV qword ptr [RCX + 0x18],R9
MOV qword ptr [R9 + 0x10],RDX
MOV qword ptr [RDX + 0x8],R9
NOP
TEST R8,R8
JZ 0x002dc758
MOV dword ptr [R8],0x1
RET
MOV qword ptr [RSI + 0x8],RCX
MOV RDI,qword ptr [RAX + 0x8]
JMP 0x002dc551
MOV qword ptr [RSI + 0x8],RCX
MOV RDI,qword ptr [RDX + 0x10]
JMP 0x002dc5b7
MOV qword ptr [RDI + 0x18],RCX
MOV RDI,R9
JMP 0x002dc5b7
MOV qword ptr [RSI + 0x8],RCX
MOV RDI,qword ptr [RDX + 0x18]
JMP 0x002dc66b
MOV qword ptr [RDI + 0x10],RCX
MOV RDI,R9
JMP 0x002dc66b
MOV qword ptr [RCX + 0x10],R8
JMP 0x002dc4a3
RET
MOV qword ptr [RDI + 0x10],RCX
JMP 0x002dc551
MOV R9,R8
NOP dword ptr [RAX]
MOV RDX,qword ptr [RAX + 0x8]
TEST R9,R9
JNZ 0x002dc95b
XOR R8D,R8D
JMP 0x002dc487
CMP qword ptr [RAX + 0x18],0x0
MOV RDI,R8
JNZ 0x002dc7a3
JMP 0x002dc912
MOV RDI,RCX
MOV RCX,qword ptr [RDI + 0x10]
TEST RCX,RCX
JNZ 0x002dc7a0
MOV qword ptr [RSI + 0x10],RDI
JMP 0x002dc4ad
MOV qword ptr [RSI + 0x8],R8
JMP 0x002dc4a3
MOV R10,qword ptr [RCX + 0x10]
TEST R10,R10
JNZ 0x002dc825
MOV RDI,qword ptr [R9 + 0x10]
MOV dword ptr [R9],0x1
MOV dword ptr [RCX],0x0
MOV qword ptr [RCX + 0x18],RDI
TEST RDI,RDI
JZ 0x002dc7e8
MOV qword ptr [RDI + 0x8],RCX
MOV RDI,qword ptr [RCX + 0x8]
MOV qword ptr [R9 + 0x8],RDI
CMP RCX,qword ptr [RSI + 0x8]
JZ 0x002dc91f
CMP RCX,qword ptr [RDI + 0x10]
JZ 0x002dc87c
MOV qword ptr [RDI + 0x18],R9
MOV qword ptr [R9 + 0x10],RCX
MOV RDI,qword ptr [RDX + 0x10]
MOV qword ptr [RCX + 0x8],R9
MOV ECX,dword ptr [RDX]
MOV R10,qword ptr [RDI + 0x10]
MOV dword ptr [RDI],ECX
MOV dword ptr [RDX],0x1
TEST R10,R10
JZ 0x002dc842
JMP 0x002dc83b
CMP dword ptr [R10],0x1
JZ 0x002dc7ca
MOV R9D,dword ptr [RDX]
MOV RDI,qword ptr [RDX + 0x10]
MOV dword ptr [RCX],R9D
MOV dword ptr [RDX],0x1
MOV dword ptr [R10],0x1
MOV RCX,qword ptr [RDI + 0x18]
MOV qword ptr [RDX + 0x10],RCX
TEST RCX,RCX
JZ 0x002dc853
MOV qword ptr [RCX + 0x8],RDX
MOV RCX,qword ptr [RDX + 0x8]
MOV qword ptr [RDI + 0x8],RCX
CMP RDX,qword ptr [RSI + 0x8]
JZ 0x002dc882
CMP RDX,qword ptr [RCX + 0x18]
JZ 0x002dc8fc
MOV qword ptr [RCX + 0x10],RDI
MOV qword ptr [RDI + 0x18],RDX
MOV qword ptr [RDX + 0x8],RDI
JMP 0x002dc6f0
MOV qword ptr [RDI + 0x10],R9
JMP 0x002dc804
MOV qword ptr [RSI + 0x8],RDI
JMP 0x002dc86f
MOV RDI,qword ptr [RCX + 0x18]
TEST RDI,RDI
JNZ 0x002dc931
MOV RDI,qword ptr [R9 + 0x18]
MOV dword ptr [R9],0x1
MOV dword ptr [RCX],0x0
MOV qword ptr [RCX + 0x10],RDI
TEST RDI,RDI
JZ 0x002dc8b3
MOV qword ptr [RDI + 0x8],RCX
MOV RDI,qword ptr [RCX + 0x8]
MOV qword ptr [R9 + 0x8],RDI
CMP RCX,qword ptr [RSI + 0x8]
JZ 0x002dc949
CMP RCX,qword ptr [RDI + 0x18]
JZ 0x002dc952
MOV qword ptr [RDI + 0x10],R9
MOV qword ptr [R9 + 0x18],RCX
MOV qword ptr [RCX + 0x8],R9
MOV R9,qword ptr [RDX + 0x18]
MOV ECX,dword ptr [RDX]
MOV RDI,qword ptr [R9 + 0x18]
MOV dword ptr [R9],ECX
MOV dword ptr [RDX],0x1
TEST RDI,RDI
JZ 0x002dc6b5
JMP 0x002dc6af
MOV qword ptr [RCX + 0x18],RDI
JMP 0x002dc86f
MOV RCX,qword ptr [RAX + 0x8]
MOV qword ptr [RSI + 0x18],RCX
JMP 0x002dc55f
MOV RCX,qword ptr [RAX + 0x8]
MOV qword ptr [RSI + 0x10],RCX
JMP 0x002dc4ad
MOV qword ptr [RSI + 0x8],R9
JMP 0x002dc804
MOV qword ptr [RSI + 0x8],R9
JMP 0x002dc6e6
CMP dword ptr [RDI],0x1
JZ 0x002dc895
JMP 0x002dc69f
MOV qword ptr [RCX + 0x10],R9
JMP 0x002dc6e6
MOV qword ptr [RSI + 0x8],R9
JMP 0x002dc8d3
MOV qword ptr [RDI + 0x18],R9
JMP 0x002dc8d3
MOV RDI,R9
JMP 0x002dc480
(translation_unit "void FUN_002dc460(int *param_1,long param_2)\n\n{\n  int *piVar1;\n  int iVar2;\n  int *piVar3;\n  long lVar4;\n  int *piVar5;\n  int *piVar6;\n  int *piVar7;\n  int *piVar8;\n  \n  piVar3 = *(int **)(param_1 + 4);\n  piVar5 = *(int **)(param_1 + 6);\n  piVar7 = piVar5;\n  if (piVar3 == (int *)0x0) {\nLAB_002dc770:\n    piVar3 = piVar7;\n    piVar1 = *(int **)(param_1 + 2);\n    if (piVar3 != (int *)0x0) goto LAB_002dc480;\n    piVar7 = (int *)0x0;\n  }\n  else {\n    if (piVar5 != (int *)0x0) {\n      do {\n        piVar8 = piVar7;\n        piVar7 = *(int **)(piVar8 + 4);\n      } while (*(int **)(piVar8 + 4) != (int *)0x0);\n      piVar7 = *(int **)(piVar8 + 6);\n      if (piVar8 != param_1) {\n        *(int **)(piVar3 + 2) = piVar8;\n        *(int **)(piVar8 + 4) = piVar3;\n        piVar1 = piVar8;\n        if (piVar8 != piVar5) {\n          piVar1 = *(int **)(piVar8 + 2);\n          piVar3 = piVar1;\n          if (piVar7 != (int *)0x0) {\n            *(int **)(piVar7 + 2) = piVar1;\n            piVar3 = *(int **)(piVar8 + 2);\n          }\n          *(int **)(piVar3 + 4) = piVar7;\n          *(int **)(piVar8 + 6) = piVar5;\n          *(int **)(*(long *)(param_1 + 6) + 8) = piVar8;\n        }\n        if (*(int **)(param_2 + 8) == param_1) {\n          *(int **)(param_2 + 8) = piVar8;\n          lVar4 = *(long *)(param_1 + 2);\n        }\n        else {\n          lVar4 = *(long *)(param_1 + 2);\n          if (*(int **)(lVar4 + 0x10) == param_1) {\n            *(int **)(lVar4 + 0x10) = piVar8;\n          }\n          else {\n            *(int **)(lVar4 + 0x18) = piVar8;\n          }\n        }\n        *(long *)(piVar8 + 2) = lVar4;\n        iVar2 = *piVar8;\n        *piVar8 = *param_1;\n        *param_1 = iVar2;\n        goto LAB_002dc55f;\n      }\n      goto LAB_002dc770;\n    }\n    piVar1 = *(int **)(param_1 + 2);\nLAB_002dc480:\n    *(int **)(piVar3 + 2) = piVar1;\n    piVar7 = piVar3;\n  }\n  if (*(int **)(param_2 + 8) == param_1) {\n    *(int **)(param_2 + 8) = piVar7;\n  }\n  else {\n    lVar4 = *(long *)(param_1 + 2);\n    if (*(int **)(lVar4 + 0x10) == param_1) {\n      *(int **)(lVar4 + 0x10) = piVar7;\n    }\n    else {\n      *(int **)(lVar4 + 0x18) = piVar7;\n    }\n  }\n  if (*(int **)(param_2 + 0x10) == param_1) {\n    piVar3 = piVar7;\n    if (*(long *)(param_1 + 6) == 0) {\n      *(undefined8 *)(param_2 + 0x10) = *(undefined8 *)(param_1 + 2);\n    }\n    else {\n      do {\n        piVar5 = piVar3;\n        piVar3 = *(int **)(piVar5 + 4);\n      } while (piVar3 != (int *)0x0);\n      *(int **)(param_2 + 0x10) = piVar5;\n    }\n  }\n  iVar2 = *param_1;\n  if (*(int **)(param_2 + 0x18) == param_1) {\n    piVar3 = piVar7;\n    if (*(long *)(param_1 + 4) == 0) {\n      *(undefined8 *)(param_2 + 0x18) = *(undefined8 *)(param_1 + 2);\n    }\n    else {\n      do {\n        piVar5 = piVar3;\n        piVar3 = *(int **)(piVar5 + 6);\n      } while (piVar3 != (int *)0x0);\n      *(int **)(param_2 + 0x18) = piVar5;\n    }\n  }\nLAB_002dc55f:\n  if (iVar2 == 0) {\n    return;\n  }\n  do {\n    piVar3 = piVar1;\n    if (*(int **)(param_2 + 8) == piVar7) {\nLAB_002dc6f0:\n      if (piVar7 == (int *)0x0) {\n        return;\n      }\nLAB_002dc6f5:\n      *piVar7 = 1;\n      return;\n    }\n    if ((piVar7 != (int *)0x0) && (*piVar7 != 1)) goto LAB_002dc6f5;\n    piVar5 = *(int **)(piVar3 + 4);\n    if (piVar5 != piVar7) {\n      piVar8 = *(int **)(piVar5 + 6);\n      piVar1 = piVar5;\n      if (*piVar5 == 0) {\n        *piVar5 = 1;\n        *piVar3 = 0;\n        *(int **)(piVar3 + 4) = piVar8;\n        if (piVar8 != (int *)0x0) {\n          *(int **)(piVar8 + 2) = piVar3;\n        }\n        lVar4 = *(long *)(piVar3 + 2);\n        *(long *)(piVar5 + 2) = lVar4;\n        if (piVar3 == *(int **)(param_2 + 8)) {\n          *(int **)(param_2 + 8) = piVar5;\n          piVar1 = *(int **)(piVar3 + 4);\n        }\n        else if (piVar3 == *(int **)(lVar4 + 0x18)) {\n          *(int **)(lVar4 + 0x18) = piVar5;\n          piVar1 = piVar8;\n        }\n        else {\n          *(int **)(lVar4 + 0x10) = piVar5;\n          piVar1 = *(int **)(piVar3 + 4);\n        }\n        *(int **)(piVar5 + 6) = piVar3;\n        piVar8 = *(int **)(piVar1 + 6);\n        *(int **)(piVar3 + 2) = piVar5;\n      }\n      if ((piVar8 == (int *)0x0) || (*piVar8 == 1)) {\n        piVar5 = *(int **)(piVar1 + 4);\n        if ((piVar5 == (int *)0x0) || (*piVar5 == 1)) goto LAB_002dc5e8;\nLAB_002dc82b:\n        piVar6 = *(int **)(piVar3 + 4);\n        *piVar1 = *piVar3;\n        *piVar3 = 1;\nLAB_002dc83b:\n        *piVar5 = 1;\n      }\n      else {\n        piVar5 = *(int **)(piVar1 + 4);\n        if ((piVar5 != (int *)0x0) && (*piVar5 != 1)) goto LAB_002dc82b;\n        lVar4 = *(long *)(piVar8 + 4);\n        *piVar8 = 1;\n        *piVar1 = 0;\n        *(long *)(piVar1 + 6) = lVar4;\n        if (lVar4 != 0) {\n          *(int **)(lVar4 + 8) = piVar1;\n        }\n        lVar4 = *(long *)(piVar1 + 2);\n        *(long *)(piVar8 + 2) = lVar4;\n        if (piVar1 == *(int **)(param_2 + 8)) {\n          *(int **)(param_2 + 8) = piVar8;\n        }\n        else if (piVar1 == *(int **)(lVar4 + 0x10)) {\n          *(int **)(lVar4 + 0x10) = piVar8;\n        }\n        else {\n          *(int **)(lVar4 + 0x18) = piVar8;\n        }\n        *(int **)(piVar8 + 4) = piVar1;\n        piVar6 = *(int **)(piVar3 + 4);\n        *(int **)(piVar1 + 2) = piVar8;\n        piVar5 = *(int **)(piVar6 + 4);\n        *piVar6 = *piVar3;\n        *piVar3 = 1;\n        if (piVar5 != (int *)0x0) goto LAB_002dc83b;\n      }\n      lVar4 = *(long *)(piVar6 + 6);\n      *(long *)(piVar3 + 4) = lVar4;\n      if (lVar4 != 0) {\n        *(int **)(lVar4 + 8) = piVar3;\n      }\n      lVar4 = *(long *)(piVar3 + 2);\n      *(long *)(piVar6 + 2) = lVar4;\n      if (piVar3 == *(int **)(param_2 + 8)) {\n        *(int **)(param_2 + 8) = piVar6;\n      }\n      else if (piVar3 == *(int **)(lVar4 + 0x18)) {\n        *(int **)(lVar4 + 0x18) = piVar6;\n      }\n      else {\n        *(int **)(lVar4 + 0x10) = piVar6;\n      }\n      *(int **)(piVar6 + 6) = piVar3;\n      *(int **)(piVar3 + 2) = piVar6;\n      goto LAB_002dc6f0;\n    }\n    piVar5 = *(int **)(piVar3 + 6);\n    piVar8 = *(int **)(piVar5 + 4);\n    piVar1 = piVar5;\n    if (*piVar5 == 0) {\n      *piVar5 = 1;\n      *piVar3 = 0;\n      *(int **)(piVar3 + 6) = piVar8;\n      if (piVar8 != (int *)0x0) {\n        *(int **)(piVar8 + 2) = piVar3;\n      }\n      lVar4 = *(long *)(piVar3 + 2);\n      *(long *)(piVar5 + 2) = lVar4;\n      if (piVar3 == *(int **)(param_2 + 8)) {\n        *(int **)(param_2 + 8) = piVar5;\n        piVar1 = *(int **)(piVar3 + 6);\n      }\n      else if (piVar3 == *(int **)(lVar4 + 0x10)) {\n        *(int **)(lVar4 + 0x10) = piVar5;\n        piVar1 = piVar8;\n      }\n      else {\n        *(int **)(lVar4 + 0x18) = piVar5;\n        piVar1 = *(int **)(piVar3 + 6);\n      }\n      *(int **)(piVar5 + 4) = piVar3;\n      piVar8 = *(int **)(piVar1 + 4);\n      *(int **)(piVar3 + 2) = piVar5;\n    }\n    if ((piVar8 != (int *)0x0) && (*piVar8 != 1)) {\n      piVar5 = *(int **)(piVar1 + 6);\n      if ((piVar5 != (int *)0x0) && (*piVar5 != 1)) goto LAB_002dc69f;\n      lVar4 = *(long *)(piVar8 + 6);\n      *piVar8 = 1;\n      *piVar1 = 0;\n      *(long *)(piVar1 + 4) = lVar4;\n      if (lVar4 != 0) {\n        *(int **)(lVar4 + 8) = piVar1;\n      }\n      lVar4 = *(long *)(piVar1 + 2);\n      *(long *)(piVar8 + 2) = lVar4;\n      if (piVar1 == *(int **)(param_2 + 8)) {\n        *(int **)(param_2 + 8) = piVar8;\n      }\n      else if (piVar1 == *(int **)(lVar4 + 0x18)) {\n        *(int **)(lVar4 + 0x18) = piVar8;\n      }\n      else {\n        *(int **)(lVar4 + 0x10) = piVar8;\n      }\n      *(int **)(piVar8 + 6) = piVar1;\n      *(int **)(piVar1 + 2) = piVar8;\n      piVar8 = *(int **)(piVar3 + 6);\n      piVar5 = *(int **)(piVar8 + 6);\n      *piVar8 = *piVar3;\n      *piVar3 = 1;\n      if (piVar5 != (int *)0x0) goto LAB_002dc6af;\nLAB_002dc6b5:\n      lVar4 = *(long *)(piVar8 + 4);\n      *(long *)(piVar3 + 6) = lVar4;\n      if (lVar4 != 0) {\n        *(int **)(lVar4 + 8) = piVar3;\n      }\n      lVar4 = *(long *)(piVar3 + 2);\n      *(long *)(piVar8 + 2) = lVar4;\n      if (piVar3 == *(int **)(param_2 + 8)) {\n        *(int **)(param_2 + 8) = piVar8;\n      }\n      else if (piVar3 == *(int **)(lVar4 + 0x10)) {\n        *(int **)(lVar4 + 0x10) = piVar8;\n      }\n      else {\n        *(int **)(lVar4 + 0x18) = piVar8;\n      }\n      *(int **)(piVar8 + 4) = piVar3;\n      *(int **)(piVar3 + 2) = piVar8;\n      goto LAB_002dc6f0;\n    }\n    piVar5 = *(int **)(piVar1 + 6);\n    if ((piVar5 != (int *)0x0) && (*piVar5 != 1)) {\nLAB_002dc69f:\n      piVar8 = *(int **)(piVar3 + 6);\n      *piVar1 = *piVar3;\n      *piVar3 = 1;\nLAB_002dc6af:\n      *piVar5 = 1;\n      goto LAB_002dc6b5;\n    }\nLAB_002dc5e8:\n    *piVar1 = 0;\n    piVar1 = *(int **)(piVar3 + 2);\n    piVar7 = piVar3;\n  } while( true );\n}\n\n" (function_definition "void FUN_002dc460(int *param_1,long param_2)\n\n{\n  int *piVar1;\n  int iVar2;\n  int *piVar3;\n  long lVar4;\n  int *piVar5;\n  int *piVar6;\n  int *piVar7;\n  int *piVar8;\n  \n  piVar3 = *(int **)(param_1 + 4);\n  piVar5 = *(int **)(param_1 + 6);\n  piVar7 = piVar5;\n  if (piVar3 == (int *)0x0) {\nLAB_002dc770:\n    piVar3 = piVar7;\n    piVar1 = *(int **)(param_1 + 2);\n    if (piVar3 != (int *)0x0) goto LAB_002dc480;\n    piVar7 = (int *)0x0;\n  }\n  else {\n    if (piVar5 != (int *)0x0) {\n      do {\n        piVar8 = piVar7;\n        piVar7 = *(int **)(piVar8 + 4);\n      } while (*(int **)(piVar8 + 4) != (int *)0x0);\n      piVar7 = *(int **)(piVar8 + 6);\n      if (piVar8 != param_1) {\n        *(int **)(piVar3 + 2) = piVar8;\n        *(int **)(piVar8 + 4) = piVar3;\n        piVar1 = piVar8;\n        if (piVar8 != piVar5) {\n          piVar1 = *(int **)(piVar8 + 2);\n          piVar3 = piVar1;\n          if (piVar7 != (int *)0x0) {\n            *(int **)(piVar7 + 2) = piVar1;\n            piVar3 = *(int **)(piVar8 + 2);\n          }\n          *(int **)(piVar3 + 4) = piVar7;\n          *(int **)(piVar8 + 6) = piVar5;\n          *(int **)(*(long *)(param_1 + 6) + 8) = piVar8;\n        }\n        if (*(int **)(param_2 + 8) == param_1) {\n          *(int **)(param_2 + 8) = piVar8;\n          lVar4 = *(long *)(param_1 + 2);\n        }\n        else {\n          lVar4 = *(long *)(param_1 + 2);\n          if (*(int **)(lVar4 + 0x10) == param_1) {\n            *(int **)(lVar4 + 0x10) = piVar8;\n          }\n          else {\n            *(int **)(lVar4 + 0x18) = piVar8;\n          }\n        }\n        *(long *)(piVar8 + 2) = lVar4;\n        iVar2 = *piVar8;\n        *piVar8 = *param_1;\n        *param_1 = iVar2;\n        goto LAB_002dc55f;\n      }\n      goto LAB_002dc770;\n    }\n    piVar1 = *(int **)(param_1 + 2);\nLAB_002dc480:\n    *(int **)(piVar3 + 2) = piVar1;\n    piVar7 = piVar3;\n  }\n  if (*(int **)(param_2 + 8) == param_1) {\n    *(int **)(param_2 + 8) = piVar7;\n  }\n  else {\n    lVar4 = *(long *)(param_1 + 2);\n    if (*(int **)(lVar4 + 0x10) == param_1) {\n      *(int **)(lVar4 + 0x10) = piVar7;\n    }\n    else {\n      *(int **)(lVar4 + 0x18) = piVar7;\n    }\n  }\n  if (*(int **)(param_2 + 0x10) == param_1) {\n    piVar3 = piVar7;\n    if (*(long *)(param_1 + 6) == 0) {\n      *(undefined8 *)(param_2 + 0x10) = *(undefined8 *)(param_1 + 2);\n    }\n    else {\n      do {\n        piVar5 = piVar3;\n        piVar3 = *(int **)(piVar5 + 4);\n      } while (piVar3 != (int *)0x0);\n      *(int **)(param_2 + 0x10) = piVar5;\n    }\n  }\n  iVar2 = *param_1;\n  if (*(int **)(param_2 + 0x18) == param_1) {\n    piVar3 = piVar7;\n    if (*(long *)(param_1 + 4) == 0) {\n      *(undefined8 *)(param_2 + 0x18) = *(undefined8 *)(param_1 + 2);\n    }\n    else {\n      do {\n        piVar5 = piVar3;\n        piVar3 = *(int **)(piVar5 + 6);\n      } while (piVar3 != (int *)0x0);\n      *(int **)(param_2 + 0x18) = piVar5;\n    }\n  }\nLAB_002dc55f:\n  if (iVar2 == 0) {\n    return;\n  }\n  do {\n    piVar3 = piVar1;\n    if (*(int **)(param_2 + 8) == piVar7) {\nLAB_002dc6f0:\n      if (piVar7 == (int *)0x0) {\n        return;\n      }\nLAB_002dc6f5:\n      *piVar7 = 1;\n      return;\n    }\n    if ((piVar7 != (int *)0x0) && (*piVar7 != 1)) goto LAB_002dc6f5;\n    piVar5 = *(int **)(piVar3 + 4);\n    if (piVar5 != piVar7) {\n      piVar8 = *(int **)(piVar5 + 6);\n      piVar1 = piVar5;\n      if (*piVar5 == 0) {\n        *piVar5 = 1;\n        *piVar3 = 0;\n        *(int **)(piVar3 + 4) = piVar8;\n        if (piVar8 != (int *)0x0) {\n          *(int **)(piVar8 + 2) = piVar3;\n        }\n        lVar4 = *(long *)(piVar3 + 2);\n        *(long *)(piVar5 + 2) = lVar4;\n        if (piVar3 == *(int **)(param_2 + 8)) {\n          *(int **)(param_2 + 8) = piVar5;\n          piVar1 = *(int **)(piVar3 + 4);\n        }\n        else if (piVar3 == *(int **)(lVar4 + 0x18)) {\n          *(int **)(lVar4 + 0x18) = piVar5;\n          piVar1 = piVar8;\n        }\n        else {\n          *(int **)(lVar4 + 0x10) = piVar5;\n          piVar1 = *(int **)(piVar3 + 4);\n        }\n        *(int **)(piVar5 + 6) = piVar3;\n        piVar8 = *(int **)(piVar1 + 6);\n        *(int **)(piVar3 + 2) = piVar5;\n      }\n      if ((piVar8 == (int *)0x0) || (*piVar8 == 1)) {\n        piVar5 = *(int **)(piVar1 + 4);\n        if ((piVar5 == (int *)0x0) || (*piVar5 == 1)) goto LAB_002dc5e8;\nLAB_002dc82b:\n        piVar6 = *(int **)(piVar3 + 4);\n        *piVar1 = *piVar3;\n        *piVar3 = 1;\nLAB_002dc83b:\n        *piVar5 = 1;\n      }\n      else {\n        piVar5 = *(int **)(piVar1 + 4);\n        if ((piVar5 != (int *)0x0) && (*piVar5 != 1)) goto LAB_002dc82b;\n        lVar4 = *(long *)(piVar8 + 4);\n        *piVar8 = 1;\n        *piVar1 = 0;\n        *(long *)(piVar1 + 6) = lVar4;\n        if (lVar4 != 0) {\n          *(int **)(lVar4 + 8) = piVar1;\n        }\n        lVar4 = *(long *)(piVar1 + 2);\n        *(long *)(piVar8 + 2) = lVar4;\n        if (piVar1 == *(int **)(param_2 + 8)) {\n          *(int **)(param_2 + 8) = piVar8;\n        }\n        else if (piVar1 == *(int **)(lVar4 + 0x10)) {\n          *(int **)(lVar4 + 0x10) = piVar8;\n        }\n        else {\n          *(int **)(lVar4 + 0x18) = piVar8;\n        }\n        *(int **)(piVar8 + 4) = piVar1;\n        piVar6 = *(int **)(piVar3 + 4);\n        *(int **)(piVar1 + 2) = piVar8;\n        piVar5 = *(int **)(piVar6 + 4);\n        *piVar6 = *piVar3;\n        *piVar3 = 1;\n        if (piVar5 != (int *)0x0) goto LAB_002dc83b;\n      }\n      lVar4 = *(long *)(piVar6 + 6);\n      *(long *)(piVar3 + 4) = lVar4;\n      if (lVar4 != 0) {\n        *(int **)(lVar4 + 8) = piVar3;\n      }\n      lVar4 = *(long *)(piVar3 + 2);\n      *(long *)(piVar6 + 2) = lVar4;\n      if (piVar3 == *(int **)(param_2 + 8)) {\n        *(int **)(param_2 + 8) = piVar6;\n      }\n      else if (piVar3 == *(int **)(lVar4 + 0x18)) {\n        *(int **)(lVar4 + 0x18) = piVar6;\n      }\n      else {\n        *(int **)(lVar4 + 0x10) = piVar6;\n      }\n      *(int **)(piVar6 + 6) = piVar3;\n      *(int **)(piVar3 + 2) = piVar6;\n      goto LAB_002dc6f0;\n    }\n    piVar5 = *(int **)(piVar3 + 6);\n    piVar8 = *(int **)(piVar5 + 4);\n    piVar1 = piVar5;\n    if (*piVar5 == 0) {\n      *piVar5 = 1;\n      *piVar3 = 0;\n      *(int **)(piVar3 + 6) = piVar8;\n      if (piVar8 != (int *)0x0) {\n        *(int **)(piVar8 + 2) = piVar3;\n      }\n      lVar4 = *(long *)(piVar3 + 2);\n      *(long *)(piVar5 + 2) = lVar4;\n      if (piVar3 == *(int **)(param_2 + 8)) {\n        *(int **)(param_2 + 8) = piVar5;\n        piVar1 = *(int **)(piVar3 + 6);\n      }\n      else if (piVar3 == *(int **)(lVar4 + 0x10)) {\n        *(int **)(lVar4 + 0x10) = piVar5;\n        piVar1 = piVar8;\n      }\n      else {\n        *(int **)(lVar4 + 0x18) = piVar5;\n        piVar1 = *(int **)(piVar3 + 6);\n      }\n      *(int **)(piVar5 + 4) = piVar3;\n      piVar8 = *(int **)(piVar1 + 4);\n      *(int **)(piVar3 + 2) = piVar5;\n    }\n    if ((piVar8 != (int *)0x0) && (*piVar8 != 1)) {\n      piVar5 = *(int **)(piVar1 + 6);\n      if ((piVar5 != (int *)0x0) && (*piVar5 != 1)) goto LAB_002dc69f;\n      lVar4 = *(long *)(piVar8 + 6);\n      *piVar8 = 1;\n      *piVar1 = 0;\n      *(long *)(piVar1 + 4) = lVar4;\n      if (lVar4 != 0) {\n        *(int **)(lVar4 + 8) = piVar1;\n      }\n      lVar4 = *(long *)(piVar1 + 2);\n      *(long *)(piVar8 + 2) = lVar4;\n      if (piVar1 == *(int **)(param_2 + 8)) {\n        *(int **)(param_2 + 8) = piVar8;\n      }\n      else if (piVar1 == *(int **)(lVar4 + 0x18)) {\n        *(int **)(lVar4 + 0x18) = piVar8;\n      }\n      else {\n        *(int **)(lVar4 + 0x10) = piVar8;\n      }\n      *(int **)(piVar8 + 6) = piVar1;\n      *(int **)(piVar1 + 2) = piVar8;\n      piVar8 = *(int **)(piVar3 + 6);\n      piVar5 = *(int **)(piVar8 + 6);\n      *piVar8 = *piVar3;\n      *piVar3 = 1;\n      if (piVar5 != (int *)0x0) goto LAB_002dc6af;\nLAB_002dc6b5:\n      lVar4 = *(long *)(piVar8 + 4);\n      *(long *)(piVar3 + 6) = lVar4;\n      if (lVar4 != 0) {\n        *(int **)(lVar4 + 8) = piVar3;\n      }\n      lVar4 = *(long *)(piVar3 + 2);\n      *(long *)(piVar8 + 2) = lVar4;\n      if (piVar3 == *(int **)(param_2 + 8)) {\n        *(int **)(param_2 + 8) = piVar8;\n      }\n      else if (piVar3 == *(int **)(lVar4 + 0x10)) {\n        *(int **)(lVar4 + 0x10) = piVar8;\n      }\n      else {\n        *(int **)(lVar4 + 0x18) = piVar8;\n      }\n      *(int **)(piVar8 + 4) = piVar3;\n      *(int **)(piVar3 + 2) = piVar8;\n      goto LAB_002dc6f0;\n    }\n    piVar5 = *(int **)(piVar1 + 6);\n    if ((piVar5 != (int *)0x0) && (*piVar5 != 1)) {\nLAB_002dc69f:\n      piVar8 = *(int **)(piVar3 + 6);\n      *piVar1 = *piVar3;\n      *piVar3 = 1;\nLAB_002dc6af:\n      *piVar5 = 1;\n      goto LAB_002dc6b5;\n    }\nLAB_002dc5e8:\n    *piVar1 = 0;\n    piVar1 = *(int **)(piVar3 + 2);\n    piVar7 = piVar3;\n  } while( true );\n}" primitive_type (function_declarator "FUN_002dc460(int *param_1,long param_2)" identifier (parameter_list "(int *param_1,long param_2)" ( (parameter_declaration "int *param_1" primitive_type (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "long param_2" (sized_type_specifier "long" long) identifier) ))) (compound_statement "{\n  int *piVar1;\n  int iVar2;\n  int *piVar3;\n  long lVar4;\n  int *piVar5;\n  int *piVar6;\n  int *piVar7;\n  int *piVar8;\n  \n  piVar3 = *(int **)(param_1 + 4);\n  piVar5 = *(int **)(param_1 + 6);\n  piVar7 = piVar5;\n  if (piVar3 == (int *)0x0) {\nLAB_002dc770:\n    piVar3 = piVar7;\n    piVar1 = *(int **)(param_1 + 2);\n    if (piVar3 != (int *)0x0) goto LAB_002dc480;\n    piVar7 = (int *)0x0;\n  }\n  else {\n    if (piVar5 != (int *)0x0) {\n      do {\n        piVar8 = piVar7;\n        piVar7 = *(int **)(piVar8 + 4);\n      } while (*(int **)(piVar8 + 4) != (int *)0x0);\n      piVar7 = *(int **)(piVar8 + 6);\n      if (piVar8 != param_1) {\n        *(int **)(piVar3 + 2) = piVar8;\n        *(int **)(piVar8 + 4) = piVar3;\n        piVar1 = piVar8;\n        if (piVar8 != piVar5) {\n          piVar1 = *(int **)(piVar8 + 2);\n          piVar3 = piVar1;\n          if (piVar7 != (int *)0x0) {\n            *(int **)(piVar7 + 2) = piVar1;\n            piVar3 = *(int **)(piVar8 + 2);\n          }\n          *(int **)(piVar3 + 4) = piVar7;\n          *(int **)(piVar8 + 6) = piVar5;\n          *(int **)(*(long *)(param_1 + 6) + 8) = piVar8;\n        }\n        if (*(int **)(param_2 + 8) == param_1) {\n          *(int **)(param_2 + 8) = piVar8;\n          lVar4 = *(long *)(param_1 + 2);\n        }\n        else {\n          lVar4 = *(long *)(param_1 + 2);\n          if (*(int **)(lVar4 + 0x10) == param_1) {\n            *(int **)(lVar4 + 0x10) = piVar8;\n          }\n          else {\n            *(int **)(lVar4 + 0x18) = piVar8;\n          }\n        }\n        *(long *)(piVar8 + 2) = lVar4;\n        iVar2 = *piVar8;\n        *piVar8 = *param_1;\n        *param_1 = iVar2;\n        goto LAB_002dc55f;\n      }\n      goto LAB_002dc770;\n    }\n    piVar1 = *(int **)(param_1 + 2);\nLAB_002dc480:\n    *(int **)(piVar3 + 2) = piVar1;\n    piVar7 = piVar3;\n  }\n  if (*(int **)(param_2 + 8) == param_1) {\n    *(int **)(param_2 + 8) = piVar7;\n  }\n  else {\n    lVar4 = *(long *)(param_1 + 2);\n    if (*(int **)(lVar4 + 0x10) == param_1) {\n      *(int **)(lVar4 + 0x10) = piVar7;\n    }\n    else {\n      *(int **)(lVar4 + 0x18) = piVar7;\n    }\n  }\n  if (*(int **)(param_2 + 0x10) == param_1) {\n    piVar3 = piVar7;\n    if (*(long *)(param_1 + 6) == 0) {\n      *(undefined8 *)(param_2 + 0x10) = *(undefined8 *)(param_1 + 2);\n    }\n    else {\n      do {\n        piVar5 = piVar3;\n        piVar3 = *(int **)(piVar5 + 4);\n      } while (piVar3 != (int *)0x0);\n      *(int **)(param_2 + 0x10) = piVar5;\n    }\n  }\n  iVar2 = *param_1;\n  if (*(int **)(param_2 + 0x18) == param_1) {\n    piVar3 = piVar7;\n    if (*(long *)(param_1 + 4) == 0) {\n      *(undefined8 *)(param_2 + 0x18) = *(undefined8 *)(param_1 + 2);\n    }\n    else {\n      do {\n        piVar5 = piVar3;\n        piVar3 = *(int **)(piVar5 + 6);\n      } while (piVar3 != (int *)0x0);\n      *(int **)(param_2 + 0x18) = piVar5;\n    }\n  }\nLAB_002dc55f:\n  if (iVar2 == 0) {\n    return;\n  }\n  do {\n    piVar3 = piVar1;\n    if (*(int **)(param_2 + 8) == piVar7) {\nLAB_002dc6f0:\n      if (piVar7 == (int *)0x0) {\n        return;\n      }\nLAB_002dc6f5:\n      *piVar7 = 1;\n      return;\n    }\n    if ((piVar7 != (int *)0x0) && (*piVar7 != 1)) goto LAB_002dc6f5;\n    piVar5 = *(int **)(piVar3 + 4);\n    if (piVar5 != piVar7) {\n      piVar8 = *(int **)(piVar5 + 6);\n      piVar1 = piVar5;\n      if (*piVar5 == 0) {\n        *piVar5 = 1;\n        *piVar3 = 0;\n        *(int **)(piVar3 + 4) = piVar8;\n        if (piVar8 != (int *)0x0) {\n          *(int **)(piVar8 + 2) = piVar3;\n        }\n        lVar4 = *(long *)(piVar3 + 2);\n        *(long *)(piVar5 + 2) = lVar4;\n        if (piVar3 == *(int **)(param_2 + 8)) {\n          *(int **)(param_2 + 8) = piVar5;\n          piVar1 = *(int **)(piVar3 + 4);\n        }\n        else if (piVar3 == *(int **)(lVar4 + 0x18)) {\n          *(int **)(lVar4 + 0x18) = piVar5;\n          piVar1 = piVar8;\n        }\n        else {\n          *(int **)(lVar4 + 0x10) = piVar5;\n          piVar1 = *(int **)(piVar3 + 4);\n        }\n        *(int **)(piVar5 + 6) = piVar3;\n        piVar8 = *(int **)(piVar1 + 6);\n        *(int **)(piVar3 + 2) = piVar5;\n      }\n      if ((piVar8 == (int *)0x0) || (*piVar8 == 1)) {\n        piVar5 = *(int **)(piVar1 + 4);\n        if ((piVar5 == (int *)0x0) || (*piVar5 == 1)) goto LAB_002dc5e8;\nLAB_002dc82b:\n        piVar6 = *(int **)(piVar3 + 4);\n        *piVar1 = *piVar3;\n        *piVar3 = 1;\nLAB_002dc83b:\n        *piVar5 = 1;\n      }\n      else {\n        piVar5 = *(int **)(piVar1 + 4);\n        if ((piVar5 != (int *)0x0) && (*piVar5 != 1)) goto LAB_002dc82b;\n        lVar4 = *(long *)(piVar8 + 4);\n        *piVar8 = 1;\n        *piVar1 = 0;\n        *(long *)(piVar1 + 6) = lVar4;\n        if (lVar4 != 0) {\n          *(int **)(lVar4 + 8) = piVar1;\n        }\n        lVar4 = *(long *)(piVar1 + 2);\n        *(long *)(piVar8 + 2) = lVar4;\n        if (piVar1 == *(int **)(param_2 + 8)) {\n          *(int **)(param_2 + 8) = piVar8;\n        }\n        else if (piVar1 == *(int **)(lVar4 + 0x10)) {\n          *(int **)(lVar4 + 0x10) = piVar8;\n        }\n        else {\n          *(int **)(lVar4 + 0x18) = piVar8;\n        }\n        *(int **)(piVar8 + 4) = piVar1;\n        piVar6 = *(int **)(piVar3 + 4);\n        *(int **)(piVar1 + 2) = piVar8;\n        piVar5 = *(int **)(piVar6 + 4);\n        *piVar6 = *piVar3;\n        *piVar3 = 1;\n        if (piVar5 != (int *)0x0) goto LAB_002dc83b;\n      }\n      lVar4 = *(long *)(piVar6 + 6);\n      *(long *)(piVar3 + 4) = lVar4;\n      if (lVar4 != 0) {\n        *(int **)(lVar4 + 8) = piVar3;\n      }\n      lVar4 = *(long *)(piVar3 + 2);\n      *(long *)(piVar6 + 2) = lVar4;\n      if (piVar3 == *(int **)(param_2 + 8)) {\n        *(int **)(param_2 + 8) = piVar6;\n      }\n      else if (piVar3 == *(int **)(lVar4 + 0x18)) {\n        *(int **)(lVar4 + 0x18) = piVar6;\n      }\n      else {\n        *(int **)(lVar4 + 0x10) = piVar6;\n      }\n      *(int **)(piVar6 + 6) = piVar3;\n      *(int **)(piVar3 + 2) = piVar6;\n      goto LAB_002dc6f0;\n    }\n    piVar5 = *(int **)(piVar3 + 6);\n    piVar8 = *(int **)(piVar5 + 4);\n    piVar1 = piVar5;\n    if (*piVar5 == 0) {\n      *piVar5 = 1;\n      *piVar3 = 0;\n      *(int **)(piVar3 + 6) = piVar8;\n      if (piVar8 != (int *)0x0) {\n        *(int **)(piVar8 + 2) = piVar3;\n      }\n      lVar4 = *(long *)(piVar3 + 2);\n      *(long *)(piVar5 + 2) = lVar4;\n      if (piVar3 == *(int **)(param_2 + 8)) {\n        *(int **)(param_2 + 8) = piVar5;\n        piVar1 = *(int **)(piVar3 + 6);\n      }\n      else if (piVar3 == *(int **)(lVar4 + 0x10)) {\n        *(int **)(lVar4 + 0x10) = piVar5;\n        piVar1 = piVar8;\n      }\n      else {\n        *(int **)(lVar4 + 0x18) = piVar5;\n        piVar1 = *(int **)(piVar3 + 6);\n      }\n      *(int **)(piVar5 + 4) = piVar3;\n      piVar8 = *(int **)(piVar1 + 4);\n      *(int **)(piVar3 + 2) = piVar5;\n    }\n    if ((piVar8 != (int *)0x0) && (*piVar8 != 1)) {\n      piVar5 = *(int **)(piVar1 + 6);\n      if ((piVar5 != (int *)0x0) && (*piVar5 != 1)) goto LAB_002dc69f;\n      lVar4 = *(long *)(piVar8 + 6);\n      *piVar8 = 1;\n      *piVar1 = 0;\n      *(long *)(piVar1 + 4) = lVar4;\n      if (lVar4 != 0) {\n        *(int **)(lVar4 + 8) = piVar1;\n      }\n      lVar4 = *(long *)(piVar1 + 2);\n      *(long *)(piVar8 + 2) = lVar4;\n      if (piVar1 == *(int **)(param_2 + 8)) {\n        *(int **)(param_2 + 8) = piVar8;\n      }\n      else if (piVar1 == *(int **)(lVar4 + 0x18)) {\n        *(int **)(lVar4 + 0x18) = piVar8;\n      }\n      else {\n        *(int **)(lVar4 + 0x10) = piVar8;\n      }\n      *(int **)(piVar8 + 6) = piVar1;\n      *(int **)(piVar1 + 2) = piVar8;\n      piVar8 = *(int **)(piVar3 + 6);\n      piVar5 = *(int **)(piVar8 + 6);\n      *piVar8 = *piVar3;\n      *piVar3 = 1;\n      if (piVar5 != (int *)0x0) goto LAB_002dc6af;\nLAB_002dc6b5:\n      lVar4 = *(long *)(piVar8 + 4);\n      *(long *)(piVar3 + 6) = lVar4;\n      if (lVar4 != 0) {\n        *(int **)(lVar4 + 8) = piVar3;\n      }\n      lVar4 = *(long *)(piVar3 + 2);\n      *(long *)(piVar8 + 2) = lVar4;\n      if (piVar3 == *(int **)(param_2 + 8)) {\n        *(int **)(param_2 + 8) = piVar8;\n      }\n      else if (piVar3 == *(int **)(lVar4 + 0x10)) {\n        *(int **)(lVar4 + 0x10) = piVar8;\n      }\n      else {\n        *(int **)(lVar4 + 0x18) = piVar8;\n      }\n      *(int **)(piVar8 + 4) = piVar3;\n      *(int **)(piVar3 + 2) = piVar8;\n      goto LAB_002dc6f0;\n    }\n    piVar5 = *(int **)(piVar1 + 6);\n    if ((piVar5 != (int *)0x0) && (*piVar5 != 1)) {\nLAB_002dc69f:\n      piVar8 = *(int **)(piVar3 + 6);\n      *piVar1 = *piVar3;\n      *piVar3 = 1;\nLAB_002dc6af:\n      *piVar5 = 1;\n      goto LAB_002dc6b5;\n    }\nLAB_002dc5e8:\n    *piVar1 = 0;\n    piVar1 = *(int **)(piVar3 + 2);\n    piVar7 = piVar3;\n  } while( true );\n}" { (declaration "int *piVar1;" primitive_type (pointer_declarator "*piVar1" * identifier) ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "int *piVar3;" primitive_type (pointer_declarator "*piVar3" * identifier) ;) (declaration "long lVar4;" (sized_type_specifier "long" long) identifier ;) (declaration "int *piVar5;" primitive_type (pointer_declarator "*piVar5" * identifier) ;) (declaration "int *piVar6;" primitive_type (pointer_declarator "*piVar6" * identifier) ;) (declaration "int *piVar7;" primitive_type (pointer_declarator "*piVar7" * identifier) ;) (declaration "int *piVar8;" primitive_type (pointer_declarator "*piVar8" * identifier) ;) (expression_statement "piVar3 = *(int **)(param_1 + 4);" (assignment_expression "piVar3 = *(int **)(param_1 + 4)" identifier = (pointer_expression "*(int **)(param_1 + 4)" * (cast_expression "(int **)(param_1 + 4)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) ))))) ;) (expression_statement "piVar5 = *(int **)(param_1 + 6);" (assignment_expression "piVar5 = *(int **)(param_1 + 6)" identifier = (pointer_expression "*(int **)(param_1 + 6)" * (cast_expression "(int **)(param_1 + 6)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 6)" ( (binary_expression "param_1 + 6" identifier + number_literal) ))))) ;) (expression_statement "piVar7 = piVar5;" (assignment_expression "piVar7 = piVar5" identifier = identifier) ;) (if_statement "if (piVar3 == (int *)0x0) {\nLAB_002dc770:\n    piVar3 = piVar7;\n    piVar1 = *(int **)(param_1 + 2);\n    if (piVar3 != (int *)0x0) goto LAB_002dc480;\n    piVar7 = (int *)0x0;\n  }\n  else {\n    if (piVar5 != (int *)0x0) {\n      do {\n        piVar8 = piVar7;\n        piVar7 = *(int **)(piVar8 + 4);\n      } while (*(int **)(piVar8 + 4) != (int *)0x0);\n      piVar7 = *(int **)(piVar8 + 6);\n      if (piVar8 != param_1) {\n        *(int **)(piVar3 + 2) = piVar8;\n        *(int **)(piVar8 + 4) = piVar3;\n        piVar1 = piVar8;\n        if (piVar8 != piVar5) {\n          piVar1 = *(int **)(piVar8 + 2);\n          piVar3 = piVar1;\n          if (piVar7 != (int *)0x0) {\n            *(int **)(piVar7 + 2) = piVar1;\n            piVar3 = *(int **)(piVar8 + 2);\n          }\n          *(int **)(piVar3 + 4) = piVar7;\n          *(int **)(piVar8 + 6) = piVar5;\n          *(int **)(*(long *)(param_1 + 6) + 8) = piVar8;\n        }\n        if (*(int **)(param_2 + 8) == param_1) {\n          *(int **)(param_2 + 8) = piVar8;\n          lVar4 = *(long *)(param_1 + 2);\n        }\n        else {\n          lVar4 = *(long *)(param_1 + 2);\n          if (*(int **)(lVar4 + 0x10) == param_1) {\n            *(int **)(lVar4 + 0x10) = piVar8;\n          }\n          else {\n            *(int **)(lVar4 + 0x18) = piVar8;\n          }\n        }\n        *(long *)(piVar8 + 2) = lVar4;\n        iVar2 = *piVar8;\n        *piVar8 = *param_1;\n        *param_1 = iVar2;\n        goto LAB_002dc55f;\n      }\n      goto LAB_002dc770;\n    }\n    piVar1 = *(int **)(param_1 + 2);\nLAB_002dc480:\n    *(int **)(piVar3 + 2) = piVar1;\n    piVar7 = piVar3;\n  }" if (parenthesized_expression "(piVar3 == (int *)0x0)" ( (binary_expression "piVar3 == (int *)0x0" identifier == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\nLAB_002dc770:\n    piVar3 = piVar7;\n    piVar1 = *(int **)(param_1 + 2);\n    if (piVar3 != (int *)0x0) goto LAB_002dc480;\n    piVar7 = (int *)0x0;\n  }" { (labeled_statement "LAB_002dc770:\n    piVar3 = piVar7;" statement_identifier : (expression_statement "piVar3 = piVar7;" (assignment_expression "piVar3 = piVar7" identifier = identifier) ;)) (expression_statement "piVar1 = *(int **)(param_1 + 2);" (assignment_expression "piVar1 = *(int **)(param_1 + 2)" identifier = (pointer_expression "*(int **)(param_1 + 2)" * (cast_expression "(int **)(param_1 + 2)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 2)" ( (binary_expression "param_1 + 2" identifier + number_literal) ))))) ;) (if_statement "if (piVar3 != (int *)0x0) goto LAB_002dc480;" if (parenthesized_expression "(piVar3 != (int *)0x0)" ( (binary_expression "piVar3 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_002dc480;" goto statement_identifier ;)) (expression_statement "piVar7 = (int *)0x0;" (assignment_expression "piVar7 = (int *)0x0" identifier = (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) }) (else_clause "else {\n    if (piVar5 != (int *)0x0) {\n      do {\n        piVar8 = piVar7;\n        piVar7 = *(int **)(piVar8 + 4);\n      } while (*(int **)(piVar8 + 4) != (int *)0x0);\n      piVar7 = *(int **)(piVar8 + 6);\n      if (piVar8 != param_1) {\n        *(int **)(piVar3 + 2) = piVar8;\n        *(int **)(piVar8 + 4) = piVar3;\n        piVar1 = piVar8;\n        if (piVar8 != piVar5) {\n          piVar1 = *(int **)(piVar8 + 2);\n          piVar3 = piVar1;\n          if (piVar7 != (int *)0x0) {\n            *(int **)(piVar7 + 2) = piVar1;\n            piVar3 = *(int **)(piVar8 + 2);\n          }\n          *(int **)(piVar3 + 4) = piVar7;\n          *(int **)(piVar8 + 6) = piVar5;\n          *(int **)(*(long *)(param_1 + 6) + 8) = piVar8;\n        }\n        if (*(int **)(param_2 + 8) == param_1) {\n          *(int **)(param_2 + 8) = piVar8;\n          lVar4 = *(long *)(param_1 + 2);\n        }\n        else {\n          lVar4 = *(long *)(param_1 + 2);\n          if (*(int **)(lVar4 + 0x10) == param_1) {\n            *(int **)(lVar4 + 0x10) = piVar8;\n          }\n          else {\n            *(int **)(lVar4 + 0x18) = piVar8;\n          }\n        }\n        *(long *)(piVar8 + 2) = lVar4;\n        iVar2 = *piVar8;\n        *piVar8 = *param_1;\n        *param_1 = iVar2;\n        goto LAB_002dc55f;\n      }\n      goto LAB_002dc770;\n    }\n    piVar1 = *(int **)(param_1 + 2);\nLAB_002dc480:\n    *(int **)(piVar3 + 2) = piVar1;\n    piVar7 = piVar3;\n  }" else (compound_statement "{\n    if (piVar5 != (int *)0x0) {\n      do {\n        piVar8 = piVar7;\n        piVar7 = *(int **)(piVar8 + 4);\n      } while (*(int **)(piVar8 + 4) != (int *)0x0);\n      piVar7 = *(int **)(piVar8 + 6);\n      if (piVar8 != param_1) {\n        *(int **)(piVar3 + 2) = piVar8;\n        *(int **)(piVar8 + 4) = piVar3;\n        piVar1 = piVar8;\n        if (piVar8 != piVar5) {\n          piVar1 = *(int **)(piVar8 + 2);\n          piVar3 = piVar1;\n          if (piVar7 != (int *)0x0) {\n            *(int **)(piVar7 + 2) = piVar1;\n            piVar3 = *(int **)(piVar8 + 2);\n          }\n          *(int **)(piVar3 + 4) = piVar7;\n          *(int **)(piVar8 + 6) = piVar5;\n          *(int **)(*(long *)(param_1 + 6) + 8) = piVar8;\n        }\n        if (*(int **)(param_2 + 8) == param_1) {\n          *(int **)(param_2 + 8) = piVar8;\n          lVar4 = *(long *)(param_1 + 2);\n        }\n        else {\n          lVar4 = *(long *)(param_1 + 2);\n          if (*(int **)(lVar4 + 0x10) == param_1) {\n            *(int **)(lVar4 + 0x10) = piVar8;\n          }\n          else {\n            *(int **)(lVar4 + 0x18) = piVar8;\n          }\n        }\n        *(long *)(piVar8 + 2) = lVar4;\n        iVar2 = *piVar8;\n        *piVar8 = *param_1;\n        *param_1 = iVar2;\n        goto LAB_002dc55f;\n      }\n      goto LAB_002dc770;\n    }\n    piVar1 = *(int **)(param_1 + 2);\nLAB_002dc480:\n    *(int **)(piVar3 + 2) = piVar1;\n    piVar7 = piVar3;\n  }" { (if_statement "if (piVar5 != (int *)0x0) {\n      do {\n        piVar8 = piVar7;\n        piVar7 = *(int **)(piVar8 + 4);\n      } while (*(int **)(piVar8 + 4) != (int *)0x0);\n      piVar7 = *(int **)(piVar8 + 6);\n      if (piVar8 != param_1) {\n        *(int **)(piVar3 + 2) = piVar8;\n        *(int **)(piVar8 + 4) = piVar3;\n        piVar1 = piVar8;\n        if (piVar8 != piVar5) {\n          piVar1 = *(int **)(piVar8 + 2);\n          piVar3 = piVar1;\n          if (piVar7 != (int *)0x0) {\n            *(int **)(piVar7 + 2) = piVar1;\n            piVar3 = *(int **)(piVar8 + 2);\n          }\n          *(int **)(piVar3 + 4) = piVar7;\n          *(int **)(piVar8 + 6) = piVar5;\n          *(int **)(*(long *)(param_1 + 6) + 8) = piVar8;\n        }\n        if (*(int **)(param_2 + 8) == param_1) {\n          *(int **)(param_2 + 8) = piVar8;\n          lVar4 = *(long *)(param_1 + 2);\n        }\n        else {\n          lVar4 = *(long *)(param_1 + 2);\n          if (*(int **)(lVar4 + 0x10) == param_1) {\n            *(int **)(lVar4 + 0x10) = piVar8;\n          }\n          else {\n            *(int **)(lVar4 + 0x18) = piVar8;\n          }\n        }\n        *(long *)(piVar8 + 2) = lVar4;\n        iVar2 = *piVar8;\n        *piVar8 = *param_1;\n        *param_1 = iVar2;\n        goto LAB_002dc55f;\n      }\n      goto LAB_002dc770;\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 "{\n      do {\n        piVar8 = piVar7;\n        piVar7 = *(int **)(piVar8 + 4);\n      } while (*(int **)(piVar8 + 4) != (int *)0x0);\n      piVar7 = *(int **)(piVar8 + 6);\n      if (piVar8 != param_1) {\n        *(int **)(piVar3 + 2) = piVar8;\n        *(int **)(piVar8 + 4) = piVar3;\n        piVar1 = piVar8;\n        if (piVar8 != piVar5) {\n          piVar1 = *(int **)(piVar8 + 2);\n          piVar3 = piVar1;\n          if (piVar7 != (int *)0x0) {\n            *(int **)(piVar7 + 2) = piVar1;\n            piVar3 = *(int **)(piVar8 + 2);\n          }\n          *(int **)(piVar3 + 4) = piVar7;\n          *(int **)(piVar8 + 6) = piVar5;\n          *(int **)(*(long *)(param_1 + 6) + 8) = piVar8;\n        }\n        if (*(int **)(param_2 + 8) == param_1) {\n          *(int **)(param_2 + 8) = piVar8;\n          lVar4 = *(long *)(param_1 + 2);\n        }\n        else {\n          lVar4 = *(long *)(param_1 + 2);\n          if (*(int **)(lVar4 + 0x10) == param_1) {\n            *(int **)(lVar4 + 0x10) = piVar8;\n          }\n          else {\n            *(int **)(lVar4 + 0x18) = piVar8;\n          }\n        }\n        *(long *)(piVar8 + 2) = lVar4;\n        iVar2 = *piVar8;\n        *piVar8 = *param_1;\n        *param_1 = iVar2;\n        goto LAB_002dc55f;\n      }\n      goto LAB_002dc770;\n    }" { (do_statement "do {\n        piVar8 = piVar7;\n        piVar7 = *(int **)(piVar8 + 4);\n      } while (*(int **)(piVar8 + 4) != (int *)0x0);" do (compound_statement "{\n        piVar8 = piVar7;\n        piVar7 = *(int **)(piVar8 + 4);\n      }" { (expression_statement "piVar8 = piVar7;" (assignment_expression "piVar8 = piVar7" identifier = identifier) ;) (expression_statement "piVar7 = *(int **)(piVar8 + 4);" (assignment_expression "piVar7 = *(int **)(piVar8 + 4)" identifier = (pointer_expression "*(int **)(piVar8 + 4)" * (cast_expression "(int **)(piVar8 + 4)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(piVar8 + 4)" ( (binary_expression "piVar8 + 4" identifier + number_literal) ))))) ;) }) while (parenthesized_expression "(*(int **)(piVar8 + 4) != (int *)0x0)" ( (binary_expression "*(int **)(piVar8 + 4) != (int *)0x0" (pointer_expression "*(int **)(piVar8 + 4)" * (cast_expression "(int **)(piVar8 + 4)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(piVar8 + 4)" ( (binary_expression "piVar8 + 4" identifier + number_literal) )))) != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) ;) (expression_statement "piVar7 = *(int **)(piVar8 + 6);" (assignment_expression "piVar7 = *(int **)(piVar8 + 6)" identifier = (pointer_expression "*(int **)(piVar8 + 6)" * (cast_expression "(int **)(piVar8 + 6)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(piVar8 + 6)" ( (binary_expression "piVar8 + 6" identifier + number_literal) ))))) ;) (if_statement "if (piVar8 != param_1) {\n        *(int **)(piVar3 + 2) = piVar8;\n        *(int **)(piVar8 + 4) = piVar3;\n        piVar1 = piVar8;\n        if (piVar8 != piVar5) {\n          piVar1 = *(int **)(piVar8 + 2);\n          piVar3 = piVar1;\n          if (piVar7 != (int *)0x0) {\n            *(int **)(piVar7 + 2) = piVar1;\n            piVar3 = *(int **)(piVar8 + 2);\n          }\n          *(int **)(piVar3 + 4) = piVar7;\n          *(int **)(piVar8 + 6) = piVar5;\n          *(int **)(*(long *)(param_1 + 6) + 8) = piVar8;\n        }\n        if (*(int **)(param_2 + 8) == param_1) {\n          *(int **)(param_2 + 8) = piVar8;\n          lVar4 = *(long *)(param_1 + 2);\n        }\n        else {\n          lVar4 = *(long *)(param_1 + 2);\n          if (*(int **)(lVar4 + 0x10) == param_1) {\n            *(int **)(lVar4 + 0x10) = piVar8;\n          }\n          else {\n            *(int **)(lVar4 + 0x18) = piVar8;\n          }\n        }\n        *(long *)(piVar8 + 2) = lVar4;\n        iVar2 = *piVar8;\n        *piVar8 = *param_1;\n        *param_1 = iVar2;\n        goto LAB_002dc55f;\n      }" if (parenthesized_expression "(piVar8 != param_1)" ( (binary_expression "piVar8 != param_1" identifier != identifier) )) (compound_statement "{\n        *(int **)(piVar3 + 2) = piVar8;\n        *(int **)(piVar8 + 4) = piVar3;\n        piVar1 = piVar8;\n        if (piVar8 != piVar5) {\n          piVar1 = *(int **)(piVar8 + 2);\n          piVar3 = piVar1;\n          if (piVar7 != (int *)0x0) {\n            *(int **)(piVar7 + 2) = piVar1;\n            piVar3 = *(int **)(piVar8 + 2);\n          }\n          *(int **)(piVar3 + 4) = piVar7;\n          *(int **)(piVar8 + 6) = piVar5;\n          *(int **)(*(long *)(param_1 + 6) + 8) = piVar8;\n        }\n        if (*(int **)(param_2 + 8) == param_1) {\n          *(int **)(param_2 + 8) = piVar8;\n          lVar4 = *(long *)(param_1 + 2);\n        }\n        else {\n          lVar4 = *(long *)(param_1 + 2);\n          if (*(int **)(lVar4 + 0x10) == param_1) {\n            *(int **)(lVar4 + 0x10) = piVar8;\n          }\n          else {\n            *(int **)(lVar4 + 0x18) = piVar8;\n          }\n        }\n        *(long *)(piVar8 + 2) = lVar4;\n        iVar2 = *piVar8;\n        *piVar8 = *param_1;\n        *param_1 = iVar2;\n        goto LAB_002dc55f;\n      }" { (expression_statement "*(int **)(piVar3 + 2) = piVar8;" (assignment_expression "*(int **)(piVar3 + 2) = piVar8" (pointer_expression "*(int **)(piVar3 + 2)" * (cast_expression "(int **)(piVar3 + 2)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(piVar3 + 2)" ( (binary_expression "piVar3 + 2" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int **)(piVar8 + 4) = piVar3;" (assignment_expression "*(int **)(piVar8 + 4) = piVar3" (pointer_expression "*(int **)(piVar8 + 4)" * (cast_expression "(int **)(piVar8 + 4)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(piVar8 + 4)" ( (binary_expression "piVar8 + 4" identifier + number_literal) )))) = identifier) ;) (expression_statement "piVar1 = piVar8;" (assignment_expression "piVar1 = piVar8" identifier = identifier) ;) (if_statement "if (piVar8 != piVar5) {\n          piVar1 = *(int **)(piVar8 + 2);\n          piVar3 = piVar1;\n          if (piVar7 != (int *)0x0) {\n            *(int **)(piVar7 + 2) = piVar1;\n            piVar3 = *(int **)(piVar8 + 2);\n          }\n          *(int **)(piVar3 + 4) = piVar7;\n          *(int **)(piVar8 + 6) = piVar5;\n          *(int **)(*(long *)(param_1 + 6) + 8) = piVar8;\n        }" if (parenthesized_expression "(piVar8 != piVar5)" ( (binary_expression "piVar8 != piVar5" identifier != identifier) )) (compound_statement "{\n          piVar1 = *(int **)(piVar8 + 2);\n          piVar3 = piVar1;\n          if (piVar7 != (int *)0x0) {\n            *(int **)(piVar7 + 2) = piVar1;\n            piVar3 = *(int **)(piVar8 + 2);\n          }\n          *(int **)(piVar3 + 4) = piVar7;\n          *(int **)(piVar8 + 6) = piVar5;\n          *(int **)(*(long *)(param_1 + 6) + 8) = piVar8;\n        }" { (expression_statement "piVar1 = *(int **)(piVar8 + 2);" (assignment_expression "piVar1 = *(int **)(piVar8 + 2)" identifier = (pointer_expression "*(int **)(piVar8 + 2)" * (cast_expression "(int **)(piVar8 + 2)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(piVar8 + 2)" ( (binary_expression "piVar8 + 2" identifier + number_literal) ))))) ;) (expression_statement "piVar3 = piVar1;" (assignment_expression "piVar3 = piVar1" identifier = identifier) ;) (if_statement "if (piVar7 != (int *)0x0) {\n            *(int **)(piVar7 + 2) = piVar1;\n            piVar3 = *(int **)(piVar8 + 2);\n          }" if (parenthesized_expression "(piVar7 != (int *)0x0)" ( (binary_expression "piVar7 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n            *(int **)(piVar7 + 2) = piVar1;\n            piVar3 = *(int **)(piVar8 + 2);\n          }" { (expression_statement "*(int **)(piVar7 + 2) = piVar1;" (assignment_expression "*(int **)(piVar7 + 2) = piVar1" (pointer_expression "*(int **)(piVar7 + 2)" * (cast_expression "(int **)(piVar7 + 2)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(piVar7 + 2)" ( (binary_expression "piVar7 + 2" identifier + number_literal) )))) = identifier) ;) (expression_statement "piVar3 = *(int **)(piVar8 + 2);" (assignment_expression "piVar3 = *(int **)(piVar8 + 2)" identifier = (pointer_expression "*(int **)(piVar8 + 2)" * (cast_expression "(int **)(piVar8 + 2)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(piVar8 + 2)" ( (binary_expression "piVar8 + 2" identifier + number_literal) ))))) ;) })) (expression_statement "*(int **)(piVar3 + 4) = piVar7;" (assignment_expression "*(int **)(piVar3 + 4) = piVar7" (pointer_expression "*(int **)(piVar3 + 4)" * (cast_expression "(int **)(piVar3 + 4)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(piVar3 + 4)" ( (binary_expression "piVar3 + 4" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int **)(piVar8 + 6) = piVar5;" (assignment_expression "*(int **)(piVar8 + 6) = piVar5" (pointer_expression "*(int **)(piVar8 + 6)" * (cast_expression "(int **)(piVar8 + 6)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(piVar8 + 6)" ( (binary_expression "piVar8 + 6" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int **)(*(long *)(param_1 + 6) + 8) = piVar8;" (assignment_expression "*(int **)(*(long *)(param_1 + 6) + 8) = piVar8" (pointer_expression "*(int **)(*(long *)(param_1 + 6) + 8)" * (cast_expression "(int **)(*(long *)(param_1 + 6) + 8)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(long *)(param_1 + 6) + 8)" ( (binary_expression "*(long *)(param_1 + 6) + 8" (pointer_expression "*(long *)(param_1 + 6)" * (cast_expression "(long *)(param_1 + 6)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 6)" ( (binary_expression "param_1 + 6" identifier + number_literal) )))) + number_literal) )))) = identifier) ;) })) (if_statement "if (*(int **)(param_2 + 8) == param_1) {\n          *(int **)(param_2 + 8) = piVar8;\n          lVar4 = *(long *)(param_1 + 2);\n        }\n        else {\n          lVar4 = *(long *)(param_1 + 2);\n          if (*(int **)(lVar4 + 0x10) == param_1) {\n            *(int **)(lVar4 + 0x10) = piVar8;\n          }\n          else {\n            *(int **)(lVar4 + 0x18) = piVar8;\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          *(int **)(param_2 + 8) = piVar8;\n          lVar4 = *(long *)(param_1 + 2);\n        }" { (expression_statement "*(int **)(param_2 + 8) = piVar8;" (assignment_expression "*(int **)(param_2 + 8) = piVar8" (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 "lVar4 = *(long *)(param_1 + 2);" (assignment_expression "lVar4 = *(long *)(param_1 + 2)" identifier = (pointer_expression "*(long *)(param_1 + 2)" * (cast_expression "(long *)(param_1 + 2)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 2)" ( (binary_expression "param_1 + 2" identifier + number_literal) ))))) ;) }) (else_clause "else {\n          lVar4 = *(long *)(param_1 + 2);\n          if (*(int **)(lVar4 + 0x10) == param_1) {\n            *(int **)(lVar4 + 0x10) = piVar8;\n          }\n          else {\n            *(int **)(lVar4 + 0x18) = piVar8;\n          }\n        }" else (compound_statement "{\n          lVar4 = *(long *)(param_1 + 2);\n          if (*(int **)(lVar4 + 0x10) == param_1) {\n            *(int **)(lVar4 + 0x10) = piVar8;\n          }\n          else {\n            *(int **)(lVar4 + 0x18) = piVar8;\n          }\n        }" { (expression_statement "lVar4 = *(long *)(param_1 + 2);" (assignment_expression "lVar4 = *(long *)(param_1 + 2)" identifier = (pointer_expression "*(long *)(param_1 + 2)" * (cast_expression "(long *)(param_1 + 2)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 2)" ( (binary_expression "param_1 + 2" identifier + number_literal) ))))) ;) (if_statement "if (*(int **)(lVar4 + 0x10) == param_1) {\n            *(int **)(lVar4 + 0x10) = piVar8;\n          }\n          else {\n            *(int **)(lVar4 + 0x18) = piVar8;\n          }" if (parenthesized_expression "(*(int **)(lVar4 + 0x10) == param_1)" ( (binary_expression "*(int **)(lVar4 + 0x10) == param_1" (pointer_expression "*(int **)(lVar4 + 0x10)" * (cast_expression "(int **)(lVar4 + 0x10)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(lVar4 + 0x10)" ( (binary_expression "lVar4 + 0x10" identifier + number_literal) )))) == identifier) )) (compound_statement "{\n            *(int **)(lVar4 + 0x10) = piVar8;\n          }" { (expression_statement "*(int **)(lVar4 + 0x10) = piVar8;" (assignment_expression "*(int **)(lVar4 + 0x10) = piVar8" (pointer_expression "*(int **)(lVar4 + 0x10)" * (cast_expression "(int **)(lVar4 + 0x10)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(lVar4 + 0x10)" ( (binary_expression "lVar4 + 0x10" identifier + number_literal) )))) = identifier) ;) }) (else_clause "else {\n            *(int **)(lVar4 + 0x18) = piVar8;\n          }" else (compound_statement "{\n            *(int **)(lVar4 + 0x18) = piVar8;\n          }" { (expression_statement "*(int **)(lVar4 + 0x18) = piVar8;" (assignment_expression "*(int **)(lVar4 + 0x18) = piVar8" (pointer_expression "*(int **)(lVar4 + 0x18)" * (cast_expression "(int **)(lVar4 + 0x18)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(lVar4 + 0x18)" ( (binary_expression "lVar4 + 0x18" identifier + number_literal) )))) = identifier) ;) }))) }))) (expression_statement "*(long *)(piVar8 + 2) = lVar4;" (assignment_expression "*(long *)(piVar8 + 2) = lVar4" (pointer_expression "*(long *)(piVar8 + 2)" * (cast_expression "(long *)(piVar8 + 2)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar8 + 2)" ( (binary_expression "piVar8 + 2" identifier + number_literal) )))) = identifier) ;) (expression_statement "iVar2 = *piVar8;" (assignment_expression "iVar2 = *piVar8" identifier = (pointer_expression "*piVar8" * identifier)) ;) (expression_statement "*piVar8 = *param_1;" (assignment_expression "*piVar8 = *param_1" (pointer_expression "*piVar8" * identifier) = (pointer_expression "*param_1" * identifier)) ;) (expression_statement "*param_1 = iVar2;" (assignment_expression "*param_1 = iVar2" (pointer_expression "*param_1" * identifier) = identifier) ;) (goto_statement "goto LAB_002dc55f;" goto statement_identifier ;) })) (goto_statement "goto LAB_002dc770;" goto statement_identifier ;) })) (expression_statement "piVar1 = *(int **)(param_1 + 2);" (assignment_expression "piVar1 = *(int **)(param_1 + 2)" identifier = (pointer_expression "*(int **)(param_1 + 2)" * (cast_expression "(int **)(param_1 + 2)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 2)" ( (binary_expression "param_1 + 2" identifier + number_literal) ))))) ;) (labeled_statement "LAB_002dc480:\n    *(int **)(piVar3 + 2) = piVar1;" statement_identifier : (expression_statement "*(int **)(piVar3 + 2) = piVar1;" (assignment_expression "*(int **)(piVar3 + 2) = piVar1" (pointer_expression "*(int **)(piVar3 + 2)" * (cast_expression "(int **)(piVar3 + 2)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(piVar3 + 2)" ( (binary_expression "piVar3 + 2" identifier + number_literal) )))) = identifier) ;)) (expression_statement "piVar7 = piVar3;" (assignment_expression "piVar7 = piVar3" identifier = identifier) ;) }))) (if_statement "if (*(int **)(param_2 + 8) == param_1) {\n    *(int **)(param_2 + 8) = piVar7;\n  }\n  else {\n    lVar4 = *(long *)(param_1 + 2);\n    if (*(int **)(lVar4 + 0x10) == param_1) {\n      *(int **)(lVar4 + 0x10) = piVar7;\n    }\n    else {\n      *(int **)(lVar4 + 0x18) = piVar7;\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    *(int **)(param_2 + 8) = piVar7;\n  }" { (expression_statement "*(int **)(param_2 + 8) = piVar7;" (assignment_expression "*(int **)(param_2 + 8) = piVar7" (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) ;) }) (else_clause "else {\n    lVar4 = *(long *)(param_1 + 2);\n    if (*(int **)(lVar4 + 0x10) == param_1) {\n      *(int **)(lVar4 + 0x10) = piVar7;\n    }\n    else {\n      *(int **)(lVar4 + 0x18) = piVar7;\n    }\n  }" else (compound_statement "{\n    lVar4 = *(long *)(param_1 + 2);\n    if (*(int **)(lVar4 + 0x10) == param_1) {\n      *(int **)(lVar4 + 0x10) = piVar7;\n    }\n    else {\n      *(int **)(lVar4 + 0x18) = piVar7;\n    }\n  }" { (expression_statement "lVar4 = *(long *)(param_1 + 2);" (assignment_expression "lVar4 = *(long *)(param_1 + 2)" identifier = (pointer_expression "*(long *)(param_1 + 2)" * (cast_expression "(long *)(param_1 + 2)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 2)" ( (binary_expression "param_1 + 2" identifier + number_literal) ))))) ;) (if_statement "if (*(int **)(lVar4 + 0x10) == param_1) {\n      *(int **)(lVar4 + 0x10) = piVar7;\n    }\n    else {\n      *(int **)(lVar4 + 0x18) = piVar7;\n    }" if (parenthesized_expression "(*(int **)(lVar4 + 0x10) == param_1)" ( (binary_expression "*(int **)(lVar4 + 0x10) == param_1" (pointer_expression "*(int **)(lVar4 + 0x10)" * (cast_expression "(int **)(lVar4 + 0x10)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(lVar4 + 0x10)" ( (binary_expression "lVar4 + 0x10" identifier + number_literal) )))) == identifier) )) (compound_statement "{\n      *(int **)(lVar4 + 0x10) = piVar7;\n    }" { (expression_statement "*(int **)(lVar4 + 0x10) = piVar7;" (assignment_expression "*(int **)(lVar4 + 0x10) = piVar7" (pointer_expression "*(int **)(lVar4 + 0x10)" * (cast_expression "(int **)(lVar4 + 0x10)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(lVar4 + 0x10)" ( (binary_expression "lVar4 + 0x10" identifier + number_literal) )))) = identifier) ;) }) (else_clause "else {\n      *(int **)(lVar4 + 0x18) = piVar7;\n    }" else (compound_statement "{\n      *(int **)(lVar4 + 0x18) = piVar7;\n    }" { (expression_statement "*(int **)(lVar4 + 0x18) = piVar7;" (assignment_expression "*(int **)(lVar4 + 0x18) = piVar7" (pointer_expression "*(int **)(lVar4 + 0x18)" * (cast_expression "(int **)(lVar4 + 0x18)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(lVar4 + 0x18)" ( (binary_expression "lVar4 + 0x18" identifier + number_literal) )))) = identifier) ;) }))) }))) (if_statement "if (*(int **)(param_2 + 0x10) == param_1) {\n    piVar3 = piVar7;\n    if (*(long *)(param_1 + 6) == 0) {\n      *(undefined8 *)(param_2 + 0x10) = *(undefined8 *)(param_1 + 2);\n    }\n    else {\n      do {\n        piVar5 = piVar3;\n        piVar3 = *(int **)(piVar5 + 4);\n      } while (piVar3 != (int *)0x0);\n      *(int **)(param_2 + 0x10) = piVar5;\n    }\n  }" if (parenthesized_expression "(*(int **)(param_2 + 0x10) == param_1)" ( (binary_expression "*(int **)(param_2 + 0x10) == param_1" (pointer_expression "*(int **)(param_2 + 0x10)" * (cast_expression "(int **)(param_2 + 0x10)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_2 + 0x10)" ( (binary_expression "param_2 + 0x10" identifier + number_literal) )))) == identifier) )) (compound_statement "{\n    piVar3 = piVar7;\n    if (*(long *)(param_1 + 6) == 0) {\n      *(undefined8 *)(param_2 + 0x10) = *(undefined8 *)(param_1 + 2);\n    }\n    else {\n      do {\n        piVar5 = piVar3;\n        piVar3 = *(int **)(piVar5 + 4);\n      } while (piVar3 != (int *)0x0);\n      *(int **)(param_2 + 0x10) = piVar5;\n    }\n  }" { (expression_statement "piVar3 = piVar7;" (assignment_expression "piVar3 = piVar7" identifier = identifier) ;) (if_statement "if (*(long *)(param_1 + 6) == 0) {\n      *(undefined8 *)(param_2 + 0x10) = *(undefined8 *)(param_1 + 2);\n    }\n    else {\n      do {\n        piVar5 = piVar3;\n        piVar3 = *(int **)(piVar5 + 4);\n      } while (piVar3 != (int *)0x0);\n      *(int **)(param_2 + 0x10) = piVar5;\n    }" if (parenthesized_expression "(*(long *)(param_1 + 6) == 0)" ( (binary_expression "*(long *)(param_1 + 6) == 0" (pointer_expression "*(long *)(param_1 + 6)" * (cast_expression "(long *)(param_1 + 6)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 6)" ( (binary_expression "param_1 + 6" identifier + number_literal) )))) == number_literal) )) (compound_statement "{\n      *(undefined8 *)(param_2 + 0x10) = *(undefined8 *)(param_1 + 2);\n    }" { (expression_statement "*(undefined8 *)(param_2 + 0x10) = *(undefined8 *)(param_1 + 2);" (assignment_expression "*(undefined8 *)(param_2 + 0x10) = *(undefined8 *)(param_1 + 2)" (pointer_expression "*(undefined8 *)(param_2 + 0x10)" * (cast_expression "(undefined8 *)(param_2 + 0x10)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x10)" ( (binary_expression "param_2 + 0x10" identifier + number_literal) )))) = (pointer_expression "*(undefined8 *)(param_1 + 2)" * (cast_expression "(undefined8 *)(param_1 + 2)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 2)" ( (binary_expression "param_1 + 2" identifier + number_literal) ))))) ;) }) (else_clause "else {\n      do {\n        piVar5 = piVar3;\n        piVar3 = *(int **)(piVar5 + 4);\n      } while (piVar3 != (int *)0x0);\n      *(int **)(param_2 + 0x10) = piVar5;\n    }" else (compound_statement "{\n      do {\n        piVar5 = piVar3;\n        piVar3 = *(int **)(piVar5 + 4);\n      } while (piVar3 != (int *)0x0);\n      *(int **)(param_2 + 0x10) = piVar5;\n    }" { (do_statement "do {\n        piVar5 = piVar3;\n        piVar3 = *(int **)(piVar5 + 4);\n      } while (piVar3 != (int *)0x0);" do (compound_statement "{\n        piVar5 = piVar3;\n        piVar3 = *(int **)(piVar5 + 4);\n      }" { (expression_statement "piVar5 = piVar3;" (assignment_expression "piVar5 = piVar3" identifier = identifier) ;) (expression_statement "piVar3 = *(int **)(piVar5 + 4);" (assignment_expression "piVar3 = *(int **)(piVar5 + 4)" identifier = (pointer_expression "*(int **)(piVar5 + 4)" * (cast_expression "(int **)(piVar5 + 4)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(piVar5 + 4)" ( (binary_expression "piVar5 + 4" identifier + number_literal) ))))) ;) }) while (parenthesized_expression "(piVar3 != (int *)0x0)" ( (binary_expression "piVar3 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) ;) (expression_statement "*(int **)(param_2 + 0x10) = piVar5;" (assignment_expression "*(int **)(param_2 + 0x10) = piVar5" (pointer_expression "*(int **)(param_2 + 0x10)" * (cast_expression "(int **)(param_2 + 0x10)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_2 + 0x10)" ( (binary_expression "param_2 + 0x10" identifier + number_literal) )))) = identifier) ;) }))) })) (expression_statement "iVar2 = *param_1;" (assignment_expression "iVar2 = *param_1" identifier = (pointer_expression "*param_1" * identifier)) ;) (if_statement "if (*(int **)(param_2 + 0x18) == param_1) {\n    piVar3 = piVar7;\n    if (*(long *)(param_1 + 4) == 0) {\n      *(undefined8 *)(param_2 + 0x18) = *(undefined8 *)(param_1 + 2);\n    }\n    else {\n      do {\n        piVar5 = piVar3;\n        piVar3 = *(int **)(piVar5 + 6);\n      } while (piVar3 != (int *)0x0);\n      *(int **)(param_2 + 0x18) = piVar5;\n    }\n  }" if (parenthesized_expression "(*(int **)(param_2 + 0x18) == param_1)" ( (binary_expression "*(int **)(param_2 + 0x18) == param_1" (pointer_expression "*(int **)(param_2 + 0x18)" * (cast_expression "(int **)(param_2 + 0x18)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_2 + 0x18)" ( (binary_expression "param_2 + 0x18" identifier + number_literal) )))) == identifier) )) (compound_statement "{\n    piVar3 = piVar7;\n    if (*(long *)(param_1 + 4) == 0) {\n      *(undefined8 *)(param_2 + 0x18) = *(undefined8 *)(param_1 + 2);\n    }\n    else {\n      do {\n        piVar5 = piVar3;\n        piVar3 = *(int **)(piVar5 + 6);\n      } while (piVar3 != (int *)0x0);\n      *(int **)(param_2 + 0x18) = piVar5;\n    }\n  }" { (expression_statement "piVar3 = piVar7;" (assignment_expression "piVar3 = piVar7" identifier = identifier) ;) (if_statement "if (*(long *)(param_1 + 4) == 0) {\n      *(undefined8 *)(param_2 + 0x18) = *(undefined8 *)(param_1 + 2);\n    }\n    else {\n      do {\n        piVar5 = piVar3;\n        piVar3 = *(int **)(piVar5 + 6);\n      } while (piVar3 != (int *)0x0);\n      *(int **)(param_2 + 0x18) = piVar5;\n    }" if (parenthesized_expression "(*(long *)(param_1 + 4) == 0)" ( (binary_expression "*(long *)(param_1 + 4) == 0" (pointer_expression "*(long *)(param_1 + 4)" * (cast_expression "(long *)(param_1 + 4)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) )))) == number_literal) )) (compound_statement "{\n      *(undefined8 *)(param_2 + 0x18) = *(undefined8 *)(param_1 + 2);\n    }" { (expression_statement "*(undefined8 *)(param_2 + 0x18) = *(undefined8 *)(param_1 + 2);" (assignment_expression "*(undefined8 *)(param_2 + 0x18) = *(undefined8 *)(param_1 + 2)" (pointer_expression "*(undefined8 *)(param_2 + 0x18)" * (cast_expression "(undefined8 *)(param_2 + 0x18)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x18)" ( (binary_expression "param_2 + 0x18" identifier + number_literal) )))) = (pointer_expression "*(undefined8 *)(param_1 + 2)" * (cast_expression "(undefined8 *)(param_1 + 2)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 2)" ( (binary_expression "param_1 + 2" identifier + number_literal) ))))) ;) }) (else_clause "else {\n      do {\n        piVar5 = piVar3;\n        piVar3 = *(int **)(piVar5 + 6);\n      } while (piVar3 != (int *)0x0);\n      *(int **)(param_2 + 0x18) = piVar5;\n    }" else (compound_statement "{\n      do {\n        piVar5 = piVar3;\n        piVar3 = *(int **)(piVar5 + 6);\n      } while (piVar3 != (int *)0x0);\n      *(int **)(param_2 + 0x18) = piVar5;\n    }" { (do_statement "do {\n        piVar5 = piVar3;\n        piVar3 = *(int **)(piVar5 + 6);\n      } while (piVar3 != (int *)0x0);" do (compound_statement "{\n        piVar5 = piVar3;\n        piVar3 = *(int **)(piVar5 + 6);\n      }" { (expression_statement "piVar5 = piVar3;" (assignment_expression "piVar5 = piVar3" identifier = identifier) ;) (expression_statement "piVar3 = *(int **)(piVar5 + 6);" (assignment_expression "piVar3 = *(int **)(piVar5 + 6)" identifier = (pointer_expression "*(int **)(piVar5 + 6)" * (cast_expression "(int **)(piVar5 + 6)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(piVar5 + 6)" ( (binary_expression "piVar5 + 6" identifier + number_literal) ))))) ;) }) while (parenthesized_expression "(piVar3 != (int *)0x0)" ( (binary_expression "piVar3 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) ;) (expression_statement "*(int **)(param_2 + 0x18) = piVar5;" (assignment_expression "*(int **)(param_2 + 0x18) = piVar5" (pointer_expression "*(int **)(param_2 + 0x18)" * (cast_expression "(int **)(param_2 + 0x18)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_2 + 0x18)" ( (binary_expression "param_2 + 0x18" identifier + number_literal) )))) = identifier) ;) }))) })) (labeled_statement "LAB_002dc55f:\n  if (iVar2 == 0) {\n    return;\n  }" statement_identifier : (if_statement "if (iVar2 == 0) {\n    return;\n  }" if (parenthesized_expression "(iVar2 == 0)" ( (binary_expression "iVar2 == 0" identifier == number_literal) )) (compound_statement "{\n    return;\n  }" { (return_statement "return;" return ;) }))) (do_statement "do {\n    piVar3 = piVar1;\n    if (*(int **)(param_2 + 8) == piVar7) {\nLAB_002dc6f0:\n      if (piVar7 == (int *)0x0) {\n        return;\n      }\nLAB_002dc6f5:\n      *piVar7 = 1;\n      return;\n    }\n    if ((piVar7 != (int *)0x0) && (*piVar7 != 1)) goto LAB_002dc6f5;\n    piVar5 = *(int **)(piVar3 + 4);\n    if (piVar5 != piVar7) {\n      piVar8 = *(int **)(piVar5 + 6);\n      piVar1 = piVar5;\n      if (*piVar5 == 0) {\n        *piVar5 = 1;\n        *piVar3 = 0;\n        *(int **)(piVar3 + 4) = piVar8;\n        if (piVar8 != (int *)0x0) {\n          *(int **)(piVar8 + 2) = piVar3;\n        }\n        lVar4 = *(long *)(piVar3 + 2);\n        *(long *)(piVar5 + 2) = lVar4;\n        if (piVar3 == *(int **)(param_2 + 8)) {\n          *(int **)(param_2 + 8) = piVar5;\n          piVar1 = *(int **)(piVar3 + 4);\n        }\n        else if (piVar3 == *(int **)(lVar4 + 0x18)) {\n          *(int **)(lVar4 + 0x18) = piVar5;\n          piVar1 = piVar8;\n        }\n        else {\n          *(int **)(lVar4 + 0x10) = piVar5;\n          piVar1 = *(int **)(piVar3 + 4);\n        }\n        *(int **)(piVar5 + 6) = piVar3;\n        piVar8 = *(int **)(piVar1 + 6);\n        *(int **)(piVar3 + 2) = piVar5;\n      }\n      if ((piVar8 == (int *)0x0) || (*piVar8 == 1)) {\n        piVar5 = *(int **)(piVar1 + 4);\n        if ((piVar5 == (int *)0x0) || (*piVar5 == 1)) goto LAB_002dc5e8;\nLAB_002dc82b:\n        piVar6 = *(int **)(piVar3 + 4);\n        *piVar1 = *piVar3;\n        *piVar3 = 1;\nLAB_002dc83b:\n        *piVar5 = 1;\n      }\n      else {\n        piVar5 = *(int **)(piVar1 + 4);\n        if ((piVar5 != (int *)0x0) && (*piVar5 != 1)) goto LAB_002dc82b;\n        lVar4 = *(long *)(piVar8 + 4);\n        *piVar8 = 1;\n        *piVar1 = 0;\n        *(long *)(piVar1 + 6) = lVar4;\n        if (lVar4 != 0) {\n          *(int **)(lVar4 + 8) = piVar1;\n        }\n        lVar4 = *(long *)(piVar1 + 2);\n        *(long *)(piVar8 + 2) = lVar4;\n        if (piVar1 == *(int **)(param_2 + 8)) {\n          *(int **)(param_2 + 8) = piVar8;\n        }\n        else if (piVar1 == *(int **)(lVar4 + 0x10)) {\n          *(int **)(lVar4 + 0x10) = piVar8;\n        }\n        else {\n          *(int **)(lVar4 + 0x18) = piVar8;\n        }\n        *(int **)(piVar8 + 4) = piVar1;\n        piVar6 = *(int **)(piVar3 + 4);\n        *(int **)(piVar1 + 2) = piVar8;\n        piVar5 = *(int **)(piVar6 + 4);\n        *piVar6 = *piVar3;\n        *piVar3 = 1;\n        if (piVar5 != (int *)0x0) goto LAB_002dc83b;\n      }\n      lVar4 = *(long *)(piVar6 + 6);\n      *(long *)(piVar3 + 4) = lVar4;\n      if (lVar4 != 0) {\n        *(int **)(lVar4 + 8) = piVar3;\n      }\n      lVar4 = *(long *)(piVar3 + 2);\n      *(long *)(piVar6 + 2) = lVar4;\n      if (piVar3 == *(int **)(param_2 + 8)) {\n        *(int **)(param_2 + 8) = piVar6;\n      }\n      else if (piVar3 == *(int **)(lVar4 + 0x18)) {\n        *(int **)(lVar4 + 0x18) = piVar6;\n      }\n      else {\n        *(int **)(lVar4 + 0x10) = piVar6;\n      }\n      *(int **)(piVar6 + 6) = piVar3;\n      *(int **)(piVar3 + 2) = piVar6;\n      goto LAB_002dc6f0;\n    }\n    piVar5 = *(int **)(piVar3 + 6);\n    piVar8 = *(int **)(piVar5 + 4);\n    piVar1 = piVar5;\n    if (*piVar5 == 0) {\n      *piVar5 = 1;\n      *piVar3 = 0;\n      *(int **)(piVar3 + 6) = piVar8;\n      if (piVar8 != (int *)0x0) {\n        *(int **)(piVar8 + 2) = piVar3;\n      }\n      lVar4 = *(long *)(piVar3 + 2);\n      *(long *)(piVar5 + 2) = lVar4;\n      if (piVar3 == *(int **)(param_2 + 8)) {\n        *(int **)(param_2 + 8) = piVar5;\n        piVar1 = *(int **)(piVar3 + 6);\n      }\n      else if (piVar3 == *(int **)(lVar4 + 0x10)) {\n        *(int **)(lVar4 + 0x10) = piVar5;\n        piVar1 = piVar8;\n      }\n      else {\n        *(int **)(lVar4 + 0x18) = piVar5;\n        piVar1 = *(int **)(piVar3 + 6);\n      }\n      *(int **)(piVar5 + 4) = piVar3;\n      piVar8 = *(int **)(piVar1 + 4);\n      *(int **)(piVar3 + 2) = piVar5;\n    }\n    if ((piVar8 != (int *)0x0) && (*piVar8 != 1)) {\n      piVar5 = *(int **)(piVar1 + 6);\n      if ((piVar5 != (int *)0x0) && (*piVar5 != 1)) goto LAB_002dc69f;\n      lVar4 = *(long *)(piVar8 + 6);\n      *piVar8 = 1;\n      *piVar1 = 0;\n      *(long *)(piVar1 + 4) = lVar4;\n      if (lVar4 != 0) {\n        *(int **)(lVar4 + 8) = piVar1;\n      }\n      lVar4 = *(long *)(piVar1 + 2);\n      *(long *)(piVar8 + 2) = lVar4;\n      if (piVar1 == *(int **)(param_2 + 8)) {\n        *(int **)(param_2 + 8) = piVar8;\n      }\n      else if (piVar1 == *(int **)(lVar4 + 0x18)) {\n        *(int **)(lVar4 + 0x18) = piVar8;\n      }\n      else {\n        *(int **)(lVar4 + 0x10) = piVar8;\n      }\n      *(int **)(piVar8 + 6) = piVar1;\n      *(int **)(piVar1 + 2) = piVar8;\n      piVar8 = *(int **)(piVar3 + 6);\n      piVar5 = *(int **)(piVar8 + 6);\n      *piVar8 = *piVar3;\n      *piVar3 = 1;\n      if (piVar5 != (int *)0x0) goto LAB_002dc6af;\nLAB_002dc6b5:\n      lVar4 = *(long *)(piVar8 + 4);\n      *(long *)(piVar3 + 6) = lVar4;\n      if (lVar4 != 0) {\n        *(int **)(lVar4 + 8) = piVar3;\n      }\n      lVar4 = *(long *)(piVar3 + 2);\n      *(long *)(piVar8 + 2) = lVar4;\n      if (piVar3 == *(int **)(param_2 + 8)) {\n        *(int **)(param_2 + 8) = piVar8;\n      }\n      else if (piVar3 == *(int **)(lVar4 + 0x10)) {\n        *(int **)(lVar4 + 0x10) = piVar8;\n      }\n      else {\n        *(int **)(lVar4 + 0x18) = piVar8;\n      }\n      *(int **)(piVar8 + 4) = piVar3;\n      *(int **)(piVar3 + 2) = piVar8;\n      goto LAB_002dc6f0;\n    }\n    piVar5 = *(int **)(piVar1 + 6);\n    if ((piVar5 != (int *)0x0) && (*piVar5 != 1)) {\nLAB_002dc69f:\n      piVar8 = *(int **)(piVar3 + 6);\n      *piVar1 = *piVar3;\n      *piVar3 = 1;\nLAB_002dc6af:\n      *piVar5 = 1;\n      goto LAB_002dc6b5;\n    }\nLAB_002dc5e8:\n    *piVar1 = 0;\n    piVar1 = *(int **)(piVar3 + 2);\n    piVar7 = piVar3;\n  } while( true );" do (compound_statement "{\n    piVar3 = piVar1;\n    if (*(int **)(param_2 + 8) == piVar7) {\nLAB_002dc6f0:\n      if (piVar7 == (int *)0x0) {\n        return;\n      }\nLAB_002dc6f5:\n      *piVar7 = 1;\n      return;\n    }\n    if ((piVar7 != (int *)0x0) && (*piVar7 != 1)) goto LAB_002dc6f5;\n    piVar5 = *(int **)(piVar3 + 4);\n    if (piVar5 != piVar7) {\n      piVar8 = *(int **)(piVar5 + 6);\n      piVar1 = piVar5;\n      if (*piVar5 == 0) {\n        *piVar5 = 1;\n        *piVar3 = 0;\n        *(int **)(piVar3 + 4) = piVar8;\n        if (piVar8 != (int *)0x0) {\n          *(int **)(piVar8 + 2) = piVar3;\n        }\n        lVar4 = *(long *)(piVar3 + 2);\n        *(long *)(piVar5 + 2) = lVar4;\n        if (piVar3 == *(int **)(param_2 + 8)) {\n          *(int **)(param_2 + 8) = piVar5;\n          piVar1 = *(int **)(piVar3 + 4);\n        }\n        else if (piVar3 == *(int **)(lVar4 + 0x18)) {\n          *(int **)(lVar4 + 0x18) = piVar5;\n          piVar1 = piVar8;\n        }\n        else {\n          *(int **)(lVar4 + 0x10) = piVar5;\n          piVar1 = *(int **)(piVar3 + 4);\n        }\n        *(int **)(piVar5 + 6) = piVar3;\n        piVar8 = *(int **)(piVar1 + 6);\n        *(int **)(piVar3 + 2) = piVar5;\n      }\n      if ((piVar8 == (int *)0x0) || (*piVar8 == 1)) {\n        piVar5 = *(int **)(piVar1 + 4);\n        if ((piVar5 == (int *)0x0) || (*piVar5 == 1)) goto LAB_002dc5e8;\nLAB_002dc82b:\n        piVar6 = *(int **)(piVar3 + 4);\n        *piVar1 = *piVar3;\n        *piVar3 = 1;\nLAB_002dc83b:\n        *piVar5 = 1;\n      }\n      else {\n        piVar5 = *(int **)(piVar1 + 4);\n        if ((piVar5 != (int *)0x0) && (*piVar5 != 1)) goto LAB_002dc82b;\n        lVar4 = *(long *)(piVar8 + 4);\n        *piVar8 = 1;\n        *piVar1 = 0;\n        *(long *)(piVar1 + 6) = lVar4;\n        if (lVar4 != 0) {\n          *(int **)(lVar4 + 8) = piVar1;\n        }\n        lVar4 = *(long *)(piVar1 + 2);\n        *(long *)(piVar8 + 2) = lVar4;\n        if (piVar1 == *(int **)(param_2 + 8)) {\n          *(int **)(param_2 + 8) = piVar8;\n        }\n        else if (piVar1 == *(int **)(lVar4 + 0x10)) {\n          *(int **)(lVar4 + 0x10) = piVar8;\n        }\n        else {\n          *(int **)(lVar4 + 0x18) = piVar8;\n        }\n        *(int **)(piVar8 + 4) = piVar1;\n        piVar6 = *(int **)(piVar3 + 4);\n        *(int **)(piVar1 + 2) = piVar8;\n        piVar5 = *(int **)(piVar6 + 4);\n        *piVar6 = *piVar3;\n        *piVar3 = 1;\n        if (piVar5 != (int *)0x0) goto LAB_002dc83b;\n      }\n      lVar4 = *(long *)(piVar6 + 6);\n      *(long *)(piVar3 + 4) = lVar4;\n      if (lVar4 != 0) {\n        *(int **)(lVar4 + 8) = piVar3;\n      }\n      lVar4 = *(long *)(piVar3 + 2);\n      *(long *)(piVar6 + 2) = lVar4;\n      if (piVar3 == *(int **)(param_2 + 8)) {\n        *(int **)(param_2 + 8) = piVar6;\n      }\n      else if (piVar3 == *(int **)(lVar4 + 0x18)) {\n        *(int **)(lVar4 + 0x18) = piVar6;\n      }\n      else {\n        *(int **)(lVar4 + 0x10) = piVar6;\n      }\n      *(int **)(piVar6 + 6) = piVar3;\n      *(int **)(piVar3 + 2) = piVar6;\n      goto LAB_002dc6f0;\n    }\n    piVar5 = *(int **)(piVar3 + 6);\n    piVar8 = *(int **)(piVar5 + 4);\n    piVar1 = piVar5;\n    if (*piVar5 == 0) {\n      *piVar5 = 1;\n      *piVar3 = 0;\n      *(int **)(piVar3 + 6) = piVar8;\n      if (piVar8 != (int *)0x0) {\n        *(int **)(piVar8 + 2) = piVar3;\n      }\n      lVar4 = *(long *)(piVar3 + 2);\n      *(long *)(piVar5 + 2) = lVar4;\n      if (piVar3 == *(int **)(param_2 + 8)) {\n        *(int **)(param_2 + 8) = piVar5;\n        piVar1 = *(int **)(piVar3 + 6);\n      }\n      else if (piVar3 == *(int **)(lVar4 + 0x10)) {\n        *(int **)(lVar4 + 0x10) = piVar5;\n        piVar1 = piVar8;\n      }\n      else {\n        *(int **)(lVar4 + 0x18) = piVar5;\n        piVar1 = *(int **)(piVar3 + 6);\n      }\n      *(int **)(piVar5 + 4) = piVar3;\n      piVar8 = *(int **)(piVar1 + 4);\n      *(int **)(piVar3 + 2) = piVar5;\n    }\n    if ((piVar8 != (int *)0x0) && (*piVar8 != 1)) {\n      piVar5 = *(int **)(piVar1 + 6);\n      if ((piVar5 != (int *)0x0) && (*piVar5 != 1)) goto LAB_002dc69f;\n      lVar4 = *(long *)(piVar8 + 6);\n      *piVar8 = 1;\n      *piVar1 = 0;\n      *(long *)(piVar1 + 4) = lVar4;\n      if (lVar4 != 0) {\n        *(int **)(lVar4 + 8) = piVar1;\n      }\n      lVar4 = *(long *)(piVar1 + 2);\n      *(long *)(piVar8 + 2) = lVar4;\n      if (piVar1 == *(int **)(param_2 + 8)) {\n        *(int **)(param_2 + 8) = piVar8;\n      }\n      else if (piVar1 == *(int **)(lVar4 + 0x18)) {\n        *(int **)(lVar4 + 0x18) = piVar8;\n      }\n      else {\n        *(int **)(lVar4 + 0x10) = piVar8;\n      }\n      *(int **)(piVar8 + 6) = piVar1;\n      *(int **)(piVar1 + 2) = piVar8;\n      piVar8 = *(int **)(piVar3 + 6);\n      piVar5 = *(int **)(piVar8 + 6);\n      *piVar8 = *piVar3;\n      *piVar3 = 1;\n      if (piVar5 != (int *)0x0) goto LAB_002dc6af;\nLAB_002dc6b5:\n      lVar4 = *(long *)(piVar8 + 4);\n      *(long *)(piVar3 + 6) = lVar4;\n      if (lVar4 != 0) {\n        *(int **)(lVar4 + 8) = piVar3;\n      }\n      lVar4 = *(long *)(piVar3 + 2);\n      *(long *)(piVar8 + 2) = lVar4;\n      if (piVar3 == *(int **)(param_2 + 8)) {\n        *(int **)(param_2 + 8) = piVar8;\n      }\n      else if (piVar3 == *(int **)(lVar4 + 0x10)) {\n        *(int **)(lVar4 + 0x10) = piVar8;\n      }\n      else {\n        *(int **)(lVar4 + 0x18) = piVar8;\n      }\n      *(int **)(piVar8 + 4) = piVar3;\n      *(int **)(piVar3 + 2) = piVar8;\n      goto LAB_002dc6f0;\n    }\n    piVar5 = *(int **)(piVar1 + 6);\n    if ((piVar5 != (int *)0x0) && (*piVar5 != 1)) {\nLAB_002dc69f:\n      piVar8 = *(int **)(piVar3 + 6);\n      *piVar1 = *piVar3;\n      *piVar3 = 1;\nLAB_002dc6af:\n      *piVar5 = 1;\n      goto LAB_002dc6b5;\n    }\nLAB_002dc5e8:\n    *piVar1 = 0;\n    piVar1 = *(int **)(piVar3 + 2);\n    piVar7 = piVar3;\n  }" { (expression_statement "piVar3 = piVar1;" (assignment_expression "piVar3 = piVar1" identifier = identifier) ;) (if_statement "if (*(int **)(param_2 + 8) == piVar7) {\nLAB_002dc6f0:\n      if (piVar7 == (int *)0x0) {\n        return;\n      }\nLAB_002dc6f5:\n      *piVar7 = 1;\n      return;\n    }" if (parenthesized_expression "(*(int **)(param_2 + 8) == piVar7)" ( (binary_expression "*(int **)(param_2 + 8) == piVar7" (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 "{\nLAB_002dc6f0:\n      if (piVar7 == (int *)0x0) {\n        return;\n      }\nLAB_002dc6f5:\n      *piVar7 = 1;\n      return;\n    }" { (labeled_statement "LAB_002dc6f0:\n      if (piVar7 == (int *)0x0) {\n        return;\n      }" statement_identifier : (if_statement "if (piVar7 == (int *)0x0) {\n        return;\n      }" if (parenthesized_expression "(piVar7 == (int *)0x0)" ( (binary_expression "piVar7 == (int *)0x0" identifier == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        return;\n      }" { (return_statement "return;" return ;) }))) (labeled_statement "LAB_002dc6f5:\n      *piVar7 = 1;" statement_identifier : (expression_statement "*piVar7 = 1;" (assignment_expression "*piVar7 = 1" (pointer_expression "*piVar7" * identifier) = number_literal) ;)) (return_statement "return;" return ;) })) (if_statement "if ((piVar7 != (int *)0x0) && (*piVar7 != 1)) goto LAB_002dc6f5;" if (parenthesized_expression "((piVar7 != (int *)0x0) && (*piVar7 != 1))" ( (binary_expression "(piVar7 != (int *)0x0) && (*piVar7 != 1)" (parenthesized_expression "(piVar7 != (int *)0x0)" ( (binary_expression "piVar7 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) && (parenthesized_expression "(*piVar7 != 1)" ( (binary_expression "*piVar7 != 1" (pointer_expression "*piVar7" * identifier) != number_literal) ))) )) (goto_statement "goto LAB_002dc6f5;" goto statement_identifier ;)) (expression_statement "piVar5 = *(int **)(piVar3 + 4);" (assignment_expression "piVar5 = *(int **)(piVar3 + 4)" identifier = (pointer_expression "*(int **)(piVar3 + 4)" * (cast_expression "(int **)(piVar3 + 4)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(piVar3 + 4)" ( (binary_expression "piVar3 + 4" identifier + number_literal) ))))) ;) (if_statement "if (piVar5 != piVar7) {\n      piVar8 = *(int **)(piVar5 + 6);\n      piVar1 = piVar5;\n      if (*piVar5 == 0) {\n        *piVar5 = 1;\n        *piVar3 = 0;\n        *(int **)(piVar3 + 4) = piVar8;\n        if (piVar8 != (int *)0x0) {\n          *(int **)(piVar8 + 2) = piVar3;\n        }\n        lVar4 = *(long *)(piVar3 + 2);\n        *(long *)(piVar5 + 2) = lVar4;\n        if (piVar3 == *(int **)(param_2 + 8)) {\n          *(int **)(param_2 + 8) = piVar5;\n          piVar1 = *(int **)(piVar3 + 4);\n        }\n        else if (piVar3 == *(int **)(lVar4 + 0x18)) {\n          *(int **)(lVar4 + 0x18) = piVar5;\n          piVar1 = piVar8;\n        }\n        else {\n          *(int **)(lVar4 + 0x10) = piVar5;\n          piVar1 = *(int **)(piVar3 + 4);\n        }\n        *(int **)(piVar5 + 6) = piVar3;\n        piVar8 = *(int **)(piVar1 + 6);\n        *(int **)(piVar3 + 2) = piVar5;\n      }\n      if ((piVar8 == (int *)0x0) || (*piVar8 == 1)) {\n        piVar5 = *(int **)(piVar1 + 4);\n        if ((piVar5 == (int *)0x0) || (*piVar5 == 1)) goto LAB_002dc5e8;\nLAB_002dc82b:\n        piVar6 = *(int **)(piVar3 + 4);\n        *piVar1 = *piVar3;\n        *piVar3 = 1;\nLAB_002dc83b:\n        *piVar5 = 1;\n      }\n      else {\n        piVar5 = *(int **)(piVar1 + 4);\n        if ((piVar5 != (int *)0x0) && (*piVar5 != 1)) goto LAB_002dc82b;\n        lVar4 = *(long *)(piVar8 + 4);\n        *piVar8 = 1;\n        *piVar1 = 0;\n        *(long *)(piVar1 + 6) = lVar4;\n        if (lVar4 != 0) {\n          *(int **)(lVar4 + 8) = piVar1;\n        }\n        lVar4 = *(long *)(piVar1 + 2);\n        *(long *)(piVar8 + 2) = lVar4;\n        if (piVar1 == *(int **)(param_2 + 8)) {\n          *(int **)(param_2 + 8) = piVar8;\n        }\n        else if (piVar1 == *(int **)(lVar4 + 0x10)) {\n          *(int **)(lVar4 + 0x10) = piVar8;\n        }\n        else {\n          *(int **)(lVar4 + 0x18) = piVar8;\n        }\n        *(int **)(piVar8 + 4) = piVar1;\n        piVar6 = *(int **)(piVar3 + 4);\n        *(int **)(piVar1 + 2) = piVar8;\n        piVar5 = *(int **)(piVar6 + 4);\n        *piVar6 = *piVar3;\n        *piVar3 = 1;\n        if (piVar5 != (int *)0x0) goto LAB_002dc83b;\n      }\n      lVar4 = *(long *)(piVar6 + 6);\n      *(long *)(piVar3 + 4) = lVar4;\n      if (lVar4 != 0) {\n        *(int **)(lVar4 + 8) = piVar3;\n      }\n      lVar4 = *(long *)(piVar3 + 2);\n      *(long *)(piVar6 + 2) = lVar4;\n      if (piVar3 == *(int **)(param_2 + 8)) {\n        *(int **)(param_2 + 8) = piVar6;\n      }\n      else if (piVar3 == *(int **)(lVar4 + 0x18)) {\n        *(int **)(lVar4 + 0x18) = piVar6;\n      }\n      else {\n        *(int **)(lVar4 + 0x10) = piVar6;\n      }\n      *(int **)(piVar6 + 6) = piVar3;\n      *(int **)(piVar3 + 2) = piVar6;\n      goto LAB_002dc6f0;\n    }" if (parenthesized_expression "(piVar5 != piVar7)" ( (binary_expression "piVar5 != piVar7" identifier != identifier) )) (compound_statement "{\n      piVar8 = *(int **)(piVar5 + 6);\n      piVar1 = piVar5;\n      if (*piVar5 == 0) {\n        *piVar5 = 1;\n        *piVar3 = 0;\n        *(int **)(piVar3 + 4) = piVar8;\n        if (piVar8 != (int *)0x0) {\n          *(int **)(piVar8 + 2) = piVar3;\n        }\n        lVar4 = *(long *)(piVar3 + 2);\n        *(long *)(piVar5 + 2) = lVar4;\n        if (piVar3 == *(int **)(param_2 + 8)) {\n          *(int **)(param_2 + 8) = piVar5;\n          piVar1 = *(int **)(piVar3 + 4);\n        }\n        else if (piVar3 == *(int **)(lVar4 + 0x18)) {\n          *(int **)(lVar4 + 0x18) = piVar5;\n          piVar1 = piVar8;\n        }\n        else {\n          *(int **)(lVar4 + 0x10) = piVar5;\n          piVar1 = *(int **)(piVar3 + 4);\n        }\n        *(int **)(piVar5 + 6) = piVar3;\n        piVar8 = *(int **)(piVar1 + 6);\n        *(int **)(piVar3 + 2) = piVar5;\n      }\n      if ((piVar8 == (int *)0x0) || (*piVar8 == 1)) {\n        piVar5 = *(int **)(piVar1 + 4);\n        if ((piVar5 == (int *)0x0) || (*piVar5 == 1)) goto LAB_002dc5e8;\nLAB_002dc82b:\n        piVar6 = *(int **)(piVar3 + 4);\n        *piVar1 = *piVar3;\n        *piVar3 = 1;\nLAB_002dc83b:\n        *piVar5 = 1;\n      }\n      else {\n        piVar5 = *(int **)(piVar1 + 4);\n        if ((piVar5 != (int *)0x0) && (*piVar5 != 1)) goto LAB_002dc82b;\n        lVar4 = *(long *)(piVar8 + 4);\n        *piVar8 = 1;\n        *piVar1 = 0;\n        *(long *)(piVar1 + 6) = lVar4;\n        if (lVar4 != 0) {\n          *(int **)(lVar4 + 8) = piVar1;\n        }\n        lVar4 = *(long *)(piVar1 + 2);\n        *(long *)(piVar8 + 2) = lVar4;\n        if (piVar1 == *(int **)(param_2 + 8)) {\n          *(int **)(param_2 + 8) = piVar8;\n        }\n        else if (piVar1 == *(int **)(lVar4 + 0x10)) {\n          *(int **)(lVar4 + 0x10) = piVar8;\n        }\n        else {\n          *(int **)(lVar4 + 0x18) = piVar8;\n        }\n        *(int **)(piVar8 + 4) = piVar1;\n        piVar6 = *(int **)(piVar3 + 4);\n        *(int **)(piVar1 + 2) = piVar8;\n        piVar5 = *(int **)(piVar6 + 4);\n        *piVar6 = *piVar3;\n        *piVar3 = 1;\n        if (piVar5 != (int *)0x0) goto LAB_002dc83b;\n      }\n      lVar4 = *(long *)(piVar6 + 6);\n      *(long *)(piVar3 + 4) = lVar4;\n      if (lVar4 != 0) {\n        *(int **)(lVar4 + 8) = piVar3;\n      }\n      lVar4 = *(long *)(piVar3 + 2);\n      *(long *)(piVar6 + 2) = lVar4;\n      if (piVar3 == *(int **)(param_2 + 8)) {\n        *(int **)(param_2 + 8) = piVar6;\n      }\n      else if (piVar3 == *(int **)(lVar4 + 0x18)) {\n        *(int **)(lVar4 + 0x18) = piVar6;\n      }\n      else {\n        *(int **)(lVar4 + 0x10) = piVar6;\n      }\n      *(int **)(piVar6 + 6) = piVar3;\n      *(int **)(piVar3 + 2) = piVar6;\n      goto LAB_002dc6f0;\n    }" { (expression_statement "piVar8 = *(int **)(piVar5 + 6);" (assignment_expression "piVar8 = *(int **)(piVar5 + 6)" identifier = (pointer_expression "*(int **)(piVar5 + 6)" * (cast_expression "(int **)(piVar5 + 6)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(piVar5 + 6)" ( (binary_expression "piVar5 + 6" identifier + number_literal) ))))) ;) (expression_statement "piVar1 = piVar5;" (assignment_expression "piVar1 = piVar5" identifier = identifier) ;) (if_statement "if (*piVar5 == 0) {\n        *piVar5 = 1;\n        *piVar3 = 0;\n        *(int **)(piVar3 + 4) = piVar8;\n        if (piVar8 != (int *)0x0) {\n          *(int **)(piVar8 + 2) = piVar3;\n        }\n        lVar4 = *(long *)(piVar3 + 2);\n        *(long *)(piVar5 + 2) = lVar4;\n        if (piVar3 == *(int **)(param_2 + 8)) {\n          *(int **)(param_2 + 8) = piVar5;\n          piVar1 = *(int **)(piVar3 + 4);\n        }\n        else if (piVar3 == *(int **)(lVar4 + 0x18)) {\n          *(int **)(lVar4 + 0x18) = piVar5;\n          piVar1 = piVar8;\n        }\n        else {\n          *(int **)(lVar4 + 0x10) = piVar5;\n          piVar1 = *(int **)(piVar3 + 4);\n        }\n        *(int **)(piVar5 + 6) = piVar3;\n        piVar8 = *(int **)(piVar1 + 6);\n        *(int **)(piVar3 + 2) = piVar5;\n      }" if (parenthesized_expression "(*piVar5 == 0)" ( (binary_expression "*piVar5 == 0" (pointer_expression "*piVar5" * identifier) == number_literal) )) (compound_statement "{\n        *piVar5 = 1;\n        *piVar3 = 0;\n        *(int **)(piVar3 + 4) = piVar8;\n        if (piVar8 != (int *)0x0) {\n          *(int **)(piVar8 + 2) = piVar3;\n        }\n        lVar4 = *(long *)(piVar3 + 2);\n        *(long *)(piVar5 + 2) = lVar4;\n        if (piVar3 == *(int **)(param_2 + 8)) {\n          *(int **)(param_2 + 8) = piVar5;\n          piVar1 = *(int **)(piVar3 + 4);\n        }\n        else if (piVar3 == *(int **)(lVar4 + 0x18)) {\n          *(int **)(lVar4 + 0x18) = piVar5;\n          piVar1 = piVar8;\n        }\n        else {\n          *(int **)(lVar4 + 0x10) = piVar5;\n          piVar1 = *(int **)(piVar3 + 4);\n        }\n        *(int **)(piVar5 + 6) = piVar3;\n        piVar8 = *(int **)(piVar1 + 6);\n        *(int **)(piVar3 + 2) = piVar5;\n      }" { (expression_statement "*piVar5 = 1;" (assignment_expression "*piVar5 = 1" (pointer_expression "*piVar5" * identifier) = number_literal) ;) (expression_statement "*piVar3 = 0;" (assignment_expression "*piVar3 = 0" (pointer_expression "*piVar3" * identifier) = number_literal) ;) (expression_statement "*(int **)(piVar3 + 4) = piVar8;" (assignment_expression "*(int **)(piVar3 + 4) = piVar8" (pointer_expression "*(int **)(piVar3 + 4)" * (cast_expression "(int **)(piVar3 + 4)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(piVar3 + 4)" ( (binary_expression "piVar3 + 4" identifier + number_literal) )))) = identifier) ;) (if_statement "if (piVar8 != (int *)0x0) {\n          *(int **)(piVar8 + 2) = piVar3;\n        }" if (parenthesized_expression "(piVar8 != (int *)0x0)" ( (binary_expression "piVar8 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          *(int **)(piVar8 + 2) = piVar3;\n        }" { (expression_statement "*(int **)(piVar8 + 2) = piVar3;" (assignment_expression "*(int **)(piVar8 + 2) = piVar3" (pointer_expression "*(int **)(piVar8 + 2)" * (cast_expression "(int **)(piVar8 + 2)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(piVar8 + 2)" ( (binary_expression "piVar8 + 2" identifier + number_literal) )))) = identifier) ;) })) (expression_statement "lVar4 = *(long *)(piVar3 + 2);" (assignment_expression "lVar4 = *(long *)(piVar3 + 2)" identifier = (pointer_expression "*(long *)(piVar3 + 2)" * (cast_expression "(long *)(piVar3 + 2)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar3 + 2)" ( (binary_expression "piVar3 + 2" identifier + number_literal) ))))) ;) (expression_statement "*(long *)(piVar5 + 2) = lVar4;" (assignment_expression "*(long *)(piVar5 + 2) = lVar4" (pointer_expression "*(long *)(piVar5 + 2)" * (cast_expression "(long *)(piVar5 + 2)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar5 + 2)" ( (binary_expression "piVar5 + 2" identifier + number_literal) )))) = identifier) ;) (if_statement "if (piVar3 == *(int **)(param_2 + 8)) {\n          *(int **)(param_2 + 8) = piVar5;\n          piVar1 = *(int **)(piVar3 + 4);\n        }\n        else if (piVar3 == *(int **)(lVar4 + 0x18)) {\n          *(int **)(lVar4 + 0x18) = piVar5;\n          piVar1 = piVar8;\n        }\n        else {\n          *(int **)(lVar4 + 0x10) = piVar5;\n          piVar1 = *(int **)(piVar3 + 4);\n        }" if (parenthesized_expression "(piVar3 == *(int **)(param_2 + 8))" ( (binary_expression "piVar3 == *(int **)(param_2 + 8)" identifier == (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) ))))) )) (compound_statement "{\n          *(int **)(param_2 + 8) = piVar5;\n          piVar1 = *(int **)(piVar3 + 4);\n        }" { (expression_statement "*(int **)(param_2 + 8) = piVar5;" (assignment_expression "*(int **)(param_2 + 8) = piVar5" (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 "piVar1 = *(int **)(piVar3 + 4);" (assignment_expression "piVar1 = *(int **)(piVar3 + 4)" identifier = (pointer_expression "*(int **)(piVar3 + 4)" * (cast_expression "(int **)(piVar3 + 4)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(piVar3 + 4)" ( (binary_expression "piVar3 + 4" identifier + number_literal) ))))) ;) }) (else_clause "else if (piVar3 == *(int **)(lVar4 + 0x18)) {\n          *(int **)(lVar4 + 0x18) = piVar5;\n          piVar1 = piVar8;\n        }\n        else {\n          *(int **)(lVar4 + 0x10) = piVar5;\n          piVar1 = *(int **)(piVar3 + 4);\n        }" else (if_statement "if (piVar3 == *(int **)(lVar4 + 0x18)) {\n          *(int **)(lVar4 + 0x18) = piVar5;\n          piVar1 = piVar8;\n        }\n        else {\n          *(int **)(lVar4 + 0x10) = piVar5;\n          piVar1 = *(int **)(piVar3 + 4);\n        }" if (parenthesized_expression "(piVar3 == *(int **)(lVar4 + 0x18))" ( (binary_expression "piVar3 == *(int **)(lVar4 + 0x18)" identifier == (pointer_expression "*(int **)(lVar4 + 0x18)" * (cast_expression "(int **)(lVar4 + 0x18)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(lVar4 + 0x18)" ( (binary_expression "lVar4 + 0x18" identifier + number_literal) ))))) )) (compound_statement "{\n          *(int **)(lVar4 + 0x18) = piVar5;\n          piVar1 = piVar8;\n        }" { (expression_statement "*(int **)(lVar4 + 0x18) = piVar5;" (assignment_expression "*(int **)(lVar4 + 0x18) = piVar5" (pointer_expression "*(int **)(lVar4 + 0x18)" * (cast_expression "(int **)(lVar4 + 0x18)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(lVar4 + 0x18)" ( (binary_expression "lVar4 + 0x18" identifier + number_literal) )))) = identifier) ;) (expression_statement "piVar1 = piVar8;" (assignment_expression "piVar1 = piVar8" identifier = identifier) ;) }) (else_clause "else {\n          *(int **)(lVar4 + 0x10) = piVar5;\n          piVar1 = *(int **)(piVar3 + 4);\n        }" else (compound_statement "{\n          *(int **)(lVar4 + 0x10) = piVar5;\n          piVar1 = *(int **)(piVar3 + 4);\n        }" { (expression_statement "*(int **)(lVar4 + 0x10) = piVar5;" (assignment_expression "*(int **)(lVar4 + 0x10) = piVar5" (pointer_expression "*(int **)(lVar4 + 0x10)" * (cast_expression "(int **)(lVar4 + 0x10)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(lVar4 + 0x10)" ( (binary_expression "lVar4 + 0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "piVar1 = *(int **)(piVar3 + 4);" (assignment_expression "piVar1 = *(int **)(piVar3 + 4)" identifier = (pointer_expression "*(int **)(piVar3 + 4)" * (cast_expression "(int **)(piVar3 + 4)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(piVar3 + 4)" ( (binary_expression "piVar3 + 4" identifier + number_literal) ))))) ;) }))))) (expression_statement "*(int **)(piVar5 + 6) = piVar3;" (assignment_expression "*(int **)(piVar5 + 6) = piVar3" (pointer_expression "*(int **)(piVar5 + 6)" * (cast_expression "(int **)(piVar5 + 6)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(piVar5 + 6)" ( (binary_expression "piVar5 + 6" identifier + number_literal) )))) = identifier) ;) (expression_statement "piVar8 = *(int **)(piVar1 + 6);" (assignment_expression "piVar8 = *(int **)(piVar1 + 6)" identifier = (pointer_expression "*(int **)(piVar1 + 6)" * (cast_expression "(int **)(piVar1 + 6)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(piVar1 + 6)" ( (binary_expression "piVar1 + 6" identifier + number_literal) ))))) ;) (expression_statement "*(int **)(piVar3 + 2) = piVar5;" (assignment_expression "*(int **)(piVar3 + 2) = piVar5" (pointer_expression "*(int **)(piVar3 + 2)" * (cast_expression "(int **)(piVar3 + 2)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(piVar3 + 2)" ( (binary_expression "piVar3 + 2" identifier + number_literal) )))) = identifier) ;) })) (if_statement "if ((piVar8 == (int *)0x0) || (*piVar8 == 1)) {\n        piVar5 = *(int **)(piVar1 + 4);\n        if ((piVar5 == (int *)0x0) || (*piVar5 == 1)) goto LAB_002dc5e8;\nLAB_002dc82b:\n        piVar6 = *(int **)(piVar3 + 4);\n        *piVar1 = *piVar3;\n        *piVar3 = 1;\nLAB_002dc83b:\n        *piVar5 = 1;\n      }\n      else {\n        piVar5 = *(int **)(piVar1 + 4);\n        if ((piVar5 != (int *)0x0) && (*piVar5 != 1)) goto LAB_002dc82b;\n        lVar4 = *(long *)(piVar8 + 4);\n        *piVar8 = 1;\n        *piVar1 = 0;\n        *(long *)(piVar1 + 6) = lVar4;\n        if (lVar4 != 0) {\n          *(int **)(lVar4 + 8) = piVar1;\n        }\n        lVar4 = *(long *)(piVar1 + 2);\n        *(long *)(piVar8 + 2) = lVar4;\n        if (piVar1 == *(int **)(param_2 + 8)) {\n          *(int **)(param_2 + 8) = piVar8;\n        }\n        else if (piVar1 == *(int **)(lVar4 + 0x10)) {\n          *(int **)(lVar4 + 0x10) = piVar8;\n        }\n        else {\n          *(int **)(lVar4 + 0x18) = piVar8;\n        }\n        *(int **)(piVar8 + 4) = piVar1;\n        piVar6 = *(int **)(piVar3 + 4);\n        *(int **)(piVar1 + 2) = piVar8;\n        piVar5 = *(int **)(piVar6 + 4);\n        *piVar6 = *piVar3;\n        *piVar3 = 1;\n        if (piVar5 != (int *)0x0) goto LAB_002dc83b;\n      }" if (parenthesized_expression "((piVar8 == (int *)0x0) || (*piVar8 == 1))" ( (binary_expression "(piVar8 == (int *)0x0) || (*piVar8 == 1)" (parenthesized_expression "(piVar8 == (int *)0x0)" ( (binary_expression "piVar8 == (int *)0x0" identifier == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) || (parenthesized_expression "(*piVar8 == 1)" ( (binary_expression "*piVar8 == 1" (pointer_expression "*piVar8" * identifier) == number_literal) ))) )) (compound_statement "{\n        piVar5 = *(int **)(piVar1 + 4);\n        if ((piVar5 == (int *)0x0) || (*piVar5 == 1)) goto LAB_002dc5e8;\nLAB_002dc82b:\n        piVar6 = *(int **)(piVar3 + 4);\n        *piVar1 = *piVar3;\n        *piVar3 = 1;\nLAB_002dc83b:\n        *piVar5 = 1;\n      }" { (expression_statement "piVar5 = *(int **)(piVar1 + 4);" (assignment_expression "piVar5 = *(int **)(piVar1 + 4)" identifier = (pointer_expression "*(int **)(piVar1 + 4)" * (cast_expression "(int **)(piVar1 + 4)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(piVar1 + 4)" ( (binary_expression "piVar1 + 4" identifier + number_literal) ))))) ;) (if_statement "if ((piVar5 == (int *)0x0) || (*piVar5 == 1)) goto LAB_002dc5e8;" if (parenthesized_expression "((piVar5 == (int *)0x0) || (*piVar5 == 1))" ( (binary_expression "(piVar5 == (int *)0x0) || (*piVar5 == 1)" (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)) )) || (parenthesized_expression "(*piVar5 == 1)" ( (binary_expression "*piVar5 == 1" (pointer_expression "*piVar5" * identifier) == number_literal) ))) )) (goto_statement "goto LAB_002dc5e8;" goto statement_identifier ;)) (labeled_statement "LAB_002dc82b:\n        piVar6 = *(int **)(piVar3 + 4);" statement_identifier : (expression_statement "piVar6 = *(int **)(piVar3 + 4);" (assignment_expression "piVar6 = *(int **)(piVar3 + 4)" identifier = (pointer_expression "*(int **)(piVar3 + 4)" * (cast_expression "(int **)(piVar3 + 4)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(piVar3 + 4)" ( (binary_expression "piVar3 + 4" identifier + number_literal) ))))) ;)) (expression_statement "*piVar1 = *piVar3;" (assignment_expression "*piVar1 = *piVar3" (pointer_expression "*piVar1" * identifier) = (pointer_expression "*piVar3" * identifier)) ;) (expression_statement "*piVar3 = 1;" (assignment_expression "*piVar3 = 1" (pointer_expression "*piVar3" * identifier) = number_literal) ;) (labeled_statement "LAB_002dc83b:\n        *piVar5 = 1;" statement_identifier : (expression_statement "*piVar5 = 1;" (assignment_expression "*piVar5 = 1" (pointer_expression "*piVar5" * identifier) = number_literal) ;)) }) (else_clause "else {\n        piVar5 = *(int **)(piVar1 + 4);\n        if ((piVar5 != (int *)0x0) && (*piVar5 != 1)) goto LAB_002dc82b;\n        lVar4 = *(long *)(piVar8 + 4);\n        *piVar8 = 1;\n        *piVar1 = 0;\n        *(long *)(piVar1 + 6) = lVar4;\n        if (lVar4 != 0) {\n          *(int **)(lVar4 + 8) = piVar1;\n        }\n        lVar4 = *(long *)(piVar1 + 2);\n        *(long *)(piVar8 + 2) = lVar4;\n        if (piVar1 == *(int **)(param_2 + 8)) {\n          *(int **)(param_2 + 8) = piVar8;\n        }\n        else if (piVar1 == *(int **)(lVar4 + 0x10)) {\n          *(int **)(lVar4 + 0x10) = piVar8;\n        }\n        else {\n          *(int **)(lVar4 + 0x18) = piVar8;\n        }\n        *(int **)(piVar8 + 4) = piVar1;\n        piVar6 = *(int **)(piVar3 + 4);\n        *(int **)(piVar1 + 2) = piVar8;\n        piVar5 = *(int **)(piVar6 + 4);\n        *piVar6 = *piVar3;\n        *piVar3 = 1;\n        if (piVar5 != (int *)0x0) goto LAB_002dc83b;\n      }" else (compound_statement "{\n        piVar5 = *(int **)(piVar1 + 4);\n        if ((piVar5 != (int *)0x0) && (*piVar5 != 1)) goto LAB_002dc82b;\n        lVar4 = *(long *)(piVar8 + 4);\n        *piVar8 = 1;\n        *piVar1 = 0;\n        *(long *)(piVar1 + 6) = lVar4;\n        if (lVar4 != 0) {\n          *(int **)(lVar4 + 8) = piVar1;\n        }\n        lVar4 = *(long *)(piVar1 + 2);\n        *(long *)(piVar8 + 2) = lVar4;\n        if (piVar1 == *(int **)(param_2 + 8)) {\n          *(int **)(param_2 + 8) = piVar8;\n        }\n        else if (piVar1 == *(int **)(lVar4 + 0x10)) {\n          *(int **)(lVar4 + 0x10) = piVar8;\n        }\n        else {\n          *(int **)(lVar4 + 0x18) = piVar8;\n        }\n        *(int **)(piVar8 + 4) = piVar1;\n        piVar6 = *(int **)(piVar3 + 4);\n        *(int **)(piVar1 + 2) = piVar8;\n        piVar5 = *(int **)(piVar6 + 4);\n        *piVar6 = *piVar3;\n        *piVar3 = 1;\n        if (piVar5 != (int *)0x0) goto LAB_002dc83b;\n      }" { (expression_statement "piVar5 = *(int **)(piVar1 + 4);" (assignment_expression "piVar5 = *(int **)(piVar1 + 4)" identifier = (pointer_expression "*(int **)(piVar1 + 4)" * (cast_expression "(int **)(piVar1 + 4)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(piVar1 + 4)" ( (binary_expression "piVar1 + 4" identifier + number_literal) ))))) ;) (if_statement "if ((piVar5 != (int *)0x0) && (*piVar5 != 1)) goto LAB_002dc82b;" if (parenthesized_expression "((piVar5 != (int *)0x0) && (*piVar5 != 1))" ( (binary_expression "(piVar5 != (int *)0x0) && (*piVar5 != 1)" (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)) )) && (parenthesized_expression "(*piVar5 != 1)" ( (binary_expression "*piVar5 != 1" (pointer_expression "*piVar5" * identifier) != number_literal) ))) )) (goto_statement "goto LAB_002dc82b;" goto statement_identifier ;)) (expression_statement "lVar4 = *(long *)(piVar8 + 4);" (assignment_expression "lVar4 = *(long *)(piVar8 + 4)" identifier = (pointer_expression "*(long *)(piVar8 + 4)" * (cast_expression "(long *)(piVar8 + 4)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar8 + 4)" ( (binary_expression "piVar8 + 4" identifier + number_literal) ))))) ;) (expression_statement "*piVar8 = 1;" (assignment_expression "*piVar8 = 1" (pointer_expression "*piVar8" * identifier) = number_literal) ;) (expression_statement "*piVar1 = 0;" (assignment_expression "*piVar1 = 0" (pointer_expression "*piVar1" * identifier) = number_literal) ;) (expression_statement "*(long *)(piVar1 + 6) = lVar4;" (assignment_expression "*(long *)(piVar1 + 6) = lVar4" (pointer_expression "*(long *)(piVar1 + 6)" * (cast_expression "(long *)(piVar1 + 6)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar1 + 6)" ( (binary_expression "piVar1 + 6" identifier + number_literal) )))) = identifier) ;) (if_statement "if (lVar4 != 0) {\n          *(int **)(lVar4 + 8) = piVar1;\n        }" if (parenthesized_expression "(lVar4 != 0)" ( (binary_expression "lVar4 != 0" identifier != number_literal) )) (compound_statement "{\n          *(int **)(lVar4 + 8) = piVar1;\n        }" { (expression_statement "*(int **)(lVar4 + 8) = piVar1;" (assignment_expression "*(int **)(lVar4 + 8) = piVar1" (pointer_expression "*(int **)(lVar4 + 8)" * (cast_expression "(int **)(lVar4 + 8)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(lVar4 + 8)" ( (binary_expression "lVar4 + 8" identifier + number_literal) )))) = identifier) ;) })) (expression_statement "lVar4 = *(long *)(piVar1 + 2);" (assignment_expression "lVar4 = *(long *)(piVar1 + 2)" identifier = (pointer_expression "*(long *)(piVar1 + 2)" * (cast_expression "(long *)(piVar1 + 2)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar1 + 2)" ( (binary_expression "piVar1 + 2" identifier + number_literal) ))))) ;) (expression_statement "*(long *)(piVar8 + 2) = lVar4;" (assignment_expression "*(long *)(piVar8 + 2) = lVar4" (pointer_expression "*(long *)(piVar8 + 2)" * (cast_expression "(long *)(piVar8 + 2)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar8 + 2)" ( (binary_expression "piVar8 + 2" identifier + number_literal) )))) = identifier) ;) (if_statement "if (piVar1 == *(int **)(param_2 + 8)) {\n          *(int **)(param_2 + 8) = piVar8;\n        }\n        else if (piVar1 == *(int **)(lVar4 + 0x10)) {\n          *(int **)(lVar4 + 0x10) = piVar8;\n        }\n        else {\n          *(int **)(lVar4 + 0x18) = piVar8;\n        }" if (parenthesized_expression "(piVar1 == *(int **)(param_2 + 8))" ( (binary_expression "piVar1 == *(int **)(param_2 + 8)" identifier == (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) ))))) )) (compound_statement "{\n          *(int **)(param_2 + 8) = piVar8;\n        }" { (expression_statement "*(int **)(param_2 + 8) = piVar8;" (assignment_expression "*(int **)(param_2 + 8) = piVar8" (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) ;) }) (else_clause "else if (piVar1 == *(int **)(lVar4 + 0x10)) {\n          *(int **)(lVar4 + 0x10) = piVar8;\n        }\n        else {\n          *(int **)(lVar4 + 0x18) = piVar8;\n        }" else (if_statement "if (piVar1 == *(int **)(lVar4 + 0x10)) {\n          *(int **)(lVar4 + 0x10) = piVar8;\n        }\n        else {\n          *(int **)(lVar4 + 0x18) = piVar8;\n        }" if (parenthesized_expression "(piVar1 == *(int **)(lVar4 + 0x10))" ( (binary_expression "piVar1 == *(int **)(lVar4 + 0x10)" identifier == (pointer_expression "*(int **)(lVar4 + 0x10)" * (cast_expression "(int **)(lVar4 + 0x10)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(lVar4 + 0x10)" ( (binary_expression "lVar4 + 0x10" identifier + number_literal) ))))) )) (compound_statement "{\n          *(int **)(lVar4 + 0x10) = piVar8;\n        }" { (expression_statement "*(int **)(lVar4 + 0x10) = piVar8;" (assignment_expression "*(int **)(lVar4 + 0x10) = piVar8" (pointer_expression "*(int **)(lVar4 + 0x10)" * (cast_expression "(int **)(lVar4 + 0x10)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(lVar4 + 0x10)" ( (binary_expression "lVar4 + 0x10" identifier + number_literal) )))) = identifier) ;) }) (else_clause "else {\n          *(int **)(lVar4 + 0x18) = piVar8;\n        }" else (compound_statement "{\n          *(int **)(lVar4 + 0x18) = piVar8;\n        }" { (expression_statement "*(int **)(lVar4 + 0x18) = piVar8;" (assignment_expression "*(int **)(lVar4 + 0x18) = piVar8" (pointer_expression "*(int **)(lVar4 + 0x18)" * (cast_expression "(int **)(lVar4 + 0x18)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(lVar4 + 0x18)" ( (binary_expression "lVar4 + 0x18" identifier + number_literal) )))) = identifier) ;) }))))) (expression_statement "*(int **)(piVar8 + 4) = piVar1;" (assignment_expression "*(int **)(piVar8 + 4) = piVar1" (pointer_expression "*(int **)(piVar8 + 4)" * (cast_expression "(int **)(piVar8 + 4)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(piVar8 + 4)" ( (binary_expression "piVar8 + 4" identifier + number_literal) )))) = identifier) ;) (expression_statement "piVar6 = *(int **)(piVar3 + 4);" (assignment_expression "piVar6 = *(int **)(piVar3 + 4)" identifier = (pointer_expression "*(int **)(piVar3 + 4)" * (cast_expression "(int **)(piVar3 + 4)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(piVar3 + 4)" ( (binary_expression "piVar3 + 4" identifier + number_literal) ))))) ;) (expression_statement "*(int **)(piVar1 + 2) = piVar8;" (assignment_expression "*(int **)(piVar1 + 2) = piVar8" (pointer_expression "*(int **)(piVar1 + 2)" * (cast_expression "(int **)(piVar1 + 2)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(piVar1 + 2)" ( (binary_expression "piVar1 + 2" identifier + number_literal) )))) = identifier) ;) (expression_statement "piVar5 = *(int **)(piVar6 + 4);" (assignment_expression "piVar5 = *(int **)(piVar6 + 4)" identifier = (pointer_expression "*(int **)(piVar6 + 4)" * (cast_expression "(int **)(piVar6 + 4)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(piVar6 + 4)" ( (binary_expression "piVar6 + 4" identifier + number_literal) ))))) ;) (expression_statement "*piVar6 = *piVar3;" (assignment_expression "*piVar6 = *piVar3" (pointer_expression "*piVar6" * identifier) = (pointer_expression "*piVar3" * identifier)) ;) (expression_statement "*piVar3 = 1;" (assignment_expression "*piVar3 = 1" (pointer_expression "*piVar3" * identifier) = number_literal) ;) (if_statement "if (piVar5 != (int *)0x0) goto LAB_002dc83b;" 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)) )) (goto_statement "goto LAB_002dc83b;" goto statement_identifier ;)) }))) (expression_statement "lVar4 = *(long *)(piVar6 + 6);" (assignment_expression "lVar4 = *(long *)(piVar6 + 6)" identifier = (pointer_expression "*(long *)(piVar6 + 6)" * (cast_expression "(long *)(piVar6 + 6)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar6 + 6)" ( (binary_expression "piVar6 + 6" identifier + number_literal) ))))) ;) (expression_statement "*(long *)(piVar3 + 4) = lVar4;" (assignment_expression "*(long *)(piVar3 + 4) = lVar4" (pointer_expression "*(long *)(piVar3 + 4)" * (cast_expression "(long *)(piVar3 + 4)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar3 + 4)" ( (binary_expression "piVar3 + 4" identifier + number_literal) )))) = identifier) ;) (if_statement "if (lVar4 != 0) {\n        *(int **)(lVar4 + 8) = piVar3;\n      }" if (parenthesized_expression "(lVar4 != 0)" ( (binary_expression "lVar4 != 0" identifier != number_literal) )) (compound_statement "{\n        *(int **)(lVar4 + 8) = piVar3;\n      }" { (expression_statement "*(int **)(lVar4 + 8) = piVar3;" (assignment_expression "*(int **)(lVar4 + 8) = piVar3" (pointer_expression "*(int **)(lVar4 + 8)" * (cast_expression "(int **)(lVar4 + 8)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(lVar4 + 8)" ( (binary_expression "lVar4 + 8" identifier + number_literal) )))) = identifier) ;) })) (expression_statement "lVar4 = *(long *)(piVar3 + 2);" (assignment_expression "lVar4 = *(long *)(piVar3 + 2)" identifier = (pointer_expression "*(long *)(piVar3 + 2)" * (cast_expression "(long *)(piVar3 + 2)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar3 + 2)" ( (binary_expression "piVar3 + 2" identifier + number_literal) ))))) ;) (expression_statement "*(long *)(piVar6 + 2) = lVar4;" (assignment_expression "*(long *)(piVar6 + 2) = lVar4" (pointer_expression "*(long *)(piVar6 + 2)" * (cast_expression "(long *)(piVar6 + 2)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar6 + 2)" ( (binary_expression "piVar6 + 2" identifier + number_literal) )))) = identifier) ;) (if_statement "if (piVar3 == *(int **)(param_2 + 8)) {\n        *(int **)(param_2 + 8) = piVar6;\n      }\n      else if (piVar3 == *(int **)(lVar4 + 0x18)) {\n        *(int **)(lVar4 + 0x18) = piVar6;\n      }\n      else {\n        *(int **)(lVar4 + 0x10) = piVar6;\n      }" if (parenthesized_expression "(piVar3 == *(int **)(param_2 + 8))" ( (binary_expression "piVar3 == *(int **)(param_2 + 8)" identifier == (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) ))))) )) (compound_statement "{\n        *(int **)(param_2 + 8) = piVar6;\n      }" { (expression_statement "*(int **)(param_2 + 8) = piVar6;" (assignment_expression "*(int **)(param_2 + 8) = piVar6" (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) ;) }) (else_clause "else if (piVar3 == *(int **)(lVar4 + 0x18)) {\n        *(int **)(lVar4 + 0x18) = piVar6;\n      }\n      else {\n        *(int **)(lVar4 + 0x10) = piVar6;\n      }" else (if_statement "if (piVar3 == *(int **)(lVar4 + 0x18)) {\n        *(int **)(lVar4 + 0x18) = piVar6;\n      }\n      else {\n        *(int **)(lVar4 + 0x10) = piVar6;\n      }" if (parenthesized_expression "(piVar3 == *(int **)(lVar4 + 0x18))" ( (binary_expression "piVar3 == *(int **)(lVar4 + 0x18)" identifier == (pointer_expression "*(int **)(lVar4 + 0x18)" * (cast_expression "(int **)(lVar4 + 0x18)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(lVar4 + 0x18)" ( (binary_expression "lVar4 + 0x18" identifier + number_literal) ))))) )) (compound_statement "{\n        *(int **)(lVar4 + 0x18) = piVar6;\n      }" { (expression_statement "*(int **)(lVar4 + 0x18) = piVar6;" (assignment_expression "*(int **)(lVar4 + 0x18) = piVar6" (pointer_expression "*(int **)(lVar4 + 0x18)" * (cast_expression "(int **)(lVar4 + 0x18)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(lVar4 + 0x18)" ( (binary_expression "lVar4 + 0x18" identifier + number_literal) )))) = identifier) ;) }) (else_clause "else {\n        *(int **)(lVar4 + 0x10) = piVar6;\n      }" else (compound_statement "{\n        *(int **)(lVar4 + 0x10) = piVar6;\n      }" { (expression_statement "*(int **)(lVar4 + 0x10) = piVar6;" (assignment_expression "*(int **)(lVar4 + 0x10) = piVar6" (pointer_expression "*(int **)(lVar4 + 0x10)" * (cast_expression "(int **)(lVar4 + 0x10)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(lVar4 + 0x10)" ( (binary_expression "lVar4 + 0x10" identifier + number_literal) )))) = identifier) ;) }))))) (expression_statement "*(int **)(piVar6 + 6) = piVar3;" (assignment_expression "*(int **)(piVar6 + 6) = piVar3" (pointer_expression "*(int **)(piVar6 + 6)" * (cast_expression "(int **)(piVar6 + 6)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(piVar6 + 6)" ( (binary_expression "piVar6 + 6" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int **)(piVar3 + 2) = piVar6;" (assignment_expression "*(int **)(piVar3 + 2) = piVar6" (pointer_expression "*(int **)(piVar3 + 2)" * (cast_expression "(int **)(piVar3 + 2)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(piVar3 + 2)" ( (binary_expression "piVar3 + 2" identifier + number_literal) )))) = identifier) ;) (goto_statement "goto LAB_002dc6f0;" goto statement_identifier ;) })) (expression_statement "piVar5 = *(int **)(piVar3 + 6);" (assignment_expression "piVar5 = *(int **)(piVar3 + 6)" identifier = (pointer_expression "*(int **)(piVar3 + 6)" * (cast_expression "(int **)(piVar3 + 6)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(piVar3 + 6)" ( (binary_expression "piVar3 + 6" identifier + number_literal) ))))) ;) (expression_statement "piVar8 = *(int **)(piVar5 + 4);" (assignment_expression "piVar8 = *(int **)(piVar5 + 4)" identifier = (pointer_expression "*(int **)(piVar5 + 4)" * (cast_expression "(int **)(piVar5 + 4)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(piVar5 + 4)" ( (binary_expression "piVar5 + 4" identifier + number_literal) ))))) ;) (expression_statement "piVar1 = piVar5;" (assignment_expression "piVar1 = piVar5" identifier = identifier) ;) (if_statement "if (*piVar5 == 0) {\n      *piVar5 = 1;\n      *piVar3 = 0;\n      *(int **)(piVar3 + 6) = piVar8;\n      if (piVar8 != (int *)0x0) {\n        *(int **)(piVar8 + 2) = piVar3;\n      }\n      lVar4 = *(long *)(piVar3 + 2);\n      *(long *)(piVar5 + 2) = lVar4;\n      if (piVar3 == *(int **)(param_2 + 8)) {\n        *(int **)(param_2 + 8) = piVar5;\n        piVar1 = *(int **)(piVar3 + 6);\n      }\n      else if (piVar3 == *(int **)(lVar4 + 0x10)) {\n        *(int **)(lVar4 + 0x10) = piVar5;\n        piVar1 = piVar8;\n      }\n      else {\n        *(int **)(lVar4 + 0x18) = piVar5;\n        piVar1 = *(int **)(piVar3 + 6);\n      }\n      *(int **)(piVar5 + 4) = piVar3;\n      piVar8 = *(int **)(piVar1 + 4);\n      *(int **)(piVar3 + 2) = piVar5;\n    }" if (parenthesized_expression "(*piVar5 == 0)" ( (binary_expression "*piVar5 == 0" (pointer_expression "*piVar5" * identifier) == number_literal) )) (compound_statement "{\n      *piVar5 = 1;\n      *piVar3 = 0;\n      *(int **)(piVar3 + 6) = piVar8;\n      if (piVar8 != (int *)0x0) {\n        *(int **)(piVar8 + 2) = piVar3;\n      }\n      lVar4 = *(long *)(piVar3 + 2);\n      *(long *)(piVar5 + 2) = lVar4;\n      if (piVar3 == *(int **)(param_2 + 8)) {\n        *(int **)(param_2 + 8) = piVar5;\n        piVar1 = *(int **)(piVar3 + 6);\n      }\n      else if (piVar3 == *(int **)(lVar4 + 0x10)) {\n        *(int **)(lVar4 + 0x10) = piVar5;\n        piVar1 = piVar8;\n      }\n      else {\n        *(int **)(lVar4 + 0x18) = piVar5;\n        piVar1 = *(int **)(piVar3 + 6);\n      }\n      *(int **)(piVar5 + 4) = piVar3;\n      piVar8 = *(int **)(piVar1 + 4);\n      *(int **)(piVar3 + 2) = piVar5;\n    }" { (expression_statement "*piVar5 = 1;" (assignment_expression "*piVar5 = 1" (pointer_expression "*piVar5" * identifier) = number_literal) ;) (expression_statement "*piVar3 = 0;" (assignment_expression "*piVar3 = 0" (pointer_expression "*piVar3" * identifier) = number_literal) ;) (expression_statement "*(int **)(piVar3 + 6) = piVar8;" (assignment_expression "*(int **)(piVar3 + 6) = piVar8" (pointer_expression "*(int **)(piVar3 + 6)" * (cast_expression "(int **)(piVar3 + 6)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(piVar3 + 6)" ( (binary_expression "piVar3 + 6" identifier + number_literal) )))) = identifier) ;) (if_statement "if (piVar8 != (int *)0x0) {\n        *(int **)(piVar8 + 2) = piVar3;\n      }" if (parenthesized_expression "(piVar8 != (int *)0x0)" ( (binary_expression "piVar8 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        *(int **)(piVar8 + 2) = piVar3;\n      }" { (expression_statement "*(int **)(piVar8 + 2) = piVar3;" (assignment_expression "*(int **)(piVar8 + 2) = piVar3" (pointer_expression "*(int **)(piVar8 + 2)" * (cast_expression "(int **)(piVar8 + 2)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(piVar8 + 2)" ( (binary_expression "piVar8 + 2" identifier + number_literal) )))) = identifier) ;) })) (expression_statement "lVar4 = *(long *)(piVar3 + 2);" (assignment_expression "lVar4 = *(long *)(piVar3 + 2)" identifier = (pointer_expression "*(long *)(piVar3 + 2)" * (cast_expression "(long *)(piVar3 + 2)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar3 + 2)" ( (binary_expression "piVar3 + 2" identifier + number_literal) ))))) ;) (expression_statement "*(long *)(piVar5 + 2) = lVar4;" (assignment_expression "*(long *)(piVar5 + 2) = lVar4" (pointer_expression "*(long *)(piVar5 + 2)" * (cast_expression "(long *)(piVar5 + 2)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar5 + 2)" ( (binary_expression "piVar5 + 2" identifier + number_literal) )))) = identifier) ;) (if_statement "if (piVar3 == *(int **)(param_2 + 8)) {\n        *(int **)(param_2 + 8) = piVar5;\n        piVar1 = *(int **)(piVar3 + 6);\n      }\n      else if (piVar3 == *(int **)(lVar4 + 0x10)) {\n        *(int **)(lVar4 + 0x10) = piVar5;\n        piVar1 = piVar8;\n      }\n      else {\n        *(int **)(lVar4 + 0x18) = piVar5;\n        piVar1 = *(int **)(piVar3 + 6);\n      }" if (parenthesized_expression "(piVar3 == *(int **)(param_2 + 8))" ( (binary_expression "piVar3 == *(int **)(param_2 + 8)" identifier == (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) ))))) )) (compound_statement "{\n        *(int **)(param_2 + 8) = piVar5;\n        piVar1 = *(int **)(piVar3 + 6);\n      }" { (expression_statement "*(int **)(param_2 + 8) = piVar5;" (assignment_expression "*(int **)(param_2 + 8) = piVar5" (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 "piVar1 = *(int **)(piVar3 + 6);" (assignment_expression "piVar1 = *(int **)(piVar3 + 6)" identifier = (pointer_expression "*(int **)(piVar3 + 6)" * (cast_expression "(int **)(piVar3 + 6)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(piVar3 + 6)" ( (binary_expression "piVar3 + 6" identifier + number_literal) ))))) ;) }) (else_clause "else if (piVar3 == *(int **)(lVar4 + 0x10)) {\n        *(int **)(lVar4 + 0x10) = piVar5;\n        piVar1 = piVar8;\n      }\n      else {\n        *(int **)(lVar4 + 0x18) = piVar5;\n        piVar1 = *(int **)(piVar3 + 6);\n      }" else (if_statement "if (piVar3 == *(int **)(lVar4 + 0x10)) {\n        *(int **)(lVar4 + 0x10) = piVar5;\n        piVar1 = piVar8;\n      }\n      else {\n        *(int **)(lVar4 + 0x18) = piVar5;\n        piVar1 = *(int **)(piVar3 + 6);\n      }" if (parenthesized_expression "(piVar3 == *(int **)(lVar4 + 0x10))" ( (binary_expression "piVar3 == *(int **)(lVar4 + 0x10)" identifier == (pointer_expression "*(int **)(lVar4 + 0x10)" * (cast_expression "(int **)(lVar4 + 0x10)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(lVar4 + 0x10)" ( (binary_expression "lVar4 + 0x10" identifier + number_literal) ))))) )) (compound_statement "{\n        *(int **)(lVar4 + 0x10) = piVar5;\n        piVar1 = piVar8;\n      }" { (expression_statement "*(int **)(lVar4 + 0x10) = piVar5;" (assignment_expression "*(int **)(lVar4 + 0x10) = piVar5" (pointer_expression "*(int **)(lVar4 + 0x10)" * (cast_expression "(int **)(lVar4 + 0x10)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(lVar4 + 0x10)" ( (binary_expression "lVar4 + 0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "piVar1 = piVar8;" (assignment_expression "piVar1 = piVar8" identifier = identifier) ;) }) (else_clause "else {\n        *(int **)(lVar4 + 0x18) = piVar5;\n        piVar1 = *(int **)(piVar3 + 6);\n      }" else (compound_statement "{\n        *(int **)(lVar4 + 0x18) = piVar5;\n        piVar1 = *(int **)(piVar3 + 6);\n      }" { (expression_statement "*(int **)(lVar4 + 0x18) = piVar5;" (assignment_expression "*(int **)(lVar4 + 0x18) = piVar5" (pointer_expression "*(int **)(lVar4 + 0x18)" * (cast_expression "(int **)(lVar4 + 0x18)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(lVar4 + 0x18)" ( (binary_expression "lVar4 + 0x18" identifier + number_literal) )))) = identifier) ;) (expression_statement "piVar1 = *(int **)(piVar3 + 6);" (assignment_expression "piVar1 = *(int **)(piVar3 + 6)" identifier = (pointer_expression "*(int **)(piVar3 + 6)" * (cast_expression "(int **)(piVar3 + 6)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(piVar3 + 6)" ( (binary_expression "piVar3 + 6" identifier + number_literal) ))))) ;) }))))) (expression_statement "*(int **)(piVar5 + 4) = piVar3;" (assignment_expression "*(int **)(piVar5 + 4) = piVar3" (pointer_expression "*(int **)(piVar5 + 4)" * (cast_expression "(int **)(piVar5 + 4)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(piVar5 + 4)" ( (binary_expression "piVar5 + 4" identifier + number_literal) )))) = identifier) ;) (expression_statement "piVar8 = *(int **)(piVar1 + 4);" (assignment_expression "piVar8 = *(int **)(piVar1 + 4)" identifier = (pointer_expression "*(int **)(piVar1 + 4)" * (cast_expression "(int **)(piVar1 + 4)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(piVar1 + 4)" ( (binary_expression "piVar1 + 4" identifier + number_literal) ))))) ;) (expression_statement "*(int **)(piVar3 + 2) = piVar5;" (assignment_expression "*(int **)(piVar3 + 2) = piVar5" (pointer_expression "*(int **)(piVar3 + 2)" * (cast_expression "(int **)(piVar3 + 2)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(piVar3 + 2)" ( (binary_expression "piVar3 + 2" identifier + number_literal) )))) = identifier) ;) })) (if_statement "if ((piVar8 != (int *)0x0) && (*piVar8 != 1)) {\n      piVar5 = *(int **)(piVar1 + 6);\n      if ((piVar5 != (int *)0x0) && (*piVar5 != 1)) goto LAB_002dc69f;\n      lVar4 = *(long *)(piVar8 + 6);\n      *piVar8 = 1;\n      *piVar1 = 0;\n      *(long *)(piVar1 + 4) = lVar4;\n      if (lVar4 != 0) {\n        *(int **)(lVar4 + 8) = piVar1;\n      }\n      lVar4 = *(long *)(piVar1 + 2);\n      *(long *)(piVar8 + 2) = lVar4;\n      if (piVar1 == *(int **)(param_2 + 8)) {\n        *(int **)(param_2 + 8) = piVar8;\n      }\n      else if (piVar1 == *(int **)(lVar4 + 0x18)) {\n        *(int **)(lVar4 + 0x18) = piVar8;\n      }\n      else {\n        *(int **)(lVar4 + 0x10) = piVar8;\n      }\n      *(int **)(piVar8 + 6) = piVar1;\n      *(int **)(piVar1 + 2) = piVar8;\n      piVar8 = *(int **)(piVar3 + 6);\n      piVar5 = *(int **)(piVar8 + 6);\n      *piVar8 = *piVar3;\n      *piVar3 = 1;\n      if (piVar5 != (int *)0x0) goto LAB_002dc6af;\nLAB_002dc6b5:\n      lVar4 = *(long *)(piVar8 + 4);\n      *(long *)(piVar3 + 6) = lVar4;\n      if (lVar4 != 0) {\n        *(int **)(lVar4 + 8) = piVar3;\n      }\n      lVar4 = *(long *)(piVar3 + 2);\n      *(long *)(piVar8 + 2) = lVar4;\n      if (piVar3 == *(int **)(param_2 + 8)) {\n        *(int **)(param_2 + 8) = piVar8;\n      }\n      else if (piVar3 == *(int **)(lVar4 + 0x10)) {\n        *(int **)(lVar4 + 0x10) = piVar8;\n      }\n      else {\n        *(int **)(lVar4 + 0x18) = piVar8;\n      }\n      *(int **)(piVar8 + 4) = piVar3;\n      *(int **)(piVar3 + 2) = piVar8;\n      goto LAB_002dc6f0;\n    }" if (parenthesized_expression "((piVar8 != (int *)0x0) && (*piVar8 != 1))" ( (binary_expression "(piVar8 != (int *)0x0) && (*piVar8 != 1)" (parenthesized_expression "(piVar8 != (int *)0x0)" ( (binary_expression "piVar8 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) && (parenthesized_expression "(*piVar8 != 1)" ( (binary_expression "*piVar8 != 1" (pointer_expression "*piVar8" * identifier) != number_literal) ))) )) (compound_statement "{\n      piVar5 = *(int **)(piVar1 + 6);\n      if ((piVar5 != (int *)0x0) && (*piVar5 != 1)) goto LAB_002dc69f;\n      lVar4 = *(long *)(piVar8 + 6);\n      *piVar8 = 1;\n      *piVar1 = 0;\n      *(long *)(piVar1 + 4) = lVar4;\n      if (lVar4 != 0) {\n        *(int **)(lVar4 + 8) = piVar1;\n      }\n      lVar4 = *(long *)(piVar1 + 2);\n      *(long *)(piVar8 + 2) = lVar4;\n      if (piVar1 == *(int **)(param_2 + 8)) {\n        *(int **)(param_2 + 8) = piVar8;\n      }\n      else if (piVar1 == *(int **)(lVar4 + 0x18)) {\n        *(int **)(lVar4 + 0x18) = piVar8;\n      }\n      else {\n        *(int **)(lVar4 + 0x10) = piVar8;\n      }\n      *(int **)(piVar8 + 6) = piVar1;\n      *(int **)(piVar1 + 2) = piVar8;\n      piVar8 = *(int **)(piVar3 + 6);\n      piVar5 = *(int **)(piVar8 + 6);\n      *piVar8 = *piVar3;\n      *piVar3 = 1;\n      if (piVar5 != (int *)0x0) goto LAB_002dc6af;\nLAB_002dc6b5:\n      lVar4 = *(long *)(piVar8 + 4);\n      *(long *)(piVar3 + 6) = lVar4;\n      if (lVar4 != 0) {\n        *(int **)(lVar4 + 8) = piVar3;\n      }\n      lVar4 = *(long *)(piVar3 + 2);\n      *(long *)(piVar8 + 2) = lVar4;\n      if (piVar3 == *(int **)(param_2 + 8)) {\n        *(int **)(param_2 + 8) = piVar8;\n      }\n      else if (piVar3 == *(int **)(lVar4 + 0x10)) {\n        *(int **)(lVar4 + 0x10) = piVar8;\n      }\n      else {\n        *(int **)(lVar4 + 0x18) = piVar8;\n      }\n      *(int **)(piVar8 + 4) = piVar3;\n      *(int **)(piVar3 + 2) = piVar8;\n      goto LAB_002dc6f0;\n    }" { (expression_statement "piVar5 = *(int **)(piVar1 + 6);" (assignment_expression "piVar5 = *(int **)(piVar1 + 6)" identifier = (pointer_expression "*(int **)(piVar1 + 6)" * (cast_expression "(int **)(piVar1 + 6)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(piVar1 + 6)" ( (binary_expression "piVar1 + 6" identifier + number_literal) ))))) ;) (if_statement "if ((piVar5 != (int *)0x0) && (*piVar5 != 1)) goto LAB_002dc69f;" if (parenthesized_expression "((piVar5 != (int *)0x0) && (*piVar5 != 1))" ( (binary_expression "(piVar5 != (int *)0x0) && (*piVar5 != 1)" (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)) )) && (parenthesized_expression "(*piVar5 != 1)" ( (binary_expression "*piVar5 != 1" (pointer_expression "*piVar5" * identifier) != number_literal) ))) )) (goto_statement "goto LAB_002dc69f;" goto statement_identifier ;)) (expression_statement "lVar4 = *(long *)(piVar8 + 6);" (assignment_expression "lVar4 = *(long *)(piVar8 + 6)" identifier = (pointer_expression "*(long *)(piVar8 + 6)" * (cast_expression "(long *)(piVar8 + 6)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar8 + 6)" ( (binary_expression "piVar8 + 6" identifier + number_literal) ))))) ;) (expression_statement "*piVar8 = 1;" (assignment_expression "*piVar8 = 1" (pointer_expression "*piVar8" * identifier) = number_literal) ;) (expression_statement "*piVar1 = 0;" (assignment_expression "*piVar1 = 0" (pointer_expression "*piVar1" * identifier) = number_literal) ;) (expression_statement "*(long *)(piVar1 + 4) = lVar4;" (assignment_expression "*(long *)(piVar1 + 4) = lVar4" (pointer_expression "*(long *)(piVar1 + 4)" * (cast_expression "(long *)(piVar1 + 4)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar1 + 4)" ( (binary_expression "piVar1 + 4" identifier + number_literal) )))) = identifier) ;) (if_statement "if (lVar4 != 0) {\n        *(int **)(lVar4 + 8) = piVar1;\n      }" if (parenthesized_expression "(lVar4 != 0)" ( (binary_expression "lVar4 != 0" identifier != number_literal) )) (compound_statement "{\n        *(int **)(lVar4 + 8) = piVar1;\n      }" { (expression_statement "*(int **)(lVar4 + 8) = piVar1;" (assignment_expression "*(int **)(lVar4 + 8) = piVar1" (pointer_expression "*(int **)(lVar4 + 8)" * (cast_expression "(int **)(lVar4 + 8)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(lVar4 + 8)" ( (binary_expression "lVar4 + 8" identifier + number_literal) )))) = identifier) ;) })) (expression_statement "lVar4 = *(long *)(piVar1 + 2);" (assignment_expression "lVar4 = *(long *)(piVar1 + 2)" identifier = (pointer_expression "*(long *)(piVar1 + 2)" * (cast_expression "(long *)(piVar1 + 2)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar1 + 2)" ( (binary_expression "piVar1 + 2" identifier + number_literal) ))))) ;) (expression_statement "*(long *)(piVar8 + 2) = lVar4;" (assignment_expression "*(long *)(piVar8 + 2) = lVar4" (pointer_expression "*(long *)(piVar8 + 2)" * (cast_expression "(long *)(piVar8 + 2)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar8 + 2)" ( (binary_expression "piVar8 + 2" identifier + number_literal) )))) = identifier) ;) (if_statement "if (piVar1 == *(int **)(param_2 + 8)) {\n        *(int **)(param_2 + 8) = piVar8;\n      }\n      else if (piVar1 == *(int **)(lVar4 + 0x18)) {\n        *(int **)(lVar4 + 0x18) = piVar8;\n      }\n      else {\n        *(int **)(lVar4 + 0x10) = piVar8;\n      }" if (parenthesized_expression "(piVar1 == *(int **)(param_2 + 8))" ( (binary_expression "piVar1 == *(int **)(param_2 + 8)" identifier == (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) ))))) )) (compound_statement "{\n        *(int **)(param_2 + 8) = piVar8;\n      }" { (expression_statement "*(int **)(param_2 + 8) = piVar8;" (assignment_expression "*(int **)(param_2 + 8) = piVar8" (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) ;) }) (else_clause "else if (piVar1 == *(int **)(lVar4 + 0x18)) {\n        *(int **)(lVar4 + 0x18) = piVar8;\n      }\n      else {\n        *(int **)(lVar4 + 0x10) = piVar8;\n      }" else (if_statement "if (piVar1 == *(int **)(lVar4 + 0x18)) {\n        *(int **)(lVar4 + 0x18) = piVar8;\n      }\n      else {\n        *(int **)(lVar4 + 0x10) = piVar8;\n      }" if (parenthesized_expression "(piVar1 == *(int **)(lVar4 + 0x18))" ( (binary_expression "piVar1 == *(int **)(lVar4 + 0x18)" identifier == (pointer_expression "*(int **)(lVar4 + 0x18)" * (cast_expression "(int **)(lVar4 + 0x18)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(lVar4 + 0x18)" ( (binary_expression "lVar4 + 0x18" identifier + number_literal) ))))) )) (compound_statement "{\n        *(int **)(lVar4 + 0x18) = piVar8;\n      }" { (expression_statement "*(int **)(lVar4 + 0x18) = piVar8;" (assignment_expression "*(int **)(lVar4 + 0x18) = piVar8" (pointer_expression "*(int **)(lVar4 + 0x18)" * (cast_expression "(int **)(lVar4 + 0x18)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(lVar4 + 0x18)" ( (binary_expression "lVar4 + 0x18" identifier + number_literal) )))) = identifier) ;) }) (else_clause "else {\n        *(int **)(lVar4 + 0x10) = piVar8;\n      }" else (compound_statement "{\n        *(int **)(lVar4 + 0x10) = piVar8;\n      }" { (expression_statement "*(int **)(lVar4 + 0x10) = piVar8;" (assignment_expression "*(int **)(lVar4 + 0x10) = piVar8" (pointer_expression "*(int **)(lVar4 + 0x10)" * (cast_expression "(int **)(lVar4 + 0x10)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(lVar4 + 0x10)" ( (binary_expression "lVar4 + 0x10" identifier + number_literal) )))) = identifier) ;) }))))) (expression_statement "*(int **)(piVar8 + 6) = piVar1;" (assignment_expression "*(int **)(piVar8 + 6) = piVar1" (pointer_expression "*(int **)(piVar8 + 6)" * (cast_expression "(int **)(piVar8 + 6)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(piVar8 + 6)" ( (binary_expression "piVar8 + 6" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int **)(piVar1 + 2) = piVar8;" (assignment_expression "*(int **)(piVar1 + 2) = piVar8" (pointer_expression "*(int **)(piVar1 + 2)" * (cast_expression "(int **)(piVar1 + 2)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(piVar1 + 2)" ( (binary_expression "piVar1 + 2" identifier + number_literal) )))) = identifier) ;) (expression_statement "piVar8 = *(int **)(piVar3 + 6);" (assignment_expression "piVar8 = *(int **)(piVar3 + 6)" identifier = (pointer_expression "*(int **)(piVar3 + 6)" * (cast_expression "(int **)(piVar3 + 6)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(piVar3 + 6)" ( (binary_expression "piVar3 + 6" identifier + number_literal) ))))) ;) (expression_statement "piVar5 = *(int **)(piVar8 + 6);" (assignment_expression "piVar5 = *(int **)(piVar8 + 6)" identifier = (pointer_expression "*(int **)(piVar8 + 6)" * (cast_expression "(int **)(piVar8 + 6)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(piVar8 + 6)" ( (binary_expression "piVar8 + 6" identifier + number_literal) ))))) ;) (expression_statement "*piVar8 = *piVar3;" (assignment_expression "*piVar8 = *piVar3" (pointer_expression "*piVar8" * identifier) = (pointer_expression "*piVar3" * identifier)) ;) (expression_statement "*piVar3 = 1;" (assignment_expression "*piVar3 = 1" (pointer_expression "*piVar3" * identifier) = number_literal) ;) (if_statement "if (piVar5 != (int *)0x0) goto LAB_002dc6af;" 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)) )) (goto_statement "goto LAB_002dc6af;" goto statement_identifier ;)) (labeled_statement "LAB_002dc6b5:\n      lVar4 = *(long *)(piVar8 + 4);" statement_identifier : (expression_statement "lVar4 = *(long *)(piVar8 + 4);" (assignment_expression "lVar4 = *(long *)(piVar8 + 4)" identifier = (pointer_expression "*(long *)(piVar8 + 4)" * (cast_expression "(long *)(piVar8 + 4)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar8 + 4)" ( (binary_expression "piVar8 + 4" identifier + number_literal) ))))) ;)) (expression_statement "*(long *)(piVar3 + 6) = lVar4;" (assignment_expression "*(long *)(piVar3 + 6) = lVar4" (pointer_expression "*(long *)(piVar3 + 6)" * (cast_expression "(long *)(piVar3 + 6)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar3 + 6)" ( (binary_expression "piVar3 + 6" identifier + number_literal) )))) = identifier) ;) (if_statement "if (lVar4 != 0) {\n        *(int **)(lVar4 + 8) = piVar3;\n      }" if (parenthesized_expression "(lVar4 != 0)" ( (binary_expression "lVar4 != 0" identifier != number_literal) )) (compound_statement "{\n        *(int **)(lVar4 + 8) = piVar3;\n      }" { (expression_statement "*(int **)(lVar4 + 8) = piVar3;" (assignment_expression "*(int **)(lVar4 + 8) = piVar3" (pointer_expression "*(int **)(lVar4 + 8)" * (cast_expression "(int **)(lVar4 + 8)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(lVar4 + 8)" ( (binary_expression "lVar4 + 8" identifier + number_literal) )))) = identifier) ;) })) (expression_statement "lVar4 = *(long *)(piVar3 + 2);" (assignment_expression "lVar4 = *(long *)(piVar3 + 2)" identifier = (pointer_expression "*(long *)(piVar3 + 2)" * (cast_expression "(long *)(piVar3 + 2)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar3 + 2)" ( (binary_expression "piVar3 + 2" identifier + number_literal) ))))) ;) (expression_statement "*(long *)(piVar8 + 2) = lVar4;" (assignment_expression "*(long *)(piVar8 + 2) = lVar4" (pointer_expression "*(long *)(piVar8 + 2)" * (cast_expression "(long *)(piVar8 + 2)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar8 + 2)" ( (binary_expression "piVar8 + 2" identifier + number_literal) )))) = identifier) ;) (if_statement "if (piVar3 == *(int **)(param_2 + 8)) {\n        *(int **)(param_2 + 8) = piVar8;\n      }\n      else if (piVar3 == *(int **)(lVar4 + 0x10)) {\n        *(int **)(lVar4 + 0x10) = piVar8;\n      }\n      else {\n        *(int **)(lVar4 + 0x18) = piVar8;\n      }" if (parenthesized_expression "(piVar3 == *(int **)(param_2 + 8))" ( (binary_expression "piVar3 == *(int **)(param_2 + 8)" identifier == (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) ))))) )) (compound_statement "{\n        *(int **)(param_2 + 8) = piVar8;\n      }" { (expression_statement "*(int **)(param_2 + 8) = piVar8;" (assignment_expression "*(int **)(param_2 + 8) = piVar8" (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) ;) }) (else_clause "else if (piVar3 == *(int **)(lVar4 + 0x10)) {\n        *(int **)(lVar4 + 0x10) = piVar8;\n      }\n      else {\n        *(int **)(lVar4 + 0x18) = piVar8;\n      }" else (if_statement "if (piVar3 == *(int **)(lVar4 + 0x10)) {\n        *(int **)(lVar4 + 0x10) = piVar8;\n      }\n      else {\n        *(int **)(lVar4 + 0x18) = piVar8;\n      }" if (parenthesized_expression "(piVar3 == *(int **)(lVar4 + 0x10))" ( (binary_expression "piVar3 == *(int **)(lVar4 + 0x10)" identifier == (pointer_expression "*(int **)(lVar4 + 0x10)" * (cast_expression "(int **)(lVar4 + 0x10)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(lVar4 + 0x10)" ( (binary_expression "lVar4 + 0x10" identifier + number_literal) ))))) )) (compound_statement "{\n        *(int **)(lVar4 + 0x10) = piVar8;\n      }" { (expression_statement "*(int **)(lVar4 + 0x10) = piVar8;" (assignment_expression "*(int **)(lVar4 + 0x10) = piVar8" (pointer_expression "*(int **)(lVar4 + 0x10)" * (cast_expression "(int **)(lVar4 + 0x10)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(lVar4 + 0x10)" ( (binary_expression "lVar4 + 0x10" identifier + number_literal) )))) = identifier) ;) }) (else_clause "else {\n        *(int **)(lVar4 + 0x18) = piVar8;\n      }" else (compound_statement "{\n        *(int **)(lVar4 + 0x18) = piVar8;\n      }" { (expression_statement "*(int **)(lVar4 + 0x18) = piVar8;" (assignment_expression "*(int **)(lVar4 + 0x18) = piVar8" (pointer_expression "*(int **)(lVar4 + 0x18)" * (cast_expression "(int **)(lVar4 + 0x18)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(lVar4 + 0x18)" ( (binary_expression "lVar4 + 0x18" identifier + number_literal) )))) = identifier) ;) }))))) (expression_statement "*(int **)(piVar8 + 4) = piVar3;" (assignment_expression "*(int **)(piVar8 + 4) = piVar3" (pointer_expression "*(int **)(piVar8 + 4)" * (cast_expression "(int **)(piVar8 + 4)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(piVar8 + 4)" ( (binary_expression "piVar8 + 4" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int **)(piVar3 + 2) = piVar8;" (assignment_expression "*(int **)(piVar3 + 2) = piVar8" (pointer_expression "*(int **)(piVar3 + 2)" * (cast_expression "(int **)(piVar3 + 2)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(piVar3 + 2)" ( (binary_expression "piVar3 + 2" identifier + number_literal) )))) = identifier) ;) (goto_statement "goto LAB_002dc6f0;" goto statement_identifier ;) })) (expression_statement "piVar5 = *(int **)(piVar1 + 6);" (assignment_expression "piVar5 = *(int **)(piVar1 + 6)" identifier = (pointer_expression "*(int **)(piVar1 + 6)" * (cast_expression "(int **)(piVar1 + 6)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(piVar1 + 6)" ( (binary_expression "piVar1 + 6" identifier + number_literal) ))))) ;) (if_statement "if ((piVar5 != (int *)0x0) && (*piVar5 != 1)) {\nLAB_002dc69f:\n      piVar8 = *(int **)(piVar3 + 6);\n      *piVar1 = *piVar3;\n      *piVar3 = 1;\nLAB_002dc6af:\n      *piVar5 = 1;\n      goto LAB_002dc6b5;\n    }" if (parenthesized_expression "((piVar5 != (int *)0x0) && (*piVar5 != 1))" ( (binary_expression "(piVar5 != (int *)0x0) && (*piVar5 != 1)" (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)) )) && (parenthesized_expression "(*piVar5 != 1)" ( (binary_expression "*piVar5 != 1" (pointer_expression "*piVar5" * identifier) != number_literal) ))) )) (compound_statement "{\nLAB_002dc69f:\n      piVar8 = *(int **)(piVar3 + 6);\n      *piVar1 = *piVar3;\n      *piVar3 = 1;\nLAB_002dc6af:\n      *piVar5 = 1;\n      goto LAB_002dc6b5;\n    }" { (labeled_statement "LAB_002dc69f:\n      piVar8 = *(int **)(piVar3 + 6);" statement_identifier : (expression_statement "piVar8 = *(int **)(piVar3 + 6);" (assignment_expression "piVar8 = *(int **)(piVar3 + 6)" identifier = (pointer_expression "*(int **)(piVar3 + 6)" * (cast_expression "(int **)(piVar3 + 6)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(piVar3 + 6)" ( (binary_expression "piVar3 + 6" identifier + number_literal) ))))) ;)) (expression_statement "*piVar1 = *piVar3;" (assignment_expression "*piVar1 = *piVar3" (pointer_expression "*piVar1" * identifier) = (pointer_expression "*piVar3" * identifier)) ;) (expression_statement "*piVar3 = 1;" (assignment_expression "*piVar3 = 1" (pointer_expression "*piVar3" * identifier) = number_literal) ;) (labeled_statement "LAB_002dc6af:\n      *piVar5 = 1;" statement_identifier : (expression_statement "*piVar5 = 1;" (assignment_expression "*piVar5 = 1" (pointer_expression "*piVar5" * identifier) = number_literal) ;)) (goto_statement "goto LAB_002dc6b5;" goto statement_identifier ;) })) (labeled_statement "LAB_002dc5e8:\n    *piVar1 = 0;" statement_identifier : (expression_statement "*piVar1 = 0;" (assignment_expression "*piVar1 = 0" (pointer_expression "*piVar1" * identifier) = number_literal) ;)) (expression_statement "piVar1 = *(int **)(piVar3 + 2);" (assignment_expression "piVar1 = *(int **)(piVar3 + 2)" identifier = (pointer_expression "*(int **)(piVar3 + 2)" * (cast_expression "(int **)(piVar3 + 2)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(piVar3 + 2)" ( (binary_expression "piVar3 + 2" identifier + number_literal) ))))) ;) (expression_statement "piVar7 = piVar3;" (assignment_expression "piVar7 = piVar3" identifier = identifier) ;) }) while (parenthesized_expression "( true )" ( true )) ;) })))
(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  _Base_ptr p_Var1;\n  _Rb_tree_color _Var2;\n  _Base_ptr p_Var3;\n  _Base_ptr p_Var4;\n  _Base_ptr p_Var5;\n  _Base_ptr p_Var6;\n  _Base_ptr p_Var7;\n  \n  p_Var3 = param_1->_M_left;\n  p_Var4 = param_1->_M_right;\n  p_Var6 = p_Var4;\n  if (p_Var3 == (_Base_ptr)0x0) {\nLAB_002dc770:\n    p_Var3 = p_Var6;\n    p_Var1 = param_1->_M_parent;\n    if (p_Var3 != (_Base_ptr)0x0) goto LAB_002dc480;\n    p_Var6 = (_Base_ptr)0x0;\n  }\n  else {\n    if (p_Var4 != (_Base_ptr)0x0) {\n      do {\n        p_Var7 = p_Var6;\n        p_Var6 = p_Var7->_M_left;\n      } while (p_Var7->_M_left != (_Base_ptr)0x0);\n      p_Var6 = p_Var7->_M_right;\n      if (p_Var7 != param_1) {\n        p_Var3->_M_parent = p_Var7;\n        p_Var7->_M_left = p_Var3;\n        p_Var1 = p_Var7;\n        if (p_Var7 != p_Var4) {\n          p_Var1 = p_Var7->_M_parent;\n          p_Var3 = p_Var1;\n          if (p_Var6 != (_Base_ptr)0x0) {\n            p_Var6->_M_parent = p_Var1;\n            p_Var3 = p_Var7->_M_parent;\n          }\n          p_Var3->_M_left = p_Var6;\n          p_Var7->_M_right = p_Var4;\n          param_1->_M_right->_M_parent = p_Var7;\n        }\n        if (param_2->_M_parent == param_1) {\n          param_2->_M_parent = p_Var7;\n          p_Var3 = param_1->_M_parent;\n        }\n        else {\n          p_Var3 = param_1->_M_parent;\n          if (p_Var3->_M_left == param_1) {\n            p_Var3->_M_left = p_Var7;\n          }\n          else {\n            p_Var3->_M_right = p_Var7;\n          }\n        }\n        p_Var7->_M_parent = p_Var3;\n        _Var2 = p_Var7->_M_color;\n        p_Var7->_M_color = param_1->_M_color;\n        param_1->_M_color = _Var2;\n        goto LAB_002dc55f;\n      }\n      goto LAB_002dc770;\n    }\n    p_Var1 = param_1->_M_parent;\nLAB_002dc480:\n    p_Var3->_M_parent = p_Var1;\n    p_Var6 = p_Var3;\n  }\n  if (param_2->_M_parent == param_1) {\n    param_2->_M_parent = p_Var6;\n  }\n  else {\n    p_Var3 = param_1->_M_parent;\n    if (p_Var3->_M_left == param_1) {\n      p_Var3->_M_left = p_Var6;\n    }\n    else {\n      p_Var3->_M_right = p_Var6;\n    }\n  }\n  if (param_2->_M_left == param_1) {\n    p_Var3 = p_Var6;\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_Var4 = p_Var3;\n        p_Var3 = p_Var4->_M_left;\n      } while (p_Var3 != (_Base_ptr)0x0);\n      param_2->_M_left = p_Var4;\n    }\n  }\n  _Var2 = param_1->_M_color;\n  if (param_2->_M_right == param_1) {\n    p_Var3 = p_Var6;\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_Var4 = p_Var3;\n        p_Var3 = p_Var4->_M_right;\n      } while (p_Var3 != (_Base_ptr)0x0);\n      param_2->_M_right = p_Var4;\n    }\n  }\nLAB_002dc55f:\n  if (_Var2 == _S_red) {\n    return;\n  }\n  do {\n    p_Var3 = p_Var1;\n    if (param_2->_M_parent == p_Var6) {\nLAB_002dc6f0:\n      if (p_Var6 == (_Base_ptr)0x0) {\n        return;\n      }\nLAB_002dc6f5:\n      p_Var6->_M_color = _S_black;\n      return;\n    }\n    if ((p_Var6 != (_Base_ptr)0x0) && (p_Var6->_M_color != _S_black)) goto LAB_002dc6f5;\n    p_Var4 = p_Var3->_M_left;\n    if (p_Var4 != p_Var6) {\n      p_Var7 = p_Var4->_M_right;\n      p_Var1 = p_Var4;\n      if (p_Var4->_M_color == _S_red) {\n        p_Var4->_M_color = _S_black;\n        p_Var3->_M_color = _S_red;\n        p_Var3->_M_left = p_Var7;\n        if (p_Var7 != (_Base_ptr)0x0) {\n          p_Var7->_M_parent = p_Var3;\n        }\n        p_Var1 = p_Var3->_M_parent;\n        p_Var4->_M_parent = p_Var1;\n        if (p_Var3 == param_2->_M_parent) {\n          param_2->_M_parent = p_Var4;\n          p_Var1 = p_Var3->_M_left;\n        }\n        else if (p_Var3 == p_Var1->_M_right) {\n          p_Var1->_M_right = p_Var4;\n          p_Var1 = p_Var7;\n        }\n        else {\n          p_Var1->_M_left = p_Var4;\n          p_Var1 = p_Var3->_M_left;\n        }\n        p_Var4->_M_right = p_Var3;\n        p_Var7 = p_Var1->_M_right;\n        p_Var3->_M_parent = p_Var4;\n      }\n      if ((p_Var7 == (_Base_ptr)0x0) || (p_Var7->_M_color == _S_black)) {\n        p_Var4 = p_Var1->_M_left;\n        if ((p_Var4 == (_Base_ptr)0x0) || (p_Var4->_M_color == _S_black)) goto LAB_002dc5e8;\nLAB_002dc82b:\n        p_Var5 = p_Var3->_M_left;\n        p_Var1->_M_color = p_Var3->_M_color;\n        p_Var3->_M_color = _S_black;\nLAB_002dc83b:\n        p_Var4->_M_color = _S_black;\n      }\n      else {\n        p_Var4 = p_Var1->_M_left;\n        if ((p_Var4 != (_Base_ptr)0x0) && (p_Var4->_M_color != _S_black)) goto LAB_002dc82b;\n        p_Var4 = p_Var7->_M_left;\n        p_Var7->_M_color = _S_black;\n        p_Var1->_M_color = _S_red;\n        p_Var1->_M_right = p_Var4;\n        if (p_Var4 != (_Base_ptr)0x0) {\n          p_Var4->_M_parent = p_Var1;\n        }\n        p_Var4 = p_Var1->_M_parent;\n        p_Var7->_M_parent = p_Var4;\n        if (p_Var1 == param_2->_M_parent) {\n          param_2->_M_parent = p_Var7;\n        }\n        else if (p_Var1 == p_Var4->_M_left) {\n          p_Var4->_M_left = p_Var7;\n        }\n        else {\n          p_Var4->_M_right = p_Var7;\n        }\n        p_Var7->_M_left = p_Var1;\n        p_Var5 = p_Var3->_M_left;\n        p_Var1->_M_parent = p_Var7;\n        p_Var4 = p_Var5->_M_left;\n        p_Var5->_M_color = p_Var3->_M_color;\n        p_Var3->_M_color = _S_black;\n        if (p_Var4 != (_Base_ptr)0x0) goto LAB_002dc83b;\n      }\n      p_Var4 = p_Var5->_M_right;\n      p_Var3->_M_left = p_Var4;\n      if (p_Var4 != (_Base_ptr)0x0) {\n        p_Var4->_M_parent = p_Var3;\n      }\n      p_Var4 = p_Var3->_M_parent;\n      p_Var5->_M_parent = p_Var4;\n      if (p_Var3 == param_2->_M_parent) {\n        param_2->_M_parent = p_Var5;\n      }\n      else if (p_Var3 == p_Var4->_M_right) {\n        p_Var4->_M_right = p_Var5;\n      }\n      else {\n        p_Var4->_M_left = p_Var5;\n      }\n      p_Var5->_M_right = p_Var3;\n      p_Var3->_M_parent = p_Var5;\n      goto LAB_002dc6f0;\n    }\n    p_Var4 = p_Var3->_M_right;\n    p_Var7 = p_Var4->_M_left;\n    p_Var1 = p_Var4;\n    if (p_Var4->_M_color == _S_red) {\n      p_Var4->_M_color = _S_black;\n      p_Var3->_M_color = _S_red;\n      p_Var3->_M_right = p_Var7;\n      if (p_Var7 != (_Base_ptr)0x0) {\n        p_Var7->_M_parent = p_Var3;\n      }\n      p_Var1 = p_Var3->_M_parent;\n      p_Var4->_M_parent = p_Var1;\n      if (p_Var3 == param_2->_M_parent) {\n        param_2->_M_parent = p_Var4;\n        p_Var1 = p_Var3->_M_right;\n      }\n      else if (p_Var3 == p_Var1->_M_left) {\n        p_Var1->_M_left = p_Var4;\n        p_Var1 = p_Var7;\n      }\n      else {\n        p_Var1->_M_right = p_Var4;\n        p_Var1 = p_Var3->_M_right;\n      }\n      p_Var4->_M_left = p_Var3;\n      p_Var7 = p_Var1->_M_left;\n      p_Var3->_M_parent = p_Var4;\n    }\n    if ((p_Var7 != (_Base_ptr)0x0) && (p_Var7->_M_color != _S_black)) {\n      p_Var4 = p_Var1->_M_right;\n      if ((p_Var4 != (_Base_ptr)0x0) && (p_Var4->_M_color != _S_black)) goto LAB_002dc69f;\n      p_Var4 = p_Var7->_M_right;\n      p_Var7->_M_color = _S_black;\n      p_Var1->_M_color = _S_red;\n      p_Var1->_M_left = p_Var4;\n      if (p_Var4 != (_Base_ptr)0x0) {\n        p_Var4->_M_parent = p_Var1;\n      }\n      p_Var4 = p_Var1->_M_parent;\n      p_Var7->_M_parent = p_Var4;\n      if (p_Var1 == param_2->_M_parent) {\n        param_2->_M_parent = p_Var7;\n      }\n      else if (p_Var1 == p_Var4->_M_right) {\n        p_Var4->_M_right = p_Var7;\n      }\n      else {\n        p_Var4->_M_left = p_Var7;\n      }\n      p_Var7->_M_right = p_Var1;\n      p_Var1->_M_parent = p_Var7;\n      p_Var7 = p_Var3->_M_right;\n      p_Var4 = p_Var7->_M_right;\n      p_Var7->_M_color = p_Var3->_M_color;\n      p_Var3->_M_color = _S_black;\n      if (p_Var4 != (_Base_ptr)0x0) goto LAB_002dc6af;\nLAB_002dc6b5:\n      p_Var4 = p_Var7->_M_left;\n      p_Var3->_M_right = p_Var4;\n      if (p_Var4 != (_Base_ptr)0x0) {\n        p_Var4->_M_parent = p_Var3;\n      }\n      p_Var4 = p_Var3->_M_parent;\n      p_Var7->_M_parent = p_Var4;\n      if (p_Var3 == param_2->_M_parent) {\n        param_2->_M_parent = p_Var7;\n      }\n      else if (p_Var3 == p_Var4->_M_left) {\n        p_Var4->_M_left = p_Var7;\n      }\n      else {\n        p_Var4->_M_right = p_Var7;\n      }\n      p_Var7->_M_left = p_Var3;\n      p_Var3->_M_parent = p_Var7;\n      goto LAB_002dc6f0;\n    }\n    p_Var4 = p_Var1->_M_right;\n    if ((p_Var4 != (_Base_ptr)0x0) && (p_Var4->_M_color != _S_black)) {\nLAB_002dc69f:\n      p_Var7 = p_Var3->_M_right;\n      p_Var1->_M_color = p_Var3->_M_color;\n      p_Var3->_M_color = _S_black;\nLAB_002dc6af:\n      p_Var4->_M_color = _S_black;\n      goto LAB_002dc6b5;\n    }\nLAB_002dc5e8:\n    p_Var1->_M_color = _S_red;\n    p_Var1 = p_Var3->_M_parent;\n    p_Var6 = p_Var3;\n  } while( true );\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  _Base_ptr p_Var1;\n  _Rb_tree_color _Var2;\n  _Base_ptr p_Var3;\n  _Base_ptr p_Var4;\n  _Base_ptr p_Var5;\n  _Base_ptr p_Var6;\n  _Base_ptr p_Var7;\n  \n  p_Var3 = param_1->_M_left;\n  p_Var4 = param_1->_M_right;\n  p_Var6 = p_Var4;\n  if (p_Var3 == (_Base_ptr)0x0) {\nLAB_002dc770:\n    p_Var3 = p_Var6;\n    p_Var1 = param_1->_M_parent;\n    if (p_Var3 != (_Base_ptr)0x0) goto LAB_002dc480;\n    p_Var6 = (_Base_ptr)0x0;\n  }\n  else {\n    if (p_Var4 != (_Base_ptr)0x0) {\n      do {\n        p_Var7 = p_Var6;\n        p_Var6 = p_Var7->_M_left;\n      } while (p_Var7->_M_left != (_Base_ptr)0x0);\n      p_Var6 = p_Var7->_M_right;\n      if (p_Var7 != param_1) {\n        p_Var3->_M_parent = p_Var7;\n        p_Var7->_M_left = p_Var3;\n        p_Var1 = p_Var7;\n        if (p_Var7 != p_Var4) {\n          p_Var1 = p_Var7->_M_parent;\n          p_Var3 = p_Var1;\n          if (p_Var6 != (_Base_ptr)0x0) {\n            p_Var6->_M_parent = p_Var1;\n            p_Var3 = p_Var7->_M_parent;\n          }\n          p_Var3->_M_left = p_Var6;\n          p_Var7->_M_right = p_Var4;\n          param_1->_M_right->_M_parent = p_Var7;\n        }\n        if (param_2->_M_parent == param_1) {\n          param_2->_M_parent = p_Var7;\n          p_Var3 = param_1->_M_parent;\n        }\n        else {\n          p_Var3 = param_1->_M_parent;\n          if (p_Var3->_M_left == param_1) {\n            p_Var3->_M_left = p_Var7;\n          }\n          else {\n            p_Var3->_M_right = p_Var7;\n          }\n        }\n        p_Var7->_M_parent = p_Var3;\n        _Var2 = p_Var7->_M_color;\n        p_Var7->_M_color = param_1->_M_color;\n        param_1->_M_color = _Var2;\n        goto LAB_002dc55f;\n      }\n      goto LAB_002dc770;\n    }\n    p_Var1 = param_1->_M_parent;\nLAB_002dc480:\n    p_Var3->_M_parent = p_Var1;\n    p_Var6 = p_Var3;\n  }\n  if (param_2->_M_parent == param_1) {\n    param_2->_M_parent = p_Var6;\n  }\n  else {\n    p_Var3 = param_1->_M_parent;\n    if (p_Var3->_M_left == param_1) {\n      p_Var3->_M_left = p_Var6;\n    }\n    else {\n      p_Var3->_M_right = p_Var6;\n    }\n  }\n  if (param_2->_M_left == param_1) {\n    p_Var3 = p_Var6;\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_Var4 = p_Var3;\n        p_Var3 = p_Var4->_M_left;\n      } while (p_Var3 != (_Base_ptr)0x0);\n      param_2->_M_left = p_Var4;\n    }\n  }\n  _Var2 = param_1->_M_color;\n  if (param_2->_M_right == param_1) {\n    p_Var3 = p_Var6;\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_Var4 = p_Var3;\n        p_Var3 = p_Var4->_M_right;\n      } while (p_Var3 != (_Base_ptr)0x0);\n      param_2->_M_right = p_Var4;\n    }\n  }\nLAB_002dc55f:\n  if (_Var2 == _S_red) {\n    return;\n  }\n  do {\n    p_Var3 = p_Var1;\n    if (param_2->_M_parent == p_Var6) {\nLAB_002dc6f0:\n      if (p_Var6 == (_Base_ptr)0x0) {\n        return;\n      }\nLAB_002dc6f5:\n      p_Var6->_M_color = _S_black;\n      return;\n    }\n    if ((p_Var6 != (_Base_ptr)0x0) && (p_Var6->_M_color != _S_black)) goto LAB_002dc6f5;\n    p_Var4 = p_Var3->_M_left;\n    if (p_Var4 != p_Var6) {\n      p_Var7 = p_Var4->_M_right;\n      p_Var1 = p_Var4;\n      if (p_Var4->_M_color == _S_red) {\n        p_Var4->_M_color = _S_black;\n        p_Var3->_M_color = _S_red;\n        p_Var3->_M_left = p_Var7;\n        if (p_Var7 != (_Base_ptr)0x0) {\n          p_Var7->_M_parent = p_Var3;\n        }\n        p_Var1 = p_Var3->_M_parent;\n        p_Var4->_M_parent = p_Var1;\n        if (p_Var3 == param_2->_M_parent) {\n          param_2->_M_parent = p_Var4;\n          p_Var1 = p_Var3->_M_left;\n        }\n        else if (p_Var3 == p_Var1->_M_right) {\n          p_Var1->_M_right = p_Var4;\n          p_Var1 = p_Var7;\n        }\n        else {\n          p_Var1->_M_left = p_Var4;\n          p_Var1 = p_Var3->_M_left;\n        }\n        p_Var4->_M_right = p_Var3;\n        p_Var7 = p_Var1->_M_right;\n        p_Var3->_M_parent = p_Var4;\n      }\n      if ((p_Var7 == (_Base_ptr)0x0) || (p_Var7->_M_color == _S_black)) {\n        p_Var4 = p_Var1->_M_left;\n        if ((p_Var4 == (_Base_ptr)0x0) || (p_Var4->_M_color == _S_black)) goto LAB_002dc5e8;\nLAB_002dc82b:\n        p_Var5 = p_Var3->_M_left;\n        p_Var1->_M_color = p_Var3->_M_color;\n        p_Var3->_M_color = _S_black;\nLAB_002dc83b:\n        p_Var4->_M_color = _S_black;\n      }\n      else {\n        p_Var4 = p_Var1->_M_left;\n        if ((p_Var4 != (_Base_ptr)0x0) && (p_Var4->_M_color != _S_black)) goto LAB_002dc82b;\n        p_Var4 = p_Var7->_M_left;\n        p_Var7->_M_color = _S_black;\n        p_Var1->_M_color = _S_red;\n        p_Var1->_M_right = p_Var4;\n        if (p_Var4 != (_Base_ptr)0x0) {\n          p_Var4->_M_parent = p_Var1;\n        }\n        p_Var4 = p_Var1->_M_parent;\n        p_Var7->_M_parent = p_Var4;\n        if (p_Var1 == param_2->_M_parent) {\n          param_2->_M_parent = p_Var7;\n        }\n        else if (p_Var1 == p_Var4->_M_left) {\n          p_Var4->_M_left = p_Var7;\n        }\n        else {\n          p_Var4->_M_right = p_Var7;\n        }\n        p_Var7->_M_left = p_Var1;\n        p_Var5 = p_Var3->_M_left;\n        p_Var1->_M_parent = p_Var7;\n        p_Var4 = p_Var5->_M_left;\n        p_Var5->_M_color = p_Var3->_M_color;\n        p_Var3->_M_color = _S_black;\n        if (p_Var4 != (_Base_ptr)0x0) goto LAB_002dc83b;\n      }\n      p_Var4 = p_Var5->_M_right;\n      p_Var3->_M_left = p_Var4;\n      if (p_Var4 != (_Base_ptr)0x0) {\n        p_Var4->_M_parent = p_Var3;\n      }\n      p_Var4 = p_Var3->_M_parent;\n      p_Var5->_M_parent = p_Var4;\n      if (p_Var3 == param_2->_M_parent) {\n        param_2->_M_parent = p_Var5;\n      }\n      else if (p_Var3 == p_Var4->_M_right) {\n        p_Var4->_M_right = p_Var5;\n      }\n      else {\n        p_Var4->_M_left = p_Var5;\n      }\n      p_Var5->_M_right = p_Var3;\n      p_Var3->_M_parent = p_Var5;\n      goto LAB_002dc6f0;\n    }\n    p_Var4 = p_Var3->_M_right;\n    p_Var7 = p_Var4->_M_left;\n    p_Var1 = p_Var4;\n    if (p_Var4->_M_color == _S_red) {\n      p_Var4->_M_color = _S_black;\n      p_Var3->_M_color = _S_red;\n      p_Var3->_M_right = p_Var7;\n      if (p_Var7 != (_Base_ptr)0x0) {\n        p_Var7->_M_parent = p_Var3;\n      }\n      p_Var1 = p_Var3->_M_parent;\n      p_Var4->_M_parent = p_Var1;\n      if (p_Var3 == param_2->_M_parent) {\n        param_2->_M_parent = p_Var4;\n        p_Var1 = p_Var3->_M_right;\n      }\n      else if (p_Var3 == p_Var1->_M_left) {\n        p_Var1->_M_left = p_Var4;\n        p_Var1 = p_Var7;\n      }\n      else {\n        p_Var1->_M_right = p_Var4;\n        p_Var1 = p_Var3->_M_right;\n      }\n      p_Var4->_M_left = p_Var3;\n      p_Var7 = p_Var1->_M_left;\n      p_Var3->_M_parent = p_Var4;\n    }\n    if ((p_Var7 != (_Base_ptr)0x0) && (p_Var7->_M_color != _S_black)) {\n      p_Var4 = p_Var1->_M_right;\n      if ((p_Var4 != (_Base_ptr)0x0) && (p_Var4->_M_color != _S_black)) goto LAB_002dc69f;\n      p_Var4 = p_Var7->_M_right;\n      p_Var7->_M_color = _S_black;\n      p_Var1->_M_color = _S_red;\n      p_Var1->_M_left = p_Var4;\n      if (p_Var4 != (_Base_ptr)0x0) {\n        p_Var4->_M_parent = p_Var1;\n      }\n      p_Var4 = p_Var1->_M_parent;\n      p_Var7->_M_parent = p_Var4;\n      if (p_Var1 == param_2->_M_parent) {\n        param_2->_M_parent = p_Var7;\n      }\n      else if (p_Var1 == p_Var4->_M_right) {\n        p_Var4->_M_right = p_Var7;\n      }\n      else {\n        p_Var4->_M_left = p_Var7;\n      }\n      p_Var7->_M_right = p_Var1;\n      p_Var1->_M_parent = p_Var7;\n      p_Var7 = p_Var3->_M_right;\n      p_Var4 = p_Var7->_M_right;\n      p_Var7->_M_color = p_Var3->_M_color;\n      p_Var3->_M_color = _S_black;\n      if (p_Var4 != (_Base_ptr)0x0) goto LAB_002dc6af;\nLAB_002dc6b5:\n      p_Var4 = p_Var7->_M_left;\n      p_Var3->_M_right = p_Var4;\n      if (p_Var4 != (_Base_ptr)0x0) {\n        p_Var4->_M_parent = p_Var3;\n      }\n      p_Var4 = p_Var3->_M_parent;\n      p_Var7->_M_parent = p_Var4;\n      if (p_Var3 == param_2->_M_parent) {\n        param_2->_M_parent = p_Var7;\n      }\n      else if (p_Var3 == p_Var4->_M_left) {\n        p_Var4->_M_left = p_Var7;\n      }\n      else {\n        p_Var4->_M_right = p_Var7;\n      }\n      p_Var7->_M_left = p_Var3;\n      p_Var3->_M_parent = p_Var7;\n      goto LAB_002dc6f0;\n    }\n    p_Var4 = p_Var1->_M_right;\n    if ((p_Var4 != (_Base_ptr)0x0) && (p_Var4->_M_color != _S_black)) {\nLAB_002dc69f:\n      p_Var7 = p_Var3->_M_right;\n      p_Var1->_M_color = p_Var3->_M_color;\n      p_Var3->_M_color = _S_black;\nLAB_002dc6af:\n      p_Var4->_M_color = _S_black;\n      goto LAB_002dc6b5;\n    }\nLAB_002dc5e8:\n    p_Var1->_M_color = _S_red;\n    p_Var1 = p_Var3->_M_parent;\n    p_Var6 = p_Var3;\n  } while( true );\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  _Base_ptr p_Var1;\n  _Rb_tree_color _Var2;\n  _Base_ptr p_Var3;\n  _Base_ptr p_Var4;\n  _Base_ptr p_Var5;\n  _Base_ptr p_Var6;\n  _Base_ptr p_Var7;\n  \n  p_Var3 = param_1->_M_left;\n  p_Var4 = param_1->_M_right;\n  p_Var6 = p_Var4;\n  if (p_Var3 == (_Base_ptr)0x0) {\nLAB_002dc770:\n    p_Var3 = p_Var6;\n    p_Var1 = param_1->_M_parent;\n    if (p_Var3 != (_Base_ptr)0x0) goto LAB_002dc480;\n    p_Var6 = (_Base_ptr)0x0;\n  }\n  else {\n    if (p_Var4 != (_Base_ptr)0x0) {\n      do {\n        p_Var7 = p_Var6;\n        p_Var6 = p_Var7->_M_left;\n      } while (p_Var7->_M_left != (_Base_ptr)0x0);\n      p_Var6 = p_Var7->_M_right;\n      if (p_Var7 != param_1) {\n        p_Var3->_M_parent = p_Var7;\n        p_Var7->_M_left = p_Var3;\n        p_Var1 = p_Var7;\n        if (p_Var7 != p_Var4) {\n          p_Var1 = p_Var7->_M_parent;\n          p_Var3 = p_Var1;\n          if (p_Var6 != (_Base_ptr)0x0) {\n            p_Var6->_M_parent = p_Var1;\n            p_Var3 = p_Var7->_M_parent;\n          }\n          p_Var3->_M_left = p_Var6;\n          p_Var7->_M_right = p_Var4;\n          param_1->_M_right->_M_parent = p_Var7;\n        }\n        if (param_2->_M_parent == param_1) {\n          param_2->_M_parent = p_Var7;\n          p_Var3 = param_1->_M_parent;\n        }\n        else {\n          p_Var3 = param_1->_M_parent;\n          if (p_Var3->_M_left == param_1) {\n            p_Var3->_M_left = p_Var7;\n          }\n          else {\n            p_Var3->_M_right = p_Var7;\n          }\n        }\n        p_Var7->_M_parent = p_Var3;\n        _Var2 = p_Var7->_M_color;\n        p_Var7->_M_color = param_1->_M_color;\n        param_1->_M_color = _Var2;\n        goto LAB_002dc55f;\n      }\n      goto LAB_002dc770;\n    }\n    p_Var1 = param_1->_M_parent;\nLAB_002dc480:\n    p_Var3->_M_parent = p_Var1;\n    p_Var6 = p_Var3;\n  }\n  if (param_2->_M_parent == param_1) {\n    param_2->_M_parent = p_Var6;\n  }\n  else {\n    p_Var3 = param_1->_M_parent;\n    if (p_Var3->_M_left == param_1) {\n      p_Var3->_M_left = p_Var6;\n    }\n    else {\n      p_Var3->_M_right = p_Var6;\n    }\n  }\n  if (param_2->_M_left == param_1) {\n    p_Var3 = p_Var6;\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_Var4 = p_Var3;\n        p_Var3 = p_Var4->_M_left;\n      } while (p_Var3 != (_Base_ptr)0x0);\n      param_2->_M_left = p_Var4;\n    }\n  }\n  _Var2 = param_1->_M_color;\n  if (param_2->_M_right == param_1) {\n    p_Var3 = p_Var6;\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_Var4 = p_Var3;\n        p_Var3 = p_Var4->_M_right;\n      } while (p_Var3 != (_Base_ptr)0x0);\n      param_2->_M_right = p_Var4;\n    }\n  }\nLAB_002dc55f:\n  if (_Var2 == _S_red) {\n    return;\n  }\n  do {\n    p_Var3 = p_Var1;\n    if (param_2->_M_parent == p_Var6) {\nLAB_002dc6f0:\n      if (p_Var6 == (_Base_ptr)0x0) {\n        return;\n      }\nLAB_002dc6f5:\n      p_Var6->_M_color = _S_black;\n      return;\n    }\n    if ((p_Var6 != (_Base_ptr)0x0) && (p_Var6->_M_color != _S_black)) goto LAB_002dc6f5;\n    p_Var4 = p_Var3->_M_left;\n    if (p_Var4 != p_Var6) {\n      p_Var7 = p_Var4->_M_right;\n      p_Var1 = p_Var4;\n      if (p_Var4->_M_color == _S_red) {\n        p_Var4->_M_color = _S_black;\n        p_Var3->_M_color = _S_red;\n        p_Var3->_M_left = p_Var7;\n        if (p_Var7 != (_Base_ptr)0x0) {\n          p_Var7->_M_parent = p_Var3;\n        }\n        p_Var1 = p_Var3->_M_parent;\n        p_Var4->_M_parent = p_Var1;\n        if (p_Var3 == param_2->_M_parent) {\n          param_2->_M_parent = p_Var4;\n          p_Var1 = p_Var3->_M_left;\n        }\n        else if (p_Var3 == p_Var1->_M_right) {\n          p_Var1->_M_right = p_Var4;\n          p_Var1 = p_Var7;\n        }\n        else {\n          p_Var1->_M_left = p_Var4;\n          p_Var1 = p_Var3->_M_left;\n        }\n        p_Var4->_M_right = p_Var3;\n        p_Var7 = p_Var1->_M_right;\n        p_Var3->_M_parent = p_Var4;\n      }\n      if ((p_Var7 == (_Base_ptr)0x0) || (p_Var7->_M_color == _S_black)) {\n        p_Var4 = p_Var1->_M_left;\n        if ((p_Var4 == (_Base_ptr)0x0) || (p_Var4->_M_color == _S_black)) goto LAB_002dc5e8;\nLAB_002dc82b:\n        p_Var5 = p_Var3->_M_left;\n        p_Var1->_M_color = p_Var3->_M_color;\n        p_Var3->_M_color = _S_black;\nLAB_002dc83b:\n        p_Var4->_M_color = _S_black;\n      }\n      else {\n        p_Var4 = p_Var1->_M_left;\n        if ((p_Var4 != (_Base_ptr)0x0) && (p_Var4->_M_color != _S_black)) goto LAB_002dc82b;\n        p_Var4 = p_Var7->_M_left;\n        p_Var7->_M_color = _S_black;\n        p_Var1->_M_color = _S_red;\n        p_Var1->_M_right = p_Var4;\n        if (p_Var4 != (_Base_ptr)0x0) {\n          p_Var4->_M_parent = p_Var1;\n        }\n        p_Var4 = p_Var1->_M_parent;\n        p_Var7->_M_parent = p_Var4;\n        if (p_Var1 == param_2->_M_parent) {\n          param_2->_M_parent = p_Var7;\n        }\n        else if (p_Var1 == p_Var4->_M_left) {\n          p_Var4->_M_left = p_Var7;\n        }\n        else {\n          p_Var4->_M_right = p_Var7;\n        }\n        p_Var7->_M_left = p_Var1;\n        p_Var5 = p_Var3->_M_left;\n        p_Var1->_M_parent = p_Var7;\n        p_Var4 = p_Var5->_M_left;\n        p_Var5->_M_color = p_Var3->_M_color;\n        p_Var3->_M_color = _S_black;\n        if (p_Var4 != (_Base_ptr)0x0) goto LAB_002dc83b;\n      }\n      p_Var4 = p_Var5->_M_right;\n      p_Var3->_M_left = p_Var4;\n      if (p_Var4 != (_Base_ptr)0x0) {\n        p_Var4->_M_parent = p_Var3;\n      }\n      p_Var4 = p_Var3->_M_parent;\n      p_Var5->_M_parent = p_Var4;\n      if (p_Var3 == param_2->_M_parent) {\n        param_2->_M_parent = p_Var5;\n      }\n      else if (p_Var3 == p_Var4->_M_right) {\n        p_Var4->_M_right = p_Var5;\n      }\n      else {\n        p_Var4->_M_left = p_Var5;\n      }\n      p_Var5->_M_right = p_Var3;\n      p_Var3->_M_parent = p_Var5;\n      goto LAB_002dc6f0;\n    }\n    p_Var4 = p_Var3->_M_right;\n    p_Var7 = p_Var4->_M_left;\n    p_Var1 = p_Var4;\n    if (p_Var4->_M_color == _S_red) {\n      p_Var4->_M_color = _S_black;\n      p_Var3->_M_color = _S_red;\n      p_Var3->_M_right = p_Var7;\n      if (p_Var7 != (_Base_ptr)0x0) {\n        p_Var7->_M_parent = p_Var3;\n      }\n      p_Var1 = p_Var3->_M_parent;\n      p_Var4->_M_parent = p_Var1;\n      if (p_Var3 == param_2->_M_parent) {\n        param_2->_M_parent = p_Var4;\n        p_Var1 = p_Var3->_M_right;\n      }\n      else if (p_Var3 == p_Var1->_M_left) {\n        p_Var1->_M_left = p_Var4;\n        p_Var1 = p_Var7;\n      }\n      else {\n        p_Var1->_M_right = p_Var4;\n        p_Var1 = p_Var3->_M_right;\n      }\n      p_Var4->_M_left = p_Var3;\n      p_Var7 = p_Var1->_M_left;\n      p_Var3->_M_parent = p_Var4;\n    }\n    if ((p_Var7 != (_Base_ptr)0x0) && (p_Var7->_M_color != _S_black)) {\n      p_Var4 = p_Var1->_M_right;\n      if ((p_Var4 != (_Base_ptr)0x0) && (p_Var4->_M_color != _S_black)) goto LAB_002dc69f;\n      p_Var4 = p_Var7->_M_right;\n      p_Var7->_M_color = _S_black;\n      p_Var1->_M_color = _S_red;\n      p_Var1->_M_left = p_Var4;\n      if (p_Var4 != (_Base_ptr)0x0) {\n        p_Var4->_M_parent = p_Var1;\n      }\n      p_Var4 = p_Var1->_M_parent;\n      p_Var7->_M_parent = p_Var4;\n      if (p_Var1 == param_2->_M_parent) {\n        param_2->_M_parent = p_Var7;\n      }\n      else if (p_Var1 == p_Var4->_M_right) {\n        p_Var4->_M_right = p_Var7;\n      }\n      else {\n        p_Var4->_M_left = p_Var7;\n      }\n      p_Var7->_M_right = p_Var1;\n      p_Var1->_M_parent = p_Var7;\n      p_Var7 = p_Var3->_M_right;\n      p_Var4 = p_Var7->_M_right;\n      p_Var7->_M_color = p_Var3->_M_color;\n      p_Var3->_M_color = _S_black;\n      if (p_Var4 != (_Base_ptr)0x0) goto LAB_002dc6af;\nLAB_002dc6b5:\n      p_Var4 = p_Var7->_M_left;\n      p_Var3->_M_right = p_Var4;\n      if (p_Var4 != (_Base_ptr)0x0) {\n        p_Var4->_M_parent = p_Var3;\n      }\n      p_Var4 = p_Var3->_M_parent;\n      p_Var7->_M_parent = p_Var4;\n      if (p_Var3 == param_2->_M_parent) {\n        param_2->_M_parent = p_Var7;\n      }\n      else if (p_Var3 == p_Var4->_M_left) {\n        p_Var4->_M_left = p_Var7;\n      }\n      else {\n        p_Var4->_M_right = p_Var7;\n      }\n      p_Var7->_M_left = p_Var3;\n      p_Var3->_M_parent = p_Var7;\n      goto LAB_002dc6f0;\n    }\n    p_Var4 = p_Var1->_M_right;\n    if ((p_Var4 != (_Base_ptr)0x0) && (p_Var4->_M_color != _S_black)) {\nLAB_002dc69f:\n      p_Var7 = p_Var3->_M_right;\n      p_Var1->_M_color = p_Var3->_M_color;\n      p_Var3->_M_color = _S_black;\nLAB_002dc6af:\n      p_Var4->_M_color = _S_black;\n      goto LAB_002dc6b5;\n    }\nLAB_002dc5e8:\n    p_Var1->_M_color = _S_red;\n    p_Var1 = p_Var3->_M_parent;\n    p_Var6 = p_Var3;\n  } while( true );\n}" { (declaration "_Base_ptr p_Var1;" type_identifier identifier ;) (declaration "_Rb_tree_color _Var2;" type_identifier identifier ;) (declaration "_Base_ptr p_Var3;" type_identifier identifier ;) (declaration "_Base_ptr p_Var4;" type_identifier identifier ;) (declaration "_Base_ptr p_Var5;" type_identifier identifier ;) (declaration "_Base_ptr p_Var6;" type_identifier identifier ;) (declaration "_Base_ptr p_Var7;" type_identifier identifier ;) (expression_statement "p_Var3 = param_1->_M_left;" (assignment_expression "p_Var3 = param_1->_M_left" identifier = (field_expression "param_1->_M_left" identifier -> field_identifier)) ;) (expression_statement "p_Var4 = param_1->_M_right;" (assignment_expression "p_Var4 = param_1->_M_right" identifier = (field_expression "param_1->_M_right" identifier -> field_identifier)) ;) (expression_statement "p_Var6 = p_Var4;" (assignment_expression "p_Var6 = p_Var4" identifier = identifier) ;) (if_statement "if (p_Var3 == (_Base_ptr)0x0) {\nLAB_002dc770:\n    p_Var3 = p_Var6;\n    p_Var1 = param_1->_M_parent;\n    if (p_Var3 != (_Base_ptr)0x0) goto LAB_002dc480;\n    p_Var6 = (_Base_ptr)0x0;\n  }\n  else {\n    if (p_Var4 != (_Base_ptr)0x0) {\n      do {\n        p_Var7 = p_Var6;\n        p_Var6 = p_Var7->_M_left;\n      } while (p_Var7->_M_left != (_Base_ptr)0x0);\n      p_Var6 = p_Var7->_M_right;\n      if (p_Var7 != param_1) {\n        p_Var3->_M_parent = p_Var7;\n        p_Var7->_M_left = p_Var3;\n        p_Var1 = p_Var7;\n        if (p_Var7 != p_Var4) {\n          p_Var1 = p_Var7->_M_parent;\n          p_Var3 = p_Var1;\n          if (p_Var6 != (_Base_ptr)0x0) {\n            p_Var6->_M_parent = p_Var1;\n            p_Var3 = p_Var7->_M_parent;\n          }\n          p_Var3->_M_left = p_Var6;\n          p_Var7->_M_right = p_Var4;\n          param_1->_M_right->_M_parent = p_Var7;\n        }\n        if (param_2->_M_parent == param_1) {\n          param_2->_M_parent = p_Var7;\n          p_Var3 = param_1->_M_parent;\n        }\n        else {\n          p_Var3 = param_1->_M_parent;\n          if (p_Var3->_M_left == param_1) {\n            p_Var3->_M_left = p_Var7;\n          }\n          else {\n            p_Var3->_M_right = p_Var7;\n          }\n        }\n        p_Var7->_M_parent = p_Var3;\n        _Var2 = p_Var7->_M_color;\n        p_Var7->_M_color = param_1->_M_color;\n        param_1->_M_color = _Var2;\n        goto LAB_002dc55f;\n      }\n      goto LAB_002dc770;\n    }\n    p_Var1 = param_1->_M_parent;\nLAB_002dc480:\n    p_Var3->_M_parent = p_Var1;\n    p_Var6 = p_Var3;\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 "{\nLAB_002dc770:\n    p_Var3 = p_Var6;\n    p_Var1 = param_1->_M_parent;\n    if (p_Var3 != (_Base_ptr)0x0) goto LAB_002dc480;\n    p_Var6 = (_Base_ptr)0x0;\n  }" { (labeled_statement "LAB_002dc770:\n    p_Var3 = p_Var6;" statement_identifier : (expression_statement "p_Var3 = p_Var6;" (assignment_expression "p_Var3 = p_Var6" identifier = identifier) ;)) (expression_statement "p_Var1 = param_1->_M_parent;" (assignment_expression "p_Var1 = param_1->_M_parent" identifier = (field_expression "param_1->_M_parent" identifier -> field_identifier)) ;) (if_statement "if (p_Var3 != (_Base_ptr)0x0) goto LAB_002dc480;" 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)) )) (goto_statement "goto LAB_002dc480;" goto statement_identifier ;)) (expression_statement "p_Var6 = (_Base_ptr)0x0;" (assignment_expression "p_Var6 = (_Base_ptr)0x0" identifier = (cast_expression "(_Base_ptr)0x0" ( (type_descriptor "_Base_ptr" type_identifier) ) number_literal)) ;) }) (else_clause "else {\n    if (p_Var4 != (_Base_ptr)0x0) {\n      do {\n        p_Var7 = p_Var6;\n        p_Var6 = p_Var7->_M_left;\n      } while (p_Var7->_M_left != (_Base_ptr)0x0);\n      p_Var6 = p_Var7->_M_right;\n      if (p_Var7 != param_1) {\n        p_Var3->_M_parent = p_Var7;\n        p_Var7->_M_left = p_Var3;\n        p_Var1 = p_Var7;\n        if (p_Var7 != p_Var4) {\n          p_Var1 = p_Var7->_M_parent;\n          p_Var3 = p_Var1;\n          if (p_Var6 != (_Base_ptr)0x0) {\n            p_Var6->_M_parent = p_Var1;\n            p_Var3 = p_Var7->_M_parent;\n          }\n          p_Var3->_M_left = p_Var6;\n          p_Var7->_M_right = p_Var4;\n          param_1->_M_right->_M_parent = p_Var7;\n        }\n        if (param_2->_M_parent == param_1) {\n          param_2->_M_parent = p_Var7;\n          p_Var3 = param_1->_M_parent;\n        }\n        else {\n          p_Var3 = param_1->_M_parent;\n          if (p_Var3->_M_left == param_1) {\n            p_Var3->_M_left = p_Var7;\n          }\n          else {\n            p_Var3->_M_right = p_Var7;\n          }\n        }\n        p_Var7->_M_parent = p_Var3;\n        _Var2 = p_Var7->_M_color;\n        p_Var7->_M_color = param_1->_M_color;\n        param_1->_M_color = _Var2;\n        goto LAB_002dc55f;\n      }\n      goto LAB_002dc770;\n    }\n    p_Var1 = param_1->_M_parent;\nLAB_002dc480:\n    p_Var3->_M_parent = p_Var1;\n    p_Var6 = p_Var3;\n  }" else (compound_statement "{\n    if (p_Var4 != (_Base_ptr)0x0) {\n      do {\n        p_Var7 = p_Var6;\n        p_Var6 = p_Var7->_M_left;\n      } while (p_Var7->_M_left != (_Base_ptr)0x0);\n      p_Var6 = p_Var7->_M_right;\n      if (p_Var7 != param_1) {\n        p_Var3->_M_parent = p_Var7;\n        p_Var7->_M_left = p_Var3;\n        p_Var1 = p_Var7;\n        if (p_Var7 != p_Var4) {\n          p_Var1 = p_Var7->_M_parent;\n          p_Var3 = p_Var1;\n          if (p_Var6 != (_Base_ptr)0x0) {\n            p_Var6->_M_parent = p_Var1;\n            p_Var3 = p_Var7->_M_parent;\n          }\n          p_Var3->_M_left = p_Var6;\n          p_Var7->_M_right = p_Var4;\n          param_1->_M_right->_M_parent = p_Var7;\n        }\n        if (param_2->_M_parent == param_1) {\n          param_2->_M_parent = p_Var7;\n          p_Var3 = param_1->_M_parent;\n        }\n        else {\n          p_Var3 = param_1->_M_parent;\n          if (p_Var3->_M_left == param_1) {\n            p_Var3->_M_left = p_Var7;\n          }\n          else {\n            p_Var3->_M_right = p_Var7;\n          }\n        }\n        p_Var7->_M_parent = p_Var3;\n        _Var2 = p_Var7->_M_color;\n        p_Var7->_M_color = param_1->_M_color;\n        param_1->_M_color = _Var2;\n        goto LAB_002dc55f;\n      }\n      goto LAB_002dc770;\n    }\n    p_Var1 = param_1->_M_parent;\nLAB_002dc480:\n    p_Var3->_M_parent = p_Var1;\n    p_Var6 = p_Var3;\n  }" { (if_statement "if (p_Var4 != (_Base_ptr)0x0) {\n      do {\n        p_Var7 = p_Var6;\n        p_Var6 = p_Var7->_M_left;\n      } while (p_Var7->_M_left != (_Base_ptr)0x0);\n      p_Var6 = p_Var7->_M_right;\n      if (p_Var7 != param_1) {\n        p_Var3->_M_parent = p_Var7;\n        p_Var7->_M_left = p_Var3;\n        p_Var1 = p_Var7;\n        if (p_Var7 != p_Var4) {\n          p_Var1 = p_Var7->_M_parent;\n          p_Var3 = p_Var1;\n          if (p_Var6 != (_Base_ptr)0x0) {\n            p_Var6->_M_parent = p_Var1;\n            p_Var3 = p_Var7->_M_parent;\n          }\n          p_Var3->_M_left = p_Var6;\n          p_Var7->_M_right = p_Var4;\n          param_1->_M_right->_M_parent = p_Var7;\n        }\n        if (param_2->_M_parent == param_1) {\n          param_2->_M_parent = p_Var7;\n          p_Var3 = param_1->_M_parent;\n        }\n        else {\n          p_Var3 = param_1->_M_parent;\n          if (p_Var3->_M_left == param_1) {\n            p_Var3->_M_left = p_Var7;\n          }\n          else {\n            p_Var3->_M_right = p_Var7;\n          }\n        }\n        p_Var7->_M_parent = p_Var3;\n        _Var2 = p_Var7->_M_color;\n        p_Var7->_M_color = param_1->_M_color;\n        param_1->_M_color = _Var2;\n        goto LAB_002dc55f;\n      }\n      goto LAB_002dc770;\n    }" if (parenthesized_expression "(p_Var4 != (_Base_ptr)0x0)" ( (binary_expression "p_Var4 != (_Base_ptr)0x0" identifier != (cast_expression "(_Base_ptr)0x0" ( (type_descriptor "_Base_ptr" type_identifier) ) number_literal)) )) (compound_statement "{\n      do {\n        p_Var7 = p_Var6;\n        p_Var6 = p_Var7->_M_left;\n      } while (p_Var7->_M_left != (_Base_ptr)0x0);\n      p_Var6 = p_Var7->_M_right;\n      if (p_Var7 != param_1) {\n        p_Var3->_M_parent = p_Var7;\n        p_Var7->_M_left = p_Var3;\n        p_Var1 = p_Var7;\n        if (p_Var7 != p_Var4) {\n          p_Var1 = p_Var7->_M_parent;\n          p_Var3 = p_Var1;\n          if (p_Var6 != (_Base_ptr)0x0) {\n            p_Var6->_M_parent = p_Var1;\n            p_Var3 = p_Var7->_M_parent;\n          }\n          p_Var3->_M_left = p_Var6;\n          p_Var7->_M_right = p_Var4;\n          param_1->_M_right->_M_parent = p_Var7;\n        }\n        if (param_2->_M_parent == param_1) {\n          param_2->_M_parent = p_Var7;\n          p_Var3 = param_1->_M_parent;\n        }\n        else {\n          p_Var3 = param_1->_M_parent;\n          if (p_Var3->_M_left == param_1) {\n            p_Var3->_M_left = p_Var7;\n          }\n          else {\n            p_Var3->_M_right = p_Var7;\n          }\n        }\n        p_Var7->_M_parent = p_Var3;\n        _Var2 = p_Var7->_M_color;\n        p_Var7->_M_color = param_1->_M_color;\n        param_1->_M_color = _Var2;\n        goto LAB_002dc55f;\n      }\n      goto LAB_002dc770;\n    }" { (do_statement "do {\n        p_Var7 = p_Var6;\n        p_Var6 = p_Var7->_M_left;\n      } while (p_Var7->_M_left != (_Base_ptr)0x0);" do (compound_statement "{\n        p_Var7 = p_Var6;\n        p_Var6 = p_Var7->_M_left;\n      }" { (expression_statement "p_Var7 = p_Var6;" (assignment_expression "p_Var7 = p_Var6" identifier = identifier) ;) (expression_statement "p_Var6 = p_Var7->_M_left;" (assignment_expression "p_Var6 = p_Var7->_M_left" identifier = (field_expression "p_Var7->_M_left" identifier -> field_identifier)) ;) }) while (parenthesized_expression "(p_Var7->_M_left != (_Base_ptr)0x0)" ( (binary_expression "p_Var7->_M_left != (_Base_ptr)0x0" (field_expression "p_Var7->_M_left" identifier -> field_identifier) != (cast_expression "(_Base_ptr)0x0" ( (type_descriptor "_Base_ptr" type_identifier) ) number_literal)) )) ;) (expression_statement "p_Var6 = p_Var7->_M_right;" (assignment_expression "p_Var6 = p_Var7->_M_right" identifier = (field_expression "p_Var7->_M_right" identifier -> field_identifier)) ;) (if_statement "if (p_Var7 != param_1) {\n        p_Var3->_M_parent = p_Var7;\n        p_Var7->_M_left = p_Var3;\n        p_Var1 = p_Var7;\n        if (p_Var7 != p_Var4) {\n          p_Var1 = p_Var7->_M_parent;\n          p_Var3 = p_Var1;\n          if (p_Var6 != (_Base_ptr)0x0) {\n            p_Var6->_M_parent = p_Var1;\n            p_Var3 = p_Var7->_M_parent;\n          }\n          p_Var3->_M_left = p_Var6;\n          p_Var7->_M_right = p_Var4;\n          param_1->_M_right->_M_parent = p_Var7;\n        }\n        if (param_2->_M_parent == param_1) {\n          param_2->_M_parent = p_Var7;\n          p_Var3 = param_1->_M_parent;\n        }\n        else {\n          p_Var3 = param_1->_M_parent;\n          if (p_Var3->_M_left == param_1) {\n            p_Var3->_M_left = p_Var7;\n          }\n          else {\n            p_Var3->_M_right = p_Var7;\n          }\n        }\n        p_Var7->_M_parent = p_Var3;\n        _Var2 = p_Var7->_M_color;\n        p_Var7->_M_color = param_1->_M_color;\n        param_1->_M_color = _Var2;\n        goto LAB_002dc55f;\n      }" if (parenthesized_expression "(p_Var7 != param_1)" ( (binary_expression "p_Var7 != param_1" identifier != identifier) )) (compound_statement "{\n        p_Var3->_M_parent = p_Var7;\n        p_Var7->_M_left = p_Var3;\n        p_Var1 = p_Var7;\n        if (p_Var7 != p_Var4) {\n          p_Var1 = p_Var7->_M_parent;\n          p_Var3 = p_Var1;\n          if (p_Var6 != (_Base_ptr)0x0) {\n            p_Var6->_M_parent = p_Var1;\n            p_Var3 = p_Var7->_M_parent;\n          }\n          p_Var3->_M_left = p_Var6;\n          p_Var7->_M_right = p_Var4;\n          param_1->_M_right->_M_parent = p_Var7;\n        }\n        if (param_2->_M_parent == param_1) {\n          param_2->_M_parent = p_Var7;\n          p_Var3 = param_1->_M_parent;\n        }\n        else {\n          p_Var3 = param_1->_M_parent;\n          if (p_Var3->_M_left == param_1) {\n            p_Var3->_M_left = p_Var7;\n          }\n          else {\n            p_Var3->_M_right = p_Var7;\n          }\n        }\n        p_Var7->_M_parent = p_Var3;\n        _Var2 = p_Var7->_M_color;\n        p_Var7->_M_color = param_1->_M_color;\n        param_1->_M_color = _Var2;\n        goto LAB_002dc55f;\n      }" { (expression_statement "p_Var3->_M_parent = p_Var7;" (assignment_expression "p_Var3->_M_parent = p_Var7" (field_expression "p_Var3->_M_parent" identifier -> field_identifier) = identifier) ;) (expression_statement "p_Var7->_M_left = p_Var3;" (assignment_expression "p_Var7->_M_left = p_Var3" (field_expression "p_Var7->_M_left" identifier -> field_identifier) = identifier) ;) (expression_statement "p_Var1 = p_Var7;" (assignment_expression "p_Var1 = p_Var7" identifier = identifier) ;) (if_statement "if (p_Var7 != p_Var4) {\n          p_Var1 = p_Var7->_M_parent;\n          p_Var3 = p_Var1;\n          if (p_Var6 != (_Base_ptr)0x0) {\n            p_Var6->_M_parent = p_Var1;\n            p_Var3 = p_Var7->_M_parent;\n          }\n          p_Var3->_M_left = p_Var6;\n          p_Var7->_M_right = p_Var4;\n          param_1->_M_right->_M_parent = p_Var7;\n        }" if (parenthesized_expression "(p_Var7 != p_Var4)" ( (binary_expression "p_Var7 != p_Var4" identifier != identifier) )) (compound_statement "{\n          p_Var1 = p_Var7->_M_parent;\n          p_Var3 = p_Var1;\n          if (p_Var6 != (_Base_ptr)0x0) {\n            p_Var6->_M_parent = p_Var1;\n            p_Var3 = p_Var7->_M_parent;\n          }\n          p_Var3->_M_left = p_Var6;\n          p_Var7->_M_right = p_Var4;\n          param_1->_M_right->_M_parent = p_Var7;\n        }" { (expression_statement "p_Var1 = p_Var7->_M_parent;" (assignment_expression "p_Var1 = p_Var7->_M_parent" identifier = (field_expression "p_Var7->_M_parent" identifier -> field_identifier)) ;) (expression_statement "p_Var3 = p_Var1;" (assignment_expression "p_Var3 = p_Var1" identifier = identifier) ;) (if_statement "if (p_Var6 != (_Base_ptr)0x0) {\n            p_Var6->_M_parent = p_Var1;\n            p_Var3 = p_Var7->_M_parent;\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_Var1;\n            p_Var3 = p_Var7->_M_parent;\n          }" { (expression_statement "p_Var6->_M_parent = p_Var1;" (assignment_expression "p_Var6->_M_parent = p_Var1" (field_expression "p_Var6->_M_parent" identifier -> field_identifier) = identifier) ;) (expression_statement "p_Var3 = p_Var7->_M_parent;" (assignment_expression "p_Var3 = p_Var7->_M_parent" identifier = (field_expression "p_Var7->_M_parent" identifier -> field_identifier)) ;) })) (expression_statement "p_Var3->_M_left = p_Var6;" (assignment_expression "p_Var3->_M_left = p_Var6" (field_expression "p_Var3->_M_left" identifier -> field_identifier) = 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 "param_1->_M_right->_M_parent = p_Var7;" (assignment_expression "param_1->_M_right->_M_parent = p_Var7" (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_Var7;\n          p_Var3 = param_1->_M_parent;\n        }\n        else {\n          p_Var3 = param_1->_M_parent;\n          if (p_Var3->_M_left == param_1) {\n            p_Var3->_M_left = p_Var7;\n          }\n          else {\n            p_Var3->_M_right = p_Var7;\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_Var7;\n          p_Var3 = param_1->_M_parent;\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_Var3 = param_1->_M_parent;" (assignment_expression "p_Var3 = param_1->_M_parent" identifier = (field_expression "param_1->_M_parent" identifier -> field_identifier)) ;) }) (else_clause "else {\n          p_Var3 = param_1->_M_parent;\n          if (p_Var3->_M_left == param_1) {\n            p_Var3->_M_left = p_Var7;\n          }\n          else {\n            p_Var3->_M_right = p_Var7;\n          }\n        }" else (compound_statement "{\n          p_Var3 = param_1->_M_parent;\n          if (p_Var3->_M_left == param_1) {\n            p_Var3->_M_left = p_Var7;\n          }\n          else {\n            p_Var3->_M_right = p_Var7;\n          }\n        }" { (expression_statement "p_Var3 = param_1->_M_parent;" (assignment_expression "p_Var3 = param_1->_M_parent" identifier = (field_expression "param_1->_M_parent" identifier -> field_identifier)) ;) (if_statement "if (p_Var3->_M_left == param_1) {\n            p_Var3->_M_left = p_Var7;\n          }\n          else {\n            p_Var3->_M_right = p_Var7;\n          }" if (parenthesized_expression "(p_Var3->_M_left == param_1)" ( (binary_expression "p_Var3->_M_left == param_1" (field_expression "p_Var3->_M_left" identifier -> field_identifier) == identifier) )) (compound_statement "{\n            p_Var3->_M_left = p_Var7;\n          }" { (expression_statement "p_Var3->_M_left = p_Var7;" (assignment_expression "p_Var3->_M_left = p_Var7" (field_expression "p_Var3->_M_left" identifier -> field_identifier) = identifier) ;) }) (else_clause "else {\n            p_Var3->_M_right = p_Var7;\n          }" else (compound_statement "{\n            p_Var3->_M_right = p_Var7;\n          }" { (expression_statement "p_Var3->_M_right = p_Var7;" (assignment_expression "p_Var3->_M_right = p_Var7" (field_expression "p_Var3->_M_right" identifier -> field_identifier) = identifier) ;) }))) }))) (expression_statement "p_Var7->_M_parent = p_Var3;" (assignment_expression "p_Var7->_M_parent = p_Var3" (field_expression "p_Var7->_M_parent" identifier -> field_identifier) = identifier) ;) (expression_statement "_Var2 = p_Var7->_M_color;" (assignment_expression "_Var2 = p_Var7->_M_color" identifier = (field_expression "p_Var7->_M_color" identifier -> field_identifier)) ;) (expression_statement "p_Var7->_M_color = param_1->_M_color;" (assignment_expression "p_Var7->_M_color = param_1->_M_color" (field_expression "p_Var7->_M_color" identifier -> field_identifier) = (field_expression "param_1->_M_color" identifier -> field_identifier)) ;) (expression_statement "param_1->_M_color = _Var2;" (assignment_expression "param_1->_M_color = _Var2" (field_expression "param_1->_M_color" identifier -> field_identifier) = identifier) ;) (goto_statement "goto LAB_002dc55f;" goto statement_identifier ;) })) (goto_statement "goto LAB_002dc770;" goto statement_identifier ;) })) (expression_statement "p_Var1 = param_1->_M_parent;" (assignment_expression "p_Var1 = param_1->_M_parent" identifier = (field_expression "param_1->_M_parent" identifier -> field_identifier)) ;) (labeled_statement "LAB_002dc480:\n    p_Var3->_M_parent = p_Var1;" statement_identifier : (expression_statement "p_Var3->_M_parent = p_Var1;" (assignment_expression "p_Var3->_M_parent = p_Var1" (field_expression "p_Var3->_M_parent" identifier -> field_identifier) = identifier) ;)) (expression_statement "p_Var6 = p_Var3;" (assignment_expression "p_Var6 = p_Var3" identifier = identifier) ;) }))) (if_statement "if (param_2->_M_parent == param_1) {\n    param_2->_M_parent = p_Var6;\n  }\n  else {\n    p_Var3 = param_1->_M_parent;\n    if (p_Var3->_M_left == param_1) {\n      p_Var3->_M_left = p_Var6;\n    }\n    else {\n      p_Var3->_M_right = p_Var6;\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_Var6;\n  }" { (expression_statement "param_2->_M_parent = p_Var6;" (assignment_expression "param_2->_M_parent = p_Var6" (field_expression "param_2->_M_parent" identifier -> field_identifier) = identifier) ;) }) (else_clause "else {\n    p_Var3 = param_1->_M_parent;\n    if (p_Var3->_M_left == param_1) {\n      p_Var3->_M_left = p_Var6;\n    }\n    else {\n      p_Var3->_M_right = p_Var6;\n    }\n  }" else (compound_statement "{\n    p_Var3 = param_1->_M_parent;\n    if (p_Var3->_M_left == param_1) {\n      p_Var3->_M_left = p_Var6;\n    }\n    else {\n      p_Var3->_M_right = p_Var6;\n    }\n  }" { (expression_statement "p_Var3 = param_1->_M_parent;" (assignment_expression "p_Var3 = param_1->_M_parent" identifier = (field_expression "param_1->_M_parent" identifier -> field_identifier)) ;) (if_statement "if (p_Var3->_M_left == param_1) {\n      p_Var3->_M_left = p_Var6;\n    }\n    else {\n      p_Var3->_M_right = p_Var6;\n    }" if (parenthesized_expression "(p_Var3->_M_left == param_1)" ( (binary_expression "p_Var3->_M_left == param_1" (field_expression "p_Var3->_M_left" identifier -> field_identifier) == identifier) )) (compound_statement "{\n      p_Var3->_M_left = p_Var6;\n    }" { (expression_statement "p_Var3->_M_left = p_Var6;" (assignment_expression "p_Var3->_M_left = p_Var6" (field_expression "p_Var3->_M_left" identifier -> field_identifier) = identifier) ;) }) (else_clause "else {\n      p_Var3->_M_right = p_Var6;\n    }" else (compound_statement "{\n      p_Var3->_M_right = p_Var6;\n    }" { (expression_statement "p_Var3->_M_right = p_Var6;" (assignment_expression "p_Var3->_M_right = p_Var6" (field_expression "p_Var3->_M_right" identifier -> field_identifier) = identifier) ;) }))) }))) (if_statement "if (param_2->_M_left == param_1) {\n    p_Var3 = p_Var6;\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_Var4 = p_Var3;\n        p_Var3 = p_Var4->_M_left;\n      } while (p_Var3 != (_Base_ptr)0x0);\n      param_2->_M_left = p_Var4;\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_Var3 = p_Var6;\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_Var4 = p_Var3;\n        p_Var3 = p_Var4->_M_left;\n      } while (p_Var3 != (_Base_ptr)0x0);\n      param_2->_M_left = p_Var4;\n    }\n  }" { (expression_statement "p_Var3 = p_Var6;" (assignment_expression "p_Var3 = p_Var6" 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_Var4 = p_Var3;\n        p_Var3 = p_Var4->_M_left;\n      } while (p_Var3 != (_Base_ptr)0x0);\n      param_2->_M_left = p_Var4;\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_Var4 = p_Var3;\n        p_Var3 = p_Var4->_M_left;\n      } while (p_Var3 != (_Base_ptr)0x0);\n      param_2->_M_left = p_Var4;\n    }" else (compound_statement "{\n      do {\n        p_Var4 = p_Var3;\n        p_Var3 = p_Var4->_M_left;\n      } while (p_Var3 != (_Base_ptr)0x0);\n      param_2->_M_left = p_Var4;\n    }" { (do_statement "do {\n        p_Var4 = p_Var3;\n        p_Var3 = p_Var4->_M_left;\n      } while (p_Var3 != (_Base_ptr)0x0);" do (compound_statement "{\n        p_Var4 = p_Var3;\n        p_Var3 = p_Var4->_M_left;\n      }" { (expression_statement "p_Var4 = p_Var3;" (assignment_expression "p_Var4 = p_Var3" identifier = identifier) ;) (expression_statement "p_Var3 = p_Var4->_M_left;" (assignment_expression "p_Var3 = p_Var4->_M_left" identifier = (field_expression "p_Var4->_M_left" identifier -> field_identifier)) ;) }) while (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)) )) ;) (expression_statement "param_2->_M_left = p_Var4;" (assignment_expression "param_2->_M_left = p_Var4" (field_expression "param_2->_M_left" identifier -> field_identifier) = identifier) ;) }))) })) (expression_statement "_Var2 = param_1->_M_color;" (assignment_expression "_Var2 = 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_Var3 = p_Var6;\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_Var4 = p_Var3;\n        p_Var3 = p_Var4->_M_right;\n      } while (p_Var3 != (_Base_ptr)0x0);\n      param_2->_M_right = p_Var4;\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_Var3 = p_Var6;\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_Var4 = p_Var3;\n        p_Var3 = p_Var4->_M_right;\n      } while (p_Var3 != (_Base_ptr)0x0);\n      param_2->_M_right = p_Var4;\n    }\n  }" { (expression_statement "p_Var3 = p_Var6;" (assignment_expression "p_Var3 = p_Var6" 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_Var4 = p_Var3;\n        p_Var3 = p_Var4->_M_right;\n      } while (p_Var3 != (_Base_ptr)0x0);\n      param_2->_M_right = p_Var4;\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_Var4 = p_Var3;\n        p_Var3 = p_Var4->_M_right;\n      } while (p_Var3 != (_Base_ptr)0x0);\n      param_2->_M_right = p_Var4;\n    }" else (compound_statement "{\n      do {\n        p_Var4 = p_Var3;\n        p_Var3 = p_Var4->_M_right;\n      } while (p_Var3 != (_Base_ptr)0x0);\n      param_2->_M_right = p_Var4;\n    }" { (do_statement "do {\n        p_Var4 = p_Var3;\n        p_Var3 = p_Var4->_M_right;\n      } while (p_Var3 != (_Base_ptr)0x0);" do (compound_statement "{\n        p_Var4 = p_Var3;\n        p_Var3 = p_Var4->_M_right;\n      }" { (expression_statement "p_Var4 = p_Var3;" (assignment_expression "p_Var4 = p_Var3" identifier = identifier) ;) (expression_statement "p_Var3 = p_Var4->_M_right;" (assignment_expression "p_Var3 = p_Var4->_M_right" identifier = (field_expression "p_Var4->_M_right" identifier -> field_identifier)) ;) }) while (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)) )) ;) (expression_statement "param_2->_M_right = p_Var4;" (assignment_expression "param_2->_M_right = p_Var4" (field_expression "param_2->_M_right" identifier -> field_identifier) = identifier) ;) }))) })) (labeled_statement "LAB_002dc55f:\n  if (_Var2 == _S_red) {\n    return;\n  }" statement_identifier : (if_statement "if (_Var2 == _S_red) {\n    return;\n  }" if (parenthesized_expression "(_Var2 == _S_red)" ( (binary_expression "_Var2 == _S_red" identifier == identifier) )) (compound_statement "{\n    return;\n  }" { (return_statement "return;" return ;) }))) (do_statement "do {\n    p_Var3 = p_Var1;\n    if (param_2->_M_parent == p_Var6) {\nLAB_002dc6f0:\n      if (p_Var6 == (_Base_ptr)0x0) {\n        return;\n      }\nLAB_002dc6f5:\n      p_Var6->_M_color = _S_black;\n      return;\n    }\n    if ((p_Var6 != (_Base_ptr)0x0) && (p_Var6->_M_color != _S_black)) goto LAB_002dc6f5;\n    p_Var4 = p_Var3->_M_left;\n    if (p_Var4 != p_Var6) {\n      p_Var7 = p_Var4->_M_right;\n      p_Var1 = p_Var4;\n      if (p_Var4->_M_color == _S_red) {\n        p_Var4->_M_color = _S_black;\n        p_Var3->_M_color = _S_red;\n        p_Var3->_M_left = p_Var7;\n        if (p_Var7 != (_Base_ptr)0x0) {\n          p_Var7->_M_parent = p_Var3;\n        }\n        p_Var1 = p_Var3->_M_parent;\n        p_Var4->_M_parent = p_Var1;\n        if (p_Var3 == param_2->_M_parent) {\n          param_2->_M_parent = p_Var4;\n          p_Var1 = p_Var3->_M_left;\n        }\n        else if (p_Var3 == p_Var1->_M_right) {\n          p_Var1->_M_right = p_Var4;\n          p_Var1 = p_Var7;\n        }\n        else {\n          p_Var1->_M_left = p_Var4;\n          p_Var1 = p_Var3->_M_left;\n        }\n        p_Var4->_M_right = p_Var3;\n        p_Var7 = p_Var1->_M_right;\n        p_Var3->_M_parent = p_Var4;\n      }\n      if ((p_Var7 == (_Base_ptr)0x0) || (p_Var7->_M_color == _S_black)) {\n        p_Var4 = p_Var1->_M_left;\n        if ((p_Var4 == (_Base_ptr)0x0) || (p_Var4->_M_color == _S_black)) goto LAB_002dc5e8;\nLAB_002dc82b:\n        p_Var5 = p_Var3->_M_left;\n        p_Var1->_M_color = p_Var3->_M_color;\n        p_Var3->_M_color = _S_black;\nLAB_002dc83b:\n        p_Var4->_M_color = _S_black;\n      }\n      else {\n        p_Var4 = p_Var1->_M_left;\n        if ((p_Var4 != (_Base_ptr)0x0) && (p_Var4->_M_color != _S_black)) goto LAB_002dc82b;\n        p_Var4 = p_Var7->_M_left;\n        p_Var7->_M_color = _S_black;\n        p_Var1->_M_color = _S_red;\n        p_Var1->_M_right = p_Var4;\n        if (p_Var4 != (_Base_ptr)0x0) {\n          p_Var4->_M_parent = p_Var1;\n        }\n        p_Var4 = p_Var1->_M_parent;\n        p_Var7->_M_parent = p_Var4;\n        if (p_Var1 == param_2->_M_parent) {\n          param_2->_M_parent = p_Var7;\n        }\n        else if (p_Var1 == p_Var4->_M_left) {\n          p_Var4->_M_left = p_Var7;\n        }\n        else {\n          p_Var4->_M_right = p_Var7;\n        }\n        p_Var7->_M_left = p_Var1;\n        p_Var5 = p_Var3->_M_left;\n        p_Var1->_M_parent = p_Var7;\n        p_Var4 = p_Var5->_M_left;\n        p_Var5->_M_color = p_Var3->_M_color;\n        p_Var3->_M_color = _S_black;\n        if (p_Var4 != (_Base_ptr)0x0) goto LAB_002dc83b;\n      }\n      p_Var4 = p_Var5->_M_right;\n      p_Var3->_M_left = p_Var4;\n      if (p_Var4 != (_Base_ptr)0x0) {\n        p_Var4->_M_parent = p_Var3;\n      }\n      p_Var4 = p_Var3->_M_parent;\n      p_Var5->_M_parent = p_Var4;\n      if (p_Var3 == param_2->_M_parent) {\n        param_2->_M_parent = p_Var5;\n      }\n      else if (p_Var3 == p_Var4->_M_right) {\n        p_Var4->_M_right = p_Var5;\n      }\n      else {\n        p_Var4->_M_left = p_Var5;\n      }\n      p_Var5->_M_right = p_Var3;\n      p_Var3->_M_parent = p_Var5;\n      goto LAB_002dc6f0;\n    }\n    p_Var4 = p_Var3->_M_right;\n    p_Var7 = p_Var4->_M_left;\n    p_Var1 = p_Var4;\n    if (p_Var4->_M_color == _S_red) {\n      p_Var4->_M_color = _S_black;\n      p_Var3->_M_color = _S_red;\n      p_Var3->_M_right = p_Var7;\n      if (p_Var7 != (_Base_ptr)0x0) {\n        p_Var7->_M_parent = p_Var3;\n      }\n      p_Var1 = p_Var3->_M_parent;\n      p_Var4->_M_parent = p_Var1;\n      if (p_Var3 == param_2->_M_parent) {\n        param_2->_M_parent = p_Var4;\n        p_Var1 = p_Var3->_M_right;\n      }\n      else if (p_Var3 == p_Var1->_M_left) {\n        p_Var1->_M_left = p_Var4;\n        p_Var1 = p_Var7;\n      }\n      else {\n        p_Var1->_M_right = p_Var4;\n        p_Var1 = p_Var3->_M_right;\n      }\n      p_Var4->_M_left = p_Var3;\n      p_Var7 = p_Var1->_M_left;\n      p_Var3->_M_parent = p_Var4;\n    }\n    if ((p_Var7 != (_Base_ptr)0x0) && (p_Var7->_M_color != _S_black)) {\n      p_Var4 = p_Var1->_M_right;\n      if ((p_Var4 != (_Base_ptr)0x0) && (p_Var4->_M_color != _S_black)) goto LAB_002dc69f;\n      p_Var4 = p_Var7->_M_right;\n      p_Var7->_M_color = _S_black;\n      p_Var1->_M_color = _S_red;\n      p_Var1->_M_left = p_Var4;\n      if (p_Var4 != (_Base_ptr)0x0) {\n        p_Var4->_M_parent = p_Var1;\n      }\n      p_Var4 = p_Var1->_M_parent;\n      p_Var7->_M_parent = p_Var4;\n      if (p_Var1 == param_2->_M_parent) {\n        param_2->_M_parent = p_Var7;\n      }\n      else if (p_Var1 == p_Var4->_M_right) {\n        p_Var4->_M_right = p_Var7;\n      }\n      else {\n        p_Var4->_M_left = p_Var7;\n      }\n      p_Var7->_M_right = p_Var1;\n      p_Var1->_M_parent = p_Var7;\n      p_Var7 = p_Var3->_M_right;\n      p_Var4 = p_Var7->_M_right;\n      p_Var7->_M_color = p_Var3->_M_color;\n      p_Var3->_M_color = _S_black;\n      if (p_Var4 != (_Base_ptr)0x0) goto LAB_002dc6af;\nLAB_002dc6b5:\n      p_Var4 = p_Var7->_M_left;\n      p_Var3->_M_right = p_Var4;\n      if (p_Var4 != (_Base_ptr)0x0) {\n        p_Var4->_M_parent = p_Var3;\n      }\n      p_Var4 = p_Var3->_M_parent;\n      p_Var7->_M_parent = p_Var4;\n      if (p_Var3 == param_2->_M_parent) {\n        param_2->_M_parent = p_Var7;\n      }\n      else if (p_Var3 == p_Var4->_M_left) {\n        p_Var4->_M_left = p_Var7;\n      }\n      else {\n        p_Var4->_M_right = p_Var7;\n      }\n      p_Var7->_M_left = p_Var3;\n      p_Var3->_M_parent = p_Var7;\n      goto LAB_002dc6f0;\n    }\n    p_Var4 = p_Var1->_M_right;\n    if ((p_Var4 != (_Base_ptr)0x0) && (p_Var4->_M_color != _S_black)) {\nLAB_002dc69f:\n      p_Var7 = p_Var3->_M_right;\n      p_Var1->_M_color = p_Var3->_M_color;\n      p_Var3->_M_color = _S_black;\nLAB_002dc6af:\n      p_Var4->_M_color = _S_black;\n      goto LAB_002dc6b5;\n    }\nLAB_002dc5e8:\n    p_Var1->_M_color = _S_red;\n    p_Var1 = p_Var3->_M_parent;\n    p_Var6 = p_Var3;\n  } while( true );" do (compound_statement "{\n    p_Var3 = p_Var1;\n    if (param_2->_M_parent == p_Var6) {\nLAB_002dc6f0:\n      if (p_Var6 == (_Base_ptr)0x0) {\n        return;\n      }\nLAB_002dc6f5:\n      p_Var6->_M_color = _S_black;\n      return;\n    }\n    if ((p_Var6 != (_Base_ptr)0x0) && (p_Var6->_M_color != _S_black)) goto LAB_002dc6f5;\n    p_Var4 = p_Var3->_M_left;\n    if (p_Var4 != p_Var6) {\n      p_Var7 = p_Var4->_M_right;\n      p_Var1 = p_Var4;\n      if (p_Var4->_M_color == _S_red) {\n        p_Var4->_M_color = _S_black;\n        p_Var3->_M_color = _S_red;\n        p_Var3->_M_left = p_Var7;\n        if (p_Var7 != (_Base_ptr)0x0) {\n          p_Var7->_M_parent = p_Var3;\n        }\n        p_Var1 = p_Var3->_M_parent;\n        p_Var4->_M_parent = p_Var1;\n        if (p_Var3 == param_2->_M_parent) {\n          param_2->_M_parent = p_Var4;\n          p_Var1 = p_Var3->_M_left;\n        }\n        else if (p_Var3 == p_Var1->_M_right) {\n          p_Var1->_M_right = p_Var4;\n          p_Var1 = p_Var7;\n        }\n        else {\n          p_Var1->_M_left = p_Var4;\n          p_Var1 = p_Var3->_M_left;\n        }\n        p_Var4->_M_right = p_Var3;\n        p_Var7 = p_Var1->_M_right;\n        p_Var3->_M_parent = p_Var4;\n      }\n      if ((p_Var7 == (_Base_ptr)0x0) || (p_Var7->_M_color == _S_black)) {\n        p_Var4 = p_Var1->_M_left;\n        if ((p_Var4 == (_Base_ptr)0x0) || (p_Var4->_M_color == _S_black)) goto LAB_002dc5e8;\nLAB_002dc82b:\n        p_Var5 = p_Var3->_M_left;\n        p_Var1->_M_color = p_Var3->_M_color;\n        p_Var3->_M_color = _S_black;\nLAB_002dc83b:\n        p_Var4->_M_color = _S_black;\n      }\n      else {\n        p_Var4 = p_Var1->_M_left;\n        if ((p_Var4 != (_Base_ptr)0x0) && (p_Var4->_M_color != _S_black)) goto LAB_002dc82b;\n        p_Var4 = p_Var7->_M_left;\n        p_Var7->_M_color = _S_black;\n        p_Var1->_M_color = _S_red;\n        p_Var1->_M_right = p_Var4;\n        if (p_Var4 != (_Base_ptr)0x0) {\n          p_Var4->_M_parent = p_Var1;\n        }\n        p_Var4 = p_Var1->_M_parent;\n        p_Var7->_M_parent = p_Var4;\n        if (p_Var1 == param_2->_M_parent) {\n          param_2->_M_parent = p_Var7;\n        }\n        else if (p_Var1 == p_Var4->_M_left) {\n          p_Var4->_M_left = p_Var7;\n        }\n        else {\n          p_Var4->_M_right = p_Var7;\n        }\n        p_Var7->_M_left = p_Var1;\n        p_Var5 = p_Var3->_M_left;\n        p_Var1->_M_parent = p_Var7;\n        p_Var4 = p_Var5->_M_left;\n        p_Var5->_M_color = p_Var3->_M_color;\n        p_Var3->_M_color = _S_black;\n        if (p_Var4 != (_Base_ptr)0x0) goto LAB_002dc83b;\n      }\n      p_Var4 = p_Var5->_M_right;\n      p_Var3->_M_left = p_Var4;\n      if (p_Var4 != (_Base_ptr)0x0) {\n        p_Var4->_M_parent = p_Var3;\n      }\n      p_Var4 = p_Var3->_M_parent;\n      p_Var5->_M_parent = p_Var4;\n      if (p_Var3 == param_2->_M_parent) {\n        param_2->_M_parent = p_Var5;\n      }\n      else if (p_Var3 == p_Var4->_M_right) {\n        p_Var4->_M_right = p_Var5;\n      }\n      else {\n        p_Var4->_M_left = p_Var5;\n      }\n      p_Var5->_M_right = p_Var3;\n      p_Var3->_M_parent = p_Var5;\n      goto LAB_002dc6f0;\n    }\n    p_Var4 = p_Var3->_M_right;\n    p_Var7 = p_Var4->_M_left;\n    p_Var1 = p_Var4;\n    if (p_Var4->_M_color == _S_red) {\n      p_Var4->_M_color = _S_black;\n      p_Var3->_M_color = _S_red;\n      p_Var3->_M_right = p_Var7;\n      if (p_Var7 != (_Base_ptr)0x0) {\n        p_Var7->_M_parent = p_Var3;\n      }\n      p_Var1 = p_Var3->_M_parent;\n      p_Var4->_M_parent = p_Var1;\n      if (p_Var3 == param_2->_M_parent) {\n        param_2->_M_parent = p_Var4;\n        p_Var1 = p_Var3->_M_right;\n      }\n      else if (p_Var3 == p_Var1->_M_left) {\n        p_Var1->_M_left = p_Var4;\n        p_Var1 = p_Var7;\n      }\n      else {\n        p_Var1->_M_right = p_Var4;\n        p_Var1 = p_Var3->_M_right;\n      }\n      p_Var4->_M_left = p_Var3;\n      p_Var7 = p_Var1->_M_left;\n      p_Var3->_M_parent = p_Var4;\n    }\n    if ((p_Var7 != (_Base_ptr)0x0) && (p_Var7->_M_color != _S_black)) {\n      p_Var4 = p_Var1->_M_right;\n      if ((p_Var4 != (_Base_ptr)0x0) && (p_Var4->_M_color != _S_black)) goto LAB_002dc69f;\n      p_Var4 = p_Var7->_M_right;\n      p_Var7->_M_color = _S_black;\n      p_Var1->_M_color = _S_red;\n      p_Var1->_M_left = p_Var4;\n      if (p_Var4 != (_Base_ptr)0x0) {\n        p_Var4->_M_parent = p_Var1;\n      }\n      p_Var4 = p_Var1->_M_parent;\n      p_Var7->_M_parent = p_Var4;\n      if (p_Var1 == param_2->_M_parent) {\n        param_2->_M_parent = p_Var7;\n      }\n      else if (p_Var1 == p_Var4->_M_right) {\n        p_Var4->_M_right = p_Var7;\n      }\n      else {\n        p_Var4->_M_left = p_Var7;\n      }\n      p_Var7->_M_right = p_Var1;\n      p_Var1->_M_parent = p_Var7;\n      p_Var7 = p_Var3->_M_right;\n      p_Var4 = p_Var7->_M_right;\n      p_Var7->_M_color = p_Var3->_M_color;\n      p_Var3->_M_color = _S_black;\n      if (p_Var4 != (_Base_ptr)0x0) goto LAB_002dc6af;\nLAB_002dc6b5:\n      p_Var4 = p_Var7->_M_left;\n      p_Var3->_M_right = p_Var4;\n      if (p_Var4 != (_Base_ptr)0x0) {\n        p_Var4->_M_parent = p_Var3;\n      }\n      p_Var4 = p_Var3->_M_parent;\n      p_Var7->_M_parent = p_Var4;\n      if (p_Var3 == param_2->_M_parent) {\n        param_2->_M_parent = p_Var7;\n      }\n      else if (p_Var3 == p_Var4->_M_left) {\n        p_Var4->_M_left = p_Var7;\n      }\n      else {\n        p_Var4->_M_right = p_Var7;\n      }\n      p_Var7->_M_left = p_Var3;\n      p_Var3->_M_parent = p_Var7;\n      goto LAB_002dc6f0;\n    }\n    p_Var4 = p_Var1->_M_right;\n    if ((p_Var4 != (_Base_ptr)0x0) && (p_Var4->_M_color != _S_black)) {\nLAB_002dc69f:\n      p_Var7 = p_Var3->_M_right;\n      p_Var1->_M_color = p_Var3->_M_color;\n      p_Var3->_M_color = _S_black;\nLAB_002dc6af:\n      p_Var4->_M_color = _S_black;\n      goto LAB_002dc6b5;\n    }\nLAB_002dc5e8:\n    p_Var1->_M_color = _S_red;\n    p_Var1 = p_Var3->_M_parent;\n    p_Var6 = p_Var3;\n  }" { (expression_statement "p_Var3 = p_Var1;" (assignment_expression "p_Var3 = p_Var1" identifier = identifier) ;) (if_statement "if (param_2->_M_parent == p_Var6) {\nLAB_002dc6f0:\n      if (p_Var6 == (_Base_ptr)0x0) {\n        return;\n      }\nLAB_002dc6f5:\n      p_Var6->_M_color = _S_black;\n      return;\n    }" if (parenthesized_expression "(param_2->_M_parent == p_Var6)" ( (binary_expression "param_2->_M_parent == p_Var6" (field_expression "param_2->_M_parent" identifier -> field_identifier) == identifier) )) (compound_statement "{\nLAB_002dc6f0:\n      if (p_Var6 == (_Base_ptr)0x0) {\n        return;\n      }\nLAB_002dc6f5:\n      p_Var6->_M_color = _S_black;\n      return;\n    }" { (labeled_statement "LAB_002dc6f0:\n      if (p_Var6 == (_Base_ptr)0x0) {\n        return;\n      }" statement_identifier : (if_statement "if (p_Var6 == (_Base_ptr)0x0) {\n        return;\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        return;\n      }" { (return_statement "return;" return ;) }))) (labeled_statement "LAB_002dc6f5:\n      p_Var6->_M_color = _S_black;" statement_identifier : (expression_statement "p_Var6->_M_color = _S_black;" (assignment_expression "p_Var6->_M_color = _S_black" (field_expression "p_Var6->_M_color" identifier -> field_identifier) = identifier) ;)) (return_statement "return;" return ;) })) (if_statement "if ((p_Var6 != (_Base_ptr)0x0) && (p_Var6->_M_color != _S_black)) goto LAB_002dc6f5;" if (parenthesized_expression "((p_Var6 != (_Base_ptr)0x0) && (p_Var6->_M_color != _S_black))" ( (binary_expression "(p_Var6 != (_Base_ptr)0x0) && (p_Var6->_M_color != _S_black)" (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)) )) && (parenthesized_expression "(p_Var6->_M_color != _S_black)" ( (binary_expression "p_Var6->_M_color != _S_black" (field_expression "p_Var6->_M_color" identifier -> field_identifier) != identifier) ))) )) (goto_statement "goto LAB_002dc6f5;" goto statement_identifier ;)) (expression_statement "p_Var4 = p_Var3->_M_left;" (assignment_expression "p_Var4 = p_Var3->_M_left" identifier = (field_expression "p_Var3->_M_left" identifier -> field_identifier)) ;) (if_statement "if (p_Var4 != p_Var6) {\n      p_Var7 = p_Var4->_M_right;\n      p_Var1 = p_Var4;\n      if (p_Var4->_M_color == _S_red) {\n        p_Var4->_M_color = _S_black;\n        p_Var3->_M_color = _S_red;\n        p_Var3->_M_left = p_Var7;\n        if (p_Var7 != (_Base_ptr)0x0) {\n          p_Var7->_M_parent = p_Var3;\n        }\n        p_Var1 = p_Var3->_M_parent;\n        p_Var4->_M_parent = p_Var1;\n        if (p_Var3 == param_2->_M_parent) {\n          param_2->_M_parent = p_Var4;\n          p_Var1 = p_Var3->_M_left;\n        }\n        else if (p_Var3 == p_Var1->_M_right) {\n          p_Var1->_M_right = p_Var4;\n          p_Var1 = p_Var7;\n        }\n        else {\n          p_Var1->_M_left = p_Var4;\n          p_Var1 = p_Var3->_M_left;\n        }\n        p_Var4->_M_right = p_Var3;\n        p_Var7 = p_Var1->_M_right;\n        p_Var3->_M_parent = p_Var4;\n      }\n      if ((p_Var7 == (_Base_ptr)0x0) || (p_Var7->_M_color == _S_black)) {\n        p_Var4 = p_Var1->_M_left;\n        if ((p_Var4 == (_Base_ptr)0x0) || (p_Var4->_M_color == _S_black)) goto LAB_002dc5e8;\nLAB_002dc82b:\n        p_Var5 = p_Var3->_M_left;\n        p_Var1->_M_color = p_Var3->_M_color;\n        p_Var3->_M_color = _S_black;\nLAB_002dc83b:\n        p_Var4->_M_color = _S_black;\n      }\n      else {\n        p_Var4 = p_Var1->_M_left;\n        if ((p_Var4 != (_Base_ptr)0x0) && (p_Var4->_M_color != _S_black)) goto LAB_002dc82b;\n        p_Var4 = p_Var7->_M_left;\n        p_Var7->_M_color = _S_black;\n        p_Var1->_M_color = _S_red;\n        p_Var1->_M_right = p_Var4;\n        if (p_Var4 != (_Base_ptr)0x0) {\n          p_Var4->_M_parent = p_Var1;\n        }\n        p_Var4 = p_Var1->_M_parent;\n        p_Var7->_M_parent = p_Var4;\n        if (p_Var1 == param_2->_M_parent) {\n          param_2->_M_parent = p_Var7;\n        }\n        else if (p_Var1 == p_Var4->_M_left) {\n          p_Var4->_M_left = p_Var7;\n        }\n        else {\n          p_Var4->_M_right = p_Var7;\n        }\n        p_Var7->_M_left = p_Var1;\n        p_Var5 = p_Var3->_M_left;\n        p_Var1->_M_parent = p_Var7;\n        p_Var4 = p_Var5->_M_left;\n        p_Var5->_M_color = p_Var3->_M_color;\n        p_Var3->_M_color = _S_black;\n        if (p_Var4 != (_Base_ptr)0x0) goto LAB_002dc83b;\n      }\n      p_Var4 = p_Var5->_M_right;\n      p_Var3->_M_left = p_Var4;\n      if (p_Var4 != (_Base_ptr)0x0) {\n        p_Var4->_M_parent = p_Var3;\n      }\n      p_Var4 = p_Var3->_M_parent;\n      p_Var5->_M_parent = p_Var4;\n      if (p_Var3 == param_2->_M_parent) {\n        param_2->_M_parent = p_Var5;\n      }\n      else if (p_Var3 == p_Var4->_M_right) {\n        p_Var4->_M_right = p_Var5;\n      }\n      else {\n        p_Var4->_M_left = p_Var5;\n      }\n      p_Var5->_M_right = p_Var3;\n      p_Var3->_M_parent = p_Var5;\n      goto LAB_002dc6f0;\n    }" if (parenthesized_expression "(p_Var4 != p_Var6)" ( (binary_expression "p_Var4 != p_Var6" identifier != identifier) )) (compound_statement "{\n      p_Var7 = p_Var4->_M_right;\n      p_Var1 = p_Var4;\n      if (p_Var4->_M_color == _S_red) {\n        p_Var4->_M_color = _S_black;\n        p_Var3->_M_color = _S_red;\n        p_Var3->_M_left = p_Var7;\n        if (p_Var7 != (_Base_ptr)0x0) {\n          p_Var7->_M_parent = p_Var3;\n        }\n        p_Var1 = p_Var3->_M_parent;\n        p_Var4->_M_parent = p_Var1;\n        if (p_Var3 == param_2->_M_parent) {\n          param_2->_M_parent = p_Var4;\n          p_Var1 = p_Var3->_M_left;\n        }\n        else if (p_Var3 == p_Var1->_M_right) {\n          p_Var1->_M_right = p_Var4;\n          p_Var1 = p_Var7;\n        }\n        else {\n          p_Var1->_M_left = p_Var4;\n          p_Var1 = p_Var3->_M_left;\n        }\n        p_Var4->_M_right = p_Var3;\n        p_Var7 = p_Var1->_M_right;\n        p_Var3->_M_parent = p_Var4;\n      }\n      if ((p_Var7 == (_Base_ptr)0x0) || (p_Var7->_M_color == _S_black)) {\n        p_Var4 = p_Var1->_M_left;\n        if ((p_Var4 == (_Base_ptr)0x0) || (p_Var4->_M_color == _S_black)) goto LAB_002dc5e8;\nLAB_002dc82b:\n        p_Var5 = p_Var3->_M_left;\n        p_Var1->_M_color = p_Var3->_M_color;\n        p_Var3->_M_color = _S_black;\nLAB_002dc83b:\n        p_Var4->_M_color = _S_black;\n      }\n      else {\n        p_Var4 = p_Var1->_M_left;\n        if ((p_Var4 != (_Base_ptr)0x0) && (p_Var4->_M_color != _S_black)) goto LAB_002dc82b;\n        p_Var4 = p_Var7->_M_left;\n        p_Var7->_M_color = _S_black;\n        p_Var1->_M_color = _S_red;\n        p_Var1->_M_right = p_Var4;\n        if (p_Var4 != (_Base_ptr)0x0) {\n          p_Var4->_M_parent = p_Var1;\n        }\n        p_Var4 = p_Var1->_M_parent;\n        p_Var7->_M_parent = p_Var4;\n        if (p_Var1 == param_2->_M_parent) {\n          param_2->_M_parent = p_Var7;\n        }\n        else if (p_Var1 == p_Var4->_M_left) {\n          p_Var4->_M_left = p_Var7;\n        }\n        else {\n          p_Var4->_M_right = p_Var7;\n        }\n        p_Var7->_M_left = p_Var1;\n        p_Var5 = p_Var3->_M_left;\n        p_Var1->_M_parent = p_Var7;\n        p_Var4 = p_Var5->_M_left;\n        p_Var5->_M_color = p_Var3->_M_color;\n        p_Var3->_M_color = _S_black;\n        if (p_Var4 != (_Base_ptr)0x0) goto LAB_002dc83b;\n      }\n      p_Var4 = p_Var5->_M_right;\n      p_Var3->_M_left = p_Var4;\n      if (p_Var4 != (_Base_ptr)0x0) {\n        p_Var4->_M_parent = p_Var3;\n      }\n      p_Var4 = p_Var3->_M_parent;\n      p_Var5->_M_parent = p_Var4;\n      if (p_Var3 == param_2->_M_parent) {\n        param_2->_M_parent = p_Var5;\n      }\n      else if (p_Var3 == p_Var4->_M_right) {\n        p_Var4->_M_right = p_Var5;\n      }\n      else {\n        p_Var4->_M_left = p_Var5;\n      }\n      p_Var5->_M_right = p_Var3;\n      p_Var3->_M_parent = p_Var5;\n      goto LAB_002dc6f0;\n    }" { (expression_statement "p_Var7 = p_Var4->_M_right;" (assignment_expression "p_Var7 = p_Var4->_M_right" identifier = (field_expression "p_Var4->_M_right" identifier -> field_identifier)) ;) (expression_statement "p_Var1 = p_Var4;" (assignment_expression "p_Var1 = p_Var4" identifier = identifier) ;) (if_statement "if (p_Var4->_M_color == _S_red) {\n        p_Var4->_M_color = _S_black;\n        p_Var3->_M_color = _S_red;\n        p_Var3->_M_left = p_Var7;\n        if (p_Var7 != (_Base_ptr)0x0) {\n          p_Var7->_M_parent = p_Var3;\n        }\n        p_Var1 = p_Var3->_M_parent;\n        p_Var4->_M_parent = p_Var1;\n        if (p_Var3 == param_2->_M_parent) {\n          param_2->_M_parent = p_Var4;\n          p_Var1 = p_Var3->_M_left;\n        }\n        else if (p_Var3 == p_Var1->_M_right) {\n          p_Var1->_M_right = p_Var4;\n          p_Var1 = p_Var7;\n        }\n        else {\n          p_Var1->_M_left = p_Var4;\n          p_Var1 = p_Var3->_M_left;\n        }\n        p_Var4->_M_right = p_Var3;\n        p_Var7 = p_Var1->_M_right;\n        p_Var3->_M_parent = p_Var4;\n      }" if (parenthesized_expression "(p_Var4->_M_color == _S_red)" ( (binary_expression "p_Var4->_M_color == _S_red" (field_expression "p_Var4->_M_color" identifier -> field_identifier) == identifier) )) (compound_statement "{\n        p_Var4->_M_color = _S_black;\n        p_Var3->_M_color = _S_red;\n        p_Var3->_M_left = p_Var7;\n        if (p_Var7 != (_Base_ptr)0x0) {\n          p_Var7->_M_parent = p_Var3;\n        }\n        p_Var1 = p_Var3->_M_parent;\n        p_Var4->_M_parent = p_Var1;\n        if (p_Var3 == param_2->_M_parent) {\n          param_2->_M_parent = p_Var4;\n          p_Var1 = p_Var3->_M_left;\n        }\n        else if (p_Var3 == p_Var1->_M_right) {\n          p_Var1->_M_right = p_Var4;\n          p_Var1 = p_Var7;\n        }\n        else {\n          p_Var1->_M_left = p_Var4;\n          p_Var1 = p_Var3->_M_left;\n        }\n        p_Var4->_M_right = p_Var3;\n        p_Var7 = p_Var1->_M_right;\n        p_Var3->_M_parent = p_Var4;\n      }" { (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) ;) (expression_statement "p_Var3->_M_color = _S_red;" (assignment_expression "p_Var3->_M_color = _S_red" (field_expression "p_Var3->_M_color" identifier -> field_identifier) = identifier) ;) (expression_statement "p_Var3->_M_left = p_Var7;" (assignment_expression "p_Var3->_M_left = p_Var7" (field_expression "p_Var3->_M_left" identifier -> field_identifier) = identifier) ;) (if_statement "if (p_Var7 != (_Base_ptr)0x0) {\n          p_Var7->_M_parent = p_Var3;\n        }" if (parenthesized_expression "(p_Var7 != (_Base_ptr)0x0)" ( (binary_expression "p_Var7 != (_Base_ptr)0x0" identifier != (cast_expression "(_Base_ptr)0x0" ( (type_descriptor "_Base_ptr" type_identifier) ) number_literal)) )) (compound_statement "{\n          p_Var7->_M_parent = p_Var3;\n        }" { (expression_statement "p_Var7->_M_parent = p_Var3;" (assignment_expression "p_Var7->_M_parent = p_Var3" (field_expression "p_Var7->_M_parent" identifier -> field_identifier) = identifier) ;) })) (expression_statement "p_Var1 = p_Var3->_M_parent;" (assignment_expression "p_Var1 = p_Var3->_M_parent" identifier = (field_expression "p_Var3->_M_parent" identifier -> field_identifier)) ;) (expression_statement "p_Var4->_M_parent = p_Var1;" (assignment_expression "p_Var4->_M_parent = p_Var1" (field_expression "p_Var4->_M_parent" identifier -> field_identifier) = identifier) ;) (if_statement "if (p_Var3 == param_2->_M_parent) {\n          param_2->_M_parent = p_Var4;\n          p_Var1 = p_Var3->_M_left;\n        }\n        else if (p_Var3 == p_Var1->_M_right) {\n          p_Var1->_M_right = p_Var4;\n          p_Var1 = p_Var7;\n        }\n        else {\n          p_Var1->_M_left = p_Var4;\n          p_Var1 = p_Var3->_M_left;\n        }" if (parenthesized_expression "(p_Var3 == param_2->_M_parent)" ( (binary_expression "p_Var3 == param_2->_M_parent" identifier == (field_expression "param_2->_M_parent" identifier -> field_identifier)) )) (compound_statement "{\n          param_2->_M_parent = p_Var4;\n          p_Var1 = p_Var3->_M_left;\n        }" { (expression_statement "param_2->_M_parent = p_Var4;" (assignment_expression "param_2->_M_parent = p_Var4" (field_expression "param_2->_M_parent" identifier -> field_identifier) = identifier) ;) (expression_statement "p_Var1 = p_Var3->_M_left;" (assignment_expression "p_Var1 = p_Var3->_M_left" identifier = (field_expression "p_Var3->_M_left" identifier -> field_identifier)) ;) }) (else_clause "else if (p_Var3 == p_Var1->_M_right) {\n          p_Var1->_M_right = p_Var4;\n          p_Var1 = p_Var7;\n        }\n        else {\n          p_Var1->_M_left = p_Var4;\n          p_Var1 = p_Var3->_M_left;\n        }" else (if_statement "if (p_Var3 == p_Var1->_M_right) {\n          p_Var1->_M_right = p_Var4;\n          p_Var1 = p_Var7;\n        }\n        else {\n          p_Var1->_M_left = p_Var4;\n          p_Var1 = p_Var3->_M_left;\n        }" if (parenthesized_expression "(p_Var3 == p_Var1->_M_right)" ( (binary_expression "p_Var3 == p_Var1->_M_right" identifier == (field_expression "p_Var1->_M_right" identifier -> field_identifier)) )) (compound_statement "{\n          p_Var1->_M_right = p_Var4;\n          p_Var1 = p_Var7;\n        }" { (expression_statement "p_Var1->_M_right = p_Var4;" (assignment_expression "p_Var1->_M_right = p_Var4" (field_expression "p_Var1->_M_right" identifier -> field_identifier) = identifier) ;) (expression_statement "p_Var1 = p_Var7;" (assignment_expression "p_Var1 = p_Var7" identifier = identifier) ;) }) (else_clause "else {\n          p_Var1->_M_left = p_Var4;\n          p_Var1 = p_Var3->_M_left;\n        }" else (compound_statement "{\n          p_Var1->_M_left = p_Var4;\n          p_Var1 = p_Var3->_M_left;\n        }" { (expression_statement "p_Var1->_M_left = p_Var4;" (assignment_expression "p_Var1->_M_left = p_Var4" (field_expression "p_Var1->_M_left" identifier -> field_identifier) = identifier) ;) (expression_statement "p_Var1 = p_Var3->_M_left;" (assignment_expression "p_Var1 = p_Var3->_M_left" identifier = (field_expression "p_Var3->_M_left" identifier -> field_identifier)) ;) }))))) (expression_statement "p_Var4->_M_right = p_Var3;" (assignment_expression "p_Var4->_M_right = p_Var3" (field_expression "p_Var4->_M_right" identifier -> field_identifier) = identifier) ;) (expression_statement "p_Var7 = p_Var1->_M_right;" (assignment_expression "p_Var7 = p_Var1->_M_right" identifier = (field_expression "p_Var1->_M_right" identifier -> field_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 ((p_Var7 == (_Base_ptr)0x0) || (p_Var7->_M_color == _S_black)) {\n        p_Var4 = p_Var1->_M_left;\n        if ((p_Var4 == (_Base_ptr)0x0) || (p_Var4->_M_color == _S_black)) goto LAB_002dc5e8;\nLAB_002dc82b:\n        p_Var5 = p_Var3->_M_left;\n        p_Var1->_M_color = p_Var3->_M_color;\n        p_Var3->_M_color = _S_black;\nLAB_002dc83b:\n        p_Var4->_M_color = _S_black;\n      }\n      else {\n        p_Var4 = p_Var1->_M_left;\n        if ((p_Var4 != (_Base_ptr)0x0) && (p_Var4->_M_color != _S_black)) goto LAB_002dc82b;\n        p_Var4 = p_Var7->_M_left;\n        p_Var7->_M_color = _S_black;\n        p_Var1->_M_color = _S_red;\n        p_Var1->_M_right = p_Var4;\n        if (p_Var4 != (_Base_ptr)0x0) {\n          p_Var4->_M_parent = p_Var1;\n        }\n        p_Var4 = p_Var1->_M_parent;\n        p_Var7->_M_parent = p_Var4;\n        if (p_Var1 == param_2->_M_parent) {\n          param_2->_M_parent = p_Var7;\n        }\n        else if (p_Var1 == p_Var4->_M_left) {\n          p_Var4->_M_left = p_Var7;\n        }\n        else {\n          p_Var4->_M_right = p_Var7;\n        }\n        p_Var7->_M_left = p_Var1;\n        p_Var5 = p_Var3->_M_left;\n        p_Var1->_M_parent = p_Var7;\n        p_Var4 = p_Var5->_M_left;\n        p_Var5->_M_color = p_Var3->_M_color;\n        p_Var3->_M_color = _S_black;\n        if (p_Var4 != (_Base_ptr)0x0) goto LAB_002dc83b;\n      }" if (parenthesized_expression "((p_Var7 == (_Base_ptr)0x0) || (p_Var7->_M_color == _S_black))" ( (binary_expression "(p_Var7 == (_Base_ptr)0x0) || (p_Var7->_M_color == _S_black)" (parenthesized_expression "(p_Var7 == (_Base_ptr)0x0)" ( (binary_expression "p_Var7 == (_Base_ptr)0x0" identifier == (cast_expression "(_Base_ptr)0x0" ( (type_descriptor "_Base_ptr" type_identifier) ) number_literal)) )) || (parenthesized_expression "(p_Var7->_M_color == _S_black)" ( (binary_expression "p_Var7->_M_color == _S_black" (field_expression "p_Var7->_M_color" identifier -> field_identifier) == identifier) ))) )) (compound_statement "{\n        p_Var4 = p_Var1->_M_left;\n        if ((p_Var4 == (_Base_ptr)0x0) || (p_Var4->_M_color == _S_black)) goto LAB_002dc5e8;\nLAB_002dc82b:\n        p_Var5 = p_Var3->_M_left;\n        p_Var1->_M_color = p_Var3->_M_color;\n        p_Var3->_M_color = _S_black;\nLAB_002dc83b:\n        p_Var4->_M_color = _S_black;\n      }" { (expression_statement "p_Var4 = p_Var1->_M_left;" (assignment_expression "p_Var4 = p_Var1->_M_left" identifier = (field_expression "p_Var1->_M_left" identifier -> field_identifier)) ;) (if_statement "if ((p_Var4 == (_Base_ptr)0x0) || (p_Var4->_M_color == _S_black)) goto LAB_002dc5e8;" if (parenthesized_expression "((p_Var4 == (_Base_ptr)0x0) || (p_Var4->_M_color == _S_black))" ( (binary_expression "(p_Var4 == (_Base_ptr)0x0) || (p_Var4->_M_color == _S_black)" (parenthesized_expression "(p_Var4 == (_Base_ptr)0x0)" ( (binary_expression "p_Var4 == (_Base_ptr)0x0" identifier == (cast_expression "(_Base_ptr)0x0" ( (type_descriptor "_Base_ptr" type_identifier) ) number_literal)) )) || (parenthesized_expression "(p_Var4->_M_color == _S_black)" ( (binary_expression "p_Var4->_M_color == _S_black" (field_expression "p_Var4->_M_color" identifier -> field_identifier) == identifier) ))) )) (goto_statement "goto LAB_002dc5e8;" goto statement_identifier ;)) (labeled_statement "LAB_002dc82b:\n        p_Var5 = p_Var3->_M_left;" statement_identifier : (expression_statement "p_Var5 = p_Var3->_M_left;" (assignment_expression "p_Var5 = p_Var3->_M_left" identifier = (field_expression "p_Var3->_M_left" identifier -> field_identifier)) ;)) (expression_statement "p_Var1->_M_color = p_Var3->_M_color;" (assignment_expression "p_Var1->_M_color = p_Var3->_M_color" (field_expression "p_Var1->_M_color" identifier -> field_identifier) = (field_expression "p_Var3->_M_color" identifier -> field_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) ;) (labeled_statement "LAB_002dc83b:\n        p_Var4->_M_color = _S_black;" statement_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) ;)) }) (else_clause "else {\n        p_Var4 = p_Var1->_M_left;\n        if ((p_Var4 != (_Base_ptr)0x0) && (p_Var4->_M_color != _S_black)) goto LAB_002dc82b;\n        p_Var4 = p_Var7->_M_left;\n        p_Var7->_M_color = _S_black;\n        p_Var1->_M_color = _S_red;\n        p_Var1->_M_right = p_Var4;\n        if (p_Var4 != (_Base_ptr)0x0) {\n          p_Var4->_M_parent = p_Var1;\n        }\n        p_Var4 = p_Var1->_M_parent;\n        p_Var7->_M_parent = p_Var4;\n        if (p_Var1 == param_2->_M_parent) {\n          param_2->_M_parent = p_Var7;\n        }\n        else if (p_Var1 == p_Var4->_M_left) {\n          p_Var4->_M_left = p_Var7;\n        }\n        else {\n          p_Var4->_M_right = p_Var7;\n        }\n        p_Var7->_M_left = p_Var1;\n        p_Var5 = p_Var3->_M_left;\n        p_Var1->_M_parent = p_Var7;\n        p_Var4 = p_Var5->_M_left;\n        p_Var5->_M_color = p_Var3->_M_color;\n        p_Var3->_M_color = _S_black;\n        if (p_Var4 != (_Base_ptr)0x0) goto LAB_002dc83b;\n      }" else (compound_statement "{\n        p_Var4 = p_Var1->_M_left;\n        if ((p_Var4 != (_Base_ptr)0x0) && (p_Var4->_M_color != _S_black)) goto LAB_002dc82b;\n        p_Var4 = p_Var7->_M_left;\n        p_Var7->_M_color = _S_black;\n        p_Var1->_M_color = _S_red;\n        p_Var1->_M_right = p_Var4;\n        if (p_Var4 != (_Base_ptr)0x0) {\n          p_Var4->_M_parent = p_Var1;\n        }\n        p_Var4 = p_Var1->_M_parent;\n        p_Var7->_M_parent = p_Var4;\n        if (p_Var1 == param_2->_M_parent) {\n          param_2->_M_parent = p_Var7;\n        }\n        else if (p_Var1 == p_Var4->_M_left) {\n          p_Var4->_M_left = p_Var7;\n        }\n        else {\n          p_Var4->_M_right = p_Var7;\n        }\n        p_Var7->_M_left = p_Var1;\n        p_Var5 = p_Var3->_M_left;\n        p_Var1->_M_parent = p_Var7;\n        p_Var4 = p_Var5->_M_left;\n        p_Var5->_M_color = p_Var3->_M_color;\n        p_Var3->_M_color = _S_black;\n        if (p_Var4 != (_Base_ptr)0x0) goto LAB_002dc83b;\n      }" { (expression_statement "p_Var4 = p_Var1->_M_left;" (assignment_expression "p_Var4 = p_Var1->_M_left" identifier = (field_expression "p_Var1->_M_left" identifier -> field_identifier)) ;) (if_statement "if ((p_Var4 != (_Base_ptr)0x0) && (p_Var4->_M_color != _S_black)) goto LAB_002dc82b;" if (parenthesized_expression "((p_Var4 != (_Base_ptr)0x0) && (p_Var4->_M_color != _S_black))" ( (binary_expression "(p_Var4 != (_Base_ptr)0x0) && (p_Var4->_M_color != _S_black)" (parenthesized_expression "(p_Var4 != (_Base_ptr)0x0)" ( (binary_expression "p_Var4 != (_Base_ptr)0x0" identifier != (cast_expression "(_Base_ptr)0x0" ( (type_descriptor "_Base_ptr" type_identifier) ) number_literal)) )) && (parenthesized_expression "(p_Var4->_M_color != _S_black)" ( (binary_expression "p_Var4->_M_color != _S_black" (field_expression "p_Var4->_M_color" identifier -> field_identifier) != identifier) ))) )) (goto_statement "goto LAB_002dc82b;" goto statement_identifier ;)) (expression_statement "p_Var4 = p_Var7->_M_left;" (assignment_expression "p_Var4 = p_Var7->_M_left" identifier = (field_expression "p_Var7->_M_left" identifier -> field_identifier)) ;) (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_Var1->_M_color = _S_red;" (assignment_expression "p_Var1->_M_color = _S_red" (field_expression "p_Var1->_M_color" identifier -> field_identifier) = identifier) ;) (expression_statement "p_Var1->_M_right = p_Var4;" (assignment_expression "p_Var1->_M_right = p_Var4" (field_expression "p_Var1->_M_right" identifier -> field_identifier) = identifier) ;) (if_statement "if (p_Var4 != (_Base_ptr)0x0) {\n          p_Var4->_M_parent = p_Var1;\n        }" if (parenthesized_expression "(p_Var4 != (_Base_ptr)0x0)" ( (binary_expression "p_Var4 != (_Base_ptr)0x0" identifier != (cast_expression "(_Base_ptr)0x0" ( (type_descriptor "_Base_ptr" type_identifier) ) number_literal)) )) (compound_statement "{\n          p_Var4->_M_parent = p_Var1;\n        }" { (expression_statement "p_Var4->_M_parent = p_Var1;" (assignment_expression "p_Var4->_M_parent = p_Var1" (field_expression "p_Var4->_M_parent" identifier -> field_identifier) = identifier) ;) })) (expression_statement "p_Var4 = p_Var1->_M_parent;" (assignment_expression "p_Var4 = p_Var1->_M_parent" identifier = (field_expression "p_Var1->_M_parent" identifier -> field_identifier)) ;) (expression_statement "p_Var7->_M_parent = p_Var4;" (assignment_expression "p_Var7->_M_parent = p_Var4" (field_expression "p_Var7->_M_parent" identifier -> field_identifier) = identifier) ;) (if_statement "if (p_Var1 == param_2->_M_parent) {\n          param_2->_M_parent = p_Var7;\n        }\n        else if (p_Var1 == p_Var4->_M_left) {\n          p_Var4->_M_left = p_Var7;\n        }\n        else {\n          p_Var4->_M_right = p_Var7;\n        }" if (parenthesized_expression "(p_Var1 == param_2->_M_parent)" ( (binary_expression "p_Var1 == param_2->_M_parent" identifier == (field_expression "param_2->_M_parent" identifier -> field_identifier)) )) (compound_statement "{\n          param_2->_M_parent = p_Var7;\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) ;) }) (else_clause "else if (p_Var1 == p_Var4->_M_left) {\n          p_Var4->_M_left = p_Var7;\n        }\n        else {\n          p_Var4->_M_right = p_Var7;\n        }" else (if_statement "if (p_Var1 == p_Var4->_M_left) {\n          p_Var4->_M_left = p_Var7;\n        }\n        else {\n          p_Var4->_M_right = p_Var7;\n        }" if (parenthesized_expression "(p_Var1 == p_Var4->_M_left)" ( (binary_expression "p_Var1 == p_Var4->_M_left" identifier == (field_expression "p_Var4->_M_left" identifier -> field_identifier)) )) (compound_statement "{\n          p_Var4->_M_left = p_Var7;\n        }" { (expression_statement "p_Var4->_M_left = p_Var7;" (assignment_expression "p_Var4->_M_left = p_Var7" (field_expression "p_Var4->_M_left" identifier -> field_identifier) = identifier) ;) }) (else_clause "else {\n          p_Var4->_M_right = p_Var7;\n        }" else (compound_statement "{\n          p_Var4->_M_right = p_Var7;\n        }" { (expression_statement "p_Var4->_M_right = p_Var7;" (assignment_expression "p_Var4->_M_right = p_Var7" (field_expression "p_Var4->_M_right" identifier -> field_identifier) = identifier) ;) }))))) (expression_statement "p_Var7->_M_left = p_Var1;" (assignment_expression "p_Var7->_M_left = p_Var1" (field_expression "p_Var7->_M_left" identifier -> field_identifier) = identifier) ;) (expression_statement "p_Var5 = p_Var3->_M_left;" (assignment_expression "p_Var5 = p_Var3->_M_left" identifier = (field_expression "p_Var3->_M_left" identifier -> field_identifier)) ;) (expression_statement "p_Var1->_M_parent = p_Var7;" (assignment_expression "p_Var1->_M_parent = p_Var7" (field_expression "p_Var1->_M_parent" identifier -> field_identifier) = identifier) ;) (expression_statement "p_Var4 = p_Var5->_M_left;" (assignment_expression "p_Var4 = p_Var5->_M_left" identifier = (field_expression "p_Var5->_M_left" identifier -> field_identifier)) ;) (expression_statement "p_Var5->_M_color = p_Var3->_M_color;" (assignment_expression "p_Var5->_M_color = p_Var3->_M_color" (field_expression "p_Var5->_M_color" identifier -> field_identifier) = (field_expression "p_Var3->_M_color" identifier -> field_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) ;) (if_statement "if (p_Var4 != (_Base_ptr)0x0) goto LAB_002dc83b;" if (parenthesized_expression "(p_Var4 != (_Base_ptr)0x0)" ( (binary_expression "p_Var4 != (_Base_ptr)0x0" identifier != (cast_expression "(_Base_ptr)0x0" ( (type_descriptor "_Base_ptr" type_identifier) ) number_literal)) )) (goto_statement "goto LAB_002dc83b;" goto statement_identifier ;)) }))) (expression_statement "p_Var4 = p_Var5->_M_right;" (assignment_expression "p_Var4 = p_Var5->_M_right" identifier = (field_expression "p_Var5->_M_right" identifier -> field_identifier)) ;) (expression_statement "p_Var3->_M_left = p_Var4;" (assignment_expression "p_Var3->_M_left = p_Var4" (field_expression "p_Var3->_M_left" identifier -> field_identifier) = identifier) ;) (if_statement "if (p_Var4 != (_Base_ptr)0x0) {\n        p_Var4->_M_parent = p_Var3;\n      }" if (parenthesized_expression "(p_Var4 != (_Base_ptr)0x0)" ( (binary_expression "p_Var4 != (_Base_ptr)0x0" identifier != (cast_expression "(_Base_ptr)0x0" ( (type_descriptor "_Base_ptr" type_identifier) ) number_literal)) )) (compound_statement "{\n        p_Var4->_M_parent = p_Var3;\n      }" { (expression_statement "p_Var4->_M_parent = p_Var3;" (assignment_expression "p_Var4->_M_parent = p_Var3" (field_expression "p_Var4->_M_parent" identifier -> field_identifier) = identifier) ;) })) (expression_statement "p_Var4 = p_Var3->_M_parent;" (assignment_expression "p_Var4 = p_Var3->_M_parent" identifier = (field_expression "p_Var3->_M_parent" identifier -> field_identifier)) ;) (expression_statement "p_Var5->_M_parent = p_Var4;" (assignment_expression "p_Var5->_M_parent = p_Var4" (field_expression "p_Var5->_M_parent" identifier -> field_identifier) = identifier) ;) (if_statement "if (p_Var3 == param_2->_M_parent) {\n        param_2->_M_parent = p_Var5;\n      }\n      else if (p_Var3 == p_Var4->_M_right) {\n        p_Var4->_M_right = p_Var5;\n      }\n      else {\n        p_Var4->_M_left = p_Var5;\n      }" if (parenthesized_expression "(p_Var3 == param_2->_M_parent)" ( (binary_expression "p_Var3 == param_2->_M_parent" identifier == (field_expression "param_2->_M_parent" identifier -> field_identifier)) )) (compound_statement "{\n        param_2->_M_parent = p_Var5;\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) ;) }) (else_clause "else if (p_Var3 == p_Var4->_M_right) {\n        p_Var4->_M_right = p_Var5;\n      }\n      else {\n        p_Var4->_M_left = p_Var5;\n      }" else (if_statement "if (p_Var3 == p_Var4->_M_right) {\n        p_Var4->_M_right = p_Var5;\n      }\n      else {\n        p_Var4->_M_left = p_Var5;\n      }" if (parenthesized_expression "(p_Var3 == p_Var4->_M_right)" ( (binary_expression "p_Var3 == p_Var4->_M_right" identifier == (field_expression "p_Var4->_M_right" identifier -> field_identifier)) )) (compound_statement "{\n        p_Var4->_M_right = p_Var5;\n      }" { (expression_statement "p_Var4->_M_right = p_Var5;" (assignment_expression "p_Var4->_M_right = p_Var5" (field_expression "p_Var4->_M_right" identifier -> field_identifier) = identifier) ;) }) (else_clause "else {\n        p_Var4->_M_left = p_Var5;\n      }" else (compound_statement "{\n        p_Var4->_M_left = p_Var5;\n      }" { (expression_statement "p_Var4->_M_left = p_Var5;" (assignment_expression "p_Var4->_M_left = p_Var5" (field_expression "p_Var4->_M_left" identifier -> field_identifier) = identifier) ;) }))))) (expression_statement "p_Var5->_M_right = p_Var3;" (assignment_expression "p_Var5->_M_right = p_Var3" (field_expression "p_Var5->_M_right" identifier -> field_identifier) = identifier) ;) (expression_statement "p_Var3->_M_parent = p_Var5;" (assignment_expression "p_Var3->_M_parent = p_Var5" (field_expression "p_Var3->_M_parent" identifier -> field_identifier) = identifier) ;) (goto_statement "goto LAB_002dc6f0;" goto statement_identifier ;) })) (expression_statement "p_Var4 = p_Var3->_M_right;" (assignment_expression "p_Var4 = p_Var3->_M_right" identifier = (field_expression "p_Var3->_M_right" identifier -> field_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)) ;) (expression_statement "p_Var1 = p_Var4;" (assignment_expression "p_Var1 = p_Var4" identifier = identifier) ;) (if_statement "if (p_Var4->_M_color == _S_red) {\n      p_Var4->_M_color = _S_black;\n      p_Var3->_M_color = _S_red;\n      p_Var3->_M_right = p_Var7;\n      if (p_Var7 != (_Base_ptr)0x0) {\n        p_Var7->_M_parent = p_Var3;\n      }\n      p_Var1 = p_Var3->_M_parent;\n      p_Var4->_M_parent = p_Var1;\n      if (p_Var3 == param_2->_M_parent) {\n        param_2->_M_parent = p_Var4;\n        p_Var1 = p_Var3->_M_right;\n      }\n      else if (p_Var3 == p_Var1->_M_left) {\n        p_Var1->_M_left = p_Var4;\n        p_Var1 = p_Var7;\n      }\n      else {\n        p_Var1->_M_right = p_Var4;\n        p_Var1 = p_Var3->_M_right;\n      }\n      p_Var4->_M_left = p_Var3;\n      p_Var7 = p_Var1->_M_left;\n      p_Var3->_M_parent = p_Var4;\n    }" if (parenthesized_expression "(p_Var4->_M_color == _S_red)" ( (binary_expression "p_Var4->_M_color == _S_red" (field_expression "p_Var4->_M_color" identifier -> field_identifier) == identifier) )) (compound_statement "{\n      p_Var4->_M_color = _S_black;\n      p_Var3->_M_color = _S_red;\n      p_Var3->_M_right = p_Var7;\n      if (p_Var7 != (_Base_ptr)0x0) {\n        p_Var7->_M_parent = p_Var3;\n      }\n      p_Var1 = p_Var3->_M_parent;\n      p_Var4->_M_parent = p_Var1;\n      if (p_Var3 == param_2->_M_parent) {\n        param_2->_M_parent = p_Var4;\n        p_Var1 = p_Var3->_M_right;\n      }\n      else if (p_Var3 == p_Var1->_M_left) {\n        p_Var1->_M_left = p_Var4;\n        p_Var1 = p_Var7;\n      }\n      else {\n        p_Var1->_M_right = p_Var4;\n        p_Var1 = p_Var3->_M_right;\n      }\n      p_Var4->_M_left = p_Var3;\n      p_Var7 = p_Var1->_M_left;\n      p_Var3->_M_parent = p_Var4;\n    }" { (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) ;) (expression_statement "p_Var3->_M_color = _S_red;" (assignment_expression "p_Var3->_M_color = _S_red" (field_expression "p_Var3->_M_color" identifier -> field_identifier) = identifier) ;) (expression_statement "p_Var3->_M_right = p_Var7;" (assignment_expression "p_Var3->_M_right = p_Var7" (field_expression "p_Var3->_M_right" identifier -> field_identifier) = identifier) ;) (if_statement "if (p_Var7 != (_Base_ptr)0x0) {\n        p_Var7->_M_parent = p_Var3;\n      }" if (parenthesized_expression "(p_Var7 != (_Base_ptr)0x0)" ( (binary_expression "p_Var7 != (_Base_ptr)0x0" identifier != (cast_expression "(_Base_ptr)0x0" ( (type_descriptor "_Base_ptr" type_identifier) ) number_literal)) )) (compound_statement "{\n        p_Var7->_M_parent = p_Var3;\n      }" { (expression_statement "p_Var7->_M_parent = p_Var3;" (assignment_expression "p_Var7->_M_parent = p_Var3" (field_expression "p_Var7->_M_parent" identifier -> field_identifier) = identifier) ;) })) (expression_statement "p_Var1 = p_Var3->_M_parent;" (assignment_expression "p_Var1 = p_Var3->_M_parent" identifier = (field_expression "p_Var3->_M_parent" identifier -> field_identifier)) ;) (expression_statement "p_Var4->_M_parent = p_Var1;" (assignment_expression "p_Var4->_M_parent = p_Var1" (field_expression "p_Var4->_M_parent" identifier -> field_identifier) = identifier) ;) (if_statement "if (p_Var3 == param_2->_M_parent) {\n        param_2->_M_parent = p_Var4;\n        p_Var1 = p_Var3->_M_right;\n      }\n      else if (p_Var3 == p_Var1->_M_left) {\n        p_Var1->_M_left = p_Var4;\n        p_Var1 = p_Var7;\n      }\n      else {\n        p_Var1->_M_right = p_Var4;\n        p_Var1 = p_Var3->_M_right;\n      }" if (parenthesized_expression "(p_Var3 == param_2->_M_parent)" ( (binary_expression "p_Var3 == param_2->_M_parent" identifier == (field_expression "param_2->_M_parent" identifier -> field_identifier)) )) (compound_statement "{\n        param_2->_M_parent = p_Var4;\n        p_Var1 = p_Var3->_M_right;\n      }" { (expression_statement "param_2->_M_parent = p_Var4;" (assignment_expression "param_2->_M_parent = p_Var4" (field_expression "param_2->_M_parent" identifier -> field_identifier) = identifier) ;) (expression_statement "p_Var1 = p_Var3->_M_right;" (assignment_expression "p_Var1 = p_Var3->_M_right" identifier = (field_expression "p_Var3->_M_right" identifier -> field_identifier)) ;) }) (else_clause "else if (p_Var3 == p_Var1->_M_left) {\n        p_Var1->_M_left = p_Var4;\n        p_Var1 = p_Var7;\n      }\n      else {\n        p_Var1->_M_right = p_Var4;\n        p_Var1 = p_Var3->_M_right;\n      }" else (if_statement "if (p_Var3 == p_Var1->_M_left) {\n        p_Var1->_M_left = p_Var4;\n        p_Var1 = p_Var7;\n      }\n      else {\n        p_Var1->_M_right = p_Var4;\n        p_Var1 = p_Var3->_M_right;\n      }" if (parenthesized_expression "(p_Var3 == p_Var1->_M_left)" ( (binary_expression "p_Var3 == p_Var1->_M_left" identifier == (field_expression "p_Var1->_M_left" identifier -> field_identifier)) )) (compound_statement "{\n        p_Var1->_M_left = p_Var4;\n        p_Var1 = p_Var7;\n      }" { (expression_statement "p_Var1->_M_left = p_Var4;" (assignment_expression "p_Var1->_M_left = p_Var4" (field_expression "p_Var1->_M_left" identifier -> field_identifier) = identifier) ;) (expression_statement "p_Var1 = p_Var7;" (assignment_expression "p_Var1 = p_Var7" identifier = identifier) ;) }) (else_clause "else {\n        p_Var1->_M_right = p_Var4;\n        p_Var1 = p_Var3->_M_right;\n      }" else (compound_statement "{\n        p_Var1->_M_right = p_Var4;\n        p_Var1 = p_Var3->_M_right;\n      }" { (expression_statement "p_Var1->_M_right = p_Var4;" (assignment_expression "p_Var1->_M_right = p_Var4" (field_expression "p_Var1->_M_right" identifier -> field_identifier) = identifier) ;) (expression_statement "p_Var1 = p_Var3->_M_right;" (assignment_expression "p_Var1 = p_Var3->_M_right" identifier = (field_expression "p_Var3->_M_right" identifier -> field_identifier)) ;) }))))) (expression_statement "p_Var4->_M_left = p_Var3;" (assignment_expression "p_Var4->_M_left = p_Var3" (field_expression "p_Var4->_M_left" identifier -> field_identifier) = identifier) ;) (expression_statement "p_Var7 = p_Var1->_M_left;" (assignment_expression "p_Var7 = p_Var1->_M_left" identifier = (field_expression "p_Var1->_M_left" identifier -> field_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 ((p_Var7 != (_Base_ptr)0x0) && (p_Var7->_M_color != _S_black)) {\n      p_Var4 = p_Var1->_M_right;\n      if ((p_Var4 != (_Base_ptr)0x0) && (p_Var4->_M_color != _S_black)) goto LAB_002dc69f;\n      p_Var4 = p_Var7->_M_right;\n      p_Var7->_M_color = _S_black;\n      p_Var1->_M_color = _S_red;\n      p_Var1->_M_left = p_Var4;\n      if (p_Var4 != (_Base_ptr)0x0) {\n        p_Var4->_M_parent = p_Var1;\n      }\n      p_Var4 = p_Var1->_M_parent;\n      p_Var7->_M_parent = p_Var4;\n      if (p_Var1 == param_2->_M_parent) {\n        param_2->_M_parent = p_Var7;\n      }\n      else if (p_Var1 == p_Var4->_M_right) {\n        p_Var4->_M_right = p_Var7;\n      }\n      else {\n        p_Var4->_M_left = p_Var7;\n      }\n      p_Var7->_M_right = p_Var1;\n      p_Var1->_M_parent = p_Var7;\n      p_Var7 = p_Var3->_M_right;\n      p_Var4 = p_Var7->_M_right;\n      p_Var7->_M_color = p_Var3->_M_color;\n      p_Var3->_M_color = _S_black;\n      if (p_Var4 != (_Base_ptr)0x0) goto LAB_002dc6af;\nLAB_002dc6b5:\n      p_Var4 = p_Var7->_M_left;\n      p_Var3->_M_right = p_Var4;\n      if (p_Var4 != (_Base_ptr)0x0) {\n        p_Var4->_M_parent = p_Var3;\n      }\n      p_Var4 = p_Var3->_M_parent;\n      p_Var7->_M_parent = p_Var4;\n      if (p_Var3 == param_2->_M_parent) {\n        param_2->_M_parent = p_Var7;\n      }\n      else if (p_Var3 == p_Var4->_M_left) {\n        p_Var4->_M_left = p_Var7;\n      }\n      else {\n        p_Var4->_M_right = p_Var7;\n      }\n      p_Var7->_M_left = p_Var3;\n      p_Var3->_M_parent = p_Var7;\n      goto LAB_002dc6f0;\n    }" if (parenthesized_expression "((p_Var7 != (_Base_ptr)0x0) && (p_Var7->_M_color != _S_black))" ( (binary_expression "(p_Var7 != (_Base_ptr)0x0) && (p_Var7->_M_color != _S_black)" (parenthesized_expression "(p_Var7 != (_Base_ptr)0x0)" ( (binary_expression "p_Var7 != (_Base_ptr)0x0" identifier != (cast_expression "(_Base_ptr)0x0" ( (type_descriptor "_Base_ptr" type_identifier) ) number_literal)) )) && (parenthesized_expression "(p_Var7->_M_color != _S_black)" ( (binary_expression "p_Var7->_M_color != _S_black" (field_expression "p_Var7->_M_color" identifier -> field_identifier) != identifier) ))) )) (compound_statement "{\n      p_Var4 = p_Var1->_M_right;\n      if ((p_Var4 != (_Base_ptr)0x0) && (p_Var4->_M_color != _S_black)) goto LAB_002dc69f;\n      p_Var4 = p_Var7->_M_right;\n      p_Var7->_M_color = _S_black;\n      p_Var1->_M_color = _S_red;\n      p_Var1->_M_left = p_Var4;\n      if (p_Var4 != (_Base_ptr)0x0) {\n        p_Var4->_M_parent = p_Var1;\n      }\n      p_Var4 = p_Var1->_M_parent;\n      p_Var7->_M_parent = p_Var4;\n      if (p_Var1 == param_2->_M_parent) {\n        param_2->_M_parent = p_Var7;\n      }\n      else if (p_Var1 == p_Var4->_M_right) {\n        p_Var4->_M_right = p_Var7;\n      }\n      else {\n        p_Var4->_M_left = p_Var7;\n      }\n      p_Var7->_M_right = p_Var1;\n      p_Var1->_M_parent = p_Var7;\n      p_Var7 = p_Var3->_M_right;\n      p_Var4 = p_Var7->_M_right;\n      p_Var7->_M_color = p_Var3->_M_color;\n      p_Var3->_M_color = _S_black;\n      if (p_Var4 != (_Base_ptr)0x0) goto LAB_002dc6af;\nLAB_002dc6b5:\n      p_Var4 = p_Var7->_M_left;\n      p_Var3->_M_right = p_Var4;\n      if (p_Var4 != (_Base_ptr)0x0) {\n        p_Var4->_M_parent = p_Var3;\n      }\n      p_Var4 = p_Var3->_M_parent;\n      p_Var7->_M_parent = p_Var4;\n      if (p_Var3 == param_2->_M_parent) {\n        param_2->_M_parent = p_Var7;\n      }\n      else if (p_Var3 == p_Var4->_M_left) {\n        p_Var4->_M_left = p_Var7;\n      }\n      else {\n        p_Var4->_M_right = p_Var7;\n      }\n      p_Var7->_M_left = p_Var3;\n      p_Var3->_M_parent = p_Var7;\n      goto LAB_002dc6f0;\n    }" { (expression_statement "p_Var4 = p_Var1->_M_right;" (assignment_expression "p_Var4 = p_Var1->_M_right" identifier = (field_expression "p_Var1->_M_right" identifier -> field_identifier)) ;) (if_statement "if ((p_Var4 != (_Base_ptr)0x0) && (p_Var4->_M_color != _S_black)) goto LAB_002dc69f;" if (parenthesized_expression "((p_Var4 != (_Base_ptr)0x0) && (p_Var4->_M_color != _S_black))" ( (binary_expression "(p_Var4 != (_Base_ptr)0x0) && (p_Var4->_M_color != _S_black)" (parenthesized_expression "(p_Var4 != (_Base_ptr)0x0)" ( (binary_expression "p_Var4 != (_Base_ptr)0x0" identifier != (cast_expression "(_Base_ptr)0x0" ( (type_descriptor "_Base_ptr" type_identifier) ) number_literal)) )) && (parenthesized_expression "(p_Var4->_M_color != _S_black)" ( (binary_expression "p_Var4->_M_color != _S_black" (field_expression "p_Var4->_M_color" identifier -> field_identifier) != identifier) ))) )) (goto_statement "goto LAB_002dc69f;" goto statement_identifier ;)) (expression_statement "p_Var4 = p_Var7->_M_right;" (assignment_expression "p_Var4 = p_Var7->_M_right" identifier = (field_expression "p_Var7->_M_right" identifier -> field_identifier)) ;) (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_Var1->_M_color = _S_red;" (assignment_expression "p_Var1->_M_color = _S_red" (field_expression "p_Var1->_M_color" identifier -> field_identifier) = identifier) ;) (expression_statement "p_Var1->_M_left = p_Var4;" (assignment_expression "p_Var1->_M_left = p_Var4" (field_expression "p_Var1->_M_left" identifier -> field_identifier) = identifier) ;) (if_statement "if (p_Var4 != (_Base_ptr)0x0) {\n        p_Var4->_M_parent = p_Var1;\n      }" if (parenthesized_expression "(p_Var4 != (_Base_ptr)0x0)" ( (binary_expression "p_Var4 != (_Base_ptr)0x0" identifier != (cast_expression "(_Base_ptr)0x0" ( (type_descriptor "_Base_ptr" type_identifier) ) number_literal)) )) (compound_statement "{\n        p_Var4->_M_parent = p_Var1;\n      }" { (expression_statement "p_Var4->_M_parent = p_Var1;" (assignment_expression "p_Var4->_M_parent = p_Var1" (field_expression "p_Var4->_M_parent" identifier -> field_identifier) = identifier) ;) })) (expression_statement "p_Var4 = p_Var1->_M_parent;" (assignment_expression "p_Var4 = p_Var1->_M_parent" identifier = (field_expression "p_Var1->_M_parent" identifier -> field_identifier)) ;) (expression_statement "p_Var7->_M_parent = p_Var4;" (assignment_expression "p_Var7->_M_parent = p_Var4" (field_expression "p_Var7->_M_parent" identifier -> field_identifier) = identifier) ;) (if_statement "if (p_Var1 == param_2->_M_parent) {\n        param_2->_M_parent = p_Var7;\n      }\n      else if (p_Var1 == p_Var4->_M_right) {\n        p_Var4->_M_right = p_Var7;\n      }\n      else {\n        p_Var4->_M_left = p_Var7;\n      }" if (parenthesized_expression "(p_Var1 == param_2->_M_parent)" ( (binary_expression "p_Var1 == param_2->_M_parent" identifier == (field_expression "param_2->_M_parent" identifier -> field_identifier)) )) (compound_statement "{\n        param_2->_M_parent = p_Var7;\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) ;) }) (else_clause "else if (p_Var1 == p_Var4->_M_right) {\n        p_Var4->_M_right = p_Var7;\n      }\n      else {\n        p_Var4->_M_left = p_Var7;\n      }" else (if_statement "if (p_Var1 == p_Var4->_M_right) {\n        p_Var4->_M_right = p_Var7;\n      }\n      else {\n        p_Var4->_M_left = p_Var7;\n      }" if (parenthesized_expression "(p_Var1 == p_Var4->_M_right)" ( (binary_expression "p_Var1 == p_Var4->_M_right" identifier == (field_expression "p_Var4->_M_right" identifier -> field_identifier)) )) (compound_statement "{\n        p_Var4->_M_right = p_Var7;\n      }" { (expression_statement "p_Var4->_M_right = p_Var7;" (assignment_expression "p_Var4->_M_right = p_Var7" (field_expression "p_Var4->_M_right" identifier -> field_identifier) = identifier) ;) }) (else_clause "else {\n        p_Var4->_M_left = p_Var7;\n      }" else (compound_statement "{\n        p_Var4->_M_left = p_Var7;\n      }" { (expression_statement "p_Var4->_M_left = p_Var7;" (assignment_expression "p_Var4->_M_left = p_Var7" (field_expression "p_Var4->_M_left" identifier -> field_identifier) = identifier) ;) }))))) (expression_statement "p_Var7->_M_right = p_Var1;" (assignment_expression "p_Var7->_M_right = p_Var1" (field_expression "p_Var7->_M_right" identifier -> field_identifier) = identifier) ;) (expression_statement "p_Var1->_M_parent = p_Var7;" (assignment_expression "p_Var1->_M_parent = p_Var7" (field_expression "p_Var1->_M_parent" identifier -> field_identifier) = identifier) ;) (expression_statement "p_Var7 = p_Var3->_M_right;" (assignment_expression "p_Var7 = p_Var3->_M_right" identifier = (field_expression "p_Var3->_M_right" identifier -> field_identifier)) ;) (expression_statement "p_Var4 = p_Var7->_M_right;" (assignment_expression "p_Var4 = p_Var7->_M_right" identifier = (field_expression "p_Var7->_M_right" identifier -> field_identifier)) ;) (expression_statement "p_Var7->_M_color = p_Var3->_M_color;" (assignment_expression "p_Var7->_M_color = p_Var3->_M_color" (field_expression "p_Var7->_M_color" identifier -> field_identifier) = (field_expression "p_Var3->_M_color" identifier -> field_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) ;) (if_statement "if (p_Var4 != (_Base_ptr)0x0) goto LAB_002dc6af;" if (parenthesized_expression "(p_Var4 != (_Base_ptr)0x0)" ( (binary_expression "p_Var4 != (_Base_ptr)0x0" identifier != (cast_expression "(_Base_ptr)0x0" ( (type_descriptor "_Base_ptr" type_identifier) ) number_literal)) )) (goto_statement "goto LAB_002dc6af;" goto statement_identifier ;)) (labeled_statement "LAB_002dc6b5:\n      p_Var4 = p_Var7->_M_left;" statement_identifier : (expression_statement "p_Var4 = p_Var7->_M_left;" (assignment_expression "p_Var4 = p_Var7->_M_left" identifier = (field_expression "p_Var7->_M_left" identifier -> field_identifier)) ;)) (expression_statement "p_Var3->_M_right = p_Var4;" (assignment_expression "p_Var3->_M_right = p_Var4" (field_expression "p_Var3->_M_right" identifier -> field_identifier) = identifier) ;) (if_statement "if (p_Var4 != (_Base_ptr)0x0) {\n        p_Var4->_M_parent = p_Var3;\n      }" if (parenthesized_expression "(p_Var4 != (_Base_ptr)0x0)" ( (binary_expression "p_Var4 != (_Base_ptr)0x0" identifier != (cast_expression "(_Base_ptr)0x0" ( (type_descriptor "_Base_ptr" type_identifier) ) number_literal)) )) (compound_statement "{\n        p_Var4->_M_parent = p_Var3;\n      }" { (expression_statement "p_Var4->_M_parent = p_Var3;" (assignment_expression "p_Var4->_M_parent = p_Var3" (field_expression "p_Var4->_M_parent" identifier -> field_identifier) = identifier) ;) })) (expression_statement "p_Var4 = p_Var3->_M_parent;" (assignment_expression "p_Var4 = p_Var3->_M_parent" identifier = (field_expression "p_Var3->_M_parent" identifier -> field_identifier)) ;) (expression_statement "p_Var7->_M_parent = p_Var4;" (assignment_expression "p_Var7->_M_parent = p_Var4" (field_expression "p_Var7->_M_parent" identifier -> field_identifier) = identifier) ;) (if_statement "if (p_Var3 == param_2->_M_parent) {\n        param_2->_M_parent = p_Var7;\n      }\n      else if (p_Var3 == p_Var4->_M_left) {\n        p_Var4->_M_left = p_Var7;\n      }\n      else {\n        p_Var4->_M_right = p_Var7;\n      }" if (parenthesized_expression "(p_Var3 == param_2->_M_parent)" ( (binary_expression "p_Var3 == param_2->_M_parent" identifier == (field_expression "param_2->_M_parent" identifier -> field_identifier)) )) (compound_statement "{\n        param_2->_M_parent = p_Var7;\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) ;) }) (else_clause "else if (p_Var3 == p_Var4->_M_left) {\n        p_Var4->_M_left = p_Var7;\n      }\n      else {\n        p_Var4->_M_right = p_Var7;\n      }" else (if_statement "if (p_Var3 == p_Var4->_M_left) {\n        p_Var4->_M_left = p_Var7;\n      }\n      else {\n        p_Var4->_M_right = p_Var7;\n      }" if (parenthesized_expression "(p_Var3 == p_Var4->_M_left)" ( (binary_expression "p_Var3 == p_Var4->_M_left" identifier == (field_expression "p_Var4->_M_left" identifier -> field_identifier)) )) (compound_statement "{\n        p_Var4->_M_left = p_Var7;\n      }" { (expression_statement "p_Var4->_M_left = p_Var7;" (assignment_expression "p_Var4->_M_left = p_Var7" (field_expression "p_Var4->_M_left" identifier -> field_identifier) = identifier) ;) }) (else_clause "else {\n        p_Var4->_M_right = p_Var7;\n      }" else (compound_statement "{\n        p_Var4->_M_right = p_Var7;\n      }" { (expression_statement "p_Var4->_M_right = p_Var7;" (assignment_expression "p_Var4->_M_right = p_Var7" (field_expression "p_Var4->_M_right" identifier -> field_identifier) = identifier) ;) }))))) (expression_statement "p_Var7->_M_left = p_Var3;" (assignment_expression "p_Var7->_M_left = p_Var3" (field_expression "p_Var7->_M_left" identifier -> field_identifier) = identifier) ;) (expression_statement "p_Var3->_M_parent = p_Var7;" (assignment_expression "p_Var3->_M_parent = p_Var7" (field_expression "p_Var3->_M_parent" identifier -> field_identifier) = identifier) ;) (goto_statement "goto LAB_002dc6f0;" goto statement_identifier ;) })) (expression_statement "p_Var4 = p_Var1->_M_right;" (assignment_expression "p_Var4 = p_Var1->_M_right" identifier = (field_expression "p_Var1->_M_right" identifier -> field_identifier)) ;) (if_statement "if ((p_Var4 != (_Base_ptr)0x0) && (p_Var4->_M_color != _S_black)) {\nLAB_002dc69f:\n      p_Var7 = p_Var3->_M_right;\n      p_Var1->_M_color = p_Var3->_M_color;\n      p_Var3->_M_color = _S_black;\nLAB_002dc6af:\n      p_Var4->_M_color = _S_black;\n      goto LAB_002dc6b5;\n    }" if (parenthesized_expression "((p_Var4 != (_Base_ptr)0x0) && (p_Var4->_M_color != _S_black))" ( (binary_expression "(p_Var4 != (_Base_ptr)0x0) && (p_Var4->_M_color != _S_black)" (parenthesized_expression "(p_Var4 != (_Base_ptr)0x0)" ( (binary_expression "p_Var4 != (_Base_ptr)0x0" identifier != (cast_expression "(_Base_ptr)0x0" ( (type_descriptor "_Base_ptr" type_identifier) ) number_literal)) )) && (parenthesized_expression "(p_Var4->_M_color != _S_black)" ( (binary_expression "p_Var4->_M_color != _S_black" (field_expression "p_Var4->_M_color" identifier -> field_identifier) != identifier) ))) )) (compound_statement "{\nLAB_002dc69f:\n      p_Var7 = p_Var3->_M_right;\n      p_Var1->_M_color = p_Var3->_M_color;\n      p_Var3->_M_color = _S_black;\nLAB_002dc6af:\n      p_Var4->_M_color = _S_black;\n      goto LAB_002dc6b5;\n    }" { (labeled_statement "LAB_002dc69f:\n      p_Var7 = p_Var3->_M_right;" statement_identifier : (expression_statement "p_Var7 = p_Var3->_M_right;" (assignment_expression "p_Var7 = p_Var3->_M_right" identifier = (field_expression "p_Var3->_M_right" identifier -> field_identifier)) ;)) (expression_statement "p_Var1->_M_color = p_Var3->_M_color;" (assignment_expression "p_Var1->_M_color = p_Var3->_M_color" (field_expression "p_Var1->_M_color" identifier -> field_identifier) = (field_expression "p_Var3->_M_color" identifier -> field_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) ;) (labeled_statement "LAB_002dc6af:\n      p_Var4->_M_color = _S_black;" statement_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) ;)) (goto_statement "goto LAB_002dc6b5;" goto statement_identifier ;) })) (labeled_statement "LAB_002dc5e8:\n    p_Var1->_M_color = _S_red;" statement_identifier : (expression_statement "p_Var1->_M_color = _S_red;" (assignment_expression "p_Var1->_M_color = _S_red" (field_expression "p_Var1->_M_color" identifier -> field_identifier) = identifier) ;)) (expression_statement "p_Var1 = p_Var3->_M_parent;" (assignment_expression "p_Var1 = p_Var3->_M_parent" identifier = (field_expression "p_Var3->_M_parent" identifier -> field_identifier)) ;) (expression_statement "p_Var6 = p_Var3;" (assignment_expression "p_Var6 = p_Var3" identifier = identifier) ;) }) while (parenthesized_expression "( true )" ( true )) ;) })))
(translation_unit "void FUN_002dc460(int *param_1,long param_2)\n\n{\n  int *piVar1;\n  int iVar2;\n  int *piVar3;\n  long lVar4;\n  int *piVar5;\n  int *piVar6;\n  int *piVar7;\n  int *piVar8;\n  \n  piVar3 = *(int **)(param_1 + 4);\n  piVar5 = *(int **)(param_1 + 6);\n  piVar7 = piVar5;\n  if (piVar3 == (int *)0x0) {\nLAB_002dc770:\n    piVar3 = piVar7;\n    piVar1 = *(int **)(param_1 + 2);\n    if (piVar3 != (int *)0x0) goto LAB_002dc480;\n    piVar7 = (int *)0x0;\n  }\n  else {\n    if (piVar5 != (int *)0x0) {\n      do {\n        piVar8 = piVar7;\n        piVar7 = *(int **)(piVar8 + 4);\n      } while (*(int **)(piVar8 + 4) != (int *)0x0);\n      piVar7 = *(int **)(piVar8 + 6);\n      if (piVar8 != param_1) {\n        *(int **)(piVar3 + 2) = piVar8;\n        *(int **)(piVar8 + 4) = piVar3;\n        piVar1 = piVar8;\n        if (piVar8 != piVar5) {\n          piVar1 = *(int **)(piVar8 + 2);\n          piVar3 = piVar1;\n          if (piVar7 != (int *)0x0) {\n            *(int **)(piVar7 + 2) = piVar1;\n            piVar3 = *(int **)(piVar8 + 2);\n          }\n          *(int **)(piVar3 + 4) = piVar7;\n          *(int **)(piVar8 + 6) = piVar5;\n          *(int **)(*(long *)(param_1 + 6) + 8) = piVar8;\n        }\n        if (*(int **)(param_2 + 8) == param_1) {\n          *(int **)(param_2 + 8) = piVar8;\n          lVar4 = *(long *)(param_1 + 2);\n        }\n        else {\n          lVar4 = *(long *)(param_1 + 2);\n          if (*(int **)(lVar4 + 0x10) == param_1) {\n            *(int **)(lVar4 + 0x10) = piVar8;\n          }\n          else {\n            *(int **)(lVar4 + 0x18) = piVar8;\n          }\n        }\n        *(long *)(piVar8 + 2) = lVar4;\n        iVar2 = *piVar8;\n        *piVar8 = *param_1;\n        *param_1 = iVar2;\n        goto LAB_002dc55f;\n      }\n      goto LAB_002dc770;\n    }\n    piVar1 = *(int **)(param_1 + 2);\nLAB_002dc480:\n    *(int **)(piVar3 + 2) = piVar1;\n    piVar7 = piVar3;\n  }\n  if (*(int **)(param_2 + 8) == param_1) {\n    *(int **)(param_2 + 8) = piVar7;\n  }\n  else {\n    lVar4 = *(long *)(param_1 + 2);\n    if (*(int **)(lVar4 + 0x10) == param_1) {\n      *(int **)(lVar4 + 0x10) = piVar7;\n    }\n    else {\n      *(int **)(lVar4 + 0x18) = piVar7;\n    }\n  }\n  if (*(int **)(param_2 + 0x10) == param_1) {\n    piVar3 = piVar7;\n    if (*(long *)(param_1 + 6) == 0) {\n      *(undefined8 *)(param_2 + 0x10) = *(undefined8 *)(param_1 + 2);\n    }\n    else {\n      do {\n        piVar5 = piVar3;\n        piVar3 = *(int **)(piVar5 + 4);\n      } while (piVar3 != (int *)0x0);\n      *(int **)(param_2 + 0x10) = piVar5;\n    }\n  }\n  iVar2 = *param_1;\n  if (*(int **)(param_2 + 0x18) == param_1) {\n    piVar3 = piVar7;\n    if (*(long *)(param_1 + 4) == 0) {\n      *(undefined8 *)(param_2 + 0x18) = *(undefined8 *)(param_1 + 2);\n    }\n    else {\n      do {\n        piVar5 = piVar3;\n        piVar3 = *(int **)(piVar5 + 6);\n      } while (piVar3 != (int *)0x0);\n      *(int **)(param_2 + 0x18) = piVar5;\n    }\n  }\nLAB_002dc55f:\n  if (iVar2 == 0) {\n    return;\n  }\n  do {\n    piVar3 = piVar1;\n    if (*(int **)(param_2 + 8) == piVar7) {\nLAB_002dc6f0:\n      if (piVar7 == (int *)0x0) {\n        return;\n      }\nLAB_002dc6f5:\n      *piVar7 = 1;\n      return;\n    }\n    if ((piVar7 != (int *)0x0) && (*piVar7 != 1)) goto LAB_002dc6f5;\n    piVar5 = *(int **)(piVar3 + 4);\n    if (piVar5 != piVar7) {\n      piVar8 = *(int **)(piVar5 + 6);\n      piVar1 = piVar5;\n      if (*piVar5 == 0) {\n        *piVar5 = 1;\n        *piVar3 = 0;\n        *(int **)(piVar3 + 4) = piVar8;\n        if (piVar8 != (int *)0x0) {\n          *(int **)(piVar8 + 2) = piVar3;\n        }\n        lVar4 = *(long *)(piVar3 + 2);\n        *(long *)(piVar5 + 2) = lVar4;\n        if (piVar3 == *(int **)(param_2 + 8)) {\n          *(int **)(param_2 + 8) = piVar5;\n          piVar1 = *(int **)(piVar3 + 4);\n        }\n        else if (piVar3 == *(int **)(lVar4 + 0x18)) {\n          *(int **)(lVar4 + 0x18) = piVar5;\n          piVar1 = piVar8;\n        }\n        else {\n          *(int **)(lVar4 + 0x10) = piVar5;\n          piVar1 = *(int **)(piVar3 + 4);\n        }\n        *(int **)(piVar5 + 6) = piVar3;\n        piVar8 = *(int **)(piVar1 + 6);\n        *(int **)(piVar3 + 2) = piVar5;\n      }\n      if ((piVar8 == (int *)0x0) || (*piVar8 == 1)) {\n        piVar5 = *(int **)(piVar1 + 4);\n        if ((piVar5 == (int *)0x0) || (*piVar5 == 1)) goto LAB_002dc5e8;\nLAB_002dc82b:\n        piVar6 = *(int **)(piVar3 + 4);\n        *piVar1 = *piVar3;\n        *piVar3 = 1;\nLAB_002dc83b:\n        *piVar5 = 1;\n      }\n      else {\n        piVar5 = *(int **)(piVar1 + 4);\n        if ((piVar5 != (int *)0x0) && (*piVar5 != 1)) goto LAB_002dc82b;\n        lVar4 = *(long *)(piVar8 + 4);\n        *piVar8 = 1;\n        *piVar1 = 0;\n        *(long *)(piVar1 + 6) = lVar4;\n        if (lVar4 != 0) {\n          *(int **)(lVar4 + 8) = piVar1;\n        }\n        lVar4 = *(long *)(piVar1 + 2);\n        *(long *)(piVar8 + 2) = lVar4;\n        if (piVar1 == *(int **)(param_2 + 8)) {\n          *(int **)(param_2 + 8) = piVar8;\n        }\n        else if (piVar1 == *(int **)(lVar4 + 0x10)) {\n          *(int **)(lVar4 + 0x10) = piVar8;\n        }\n        else {\n          *(int **)(lVar4 + 0x18) = piVar8;\n        }\n        *(int **)(piVar8 + 4) = piVar1;\n        piVar6 = *(int **)(piVar3 + 4);\n        *(int **)(piVar1 + 2) = piVar8;\n        piVar5 = *(int **)(piVar6 + 4);\n        *piVar6 = *piVar3;\n        *piVar3 = 1;\n        if (piVar5 != (int *)0x0) goto LAB_002dc83b;\n      }\n      lVar4 = *(long *)(piVar6 + 6);\n      *(long *)(piVar3 + 4) = lVar4;\n      if (lVar4 != 0) {\n        *(int **)(lVar4 + 8) = piVar3;\n      }\n      lVar4 = *(long *)(piVar3 + 2);\n      *(long *)(piVar6 + 2) = lVar4;\n      if (piVar3 == *(int **)(param_2 + 8)) {\n        *(int **)(param_2 + 8) = piVar6;\n      }\n      else if (piVar3 == *(int **)(lVar4 + 0x18)) {\n        *(int **)(lVar4 + 0x18) = piVar6;\n      }\n      else {\n        *(int **)(lVar4 + 0x10) = piVar6;\n      }\n      *(int **)(piVar6 + 6) = piVar3;\n      *(int **)(piVar3 + 2) = piVar6;\n      goto LAB_002dc6f0;\n    }\n    piVar5 = *(int **)(piVar3 + 6);\n    piVar8 = *(int **)(piVar5 + 4);\n    piVar1 = piVar5;\n    if (*piVar5 == 0) {\n      *piVar5 = 1;\n      *piVar3 = 0;\n      *(int **)(piVar3 + 6) = piVar8;\n      if (piVar8 != (int *)0x0) {\n        *(int **)(piVar8 + 2) = piVar3;\n      }\n      lVar4 = *(long *)(piVar3 + 2);\n      *(long *)(piVar5 + 2) = lVar4;\n      if (piVar3 == *(int **)(param_2 + 8)) {\n        *(int **)(param_2 + 8) = piVar5;\n        piVar1 = *(int **)(piVar3 + 6);\n      }\n      else if (piVar3 == *(int **)(lVar4 + 0x10)) {\n        *(int **)(lVar4 + 0x10) = piVar5;\n        piVar1 = piVar8;\n      }\n      else {\n        *(int **)(lVar4 + 0x18) = piVar5;\n        piVar1 = *(int **)(piVar3 + 6);\n      }\n      *(int **)(piVar5 + 4) = piVar3;\n      piVar8 = *(int **)(piVar1 + 4);\n      *(int **)(piVar3 + 2) = piVar5;\n    }\n    if ((piVar8 != (int *)0x0) && (*piVar8 != 1)) {\n      piVar5 = *(int **)(piVar1 + 6);\n      if ((piVar5 != (int *)0x0) && (*piVar5 != 1)) goto LAB_002dc69f;\n      lVar4 = *(long *)(piVar8 + 6);\n      *piVar8 = 1;\n      *piVar1 = 0;\n      *(long *)(piVar1 + 4) = lVar4;\n      if (lVar4 != 0) {\n        *(int **)(lVar4 + 8) = piVar1;\n      }\n      lVar4 = *(long *)(piVar1 + 2);\n      *(long *)(piVar8 + 2) = lVar4;\n      if (piVar1 == *(int **)(param_2 + 8)) {\n        *(int **)(param_2 + 8) = piVar8;\n      }\n      else if (piVar1 == *(int **)(lVar4 + 0x18)) {\n        *(int **)(lVar4 + 0x18) = piVar8;\n      }\n      else {\n        *(int **)(lVar4 + 0x10) = piVar8;\n      }\n      *(int **)(piVar8 + 6) = piVar1;\n      *(int **)(piVar1 + 2) = piVar8;\n      piVar8 = *(int **)(piVar3 + 6);\n      piVar5 = *(int **)(piVar8 + 6);\n      *piVar8 = *piVar3;\n      *piVar3 = 1;\n      if (piVar5 != (int *)0x0) goto LAB_002dc6af;\nLAB_002dc6b5:\n      lVar4 = *(long *)(piVar8 + 4);\n      *(long *)(piVar3 + 6) = lVar4;\n      if (lVar4 != 0) {\n        *(int **)(lVar4 + 8) = piVar3;\n      }\n      lVar4 = *(long *)(piVar3 + 2);\n      *(long *)(piVar8 + 2) = lVar4;\n      if (piVar3 == *(int **)(param_2 + 8)) {\n        *(int **)(param_2 + 8) = piVar8;\n      }\n      else if (piVar3 == *(int **)(lVar4 + 0x10)) {\n        *(int **)(lVar4 + 0x10) = piVar8;\n      }\n      else {\n        *(int **)(lVar4 + 0x18) = piVar8;\n      }\n      *(int **)(piVar8 + 4) = piVar3;\n      *(int **)(piVar3 + 2) = piVar8;\n      goto LAB_002dc6f0;\n    }\n    piVar5 = *(int **)(piVar1 + 6);\n    if ((piVar5 != (int *)0x0) && (*piVar5 != 1)) {\nLAB_002dc69f:\n      piVar8 = *(int **)(piVar3 + 6);\n      *piVar1 = *piVar3;\n      *piVar3 = 1;\nLAB_002dc6af:\n      *piVar5 = 1;\n      goto LAB_002dc6b5;\n    }\nLAB_002dc5e8:\n    *piVar1 = 0;\n    piVar1 = *(int **)(piVar3 + 2);\n    piVar7 = piVar3;\n  } while( true );\n}\n\n" (function_definition "void FUN_002dc460(int *param_1,long param_2)\n\n{\n  int *piVar1;\n  int iVar2;\n  int *piVar3;\n  long lVar4;\n  int *piVar5;\n  int *piVar6;\n  int *piVar7;\n  int *piVar8;\n  \n  piVar3 = *(int **)(param_1 + 4);\n  piVar5 = *(int **)(param_1 + 6);\n  piVar7 = piVar5;\n  if (piVar3 == (int *)0x0) {\nLAB_002dc770:\n    piVar3 = piVar7;\n    piVar1 = *(int **)(param_1 + 2);\n    if (piVar3 != (int *)0x0) goto LAB_002dc480;\n    piVar7 = (int *)0x0;\n  }\n  else {\n    if (piVar5 != (int *)0x0) {\n      do {\n        piVar8 = piVar7;\n        piVar7 = *(int **)(piVar8 + 4);\n      } while (*(int **)(piVar8 + 4) != (int *)0x0);\n      piVar7 = *(int **)(piVar8 + 6);\n      if (piVar8 != param_1) {\n        *(int **)(piVar3 + 2) = piVar8;\n        *(int **)(piVar8 + 4) = piVar3;\n        piVar1 = piVar8;\n        if (piVar8 != piVar5) {\n          piVar1 = *(int **)(piVar8 + 2);\n          piVar3 = piVar1;\n          if (piVar7 != (int *)0x0) {\n            *(int **)(piVar7 + 2) = piVar1;\n            piVar3 = *(int **)(piVar8 + 2);\n          }\n          *(int **)(piVar3 + 4) = piVar7;\n          *(int **)(piVar8 + 6) = piVar5;\n          *(int **)(*(long *)(param_1 + 6) + 8) = piVar8;\n        }\n        if (*(int **)(param_2 + 8) == param_1) {\n          *(int **)(param_2 + 8) = piVar8;\n          lVar4 = *(long *)(param_1 + 2);\n        }\n        else {\n          lVar4 = *(long *)(param_1 + 2);\n          if (*(int **)(lVar4 + 0x10) == param_1) {\n            *(int **)(lVar4 + 0x10) = piVar8;\n          }\n          else {\n            *(int **)(lVar4 + 0x18) = piVar8;\n          }\n        }\n        *(long *)(piVar8 + 2) = lVar4;\n        iVar2 = *piVar8;\n        *piVar8 = *param_1;\n        *param_1 = iVar2;\n        goto LAB_002dc55f;\n      }\n      goto LAB_002dc770;\n    }\n    piVar1 = *(int **)(param_1 + 2);\nLAB_002dc480:\n    *(int **)(piVar3 + 2) = piVar1;\n    piVar7 = piVar3;\n  }\n  if (*(int **)(param_2 + 8) == param_1) {\n    *(int **)(param_2 + 8) = piVar7;\n  }\n  else {\n    lVar4 = *(long *)(param_1 + 2);\n    if (*(int **)(lVar4 + 0x10) == param_1) {\n      *(int **)(lVar4 + 0x10) = piVar7;\n    }\n    else {\n      *(int **)(lVar4 + 0x18) = piVar7;\n    }\n  }\n  if (*(int **)(param_2 + 0x10) == param_1) {\n    piVar3 = piVar7;\n    if (*(long *)(param_1 + 6) == 0) {\n      *(undefined8 *)(param_2 + 0x10) = *(undefined8 *)(param_1 + 2);\n    }\n    else {\n      do {\n        piVar5 = piVar3;\n        piVar3 = *(int **)(piVar5 + 4);\n      } while (piVar3 != (int *)0x0);\n      *(int **)(param_2 + 0x10) = piVar5;\n    }\n  }\n  iVar2 = *param_1;\n  if (*(int **)(param_2 + 0x18) == param_1) {\n    piVar3 = piVar7;\n    if (*(long *)(param_1 + 4) == 0) {\n      *(undefined8 *)(param_2 + 0x18) = *(undefined8 *)(param_1 + 2);\n    }\n    else {\n      do {\n        piVar5 = piVar3;\n        piVar3 = *(int **)(piVar5 + 6);\n      } while (piVar3 != (int *)0x0);\n      *(int **)(param_2 + 0x18) = piVar5;\n    }\n  }\nLAB_002dc55f:\n  if (iVar2 == 0) {\n    return;\n  }\n  do {\n    piVar3 = piVar1;\n    if (*(int **)(param_2 + 8) == piVar7) {\nLAB_002dc6f0:\n      if (piVar7 == (int *)0x0) {\n        return;\n      }\nLAB_002dc6f5:\n      *piVar7 = 1;\n      return;\n    }\n    if ((piVar7 != (int *)0x0) && (*piVar7 != 1)) goto LAB_002dc6f5;\n    piVar5 = *(int **)(piVar3 + 4);\n    if (piVar5 != piVar7) {\n      piVar8 = *(int **)(piVar5 + 6);\n      piVar1 = piVar5;\n      if (*piVar5 == 0) {\n        *piVar5 = 1;\n        *piVar3 = 0;\n        *(int **)(piVar3 + 4) = piVar8;\n        if (piVar8 != (int *)0x0) {\n          *(int **)(piVar8 + 2) = piVar3;\n        }\n        lVar4 = *(long *)(piVar3 + 2);\n        *(long *)(piVar5 + 2) = lVar4;\n        if (piVar3 == *(int **)(param_2 + 8)) {\n          *(int **)(param_2 + 8) = piVar5;\n          piVar1 = *(int **)(piVar3 + 4);\n        }\n        else if (piVar3 == *(int **)(lVar4 + 0x18)) {\n          *(int **)(lVar4 + 0x18) = piVar5;\n          piVar1 = piVar8;\n        }\n        else {\n          *(int **)(lVar4 + 0x10) = piVar5;\n          piVar1 = *(int **)(piVar3 + 4);\n        }\n        *(int **)(piVar5 + 6) = piVar3;\n        piVar8 = *(int **)(piVar1 + 6);\n        *(int **)(piVar3 + 2) = piVar5;\n      }\n      if ((piVar8 == (int *)0x0) || (*piVar8 == 1)) {\n        piVar5 = *(int **)(piVar1 + 4);\n        if ((piVar5 == (int *)0x0) || (*piVar5 == 1)) goto LAB_002dc5e8;\nLAB_002dc82b:\n        piVar6 = *(int **)(piVar3 + 4);\n        *piVar1 = *piVar3;\n        *piVar3 = 1;\nLAB_002dc83b:\n        *piVar5 = 1;\n      }\n      else {\n        piVar5 = *(int **)(piVar1 + 4);\n        if ((piVar5 != (int *)0x0) && (*piVar5 != 1)) goto LAB_002dc82b;\n        lVar4 = *(long *)(piVar8 + 4);\n        *piVar8 = 1;\n        *piVar1 = 0;\n        *(long *)(piVar1 + 6) = lVar4;\n        if (lVar4 != 0) {\n          *(int **)(lVar4 + 8) = piVar1;\n        }\n        lVar4 = *(long *)(piVar1 + 2);\n        *(long *)(piVar8 + 2) = lVar4;\n        if (piVar1 == *(int **)(param_2 + 8)) {\n          *(int **)(param_2 + 8) = piVar8;\n        }\n        else if (piVar1 == *(int **)(lVar4 + 0x10)) {\n          *(int **)(lVar4 + 0x10) = piVar8;\n        }\n        else {\n          *(int **)(lVar4 + 0x18) = piVar8;\n        }\n        *(int **)(piVar8 + 4) = piVar1;\n        piVar6 = *(int **)(piVar3 + 4);\n        *(int **)(piVar1 + 2) = piVar8;\n        piVar5 = *(int **)(piVar6 + 4);\n        *piVar6 = *piVar3;\n        *piVar3 = 1;\n        if (piVar5 != (int *)0x0) goto LAB_002dc83b;\n      }\n      lVar4 = *(long *)(piVar6 + 6);\n      *(long *)(piVar3 + 4) = lVar4;\n      if (lVar4 != 0) {\n        *(int **)(lVar4 + 8) = piVar3;\n      }\n      lVar4 = *(long *)(piVar3 + 2);\n      *(long *)(piVar6 + 2) = lVar4;\n      if (piVar3 == *(int **)(param_2 + 8)) {\n        *(int **)(param_2 + 8) = piVar6;\n      }\n      else if (piVar3 == *(int **)(lVar4 + 0x18)) {\n        *(int **)(lVar4 + 0x18) = piVar6;\n      }\n      else {\n        *(int **)(lVar4 + 0x10) = piVar6;\n      }\n      *(int **)(piVar6 + 6) = piVar3;\n      *(int **)(piVar3 + 2) = piVar6;\n      goto LAB_002dc6f0;\n    }\n    piVar5 = *(int **)(piVar3 + 6);\n    piVar8 = *(int **)(piVar5 + 4);\n    piVar1 = piVar5;\n    if (*piVar5 == 0) {\n      *piVar5 = 1;\n      *piVar3 = 0;\n      *(int **)(piVar3 + 6) = piVar8;\n      if (piVar8 != (int *)0x0) {\n        *(int **)(piVar8 + 2) = piVar3;\n      }\n      lVar4 = *(long *)(piVar3 + 2);\n      *(long *)(piVar5 + 2) = lVar4;\n      if (piVar3 == *(int **)(param_2 + 8)) {\n        *(int **)(param_2 + 8) = piVar5;\n        piVar1 = *(int **)(piVar3 + 6);\n      }\n      else if (piVar3 == *(int **)(lVar4 + 0x10)) {\n        *(int **)(lVar4 + 0x10) = piVar5;\n        piVar1 = piVar8;\n      }\n      else {\n        *(int **)(lVar4 + 0x18) = piVar5;\n        piVar1 = *(int **)(piVar3 + 6);\n      }\n      *(int **)(piVar5 + 4) = piVar3;\n      piVar8 = *(int **)(piVar1 + 4);\n      *(int **)(piVar3 + 2) = piVar5;\n    }\n    if ((piVar8 != (int *)0x0) && (*piVar8 != 1)) {\n      piVar5 = *(int **)(piVar1 + 6);\n      if ((piVar5 != (int *)0x0) && (*piVar5 != 1)) goto LAB_002dc69f;\n      lVar4 = *(long *)(piVar8 + 6);\n      *piVar8 = 1;\n      *piVar1 = 0;\n      *(long *)(piVar1 + 4) = lVar4;\n      if (lVar4 != 0) {\n        *(int **)(lVar4 + 8) = piVar1;\n      }\n      lVar4 = *(long *)(piVar1 + 2);\n      *(long *)(piVar8 + 2) = lVar4;\n      if (piVar1 == *(int **)(param_2 + 8)) {\n        *(int **)(param_2 + 8) = piVar8;\n      }\n      else if (piVar1 == *(int **)(lVar4 + 0x18)) {\n        *(int **)(lVar4 + 0x18) = piVar8;\n      }\n      else {\n        *(int **)(lVar4 + 0x10) = piVar8;\n      }\n      *(int **)(piVar8 + 6) = piVar1;\n      *(int **)(piVar1 + 2) = piVar8;\n      piVar8 = *(int **)(piVar3 + 6);\n      piVar5 = *(int **)(piVar8 + 6);\n      *piVar8 = *piVar3;\n      *piVar3 = 1;\n      if (piVar5 != (int *)0x0) goto LAB_002dc6af;\nLAB_002dc6b5:\n      lVar4 = *(long *)(piVar8 + 4);\n      *(long *)(piVar3 + 6) = lVar4;\n      if (lVar4 != 0) {\n        *(int **)(lVar4 + 8) = piVar3;\n      }\n      lVar4 = *(long *)(piVar3 + 2);\n      *(long *)(piVar8 + 2) = lVar4;\n      if (piVar3 == *(int **)(param_2 + 8)) {\n        *(int **)(param_2 + 8) = piVar8;\n      }\n      else if (piVar3 == *(int **)(lVar4 + 0x10)) {\n        *(int **)(lVar4 + 0x10) = piVar8;\n      }\n      else {\n        *(int **)(lVar4 + 0x18) = piVar8;\n      }\n      *(int **)(piVar8 + 4) = piVar3;\n      *(int **)(piVar3 + 2) = piVar8;\n      goto LAB_002dc6f0;\n    }\n    piVar5 = *(int **)(piVar1 + 6);\n    if ((piVar5 != (int *)0x0) && (*piVar5 != 1)) {\nLAB_002dc69f:\n      piVar8 = *(int **)(piVar3 + 6);\n      *piVar1 = *piVar3;\n      *piVar3 = 1;\nLAB_002dc6af:\n      *piVar5 = 1;\n      goto LAB_002dc6b5;\n    }\nLAB_002dc5e8:\n    *piVar1 = 0;\n    piVar1 = *(int **)(piVar3 + 2);\n    piVar7 = piVar3;\n  } while( true );\n}" primitive_type (function_declarator "FUN_002dc460(int *param_1,long param_2)" identifier (parameter_list "(int *param_1,long param_2)" ( (parameter_declaration "int *param_1" primitive_type (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "long param_2" (sized_type_specifier "long" long) identifier) ))) (compound_statement "{\n  int *piVar1;\n  int iVar2;\n  int *piVar3;\n  long lVar4;\n  int *piVar5;\n  int *piVar6;\n  int *piVar7;\n  int *piVar8;\n  \n  piVar3 = *(int **)(param_1 + 4);\n  piVar5 = *(int **)(param_1 + 6);\n  piVar7 = piVar5;\n  if (piVar3 == (int *)0x0) {\nLAB_002dc770:\n    piVar3 = piVar7;\n    piVar1 = *(int **)(param_1 + 2);\n    if (piVar3 != (int *)0x0) goto LAB_002dc480;\n    piVar7 = (int *)0x0;\n  }\n  else {\n    if (piVar5 != (int *)0x0) {\n      do {\n        piVar8 = piVar7;\n        piVar7 = *(int **)(piVar8 + 4);\n      } while (*(int **)(piVar8 + 4) != (int *)0x0);\n      piVar7 = *(int **)(piVar8 + 6);\n      if (piVar8 != param_1) {\n        *(int **)(piVar3 + 2) = piVar8;\n        *(int **)(piVar8 + 4) = piVar3;\n        piVar1 = piVar8;\n        if (piVar8 != piVar5) {\n          piVar1 = *(int **)(piVar8 + 2);\n          piVar3 = piVar1;\n          if (piVar7 != (int *)0x0) {\n            *(int **)(piVar7 + 2) = piVar1;\n            piVar3 = *(int **)(piVar8 + 2);\n          }\n          *(int **)(piVar3 + 4) = piVar7;\n          *(int **)(piVar8 + 6) = piVar5;\n          *(int **)(*(long *)(param_1 + 6) + 8) = piVar8;\n        }\n        if (*(int **)(param_2 + 8) == param_1) {\n          *(int **)(param_2 + 8) = piVar8;\n          lVar4 = *(long *)(param_1 + 2);\n        }\n        else {\n          lVar4 = *(long *)(param_1 + 2);\n          if (*(int **)(lVar4 + 0x10) == param_1) {\n            *(int **)(lVar4 + 0x10) = piVar8;\n          }\n          else {\n            *(int **)(lVar4 + 0x18) = piVar8;\n          }\n        }\n        *(long *)(piVar8 + 2) = lVar4;\n        iVar2 = *piVar8;\n        *piVar8 = *param_1;\n        *param_1 = iVar2;\n        goto LAB_002dc55f;\n      }\n      goto LAB_002dc770;\n    }\n    piVar1 = *(int **)(param_1 + 2);\nLAB_002dc480:\n    *(int **)(piVar3 + 2) = piVar1;\n    piVar7 = piVar3;\n  }\n  if (*(int **)(param_2 + 8) == param_1) {\n    *(int **)(param_2 + 8) = piVar7;\n  }\n  else {\n    lVar4 = *(long *)(param_1 + 2);\n    if (*(int **)(lVar4 + 0x10) == param_1) {\n      *(int **)(lVar4 + 0x10) = piVar7;\n    }\n    else {\n      *(int **)(lVar4 + 0x18) = piVar7;\n    }\n  }\n  if (*(int **)(param_2 + 0x10) == param_1) {\n    piVar3 = piVar7;\n    if (*(long *)(param_1 + 6) == 0) {\n      *(undefined8 *)(param_2 + 0x10) = *(undefined8 *)(param_1 + 2);\n    }\n    else {\n      do {\n        piVar5 = piVar3;\n        piVar3 = *(int **)(piVar5 + 4);\n      } while (piVar3 != (int *)0x0);\n      *(int **)(param_2 + 0x10) = piVar5;\n    }\n  }\n  iVar2 = *param_1;\n  if (*(int **)(param_2 + 0x18) == param_1) {\n    piVar3 = piVar7;\n    if (*(long *)(param_1 + 4) == 0) {\n      *(undefined8 *)(param_2 + 0x18) = *(undefined8 *)(param_1 + 2);\n    }\n    else {\n      do {\n        piVar5 = piVar3;\n        piVar3 = *(int **)(piVar5 + 6);\n      } while (piVar3 != (int *)0x0);\n      *(int **)(param_2 + 0x18) = piVar5;\n    }\n  }\nLAB_002dc55f:\n  if (iVar2 == 0) {\n    return;\n  }\n  do {\n    piVar3 = piVar1;\n    if (*(int **)(param_2 + 8) == piVar7) {\nLAB_002dc6f0:\n      if (piVar7 == (int *)0x0) {\n        return;\n      }\nLAB_002dc6f5:\n      *piVar7 = 1;\n      return;\n    }\n    if ((piVar7 != (int *)0x0) && (*piVar7 != 1)) goto LAB_002dc6f5;\n    piVar5 = *(int **)(piVar3 + 4);\n    if (piVar5 != piVar7) {\n      piVar8 = *(int **)(piVar5 + 6);\n      piVar1 = piVar5;\n      if (*piVar5 == 0) {\n        *piVar5 = 1;\n        *piVar3 = 0;\n        *(int **)(piVar3 + 4) = piVar8;\n        if (piVar8 != (int *)0x0) {\n          *(int **)(piVar8 + 2) = piVar3;\n        }\n        lVar4 = *(long *)(piVar3 + 2);\n        *(long *)(piVar5 + 2) = lVar4;\n        if (piVar3 == *(int **)(param_2 + 8)) {\n          *(int **)(param_2 + 8) = piVar5;\n          piVar1 = *(int **)(piVar3 + 4);\n        }\n        else if (piVar3 == *(int **)(lVar4 + 0x18)) {\n          *(int **)(lVar4 + 0x18) = piVar5;\n          piVar1 = piVar8;\n        }\n        else {\n          *(int **)(lVar4 + 0x10) = piVar5;\n          piVar1 = *(int **)(piVar3 + 4);\n        }\n        *(int **)(piVar5 + 6) = piVar3;\n        piVar8 = *(int **)(piVar1 + 6);\n        *(int **)(piVar3 + 2) = piVar5;\n      }\n      if ((piVar8 == (int *)0x0) || (*piVar8 == 1)) {\n        piVar5 = *(int **)(piVar1 + 4);\n        if ((piVar5 == (int *)0x0) || (*piVar5 == 1)) goto LAB_002dc5e8;\nLAB_002dc82b:\n        piVar6 = *(int **)(piVar3 + 4);\n        *piVar1 = *piVar3;\n        *piVar3 = 1;\nLAB_002dc83b:\n        *piVar5 = 1;\n      }\n      else {\n        piVar5 = *(int **)(piVar1 + 4);\n        if ((piVar5 != (int *)0x0) && (*piVar5 != 1)) goto LAB_002dc82b;\n        lVar4 = *(long *)(piVar8 + 4);\n        *piVar8 = 1;\n        *piVar1 = 0;\n        *(long *)(piVar1 + 6) = lVar4;\n        if (lVar4 != 0) {\n          *(int **)(lVar4 + 8) = piVar1;\n        }\n        lVar4 = *(long *)(piVar1 + 2);\n        *(long *)(piVar8 + 2) = lVar4;\n        if (piVar1 == *(int **)(param_2 + 8)) {\n          *(int **)(param_2 + 8) = piVar8;\n        }\n        else if (piVar1 == *(int **)(lVar4 + 0x10)) {\n          *(int **)(lVar4 + 0x10) = piVar8;\n        }\n        else {\n          *(int **)(lVar4 + 0x18) = piVar8;\n        }\n        *(int **)(piVar8 + 4) = piVar1;\n        piVar6 = *(int **)(piVar3 + 4);\n        *(int **)(piVar1 + 2) = piVar8;\n        piVar5 = *(int **)(piVar6 + 4);\n        *piVar6 = *piVar3;\n        *piVar3 = 1;\n        if (piVar5 != (int *)0x0) goto LAB_002dc83b;\n      }\n      lVar4 = *(long *)(piVar6 + 6);\n      *(long *)(piVar3 + 4) = lVar4;\n      if (lVar4 != 0) {\n        *(int **)(lVar4 + 8) = piVar3;\n      }\n      lVar4 = *(long *)(piVar3 + 2);\n      *(long *)(piVar6 + 2) = lVar4;\n      if (piVar3 == *(int **)(param_2 + 8)) {\n        *(int **)(param_2 + 8) = piVar6;\n      }\n      else if (piVar3 == *(int **)(lVar4 + 0x18)) {\n        *(int **)(lVar4 + 0x18) = piVar6;\n      }\n      else {\n        *(int **)(lVar4 + 0x10) = piVar6;\n      }\n      *(int **)(piVar6 + 6) = piVar3;\n      *(int **)(piVar3 + 2) = piVar6;\n      goto LAB_002dc6f0;\n    }\n    piVar5 = *(int **)(piVar3 + 6);\n    piVar8 = *(int **)(piVar5 + 4);\n    piVar1 = piVar5;\n    if (*piVar5 == 0) {\n      *piVar5 = 1;\n      *piVar3 = 0;\n      *(int **)(piVar3 + 6) = piVar8;\n      if (piVar8 != (int *)0x0) {\n        *(int **)(piVar8 + 2) = piVar3;\n      }\n      lVar4 = *(long *)(piVar3 + 2);\n      *(long *)(piVar5 + 2) = lVar4;\n      if (piVar3 == *(int **)(param_2 + 8)) {\n        *(int **)(param_2 + 8) = piVar5;\n        piVar1 = *(int **)(piVar3 + 6);\n      }\n      else if (piVar3 == *(int **)(lVar4 + 0x10)) {\n        *(int **)(lVar4 + 0x10) = piVar5;\n        piVar1 = piVar8;\n      }\n      else {\n        *(int **)(lVar4 + 0x18) = piVar5;\n        piVar1 = *(int **)(piVar3 + 6);\n      }\n      *(int **)(piVar5 + 4) = piVar3;\n      piVar8 = *(int **)(piVar1 + 4);\n      *(int **)(piVar3 + 2) = piVar5;\n    }\n    if ((piVar8 != (int *)0x0) && (*piVar8 != 1)) {\n      piVar5 = *(int **)(piVar1 + 6);\n      if ((piVar5 != (int *)0x0) && (*piVar5 != 1)) goto LAB_002dc69f;\n      lVar4 = *(long *)(piVar8 + 6);\n      *piVar8 = 1;\n      *piVar1 = 0;\n      *(long *)(piVar1 + 4) = lVar4;\n      if (lVar4 != 0) {\n        *(int **)(lVar4 + 8) = piVar1;\n      }\n      lVar4 = *(long *)(piVar1 + 2);\n      *(long *)(piVar8 + 2) = lVar4;\n      if (piVar1 == *(int **)(param_2 + 8)) {\n        *(int **)(param_2 + 8) = piVar8;\n      }\n      else if (piVar1 == *(int **)(lVar4 + 0x18)) {\n        *(int **)(lVar4 + 0x18) = piVar8;\n      }\n      else {\n        *(int **)(lVar4 + 0x10) = piVar8;\n      }\n      *(int **)(piVar8 + 6) = piVar1;\n      *(int **)(piVar1 + 2) = piVar8;\n      piVar8 = *(int **)(piVar3 + 6);\n      piVar5 = *(int **)(piVar8 + 6);\n      *piVar8 = *piVar3;\n      *piVar3 = 1;\n      if (piVar5 != (int *)0x0) goto LAB_002dc6af;\nLAB_002dc6b5:\n      lVar4 = *(long *)(piVar8 + 4);\n      *(long *)(piVar3 + 6) = lVar4;\n      if (lVar4 != 0) {\n        *(int **)(lVar4 + 8) = piVar3;\n      }\n      lVar4 = *(long *)(piVar3 + 2);\n      *(long *)(piVar8 + 2) = lVar4;\n      if (piVar3 == *(int **)(param_2 + 8)) {\n        *(int **)(param_2 + 8) = piVar8;\n      }\n      else if (piVar3 == *(int **)(lVar4 + 0x10)) {\n        *(int **)(lVar4 + 0x10) = piVar8;\n      }\n      else {\n        *(int **)(lVar4 + 0x18) = piVar8;\n      }\n      *(int **)(piVar8 + 4) = piVar3;\n      *(int **)(piVar3 + 2) = piVar8;\n      goto LAB_002dc6f0;\n    }\n    piVar5 = *(int **)(piVar1 + 6);\n    if ((piVar5 != (int *)0x0) && (*piVar5 != 1)) {\nLAB_002dc69f:\n      piVar8 = *(int **)(piVar3 + 6);\n      *piVar1 = *piVar3;\n      *piVar3 = 1;\nLAB_002dc6af:\n      *piVar5 = 1;\n      goto LAB_002dc6b5;\n    }\nLAB_002dc5e8:\n    *piVar1 = 0;\n    piVar1 = *(int **)(piVar3 + 2);\n    piVar7 = piVar3;\n  } while( true );\n}" { (declaration "int *piVar1;" primitive_type (pointer_declarator "*piVar1" * identifier) ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "int *piVar3;" primitive_type (pointer_declarator "*piVar3" * identifier) ;) (declaration "long lVar4;" (sized_type_specifier "long" long) identifier ;) (declaration "int *piVar5;" primitive_type (pointer_declarator "*piVar5" * identifier) ;) (declaration "int *piVar6;" primitive_type (pointer_declarator "*piVar6" * identifier) ;) (declaration "int *piVar7;" primitive_type (pointer_declarator "*piVar7" * identifier) ;) (declaration "int *piVar8;" primitive_type (pointer_declarator "*piVar8" * identifier) ;) (expression_statement "piVar3 = *(int **)(param_1 + 4);" (assignment_expression "piVar3 = *(int **)(param_1 + 4)" identifier = (pointer_expression "*(int **)(param_1 + 4)" * (cast_expression "(int **)(param_1 + 4)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) ))))) ;) (expression_statement "piVar5 = *(int **)(param_1 + 6);" (assignment_expression "piVar5 = *(int **)(param_1 + 6)" identifier = (pointer_expression "*(int **)(param_1 + 6)" * (cast_expression "(int **)(param_1 + 6)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 6)" ( (binary_expression "param_1 + 6" identifier + number_literal) ))))) ;) (expression_statement "piVar7 = piVar5;" (assignment_expression "piVar7 = piVar5" identifier = identifier) ;) (if_statement "if (piVar3 == (int *)0x0) {\nLAB_002dc770:\n    piVar3 = piVar7;\n    piVar1 = *(int **)(param_1 + 2);\n    if (piVar3 != (int *)0x0) goto LAB_002dc480;\n    piVar7 = (int *)0x0;\n  }\n  else {\n    if (piVar5 != (int *)0x0) {\n      do {\n        piVar8 = piVar7;\n        piVar7 = *(int **)(piVar8 + 4);\n      } while (*(int **)(piVar8 + 4) != (int *)0x0);\n      piVar7 = *(int **)(piVar8 + 6);\n      if (piVar8 != param_1) {\n        *(int **)(piVar3 + 2) = piVar8;\n        *(int **)(piVar8 + 4) = piVar3;\n        piVar1 = piVar8;\n        if (piVar8 != piVar5) {\n          piVar1 = *(int **)(piVar8 + 2);\n          piVar3 = piVar1;\n          if (piVar7 != (int *)0x0) {\n            *(int **)(piVar7 + 2) = piVar1;\n            piVar3 = *(int **)(piVar8 + 2);\n          }\n          *(int **)(piVar3 + 4) = piVar7;\n          *(int **)(piVar8 + 6) = piVar5;\n          *(int **)(*(long *)(param_1 + 6) + 8) = piVar8;\n        }\n        if (*(int **)(param_2 + 8) == param_1) {\n          *(int **)(param_2 + 8) = piVar8;\n          lVar4 = *(long *)(param_1 + 2);\n        }\n        else {\n          lVar4 = *(long *)(param_1 + 2);\n          if (*(int **)(lVar4 + 0x10) == param_1) {\n            *(int **)(lVar4 + 0x10) = piVar8;\n          }\n          else {\n            *(int **)(lVar4 + 0x18) = piVar8;\n          }\n        }\n        *(long *)(piVar8 + 2) = lVar4;\n        iVar2 = *piVar8;\n        *piVar8 = *param_1;\n        *param_1 = iVar2;\n        goto LAB_002dc55f;\n      }\n      goto LAB_002dc770;\n    }\n    piVar1 = *(int **)(param_1 + 2);\nLAB_002dc480:\n    *(int **)(piVar3 + 2) = piVar1;\n    piVar7 = piVar3;\n  }" if (parenthesized_expression "(piVar3 == (int *)0x0)" ( (binary_expression "piVar3 == (int *)0x0" identifier == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\nLAB_002dc770:\n    piVar3 = piVar7;\n    piVar1 = *(int **)(param_1 + 2);\n    if (piVar3 != (int *)0x0) goto LAB_002dc480;\n    piVar7 = (int *)0x0;\n  }" { (labeled_statement "LAB_002dc770:\n    piVar3 = piVar7;" statement_identifier : (expression_statement "piVar3 = piVar7;" (assignment_expression "piVar3 = piVar7" identifier = identifier) ;)) (expression_statement "piVar1 = *(int **)(param_1 + 2);" (assignment_expression "piVar1 = *(int **)(param_1 + 2)" identifier = (pointer_expression "*(int **)(param_1 + 2)" * (cast_expression "(int **)(param_1 + 2)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 2)" ( (binary_expression "param_1 + 2" identifier + number_literal) ))))) ;) (if_statement "if (piVar3 != (int *)0x0) goto LAB_002dc480;" if (parenthesized_expression "(piVar3 != (int *)0x0)" ( (binary_expression "piVar3 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_002dc480;" goto statement_identifier ;)) (expression_statement "piVar7 = (int *)0x0;" (assignment_expression "piVar7 = (int *)0x0" identifier = (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) }) (else_clause "else {\n    if (piVar5 != (int *)0x0) {\n      do {\n        piVar8 = piVar7;\n        piVar7 = *(int **)(piVar8 + 4);\n      } while (*(int **)(piVar8 + 4) != (int *)0x0);\n      piVar7 = *(int **)(piVar8 + 6);\n      if (piVar8 != param_1) {\n        *(int **)(piVar3 + 2) = piVar8;\n        *(int **)(piVar8 + 4) = piVar3;\n        piVar1 = piVar8;\n        if (piVar8 != piVar5) {\n          piVar1 = *(int **)(piVar8 + 2);\n          piVar3 = piVar1;\n          if (piVar7 != (int *)0x0) {\n            *(int **)(piVar7 + 2) = piVar1;\n            piVar3 = *(int **)(piVar8 + 2);\n          }\n          *(int **)(piVar3 + 4) = piVar7;\n          *(int **)(piVar8 + 6) = piVar5;\n          *(int **)(*(long *)(param_1 + 6) + 8) = piVar8;\n        }\n        if (*(int **)(param_2 + 8) == param_1) {\n          *(int **)(param_2 + 8) = piVar8;\n          lVar4 = *(long *)(param_1 + 2);\n        }\n        else {\n          lVar4 = *(long *)(param_1 + 2);\n          if (*(int **)(lVar4 + 0x10) == param_1) {\n            *(int **)(lVar4 + 0x10) = piVar8;\n          }\n          else {\n            *(int **)(lVar4 + 0x18) = piVar8;\n          }\n        }\n        *(long *)(piVar8 + 2) = lVar4;\n        iVar2 = *piVar8;\n        *piVar8 = *param_1;\n        *param_1 = iVar2;\n        goto LAB_002dc55f;\n      }\n      goto LAB_002dc770;\n    }\n    piVar1 = *(int **)(param_1 + 2);\nLAB_002dc480:\n    *(int **)(piVar3 + 2) = piVar1;\n    piVar7 = piVar3;\n  }" else (compound_statement "{\n    if (piVar5 != (int *)0x0) {\n      do {\n        piVar8 = piVar7;\n        piVar7 = *(int **)(piVar8 + 4);\n      } while (*(int **)(piVar8 + 4) != (int *)0x0);\n      piVar7 = *(int **)(piVar8 + 6);\n      if (piVar8 != param_1) {\n        *(int **)(piVar3 + 2) = piVar8;\n        *(int **)(piVar8 + 4) = piVar3;\n        piVar1 = piVar8;\n        if (piVar8 != piVar5) {\n          piVar1 = *(int **)(piVar8 + 2);\n          piVar3 = piVar1;\n          if (piVar7 != (int *)0x0) {\n            *(int **)(piVar7 + 2) = piVar1;\n            piVar3 = *(int **)(piVar8 + 2);\n          }\n          *(int **)(piVar3 + 4) = piVar7;\n          *(int **)(piVar8 + 6) = piVar5;\n          *(int **)(*(long *)(param_1 + 6) + 8) = piVar8;\n        }\n        if (*(int **)(param_2 + 8) == param_1) {\n          *(int **)(param_2 + 8) = piVar8;\n          lVar4 = *(long *)(param_1 + 2);\n        }\n        else {\n          lVar4 = *(long *)(param_1 + 2);\n          if (*(int **)(lVar4 + 0x10) == param_1) {\n            *(int **)(lVar4 + 0x10) = piVar8;\n          }\n          else {\n            *(int **)(lVar4 + 0x18) = piVar8;\n          }\n        }\n        *(long *)(piVar8 + 2) = lVar4;\n        iVar2 = *piVar8;\n        *piVar8 = *param_1;\n        *param_1 = iVar2;\n        goto LAB_002dc55f;\n      }\n      goto LAB_002dc770;\n    }\n    piVar1 = *(int **)(param_1 + 2);\nLAB_002dc480:\n    *(int **)(piVar3 + 2) = piVar1;\n    piVar7 = piVar3;\n  }" { (if_statement "if (piVar5 != (int *)0x0) {\n      do {\n        piVar8 = piVar7;\n        piVar7 = *(int **)(piVar8 + 4);\n      } while (*(int **)(piVar8 + 4) != (int *)0x0);\n      piVar7 = *(int **)(piVar8 + 6);\n      if (piVar8 != param_1) {\n        *(int **)(piVar3 + 2) = piVar8;\n        *(int **)(piVar8 + 4) = piVar3;\n        piVar1 = piVar8;\n        if (piVar8 != piVar5) {\n          piVar1 = *(int **)(piVar8 + 2);\n          piVar3 = piVar1;\n          if (piVar7 != (int *)0x0) {\n            *(int **)(piVar7 + 2) = piVar1;\n            piVar3 = *(int **)(piVar8 + 2);\n          }\n          *(int **)(piVar3 + 4) = piVar7;\n          *(int **)(piVar8 + 6) = piVar5;\n          *(int **)(*(long *)(param_1 + 6) + 8) = piVar8;\n        }\n        if (*(int **)(param_2 + 8) == param_1) {\n          *(int **)(param_2 + 8) = piVar8;\n          lVar4 = *(long *)(param_1 + 2);\n        }\n        else {\n          lVar4 = *(long *)(param_1 + 2);\n          if (*(int **)(lVar4 + 0x10) == param_1) {\n            *(int **)(lVar4 + 0x10) = piVar8;\n          }\n          else {\n            *(int **)(lVar4 + 0x18) = piVar8;\n          }\n        }\n        *(long *)(piVar8 + 2) = lVar4;\n        iVar2 = *piVar8;\n        *piVar8 = *param_1;\n        *param_1 = iVar2;\n        goto LAB_002dc55f;\n      }\n      goto LAB_002dc770;\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 "{\n      do {\n        piVar8 = piVar7;\n        piVar7 = *(int **)(piVar8 + 4);\n      } while (*(int **)(piVar8 + 4) != (int *)0x0);\n      piVar7 = *(int **)(piVar8 + 6);\n      if (piVar8 != param_1) {\n        *(int **)(piVar3 + 2) = piVar8;\n        *(int **)(piVar8 + 4) = piVar3;\n        piVar1 = piVar8;\n        if (piVar8 != piVar5) {\n          piVar1 = *(int **)(piVar8 + 2);\n          piVar3 = piVar1;\n          if (piVar7 != (int *)0x0) {\n            *(int **)(piVar7 + 2) = piVar1;\n            piVar3 = *(int **)(piVar8 + 2);\n          }\n          *(int **)(piVar3 + 4) = piVar7;\n          *(int **)(piVar8 + 6) = piVar5;\n          *(int **)(*(long *)(param_1 + 6) + 8) = piVar8;\n        }\n        if (*(int **)(param_2 + 8) == param_1) {\n          *(int **)(param_2 + 8) = piVar8;\n          lVar4 = *(long *)(param_1 + 2);\n        }\n        else {\n          lVar4 = *(long *)(param_1 + 2);\n          if (*(int **)(lVar4 + 0x10) == param_1) {\n            *(int **)(lVar4 + 0x10) = piVar8;\n          }\n          else {\n            *(int **)(lVar4 + 0x18) = piVar8;\n          }\n        }\n        *(long *)(piVar8 + 2) = lVar4;\n        iVar2 = *piVar8;\n        *piVar8 = *param_1;\n        *param_1 = iVar2;\n        goto LAB_002dc55f;\n      }\n      goto LAB_002dc770;\n    }" { (do_statement "do {\n        piVar8 = piVar7;\n        piVar7 = *(int **)(piVar8 + 4);\n      } while (*(int **)(piVar8 + 4) != (int *)0x0);" do (compound_statement "{\n        piVar8 = piVar7;\n        piVar7 = *(int **)(piVar8 + 4);\n      }" { (expression_statement "piVar8 = piVar7;" (assignment_expression "piVar8 = piVar7" identifier = identifier) ;) (expression_statement "piVar7 = *(int **)(piVar8 + 4);" (assignment_expression "piVar7 = *(int **)(piVar8 + 4)" identifier = (pointer_expression "*(int **)(piVar8 + 4)" * (cast_expression "(int **)(piVar8 + 4)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(piVar8 + 4)" ( (binary_expression "piVar8 + 4" identifier + number_literal) ))))) ;) }) while (parenthesized_expression "(*(int **)(piVar8 + 4) != (int *)0x0)" ( (binary_expression "*(int **)(piVar8 + 4) != (int *)0x0" (pointer_expression "*(int **)(piVar8 + 4)" * (cast_expression "(int **)(piVar8 + 4)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(piVar8 + 4)" ( (binary_expression "piVar8 + 4" identifier + number_literal) )))) != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) ;) (expression_statement "piVar7 = *(int **)(piVar8 + 6);" (assignment_expression "piVar7 = *(int **)(piVar8 + 6)" identifier = (pointer_expression "*(int **)(piVar8 + 6)" * (cast_expression "(int **)(piVar8 + 6)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(piVar8 + 6)" ( (binary_expression "piVar8 + 6" identifier + number_literal) ))))) ;) (if_statement "if (piVar8 != param_1) {\n        *(int **)(piVar3 + 2) = piVar8;\n        *(int **)(piVar8 + 4) = piVar3;\n        piVar1 = piVar8;\n        if (piVar8 != piVar5) {\n          piVar1 = *(int **)(piVar8 + 2);\n          piVar3 = piVar1;\n          if (piVar7 != (int *)0x0) {\n            *(int **)(piVar7 + 2) = piVar1;\n            piVar3 = *(int **)(piVar8 + 2);\n          }\n          *(int **)(piVar3 + 4) = piVar7;\n          *(int **)(piVar8 + 6) = piVar5;\n          *(int **)(*(long *)(param_1 + 6) + 8) = piVar8;\n        }\n        if (*(int **)(param_2 + 8) == param_1) {\n          *(int **)(param_2 + 8) = piVar8;\n          lVar4 = *(long *)(param_1 + 2);\n        }\n        else {\n          lVar4 = *(long *)(param_1 + 2);\n          if (*(int **)(lVar4 + 0x10) == param_1) {\n            *(int **)(lVar4 + 0x10) = piVar8;\n          }\n          else {\n            *(int **)(lVar4 + 0x18) = piVar8;\n          }\n        }\n        *(long *)(piVar8 + 2) = lVar4;\n        iVar2 = *piVar8;\n        *piVar8 = *param_1;\n        *param_1 = iVar2;\n        goto LAB_002dc55f;\n      }" if (parenthesized_expression "(piVar8 != param_1)" ( (binary_expression "piVar8 != param_1" identifier != identifier) )) (compound_statement "{\n        *(int **)(piVar3 + 2) = piVar8;\n        *(int **)(piVar8 + 4) = piVar3;\n        piVar1 = piVar8;\n        if (piVar8 != piVar5) {\n          piVar1 = *(int **)(piVar8 + 2);\n          piVar3 = piVar1;\n          if (piVar7 != (int *)0x0) {\n            *(int **)(piVar7 + 2) = piVar1;\n            piVar3 = *(int **)(piVar8 + 2);\n          }\n          *(int **)(piVar3 + 4) = piVar7;\n          *(int **)(piVar8 + 6) = piVar5;\n          *(int **)(*(long *)(param_1 + 6) + 8) = piVar8;\n        }\n        if (*(int **)(param_2 + 8) == param_1) {\n          *(int **)(param_2 + 8) = piVar8;\n          lVar4 = *(long *)(param_1 + 2);\n        }\n        else {\n          lVar4 = *(long *)(param_1 + 2);\n          if (*(int **)(lVar4 + 0x10) == param_1) {\n            *(int **)(lVar4 + 0x10) = piVar8;\n          }\n          else {\n            *(int **)(lVar4 + 0x18) = piVar8;\n          }\n        }\n        *(long *)(piVar8 + 2) = lVar4;\n        iVar2 = *piVar8;\n        *piVar8 = *param_1;\n        *param_1 = iVar2;\n        goto LAB_002dc55f;\n      }" { (expression_statement "*(int **)(piVar3 + 2) = piVar8;" (assignment_expression "*(int **)(piVar3 + 2) = piVar8" (pointer_expression "*(int **)(piVar3 + 2)" * (cast_expression "(int **)(piVar3 + 2)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(piVar3 + 2)" ( (binary_expression "piVar3 + 2" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int **)(piVar8 + 4) = piVar3;" (assignment_expression "*(int **)(piVar8 + 4) = piVar3" (pointer_expression "*(int **)(piVar8 + 4)" * (cast_expression "(int **)(piVar8 + 4)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(piVar8 + 4)" ( (binary_expression "piVar8 + 4" identifier + number_literal) )))) = identifier) ;) (expression_statement "piVar1 = piVar8;" (assignment_expression "piVar1 = piVar8" identifier = identifier) ;) (if_statement "if (piVar8 != piVar5) {\n          piVar1 = *(int **)(piVar8 + 2);\n          piVar3 = piVar1;\n          if (piVar7 != (int *)0x0) {\n            *(int **)(piVar7 + 2) = piVar1;\n            piVar3 = *(int **)(piVar8 + 2);\n          }\n          *(int **)(piVar3 + 4) = piVar7;\n          *(int **)(piVar8 + 6) = piVar5;\n          *(int **)(*(long *)(param_1 + 6) + 8) = piVar8;\n        }" if (parenthesized_expression "(piVar8 != piVar5)" ( (binary_expression "piVar8 != piVar5" identifier != identifier) )) (compound_statement "{\n          piVar1 = *(int **)(piVar8 + 2);\n          piVar3 = piVar1;\n          if (piVar7 != (int *)0x0) {\n            *(int **)(piVar7 + 2) = piVar1;\n            piVar3 = *(int **)(piVar8 + 2);\n          }\n          *(int **)(piVar3 + 4) = piVar7;\n          *(int **)(piVar8 + 6) = piVar5;\n          *(int **)(*(long *)(param_1 + 6) + 8) = piVar8;\n        }" { (expression_statement "piVar1 = *(int **)(piVar8 + 2);" (assignment_expression "piVar1 = *(int **)(piVar8 + 2)" identifier = (pointer_expression "*(int **)(piVar8 + 2)" * (cast_expression "(int **)(piVar8 + 2)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(piVar8 + 2)" ( (binary_expression "piVar8 + 2" identifier + number_literal) ))))) ;) (expression_statement "piVar3 = piVar1;" (assignment_expression "piVar3 = piVar1" identifier = identifier) ;) (if_statement "if (piVar7 != (int *)0x0) {\n            *(int **)(piVar7 + 2) = piVar1;\n            piVar3 = *(int **)(piVar8 + 2);\n          }" if (parenthesized_expression "(piVar7 != (int *)0x0)" ( (binary_expression "piVar7 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n            *(int **)(piVar7 + 2) = piVar1;\n            piVar3 = *(int **)(piVar8 + 2);\n          }" { (expression_statement "*(int **)(piVar7 + 2) = piVar1;" (assignment_expression "*(int **)(piVar7 + 2) = piVar1" (pointer_expression "*(int **)(piVar7 + 2)" * (cast_expression "(int **)(piVar7 + 2)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(piVar7 + 2)" ( (binary_expression "piVar7 + 2" identifier + number_literal) )))) = identifier) ;) (expression_statement "piVar3 = *(int **)(piVar8 + 2);" (assignment_expression "piVar3 = *(int **)(piVar8 + 2)" identifier = (pointer_expression "*(int **)(piVar8 + 2)" * (cast_expression "(int **)(piVar8 + 2)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(piVar8 + 2)" ( (binary_expression "piVar8 + 2" identifier + number_literal) ))))) ;) })) (expression_statement "*(int **)(piVar3 + 4) = piVar7;" (assignment_expression "*(int **)(piVar3 + 4) = piVar7" (pointer_expression "*(int **)(piVar3 + 4)" * (cast_expression "(int **)(piVar3 + 4)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(piVar3 + 4)" ( (binary_expression "piVar3 + 4" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int **)(piVar8 + 6) = piVar5;" (assignment_expression "*(int **)(piVar8 + 6) = piVar5" (pointer_expression "*(int **)(piVar8 + 6)" * (cast_expression "(int **)(piVar8 + 6)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(piVar8 + 6)" ( (binary_expression "piVar8 + 6" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int **)(*(long *)(param_1 + 6) + 8) = piVar8;" (assignment_expression "*(int **)(*(long *)(param_1 + 6) + 8) = piVar8" (pointer_expression "*(int **)(*(long *)(param_1 + 6) + 8)" * (cast_expression "(int **)(*(long *)(param_1 + 6) + 8)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(long *)(param_1 + 6) + 8)" ( (binary_expression "*(long *)(param_1 + 6) + 8" (pointer_expression "*(long *)(param_1 + 6)" * (cast_expression "(long *)(param_1 + 6)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 6)" ( (binary_expression "param_1 + 6" identifier + number_literal) )))) + number_literal) )))) = identifier) ;) })) (if_statement "if (*(int **)(param_2 + 8) == param_1) {\n          *(int **)(param_2 + 8) = piVar8;\n          lVar4 = *(long *)(param_1 + 2);\n        }\n        else {\n          lVar4 = *(long *)(param_1 + 2);\n          if (*(int **)(lVar4 + 0x10) == param_1) {\n            *(int **)(lVar4 + 0x10) = piVar8;\n          }\n          else {\n            *(int **)(lVar4 + 0x18) = piVar8;\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          *(int **)(param_2 + 8) = piVar8;\n          lVar4 = *(long *)(param_1 + 2);\n        }" { (expression_statement "*(int **)(param_2 + 8) = piVar8;" (assignment_expression "*(int **)(param_2 + 8) = piVar8" (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 "lVar4 = *(long *)(param_1 + 2);" (assignment_expression "lVar4 = *(long *)(param_1 + 2)" identifier = (pointer_expression "*(long *)(param_1 + 2)" * (cast_expression "(long *)(param_1 + 2)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 2)" ( (binary_expression "param_1 + 2" identifier + number_literal) ))))) ;) }) (else_clause "else {\n          lVar4 = *(long *)(param_1 + 2);\n          if (*(int **)(lVar4 + 0x10) == param_1) {\n            *(int **)(lVar4 + 0x10) = piVar8;\n          }\n          else {\n            *(int **)(lVar4 + 0x18) = piVar8;\n          }\n        }" else (compound_statement "{\n          lVar4 = *(long *)(param_1 + 2);\n          if (*(int **)(lVar4 + 0x10) == param_1) {\n            *(int **)(lVar4 + 0x10) = piVar8;\n          }\n          else {\n            *(int **)(lVar4 + 0x18) = piVar8;\n          }\n        }" { (expression_statement "lVar4 = *(long *)(param_1 + 2);" (assignment_expression "lVar4 = *(long *)(param_1 + 2)" identifier = (pointer_expression "*(long *)(param_1 + 2)" * (cast_expression "(long *)(param_1 + 2)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 2)" ( (binary_expression "param_1 + 2" identifier + number_literal) ))))) ;) (if_statement "if (*(int **)(lVar4 + 0x10) == param_1) {\n            *(int **)(lVar4 + 0x10) = piVar8;\n          }\n          else {\n            *(int **)(lVar4 + 0x18) = piVar8;\n          }" if (parenthesized_expression "(*(int **)(lVar4 + 0x10) == param_1)" ( (binary_expression "*(int **)(lVar4 + 0x10) == param_1" (pointer_expression "*(int **)(lVar4 + 0x10)" * (cast_expression "(int **)(lVar4 + 0x10)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(lVar4 + 0x10)" ( (binary_expression "lVar4 + 0x10" identifier + number_literal) )))) == identifier) )) (compound_statement "{\n            *(int **)(lVar4 + 0x10) = piVar8;\n          }" { (expression_statement "*(int **)(lVar4 + 0x10) = piVar8;" (assignment_expression "*(int **)(lVar4 + 0x10) = piVar8" (pointer_expression "*(int **)(lVar4 + 0x10)" * (cast_expression "(int **)(lVar4 + 0x10)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(lVar4 + 0x10)" ( (binary_expression "lVar4 + 0x10" identifier + number_literal) )))) = identifier) ;) }) (else_clause "else {\n            *(int **)(lVar4 + 0x18) = piVar8;\n          }" else (compound_statement "{\n            *(int **)(lVar4 + 0x18) = piVar8;\n          }" { (expression_statement "*(int **)(lVar4 + 0x18) = piVar8;" (assignment_expression "*(int **)(lVar4 + 0x18) = piVar8" (pointer_expression "*(int **)(lVar4 + 0x18)" * (cast_expression "(int **)(lVar4 + 0x18)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(lVar4 + 0x18)" ( (binary_expression "lVar4 + 0x18" identifier + number_literal) )))) = identifier) ;) }))) }))) (expression_statement "*(long *)(piVar8 + 2) = lVar4;" (assignment_expression "*(long *)(piVar8 + 2) = lVar4" (pointer_expression "*(long *)(piVar8 + 2)" * (cast_expression "(long *)(piVar8 + 2)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar8 + 2)" ( (binary_expression "piVar8 + 2" identifier + number_literal) )))) = identifier) ;) (expression_statement "iVar2 = *piVar8;" (assignment_expression "iVar2 = *piVar8" identifier = (pointer_expression "*piVar8" * identifier)) ;) (expression_statement "*piVar8 = *param_1;" (assignment_expression "*piVar8 = *param_1" (pointer_expression "*piVar8" * identifier) = (pointer_expression "*param_1" * identifier)) ;) (expression_statement "*param_1 = iVar2;" (assignment_expression "*param_1 = iVar2" (pointer_expression "*param_1" * identifier) = identifier) ;) (goto_statement "goto LAB_002dc55f;" goto statement_identifier ;) })) (goto_statement "goto LAB_002dc770;" goto statement_identifier ;) })) (expression_statement "piVar1 = *(int **)(param_1 + 2);" (assignment_expression "piVar1 = *(int **)(param_1 + 2)" identifier = (pointer_expression "*(int **)(param_1 + 2)" * (cast_expression "(int **)(param_1 + 2)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 2)" ( (binary_expression "param_1 + 2" identifier + number_literal) ))))) ;) (labeled_statement "LAB_002dc480:\n    *(int **)(piVar3 + 2) = piVar1;" statement_identifier : (expression_statement "*(int **)(piVar3 + 2) = piVar1;" (assignment_expression "*(int **)(piVar3 + 2) = piVar1" (pointer_expression "*(int **)(piVar3 + 2)" * (cast_expression "(int **)(piVar3 + 2)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(piVar3 + 2)" ( (binary_expression "piVar3 + 2" identifier + number_literal) )))) = identifier) ;)) (expression_statement "piVar7 = piVar3;" (assignment_expression "piVar7 = piVar3" identifier = identifier) ;) }))) (if_statement "if (*(int **)(param_2 + 8) == param_1) {\n    *(int **)(param_2 + 8) = piVar7;\n  }\n  else {\n    lVar4 = *(long *)(param_1 + 2);\n    if (*(int **)(lVar4 + 0x10) == param_1) {\n      *(int **)(lVar4 + 0x10) = piVar7;\n    }\n    else {\n      *(int **)(lVar4 + 0x18) = piVar7;\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    *(int **)(param_2 + 8) = piVar7;\n  }" { (expression_statement "*(int **)(param_2 + 8) = piVar7;" (assignment_expression "*(int **)(param_2 + 8) = piVar7" (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) ;) }) (else_clause "else {\n    lVar4 = *(long *)(param_1 + 2);\n    if (*(int **)(lVar4 + 0x10) == param_1) {\n      *(int **)(lVar4 + 0x10) = piVar7;\n    }\n    else {\n      *(int **)(lVar4 + 0x18) = piVar7;\n    }\n  }" else (compound_statement "{\n    lVar4 = *(long *)(param_1 + 2);\n    if (*(int **)(lVar4 + 0x10) == param_1) {\n      *(int **)(lVar4 + 0x10) = piVar7;\n    }\n    else {\n      *(int **)(lVar4 + 0x18) = piVar7;\n    }\n  }" { (expression_statement "lVar4 = *(long *)(param_1 + 2);" (assignment_expression "lVar4 = *(long *)(param_1 + 2)" identifier = (pointer_expression "*(long *)(param_1 + 2)" * (cast_expression "(long *)(param_1 + 2)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 2)" ( (binary_expression "param_1 + 2" identifier + number_literal) ))))) ;) (if_statement "if (*(int **)(lVar4 + 0x10) == param_1) {\n      *(int **)(lVar4 + 0x10) = piVar7;\n    }\n    else {\n      *(int **)(lVar4 + 0x18) = piVar7;\n    }" if (parenthesized_expression "(*(int **)(lVar4 + 0x10) == param_1)" ( (binary_expression "*(int **)(lVar4 + 0x10) == param_1" (pointer_expression "*(int **)(lVar4 + 0x10)" * (cast_expression "(int **)(lVar4 + 0x10)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(lVar4 + 0x10)" ( (binary_expression "lVar4 + 0x10" identifier + number_literal) )))) == identifier) )) (compound_statement "{\n      *(int **)(lVar4 + 0x10) = piVar7;\n    }" { (expression_statement "*(int **)(lVar4 + 0x10) = piVar7;" (assignment_expression "*(int **)(lVar4 + 0x10) = piVar7" (pointer_expression "*(int **)(lVar4 + 0x10)" * (cast_expression "(int **)(lVar4 + 0x10)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(lVar4 + 0x10)" ( (binary_expression "lVar4 + 0x10" identifier + number_literal) )))) = identifier) ;) }) (else_clause "else {\n      *(int **)(lVar4 + 0x18) = piVar7;\n    }" else (compound_statement "{\n      *(int **)(lVar4 + 0x18) = piVar7;\n    }" { (expression_statement "*(int **)(lVar4 + 0x18) = piVar7;" (assignment_expression "*(int **)(lVar4 + 0x18) = piVar7" (pointer_expression "*(int **)(lVar4 + 0x18)" * (cast_expression "(int **)(lVar4 + 0x18)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(lVar4 + 0x18)" ( (binary_expression "lVar4 + 0x18" identifier + number_literal) )))) = identifier) ;) }))) }))) (if_statement "if (*(int **)(param_2 + 0x10) == param_1) {\n    piVar3 = piVar7;\n    if (*(long *)(param_1 + 6) == 0) {\n      *(undefined8 *)(param_2 + 0x10) = *(undefined8 *)(param_1 + 2);\n    }\n    else {\n      do {\n        piVar5 = piVar3;\n        piVar3 = *(int **)(piVar5 + 4);\n      } while (piVar3 != (int *)0x0);\n      *(int **)(param_2 + 0x10) = piVar5;\n    }\n  }" if (parenthesized_expression "(*(int **)(param_2 + 0x10) == param_1)" ( (binary_expression "*(int **)(param_2 + 0x10) == param_1" (pointer_expression "*(int **)(param_2 + 0x10)" * (cast_expression "(int **)(param_2 + 0x10)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_2 + 0x10)" ( (binary_expression "param_2 + 0x10" identifier + number_literal) )))) == identifier) )) (compound_statement "{\n    piVar3 = piVar7;\n    if (*(long *)(param_1 + 6) == 0) {\n      *(undefined8 *)(param_2 + 0x10) = *(undefined8 *)(param_1 + 2);\n    }\n    else {\n      do {\n        piVar5 = piVar3;\n        piVar3 = *(int **)(piVar5 + 4);\n      } while (piVar3 != (int *)0x0);\n      *(int **)(param_2 + 0x10) = piVar5;\n    }\n  }" { (expression_statement "piVar3 = piVar7;" (assignment_expression "piVar3 = piVar7" identifier = identifier) ;) (if_statement "if (*(long *)(param_1 + 6) == 0) {\n      *(undefined8 *)(param_2 + 0x10) = *(undefined8 *)(param_1 + 2);\n    }\n    else {\n      do {\n        piVar5 = piVar3;\n        piVar3 = *(int **)(piVar5 + 4);\n      } while (piVar3 != (int *)0x0);\n      *(int **)(param_2 + 0x10) = piVar5;\n    }" if (parenthesized_expression "(*(long *)(param_1 + 6) == 0)" ( (binary_expression "*(long *)(param_1 + 6) == 0" (pointer_expression "*(long *)(param_1 + 6)" * (cast_expression "(long *)(param_1 + 6)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 6)" ( (binary_expression "param_1 + 6" identifier + number_literal) )))) == number_literal) )) (compound_statement "{\n      *(undefined8 *)(param_2 + 0x10) = *(undefined8 *)(param_1 + 2);\n    }" { (expression_statement "*(undefined8 *)(param_2 + 0x10) = *(undefined8 *)(param_1 + 2);" (assignment_expression "*(undefined8 *)(param_2 + 0x10) = *(undefined8 *)(param_1 + 2)" (pointer_expression "*(undefined8 *)(param_2 + 0x10)" * (cast_expression "(undefined8 *)(param_2 + 0x10)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x10)" ( (binary_expression "param_2 + 0x10" identifier + number_literal) )))) = (pointer_expression "*(undefined8 *)(param_1 + 2)" * (cast_expression "(undefined8 *)(param_1 + 2)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 2)" ( (binary_expression "param_1 + 2" identifier + number_literal) ))))) ;) }) (else_clause "else {\n      do {\n        piVar5 = piVar3;\n        piVar3 = *(int **)(piVar5 + 4);\n      } while (piVar3 != (int *)0x0);\n      *(int **)(param_2 + 0x10) = piVar5;\n    }" else (compound_statement "{\n      do {\n        piVar5 = piVar3;\n        piVar3 = *(int **)(piVar5 + 4);\n      } while (piVar3 != (int *)0x0);\n      *(int **)(param_2 + 0x10) = piVar5;\n    }" { (do_statement "do {\n        piVar5 = piVar3;\n        piVar3 = *(int **)(piVar5 + 4);\n      } while (piVar3 != (int *)0x0);" do (compound_statement "{\n        piVar5 = piVar3;\n        piVar3 = *(int **)(piVar5 + 4);\n      }" { (expression_statement "piVar5 = piVar3;" (assignment_expression "piVar5 = piVar3" identifier = identifier) ;) (expression_statement "piVar3 = *(int **)(piVar5 + 4);" (assignment_expression "piVar3 = *(int **)(piVar5 + 4)" identifier = (pointer_expression "*(int **)(piVar5 + 4)" * (cast_expression "(int **)(piVar5 + 4)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(piVar5 + 4)" ( (binary_expression "piVar5 + 4" identifier + number_literal) ))))) ;) }) while (parenthesized_expression "(piVar3 != (int *)0x0)" ( (binary_expression "piVar3 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) ;) (expression_statement "*(int **)(param_2 + 0x10) = piVar5;" (assignment_expression "*(int **)(param_2 + 0x10) = piVar5" (pointer_expression "*(int **)(param_2 + 0x10)" * (cast_expression "(int **)(param_2 + 0x10)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_2 + 0x10)" ( (binary_expression "param_2 + 0x10" identifier + number_literal) )))) = identifier) ;) }))) })) (expression_statement "iVar2 = *param_1;" (assignment_expression "iVar2 = *param_1" identifier = (pointer_expression "*param_1" * identifier)) ;) (if_statement "if (*(int **)(param_2 + 0x18) == param_1) {\n    piVar3 = piVar7;\n    if (*(long *)(param_1 + 4) == 0) {\n      *(undefined8 *)(param_2 + 0x18) = *(undefined8 *)(param_1 + 2);\n    }\n    else {\n      do {\n        piVar5 = piVar3;\n        piVar3 = *(int **)(piVar5 + 6);\n      } while (piVar3 != (int *)0x0);\n      *(int **)(param_2 + 0x18) = piVar5;\n    }\n  }" if (parenthesized_expression "(*(int **)(param_2 + 0x18) == param_1)" ( (binary_expression "*(int **)(param_2 + 0x18) == param_1" (pointer_expression "*(int **)(param_2 + 0x18)" * (cast_expression "(int **)(param_2 + 0x18)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_2 + 0x18)" ( (binary_expression "param_2 + 0x18" identifier + number_literal) )))) == identifier) )) (compound_statement "{\n    piVar3 = piVar7;\n    if (*(long *)(param_1 + 4) == 0) {\n      *(undefined8 *)(param_2 + 0x18) = *(undefined8 *)(param_1 + 2);\n    }\n    else {\n      do {\n        piVar5 = piVar3;\n        piVar3 = *(int **)(piVar5 + 6);\n      } while (piVar3 != (int *)0x0);\n      *(int **)(param_2 + 0x18) = piVar5;\n    }\n  }" { (expression_statement "piVar3 = piVar7;" (assignment_expression "piVar3 = piVar7" identifier = identifier) ;) (if_statement "if (*(long *)(param_1 + 4) == 0) {\n      *(undefined8 *)(param_2 + 0x18) = *(undefined8 *)(param_1 + 2);\n    }\n    else {\n      do {\n        piVar5 = piVar3;\n        piVar3 = *(int **)(piVar5 + 6);\n      } while (piVar3 != (int *)0x0);\n      *(int **)(param_2 + 0x18) = piVar5;\n    }" if (parenthesized_expression "(*(long *)(param_1 + 4) == 0)" ( (binary_expression "*(long *)(param_1 + 4) == 0" (pointer_expression "*(long *)(param_1 + 4)" * (cast_expression "(long *)(param_1 + 4)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) )))) == number_literal) )) (compound_statement "{\n      *(undefined8 *)(param_2 + 0x18) = *(undefined8 *)(param_1 + 2);\n    }" { (expression_statement "*(undefined8 *)(param_2 + 0x18) = *(undefined8 *)(param_1 + 2);" (assignment_expression "*(undefined8 *)(param_2 + 0x18) = *(undefined8 *)(param_1 + 2)" (pointer_expression "*(undefined8 *)(param_2 + 0x18)" * (cast_expression "(undefined8 *)(param_2 + 0x18)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x18)" ( (binary_expression "param_2 + 0x18" identifier + number_literal) )))) = (pointer_expression "*(undefined8 *)(param_1 + 2)" * (cast_expression "(undefined8 *)(param_1 + 2)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 2)" ( (binary_expression "param_1 + 2" identifier + number_literal) ))))) ;) }) (else_clause "else {\n      do {\n        piVar5 = piVar3;\n        piVar3 = *(int **)(piVar5 + 6);\n      } while (piVar3 != (int *)0x0);\n      *(int **)(param_2 + 0x18) = piVar5;\n    }" else (compound_statement "{\n      do {\n        piVar5 = piVar3;\n        piVar3 = *(int **)(piVar5 + 6);\n      } while (piVar3 != (int *)0x0);\n      *(int **)(param_2 + 0x18) = piVar5;\n    }" { (do_statement "do {\n        piVar5 = piVar3;\n        piVar3 = *(int **)(piVar5 + 6);\n      } while (piVar3 != (int *)0x0);" do (compound_statement "{\n        piVar5 = piVar3;\n        piVar3 = *(int **)(piVar5 + 6);\n      }" { (expression_statement "piVar5 = piVar3;" (assignment_expression "piVar5 = piVar3" identifier = identifier) ;) (expression_statement "piVar3 = *(int **)(piVar5 + 6);" (assignment_expression "piVar3 = *(int **)(piVar5 + 6)" identifier = (pointer_expression "*(int **)(piVar5 + 6)" * (cast_expression "(int **)(piVar5 + 6)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(piVar5 + 6)" ( (binary_expression "piVar5 + 6" identifier + number_literal) ))))) ;) }) while (parenthesized_expression "(piVar3 != (int *)0x0)" ( (binary_expression "piVar3 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) ;) (expression_statement "*(int **)(param_2 + 0x18) = piVar5;" (assignment_expression "*(int **)(param_2 + 0x18) = piVar5" (pointer_expression "*(int **)(param_2 + 0x18)" * (cast_expression "(int **)(param_2 + 0x18)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_2 + 0x18)" ( (binary_expression "param_2 + 0x18" identifier + number_literal) )))) = identifier) ;) }))) })) (labeled_statement "LAB_002dc55f:\n  if (iVar2 == 0) {\n    return;\n  }" statement_identifier : (if_statement "if (iVar2 == 0) {\n    return;\n  }" if (parenthesized_expression "(iVar2 == 0)" ( (binary_expression "iVar2 == 0" identifier == number_literal) )) (compound_statement "{\n    return;\n  }" { (return_statement "return;" return ;) }))) (do_statement "do {\n    piVar3 = piVar1;\n    if (*(int **)(param_2 + 8) == piVar7) {\nLAB_002dc6f0:\n      if (piVar7 == (int *)0x0) {\n        return;\n      }\nLAB_002dc6f5:\n      *piVar7 = 1;\n      return;\n    }\n    if ((piVar7 != (int *)0x0) && (*piVar7 != 1)) goto LAB_002dc6f5;\n    piVar5 = *(int **)(piVar3 + 4);\n    if (piVar5 != piVar7) {\n      piVar8 = *(int **)(piVar5 + 6);\n      piVar1 = piVar5;\n      if (*piVar5 == 0) {\n        *piVar5 = 1;\n        *piVar3 = 0;\n        *(int **)(piVar3 + 4) = piVar8;\n        if (piVar8 != (int *)0x0) {\n          *(int **)(piVar8 + 2) = piVar3;\n        }\n        lVar4 = *(long *)(piVar3 + 2);\n        *(long *)(piVar5 + 2) = lVar4;\n        if (piVar3 == *(int **)(param_2 + 8)) {\n          *(int **)(param_2 + 8) = piVar5;\n          piVar1 = *(int **)(piVar3 + 4);\n        }\n        else if (piVar3 == *(int **)(lVar4 + 0x18)) {\n          *(int **)(lVar4 + 0x18) = piVar5;\n          piVar1 = piVar8;\n        }\n        else {\n          *(int **)(lVar4 + 0x10) = piVar5;\n          piVar1 = *(int **)(piVar3 + 4);\n        }\n        *(int **)(piVar5 + 6) = piVar3;\n        piVar8 = *(int **)(piVar1 + 6);\n        *(int **)(piVar3 + 2) = piVar5;\n      }\n      if ((piVar8 == (int *)0x0) || (*piVar8 == 1)) {\n        piVar5 = *(int **)(piVar1 + 4);\n        if ((piVar5 == (int *)0x0) || (*piVar5 == 1)) goto LAB_002dc5e8;\nLAB_002dc82b:\n        piVar6 = *(int **)(piVar3 + 4);\n        *piVar1 = *piVar3;\n        *piVar3 = 1;\nLAB_002dc83b:\n        *piVar5 = 1;\n      }\n      else {\n        piVar5 = *(int **)(piVar1 + 4);\n        if ((piVar5 != (int *)0x0) && (*piVar5 != 1)) goto LAB_002dc82b;\n        lVar4 = *(long *)(piVar8 + 4);\n        *piVar8 = 1;\n        *piVar1 = 0;\n        *(long *)(piVar1 + 6) = lVar4;\n        if (lVar4 != 0) {\n          *(int **)(lVar4 + 8) = piVar1;\n        }\n        lVar4 = *(long *)(piVar1 + 2);\n        *(long *)(piVar8 + 2) = lVar4;\n        if (piVar1 == *(int **)(param_2 + 8)) {\n          *(int **)(param_2 + 8) = piVar8;\n        }\n        else if (piVar1 == *(int **)(lVar4 + 0x10)) {\n          *(int **)(lVar4 + 0x10) = piVar8;\n        }\n        else {\n          *(int **)(lVar4 + 0x18) = piVar8;\n        }\n        *(int **)(piVar8 + 4) = piVar1;\n        piVar6 = *(int **)(piVar3 + 4);\n        *(int **)(piVar1 + 2) = piVar8;\n        piVar5 = *(int **)(piVar6 + 4);\n        *piVar6 = *piVar3;\n        *piVar3 = 1;\n        if (piVar5 != (int *)0x0) goto LAB_002dc83b;\n      }\n      lVar4 = *(long *)(piVar6 + 6);\n      *(long *)(piVar3 + 4) = lVar4;\n      if (lVar4 != 0) {\n        *(int **)(lVar4 + 8) = piVar3;\n      }\n      lVar4 = *(long *)(piVar3 + 2);\n      *(long *)(piVar6 + 2) = lVar4;\n      if (piVar3 == *(int **)(param_2 + 8)) {\n        *(int **)(param_2 + 8) = piVar6;\n      }\n      else if (piVar3 == *(int **)(lVar4 + 0x18)) {\n        *(int **)(lVar4 + 0x18) = piVar6;\n      }\n      else {\n        *(int **)(lVar4 + 0x10) = piVar6;\n      }\n      *(int **)(piVar6 + 6) = piVar3;\n      *(int **)(piVar3 + 2) = piVar6;\n      goto LAB_002dc6f0;\n    }\n    piVar5 = *(int **)(piVar3 + 6);\n    piVar8 = *(int **)(piVar5 + 4);\n    piVar1 = piVar5;\n    if (*piVar5 == 0) {\n      *piVar5 = 1;\n      *piVar3 = 0;\n      *(int **)(piVar3 + 6) = piVar8;\n      if (piVar8 != (int *)0x0) {\n        *(int **)(piVar8 + 2) = piVar3;\n      }\n      lVar4 = *(long *)(piVar3 + 2);\n      *(long *)(piVar5 + 2) = lVar4;\n      if (piVar3 == *(int **)(param_2 + 8)) {\n        *(int **)(param_2 + 8) = piVar5;\n        piVar1 = *(int **)(piVar3 + 6);\n      }\n      else if (piVar3 == *(int **)(lVar4 + 0x10)) {\n        *(int **)(lVar4 + 0x10) = piVar5;\n        piVar1 = piVar8;\n      }\n      else {\n        *(int **)(lVar4 + 0x18) = piVar5;\n        piVar1 = *(int **)(piVar3 + 6);\n      }\n      *(int **)(piVar5 + 4) = piVar3;\n      piVar8 = *(int **)(piVar1 + 4);\n      *(int **)(piVar3 + 2) = piVar5;\n    }\n    if ((piVar8 != (int *)0x0) && (*piVar8 != 1)) {\n      piVar5 = *(int **)(piVar1 + 6);\n      if ((piVar5 != (int *)0x0) && (*piVar5 != 1)) goto LAB_002dc69f;\n      lVar4 = *(long *)(piVar8 + 6);\n      *piVar8 = 1;\n      *piVar1 = 0;\n      *(long *)(piVar1 + 4) = lVar4;\n      if (lVar4 != 0) {\n        *(int **)(lVar4 + 8) = piVar1;\n      }\n      lVar4 = *(long *)(piVar1 + 2);\n      *(long *)(piVar8 + 2) = lVar4;\n      if (piVar1 == *(int **)(param_2 + 8)) {\n        *(int **)(param_2 + 8) = piVar8;\n      }\n      else if (piVar1 == *(int **)(lVar4 + 0x18)) {\n        *(int **)(lVar4 + 0x18) = piVar8;\n      }\n      else {\n        *(int **)(lVar4 + 0x10) = piVar8;\n      }\n      *(int **)(piVar8 + 6) = piVar1;\n      *(int **)(piVar1 + 2) = piVar8;\n      piVar8 = *(int **)(piVar3 + 6);\n      piVar5 = *(int **)(piVar8 + 6);\n      *piVar8 = *piVar3;\n      *piVar3 = 1;\n      if (piVar5 != (int *)0x0) goto LAB_002dc6af;\nLAB_002dc6b5:\n      lVar4 = *(long *)(piVar8 + 4);\n      *(long *)(piVar3 + 6) = lVar4;\n      if (lVar4 != 0) {\n        *(int **)(lVar4 + 8) = piVar3;\n      }\n      lVar4 = *(long *)(piVar3 + 2);\n      *(long *)(piVar8 + 2) = lVar4;\n      if (piVar3 == *(int **)(param_2 + 8)) {\n        *(int **)(param_2 + 8) = piVar8;\n      }\n      else if (piVar3 == *(int **)(lVar4 + 0x10)) {\n        *(int **)(lVar4 + 0x10) = piVar8;\n      }\n      else {\n        *(int **)(lVar4 + 0x18) = piVar8;\n      }\n      *(int **)(piVar8 + 4) = piVar3;\n      *(int **)(piVar3 + 2) = piVar8;\n      goto LAB_002dc6f0;\n    }\n    piVar5 = *(int **)(piVar1 + 6);\n    if ((piVar5 != (int *)0x0) && (*piVar5 != 1)) {\nLAB_002dc69f:\n      piVar8 = *(int **)(piVar3 + 6);\n      *piVar1 = *piVar3;\n      *piVar3 = 1;\nLAB_002dc6af:\n      *piVar5 = 1;\n      goto LAB_002dc6b5;\n    }\nLAB_002dc5e8:\n    *piVar1 = 0;\n    piVar1 = *(int **)(piVar3 + 2);\n    piVar7 = piVar3;\n  } while( true );" do (compound_statement "{\n    piVar3 = piVar1;\n    if (*(int **)(param_2 + 8) == piVar7) {\nLAB_002dc6f0:\n      if (piVar7 == (int *)0x0) {\n        return;\n      }\nLAB_002dc6f5:\n      *piVar7 = 1;\n      return;\n    }\n    if ((piVar7 != (int *)0x0) && (*piVar7 != 1)) goto LAB_002dc6f5;\n    piVar5 = *(int **)(piVar3 + 4);\n    if (piVar5 != piVar7) {\n      piVar8 = *(int **)(piVar5 + 6);\n      piVar1 = piVar5;\n      if (*piVar5 == 0) {\n        *piVar5 = 1;\n        *piVar3 = 0;\n        *(int **)(piVar3 + 4) = piVar8;\n        if (piVar8 != (int *)0x0) {\n          *(int **)(piVar8 + 2) = piVar3;\n        }\n        lVar4 = *(long *)(piVar3 + 2);\n        *(long *)(piVar5 + 2) = lVar4;\n        if (piVar3 == *(int **)(param_2 + 8)) {\n          *(int **)(param_2 + 8) = piVar5;\n          piVar1 = *(int **)(piVar3 + 4);\n        }\n        else if (piVar3 == *(int **)(lVar4 + 0x18)) {\n          *(int **)(lVar4 + 0x18) = piVar5;\n          piVar1 = piVar8;\n        }\n        else {\n          *(int **)(lVar4 + 0x10) = piVar5;\n          piVar1 = *(int **)(piVar3 + 4);\n        }\n        *(int **)(piVar5 + 6) = piVar3;\n        piVar8 = *(int **)(piVar1 + 6);\n        *(int **)(piVar3 + 2) = piVar5;\n      }\n      if ((piVar8 == (int *)0x0) || (*piVar8 == 1)) {\n        piVar5 = *(int **)(piVar1 + 4);\n        if ((piVar5 == (int *)0x0) || (*piVar5 == 1)) goto LAB_002dc5e8;\nLAB_002dc82b:\n        piVar6 = *(int **)(piVar3 + 4);\n        *piVar1 = *piVar3;\n        *piVar3 = 1;\nLAB_002dc83b:\n        *piVar5 = 1;\n      }\n      else {\n        piVar5 = *(int **)(piVar1 + 4);\n        if ((piVar5 != (int *)0x0) && (*piVar5 != 1)) goto LAB_002dc82b;\n        lVar4 = *(long *)(piVar8 + 4);\n        *piVar8 = 1;\n        *piVar1 = 0;\n        *(long *)(piVar1 + 6) = lVar4;\n        if (lVar4 != 0) {\n          *(int **)(lVar4 + 8) = piVar1;\n        }\n        lVar4 = *(long *)(piVar1 + 2);\n        *(long *)(piVar8 + 2) = lVar4;\n        if (piVar1 == *(int **)(param_2 + 8)) {\n          *(int **)(param_2 + 8) = piVar8;\n        }\n        else if (piVar1 == *(int **)(lVar4 + 0x10)) {\n          *(int **)(lVar4 + 0x10) = piVar8;\n        }\n        else {\n          *(int **)(lVar4 + 0x18) = piVar8;\n        }\n        *(int **)(piVar8 + 4) = piVar1;\n        piVar6 = *(int **)(piVar3 + 4);\n        *(int **)(piVar1 + 2) = piVar8;\n        piVar5 = *(int **)(piVar6 + 4);\n        *piVar6 = *piVar3;\n        *piVar3 = 1;\n        if (piVar5 != (int *)0x0) goto LAB_002dc83b;\n      }\n      lVar4 = *(long *)(piVar6 + 6);\n      *(long *)(piVar3 + 4) = lVar4;\n      if (lVar4 != 0) {\n        *(int **)(lVar4 + 8) = piVar3;\n      }\n      lVar4 = *(long *)(piVar3 + 2);\n      *(long *)(piVar6 + 2) = lVar4;\n      if (piVar3 == *(int **)(param_2 + 8)) {\n        *(int **)(param_2 + 8) = piVar6;\n      }\n      else if (piVar3 == *(int **)(lVar4 + 0x18)) {\n        *(int **)(lVar4 + 0x18) = piVar6;\n      }\n      else {\n        *(int **)(lVar4 + 0x10) = piVar6;\n      }\n      *(int **)(piVar6 + 6) = piVar3;\n      *(int **)(piVar3 + 2) = piVar6;\n      goto LAB_002dc6f0;\n    }\n    piVar5 = *(int **)(piVar3 + 6);\n    piVar8 = *(int **)(piVar5 + 4);\n    piVar1 = piVar5;\n    if (*piVar5 == 0) {\n      *piVar5 = 1;\n      *piVar3 = 0;\n      *(int **)(piVar3 + 6) = piVar8;\n      if (piVar8 != (int *)0x0) {\n        *(int **)(piVar8 + 2) = piVar3;\n      }\n      lVar4 = *(long *)(piVar3 + 2);\n      *(long *)(piVar5 + 2) = lVar4;\n      if (piVar3 == *(int **)(param_2 + 8)) {\n        *(int **)(param_2 + 8) = piVar5;\n        piVar1 = *(int **)(piVar3 + 6);\n      }\n      else if (piVar3 == *(int **)(lVar4 + 0x10)) {\n        *(int **)(lVar4 + 0x10) = piVar5;\n        piVar1 = piVar8;\n      }\n      else {\n        *(int **)(lVar4 + 0x18) = piVar5;\n        piVar1 = *(int **)(piVar3 + 6);\n      }\n      *(int **)(piVar5 + 4) = piVar3;\n      piVar8 = *(int **)(piVar1 + 4);\n      *(int **)(piVar3 + 2) = piVar5;\n    }\n    if ((piVar8 != (int *)0x0) && (*piVar8 != 1)) {\n      piVar5 = *(int **)(piVar1 + 6);\n      if ((piVar5 != (int *)0x0) && (*piVar5 != 1)) goto LAB_002dc69f;\n      lVar4 = *(long *)(piVar8 + 6);\n      *piVar8 = 1;\n      *piVar1 = 0;\n      *(long *)(piVar1 + 4) = lVar4;\n      if (lVar4 != 0) {\n        *(int **)(lVar4 + 8) = piVar1;\n      }\n      lVar4 = *(long *)(piVar1 + 2);\n      *(long *)(piVar8 + 2) = lVar4;\n      if (piVar1 == *(int **)(param_2 + 8)) {\n        *(int **)(param_2 + 8) = piVar8;\n      }\n      else if (piVar1 == *(int **)(lVar4 + 0x18)) {\n        *(int **)(lVar4 + 0x18) = piVar8;\n      }\n      else {\n        *(int **)(lVar4 + 0x10) = piVar8;\n      }\n      *(int **)(piVar8 + 6) = piVar1;\n      *(int **)(piVar1 + 2) = piVar8;\n      piVar8 = *(int **)(piVar3 + 6);\n      piVar5 = *(int **)(piVar8 + 6);\n      *piVar8 = *piVar3;\n      *piVar3 = 1;\n      if (piVar5 != (int *)0x0) goto LAB_002dc6af;\nLAB_002dc6b5:\n      lVar4 = *(long *)(piVar8 + 4);\n      *(long *)(piVar3 + 6) = lVar4;\n      if (lVar4 != 0) {\n        *(int **)(lVar4 + 8) = piVar3;\n      }\n      lVar4 = *(long *)(piVar3 + 2);\n      *(long *)(piVar8 + 2) = lVar4;\n      if (piVar3 == *(int **)(param_2 + 8)) {\n        *(int **)(param_2 + 8) = piVar8;\n      }\n      else if (piVar3 == *(int **)(lVar4 + 0x10)) {\n        *(int **)(lVar4 + 0x10) = piVar8;\n      }\n      else {\n        *(int **)(lVar4 + 0x18) = piVar8;\n      }\n      *(int **)(piVar8 + 4) = piVar3;\n      *(int **)(piVar3 + 2) = piVar8;\n      goto LAB_002dc6f0;\n    }\n    piVar5 = *(int **)(piVar1 + 6);\n    if ((piVar5 != (int *)0x0) && (*piVar5 != 1)) {\nLAB_002dc69f:\n      piVar8 = *(int **)(piVar3 + 6);\n      *piVar1 = *piVar3;\n      *piVar3 = 1;\nLAB_002dc6af:\n      *piVar5 = 1;\n      goto LAB_002dc6b5;\n    }\nLAB_002dc5e8:\n    *piVar1 = 0;\n    piVar1 = *(int **)(piVar3 + 2);\n    piVar7 = piVar3;\n  }" { (expression_statement "piVar3 = piVar1;" (assignment_expression "piVar3 = piVar1" identifier = identifier) ;) (if_statement "if (*(int **)(param_2 + 8) == piVar7) {\nLAB_002dc6f0:\n      if (piVar7 == (int *)0x0) {\n        return;\n      }\nLAB_002dc6f5:\n      *piVar7 = 1;\n      return;\n    }" if (parenthesized_expression "(*(int **)(param_2 + 8) == piVar7)" ( (binary_expression "*(int **)(param_2 + 8) == piVar7" (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 "{\nLAB_002dc6f0:\n      if (piVar7 == (int *)0x0) {\n        return;\n      }\nLAB_002dc6f5:\n      *piVar7 = 1;\n      return;\n    }" { (labeled_statement "LAB_002dc6f0:\n      if (piVar7 == (int *)0x0) {\n        return;\n      }" statement_identifier : (if_statement "if (piVar7 == (int *)0x0) {\n        return;\n      }" if (parenthesized_expression "(piVar7 == (int *)0x0)" ( (binary_expression "piVar7 == (int *)0x0" identifier == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        return;\n      }" { (return_statement "return;" return ;) }))) (labeled_statement "LAB_002dc6f5:\n      *piVar7 = 1;" statement_identifier : (expression_statement "*piVar7 = 1;" (assignment_expression "*piVar7 = 1" (pointer_expression "*piVar7" * identifier) = number_literal) ;)) (return_statement "return;" return ;) })) (if_statement "if ((piVar7 != (int *)0x0) && (*piVar7 != 1)) goto LAB_002dc6f5;" if (parenthesized_expression "((piVar7 != (int *)0x0) && (*piVar7 != 1))" ( (binary_expression "(piVar7 != (int *)0x0) && (*piVar7 != 1)" (parenthesized_expression "(piVar7 != (int *)0x0)" ( (binary_expression "piVar7 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) && (parenthesized_expression "(*piVar7 != 1)" ( (binary_expression "*piVar7 != 1" (pointer_expression "*piVar7" * identifier) != number_literal) ))) )) (goto_statement "goto LAB_002dc6f5;" goto statement_identifier ;)) (expression_statement "piVar5 = *(int **)(piVar3 + 4);" (assignment_expression "piVar5 = *(int **)(piVar3 + 4)" identifier = (pointer_expression "*(int **)(piVar3 + 4)" * (cast_expression "(int **)(piVar3 + 4)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(piVar3 + 4)" ( (binary_expression "piVar3 + 4" identifier + number_literal) ))))) ;) (if_statement "if (piVar5 != piVar7) {\n      piVar8 = *(int **)(piVar5 + 6);\n      piVar1 = piVar5;\n      if (*piVar5 == 0) {\n        *piVar5 = 1;\n        *piVar3 = 0;\n        *(int **)(piVar3 + 4) = piVar8;\n        if (piVar8 != (int *)0x0) {\n          *(int **)(piVar8 + 2) = piVar3;\n        }\n        lVar4 = *(long *)(piVar3 + 2);\n        *(long *)(piVar5 + 2) = lVar4;\n        if (piVar3 == *(int **)(param_2 + 8)) {\n          *(int **)(param_2 + 8) = piVar5;\n          piVar1 = *(int **)(piVar3 + 4);\n        }\n        else if (piVar3 == *(int **)(lVar4 + 0x18)) {\n          *(int **)(lVar4 + 0x18) = piVar5;\n          piVar1 = piVar8;\n        }\n        else {\n          *(int **)(lVar4 + 0x10) = piVar5;\n          piVar1 = *(int **)(piVar3 + 4);\n        }\n        *(int **)(piVar5 + 6) = piVar3;\n        piVar8 = *(int **)(piVar1 + 6);\n        *(int **)(piVar3 + 2) = piVar5;\n      }\n      if ((piVar8 == (int *)0x0) || (*piVar8 == 1)) {\n        piVar5 = *(int **)(piVar1 + 4);\n        if ((piVar5 == (int *)0x0) || (*piVar5 == 1)) goto LAB_002dc5e8;\nLAB_002dc82b:\n        piVar6 = *(int **)(piVar3 + 4);\n        *piVar1 = *piVar3;\n        *piVar3 = 1;\nLAB_002dc83b:\n        *piVar5 = 1;\n      }\n      else {\n        piVar5 = *(int **)(piVar1 + 4);\n        if ((piVar5 != (int *)0x0) && (*piVar5 != 1)) goto LAB_002dc82b;\n        lVar4 = *(long *)(piVar8 + 4);\n        *piVar8 = 1;\n        *piVar1 = 0;\n        *(long *)(piVar1 + 6) = lVar4;\n        if (lVar4 != 0) {\n          *(int **)(lVar4 + 8) = piVar1;\n        }\n        lVar4 = *(long *)(piVar1 + 2);\n        *(long *)(piVar8 + 2) = lVar4;\n        if (piVar1 == *(int **)(param_2 + 8)) {\n          *(int **)(param_2 + 8) = piVar8;\n        }\n        else if (piVar1 == *(int **)(lVar4 + 0x10)) {\n          *(int **)(lVar4 + 0x10) = piVar8;\n        }\n        else {\n          *(int **)(lVar4 + 0x18) = piVar8;\n        }\n        *(int **)(piVar8 + 4) = piVar1;\n        piVar6 = *(int **)(piVar3 + 4);\n        *(int **)(piVar1 + 2) = piVar8;\n        piVar5 = *(int **)(piVar6 + 4);\n        *piVar6 = *piVar3;\n        *piVar3 = 1;\n        if (piVar5 != (int *)0x0) goto LAB_002dc83b;\n      }\n      lVar4 = *(long *)(piVar6 + 6);\n      *(long *)(piVar3 + 4) = lVar4;\n      if (lVar4 != 0) {\n        *(int **)(lVar4 + 8) = piVar3;\n      }\n      lVar4 = *(long *)(piVar3 + 2);\n      *(long *)(piVar6 + 2) = lVar4;\n      if (piVar3 == *(int **)(param_2 + 8)) {\n        *(int **)(param_2 + 8) = piVar6;\n      }\n      else if (piVar3 == *(int **)(lVar4 + 0x18)) {\n        *(int **)(lVar4 + 0x18) = piVar6;\n      }\n      else {\n        *(int **)(lVar4 + 0x10) = piVar6;\n      }\n      *(int **)(piVar6 + 6) = piVar3;\n      *(int **)(piVar3 + 2) = piVar6;\n      goto LAB_002dc6f0;\n    }" if (parenthesized_expression "(piVar5 != piVar7)" ( (binary_expression "piVar5 != piVar7" identifier != identifier) )) (compound_statement "{\n      piVar8 = *(int **)(piVar5 + 6);\n      piVar1 = piVar5;\n      if (*piVar5 == 0) {\n        *piVar5 = 1;\n        *piVar3 = 0;\n        *(int **)(piVar3 + 4) = piVar8;\n        if (piVar8 != (int *)0x0) {\n          *(int **)(piVar8 + 2) = piVar3;\n        }\n        lVar4 = *(long *)(piVar3 + 2);\n        *(long *)(piVar5 + 2) = lVar4;\n        if (piVar3 == *(int **)(param_2 + 8)) {\n          *(int **)(param_2 + 8) = piVar5;\n          piVar1 = *(int **)(piVar3 + 4);\n        }\n        else if (piVar3 == *(int **)(lVar4 + 0x18)) {\n          *(int **)(lVar4 + 0x18) = piVar5;\n          piVar1 = piVar8;\n        }\n        else {\n          *(int **)(lVar4 + 0x10) = piVar5;\n          piVar1 = *(int **)(piVar3 + 4);\n        }\n        *(int **)(piVar5 + 6) = piVar3;\n        piVar8 = *(int **)(piVar1 + 6);\n        *(int **)(piVar3 + 2) = piVar5;\n      }\n      if ((piVar8 == (int *)0x0) || (*piVar8 == 1)) {\n        piVar5 = *(int **)(piVar1 + 4);\n        if ((piVar5 == (int *)0x0) || (*piVar5 == 1)) goto LAB_002dc5e8;\nLAB_002dc82b:\n        piVar6 = *(int **)(piVar3 + 4);\n        *piVar1 = *piVar3;\n        *piVar3 = 1;\nLAB_002dc83b:\n        *piVar5 = 1;\n      }\n      else {\n        piVar5 = *(int **)(piVar1 + 4);\n        if ((piVar5 != (int *)0x0) && (*piVar5 != 1)) goto LAB_002dc82b;\n        lVar4 = *(long *)(piVar8 + 4);\n        *piVar8 = 1;\n        *piVar1 = 0;\n        *(long *)(piVar1 + 6) = lVar4;\n        if (lVar4 != 0) {\n          *(int **)(lVar4 + 8) = piVar1;\n        }\n        lVar4 = *(long *)(piVar1 + 2);\n        *(long *)(piVar8 + 2) = lVar4;\n        if (piVar1 == *(int **)(param_2 + 8)) {\n          *(int **)(param_2 + 8) = piVar8;\n        }\n        else if (piVar1 == *(int **)(lVar4 + 0x10)) {\n          *(int **)(lVar4 + 0x10) = piVar8;\n        }\n        else {\n          *(int **)(lVar4 + 0x18) = piVar8;\n        }\n        *(int **)(piVar8 + 4) = piVar1;\n        piVar6 = *(int **)(piVar3 + 4);\n        *(int **)(piVar1 + 2) = piVar8;\n        piVar5 = *(int **)(piVar6 + 4);\n        *piVar6 = *piVar3;\n        *piVar3 = 1;\n        if (piVar5 != (int *)0x0) goto LAB_002dc83b;\n      }\n      lVar4 = *(long *)(piVar6 + 6);\n      *(long *)(piVar3 + 4) = lVar4;\n      if (lVar4 != 0) {\n        *(int **)(lVar4 + 8) = piVar3;\n      }\n      lVar4 = *(long *)(piVar3 + 2);\n      *(long *)(piVar6 + 2) = lVar4;\n      if (piVar3 == *(int **)(param_2 + 8)) {\n        *(int **)(param_2 + 8) = piVar6;\n      }\n      else if (piVar3 == *(int **)(lVar4 + 0x18)) {\n        *(int **)(lVar4 + 0x18) = piVar6;\n      }\n      else {\n        *(int **)(lVar4 + 0x10) = piVar6;\n      }\n      *(int **)(piVar6 + 6) = piVar3;\n      *(int **)(piVar3 + 2) = piVar6;\n      goto LAB_002dc6f0;\n    }" { (expression_statement "piVar8 = *(int **)(piVar5 + 6);" (assignment_expression "piVar8 = *(int **)(piVar5 + 6)" identifier = (pointer_expression "*(int **)(piVar5 + 6)" * (cast_expression "(int **)(piVar5 + 6)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(piVar5 + 6)" ( (binary_expression "piVar5 + 6" identifier + number_literal) ))))) ;) (expression_statement "piVar1 = piVar5;" (assignment_expression "piVar1 = piVar5" identifier = identifier) ;) (if_statement "if (*piVar5 == 0) {\n        *piVar5 = 1;\n        *piVar3 = 0;\n        *(int **)(piVar3 + 4) = piVar8;\n        if (piVar8 != (int *)0x0) {\n          *(int **)(piVar8 + 2) = piVar3;\n        }\n        lVar4 = *(long *)(piVar3 + 2);\n        *(long *)(piVar5 + 2) = lVar4;\n        if (piVar3 == *(int **)(param_2 + 8)) {\n          *(int **)(param_2 + 8) = piVar5;\n          piVar1 = *(int **)(piVar3 + 4);\n        }\n        else if (piVar3 == *(int **)(lVar4 + 0x18)) {\n          *(int **)(lVar4 + 0x18) = piVar5;\n          piVar1 = piVar8;\n        }\n        else {\n          *(int **)(lVar4 + 0x10) = piVar5;\n          piVar1 = *(int **)(piVar3 + 4);\n        }\n        *(int **)(piVar5 + 6) = piVar3;\n        piVar8 = *(int **)(piVar1 + 6);\n        *(int **)(piVar3 + 2) = piVar5;\n      }" if (parenthesized_expression "(*piVar5 == 0)" ( (binary_expression "*piVar5 == 0" (pointer_expression "*piVar5" * identifier) == number_literal) )) (compound_statement "{\n        *piVar5 = 1;\n        *piVar3 = 0;\n        *(int **)(piVar3 + 4) = piVar8;\n        if (piVar8 != (int *)0x0) {\n          *(int **)(piVar8 + 2) = piVar3;\n        }\n        lVar4 = *(long *)(piVar3 + 2);\n        *(long *)(piVar5 + 2) = lVar4;\n        if (piVar3 == *(int **)(param_2 + 8)) {\n          *(int **)(param_2 + 8) = piVar5;\n          piVar1 = *(int **)(piVar3 + 4);\n        }\n        else if (piVar3 == *(int **)(lVar4 + 0x18)) {\n          *(int **)(lVar4 + 0x18) = piVar5;\n          piVar1 = piVar8;\n        }\n        else {\n          *(int **)(lVar4 + 0x10) = piVar5;\n          piVar1 = *(int **)(piVar3 + 4);\n        }\n        *(int **)(piVar5 + 6) = piVar3;\n        piVar8 = *(int **)(piVar1 + 6);\n        *(int **)(piVar3 + 2) = piVar5;\n      }" { (expression_statement "*piVar5 = 1;" (assignment_expression "*piVar5 = 1" (pointer_expression "*piVar5" * identifier) = number_literal) ;) (expression_statement "*piVar3 = 0;" (assignment_expression "*piVar3 = 0" (pointer_expression "*piVar3" * identifier) = number_literal) ;) (expression_statement "*(int **)(piVar3 + 4) = piVar8;" (assignment_expression "*(int **)(piVar3 + 4) = piVar8" (pointer_expression "*(int **)(piVar3 + 4)" * (cast_expression "(int **)(piVar3 + 4)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(piVar3 + 4)" ( (binary_expression "piVar3 + 4" identifier + number_literal) )))) = identifier) ;) (if_statement "if (piVar8 != (int *)0x0) {\n          *(int **)(piVar8 + 2) = piVar3;\n        }" if (parenthesized_expression "(piVar8 != (int *)0x0)" ( (binary_expression "piVar8 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          *(int **)(piVar8 + 2) = piVar3;\n        }" { (expression_statement "*(int **)(piVar8 + 2) = piVar3;" (assignment_expression "*(int **)(piVar8 + 2) = piVar3" (pointer_expression "*(int **)(piVar8 + 2)" * (cast_expression "(int **)(piVar8 + 2)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(piVar8 + 2)" ( (binary_expression "piVar8 + 2" identifier + number_literal) )))) = identifier) ;) })) (expression_statement "lVar4 = *(long *)(piVar3 + 2);" (assignment_expression "lVar4 = *(long *)(piVar3 + 2)" identifier = (pointer_expression "*(long *)(piVar3 + 2)" * (cast_expression "(long *)(piVar3 + 2)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar3 + 2)" ( (binary_expression "piVar3 + 2" identifier + number_literal) ))))) ;) (expression_statement "*(long *)(piVar5 + 2) = lVar4;" (assignment_expression "*(long *)(piVar5 + 2) = lVar4" (pointer_expression "*(long *)(piVar5 + 2)" * (cast_expression "(long *)(piVar5 + 2)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar5 + 2)" ( (binary_expression "piVar5 + 2" identifier + number_literal) )))) = identifier) ;) (if_statement "if (piVar3 == *(int **)(param_2 + 8)) {\n          *(int **)(param_2 + 8) = piVar5;\n          piVar1 = *(int **)(piVar3 + 4);\n        }\n        else if (piVar3 == *(int **)(lVar4 + 0x18)) {\n          *(int **)(lVar4 + 0x18) = piVar5;\n          piVar1 = piVar8;\n        }\n        else {\n          *(int **)(lVar4 + 0x10) = piVar5;\n          piVar1 = *(int **)(piVar3 + 4);\n        }" if (parenthesized_expression "(piVar3 == *(int **)(param_2 + 8))" ( (binary_expression "piVar3 == *(int **)(param_2 + 8)" identifier == (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) ))))) )) (compound_statement "{\n          *(int **)(param_2 + 8) = piVar5;\n          piVar1 = *(int **)(piVar3 + 4);\n        }" { (expression_statement "*(int **)(param_2 + 8) = piVar5;" (assignment_expression "*(int **)(param_2 + 8) = piVar5" (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 "piVar1 = *(int **)(piVar3 + 4);" (assignment_expression "piVar1 = *(int **)(piVar3 + 4)" identifier = (pointer_expression "*(int **)(piVar3 + 4)" * (cast_expression "(int **)(piVar3 + 4)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(piVar3 + 4)" ( (binary_expression "piVar3 + 4" identifier + number_literal) ))))) ;) }) (else_clause "else if (piVar3 == *(int **)(lVar4 + 0x18)) {\n          *(int **)(lVar4 + 0x18) = piVar5;\n          piVar1 = piVar8;\n        }\n        else {\n          *(int **)(lVar4 + 0x10) = piVar5;\n          piVar1 = *(int **)(piVar3 + 4);\n        }" else (if_statement "if (piVar3 == *(int **)(lVar4 + 0x18)) {\n          *(int **)(lVar4 + 0x18) = piVar5;\n          piVar1 = piVar8;\n        }\n        else {\n          *(int **)(lVar4 + 0x10) = piVar5;\n          piVar1 = *(int **)(piVar3 + 4);\n        }" if (parenthesized_expression "(piVar3 == *(int **)(lVar4 + 0x18))" ( (binary_expression "piVar3 == *(int **)(lVar4 + 0x18)" identifier == (pointer_expression "*(int **)(lVar4 + 0x18)" * (cast_expression "(int **)(lVar4 + 0x18)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(lVar4 + 0x18)" ( (binary_expression "lVar4 + 0x18" identifier + number_literal) ))))) )) (compound_statement "{\n          *(int **)(lVar4 + 0x18) = piVar5;\n          piVar1 = piVar8;\n        }" { (expression_statement "*(int **)(lVar4 + 0x18) = piVar5;" (assignment_expression "*(int **)(lVar4 + 0x18) = piVar5" (pointer_expression "*(int **)(lVar4 + 0x18)" * (cast_expression "(int **)(lVar4 + 0x18)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(lVar4 + 0x18)" ( (binary_expression "lVar4 + 0x18" identifier + number_literal) )))) = identifier) ;) (expression_statement "piVar1 = piVar8;" (assignment_expression "piVar1 = piVar8" identifier = identifier) ;) }) (else_clause "else {\n          *(int **)(lVar4 + 0x10) = piVar5;\n          piVar1 = *(int **)(piVar3 + 4);\n        }" else (compound_statement "{\n          *(int **)(lVar4 + 0x10) = piVar5;\n          piVar1 = *(int **)(piVar3 + 4);\n        }" { (expression_statement "*(int **)(lVar4 + 0x10) = piVar5;" (assignment_expression "*(int **)(lVar4 + 0x10) = piVar5" (pointer_expression "*(int **)(lVar4 + 0x10)" * (cast_expression "(int **)(lVar4 + 0x10)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(lVar4 + 0x10)" ( (binary_expression "lVar4 + 0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "piVar1 = *(int **)(piVar3 + 4);" (assignment_expression "piVar1 = *(int **)(piVar3 + 4)" identifier = (pointer_expression "*(int **)(piVar3 + 4)" * (cast_expression "(int **)(piVar3 + 4)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(piVar3 + 4)" ( (binary_expression "piVar3 + 4" identifier + number_literal) ))))) ;) }))))) (expression_statement "*(int **)(piVar5 + 6) = piVar3;" (assignment_expression "*(int **)(piVar5 + 6) = piVar3" (pointer_expression "*(int **)(piVar5 + 6)" * (cast_expression "(int **)(piVar5 + 6)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(piVar5 + 6)" ( (binary_expression "piVar5 + 6" identifier + number_literal) )))) = identifier) ;) (expression_statement "piVar8 = *(int **)(piVar1 + 6);" (assignment_expression "piVar8 = *(int **)(piVar1 + 6)" identifier = (pointer_expression "*(int **)(piVar1 + 6)" * (cast_expression "(int **)(piVar1 + 6)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(piVar1 + 6)" ( (binary_expression "piVar1 + 6" identifier + number_literal) ))))) ;) (expression_statement "*(int **)(piVar3 + 2) = piVar5;" (assignment_expression "*(int **)(piVar3 + 2) = piVar5" (pointer_expression "*(int **)(piVar3 + 2)" * (cast_expression "(int **)(piVar3 + 2)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(piVar3 + 2)" ( (binary_expression "piVar3 + 2" identifier + number_literal) )))) = identifier) ;) })) (if_statement "if ((piVar8 == (int *)0x0) || (*piVar8 == 1)) {\n        piVar5 = *(int **)(piVar1 + 4);\n        if ((piVar5 == (int *)0x0) || (*piVar5 == 1)) goto LAB_002dc5e8;\nLAB_002dc82b:\n        piVar6 = *(int **)(piVar3 + 4);\n        *piVar1 = *piVar3;\n        *piVar3 = 1;\nLAB_002dc83b:\n        *piVar5 = 1;\n      }\n      else {\n        piVar5 = *(int **)(piVar1 + 4);\n        if ((piVar5 != (int *)0x0) && (*piVar5 != 1)) goto LAB_002dc82b;\n        lVar4 = *(long *)(piVar8 + 4);\n        *piVar8 = 1;\n        *piVar1 = 0;\n        *(long *)(piVar1 + 6) = lVar4;\n        if (lVar4 != 0) {\n          *(int **)(lVar4 + 8) = piVar1;\n        }\n        lVar4 = *(long *)(piVar1 + 2);\n        *(long *)(piVar8 + 2) = lVar4;\n        if (piVar1 == *(int **)(param_2 + 8)) {\n          *(int **)(param_2 + 8) = piVar8;\n        }\n        else if (piVar1 == *(int **)(lVar4 + 0x10)) {\n          *(int **)(lVar4 + 0x10) = piVar8;\n        }\n        else {\n          *(int **)(lVar4 + 0x18) = piVar8;\n        }\n        *(int **)(piVar8 + 4) = piVar1;\n        piVar6 = *(int **)(piVar3 + 4);\n        *(int **)(piVar1 + 2) = piVar8;\n        piVar5 = *(int **)(piVar6 + 4);\n        *piVar6 = *piVar3;\n        *piVar3 = 1;\n        if (piVar5 != (int *)0x0) goto LAB_002dc83b;\n      }" if (parenthesized_expression "((piVar8 == (int *)0x0) || (*piVar8 == 1))" ( (binary_expression "(piVar8 == (int *)0x0) || (*piVar8 == 1)" (parenthesized_expression "(piVar8 == (int *)0x0)" ( (binary_expression "piVar8 == (int *)0x0" identifier == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) || (parenthesized_expression "(*piVar8 == 1)" ( (binary_expression "*piVar8 == 1" (pointer_expression "*piVar8" * identifier) == number_literal) ))) )) (compound_statement "{\n        piVar5 = *(int **)(piVar1 + 4);\n        if ((piVar5 == (int *)0x0) || (*piVar5 == 1)) goto LAB_002dc5e8;\nLAB_002dc82b:\n        piVar6 = *(int **)(piVar3 + 4);\n        *piVar1 = *piVar3;\n        *piVar3 = 1;\nLAB_002dc83b:\n        *piVar5 = 1;\n      }" { (expression_statement "piVar5 = *(int **)(piVar1 + 4);" (assignment_expression "piVar5 = *(int **)(piVar1 + 4)" identifier = (pointer_expression "*(int **)(piVar1 + 4)" * (cast_expression "(int **)(piVar1 + 4)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(piVar1 + 4)" ( (binary_expression "piVar1 + 4" identifier + number_literal) ))))) ;) (if_statement "if ((piVar5 == (int *)0x0) || (*piVar5 == 1)) goto LAB_002dc5e8;" if (parenthesized_expression "((piVar5 == (int *)0x0) || (*piVar5 == 1))" ( (binary_expression "(piVar5 == (int *)0x0) || (*piVar5 == 1)" (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)) )) || (parenthesized_expression "(*piVar5 == 1)" ( (binary_expression "*piVar5 == 1" (pointer_expression "*piVar5" * identifier) == number_literal) ))) )) (goto_statement "goto LAB_002dc5e8;" goto statement_identifier ;)) (labeled_statement "LAB_002dc82b:\n        piVar6 = *(int **)(piVar3 + 4);" statement_identifier : (expression_statement "piVar6 = *(int **)(piVar3 + 4);" (assignment_expression "piVar6 = *(int **)(piVar3 + 4)" identifier = (pointer_expression "*(int **)(piVar3 + 4)" * (cast_expression "(int **)(piVar3 + 4)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(piVar3 + 4)" ( (binary_expression "piVar3 + 4" identifier + number_literal) ))))) ;)) (expression_statement "*piVar1 = *piVar3;" (assignment_expression "*piVar1 = *piVar3" (pointer_expression "*piVar1" * identifier) = (pointer_expression "*piVar3" * identifier)) ;) (expression_statement "*piVar3 = 1;" (assignment_expression "*piVar3 = 1" (pointer_expression "*piVar3" * identifier) = number_literal) ;) (labeled_statement "LAB_002dc83b:\n        *piVar5 = 1;" statement_identifier : (expression_statement "*piVar5 = 1;" (assignment_expression "*piVar5 = 1" (pointer_expression "*piVar5" * identifier) = number_literal) ;)) }) (else_clause "else {\n        piVar5 = *(int **)(piVar1 + 4);\n        if ((piVar5 != (int *)0x0) && (*piVar5 != 1)) goto LAB_002dc82b;\n        lVar4 = *(long *)(piVar8 + 4);\n        *piVar8 = 1;\n        *piVar1 = 0;\n        *(long *)(piVar1 + 6) = lVar4;\n        if (lVar4 != 0) {\n          *(int **)(lVar4 + 8) = piVar1;\n        }\n        lVar4 = *(long *)(piVar1 + 2);\n        *(long *)(piVar8 + 2) = lVar4;\n        if (piVar1 == *(int **)(param_2 + 8)) {\n          *(int **)(param_2 + 8) = piVar8;\n        }\n        else if (piVar1 == *(int **)(lVar4 + 0x10)) {\n          *(int **)(lVar4 + 0x10) = piVar8;\n        }\n        else {\n          *(int **)(lVar4 + 0x18) = piVar8;\n        }\n        *(int **)(piVar8 + 4) = piVar1;\n        piVar6 = *(int **)(piVar3 + 4);\n        *(int **)(piVar1 + 2) = piVar8;\n        piVar5 = *(int **)(piVar6 + 4);\n        *piVar6 = *piVar3;\n        *piVar3 = 1;\n        if (piVar5 != (int *)0x0) goto LAB_002dc83b;\n      }" else (compound_statement "{\n        piVar5 = *(int **)(piVar1 + 4);\n        if ((piVar5 != (int *)0x0) && (*piVar5 != 1)) goto LAB_002dc82b;\n        lVar4 = *(long *)(piVar8 + 4);\n        *piVar8 = 1;\n        *piVar1 = 0;\n        *(long *)(piVar1 + 6) = lVar4;\n        if (lVar4 != 0) {\n          *(int **)(lVar4 + 8) = piVar1;\n        }\n        lVar4 = *(long *)(piVar1 + 2);\n        *(long *)(piVar8 + 2) = lVar4;\n        if (piVar1 == *(int **)(param_2 + 8)) {\n          *(int **)(param_2 + 8) = piVar8;\n        }\n        else if (piVar1 == *(int **)(lVar4 + 0x10)) {\n          *(int **)(lVar4 + 0x10) = piVar8;\n        }\n        else {\n          *(int **)(lVar4 + 0x18) = piVar8;\n        }\n        *(int **)(piVar8 + 4) = piVar1;\n        piVar6 = *(int **)(piVar3 + 4);\n        *(int **)(piVar1 + 2) = piVar8;\n        piVar5 = *(int **)(piVar6 + 4);\n        *piVar6 = *piVar3;\n        *piVar3 = 1;\n        if (piVar5 != (int *)0x0) goto LAB_002dc83b;\n      }" { (expression_statement "piVar5 = *(int **)(piVar1 + 4);" (assignment_expression "piVar5 = *(int **)(piVar1 + 4)" identifier = (pointer_expression "*(int **)(piVar1 + 4)" * (cast_expression "(int **)(piVar1 + 4)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(piVar1 + 4)" ( (binary_expression "piVar1 + 4" identifier + number_literal) ))))) ;) (if_statement "if ((piVar5 != (int *)0x0) && (*piVar5 != 1)) goto LAB_002dc82b;" if (parenthesized_expression "((piVar5 != (int *)0x0) && (*piVar5 != 1))" ( (binary_expression "(piVar5 != (int *)0x0) && (*piVar5 != 1)" (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)) )) && (parenthesized_expression "(*piVar5 != 1)" ( (binary_expression "*piVar5 != 1" (pointer_expression "*piVar5" * identifier) != number_literal) ))) )) (goto_statement "goto LAB_002dc82b;" goto statement_identifier ;)) (expression_statement "lVar4 = *(long *)(piVar8 + 4);" (assignment_expression "lVar4 = *(long *)(piVar8 + 4)" identifier = (pointer_expression "*(long *)(piVar8 + 4)" * (cast_expression "(long *)(piVar8 + 4)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar8 + 4)" ( (binary_expression "piVar8 + 4" identifier + number_literal) ))))) ;) (expression_statement "*piVar8 = 1;" (assignment_expression "*piVar8 = 1" (pointer_expression "*piVar8" * identifier) = number_literal) ;) (expression_statement "*piVar1 = 0;" (assignment_expression "*piVar1 = 0" (pointer_expression "*piVar1" * identifier) = number_literal) ;) (expression_statement "*(long *)(piVar1 + 6) = lVar4;" (assignment_expression "*(long *)(piVar1 + 6) = lVar4" (pointer_expression "*(long *)(piVar1 + 6)" * (cast_expression "(long *)(piVar1 + 6)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar1 + 6)" ( (binary_expression "piVar1 + 6" identifier + number_literal) )))) = identifier) ;) (if_statement "if (lVar4 != 0) {\n          *(int **)(lVar4 + 8) = piVar1;\n        }" if (parenthesized_expression "(lVar4 != 0)" ( (binary_expression "lVar4 != 0" identifier != number_literal) )) (compound_statement "{\n          *(int **)(lVar4 + 8) = piVar1;\n        }" { (expression_statement "*(int **)(lVar4 + 8) = piVar1;" (assignment_expression "*(int **)(lVar4 + 8) = piVar1" (pointer_expression "*(int **)(lVar4 + 8)" * (cast_expression "(int **)(lVar4 + 8)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(lVar4 + 8)" ( (binary_expression "lVar4 + 8" identifier + number_literal) )))) = identifier) ;) })) (expression_statement "lVar4 = *(long *)(piVar1 + 2);" (assignment_expression "lVar4 = *(long *)(piVar1 + 2)" identifier = (pointer_expression "*(long *)(piVar1 + 2)" * (cast_expression "(long *)(piVar1 + 2)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar1 + 2)" ( (binary_expression "piVar1 + 2" identifier + number_literal) ))))) ;) (expression_statement "*(long *)(piVar8 + 2) = lVar4;" (assignment_expression "*(long *)(piVar8 + 2) = lVar4" (pointer_expression "*(long *)(piVar8 + 2)" * (cast_expression "(long *)(piVar8 + 2)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar8 + 2)" ( (binary_expression "piVar8 + 2" identifier + number_literal) )))) = identifier) ;) (if_statement "if (piVar1 == *(int **)(param_2 + 8)) {\n          *(int **)(param_2 + 8) = piVar8;\n        }\n        else if (piVar1 == *(int **)(lVar4 + 0x10)) {\n          *(int **)(lVar4 + 0x10) = piVar8;\n        }\n        else {\n          *(int **)(lVar4 + 0x18) = piVar8;\n        }" if (parenthesized_expression "(piVar1 == *(int **)(param_2 + 8))" ( (binary_expression "piVar1 == *(int **)(param_2 + 8)" identifier == (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) ))))) )) (compound_statement "{\n          *(int **)(param_2 + 8) = piVar8;\n        }" { (expression_statement "*(int **)(param_2 + 8) = piVar8;" (assignment_expression "*(int **)(param_2 + 8) = piVar8" (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) ;) }) (else_clause "else if (piVar1 == *(int **)(lVar4 + 0x10)) {\n          *(int **)(lVar4 + 0x10) = piVar8;\n        }\n        else {\n          *(int **)(lVar4 + 0x18) = piVar8;\n        }" else (if_statement "if (piVar1 == *(int **)(lVar4 + 0x10)) {\n          *(int **)(lVar4 + 0x10) = piVar8;\n        }\n        else {\n          *(int **)(lVar4 + 0x18) = piVar8;\n        }" if (parenthesized_expression "(piVar1 == *(int **)(lVar4 + 0x10))" ( (binary_expression "piVar1 == *(int **)(lVar4 + 0x10)" identifier == (pointer_expression "*(int **)(lVar4 + 0x10)" * (cast_expression "(int **)(lVar4 + 0x10)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(lVar4 + 0x10)" ( (binary_expression "lVar4 + 0x10" identifier + number_literal) ))))) )) (compound_statement "{\n          *(int **)(lVar4 + 0x10) = piVar8;\n        }" { (expression_statement "*(int **)(lVar4 + 0x10) = piVar8;" (assignment_expression "*(int **)(lVar4 + 0x10) = piVar8" (pointer_expression "*(int **)(lVar4 + 0x10)" * (cast_expression "(int **)(lVar4 + 0x10)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(lVar4 + 0x10)" ( (binary_expression "lVar4 + 0x10" identifier + number_literal) )))) = identifier) ;) }) (else_clause "else {\n          *(int **)(lVar4 + 0x18) = piVar8;\n        }" else (compound_statement "{\n          *(int **)(lVar4 + 0x18) = piVar8;\n        }" { (expression_statement "*(int **)(lVar4 + 0x18) = piVar8;" (assignment_expression "*(int **)(lVar4 + 0x18) = piVar8" (pointer_expression "*(int **)(lVar4 + 0x18)" * (cast_expression "(int **)(lVar4 + 0x18)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(lVar4 + 0x18)" ( (binary_expression "lVar4 + 0x18" identifier + number_literal) )))) = identifier) ;) }))))) (expression_statement "*(int **)(piVar8 + 4) = piVar1;" (assignment_expression "*(int **)(piVar8 + 4) = piVar1" (pointer_expression "*(int **)(piVar8 + 4)" * (cast_expression "(int **)(piVar8 + 4)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(piVar8 + 4)" ( (binary_expression "piVar8 + 4" identifier + number_literal) )))) = identifier) ;) (expression_statement "piVar6 = *(int **)(piVar3 + 4);" (assignment_expression "piVar6 = *(int **)(piVar3 + 4)" identifier = (pointer_expression "*(int **)(piVar3 + 4)" * (cast_expression "(int **)(piVar3 + 4)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(piVar3 + 4)" ( (binary_expression "piVar3 + 4" identifier + number_literal) ))))) ;) (expression_statement "*(int **)(piVar1 + 2) = piVar8;" (assignment_expression "*(int **)(piVar1 + 2) = piVar8" (pointer_expression "*(int **)(piVar1 + 2)" * (cast_expression "(int **)(piVar1 + 2)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(piVar1 + 2)" ( (binary_expression "piVar1 + 2" identifier + number_literal) )))) = identifier) ;) (expression_statement "piVar5 = *(int **)(piVar6 + 4);" (assignment_expression "piVar5 = *(int **)(piVar6 + 4)" identifier = (pointer_expression "*(int **)(piVar6 + 4)" * (cast_expression "(int **)(piVar6 + 4)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(piVar6 + 4)" ( (binary_expression "piVar6 + 4" identifier + number_literal) ))))) ;) (expression_statement "*piVar6 = *piVar3;" (assignment_expression "*piVar6 = *piVar3" (pointer_expression "*piVar6" * identifier) = (pointer_expression "*piVar3" * identifier)) ;) (expression_statement "*piVar3 = 1;" (assignment_expression "*piVar3 = 1" (pointer_expression "*piVar3" * identifier) = number_literal) ;) (if_statement "if (piVar5 != (int *)0x0) goto LAB_002dc83b;" 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)) )) (goto_statement "goto LAB_002dc83b;" goto statement_identifier ;)) }))) (expression_statement "lVar4 = *(long *)(piVar6 + 6);" (assignment_expression "lVar4 = *(long *)(piVar6 + 6)" identifier = (pointer_expression "*(long *)(piVar6 + 6)" * (cast_expression "(long *)(piVar6 + 6)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar6 + 6)" ( (binary_expression "piVar6 + 6" identifier + number_literal) ))))) ;) (expression_statement "*(long *)(piVar3 + 4) = lVar4;" (assignment_expression "*(long *)(piVar3 + 4) = lVar4" (pointer_expression "*(long *)(piVar3 + 4)" * (cast_expression "(long *)(piVar3 + 4)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar3 + 4)" ( (binary_expression "piVar3 + 4" identifier + number_literal) )))) = identifier) ;) (if_statement "if (lVar4 != 0) {\n        *(int **)(lVar4 + 8) = piVar3;\n      }" if (parenthesized_expression "(lVar4 != 0)" ( (binary_expression "lVar4 != 0" identifier != number_literal) )) (compound_statement "{\n        *(int **)(lVar4 + 8) = piVar3;\n      }" { (expression_statement "*(int **)(lVar4 + 8) = piVar3;" (assignment_expression "*(int **)(lVar4 + 8) = piVar3" (pointer_expression "*(int **)(lVar4 + 8)" * (cast_expression "(int **)(lVar4 + 8)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(lVar4 + 8)" ( (binary_expression "lVar4 + 8" identifier + number_literal) )))) = identifier) ;) })) (expression_statement "lVar4 = *(long *)(piVar3 + 2);" (assignment_expression "lVar4 = *(long *)(piVar3 + 2)" identifier = (pointer_expression "*(long *)(piVar3 + 2)" * (cast_expression "(long *)(piVar3 + 2)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar3 + 2)" ( (binary_expression "piVar3 + 2" identifier + number_literal) ))))) ;) (expression_statement "*(long *)(piVar6 + 2) = lVar4;" (assignment_expression "*(long *)(piVar6 + 2) = lVar4" (pointer_expression "*(long *)(piVar6 + 2)" * (cast_expression "(long *)(piVar6 + 2)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar6 + 2)" ( (binary_expression "piVar6 + 2" identifier + number_literal) )))) = identifier) ;) (if_statement "if (piVar3 == *(int **)(param_2 + 8)) {\n        *(int **)(param_2 + 8) = piVar6;\n      }\n      else if (piVar3 == *(int **)(lVar4 + 0x18)) {\n        *(int **)(lVar4 + 0x18) = piVar6;\n      }\n      else {\n        *(int **)(lVar4 + 0x10) = piVar6;\n      }" if (parenthesized_expression "(piVar3 == *(int **)(param_2 + 8))" ( (binary_expression "piVar3 == *(int **)(param_2 + 8)" identifier == (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) ))))) )) (compound_statement "{\n        *(int **)(param_2 + 8) = piVar6;\n      }" { (expression_statement "*(int **)(param_2 + 8) = piVar6;" (assignment_expression "*(int **)(param_2 + 8) = piVar6" (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) ;) }) (else_clause "else if (piVar3 == *(int **)(lVar4 + 0x18)) {\n        *(int **)(lVar4 + 0x18) = piVar6;\n      }\n      else {\n        *(int **)(lVar4 + 0x10) = piVar6;\n      }" else (if_statement "if (piVar3 == *(int **)(lVar4 + 0x18)) {\n        *(int **)(lVar4 + 0x18) = piVar6;\n      }\n      else {\n        *(int **)(lVar4 + 0x10) = piVar6;\n      }" if (parenthesized_expression "(piVar3 == *(int **)(lVar4 + 0x18))" ( (binary_expression "piVar3 == *(int **)(lVar4 + 0x18)" identifier == (pointer_expression "*(int **)(lVar4 + 0x18)" * (cast_expression "(int **)(lVar4 + 0x18)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(lVar4 + 0x18)" ( (binary_expression "lVar4 + 0x18" identifier + number_literal) ))))) )) (compound_statement "{\n        *(int **)(lVar4 + 0x18) = piVar6;\n      }" { (expression_statement "*(int **)(lVar4 + 0x18) = piVar6;" (assignment_expression "*(int **)(lVar4 + 0x18) = piVar6" (pointer_expression "*(int **)(lVar4 + 0x18)" * (cast_expression "(int **)(lVar4 + 0x18)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(lVar4 + 0x18)" ( (binary_expression "lVar4 + 0x18" identifier + number_literal) )))) = identifier) ;) }) (else_clause "else {\n        *(int **)(lVar4 + 0x10) = piVar6;\n      }" else (compound_statement "{\n        *(int **)(lVar4 + 0x10) = piVar6;\n      }" { (expression_statement "*(int **)(lVar4 + 0x10) = piVar6;" (assignment_expression "*(int **)(lVar4 + 0x10) = piVar6" (pointer_expression "*(int **)(lVar4 + 0x10)" * (cast_expression "(int **)(lVar4 + 0x10)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(lVar4 + 0x10)" ( (binary_expression "lVar4 + 0x10" identifier + number_literal) )))) = identifier) ;) }))))) (expression_statement "*(int **)(piVar6 + 6) = piVar3;" (assignment_expression "*(int **)(piVar6 + 6) = piVar3" (pointer_expression "*(int **)(piVar6 + 6)" * (cast_expression "(int **)(piVar6 + 6)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(piVar6 + 6)" ( (binary_expression "piVar6 + 6" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int **)(piVar3 + 2) = piVar6;" (assignment_expression "*(int **)(piVar3 + 2) = piVar6" (pointer_expression "*(int **)(piVar3 + 2)" * (cast_expression "(int **)(piVar3 + 2)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(piVar3 + 2)" ( (binary_expression "piVar3 + 2" identifier + number_literal) )))) = identifier) ;) (goto_statement "goto LAB_002dc6f0;" goto statement_identifier ;) })) (expression_statement "piVar5 = *(int **)(piVar3 + 6);" (assignment_expression "piVar5 = *(int **)(piVar3 + 6)" identifier = (pointer_expression "*(int **)(piVar3 + 6)" * (cast_expression "(int **)(piVar3 + 6)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(piVar3 + 6)" ( (binary_expression "piVar3 + 6" identifier + number_literal) ))))) ;) (expression_statement "piVar8 = *(int **)(piVar5 + 4);" (assignment_expression "piVar8 = *(int **)(piVar5 + 4)" identifier = (pointer_expression "*(int **)(piVar5 + 4)" * (cast_expression "(int **)(piVar5 + 4)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(piVar5 + 4)" ( (binary_expression "piVar5 + 4" identifier + number_literal) ))))) ;) (expression_statement "piVar1 = piVar5;" (assignment_expression "piVar1 = piVar5" identifier = identifier) ;) (if_statement "if (*piVar5 == 0) {\n      *piVar5 = 1;\n      *piVar3 = 0;\n      *(int **)(piVar3 + 6) = piVar8;\n      if (piVar8 != (int *)0x0) {\n        *(int **)(piVar8 + 2) = piVar3;\n      }\n      lVar4 = *(long *)(piVar3 + 2);\n      *(long *)(piVar5 + 2) = lVar4;\n      if (piVar3 == *(int **)(param_2 + 8)) {\n        *(int **)(param_2 + 8) = piVar5;\n        piVar1 = *(int **)(piVar3 + 6);\n      }\n      else if (piVar3 == *(int **)(lVar4 + 0x10)) {\n        *(int **)(lVar4 + 0x10) = piVar5;\n        piVar1 = piVar8;\n      }\n      else {\n        *(int **)(lVar4 + 0x18) = piVar5;\n        piVar1 = *(int **)(piVar3 + 6);\n      }\n      *(int **)(piVar5 + 4) = piVar3;\n      piVar8 = *(int **)(piVar1 + 4);\n      *(int **)(piVar3 + 2) = piVar5;\n    }" if (parenthesized_expression "(*piVar5 == 0)" ( (binary_expression "*piVar5 == 0" (pointer_expression "*piVar5" * identifier) == number_literal) )) (compound_statement "{\n      *piVar5 = 1;\n      *piVar3 = 0;\n      *(int **)(piVar3 + 6) = piVar8;\n      if (piVar8 != (int *)0x0) {\n        *(int **)(piVar8 + 2) = piVar3;\n      }\n      lVar4 = *(long *)(piVar3 + 2);\n      *(long *)(piVar5 + 2) = lVar4;\n      if (piVar3 == *(int **)(param_2 + 8)) {\n        *(int **)(param_2 + 8) = piVar5;\n        piVar1 = *(int **)(piVar3 + 6);\n      }\n      else if (piVar3 == *(int **)(lVar4 + 0x10)) {\n        *(int **)(lVar4 + 0x10) = piVar5;\n        piVar1 = piVar8;\n      }\n      else {\n        *(int **)(lVar4 + 0x18) = piVar5;\n        piVar1 = *(int **)(piVar3 + 6);\n      }\n      *(int **)(piVar5 + 4) = piVar3;\n      piVar8 = *(int **)(piVar1 + 4);\n      *(int **)(piVar3 + 2) = piVar5;\n    }" { (expression_statement "*piVar5 = 1;" (assignment_expression "*piVar5 = 1" (pointer_expression "*piVar5" * identifier) = number_literal) ;) (expression_statement "*piVar3 = 0;" (assignment_expression "*piVar3 = 0" (pointer_expression "*piVar3" * identifier) = number_literal) ;) (expression_statement "*(int **)(piVar3 + 6) = piVar8;" (assignment_expression "*(int **)(piVar3 + 6) = piVar8" (pointer_expression "*(int **)(piVar3 + 6)" * (cast_expression "(int **)(piVar3 + 6)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(piVar3 + 6)" ( (binary_expression "piVar3 + 6" identifier + number_literal) )))) = identifier) ;) (if_statement "if (piVar8 != (int *)0x0) {\n        *(int **)(piVar8 + 2) = piVar3;\n      }" if (parenthesized_expression "(piVar8 != (int *)0x0)" ( (binary_expression "piVar8 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        *(int **)(piVar8 + 2) = piVar3;\n      }" { (expression_statement "*(int **)(piVar8 + 2) = piVar3;" (assignment_expression "*(int **)(piVar8 + 2) = piVar3" (pointer_expression "*(int **)(piVar8 + 2)" * (cast_expression "(int **)(piVar8 + 2)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(piVar8 + 2)" ( (binary_expression "piVar8 + 2" identifier + number_literal) )))) = identifier) ;) })) (expression_statement "lVar4 = *(long *)(piVar3 + 2);" (assignment_expression "lVar4 = *(long *)(piVar3 + 2)" identifier = (pointer_expression "*(long *)(piVar3 + 2)" * (cast_expression "(long *)(piVar3 + 2)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar3 + 2)" ( (binary_expression "piVar3 + 2" identifier + number_literal) ))))) ;) (expression_statement "*(long *)(piVar5 + 2) = lVar4;" (assignment_expression "*(long *)(piVar5 + 2) = lVar4" (pointer_expression "*(long *)(piVar5 + 2)" * (cast_expression "(long *)(piVar5 + 2)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar5 + 2)" ( (binary_expression "piVar5 + 2" identifier + number_literal) )))) = identifier) ;) (if_statement "if (piVar3 == *(int **)(param_2 + 8)) {\n        *(int **)(param_2 + 8) = piVar5;\n        piVar1 = *(int **)(piVar3 + 6);\n      }\n      else if (piVar3 == *(int **)(lVar4 + 0x10)) {\n        *(int **)(lVar4 + 0x10) = piVar5;\n        piVar1 = piVar8;\n      }\n      else {\n        *(int **)(lVar4 + 0x18) = piVar5;\n        piVar1 = *(int **)(piVar3 + 6);\n      }" if (parenthesized_expression "(piVar3 == *(int **)(param_2 + 8))" ( (binary_expression "piVar3 == *(int **)(param_2 + 8)" identifier == (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) ))))) )) (compound_statement "{\n        *(int **)(param_2 + 8) = piVar5;\n        piVar1 = *(int **)(piVar3 + 6);\n      }" { (expression_statement "*(int **)(param_2 + 8) = piVar5;" (assignment_expression "*(int **)(param_2 + 8) = piVar5" (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 "piVar1 = *(int **)(piVar3 + 6);" (assignment_expression "piVar1 = *(int **)(piVar3 + 6)" identifier = (pointer_expression "*(int **)(piVar3 + 6)" * (cast_expression "(int **)(piVar3 + 6)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(piVar3 + 6)" ( (binary_expression "piVar3 + 6" identifier + number_literal) ))))) ;) }) (else_clause "else if (piVar3 == *(int **)(lVar4 + 0x10)) {\n        *(int **)(lVar4 + 0x10) = piVar5;\n        piVar1 = piVar8;\n      }\n      else {\n        *(int **)(lVar4 + 0x18) = piVar5;\n        piVar1 = *(int **)(piVar3 + 6);\n      }" else (if_statement "if (piVar3 == *(int **)(lVar4 + 0x10)) {\n        *(int **)(lVar4 + 0x10) = piVar5;\n        piVar1 = piVar8;\n      }\n      else {\n        *(int **)(lVar4 + 0x18) = piVar5;\n        piVar1 = *(int **)(piVar3 + 6);\n      }" if (parenthesized_expression "(piVar3 == *(int **)(lVar4 + 0x10))" ( (binary_expression "piVar3 == *(int **)(lVar4 + 0x10)" identifier == (pointer_expression "*(int **)(lVar4 + 0x10)" * (cast_expression "(int **)(lVar4 + 0x10)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(lVar4 + 0x10)" ( (binary_expression "lVar4 + 0x10" identifier + number_literal) ))))) )) (compound_statement "{\n        *(int **)(lVar4 + 0x10) = piVar5;\n        piVar1 = piVar8;\n      }" { (expression_statement "*(int **)(lVar4 + 0x10) = piVar5;" (assignment_expression "*(int **)(lVar4 + 0x10) = piVar5" (pointer_expression "*(int **)(lVar4 + 0x10)" * (cast_expression "(int **)(lVar4 + 0x10)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(lVar4 + 0x10)" ( (binary_expression "lVar4 + 0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "piVar1 = piVar8;" (assignment_expression "piVar1 = piVar8" identifier = identifier) ;) }) (else_clause "else {\n        *(int **)(lVar4 + 0x18) = piVar5;\n        piVar1 = *(int **)(piVar3 + 6);\n      }" else (compound_statement "{\n        *(int **)(lVar4 + 0x18) = piVar5;\n        piVar1 = *(int **)(piVar3 + 6);\n      }" { (expression_statement "*(int **)(lVar4 + 0x18) = piVar5;" (assignment_expression "*(int **)(lVar4 + 0x18) = piVar5" (pointer_expression "*(int **)(lVar4 + 0x18)" * (cast_expression "(int **)(lVar4 + 0x18)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(lVar4 + 0x18)" ( (binary_expression "lVar4 + 0x18" identifier + number_literal) )))) = identifier) ;) (expression_statement "piVar1 = *(int **)(piVar3 + 6);" (assignment_expression "piVar1 = *(int **)(piVar3 + 6)" identifier = (pointer_expression "*(int **)(piVar3 + 6)" * (cast_expression "(int **)(piVar3 + 6)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(piVar3 + 6)" ( (binary_expression "piVar3 + 6" identifier + number_literal) ))))) ;) }))))) (expression_statement "*(int **)(piVar5 + 4) = piVar3;" (assignment_expression "*(int **)(piVar5 + 4) = piVar3" (pointer_expression "*(int **)(piVar5 + 4)" * (cast_expression "(int **)(piVar5 + 4)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(piVar5 + 4)" ( (binary_expression "piVar5 + 4" identifier + number_literal) )))) = identifier) ;) (expression_statement "piVar8 = *(int **)(piVar1 + 4);" (assignment_expression "piVar8 = *(int **)(piVar1 + 4)" identifier = (pointer_expression "*(int **)(piVar1 + 4)" * (cast_expression "(int **)(piVar1 + 4)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(piVar1 + 4)" ( (binary_expression "piVar1 + 4" identifier + number_literal) ))))) ;) (expression_statement "*(int **)(piVar3 + 2) = piVar5;" (assignment_expression "*(int **)(piVar3 + 2) = piVar5" (pointer_expression "*(int **)(piVar3 + 2)" * (cast_expression "(int **)(piVar3 + 2)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(piVar3 + 2)" ( (binary_expression "piVar3 + 2" identifier + number_literal) )))) = identifier) ;) })) (if_statement "if ((piVar8 != (int *)0x0) && (*piVar8 != 1)) {\n      piVar5 = *(int **)(piVar1 + 6);\n      if ((piVar5 != (int *)0x0) && (*piVar5 != 1)) goto LAB_002dc69f;\n      lVar4 = *(long *)(piVar8 + 6);\n      *piVar8 = 1;\n      *piVar1 = 0;\n      *(long *)(piVar1 + 4) = lVar4;\n      if (lVar4 != 0) {\n        *(int **)(lVar4 + 8) = piVar1;\n      }\n      lVar4 = *(long *)(piVar1 + 2);\n      *(long *)(piVar8 + 2) = lVar4;\n      if (piVar1 == *(int **)(param_2 + 8)) {\n        *(int **)(param_2 + 8) = piVar8;\n      }\n      else if (piVar1 == *(int **)(lVar4 + 0x18)) {\n        *(int **)(lVar4 + 0x18) = piVar8;\n      }\n      else {\n        *(int **)(lVar4 + 0x10) = piVar8;\n      }\n      *(int **)(piVar8 + 6) = piVar1;\n      *(int **)(piVar1 + 2) = piVar8;\n      piVar8 = *(int **)(piVar3 + 6);\n      piVar5 = *(int **)(piVar8 + 6);\n      *piVar8 = *piVar3;\n      *piVar3 = 1;\n      if (piVar5 != (int *)0x0) goto LAB_002dc6af;\nLAB_002dc6b5:\n      lVar4 = *(long *)(piVar8 + 4);\n      *(long *)(piVar3 + 6) = lVar4;\n      if (lVar4 != 0) {\n        *(int **)(lVar4 + 8) = piVar3;\n      }\n      lVar4 = *(long *)(piVar3 + 2);\n      *(long *)(piVar8 + 2) = lVar4;\n      if (piVar3 == *(int **)(param_2 + 8)) {\n        *(int **)(param_2 + 8) = piVar8;\n      }\n      else if (piVar3 == *(int **)(lVar4 + 0x10)) {\n        *(int **)(lVar4 + 0x10) = piVar8;\n      }\n      else {\n        *(int **)(lVar4 + 0x18) = piVar8;\n      }\n      *(int **)(piVar8 + 4) = piVar3;\n      *(int **)(piVar3 + 2) = piVar8;\n      goto LAB_002dc6f0;\n    }" if (parenthesized_expression "((piVar8 != (int *)0x0) && (*piVar8 != 1))" ( (binary_expression "(piVar8 != (int *)0x0) && (*piVar8 != 1)" (parenthesized_expression "(piVar8 != (int *)0x0)" ( (binary_expression "piVar8 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) && (parenthesized_expression "(*piVar8 != 1)" ( (binary_expression "*piVar8 != 1" (pointer_expression "*piVar8" * identifier) != number_literal) ))) )) (compound_statement "{\n      piVar5 = *(int **)(piVar1 + 6);\n      if ((piVar5 != (int *)0x0) && (*piVar5 != 1)) goto LAB_002dc69f;\n      lVar4 = *(long *)(piVar8 + 6);\n      *piVar8 = 1;\n      *piVar1 = 0;\n      *(long *)(piVar1 + 4) = lVar4;\n      if (lVar4 != 0) {\n        *(int **)(lVar4 + 8) = piVar1;\n      }\n      lVar4 = *(long *)(piVar1 + 2);\n      *(long *)(piVar8 + 2) = lVar4;\n      if (piVar1 == *(int **)(param_2 + 8)) {\n        *(int **)(param_2 + 8) = piVar8;\n      }\n      else if (piVar1 == *(int **)(lVar4 + 0x18)) {\n        *(int **)(lVar4 + 0x18) = piVar8;\n      }\n      else {\n        *(int **)(lVar4 + 0x10) = piVar8;\n      }\n      *(int **)(piVar8 + 6) = piVar1;\n      *(int **)(piVar1 + 2) = piVar8;\n      piVar8 = *(int **)(piVar3 + 6);\n      piVar5 = *(int **)(piVar8 + 6);\n      *piVar8 = *piVar3;\n      *piVar3 = 1;\n      if (piVar5 != (int *)0x0) goto LAB_002dc6af;\nLAB_002dc6b5:\n      lVar4 = *(long *)(piVar8 + 4);\n      *(long *)(piVar3 + 6) = lVar4;\n      if (lVar4 != 0) {\n        *(int **)(lVar4 + 8) = piVar3;\n      }\n      lVar4 = *(long *)(piVar3 + 2);\n      *(long *)(piVar8 + 2) = lVar4;\n      if (piVar3 == *(int **)(param_2 + 8)) {\n        *(int **)(param_2 + 8) = piVar8;\n      }\n      else if (piVar3 == *(int **)(lVar4 + 0x10)) {\n        *(int **)(lVar4 + 0x10) = piVar8;\n      }\n      else {\n        *(int **)(lVar4 + 0x18) = piVar8;\n      }\n      *(int **)(piVar8 + 4) = piVar3;\n      *(int **)(piVar3 + 2) = piVar8;\n      goto LAB_002dc6f0;\n    }" { (expression_statement "piVar5 = *(int **)(piVar1 + 6);" (assignment_expression "piVar5 = *(int **)(piVar1 + 6)" identifier = (pointer_expression "*(int **)(piVar1 + 6)" * (cast_expression "(int **)(piVar1 + 6)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(piVar1 + 6)" ( (binary_expression "piVar1 + 6" identifier + number_literal) ))))) ;) (if_statement "if ((piVar5 != (int *)0x0) && (*piVar5 != 1)) goto LAB_002dc69f;" if (parenthesized_expression "((piVar5 != (int *)0x0) && (*piVar5 != 1))" ( (binary_expression "(piVar5 != (int *)0x0) && (*piVar5 != 1)" (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)) )) && (parenthesized_expression "(*piVar5 != 1)" ( (binary_expression "*piVar5 != 1" (pointer_expression "*piVar5" * identifier) != number_literal) ))) )) (goto_statement "goto LAB_002dc69f;" goto statement_identifier ;)) (expression_statement "lVar4 = *(long *)(piVar8 + 6);" (assignment_expression "lVar4 = *(long *)(piVar8 + 6)" identifier = (pointer_expression "*(long *)(piVar8 + 6)" * (cast_expression "(long *)(piVar8 + 6)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar8 + 6)" ( (binary_expression "piVar8 + 6" identifier + number_literal) ))))) ;) (expression_statement "*piVar8 = 1;" (assignment_expression "*piVar8 = 1" (pointer_expression "*piVar8" * identifier) = number_literal) ;) (expression_statement "*piVar1 = 0;" (assignment_expression "*piVar1 = 0" (pointer_expression "*piVar1" * identifier) = number_literal) ;) (expression_statement "*(long *)(piVar1 + 4) = lVar4;" (assignment_expression "*(long *)(piVar1 + 4) = lVar4" (pointer_expression "*(long *)(piVar1 + 4)" * (cast_expression "(long *)(piVar1 + 4)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar1 + 4)" ( (binary_expression "piVar1 + 4" identifier + number_literal) )))) = identifier) ;) (if_statement "if (lVar4 != 0) {\n        *(int **)(lVar4 + 8) = piVar1;\n      }" if (parenthesized_expression "(lVar4 != 0)" ( (binary_expression "lVar4 != 0" identifier != number_literal) )) (compound_statement "{\n        *(int **)(lVar4 + 8) = piVar1;\n      }" { (expression_statement "*(int **)(lVar4 + 8) = piVar1;" (assignment_expression "*(int **)(lVar4 + 8) = piVar1" (pointer_expression "*(int **)(lVar4 + 8)" * (cast_expression "(int **)(lVar4 + 8)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(lVar4 + 8)" ( (binary_expression "lVar4 + 8" identifier + number_literal) )))) = identifier) ;) })) (expression_statement "lVar4 = *(long *)(piVar1 + 2);" (assignment_expression "lVar4 = *(long *)(piVar1 + 2)" identifier = (pointer_expression "*(long *)(piVar1 + 2)" * (cast_expression "(long *)(piVar1 + 2)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar1 + 2)" ( (binary_expression "piVar1 + 2" identifier + number_literal) ))))) ;) (expression_statement "*(long *)(piVar8 + 2) = lVar4;" (assignment_expression "*(long *)(piVar8 + 2) = lVar4" (pointer_expression "*(long *)(piVar8 + 2)" * (cast_expression "(long *)(piVar8 + 2)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar8 + 2)" ( (binary_expression "piVar8 + 2" identifier + number_literal) )))) = identifier) ;) (if_statement "if (piVar1 == *(int **)(param_2 + 8)) {\n        *(int **)(param_2 + 8) = piVar8;\n      }\n      else if (piVar1 == *(int **)(lVar4 + 0x18)) {\n        *(int **)(lVar4 + 0x18) = piVar8;\n      }\n      else {\n        *(int **)(lVar4 + 0x10) = piVar8;\n      }" if (parenthesized_expression "(piVar1 == *(int **)(param_2 + 8))" ( (binary_expression "piVar1 == *(int **)(param_2 + 8)" identifier == (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) ))))) )) (compound_statement "{\n        *(int **)(param_2 + 8) = piVar8;\n      }" { (expression_statement "*(int **)(param_2 + 8) = piVar8;" (assignment_expression "*(int **)(param_2 + 8) = piVar8" (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) ;) }) (else_clause "else if (piVar1 == *(int **)(lVar4 + 0x18)) {\n        *(int **)(lVar4 + 0x18) = piVar8;\n      }\n      else {\n        *(int **)(lVar4 + 0x10) = piVar8;\n      }" else (if_statement "if (piVar1 == *(int **)(lVar4 + 0x18)) {\n        *(int **)(lVar4 + 0x18) = piVar8;\n      }\n      else {\n        *(int **)(lVar4 + 0x10) = piVar8;\n      }" if (parenthesized_expression "(piVar1 == *(int **)(lVar4 + 0x18))" ( (binary_expression "piVar1 == *(int **)(lVar4 + 0x18)" identifier == (pointer_expression "*(int **)(lVar4 + 0x18)" * (cast_expression "(int **)(lVar4 + 0x18)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(lVar4 + 0x18)" ( (binary_expression "lVar4 + 0x18" identifier + number_literal) ))))) )) (compound_statement "{\n        *(int **)(lVar4 + 0x18) = piVar8;\n      }" { (expression_statement "*(int **)(lVar4 + 0x18) = piVar8;" (assignment_expression "*(int **)(lVar4 + 0x18) = piVar8" (pointer_expression "*(int **)(lVar4 + 0x18)" * (cast_expression "(int **)(lVar4 + 0x18)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(lVar4 + 0x18)" ( (binary_expression "lVar4 + 0x18" identifier + number_literal) )))) = identifier) ;) }) (else_clause "else {\n        *(int **)(lVar4 + 0x10) = piVar8;\n      }" else (compound_statement "{\n        *(int **)(lVar4 + 0x10) = piVar8;\n      }" { (expression_statement "*(int **)(lVar4 + 0x10) = piVar8;" (assignment_expression "*(int **)(lVar4 + 0x10) = piVar8" (pointer_expression "*(int **)(lVar4 + 0x10)" * (cast_expression "(int **)(lVar4 + 0x10)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(lVar4 + 0x10)" ( (binary_expression "lVar4 + 0x10" identifier + number_literal) )))) = identifier) ;) }))))) (expression_statement "*(int **)(piVar8 + 6) = piVar1;" (assignment_expression "*(int **)(piVar8 + 6) = piVar1" (pointer_expression "*(int **)(piVar8 + 6)" * (cast_expression "(int **)(piVar8 + 6)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(piVar8 + 6)" ( (binary_expression "piVar8 + 6" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int **)(piVar1 + 2) = piVar8;" (assignment_expression "*(int **)(piVar1 + 2) = piVar8" (pointer_expression "*(int **)(piVar1 + 2)" * (cast_expression "(int **)(piVar1 + 2)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(piVar1 + 2)" ( (binary_expression "piVar1 + 2" identifier + number_literal) )))) = identifier) ;) (expression_statement "piVar8 = *(int **)(piVar3 + 6);" (assignment_expression "piVar8 = *(int **)(piVar3 + 6)" identifier = (pointer_expression "*(int **)(piVar3 + 6)" * (cast_expression "(int **)(piVar3 + 6)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(piVar3 + 6)" ( (binary_expression "piVar3 + 6" identifier + number_literal) ))))) ;) (expression_statement "piVar5 = *(int **)(piVar8 + 6);" (assignment_expression "piVar5 = *(int **)(piVar8 + 6)" identifier = (pointer_expression "*(int **)(piVar8 + 6)" * (cast_expression "(int **)(piVar8 + 6)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(piVar8 + 6)" ( (binary_expression "piVar8 + 6" identifier + number_literal) ))))) ;) (expression_statement "*piVar8 = *piVar3;" (assignment_expression "*piVar8 = *piVar3" (pointer_expression "*piVar8" * identifier) = (pointer_expression "*piVar3" * identifier)) ;) (expression_statement "*piVar3 = 1;" (assignment_expression "*piVar3 = 1" (pointer_expression "*piVar3" * identifier) = number_literal) ;) (if_statement "if (piVar5 != (int *)0x0) goto LAB_002dc6af;" 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)) )) (goto_statement "goto LAB_002dc6af;" goto statement_identifier ;)) (labeled_statement "LAB_002dc6b5:\n      lVar4 = *(long *)(piVar8 + 4);" statement_identifier : (expression_statement "lVar4 = *(long *)(piVar8 + 4);" (assignment_expression "lVar4 = *(long *)(piVar8 + 4)" identifier = (pointer_expression "*(long *)(piVar8 + 4)" * (cast_expression "(long *)(piVar8 + 4)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar8 + 4)" ( (binary_expression "piVar8 + 4" identifier + number_literal) ))))) ;)) (expression_statement "*(long *)(piVar3 + 6) = lVar4;" (assignment_expression "*(long *)(piVar3 + 6) = lVar4" (pointer_expression "*(long *)(piVar3 + 6)" * (cast_expression "(long *)(piVar3 + 6)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar3 + 6)" ( (binary_expression "piVar3 + 6" identifier + number_literal) )))) = identifier) ;) (if_statement "if (lVar4 != 0) {\n        *(int **)(lVar4 + 8) = piVar3;\n      }" if (parenthesized_expression "(lVar4 != 0)" ( (binary_expression "lVar4 != 0" identifier != number_literal) )) (compound_statement "{\n        *(int **)(lVar4 + 8) = piVar3;\n      }" { (expression_statement "*(int **)(lVar4 + 8) = piVar3;" (assignment_expression "*(int **)(lVar4 + 8) = piVar3" (pointer_expression "*(int **)(lVar4 + 8)" * (cast_expression "(int **)(lVar4 + 8)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(lVar4 + 8)" ( (binary_expression "lVar4 + 8" identifier + number_literal) )))) = identifier) ;) })) (expression_statement "lVar4 = *(long *)(piVar3 + 2);" (assignment_expression "lVar4 = *(long *)(piVar3 + 2)" identifier = (pointer_expression "*(long *)(piVar3 + 2)" * (cast_expression "(long *)(piVar3 + 2)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar3 + 2)" ( (binary_expression "piVar3 + 2" identifier + number_literal) ))))) ;) (expression_statement "*(long *)(piVar8 + 2) = lVar4;" (assignment_expression "*(long *)(piVar8 + 2) = lVar4" (pointer_expression "*(long *)(piVar8 + 2)" * (cast_expression "(long *)(piVar8 + 2)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar8 + 2)" ( (binary_expression "piVar8 + 2" identifier + number_literal) )))) = identifier) ;) (if_statement "if (piVar3 == *(int **)(param_2 + 8)) {\n        *(int **)(param_2 + 8) = piVar8;\n      }\n      else if (piVar3 == *(int **)(lVar4 + 0x10)) {\n        *(int **)(lVar4 + 0x10) = piVar8;\n      }\n      else {\n        *(int **)(lVar4 + 0x18) = piVar8;\n      }" if (parenthesized_expression "(piVar3 == *(int **)(param_2 + 8))" ( (binary_expression "piVar3 == *(int **)(param_2 + 8)" identifier == (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) ))))) )) (compound_statement "{\n        *(int **)(param_2 + 8) = piVar8;\n      }" { (expression_statement "*(int **)(param_2 + 8) = piVar8;" (assignment_expression "*(int **)(param_2 + 8) = piVar8" (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) ;) }) (else_clause "else if (piVar3 == *(int **)(lVar4 + 0x10)) {\n        *(int **)(lVar4 + 0x10) = piVar8;\n      }\n      else {\n        *(int **)(lVar4 + 0x18) = piVar8;\n      }" else (if_statement "if (piVar3 == *(int **)(lVar4 + 0x10)) {\n        *(int **)(lVar4 + 0x10) = piVar8;\n      }\n      else {\n        *(int **)(lVar4 + 0x18) = piVar8;\n      }" if (parenthesized_expression "(piVar3 == *(int **)(lVar4 + 0x10))" ( (binary_expression "piVar3 == *(int **)(lVar4 + 0x10)" identifier == (pointer_expression "*(int **)(lVar4 + 0x10)" * (cast_expression "(int **)(lVar4 + 0x10)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(lVar4 + 0x10)" ( (binary_expression "lVar4 + 0x10" identifier + number_literal) ))))) )) (compound_statement "{\n        *(int **)(lVar4 + 0x10) = piVar8;\n      }" { (expression_statement "*(int **)(lVar4 + 0x10) = piVar8;" (assignment_expression "*(int **)(lVar4 + 0x10) = piVar8" (pointer_expression "*(int **)(lVar4 + 0x10)" * (cast_expression "(int **)(lVar4 + 0x10)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(lVar4 + 0x10)" ( (binary_expression "lVar4 + 0x10" identifier + number_literal) )))) = identifier) ;) }) (else_clause "else {\n        *(int **)(lVar4 + 0x18) = piVar8;\n      }" else (compound_statement "{\n        *(int **)(lVar4 + 0x18) = piVar8;\n      }" { (expression_statement "*(int **)(lVar4 + 0x18) = piVar8;" (assignment_expression "*(int **)(lVar4 + 0x18) = piVar8" (pointer_expression "*(int **)(lVar4 + 0x18)" * (cast_expression "(int **)(lVar4 + 0x18)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(lVar4 + 0x18)" ( (binary_expression "lVar4 + 0x18" identifier + number_literal) )))) = identifier) ;) }))))) (expression_statement "*(int **)(piVar8 + 4) = piVar3;" (assignment_expression "*(int **)(piVar8 + 4) = piVar3" (pointer_expression "*(int **)(piVar8 + 4)" * (cast_expression "(int **)(piVar8 + 4)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(piVar8 + 4)" ( (binary_expression "piVar8 + 4" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int **)(piVar3 + 2) = piVar8;" (assignment_expression "*(int **)(piVar3 + 2) = piVar8" (pointer_expression "*(int **)(piVar3 + 2)" * (cast_expression "(int **)(piVar3 + 2)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(piVar3 + 2)" ( (binary_expression "piVar3 + 2" identifier + number_literal) )))) = identifier) ;) (goto_statement "goto LAB_002dc6f0;" goto statement_identifier ;) })) (expression_statement "piVar5 = *(int **)(piVar1 + 6);" (assignment_expression "piVar5 = *(int **)(piVar1 + 6)" identifier = (pointer_expression "*(int **)(piVar1 + 6)" * (cast_expression "(int **)(piVar1 + 6)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(piVar1 + 6)" ( (binary_expression "piVar1 + 6" identifier + number_literal) ))))) ;) (if_statement "if ((piVar5 != (int *)0x0) && (*piVar5 != 1)) {\nLAB_002dc69f:\n      piVar8 = *(int **)(piVar3 + 6);\n      *piVar1 = *piVar3;\n      *piVar3 = 1;\nLAB_002dc6af:\n      *piVar5 = 1;\n      goto LAB_002dc6b5;\n    }" if (parenthesized_expression "((piVar5 != (int *)0x0) && (*piVar5 != 1))" ( (binary_expression "(piVar5 != (int *)0x0) && (*piVar5 != 1)" (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)) )) && (parenthesized_expression "(*piVar5 != 1)" ( (binary_expression "*piVar5 != 1" (pointer_expression "*piVar5" * identifier) != number_literal) ))) )) (compound_statement "{\nLAB_002dc69f:\n      piVar8 = *(int **)(piVar3 + 6);\n      *piVar1 = *piVar3;\n      *piVar3 = 1;\nLAB_002dc6af:\n      *piVar5 = 1;\n      goto LAB_002dc6b5;\n    }" { (labeled_statement "LAB_002dc69f:\n      piVar8 = *(int **)(piVar3 + 6);" statement_identifier : (expression_statement "piVar8 = *(int **)(piVar3 + 6);" (assignment_expression "piVar8 = *(int **)(piVar3 + 6)" identifier = (pointer_expression "*(int **)(piVar3 + 6)" * (cast_expression "(int **)(piVar3 + 6)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(piVar3 + 6)" ( (binary_expression "piVar3 + 6" identifier + number_literal) ))))) ;)) (expression_statement "*piVar1 = *piVar3;" (assignment_expression "*piVar1 = *piVar3" (pointer_expression "*piVar1" * identifier) = (pointer_expression "*piVar3" * identifier)) ;) (expression_statement "*piVar3 = 1;" (assignment_expression "*piVar3 = 1" (pointer_expression "*piVar3" * identifier) = number_literal) ;) (labeled_statement "LAB_002dc6af:\n      *piVar5 = 1;" statement_identifier : (expression_statement "*piVar5 = 1;" (assignment_expression "*piVar5 = 1" (pointer_expression "*piVar5" * identifier) = number_literal) ;)) (goto_statement "goto LAB_002dc6b5;" goto statement_identifier ;) })) (labeled_statement "LAB_002dc5e8:\n    *piVar1 = 0;" statement_identifier : (expression_statement "*piVar1 = 0;" (assignment_expression "*piVar1 = 0" (pointer_expression "*piVar1" * identifier) = number_literal) ;)) (expression_statement "piVar1 = *(int **)(piVar3 + 2);" (assignment_expression "piVar1 = *(int **)(piVar3 + 2)" identifier = (pointer_expression "*(int **)(piVar3 + 2)" * (cast_expression "(int **)(piVar3 + 2)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(piVar3 + 2)" ( (binary_expression "piVar3 + 2" identifier + number_literal) ))))) ;) (expression_statement "piVar7 = piVar3;" (assignment_expression "piVar7 = piVar3" identifier = identifier) ;) }) while (parenthesized_expression "( true )" ( true )) ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration (sized_type_specifier long) IDENT) ))) (compound_statement { (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration (sized_type_specifier long) IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_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 = IDENT) ;)) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (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 = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) }) while (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != 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 (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) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_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 (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 * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + 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 (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_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 = (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_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 (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_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 = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (labeled_statement statement_identifier : (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) ;) }))) (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 = (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_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 (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_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) )))) = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) }) (else_clause else (compound_statement { (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) }) 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 (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_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) )))) = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) }) (else_clause else (compound_statement { (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) }) 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 { (return_statement return ;) }))) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = 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 { (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (return_statement return ;) }))) (labeled_statement statement_identifier : (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;)) (return_statement return ;) })) (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 = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_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 (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 IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) 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 = (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_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 = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_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 = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + 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 * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + 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) ;) })) (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 = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression (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 = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_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 = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression (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 = (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_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 = (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_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 (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 * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + 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 * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_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 = (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_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 = (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_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 (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_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 (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 IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) 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 = (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_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 = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_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 = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + 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 * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + 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) ;) })) (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 = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression (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 = (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_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 = (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_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 (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (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 * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_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 = (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;)) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_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 = (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_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 (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression (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 = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_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 = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }) while (parenthesized_expression ( BOOL )) ;) })))
(function_definition "void FUN_002dc460(int *param_1,long param_2)\n\n{\n  int *piVar1;\n  int iVar2;\n  int *piVar3;\n  long lVar4;\n  int *piVar5;\n  int *piVar6;\n  int *piVar7;\n  int *piVar8;\n  \n  piVar3 = *(int **)(param_1 + 4);\n  piVar5 = *(int **)(param_1 + 6);\n  piVar7 = piVar5;\n  if (piVar3 == (int *)0x0) {\nLAB_002dc770:\n    piVar3 = piVar7;\n    piVar1 = *(int **)(param_1 + 2);\n    if (piVar3 != (int *)0x0) goto LAB_002dc480;\n    piVar7 = (int *)0x0;\n  }\n  else {\n    if (piVar5 != (int *)0x0) {\n      do {\n        piVar8 = piVar7;\n        piVar7 = *(int **)(piVar8 + 4);\n      } while (*(int **)(piVar8 + 4) != (int *)0x0);\n      piVar7 = *(int **)(piVar8 + 6);\n      if (piVar8 != param_1) {\n        *(int **)(piVar3 + 2) = piVar8;\n        *(int **)(piVar8 + 4) = piVar3;\n        piVar1 = piVar8;\n        if (piVar8 != piVar5) {\n          piVar1 = *(int **)(piVar8 + 2);\n          piVar3 = piVar1;\n          if (piVar7 != (int *)0x0) {\n            *(int **)(piVar7 + 2) = piVar1;\n            piVar3 = *(int **)(piVar8 + 2);\n          }\n          *(int **)(piVar3 + 4) = piVar7;\n          *(int **)(piVar8 + 6) = piVar5;\n          *(int **)(*(long *)(param_1 + 6) + 8) = piVar8;\n        }\n        if (*(int **)(param_2 + 8) == param_1) {\n          *(int **)(param_2 + 8) = piVar8;\n          lVar4 = *(long *)(param_1 + 2);\n        }\n        else {\n          lVar4 = *(long *)(param_1 + 2);\n          if (*(int **)(lVar4 + 0x10) == param_1) {\n            *(int **)(lVar4 + 0x10) = piVar8;\n          }\n          else {\n            *(int **)(lVar4 + 0x18) = piVar8;\n          }\n        }\n        *(long *)(piVar8 + 2) = lVar4;\n        iVar2 = *piVar8;\n        *piVar8 = *param_1;\n        *param_1 = iVar2;\n        goto LAB_002dc55f;\n      }\n      goto LAB_002dc770;\n    }\n    piVar1 = *(int **)(param_1 + 2);\nLAB_002dc480:\n    *(int **)(piVar3 + 2) = piVar1;\n    piVar7 = piVar3;\n  }\n  if (*(int **)(param_2 + 8) == param_1) {\n    *(int **)(param_2 + 8) = piVar7;\n  }\n  else {\n    lVar4 = *(long *)(param_1 + 2);\n    if (*(int **)(lVar4 + 0x10) == param_1) {\n      *(int **)(lVar4 + 0x10) = piVar7;\n    }\n    else {\n      *(int **)(lVar4 + 0x18) = piVar7;\n    }\n  }\n  if (*(int **)(param_2 + 0x10) == param_1) {\n    piVar3 = piVar7;\n    if (*(long *)(param_1 + 6) == 0) {\n      *(undefined8 *)(param_2 + 0x10) = *(undefined8 *)(param_1 + 2);\n    }\n    else {\n      do {\n        piVar5 = piVar3;\n        piVar3 = *(int **)(piVar5 + 4);\n      } while (piVar3 != (int *)0x0);\n      *(int **)(param_2 + 0x10) = piVar5;\n    }\n  }\n  iVar2 = *param_1;\n  if (*(int **)(param_2 + 0x18) == param_1) {\n    piVar3 = piVar7;\n    if (*(long *)(param_1 + 4) == 0) {\n      *(undefined8 *)(param_2 + 0x18) = *(undefined8 *)(param_1 + 2);\n    }\n    else {\n      do {\n        piVar5 = piVar3;\n        piVar3 = *(int **)(piVar5 + 6);\n      } while (piVar3 != (int *)0x0);\n      *(int **)(param_2 + 0x18) = piVar5;\n    }\n  }\nLAB_002dc55f:\n  if (iVar2 == 0) {\n    return;\n  }\n  do {\n    piVar3 = piVar1;\n    if (*(int **)(param_2 + 8) == piVar7) {\nLAB_002dc6f0:\n      if (piVar7 == (int *)0x0) {\n        return;\n      }\nLAB_002dc6f5:\n      *piVar7 = 1;\n      return;\n    }\n    if ((piVar7 != (int *)0x0) && (*piVar7 != 1)) goto LAB_002dc6f5;\n    piVar5 = *(int **)(piVar3 + 4);\n    if (piVar5 != piVar7) {\n      piVar8 = *(int **)(piVar5 + 6);\n      piVar1 = piVar5;\n      if (*piVar5 == 0) {\n        *piVar5 = 1;\n        *piVar3 = 0;\n        *(int **)(piVar3 + 4) = piVar8;\n        if (piVar8 != (int *)0x0) {\n          *(int **)(piVar8 + 2) = piVar3;\n        }\n        lVar4 = *(long *)(piVar3 + 2);\n        *(long *)(piVar5 + 2) = lVar4;\n        if (piVar3 == *(int **)(param_2 + 8)) {\n          *(int **)(param_2 + 8) = piVar5;\n          piVar1 = *(int **)(piVar3 + 4);\n        }\n        else if (piVar3 == *(int **)(lVar4 + 0x18)) {\n          *(int **)(lVar4 + 0x18) = piVar5;\n          piVar1 = piVar8;\n        }\n        else {\n          *(int **)(lVar4 + 0x10) = piVar5;\n          piVar1 = *(int **)(piVar3 + 4);\n        }\n        *(int **)(piVar5 + 6) = piVar3;\n        piVar8 = *(int **)(piVar1 + 6);\n        *(int **)(piVar3 + 2) = piVar5;\n      }\n      if ((piVar8 == (int *)0x0) || (*piVar8 == 1)) {\n        piVar5 = *(int **)(piVar1 + 4);\n        if ((piVar5 == (int *)0x0) || (*piVar5 == 1)) goto LAB_002dc5e8;\nLAB_002dc82b:\n        piVar6 = *(int **)(piVar3 + 4);\n        *piVar1 = *piVar3;\n        *piVar3 = 1;\nLAB_002dc83b:\n        *piVar5 = 1;\n      }\n      else {\n        piVar5 = *(int **)(piVar1 + 4);\n        if ((piVar5 != (int *)0x0) && (*piVar5 != 1)) goto LAB_002dc82b;\n        lVar4 = *(long *)(piVar8 + 4);\n        *piVar8 = 1;\n        *piVar1 = 0;\n        *(long *)(piVar1 + 6) = lVar4;\n        if (lVar4 != 0) {\n          *(int **)(lVar4 + 8) = piVar1;\n        }\n        lVar4 = *(long *)(piVar1 + 2);\n        *(long *)(piVar8 + 2) = lVar4;\n        if (piVar1 == *(int **)(param_2 + 8)) {\n          *(int **)(param_2 + 8) = piVar8;\n        }\n        else if (piVar1 == *(int **)(lVar4 + 0x10)) {\n          *(int **)(lVar4 + 0x10) = piVar8;\n        }\n        else {\n          *(int **)(lVar4 + 0x18) = piVar8;\n        }\n        *(int **)(piVar8 + 4) = piVar1;\n        piVar6 = *(int **)(piVar3 + 4);\n        *(int **)(piVar1 + 2) = piVar8;\n        piVar5 = *(int **)(piVar6 + 4);\n        *piVar6 = *piVar3;\n        *piVar3 = 1;\n        if (piVar5 != (int *)0x0) goto LAB_002dc83b;\n      }\n      lVar4 = *(long *)(piVar6 + 6);\n      *(long *)(piVar3 + 4) = lVar4;\n      if (lVar4 != 0) {\n        *(int **)(lVar4 + 8) = piVar3;\n      }\n      lVar4 = *(long *)(piVar3 + 2);\n      *(long *)(piVar6 + 2) = lVar4;\n      if (piVar3 == *(int **)(param_2 + 8)) {\n        *(int **)(param_2 + 8) = piVar6;\n      }\n      else if (piVar3 == *(int **)(lVar4 + 0x18)) {\n        *(int **)(lVar4 + 0x18) = piVar6;\n      }\n      else {\n        *(int **)(lVar4 + 0x10) = piVar6;\n      }\n      *(int **)(piVar6 + 6) = piVar3;\n      *(int **)(piVar3 + 2) = piVar6;\n      goto LAB_002dc6f0;\n    }\n    piVar5 = *(int **)(piVar3 + 6);\n    piVar8 = *(int **)(piVar5 + 4);\n    piVar1 = piVar5;\n    if (*piVar5 == 0) {\n      *piVar5 = 1;\n      *piVar3 = 0;\n      *(int **)(piVar3 + 6) = piVar8;\n      if (piVar8 != (int *)0x0) {\n        *(int **)(piVar8 + 2) = piVar3;\n      }\n      lVar4 = *(long *)(piVar3 + 2);\n      *(long *)(piVar5 + 2) = lVar4;\n      if (piVar3 == *(int **)(param_2 + 8)) {\n        *(int **)(param_2 + 8) = piVar5;\n        piVar1 = *(int **)(piVar3 + 6);\n      }\n      else if (piVar3 == *(int **)(lVar4 + 0x10)) {\n        *(int **)(lVar4 + 0x10) = piVar5;\n        piVar1 = piVar8;\n      }\n      else {\n        *(int **)(lVar4 + 0x18) = piVar5;\n        piVar1 = *(int **)(piVar3 + 6);\n      }\n      *(int **)(piVar5 + 4) = piVar3;\n      piVar8 = *(int **)(piVar1 + 4);\n      *(int **)(piVar3 + 2) = piVar5;\n    }\n    if ((piVar8 != (int *)0x0) && (*piVar8 != 1)) {\n      piVar5 = *(int **)(piVar1 + 6);\n      if ((piVar5 != (int *)0x0) && (*piVar5 != 1)) goto LAB_002dc69f;\n      lVar4 = *(long *)(piVar8 + 6);\n      *piVar8 = 1;\n      *piVar1 = 0;\n      *(long *)(piVar1 + 4) = lVar4;\n      if (lVar4 != 0) {\n        *(int **)(lVar4 + 8) = piVar1;\n      }\n      lVar4 = *(long *)(piVar1 + 2);\n      *(long *)(piVar8 + 2) = lVar4;\n      if (piVar1 == *(int **)(param_2 + 8)) {\n        *(int **)(param_2 + 8) = piVar8;\n      }\n      else if (piVar1 == *(int **)(lVar4 + 0x18)) {\n        *(int **)(lVar4 + 0x18) = piVar8;\n      }\n      else {\n        *(int **)(lVar4 + 0x10) = piVar8;\n      }\n      *(int **)(piVar8 + 6) = piVar1;\n      *(int **)(piVar1 + 2) = piVar8;\n      piVar8 = *(int **)(piVar3 + 6);\n      piVar5 = *(int **)(piVar8 + 6);\n      *piVar8 = *piVar3;\n      *piVar3 = 1;\n      if (piVar5 != (int *)0x0) goto LAB_002dc6af;\nLAB_002dc6b5:\n      lVar4 = *(long *)(piVar8 + 4);\n      *(long *)(piVar3 + 6) = lVar4;\n      if (lVar4 != 0) {\n        *(int **)(lVar4 + 8) = piVar3;\n      }\n      lVar4 = *(long *)(piVar3 + 2);\n      *(long *)(piVar8 + 2) = lVar4;\n      if (piVar3 == *(int **)(param_2 + 8)) {\n        *(int **)(param_2 + 8) = piVar8;\n      }\n      else if (piVar3 == *(int **)(lVar4 + 0x10)) {\n        *(int **)(lVar4 + 0x10) = piVar8;\n      }\n      else {\n        *(int **)(lVar4 + 0x18) = piVar8;\n      }\n      *(int **)(piVar8 + 4) = piVar3;\n      *(int **)(piVar3 + 2) = piVar8;\n      goto LAB_002dc6f0;\n    }\n    piVar5 = *(int **)(piVar1 + 6);\n    if ((piVar5 != (int *)0x0) && (*piVar5 != 1)) {\nLAB_002dc69f:\n      piVar8 = *(int **)(piVar3 + 6);\n      *piVar1 = *piVar3;\n      *piVar3 = 1;\nLAB_002dc6af:\n      *piVar5 = 1;\n      goto LAB_002dc6b5;\n    }\nLAB_002dc5e8:\n    *piVar1 = 0;\n    piVar1 = *(int **)(piVar3 + 2);\n    piVar7 = piVar3;\n  } while( true );\n}" (primitive_type "void") (function_declarator "FUN_002dc460(int *param_1,long param_2)" (identifier "FUN_002dc460") (parameter_list "(int *param_1,long param_2)" (( "(") (parameter_declaration "int *param_1" (primitive_type "int") (pointer_declarator "*param_1" (* "*") (identifier "param_1"))) (, ",") (parameter_declaration "long param_2" (sized_type_specifier "long" (long "long")) (identifier "param_2")) () ")"))) (compound_statement "{\n  int *piVar1;\n  int iVar2;\n  int *piVar3;\n  long lVar4;\n  int *piVar5;\n  int *piVar6;\n  int *piVar7;\n  int *piVar8;\n  \n  piVar3 = *(int **)(param_1 + 4);\n  piVar5 = *(int **)(param_1 + 6);\n  piVar7 = piVar5;\n  if (piVar3 == (int *)0x0) {\nLAB_002dc770:\n    piVar3 = piVar7;\n    piVar1 = *(int **)(param_1 + 2);\n    if (piVar3 != (int *)0x0) goto LAB_002dc480;\n    piVar7 = (int *)0x0;\n  }\n  else {\n    if (piVar5 != (int *)0x0) {\n      do {\n        piVar8 = piVar7;\n        piVar7 = *(int **)(piVar8 + 4);\n      } while (*(int **)(piVar8 + 4) != (int *)0x0);\n      piVar7 = *(int **)(piVar8 + 6);\n      if (piVar8 != param_1) {\n        *(int **)(piVar3 + 2) = piVar8;\n        *(int **)(piVar8 + 4) = piVar3;\n        piVar1 = piVar8;\n        if (piVar8 != piVar5) {\n          piVar1 = *(int **)(piVar8 + 2);\n          piVar3 = piVar1;\n          if (piVar7 != (int *)0x0) {\n            *(int **)(piVar7 + 2) = piVar1;\n            piVar3 = *(int **)(piVar8 + 2);\n          }\n          *(int **)(piVar3 + 4) = piVar7;\n          *(int **)(piVar8 + 6) = piVar5;\n          *(int **)(*(long *)(param_1 + 6) + 8) = piVar8;\n        }\n        if (*(int **)(param_2 + 8) == param_1) {\n          *(int **)(param_2 + 8) = piVar8;\n          lVar4 = *(long *)(param_1 + 2);\n        }\n        else {\n          lVar4 = *(long *)(param_1 + 2);\n          if (*(int **)(lVar4 + 0x10) == param_1) {\n            *(int **)(lVar4 + 0x10) = piVar8;\n          }\n          else {\n            *(int **)(lVar4 + 0x18) = piVar8;\n          }\n        }\n        *(long *)(piVar8 + 2) = lVar4;\n        iVar2 = *piVar8;\n        *piVar8 = *param_1;\n        *param_1 = iVar2;\n        goto LAB_002dc55f;\n      }\n      goto LAB_002dc770;\n    }\n    piVar1 = *(int **)(param_1 + 2);\nLAB_002dc480:\n    *(int **)(piVar3 + 2) = piVar1;\n    piVar7 = piVar3;\n  }\n  if (*(int **)(param_2 + 8) == param_1) {\n    *(int **)(param_2 + 8) = piVar7;\n  }\n  else {\n    lVar4 = *(long *)(param_1 + 2);\n    if (*(int **)(lVar4 + 0x10) == param_1) {\n      *(int **)(lVar4 + 0x10) = piVar7;\n    }\n    else {\n      *(int **)(lVar4 + 0x18) = piVar7;\n    }\n  }\n  if (*(int **)(param_2 + 0x10) == param_1) {\n    piVar3 = piVar7;\n    if (*(long *)(param_1 + 6) == 0) {\n      *(undefined8 *)(param_2 + 0x10) = *(undefined8 *)(param_1 + 2);\n    }\n    else {\n      do {\n        piVar5 = piVar3;\n        piVar3 = *(int **)(piVar5 + 4);\n      } while (piVar3 != (int *)0x0);\n      *(int **)(param_2 + 0x10) = piVar5;\n    }\n  }\n  iVar2 = *param_1;\n  if (*(int **)(param_2 + 0x18) == param_1) {\n    piVar3 = piVar7;\n    if (*(long *)(param_1 + 4) == 0) {\n      *(undefined8 *)(param_2 + 0x18) = *(undefined8 *)(param_1 + 2);\n    }\n    else {\n      do {\n        piVar5 = piVar3;\n        piVar3 = *(int **)(piVar5 + 6);\n      } while (piVar3 != (int *)0x0);\n      *(int **)(param_2 + 0x18) = piVar5;\n    }\n  }\nLAB_002dc55f:\n  if (iVar2 == 0) {\n    return;\n  }\n  do {\n    piVar3 = piVar1;\n    if (*(int **)(param_2 + 8) == piVar7) {\nLAB_002dc6f0:\n      if (piVar7 == (int *)0x0) {\n        return;\n      }\nLAB_002dc6f5:\n      *piVar7 = 1;\n      return;\n    }\n    if ((piVar7 != (int *)0x0) && (*piVar7 != 1)) goto LAB_002dc6f5;\n    piVar5 = *(int **)(piVar3 + 4);\n    if (piVar5 != piVar7) {\n      piVar8 = *(int **)(piVar5 + 6);\n      piVar1 = piVar5;\n      if (*piVar5 == 0) {\n        *piVar5 = 1;\n        *piVar3 = 0;\n        *(int **)(piVar3 + 4) = piVar8;\n        if (piVar8 != (int *)0x0) {\n          *(int **)(piVar8 + 2) = piVar3;\n        }\n        lVar4 = *(long *)(piVar3 + 2);\n        *(long *)(piVar5 + 2) = lVar4;\n        if (piVar3 == *(int **)(param_2 + 8)) {\n          *(int **)(param_2 + 8) = piVar5;\n          piVar1 = *(int **)(piVar3 + 4);\n        }\n        else if (piVar3 == *(int **)(lVar4 + 0x18)) {\n          *(int **)(lVar4 + 0x18) = piVar5;\n          piVar1 = piVar8;\n        }\n        else {\n          *(int **)(lVar4 + 0x10) = piVar5;\n          piVar1 = *(int **)(piVar3 + 4);\n        }\n        *(int **)(piVar5 + 6) = piVar3;\n        piVar8 = *(int **)(piVar1 + 6);\n        *(int **)(piVar3 + 2) = piVar5;\n      }\n      if ((piVar8 == (int *)0x0) || (*piVar8 == 1)) {\n        piVar5 = *(int **)(piVar1 + 4);\n        if ((piVar5 == (int *)0x0) || (*piVar5 == 1)) goto LAB_002dc5e8;\nLAB_002dc82b:\n        piVar6 = *(int **)(piVar3 + 4);\n        *piVar1 = *piVar3;\n        *piVar3 = 1;\nLAB_002dc83b:\n        *piVar5 = 1;\n      }\n      else {\n        piVar5 = *(int **)(piVar1 + 4);\n        if ((piVar5 != (int *)0x0) && (*piVar5 != 1)) goto LAB_002dc82b;\n        lVar4 = *(long *)(piVar8 + 4);\n        *piVar8 = 1;\n        *piVar1 = 0;\n        *(long *)(piVar1 + 6) = lVar4;\n        if (lVar4 != 0) {\n          *(int **)(lVar4 + 8) = piVar1;\n        }\n        lVar4 = *(long *)(piVar1 + 2);\n        *(long *)(piVar8 + 2) = lVar4;\n        if (piVar1 == *(int **)(param_2 + 8)) {\n          *(int **)(param_2 + 8) = piVar8;\n        }\n        else if (piVar1 == *(int **)(lVar4 + 0x10)) {\n          *(int **)(lVar4 + 0x10) = piVar8;\n        }\n        else {\n          *(int **)(lVar4 + 0x18) = piVar8;\n        }\n        *(int **)(piVar8 + 4) = piVar1;\n        piVar6 = *(int **)(piVar3 + 4);\n        *(int **)(piVar1 + 2) = piVar8;\n        piVar5 = *(int **)(piVar6 + 4);\n        *piVar6 = *piVar3;\n        *piVar3 = 1;\n        if (piVar5 != (int *)0x0) goto LAB_002dc83b;\n      }\n      lVar4 = *(long *)(piVar6 + 6);\n      *(long *)(piVar3 + 4) = lVar4;\n      if (lVar4 != 0) {\n        *(int **)(lVar4 + 8) = piVar3;\n      }\n      lVar4 = *(long *)(piVar3 + 2);\n      *(long *)(piVar6 + 2) = lVar4;\n      if (piVar3 == *(int **)(param_2 + 8)) {\n        *(int **)(param_2 + 8) = piVar6;\n      }\n      else if (piVar3 == *(int **)(lVar4 + 0x18)) {\n        *(int **)(lVar4 + 0x18) = piVar6;\n      }\n      else {\n        *(int **)(lVar4 + 0x10) = piVar6;\n      }\n      *(int **)(piVar6 + 6) = piVar3;\n      *(int **)(piVar3 + 2) = piVar6;\n      goto LAB_002dc6f0;\n    }\n    piVar5 = *(int **)(piVar3 + 6);\n    piVar8 = *(int **)(piVar5 + 4);\n    piVar1 = piVar5;\n    if (*piVar5 == 0) {\n      *piVar5 = 1;\n      *piVar3 = 0;\n      *(int **)(piVar3 + 6) = piVar8;\n      if (piVar8 != (int *)0x0) {\n        *(int **)(piVar8 + 2) = piVar3;\n      }\n      lVar4 = *(long *)(piVar3 + 2);\n      *(long *)(piVar5 + 2) = lVar4;\n      if (piVar3 == *(int **)(param_2 + 8)) {\n        *(int **)(param_2 + 8) = piVar5;\n        piVar1 = *(int **)(piVar3 + 6);\n      }\n      else if (piVar3 == *(int **)(lVar4 + 0x10)) {\n        *(int **)(lVar4 + 0x10) = piVar5;\n        piVar1 = piVar8;\n      }\n      else {\n        *(int **)(lVar4 + 0x18) = piVar5;\n        piVar1 = *(int **)(piVar3 + 6);\n      }\n      *(int **)(piVar5 + 4) = piVar3;\n      piVar8 = *(int **)(piVar1 + 4);\n      *(int **)(piVar3 + 2) = piVar5;\n    }\n    if ((piVar8 != (int *)0x0) && (*piVar8 != 1)) {\n      piVar5 = *(int **)(piVar1 + 6);\n      if ((piVar5 != (int *)0x0) && (*piVar5 != 1)) goto LAB_002dc69f;\n      lVar4 = *(long *)(piVar8 + 6);\n      *piVar8 = 1;\n      *piVar1 = 0;\n      *(long *)(piVar1 + 4) = lVar4;\n      if (lVar4 != 0) {\n        *(int **)(lVar4 + 8) = piVar1;\n      }\n      lVar4 = *(long *)(piVar1 + 2);\n      *(long *)(piVar8 + 2) = lVar4;\n      if (piVar1 == *(int **)(param_2 + 8)) {\n        *(int **)(param_2 + 8) = piVar8;\n      }\n      else if (piVar1 == *(int **)(lVar4 + 0x18)) {\n        *(int **)(lVar4 + 0x18) = piVar8;\n      }\n      else {\n        *(int **)(lVar4 + 0x10) = piVar8;\n      }\n      *(int **)(piVar8 + 6) = piVar1;\n      *(int **)(piVar1 + 2) = piVar8;\n      piVar8 = *(int **)(piVar3 + 6);\n      piVar5 = *(int **)(piVar8 + 6);\n      *piVar8 = *piVar3;\n      *piVar3 = 1;\n      if (piVar5 != (int *)0x0) goto LAB_002dc6af;\nLAB_002dc6b5:\n      lVar4 = *(long *)(piVar8 + 4);\n      *(long *)(piVar3 + 6) = lVar4;\n      if (lVar4 != 0) {\n        *(int **)(lVar4 + 8) = piVar3;\n      }\n      lVar4 = *(long *)(piVar3 + 2);\n      *(long *)(piVar8 + 2) = lVar4;\n      if (piVar3 == *(int **)(param_2 + 8)) {\n        *(int **)(param_2 + 8) = piVar8;\n      }\n      else if (piVar3 == *(int **)(lVar4 + 0x10)) {\n        *(int **)(lVar4 + 0x10) = piVar8;\n      }\n      else {\n        *(int **)(lVar4 + 0x18) = piVar8;\n      }\n      *(int **)(piVar8 + 4) = piVar3;\n      *(int **)(piVar3 + 2) = piVar8;\n      goto LAB_002dc6f0;\n    }\n    piVar5 = *(int **)(piVar1 + 6);\n    if ((piVar5 != (int *)0x0) && (*piVar5 != 1)) {\nLAB_002dc69f:\n      piVar8 = *(int **)(piVar3 + 6);\n      *piVar1 = *piVar3;\n      *piVar3 = 1;\nLAB_002dc6af:\n      *piVar5 = 1;\n      goto LAB_002dc6b5;\n    }\nLAB_002dc5e8:\n    *piVar1 = 0;\n    piVar1 = *(int **)(piVar3 + 2);\n    piVar7 = piVar3;\n  } while( true );\n}" ({ "{") (declaration "int *piVar1;" (primitive_type "int") (pointer_declarator "*piVar1" (* "*") (identifier "piVar1")) (; ";")) (declaration "int iVar2;" (primitive_type "int") (identifier "iVar2") (; ";")) (declaration "int *piVar3;" (primitive_type "int") (pointer_declarator "*piVar3" (* "*") (identifier "piVar3")) (; ";")) (declaration "long lVar4;" (sized_type_specifier "long" (long "long")) (identifier "lVar4") (; ";")) (declaration "int *piVar5;" (primitive_type "int") (pointer_declarator "*piVar5" (* "*") (identifier "piVar5")) (; ";")) (declaration "int *piVar6;" (primitive_type "int") (pointer_declarator "*piVar6" (* "*") (identifier "piVar6")) (; ";")) (declaration "int *piVar7;" (primitive_type "int") (pointer_declarator "*piVar7" (* "*") (identifier "piVar7")) (; ";")) (declaration "int *piVar8;" (primitive_type "int") (pointer_declarator "*piVar8" (* "*") (identifier "piVar8")) (; ";")) (expression_statement "piVar3 = *(int **)(param_1 + 4);" (assignment_expression "piVar3 = *(int **)(param_1 + 4)" (identifier "piVar3") (= "=") (pointer_expression "*(int **)(param_1 + 4)" (* "*") (cast_expression "(int **)(param_1 + 4)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 4)" (( "(") (binary_expression "param_1 + 4" (identifier "param_1") (+ "+") (number_literal "4")) () ")"))))) (; ";")) (expression_statement "piVar5 = *(int **)(param_1 + 6);" (assignment_expression "piVar5 = *(int **)(param_1 + 6)" (identifier "piVar5") (= "=") (pointer_expression "*(int **)(param_1 + 6)" (* "*") (cast_expression "(int **)(param_1 + 6)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 6)" (( "(") (binary_expression "param_1 + 6" (identifier "param_1") (+ "+") (number_literal "6")) () ")"))))) (; ";")) (expression_statement "piVar7 = piVar5;" (assignment_expression "piVar7 = piVar5" (identifier "piVar7") (= "=") (identifier "piVar5")) (; ";")) (if_statement "if (piVar3 == (int *)0x0) {\nLAB_002dc770:\n    piVar3 = piVar7;\n    piVar1 = *(int **)(param_1 + 2);\n    if (piVar3 != (int *)0x0) goto LAB_002dc480;\n    piVar7 = (int *)0x0;\n  }\n  else {\n    if (piVar5 != (int *)0x0) {\n      do {\n        piVar8 = piVar7;\n        piVar7 = *(int **)(piVar8 + 4);\n      } while (*(int **)(piVar8 + 4) != (int *)0x0);\n      piVar7 = *(int **)(piVar8 + 6);\n      if (piVar8 != param_1) {\n        *(int **)(piVar3 + 2) = piVar8;\n        *(int **)(piVar8 + 4) = piVar3;\n        piVar1 = piVar8;\n        if (piVar8 != piVar5) {\n          piVar1 = *(int **)(piVar8 + 2);\n          piVar3 = piVar1;\n          if (piVar7 != (int *)0x0) {\n            *(int **)(piVar7 + 2) = piVar1;\n            piVar3 = *(int **)(piVar8 + 2);\n          }\n          *(int **)(piVar3 + 4) = piVar7;\n          *(int **)(piVar8 + 6) = piVar5;\n          *(int **)(*(long *)(param_1 + 6) + 8) = piVar8;\n        }\n        if (*(int **)(param_2 + 8) == param_1) {\n          *(int **)(param_2 + 8) = piVar8;\n          lVar4 = *(long *)(param_1 + 2);\n        }\n        else {\n          lVar4 = *(long *)(param_1 + 2);\n          if (*(int **)(lVar4 + 0x10) == param_1) {\n            *(int **)(lVar4 + 0x10) = piVar8;\n          }\n          else {\n            *(int **)(lVar4 + 0x18) = piVar8;\n          }\n        }\n        *(long *)(piVar8 + 2) = lVar4;\n        iVar2 = *piVar8;\n        *piVar8 = *param_1;\n        *param_1 = iVar2;\n        goto LAB_002dc55f;\n      }\n      goto LAB_002dc770;\n    }\n    piVar1 = *(int **)(param_1 + 2);\nLAB_002dc480:\n    *(int **)(piVar3 + 2) = piVar1;\n    piVar7 = piVar3;\n  }" (if "if") (parenthesized_expression "(piVar3 == (int *)0x0)" (( "(") (binary_expression "piVar3 == (int *)0x0" (identifier "piVar3") (== "==") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\nLAB_002dc770:\n    piVar3 = piVar7;\n    piVar1 = *(int **)(param_1 + 2);\n    if (piVar3 != (int *)0x0) goto LAB_002dc480;\n    piVar7 = (int *)0x0;\n  }" ({ "{") (labeled_statement "LAB_002dc770:\n    piVar3 = piVar7;" (statement_identifier "LAB_002dc770") (: ":") (expression_statement "piVar3 = piVar7;" (assignment_expression "piVar3 = piVar7" (identifier "piVar3") (= "=") (identifier "piVar7")) (; ";"))) (expression_statement "piVar1 = *(int **)(param_1 + 2);" (assignment_expression "piVar1 = *(int **)(param_1 + 2)" (identifier "piVar1") (= "=") (pointer_expression "*(int **)(param_1 + 2)" (* "*") (cast_expression "(int **)(param_1 + 2)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 2)" (( "(") (binary_expression "param_1 + 2" (identifier "param_1") (+ "+") (number_literal "2")) () ")"))))) (; ";")) (if_statement "if (piVar3 != (int *)0x0) goto LAB_002dc480;" (if "if") (parenthesized_expression "(piVar3 != (int *)0x0)" (( "(") (binary_expression "piVar3 != (int *)0x0" (identifier "piVar3") (!= "!=") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (goto_statement "goto LAB_002dc480;" (goto "goto") (statement_identifier "LAB_002dc480") (; ";"))) (expression_statement "piVar7 = (int *)0x0;" (assignment_expression "piVar7 = (int *)0x0" (identifier "piVar7") (= "=") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (} "}")) (else_clause "else {\n    if (piVar5 != (int *)0x0) {\n      do {\n        piVar8 = piVar7;\n        piVar7 = *(int **)(piVar8 + 4);\n      } while (*(int **)(piVar8 + 4) != (int *)0x0);\n      piVar7 = *(int **)(piVar8 + 6);\n      if (piVar8 != param_1) {\n        *(int **)(piVar3 + 2) = piVar8;\n        *(int **)(piVar8 + 4) = piVar3;\n        piVar1 = piVar8;\n        if (piVar8 != piVar5) {\n          piVar1 = *(int **)(piVar8 + 2);\n          piVar3 = piVar1;\n          if (piVar7 != (int *)0x0) {\n            *(int **)(piVar7 + 2) = piVar1;\n            piVar3 = *(int **)(piVar8 + 2);\n          }\n          *(int **)(piVar3 + 4) = piVar7;\n          *(int **)(piVar8 + 6) = piVar5;\n          *(int **)(*(long *)(param_1 + 6) + 8) = piVar8;\n        }\n        if (*(int **)(param_2 + 8) == param_1) {\n          *(int **)(param_2 + 8) = piVar8;\n          lVar4 = *(long *)(param_1 + 2);\n        }\n        else {\n          lVar4 = *(long *)(param_1 + 2);\n          if (*(int **)(lVar4 + 0x10) == param_1) {\n            *(int **)(lVar4 + 0x10) = piVar8;\n          }\n          else {\n            *(int **)(lVar4 + 0x18) = piVar8;\n          }\n        }\n        *(long *)(piVar8 + 2) = lVar4;\n        iVar2 = *piVar8;\n        *piVar8 = *param_1;\n        *param_1 = iVar2;\n        goto LAB_002dc55f;\n      }\n      goto LAB_002dc770;\n    }\n    piVar1 = *(int **)(param_1 + 2);\nLAB_002dc480:\n    *(int **)(piVar3 + 2) = piVar1;\n    piVar7 = piVar3;\n  }" (else "else") (compound_statement "{\n    if (piVar5 != (int *)0x0) {\n      do {\n        piVar8 = piVar7;\n        piVar7 = *(int **)(piVar8 + 4);\n      } while (*(int **)(piVar8 + 4) != (int *)0x0);\n      piVar7 = *(int **)(piVar8 + 6);\n      if (piVar8 != param_1) {\n        *(int **)(piVar3 + 2) = piVar8;\n        *(int **)(piVar8 + 4) = piVar3;\n        piVar1 = piVar8;\n        if (piVar8 != piVar5) {\n          piVar1 = *(int **)(piVar8 + 2);\n          piVar3 = piVar1;\n          if (piVar7 != (int *)0x0) {\n            *(int **)(piVar7 + 2) = piVar1;\n            piVar3 = *(int **)(piVar8 + 2);\n          }\n          *(int **)(piVar3 + 4) = piVar7;\n          *(int **)(piVar8 + 6) = piVar5;\n          *(int **)(*(long *)(param_1 + 6) + 8) = piVar8;\n        }\n        if (*(int **)(param_2 + 8) == param_1) {\n          *(int **)(param_2 + 8) = piVar8;\n          lVar4 = *(long *)(param_1 + 2);\n        }\n        else {\n          lVar4 = *(long *)(param_1 + 2);\n          if (*(int **)(lVar4 + 0x10) == param_1) {\n            *(int **)(lVar4 + 0x10) = piVar8;\n          }\n          else {\n            *(int **)(lVar4 + 0x18) = piVar8;\n          }\n        }\n        *(long *)(piVar8 + 2) = lVar4;\n        iVar2 = *piVar8;\n        *piVar8 = *param_1;\n        *param_1 = iVar2;\n        goto LAB_002dc55f;\n      }\n      goto LAB_002dc770;\n    }\n    piVar1 = *(int **)(param_1 + 2);\nLAB_002dc480:\n    *(int **)(piVar3 + 2) = piVar1;\n    piVar7 = piVar3;\n  }" ({ "{") (if_statement "if (piVar5 != (int *)0x0) {\n      do {\n        piVar8 = piVar7;\n        piVar7 = *(int **)(piVar8 + 4);\n      } while (*(int **)(piVar8 + 4) != (int *)0x0);\n      piVar7 = *(int **)(piVar8 + 6);\n      if (piVar8 != param_1) {\n        *(int **)(piVar3 + 2) = piVar8;\n        *(int **)(piVar8 + 4) = piVar3;\n        piVar1 = piVar8;\n        if (piVar8 != piVar5) {\n          piVar1 = *(int **)(piVar8 + 2);\n          piVar3 = piVar1;\n          if (piVar7 != (int *)0x0) {\n            *(int **)(piVar7 + 2) = piVar1;\n            piVar3 = *(int **)(piVar8 + 2);\n          }\n          *(int **)(piVar3 + 4) = piVar7;\n          *(int **)(piVar8 + 6) = piVar5;\n          *(int **)(*(long *)(param_1 + 6) + 8) = piVar8;\n        }\n        if (*(int **)(param_2 + 8) == param_1) {\n          *(int **)(param_2 + 8) = piVar8;\n          lVar4 = *(long *)(param_1 + 2);\n        }\n        else {\n          lVar4 = *(long *)(param_1 + 2);\n          if (*(int **)(lVar4 + 0x10) == param_1) {\n            *(int **)(lVar4 + 0x10) = piVar8;\n          }\n          else {\n            *(int **)(lVar4 + 0x18) = piVar8;\n          }\n        }\n        *(long *)(piVar8 + 2) = lVar4;\n        iVar2 = *piVar8;\n        *piVar8 = *param_1;\n        *param_1 = iVar2;\n        goto LAB_002dc55f;\n      }\n      goto LAB_002dc770;\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 "{\n      do {\n        piVar8 = piVar7;\n        piVar7 = *(int **)(piVar8 + 4);\n      } while (*(int **)(piVar8 + 4) != (int *)0x0);\n      piVar7 = *(int **)(piVar8 + 6);\n      if (piVar8 != param_1) {\n        *(int **)(piVar3 + 2) = piVar8;\n        *(int **)(piVar8 + 4) = piVar3;\n        piVar1 = piVar8;\n        if (piVar8 != piVar5) {\n          piVar1 = *(int **)(piVar8 + 2);\n          piVar3 = piVar1;\n          if (piVar7 != (int *)0x0) {\n            *(int **)(piVar7 + 2) = piVar1;\n            piVar3 = *(int **)(piVar8 + 2);\n          }\n          *(int **)(piVar3 + 4) = piVar7;\n          *(int **)(piVar8 + 6) = piVar5;\n          *(int **)(*(long *)(param_1 + 6) + 8) = piVar8;\n        }\n        if (*(int **)(param_2 + 8) == param_1) {\n          *(int **)(param_2 + 8) = piVar8;\n          lVar4 = *(long *)(param_1 + 2);\n        }\n        else {\n          lVar4 = *(long *)(param_1 + 2);\n          if (*(int **)(lVar4 + 0x10) == param_1) {\n            *(int **)(lVar4 + 0x10) = piVar8;\n          }\n          else {\n            *(int **)(lVar4 + 0x18) = piVar8;\n          }\n        }\n        *(long *)(piVar8 + 2) = lVar4;\n        iVar2 = *piVar8;\n        *piVar8 = *param_1;\n        *param_1 = iVar2;\n        goto LAB_002dc55f;\n      }\n      goto LAB_002dc770;\n    }" ({ "{") (do_statement "do {\n        piVar8 = piVar7;\n        piVar7 = *(int **)(piVar8 + 4);\n      } while (*(int **)(piVar8 + 4) != (int *)0x0);" (do "do") (compound_statement "{\n        piVar8 = piVar7;\n        piVar7 = *(int **)(piVar8 + 4);\n      }" ({ "{") (expression_statement "piVar8 = piVar7;" (assignment_expression "piVar8 = piVar7" (identifier "piVar8") (= "=") (identifier "piVar7")) (; ";")) (expression_statement "piVar7 = *(int **)(piVar8 + 4);" (assignment_expression "piVar7 = *(int **)(piVar8 + 4)" (identifier "piVar7") (= "=") (pointer_expression "*(int **)(piVar8 + 4)" (* "*") (cast_expression "(int **)(piVar8 + 4)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(piVar8 + 4)" (( "(") (binary_expression "piVar8 + 4" (identifier "piVar8") (+ "+") (number_literal "4")) () ")"))))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(*(int **)(piVar8 + 4) != (int *)0x0)" (( "(") (binary_expression "*(int **)(piVar8 + 4) != (int *)0x0" (pointer_expression "*(int **)(piVar8 + 4)" (* "*") (cast_expression "(int **)(piVar8 + 4)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(piVar8 + 4)" (( "(") (binary_expression "piVar8 + 4" (identifier "piVar8") (+ "+") (number_literal "4")) () ")")))) (!= "!=") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (; ";")) (expression_statement "piVar7 = *(int **)(piVar8 + 6);" (assignment_expression "piVar7 = *(int **)(piVar8 + 6)" (identifier "piVar7") (= "=") (pointer_expression "*(int **)(piVar8 + 6)" (* "*") (cast_expression "(int **)(piVar8 + 6)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(piVar8 + 6)" (( "(") (binary_expression "piVar8 + 6" (identifier "piVar8") (+ "+") (number_literal "6")) () ")"))))) (; ";")) (if_statement "if (piVar8 != param_1) {\n        *(int **)(piVar3 + 2) = piVar8;\n        *(int **)(piVar8 + 4) = piVar3;\n        piVar1 = piVar8;\n        if (piVar8 != piVar5) {\n          piVar1 = *(int **)(piVar8 + 2);\n          piVar3 = piVar1;\n          if (piVar7 != (int *)0x0) {\n            *(int **)(piVar7 + 2) = piVar1;\n            piVar3 = *(int **)(piVar8 + 2);\n          }\n          *(int **)(piVar3 + 4) = piVar7;\n          *(int **)(piVar8 + 6) = piVar5;\n          *(int **)(*(long *)(param_1 + 6) + 8) = piVar8;\n        }\n        if (*(int **)(param_2 + 8) == param_1) {\n          *(int **)(param_2 + 8) = piVar8;\n          lVar4 = *(long *)(param_1 + 2);\n        }\n        else {\n          lVar4 = *(long *)(param_1 + 2);\n          if (*(int **)(lVar4 + 0x10) == param_1) {\n            *(int **)(lVar4 + 0x10) = piVar8;\n          }\n          else {\n            *(int **)(lVar4 + 0x18) = piVar8;\n          }\n        }\n        *(long *)(piVar8 + 2) = lVar4;\n        iVar2 = *piVar8;\n        *piVar8 = *param_1;\n        *param_1 = iVar2;\n        goto LAB_002dc55f;\n      }" (if "if") (parenthesized_expression "(piVar8 != param_1)" (( "(") (binary_expression "piVar8 != param_1" (identifier "piVar8") (!= "!=") (identifier "param_1")) () ")")) (compound_statement "{\n        *(int **)(piVar3 + 2) = piVar8;\n        *(int **)(piVar8 + 4) = piVar3;\n        piVar1 = piVar8;\n        if (piVar8 != piVar5) {\n          piVar1 = *(int **)(piVar8 + 2);\n          piVar3 = piVar1;\n          if (piVar7 != (int *)0x0) {\n            *(int **)(piVar7 + 2) = piVar1;\n            piVar3 = *(int **)(piVar8 + 2);\n          }\n          *(int **)(piVar3 + 4) = piVar7;\n          *(int **)(piVar8 + 6) = piVar5;\n          *(int **)(*(long *)(param_1 + 6) + 8) = piVar8;\n        }\n        if (*(int **)(param_2 + 8) == param_1) {\n          *(int **)(param_2 + 8) = piVar8;\n          lVar4 = *(long *)(param_1 + 2);\n        }\n        else {\n          lVar4 = *(long *)(param_1 + 2);\n          if (*(int **)(lVar4 + 0x10) == param_1) {\n            *(int **)(lVar4 + 0x10) = piVar8;\n          }\n          else {\n            *(int **)(lVar4 + 0x18) = piVar8;\n          }\n        }\n        *(long *)(piVar8 + 2) = lVar4;\n        iVar2 = *piVar8;\n        *piVar8 = *param_1;\n        *param_1 = iVar2;\n        goto LAB_002dc55f;\n      }" ({ "{") (expression_statement "*(int **)(piVar3 + 2) = piVar8;" (assignment_expression "*(int **)(piVar3 + 2) = piVar8" (pointer_expression "*(int **)(piVar3 + 2)" (* "*") (cast_expression "(int **)(piVar3 + 2)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(piVar3 + 2)" (( "(") (binary_expression "piVar3 + 2" (identifier "piVar3") (+ "+") (number_literal "2")) () ")")))) (= "=") (identifier "piVar8")) (; ";")) (expression_statement "*(int **)(piVar8 + 4) = piVar3;" (assignment_expression "*(int **)(piVar8 + 4) = piVar3" (pointer_expression "*(int **)(piVar8 + 4)" (* "*") (cast_expression "(int **)(piVar8 + 4)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(piVar8 + 4)" (( "(") (binary_expression "piVar8 + 4" (identifier "piVar8") (+ "+") (number_literal "4")) () ")")))) (= "=") (identifier "piVar3")) (; ";")) (expression_statement "piVar1 = piVar8;" (assignment_expression "piVar1 = piVar8" (identifier "piVar1") (= "=") (identifier "piVar8")) (; ";")) (if_statement "if (piVar8 != piVar5) {\n          piVar1 = *(int **)(piVar8 + 2);\n          piVar3 = piVar1;\n          if (piVar7 != (int *)0x0) {\n            *(int **)(piVar7 + 2) = piVar1;\n            piVar3 = *(int **)(piVar8 + 2);\n          }\n          *(int **)(piVar3 + 4) = piVar7;\n          *(int **)(piVar8 + 6) = piVar5;\n          *(int **)(*(long *)(param_1 + 6) + 8) = piVar8;\n        }" (if "if") (parenthesized_expression "(piVar8 != piVar5)" (( "(") (binary_expression "piVar8 != piVar5" (identifier "piVar8") (!= "!=") (identifier "piVar5")) () ")")) (compound_statement "{\n          piVar1 = *(int **)(piVar8 + 2);\n          piVar3 = piVar1;\n          if (piVar7 != (int *)0x0) {\n            *(int **)(piVar7 + 2) = piVar1;\n            piVar3 = *(int **)(piVar8 + 2);\n          }\n          *(int **)(piVar3 + 4) = piVar7;\n          *(int **)(piVar8 + 6) = piVar5;\n          *(int **)(*(long *)(param_1 + 6) + 8) = piVar8;\n        }" ({ "{") (expression_statement "piVar1 = *(int **)(piVar8 + 2);" (assignment_expression "piVar1 = *(int **)(piVar8 + 2)" (identifier "piVar1") (= "=") (pointer_expression "*(int **)(piVar8 + 2)" (* "*") (cast_expression "(int **)(piVar8 + 2)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(piVar8 + 2)" (( "(") (binary_expression "piVar8 + 2" (identifier "piVar8") (+ "+") (number_literal "2")) () ")"))))) (; ";")) (expression_statement "piVar3 = piVar1;" (assignment_expression "piVar3 = piVar1" (identifier "piVar3") (= "=") (identifier "piVar1")) (; ";")) (if_statement "if (piVar7 != (int *)0x0) {\n            *(int **)(piVar7 + 2) = piVar1;\n            piVar3 = *(int **)(piVar8 + 2);\n          }" (if "if") (parenthesized_expression "(piVar7 != (int *)0x0)" (( "(") (binary_expression "piVar7 != (int *)0x0" (identifier "piVar7") (!= "!=") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n            *(int **)(piVar7 + 2) = piVar1;\n            piVar3 = *(int **)(piVar8 + 2);\n          }" ({ "{") (expression_statement "*(int **)(piVar7 + 2) = piVar1;" (assignment_expression "*(int **)(piVar7 + 2) = piVar1" (pointer_expression "*(int **)(piVar7 + 2)" (* "*") (cast_expression "(int **)(piVar7 + 2)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(piVar7 + 2)" (( "(") (binary_expression "piVar7 + 2" (identifier "piVar7") (+ "+") (number_literal "2")) () ")")))) (= "=") (identifier "piVar1")) (; ";")) (expression_statement "piVar3 = *(int **)(piVar8 + 2);" (assignment_expression "piVar3 = *(int **)(piVar8 + 2)" (identifier "piVar3") (= "=") (pointer_expression "*(int **)(piVar8 + 2)" (* "*") (cast_expression "(int **)(piVar8 + 2)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(piVar8 + 2)" (( "(") (binary_expression "piVar8 + 2" (identifier "piVar8") (+ "+") (number_literal "2")) () ")"))))) (; ";")) (} "}"))) (expression_statement "*(int **)(piVar3 + 4) = piVar7;" (assignment_expression "*(int **)(piVar3 + 4) = piVar7" (pointer_expression "*(int **)(piVar3 + 4)" (* "*") (cast_expression "(int **)(piVar3 + 4)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(piVar3 + 4)" (( "(") (binary_expression "piVar3 + 4" (identifier "piVar3") (+ "+") (number_literal "4")) () ")")))) (= "=") (identifier "piVar7")) (; ";")) (expression_statement "*(int **)(piVar8 + 6) = piVar5;" (assignment_expression "*(int **)(piVar8 + 6) = piVar5" (pointer_expression "*(int **)(piVar8 + 6)" (* "*") (cast_expression "(int **)(piVar8 + 6)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(piVar8 + 6)" (( "(") (binary_expression "piVar8 + 6" (identifier "piVar8") (+ "+") (number_literal "6")) () ")")))) (= "=") (identifier "piVar5")) (; ";")) (expression_statement "*(int **)(*(long *)(param_1 + 6) + 8) = piVar8;" (assignment_expression "*(int **)(*(long *)(param_1 + 6) + 8) = piVar8" (pointer_expression "*(int **)(*(long *)(param_1 + 6) + 8)" (* "*") (cast_expression "(int **)(*(long *)(param_1 + 6) + 8)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*(long *)(param_1 + 6) + 8)" (( "(") (binary_expression "*(long *)(param_1 + 6) + 8" (pointer_expression "*(long *)(param_1 + 6)" (* "*") (cast_expression "(long *)(param_1 + 6)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 6)" (( "(") (binary_expression "param_1 + 6" (identifier "param_1") (+ "+") (number_literal "6")) () ")")))) (+ "+") (number_literal "8")) () ")")))) (= "=") (identifier "piVar8")) (; ";")) (} "}"))) (if_statement "if (*(int **)(param_2 + 8) == param_1) {\n          *(int **)(param_2 + 8) = piVar8;\n          lVar4 = *(long *)(param_1 + 2);\n        }\n        else {\n          lVar4 = *(long *)(param_1 + 2);\n          if (*(int **)(lVar4 + 0x10) == param_1) {\n            *(int **)(lVar4 + 0x10) = piVar8;\n          }\n          else {\n            *(int **)(lVar4 + 0x18) = piVar8;\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          *(int **)(param_2 + 8) = piVar8;\n          lVar4 = *(long *)(param_1 + 2);\n        }" ({ "{") (expression_statement "*(int **)(param_2 + 8) = piVar8;" (assignment_expression "*(int **)(param_2 + 8) = piVar8" (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 "piVar8")) (; ";")) (expression_statement "lVar4 = *(long *)(param_1 + 2);" (assignment_expression "lVar4 = *(long *)(param_1 + 2)" (identifier "lVar4") (= "=") (pointer_expression "*(long *)(param_1 + 2)" (* "*") (cast_expression "(long *)(param_1 + 2)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 2)" (( "(") (binary_expression "param_1 + 2" (identifier "param_1") (+ "+") (number_literal "2")) () ")"))))) (; ";")) (} "}")) (else_clause "else {\n          lVar4 = *(long *)(param_1 + 2);\n          if (*(int **)(lVar4 + 0x10) == param_1) {\n            *(int **)(lVar4 + 0x10) = piVar8;\n          }\n          else {\n            *(int **)(lVar4 + 0x18) = piVar8;\n          }\n        }" (else "else") (compound_statement "{\n          lVar4 = *(long *)(param_1 + 2);\n          if (*(int **)(lVar4 + 0x10) == param_1) {\n            *(int **)(lVar4 + 0x10) = piVar8;\n          }\n          else {\n            *(int **)(lVar4 + 0x18) = piVar8;\n          }\n        }" ({ "{") (expression_statement "lVar4 = *(long *)(param_1 + 2);" (assignment_expression "lVar4 = *(long *)(param_1 + 2)" (identifier "lVar4") (= "=") (pointer_expression "*(long *)(param_1 + 2)" (* "*") (cast_expression "(long *)(param_1 + 2)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 2)" (( "(") (binary_expression "param_1 + 2" (identifier "param_1") (+ "+") (number_literal "2")) () ")"))))) (; ";")) (if_statement "if (*(int **)(lVar4 + 0x10) == param_1) {\n            *(int **)(lVar4 + 0x10) = piVar8;\n          }\n          else {\n            *(int **)(lVar4 + 0x18) = piVar8;\n          }" (if "if") (parenthesized_expression "(*(int **)(lVar4 + 0x10) == param_1)" (( "(") (binary_expression "*(int **)(lVar4 + 0x10) == param_1" (pointer_expression "*(int **)(lVar4 + 0x10)" (* "*") (cast_expression "(int **)(lVar4 + 0x10)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(lVar4 + 0x10)" (( "(") (binary_expression "lVar4 + 0x10" (identifier "lVar4") (+ "+") (number_literal "0x10")) () ")")))) (== "==") (identifier "param_1")) () ")")) (compound_statement "{\n            *(int **)(lVar4 + 0x10) = piVar8;\n          }" ({ "{") (expression_statement "*(int **)(lVar4 + 0x10) = piVar8;" (assignment_expression "*(int **)(lVar4 + 0x10) = piVar8" (pointer_expression "*(int **)(lVar4 + 0x10)" (* "*") (cast_expression "(int **)(lVar4 + 0x10)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(lVar4 + 0x10)" (( "(") (binary_expression "lVar4 + 0x10" (identifier "lVar4") (+ "+") (number_literal "0x10")) () ")")))) (= "=") (identifier "piVar8")) (; ";")) (} "}")) (else_clause "else {\n            *(int **)(lVar4 + 0x18) = piVar8;\n          }" (else "else") (compound_statement "{\n            *(int **)(lVar4 + 0x18) = piVar8;\n          }" ({ "{") (expression_statement "*(int **)(lVar4 + 0x18) = piVar8;" (assignment_expression "*(int **)(lVar4 + 0x18) = piVar8" (pointer_expression "*(int **)(lVar4 + 0x18)" (* "*") (cast_expression "(int **)(lVar4 + 0x18)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(lVar4 + 0x18)" (( "(") (binary_expression "lVar4 + 0x18" (identifier "lVar4") (+ "+") (number_literal "0x18")) () ")")))) (= "=") (identifier "piVar8")) (; ";")) (} "}")))) (} "}")))) (expression_statement "*(long *)(piVar8 + 2) = lVar4;" (assignment_expression "*(long *)(piVar8 + 2) = lVar4" (pointer_expression "*(long *)(piVar8 + 2)" (* "*") (cast_expression "(long *)(piVar8 + 2)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(piVar8 + 2)" (( "(") (binary_expression "piVar8 + 2" (identifier "piVar8") (+ "+") (number_literal "2")) () ")")))) (= "=") (identifier "lVar4")) (; ";")) (expression_statement "iVar2 = *piVar8;" (assignment_expression "iVar2 = *piVar8" (identifier "iVar2") (= "=") (pointer_expression "*piVar8" (* "*") (identifier "piVar8"))) (; ";")) (expression_statement "*piVar8 = *param_1;" (assignment_expression "*piVar8 = *param_1" (pointer_expression "*piVar8" (* "*") (identifier "piVar8")) (= "=") (pointer_expression "*param_1" (* "*") (identifier "param_1"))) (; ";")) (expression_statement "*param_1 = iVar2;" (assignment_expression "*param_1 = iVar2" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (= "=") (identifier "iVar2")) (; ";")) (goto_statement "goto LAB_002dc55f;" (goto "goto") (statement_identifier "LAB_002dc55f") (; ";")) (} "}"))) (goto_statement "goto LAB_002dc770;" (goto "goto") (statement_identifier "LAB_002dc770") (; ";")) (} "}"))) (expression_statement "piVar1 = *(int **)(param_1 + 2);" (assignment_expression "piVar1 = *(int **)(param_1 + 2)" (identifier "piVar1") (= "=") (pointer_expression "*(int **)(param_1 + 2)" (* "*") (cast_expression "(int **)(param_1 + 2)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 2)" (( "(") (binary_expression "param_1 + 2" (identifier "param_1") (+ "+") (number_literal "2")) () ")"))))) (; ";")) (labeled_statement "LAB_002dc480:\n    *(int **)(piVar3 + 2) = piVar1;" (statement_identifier "LAB_002dc480") (: ":") (expression_statement "*(int **)(piVar3 + 2) = piVar1;" (assignment_expression "*(int **)(piVar3 + 2) = piVar1" (pointer_expression "*(int **)(piVar3 + 2)" (* "*") (cast_expression "(int **)(piVar3 + 2)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(piVar3 + 2)" (( "(") (binary_expression "piVar3 + 2" (identifier "piVar3") (+ "+") (number_literal "2")) () ")")))) (= "=") (identifier "piVar1")) (; ";"))) (expression_statement "piVar7 = piVar3;" (assignment_expression "piVar7 = piVar3" (identifier "piVar7") (= "=") (identifier "piVar3")) (; ";")) (} "}")))) (if_statement "if (*(int **)(param_2 + 8) == param_1) {\n    *(int **)(param_2 + 8) = piVar7;\n  }\n  else {\n    lVar4 = *(long *)(param_1 + 2);\n    if (*(int **)(lVar4 + 0x10) == param_1) {\n      *(int **)(lVar4 + 0x10) = piVar7;\n    }\n    else {\n      *(int **)(lVar4 + 0x18) = piVar7;\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    *(int **)(param_2 + 8) = piVar7;\n  }" ({ "{") (expression_statement "*(int **)(param_2 + 8) = piVar7;" (assignment_expression "*(int **)(param_2 + 8) = piVar7" (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 "piVar7")) (; ";")) (} "}")) (else_clause "else {\n    lVar4 = *(long *)(param_1 + 2);\n    if (*(int **)(lVar4 + 0x10) == param_1) {\n      *(int **)(lVar4 + 0x10) = piVar7;\n    }\n    else {\n      *(int **)(lVar4 + 0x18) = piVar7;\n    }\n  }" (else "else") (compound_statement "{\n    lVar4 = *(long *)(param_1 + 2);\n    if (*(int **)(lVar4 + 0x10) == param_1) {\n      *(int **)(lVar4 + 0x10) = piVar7;\n    }\n    else {\n      *(int **)(lVar4 + 0x18) = piVar7;\n    }\n  }" ({ "{") (expression_statement "lVar4 = *(long *)(param_1 + 2);" (assignment_expression "lVar4 = *(long *)(param_1 + 2)" (identifier "lVar4") (= "=") (pointer_expression "*(long *)(param_1 + 2)" (* "*") (cast_expression "(long *)(param_1 + 2)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 2)" (( "(") (binary_expression "param_1 + 2" (identifier "param_1") (+ "+") (number_literal "2")) () ")"))))) (; ";")) (if_statement "if (*(int **)(lVar4 + 0x10) == param_1) {\n      *(int **)(lVar4 + 0x10) = piVar7;\n    }\n    else {\n      *(int **)(lVar4 + 0x18) = piVar7;\n    }" (if "if") (parenthesized_expression "(*(int **)(lVar4 + 0x10) == param_1)" (( "(") (binary_expression "*(int **)(lVar4 + 0x10) == param_1" (pointer_expression "*(int **)(lVar4 + 0x10)" (* "*") (cast_expression "(int **)(lVar4 + 0x10)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(lVar4 + 0x10)" (( "(") (binary_expression "lVar4 + 0x10" (identifier "lVar4") (+ "+") (number_literal "0x10")) () ")")))) (== "==") (identifier "param_1")) () ")")) (compound_statement "{\n      *(int **)(lVar4 + 0x10) = piVar7;\n    }" ({ "{") (expression_statement "*(int **)(lVar4 + 0x10) = piVar7;" (assignment_expression "*(int **)(lVar4 + 0x10) = piVar7" (pointer_expression "*(int **)(lVar4 + 0x10)" (* "*") (cast_expression "(int **)(lVar4 + 0x10)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(lVar4 + 0x10)" (( "(") (binary_expression "lVar4 + 0x10" (identifier "lVar4") (+ "+") (number_literal "0x10")) () ")")))) (= "=") (identifier "piVar7")) (; ";")) (} "}")) (else_clause "else {\n      *(int **)(lVar4 + 0x18) = piVar7;\n    }" (else "else") (compound_statement "{\n      *(int **)(lVar4 + 0x18) = piVar7;\n    }" ({ "{") (expression_statement "*(int **)(lVar4 + 0x18) = piVar7;" (assignment_expression "*(int **)(lVar4 + 0x18) = piVar7" (pointer_expression "*(int **)(lVar4 + 0x18)" (* "*") (cast_expression "(int **)(lVar4 + 0x18)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(lVar4 + 0x18)" (( "(") (binary_expression "lVar4 + 0x18" (identifier "lVar4") (+ "+") (number_literal "0x18")) () ")")))) (= "=") (identifier "piVar7")) (; ";")) (} "}")))) (} "}")))) (if_statement "if (*(int **)(param_2 + 0x10) == param_1) {\n    piVar3 = piVar7;\n    if (*(long *)(param_1 + 6) == 0) {\n      *(undefined8 *)(param_2 + 0x10) = *(undefined8 *)(param_1 + 2);\n    }\n    else {\n      do {\n        piVar5 = piVar3;\n        piVar3 = *(int **)(piVar5 + 4);\n      } while (piVar3 != (int *)0x0);\n      *(int **)(param_2 + 0x10) = piVar5;\n    }\n  }" (if "if") (parenthesized_expression "(*(int **)(param_2 + 0x10) == param_1)" (( "(") (binary_expression "*(int **)(param_2 + 0x10) == param_1" (pointer_expression "*(int **)(param_2 + 0x10)" (* "*") (cast_expression "(int **)(param_2 + 0x10)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_2 + 0x10)" (( "(") (binary_expression "param_2 + 0x10" (identifier "param_2") (+ "+") (number_literal "0x10")) () ")")))) (== "==") (identifier "param_1")) () ")")) (compound_statement "{\n    piVar3 = piVar7;\n    if (*(long *)(param_1 + 6) == 0) {\n      *(undefined8 *)(param_2 + 0x10) = *(undefined8 *)(param_1 + 2);\n    }\n    else {\n      do {\n        piVar5 = piVar3;\n        piVar3 = *(int **)(piVar5 + 4);\n      } while (piVar3 != (int *)0x0);\n      *(int **)(param_2 + 0x10) = piVar5;\n    }\n  }" ({ "{") (expression_statement "piVar3 = piVar7;" (assignment_expression "piVar3 = piVar7" (identifier "piVar3") (= "=") (identifier "piVar7")) (; ";")) (if_statement "if (*(long *)(param_1 + 6) == 0) {\n      *(undefined8 *)(param_2 + 0x10) = *(undefined8 *)(param_1 + 2);\n    }\n    else {\n      do {\n        piVar5 = piVar3;\n        piVar3 = *(int **)(piVar5 + 4);\n      } while (piVar3 != (int *)0x0);\n      *(int **)(param_2 + 0x10) = piVar5;\n    }" (if "if") (parenthesized_expression "(*(long *)(param_1 + 6) == 0)" (( "(") (binary_expression "*(long *)(param_1 + 6) == 0" (pointer_expression "*(long *)(param_1 + 6)" (* "*") (cast_expression "(long *)(param_1 + 6)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 6)" (( "(") (binary_expression "param_1 + 6" (identifier "param_1") (+ "+") (number_literal "6")) () ")")))) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n      *(undefined8 *)(param_2 + 0x10) = *(undefined8 *)(param_1 + 2);\n    }" ({ "{") (expression_statement "*(undefined8 *)(param_2 + 0x10) = *(undefined8 *)(param_1 + 2);" (assignment_expression "*(undefined8 *)(param_2 + 0x10) = *(undefined8 *)(param_1 + 2)" (pointer_expression "*(undefined8 *)(param_2 + 0x10)" (* "*") (cast_expression "(undefined8 *)(param_2 + 0x10)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x10)" (( "(") (binary_expression "param_2 + 0x10" (identifier "param_2") (+ "+") (number_literal "0x10")) () ")")))) (= "=") (pointer_expression "*(undefined8 *)(param_1 + 2)" (* "*") (cast_expression "(undefined8 *)(param_1 + 2)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 2)" (( "(") (binary_expression "param_1 + 2" (identifier "param_1") (+ "+") (number_literal "2")) () ")"))))) (; ";")) (} "}")) (else_clause "else {\n      do {\n        piVar5 = piVar3;\n        piVar3 = *(int **)(piVar5 + 4);\n      } while (piVar3 != (int *)0x0);\n      *(int **)(param_2 + 0x10) = piVar5;\n    }" (else "else") (compound_statement "{\n      do {\n        piVar5 = piVar3;\n        piVar3 = *(int **)(piVar5 + 4);\n      } while (piVar3 != (int *)0x0);\n      *(int **)(param_2 + 0x10) = piVar5;\n    }" ({ "{") (do_statement "do {\n        piVar5 = piVar3;\n        piVar3 = *(int **)(piVar5 + 4);\n      } while (piVar3 != (int *)0x0);" (do "do") (compound_statement "{\n        piVar5 = piVar3;\n        piVar3 = *(int **)(piVar5 + 4);\n      }" ({ "{") (expression_statement "piVar5 = piVar3;" (assignment_expression "piVar5 = piVar3" (identifier "piVar5") (= "=") (identifier "piVar3")) (; ";")) (expression_statement "piVar3 = *(int **)(piVar5 + 4);" (assignment_expression "piVar3 = *(int **)(piVar5 + 4)" (identifier "piVar3") (= "=") (pointer_expression "*(int **)(piVar5 + 4)" (* "*") (cast_expression "(int **)(piVar5 + 4)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(piVar5 + 4)" (( "(") (binary_expression "piVar5 + 4" (identifier "piVar5") (+ "+") (number_literal "4")) () ")"))))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(piVar3 != (int *)0x0)" (( "(") (binary_expression "piVar3 != (int *)0x0" (identifier "piVar3") (!= "!=") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (; ";")) (expression_statement "*(int **)(param_2 + 0x10) = piVar5;" (assignment_expression "*(int **)(param_2 + 0x10) = piVar5" (pointer_expression "*(int **)(param_2 + 0x10)" (* "*") (cast_expression "(int **)(param_2 + 0x10)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_2 + 0x10)" (( "(") (binary_expression "param_2 + 0x10" (identifier "param_2") (+ "+") (number_literal "0x10")) () ")")))) (= "=") (identifier "piVar5")) (; ";")) (} "}")))) (} "}"))) (expression_statement "iVar2 = *param_1;" (assignment_expression "iVar2 = *param_1" (identifier "iVar2") (= "=") (pointer_expression "*param_1" (* "*") (identifier "param_1"))) (; ";")) (if_statement "if (*(int **)(param_2 + 0x18) == param_1) {\n    piVar3 = piVar7;\n    if (*(long *)(param_1 + 4) == 0) {\n      *(undefined8 *)(param_2 + 0x18) = *(undefined8 *)(param_1 + 2);\n    }\n    else {\n      do {\n        piVar5 = piVar3;\n        piVar3 = *(int **)(piVar5 + 6);\n      } while (piVar3 != (int *)0x0);\n      *(int **)(param_2 + 0x18) = piVar5;\n    }\n  }" (if "if") (parenthesized_expression "(*(int **)(param_2 + 0x18) == param_1)" (( "(") (binary_expression "*(int **)(param_2 + 0x18) == param_1" (pointer_expression "*(int **)(param_2 + 0x18)" (* "*") (cast_expression "(int **)(param_2 + 0x18)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_2 + 0x18)" (( "(") (binary_expression "param_2 + 0x18" (identifier "param_2") (+ "+") (number_literal "0x18")) () ")")))) (== "==") (identifier "param_1")) () ")")) (compound_statement "{\n    piVar3 = piVar7;\n    if (*(long *)(param_1 + 4) == 0) {\n      *(undefined8 *)(param_2 + 0x18) = *(undefined8 *)(param_1 + 2);\n    }\n    else {\n      do {\n        piVar5 = piVar3;\n        piVar3 = *(int **)(piVar5 + 6);\n      } while (piVar3 != (int *)0x0);\n      *(int **)(param_2 + 0x18) = piVar5;\n    }\n  }" ({ "{") (expression_statement "piVar3 = piVar7;" (assignment_expression "piVar3 = piVar7" (identifier "piVar3") (= "=") (identifier "piVar7")) (; ";")) (if_statement "if (*(long *)(param_1 + 4) == 0) {\n      *(undefined8 *)(param_2 + 0x18) = *(undefined8 *)(param_1 + 2);\n    }\n    else {\n      do {\n        piVar5 = piVar3;\n        piVar3 = *(int **)(piVar5 + 6);\n      } while (piVar3 != (int *)0x0);\n      *(int **)(param_2 + 0x18) = piVar5;\n    }" (if "if") (parenthesized_expression "(*(long *)(param_1 + 4) == 0)" (( "(") (binary_expression "*(long *)(param_1 + 4) == 0" (pointer_expression "*(long *)(param_1 + 4)" (* "*") (cast_expression "(long *)(param_1 + 4)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 4)" (( "(") (binary_expression "param_1 + 4" (identifier "param_1") (+ "+") (number_literal "4")) () ")")))) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n      *(undefined8 *)(param_2 + 0x18) = *(undefined8 *)(param_1 + 2);\n    }" ({ "{") (expression_statement "*(undefined8 *)(param_2 + 0x18) = *(undefined8 *)(param_1 + 2);" (assignment_expression "*(undefined8 *)(param_2 + 0x18) = *(undefined8 *)(param_1 + 2)" (pointer_expression "*(undefined8 *)(param_2 + 0x18)" (* "*") (cast_expression "(undefined8 *)(param_2 + 0x18)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x18)" (( "(") (binary_expression "param_2 + 0x18" (identifier "param_2") (+ "+") (number_literal "0x18")) () ")")))) (= "=") (pointer_expression "*(undefined8 *)(param_1 + 2)" (* "*") (cast_expression "(undefined8 *)(param_1 + 2)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 2)" (( "(") (binary_expression "param_1 + 2" (identifier "param_1") (+ "+") (number_literal "2")) () ")"))))) (; ";")) (} "}")) (else_clause "else {\n      do {\n        piVar5 = piVar3;\n        piVar3 = *(int **)(piVar5 + 6);\n      } while (piVar3 != (int *)0x0);\n      *(int **)(param_2 + 0x18) = piVar5;\n    }" (else "else") (compound_statement "{\n      do {\n        piVar5 = piVar3;\n        piVar3 = *(int **)(piVar5 + 6);\n      } while (piVar3 != (int *)0x0);\n      *(int **)(param_2 + 0x18) = piVar5;\n    }" ({ "{") (do_statement "do {\n        piVar5 = piVar3;\n        piVar3 = *(int **)(piVar5 + 6);\n      } while (piVar3 != (int *)0x0);" (do "do") (compound_statement "{\n        piVar5 = piVar3;\n        piVar3 = *(int **)(piVar5 + 6);\n      }" ({ "{") (expression_statement "piVar5 = piVar3;" (assignment_expression "piVar5 = piVar3" (identifier "piVar5") (= "=") (identifier "piVar3")) (; ";")) (expression_statement "piVar3 = *(int **)(piVar5 + 6);" (assignment_expression "piVar3 = *(int **)(piVar5 + 6)" (identifier "piVar3") (= "=") (pointer_expression "*(int **)(piVar5 + 6)" (* "*") (cast_expression "(int **)(piVar5 + 6)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(piVar5 + 6)" (( "(") (binary_expression "piVar5 + 6" (identifier "piVar5") (+ "+") (number_literal "6")) () ")"))))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(piVar3 != (int *)0x0)" (( "(") (binary_expression "piVar3 != (int *)0x0" (identifier "piVar3") (!= "!=") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (; ";")) (expression_statement "*(int **)(param_2 + 0x18) = piVar5;" (assignment_expression "*(int **)(param_2 + 0x18) = piVar5" (pointer_expression "*(int **)(param_2 + 0x18)" (* "*") (cast_expression "(int **)(param_2 + 0x18)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_2 + 0x18)" (( "(") (binary_expression "param_2 + 0x18" (identifier "param_2") (+ "+") (number_literal "0x18")) () ")")))) (= "=") (identifier "piVar5")) (; ";")) (} "}")))) (} "}"))) (labeled_statement "LAB_002dc55f:\n  if (iVar2 == 0) {\n    return;\n  }" (statement_identifier "LAB_002dc55f") (: ":") (if_statement "if (iVar2 == 0) {\n    return;\n  }" (if "if") (parenthesized_expression "(iVar2 == 0)" (( "(") (binary_expression "iVar2 == 0" (identifier "iVar2") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n    return;\n  }" ({ "{") (return_statement "return;" (return "return") (; ";")) (} "}")))) (do_statement "do {\n    piVar3 = piVar1;\n    if (*(int **)(param_2 + 8) == piVar7) {\nLAB_002dc6f0:\n      if (piVar7 == (int *)0x0) {\n        return;\n      }\nLAB_002dc6f5:\n      *piVar7 = 1;\n      return;\n    }\n    if ((piVar7 != (int *)0x0) && (*piVar7 != 1)) goto LAB_002dc6f5;\n    piVar5 = *(int **)(piVar3 + 4);\n    if (piVar5 != piVar7) {\n      piVar8 = *(int **)(piVar5 + 6);\n      piVar1 = piVar5;\n      if (*piVar5 == 0) {\n        *piVar5 = 1;\n        *piVar3 = 0;\n        *(int **)(piVar3 + 4) = piVar8;\n        if (piVar8 != (int *)0x0) {\n          *(int **)(piVar8 + 2) = piVar3;\n        }\n        lVar4 = *(long *)(piVar3 + 2);\n        *(long *)(piVar5 + 2) = lVar4;\n        if (piVar3 == *(int **)(param_2 + 8)) {\n          *(int **)(param_2 + 8) = piVar5;\n          piVar1 = *(int **)(piVar3 + 4);\n        }\n        else if (piVar3 == *(int **)(lVar4 + 0x18)) {\n          *(int **)(lVar4 + 0x18) = piVar5;\n          piVar1 = piVar8;\n        }\n        else {\n          *(int **)(lVar4 + 0x10) = piVar5;\n          piVar1 = *(int **)(piVar3 + 4);\n        }\n        *(int **)(piVar5 + 6) = piVar3;\n        piVar8 = *(int **)(piVar1 + 6);\n        *(int **)(piVar3 + 2) = piVar5;\n      }\n      if ((piVar8 == (int *)0x0) || (*piVar8 == 1)) {\n        piVar5 = *(int **)(piVar1 + 4);\n        if ((piVar5 == (int *)0x0) || (*piVar5 == 1)) goto LAB_002dc5e8;\nLAB_002dc82b:\n        piVar6 = *(int **)(piVar3 + 4);\n        *piVar1 = *piVar3;\n        *piVar3 = 1;\nLAB_002dc83b:\n        *piVar5 = 1;\n      }\n      else {\n        piVar5 = *(int **)(piVar1 + 4);\n        if ((piVar5 != (int *)0x0) && (*piVar5 != 1)) goto LAB_002dc82b;\n        lVar4 = *(long *)(piVar8 + 4);\n        *piVar8 = 1;\n        *piVar1 = 0;\n        *(long *)(piVar1 + 6) = lVar4;\n        if (lVar4 != 0) {\n          *(int **)(lVar4 + 8) = piVar1;\n        }\n        lVar4 = *(long *)(piVar1 + 2);\n        *(long *)(piVar8 + 2) = lVar4;\n        if (piVar1 == *(int **)(param_2 + 8)) {\n          *(int **)(param_2 + 8) = piVar8;\n        }\n        else if (piVar1 == *(int **)(lVar4 + 0x10)) {\n          *(int **)(lVar4 + 0x10) = piVar8;\n        }\n        else {\n          *(int **)(lVar4 + 0x18) = piVar8;\n        }\n        *(int **)(piVar8 + 4) = piVar1;\n        piVar6 = *(int **)(piVar3 + 4);\n        *(int **)(piVar1 + 2) = piVar8;\n        piVar5 = *(int **)(piVar6 + 4);\n        *piVar6 = *piVar3;\n        *piVar3 = 1;\n        if (piVar5 != (int *)0x0) goto LAB_002dc83b;\n      }\n      lVar4 = *(long *)(piVar6 + 6);\n      *(long *)(piVar3 + 4) = lVar4;\n      if (lVar4 != 0) {\n        *(int **)(lVar4 + 8) = piVar3;\n      }\n      lVar4 = *(long *)(piVar3 + 2);\n      *(long *)(piVar6 + 2) = lVar4;\n      if (piVar3 == *(int **)(param_2 + 8)) {\n        *(int **)(param_2 + 8) = piVar6;\n      }\n      else if (piVar3 == *(int **)(lVar4 + 0x18)) {\n        *(int **)(lVar4 + 0x18) = piVar6;\n      }\n      else {\n        *(int **)(lVar4 + 0x10) = piVar6;\n      }\n      *(int **)(piVar6 + 6) = piVar3;\n      *(int **)(piVar3 + 2) = piVar6;\n      goto LAB_002dc6f0;\n    }\n    piVar5 = *(int **)(piVar3 + 6);\n    piVar8 = *(int **)(piVar5 + 4);\n    piVar1 = piVar5;\n    if (*piVar5 == 0) {\n      *piVar5 = 1;\n      *piVar3 = 0;\n      *(int **)(piVar3 + 6) = piVar8;\n      if (piVar8 != (int *)0x0) {\n        *(int **)(piVar8 + 2) = piVar3;\n      }\n      lVar4 = *(long *)(piVar3 + 2);\n      *(long *)(piVar5 + 2) = lVar4;\n      if (piVar3 == *(int **)(param_2 + 8)) {\n        *(int **)(param_2 + 8) = piVar5;\n        piVar1 = *(int **)(piVar3 + 6);\n      }\n      else if (piVar3 == *(int **)(lVar4 + 0x10)) {\n        *(int **)(lVar4 + 0x10) = piVar5;\n        piVar1 = piVar8;\n      }\n      else {\n        *(int **)(lVar4 + 0x18) = piVar5;\n        piVar1 = *(int **)(piVar3 + 6);\n      }\n      *(int **)(piVar5 + 4) = piVar3;\n      piVar8 = *(int **)(piVar1 + 4);\n      *(int **)(piVar3 + 2) = piVar5;\n    }\n    if ((piVar8 != (int *)0x0) && (*piVar8 != 1)) {\n      piVar5 = *(int **)(piVar1 + 6);\n      if ((piVar5 != (int *)0x0) && (*piVar5 != 1)) goto LAB_002dc69f;\n      lVar4 = *(long *)(piVar8 + 6);\n      *piVar8 = 1;\n      *piVar1 = 0;\n      *(long *)(piVar1 + 4) = lVar4;\n      if (lVar4 != 0) {\n        *(int **)(lVar4 + 8) = piVar1;\n      }\n      lVar4 = *(long *)(piVar1 + 2);\n      *(long *)(piVar8 + 2) = lVar4;\n      if (piVar1 == *(int **)(param_2 + 8)) {\n        *(int **)(param_2 + 8) = piVar8;\n      }\n      else if (piVar1 == *(int **)(lVar4 + 0x18)) {\n        *(int **)(lVar4 + 0x18) = piVar8;\n      }\n      else {\n        *(int **)(lVar4 + 0x10) = piVar8;\n      }\n      *(int **)(piVar8 + 6) = piVar1;\n      *(int **)(piVar1 + 2) = piVar8;\n      piVar8 = *(int **)(piVar3 + 6);\n      piVar5 = *(int **)(piVar8 + 6);\n      *piVar8 = *piVar3;\n      *piVar3 = 1;\n      if (piVar5 != (int *)0x0) goto LAB_002dc6af;\nLAB_002dc6b5:\n      lVar4 = *(long *)(piVar8 + 4);\n      *(long *)(piVar3 + 6) = lVar4;\n      if (lVar4 != 0) {\n        *(int **)(lVar4 + 8) = piVar3;\n      }\n      lVar4 = *(long *)(piVar3 + 2);\n      *(long *)(piVar8 + 2) = lVar4;\n      if (piVar3 == *(int **)(param_2 + 8)) {\n        *(int **)(param_2 + 8) = piVar8;\n      }\n      else if (piVar3 == *(int **)(lVar4 + 0x10)) {\n        *(int **)(lVar4 + 0x10) = piVar8;\n      }\n      else {\n        *(int **)(lVar4 + 0x18) = piVar8;\n      }\n      *(int **)(piVar8 + 4) = piVar3;\n      *(int **)(piVar3 + 2) = piVar8;\n      goto LAB_002dc6f0;\n    }\n    piVar5 = *(int **)(piVar1 + 6);\n    if ((piVar5 != (int *)0x0) && (*piVar5 != 1)) {\nLAB_002dc69f:\n      piVar8 = *(int **)(piVar3 + 6);\n      *piVar1 = *piVar3;\n      *piVar3 = 1;\nLAB_002dc6af:\n      *piVar5 = 1;\n      goto LAB_002dc6b5;\n    }\nLAB_002dc5e8:\n    *piVar1 = 0;\n    piVar1 = *(int **)(piVar3 + 2);\n    piVar7 = piVar3;\n  } while( true );" (do "do") (compound_statement "{\n    piVar3 = piVar1;\n    if (*(int **)(param_2 + 8) == piVar7) {\nLAB_002dc6f0:\n      if (piVar7 == (int *)0x0) {\n        return;\n      }\nLAB_002dc6f5:\n      *piVar7 = 1;\n      return;\n    }\n    if ((piVar7 != (int *)0x0) && (*piVar7 != 1)) goto LAB_002dc6f5;\n    piVar5 = *(int **)(piVar3 + 4);\n    if (piVar5 != piVar7) {\n      piVar8 = *(int **)(piVar5 + 6);\n      piVar1 = piVar5;\n      if (*piVar5 == 0) {\n        *piVar5 = 1;\n        *piVar3 = 0;\n        *(int **)(piVar3 + 4) = piVar8;\n        if (piVar8 != (int *)0x0) {\n          *(int **)(piVar8 + 2) = piVar3;\n        }\n        lVar4 = *(long *)(piVar3 + 2);\n        *(long *)(piVar5 + 2) = lVar4;\n        if (piVar3 == *(int **)(param_2 + 8)) {\n          *(int **)(param_2 + 8) = piVar5;\n          piVar1 = *(int **)(piVar3 + 4);\n        }\n        else if (piVar3 == *(int **)(lVar4 + 0x18)) {\n          *(int **)(lVar4 + 0x18) = piVar5;\n          piVar1 = piVar8;\n        }\n        else {\n          *(int **)(lVar4 + 0x10) = piVar5;\n          piVar1 = *(int **)(piVar3 + 4);\n        }\n        *(int **)(piVar5 + 6) = piVar3;\n        piVar8 = *(int **)(piVar1 + 6);\n        *(int **)(piVar3 + 2) = piVar5;\n      }\n      if ((piVar8 == (int *)0x0) || (*piVar8 == 1)) {\n        piVar5 = *(int **)(piVar1 + 4);\n        if ((piVar5 == (int *)0x0) || (*piVar5 == 1)) goto LAB_002dc5e8;\nLAB_002dc82b:\n        piVar6 = *(int **)(piVar3 + 4);\n        *piVar1 = *piVar3;\n        *piVar3 = 1;\nLAB_002dc83b:\n        *piVar5 = 1;\n      }\n      else {\n        piVar5 = *(int **)(piVar1 + 4);\n        if ((piVar5 != (int *)0x0) && (*piVar5 != 1)) goto LAB_002dc82b;\n        lVar4 = *(long *)(piVar8 + 4);\n        *piVar8 = 1;\n        *piVar1 = 0;\n        *(long *)(piVar1 + 6) = lVar4;\n        if (lVar4 != 0) {\n          *(int **)(lVar4 + 8) = piVar1;\n        }\n        lVar4 = *(long *)(piVar1 + 2);\n        *(long *)(piVar8 + 2) = lVar4;\n        if (piVar1 == *(int **)(param_2 + 8)) {\n          *(int **)(param_2 + 8) = piVar8;\n        }\n        else if (piVar1 == *(int **)(lVar4 + 0x10)) {\n          *(int **)(lVar4 + 0x10) = piVar8;\n        }\n        else {\n          *(int **)(lVar4 + 0x18) = piVar8;\n        }\n        *(int **)(piVar8 + 4) = piVar1;\n        piVar6 = *(int **)(piVar3 + 4);\n        *(int **)(piVar1 + 2) = piVar8;\n        piVar5 = *(int **)(piVar6 + 4);\n        *piVar6 = *piVar3;\n        *piVar3 = 1;\n        if (piVar5 != (int *)0x0) goto LAB_002dc83b;\n      }\n      lVar4 = *(long *)(piVar6 + 6);\n      *(long *)(piVar3 + 4) = lVar4;\n      if (lVar4 != 0) {\n        *(int **)(lVar4 + 8) = piVar3;\n      }\n      lVar4 = *(long *)(piVar3 + 2);\n      *(long *)(piVar6 + 2) = lVar4;\n      if (piVar3 == *(int **)(param_2 + 8)) {\n        *(int **)(param_2 + 8) = piVar6;\n      }\n      else if (piVar3 == *(int **)(lVar4 + 0x18)) {\n        *(int **)(lVar4 + 0x18) = piVar6;\n      }\n      else {\n        *(int **)(lVar4 + 0x10) = piVar6;\n      }\n      *(int **)(piVar6 + 6) = piVar3;\n      *(int **)(piVar3 + 2) = piVar6;\n      goto LAB_002dc6f0;\n    }\n    piVar5 = *(int **)(piVar3 + 6);\n    piVar8 = *(int **)(piVar5 + 4);\n    piVar1 = piVar5;\n    if (*piVar5 == 0) {\n      *piVar5 = 1;\n      *piVar3 = 0;\n      *(int **)(piVar3 + 6) = piVar8;\n      if (piVar8 != (int *)0x0) {\n        *(int **)(piVar8 + 2) = piVar3;\n      }\n      lVar4 = *(long *)(piVar3 + 2);\n      *(long *)(piVar5 + 2) = lVar4;\n      if (piVar3 == *(int **)(param_2 + 8)) {\n        *(int **)(param_2 + 8) = piVar5;\n        piVar1 = *(int **)(piVar3 + 6);\n      }\n      else if (piVar3 == *(int **)(lVar4 + 0x10)) {\n        *(int **)(lVar4 + 0x10) = piVar5;\n        piVar1 = piVar8;\n      }\n      else {\n        *(int **)(lVar4 + 0x18) = piVar5;\n        piVar1 = *(int **)(piVar3 + 6);\n      }\n      *(int **)(piVar5 + 4) = piVar3;\n      piVar8 = *(int **)(piVar1 + 4);\n      *(int **)(piVar3 + 2) = piVar5;\n    }\n    if ((piVar8 != (int *)0x0) && (*piVar8 != 1)) {\n      piVar5 = *(int **)(piVar1 + 6);\n      if ((piVar5 != (int *)0x0) && (*piVar5 != 1)) goto LAB_002dc69f;\n      lVar4 = *(long *)(piVar8 + 6);\n      *piVar8 = 1;\n      *piVar1 = 0;\n      *(long *)(piVar1 + 4) = lVar4;\n      if (lVar4 != 0) {\n        *(int **)(lVar4 + 8) = piVar1;\n      }\n      lVar4 = *(long *)(piVar1 + 2);\n      *(long *)(piVar8 + 2) = lVar4;\n      if (piVar1 == *(int **)(param_2 + 8)) {\n        *(int **)(param_2 + 8) = piVar8;\n      }\n      else if (piVar1 == *(int **)(lVar4 + 0x18)) {\n        *(int **)(lVar4 + 0x18) = piVar8;\n      }\n      else {\n        *(int **)(lVar4 + 0x10) = piVar8;\n      }\n      *(int **)(piVar8 + 6) = piVar1;\n      *(int **)(piVar1 + 2) = piVar8;\n      piVar8 = *(int **)(piVar3 + 6);\n      piVar5 = *(int **)(piVar8 + 6);\n      *piVar8 = *piVar3;\n      *piVar3 = 1;\n      if (piVar5 != (int *)0x0) goto LAB_002dc6af;\nLAB_002dc6b5:\n      lVar4 = *(long *)(piVar8 + 4);\n      *(long *)(piVar3 + 6) = lVar4;\n      if (lVar4 != 0) {\n        *(int **)(lVar4 + 8) = piVar3;\n      }\n      lVar4 = *(long *)(piVar3 + 2);\n      *(long *)(piVar8 + 2) = lVar4;\n      if (piVar3 == *(int **)(param_2 + 8)) {\n        *(int **)(param_2 + 8) = piVar8;\n      }\n      else if (piVar3 == *(int **)(lVar4 + 0x10)) {\n        *(int **)(lVar4 + 0x10) = piVar8;\n      }\n      else {\n        *(int **)(lVar4 + 0x18) = piVar8;\n      }\n      *(int **)(piVar8 + 4) = piVar3;\n      *(int **)(piVar3 + 2) = piVar8;\n      goto LAB_002dc6f0;\n    }\n    piVar5 = *(int **)(piVar1 + 6);\n    if ((piVar5 != (int *)0x0) && (*piVar5 != 1)) {\nLAB_002dc69f:\n      piVar8 = *(int **)(piVar3 + 6);\n      *piVar1 = *piVar3;\n      *piVar3 = 1;\nLAB_002dc6af:\n      *piVar5 = 1;\n      goto LAB_002dc6b5;\n    }\nLAB_002dc5e8:\n    *piVar1 = 0;\n    piVar1 = *(int **)(piVar3 + 2);\n    piVar7 = piVar3;\n  }" ({ "{") (expression_statement "piVar3 = piVar1;" (assignment_expression "piVar3 = piVar1" (identifier "piVar3") (= "=") (identifier "piVar1")) (; ";")) (if_statement "if (*(int **)(param_2 + 8) == piVar7) {\nLAB_002dc6f0:\n      if (piVar7 == (int *)0x0) {\n        return;\n      }\nLAB_002dc6f5:\n      *piVar7 = 1;\n      return;\n    }" (if "if") (parenthesized_expression "(*(int **)(param_2 + 8) == piVar7)" (( "(") (binary_expression "*(int **)(param_2 + 8) == piVar7" (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 "piVar7")) () ")")) (compound_statement "{\nLAB_002dc6f0:\n      if (piVar7 == (int *)0x0) {\n        return;\n      }\nLAB_002dc6f5:\n      *piVar7 = 1;\n      return;\n    }" ({ "{") (labeled_statement "LAB_002dc6f0:\n      if (piVar7 == (int *)0x0) {\n        return;\n      }" (statement_identifier "LAB_002dc6f0") (: ":") (if_statement "if (piVar7 == (int *)0x0) {\n        return;\n      }" (if "if") (parenthesized_expression "(piVar7 == (int *)0x0)" (( "(") (binary_expression "piVar7 == (int *)0x0" (identifier "piVar7") (== "==") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n        return;\n      }" ({ "{") (return_statement "return;" (return "return") (; ";")) (} "}")))) (labeled_statement "LAB_002dc6f5:\n      *piVar7 = 1;" (statement_identifier "LAB_002dc6f5") (: ":") (expression_statement "*piVar7 = 1;" (assignment_expression "*piVar7 = 1" (pointer_expression "*piVar7" (* "*") (identifier "piVar7")) (= "=") (number_literal "1")) (; ";"))) (return_statement "return;" (return "return") (; ";")) (} "}"))) (if_statement "if ((piVar7 != (int *)0x0) && (*piVar7 != 1)) goto LAB_002dc6f5;" (if "if") (parenthesized_expression "((piVar7 != (int *)0x0) && (*piVar7 != 1))" (( "(") (binary_expression "(piVar7 != (int *)0x0) && (*piVar7 != 1)" (parenthesized_expression "(piVar7 != (int *)0x0)" (( "(") (binary_expression "piVar7 != (int *)0x0" (identifier "piVar7") (!= "!=") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (&& "&&") (parenthesized_expression "(*piVar7 != 1)" (( "(") (binary_expression "*piVar7 != 1" (pointer_expression "*piVar7" (* "*") (identifier "piVar7")) (!= "!=") (number_literal "1")) () ")"))) () ")")) (goto_statement "goto LAB_002dc6f5;" (goto "goto") (statement_identifier "LAB_002dc6f5") (; ";"))) (expression_statement "piVar5 = *(int **)(piVar3 + 4);" (assignment_expression "piVar5 = *(int **)(piVar3 + 4)" (identifier "piVar5") (= "=") (pointer_expression "*(int **)(piVar3 + 4)" (* "*") (cast_expression "(int **)(piVar3 + 4)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(piVar3 + 4)" (( "(") (binary_expression "piVar3 + 4" (identifier "piVar3") (+ "+") (number_literal "4")) () ")"))))) (; ";")) (if_statement "if (piVar5 != piVar7) {\n      piVar8 = *(int **)(piVar5 + 6);\n      piVar1 = piVar5;\n      if (*piVar5 == 0) {\n        *piVar5 = 1;\n        *piVar3 = 0;\n        *(int **)(piVar3 + 4) = piVar8;\n        if (piVar8 != (int *)0x0) {\n          *(int **)(piVar8 + 2) = piVar3;\n        }\n        lVar4 = *(long *)(piVar3 + 2);\n        *(long *)(piVar5 + 2) = lVar4;\n        if (piVar3 == *(int **)(param_2 + 8)) {\n          *(int **)(param_2 + 8) = piVar5;\n          piVar1 = *(int **)(piVar3 + 4);\n        }\n        else if (piVar3 == *(int **)(lVar4 + 0x18)) {\n          *(int **)(lVar4 + 0x18) = piVar5;\n          piVar1 = piVar8;\n        }\n        else {\n          *(int **)(lVar4 + 0x10) = piVar5;\n          piVar1 = *(int **)(piVar3 + 4);\n        }\n        *(int **)(piVar5 + 6) = piVar3;\n        piVar8 = *(int **)(piVar1 + 6);\n        *(int **)(piVar3 + 2) = piVar5;\n      }\n      if ((piVar8 == (int *)0x0) || (*piVar8 == 1)) {\n        piVar5 = *(int **)(piVar1 + 4);\n        if ((piVar5 == (int *)0x0) || (*piVar5 == 1)) goto LAB_002dc5e8;\nLAB_002dc82b:\n        piVar6 = *(int **)(piVar3 + 4);\n        *piVar1 = *piVar3;\n        *piVar3 = 1;\nLAB_002dc83b:\n        *piVar5 = 1;\n      }\n      else {\n        piVar5 = *(int **)(piVar1 + 4);\n        if ((piVar5 != (int *)0x0) && (*piVar5 != 1)) goto LAB_002dc82b;\n        lVar4 = *(long *)(piVar8 + 4);\n        *piVar8 = 1;\n        *piVar1 = 0;\n        *(long *)(piVar1 + 6) = lVar4;\n        if (lVar4 != 0) {\n          *(int **)(lVar4 + 8) = piVar1;\n        }\n        lVar4 = *(long *)(piVar1 + 2);\n        *(long *)(piVar8 + 2) = lVar4;\n        if (piVar1 == *(int **)(param_2 + 8)) {\n          *(int **)(param_2 + 8) = piVar8;\n        }\n        else if (piVar1 == *(int **)(lVar4 + 0x10)) {\n          *(int **)(lVar4 + 0x10) = piVar8;\n        }\n        else {\n          *(int **)(lVar4 + 0x18) = piVar8;\n        }\n        *(int **)(piVar8 + 4) = piVar1;\n        piVar6 = *(int **)(piVar3 + 4);\n        *(int **)(piVar1 + 2) = piVar8;\n        piVar5 = *(int **)(piVar6 + 4);\n        *piVar6 = *piVar3;\n        *piVar3 = 1;\n        if (piVar5 != (int *)0x0) goto LAB_002dc83b;\n      }\n      lVar4 = *(long *)(piVar6 + 6);\n      *(long *)(piVar3 + 4) = lVar4;\n      if (lVar4 != 0) {\n        *(int **)(lVar4 + 8) = piVar3;\n      }\n      lVar4 = *(long *)(piVar3 + 2);\n      *(long *)(piVar6 + 2) = lVar4;\n      if (piVar3 == *(int **)(param_2 + 8)) {\n        *(int **)(param_2 + 8) = piVar6;\n      }\n      else if (piVar3 == *(int **)(lVar4 + 0x18)) {\n        *(int **)(lVar4 + 0x18) = piVar6;\n      }\n      else {\n        *(int **)(lVar4 + 0x10) = piVar6;\n      }\n      *(int **)(piVar6 + 6) = piVar3;\n      *(int **)(piVar3 + 2) = piVar6;\n      goto LAB_002dc6f0;\n    }" (if "if") (parenthesized_expression "(piVar5 != piVar7)" (( "(") (binary_expression "piVar5 != piVar7" (identifier "piVar5") (!= "!=") (identifier "piVar7")) () ")")) (compound_statement "{\n      piVar8 = *(int **)(piVar5 + 6);\n      piVar1 = piVar5;\n      if (*piVar5 == 0) {\n        *piVar5 = 1;\n        *piVar3 = 0;\n        *(int **)(piVar3 + 4) = piVar8;\n        if (piVar8 != (int *)0x0) {\n          *(int **)(piVar8 + 2) = piVar3;\n        }\n        lVar4 = *(long *)(piVar3 + 2);\n        *(long *)(piVar5 + 2) = lVar4;\n        if (piVar3 == *(int **)(param_2 + 8)) {\n          *(int **)(param_2 + 8) = piVar5;\n          piVar1 = *(int **)(piVar3 + 4);\n        }\n        else if (piVar3 == *(int **)(lVar4 + 0x18)) {\n          *(int **)(lVar4 + 0x18) = piVar5;\n          piVar1 = piVar8;\n        }\n        else {\n          *(int **)(lVar4 + 0x10) = piVar5;\n          piVar1 = *(int **)(piVar3 + 4);\n        }\n        *(int **)(piVar5 + 6) = piVar3;\n        piVar8 = *(int **)(piVar1 + 6);\n        *(int **)(piVar3 + 2) = piVar5;\n      }\n      if ((piVar8 == (int *)0x0) || (*piVar8 == 1)) {\n        piVar5 = *(int **)(piVar1 + 4);\n        if ((piVar5 == (int *)0x0) || (*piVar5 == 1)) goto LAB_002dc5e8;\nLAB_002dc82b:\n        piVar6 = *(int **)(piVar3 + 4);\n        *piVar1 = *piVar3;\n        *piVar3 = 1;\nLAB_002dc83b:\n        *piVar5 = 1;\n      }\n      else {\n        piVar5 = *(int **)(piVar1 + 4);\n        if ((piVar5 != (int *)0x0) && (*piVar5 != 1)) goto LAB_002dc82b;\n        lVar4 = *(long *)(piVar8 + 4);\n        *piVar8 = 1;\n        *piVar1 = 0;\n        *(long *)(piVar1 + 6) = lVar4;\n        if (lVar4 != 0) {\n          *(int **)(lVar4 + 8) = piVar1;\n        }\n        lVar4 = *(long *)(piVar1 + 2);\n        *(long *)(piVar8 + 2) = lVar4;\n        if (piVar1 == *(int **)(param_2 + 8)) {\n          *(int **)(param_2 + 8) = piVar8;\n        }\n        else if (piVar1 == *(int **)(lVar4 + 0x10)) {\n          *(int **)(lVar4 + 0x10) = piVar8;\n        }\n        else {\n          *(int **)(lVar4 + 0x18) = piVar8;\n        }\n        *(int **)(piVar8 + 4) = piVar1;\n        piVar6 = *(int **)(piVar3 + 4);\n        *(int **)(piVar1 + 2) = piVar8;\n        piVar5 = *(int **)(piVar6 + 4);\n        *piVar6 = *piVar3;\n        *piVar3 = 1;\n        if (piVar5 != (int *)0x0) goto LAB_002dc83b;\n      }\n      lVar4 = *(long *)(piVar6 + 6);\n      *(long *)(piVar3 + 4) = lVar4;\n      if (lVar4 != 0) {\n        *(int **)(lVar4 + 8) = piVar3;\n      }\n      lVar4 = *(long *)(piVar3 + 2);\n      *(long *)(piVar6 + 2) = lVar4;\n      if (piVar3 == *(int **)(param_2 + 8)) {\n        *(int **)(param_2 + 8) = piVar6;\n      }\n      else if (piVar3 == *(int **)(lVar4 + 0x18)) {\n        *(int **)(lVar4 + 0x18) = piVar6;\n      }\n      else {\n        *(int **)(lVar4 + 0x10) = piVar6;\n      }\n      *(int **)(piVar6 + 6) = piVar3;\n      *(int **)(piVar3 + 2) = piVar6;\n      goto LAB_002dc6f0;\n    }" ({ "{") (expression_statement "piVar8 = *(int **)(piVar5 + 6);" (assignment_expression "piVar8 = *(int **)(piVar5 + 6)" (identifier "piVar8") (= "=") (pointer_expression "*(int **)(piVar5 + 6)" (* "*") (cast_expression "(int **)(piVar5 + 6)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(piVar5 + 6)" (( "(") (binary_expression "piVar5 + 6" (identifier "piVar5") (+ "+") (number_literal "6")) () ")"))))) (; ";")) (expression_statement "piVar1 = piVar5;" (assignment_expression "piVar1 = piVar5" (identifier "piVar1") (= "=") (identifier "piVar5")) (; ";")) (if_statement "if (*piVar5 == 0) {\n        *piVar5 = 1;\n        *piVar3 = 0;\n        *(int **)(piVar3 + 4) = piVar8;\n        if (piVar8 != (int *)0x0) {\n          *(int **)(piVar8 + 2) = piVar3;\n        }\n        lVar4 = *(long *)(piVar3 + 2);\n        *(long *)(piVar5 + 2) = lVar4;\n        if (piVar3 == *(int **)(param_2 + 8)) {\n          *(int **)(param_2 + 8) = piVar5;\n          piVar1 = *(int **)(piVar3 + 4);\n        }\n        else if (piVar3 == *(int **)(lVar4 + 0x18)) {\n          *(int **)(lVar4 + 0x18) = piVar5;\n          piVar1 = piVar8;\n        }\n        else {\n          *(int **)(lVar4 + 0x10) = piVar5;\n          piVar1 = *(int **)(piVar3 + 4);\n        }\n        *(int **)(piVar5 + 6) = piVar3;\n        piVar8 = *(int **)(piVar1 + 6);\n        *(int **)(piVar3 + 2) = 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        *piVar3 = 0;\n        *(int **)(piVar3 + 4) = piVar8;\n        if (piVar8 != (int *)0x0) {\n          *(int **)(piVar8 + 2) = piVar3;\n        }\n        lVar4 = *(long *)(piVar3 + 2);\n        *(long *)(piVar5 + 2) = lVar4;\n        if (piVar3 == *(int **)(param_2 + 8)) {\n          *(int **)(param_2 + 8) = piVar5;\n          piVar1 = *(int **)(piVar3 + 4);\n        }\n        else if (piVar3 == *(int **)(lVar4 + 0x18)) {\n          *(int **)(lVar4 + 0x18) = piVar5;\n          piVar1 = piVar8;\n        }\n        else {\n          *(int **)(lVar4 + 0x10) = piVar5;\n          piVar1 = *(int **)(piVar3 + 4);\n        }\n        *(int **)(piVar5 + 6) = piVar3;\n        piVar8 = *(int **)(piVar1 + 6);\n        *(int **)(piVar3 + 2) = piVar5;\n      }" ({ "{") (expression_statement "*piVar5 = 1;" (assignment_expression "*piVar5 = 1" (pointer_expression "*piVar5" (* "*") (identifier "piVar5")) (= "=") (number_literal "1")) (; ";")) (expression_statement "*piVar3 = 0;" (assignment_expression "*piVar3 = 0" (pointer_expression "*piVar3" (* "*") (identifier "piVar3")) (= "=") (number_literal "0")) (; ";")) (expression_statement "*(int **)(piVar3 + 4) = piVar8;" (assignment_expression "*(int **)(piVar3 + 4) = piVar8" (pointer_expression "*(int **)(piVar3 + 4)" (* "*") (cast_expression "(int **)(piVar3 + 4)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(piVar3 + 4)" (( "(") (binary_expression "piVar3 + 4" (identifier "piVar3") (+ "+") (number_literal "4")) () ")")))) (= "=") (identifier "piVar8")) (; ";")) (if_statement "if (piVar8 != (int *)0x0) {\n          *(int **)(piVar8 + 2) = piVar3;\n        }" (if "if") (parenthesized_expression "(piVar8 != (int *)0x0)" (( "(") (binary_expression "piVar8 != (int *)0x0" (identifier "piVar8") (!= "!=") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n          *(int **)(piVar8 + 2) = piVar3;\n        }" ({ "{") (expression_statement "*(int **)(piVar8 + 2) = piVar3;" (assignment_expression "*(int **)(piVar8 + 2) = piVar3" (pointer_expression "*(int **)(piVar8 + 2)" (* "*") (cast_expression "(int **)(piVar8 + 2)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(piVar8 + 2)" (( "(") (binary_expression "piVar8 + 2" (identifier "piVar8") (+ "+") (number_literal "2")) () ")")))) (= "=") (identifier "piVar3")) (; ";")) (} "}"))) (expression_statement "lVar4 = *(long *)(piVar3 + 2);" (assignment_expression "lVar4 = *(long *)(piVar3 + 2)" (identifier "lVar4") (= "=") (pointer_expression "*(long *)(piVar3 + 2)" (* "*") (cast_expression "(long *)(piVar3 + 2)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(piVar3 + 2)" (( "(") (binary_expression "piVar3 + 2" (identifier "piVar3") (+ "+") (number_literal "2")) () ")"))))) (; ";")) (expression_statement "*(long *)(piVar5 + 2) = lVar4;" (assignment_expression "*(long *)(piVar5 + 2) = lVar4" (pointer_expression "*(long *)(piVar5 + 2)" (* "*") (cast_expression "(long *)(piVar5 + 2)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(piVar5 + 2)" (( "(") (binary_expression "piVar5 + 2" (identifier "piVar5") (+ "+") (number_literal "2")) () ")")))) (= "=") (identifier "lVar4")) (; ";")) (if_statement "if (piVar3 == *(int **)(param_2 + 8)) {\n          *(int **)(param_2 + 8) = piVar5;\n          piVar1 = *(int **)(piVar3 + 4);\n        }\n        else if (piVar3 == *(int **)(lVar4 + 0x18)) {\n          *(int **)(lVar4 + 0x18) = piVar5;\n          piVar1 = piVar8;\n        }\n        else {\n          *(int **)(lVar4 + 0x10) = piVar5;\n          piVar1 = *(int **)(piVar3 + 4);\n        }" (if "if") (parenthesized_expression "(piVar3 == *(int **)(param_2 + 8))" (( "(") (binary_expression "piVar3 == *(int **)(param_2 + 8)" (identifier "piVar3") (== "==") (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")) () ")"))))) () ")")) (compound_statement "{\n          *(int **)(param_2 + 8) = piVar5;\n          piVar1 = *(int **)(piVar3 + 4);\n        }" ({ "{") (expression_statement "*(int **)(param_2 + 8) = piVar5;" (assignment_expression "*(int **)(param_2 + 8) = piVar5" (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 "piVar5")) (; ";")) (expression_statement "piVar1 = *(int **)(piVar3 + 4);" (assignment_expression "piVar1 = *(int **)(piVar3 + 4)" (identifier "piVar1") (= "=") (pointer_expression "*(int **)(piVar3 + 4)" (* "*") (cast_expression "(int **)(piVar3 + 4)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(piVar3 + 4)" (( "(") (binary_expression "piVar3 + 4" (identifier "piVar3") (+ "+") (number_literal "4")) () ")"))))) (; ";")) (} "}")) (else_clause "else if (piVar3 == *(int **)(lVar4 + 0x18)) {\n          *(int **)(lVar4 + 0x18) = piVar5;\n          piVar1 = piVar8;\n        }\n        else {\n          *(int **)(lVar4 + 0x10) = piVar5;\n          piVar1 = *(int **)(piVar3 + 4);\n        }" (else "else") (if_statement "if (piVar3 == *(int **)(lVar4 + 0x18)) {\n          *(int **)(lVar4 + 0x18) = piVar5;\n          piVar1 = piVar8;\n        }\n        else {\n          *(int **)(lVar4 + 0x10) = piVar5;\n          piVar1 = *(int **)(piVar3 + 4);\n        }" (if "if") (parenthesized_expression "(piVar3 == *(int **)(lVar4 + 0x18))" (( "(") (binary_expression "piVar3 == *(int **)(lVar4 + 0x18)" (identifier "piVar3") (== "==") (pointer_expression "*(int **)(lVar4 + 0x18)" (* "*") (cast_expression "(int **)(lVar4 + 0x18)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(lVar4 + 0x18)" (( "(") (binary_expression "lVar4 + 0x18" (identifier "lVar4") (+ "+") (number_literal "0x18")) () ")"))))) () ")")) (compound_statement "{\n          *(int **)(lVar4 + 0x18) = piVar5;\n          piVar1 = piVar8;\n        }" ({ "{") (expression_statement "*(int **)(lVar4 + 0x18) = piVar5;" (assignment_expression "*(int **)(lVar4 + 0x18) = piVar5" (pointer_expression "*(int **)(lVar4 + 0x18)" (* "*") (cast_expression "(int **)(lVar4 + 0x18)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(lVar4 + 0x18)" (( "(") (binary_expression "lVar4 + 0x18" (identifier "lVar4") (+ "+") (number_literal "0x18")) () ")")))) (= "=") (identifier "piVar5")) (; ";")) (expression_statement "piVar1 = piVar8;" (assignment_expression "piVar1 = piVar8" (identifier "piVar1") (= "=") (identifier "piVar8")) (; ";")) (} "}")) (else_clause "else {\n          *(int **)(lVar4 + 0x10) = piVar5;\n          piVar1 = *(int **)(piVar3 + 4);\n        }" (else "else") (compound_statement "{\n          *(int **)(lVar4 + 0x10) = piVar5;\n          piVar1 = *(int **)(piVar3 + 4);\n        }" ({ "{") (expression_statement "*(int **)(lVar4 + 0x10) = piVar5;" (assignment_expression "*(int **)(lVar4 + 0x10) = piVar5" (pointer_expression "*(int **)(lVar4 + 0x10)" (* "*") (cast_expression "(int **)(lVar4 + 0x10)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(lVar4 + 0x10)" (( "(") (binary_expression "lVar4 + 0x10" (identifier "lVar4") (+ "+") (number_literal "0x10")) () ")")))) (= "=") (identifier "piVar5")) (; ";")) (expression_statement "piVar1 = *(int **)(piVar3 + 4);" (assignment_expression "piVar1 = *(int **)(piVar3 + 4)" (identifier "piVar1") (= "=") (pointer_expression "*(int **)(piVar3 + 4)" (* "*") (cast_expression "(int **)(piVar3 + 4)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(piVar3 + 4)" (( "(") (binary_expression "piVar3 + 4" (identifier "piVar3") (+ "+") (number_literal "4")) () ")"))))) (; ";")) (} "}")))))) (expression_statement "*(int **)(piVar5 + 6) = piVar3;" (assignment_expression "*(int **)(piVar5 + 6) = piVar3" (pointer_expression "*(int **)(piVar5 + 6)" (* "*") (cast_expression "(int **)(piVar5 + 6)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(piVar5 + 6)" (( "(") (binary_expression "piVar5 + 6" (identifier "piVar5") (+ "+") (number_literal "6")) () ")")))) (= "=") (identifier "piVar3")) (; ";")) (expression_statement "piVar8 = *(int **)(piVar1 + 6);" (assignment_expression "piVar8 = *(int **)(piVar1 + 6)" (identifier "piVar8") (= "=") (pointer_expression "*(int **)(piVar1 + 6)" (* "*") (cast_expression "(int **)(piVar1 + 6)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(piVar1 + 6)" (( "(") (binary_expression "piVar1 + 6" (identifier "piVar1") (+ "+") (number_literal "6")) () ")"))))) (; ";")) (expression_statement "*(int **)(piVar3 + 2) = piVar5;" (assignment_expression "*(int **)(piVar3 + 2) = piVar5" (pointer_expression "*(int **)(piVar3 + 2)" (* "*") (cast_expression "(int **)(piVar3 + 2)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(piVar3 + 2)" (( "(") (binary_expression "piVar3 + 2" (identifier "piVar3") (+ "+") (number_literal "2")) () ")")))) (= "=") (identifier "piVar5")) (; ";")) (} "}"))) (if_statement "if ((piVar8 == (int *)0x0) || (*piVar8 == 1)) {\n        piVar5 = *(int **)(piVar1 + 4);\n        if ((piVar5 == (int *)0x0) || (*piVar5 == 1)) goto LAB_002dc5e8;\nLAB_002dc82b:\n        piVar6 = *(int **)(piVar3 + 4);\n        *piVar1 = *piVar3;\n        *piVar3 = 1;\nLAB_002dc83b:\n        *piVar5 = 1;\n      }\n      else {\n        piVar5 = *(int **)(piVar1 + 4);\n        if ((piVar5 != (int *)0x0) && (*piVar5 != 1)) goto LAB_002dc82b;\n        lVar4 = *(long *)(piVar8 + 4);\n        *piVar8 = 1;\n        *piVar1 = 0;\n        *(long *)(piVar1 + 6) = lVar4;\n        if (lVar4 != 0) {\n          *(int **)(lVar4 + 8) = piVar1;\n        }\n        lVar4 = *(long *)(piVar1 + 2);\n        *(long *)(piVar8 + 2) = lVar4;\n        if (piVar1 == *(int **)(param_2 + 8)) {\n          *(int **)(param_2 + 8) = piVar8;\n        }\n        else if (piVar1 == *(int **)(lVar4 + 0x10)) {\n          *(int **)(lVar4 + 0x10) = piVar8;\n        }\n        else {\n          *(int **)(lVar4 + 0x18) = piVar8;\n        }\n        *(int **)(piVar8 + 4) = piVar1;\n        piVar6 = *(int **)(piVar3 + 4);\n        *(int **)(piVar1 + 2) = piVar8;\n        piVar5 = *(int **)(piVar6 + 4);\n        *piVar6 = *piVar3;\n        *piVar3 = 1;\n        if (piVar5 != (int *)0x0) goto LAB_002dc83b;\n      }" (if "if") (parenthesized_expression "((piVar8 == (int *)0x0) || (*piVar8 == 1))" (( "(") (binary_expression "(piVar8 == (int *)0x0) || (*piVar8 == 1)" (parenthesized_expression "(piVar8 == (int *)0x0)" (( "(") (binary_expression "piVar8 == (int *)0x0" (identifier "piVar8") (== "==") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (|| "||") (parenthesized_expression "(*piVar8 == 1)" (( "(") (binary_expression "*piVar8 == 1" (pointer_expression "*piVar8" (* "*") (identifier "piVar8")) (== "==") (number_literal "1")) () ")"))) () ")")) (compound_statement "{\n        piVar5 = *(int **)(piVar1 + 4);\n        if ((piVar5 == (int *)0x0) || (*piVar5 == 1)) goto LAB_002dc5e8;\nLAB_002dc82b:\n        piVar6 = *(int **)(piVar3 + 4);\n        *piVar1 = *piVar3;\n        *piVar3 = 1;\nLAB_002dc83b:\n        *piVar5 = 1;\n      }" ({ "{") (expression_statement "piVar5 = *(int **)(piVar1 + 4);" (assignment_expression "piVar5 = *(int **)(piVar1 + 4)" (identifier "piVar5") (= "=") (pointer_expression "*(int **)(piVar1 + 4)" (* "*") (cast_expression "(int **)(piVar1 + 4)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(piVar1 + 4)" (( "(") (binary_expression "piVar1 + 4" (identifier "piVar1") (+ "+") (number_literal "4")) () ")"))))) (; ";")) (if_statement "if ((piVar5 == (int *)0x0) || (*piVar5 == 1)) goto LAB_002dc5e8;" (if "if") (parenthesized_expression "((piVar5 == (int *)0x0) || (*piVar5 == 1))" (( "(") (binary_expression "(piVar5 == (int *)0x0) || (*piVar5 == 1)" (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"))) () ")")) (|| "||") (parenthesized_expression "(*piVar5 == 1)" (( "(") (binary_expression "*piVar5 == 1" (pointer_expression "*piVar5" (* "*") (identifier "piVar5")) (== "==") (number_literal "1")) () ")"))) () ")")) (goto_statement "goto LAB_002dc5e8;" (goto "goto") (statement_identifier "LAB_002dc5e8") (; ";"))) (labeled_statement "LAB_002dc82b:\n        piVar6 = *(int **)(piVar3 + 4);" (statement_identifier "LAB_002dc82b") (: ":") (expression_statement "piVar6 = *(int **)(piVar3 + 4);" (assignment_expression "piVar6 = *(int **)(piVar3 + 4)" (identifier "piVar6") (= "=") (pointer_expression "*(int **)(piVar3 + 4)" (* "*") (cast_expression "(int **)(piVar3 + 4)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(piVar3 + 4)" (( "(") (binary_expression "piVar3 + 4" (identifier "piVar3") (+ "+") (number_literal "4")) () ")"))))) (; ";"))) (expression_statement "*piVar1 = *piVar3;" (assignment_expression "*piVar1 = *piVar3" (pointer_expression "*piVar1" (* "*") (identifier "piVar1")) (= "=") (pointer_expression "*piVar3" (* "*") (identifier "piVar3"))) (; ";")) (expression_statement "*piVar3 = 1;" (assignment_expression "*piVar3 = 1" (pointer_expression "*piVar3" (* "*") (identifier "piVar3")) (= "=") (number_literal "1")) (; ";")) (labeled_statement "LAB_002dc83b:\n        *piVar5 = 1;" (statement_identifier "LAB_002dc83b") (: ":") (expression_statement "*piVar5 = 1;" (assignment_expression "*piVar5 = 1" (pointer_expression "*piVar5" (* "*") (identifier "piVar5")) (= "=") (number_literal "1")) (; ";"))) (} "}")) (else_clause "else {\n        piVar5 = *(int **)(piVar1 + 4);\n        if ((piVar5 != (int *)0x0) && (*piVar5 != 1)) goto LAB_002dc82b;\n        lVar4 = *(long *)(piVar8 + 4);\n        *piVar8 = 1;\n        *piVar1 = 0;\n        *(long *)(piVar1 + 6) = lVar4;\n        if (lVar4 != 0) {\n          *(int **)(lVar4 + 8) = piVar1;\n        }\n        lVar4 = *(long *)(piVar1 + 2);\n        *(long *)(piVar8 + 2) = lVar4;\n        if (piVar1 == *(int **)(param_2 + 8)) {\n          *(int **)(param_2 + 8) = piVar8;\n        }\n        else if (piVar1 == *(int **)(lVar4 + 0x10)) {\n          *(int **)(lVar4 + 0x10) = piVar8;\n        }\n        else {\n          *(int **)(lVar4 + 0x18) = piVar8;\n        }\n        *(int **)(piVar8 + 4) = piVar1;\n        piVar6 = *(int **)(piVar3 + 4);\n        *(int **)(piVar1 + 2) = piVar8;\n        piVar5 = *(int **)(piVar6 + 4);\n        *piVar6 = *piVar3;\n        *piVar3 = 1;\n        if (piVar5 != (int *)0x0) goto LAB_002dc83b;\n      }" (else "else") (compound_statement "{\n        piVar5 = *(int **)(piVar1 + 4);\n        if ((piVar5 != (int *)0x0) && (*piVar5 != 1)) goto LAB_002dc82b;\n        lVar4 = *(long *)(piVar8 + 4);\n        *piVar8 = 1;\n        *piVar1 = 0;\n        *(long *)(piVar1 + 6) = lVar4;\n        if (lVar4 != 0) {\n          *(int **)(lVar4 + 8) = piVar1;\n        }\n        lVar4 = *(long *)(piVar1 + 2);\n        *(long *)(piVar8 + 2) = lVar4;\n        if (piVar1 == *(int **)(param_2 + 8)) {\n          *(int **)(param_2 + 8) = piVar8;\n        }\n        else if (piVar1 == *(int **)(lVar4 + 0x10)) {\n          *(int **)(lVar4 + 0x10) = piVar8;\n        }\n        else {\n          *(int **)(lVar4 + 0x18) = piVar8;\n        }\n        *(int **)(piVar8 + 4) = piVar1;\n        piVar6 = *(int **)(piVar3 + 4);\n        *(int **)(piVar1 + 2) = piVar8;\n        piVar5 = *(int **)(piVar6 + 4);\n        *piVar6 = *piVar3;\n        *piVar3 = 1;\n        if (piVar5 != (int *)0x0) goto LAB_002dc83b;\n      }" ({ "{") (expression_statement "piVar5 = *(int **)(piVar1 + 4);" (assignment_expression "piVar5 = *(int **)(piVar1 + 4)" (identifier "piVar5") (= "=") (pointer_expression "*(int **)(piVar1 + 4)" (* "*") (cast_expression "(int **)(piVar1 + 4)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(piVar1 + 4)" (( "(") (binary_expression "piVar1 + 4" (identifier "piVar1") (+ "+") (number_literal "4")) () ")"))))) (; ";")) (if_statement "if ((piVar5 != (int *)0x0) && (*piVar5 != 1)) goto LAB_002dc82b;" (if "if") (parenthesized_expression "((piVar5 != (int *)0x0) && (*piVar5 != 1))" (( "(") (binary_expression "(piVar5 != (int *)0x0) && (*piVar5 != 1)" (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"))) () ")")) (&& "&&") (parenthesized_expression "(*piVar5 != 1)" (( "(") (binary_expression "*piVar5 != 1" (pointer_expression "*piVar5" (* "*") (identifier "piVar5")) (!= "!=") (number_literal "1")) () ")"))) () ")")) (goto_statement "goto LAB_002dc82b;" (goto "goto") (statement_identifier "LAB_002dc82b") (; ";"))) (expression_statement "lVar4 = *(long *)(piVar8 + 4);" (assignment_expression "lVar4 = *(long *)(piVar8 + 4)" (identifier "lVar4") (= "=") (pointer_expression "*(long *)(piVar8 + 4)" (* "*") (cast_expression "(long *)(piVar8 + 4)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(piVar8 + 4)" (( "(") (binary_expression "piVar8 + 4" (identifier "piVar8") (+ "+") (number_literal "4")) () ")"))))) (; ";")) (expression_statement "*piVar8 = 1;" (assignment_expression "*piVar8 = 1" (pointer_expression "*piVar8" (* "*") (identifier "piVar8")) (= "=") (number_literal "1")) (; ";")) (expression_statement "*piVar1 = 0;" (assignment_expression "*piVar1 = 0" (pointer_expression "*piVar1" (* "*") (identifier "piVar1")) (= "=") (number_literal "0")) (; ";")) (expression_statement "*(long *)(piVar1 + 6) = lVar4;" (assignment_expression "*(long *)(piVar1 + 6) = lVar4" (pointer_expression "*(long *)(piVar1 + 6)" (* "*") (cast_expression "(long *)(piVar1 + 6)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(piVar1 + 6)" (( "(") (binary_expression "piVar1 + 6" (identifier "piVar1") (+ "+") (number_literal "6")) () ")")))) (= "=") (identifier "lVar4")) (; ";")) (if_statement "if (lVar4 != 0) {\n          *(int **)(lVar4 + 8) = piVar1;\n        }" (if "if") (parenthesized_expression "(lVar4 != 0)" (( "(") (binary_expression "lVar4 != 0" (identifier "lVar4") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n          *(int **)(lVar4 + 8) = piVar1;\n        }" ({ "{") (expression_statement "*(int **)(lVar4 + 8) = piVar1;" (assignment_expression "*(int **)(lVar4 + 8) = piVar1" (pointer_expression "*(int **)(lVar4 + 8)" (* "*") (cast_expression "(int **)(lVar4 + 8)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(lVar4 + 8)" (( "(") (binary_expression "lVar4 + 8" (identifier "lVar4") (+ "+") (number_literal "8")) () ")")))) (= "=") (identifier "piVar1")) (; ";")) (} "}"))) (expression_statement "lVar4 = *(long *)(piVar1 + 2);" (assignment_expression "lVar4 = *(long *)(piVar1 + 2)" (identifier "lVar4") (= "=") (pointer_expression "*(long *)(piVar1 + 2)" (* "*") (cast_expression "(long *)(piVar1 + 2)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(piVar1 + 2)" (( "(") (binary_expression "piVar1 + 2" (identifier "piVar1") (+ "+") (number_literal "2")) () ")"))))) (; ";")) (expression_statement "*(long *)(piVar8 + 2) = lVar4;" (assignment_expression "*(long *)(piVar8 + 2) = lVar4" (pointer_expression "*(long *)(piVar8 + 2)" (* "*") (cast_expression "(long *)(piVar8 + 2)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(piVar8 + 2)" (( "(") (binary_expression "piVar8 + 2" (identifier "piVar8") (+ "+") (number_literal "2")) () ")")))) (= "=") (identifier "lVar4")) (; ";")) (if_statement "if (piVar1 == *(int **)(param_2 + 8)) {\n          *(int **)(param_2 + 8) = piVar8;\n        }\n        else if (piVar1 == *(int **)(lVar4 + 0x10)) {\n          *(int **)(lVar4 + 0x10) = piVar8;\n        }\n        else {\n          *(int **)(lVar4 + 0x18) = piVar8;\n        }" (if "if") (parenthesized_expression "(piVar1 == *(int **)(param_2 + 8))" (( "(") (binary_expression "piVar1 == *(int **)(param_2 + 8)" (identifier "piVar1") (== "==") (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")) () ")"))))) () ")")) (compound_statement "{\n          *(int **)(param_2 + 8) = piVar8;\n        }" ({ "{") (expression_statement "*(int **)(param_2 + 8) = piVar8;" (assignment_expression "*(int **)(param_2 + 8) = piVar8" (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 "piVar8")) (; ";")) (} "}")) (else_clause "else if (piVar1 == *(int **)(lVar4 + 0x10)) {\n          *(int **)(lVar4 + 0x10) = piVar8;\n        }\n        else {\n          *(int **)(lVar4 + 0x18) = piVar8;\n        }" (else "else") (if_statement "if (piVar1 == *(int **)(lVar4 + 0x10)) {\n          *(int **)(lVar4 + 0x10) = piVar8;\n        }\n        else {\n          *(int **)(lVar4 + 0x18) = piVar8;\n        }" (if "if") (parenthesized_expression "(piVar1 == *(int **)(lVar4 + 0x10))" (( "(") (binary_expression "piVar1 == *(int **)(lVar4 + 0x10)" (identifier "piVar1") (== "==") (pointer_expression "*(int **)(lVar4 + 0x10)" (* "*") (cast_expression "(int **)(lVar4 + 0x10)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(lVar4 + 0x10)" (( "(") (binary_expression "lVar4 + 0x10" (identifier "lVar4") (+ "+") (number_literal "0x10")) () ")"))))) () ")")) (compound_statement "{\n          *(int **)(lVar4 + 0x10) = piVar8;\n        }" ({ "{") (expression_statement "*(int **)(lVar4 + 0x10) = piVar8;" (assignment_expression "*(int **)(lVar4 + 0x10) = piVar8" (pointer_expression "*(int **)(lVar4 + 0x10)" (* "*") (cast_expression "(int **)(lVar4 + 0x10)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(lVar4 + 0x10)" (( "(") (binary_expression "lVar4 + 0x10" (identifier "lVar4") (+ "+") (number_literal "0x10")) () ")")))) (= "=") (identifier "piVar8")) (; ";")) (} "}")) (else_clause "else {\n          *(int **)(lVar4 + 0x18) = piVar8;\n        }" (else "else") (compound_statement "{\n          *(int **)(lVar4 + 0x18) = piVar8;\n        }" ({ "{") (expression_statement "*(int **)(lVar4 + 0x18) = piVar8;" (assignment_expression "*(int **)(lVar4 + 0x18) = piVar8" (pointer_expression "*(int **)(lVar4 + 0x18)" (* "*") (cast_expression "(int **)(lVar4 + 0x18)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(lVar4 + 0x18)" (( "(") (binary_expression "lVar4 + 0x18" (identifier "lVar4") (+ "+") (number_literal "0x18")) () ")")))) (= "=") (identifier "piVar8")) (; ";")) (} "}")))))) (expression_statement "*(int **)(piVar8 + 4) = piVar1;" (assignment_expression "*(int **)(piVar8 + 4) = piVar1" (pointer_expression "*(int **)(piVar8 + 4)" (* "*") (cast_expression "(int **)(piVar8 + 4)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(piVar8 + 4)" (( "(") (binary_expression "piVar8 + 4" (identifier "piVar8") (+ "+") (number_literal "4")) () ")")))) (= "=") (identifier "piVar1")) (; ";")) (expression_statement "piVar6 = *(int **)(piVar3 + 4);" (assignment_expression "piVar6 = *(int **)(piVar3 + 4)" (identifier "piVar6") (= "=") (pointer_expression "*(int **)(piVar3 + 4)" (* "*") (cast_expression "(int **)(piVar3 + 4)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(piVar3 + 4)" (( "(") (binary_expression "piVar3 + 4" (identifier "piVar3") (+ "+") (number_literal "4")) () ")"))))) (; ";")) (expression_statement "*(int **)(piVar1 + 2) = piVar8;" (assignment_expression "*(int **)(piVar1 + 2) = piVar8" (pointer_expression "*(int **)(piVar1 + 2)" (* "*") (cast_expression "(int **)(piVar1 + 2)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(piVar1 + 2)" (( "(") (binary_expression "piVar1 + 2" (identifier "piVar1") (+ "+") (number_literal "2")) () ")")))) (= "=") (identifier "piVar8")) (; ";")) (expression_statement "piVar5 = *(int **)(piVar6 + 4);" (assignment_expression "piVar5 = *(int **)(piVar6 + 4)" (identifier "piVar5") (= "=") (pointer_expression "*(int **)(piVar6 + 4)" (* "*") (cast_expression "(int **)(piVar6 + 4)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(piVar6 + 4)" (( "(") (binary_expression "piVar6 + 4" (identifier "piVar6") (+ "+") (number_literal "4")) () ")"))))) (; ";")) (expression_statement "*piVar6 = *piVar3;" (assignment_expression "*piVar6 = *piVar3" (pointer_expression "*piVar6" (* "*") (identifier "piVar6")) (= "=") (pointer_expression "*piVar3" (* "*") (identifier "piVar3"))) (; ";")) (expression_statement "*piVar3 = 1;" (assignment_expression "*piVar3 = 1" (pointer_expression "*piVar3" (* "*") (identifier "piVar3")) (= "=") (number_literal "1")) (; ";")) (if_statement "if (piVar5 != (int *)0x0) goto LAB_002dc83b;" (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"))) () ")")) (goto_statement "goto LAB_002dc83b;" (goto "goto") (statement_identifier "LAB_002dc83b") (; ";"))) (} "}")))) (expression_statement "lVar4 = *(long *)(piVar6 + 6);" (assignment_expression "lVar4 = *(long *)(piVar6 + 6)" (identifier "lVar4") (= "=") (pointer_expression "*(long *)(piVar6 + 6)" (* "*") (cast_expression "(long *)(piVar6 + 6)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(piVar6 + 6)" (( "(") (binary_expression "piVar6 + 6" (identifier "piVar6") (+ "+") (number_literal "6")) () ")"))))) (; ";")) (expression_statement "*(long *)(piVar3 + 4) = lVar4;" (assignment_expression "*(long *)(piVar3 + 4) = lVar4" (pointer_expression "*(long *)(piVar3 + 4)" (* "*") (cast_expression "(long *)(piVar3 + 4)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(piVar3 + 4)" (( "(") (binary_expression "piVar3 + 4" (identifier "piVar3") (+ "+") (number_literal "4")) () ")")))) (= "=") (identifier "lVar4")) (; ";")) (if_statement "if (lVar4 != 0) {\n        *(int **)(lVar4 + 8) = piVar3;\n      }" (if "if") (parenthesized_expression "(lVar4 != 0)" (( "(") (binary_expression "lVar4 != 0" (identifier "lVar4") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n        *(int **)(lVar4 + 8) = piVar3;\n      }" ({ "{") (expression_statement "*(int **)(lVar4 + 8) = piVar3;" (assignment_expression "*(int **)(lVar4 + 8) = piVar3" (pointer_expression "*(int **)(lVar4 + 8)" (* "*") (cast_expression "(int **)(lVar4 + 8)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(lVar4 + 8)" (( "(") (binary_expression "lVar4 + 8" (identifier "lVar4") (+ "+") (number_literal "8")) () ")")))) (= "=") (identifier "piVar3")) (; ";")) (} "}"))) (expression_statement "lVar4 = *(long *)(piVar3 + 2);" (assignment_expression "lVar4 = *(long *)(piVar3 + 2)" (identifier "lVar4") (= "=") (pointer_expression "*(long *)(piVar3 + 2)" (* "*") (cast_expression "(long *)(piVar3 + 2)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(piVar3 + 2)" (( "(") (binary_expression "piVar3 + 2" (identifier "piVar3") (+ "+") (number_literal "2")) () ")"))))) (; ";")) (expression_statement "*(long *)(piVar6 + 2) = lVar4;" (assignment_expression "*(long *)(piVar6 + 2) = lVar4" (pointer_expression "*(long *)(piVar6 + 2)" (* "*") (cast_expression "(long *)(piVar6 + 2)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(piVar6 + 2)" (( "(") (binary_expression "piVar6 + 2" (identifier "piVar6") (+ "+") (number_literal "2")) () ")")))) (= "=") (identifier "lVar4")) (; ";")) (if_statement "if (piVar3 == *(int **)(param_2 + 8)) {\n        *(int **)(param_2 + 8) = piVar6;\n      }\n      else if (piVar3 == *(int **)(lVar4 + 0x18)) {\n        *(int **)(lVar4 + 0x18) = piVar6;\n      }\n      else {\n        *(int **)(lVar4 + 0x10) = piVar6;\n      }" (if "if") (parenthesized_expression "(piVar3 == *(int **)(param_2 + 8))" (( "(") (binary_expression "piVar3 == *(int **)(param_2 + 8)" (identifier "piVar3") (== "==") (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")) () ")"))))) () ")")) (compound_statement "{\n        *(int **)(param_2 + 8) = piVar6;\n      }" ({ "{") (expression_statement "*(int **)(param_2 + 8) = piVar6;" (assignment_expression "*(int **)(param_2 + 8) = piVar6" (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 "piVar6")) (; ";")) (} "}")) (else_clause "else if (piVar3 == *(int **)(lVar4 + 0x18)) {\n        *(int **)(lVar4 + 0x18) = piVar6;\n      }\n      else {\n        *(int **)(lVar4 + 0x10) = piVar6;\n      }" (else "else") (if_statement "if (piVar3 == *(int **)(lVar4 + 0x18)) {\n        *(int **)(lVar4 + 0x18) = piVar6;\n      }\n      else {\n        *(int **)(lVar4 + 0x10) = piVar6;\n      }" (if "if") (parenthesized_expression "(piVar3 == *(int **)(lVar4 + 0x18))" (( "(") (binary_expression "piVar3 == *(int **)(lVar4 + 0x18)" (identifier "piVar3") (== "==") (pointer_expression "*(int **)(lVar4 + 0x18)" (* "*") (cast_expression "(int **)(lVar4 + 0x18)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(lVar4 + 0x18)" (( "(") (binary_expression "lVar4 + 0x18" (identifier "lVar4") (+ "+") (number_literal "0x18")) () ")"))))) () ")")) (compound_statement "{\n        *(int **)(lVar4 + 0x18) = piVar6;\n      }" ({ "{") (expression_statement "*(int **)(lVar4 + 0x18) = piVar6;" (assignment_expression "*(int **)(lVar4 + 0x18) = piVar6" (pointer_expression "*(int **)(lVar4 + 0x18)" (* "*") (cast_expression "(int **)(lVar4 + 0x18)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(lVar4 + 0x18)" (( "(") (binary_expression "lVar4 + 0x18" (identifier "lVar4") (+ "+") (number_literal "0x18")) () ")")))) (= "=") (identifier "piVar6")) (; ";")) (} "}")) (else_clause "else {\n        *(int **)(lVar4 + 0x10) = piVar6;\n      }" (else "else") (compound_statement "{\n        *(int **)(lVar4 + 0x10) = piVar6;\n      }" ({ "{") (expression_statement "*(int **)(lVar4 + 0x10) = piVar6;" (assignment_expression "*(int **)(lVar4 + 0x10) = piVar6" (pointer_expression "*(int **)(lVar4 + 0x10)" (* "*") (cast_expression "(int **)(lVar4 + 0x10)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(lVar4 + 0x10)" (( "(") (binary_expression "lVar4 + 0x10" (identifier "lVar4") (+ "+") (number_literal "0x10")) () ")")))) (= "=") (identifier "piVar6")) (; ";")) (} "}")))))) (expression_statement "*(int **)(piVar6 + 6) = piVar3;" (assignment_expression "*(int **)(piVar6 + 6) = piVar3" (pointer_expression "*(int **)(piVar6 + 6)" (* "*") (cast_expression "(int **)(piVar6 + 6)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(piVar6 + 6)" (( "(") (binary_expression "piVar6 + 6" (identifier "piVar6") (+ "+") (number_literal "6")) () ")")))) (= "=") (identifier "piVar3")) (; ";")) (expression_statement "*(int **)(piVar3 + 2) = piVar6;" (assignment_expression "*(int **)(piVar3 + 2) = piVar6" (pointer_expression "*(int **)(piVar3 + 2)" (* "*") (cast_expression "(int **)(piVar3 + 2)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(piVar3 + 2)" (( "(") (binary_expression "piVar3 + 2" (identifier "piVar3") (+ "+") (number_literal "2")) () ")")))) (= "=") (identifier "piVar6")) (; ";")) (goto_statement "goto LAB_002dc6f0;" (goto "goto") (statement_identifier "LAB_002dc6f0") (; ";")) (} "}"))) (expression_statement "piVar5 = *(int **)(piVar3 + 6);" (assignment_expression "piVar5 = *(int **)(piVar3 + 6)" (identifier "piVar5") (= "=") (pointer_expression "*(int **)(piVar3 + 6)" (* "*") (cast_expression "(int **)(piVar3 + 6)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(piVar3 + 6)" (( "(") (binary_expression "piVar3 + 6" (identifier "piVar3") (+ "+") (number_literal "6")) () ")"))))) (; ";")) (expression_statement "piVar8 = *(int **)(piVar5 + 4);" (assignment_expression "piVar8 = *(int **)(piVar5 + 4)" (identifier "piVar8") (= "=") (pointer_expression "*(int **)(piVar5 + 4)" (* "*") (cast_expression "(int **)(piVar5 + 4)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(piVar5 + 4)" (( "(") (binary_expression "piVar5 + 4" (identifier "piVar5") (+ "+") (number_literal "4")) () ")"))))) (; ";")) (expression_statement "piVar1 = piVar5;" (assignment_expression "piVar1 = piVar5" (identifier "piVar1") (= "=") (identifier "piVar5")) (; ";")) (if_statement "if (*piVar5 == 0) {\n      *piVar5 = 1;\n      *piVar3 = 0;\n      *(int **)(piVar3 + 6) = piVar8;\n      if (piVar8 != (int *)0x0) {\n        *(int **)(piVar8 + 2) = piVar3;\n      }\n      lVar4 = *(long *)(piVar3 + 2);\n      *(long *)(piVar5 + 2) = lVar4;\n      if (piVar3 == *(int **)(param_2 + 8)) {\n        *(int **)(param_2 + 8) = piVar5;\n        piVar1 = *(int **)(piVar3 + 6);\n      }\n      else if (piVar3 == *(int **)(lVar4 + 0x10)) {\n        *(int **)(lVar4 + 0x10) = piVar5;\n        piVar1 = piVar8;\n      }\n      else {\n        *(int **)(lVar4 + 0x18) = piVar5;\n        piVar1 = *(int **)(piVar3 + 6);\n      }\n      *(int **)(piVar5 + 4) = piVar3;\n      piVar8 = *(int **)(piVar1 + 4);\n      *(int **)(piVar3 + 2) = 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      *piVar3 = 0;\n      *(int **)(piVar3 + 6) = piVar8;\n      if (piVar8 != (int *)0x0) {\n        *(int **)(piVar8 + 2) = piVar3;\n      }\n      lVar4 = *(long *)(piVar3 + 2);\n      *(long *)(piVar5 + 2) = lVar4;\n      if (piVar3 == *(int **)(param_2 + 8)) {\n        *(int **)(param_2 + 8) = piVar5;\n        piVar1 = *(int **)(piVar3 + 6);\n      }\n      else if (piVar3 == *(int **)(lVar4 + 0x10)) {\n        *(int **)(lVar4 + 0x10) = piVar5;\n        piVar1 = piVar8;\n      }\n      else {\n        *(int **)(lVar4 + 0x18) = piVar5;\n        piVar1 = *(int **)(piVar3 + 6);\n      }\n      *(int **)(piVar5 + 4) = piVar3;\n      piVar8 = *(int **)(piVar1 + 4);\n      *(int **)(piVar3 + 2) = piVar5;\n    }" ({ "{") (expression_statement "*piVar5 = 1;" (assignment_expression "*piVar5 = 1" (pointer_expression "*piVar5" (* "*") (identifier "piVar5")) (= "=") (number_literal "1")) (; ";")) (expression_statement "*piVar3 = 0;" (assignment_expression "*piVar3 = 0" (pointer_expression "*piVar3" (* "*") (identifier "piVar3")) (= "=") (number_literal "0")) (; ";")) (expression_statement "*(int **)(piVar3 + 6) = piVar8;" (assignment_expression "*(int **)(piVar3 + 6) = piVar8" (pointer_expression "*(int **)(piVar3 + 6)" (* "*") (cast_expression "(int **)(piVar3 + 6)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(piVar3 + 6)" (( "(") (binary_expression "piVar3 + 6" (identifier "piVar3") (+ "+") (number_literal "6")) () ")")))) (= "=") (identifier "piVar8")) (; ";")) (if_statement "if (piVar8 != (int *)0x0) {\n        *(int **)(piVar8 + 2) = piVar3;\n      }" (if "if") (parenthesized_expression "(piVar8 != (int *)0x0)" (( "(") (binary_expression "piVar8 != (int *)0x0" (identifier "piVar8") (!= "!=") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n        *(int **)(piVar8 + 2) = piVar3;\n      }" ({ "{") (expression_statement "*(int **)(piVar8 + 2) = piVar3;" (assignment_expression "*(int **)(piVar8 + 2) = piVar3" (pointer_expression "*(int **)(piVar8 + 2)" (* "*") (cast_expression "(int **)(piVar8 + 2)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(piVar8 + 2)" (( "(") (binary_expression "piVar8 + 2" (identifier "piVar8") (+ "+") (number_literal "2")) () ")")))) (= "=") (identifier "piVar3")) (; ";")) (} "}"))) (expression_statement "lVar4 = *(long *)(piVar3 + 2);" (assignment_expression "lVar4 = *(long *)(piVar3 + 2)" (identifier "lVar4") (= "=") (pointer_expression "*(long *)(piVar3 + 2)" (* "*") (cast_expression "(long *)(piVar3 + 2)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(piVar3 + 2)" (( "(") (binary_expression "piVar3 + 2" (identifier "piVar3") (+ "+") (number_literal "2")) () ")"))))) (; ";")) (expression_statement "*(long *)(piVar5 + 2) = lVar4;" (assignment_expression "*(long *)(piVar5 + 2) = lVar4" (pointer_expression "*(long *)(piVar5 + 2)" (* "*") (cast_expression "(long *)(piVar5 + 2)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(piVar5 + 2)" (( "(") (binary_expression "piVar5 + 2" (identifier "piVar5") (+ "+") (number_literal "2")) () ")")))) (= "=") (identifier "lVar4")) (; ";")) (if_statement "if (piVar3 == *(int **)(param_2 + 8)) {\n        *(int **)(param_2 + 8) = piVar5;\n        piVar1 = *(int **)(piVar3 + 6);\n      }\n      else if (piVar3 == *(int **)(lVar4 + 0x10)) {\n        *(int **)(lVar4 + 0x10) = piVar5;\n        piVar1 = piVar8;\n      }\n      else {\n        *(int **)(lVar4 + 0x18) = piVar5;\n        piVar1 = *(int **)(piVar3 + 6);\n      }" (if "if") (parenthesized_expression "(piVar3 == *(int **)(param_2 + 8))" (( "(") (binary_expression "piVar3 == *(int **)(param_2 + 8)" (identifier "piVar3") (== "==") (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")) () ")"))))) () ")")) (compound_statement "{\n        *(int **)(param_2 + 8) = piVar5;\n        piVar1 = *(int **)(piVar3 + 6);\n      }" ({ "{") (expression_statement "*(int **)(param_2 + 8) = piVar5;" (assignment_expression "*(int **)(param_2 + 8) = piVar5" (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 "piVar5")) (; ";")) (expression_statement "piVar1 = *(int **)(piVar3 + 6);" (assignment_expression "piVar1 = *(int **)(piVar3 + 6)" (identifier "piVar1") (= "=") (pointer_expression "*(int **)(piVar3 + 6)" (* "*") (cast_expression "(int **)(piVar3 + 6)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(piVar3 + 6)" (( "(") (binary_expression "piVar3 + 6" (identifier "piVar3") (+ "+") (number_literal "6")) () ")"))))) (; ";")) (} "}")) (else_clause "else if (piVar3 == *(int **)(lVar4 + 0x10)) {\n        *(int **)(lVar4 + 0x10) = piVar5;\n        piVar1 = piVar8;\n      }\n      else {\n        *(int **)(lVar4 + 0x18) = piVar5;\n        piVar1 = *(int **)(piVar3 + 6);\n      }" (else "else") (if_statement "if (piVar3 == *(int **)(lVar4 + 0x10)) {\n        *(int **)(lVar4 + 0x10) = piVar5;\n        piVar1 = piVar8;\n      }\n      else {\n        *(int **)(lVar4 + 0x18) = piVar5;\n        piVar1 = *(int **)(piVar3 + 6);\n      }" (if "if") (parenthesized_expression "(piVar3 == *(int **)(lVar4 + 0x10))" (( "(") (binary_expression "piVar3 == *(int **)(lVar4 + 0x10)" (identifier "piVar3") (== "==") (pointer_expression "*(int **)(lVar4 + 0x10)" (* "*") (cast_expression "(int **)(lVar4 + 0x10)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(lVar4 + 0x10)" (( "(") (binary_expression "lVar4 + 0x10" (identifier "lVar4") (+ "+") (number_literal "0x10")) () ")"))))) () ")")) (compound_statement "{\n        *(int **)(lVar4 + 0x10) = piVar5;\n        piVar1 = piVar8;\n      }" ({ "{") (expression_statement "*(int **)(lVar4 + 0x10) = piVar5;" (assignment_expression "*(int **)(lVar4 + 0x10) = piVar5" (pointer_expression "*(int **)(lVar4 + 0x10)" (* "*") (cast_expression "(int **)(lVar4 + 0x10)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(lVar4 + 0x10)" (( "(") (binary_expression "lVar4 + 0x10" (identifier "lVar4") (+ "+") (number_literal "0x10")) () ")")))) (= "=") (identifier "piVar5")) (; ";")) (expression_statement "piVar1 = piVar8;" (assignment_expression "piVar1 = piVar8" (identifier "piVar1") (= "=") (identifier "piVar8")) (; ";")) (} "}")) (else_clause "else {\n        *(int **)(lVar4 + 0x18) = piVar5;\n        piVar1 = *(int **)(piVar3 + 6);\n      }" (else "else") (compound_statement "{\n        *(int **)(lVar4 + 0x18) = piVar5;\n        piVar1 = *(int **)(piVar3 + 6);\n      }" ({ "{") (expression_statement "*(int **)(lVar4 + 0x18) = piVar5;" (assignment_expression "*(int **)(lVar4 + 0x18) = piVar5" (pointer_expression "*(int **)(lVar4 + 0x18)" (* "*") (cast_expression "(int **)(lVar4 + 0x18)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(lVar4 + 0x18)" (( "(") (binary_expression "lVar4 + 0x18" (identifier "lVar4") (+ "+") (number_literal "0x18")) () ")")))) (= "=") (identifier "piVar5")) (; ";")) (expression_statement "piVar1 = *(int **)(piVar3 + 6);" (assignment_expression "piVar1 = *(int **)(piVar3 + 6)" (identifier "piVar1") (= "=") (pointer_expression "*(int **)(piVar3 + 6)" (* "*") (cast_expression "(int **)(piVar3 + 6)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(piVar3 + 6)" (( "(") (binary_expression "piVar3 + 6" (identifier "piVar3") (+ "+") (number_literal "6")) () ")"))))) (; ";")) (} "}")))))) (expression_statement "*(int **)(piVar5 + 4) = piVar3;" (assignment_expression "*(int **)(piVar5 + 4) = piVar3" (pointer_expression "*(int **)(piVar5 + 4)" (* "*") (cast_expression "(int **)(piVar5 + 4)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(piVar5 + 4)" (( "(") (binary_expression "piVar5 + 4" (identifier "piVar5") (+ "+") (number_literal "4")) () ")")))) (= "=") (identifier "piVar3")) (; ";")) (expression_statement "piVar8 = *(int **)(piVar1 + 4);" (assignment_expression "piVar8 = *(int **)(piVar1 + 4)" (identifier "piVar8") (= "=") (pointer_expression "*(int **)(piVar1 + 4)" (* "*") (cast_expression "(int **)(piVar1 + 4)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(piVar1 + 4)" (( "(") (binary_expression "piVar1 + 4" (identifier "piVar1") (+ "+") (number_literal "4")) () ")"))))) (; ";")) (expression_statement "*(int **)(piVar3 + 2) = piVar5;" (assignment_expression "*(int **)(piVar3 + 2) = piVar5" (pointer_expression "*(int **)(piVar3 + 2)" (* "*") (cast_expression "(int **)(piVar3 + 2)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(piVar3 + 2)" (( "(") (binary_expression "piVar3 + 2" (identifier "piVar3") (+ "+") (number_literal "2")) () ")")))) (= "=") (identifier "piVar5")) (; ";")) (} "}"))) (if_statement "if ((piVar8 != (int *)0x0) && (*piVar8 != 1)) {\n      piVar5 = *(int **)(piVar1 + 6);\n      if ((piVar5 != (int *)0x0) && (*piVar5 != 1)) goto LAB_002dc69f;\n      lVar4 = *(long *)(piVar8 + 6);\n      *piVar8 = 1;\n      *piVar1 = 0;\n      *(long *)(piVar1 + 4) = lVar4;\n      if (lVar4 != 0) {\n        *(int **)(lVar4 + 8) = piVar1;\n      }\n      lVar4 = *(long *)(piVar1 + 2);\n      *(long *)(piVar8 + 2) = lVar4;\n      if (piVar1 == *(int **)(param_2 + 8)) {\n        *(int **)(param_2 + 8) = piVar8;\n      }\n      else if (piVar1 == *(int **)(lVar4 + 0x18)) {\n        *(int **)(lVar4 + 0x18) = piVar8;\n      }\n      else {\n        *(int **)(lVar4 + 0x10) = piVar8;\n      }\n      *(int **)(piVar8 + 6) = piVar1;\n      *(int **)(piVar1 + 2) = piVar8;\n      piVar8 = *(int **)(piVar3 + 6);\n      piVar5 = *(int **)(piVar8 + 6);\n      *piVar8 = *piVar3;\n      *piVar3 = 1;\n      if (piVar5 != (int *)0x0) goto LAB_002dc6af;\nLAB_002dc6b5:\n      lVar4 = *(long *)(piVar8 + 4);\n      *(long *)(piVar3 + 6) = lVar4;\n      if (lVar4 != 0) {\n        *(int **)(lVar4 + 8) = piVar3;\n      }\n      lVar4 = *(long *)(piVar3 + 2);\n      *(long *)(piVar8 + 2) = lVar4;\n      if (piVar3 == *(int **)(param_2 + 8)) {\n        *(int **)(param_2 + 8) = piVar8;\n      }\n      else if (piVar3 == *(int **)(lVar4 + 0x10)) {\n        *(int **)(lVar4 + 0x10) = piVar8;\n      }\n      else {\n        *(int **)(lVar4 + 0x18) = piVar8;\n      }\n      *(int **)(piVar8 + 4) = piVar3;\n      *(int **)(piVar3 + 2) = piVar8;\n      goto LAB_002dc6f0;\n    }" (if "if") (parenthesized_expression "((piVar8 != (int *)0x0) && (*piVar8 != 1))" (( "(") (binary_expression "(piVar8 != (int *)0x0) && (*piVar8 != 1)" (parenthesized_expression "(piVar8 != (int *)0x0)" (( "(") (binary_expression "piVar8 != (int *)0x0" (identifier "piVar8") (!= "!=") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (&& "&&") (parenthesized_expression "(*piVar8 != 1)" (( "(") (binary_expression "*piVar8 != 1" (pointer_expression "*piVar8" (* "*") (identifier "piVar8")) (!= "!=") (number_literal "1")) () ")"))) () ")")) (compound_statement "{\n      piVar5 = *(int **)(piVar1 + 6);\n      if ((piVar5 != (int *)0x0) && (*piVar5 != 1)) goto LAB_002dc69f;\n      lVar4 = *(long *)(piVar8 + 6);\n      *piVar8 = 1;\n      *piVar1 = 0;\n      *(long *)(piVar1 + 4) = lVar4;\n      if (lVar4 != 0) {\n        *(int **)(lVar4 + 8) = piVar1;\n      }\n      lVar4 = *(long *)(piVar1 + 2);\n      *(long *)(piVar8 + 2) = lVar4;\n      if (piVar1 == *(int **)(param_2 + 8)) {\n        *(int **)(param_2 + 8) = piVar8;\n      }\n      else if (piVar1 == *(int **)(lVar4 + 0x18)) {\n        *(int **)(lVar4 + 0x18) = piVar8;\n      }\n      else {\n        *(int **)(lVar4 + 0x10) = piVar8;\n      }\n      *(int **)(piVar8 + 6) = piVar1;\n      *(int **)(piVar1 + 2) = piVar8;\n      piVar8 = *(int **)(piVar3 + 6);\n      piVar5 = *(int **)(piVar8 + 6);\n      *piVar8 = *piVar3;\n      *piVar3 = 1;\n      if (piVar5 != (int *)0x0) goto LAB_002dc6af;\nLAB_002dc6b5:\n      lVar4 = *(long *)(piVar8 + 4);\n      *(long *)(piVar3 + 6) = lVar4;\n      if (lVar4 != 0) {\n        *(int **)(lVar4 + 8) = piVar3;\n      }\n      lVar4 = *(long *)(piVar3 + 2);\n      *(long *)(piVar8 + 2) = lVar4;\n      if (piVar3 == *(int **)(param_2 + 8)) {\n        *(int **)(param_2 + 8) = piVar8;\n      }\n      else if (piVar3 == *(int **)(lVar4 + 0x10)) {\n        *(int **)(lVar4 + 0x10) = piVar8;\n      }\n      else {\n        *(int **)(lVar4 + 0x18) = piVar8;\n      }\n      *(int **)(piVar8 + 4) = piVar3;\n      *(int **)(piVar3 + 2) = piVar8;\n      goto LAB_002dc6f0;\n    }" ({ "{") (expression_statement "piVar5 = *(int **)(piVar1 + 6);" (assignment_expression "piVar5 = *(int **)(piVar1 + 6)" (identifier "piVar5") (= "=") (pointer_expression "*(int **)(piVar1 + 6)" (* "*") (cast_expression "(int **)(piVar1 + 6)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(piVar1 + 6)" (( "(") (binary_expression "piVar1 + 6" (identifier "piVar1") (+ "+") (number_literal "6")) () ")"))))) (; ";")) (if_statement "if ((piVar5 != (int *)0x0) && (*piVar5 != 1)) goto LAB_002dc69f;" (if "if") (parenthesized_expression "((piVar5 != (int *)0x0) && (*piVar5 != 1))" (( "(") (binary_expression "(piVar5 != (int *)0x0) && (*piVar5 != 1)" (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"))) () ")")) (&& "&&") (parenthesized_expression "(*piVar5 != 1)" (( "(") (binary_expression "*piVar5 != 1" (pointer_expression "*piVar5" (* "*") (identifier "piVar5")) (!= "!=") (number_literal "1")) () ")"))) () ")")) (goto_statement "goto LAB_002dc69f;" (goto "goto") (statement_identifier "LAB_002dc69f") (; ";"))) (expression_statement "lVar4 = *(long *)(piVar8 + 6);" (assignment_expression "lVar4 = *(long *)(piVar8 + 6)" (identifier "lVar4") (= "=") (pointer_expression "*(long *)(piVar8 + 6)" (* "*") (cast_expression "(long *)(piVar8 + 6)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(piVar8 + 6)" (( "(") (binary_expression "piVar8 + 6" (identifier "piVar8") (+ "+") (number_literal "6")) () ")"))))) (; ";")) (expression_statement "*piVar8 = 1;" (assignment_expression "*piVar8 = 1" (pointer_expression "*piVar8" (* "*") (identifier "piVar8")) (= "=") (number_literal "1")) (; ";")) (expression_statement "*piVar1 = 0;" (assignment_expression "*piVar1 = 0" (pointer_expression "*piVar1" (* "*") (identifier "piVar1")) (= "=") (number_literal "0")) (; ";")) (expression_statement "*(long *)(piVar1 + 4) = lVar4;" (assignment_expression "*(long *)(piVar1 + 4) = lVar4" (pointer_expression "*(long *)(piVar1 + 4)" (* "*") (cast_expression "(long *)(piVar1 + 4)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(piVar1 + 4)" (( "(") (binary_expression "piVar1 + 4" (identifier "piVar1") (+ "+") (number_literal "4")) () ")")))) (= "=") (identifier "lVar4")) (; ";")) (if_statement "if (lVar4 != 0) {\n        *(int **)(lVar4 + 8) = piVar1;\n      }" (if "if") (parenthesized_expression "(lVar4 != 0)" (( "(") (binary_expression "lVar4 != 0" (identifier "lVar4") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n        *(int **)(lVar4 + 8) = piVar1;\n      }" ({ "{") (expression_statement "*(int **)(lVar4 + 8) = piVar1;" (assignment_expression "*(int **)(lVar4 + 8) = piVar1" (pointer_expression "*(int **)(lVar4 + 8)" (* "*") (cast_expression "(int **)(lVar4 + 8)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(lVar4 + 8)" (( "(") (binary_expression "lVar4 + 8" (identifier "lVar4") (+ "+") (number_literal "8")) () ")")))) (= "=") (identifier "piVar1")) (; ";")) (} "}"))) (expression_statement "lVar4 = *(long *)(piVar1 + 2);" (assignment_expression "lVar4 = *(long *)(piVar1 + 2)" (identifier "lVar4") (= "=") (pointer_expression "*(long *)(piVar1 + 2)" (* "*") (cast_expression "(long *)(piVar1 + 2)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(piVar1 + 2)" (( "(") (binary_expression "piVar1 + 2" (identifier "piVar1") (+ "+") (number_literal "2")) () ")"))))) (; ";")) (expression_statement "*(long *)(piVar8 + 2) = lVar4;" (assignment_expression "*(long *)(piVar8 + 2) = lVar4" (pointer_expression "*(long *)(piVar8 + 2)" (* "*") (cast_expression "(long *)(piVar8 + 2)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(piVar8 + 2)" (( "(") (binary_expression "piVar8 + 2" (identifier "piVar8") (+ "+") (number_literal "2")) () ")")))) (= "=") (identifier "lVar4")) (; ";")) (if_statement "if (piVar1 == *(int **)(param_2 + 8)) {\n        *(int **)(param_2 + 8) = piVar8;\n      }\n      else if (piVar1 == *(int **)(lVar4 + 0x18)) {\n        *(int **)(lVar4 + 0x18) = piVar8;\n      }\n      else {\n        *(int **)(lVar4 + 0x10) = piVar8;\n      }" (if "if") (parenthesized_expression "(piVar1 == *(int **)(param_2 + 8))" (( "(") (binary_expression "piVar1 == *(int **)(param_2 + 8)" (identifier "piVar1") (== "==") (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")) () ")"))))) () ")")) (compound_statement "{\n        *(int **)(param_2 + 8) = piVar8;\n      }" ({ "{") (expression_statement "*(int **)(param_2 + 8) = piVar8;" (assignment_expression "*(int **)(param_2 + 8) = piVar8" (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 "piVar8")) (; ";")) (} "}")) (else_clause "else if (piVar1 == *(int **)(lVar4 + 0x18)) {\n        *(int **)(lVar4 + 0x18) = piVar8;\n      }\n      else {\n        *(int **)(lVar4 + 0x10) = piVar8;\n      }" (else "else") (if_statement "if (piVar1 == *(int **)(lVar4 + 0x18)) {\n        *(int **)(lVar4 + 0x18) = piVar8;\n      }\n      else {\n        *(int **)(lVar4 + 0x10) = piVar8;\n      }" (if "if") (parenthesized_expression "(piVar1 == *(int **)(lVar4 + 0x18))" (( "(") (binary_expression "piVar1 == *(int **)(lVar4 + 0x18)" (identifier "piVar1") (== "==") (pointer_expression "*(int **)(lVar4 + 0x18)" (* "*") (cast_expression "(int **)(lVar4 + 0x18)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(lVar4 + 0x18)" (( "(") (binary_expression "lVar4 + 0x18" (identifier "lVar4") (+ "+") (number_literal "0x18")) () ")"))))) () ")")) (compound_statement "{\n        *(int **)(lVar4 + 0x18) = piVar8;\n      }" ({ "{") (expression_statement "*(int **)(lVar4 + 0x18) = piVar8;" (assignment_expression "*(int **)(lVar4 + 0x18) = piVar8" (pointer_expression "*(int **)(lVar4 + 0x18)" (* "*") (cast_expression "(int **)(lVar4 + 0x18)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(lVar4 + 0x18)" (( "(") (binary_expression "lVar4 + 0x18" (identifier "lVar4") (+ "+") (number_literal "0x18")) () ")")))) (= "=") (identifier "piVar8")) (; ";")) (} "}")) (else_clause "else {\n        *(int **)(lVar4 + 0x10) = piVar8;\n      }" (else "else") (compound_statement "{\n        *(int **)(lVar4 + 0x10) = piVar8;\n      }" ({ "{") (expression_statement "*(int **)(lVar4 + 0x10) = piVar8;" (assignment_expression "*(int **)(lVar4 + 0x10) = piVar8" (pointer_expression "*(int **)(lVar4 + 0x10)" (* "*") (cast_expression "(int **)(lVar4 + 0x10)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(lVar4 + 0x10)" (( "(") (binary_expression "lVar4 + 0x10" (identifier "lVar4") (+ "+") (number_literal "0x10")) () ")")))) (= "=") (identifier "piVar8")) (; ";")) (} "}")))))) (expression_statement "*(int **)(piVar8 + 6) = piVar1;" (assignment_expression "*(int **)(piVar8 + 6) = piVar1" (pointer_expression "*(int **)(piVar8 + 6)" (* "*") (cast_expression "(int **)(piVar8 + 6)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(piVar8 + 6)" (( "(") (binary_expression "piVar8 + 6" (identifier "piVar8") (+ "+") (number_literal "6")) () ")")))) (= "=") (identifier "piVar1")) (; ";")) (expression_statement "*(int **)(piVar1 + 2) = piVar8;" (assignment_expression "*(int **)(piVar1 + 2) = piVar8" (pointer_expression "*(int **)(piVar1 + 2)" (* "*") (cast_expression "(int **)(piVar1 + 2)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(piVar1 + 2)" (( "(") (binary_expression "piVar1 + 2" (identifier "piVar1") (+ "+") (number_literal "2")) () ")")))) (= "=") (identifier "piVar8")) (; ";")) (expression_statement "piVar8 = *(int **)(piVar3 + 6);" (assignment_expression "piVar8 = *(int **)(piVar3 + 6)" (identifier "piVar8") (= "=") (pointer_expression "*(int **)(piVar3 + 6)" (* "*") (cast_expression "(int **)(piVar3 + 6)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(piVar3 + 6)" (( "(") (binary_expression "piVar3 + 6" (identifier "piVar3") (+ "+") (number_literal "6")) () ")"))))) (; ";")) (expression_statement "piVar5 = *(int **)(piVar8 + 6);" (assignment_expression "piVar5 = *(int **)(piVar8 + 6)" (identifier "piVar5") (= "=") (pointer_expression "*(int **)(piVar8 + 6)" (* "*") (cast_expression "(int **)(piVar8 + 6)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(piVar8 + 6)" (( "(") (binary_expression "piVar8 + 6" (identifier "piVar8") (+ "+") (number_literal "6")) () ")"))))) (; ";")) (expression_statement "*piVar8 = *piVar3;" (assignment_expression "*piVar8 = *piVar3" (pointer_expression "*piVar8" (* "*") (identifier "piVar8")) (= "=") (pointer_expression "*piVar3" (* "*") (identifier "piVar3"))) (; ";")) (expression_statement "*piVar3 = 1;" (assignment_expression "*piVar3 = 1" (pointer_expression "*piVar3" (* "*") (identifier "piVar3")) (= "=") (number_literal "1")) (; ";")) (if_statement "if (piVar5 != (int *)0x0) goto LAB_002dc6af;" (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"))) () ")")) (goto_statement "goto LAB_002dc6af;" (goto "goto") (statement_identifier "LAB_002dc6af") (; ";"))) (labeled_statement "LAB_002dc6b5:\n      lVar4 = *(long *)(piVar8 + 4);" (statement_identifier "LAB_002dc6b5") (: ":") (expression_statement "lVar4 = *(long *)(piVar8 + 4);" (assignment_expression "lVar4 = *(long *)(piVar8 + 4)" (identifier "lVar4") (= "=") (pointer_expression "*(long *)(piVar8 + 4)" (* "*") (cast_expression "(long *)(piVar8 + 4)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(piVar8 + 4)" (( "(") (binary_expression "piVar8 + 4" (identifier "piVar8") (+ "+") (number_literal "4")) () ")"))))) (; ";"))) (expression_statement "*(long *)(piVar3 + 6) = lVar4;" (assignment_expression "*(long *)(piVar3 + 6) = lVar4" (pointer_expression "*(long *)(piVar3 + 6)" (* "*") (cast_expression "(long *)(piVar3 + 6)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(piVar3 + 6)" (( "(") (binary_expression "piVar3 + 6" (identifier "piVar3") (+ "+") (number_literal "6")) () ")")))) (= "=") (identifier "lVar4")) (; ";")) (if_statement "if (lVar4 != 0) {\n        *(int **)(lVar4 + 8) = piVar3;\n      }" (if "if") (parenthesized_expression "(lVar4 != 0)" (( "(") (binary_expression "lVar4 != 0" (identifier "lVar4") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n        *(int **)(lVar4 + 8) = piVar3;\n      }" ({ "{") (expression_statement "*(int **)(lVar4 + 8) = piVar3;" (assignment_expression "*(int **)(lVar4 + 8) = piVar3" (pointer_expression "*(int **)(lVar4 + 8)" (* "*") (cast_expression "(int **)(lVar4 + 8)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(lVar4 + 8)" (( "(") (binary_expression "lVar4 + 8" (identifier "lVar4") (+ "+") (number_literal "8")) () ")")))) (= "=") (identifier "piVar3")) (; ";")) (} "}"))) (expression_statement "lVar4 = *(long *)(piVar3 + 2);" (assignment_expression "lVar4 = *(long *)(piVar3 + 2)" (identifier "lVar4") (= "=") (pointer_expression "*(long *)(piVar3 + 2)" (* "*") (cast_expression "(long *)(piVar3 + 2)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(piVar3 + 2)" (( "(") (binary_expression "piVar3 + 2" (identifier "piVar3") (+ "+") (number_literal "2")) () ")"))))) (; ";")) (expression_statement "*(long *)(piVar8 + 2) = lVar4;" (assignment_expression "*(long *)(piVar8 + 2) = lVar4" (pointer_expression "*(long *)(piVar8 + 2)" (* "*") (cast_expression "(long *)(piVar8 + 2)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(piVar8 + 2)" (( "(") (binary_expression "piVar8 + 2" (identifier "piVar8") (+ "+") (number_literal "2")) () ")")))) (= "=") (identifier "lVar4")) (; ";")) (if_statement "if (piVar3 == *(int **)(param_2 + 8)) {\n        *(int **)(param_2 + 8) = piVar8;\n      }\n      else if (piVar3 == *(int **)(lVar4 + 0x10)) {\n        *(int **)(lVar4 + 0x10) = piVar8;\n      }\n      else {\n        *(int **)(lVar4 + 0x18) = piVar8;\n      }" (if "if") (parenthesized_expression "(piVar3 == *(int **)(param_2 + 8))" (( "(") (binary_expression "piVar3 == *(int **)(param_2 + 8)" (identifier "piVar3") (== "==") (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")) () ")"))))) () ")")) (compound_statement "{\n        *(int **)(param_2 + 8) = piVar8;\n      }" ({ "{") (expression_statement "*(int **)(param_2 + 8) = piVar8;" (assignment_expression "*(int **)(param_2 + 8) = piVar8" (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 "piVar8")) (; ";")) (} "}")) (else_clause "else if (piVar3 == *(int **)(lVar4 + 0x10)) {\n        *(int **)(lVar4 + 0x10) = piVar8;\n      }\n      else {\n        *(int **)(lVar4 + 0x18) = piVar8;\n      }" (else "else") (if_statement "if (piVar3 == *(int **)(lVar4 + 0x10)) {\n        *(int **)(lVar4 + 0x10) = piVar8;\n      }\n      else {\n        *(int **)(lVar4 + 0x18) = piVar8;\n      }" (if "if") (parenthesized_expression "(piVar3 == *(int **)(lVar4 + 0x10))" (( "(") (binary_expression "piVar3 == *(int **)(lVar4 + 0x10)" (identifier "piVar3") (== "==") (pointer_expression "*(int **)(lVar4 + 0x10)" (* "*") (cast_expression "(int **)(lVar4 + 0x10)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(lVar4 + 0x10)" (( "(") (binary_expression "lVar4 + 0x10" (identifier "lVar4") (+ "+") (number_literal "0x10")) () ")"))))) () ")")) (compound_statement "{\n        *(int **)(lVar4 + 0x10) = piVar8;\n      }" ({ "{") (expression_statement "*(int **)(lVar4 + 0x10) = piVar8;" (assignment_expression "*(int **)(lVar4 + 0x10) = piVar8" (pointer_expression "*(int **)(lVar4 + 0x10)" (* "*") (cast_expression "(int **)(lVar4 + 0x10)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(lVar4 + 0x10)" (( "(") (binary_expression "lVar4 + 0x10" (identifier "lVar4") (+ "+") (number_literal "0x10")) () ")")))) (= "=") (identifier "piVar8")) (; ";")) (} "}")) (else_clause "else {\n        *(int **)(lVar4 + 0x18) = piVar8;\n      }" (else "else") (compound_statement "{\n        *(int **)(lVar4 + 0x18) = piVar8;\n      }" ({ "{") (expression_statement "*(int **)(lVar4 + 0x18) = piVar8;" (assignment_expression "*(int **)(lVar4 + 0x18) = piVar8" (pointer_expression "*(int **)(lVar4 + 0x18)" (* "*") (cast_expression "(int **)(lVar4 + 0x18)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(lVar4 + 0x18)" (( "(") (binary_expression "lVar4 + 0x18" (identifier "lVar4") (+ "+") (number_literal "0x18")) () ")")))) (= "=") (identifier "piVar8")) (; ";")) (} "}")))))) (expression_statement "*(int **)(piVar8 + 4) = piVar3;" (assignment_expression "*(int **)(piVar8 + 4) = piVar3" (pointer_expression "*(int **)(piVar8 + 4)" (* "*") (cast_expression "(int **)(piVar8 + 4)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(piVar8 + 4)" (( "(") (binary_expression "piVar8 + 4" (identifier "piVar8") (+ "+") (number_literal "4")) () ")")))) (= "=") (identifier "piVar3")) (; ";")) (expression_statement "*(int **)(piVar3 + 2) = piVar8;" (assignment_expression "*(int **)(piVar3 + 2) = piVar8" (pointer_expression "*(int **)(piVar3 + 2)" (* "*") (cast_expression "(int **)(piVar3 + 2)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(piVar3 + 2)" (( "(") (binary_expression "piVar3 + 2" (identifier "piVar3") (+ "+") (number_literal "2")) () ")")))) (= "=") (identifier "piVar8")) (; ";")) (goto_statement "goto LAB_002dc6f0;" (goto "goto") (statement_identifier "LAB_002dc6f0") (; ";")) (} "}"))) (expression_statement "piVar5 = *(int **)(piVar1 + 6);" (assignment_expression "piVar5 = *(int **)(piVar1 + 6)" (identifier "piVar5") (= "=") (pointer_expression "*(int **)(piVar1 + 6)" (* "*") (cast_expression "(int **)(piVar1 + 6)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(piVar1 + 6)" (( "(") (binary_expression "piVar1 + 6" (identifier "piVar1") (+ "+") (number_literal "6")) () ")"))))) (; ";")) (if_statement "if ((piVar5 != (int *)0x0) && (*piVar5 != 1)) {\nLAB_002dc69f:\n      piVar8 = *(int **)(piVar3 + 6);\n      *piVar1 = *piVar3;\n      *piVar3 = 1;\nLAB_002dc6af:\n      *piVar5 = 1;\n      goto LAB_002dc6b5;\n    }" (if "if") (parenthesized_expression "((piVar5 != (int *)0x0) && (*piVar5 != 1))" (( "(") (binary_expression "(piVar5 != (int *)0x0) && (*piVar5 != 1)" (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"))) () ")")) (&& "&&") (parenthesized_expression "(*piVar5 != 1)" (( "(") (binary_expression "*piVar5 != 1" (pointer_expression "*piVar5" (* "*") (identifier "piVar5")) (!= "!=") (number_literal "1")) () ")"))) () ")")) (compound_statement "{\nLAB_002dc69f:\n      piVar8 = *(int **)(piVar3 + 6);\n      *piVar1 = *piVar3;\n      *piVar3 = 1;\nLAB_002dc6af:\n      *piVar5 = 1;\n      goto LAB_002dc6b5;\n    }" ({ "{") (labeled_statement "LAB_002dc69f:\n      piVar8 = *(int **)(piVar3 + 6);" (statement_identifier "LAB_002dc69f") (: ":") (expression_statement "piVar8 = *(int **)(piVar3 + 6);" (assignment_expression "piVar8 = *(int **)(piVar3 + 6)" (identifier "piVar8") (= "=") (pointer_expression "*(int **)(piVar3 + 6)" (* "*") (cast_expression "(int **)(piVar3 + 6)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(piVar3 + 6)" (( "(") (binary_expression "piVar3 + 6" (identifier "piVar3") (+ "+") (number_literal "6")) () ")"))))) (; ";"))) (expression_statement "*piVar1 = *piVar3;" (assignment_expression "*piVar1 = *piVar3" (pointer_expression "*piVar1" (* "*") (identifier "piVar1")) (= "=") (pointer_expression "*piVar3" (* "*") (identifier "piVar3"))) (; ";")) (expression_statement "*piVar3 = 1;" (assignment_expression "*piVar3 = 1" (pointer_expression "*piVar3" (* "*") (identifier "piVar3")) (= "=") (number_literal "1")) (; ";")) (labeled_statement "LAB_002dc6af:\n      *piVar5 = 1;" (statement_identifier "LAB_002dc6af") (: ":") (expression_statement "*piVar5 = 1;" (assignment_expression "*piVar5 = 1" (pointer_expression "*piVar5" (* "*") (identifier "piVar5")) (= "=") (number_literal "1")) (; ";"))) (goto_statement "goto LAB_002dc6b5;" (goto "goto") (statement_identifier "LAB_002dc6b5") (; ";")) (} "}"))) (labeled_statement "LAB_002dc5e8:\n    *piVar1 = 0;" (statement_identifier "LAB_002dc5e8") (: ":") (expression_statement "*piVar1 = 0;" (assignment_expression "*piVar1 = 0" (pointer_expression "*piVar1" (* "*") (identifier "piVar1")) (= "=") (number_literal "0")) (; ";"))) (expression_statement "piVar1 = *(int **)(piVar3 + 2);" (assignment_expression "piVar1 = *(int **)(piVar3 + 2)" (identifier "piVar1") (= "=") (pointer_expression "*(int **)(piVar3 + 2)" (* "*") (cast_expression "(int **)(piVar3 + 2)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(piVar3 + 2)" (( "(") (binary_expression "piVar3 + 2" (identifier "piVar3") (+ "+") (number_literal "2")) () ")"))))) (; ";")) (expression_statement "piVar7 = piVar3;" (assignment_expression "piVar7 = piVar3" (identifier "piVar7") (= "=") (identifier "piVar3")) (; ";")) (} "}")) (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (; ";")) (} "}")))

/* 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_4,type_1 *param_2)

{
  type_2 var_9;
  type_3 var_6;
  type_2 var_1;
  type_2 var_2;
  type_2 p_Var5;
  type_2 var_5;
  type_2 var_3;
  
  var_1 = var_4->_M_left;
  var_2 = var_4->_M_right;
  var_5 = var_2;
  if (var_1 == (type_2)0x0) {
LAB_002dc770:
    var_1 = var_5;
    var_9 = var_4->_M_parent;
    if (var_1 != (type_2)0x0) goto LAB_002dc480;
    var_5 = (type_2)0x0;
  }
  else {
    if (var_2 != (type_2)0x0) {
      do {
        var_3 = var_5;
        var_5 = var_3->_M_left;
      } while (var_3->_M_left != (type_2)0x0);
      var_5 = var_3->_M_right;
      if (var_3 != var_4) {
        var_1->_M_parent = var_3;
        var_3->_M_left = var_1;
        var_9 = var_3;
        if (var_3 != var_2) {
          var_9 = var_3->_M_parent;
          var_1 = var_9;
          if (var_5 != (type_2)0x0) {
            var_5->_M_parent = var_9;
            var_1 = var_3->_M_parent;
          }
          var_1->_M_left = var_5;
          var_3->_M_right = var_2;
          var_4->_M_right->_M_parent = var_3;
        }
        if (param_2->_M_parent == var_4) {
          param_2->_M_parent = var_3;
          var_1 = var_4->_M_parent;
        }
        else {
          var_1 = var_4->_M_parent;
          if (var_1->_M_left == var_4) {
            var_1->_M_left = var_3;
          }
          else {
            var_1->_M_right = var_3;
          }
        }
        var_3->_M_parent = var_1;
        var_6 = var_3->_M_color;
        var_3->_M_color = var_4->_M_color;
        var_4->_M_color = var_6;
        goto LAB_002dc55f;
      }
      goto LAB_002dc770;
    }
    var_9 = var_4->_M_parent;
LAB_002dc480:
    var_1->_M_parent = var_9;
    var_5 = var_1;
  }
  if (param_2->_M_parent == var_4) {
    param_2->_M_parent = var_5;
  }
  else {
    var_1 = var_4->_M_parent;
    if (var_1->_M_left == var_4) {
      var_1->_M_left = var_5;
    }
    else {
      var_1->_M_right = var_5;
    }
  }
  if (param_2->_M_left == var_4) {
    var_1 = var_5;
    if (var_4->_M_right == (type_2)0x0) {
      param_2->_M_left = var_4->_M_parent;
    }
    else {
      do {
        var_2 = var_1;
        var_1 = var_2->_M_left;
      } while (var_1 != (type_2)0x0);
      param_2->_M_left = var_2;
    }
  }
  var_6 = var_4->_M_color;
  if (param_2->_M_right == var_4) {
    var_1 = var_5;
    if (var_4->_M_left == (type_2)0x0) {
      param_2->_M_right = var_4->_M_parent;
    }
    else {
      do {
        var_2 = var_1;
        var_1 = var_2->_M_right;
      } while (var_1 != (type_2)0x0);
      param_2->_M_right = var_2;
    }
  }
LAB_002dc55f:
  if (var_6 == var_7) {
    return;
  }
  do {
    var_1 = var_9;
    if (param_2->_M_parent == var_5) {
LAB_002dc6f0:
      if (var_5 == (type_2)0x0) {
        return;
      }
LAB_002dc6f5:
      var_5->_M_color = var_8;
      return;
    }
    if ((var_5 != (type_2)0x0) && (var_5->_M_color != var_8)) goto LAB_002dc6f5;
    var_2 = var_1->_M_left;
    if (var_2 != var_5) {
      var_3 = var_2->_M_right;
      var_9 = var_2;
      if (var_2->_M_color == var_7) {
        var_2->_M_color = var_8;
        var_1->_M_color = var_7;
        var_1->_M_left = var_3;
        if (var_3 != (type_2)0x0) {
          var_3->_M_parent = var_1;
        }
        var_9 = var_1->_M_parent;
        var_2->_M_parent = var_9;
        if (var_1 == param_2->_M_parent) {
          param_2->_M_parent = var_2;
          var_9 = var_1->_M_left;
        }
        else if (var_1 == var_9->_M_right) {
          var_9->_M_right = var_2;
          var_9 = var_3;
        }
        else {
          var_9->_M_left = var_2;
          var_9 = var_1->_M_left;
        }
        var_2->_M_right = var_1;
        var_3 = var_9->_M_right;
        var_1->_M_parent = var_2;
      }
      if ((var_3 == (type_2)0x0) || (var_3->_M_color == var_8)) {
        var_2 = var_9->_M_left;
        if ((var_2 == (type_2)0x0) || (var_2->_M_color == var_8)) goto LAB_002dc5e8;
LAB_002dc82b:
        p_Var5 = var_1->_M_left;
        var_9->_M_color = var_1->_M_color;
        var_1->_M_color = var_8;
LAB_002dc83b:
        var_2->_M_color = var_8;
      }
      else {
        var_2 = var_9->_M_left;
        if ((var_2 != (type_2)0x0) && (var_2->_M_color != var_8)) goto LAB_002dc82b;
        var_2 = var_3->_M_left;
        var_3->_M_color = var_8;
        var_9->_M_color = var_7;
        var_9->_M_right = var_2;
        if (var_2 != (type_2)0x0) {
          var_2->_M_parent = var_9;
        }
        var_2 = var_9->_M_parent;
        var_3->_M_parent = var_2;
        if (var_9 == param_2->_M_parent) {
          param_2->_M_parent = var_3;
        }
        else if (var_9 == var_2->_M_left) {
          var_2->_M_left = var_3;
        }
        else {
          var_2->_M_right = var_3;
        }
        var_3->_M_left = var_9;
        p_Var5 = var_1->_M_left;
        var_9->_M_parent = var_3;
        var_2 = p_Var5->_M_left;
        p_Var5->_M_color = var_1->_M_color;
        var_1->_M_color = var_8;
        if (var_2 != (type_2)0x0) goto LAB_002dc83b;
      }
      var_2 = p_Var5->_M_right;
      var_1->_M_left = var_2;
      if (var_2 != (type_2)0x0) {
        var_2->_M_parent = var_1;
      }
      var_2 = var_1->_M_parent;
      p_Var5->_M_parent = var_2;
      if (var_1 == param_2->_M_parent) {
        param_2->_M_parent = p_Var5;
      }
      else if (var_1 == var_2->_M_right) {
        var_2->_M_right = p_Var5;
      }
      else {
        var_2->_M_left = p_Var5;
      }
      p_Var5->_M_right = var_1;
      var_1->_M_parent = p_Var5;
      goto LAB_002dc6f0;
    }
    var_2 = var_1->_M_right;
    var_3 = var_2->_M_left;
    var_9 = var_2;
    if (var_2->_M_color == var_7) {
      var_2->_M_color = var_8;
      var_1->_M_color = var_7;
      var_1->_M_right = var_3;
      if (var_3 != (type_2)0x0) {
        var_3->_M_parent = var_1;
      }
      var_9 = var_1->_M_parent;
      var_2->_M_parent = var_9;
      if (var_1 == param_2->_M_parent) {
        param_2->_M_parent = var_2;
        var_9 = var_1->_M_right;
      }
      else if (var_1 == var_9->_M_left) {
        var_9->_M_left = var_2;
        var_9 = var_3;
      }
      else {
        var_9->_M_right = var_2;
        var_9 = var_1->_M_right;
      }
      var_2->_M_left = var_1;
      var_3 = var_9->_M_left;
      var_1->_M_parent = var_2;
    }
    if ((var_3 != (type_2)0x0) && (var_3->_M_color != var_8)) {
      var_2 = var_9->_M_right;
      if ((var_2 != (type_2)0x0) && (var_2->_M_color != var_8)) goto LAB_002dc69f;
      var_2 = var_3->_M_right;
      var_3->_M_color = var_8;
      var_9->_M_color = var_7;
      var_9->_M_left = var_2;
      if (var_2 != (type_2)0x0) {
        var_2->_M_parent = var_9;
      }
      var_2 = var_9->_M_parent;
      var_3->_M_parent = var_2;
      if (var_9 == param_2->_M_parent) {
        param_2->_M_parent = var_3;
      }
      else if (var_9 == var_2->_M_right) {
        var_2->_M_right = var_3;
      }
      else {
        var_2->_M_left = var_3;
      }
      var_3->_M_right = var_9;
      var_9->_M_parent = var_3;
      var_3 = var_1->_M_right;
      var_2 = var_3->_M_right;
      var_3->_M_color = var_1->_M_color;
      var_1->_M_color = var_8;
      if (var_2 != (type_2)0x0) goto LAB_002dc6af;
LAB_002dc6b5:
      var_2 = var_3->_M_left;
      var_1->_M_right = var_2;
      if (var_2 != (type_2)0x0) {
        var_2->_M_parent = var_1;
      }
      var_2 = var_1->_M_parent;
      var_3->_M_parent = var_2;
      if (var_1 == param_2->_M_parent) {
        param_2->_M_parent = var_3;
      }
      else if (var_1 == var_2->_M_left) {
        var_2->_M_left = var_3;
      }
      else {
        var_2->_M_right = var_3;
      }
      var_3->_M_left = var_1;
      var_1->_M_parent = var_3;
      goto LAB_002dc6f0;
    }
    var_2 = var_9->_M_right;
    if ((var_2 != (type_2)0x0) && (var_2->_M_color != var_8)) {
LAB_002dc69f:
      var_3 = var_1->_M_right;
      var_9->_M_color = var_1->_M_color;
      var_1->_M_color = var_8;
LAB_002dc6af:
      var_2->_M_color = var_8;
      goto LAB_002dc6b5;
    }
LAB_002dc5e8:
    var_9->_M_color = var_7;
    var_9 = var_1->_M_parent;
    var_5 = var_1;
  } while( true );
}


(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: (sized_type_specifier) declarator: (identifier)))) body: (compound_statement (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (sized_type_specifier) 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))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (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: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (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: (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)))))))) 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: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (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: (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))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (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: (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: (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))))))))) (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: (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: (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: (pointer_expression argument: (cast_expression type: (type_descriptor type: (sized_type_specifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (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: (pointer_expression argument: (cast_expression type: (type_descriptor type: (sized_type_specifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (sized_type_specifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (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: (pointer_expression argument: (cast_expression type: (type_descriptor type: (sized_type_specifier) 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)))) (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: (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))))))) (labeled_statement label: (statement_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: (identifier) right: (number_literal))))) right: (identifier)))) (expression_statement (assignment_expression left: (identifier) 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)))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (sized_type_specifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (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: (pointer_expression argument: (cast_expression type: (type_descriptor type: (sized_type_specifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))))) 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: (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)))))))) 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: (pointer_expression argument: (cast_expression type: (type_descriptor type: (sized_type_specifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))))) 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: (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)))))))) 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 (return_statement)))) (do_statement body: (compound_statement (expression_statement (assignment_expression left: (identifier) 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 (labeled_statement label: (statement_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 (return_statement)))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (number_literal)))) (return_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: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (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: (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: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (compound_statement (expression_statement (assignment_expression left: (pointer_expression argument: (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: (cast_expression type: (type_descriptor type: (sized_type_specifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (sized_type_specifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (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: (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)))))))) 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: (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)))))))))))) (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: (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))))))) (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: (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: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (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: (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)))))))) (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: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (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: (pointer_expression argument: (cast_expression type: (type_descriptor type: (sized_type_specifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (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: (pointer_expression argument: (cast_expression type: (type_descriptor type: (sized_type_specifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (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: (pointer_expression argument: (cast_expression type: (type_descriptor type: (sized_type_specifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (sized_type_specifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (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: (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: (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))))))) (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: (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))))))) (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: (pointer_expression argument: (cast_expression type: (type_descriptor type: (sized_type_specifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (sized_type_specifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (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: (pointer_expression argument: (cast_expression type: (type_descriptor type: (sized_type_specifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (sized_type_specifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (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: (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: (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))) (goto_statement label: (statement_identifier)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (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: (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: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (compound_statement (expression_statement (assignment_expression left: (pointer_expression argument: (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: (cast_expression type: (type_descriptor type: (sized_type_specifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (sized_type_specifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (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: (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)))))))) 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: (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)))))))))))) (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: (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))))))) (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: (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: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (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: (pointer_expression argument: (cast_expression type: (type_descriptor type: (sized_type_specifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (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: (pointer_expression argument: (cast_expression type: (type_descriptor type: (sized_type_specifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (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: (pointer_expression argument: (cast_expression type: (type_descriptor type: (sized_type_specifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (sized_type_specifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (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: (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: (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: (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))))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (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: (pointer_expression argument: (cast_expression type: (type_descriptor type: (sized_type_specifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (sized_type_specifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (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: (pointer_expression argument: (cast_expression type: (type_descriptor type: (sized_type_specifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (sized_type_specifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (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: (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: (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))) (goto_statement label: (statement_identifier)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (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: (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)))))))) (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: (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))))))) (expression_statement (assignment_expression left: (identifier) right: (identifier)))) condition: (parenthesized_expression (true))))))

void MASKED(int *param_1,long param_2)

{
  int *piVar1;
  int iVar2;
  int *piVar3;
  long lVar4;
  int *piVar5;
  int *piVar6;
  int *piVar7;
  int *piVar8;
  
  piVar3 = *(int **)(param_1 + 4);
  piVar5 = *(int **)(param_1 + 6);
  piVar7 = piVar5;
  if (piVar3 == (int *)0x0) {
LAB_002dc770:
    piVar3 = piVar7;
    piVar1 = *(int **)(param_1 + 2);
    if (piVar3 != (int *)0x0) goto LAB_002dc480;
    piVar7 = (int *)0x0;
  }
  else {
    if (piVar5 != (int *)0x0) {
      do {
        piVar8 = piVar7;
        piVar7 = *(int **)(piVar8 + 4);
      } while (*(int **)(piVar8 + 4) != (int *)0x0);
      piVar7 = *(int **)(piVar8 + 6);
      if (piVar8 != param_1) {
        *(int **)(piVar3 + 2) = piVar8;
        *(int **)(piVar8 + 4) = piVar3;
        piVar1 = piVar8;
        if (piVar8 != piVar5) {
          piVar1 = *(int **)(piVar8 + 2);
          piVar3 = piVar1;
          if (piVar7 != (int *)0x0) {
            *(int **)(piVar7 + 2) = piVar1;
            piVar3 = *(int **)(piVar8 + 2);
          }
          *(int **)(piVar3 + 4) = piVar7;
          *(int **)(piVar8 + 6) = piVar5;
          *(int **)(*(long *)(param_1 + 6) + 8) = piVar8;
        }
        if (*(int **)(param_2 + 8) == param_1) {
          *(int **)(param_2 + 8) = piVar8;
          lVar4 = *(long *)(param_1 + 2);
        }
        else {
          lVar4 = *(long *)(param_1 + 2);
          if (*(int **)(lVar4 + 0x10) == param_1) {
            *(int **)(lVar4 + 0x10) = piVar8;
          }
          else {
            *(int **)(lVar4 + 0x18) = piVar8;
          }
        }
        *(long *)(piVar8 + 2) = lVar4;
        iVar2 = *piVar8;
        *piVar8 = *param_1;
        *param_1 = iVar2;
        goto LAB_002dc55f;
      }
      goto LAB_002dc770;
    }
    piVar1 = *(int **)(param_1 + 2);
LAB_002dc480:
    *(int **)(piVar3 + 2) = piVar1;
    piVar7 = piVar3;
  }
  if (*(int **)(param_2 + 8) == param_1) {
    *(int **)(param_2 + 8) = piVar7;
  }
  else {
    lVar4 = *(long *)(param_1 + 2);
    if (*(int **)(lVar4 + 0x10) == param_1) {
      *(int **)(lVar4 + 0x10) = piVar7;
    }
    else {
      *(int **)(lVar4 + 0x18) = piVar7;
    }
  }
  if (*(int **)(param_2 + 0x10) == param_1) {
    piVar3 = piVar7;
    if (*(long *)(param_1 + 6) == 0) {
      *(undefined8 *)(param_2 + 0x10) = *(undefined8 *)(param_1 + 2);
    }
    else {
      do {
        piVar5 = piVar3;
        piVar3 = *(int **)(piVar5 + 4);
      } while (piVar3 != (int *)0x0);
      *(int **)(param_2 + 0x10) = piVar5;
    }
  }
  iVar2 = *param_1;
  if (*(int **)(param_2 + 0x18) == param_1) {
    piVar3 = piVar7;
    if (*(long *)(param_1 + 4) == 0) {
      *(undefined8 *)(param_2 + 0x18) = *(undefined8 *)(param_1 + 2);
    }
    else {
      do {
        piVar5 = piVar3;
        piVar3 = *(int **)(piVar5 + 6);
      } while (piVar3 != (int *)0x0);
      *(int **)(param_2 + 0x18) = piVar5;
    }
  }
LAB_002dc55f:
  if (iVar2 == 0) {
    return;
  }
  do {
    piVar3 = piVar1;
    if (*(int **)(param_2 + 8) == piVar7) {
LAB_002dc6f0:
      if (piVar7 == (int *)0x0) {
        return;
      }
LAB_002dc6f5:
      *piVar7 = 1;
      return;
    }
    if ((piVar7 != (int *)0x0) && (*piVar7 != 1)) goto LAB_002dc6f5;
    piVar5 = *(int **)(piVar3 + 4);
    if (piVar5 != piVar7) {
      piVar8 = *(int **)(piVar5 + 6);
      piVar1 = piVar5;
      if (*piVar5 == 0) {
        *piVar5 = 1;
        *piVar3 = 0;
        *(int **)(piVar3 + 4) = piVar8;
        if (piVar8 != (int *)0x0) {
          *(int **)(piVar8 + 2) = piVar3;
        }
        lVar4 = *(long *)(piVar3 + 2);
        *(long *)(piVar5 + 2) = lVar4;
        if (piVar3 == *(int **)(param_2 + 8)) {
          *(int **)(param_2 + 8) = piVar5;
          piVar1 = *(int **)(piVar3 + 4);
        }
        else if (piVar3 == *(int **)(lVar4 + 0x18)) {
          *(int **)(lVar4 + 0x18) = piVar5;
          piVar1 = piVar8;
        }
        else {
          *(int **)(lVar4 + 0x10) = piVar5;
          piVar1 = *(int **)(piVar3 + 4);
        }
        *(int **)(piVar5 + 6) = piVar3;
        piVar8 = *(int **)(piVar1 + 6);
        *(int **)(piVar3 + 2) = piVar5;
      }
      if ((piVar8 == (int *)0x0) || (*piVar8 == 1)) {
        piVar5 = *(int **)(piVar1 + 4);
        if ((piVar5 == (int *)0x0) || (*piVar5 == 1)) goto LAB_002dc5e8;
LAB_002dc82b:
        piVar6 = *(int **)(piVar3 + 4);
        *piVar1 = *piVar3;
        *piVar3 = 1;
LAB_002dc83b:
        *piVar5 = 1;
      }
      else {
        piVar5 = *(int **)(piVar1 + 4);
        if ((piVar5 != (int *)0x0) && (*piVar5 != 1)) goto LAB_002dc82b;
        lVar4 = *(long *)(piVar8 + 4);
        *piVar8 = 1;
        *piVar1 = 0;
        *(long *)(piVar1 + 6) = lVar4;
        if (lVar4 != 0) {
          *(int **)(lVar4 + 8) = piVar1;
        }
        lVar4 = *(long *)(piVar1 + 2);
        *(long *)(piVar8 + 2) = lVar4;
        if (piVar1 == *(int **)(param_2 + 8)) {
          *(int **)(param_2 + 8) = piVar8;
        }
        else if (piVar1 == *(int **)(lVar4 + 0x10)) {
          *(int **)(lVar4 + 0x10) = piVar8;
        }
        else {
          *(int **)(lVar4 + 0x18) = piVar8;
        }
        *(int **)(piVar8 + 4) = piVar1;
        piVar6 = *(int **)(piVar3 + 4);
        *(int **)(piVar1 + 2) = piVar8;
        piVar5 = *(int **)(piVar6 + 4);
        *piVar6 = *piVar3;
        *piVar3 = 1;
        if (piVar5 != (int *)0x0) goto LAB_002dc83b;
      }
      lVar4 = *(long *)(piVar6 + 6);
      *(long *)(piVar3 + 4) = lVar4;
      if (lVar4 != 0) {
        *(int **)(lVar4 + 8) = piVar3;
      }
      lVar4 = *(long *)(piVar3 + 2);
      *(long *)(piVar6 + 2) = lVar4;
      if (piVar3 == *(int **)(param_2 + 8)) {
        *(int **)(param_2 + 8) = piVar6;
      }
      else if (piVar3 == *(int **)(lVar4 + 0x18)) {
        *(int **)(lVar4 + 0x18) = piVar6;
      }
      else {
        *(int **)(lVar4 + 0x10) = piVar6;
      }
      *(int **)(piVar6 + 6) = piVar3;
      *(int **)(piVar3 + 2) = piVar6;
      goto LAB_002dc6f0;
    }
    piVar5 = *(int **)(piVar3 + 6);
    piVar8 = *(int **)(piVar5 + 4);
    piVar1 = piVar5;
    if (*piVar5 == 0) {
      *piVar5 = 1;
      *piVar3 = 0;
      *(int **)(piVar3 + 6) = piVar8;
      if (piVar8 != (int *)0x0) {
        *(int **)(piVar8 + 2) = piVar3;
      }
      lVar4 = *(long *)(piVar3 + 2);
      *(long *)(piVar5 + 2) = lVar4;
      if (piVar3 == *(int **)(param_2 + 8)) {
        *(int **)(param_2 + 8) = piVar5;
        piVar1 = *(int **)(piVar3 + 6);
      }
      else if (piVar3 == *(int **)(lVar4 + 0x10)) {
        *(int **)(lVar4 + 0x10) = piVar5;
        piVar1 = piVar8;
      }
      else {
        *(int **)(lVar4 + 0x18) = piVar5;
        piVar1 = *(int **)(piVar3 + 6);
      }
      *(int **)(piVar5 + 4) = piVar3;
      piVar8 = *(int **)(piVar1 + 4);
      *(int **)(piVar3 + 2) = piVar5;
    }
    if ((piVar8 != (int *)0x0) && (*piVar8 != 1)) {
      piVar5 = *(int **)(piVar1 + 6);
      if ((piVar5 != (int *)0x0) && (*piVar5 != 1)) goto LAB_002dc69f;
      lVar4 = *(long *)(piVar8 + 6);
      *piVar8 = 1;
      *piVar1 = 0;
      *(long *)(piVar1 + 4) = lVar4;
      if (lVar4 != 0) {
        *(int **)(lVar4 + 8) = piVar1;
      }
      lVar4 = *(long *)(piVar1 + 2);
      *(long *)(piVar8 + 2) = lVar4;
      if (piVar1 == *(int **)(param_2 + 8)) {
        *(int **)(param_2 + 8) = piVar8;
      }
      else if (piVar1 == *(int **)(lVar4 + 0x18)) {
        *(int **)(lVar4 + 0x18) = piVar8;
      }
      else {
        *(int **)(lVar4 + 0x10) = piVar8;
      }
      *(int **)(piVar8 + 6) = piVar1;
      *(int **)(piVar1 + 2) = piVar8;
      piVar8 = *(int **)(piVar3 + 6);
      piVar5 = *(int **)(piVar8 + 6);
      *piVar8 = *piVar3;
      *piVar3 = 1;
      if (piVar5 != (int *)0x0) goto LAB_002dc6af;
LAB_002dc6b5:
      lVar4 = *(long *)(piVar8 + 4);
      *(long *)(piVar3 + 6) = lVar4;
      if (lVar4 != 0) {
        *(int **)(lVar4 + 8) = piVar3;
      }
      lVar4 = *(long *)(piVar3 + 2);
      *(long *)(piVar8 + 2) = lVar4;
      if (piVar3 == *(int **)(param_2 + 8)) {
        *(int **)(param_2 + 8) = piVar8;
      }
      else if (piVar3 == *(int **)(lVar4 + 0x10)) {
        *(int **)(lVar4 + 0x10) = piVar8;
      }
      else {
        *(int **)(lVar4 + 0x18) = piVar8;
      }
      *(int **)(piVar8 + 4) = piVar3;
      *(int **)(piVar3 + 2) = piVar8;
      goto LAB_002dc6f0;
    }
    piVar5 = *(int **)(piVar1 + 6);
    if ((piVar5 != (int *)0x0) && (*piVar5 != 1)) {
LAB_002dc69f:
      piVar8 = *(int **)(piVar3 + 6);
      *piVar1 = *piVar3;
      *piVar3 = 1;
LAB_002dc6af:
      *piVar5 = 1;
      goto LAB_002dc6b5;
    }
LAB_002dc5e8:
    *piVar1 = 0;
    piVar1 = *(int **)(piVar3 + 2);
    piVar7 = piVar3;
  } while( true );
}

