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

void std::_Rb_tree_insert_and_rebalance
               (bool param_1,_Rb_tree_node_base *param_2,_Rb_tree_node_base *param_3,
               _Rb_tree_node_base *param_4)

{
  _Base_ptr p_Var1;
  _Rb_tree_node_base *p_Var2;
  _Rb_tree_node_base *p_Var3;
  _Rb_tree_node_base *p_Var4;
  _Base_ptr p_Var5;
  _Base_ptr p_Var6;
  _Rb_tree_node_base *p_Var7;
  
  param_2->_M_parent = param_3;
  param_2->_M_left = (_Base_ptr)0x0;
  param_2->_M_right = (_Base_ptr)0x0;
  param_2->_M_color = _S_red;
  if (param_1) {
    param_3->_M_left = param_2;
    if (param_4 == param_3) {
      param_4->_M_parent = param_2;
      param_4->_M_right = param_2;
      param_2->_M_color = _S_black;
      return;
    }
    if (param_4->_M_left == param_3) {
      param_4->_M_left = param_2;
      p_Var7 = param_4->_M_parent;
      goto joined_r0x001fe792;
    }
  }
  else {
    param_3->_M_right = param_2;
    if (param_4->_M_right == param_3) {
      param_4->_M_right = param_2;
    }
  }
  p_Var7 = param_4->_M_parent;
joined_r0x001fe792:
  do {
    while( true ) {
      while( true ) {
        if ((param_2 == p_Var7) || (p_Var4 = param_2->_M_parent, p_Var4->_M_color != _S_red)) {
          p_Var7->_M_color = _S_black;
          return;
        }
        p_Var1 = p_Var4->_M_parent;
        p_Var2 = p_Var1->_M_left;
        if (p_Var4 == p_Var2) break;
        if ((p_Var2 == (_Rb_tree_node_base *)0x0) || (p_Var2->_M_color != _S_red)) {
          p_Var2 = param_2;
          if (p_Var4->_M_left == param_2) {
            p_Var6 = param_2->_M_right;
            p_Var4->_M_left = p_Var6;
            p_Var5 = p_Var1;
            if (p_Var6 != (_Base_ptr)0x0) {
              p_Var6->_M_parent = p_Var4;
              p_Var5 = p_Var4->_M_parent;
            }
            param_2->_M_parent = p_Var5;
            if (p_Var4 == param_4->_M_parent) {
              param_4->_M_parent = param_2;
            }
            else if (p_Var4 == p_Var5->_M_right) {
              p_Var5->_M_right = param_2;
            }
            else {
              p_Var5->_M_left = param_2;
            }
            param_2->_M_right = p_Var4;
            p_Var4->_M_parent = param_2;
            p_Var2 = p_Var4;
            p_Var4 = param_2;
          }
          p_Var4->_M_color = _S_black;
          p_Var6 = p_Var1->_M_right;
          p_Var1->_M_color = _S_red;
          p_Var5 = p_Var6->_M_left;
          p_Var1->_M_right = p_Var5;
          if (p_Var5 != (_Base_ptr)0x0) {
            p_Var5->_M_parent = p_Var1;
          }
          p_Var5 = p_Var1->_M_parent;
          p_Var6->_M_parent = p_Var5;
          if (p_Var1 == param_4->_M_parent) {
            param_4->_M_parent = p_Var6;
          }
          else if (p_Var1 == p_Var5->_M_left) {
            p_Var5->_M_left = p_Var6;
          }
          else {
            p_Var5->_M_right = p_Var6;
          }
          p_Var6->_M_left = p_Var1;
          p_Var1->_M_parent = p_Var6;
          p_Var7 = param_4->_M_parent;
          param_2 = p_Var2;
        }
        else {
          p_Var4->_M_color = _S_black;
          p_Var2->_M_color = _S_black;
          p_Var1->_M_color = _S_red;
          param_2 = p_Var1;
        }
      }
      p_Var6 = p_Var1->_M_right;
      if ((p_Var6 == (_Base_ptr)0x0) || (p_Var6->_M_color != _S_red)) break;
      p_Var4->_M_color = _S_black;
      p_Var6->_M_color = _S_black;
      p_Var1->_M_color = _S_red;
      param_2 = p_Var1;
    }
    p_Var3 = param_2;
    if (p_Var4->_M_right == param_2) {
      p_Var6 = param_2->_M_left;
      p_Var4->_M_right = p_Var6;
      if (p_Var6 == (_Base_ptr)0x0) {
        param_2->_M_parent = p_Var1;
        p_Var6 = p_Var1;
        if (p_Var4 == param_4->_M_parent) goto LAB_001fe9e0;
LAB_001fe9d2:
        p_Var6->_M_left = param_2;
      }
      else {
        p_Var6->_M_parent = p_Var4;
        p_Var6 = p_Var4->_M_parent;
        param_2->_M_parent = p_Var6;
        if (p_Var4 == param_4->_M_parent) {
LAB_001fe9e0:
          param_4->_M_parent = param_2;
        }
        else {
          if (p_Var4 == p_Var6->_M_left) goto LAB_001fe9d2;
          p_Var6->_M_right = param_2;
        }
      }
      param_2->_M_left = p_Var4;
      p_Var2 = p_Var1->_M_left;
      p_Var4->_M_parent = param_2;
      p_Var3 = p_Var4;
      p_Var4 = param_2;
    }
    p_Var4->_M_color = _S_black;
    p_Var6 = p_Var2->_M_right;
    p_Var1->_M_color = _S_red;
    p_Var1->_M_left = p_Var6;
    if (p_Var6 != (_Base_ptr)0x0) {
      p_Var6->_M_parent = p_Var1;
    }
    p_Var6 = p_Var1->_M_parent;
    p_Var2->_M_parent = p_Var6;
    if (p_Var1 == param_4->_M_parent) {
      param_4->_M_parent = p_Var2;
    }
    else if (p_Var1 == p_Var6->_M_right) {
      p_Var6->_M_right = p_Var2;
    }
    else {
      p_Var6->_M_left = p_Var2;
    }
    p_Var2->_M_right = p_Var1;
    p_Var1->_M_parent = p_Var2;
    p_Var7 = param_4->_M_parent;
    param_2 = p_Var3;
  } while( true );
}



void FUN_001fe740(char param_1,int *param_2,int param_3,int param_4)

{
  int *piVar1;
  int iVar2;
  int iVar3;
  int *piVar4;
  int *piVar5;
  int *piVar6;
  int *piVar7;
  
  param_2[1] = param_3;
  param_2[2] = 0;
  param_2[3] = 0;
  *param_2 = 0;
  if (param_1 == '\0') {
    *(int **)(param_3 + 0xc) = param_2;
    if (*(int *)(param_4 + 0xc) == param_3) {
      *(int **)(param_4 + 0xc) = param_2;
    }
  }
  else {
    *(int **)(param_3 + 8) = param_2;
    if (param_4 == param_3) {
      *(int **)(param_4 + 4) = param_2;
      *(int **)(param_4 + 0xc) = param_2;
      *param_2 = 1;
      return;
    }
    if (*(int *)(param_4 + 8) == param_3) {
      *(int **)(param_4 + 8) = param_2;
      piVar7 = *(int **)(param_4 + 4);
      goto joined_r0x001fe792;
    }
  }
  piVar7 = *(int **)(param_4 + 4);
joined_r0x001fe792:
  do {
    while( true ) {
      while( true ) {
        if ((param_2 == piVar7) || (piVar6 = (int *)param_2[1], *piVar6 != 0)) {
          *piVar7 = 1;
          return;
        }
        piVar1 = (int *)piVar6[1];
        piVar4 = (int *)piVar1[2];
        if (piVar6 == piVar4) break;
        if ((piVar4 == (int *)0x0) || (*piVar4 != 0)) {
          piVar4 = param_2;
          if ((int *)piVar6[2] == param_2) {
            iVar2 = param_2[3];
            piVar6[2] = iVar2;
            piVar7 = piVar1;
            if (iVar2 != 0) {
              *(int **)(iVar2 + 4) = piVar6;
              piVar7 = (int *)piVar6[1];
            }
            param_2[1] = (int)piVar7;
            if (piVar6 == *(int **)(param_4 + 4)) {
              *(int **)(param_4 + 4) = param_2;
            }
            else if (piVar6 == (int *)piVar7[3]) {
              piVar7[3] = (int)param_2;
            }
            else {
              piVar7[2] = (int)param_2;
            }
            param_2[3] = (int)piVar6;
            piVar6[1] = (int)param_2;
            piVar4 = piVar6;
            piVar6 = param_2;
          }
          *piVar6 = 1;
          iVar2 = piVar1[3];
          *piVar1 = 0;
          iVar3 = *(int *)(iVar2 + 8);
          piVar1[3] = iVar3;
          if (iVar3 != 0) {
            *(int **)(iVar3 + 4) = piVar1;
          }
          iVar3 = piVar1[1];
          *(int *)(iVar2 + 4) = iVar3;
          if (piVar1 == *(int **)(param_4 + 4)) {
            *(int *)(param_4 + 4) = iVar2;
          }
          else if (piVar1 == *(int **)(iVar3 + 8)) {
            *(int *)(iVar3 + 8) = iVar2;
          }
          else {
            *(int *)(iVar3 + 0xc) = iVar2;
          }
          *(int **)(iVar2 + 8) = piVar1;
          piVar1[1] = iVar2;
          piVar7 = *(int **)(param_4 + 4);
          param_2 = piVar4;
        }
        else {
          *piVar6 = 1;
          *piVar4 = 1;
          *piVar1 = 0;
          param_2 = piVar1;
        }
      }
      piVar5 = (int *)piVar1[3];
      if ((piVar5 == (int *)0x0) || (*piVar5 != 0)) break;
      *piVar6 = 1;
      *piVar5 = 1;
      *piVar1 = 0;
      param_2 = piVar1;
    }
    piVar5 = param_2;
    if ((int *)piVar6[3] == param_2) {
      iVar2 = param_2[2];
      piVar6[3] = iVar2;
      if (iVar2 == 0) {
        param_2[1] = (int)piVar1;
        piVar7 = piVar1;
        if (piVar6 == *(int **)(param_4 + 4)) goto LAB_001fe9e0;
LAB_001fe9d2:
        piVar7[2] = (int)param_2;
      }
      else {
        *(int **)(iVar2 + 4) = piVar6;
        piVar7 = (int *)piVar6[1];
        param_2[1] = (int)piVar7;
        if (piVar6 == *(int **)(param_4 + 4)) {
LAB_001fe9e0:
          *(int **)(param_4 + 4) = param_2;
        }
        else {
          if (piVar6 == (int *)piVar7[2]) goto LAB_001fe9d2;
          piVar7[3] = (int)param_2;
        }
      }
      param_2[2] = (int)piVar6;
      piVar4 = (int *)piVar1[2];
      piVar6[1] = (int)param_2;
      piVar5 = piVar6;
      piVar6 = param_2;
    }
    *piVar6 = 1;
    iVar2 = piVar4[3];
    *piVar1 = 0;
    piVar1[2] = iVar2;
    if (iVar2 != 0) {
      *(int **)(iVar2 + 4) = piVar1;
    }
    iVar2 = piVar1[1];
    piVar4[1] = iVar2;
    if (piVar1 == *(int **)(param_4 + 4)) {
      *(int **)(param_4 + 4) = piVar4;
    }
    else if (piVar1 == *(int **)(iVar2 + 0xc)) {
      *(int **)(iVar2 + 0xc) = piVar4;
    }
    else {
      *(int **)(iVar2 + 8) = piVar4;
    }
    piVar4[3] = (int)piVar1;
    piVar1[1] = (int)piVar4;
    piVar7 = *(int **)(param_4 + 4);
    param_2 = piVar5;
  } while( true );
}


PUSH EBP
PUSH EDI
PUSH ESI
PUSH EBX
MOV EDX,dword ptr [ESP + 0x14]
MOV ECX,dword ptr [ESP + 0x18]
MOV EAX,dword ptr [ESP + 0x1c]
MOV ESI,dword ptr [ESP + 0x20]
MOV dword ptr [ECX + 0x4],EAX
MOV dword ptr [ECX + 0x8],0x0
MOV dword ptr [ECX + 0xc],0x0
MOV dword ptr [ECX],0x0
TEST DL,DL
JZ 0x001fe7e0
MOV dword ptr [EAX + 0x8],ECX
CMP ESI,EAX
JZ 0x001fe9a0
CMP dword ptr [ESI + 0x8],EAX
JZ 0x001fe9b8
MOV EDI,dword ptr [ESI + 0x4]
LEA ESI,[ESI]
LEA ESI,[ESI]
CMP ECX,EDI
JZ 0x001fe7cd
MOV EDX,dword ptr [ECX + 0x4]
MOV EAX,dword ptr [EDX]
TEST EAX,EAX
JNZ 0x001fe7cd
MOV EAX,dword ptr [EDX + 0x4]
MOV EBX,dword ptr [EAX + 0x8]
CMP EDX,EBX
JZ 0x001fe840
TEST EBX,EBX
JZ 0x001fe7f0
MOV EBP,dword ptr [EBX]
TEST EBP,EBP
JNZ 0x001fe7f0
MOV ECX,EAX
MOV dword ptr [EDX],0x1
MOV dword ptr [EBX],0x1
MOV dword ptr [EAX],0x0
CMP ECX,EDI
JNZ 0x001fe794
MOV dword ptr [EDI],0x1
POP EBX
POP ESI
POP EDI
POP EBP
RET
MOV dword ptr [EAX + 0xc],ECX
CMP dword ptr [ESI + 0xc],EAX
JNZ 0x001fe783
MOV dword ptr [ESI + 0xc],ECX
JMP 0x001fe783
CMP dword ptr [EDX + 0x8],ECX
JZ 0x001fe8c0
MOV dword ptr [EDX],0x1
MOV EDX,dword ptr [EAX + 0xc]
MOV dword ptr [EAX],0x0
MOV EBX,dword ptr [EDX + 0x8]
MOV dword ptr [EAX + 0xc],EBX
TEST EBX,EBX
JZ 0x001fe815
MOV dword ptr [EBX + 0x4],EAX
MOV EBX,dword ptr [EAX + 0x4]
MOV dword ptr [EDX + 0x4],EBX
CMP EAX,dword ptr [ESI + 0x4]
JZ 0x001fe900
CMP EAX,dword ptr [EBX + 0x8]
JZ 0x001fe910
MOV dword ptr [EBX + 0xc],EDX
MOV dword ptr [EDX + 0x8],EAX
MOV dword ptr [EAX + 0x4],EDX
MOV EDI,dword ptr [ESI + 0x4]
JMP 0x001fe790
MOV EBP,dword ptr [EAX + 0xc]
TEST EBP,EBP
JZ 0x001fe870
CMP dword ptr [EBP],0x0
JNZ 0x001fe870
MOV dword ptr [EDX],0x1
MOV ECX,EAX
MOV dword ptr [EBP],0x1
MOV dword ptr [EAX],0x0
JMP 0x001fe790
CMP dword ptr [EDX + 0xc],ECX
JZ 0x001fe920
MOV dword ptr [EDX],0x1
MOV EDX,dword ptr [EBX + 0xc]
MOV dword ptr [EAX],0x0
MOV dword ptr [EAX + 0x8],EDX
TEST EDX,EDX
JZ 0x001fe892
MOV dword ptr [EDX + 0x4],EAX
MOV EDX,dword ptr [EAX + 0x4]
MOV dword ptr [EBX + 0x4],EDX
CMP EAX,dword ptr [ESI + 0x4]
JZ 0x001fe960
CMP EAX,dword ptr [EDX + 0xc]
JZ 0x001fe970
MOV dword ptr [EDX + 0x8],EBX
MOV dword ptr [EBX + 0xc],EAX
MOV dword ptr [EAX + 0x4],EBX
MOV EDI,dword ptr [ESI + 0x4]
JMP 0x001fe790
MOV EDI,dword ptr [ECX + 0xc]
MOV EBX,EAX
MOV dword ptr [EDX + 0x8],EDI
TEST EDI,EDI
JZ 0x001fe8d2
MOV dword ptr [EDI + 0x4],EDX
MOV EBX,dword ptr [EDX + 0x4]
MOV dword ptr [ECX + 0x4],EBX
CMP EDX,dword ptr [ESI + 0x4]
JZ 0x001fe980
CMP EDX,dword ptr [EBX + 0xc]
JZ 0x001fe990
MOV dword ptr [EBX + 0x8],ECX
MOV EBX,ECX
MOV dword ptr [ECX + 0xc],EDX
MOV dword ptr [EDX + 0x4],ECX
MOV ECX,EDX
MOV EDX,EBX
JMP 0x001fe7f9
MOV dword ptr [ESI + 0x4],EDX
JMP 0x001fe830
MOV dword ptr [EBX + 0x8],EDX
JMP 0x001fe830
MOV EBX,dword ptr [ECX + 0x8]
MOV dword ptr [EDX + 0xc],EBX
TEST EBX,EBX
JZ 0x001fe9c8
MOV dword ptr [EBX + 0x4],EDX
MOV EBX,dword ptr [EDX + 0x4]
MOV dword ptr [ECX + 0x4],EBX
CMP EDX,dword ptr [ESI + 0x4]
JZ 0x001fe9e0
CMP EDX,dword ptr [EBX + 0x8]
JZ 0x001fe9d2
MOV dword ptr [EBX + 0xc],ECX
MOV EDI,ECX
MOV dword ptr [ECX + 0x8],EDX
MOV EBX,dword ptr [EAX + 0x8]
MOV dword ptr [EDX + 0x4],ECX
MOV ECX,EDX
MOV EDX,EDI
JMP 0x001fe879
MOV dword ptr [ESI + 0x4],EBX
JMP 0x001fe8ad
MOV dword ptr [EDX + 0xc],EBX
JMP 0x001fe8ad
MOV dword ptr [ESI + 0x4],ECX
JMP 0x001fe8ea
MOV dword ptr [EBX + 0xc],ECX
JMP 0x001fe8ea
MOV EDI,ECX
MOV dword ptr [ESI + 0x4],ECX
MOV dword ptr [ESI + 0xc],ECX
MOV dword ptr [EDI],0x1
POP EBX
POP ESI
POP EDI
POP EBP
RET
MOV dword ptr [ESI + 0x8],ECX
MOV EDI,dword ptr [ESI + 0x4]
JMP 0x001fe790
MOV dword ptr [ECX + 0x4],EAX
MOV EBX,EAX
CMP EDX,dword ptr [ESI + 0x4]
JZ 0x001fe9e0
MOV dword ptr [EBX + 0x8],ECX
JMP 0x001fe94c
MOV dword ptr [ESI + 0x4],ECX
JMP 0x001fe94c
(translation_unit "void FUN_001fe740(char param_1,int *param_2,int param_3,int param_4)\n\n{\n  int *piVar1;\n  int iVar2;\n  int iVar3;\n  int *piVar4;\n  int *piVar5;\n  int *piVar6;\n  int *piVar7;\n  \n  param_2[1] = param_3;\n  param_2[2] = 0;\n  param_2[3] = 0;\n  *param_2 = 0;\n  if (param_1 == '\0') {\n    *(int **)(param_3 + 0xc) = param_2;\n    if (*(int *)(param_4 + 0xc) == param_3) {\n      *(int **)(param_4 + 0xc) = param_2;\n    }\n  }\n  else {\n    *(int **)(param_3 + 8) = param_2;\n    if (param_4 == param_3) {\n      *(int **)(param_4 + 4) = param_2;\n      *(int **)(param_4 + 0xc) = param_2;\n      *param_2 = 1;\n      return;\n    }\n    if (*(int *)(param_4 + 8) == param_3) {\n      *(int **)(param_4 + 8) = param_2;\n      piVar7 = *(int **)(param_4 + 4);\n      goto joined_r0x001fe792;\n    }\n  }\n  piVar7 = *(int **)(param_4 + 4);\njoined_r0x001fe792:\n  do {\n    while( true ) {\n      while( true ) {\n        if ((param_2 == piVar7) || (piVar6 = (int *)param_2[1], *piVar6 != 0)) {\n          *piVar7 = 1;\n          return;\n        }\n        piVar1 = (int *)piVar6[1];\n        piVar4 = (int *)piVar1[2];\n        if (piVar6 == piVar4) break;\n        if ((piVar4 == (int *)0x0) || (*piVar4 != 0)) {\n          piVar4 = param_2;\n          if ((int *)piVar6[2] == param_2) {\n            iVar2 = param_2[3];\n            piVar6[2] = iVar2;\n            piVar7 = piVar1;\n            if (iVar2 != 0) {\n              *(int **)(iVar2 + 4) = piVar6;\n              piVar7 = (int *)piVar6[1];\n            }\n            param_2[1] = (int)piVar7;\n            if (piVar6 == *(int **)(param_4 + 4)) {\n              *(int **)(param_4 + 4) = param_2;\n            }\n            else if (piVar6 == (int *)piVar7[3]) {\n              piVar7[3] = (int)param_2;\n            }\n            else {\n              piVar7[2] = (int)param_2;\n            }\n            param_2[3] = (int)piVar6;\n            piVar6[1] = (int)param_2;\n            piVar4 = piVar6;\n            piVar6 = param_2;\n          }\n          *piVar6 = 1;\n          iVar2 = piVar1[3];\n          *piVar1 = 0;\n          iVar3 = *(int *)(iVar2 + 8);\n          piVar1[3] = iVar3;\n          if (iVar3 != 0) {\n            *(int **)(iVar3 + 4) = piVar1;\n          }\n          iVar3 = piVar1[1];\n          *(int *)(iVar2 + 4) = iVar3;\n          if (piVar1 == *(int **)(param_4 + 4)) {\n            *(int *)(param_4 + 4) = iVar2;\n          }\n          else if (piVar1 == *(int **)(iVar3 + 8)) {\n            *(int *)(iVar3 + 8) = iVar2;\n          }\n          else {\n            *(int *)(iVar3 + 0xc) = iVar2;\n          }\n          *(int **)(iVar2 + 8) = piVar1;\n          piVar1[1] = iVar2;\n          piVar7 = *(int **)(param_4 + 4);\n          param_2 = piVar4;\n        }\n        else {\n          *piVar6 = 1;\n          *piVar4 = 1;\n          *piVar1 = 0;\n          param_2 = piVar1;\n        }\n      }\n      piVar5 = (int *)piVar1[3];\n      if ((piVar5 == (int *)0x0) || (*piVar5 != 0)) break;\n      *piVar6 = 1;\n      *piVar5 = 1;\n      *piVar1 = 0;\n      param_2 = piVar1;\n    }\n    piVar5 = param_2;\n    if ((int *)piVar6[3] == param_2) {\n      iVar2 = param_2[2];\n      piVar6[3] = iVar2;\n      if (iVar2 == 0) {\n        param_2[1] = (int)piVar1;\n        piVar7 = piVar1;\n        if (piVar6 == *(int **)(param_4 + 4)) goto LAB_001fe9e0;\nLAB_001fe9d2:\n        piVar7[2] = (int)param_2;\n      }\n      else {\n        *(int **)(iVar2 + 4) = piVar6;\n        piVar7 = (int *)piVar6[1];\n        param_2[1] = (int)piVar7;\n        if (piVar6 == *(int **)(param_4 + 4)) {\nLAB_001fe9e0:\n          *(int **)(param_4 + 4) = param_2;\n        }\n        else {\n          if (piVar6 == (int *)piVar7[2]) goto LAB_001fe9d2;\n          piVar7[3] = (int)param_2;\n        }\n      }\n      param_2[2] = (int)piVar6;\n      piVar4 = (int *)piVar1[2];\n      piVar6[1] = (int)param_2;\n      piVar5 = piVar6;\n      piVar6 = param_2;\n    }\n    *piVar6 = 1;\n    iVar2 = piVar4[3];\n    *piVar1 = 0;\n    piVar1[2] = iVar2;\n    if (iVar2 != 0) {\n      *(int **)(iVar2 + 4) = piVar1;\n    }\n    iVar2 = piVar1[1];\n    piVar4[1] = iVar2;\n    if (piVar1 == *(int **)(param_4 + 4)) {\n      *(int **)(param_4 + 4) = piVar4;\n    }\n    else if (piVar1 == *(int **)(iVar2 + 0xc)) {\n      *(int **)(iVar2 + 0xc) = piVar4;\n    }\n    else {\n      *(int **)(iVar2 + 8) = piVar4;\n    }\n    piVar4[3] = (int)piVar1;\n    piVar1[1] = (int)piVar4;\n    piVar7 = *(int **)(param_4 + 4);\n    param_2 = piVar5;\n  } while( true );\n}\n\n" (function_definition "void FUN_001fe740(char param_1,int *param_2,int param_3,int param_4)\n\n{\n  int *piVar1;\n  int iVar2;\n  int iVar3;\n  int *piVar4;\n  int *piVar5;\n  int *piVar6;\n  int *piVar7;\n  \n  param_2[1] = param_3;\n  param_2[2] = 0;\n  param_2[3] = 0;\n  *param_2 = 0;\n  if (param_1 == '\0') {\n    *(int **)(param_3 + 0xc) = param_2;\n    if (*(int *)(param_4 + 0xc) == param_3) {\n      *(int **)(param_4 + 0xc) = param_2;\n    }\n  }\n  else {\n    *(int **)(param_3 + 8) = param_2;\n    if (param_4 == param_3) {\n      *(int **)(param_4 + 4) = param_2;\n      *(int **)(param_4 + 0xc) = param_2;\n      *param_2 = 1;\n      return;\n    }\n    if (*(int *)(param_4 + 8) == param_3) {\n      *(int **)(param_4 + 8) = param_2;\n      piVar7 = *(int **)(param_4 + 4);\n      goto joined_r0x001fe792;\n    }\n  }\n  piVar7 = *(int **)(param_4 + 4);\njoined_r0x001fe792:\n  do {\n    while( true ) {\n      while( true ) {\n        if ((param_2 == piVar7) || (piVar6 = (int *)param_2[1], *piVar6 != 0)) {\n          *piVar7 = 1;\n          return;\n        }\n        piVar1 = (int *)piVar6[1];\n        piVar4 = (int *)piVar1[2];\n        if (piVar6 == piVar4) break;\n        if ((piVar4 == (int *)0x0) || (*piVar4 != 0)) {\n          piVar4 = param_2;\n          if ((int *)piVar6[2] == param_2) {\n            iVar2 = param_2[3];\n            piVar6[2] = iVar2;\n            piVar7 = piVar1;\n            if (iVar2 != 0) {\n              *(int **)(iVar2 + 4) = piVar6;\n              piVar7 = (int *)piVar6[1];\n            }\n            param_2[1] = (int)piVar7;\n            if (piVar6 == *(int **)(param_4 + 4)) {\n              *(int **)(param_4 + 4) = param_2;\n            }\n            else if (piVar6 == (int *)piVar7[3]) {\n              piVar7[3] = (int)param_2;\n            }\n            else {\n              piVar7[2] = (int)param_2;\n            }\n            param_2[3] = (int)piVar6;\n            piVar6[1] = (int)param_2;\n            piVar4 = piVar6;\n            piVar6 = param_2;\n          }\n          *piVar6 = 1;\n          iVar2 = piVar1[3];\n          *piVar1 = 0;\n          iVar3 = *(int *)(iVar2 + 8);\n          piVar1[3] = iVar3;\n          if (iVar3 != 0) {\n            *(int **)(iVar3 + 4) = piVar1;\n          }\n          iVar3 = piVar1[1];\n          *(int *)(iVar2 + 4) = iVar3;\n          if (piVar1 == *(int **)(param_4 + 4)) {\n            *(int *)(param_4 + 4) = iVar2;\n          }\n          else if (piVar1 == *(int **)(iVar3 + 8)) {\n            *(int *)(iVar3 + 8) = iVar2;\n          }\n          else {\n            *(int *)(iVar3 + 0xc) = iVar2;\n          }\n          *(int **)(iVar2 + 8) = piVar1;\n          piVar1[1] = iVar2;\n          piVar7 = *(int **)(param_4 + 4);\n          param_2 = piVar4;\n        }\n        else {\n          *piVar6 = 1;\n          *piVar4 = 1;\n          *piVar1 = 0;\n          param_2 = piVar1;\n        }\n      }\n      piVar5 = (int *)piVar1[3];\n      if ((piVar5 == (int *)0x0) || (*piVar5 != 0)) break;\n      *piVar6 = 1;\n      *piVar5 = 1;\n      *piVar1 = 0;\n      param_2 = piVar1;\n    }\n    piVar5 = param_2;\n    if ((int *)piVar6[3] == param_2) {\n      iVar2 = param_2[2];\n      piVar6[3] = iVar2;\n      if (iVar2 == 0) {\n        param_2[1] = (int)piVar1;\n        piVar7 = piVar1;\n        if (piVar6 == *(int **)(param_4 + 4)) goto LAB_001fe9e0;\nLAB_001fe9d2:\n        piVar7[2] = (int)param_2;\n      }\n      else {\n        *(int **)(iVar2 + 4) = piVar6;\n        piVar7 = (int *)piVar6[1];\n        param_2[1] = (int)piVar7;\n        if (piVar6 == *(int **)(param_4 + 4)) {\nLAB_001fe9e0:\n          *(int **)(param_4 + 4) = param_2;\n        }\n        else {\n          if (piVar6 == (int *)piVar7[2]) goto LAB_001fe9d2;\n          piVar7[3] = (int)param_2;\n        }\n      }\n      param_2[2] = (int)piVar6;\n      piVar4 = (int *)piVar1[2];\n      piVar6[1] = (int)param_2;\n      piVar5 = piVar6;\n      piVar6 = param_2;\n    }\n    *piVar6 = 1;\n    iVar2 = piVar4[3];\n    *piVar1 = 0;\n    piVar1[2] = iVar2;\n    if (iVar2 != 0) {\n      *(int **)(iVar2 + 4) = piVar1;\n    }\n    iVar2 = piVar1[1];\n    piVar4[1] = iVar2;\n    if (piVar1 == *(int **)(param_4 + 4)) {\n      *(int **)(param_4 + 4) = piVar4;\n    }\n    else if (piVar1 == *(int **)(iVar2 + 0xc)) {\n      *(int **)(iVar2 + 0xc) = piVar4;\n    }\n    else {\n      *(int **)(iVar2 + 8) = piVar4;\n    }\n    piVar4[3] = (int)piVar1;\n    piVar1[1] = (int)piVar4;\n    piVar7 = *(int **)(param_4 + 4);\n    param_2 = piVar5;\n  } while( true );\n}" primitive_type (function_declarator "FUN_001fe740(char param_1,int *param_2,int param_3,int param_4)" identifier (parameter_list "(char param_1,int *param_2,int param_3,int param_4)" ( (parameter_declaration "char param_1" primitive_type identifier) , (parameter_declaration "int *param_2" primitive_type (pointer_declarator "*param_2" * identifier)) , (parameter_declaration "int param_3" primitive_type identifier) , (parameter_declaration "int param_4" primitive_type identifier) ))) (compound_statement "{\n  int *piVar1;\n  int iVar2;\n  int iVar3;\n  int *piVar4;\n  int *piVar5;\n  int *piVar6;\n  int *piVar7;\n  \n  param_2[1] = param_3;\n  param_2[2] = 0;\n  param_2[3] = 0;\n  *param_2 = 0;\n  if (param_1 == '\0') {\n    *(int **)(param_3 + 0xc) = param_2;\n    if (*(int *)(param_4 + 0xc) == param_3) {\n      *(int **)(param_4 + 0xc) = param_2;\n    }\n  }\n  else {\n    *(int **)(param_3 + 8) = param_2;\n    if (param_4 == param_3) {\n      *(int **)(param_4 + 4) = param_2;\n      *(int **)(param_4 + 0xc) = param_2;\n      *param_2 = 1;\n      return;\n    }\n    if (*(int *)(param_4 + 8) == param_3) {\n      *(int **)(param_4 + 8) = param_2;\n      piVar7 = *(int **)(param_4 + 4);\n      goto joined_r0x001fe792;\n    }\n  }\n  piVar7 = *(int **)(param_4 + 4);\njoined_r0x001fe792:\n  do {\n    while( true ) {\n      while( true ) {\n        if ((param_2 == piVar7) || (piVar6 = (int *)param_2[1], *piVar6 != 0)) {\n          *piVar7 = 1;\n          return;\n        }\n        piVar1 = (int *)piVar6[1];\n        piVar4 = (int *)piVar1[2];\n        if (piVar6 == piVar4) break;\n        if ((piVar4 == (int *)0x0) || (*piVar4 != 0)) {\n          piVar4 = param_2;\n          if ((int *)piVar6[2] == param_2) {\n            iVar2 = param_2[3];\n            piVar6[2] = iVar2;\n            piVar7 = piVar1;\n            if (iVar2 != 0) {\n              *(int **)(iVar2 + 4) = piVar6;\n              piVar7 = (int *)piVar6[1];\n            }\n            param_2[1] = (int)piVar7;\n            if (piVar6 == *(int **)(param_4 + 4)) {\n              *(int **)(param_4 + 4) = param_2;\n            }\n            else if (piVar6 == (int *)piVar7[3]) {\n              piVar7[3] = (int)param_2;\n            }\n            else {\n              piVar7[2] = (int)param_2;\n            }\n            param_2[3] = (int)piVar6;\n            piVar6[1] = (int)param_2;\n            piVar4 = piVar6;\n            piVar6 = param_2;\n          }\n          *piVar6 = 1;\n          iVar2 = piVar1[3];\n          *piVar1 = 0;\n          iVar3 = *(int *)(iVar2 + 8);\n          piVar1[3] = iVar3;\n          if (iVar3 != 0) {\n            *(int **)(iVar3 + 4) = piVar1;\n          }\n          iVar3 = piVar1[1];\n          *(int *)(iVar2 + 4) = iVar3;\n          if (piVar1 == *(int **)(param_4 + 4)) {\n            *(int *)(param_4 + 4) = iVar2;\n          }\n          else if (piVar1 == *(int **)(iVar3 + 8)) {\n            *(int *)(iVar3 + 8) = iVar2;\n          }\n          else {\n            *(int *)(iVar3 + 0xc) = iVar2;\n          }\n          *(int **)(iVar2 + 8) = piVar1;\n          piVar1[1] = iVar2;\n          piVar7 = *(int **)(param_4 + 4);\n          param_2 = piVar4;\n        }\n        else {\n          *piVar6 = 1;\n          *piVar4 = 1;\n          *piVar1 = 0;\n          param_2 = piVar1;\n        }\n      }\n      piVar5 = (int *)piVar1[3];\n      if ((piVar5 == (int *)0x0) || (*piVar5 != 0)) break;\n      *piVar6 = 1;\n      *piVar5 = 1;\n      *piVar1 = 0;\n      param_2 = piVar1;\n    }\n    piVar5 = param_2;\n    if ((int *)piVar6[3] == param_2) {\n      iVar2 = param_2[2];\n      piVar6[3] = iVar2;\n      if (iVar2 == 0) {\n        param_2[1] = (int)piVar1;\n        piVar7 = piVar1;\n        if (piVar6 == *(int **)(param_4 + 4)) goto LAB_001fe9e0;\nLAB_001fe9d2:\n        piVar7[2] = (int)param_2;\n      }\n      else {\n        *(int **)(iVar2 + 4) = piVar6;\n        piVar7 = (int *)piVar6[1];\n        param_2[1] = (int)piVar7;\n        if (piVar6 == *(int **)(param_4 + 4)) {\nLAB_001fe9e0:\n          *(int **)(param_4 + 4) = param_2;\n        }\n        else {\n          if (piVar6 == (int *)piVar7[2]) goto LAB_001fe9d2;\n          piVar7[3] = (int)param_2;\n        }\n      }\n      param_2[2] = (int)piVar6;\n      piVar4 = (int *)piVar1[2];\n      piVar6[1] = (int)param_2;\n      piVar5 = piVar6;\n      piVar6 = param_2;\n    }\n    *piVar6 = 1;\n    iVar2 = piVar4[3];\n    *piVar1 = 0;\n    piVar1[2] = iVar2;\n    if (iVar2 != 0) {\n      *(int **)(iVar2 + 4) = piVar1;\n    }\n    iVar2 = piVar1[1];\n    piVar4[1] = iVar2;\n    if (piVar1 == *(int **)(param_4 + 4)) {\n      *(int **)(param_4 + 4) = piVar4;\n    }\n    else if (piVar1 == *(int **)(iVar2 + 0xc)) {\n      *(int **)(iVar2 + 0xc) = piVar4;\n    }\n    else {\n      *(int **)(iVar2 + 8) = piVar4;\n    }\n    piVar4[3] = (int)piVar1;\n    piVar1[1] = (int)piVar4;\n    piVar7 = *(int **)(param_4 + 4);\n    param_2 = piVar5;\n  } while( true );\n}" { (declaration "int *piVar1;" primitive_type (pointer_declarator "*piVar1" * identifier) ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "int *piVar4;" primitive_type (pointer_declarator "*piVar4" * 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) ;) (expression_statement "param_2[1] = param_3;" (assignment_expression "param_2[1] = param_3" (subscript_expression "param_2[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_2[2] = 0;" (assignment_expression "param_2[2] = 0" (subscript_expression "param_2[2]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "param_2[3] = 0;" (assignment_expression "param_2[3] = 0" (subscript_expression "param_2[3]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*param_2 = 0;" (assignment_expression "*param_2 = 0" (pointer_expression "*param_2" * identifier) = number_literal) ;) (if_statement "if (param_1 == '\0') {\n    *(int **)(param_3 + 0xc) = param_2;\n    if (*(int *)(param_4 + 0xc) == param_3) {\n      *(int **)(param_4 + 0xc) = param_2;\n    }\n  }\n  else {\n    *(int **)(param_3 + 8) = param_2;\n    if (param_4 == param_3) {\n      *(int **)(param_4 + 4) = param_2;\n      *(int **)(param_4 + 0xc) = param_2;\n      *param_2 = 1;\n      return;\n    }\n    if (*(int *)(param_4 + 8) == param_3) {\n      *(int **)(param_4 + 8) = param_2;\n      piVar7 = *(int **)(param_4 + 4);\n      goto joined_r0x001fe792;\n    }\n  }" if (parenthesized_expression "(param_1 == '\0')" ( (binary_expression "param_1 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    *(int **)(param_3 + 0xc) = param_2;\n    if (*(int *)(param_4 + 0xc) == param_3) {\n      *(int **)(param_4 + 0xc) = param_2;\n    }\n  }" { (expression_statement "*(int **)(param_3 + 0xc) = param_2;" (assignment_expression "*(int **)(param_3 + 0xc) = param_2" (pointer_expression "*(int **)(param_3 + 0xc)" * (cast_expression "(int **)(param_3 + 0xc)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_3 + 0xc)" ( (binary_expression "param_3 + 0xc" identifier + number_literal) )))) = identifier) ;) (if_statement "if (*(int *)(param_4 + 0xc) == param_3) {\n      *(int **)(param_4 + 0xc) = param_2;\n    }" if (parenthesized_expression "(*(int *)(param_4 + 0xc) == param_3)" ( (binary_expression "*(int *)(param_4 + 0xc) == param_3" (pointer_expression "*(int *)(param_4 + 0xc)" * (cast_expression "(int *)(param_4 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_4 + 0xc)" ( (binary_expression "param_4 + 0xc" identifier + number_literal) )))) == identifier) )) (compound_statement "{\n      *(int **)(param_4 + 0xc) = param_2;\n    }" { (expression_statement "*(int **)(param_4 + 0xc) = param_2;" (assignment_expression "*(int **)(param_4 + 0xc) = param_2" (pointer_expression "*(int **)(param_4 + 0xc)" * (cast_expression "(int **)(param_4 + 0xc)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_4 + 0xc)" ( (binary_expression "param_4 + 0xc" identifier + number_literal) )))) = identifier) ;) })) }) (else_clause "else {\n    *(int **)(param_3 + 8) = param_2;\n    if (param_4 == param_3) {\n      *(int **)(param_4 + 4) = param_2;\n      *(int **)(param_4 + 0xc) = param_2;\n      *param_2 = 1;\n      return;\n    }\n    if (*(int *)(param_4 + 8) == param_3) {\n      *(int **)(param_4 + 8) = param_2;\n      piVar7 = *(int **)(param_4 + 4);\n      goto joined_r0x001fe792;\n    }\n  }" else (compound_statement "{\n    *(int **)(param_3 + 8) = param_2;\n    if (param_4 == param_3) {\n      *(int **)(param_4 + 4) = param_2;\n      *(int **)(param_4 + 0xc) = param_2;\n      *param_2 = 1;\n      return;\n    }\n    if (*(int *)(param_4 + 8) == param_3) {\n      *(int **)(param_4 + 8) = param_2;\n      piVar7 = *(int **)(param_4 + 4);\n      goto joined_r0x001fe792;\n    }\n  }" { (expression_statement "*(int **)(param_3 + 8) = param_2;" (assignment_expression "*(int **)(param_3 + 8) = param_2" (pointer_expression "*(int **)(param_3 + 8)" * (cast_expression "(int **)(param_3 + 8)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_3 + 8)" ( (binary_expression "param_3 + 8" identifier + number_literal) )))) = identifier) ;) (if_statement "if (param_4 == param_3) {\n      *(int **)(param_4 + 4) = param_2;\n      *(int **)(param_4 + 0xc) = param_2;\n      *param_2 = 1;\n      return;\n    }" if (parenthesized_expression "(param_4 == param_3)" ( (binary_expression "param_4 == param_3" identifier == identifier) )) (compound_statement "{\n      *(int **)(param_4 + 4) = param_2;\n      *(int **)(param_4 + 0xc) = param_2;\n      *param_2 = 1;\n      return;\n    }" { (expression_statement "*(int **)(param_4 + 4) = param_2;" (assignment_expression "*(int **)(param_4 + 4) = param_2" (pointer_expression "*(int **)(param_4 + 4)" * (cast_expression "(int **)(param_4 + 4)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_4 + 4)" ( (binary_expression "param_4 + 4" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int **)(param_4 + 0xc) = param_2;" (assignment_expression "*(int **)(param_4 + 0xc) = param_2" (pointer_expression "*(int **)(param_4 + 0xc)" * (cast_expression "(int **)(param_4 + 0xc)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_4 + 0xc)" ( (binary_expression "param_4 + 0xc" identifier + number_literal) )))) = identifier) ;) (expression_statement "*param_2 = 1;" (assignment_expression "*param_2 = 1" (pointer_expression "*param_2" * identifier) = number_literal) ;) (return_statement "return;" return ;) })) (if_statement "if (*(int *)(param_4 + 8) == param_3) {\n      *(int **)(param_4 + 8) = param_2;\n      piVar7 = *(int **)(param_4 + 4);\n      goto joined_r0x001fe792;\n    }" if (parenthesized_expression "(*(int *)(param_4 + 8) == param_3)" ( (binary_expression "*(int *)(param_4 + 8) == param_3" (pointer_expression "*(int *)(param_4 + 8)" * (cast_expression "(int *)(param_4 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_4 + 8)" ( (binary_expression "param_4 + 8" identifier + number_literal) )))) == identifier) )) (compound_statement "{\n      *(int **)(param_4 + 8) = param_2;\n      piVar7 = *(int **)(param_4 + 4);\n      goto joined_r0x001fe792;\n    }" { (expression_statement "*(int **)(param_4 + 8) = param_2;" (assignment_expression "*(int **)(param_4 + 8) = param_2" (pointer_expression "*(int **)(param_4 + 8)" * (cast_expression "(int **)(param_4 + 8)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_4 + 8)" ( (binary_expression "param_4 + 8" identifier + number_literal) )))) = identifier) ;) (expression_statement "piVar7 = *(int **)(param_4 + 4);" (assignment_expression "piVar7 = *(int **)(param_4 + 4)" identifier = (pointer_expression "*(int **)(param_4 + 4)" * (cast_expression "(int **)(param_4 + 4)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_4 + 4)" ( (binary_expression "param_4 + 4" identifier + number_literal) ))))) ;) (goto_statement "goto joined_r0x001fe792;" goto statement_identifier ;) })) }))) (expression_statement "piVar7 = *(int **)(param_4 + 4);" (assignment_expression "piVar7 = *(int **)(param_4 + 4)" identifier = (pointer_expression "*(int **)(param_4 + 4)" * (cast_expression "(int **)(param_4 + 4)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_4 + 4)" ( (binary_expression "param_4 + 4" identifier + number_literal) ))))) ;) (labeled_statement "joined_r0x001fe792:\n  do {\n    while( true ) {\n      while( true ) {\n        if ((param_2 == piVar7) || (piVar6 = (int *)param_2[1], *piVar6 != 0)) {\n          *piVar7 = 1;\n          return;\n        }\n        piVar1 = (int *)piVar6[1];\n        piVar4 = (int *)piVar1[2];\n        if (piVar6 == piVar4) break;\n        if ((piVar4 == (int *)0x0) || (*piVar4 != 0)) {\n          piVar4 = param_2;\n          if ((int *)piVar6[2] == param_2) {\n            iVar2 = param_2[3];\n            piVar6[2] = iVar2;\n            piVar7 = piVar1;\n            if (iVar2 != 0) {\n              *(int **)(iVar2 + 4) = piVar6;\n              piVar7 = (int *)piVar6[1];\n            }\n            param_2[1] = (int)piVar7;\n            if (piVar6 == *(int **)(param_4 + 4)) {\n              *(int **)(param_4 + 4) = param_2;\n            }\n            else if (piVar6 == (int *)piVar7[3]) {\n              piVar7[3] = (int)param_2;\n            }\n            else {\n              piVar7[2] = (int)param_2;\n            }\n            param_2[3] = (int)piVar6;\n            piVar6[1] = (int)param_2;\n            piVar4 = piVar6;\n            piVar6 = param_2;\n          }\n          *piVar6 = 1;\n          iVar2 = piVar1[3];\n          *piVar1 = 0;\n          iVar3 = *(int *)(iVar2 + 8);\n          piVar1[3] = iVar3;\n          if (iVar3 != 0) {\n            *(int **)(iVar3 + 4) = piVar1;\n          }\n          iVar3 = piVar1[1];\n          *(int *)(iVar2 + 4) = iVar3;\n          if (piVar1 == *(int **)(param_4 + 4)) {\n            *(int *)(param_4 + 4) = iVar2;\n          }\n          else if (piVar1 == *(int **)(iVar3 + 8)) {\n            *(int *)(iVar3 + 8) = iVar2;\n          }\n          else {\n            *(int *)(iVar3 + 0xc) = iVar2;\n          }\n          *(int **)(iVar2 + 8) = piVar1;\n          piVar1[1] = iVar2;\n          piVar7 = *(int **)(param_4 + 4);\n          param_2 = piVar4;\n        }\n        else {\n          *piVar6 = 1;\n          *piVar4 = 1;\n          *piVar1 = 0;\n          param_2 = piVar1;\n        }\n      }\n      piVar5 = (int *)piVar1[3];\n      if ((piVar5 == (int *)0x0) || (*piVar5 != 0)) break;\n      *piVar6 = 1;\n      *piVar5 = 1;\n      *piVar1 = 0;\n      param_2 = piVar1;\n    }\n    piVar5 = param_2;\n    if ((int *)piVar6[3] == param_2) {\n      iVar2 = param_2[2];\n      piVar6[3] = iVar2;\n      if (iVar2 == 0) {\n        param_2[1] = (int)piVar1;\n        piVar7 = piVar1;\n        if (piVar6 == *(int **)(param_4 + 4)) goto LAB_001fe9e0;\nLAB_001fe9d2:\n        piVar7[2] = (int)param_2;\n      }\n      else {\n        *(int **)(iVar2 + 4) = piVar6;\n        piVar7 = (int *)piVar6[1];\n        param_2[1] = (int)piVar7;\n        if (piVar6 == *(int **)(param_4 + 4)) {\nLAB_001fe9e0:\n          *(int **)(param_4 + 4) = param_2;\n        }\n        else {\n          if (piVar6 == (int *)piVar7[2]) goto LAB_001fe9d2;\n          piVar7[3] = (int)param_2;\n        }\n      }\n      param_2[2] = (int)piVar6;\n      piVar4 = (int *)piVar1[2];\n      piVar6[1] = (int)param_2;\n      piVar5 = piVar6;\n      piVar6 = param_2;\n    }\n    *piVar6 = 1;\n    iVar2 = piVar4[3];\n    *piVar1 = 0;\n    piVar1[2] = iVar2;\n    if (iVar2 != 0) {\n      *(int **)(iVar2 + 4) = piVar1;\n    }\n    iVar2 = piVar1[1];\n    piVar4[1] = iVar2;\n    if (piVar1 == *(int **)(param_4 + 4)) {\n      *(int **)(param_4 + 4) = piVar4;\n    }\n    else if (piVar1 == *(int **)(iVar2 + 0xc)) {\n      *(int **)(iVar2 + 0xc) = piVar4;\n    }\n    else {\n      *(int **)(iVar2 + 8) = piVar4;\n    }\n    piVar4[3] = (int)piVar1;\n    piVar1[1] = (int)piVar4;\n    piVar7 = *(int **)(param_4 + 4);\n    param_2 = piVar5;\n  } while( true );" statement_identifier : (do_statement "do {\n    while( true ) {\n      while( true ) {\n        if ((param_2 == piVar7) || (piVar6 = (int *)param_2[1], *piVar6 != 0)) {\n          *piVar7 = 1;\n          return;\n        }\n        piVar1 = (int *)piVar6[1];\n        piVar4 = (int *)piVar1[2];\n        if (piVar6 == piVar4) break;\n        if ((piVar4 == (int *)0x0) || (*piVar4 != 0)) {\n          piVar4 = param_2;\n          if ((int *)piVar6[2] == param_2) {\n            iVar2 = param_2[3];\n            piVar6[2] = iVar2;\n            piVar7 = piVar1;\n            if (iVar2 != 0) {\n              *(int **)(iVar2 + 4) = piVar6;\n              piVar7 = (int *)piVar6[1];\n            }\n            param_2[1] = (int)piVar7;\n            if (piVar6 == *(int **)(param_4 + 4)) {\n              *(int **)(param_4 + 4) = param_2;\n            }\n            else if (piVar6 == (int *)piVar7[3]) {\n              piVar7[3] = (int)param_2;\n            }\n            else {\n              piVar7[2] = (int)param_2;\n            }\n            param_2[3] = (int)piVar6;\n            piVar6[1] = (int)param_2;\n            piVar4 = piVar6;\n            piVar6 = param_2;\n          }\n          *piVar6 = 1;\n          iVar2 = piVar1[3];\n          *piVar1 = 0;\n          iVar3 = *(int *)(iVar2 + 8);\n          piVar1[3] = iVar3;\n          if (iVar3 != 0) {\n            *(int **)(iVar3 + 4) = piVar1;\n          }\n          iVar3 = piVar1[1];\n          *(int *)(iVar2 + 4) = iVar3;\n          if (piVar1 == *(int **)(param_4 + 4)) {\n            *(int *)(param_4 + 4) = iVar2;\n          }\n          else if (piVar1 == *(int **)(iVar3 + 8)) {\n            *(int *)(iVar3 + 8) = iVar2;\n          }\n          else {\n            *(int *)(iVar3 + 0xc) = iVar2;\n          }\n          *(int **)(iVar2 + 8) = piVar1;\n          piVar1[1] = iVar2;\n          piVar7 = *(int **)(param_4 + 4);\n          param_2 = piVar4;\n        }\n        else {\n          *piVar6 = 1;\n          *piVar4 = 1;\n          *piVar1 = 0;\n          param_2 = piVar1;\n        }\n      }\n      piVar5 = (int *)piVar1[3];\n      if ((piVar5 == (int *)0x0) || (*piVar5 != 0)) break;\n      *piVar6 = 1;\n      *piVar5 = 1;\n      *piVar1 = 0;\n      param_2 = piVar1;\n    }\n    piVar5 = param_2;\n    if ((int *)piVar6[3] == param_2) {\n      iVar2 = param_2[2];\n      piVar6[3] = iVar2;\n      if (iVar2 == 0) {\n        param_2[1] = (int)piVar1;\n        piVar7 = piVar1;\n        if (piVar6 == *(int **)(param_4 + 4)) goto LAB_001fe9e0;\nLAB_001fe9d2:\n        piVar7[2] = (int)param_2;\n      }\n      else {\n        *(int **)(iVar2 + 4) = piVar6;\n        piVar7 = (int *)piVar6[1];\n        param_2[1] = (int)piVar7;\n        if (piVar6 == *(int **)(param_4 + 4)) {\nLAB_001fe9e0:\n          *(int **)(param_4 + 4) = param_2;\n        }\n        else {\n          if (piVar6 == (int *)piVar7[2]) goto LAB_001fe9d2;\n          piVar7[3] = (int)param_2;\n        }\n      }\n      param_2[2] = (int)piVar6;\n      piVar4 = (int *)piVar1[2];\n      piVar6[1] = (int)param_2;\n      piVar5 = piVar6;\n      piVar6 = param_2;\n    }\n    *piVar6 = 1;\n    iVar2 = piVar4[3];\n    *piVar1 = 0;\n    piVar1[2] = iVar2;\n    if (iVar2 != 0) {\n      *(int **)(iVar2 + 4) = piVar1;\n    }\n    iVar2 = piVar1[1];\n    piVar4[1] = iVar2;\n    if (piVar1 == *(int **)(param_4 + 4)) {\n      *(int **)(param_4 + 4) = piVar4;\n    }\n    else if (piVar1 == *(int **)(iVar2 + 0xc)) {\n      *(int **)(iVar2 + 0xc) = piVar4;\n    }\n    else {\n      *(int **)(iVar2 + 8) = piVar4;\n    }\n    piVar4[3] = (int)piVar1;\n    piVar1[1] = (int)piVar4;\n    piVar7 = *(int **)(param_4 + 4);\n    param_2 = piVar5;\n  } while( true );" do (compound_statement "{\n    while( true ) {\n      while( true ) {\n        if ((param_2 == piVar7) || (piVar6 = (int *)param_2[1], *piVar6 != 0)) {\n          *piVar7 = 1;\n          return;\n        }\n        piVar1 = (int *)piVar6[1];\n        piVar4 = (int *)piVar1[2];\n        if (piVar6 == piVar4) break;\n        if ((piVar4 == (int *)0x0) || (*piVar4 != 0)) {\n          piVar4 = param_2;\n          if ((int *)piVar6[2] == param_2) {\n            iVar2 = param_2[3];\n            piVar6[2] = iVar2;\n            piVar7 = piVar1;\n            if (iVar2 != 0) {\n              *(int **)(iVar2 + 4) = piVar6;\n              piVar7 = (int *)piVar6[1];\n            }\n            param_2[1] = (int)piVar7;\n            if (piVar6 == *(int **)(param_4 + 4)) {\n              *(int **)(param_4 + 4) = param_2;\n            }\n            else if (piVar6 == (int *)piVar7[3]) {\n              piVar7[3] = (int)param_2;\n            }\n            else {\n              piVar7[2] = (int)param_2;\n            }\n            param_2[3] = (int)piVar6;\n            piVar6[1] = (int)param_2;\n            piVar4 = piVar6;\n            piVar6 = param_2;\n          }\n          *piVar6 = 1;\n          iVar2 = piVar1[3];\n          *piVar1 = 0;\n          iVar3 = *(int *)(iVar2 + 8);\n          piVar1[3] = iVar3;\n          if (iVar3 != 0) {\n            *(int **)(iVar3 + 4) = piVar1;\n          }\n          iVar3 = piVar1[1];\n          *(int *)(iVar2 + 4) = iVar3;\n          if (piVar1 == *(int **)(param_4 + 4)) {\n            *(int *)(param_4 + 4) = iVar2;\n          }\n          else if (piVar1 == *(int **)(iVar3 + 8)) {\n            *(int *)(iVar3 + 8) = iVar2;\n          }\n          else {\n            *(int *)(iVar3 + 0xc) = iVar2;\n          }\n          *(int **)(iVar2 + 8) = piVar1;\n          piVar1[1] = iVar2;\n          piVar7 = *(int **)(param_4 + 4);\n          param_2 = piVar4;\n        }\n        else {\n          *piVar6 = 1;\n          *piVar4 = 1;\n          *piVar1 = 0;\n          param_2 = piVar1;\n        }\n      }\n      piVar5 = (int *)piVar1[3];\n      if ((piVar5 == (int *)0x0) || (*piVar5 != 0)) break;\n      *piVar6 = 1;\n      *piVar5 = 1;\n      *piVar1 = 0;\n      param_2 = piVar1;\n    }\n    piVar5 = param_2;\n    if ((int *)piVar6[3] == param_2) {\n      iVar2 = param_2[2];\n      piVar6[3] = iVar2;\n      if (iVar2 == 0) {\n        param_2[1] = (int)piVar1;\n        piVar7 = piVar1;\n        if (piVar6 == *(int **)(param_4 + 4)) goto LAB_001fe9e0;\nLAB_001fe9d2:\n        piVar7[2] = (int)param_2;\n      }\n      else {\n        *(int **)(iVar2 + 4) = piVar6;\n        piVar7 = (int *)piVar6[1];\n        param_2[1] = (int)piVar7;\n        if (piVar6 == *(int **)(param_4 + 4)) {\nLAB_001fe9e0:\n          *(int **)(param_4 + 4) = param_2;\n        }\n        else {\n          if (piVar6 == (int *)piVar7[2]) goto LAB_001fe9d2;\n          piVar7[3] = (int)param_2;\n        }\n      }\n      param_2[2] = (int)piVar6;\n      piVar4 = (int *)piVar1[2];\n      piVar6[1] = (int)param_2;\n      piVar5 = piVar6;\n      piVar6 = param_2;\n    }\n    *piVar6 = 1;\n    iVar2 = piVar4[3];\n    *piVar1 = 0;\n    piVar1[2] = iVar2;\n    if (iVar2 != 0) {\n      *(int **)(iVar2 + 4) = piVar1;\n    }\n    iVar2 = piVar1[1];\n    piVar4[1] = iVar2;\n    if (piVar1 == *(int **)(param_4 + 4)) {\n      *(int **)(param_4 + 4) = piVar4;\n    }\n    else if (piVar1 == *(int **)(iVar2 + 0xc)) {\n      *(int **)(iVar2 + 0xc) = piVar4;\n    }\n    else {\n      *(int **)(iVar2 + 8) = piVar4;\n    }\n    piVar4[3] = (int)piVar1;\n    piVar1[1] = (int)piVar4;\n    piVar7 = *(int **)(param_4 + 4);\n    param_2 = piVar5;\n  }" { (while_statement "while( true ) {\n      while( true ) {\n        if ((param_2 == piVar7) || (piVar6 = (int *)param_2[1], *piVar6 != 0)) {\n          *piVar7 = 1;\n          return;\n        }\n        piVar1 = (int *)piVar6[1];\n        piVar4 = (int *)piVar1[2];\n        if (piVar6 == piVar4) break;\n        if ((piVar4 == (int *)0x0) || (*piVar4 != 0)) {\n          piVar4 = param_2;\n          if ((int *)piVar6[2] == param_2) {\n            iVar2 = param_2[3];\n            piVar6[2] = iVar2;\n            piVar7 = piVar1;\n            if (iVar2 != 0) {\n              *(int **)(iVar2 + 4) = piVar6;\n              piVar7 = (int *)piVar6[1];\n            }\n            param_2[1] = (int)piVar7;\n            if (piVar6 == *(int **)(param_4 + 4)) {\n              *(int **)(param_4 + 4) = param_2;\n            }\n            else if (piVar6 == (int *)piVar7[3]) {\n              piVar7[3] = (int)param_2;\n            }\n            else {\n              piVar7[2] = (int)param_2;\n            }\n            param_2[3] = (int)piVar6;\n            piVar6[1] = (int)param_2;\n            piVar4 = piVar6;\n            piVar6 = param_2;\n          }\n          *piVar6 = 1;\n          iVar2 = piVar1[3];\n          *piVar1 = 0;\n          iVar3 = *(int *)(iVar2 + 8);\n          piVar1[3] = iVar3;\n          if (iVar3 != 0) {\n            *(int **)(iVar3 + 4) = piVar1;\n          }\n          iVar3 = piVar1[1];\n          *(int *)(iVar2 + 4) = iVar3;\n          if (piVar1 == *(int **)(param_4 + 4)) {\n            *(int *)(param_4 + 4) = iVar2;\n          }\n          else if (piVar1 == *(int **)(iVar3 + 8)) {\n            *(int *)(iVar3 + 8) = iVar2;\n          }\n          else {\n            *(int *)(iVar3 + 0xc) = iVar2;\n          }\n          *(int **)(iVar2 + 8) = piVar1;\n          piVar1[1] = iVar2;\n          piVar7 = *(int **)(param_4 + 4);\n          param_2 = piVar4;\n        }\n        else {\n          *piVar6 = 1;\n          *piVar4 = 1;\n          *piVar1 = 0;\n          param_2 = piVar1;\n        }\n      }\n      piVar5 = (int *)piVar1[3];\n      if ((piVar5 == (int *)0x0) || (*piVar5 != 0)) break;\n      *piVar6 = 1;\n      *piVar5 = 1;\n      *piVar1 = 0;\n      param_2 = piVar1;\n    }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n      while( true ) {\n        if ((param_2 == piVar7) || (piVar6 = (int *)param_2[1], *piVar6 != 0)) {\n          *piVar7 = 1;\n          return;\n        }\n        piVar1 = (int *)piVar6[1];\n        piVar4 = (int *)piVar1[2];\n        if (piVar6 == piVar4) break;\n        if ((piVar4 == (int *)0x0) || (*piVar4 != 0)) {\n          piVar4 = param_2;\n          if ((int *)piVar6[2] == param_2) {\n            iVar2 = param_2[3];\n            piVar6[2] = iVar2;\n            piVar7 = piVar1;\n            if (iVar2 != 0) {\n              *(int **)(iVar2 + 4) = piVar6;\n              piVar7 = (int *)piVar6[1];\n            }\n            param_2[1] = (int)piVar7;\n            if (piVar6 == *(int **)(param_4 + 4)) {\n              *(int **)(param_4 + 4) = param_2;\n            }\n            else if (piVar6 == (int *)piVar7[3]) {\n              piVar7[3] = (int)param_2;\n            }\n            else {\n              piVar7[2] = (int)param_2;\n            }\n            param_2[3] = (int)piVar6;\n            piVar6[1] = (int)param_2;\n            piVar4 = piVar6;\n            piVar6 = param_2;\n          }\n          *piVar6 = 1;\n          iVar2 = piVar1[3];\n          *piVar1 = 0;\n          iVar3 = *(int *)(iVar2 + 8);\n          piVar1[3] = iVar3;\n          if (iVar3 != 0) {\n            *(int **)(iVar3 + 4) = piVar1;\n          }\n          iVar3 = piVar1[1];\n          *(int *)(iVar2 + 4) = iVar3;\n          if (piVar1 == *(int **)(param_4 + 4)) {\n            *(int *)(param_4 + 4) = iVar2;\n          }\n          else if (piVar1 == *(int **)(iVar3 + 8)) {\n            *(int *)(iVar3 + 8) = iVar2;\n          }\n          else {\n            *(int *)(iVar3 + 0xc) = iVar2;\n          }\n          *(int **)(iVar2 + 8) = piVar1;\n          piVar1[1] = iVar2;\n          piVar7 = *(int **)(param_4 + 4);\n          param_2 = piVar4;\n        }\n        else {\n          *piVar6 = 1;\n          *piVar4 = 1;\n          *piVar1 = 0;\n          param_2 = piVar1;\n        }\n      }\n      piVar5 = (int *)piVar1[3];\n      if ((piVar5 == (int *)0x0) || (*piVar5 != 0)) break;\n      *piVar6 = 1;\n      *piVar5 = 1;\n      *piVar1 = 0;\n      param_2 = piVar1;\n    }" { (while_statement "while( true ) {\n        if ((param_2 == piVar7) || (piVar6 = (int *)param_2[1], *piVar6 != 0)) {\n          *piVar7 = 1;\n          return;\n        }\n        piVar1 = (int *)piVar6[1];\n        piVar4 = (int *)piVar1[2];\n        if (piVar6 == piVar4) break;\n        if ((piVar4 == (int *)0x0) || (*piVar4 != 0)) {\n          piVar4 = param_2;\n          if ((int *)piVar6[2] == param_2) {\n            iVar2 = param_2[3];\n            piVar6[2] = iVar2;\n            piVar7 = piVar1;\n            if (iVar2 != 0) {\n              *(int **)(iVar2 + 4) = piVar6;\n              piVar7 = (int *)piVar6[1];\n            }\n            param_2[1] = (int)piVar7;\n            if (piVar6 == *(int **)(param_4 + 4)) {\n              *(int **)(param_4 + 4) = param_2;\n            }\n            else if (piVar6 == (int *)piVar7[3]) {\n              piVar7[3] = (int)param_2;\n            }\n            else {\n              piVar7[2] = (int)param_2;\n            }\n            param_2[3] = (int)piVar6;\n            piVar6[1] = (int)param_2;\n            piVar4 = piVar6;\n            piVar6 = param_2;\n          }\n          *piVar6 = 1;\n          iVar2 = piVar1[3];\n          *piVar1 = 0;\n          iVar3 = *(int *)(iVar2 + 8);\n          piVar1[3] = iVar3;\n          if (iVar3 != 0) {\n            *(int **)(iVar3 + 4) = piVar1;\n          }\n          iVar3 = piVar1[1];\n          *(int *)(iVar2 + 4) = iVar3;\n          if (piVar1 == *(int **)(param_4 + 4)) {\n            *(int *)(param_4 + 4) = iVar2;\n          }\n          else if (piVar1 == *(int **)(iVar3 + 8)) {\n            *(int *)(iVar3 + 8) = iVar2;\n          }\n          else {\n            *(int *)(iVar3 + 0xc) = iVar2;\n          }\n          *(int **)(iVar2 + 8) = piVar1;\n          piVar1[1] = iVar2;\n          piVar7 = *(int **)(param_4 + 4);\n          param_2 = piVar4;\n        }\n        else {\n          *piVar6 = 1;\n          *piVar4 = 1;\n          *piVar1 = 0;\n          param_2 = piVar1;\n        }\n      }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n        if ((param_2 == piVar7) || (piVar6 = (int *)param_2[1], *piVar6 != 0)) {\n          *piVar7 = 1;\n          return;\n        }\n        piVar1 = (int *)piVar6[1];\n        piVar4 = (int *)piVar1[2];\n        if (piVar6 == piVar4) break;\n        if ((piVar4 == (int *)0x0) || (*piVar4 != 0)) {\n          piVar4 = param_2;\n          if ((int *)piVar6[2] == param_2) {\n            iVar2 = param_2[3];\n            piVar6[2] = iVar2;\n            piVar7 = piVar1;\n            if (iVar2 != 0) {\n              *(int **)(iVar2 + 4) = piVar6;\n              piVar7 = (int *)piVar6[1];\n            }\n            param_2[1] = (int)piVar7;\n            if (piVar6 == *(int **)(param_4 + 4)) {\n              *(int **)(param_4 + 4) = param_2;\n            }\n            else if (piVar6 == (int *)piVar7[3]) {\n              piVar7[3] = (int)param_2;\n            }\n            else {\n              piVar7[2] = (int)param_2;\n            }\n            param_2[3] = (int)piVar6;\n            piVar6[1] = (int)param_2;\n            piVar4 = piVar6;\n            piVar6 = param_2;\n          }\n          *piVar6 = 1;\n          iVar2 = piVar1[3];\n          *piVar1 = 0;\n          iVar3 = *(int *)(iVar2 + 8);\n          piVar1[3] = iVar3;\n          if (iVar3 != 0) {\n            *(int **)(iVar3 + 4) = piVar1;\n          }\n          iVar3 = piVar1[1];\n          *(int *)(iVar2 + 4) = iVar3;\n          if (piVar1 == *(int **)(param_4 + 4)) {\n            *(int *)(param_4 + 4) = iVar2;\n          }\n          else if (piVar1 == *(int **)(iVar3 + 8)) {\n            *(int *)(iVar3 + 8) = iVar2;\n          }\n          else {\n            *(int *)(iVar3 + 0xc) = iVar2;\n          }\n          *(int **)(iVar2 + 8) = piVar1;\n          piVar1[1] = iVar2;\n          piVar7 = *(int **)(param_4 + 4);\n          param_2 = piVar4;\n        }\n        else {\n          *piVar6 = 1;\n          *piVar4 = 1;\n          *piVar1 = 0;\n          param_2 = piVar1;\n        }\n      }" { (if_statement "if ((param_2 == piVar7) || (piVar6 = (int *)param_2[1], *piVar6 != 0)) {\n          *piVar7 = 1;\n          return;\n        }" if (parenthesized_expression "((param_2 == piVar7) || (piVar6 = (int *)param_2[1], *piVar6 != 0))" ( (binary_expression "(param_2 == piVar7) || (piVar6 = (int *)param_2[1], *piVar6 != 0)" (parenthesized_expression "(param_2 == piVar7)" ( (binary_expression "param_2 == piVar7" identifier == identifier) )) || (parenthesized_expression "(piVar6 = (int *)param_2[1], *piVar6 != 0)" ( (comma_expression "piVar6 = (int *)param_2[1], *piVar6 != 0" (assignment_expression "piVar6 = (int *)param_2[1]" identifier = (cast_expression "(int *)param_2[1]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_2[1]" identifier [ number_literal ]))) , (binary_expression "*piVar6 != 0" (pointer_expression "*piVar6" * identifier) != number_literal)) ))) )) (compound_statement "{\n          *piVar7 = 1;\n          return;\n        }" { (expression_statement "*piVar7 = 1;" (assignment_expression "*piVar7 = 1" (pointer_expression "*piVar7" * identifier) = number_literal) ;) (return_statement "return;" return ;) })) (expression_statement "piVar1 = (int *)piVar6[1];" (assignment_expression "piVar1 = (int *)piVar6[1]" identifier = (cast_expression "(int *)piVar6[1]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar6[1]" identifier [ number_literal ]))) ;) (expression_statement "piVar4 = (int *)piVar1[2];" (assignment_expression "piVar4 = (int *)piVar1[2]" identifier = (cast_expression "(int *)piVar1[2]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar1[2]" identifier [ number_literal ]))) ;) (if_statement "if (piVar6 == piVar4) break;" if (parenthesized_expression "(piVar6 == piVar4)" ( (binary_expression "piVar6 == piVar4" identifier == identifier) )) (break_statement "break;" break ;)) (if_statement "if ((piVar4 == (int *)0x0) || (*piVar4 != 0)) {\n          piVar4 = param_2;\n          if ((int *)piVar6[2] == param_2) {\n            iVar2 = param_2[3];\n            piVar6[2] = iVar2;\n            piVar7 = piVar1;\n            if (iVar2 != 0) {\n              *(int **)(iVar2 + 4) = piVar6;\n              piVar7 = (int *)piVar6[1];\n            }\n            param_2[1] = (int)piVar7;\n            if (piVar6 == *(int **)(param_4 + 4)) {\n              *(int **)(param_4 + 4) = param_2;\n            }\n            else if (piVar6 == (int *)piVar7[3]) {\n              piVar7[3] = (int)param_2;\n            }\n            else {\n              piVar7[2] = (int)param_2;\n            }\n            param_2[3] = (int)piVar6;\n            piVar6[1] = (int)param_2;\n            piVar4 = piVar6;\n            piVar6 = param_2;\n          }\n          *piVar6 = 1;\n          iVar2 = piVar1[3];\n          *piVar1 = 0;\n          iVar3 = *(int *)(iVar2 + 8);\n          piVar1[3] = iVar3;\n          if (iVar3 != 0) {\n            *(int **)(iVar3 + 4) = piVar1;\n          }\n          iVar3 = piVar1[1];\n          *(int *)(iVar2 + 4) = iVar3;\n          if (piVar1 == *(int **)(param_4 + 4)) {\n            *(int *)(param_4 + 4) = iVar2;\n          }\n          else if (piVar1 == *(int **)(iVar3 + 8)) {\n            *(int *)(iVar3 + 8) = iVar2;\n          }\n          else {\n            *(int *)(iVar3 + 0xc) = iVar2;\n          }\n          *(int **)(iVar2 + 8) = piVar1;\n          piVar1[1] = iVar2;\n          piVar7 = *(int **)(param_4 + 4);\n          param_2 = piVar4;\n        }\n        else {\n          *piVar6 = 1;\n          *piVar4 = 1;\n          *piVar1 = 0;\n          param_2 = piVar1;\n        }" if (parenthesized_expression "((piVar4 == (int *)0x0) || (*piVar4 != 0))" ( (binary_expression "(piVar4 == (int *)0x0) || (*piVar4 != 0)" (parenthesized_expression "(piVar4 == (int *)0x0)" ( (binary_expression "piVar4 == (int *)0x0" identifier == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) || (parenthesized_expression "(*piVar4 != 0)" ( (binary_expression "*piVar4 != 0" (pointer_expression "*piVar4" * identifier) != number_literal) ))) )) (compound_statement "{\n          piVar4 = param_2;\n          if ((int *)piVar6[2] == param_2) {\n            iVar2 = param_2[3];\n            piVar6[2] = iVar2;\n            piVar7 = piVar1;\n            if (iVar2 != 0) {\n              *(int **)(iVar2 + 4) = piVar6;\n              piVar7 = (int *)piVar6[1];\n            }\n            param_2[1] = (int)piVar7;\n            if (piVar6 == *(int **)(param_4 + 4)) {\n              *(int **)(param_4 + 4) = param_2;\n            }\n            else if (piVar6 == (int *)piVar7[3]) {\n              piVar7[3] = (int)param_2;\n            }\n            else {\n              piVar7[2] = (int)param_2;\n            }\n            param_2[3] = (int)piVar6;\n            piVar6[1] = (int)param_2;\n            piVar4 = piVar6;\n            piVar6 = param_2;\n          }\n          *piVar6 = 1;\n          iVar2 = piVar1[3];\n          *piVar1 = 0;\n          iVar3 = *(int *)(iVar2 + 8);\n          piVar1[3] = iVar3;\n          if (iVar3 != 0) {\n            *(int **)(iVar3 + 4) = piVar1;\n          }\n          iVar3 = piVar1[1];\n          *(int *)(iVar2 + 4) = iVar3;\n          if (piVar1 == *(int **)(param_4 + 4)) {\n            *(int *)(param_4 + 4) = iVar2;\n          }\n          else if (piVar1 == *(int **)(iVar3 + 8)) {\n            *(int *)(iVar3 + 8) = iVar2;\n          }\n          else {\n            *(int *)(iVar3 + 0xc) = iVar2;\n          }\n          *(int **)(iVar2 + 8) = piVar1;\n          piVar1[1] = iVar2;\n          piVar7 = *(int **)(param_4 + 4);\n          param_2 = piVar4;\n        }" { (expression_statement "piVar4 = param_2;" (assignment_expression "piVar4 = param_2" identifier = identifier) ;) (if_statement "if ((int *)piVar6[2] == param_2) {\n            iVar2 = param_2[3];\n            piVar6[2] = iVar2;\n            piVar7 = piVar1;\n            if (iVar2 != 0) {\n              *(int **)(iVar2 + 4) = piVar6;\n              piVar7 = (int *)piVar6[1];\n            }\n            param_2[1] = (int)piVar7;\n            if (piVar6 == *(int **)(param_4 + 4)) {\n              *(int **)(param_4 + 4) = param_2;\n            }\n            else if (piVar6 == (int *)piVar7[3]) {\n              piVar7[3] = (int)param_2;\n            }\n            else {\n              piVar7[2] = (int)param_2;\n            }\n            param_2[3] = (int)piVar6;\n            piVar6[1] = (int)param_2;\n            piVar4 = piVar6;\n            piVar6 = param_2;\n          }" if (parenthesized_expression "((int *)piVar6[2] == param_2)" ( (binary_expression "(int *)piVar6[2] == param_2" (cast_expression "(int *)piVar6[2]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar6[2]" identifier [ number_literal ])) == identifier) )) (compound_statement "{\n            iVar2 = param_2[3];\n            piVar6[2] = iVar2;\n            piVar7 = piVar1;\n            if (iVar2 != 0) {\n              *(int **)(iVar2 + 4) = piVar6;\n              piVar7 = (int *)piVar6[1];\n            }\n            param_2[1] = (int)piVar7;\n            if (piVar6 == *(int **)(param_4 + 4)) {\n              *(int **)(param_4 + 4) = param_2;\n            }\n            else if (piVar6 == (int *)piVar7[3]) {\n              piVar7[3] = (int)param_2;\n            }\n            else {\n              piVar7[2] = (int)param_2;\n            }\n            param_2[3] = (int)piVar6;\n            piVar6[1] = (int)param_2;\n            piVar4 = piVar6;\n            piVar6 = param_2;\n          }" { (expression_statement "iVar2 = param_2[3];" (assignment_expression "iVar2 = param_2[3]" identifier = (subscript_expression "param_2[3]" identifier [ number_literal ])) ;) (expression_statement "piVar6[2] = iVar2;" (assignment_expression "piVar6[2] = iVar2" (subscript_expression "piVar6[2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "piVar7 = piVar1;" (assignment_expression "piVar7 = piVar1" identifier = identifier) ;) (if_statement "if (iVar2 != 0) {\n              *(int **)(iVar2 + 4) = piVar6;\n              piVar7 = (int *)piVar6[1];\n            }" if (parenthesized_expression "(iVar2 != 0)" ( (binary_expression "iVar2 != 0" identifier != number_literal) )) (compound_statement "{\n              *(int **)(iVar2 + 4) = piVar6;\n              piVar7 = (int *)piVar6[1];\n            }" { (expression_statement "*(int **)(iVar2 + 4) = piVar6;" (assignment_expression "*(int **)(iVar2 + 4) = piVar6" (pointer_expression "*(int **)(iVar2 + 4)" * (cast_expression "(int **)(iVar2 + 4)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar2 + 4)" ( (binary_expression "iVar2 + 4" identifier + number_literal) )))) = identifier) ;) (expression_statement "piVar7 = (int *)piVar6[1];" (assignment_expression "piVar7 = (int *)piVar6[1]" identifier = (cast_expression "(int *)piVar6[1]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar6[1]" identifier [ number_literal ]))) ;) })) (expression_statement "param_2[1] = (int)piVar7;" (assignment_expression "param_2[1] = (int)piVar7" (subscript_expression "param_2[1]" identifier [ number_literal ]) = (cast_expression "(int)piVar7" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (if_statement "if (piVar6 == *(int **)(param_4 + 4)) {\n              *(int **)(param_4 + 4) = param_2;\n            }\n            else if (piVar6 == (int *)piVar7[3]) {\n              piVar7[3] = (int)param_2;\n            }\n            else {\n              piVar7[2] = (int)param_2;\n            }" if (parenthesized_expression "(piVar6 == *(int **)(param_4 + 4))" ( (binary_expression "piVar6 == *(int **)(param_4 + 4)" identifier == (pointer_expression "*(int **)(param_4 + 4)" * (cast_expression "(int **)(param_4 + 4)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_4 + 4)" ( (binary_expression "param_4 + 4" identifier + number_literal) ))))) )) (compound_statement "{\n              *(int **)(param_4 + 4) = param_2;\n            }" { (expression_statement "*(int **)(param_4 + 4) = param_2;" (assignment_expression "*(int **)(param_4 + 4) = param_2" (pointer_expression "*(int **)(param_4 + 4)" * (cast_expression "(int **)(param_4 + 4)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_4 + 4)" ( (binary_expression "param_4 + 4" identifier + number_literal) )))) = identifier) ;) }) (else_clause "else if (piVar6 == (int *)piVar7[3]) {\n              piVar7[3] = (int)param_2;\n            }\n            else {\n              piVar7[2] = (int)param_2;\n            }" else (if_statement "if (piVar6 == (int *)piVar7[3]) {\n              piVar7[3] = (int)param_2;\n            }\n            else {\n              piVar7[2] = (int)param_2;\n            }" if (parenthesized_expression "(piVar6 == (int *)piVar7[3])" ( (binary_expression "piVar6 == (int *)piVar7[3]" identifier == (cast_expression "(int *)piVar7[3]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar7[3]" identifier [ number_literal ]))) )) (compound_statement "{\n              piVar7[3] = (int)param_2;\n            }" { (expression_statement "piVar7[3] = (int)param_2;" (assignment_expression "piVar7[3] = (int)param_2" (subscript_expression "piVar7[3]" identifier [ number_literal ]) = (cast_expression "(int)param_2" ( (type_descriptor "int" primitive_type) ) identifier)) ;) }) (else_clause "else {\n              piVar7[2] = (int)param_2;\n            }" else (compound_statement "{\n              piVar7[2] = (int)param_2;\n            }" { (expression_statement "piVar7[2] = (int)param_2;" (assignment_expression "piVar7[2] = (int)param_2" (subscript_expression "piVar7[2]" identifier [ number_literal ]) = (cast_expression "(int)param_2" ( (type_descriptor "int" primitive_type) ) identifier)) ;) }))))) (expression_statement "param_2[3] = (int)piVar6;" (assignment_expression "param_2[3] = (int)piVar6" (subscript_expression "param_2[3]" identifier [ number_literal ]) = (cast_expression "(int)piVar6" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "piVar6[1] = (int)param_2;" (assignment_expression "piVar6[1] = (int)param_2" (subscript_expression "piVar6[1]" identifier [ number_literal ]) = (cast_expression "(int)param_2" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "piVar4 = piVar6;" (assignment_expression "piVar4 = piVar6" identifier = identifier) ;) (expression_statement "piVar6 = param_2;" (assignment_expression "piVar6 = param_2" identifier = identifier) ;) })) (expression_statement "*piVar6 = 1;" (assignment_expression "*piVar6 = 1" (pointer_expression "*piVar6" * identifier) = number_literal) ;) (expression_statement "iVar2 = piVar1[3];" (assignment_expression "iVar2 = piVar1[3]" identifier = (subscript_expression "piVar1[3]" identifier [ number_literal ])) ;) (expression_statement "*piVar1 = 0;" (assignment_expression "*piVar1 = 0" (pointer_expression "*piVar1" * identifier) = number_literal) ;) (expression_statement "iVar3 = *(int *)(iVar2 + 8);" (assignment_expression "iVar3 = *(int *)(iVar2 + 8)" identifier = (pointer_expression "*(int *)(iVar2 + 8)" * (cast_expression "(int *)(iVar2 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 8)" ( (binary_expression "iVar2 + 8" identifier + number_literal) ))))) ;) (expression_statement "piVar1[3] = iVar3;" (assignment_expression "piVar1[3] = iVar3" (subscript_expression "piVar1[3]" identifier [ number_literal ]) = identifier) ;) (if_statement "if (iVar3 != 0) {\n            *(int **)(iVar3 + 4) = piVar1;\n          }" if (parenthesized_expression "(iVar3 != 0)" ( (binary_expression "iVar3 != 0" identifier != number_literal) )) (compound_statement "{\n            *(int **)(iVar3 + 4) = piVar1;\n          }" { (expression_statement "*(int **)(iVar3 + 4) = piVar1;" (assignment_expression "*(int **)(iVar3 + 4) = piVar1" (pointer_expression "*(int **)(iVar3 + 4)" * (cast_expression "(int **)(iVar3 + 4)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar3 + 4)" ( (binary_expression "iVar3 + 4" identifier + number_literal) )))) = identifier) ;) })) (expression_statement "iVar3 = piVar1[1];" (assignment_expression "iVar3 = piVar1[1]" identifier = (subscript_expression "piVar1[1]" identifier [ number_literal ])) ;) (expression_statement "*(int *)(iVar2 + 4) = iVar3;" (assignment_expression "*(int *)(iVar2 + 4) = iVar3" (pointer_expression "*(int *)(iVar2 + 4)" * (cast_expression "(int *)(iVar2 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 4)" ( (binary_expression "iVar2 + 4" identifier + number_literal) )))) = identifier) ;) (if_statement "if (piVar1 == *(int **)(param_4 + 4)) {\n            *(int *)(param_4 + 4) = iVar2;\n          }\n          else if (piVar1 == *(int **)(iVar3 + 8)) {\n            *(int *)(iVar3 + 8) = iVar2;\n          }\n          else {\n            *(int *)(iVar3 + 0xc) = iVar2;\n          }" if (parenthesized_expression "(piVar1 == *(int **)(param_4 + 4))" ( (binary_expression "piVar1 == *(int **)(param_4 + 4)" identifier == (pointer_expression "*(int **)(param_4 + 4)" * (cast_expression "(int **)(param_4 + 4)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_4 + 4)" ( (binary_expression "param_4 + 4" identifier + number_literal) ))))) )) (compound_statement "{\n            *(int *)(param_4 + 4) = iVar2;\n          }" { (expression_statement "*(int *)(param_4 + 4) = iVar2;" (assignment_expression "*(int *)(param_4 + 4) = iVar2" (pointer_expression "*(int *)(param_4 + 4)" * (cast_expression "(int *)(param_4 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_4 + 4)" ( (binary_expression "param_4 + 4" identifier + number_literal) )))) = identifier) ;) }) (else_clause "else if (piVar1 == *(int **)(iVar3 + 8)) {\n            *(int *)(iVar3 + 8) = iVar2;\n          }\n          else {\n            *(int *)(iVar3 + 0xc) = iVar2;\n          }" else (if_statement "if (piVar1 == *(int **)(iVar3 + 8)) {\n            *(int *)(iVar3 + 8) = iVar2;\n          }\n          else {\n            *(int *)(iVar3 + 0xc) = iVar2;\n          }" if (parenthesized_expression "(piVar1 == *(int **)(iVar3 + 8))" ( (binary_expression "piVar1 == *(int **)(iVar3 + 8)" identifier == (pointer_expression "*(int **)(iVar3 + 8)" * (cast_expression "(int **)(iVar3 + 8)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar3 + 8)" ( (binary_expression "iVar3 + 8" identifier + number_literal) ))))) )) (compound_statement "{\n            *(int *)(iVar3 + 8) = iVar2;\n          }" { (expression_statement "*(int *)(iVar3 + 8) = iVar2;" (assignment_expression "*(int *)(iVar3 + 8) = iVar2" (pointer_expression "*(int *)(iVar3 + 8)" * (cast_expression "(int *)(iVar3 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 8)" ( (binary_expression "iVar3 + 8" identifier + number_literal) )))) = identifier) ;) }) (else_clause "else {\n            *(int *)(iVar3 + 0xc) = iVar2;\n          }" else (compound_statement "{\n            *(int *)(iVar3 + 0xc) = iVar2;\n          }" { (expression_statement "*(int *)(iVar3 + 0xc) = iVar2;" (assignment_expression "*(int *)(iVar3 + 0xc) = iVar2" (pointer_expression "*(int *)(iVar3 + 0xc)" * (cast_expression "(int *)(iVar3 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 0xc)" ( (binary_expression "iVar3 + 0xc" identifier + number_literal) )))) = identifier) ;) }))))) (expression_statement "*(int **)(iVar2 + 8) = piVar1;" (assignment_expression "*(int **)(iVar2 + 8) = piVar1" (pointer_expression "*(int **)(iVar2 + 8)" * (cast_expression "(int **)(iVar2 + 8)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar2 + 8)" ( (binary_expression "iVar2 + 8" identifier + number_literal) )))) = identifier) ;) (expression_statement "piVar1[1] = iVar2;" (assignment_expression "piVar1[1] = iVar2" (subscript_expression "piVar1[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "piVar7 = *(int **)(param_4 + 4);" (assignment_expression "piVar7 = *(int **)(param_4 + 4)" identifier = (pointer_expression "*(int **)(param_4 + 4)" * (cast_expression "(int **)(param_4 + 4)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_4 + 4)" ( (binary_expression "param_4 + 4" identifier + number_literal) ))))) ;) (expression_statement "param_2 = piVar4;" (assignment_expression "param_2 = piVar4" identifier = identifier) ;) }) (else_clause "else {\n          *piVar6 = 1;\n          *piVar4 = 1;\n          *piVar1 = 0;\n          param_2 = piVar1;\n        }" else (compound_statement "{\n          *piVar6 = 1;\n          *piVar4 = 1;\n          *piVar1 = 0;\n          param_2 = piVar1;\n        }" { (expression_statement "*piVar6 = 1;" (assignment_expression "*piVar6 = 1" (pointer_expression "*piVar6" * identifier) = number_literal) ;) (expression_statement "*piVar4 = 1;" (assignment_expression "*piVar4 = 1" (pointer_expression "*piVar4" * identifier) = number_literal) ;) (expression_statement "*piVar1 = 0;" (assignment_expression "*piVar1 = 0" (pointer_expression "*piVar1" * identifier) = number_literal) ;) (expression_statement "param_2 = piVar1;" (assignment_expression "param_2 = piVar1" identifier = identifier) ;) }))) })) (expression_statement "piVar5 = (int *)piVar1[3];" (assignment_expression "piVar5 = (int *)piVar1[3]" identifier = (cast_expression "(int *)piVar1[3]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar1[3]" identifier [ number_literal ]))) ;) (if_statement "if ((piVar5 == (int *)0x0) || (*piVar5 != 0)) break;" if (parenthesized_expression "((piVar5 == (int *)0x0) || (*piVar5 != 0))" ( (binary_expression "(piVar5 == (int *)0x0) || (*piVar5 != 0)" (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 != 0)" ( (binary_expression "*piVar5 != 0" (pointer_expression "*piVar5" * identifier) != number_literal) ))) )) (break_statement "break;" break ;)) (expression_statement "*piVar6 = 1;" (assignment_expression "*piVar6 = 1" (pointer_expression "*piVar6" * identifier) = number_literal) ;) (expression_statement "*piVar5 = 1;" (assignment_expression "*piVar5 = 1" (pointer_expression "*piVar5" * identifier) = number_literal) ;) (expression_statement "*piVar1 = 0;" (assignment_expression "*piVar1 = 0" (pointer_expression "*piVar1" * identifier) = number_literal) ;) (expression_statement "param_2 = piVar1;" (assignment_expression "param_2 = piVar1" identifier = identifier) ;) })) (expression_statement "piVar5 = param_2;" (assignment_expression "piVar5 = param_2" identifier = identifier) ;) (if_statement "if ((int *)piVar6[3] == param_2) {\n      iVar2 = param_2[2];\n      piVar6[3] = iVar2;\n      if (iVar2 == 0) {\n        param_2[1] = (int)piVar1;\n        piVar7 = piVar1;\n        if (piVar6 == *(int **)(param_4 + 4)) goto LAB_001fe9e0;\nLAB_001fe9d2:\n        piVar7[2] = (int)param_2;\n      }\n      else {\n        *(int **)(iVar2 + 4) = piVar6;\n        piVar7 = (int *)piVar6[1];\n        param_2[1] = (int)piVar7;\n        if (piVar6 == *(int **)(param_4 + 4)) {\nLAB_001fe9e0:\n          *(int **)(param_4 + 4) = param_2;\n        }\n        else {\n          if (piVar6 == (int *)piVar7[2]) goto LAB_001fe9d2;\n          piVar7[3] = (int)param_2;\n        }\n      }\n      param_2[2] = (int)piVar6;\n      piVar4 = (int *)piVar1[2];\n      piVar6[1] = (int)param_2;\n      piVar5 = piVar6;\n      piVar6 = param_2;\n    }" if (parenthesized_expression "((int *)piVar6[3] == param_2)" ( (binary_expression "(int *)piVar6[3] == param_2" (cast_expression "(int *)piVar6[3]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar6[3]" identifier [ number_literal ])) == identifier) )) (compound_statement "{\n      iVar2 = param_2[2];\n      piVar6[3] = iVar2;\n      if (iVar2 == 0) {\n        param_2[1] = (int)piVar1;\n        piVar7 = piVar1;\n        if (piVar6 == *(int **)(param_4 + 4)) goto LAB_001fe9e0;\nLAB_001fe9d2:\n        piVar7[2] = (int)param_2;\n      }\n      else {\n        *(int **)(iVar2 + 4) = piVar6;\n        piVar7 = (int *)piVar6[1];\n        param_2[1] = (int)piVar7;\n        if (piVar6 == *(int **)(param_4 + 4)) {\nLAB_001fe9e0:\n          *(int **)(param_4 + 4) = param_2;\n        }\n        else {\n          if (piVar6 == (int *)piVar7[2]) goto LAB_001fe9d2;\n          piVar7[3] = (int)param_2;\n        }\n      }\n      param_2[2] = (int)piVar6;\n      piVar4 = (int *)piVar1[2];\n      piVar6[1] = (int)param_2;\n      piVar5 = piVar6;\n      piVar6 = param_2;\n    }" { (expression_statement "iVar2 = param_2[2];" (assignment_expression "iVar2 = param_2[2]" identifier = (subscript_expression "param_2[2]" identifier [ number_literal ])) ;) (expression_statement "piVar6[3] = iVar2;" (assignment_expression "piVar6[3] = iVar2" (subscript_expression "piVar6[3]" identifier [ number_literal ]) = identifier) ;) (if_statement "if (iVar2 == 0) {\n        param_2[1] = (int)piVar1;\n        piVar7 = piVar1;\n        if (piVar6 == *(int **)(param_4 + 4)) goto LAB_001fe9e0;\nLAB_001fe9d2:\n        piVar7[2] = (int)param_2;\n      }\n      else {\n        *(int **)(iVar2 + 4) = piVar6;\n        piVar7 = (int *)piVar6[1];\n        param_2[1] = (int)piVar7;\n        if (piVar6 == *(int **)(param_4 + 4)) {\nLAB_001fe9e0:\n          *(int **)(param_4 + 4) = param_2;\n        }\n        else {\n          if (piVar6 == (int *)piVar7[2]) goto LAB_001fe9d2;\n          piVar7[3] = (int)param_2;\n        }\n      }" if (parenthesized_expression "(iVar2 == 0)" ( (binary_expression "iVar2 == 0" identifier == number_literal) )) (compound_statement "{\n        param_2[1] = (int)piVar1;\n        piVar7 = piVar1;\n        if (piVar6 == *(int **)(param_4 + 4)) goto LAB_001fe9e0;\nLAB_001fe9d2:\n        piVar7[2] = (int)param_2;\n      }" { (expression_statement "param_2[1] = (int)piVar1;" (assignment_expression "param_2[1] = (int)piVar1" (subscript_expression "param_2[1]" identifier [ number_literal ]) = (cast_expression "(int)piVar1" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "piVar7 = piVar1;" (assignment_expression "piVar7 = piVar1" identifier = identifier) ;) (if_statement "if (piVar6 == *(int **)(param_4 + 4)) goto LAB_001fe9e0;" if (parenthesized_expression "(piVar6 == *(int **)(param_4 + 4))" ( (binary_expression "piVar6 == *(int **)(param_4 + 4)" identifier == (pointer_expression "*(int **)(param_4 + 4)" * (cast_expression "(int **)(param_4 + 4)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_4 + 4)" ( (binary_expression "param_4 + 4" identifier + number_literal) ))))) )) (goto_statement "goto LAB_001fe9e0;" goto statement_identifier ;)) (labeled_statement "LAB_001fe9d2:\n        piVar7[2] = (int)param_2;" statement_identifier : (expression_statement "piVar7[2] = (int)param_2;" (assignment_expression "piVar7[2] = (int)param_2" (subscript_expression "piVar7[2]" identifier [ number_literal ]) = (cast_expression "(int)param_2" ( (type_descriptor "int" primitive_type) ) identifier)) ;)) }) (else_clause "else {\n        *(int **)(iVar2 + 4) = piVar6;\n        piVar7 = (int *)piVar6[1];\n        param_2[1] = (int)piVar7;\n        if (piVar6 == *(int **)(param_4 + 4)) {\nLAB_001fe9e0:\n          *(int **)(param_4 + 4) = param_2;\n        }\n        else {\n          if (piVar6 == (int *)piVar7[2]) goto LAB_001fe9d2;\n          piVar7[3] = (int)param_2;\n        }\n      }" else (compound_statement "{\n        *(int **)(iVar2 + 4) = piVar6;\n        piVar7 = (int *)piVar6[1];\n        param_2[1] = (int)piVar7;\n        if (piVar6 == *(int **)(param_4 + 4)) {\nLAB_001fe9e0:\n          *(int **)(param_4 + 4) = param_2;\n        }\n        else {\n          if (piVar6 == (int *)piVar7[2]) goto LAB_001fe9d2;\n          piVar7[3] = (int)param_2;\n        }\n      }" { (expression_statement "*(int **)(iVar2 + 4) = piVar6;" (assignment_expression "*(int **)(iVar2 + 4) = piVar6" (pointer_expression "*(int **)(iVar2 + 4)" * (cast_expression "(int **)(iVar2 + 4)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar2 + 4)" ( (binary_expression "iVar2 + 4" identifier + number_literal) )))) = identifier) ;) (expression_statement "piVar7 = (int *)piVar6[1];" (assignment_expression "piVar7 = (int *)piVar6[1]" identifier = (cast_expression "(int *)piVar6[1]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar6[1]" identifier [ number_literal ]))) ;) (expression_statement "param_2[1] = (int)piVar7;" (assignment_expression "param_2[1] = (int)piVar7" (subscript_expression "param_2[1]" identifier [ number_literal ]) = (cast_expression "(int)piVar7" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (if_statement "if (piVar6 == *(int **)(param_4 + 4)) {\nLAB_001fe9e0:\n          *(int **)(param_4 + 4) = param_2;\n        }\n        else {\n          if (piVar6 == (int *)piVar7[2]) goto LAB_001fe9d2;\n          piVar7[3] = (int)param_2;\n        }" if (parenthesized_expression "(piVar6 == *(int **)(param_4 + 4))" ( (binary_expression "piVar6 == *(int **)(param_4 + 4)" identifier == (pointer_expression "*(int **)(param_4 + 4)" * (cast_expression "(int **)(param_4 + 4)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_4 + 4)" ( (binary_expression "param_4 + 4" identifier + number_literal) ))))) )) (compound_statement "{\nLAB_001fe9e0:\n          *(int **)(param_4 + 4) = param_2;\n        }" { (labeled_statement "LAB_001fe9e0:\n          *(int **)(param_4 + 4) = param_2;" statement_identifier : (expression_statement "*(int **)(param_4 + 4) = param_2;" (assignment_expression "*(int **)(param_4 + 4) = param_2" (pointer_expression "*(int **)(param_4 + 4)" * (cast_expression "(int **)(param_4 + 4)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_4 + 4)" ( (binary_expression "param_4 + 4" identifier + number_literal) )))) = identifier) ;)) }) (else_clause "else {\n          if (piVar6 == (int *)piVar7[2]) goto LAB_001fe9d2;\n          piVar7[3] = (int)param_2;\n        }" else (compound_statement "{\n          if (piVar6 == (int *)piVar7[2]) goto LAB_001fe9d2;\n          piVar7[3] = (int)param_2;\n        }" { (if_statement "if (piVar6 == (int *)piVar7[2]) goto LAB_001fe9d2;" if (parenthesized_expression "(piVar6 == (int *)piVar7[2])" ( (binary_expression "piVar6 == (int *)piVar7[2]" identifier == (cast_expression "(int *)piVar7[2]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar7[2]" identifier [ number_literal ]))) )) (goto_statement "goto LAB_001fe9d2;" goto statement_identifier ;)) (expression_statement "piVar7[3] = (int)param_2;" (assignment_expression "piVar7[3] = (int)param_2" (subscript_expression "piVar7[3]" identifier [ number_literal ]) = (cast_expression "(int)param_2" ( (type_descriptor "int" primitive_type) ) identifier)) ;) }))) }))) (expression_statement "param_2[2] = (int)piVar6;" (assignment_expression "param_2[2] = (int)piVar6" (subscript_expression "param_2[2]" identifier [ number_literal ]) = (cast_expression "(int)piVar6" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "piVar4 = (int *)piVar1[2];" (assignment_expression "piVar4 = (int *)piVar1[2]" identifier = (cast_expression "(int *)piVar1[2]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar1[2]" identifier [ number_literal ]))) ;) (expression_statement "piVar6[1] = (int)param_2;" (assignment_expression "piVar6[1] = (int)param_2" (subscript_expression "piVar6[1]" identifier [ number_literal ]) = (cast_expression "(int)param_2" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "piVar5 = piVar6;" (assignment_expression "piVar5 = piVar6" identifier = identifier) ;) (expression_statement "piVar6 = param_2;" (assignment_expression "piVar6 = param_2" identifier = identifier) ;) })) (expression_statement "*piVar6 = 1;" (assignment_expression "*piVar6 = 1" (pointer_expression "*piVar6" * identifier) = number_literal) ;) (expression_statement "iVar2 = piVar4[3];" (assignment_expression "iVar2 = piVar4[3]" identifier = (subscript_expression "piVar4[3]" identifier [ number_literal ])) ;) (expression_statement "*piVar1 = 0;" (assignment_expression "*piVar1 = 0" (pointer_expression "*piVar1" * identifier) = number_literal) ;) (expression_statement "piVar1[2] = iVar2;" (assignment_expression "piVar1[2] = iVar2" (subscript_expression "piVar1[2]" identifier [ number_literal ]) = identifier) ;) (if_statement "if (iVar2 != 0) {\n      *(int **)(iVar2 + 4) = piVar1;\n    }" if (parenthesized_expression "(iVar2 != 0)" ( (binary_expression "iVar2 != 0" identifier != number_literal) )) (compound_statement "{\n      *(int **)(iVar2 + 4) = piVar1;\n    }" { (expression_statement "*(int **)(iVar2 + 4) = piVar1;" (assignment_expression "*(int **)(iVar2 + 4) = piVar1" (pointer_expression "*(int **)(iVar2 + 4)" * (cast_expression "(int **)(iVar2 + 4)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar2 + 4)" ( (binary_expression "iVar2 + 4" identifier + number_literal) )))) = identifier) ;) })) (expression_statement "iVar2 = piVar1[1];" (assignment_expression "iVar2 = piVar1[1]" identifier = (subscript_expression "piVar1[1]" identifier [ number_literal ])) ;) (expression_statement "piVar4[1] = iVar2;" (assignment_expression "piVar4[1] = iVar2" (subscript_expression "piVar4[1]" identifier [ number_literal ]) = identifier) ;) (if_statement "if (piVar1 == *(int **)(param_4 + 4)) {\n      *(int **)(param_4 + 4) = piVar4;\n    }\n    else if (piVar1 == *(int **)(iVar2 + 0xc)) {\n      *(int **)(iVar2 + 0xc) = piVar4;\n    }\n    else {\n      *(int **)(iVar2 + 8) = piVar4;\n    }" if (parenthesized_expression "(piVar1 == *(int **)(param_4 + 4))" ( (binary_expression "piVar1 == *(int **)(param_4 + 4)" identifier == (pointer_expression "*(int **)(param_4 + 4)" * (cast_expression "(int **)(param_4 + 4)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_4 + 4)" ( (binary_expression "param_4 + 4" identifier + number_literal) ))))) )) (compound_statement "{\n      *(int **)(param_4 + 4) = piVar4;\n    }" { (expression_statement "*(int **)(param_4 + 4) = piVar4;" (assignment_expression "*(int **)(param_4 + 4) = piVar4" (pointer_expression "*(int **)(param_4 + 4)" * (cast_expression "(int **)(param_4 + 4)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_4 + 4)" ( (binary_expression "param_4 + 4" identifier + number_literal) )))) = identifier) ;) }) (else_clause "else if (piVar1 == *(int **)(iVar2 + 0xc)) {\n      *(int **)(iVar2 + 0xc) = piVar4;\n    }\n    else {\n      *(int **)(iVar2 + 8) = piVar4;\n    }" else (if_statement "if (piVar1 == *(int **)(iVar2 + 0xc)) {\n      *(int **)(iVar2 + 0xc) = piVar4;\n    }\n    else {\n      *(int **)(iVar2 + 8) = piVar4;\n    }" if (parenthesized_expression "(piVar1 == *(int **)(iVar2 + 0xc))" ( (binary_expression "piVar1 == *(int **)(iVar2 + 0xc)" identifier == (pointer_expression "*(int **)(iVar2 + 0xc)" * (cast_expression "(int **)(iVar2 + 0xc)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar2 + 0xc)" ( (binary_expression "iVar2 + 0xc" identifier + number_literal) ))))) )) (compound_statement "{\n      *(int **)(iVar2 + 0xc) = piVar4;\n    }" { (expression_statement "*(int **)(iVar2 + 0xc) = piVar4;" (assignment_expression "*(int **)(iVar2 + 0xc) = piVar4" (pointer_expression "*(int **)(iVar2 + 0xc)" * (cast_expression "(int **)(iVar2 + 0xc)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar2 + 0xc)" ( (binary_expression "iVar2 + 0xc" identifier + number_literal) )))) = identifier) ;) }) (else_clause "else {\n      *(int **)(iVar2 + 8) = piVar4;\n    }" else (compound_statement "{\n      *(int **)(iVar2 + 8) = piVar4;\n    }" { (expression_statement "*(int **)(iVar2 + 8) = piVar4;" (assignment_expression "*(int **)(iVar2 + 8) = piVar4" (pointer_expression "*(int **)(iVar2 + 8)" * (cast_expression "(int **)(iVar2 + 8)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar2 + 8)" ( (binary_expression "iVar2 + 8" identifier + number_literal) )))) = identifier) ;) }))))) (expression_statement "piVar4[3] = (int)piVar1;" (assignment_expression "piVar4[3] = (int)piVar1" (subscript_expression "piVar4[3]" identifier [ number_literal ]) = (cast_expression "(int)piVar1" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "piVar1[1] = (int)piVar4;" (assignment_expression "piVar1[1] = (int)piVar4" (subscript_expression "piVar1[1]" identifier [ number_literal ]) = (cast_expression "(int)piVar4" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "piVar7 = *(int **)(param_4 + 4);" (assignment_expression "piVar7 = *(int **)(param_4 + 4)" identifier = (pointer_expression "*(int **)(param_4 + 4)" * (cast_expression "(int **)(param_4 + 4)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_4 + 4)" ( (binary_expression "param_4 + 4" identifier + number_literal) ))))) ;) (expression_statement "param_2 = piVar5;" (assignment_expression "param_2 = piVar5" identifier = identifier) ;) }) while (parenthesized_expression "( true )" ( true )) ;)) })))
(translation_unit "/* WARNING: Unknown calling convention -- yet parameter storage is locked */\n/* std::_Rb_tree_insert_and_rebalance(bool, std::_Rb_tree_node_base*, std::_Rb_tree_node_base*,\n   std::_Rb_tree_node_base&) */\n\nvoid std::_Rb_tree_insert_and_rebalance\n               (bool param_1,_Rb_tree_node_base *param_2,_Rb_tree_node_base *param_3,\n               _Rb_tree_node_base *param_4)\n\n{\n  _Base_ptr p_Var1;\n  _Rb_tree_node_base *p_Var2;\n  _Rb_tree_node_base *p_Var3;\n  _Rb_tree_node_base *p_Var4;\n  _Base_ptr p_Var5;\n  _Base_ptr p_Var6;\n  _Rb_tree_node_base *p_Var7;\n  \n  param_2->_M_parent = param_3;\n  param_2->_M_left = (_Base_ptr)0x0;\n  param_2->_M_right = (_Base_ptr)0x0;\n  param_2->_M_color = _S_red;\n  if (param_1) {\n    param_3->_M_left = param_2;\n    if (param_4 == param_3) {\n      param_4->_M_parent = param_2;\n      param_4->_M_right = param_2;\n      param_2->_M_color = _S_black;\n      return;\n    }\n    if (param_4->_M_left == param_3) {\n      param_4->_M_left = param_2;\n      p_Var7 = param_4->_M_parent;\n      goto joined_r0x001fe792;\n    }\n  }\n  else {\n    param_3->_M_right = param_2;\n    if (param_4->_M_right == param_3) {\n      param_4->_M_right = param_2;\n    }\n  }\n  p_Var7 = param_4->_M_parent;\njoined_r0x001fe792:\n  do {\n    while( true ) {\n      while( true ) {\n        if ((param_2 == p_Var7) || (p_Var4 = param_2->_M_parent, p_Var4->_M_color != _S_red)) {\n          p_Var7->_M_color = _S_black;\n          return;\n        }\n        p_Var1 = p_Var4->_M_parent;\n        p_Var2 = p_Var1->_M_left;\n        if (p_Var4 == p_Var2) break;\n        if ((p_Var2 == (_Rb_tree_node_base *)0x0) || (p_Var2->_M_color != _S_red)) {\n          p_Var2 = param_2;\n          if (p_Var4->_M_left == param_2) {\n            p_Var6 = param_2->_M_right;\n            p_Var4->_M_left = p_Var6;\n            p_Var5 = p_Var1;\n            if (p_Var6 != (_Base_ptr)0x0) {\n              p_Var6->_M_parent = p_Var4;\n              p_Var5 = p_Var4->_M_parent;\n            }\n            param_2->_M_parent = p_Var5;\n            if (p_Var4 == param_4->_M_parent) {\n              param_4->_M_parent = param_2;\n            }\n            else if (p_Var4 == p_Var5->_M_right) {\n              p_Var5->_M_right = param_2;\n            }\n            else {\n              p_Var5->_M_left = param_2;\n            }\n            param_2->_M_right = p_Var4;\n            p_Var4->_M_parent = param_2;\n            p_Var2 = p_Var4;\n            p_Var4 = param_2;\n          }\n          p_Var4->_M_color = _S_black;\n          p_Var6 = p_Var1->_M_right;\n          p_Var1->_M_color = _S_red;\n          p_Var5 = p_Var6->_M_left;\n          p_Var1->_M_right = p_Var5;\n          if (p_Var5 != (_Base_ptr)0x0) {\n            p_Var5->_M_parent = p_Var1;\n          }\n          p_Var5 = p_Var1->_M_parent;\n          p_Var6->_M_parent = p_Var5;\n          if (p_Var1 == param_4->_M_parent) {\n            param_4->_M_parent = p_Var6;\n          }\n          else if (p_Var1 == p_Var5->_M_left) {\n            p_Var5->_M_left = p_Var6;\n          }\n          else {\n            p_Var5->_M_right = p_Var6;\n          }\n          p_Var6->_M_left = p_Var1;\n          p_Var1->_M_parent = p_Var6;\n          p_Var7 = param_4->_M_parent;\n          param_2 = p_Var2;\n        }\n        else {\n          p_Var4->_M_color = _S_black;\n          p_Var2->_M_color = _S_black;\n          p_Var1->_M_color = _S_red;\n          param_2 = p_Var1;\n        }\n      }\n      p_Var6 = p_Var1->_M_right;\n      if ((p_Var6 == (_Base_ptr)0x0) || (p_Var6->_M_color != _S_red)) break;\n      p_Var4->_M_color = _S_black;\n      p_Var6->_M_color = _S_black;\n      p_Var1->_M_color = _S_red;\n      param_2 = p_Var1;\n    }\n    p_Var3 = param_2;\n    if (p_Var4->_M_right == param_2) {\n      p_Var6 = param_2->_M_left;\n      p_Var4->_M_right = p_Var6;\n      if (p_Var6 == (_Base_ptr)0x0) {\n        param_2->_M_parent = p_Var1;\n        p_Var6 = p_Var1;\n        if (p_Var4 == param_4->_M_parent) goto LAB_001fe9e0;\nLAB_001fe9d2:\n        p_Var6->_M_left = param_2;\n      }\n      else {\n        p_Var6->_M_parent = p_Var4;\n        p_Var6 = p_Var4->_M_parent;\n        param_2->_M_parent = p_Var6;\n        if (p_Var4 == param_4->_M_parent) {\nLAB_001fe9e0:\n          param_4->_M_parent = param_2;\n        }\n        else {\n          if (p_Var4 == p_Var6->_M_left) goto LAB_001fe9d2;\n          p_Var6->_M_right = param_2;\n        }\n      }\n      param_2->_M_left = p_Var4;\n      p_Var2 = p_Var1->_M_left;\n      p_Var4->_M_parent = param_2;\n      p_Var3 = p_Var4;\n      p_Var4 = param_2;\n    }\n    p_Var4->_M_color = _S_black;\n    p_Var6 = p_Var2->_M_right;\n    p_Var1->_M_color = _S_red;\n    p_Var1->_M_left = p_Var6;\n    if (p_Var6 != (_Base_ptr)0x0) {\n      p_Var6->_M_parent = p_Var1;\n    }\n    p_Var6 = p_Var1->_M_parent;\n    p_Var2->_M_parent = p_Var6;\n    if (p_Var1 == param_4->_M_parent) {\n      param_4->_M_parent = p_Var2;\n    }\n    else if (p_Var1 == p_Var6->_M_right) {\n      p_Var6->_M_right = p_Var2;\n    }\n    else {\n      p_Var6->_M_left = p_Var2;\n    }\n    p_Var2->_M_right = p_Var1;\n    p_Var1->_M_parent = p_Var2;\n    p_Var7 = param_4->_M_parent;\n    param_2 = p_Var3;\n  } while( true );\n}\n\n" comment comment (function_definition "void std::_Rb_tree_insert_and_rebalance\n               (bool param_1,_Rb_tree_node_base *param_2,_Rb_tree_node_base *param_3,\n               _Rb_tree_node_base *param_4)\n\n{\n  _Base_ptr p_Var1;\n  _Rb_tree_node_base *p_Var2;\n  _Rb_tree_node_base *p_Var3;\n  _Rb_tree_node_base *p_Var4;\n  _Base_ptr p_Var5;\n  _Base_ptr p_Var6;\n  _Rb_tree_node_base *p_Var7;\n  \n  param_2->_M_parent = param_3;\n  param_2->_M_left = (_Base_ptr)0x0;\n  param_2->_M_right = (_Base_ptr)0x0;\n  param_2->_M_color = _S_red;\n  if (param_1) {\n    param_3->_M_left = param_2;\n    if (param_4 == param_3) {\n      param_4->_M_parent = param_2;\n      param_4->_M_right = param_2;\n      param_2->_M_color = _S_black;\n      return;\n    }\n    if (param_4->_M_left == param_3) {\n      param_4->_M_left = param_2;\n      p_Var7 = param_4->_M_parent;\n      goto joined_r0x001fe792;\n    }\n  }\n  else {\n    param_3->_M_right = param_2;\n    if (param_4->_M_right == param_3) {\n      param_4->_M_right = param_2;\n    }\n  }\n  p_Var7 = param_4->_M_parent;\njoined_r0x001fe792:\n  do {\n    while( true ) {\n      while( true ) {\n        if ((param_2 == p_Var7) || (p_Var4 = param_2->_M_parent, p_Var4->_M_color != _S_red)) {\n          p_Var7->_M_color = _S_black;\n          return;\n        }\n        p_Var1 = p_Var4->_M_parent;\n        p_Var2 = p_Var1->_M_left;\n        if (p_Var4 == p_Var2) break;\n        if ((p_Var2 == (_Rb_tree_node_base *)0x0) || (p_Var2->_M_color != _S_red)) {\n          p_Var2 = param_2;\n          if (p_Var4->_M_left == param_2) {\n            p_Var6 = param_2->_M_right;\n            p_Var4->_M_left = p_Var6;\n            p_Var5 = p_Var1;\n            if (p_Var6 != (_Base_ptr)0x0) {\n              p_Var6->_M_parent = p_Var4;\n              p_Var5 = p_Var4->_M_parent;\n            }\n            param_2->_M_parent = p_Var5;\n            if (p_Var4 == param_4->_M_parent) {\n              param_4->_M_parent = param_2;\n            }\n            else if (p_Var4 == p_Var5->_M_right) {\n              p_Var5->_M_right = param_2;\n            }\n            else {\n              p_Var5->_M_left = param_2;\n            }\n            param_2->_M_right = p_Var4;\n            p_Var4->_M_parent = param_2;\n            p_Var2 = p_Var4;\n            p_Var4 = param_2;\n          }\n          p_Var4->_M_color = _S_black;\n          p_Var6 = p_Var1->_M_right;\n          p_Var1->_M_color = _S_red;\n          p_Var5 = p_Var6->_M_left;\n          p_Var1->_M_right = p_Var5;\n          if (p_Var5 != (_Base_ptr)0x0) {\n            p_Var5->_M_parent = p_Var1;\n          }\n          p_Var5 = p_Var1->_M_parent;\n          p_Var6->_M_parent = p_Var5;\n          if (p_Var1 == param_4->_M_parent) {\n            param_4->_M_parent = p_Var6;\n          }\n          else if (p_Var1 == p_Var5->_M_left) {\n            p_Var5->_M_left = p_Var6;\n          }\n          else {\n            p_Var5->_M_right = p_Var6;\n          }\n          p_Var6->_M_left = p_Var1;\n          p_Var1->_M_parent = p_Var6;\n          p_Var7 = param_4->_M_parent;\n          param_2 = p_Var2;\n        }\n        else {\n          p_Var4->_M_color = _S_black;\n          p_Var2->_M_color = _S_black;\n          p_Var1->_M_color = _S_red;\n          param_2 = p_Var1;\n        }\n      }\n      p_Var6 = p_Var1->_M_right;\n      if ((p_Var6 == (_Base_ptr)0x0) || (p_Var6->_M_color != _S_red)) break;\n      p_Var4->_M_color = _S_black;\n      p_Var6->_M_color = _S_black;\n      p_Var1->_M_color = _S_red;\n      param_2 = p_Var1;\n    }\n    p_Var3 = param_2;\n    if (p_Var4->_M_right == param_2) {\n      p_Var6 = param_2->_M_left;\n      p_Var4->_M_right = p_Var6;\n      if (p_Var6 == (_Base_ptr)0x0) {\n        param_2->_M_parent = p_Var1;\n        p_Var6 = p_Var1;\n        if (p_Var4 == param_4->_M_parent) goto LAB_001fe9e0;\nLAB_001fe9d2:\n        p_Var6->_M_left = param_2;\n      }\n      else {\n        p_Var6->_M_parent = p_Var4;\n        p_Var6 = p_Var4->_M_parent;\n        param_2->_M_parent = p_Var6;\n        if (p_Var4 == param_4->_M_parent) {\nLAB_001fe9e0:\n          param_4->_M_parent = param_2;\n        }\n        else {\n          if (p_Var4 == p_Var6->_M_left) goto LAB_001fe9d2;\n          p_Var6->_M_right = param_2;\n        }\n      }\n      param_2->_M_left = p_Var4;\n      p_Var2 = p_Var1->_M_left;\n      p_Var4->_M_parent = param_2;\n      p_Var3 = p_Var4;\n      p_Var4 = param_2;\n    }\n    p_Var4->_M_color = _S_black;\n    p_Var6 = p_Var2->_M_right;\n    p_Var1->_M_color = _S_red;\n    p_Var1->_M_left = p_Var6;\n    if (p_Var6 != (_Base_ptr)0x0) {\n      p_Var6->_M_parent = p_Var1;\n    }\n    p_Var6 = p_Var1->_M_parent;\n    p_Var2->_M_parent = p_Var6;\n    if (p_Var1 == param_4->_M_parent) {\n      param_4->_M_parent = p_Var2;\n    }\n    else if (p_Var1 == p_Var6->_M_right) {\n      p_Var6->_M_right = p_Var2;\n    }\n    else {\n      p_Var6->_M_left = p_Var2;\n    }\n    p_Var2->_M_right = p_Var1;\n    p_Var1->_M_parent = p_Var2;\n    p_Var7 = param_4->_M_parent;\n    param_2 = p_Var3;\n  } while( true );\n}" primitive_type (ERROR "std::" identifier : :) (function_declarator "_Rb_tree_insert_and_rebalance\n               (bool param_1,_Rb_tree_node_base *param_2,_Rb_tree_node_base *param_3,\n               _Rb_tree_node_base *param_4)" identifier (parameter_list "(bool param_1,_Rb_tree_node_base *param_2,_Rb_tree_node_base *param_3,\n               _Rb_tree_node_base *param_4)" ( (parameter_declaration "bool param_1" primitive_type identifier) , (parameter_declaration "_Rb_tree_node_base *param_2" type_identifier (pointer_declarator "*param_2" * identifier)) , (parameter_declaration "_Rb_tree_node_base *param_3" type_identifier (pointer_declarator "*param_3" * identifier)) , (parameter_declaration "_Rb_tree_node_base *param_4" type_identifier (pointer_declarator "*param_4" * identifier)) ))) (compound_statement "{\n  _Base_ptr p_Var1;\n  _Rb_tree_node_base *p_Var2;\n  _Rb_tree_node_base *p_Var3;\n  _Rb_tree_node_base *p_Var4;\n  _Base_ptr p_Var5;\n  _Base_ptr p_Var6;\n  _Rb_tree_node_base *p_Var7;\n  \n  param_2->_M_parent = param_3;\n  param_2->_M_left = (_Base_ptr)0x0;\n  param_2->_M_right = (_Base_ptr)0x0;\n  param_2->_M_color = _S_red;\n  if (param_1) {\n    param_3->_M_left = param_2;\n    if (param_4 == param_3) {\n      param_4->_M_parent = param_2;\n      param_4->_M_right = param_2;\n      param_2->_M_color = _S_black;\n      return;\n    }\n    if (param_4->_M_left == param_3) {\n      param_4->_M_left = param_2;\n      p_Var7 = param_4->_M_parent;\n      goto joined_r0x001fe792;\n    }\n  }\n  else {\n    param_3->_M_right = param_2;\n    if (param_4->_M_right == param_3) {\n      param_4->_M_right = param_2;\n    }\n  }\n  p_Var7 = param_4->_M_parent;\njoined_r0x001fe792:\n  do {\n    while( true ) {\n      while( true ) {\n        if ((param_2 == p_Var7) || (p_Var4 = param_2->_M_parent, p_Var4->_M_color != _S_red)) {\n          p_Var7->_M_color = _S_black;\n          return;\n        }\n        p_Var1 = p_Var4->_M_parent;\n        p_Var2 = p_Var1->_M_left;\n        if (p_Var4 == p_Var2) break;\n        if ((p_Var2 == (_Rb_tree_node_base *)0x0) || (p_Var2->_M_color != _S_red)) {\n          p_Var2 = param_2;\n          if (p_Var4->_M_left == param_2) {\n            p_Var6 = param_2->_M_right;\n            p_Var4->_M_left = p_Var6;\n            p_Var5 = p_Var1;\n            if (p_Var6 != (_Base_ptr)0x0) {\n              p_Var6->_M_parent = p_Var4;\n              p_Var5 = p_Var4->_M_parent;\n            }\n            param_2->_M_parent = p_Var5;\n            if (p_Var4 == param_4->_M_parent) {\n              param_4->_M_parent = param_2;\n            }\n            else if (p_Var4 == p_Var5->_M_right) {\n              p_Var5->_M_right = param_2;\n            }\n            else {\n              p_Var5->_M_left = param_2;\n            }\n            param_2->_M_right = p_Var4;\n            p_Var4->_M_parent = param_2;\n            p_Var2 = p_Var4;\n            p_Var4 = param_2;\n          }\n          p_Var4->_M_color = _S_black;\n          p_Var6 = p_Var1->_M_right;\n          p_Var1->_M_color = _S_red;\n          p_Var5 = p_Var6->_M_left;\n          p_Var1->_M_right = p_Var5;\n          if (p_Var5 != (_Base_ptr)0x0) {\n            p_Var5->_M_parent = p_Var1;\n          }\n          p_Var5 = p_Var1->_M_parent;\n          p_Var6->_M_parent = p_Var5;\n          if (p_Var1 == param_4->_M_parent) {\n            param_4->_M_parent = p_Var6;\n          }\n          else if (p_Var1 == p_Var5->_M_left) {\n            p_Var5->_M_left = p_Var6;\n          }\n          else {\n            p_Var5->_M_right = p_Var6;\n          }\n          p_Var6->_M_left = p_Var1;\n          p_Var1->_M_parent = p_Var6;\n          p_Var7 = param_4->_M_parent;\n          param_2 = p_Var2;\n        }\n        else {\n          p_Var4->_M_color = _S_black;\n          p_Var2->_M_color = _S_black;\n          p_Var1->_M_color = _S_red;\n          param_2 = p_Var1;\n        }\n      }\n      p_Var6 = p_Var1->_M_right;\n      if ((p_Var6 == (_Base_ptr)0x0) || (p_Var6->_M_color != _S_red)) break;\n      p_Var4->_M_color = _S_black;\n      p_Var6->_M_color = _S_black;\n      p_Var1->_M_color = _S_red;\n      param_2 = p_Var1;\n    }\n    p_Var3 = param_2;\n    if (p_Var4->_M_right == param_2) {\n      p_Var6 = param_2->_M_left;\n      p_Var4->_M_right = p_Var6;\n      if (p_Var6 == (_Base_ptr)0x0) {\n        param_2->_M_parent = p_Var1;\n        p_Var6 = p_Var1;\n        if (p_Var4 == param_4->_M_parent) goto LAB_001fe9e0;\nLAB_001fe9d2:\n        p_Var6->_M_left = param_2;\n      }\n      else {\n        p_Var6->_M_parent = p_Var4;\n        p_Var6 = p_Var4->_M_parent;\n        param_2->_M_parent = p_Var6;\n        if (p_Var4 == param_4->_M_parent) {\nLAB_001fe9e0:\n          param_4->_M_parent = param_2;\n        }\n        else {\n          if (p_Var4 == p_Var6->_M_left) goto LAB_001fe9d2;\n          p_Var6->_M_right = param_2;\n        }\n      }\n      param_2->_M_left = p_Var4;\n      p_Var2 = p_Var1->_M_left;\n      p_Var4->_M_parent = param_2;\n      p_Var3 = p_Var4;\n      p_Var4 = param_2;\n    }\n    p_Var4->_M_color = _S_black;\n    p_Var6 = p_Var2->_M_right;\n    p_Var1->_M_color = _S_red;\n    p_Var1->_M_left = p_Var6;\n    if (p_Var6 != (_Base_ptr)0x0) {\n      p_Var6->_M_parent = p_Var1;\n    }\n    p_Var6 = p_Var1->_M_parent;\n    p_Var2->_M_parent = p_Var6;\n    if (p_Var1 == param_4->_M_parent) {\n      param_4->_M_parent = p_Var2;\n    }\n    else if (p_Var1 == p_Var6->_M_right) {\n      p_Var6->_M_right = p_Var2;\n    }\n    else {\n      p_Var6->_M_left = p_Var2;\n    }\n    p_Var2->_M_right = p_Var1;\n    p_Var1->_M_parent = p_Var2;\n    p_Var7 = param_4->_M_parent;\n    param_2 = p_Var3;\n  } while( true );\n}" { (declaration "_Base_ptr p_Var1;" type_identifier identifier ;) (declaration "_Rb_tree_node_base *p_Var2;" type_identifier (pointer_declarator "*p_Var2" * identifier) ;) (declaration "_Rb_tree_node_base *p_Var3;" type_identifier (pointer_declarator "*p_Var3" * identifier) ;) (declaration "_Rb_tree_node_base *p_Var4;" type_identifier (pointer_declarator "*p_Var4" * identifier) ;) (declaration "_Base_ptr p_Var5;" type_identifier identifier ;) (declaration "_Base_ptr p_Var6;" type_identifier identifier ;) (declaration "_Rb_tree_node_base *p_Var7;" type_identifier (pointer_declarator "*p_Var7" * identifier) ;) (expression_statement "param_2->_M_parent = param_3;" (assignment_expression "param_2->_M_parent = param_3" (field_expression "param_2->_M_parent" identifier -> field_identifier) = identifier) ;) (expression_statement "param_2->_M_left = (_Base_ptr)0x0;" (assignment_expression "param_2->_M_left = (_Base_ptr)0x0" (field_expression "param_2->_M_left" identifier -> field_identifier) = (cast_expression "(_Base_ptr)0x0" ( (type_descriptor "_Base_ptr" type_identifier) ) number_literal)) ;) (expression_statement "param_2->_M_right = (_Base_ptr)0x0;" (assignment_expression "param_2->_M_right = (_Base_ptr)0x0" (field_expression "param_2->_M_right" identifier -> field_identifier) = (cast_expression "(_Base_ptr)0x0" ( (type_descriptor "_Base_ptr" type_identifier) ) number_literal)) ;) (expression_statement "param_2->_M_color = _S_red;" (assignment_expression "param_2->_M_color = _S_red" (field_expression "param_2->_M_color" identifier -> field_identifier) = identifier) ;) (if_statement "if (param_1) {\n    param_3->_M_left = param_2;\n    if (param_4 == param_3) {\n      param_4->_M_parent = param_2;\n      param_4->_M_right = param_2;\n      param_2->_M_color = _S_black;\n      return;\n    }\n    if (param_4->_M_left == param_3) {\n      param_4->_M_left = param_2;\n      p_Var7 = param_4->_M_parent;\n      goto joined_r0x001fe792;\n    }\n  }\n  else {\n    param_3->_M_right = param_2;\n    if (param_4->_M_right == param_3) {\n      param_4->_M_right = param_2;\n    }\n  }" if (parenthesized_expression "(param_1)" ( identifier )) (compound_statement "{\n    param_3->_M_left = param_2;\n    if (param_4 == param_3) {\n      param_4->_M_parent = param_2;\n      param_4->_M_right = param_2;\n      param_2->_M_color = _S_black;\n      return;\n    }\n    if (param_4->_M_left == param_3) {\n      param_4->_M_left = param_2;\n      p_Var7 = param_4->_M_parent;\n      goto joined_r0x001fe792;\n    }\n  }" { (expression_statement "param_3->_M_left = param_2;" (assignment_expression "param_3->_M_left = param_2" (field_expression "param_3->_M_left" identifier -> field_identifier) = identifier) ;) (if_statement "if (param_4 == param_3) {\n      param_4->_M_parent = param_2;\n      param_4->_M_right = param_2;\n      param_2->_M_color = _S_black;\n      return;\n    }" if (parenthesized_expression "(param_4 == param_3)" ( (binary_expression "param_4 == param_3" identifier == identifier) )) (compound_statement "{\n      param_4->_M_parent = param_2;\n      param_4->_M_right = param_2;\n      param_2->_M_color = _S_black;\n      return;\n    }" { (expression_statement "param_4->_M_parent = param_2;" (assignment_expression "param_4->_M_parent = param_2" (field_expression "param_4->_M_parent" identifier -> field_identifier) = identifier) ;) (expression_statement "param_4->_M_right = param_2;" (assignment_expression "param_4->_M_right = param_2" (field_expression "param_4->_M_right" identifier -> field_identifier) = identifier) ;) (expression_statement "param_2->_M_color = _S_black;" (assignment_expression "param_2->_M_color = _S_black" (field_expression "param_2->_M_color" identifier -> field_identifier) = identifier) ;) (return_statement "return;" return ;) })) (if_statement "if (param_4->_M_left == param_3) {\n      param_4->_M_left = param_2;\n      p_Var7 = param_4->_M_parent;\n      goto joined_r0x001fe792;\n    }" if (parenthesized_expression "(param_4->_M_left == param_3)" ( (binary_expression "param_4->_M_left == param_3" (field_expression "param_4->_M_left" identifier -> field_identifier) == identifier) )) (compound_statement "{\n      param_4->_M_left = param_2;\n      p_Var7 = param_4->_M_parent;\n      goto joined_r0x001fe792;\n    }" { (expression_statement "param_4->_M_left = param_2;" (assignment_expression "param_4->_M_left = param_2" (field_expression "param_4->_M_left" identifier -> field_identifier) = identifier) ;) (expression_statement "p_Var7 = param_4->_M_parent;" (assignment_expression "p_Var7 = param_4->_M_parent" identifier = (field_expression "param_4->_M_parent" identifier -> field_identifier)) ;) (goto_statement "goto joined_r0x001fe792;" goto statement_identifier ;) })) }) (else_clause "else {\n    param_3->_M_right = param_2;\n    if (param_4->_M_right == param_3) {\n      param_4->_M_right = param_2;\n    }\n  }" else (compound_statement "{\n    param_3->_M_right = param_2;\n    if (param_4->_M_right == param_3) {\n      param_4->_M_right = param_2;\n    }\n  }" { (expression_statement "param_3->_M_right = param_2;" (assignment_expression "param_3->_M_right = param_2" (field_expression "param_3->_M_right" identifier -> field_identifier) = identifier) ;) (if_statement "if (param_4->_M_right == param_3) {\n      param_4->_M_right = param_2;\n    }" if (parenthesized_expression "(param_4->_M_right == param_3)" ( (binary_expression "param_4->_M_right == param_3" (field_expression "param_4->_M_right" identifier -> field_identifier) == identifier) )) (compound_statement "{\n      param_4->_M_right = param_2;\n    }" { (expression_statement "param_4->_M_right = param_2;" (assignment_expression "param_4->_M_right = param_2" (field_expression "param_4->_M_right" identifier -> field_identifier) = identifier) ;) })) }))) (expression_statement "p_Var7 = param_4->_M_parent;" (assignment_expression "p_Var7 = param_4->_M_parent" identifier = (field_expression "param_4->_M_parent" identifier -> field_identifier)) ;) (labeled_statement "joined_r0x001fe792:\n  do {\n    while( true ) {\n      while( true ) {\n        if ((param_2 == p_Var7) || (p_Var4 = param_2->_M_parent, p_Var4->_M_color != _S_red)) {\n          p_Var7->_M_color = _S_black;\n          return;\n        }\n        p_Var1 = p_Var4->_M_parent;\n        p_Var2 = p_Var1->_M_left;\n        if (p_Var4 == p_Var2) break;\n        if ((p_Var2 == (_Rb_tree_node_base *)0x0) || (p_Var2->_M_color != _S_red)) {\n          p_Var2 = param_2;\n          if (p_Var4->_M_left == param_2) {\n            p_Var6 = param_2->_M_right;\n            p_Var4->_M_left = p_Var6;\n            p_Var5 = p_Var1;\n            if (p_Var6 != (_Base_ptr)0x0) {\n              p_Var6->_M_parent = p_Var4;\n              p_Var5 = p_Var4->_M_parent;\n            }\n            param_2->_M_parent = p_Var5;\n            if (p_Var4 == param_4->_M_parent) {\n              param_4->_M_parent = param_2;\n            }\n            else if (p_Var4 == p_Var5->_M_right) {\n              p_Var5->_M_right = param_2;\n            }\n            else {\n              p_Var5->_M_left = param_2;\n            }\n            param_2->_M_right = p_Var4;\n            p_Var4->_M_parent = param_2;\n            p_Var2 = p_Var4;\n            p_Var4 = param_2;\n          }\n          p_Var4->_M_color = _S_black;\n          p_Var6 = p_Var1->_M_right;\n          p_Var1->_M_color = _S_red;\n          p_Var5 = p_Var6->_M_left;\n          p_Var1->_M_right = p_Var5;\n          if (p_Var5 != (_Base_ptr)0x0) {\n            p_Var5->_M_parent = p_Var1;\n          }\n          p_Var5 = p_Var1->_M_parent;\n          p_Var6->_M_parent = p_Var5;\n          if (p_Var1 == param_4->_M_parent) {\n            param_4->_M_parent = p_Var6;\n          }\n          else if (p_Var1 == p_Var5->_M_left) {\n            p_Var5->_M_left = p_Var6;\n          }\n          else {\n            p_Var5->_M_right = p_Var6;\n          }\n          p_Var6->_M_left = p_Var1;\n          p_Var1->_M_parent = p_Var6;\n          p_Var7 = param_4->_M_parent;\n          param_2 = p_Var2;\n        }\n        else {\n          p_Var4->_M_color = _S_black;\n          p_Var2->_M_color = _S_black;\n          p_Var1->_M_color = _S_red;\n          param_2 = p_Var1;\n        }\n      }\n      p_Var6 = p_Var1->_M_right;\n      if ((p_Var6 == (_Base_ptr)0x0) || (p_Var6->_M_color != _S_red)) break;\n      p_Var4->_M_color = _S_black;\n      p_Var6->_M_color = _S_black;\n      p_Var1->_M_color = _S_red;\n      param_2 = p_Var1;\n    }\n    p_Var3 = param_2;\n    if (p_Var4->_M_right == param_2) {\n      p_Var6 = param_2->_M_left;\n      p_Var4->_M_right = p_Var6;\n      if (p_Var6 == (_Base_ptr)0x0) {\n        param_2->_M_parent = p_Var1;\n        p_Var6 = p_Var1;\n        if (p_Var4 == param_4->_M_parent) goto LAB_001fe9e0;\nLAB_001fe9d2:\n        p_Var6->_M_left = param_2;\n      }\n      else {\n        p_Var6->_M_parent = p_Var4;\n        p_Var6 = p_Var4->_M_parent;\n        param_2->_M_parent = p_Var6;\n        if (p_Var4 == param_4->_M_parent) {\nLAB_001fe9e0:\n          param_4->_M_parent = param_2;\n        }\n        else {\n          if (p_Var4 == p_Var6->_M_left) goto LAB_001fe9d2;\n          p_Var6->_M_right = param_2;\n        }\n      }\n      param_2->_M_left = p_Var4;\n      p_Var2 = p_Var1->_M_left;\n      p_Var4->_M_parent = param_2;\n      p_Var3 = p_Var4;\n      p_Var4 = param_2;\n    }\n    p_Var4->_M_color = _S_black;\n    p_Var6 = p_Var2->_M_right;\n    p_Var1->_M_color = _S_red;\n    p_Var1->_M_left = p_Var6;\n    if (p_Var6 != (_Base_ptr)0x0) {\n      p_Var6->_M_parent = p_Var1;\n    }\n    p_Var6 = p_Var1->_M_parent;\n    p_Var2->_M_parent = p_Var6;\n    if (p_Var1 == param_4->_M_parent) {\n      param_4->_M_parent = p_Var2;\n    }\n    else if (p_Var1 == p_Var6->_M_right) {\n      p_Var6->_M_right = p_Var2;\n    }\n    else {\n      p_Var6->_M_left = p_Var2;\n    }\n    p_Var2->_M_right = p_Var1;\n    p_Var1->_M_parent = p_Var2;\n    p_Var7 = param_4->_M_parent;\n    param_2 = p_Var3;\n  } while( true );" statement_identifier : (do_statement "do {\n    while( true ) {\n      while( true ) {\n        if ((param_2 == p_Var7) || (p_Var4 = param_2->_M_parent, p_Var4->_M_color != _S_red)) {\n          p_Var7->_M_color = _S_black;\n          return;\n        }\n        p_Var1 = p_Var4->_M_parent;\n        p_Var2 = p_Var1->_M_left;\n        if (p_Var4 == p_Var2) break;\n        if ((p_Var2 == (_Rb_tree_node_base *)0x0) || (p_Var2->_M_color != _S_red)) {\n          p_Var2 = param_2;\n          if (p_Var4->_M_left == param_2) {\n            p_Var6 = param_2->_M_right;\n            p_Var4->_M_left = p_Var6;\n            p_Var5 = p_Var1;\n            if (p_Var6 != (_Base_ptr)0x0) {\n              p_Var6->_M_parent = p_Var4;\n              p_Var5 = p_Var4->_M_parent;\n            }\n            param_2->_M_parent = p_Var5;\n            if (p_Var4 == param_4->_M_parent) {\n              param_4->_M_parent = param_2;\n            }\n            else if (p_Var4 == p_Var5->_M_right) {\n              p_Var5->_M_right = param_2;\n            }\n            else {\n              p_Var5->_M_left = param_2;\n            }\n            param_2->_M_right = p_Var4;\n            p_Var4->_M_parent = param_2;\n            p_Var2 = p_Var4;\n            p_Var4 = param_2;\n          }\n          p_Var4->_M_color = _S_black;\n          p_Var6 = p_Var1->_M_right;\n          p_Var1->_M_color = _S_red;\n          p_Var5 = p_Var6->_M_left;\n          p_Var1->_M_right = p_Var5;\n          if (p_Var5 != (_Base_ptr)0x0) {\n            p_Var5->_M_parent = p_Var1;\n          }\n          p_Var5 = p_Var1->_M_parent;\n          p_Var6->_M_parent = p_Var5;\n          if (p_Var1 == param_4->_M_parent) {\n            param_4->_M_parent = p_Var6;\n          }\n          else if (p_Var1 == p_Var5->_M_left) {\n            p_Var5->_M_left = p_Var6;\n          }\n          else {\n            p_Var5->_M_right = p_Var6;\n          }\n          p_Var6->_M_left = p_Var1;\n          p_Var1->_M_parent = p_Var6;\n          p_Var7 = param_4->_M_parent;\n          param_2 = p_Var2;\n        }\n        else {\n          p_Var4->_M_color = _S_black;\n          p_Var2->_M_color = _S_black;\n          p_Var1->_M_color = _S_red;\n          param_2 = p_Var1;\n        }\n      }\n      p_Var6 = p_Var1->_M_right;\n      if ((p_Var6 == (_Base_ptr)0x0) || (p_Var6->_M_color != _S_red)) break;\n      p_Var4->_M_color = _S_black;\n      p_Var6->_M_color = _S_black;\n      p_Var1->_M_color = _S_red;\n      param_2 = p_Var1;\n    }\n    p_Var3 = param_2;\n    if (p_Var4->_M_right == param_2) {\n      p_Var6 = param_2->_M_left;\n      p_Var4->_M_right = p_Var6;\n      if (p_Var6 == (_Base_ptr)0x0) {\n        param_2->_M_parent = p_Var1;\n        p_Var6 = p_Var1;\n        if (p_Var4 == param_4->_M_parent) goto LAB_001fe9e0;\nLAB_001fe9d2:\n        p_Var6->_M_left = param_2;\n      }\n      else {\n        p_Var6->_M_parent = p_Var4;\n        p_Var6 = p_Var4->_M_parent;\n        param_2->_M_parent = p_Var6;\n        if (p_Var4 == param_4->_M_parent) {\nLAB_001fe9e0:\n          param_4->_M_parent = param_2;\n        }\n        else {\n          if (p_Var4 == p_Var6->_M_left) goto LAB_001fe9d2;\n          p_Var6->_M_right = param_2;\n        }\n      }\n      param_2->_M_left = p_Var4;\n      p_Var2 = p_Var1->_M_left;\n      p_Var4->_M_parent = param_2;\n      p_Var3 = p_Var4;\n      p_Var4 = param_2;\n    }\n    p_Var4->_M_color = _S_black;\n    p_Var6 = p_Var2->_M_right;\n    p_Var1->_M_color = _S_red;\n    p_Var1->_M_left = p_Var6;\n    if (p_Var6 != (_Base_ptr)0x0) {\n      p_Var6->_M_parent = p_Var1;\n    }\n    p_Var6 = p_Var1->_M_parent;\n    p_Var2->_M_parent = p_Var6;\n    if (p_Var1 == param_4->_M_parent) {\n      param_4->_M_parent = p_Var2;\n    }\n    else if (p_Var1 == p_Var6->_M_right) {\n      p_Var6->_M_right = p_Var2;\n    }\n    else {\n      p_Var6->_M_left = p_Var2;\n    }\n    p_Var2->_M_right = p_Var1;\n    p_Var1->_M_parent = p_Var2;\n    p_Var7 = param_4->_M_parent;\n    param_2 = p_Var3;\n  } while( true );" do (compound_statement "{\n    while( true ) {\n      while( true ) {\n        if ((param_2 == p_Var7) || (p_Var4 = param_2->_M_parent, p_Var4->_M_color != _S_red)) {\n          p_Var7->_M_color = _S_black;\n          return;\n        }\n        p_Var1 = p_Var4->_M_parent;\n        p_Var2 = p_Var1->_M_left;\n        if (p_Var4 == p_Var2) break;\n        if ((p_Var2 == (_Rb_tree_node_base *)0x0) || (p_Var2->_M_color != _S_red)) {\n          p_Var2 = param_2;\n          if (p_Var4->_M_left == param_2) {\n            p_Var6 = param_2->_M_right;\n            p_Var4->_M_left = p_Var6;\n            p_Var5 = p_Var1;\n            if (p_Var6 != (_Base_ptr)0x0) {\n              p_Var6->_M_parent = p_Var4;\n              p_Var5 = p_Var4->_M_parent;\n            }\n            param_2->_M_parent = p_Var5;\n            if (p_Var4 == param_4->_M_parent) {\n              param_4->_M_parent = param_2;\n            }\n            else if (p_Var4 == p_Var5->_M_right) {\n              p_Var5->_M_right = param_2;\n            }\n            else {\n              p_Var5->_M_left = param_2;\n            }\n            param_2->_M_right = p_Var4;\n            p_Var4->_M_parent = param_2;\n            p_Var2 = p_Var4;\n            p_Var4 = param_2;\n          }\n          p_Var4->_M_color = _S_black;\n          p_Var6 = p_Var1->_M_right;\n          p_Var1->_M_color = _S_red;\n          p_Var5 = p_Var6->_M_left;\n          p_Var1->_M_right = p_Var5;\n          if (p_Var5 != (_Base_ptr)0x0) {\n            p_Var5->_M_parent = p_Var1;\n          }\n          p_Var5 = p_Var1->_M_parent;\n          p_Var6->_M_parent = p_Var5;\n          if (p_Var1 == param_4->_M_parent) {\n            param_4->_M_parent = p_Var6;\n          }\n          else if (p_Var1 == p_Var5->_M_left) {\n            p_Var5->_M_left = p_Var6;\n          }\n          else {\n            p_Var5->_M_right = p_Var6;\n          }\n          p_Var6->_M_left = p_Var1;\n          p_Var1->_M_parent = p_Var6;\n          p_Var7 = param_4->_M_parent;\n          param_2 = p_Var2;\n        }\n        else {\n          p_Var4->_M_color = _S_black;\n          p_Var2->_M_color = _S_black;\n          p_Var1->_M_color = _S_red;\n          param_2 = p_Var1;\n        }\n      }\n      p_Var6 = p_Var1->_M_right;\n      if ((p_Var6 == (_Base_ptr)0x0) || (p_Var6->_M_color != _S_red)) break;\n      p_Var4->_M_color = _S_black;\n      p_Var6->_M_color = _S_black;\n      p_Var1->_M_color = _S_red;\n      param_2 = p_Var1;\n    }\n    p_Var3 = param_2;\n    if (p_Var4->_M_right == param_2) {\n      p_Var6 = param_2->_M_left;\n      p_Var4->_M_right = p_Var6;\n      if (p_Var6 == (_Base_ptr)0x0) {\n        param_2->_M_parent = p_Var1;\n        p_Var6 = p_Var1;\n        if (p_Var4 == param_4->_M_parent) goto LAB_001fe9e0;\nLAB_001fe9d2:\n        p_Var6->_M_left = param_2;\n      }\n      else {\n        p_Var6->_M_parent = p_Var4;\n        p_Var6 = p_Var4->_M_parent;\n        param_2->_M_parent = p_Var6;\n        if (p_Var4 == param_4->_M_parent) {\nLAB_001fe9e0:\n          param_4->_M_parent = param_2;\n        }\n        else {\n          if (p_Var4 == p_Var6->_M_left) goto LAB_001fe9d2;\n          p_Var6->_M_right = param_2;\n        }\n      }\n      param_2->_M_left = p_Var4;\n      p_Var2 = p_Var1->_M_left;\n      p_Var4->_M_parent = param_2;\n      p_Var3 = p_Var4;\n      p_Var4 = param_2;\n    }\n    p_Var4->_M_color = _S_black;\n    p_Var6 = p_Var2->_M_right;\n    p_Var1->_M_color = _S_red;\n    p_Var1->_M_left = p_Var6;\n    if (p_Var6 != (_Base_ptr)0x0) {\n      p_Var6->_M_parent = p_Var1;\n    }\n    p_Var6 = p_Var1->_M_parent;\n    p_Var2->_M_parent = p_Var6;\n    if (p_Var1 == param_4->_M_parent) {\n      param_4->_M_parent = p_Var2;\n    }\n    else if (p_Var1 == p_Var6->_M_right) {\n      p_Var6->_M_right = p_Var2;\n    }\n    else {\n      p_Var6->_M_left = p_Var2;\n    }\n    p_Var2->_M_right = p_Var1;\n    p_Var1->_M_parent = p_Var2;\n    p_Var7 = param_4->_M_parent;\n    param_2 = p_Var3;\n  }" { (while_statement "while( true ) {\n      while( true ) {\n        if ((param_2 == p_Var7) || (p_Var4 = param_2->_M_parent, p_Var4->_M_color != _S_red)) {\n          p_Var7->_M_color = _S_black;\n          return;\n        }\n        p_Var1 = p_Var4->_M_parent;\n        p_Var2 = p_Var1->_M_left;\n        if (p_Var4 == p_Var2) break;\n        if ((p_Var2 == (_Rb_tree_node_base *)0x0) || (p_Var2->_M_color != _S_red)) {\n          p_Var2 = param_2;\n          if (p_Var4->_M_left == param_2) {\n            p_Var6 = param_2->_M_right;\n            p_Var4->_M_left = p_Var6;\n            p_Var5 = p_Var1;\n            if (p_Var6 != (_Base_ptr)0x0) {\n              p_Var6->_M_parent = p_Var4;\n              p_Var5 = p_Var4->_M_parent;\n            }\n            param_2->_M_parent = p_Var5;\n            if (p_Var4 == param_4->_M_parent) {\n              param_4->_M_parent = param_2;\n            }\n            else if (p_Var4 == p_Var5->_M_right) {\n              p_Var5->_M_right = param_2;\n            }\n            else {\n              p_Var5->_M_left = param_2;\n            }\n            param_2->_M_right = p_Var4;\n            p_Var4->_M_parent = param_2;\n            p_Var2 = p_Var4;\n            p_Var4 = param_2;\n          }\n          p_Var4->_M_color = _S_black;\n          p_Var6 = p_Var1->_M_right;\n          p_Var1->_M_color = _S_red;\n          p_Var5 = p_Var6->_M_left;\n          p_Var1->_M_right = p_Var5;\n          if (p_Var5 != (_Base_ptr)0x0) {\n            p_Var5->_M_parent = p_Var1;\n          }\n          p_Var5 = p_Var1->_M_parent;\n          p_Var6->_M_parent = p_Var5;\n          if (p_Var1 == param_4->_M_parent) {\n            param_4->_M_parent = p_Var6;\n          }\n          else if (p_Var1 == p_Var5->_M_left) {\n            p_Var5->_M_left = p_Var6;\n          }\n          else {\n            p_Var5->_M_right = p_Var6;\n          }\n          p_Var6->_M_left = p_Var1;\n          p_Var1->_M_parent = p_Var6;\n          p_Var7 = param_4->_M_parent;\n          param_2 = p_Var2;\n        }\n        else {\n          p_Var4->_M_color = _S_black;\n          p_Var2->_M_color = _S_black;\n          p_Var1->_M_color = _S_red;\n          param_2 = p_Var1;\n        }\n      }\n      p_Var6 = p_Var1->_M_right;\n      if ((p_Var6 == (_Base_ptr)0x0) || (p_Var6->_M_color != _S_red)) break;\n      p_Var4->_M_color = _S_black;\n      p_Var6->_M_color = _S_black;\n      p_Var1->_M_color = _S_red;\n      param_2 = p_Var1;\n    }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n      while( true ) {\n        if ((param_2 == p_Var7) || (p_Var4 = param_2->_M_parent, p_Var4->_M_color != _S_red)) {\n          p_Var7->_M_color = _S_black;\n          return;\n        }\n        p_Var1 = p_Var4->_M_parent;\n        p_Var2 = p_Var1->_M_left;\n        if (p_Var4 == p_Var2) break;\n        if ((p_Var2 == (_Rb_tree_node_base *)0x0) || (p_Var2->_M_color != _S_red)) {\n          p_Var2 = param_2;\n          if (p_Var4->_M_left == param_2) {\n            p_Var6 = param_2->_M_right;\n            p_Var4->_M_left = p_Var6;\n            p_Var5 = p_Var1;\n            if (p_Var6 != (_Base_ptr)0x0) {\n              p_Var6->_M_parent = p_Var4;\n              p_Var5 = p_Var4->_M_parent;\n            }\n            param_2->_M_parent = p_Var5;\n            if (p_Var4 == param_4->_M_parent) {\n              param_4->_M_parent = param_2;\n            }\n            else if (p_Var4 == p_Var5->_M_right) {\n              p_Var5->_M_right = param_2;\n            }\n            else {\n              p_Var5->_M_left = param_2;\n            }\n            param_2->_M_right = p_Var4;\n            p_Var4->_M_parent = param_2;\n            p_Var2 = p_Var4;\n            p_Var4 = param_2;\n          }\n          p_Var4->_M_color = _S_black;\n          p_Var6 = p_Var1->_M_right;\n          p_Var1->_M_color = _S_red;\n          p_Var5 = p_Var6->_M_left;\n          p_Var1->_M_right = p_Var5;\n          if (p_Var5 != (_Base_ptr)0x0) {\n            p_Var5->_M_parent = p_Var1;\n          }\n          p_Var5 = p_Var1->_M_parent;\n          p_Var6->_M_parent = p_Var5;\n          if (p_Var1 == param_4->_M_parent) {\n            param_4->_M_parent = p_Var6;\n          }\n          else if (p_Var1 == p_Var5->_M_left) {\n            p_Var5->_M_left = p_Var6;\n          }\n          else {\n            p_Var5->_M_right = p_Var6;\n          }\n          p_Var6->_M_left = p_Var1;\n          p_Var1->_M_parent = p_Var6;\n          p_Var7 = param_4->_M_parent;\n          param_2 = p_Var2;\n        }\n        else {\n          p_Var4->_M_color = _S_black;\n          p_Var2->_M_color = _S_black;\n          p_Var1->_M_color = _S_red;\n          param_2 = p_Var1;\n        }\n      }\n      p_Var6 = p_Var1->_M_right;\n      if ((p_Var6 == (_Base_ptr)0x0) || (p_Var6->_M_color != _S_red)) break;\n      p_Var4->_M_color = _S_black;\n      p_Var6->_M_color = _S_black;\n      p_Var1->_M_color = _S_red;\n      param_2 = p_Var1;\n    }" { (while_statement "while( true ) {\n        if ((param_2 == p_Var7) || (p_Var4 = param_2->_M_parent, p_Var4->_M_color != _S_red)) {\n          p_Var7->_M_color = _S_black;\n          return;\n        }\n        p_Var1 = p_Var4->_M_parent;\n        p_Var2 = p_Var1->_M_left;\n        if (p_Var4 == p_Var2) break;\n        if ((p_Var2 == (_Rb_tree_node_base *)0x0) || (p_Var2->_M_color != _S_red)) {\n          p_Var2 = param_2;\n          if (p_Var4->_M_left == param_2) {\n            p_Var6 = param_2->_M_right;\n            p_Var4->_M_left = p_Var6;\n            p_Var5 = p_Var1;\n            if (p_Var6 != (_Base_ptr)0x0) {\n              p_Var6->_M_parent = p_Var4;\n              p_Var5 = p_Var4->_M_parent;\n            }\n            param_2->_M_parent = p_Var5;\n            if (p_Var4 == param_4->_M_parent) {\n              param_4->_M_parent = param_2;\n            }\n            else if (p_Var4 == p_Var5->_M_right) {\n              p_Var5->_M_right = param_2;\n            }\n            else {\n              p_Var5->_M_left = param_2;\n            }\n            param_2->_M_right = p_Var4;\n            p_Var4->_M_parent = param_2;\n            p_Var2 = p_Var4;\n            p_Var4 = param_2;\n          }\n          p_Var4->_M_color = _S_black;\n          p_Var6 = p_Var1->_M_right;\n          p_Var1->_M_color = _S_red;\n          p_Var5 = p_Var6->_M_left;\n          p_Var1->_M_right = p_Var5;\n          if (p_Var5 != (_Base_ptr)0x0) {\n            p_Var5->_M_parent = p_Var1;\n          }\n          p_Var5 = p_Var1->_M_parent;\n          p_Var6->_M_parent = p_Var5;\n          if (p_Var1 == param_4->_M_parent) {\n            param_4->_M_parent = p_Var6;\n          }\n          else if (p_Var1 == p_Var5->_M_left) {\n            p_Var5->_M_left = p_Var6;\n          }\n          else {\n            p_Var5->_M_right = p_Var6;\n          }\n          p_Var6->_M_left = p_Var1;\n          p_Var1->_M_parent = p_Var6;\n          p_Var7 = param_4->_M_parent;\n          param_2 = p_Var2;\n        }\n        else {\n          p_Var4->_M_color = _S_black;\n          p_Var2->_M_color = _S_black;\n          p_Var1->_M_color = _S_red;\n          param_2 = p_Var1;\n        }\n      }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n        if ((param_2 == p_Var7) || (p_Var4 = param_2->_M_parent, p_Var4->_M_color != _S_red)) {\n          p_Var7->_M_color = _S_black;\n          return;\n        }\n        p_Var1 = p_Var4->_M_parent;\n        p_Var2 = p_Var1->_M_left;\n        if (p_Var4 == p_Var2) break;\n        if ((p_Var2 == (_Rb_tree_node_base *)0x0) || (p_Var2->_M_color != _S_red)) {\n          p_Var2 = param_2;\n          if (p_Var4->_M_left == param_2) {\n            p_Var6 = param_2->_M_right;\n            p_Var4->_M_left = p_Var6;\n            p_Var5 = p_Var1;\n            if (p_Var6 != (_Base_ptr)0x0) {\n              p_Var6->_M_parent = p_Var4;\n              p_Var5 = p_Var4->_M_parent;\n            }\n            param_2->_M_parent = p_Var5;\n            if (p_Var4 == param_4->_M_parent) {\n              param_4->_M_parent = param_2;\n            }\n            else if (p_Var4 == p_Var5->_M_right) {\n              p_Var5->_M_right = param_2;\n            }\n            else {\n              p_Var5->_M_left = param_2;\n            }\n            param_2->_M_right = p_Var4;\n            p_Var4->_M_parent = param_2;\n            p_Var2 = p_Var4;\n            p_Var4 = param_2;\n          }\n          p_Var4->_M_color = _S_black;\n          p_Var6 = p_Var1->_M_right;\n          p_Var1->_M_color = _S_red;\n          p_Var5 = p_Var6->_M_left;\n          p_Var1->_M_right = p_Var5;\n          if (p_Var5 != (_Base_ptr)0x0) {\n            p_Var5->_M_parent = p_Var1;\n          }\n          p_Var5 = p_Var1->_M_parent;\n          p_Var6->_M_parent = p_Var5;\n          if (p_Var1 == param_4->_M_parent) {\n            param_4->_M_parent = p_Var6;\n          }\n          else if (p_Var1 == p_Var5->_M_left) {\n            p_Var5->_M_left = p_Var6;\n          }\n          else {\n            p_Var5->_M_right = p_Var6;\n          }\n          p_Var6->_M_left = p_Var1;\n          p_Var1->_M_parent = p_Var6;\n          p_Var7 = param_4->_M_parent;\n          param_2 = p_Var2;\n        }\n        else {\n          p_Var4->_M_color = _S_black;\n          p_Var2->_M_color = _S_black;\n          p_Var1->_M_color = _S_red;\n          param_2 = p_Var1;\n        }\n      }" { (if_statement "if ((param_2 == p_Var7) || (p_Var4 = param_2->_M_parent, p_Var4->_M_color != _S_red)) {\n          p_Var7->_M_color = _S_black;\n          return;\n        }" if (parenthesized_expression "((param_2 == p_Var7) || (p_Var4 = param_2->_M_parent, p_Var4->_M_color != _S_red))" ( (binary_expression "(param_2 == p_Var7) || (p_Var4 = param_2->_M_parent, p_Var4->_M_color != _S_red)" (parenthesized_expression "(param_2 == p_Var7)" ( (binary_expression "param_2 == p_Var7" identifier == identifier) )) || (parenthesized_expression "(p_Var4 = param_2->_M_parent, p_Var4->_M_color != _S_red)" ( (comma_expression "p_Var4 = param_2->_M_parent, p_Var4->_M_color != _S_red" (assignment_expression "p_Var4 = param_2->_M_parent" identifier = (field_expression "param_2->_M_parent" identifier -> field_identifier)) , (binary_expression "p_Var4->_M_color != _S_red" (field_expression "p_Var4->_M_color" identifier -> field_identifier) != identifier)) ))) )) (compound_statement "{\n          p_Var7->_M_color = _S_black;\n          return;\n        }" { (expression_statement "p_Var7->_M_color = _S_black;" (assignment_expression "p_Var7->_M_color = _S_black" (field_expression "p_Var7->_M_color" identifier -> field_identifier) = identifier) ;) (return_statement "return;" return ;) })) (expression_statement "p_Var1 = p_Var4->_M_parent;" (assignment_expression "p_Var1 = p_Var4->_M_parent" identifier = (field_expression "p_Var4->_M_parent" identifier -> field_identifier)) ;) (expression_statement "p_Var2 = p_Var1->_M_left;" (assignment_expression "p_Var2 = p_Var1->_M_left" identifier = (field_expression "p_Var1->_M_left" identifier -> field_identifier)) ;) (if_statement "if (p_Var4 == p_Var2) break;" if (parenthesized_expression "(p_Var4 == p_Var2)" ( (binary_expression "p_Var4 == p_Var2" identifier == identifier) )) (break_statement "break;" break ;)) (if_statement "if ((p_Var2 == (_Rb_tree_node_base *)0x0) || (p_Var2->_M_color != _S_red)) {\n          p_Var2 = param_2;\n          if (p_Var4->_M_left == param_2) {\n            p_Var6 = param_2->_M_right;\n            p_Var4->_M_left = p_Var6;\n            p_Var5 = p_Var1;\n            if (p_Var6 != (_Base_ptr)0x0) {\n              p_Var6->_M_parent = p_Var4;\n              p_Var5 = p_Var4->_M_parent;\n            }\n            param_2->_M_parent = p_Var5;\n            if (p_Var4 == param_4->_M_parent) {\n              param_4->_M_parent = param_2;\n            }\n            else if (p_Var4 == p_Var5->_M_right) {\n              p_Var5->_M_right = param_2;\n            }\n            else {\n              p_Var5->_M_left = param_2;\n            }\n            param_2->_M_right = p_Var4;\n            p_Var4->_M_parent = param_2;\n            p_Var2 = p_Var4;\n            p_Var4 = param_2;\n          }\n          p_Var4->_M_color = _S_black;\n          p_Var6 = p_Var1->_M_right;\n          p_Var1->_M_color = _S_red;\n          p_Var5 = p_Var6->_M_left;\n          p_Var1->_M_right = p_Var5;\n          if (p_Var5 != (_Base_ptr)0x0) {\n            p_Var5->_M_parent = p_Var1;\n          }\n          p_Var5 = p_Var1->_M_parent;\n          p_Var6->_M_parent = p_Var5;\n          if (p_Var1 == param_4->_M_parent) {\n            param_4->_M_parent = p_Var6;\n          }\n          else if (p_Var1 == p_Var5->_M_left) {\n            p_Var5->_M_left = p_Var6;\n          }\n          else {\n            p_Var5->_M_right = p_Var6;\n          }\n          p_Var6->_M_left = p_Var1;\n          p_Var1->_M_parent = p_Var6;\n          p_Var7 = param_4->_M_parent;\n          param_2 = p_Var2;\n        }\n        else {\n          p_Var4->_M_color = _S_black;\n          p_Var2->_M_color = _S_black;\n          p_Var1->_M_color = _S_red;\n          param_2 = p_Var1;\n        }" if (parenthesized_expression "((p_Var2 == (_Rb_tree_node_base *)0x0) || (p_Var2->_M_color != _S_red))" ( (binary_expression "(p_Var2 == (_Rb_tree_node_base *)0x0) || (p_Var2->_M_color != _S_red)" (parenthesized_expression "(p_Var2 == (_Rb_tree_node_base *)0x0)" ( (binary_expression "p_Var2 == (_Rb_tree_node_base *)0x0" identifier == (cast_expression "(_Rb_tree_node_base *)0x0" ( (type_descriptor "_Rb_tree_node_base *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) || (parenthesized_expression "(p_Var2->_M_color != _S_red)" ( (binary_expression "p_Var2->_M_color != _S_red" (field_expression "p_Var2->_M_color" identifier -> field_identifier) != identifier) ))) )) (compound_statement "{\n          p_Var2 = param_2;\n          if (p_Var4->_M_left == param_2) {\n            p_Var6 = param_2->_M_right;\n            p_Var4->_M_left = p_Var6;\n            p_Var5 = p_Var1;\n            if (p_Var6 != (_Base_ptr)0x0) {\n              p_Var6->_M_parent = p_Var4;\n              p_Var5 = p_Var4->_M_parent;\n            }\n            param_2->_M_parent = p_Var5;\n            if (p_Var4 == param_4->_M_parent) {\n              param_4->_M_parent = param_2;\n            }\n            else if (p_Var4 == p_Var5->_M_right) {\n              p_Var5->_M_right = param_2;\n            }\n            else {\n              p_Var5->_M_left = param_2;\n            }\n            param_2->_M_right = p_Var4;\n            p_Var4->_M_parent = param_2;\n            p_Var2 = p_Var4;\n            p_Var4 = param_2;\n          }\n          p_Var4->_M_color = _S_black;\n          p_Var6 = p_Var1->_M_right;\n          p_Var1->_M_color = _S_red;\n          p_Var5 = p_Var6->_M_left;\n          p_Var1->_M_right = p_Var5;\n          if (p_Var5 != (_Base_ptr)0x0) {\n            p_Var5->_M_parent = p_Var1;\n          }\n          p_Var5 = p_Var1->_M_parent;\n          p_Var6->_M_parent = p_Var5;\n          if (p_Var1 == param_4->_M_parent) {\n            param_4->_M_parent = p_Var6;\n          }\n          else if (p_Var1 == p_Var5->_M_left) {\n            p_Var5->_M_left = p_Var6;\n          }\n          else {\n            p_Var5->_M_right = p_Var6;\n          }\n          p_Var6->_M_left = p_Var1;\n          p_Var1->_M_parent = p_Var6;\n          p_Var7 = param_4->_M_parent;\n          param_2 = p_Var2;\n        }" { (expression_statement "p_Var2 = param_2;" (assignment_expression "p_Var2 = param_2" identifier = identifier) ;) (if_statement "if (p_Var4->_M_left == param_2) {\n            p_Var6 = param_2->_M_right;\n            p_Var4->_M_left = p_Var6;\n            p_Var5 = p_Var1;\n            if (p_Var6 != (_Base_ptr)0x0) {\n              p_Var6->_M_parent = p_Var4;\n              p_Var5 = p_Var4->_M_parent;\n            }\n            param_2->_M_parent = p_Var5;\n            if (p_Var4 == param_4->_M_parent) {\n              param_4->_M_parent = param_2;\n            }\n            else if (p_Var4 == p_Var5->_M_right) {\n              p_Var5->_M_right = param_2;\n            }\n            else {\n              p_Var5->_M_left = param_2;\n            }\n            param_2->_M_right = p_Var4;\n            p_Var4->_M_parent = param_2;\n            p_Var2 = p_Var4;\n            p_Var4 = param_2;\n          }" if (parenthesized_expression "(p_Var4->_M_left == param_2)" ( (binary_expression "p_Var4->_M_left == param_2" (field_expression "p_Var4->_M_left" identifier -> field_identifier) == identifier) )) (compound_statement "{\n            p_Var6 = param_2->_M_right;\n            p_Var4->_M_left = p_Var6;\n            p_Var5 = p_Var1;\n            if (p_Var6 != (_Base_ptr)0x0) {\n              p_Var6->_M_parent = p_Var4;\n              p_Var5 = p_Var4->_M_parent;\n            }\n            param_2->_M_parent = p_Var5;\n            if (p_Var4 == param_4->_M_parent) {\n              param_4->_M_parent = param_2;\n            }\n            else if (p_Var4 == p_Var5->_M_right) {\n              p_Var5->_M_right = param_2;\n            }\n            else {\n              p_Var5->_M_left = param_2;\n            }\n            param_2->_M_right = p_Var4;\n            p_Var4->_M_parent = param_2;\n            p_Var2 = p_Var4;\n            p_Var4 = param_2;\n          }" { (expression_statement "p_Var6 = param_2->_M_right;" (assignment_expression "p_Var6 = param_2->_M_right" identifier = (field_expression "param_2->_M_right" identifier -> field_identifier)) ;) (expression_statement "p_Var4->_M_left = p_Var6;" (assignment_expression "p_Var4->_M_left = p_Var6" (field_expression "p_Var4->_M_left" identifier -> field_identifier) = identifier) ;) (expression_statement "p_Var5 = p_Var1;" (assignment_expression "p_Var5 = p_Var1" identifier = identifier) ;) (if_statement "if (p_Var6 != (_Base_ptr)0x0) {\n              p_Var6->_M_parent = p_Var4;\n              p_Var5 = p_Var4->_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_Var4;\n              p_Var5 = p_Var4->_M_parent;\n            }" { (expression_statement "p_Var6->_M_parent = p_Var4;" (assignment_expression "p_Var6->_M_parent = p_Var4" (field_expression "p_Var6->_M_parent" identifier -> field_identifier) = identifier) ;) (expression_statement "p_Var5 = p_Var4->_M_parent;" (assignment_expression "p_Var5 = p_Var4->_M_parent" identifier = (field_expression "p_Var4->_M_parent" identifier -> field_identifier)) ;) })) (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) ;) (if_statement "if (p_Var4 == param_4->_M_parent) {\n              param_4->_M_parent = param_2;\n            }\n            else if (p_Var4 == p_Var5->_M_right) {\n              p_Var5->_M_right = param_2;\n            }\n            else {\n              p_Var5->_M_left = param_2;\n            }" if (parenthesized_expression "(p_Var4 == param_4->_M_parent)" ( (binary_expression "p_Var4 == param_4->_M_parent" identifier == (field_expression "param_4->_M_parent" identifier -> field_identifier)) )) (compound_statement "{\n              param_4->_M_parent = param_2;\n            }" { (expression_statement "param_4->_M_parent = param_2;" (assignment_expression "param_4->_M_parent = param_2" (field_expression "param_4->_M_parent" identifier -> field_identifier) = identifier) ;) }) (else_clause "else if (p_Var4 == p_Var5->_M_right) {\n              p_Var5->_M_right = param_2;\n            }\n            else {\n              p_Var5->_M_left = param_2;\n            }" else (if_statement "if (p_Var4 == p_Var5->_M_right) {\n              p_Var5->_M_right = param_2;\n            }\n            else {\n              p_Var5->_M_left = param_2;\n            }" if (parenthesized_expression "(p_Var4 == p_Var5->_M_right)" ( (binary_expression "p_Var4 == p_Var5->_M_right" identifier == (field_expression "p_Var5->_M_right" identifier -> field_identifier)) )) (compound_statement "{\n              p_Var5->_M_right = param_2;\n            }" { (expression_statement "p_Var5->_M_right = param_2;" (assignment_expression "p_Var5->_M_right = param_2" (field_expression "p_Var5->_M_right" identifier -> field_identifier) = identifier) ;) }) (else_clause "else {\n              p_Var5->_M_left = param_2;\n            }" else (compound_statement "{\n              p_Var5->_M_left = param_2;\n            }" { (expression_statement "p_Var5->_M_left = param_2;" (assignment_expression "p_Var5->_M_left = param_2" (field_expression "p_Var5->_M_left" identifier -> field_identifier) = identifier) ;) }))))) (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) ;) (expression_statement "p_Var4->_M_parent = param_2;" (assignment_expression "p_Var4->_M_parent = param_2" (field_expression "p_Var4->_M_parent" identifier -> field_identifier) = identifier) ;) (expression_statement "p_Var2 = p_Var4;" (assignment_expression "p_Var2 = p_Var4" identifier = identifier) ;) (expression_statement "p_Var4 = param_2;" (assignment_expression "p_Var4 = param_2" identifier = 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) ;) (expression_statement "p_Var6 = p_Var1->_M_right;" (assignment_expression "p_Var6 = p_Var1->_M_right" identifier = (field_expression "p_Var1->_M_right" identifier -> field_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_Var5 = p_Var6->_M_left;" (assignment_expression "p_Var5 = p_Var6->_M_left" identifier = (field_expression "p_Var6->_M_left" identifier -> field_identifier)) ;) (expression_statement "p_Var1->_M_right = p_Var5;" (assignment_expression "p_Var1->_M_right = p_Var5" (field_expression "p_Var1->_M_right" identifier -> field_identifier) = identifier) ;) (if_statement "if (p_Var5 != (_Base_ptr)0x0) {\n            p_Var5->_M_parent = p_Var1;\n          }" if (parenthesized_expression "(p_Var5 != (_Base_ptr)0x0)" ( (binary_expression "p_Var5 != (_Base_ptr)0x0" identifier != (cast_expression "(_Base_ptr)0x0" ( (type_descriptor "_Base_ptr" type_identifier) ) number_literal)) )) (compound_statement "{\n            p_Var5->_M_parent = p_Var1;\n          }" { (expression_statement "p_Var5->_M_parent = p_Var1;" (assignment_expression "p_Var5->_M_parent = p_Var1" (field_expression "p_Var5->_M_parent" identifier -> field_identifier) = identifier) ;) })) (expression_statement "p_Var5 = p_Var1->_M_parent;" (assignment_expression "p_Var5 = p_Var1->_M_parent" identifier = (field_expression "p_Var1->_M_parent" identifier -> field_identifier)) ;) (expression_statement "p_Var6->_M_parent = p_Var5;" (assignment_expression "p_Var6->_M_parent = p_Var5" (field_expression "p_Var6->_M_parent" identifier -> field_identifier) = identifier) ;) (if_statement "if (p_Var1 == param_4->_M_parent) {\n            param_4->_M_parent = p_Var6;\n          }\n          else if (p_Var1 == p_Var5->_M_left) {\n            p_Var5->_M_left = p_Var6;\n          }\n          else {\n            p_Var5->_M_right = p_Var6;\n          }" if (parenthesized_expression "(p_Var1 == param_4->_M_parent)" ( (binary_expression "p_Var1 == param_4->_M_parent" identifier == (field_expression "param_4->_M_parent" identifier -> field_identifier)) )) (compound_statement "{\n            param_4->_M_parent = p_Var6;\n          }" { (expression_statement "param_4->_M_parent = p_Var6;" (assignment_expression "param_4->_M_parent = p_Var6" (field_expression "param_4->_M_parent" identifier -> field_identifier) = identifier) ;) }) (else_clause "else if (p_Var1 == p_Var5->_M_left) {\n            p_Var5->_M_left = p_Var6;\n          }\n          else {\n            p_Var5->_M_right = p_Var6;\n          }" else (if_statement "if (p_Var1 == p_Var5->_M_left) {\n            p_Var5->_M_left = p_Var6;\n          }\n          else {\n            p_Var5->_M_right = p_Var6;\n          }" if (parenthesized_expression "(p_Var1 == p_Var5->_M_left)" ( (binary_expression "p_Var1 == p_Var5->_M_left" identifier == (field_expression "p_Var5->_M_left" identifier -> field_identifier)) )) (compound_statement "{\n            p_Var5->_M_left = p_Var6;\n          }" { (expression_statement "p_Var5->_M_left = p_Var6;" (assignment_expression "p_Var5->_M_left = p_Var6" (field_expression "p_Var5->_M_left" identifier -> field_identifier) = identifier) ;) }) (else_clause "else {\n            p_Var5->_M_right = p_Var6;\n          }" else (compound_statement "{\n            p_Var5->_M_right = p_Var6;\n          }" { (expression_statement "p_Var5->_M_right = p_Var6;" (assignment_expression "p_Var5->_M_right = p_Var6" (field_expression "p_Var5->_M_right" identifier -> field_identifier) = identifier) ;) }))))) (expression_statement "p_Var6->_M_left = p_Var1;" (assignment_expression "p_Var6->_M_left = p_Var1" (field_expression "p_Var6->_M_left" identifier -> field_identifier) = identifier) ;) (expression_statement "p_Var1->_M_parent = p_Var6;" (assignment_expression "p_Var1->_M_parent = p_Var6" (field_expression "p_Var1->_M_parent" identifier -> field_identifier) = identifier) ;) (expression_statement "p_Var7 = param_4->_M_parent;" (assignment_expression "p_Var7 = param_4->_M_parent" identifier = (field_expression "param_4->_M_parent" identifier -> field_identifier)) ;) (expression_statement "param_2 = p_Var2;" (assignment_expression "param_2 = p_Var2" identifier = identifier) ;) }) (else_clause "else {\n          p_Var4->_M_color = _S_black;\n          p_Var2->_M_color = _S_black;\n          p_Var1->_M_color = _S_red;\n          param_2 = p_Var1;\n        }" else (compound_statement "{\n          p_Var4->_M_color = _S_black;\n          p_Var2->_M_color = _S_black;\n          p_Var1->_M_color = _S_red;\n          param_2 = p_Var1;\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_Var2->_M_color = _S_black;" (assignment_expression "p_Var2->_M_color = _S_black" (field_expression "p_Var2->_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 "param_2 = p_Var1;" (assignment_expression "param_2 = p_Var1" identifier = identifier) ;) }))) })) (expression_statement "p_Var6 = p_Var1->_M_right;" (assignment_expression "p_Var6 = p_Var1->_M_right" identifier = (field_expression "p_Var1->_M_right" identifier -> field_identifier)) ;) (if_statement "if ((p_Var6 == (_Base_ptr)0x0) || (p_Var6->_M_color != _S_red)) break;" if (parenthesized_expression "((p_Var6 == (_Base_ptr)0x0) || (p_Var6->_M_color != _S_red))" ( (binary_expression "(p_Var6 == (_Base_ptr)0x0) || (p_Var6->_M_color != _S_red)" (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_red)" ( (binary_expression "p_Var6->_M_color != _S_red" (field_expression "p_Var6->_M_color" identifier -> field_identifier) != identifier) ))) )) (break_statement "break;" break ;)) (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_Var6->_M_color = _S_black;" (assignment_expression "p_Var6->_M_color = _S_black" (field_expression "p_Var6->_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 "param_2 = p_Var1;" (assignment_expression "param_2 = p_Var1" identifier = identifier) ;) })) (expression_statement "p_Var3 = param_2;" (assignment_expression "p_Var3 = param_2" identifier = identifier) ;) (if_statement "if (p_Var4->_M_right == param_2) {\n      p_Var6 = param_2->_M_left;\n      p_Var4->_M_right = p_Var6;\n      if (p_Var6 == (_Base_ptr)0x0) {\n        param_2->_M_parent = p_Var1;\n        p_Var6 = p_Var1;\n        if (p_Var4 == param_4->_M_parent) goto LAB_001fe9e0;\nLAB_001fe9d2:\n        p_Var6->_M_left = param_2;\n      }\n      else {\n        p_Var6->_M_parent = p_Var4;\n        p_Var6 = p_Var4->_M_parent;\n        param_2->_M_parent = p_Var6;\n        if (p_Var4 == param_4->_M_parent) {\nLAB_001fe9e0:\n          param_4->_M_parent = param_2;\n        }\n        else {\n          if (p_Var4 == p_Var6->_M_left) goto LAB_001fe9d2;\n          p_Var6->_M_right = param_2;\n        }\n      }\n      param_2->_M_left = p_Var4;\n      p_Var2 = p_Var1->_M_left;\n      p_Var4->_M_parent = param_2;\n      p_Var3 = p_Var4;\n      p_Var4 = param_2;\n    }" if (parenthesized_expression "(p_Var4->_M_right == param_2)" ( (binary_expression "p_Var4->_M_right == param_2" (field_expression "p_Var4->_M_right" identifier -> field_identifier) == identifier) )) (compound_statement "{\n      p_Var6 = param_2->_M_left;\n      p_Var4->_M_right = p_Var6;\n      if (p_Var6 == (_Base_ptr)0x0) {\n        param_2->_M_parent = p_Var1;\n        p_Var6 = p_Var1;\n        if (p_Var4 == param_4->_M_parent) goto LAB_001fe9e0;\nLAB_001fe9d2:\n        p_Var6->_M_left = param_2;\n      }\n      else {\n        p_Var6->_M_parent = p_Var4;\n        p_Var6 = p_Var4->_M_parent;\n        param_2->_M_parent = p_Var6;\n        if (p_Var4 == param_4->_M_parent) {\nLAB_001fe9e0:\n          param_4->_M_parent = param_2;\n        }\n        else {\n          if (p_Var4 == p_Var6->_M_left) goto LAB_001fe9d2;\n          p_Var6->_M_right = param_2;\n        }\n      }\n      param_2->_M_left = p_Var4;\n      p_Var2 = p_Var1->_M_left;\n      p_Var4->_M_parent = param_2;\n      p_Var3 = p_Var4;\n      p_Var4 = param_2;\n    }" { (expression_statement "p_Var6 = param_2->_M_left;" (assignment_expression "p_Var6 = param_2->_M_left" identifier = (field_expression "param_2->_M_left" identifier -> field_identifier)) ;) (expression_statement "p_Var4->_M_right = p_Var6;" (assignment_expression "p_Var4->_M_right = p_Var6" (field_expression "p_Var4->_M_right" identifier -> field_identifier) = identifier) ;) (if_statement "if (p_Var6 == (_Base_ptr)0x0) {\n        param_2->_M_parent = p_Var1;\n        p_Var6 = p_Var1;\n        if (p_Var4 == param_4->_M_parent) goto LAB_001fe9e0;\nLAB_001fe9d2:\n        p_Var6->_M_left = param_2;\n      }\n      else {\n        p_Var6->_M_parent = p_Var4;\n        p_Var6 = p_Var4->_M_parent;\n        param_2->_M_parent = p_Var6;\n        if (p_Var4 == param_4->_M_parent) {\nLAB_001fe9e0:\n          param_4->_M_parent = param_2;\n        }\n        else {\n          if (p_Var4 == p_Var6->_M_left) goto LAB_001fe9d2;\n          p_Var6->_M_right = param_2;\n        }\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        param_2->_M_parent = p_Var1;\n        p_Var6 = p_Var1;\n        if (p_Var4 == param_4->_M_parent) goto LAB_001fe9e0;\nLAB_001fe9d2:\n        p_Var6->_M_left = param_2;\n      }" { (expression_statement "param_2->_M_parent = p_Var1;" (assignment_expression "param_2->_M_parent = p_Var1" (field_expression "param_2->_M_parent" identifier -> field_identifier) = identifier) ;) (expression_statement "p_Var6 = p_Var1;" (assignment_expression "p_Var6 = p_Var1" identifier = identifier) ;) (if_statement "if (p_Var4 == param_4->_M_parent) goto LAB_001fe9e0;" if (parenthesized_expression "(p_Var4 == param_4->_M_parent)" ( (binary_expression "p_Var4 == param_4->_M_parent" identifier == (field_expression "param_4->_M_parent" identifier -> field_identifier)) )) (goto_statement "goto LAB_001fe9e0;" goto statement_identifier ;)) (labeled_statement "LAB_001fe9d2:\n        p_Var6->_M_left = param_2;" statement_identifier : (expression_statement "p_Var6->_M_left = param_2;" (assignment_expression "p_Var6->_M_left = param_2" (field_expression "p_Var6->_M_left" identifier -> field_identifier) = identifier) ;)) }) (else_clause "else {\n        p_Var6->_M_parent = p_Var4;\n        p_Var6 = p_Var4->_M_parent;\n        param_2->_M_parent = p_Var6;\n        if (p_Var4 == param_4->_M_parent) {\nLAB_001fe9e0:\n          param_4->_M_parent = param_2;\n        }\n        else {\n          if (p_Var4 == p_Var6->_M_left) goto LAB_001fe9d2;\n          p_Var6->_M_right = param_2;\n        }\n      }" else (compound_statement "{\n        p_Var6->_M_parent = p_Var4;\n        p_Var6 = p_Var4->_M_parent;\n        param_2->_M_parent = p_Var6;\n        if (p_Var4 == param_4->_M_parent) {\nLAB_001fe9e0:\n          param_4->_M_parent = param_2;\n        }\n        else {\n          if (p_Var4 == p_Var6->_M_left) goto LAB_001fe9d2;\n          p_Var6->_M_right = param_2;\n        }\n      }" { (expression_statement "p_Var6->_M_parent = p_Var4;" (assignment_expression "p_Var6->_M_parent = p_Var4" (field_expression "p_Var6->_M_parent" identifier -> field_identifier) = identifier) ;) (expression_statement "p_Var6 = p_Var4->_M_parent;" (assignment_expression "p_Var6 = p_Var4->_M_parent" identifier = (field_expression "p_Var4->_M_parent" identifier -> field_identifier)) ;) (expression_statement "param_2->_M_parent = p_Var6;" (assignment_expression "param_2->_M_parent = p_Var6" (field_expression "param_2->_M_parent" identifier -> field_identifier) = identifier) ;) (if_statement "if (p_Var4 == param_4->_M_parent) {\nLAB_001fe9e0:\n          param_4->_M_parent = param_2;\n        }\n        else {\n          if (p_Var4 == p_Var6->_M_left) goto LAB_001fe9d2;\n          p_Var6->_M_right = param_2;\n        }" if (parenthesized_expression "(p_Var4 == param_4->_M_parent)" ( (binary_expression "p_Var4 == param_4->_M_parent" identifier == (field_expression "param_4->_M_parent" identifier -> field_identifier)) )) (compound_statement "{\nLAB_001fe9e0:\n          param_4->_M_parent = param_2;\n        }" { (labeled_statement "LAB_001fe9e0:\n          param_4->_M_parent = param_2;" statement_identifier : (expression_statement "param_4->_M_parent = param_2;" (assignment_expression "param_4->_M_parent = param_2" (field_expression "param_4->_M_parent" identifier -> field_identifier) = identifier) ;)) }) (else_clause "else {\n          if (p_Var4 == p_Var6->_M_left) goto LAB_001fe9d2;\n          p_Var6->_M_right = param_2;\n        }" else (compound_statement "{\n          if (p_Var4 == p_Var6->_M_left) goto LAB_001fe9d2;\n          p_Var6->_M_right = param_2;\n        }" { (if_statement "if (p_Var4 == p_Var6->_M_left) goto LAB_001fe9d2;" if (parenthesized_expression "(p_Var4 == p_Var6->_M_left)" ( (binary_expression "p_Var4 == p_Var6->_M_left" identifier == (field_expression "p_Var6->_M_left" identifier -> field_identifier)) )) (goto_statement "goto LAB_001fe9d2;" goto statement_identifier ;)) (expression_statement "p_Var6->_M_right = param_2;" (assignment_expression "p_Var6->_M_right = param_2" (field_expression "p_Var6->_M_right" identifier -> field_identifier) = identifier) ;) }))) }))) (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 "p_Var2 = p_Var1->_M_left;" (assignment_expression "p_Var2 = p_Var1->_M_left" identifier = (field_expression "p_Var1->_M_left" identifier -> field_identifier)) ;) (expression_statement "p_Var4->_M_parent = param_2;" (assignment_expression "p_Var4->_M_parent = param_2" (field_expression "p_Var4->_M_parent" identifier -> field_identifier) = identifier) ;) (expression_statement "p_Var3 = p_Var4;" (assignment_expression "p_Var3 = p_Var4" identifier = identifier) ;) (expression_statement "p_Var4 = param_2;" (assignment_expression "p_Var4 = param_2" identifier = 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) ;) (expression_statement "p_Var6 = p_Var2->_M_right;" (assignment_expression "p_Var6 = p_Var2->_M_right" identifier = (field_expression "p_Var2->_M_right" identifier -> field_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_Var6;" (assignment_expression "p_Var1->_M_left = p_Var6" (field_expression "p_Var1->_M_left" identifier -> field_identifier) = identifier) ;) (if_statement "if (p_Var6 != (_Base_ptr)0x0) {\n      p_Var6->_M_parent = p_Var1;\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    }" { (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_Var6 = p_Var1->_M_parent;" (assignment_expression "p_Var6 = p_Var1->_M_parent" identifier = (field_expression "p_Var1->_M_parent" identifier -> field_identifier)) ;) (expression_statement "p_Var2->_M_parent = p_Var6;" (assignment_expression "p_Var2->_M_parent = p_Var6" (field_expression "p_Var2->_M_parent" identifier -> field_identifier) = identifier) ;) (if_statement "if (p_Var1 == param_4->_M_parent) {\n      param_4->_M_parent = p_Var2;\n    }\n    else if (p_Var1 == p_Var6->_M_right) {\n      p_Var6->_M_right = p_Var2;\n    }\n    else {\n      p_Var6->_M_left = p_Var2;\n    }" if (parenthesized_expression "(p_Var1 == param_4->_M_parent)" ( (binary_expression "p_Var1 == param_4->_M_parent" identifier == (field_expression "param_4->_M_parent" identifier -> field_identifier)) )) (compound_statement "{\n      param_4->_M_parent = p_Var2;\n    }" { (expression_statement "param_4->_M_parent = p_Var2;" (assignment_expression "param_4->_M_parent = p_Var2" (field_expression "param_4->_M_parent" identifier -> field_identifier) = identifier) ;) }) (else_clause "else if (p_Var1 == p_Var6->_M_right) {\n      p_Var6->_M_right = p_Var2;\n    }\n    else {\n      p_Var6->_M_left = p_Var2;\n    }" else (if_statement "if (p_Var1 == p_Var6->_M_right) {\n      p_Var6->_M_right = p_Var2;\n    }\n    else {\n      p_Var6->_M_left = p_Var2;\n    }" if (parenthesized_expression "(p_Var1 == p_Var6->_M_right)" ( (binary_expression "p_Var1 == p_Var6->_M_right" identifier == (field_expression "p_Var6->_M_right" identifier -> field_identifier)) )) (compound_statement "{\n      p_Var6->_M_right = p_Var2;\n    }" { (expression_statement "p_Var6->_M_right = p_Var2;" (assignment_expression "p_Var6->_M_right = p_Var2" (field_expression "p_Var6->_M_right" identifier -> field_identifier) = identifier) ;) }) (else_clause "else {\n      p_Var6->_M_left = p_Var2;\n    }" else (compound_statement "{\n      p_Var6->_M_left = p_Var2;\n    }" { (expression_statement "p_Var6->_M_left = p_Var2;" (assignment_expression "p_Var6->_M_left = p_Var2" (field_expression "p_Var6->_M_left" identifier -> field_identifier) = identifier) ;) }))))) (expression_statement "p_Var2->_M_right = p_Var1;" (assignment_expression "p_Var2->_M_right = p_Var1" (field_expression "p_Var2->_M_right" identifier -> field_identifier) = identifier) ;) (expression_statement "p_Var1->_M_parent = p_Var2;" (assignment_expression "p_Var1->_M_parent = p_Var2" (field_expression "p_Var1->_M_parent" identifier -> field_identifier) = identifier) ;) (expression_statement "p_Var7 = param_4->_M_parent;" (assignment_expression "p_Var7 = param_4->_M_parent" identifier = (field_expression "param_4->_M_parent" identifier -> field_identifier)) ;) (expression_statement "param_2 = p_Var3;" (assignment_expression "param_2 = p_Var3" identifier = identifier) ;) }) while (parenthesized_expression "( true )" ( true )) ;)) })))
(translation_unit "void FUN_001fe740(char param_1,int *param_2,int param_3,int param_4)\n\n{\n  int *piVar1;\n  int iVar2;\n  int iVar3;\n  int *piVar4;\n  int *piVar5;\n  int *piVar6;\n  int *piVar7;\n  \n  param_2[1] = param_3;\n  param_2[2] = 0;\n  param_2[3] = 0;\n  *param_2 = 0;\n  if (param_1 == '\0') {\n    *(int **)(param_3 + 0xc) = param_2;\n    if (*(int *)(param_4 + 0xc) == param_3) {\n      *(int **)(param_4 + 0xc) = param_2;\n    }\n  }\n  else {\n    *(int **)(param_3 + 8) = param_2;\n    if (param_4 == param_3) {\n      *(int **)(param_4 + 4) = param_2;\n      *(int **)(param_4 + 0xc) = param_2;\n      *param_2 = 1;\n      return;\n    }\n    if (*(int *)(param_4 + 8) == param_3) {\n      *(int **)(param_4 + 8) = param_2;\n      piVar7 = *(int **)(param_4 + 4);\n      goto joined_r0x001fe792;\n    }\n  }\n  piVar7 = *(int **)(param_4 + 4);\njoined_r0x001fe792:\n  do {\n    while( true ) {\n      while( true ) {\n        if ((param_2 == piVar7) || (piVar6 = (int *)param_2[1], *piVar6 != 0)) {\n          *piVar7 = 1;\n          return;\n        }\n        piVar1 = (int *)piVar6[1];\n        piVar4 = (int *)piVar1[2];\n        if (piVar6 == piVar4) break;\n        if ((piVar4 == (int *)0x0) || (*piVar4 != 0)) {\n          piVar4 = param_2;\n          if ((int *)piVar6[2] == param_2) {\n            iVar2 = param_2[3];\n            piVar6[2] = iVar2;\n            piVar7 = piVar1;\n            if (iVar2 != 0) {\n              *(int **)(iVar2 + 4) = piVar6;\n              piVar7 = (int *)piVar6[1];\n            }\n            param_2[1] = (int)piVar7;\n            if (piVar6 == *(int **)(param_4 + 4)) {\n              *(int **)(param_4 + 4) = param_2;\n            }\n            else if (piVar6 == (int *)piVar7[3]) {\n              piVar7[3] = (int)param_2;\n            }\n            else {\n              piVar7[2] = (int)param_2;\n            }\n            param_2[3] = (int)piVar6;\n            piVar6[1] = (int)param_2;\n            piVar4 = piVar6;\n            piVar6 = param_2;\n          }\n          *piVar6 = 1;\n          iVar2 = piVar1[3];\n          *piVar1 = 0;\n          iVar3 = *(int *)(iVar2 + 8);\n          piVar1[3] = iVar3;\n          if (iVar3 != 0) {\n            *(int **)(iVar3 + 4) = piVar1;\n          }\n          iVar3 = piVar1[1];\n          *(int *)(iVar2 + 4) = iVar3;\n          if (piVar1 == *(int **)(param_4 + 4)) {\n            *(int *)(param_4 + 4) = iVar2;\n          }\n          else if (piVar1 == *(int **)(iVar3 + 8)) {\n            *(int *)(iVar3 + 8) = iVar2;\n          }\n          else {\n            *(int *)(iVar3 + 0xc) = iVar2;\n          }\n          *(int **)(iVar2 + 8) = piVar1;\n          piVar1[1] = iVar2;\n          piVar7 = *(int **)(param_4 + 4);\n          param_2 = piVar4;\n        }\n        else {\n          *piVar6 = 1;\n          *piVar4 = 1;\n          *piVar1 = 0;\n          param_2 = piVar1;\n        }\n      }\n      piVar5 = (int *)piVar1[3];\n      if ((piVar5 == (int *)0x0) || (*piVar5 != 0)) break;\n      *piVar6 = 1;\n      *piVar5 = 1;\n      *piVar1 = 0;\n      param_2 = piVar1;\n    }\n    piVar5 = param_2;\n    if ((int *)piVar6[3] == param_2) {\n      iVar2 = param_2[2];\n      piVar6[3] = iVar2;\n      if (iVar2 == 0) {\n        param_2[1] = (int)piVar1;\n        piVar7 = piVar1;\n        if (piVar6 == *(int **)(param_4 + 4)) goto LAB_001fe9e0;\nLAB_001fe9d2:\n        piVar7[2] = (int)param_2;\n      }\n      else {\n        *(int **)(iVar2 + 4) = piVar6;\n        piVar7 = (int *)piVar6[1];\n        param_2[1] = (int)piVar7;\n        if (piVar6 == *(int **)(param_4 + 4)) {\nLAB_001fe9e0:\n          *(int **)(param_4 + 4) = param_2;\n        }\n        else {\n          if (piVar6 == (int *)piVar7[2]) goto LAB_001fe9d2;\n          piVar7[3] = (int)param_2;\n        }\n      }\n      param_2[2] = (int)piVar6;\n      piVar4 = (int *)piVar1[2];\n      piVar6[1] = (int)param_2;\n      piVar5 = piVar6;\n      piVar6 = param_2;\n    }\n    *piVar6 = 1;\n    iVar2 = piVar4[3];\n    *piVar1 = 0;\n    piVar1[2] = iVar2;\n    if (iVar2 != 0) {\n      *(int **)(iVar2 + 4) = piVar1;\n    }\n    iVar2 = piVar1[1];\n    piVar4[1] = iVar2;\n    if (piVar1 == *(int **)(param_4 + 4)) {\n      *(int **)(param_4 + 4) = piVar4;\n    }\n    else if (piVar1 == *(int **)(iVar2 + 0xc)) {\n      *(int **)(iVar2 + 0xc) = piVar4;\n    }\n    else {\n      *(int **)(iVar2 + 8) = piVar4;\n    }\n    piVar4[3] = (int)piVar1;\n    piVar1[1] = (int)piVar4;\n    piVar7 = *(int **)(param_4 + 4);\n    param_2 = piVar5;\n  } while( true );\n}\n\n" (function_definition "void FUN_001fe740(char param_1,int *param_2,int param_3,int param_4)\n\n{\n  int *piVar1;\n  int iVar2;\n  int iVar3;\n  int *piVar4;\n  int *piVar5;\n  int *piVar6;\n  int *piVar7;\n  \n  param_2[1] = param_3;\n  param_2[2] = 0;\n  param_2[3] = 0;\n  *param_2 = 0;\n  if (param_1 == '\0') {\n    *(int **)(param_3 + 0xc) = param_2;\n    if (*(int *)(param_4 + 0xc) == param_3) {\n      *(int **)(param_4 + 0xc) = param_2;\n    }\n  }\n  else {\n    *(int **)(param_3 + 8) = param_2;\n    if (param_4 == param_3) {\n      *(int **)(param_4 + 4) = param_2;\n      *(int **)(param_4 + 0xc) = param_2;\n      *param_2 = 1;\n      return;\n    }\n    if (*(int *)(param_4 + 8) == param_3) {\n      *(int **)(param_4 + 8) = param_2;\n      piVar7 = *(int **)(param_4 + 4);\n      goto joined_r0x001fe792;\n    }\n  }\n  piVar7 = *(int **)(param_4 + 4);\njoined_r0x001fe792:\n  do {\n    while( true ) {\n      while( true ) {\n        if ((param_2 == piVar7) || (piVar6 = (int *)param_2[1], *piVar6 != 0)) {\n          *piVar7 = 1;\n          return;\n        }\n        piVar1 = (int *)piVar6[1];\n        piVar4 = (int *)piVar1[2];\n        if (piVar6 == piVar4) break;\n        if ((piVar4 == (int *)0x0) || (*piVar4 != 0)) {\n          piVar4 = param_2;\n          if ((int *)piVar6[2] == param_2) {\n            iVar2 = param_2[3];\n            piVar6[2] = iVar2;\n            piVar7 = piVar1;\n            if (iVar2 != 0) {\n              *(int **)(iVar2 + 4) = piVar6;\n              piVar7 = (int *)piVar6[1];\n            }\n            param_2[1] = (int)piVar7;\n            if (piVar6 == *(int **)(param_4 + 4)) {\n              *(int **)(param_4 + 4) = param_2;\n            }\n            else if (piVar6 == (int *)piVar7[3]) {\n              piVar7[3] = (int)param_2;\n            }\n            else {\n              piVar7[2] = (int)param_2;\n            }\n            param_2[3] = (int)piVar6;\n            piVar6[1] = (int)param_2;\n            piVar4 = piVar6;\n            piVar6 = param_2;\n          }\n          *piVar6 = 1;\n          iVar2 = piVar1[3];\n          *piVar1 = 0;\n          iVar3 = *(int *)(iVar2 + 8);\n          piVar1[3] = iVar3;\n          if (iVar3 != 0) {\n            *(int **)(iVar3 + 4) = piVar1;\n          }\n          iVar3 = piVar1[1];\n          *(int *)(iVar2 + 4) = iVar3;\n          if (piVar1 == *(int **)(param_4 + 4)) {\n            *(int *)(param_4 + 4) = iVar2;\n          }\n          else if (piVar1 == *(int **)(iVar3 + 8)) {\n            *(int *)(iVar3 + 8) = iVar2;\n          }\n          else {\n            *(int *)(iVar3 + 0xc) = iVar2;\n          }\n          *(int **)(iVar2 + 8) = piVar1;\n          piVar1[1] = iVar2;\n          piVar7 = *(int **)(param_4 + 4);\n          param_2 = piVar4;\n        }\n        else {\n          *piVar6 = 1;\n          *piVar4 = 1;\n          *piVar1 = 0;\n          param_2 = piVar1;\n        }\n      }\n      piVar5 = (int *)piVar1[3];\n      if ((piVar5 == (int *)0x0) || (*piVar5 != 0)) break;\n      *piVar6 = 1;\n      *piVar5 = 1;\n      *piVar1 = 0;\n      param_2 = piVar1;\n    }\n    piVar5 = param_2;\n    if ((int *)piVar6[3] == param_2) {\n      iVar2 = param_2[2];\n      piVar6[3] = iVar2;\n      if (iVar2 == 0) {\n        param_2[1] = (int)piVar1;\n        piVar7 = piVar1;\n        if (piVar6 == *(int **)(param_4 + 4)) goto LAB_001fe9e0;\nLAB_001fe9d2:\n        piVar7[2] = (int)param_2;\n      }\n      else {\n        *(int **)(iVar2 + 4) = piVar6;\n        piVar7 = (int *)piVar6[1];\n        param_2[1] = (int)piVar7;\n        if (piVar6 == *(int **)(param_4 + 4)) {\nLAB_001fe9e0:\n          *(int **)(param_4 + 4) = param_2;\n        }\n        else {\n          if (piVar6 == (int *)piVar7[2]) goto LAB_001fe9d2;\n          piVar7[3] = (int)param_2;\n        }\n      }\n      param_2[2] = (int)piVar6;\n      piVar4 = (int *)piVar1[2];\n      piVar6[1] = (int)param_2;\n      piVar5 = piVar6;\n      piVar6 = param_2;\n    }\n    *piVar6 = 1;\n    iVar2 = piVar4[3];\n    *piVar1 = 0;\n    piVar1[2] = iVar2;\n    if (iVar2 != 0) {\n      *(int **)(iVar2 + 4) = piVar1;\n    }\n    iVar2 = piVar1[1];\n    piVar4[1] = iVar2;\n    if (piVar1 == *(int **)(param_4 + 4)) {\n      *(int **)(param_4 + 4) = piVar4;\n    }\n    else if (piVar1 == *(int **)(iVar2 + 0xc)) {\n      *(int **)(iVar2 + 0xc) = piVar4;\n    }\n    else {\n      *(int **)(iVar2 + 8) = piVar4;\n    }\n    piVar4[3] = (int)piVar1;\n    piVar1[1] = (int)piVar4;\n    piVar7 = *(int **)(param_4 + 4);\n    param_2 = piVar5;\n  } while( true );\n}" primitive_type (function_declarator "FUN_001fe740(char param_1,int *param_2,int param_3,int param_4)" identifier (parameter_list "(char param_1,int *param_2,int param_3,int param_4)" ( (parameter_declaration "char param_1" primitive_type identifier) , (parameter_declaration "int *param_2" primitive_type (pointer_declarator "*param_2" * identifier)) , (parameter_declaration "int param_3" primitive_type identifier) , (parameter_declaration "int param_4" primitive_type identifier) ))) (compound_statement "{\n  int *piVar1;\n  int iVar2;\n  int iVar3;\n  int *piVar4;\n  int *piVar5;\n  int *piVar6;\n  int *piVar7;\n  \n  param_2[1] = param_3;\n  param_2[2] = 0;\n  param_2[3] = 0;\n  *param_2 = 0;\n  if (param_1 == '\0') {\n    *(int **)(param_3 + 0xc) = param_2;\n    if (*(int *)(param_4 + 0xc) == param_3) {\n      *(int **)(param_4 + 0xc) = param_2;\n    }\n  }\n  else {\n    *(int **)(param_3 + 8) = param_2;\n    if (param_4 == param_3) {\n      *(int **)(param_4 + 4) = param_2;\n      *(int **)(param_4 + 0xc) = param_2;\n      *param_2 = 1;\n      return;\n    }\n    if (*(int *)(param_4 + 8) == param_3) {\n      *(int **)(param_4 + 8) = param_2;\n      piVar7 = *(int **)(param_4 + 4);\n      goto joined_r0x001fe792;\n    }\n  }\n  piVar7 = *(int **)(param_4 + 4);\njoined_r0x001fe792:\n  do {\n    while( true ) {\n      while( true ) {\n        if ((param_2 == piVar7) || (piVar6 = (int *)param_2[1], *piVar6 != 0)) {\n          *piVar7 = 1;\n          return;\n        }\n        piVar1 = (int *)piVar6[1];\n        piVar4 = (int *)piVar1[2];\n        if (piVar6 == piVar4) break;\n        if ((piVar4 == (int *)0x0) || (*piVar4 != 0)) {\n          piVar4 = param_2;\n          if ((int *)piVar6[2] == param_2) {\n            iVar2 = param_2[3];\n            piVar6[2] = iVar2;\n            piVar7 = piVar1;\n            if (iVar2 != 0) {\n              *(int **)(iVar2 + 4) = piVar6;\n              piVar7 = (int *)piVar6[1];\n            }\n            param_2[1] = (int)piVar7;\n            if (piVar6 == *(int **)(param_4 + 4)) {\n              *(int **)(param_4 + 4) = param_2;\n            }\n            else if (piVar6 == (int *)piVar7[3]) {\n              piVar7[3] = (int)param_2;\n            }\n            else {\n              piVar7[2] = (int)param_2;\n            }\n            param_2[3] = (int)piVar6;\n            piVar6[1] = (int)param_2;\n            piVar4 = piVar6;\n            piVar6 = param_2;\n          }\n          *piVar6 = 1;\n          iVar2 = piVar1[3];\n          *piVar1 = 0;\n          iVar3 = *(int *)(iVar2 + 8);\n          piVar1[3] = iVar3;\n          if (iVar3 != 0) {\n            *(int **)(iVar3 + 4) = piVar1;\n          }\n          iVar3 = piVar1[1];\n          *(int *)(iVar2 + 4) = iVar3;\n          if (piVar1 == *(int **)(param_4 + 4)) {\n            *(int *)(param_4 + 4) = iVar2;\n          }\n          else if (piVar1 == *(int **)(iVar3 + 8)) {\n            *(int *)(iVar3 + 8) = iVar2;\n          }\n          else {\n            *(int *)(iVar3 + 0xc) = iVar2;\n          }\n          *(int **)(iVar2 + 8) = piVar1;\n          piVar1[1] = iVar2;\n          piVar7 = *(int **)(param_4 + 4);\n          param_2 = piVar4;\n        }\n        else {\n          *piVar6 = 1;\n          *piVar4 = 1;\n          *piVar1 = 0;\n          param_2 = piVar1;\n        }\n      }\n      piVar5 = (int *)piVar1[3];\n      if ((piVar5 == (int *)0x0) || (*piVar5 != 0)) break;\n      *piVar6 = 1;\n      *piVar5 = 1;\n      *piVar1 = 0;\n      param_2 = piVar1;\n    }\n    piVar5 = param_2;\n    if ((int *)piVar6[3] == param_2) {\n      iVar2 = param_2[2];\n      piVar6[3] = iVar2;\n      if (iVar2 == 0) {\n        param_2[1] = (int)piVar1;\n        piVar7 = piVar1;\n        if (piVar6 == *(int **)(param_4 + 4)) goto LAB_001fe9e0;\nLAB_001fe9d2:\n        piVar7[2] = (int)param_2;\n      }\n      else {\n        *(int **)(iVar2 + 4) = piVar6;\n        piVar7 = (int *)piVar6[1];\n        param_2[1] = (int)piVar7;\n        if (piVar6 == *(int **)(param_4 + 4)) {\nLAB_001fe9e0:\n          *(int **)(param_4 + 4) = param_2;\n        }\n        else {\n          if (piVar6 == (int *)piVar7[2]) goto LAB_001fe9d2;\n          piVar7[3] = (int)param_2;\n        }\n      }\n      param_2[2] = (int)piVar6;\n      piVar4 = (int *)piVar1[2];\n      piVar6[1] = (int)param_2;\n      piVar5 = piVar6;\n      piVar6 = param_2;\n    }\n    *piVar6 = 1;\n    iVar2 = piVar4[3];\n    *piVar1 = 0;\n    piVar1[2] = iVar2;\n    if (iVar2 != 0) {\n      *(int **)(iVar2 + 4) = piVar1;\n    }\n    iVar2 = piVar1[1];\n    piVar4[1] = iVar2;\n    if (piVar1 == *(int **)(param_4 + 4)) {\n      *(int **)(param_4 + 4) = piVar4;\n    }\n    else if (piVar1 == *(int **)(iVar2 + 0xc)) {\n      *(int **)(iVar2 + 0xc) = piVar4;\n    }\n    else {\n      *(int **)(iVar2 + 8) = piVar4;\n    }\n    piVar4[3] = (int)piVar1;\n    piVar1[1] = (int)piVar4;\n    piVar7 = *(int **)(param_4 + 4);\n    param_2 = piVar5;\n  } while( true );\n}" { (declaration "int *piVar1;" primitive_type (pointer_declarator "*piVar1" * identifier) ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "int *piVar4;" primitive_type (pointer_declarator "*piVar4" * 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) ;) (expression_statement "param_2[1] = param_3;" (assignment_expression "param_2[1] = param_3" (subscript_expression "param_2[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_2[2] = 0;" (assignment_expression "param_2[2] = 0" (subscript_expression "param_2[2]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "param_2[3] = 0;" (assignment_expression "param_2[3] = 0" (subscript_expression "param_2[3]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*param_2 = 0;" (assignment_expression "*param_2 = 0" (pointer_expression "*param_2" * identifier) = number_literal) ;) (if_statement "if (param_1 == '\0') {\n    *(int **)(param_3 + 0xc) = param_2;\n    if (*(int *)(param_4 + 0xc) == param_3) {\n      *(int **)(param_4 + 0xc) = param_2;\n    }\n  }\n  else {\n    *(int **)(param_3 + 8) = param_2;\n    if (param_4 == param_3) {\n      *(int **)(param_4 + 4) = param_2;\n      *(int **)(param_4 + 0xc) = param_2;\n      *param_2 = 1;\n      return;\n    }\n    if (*(int *)(param_4 + 8) == param_3) {\n      *(int **)(param_4 + 8) = param_2;\n      piVar7 = *(int **)(param_4 + 4);\n      goto joined_r0x001fe792;\n    }\n  }" if (parenthesized_expression "(param_1 == '\0')" ( (binary_expression "param_1 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    *(int **)(param_3 + 0xc) = param_2;\n    if (*(int *)(param_4 + 0xc) == param_3) {\n      *(int **)(param_4 + 0xc) = param_2;\n    }\n  }" { (expression_statement "*(int **)(param_3 + 0xc) = param_2;" (assignment_expression "*(int **)(param_3 + 0xc) = param_2" (pointer_expression "*(int **)(param_3 + 0xc)" * (cast_expression "(int **)(param_3 + 0xc)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_3 + 0xc)" ( (binary_expression "param_3 + 0xc" identifier + number_literal) )))) = identifier) ;) (if_statement "if (*(int *)(param_4 + 0xc) == param_3) {\n      *(int **)(param_4 + 0xc) = param_2;\n    }" if (parenthesized_expression "(*(int *)(param_4 + 0xc) == param_3)" ( (binary_expression "*(int *)(param_4 + 0xc) == param_3" (pointer_expression "*(int *)(param_4 + 0xc)" * (cast_expression "(int *)(param_4 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_4 + 0xc)" ( (binary_expression "param_4 + 0xc" identifier + number_literal) )))) == identifier) )) (compound_statement "{\n      *(int **)(param_4 + 0xc) = param_2;\n    }" { (expression_statement "*(int **)(param_4 + 0xc) = param_2;" (assignment_expression "*(int **)(param_4 + 0xc) = param_2" (pointer_expression "*(int **)(param_4 + 0xc)" * (cast_expression "(int **)(param_4 + 0xc)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_4 + 0xc)" ( (binary_expression "param_4 + 0xc" identifier + number_literal) )))) = identifier) ;) })) }) (else_clause "else {\n    *(int **)(param_3 + 8) = param_2;\n    if (param_4 == param_3) {\n      *(int **)(param_4 + 4) = param_2;\n      *(int **)(param_4 + 0xc) = param_2;\n      *param_2 = 1;\n      return;\n    }\n    if (*(int *)(param_4 + 8) == param_3) {\n      *(int **)(param_4 + 8) = param_2;\n      piVar7 = *(int **)(param_4 + 4);\n      goto joined_r0x001fe792;\n    }\n  }" else (compound_statement "{\n    *(int **)(param_3 + 8) = param_2;\n    if (param_4 == param_3) {\n      *(int **)(param_4 + 4) = param_2;\n      *(int **)(param_4 + 0xc) = param_2;\n      *param_2 = 1;\n      return;\n    }\n    if (*(int *)(param_4 + 8) == param_3) {\n      *(int **)(param_4 + 8) = param_2;\n      piVar7 = *(int **)(param_4 + 4);\n      goto joined_r0x001fe792;\n    }\n  }" { (expression_statement "*(int **)(param_3 + 8) = param_2;" (assignment_expression "*(int **)(param_3 + 8) = param_2" (pointer_expression "*(int **)(param_3 + 8)" * (cast_expression "(int **)(param_3 + 8)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_3 + 8)" ( (binary_expression "param_3 + 8" identifier + number_literal) )))) = identifier) ;) (if_statement "if (param_4 == param_3) {\n      *(int **)(param_4 + 4) = param_2;\n      *(int **)(param_4 + 0xc) = param_2;\n      *param_2 = 1;\n      return;\n    }" if (parenthesized_expression "(param_4 == param_3)" ( (binary_expression "param_4 == param_3" identifier == identifier) )) (compound_statement "{\n      *(int **)(param_4 + 4) = param_2;\n      *(int **)(param_4 + 0xc) = param_2;\n      *param_2 = 1;\n      return;\n    }" { (expression_statement "*(int **)(param_4 + 4) = param_2;" (assignment_expression "*(int **)(param_4 + 4) = param_2" (pointer_expression "*(int **)(param_4 + 4)" * (cast_expression "(int **)(param_4 + 4)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_4 + 4)" ( (binary_expression "param_4 + 4" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int **)(param_4 + 0xc) = param_2;" (assignment_expression "*(int **)(param_4 + 0xc) = param_2" (pointer_expression "*(int **)(param_4 + 0xc)" * (cast_expression "(int **)(param_4 + 0xc)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_4 + 0xc)" ( (binary_expression "param_4 + 0xc" identifier + number_literal) )))) = identifier) ;) (expression_statement "*param_2 = 1;" (assignment_expression "*param_2 = 1" (pointer_expression "*param_2" * identifier) = number_literal) ;) (return_statement "return;" return ;) })) (if_statement "if (*(int *)(param_4 + 8) == param_3) {\n      *(int **)(param_4 + 8) = param_2;\n      piVar7 = *(int **)(param_4 + 4);\n      goto joined_r0x001fe792;\n    }" if (parenthesized_expression "(*(int *)(param_4 + 8) == param_3)" ( (binary_expression "*(int *)(param_4 + 8) == param_3" (pointer_expression "*(int *)(param_4 + 8)" * (cast_expression "(int *)(param_4 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_4 + 8)" ( (binary_expression "param_4 + 8" identifier + number_literal) )))) == identifier) )) (compound_statement "{\n      *(int **)(param_4 + 8) = param_2;\n      piVar7 = *(int **)(param_4 + 4);\n      goto joined_r0x001fe792;\n    }" { (expression_statement "*(int **)(param_4 + 8) = param_2;" (assignment_expression "*(int **)(param_4 + 8) = param_2" (pointer_expression "*(int **)(param_4 + 8)" * (cast_expression "(int **)(param_4 + 8)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_4 + 8)" ( (binary_expression "param_4 + 8" identifier + number_literal) )))) = identifier) ;) (expression_statement "piVar7 = *(int **)(param_4 + 4);" (assignment_expression "piVar7 = *(int **)(param_4 + 4)" identifier = (pointer_expression "*(int **)(param_4 + 4)" * (cast_expression "(int **)(param_4 + 4)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_4 + 4)" ( (binary_expression "param_4 + 4" identifier + number_literal) ))))) ;) (goto_statement "goto joined_r0x001fe792;" goto statement_identifier ;) })) }))) (expression_statement "piVar7 = *(int **)(param_4 + 4);" (assignment_expression "piVar7 = *(int **)(param_4 + 4)" identifier = (pointer_expression "*(int **)(param_4 + 4)" * (cast_expression "(int **)(param_4 + 4)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_4 + 4)" ( (binary_expression "param_4 + 4" identifier + number_literal) ))))) ;) (labeled_statement "joined_r0x001fe792:\n  do {\n    while( true ) {\n      while( true ) {\n        if ((param_2 == piVar7) || (piVar6 = (int *)param_2[1], *piVar6 != 0)) {\n          *piVar7 = 1;\n          return;\n        }\n        piVar1 = (int *)piVar6[1];\n        piVar4 = (int *)piVar1[2];\n        if (piVar6 == piVar4) break;\n        if ((piVar4 == (int *)0x0) || (*piVar4 != 0)) {\n          piVar4 = param_2;\n          if ((int *)piVar6[2] == param_2) {\n            iVar2 = param_2[3];\n            piVar6[2] = iVar2;\n            piVar7 = piVar1;\n            if (iVar2 != 0) {\n              *(int **)(iVar2 + 4) = piVar6;\n              piVar7 = (int *)piVar6[1];\n            }\n            param_2[1] = (int)piVar7;\n            if (piVar6 == *(int **)(param_4 + 4)) {\n              *(int **)(param_4 + 4) = param_2;\n            }\n            else if (piVar6 == (int *)piVar7[3]) {\n              piVar7[3] = (int)param_2;\n            }\n            else {\n              piVar7[2] = (int)param_2;\n            }\n            param_2[3] = (int)piVar6;\n            piVar6[1] = (int)param_2;\n            piVar4 = piVar6;\n            piVar6 = param_2;\n          }\n          *piVar6 = 1;\n          iVar2 = piVar1[3];\n          *piVar1 = 0;\n          iVar3 = *(int *)(iVar2 + 8);\n          piVar1[3] = iVar3;\n          if (iVar3 != 0) {\n            *(int **)(iVar3 + 4) = piVar1;\n          }\n          iVar3 = piVar1[1];\n          *(int *)(iVar2 + 4) = iVar3;\n          if (piVar1 == *(int **)(param_4 + 4)) {\n            *(int *)(param_4 + 4) = iVar2;\n          }\n          else if (piVar1 == *(int **)(iVar3 + 8)) {\n            *(int *)(iVar3 + 8) = iVar2;\n          }\n          else {\n            *(int *)(iVar3 + 0xc) = iVar2;\n          }\n          *(int **)(iVar2 + 8) = piVar1;\n          piVar1[1] = iVar2;\n          piVar7 = *(int **)(param_4 + 4);\n          param_2 = piVar4;\n        }\n        else {\n          *piVar6 = 1;\n          *piVar4 = 1;\n          *piVar1 = 0;\n          param_2 = piVar1;\n        }\n      }\n      piVar5 = (int *)piVar1[3];\n      if ((piVar5 == (int *)0x0) || (*piVar5 != 0)) break;\n      *piVar6 = 1;\n      *piVar5 = 1;\n      *piVar1 = 0;\n      param_2 = piVar1;\n    }\n    piVar5 = param_2;\n    if ((int *)piVar6[3] == param_2) {\n      iVar2 = param_2[2];\n      piVar6[3] = iVar2;\n      if (iVar2 == 0) {\n        param_2[1] = (int)piVar1;\n        piVar7 = piVar1;\n        if (piVar6 == *(int **)(param_4 + 4)) goto LAB_001fe9e0;\nLAB_001fe9d2:\n        piVar7[2] = (int)param_2;\n      }\n      else {\n        *(int **)(iVar2 + 4) = piVar6;\n        piVar7 = (int *)piVar6[1];\n        param_2[1] = (int)piVar7;\n        if (piVar6 == *(int **)(param_4 + 4)) {\nLAB_001fe9e0:\n          *(int **)(param_4 + 4) = param_2;\n        }\n        else {\n          if (piVar6 == (int *)piVar7[2]) goto LAB_001fe9d2;\n          piVar7[3] = (int)param_2;\n        }\n      }\n      param_2[2] = (int)piVar6;\n      piVar4 = (int *)piVar1[2];\n      piVar6[1] = (int)param_2;\n      piVar5 = piVar6;\n      piVar6 = param_2;\n    }\n    *piVar6 = 1;\n    iVar2 = piVar4[3];\n    *piVar1 = 0;\n    piVar1[2] = iVar2;\n    if (iVar2 != 0) {\n      *(int **)(iVar2 + 4) = piVar1;\n    }\n    iVar2 = piVar1[1];\n    piVar4[1] = iVar2;\n    if (piVar1 == *(int **)(param_4 + 4)) {\n      *(int **)(param_4 + 4) = piVar4;\n    }\n    else if (piVar1 == *(int **)(iVar2 + 0xc)) {\n      *(int **)(iVar2 + 0xc) = piVar4;\n    }\n    else {\n      *(int **)(iVar2 + 8) = piVar4;\n    }\n    piVar4[3] = (int)piVar1;\n    piVar1[1] = (int)piVar4;\n    piVar7 = *(int **)(param_4 + 4);\n    param_2 = piVar5;\n  } while( true );" statement_identifier : (do_statement "do {\n    while( true ) {\n      while( true ) {\n        if ((param_2 == piVar7) || (piVar6 = (int *)param_2[1], *piVar6 != 0)) {\n          *piVar7 = 1;\n          return;\n        }\n        piVar1 = (int *)piVar6[1];\n        piVar4 = (int *)piVar1[2];\n        if (piVar6 == piVar4) break;\n        if ((piVar4 == (int *)0x0) || (*piVar4 != 0)) {\n          piVar4 = param_2;\n          if ((int *)piVar6[2] == param_2) {\n            iVar2 = param_2[3];\n            piVar6[2] = iVar2;\n            piVar7 = piVar1;\n            if (iVar2 != 0) {\n              *(int **)(iVar2 + 4) = piVar6;\n              piVar7 = (int *)piVar6[1];\n            }\n            param_2[1] = (int)piVar7;\n            if (piVar6 == *(int **)(param_4 + 4)) {\n              *(int **)(param_4 + 4) = param_2;\n            }\n            else if (piVar6 == (int *)piVar7[3]) {\n              piVar7[3] = (int)param_2;\n            }\n            else {\n              piVar7[2] = (int)param_2;\n            }\n            param_2[3] = (int)piVar6;\n            piVar6[1] = (int)param_2;\n            piVar4 = piVar6;\n            piVar6 = param_2;\n          }\n          *piVar6 = 1;\n          iVar2 = piVar1[3];\n          *piVar1 = 0;\n          iVar3 = *(int *)(iVar2 + 8);\n          piVar1[3] = iVar3;\n          if (iVar3 != 0) {\n            *(int **)(iVar3 + 4) = piVar1;\n          }\n          iVar3 = piVar1[1];\n          *(int *)(iVar2 + 4) = iVar3;\n          if (piVar1 == *(int **)(param_4 + 4)) {\n            *(int *)(param_4 + 4) = iVar2;\n          }\n          else if (piVar1 == *(int **)(iVar3 + 8)) {\n            *(int *)(iVar3 + 8) = iVar2;\n          }\n          else {\n            *(int *)(iVar3 + 0xc) = iVar2;\n          }\n          *(int **)(iVar2 + 8) = piVar1;\n          piVar1[1] = iVar2;\n          piVar7 = *(int **)(param_4 + 4);\n          param_2 = piVar4;\n        }\n        else {\n          *piVar6 = 1;\n          *piVar4 = 1;\n          *piVar1 = 0;\n          param_2 = piVar1;\n        }\n      }\n      piVar5 = (int *)piVar1[3];\n      if ((piVar5 == (int *)0x0) || (*piVar5 != 0)) break;\n      *piVar6 = 1;\n      *piVar5 = 1;\n      *piVar1 = 0;\n      param_2 = piVar1;\n    }\n    piVar5 = param_2;\n    if ((int *)piVar6[3] == param_2) {\n      iVar2 = param_2[2];\n      piVar6[3] = iVar2;\n      if (iVar2 == 0) {\n        param_2[1] = (int)piVar1;\n        piVar7 = piVar1;\n        if (piVar6 == *(int **)(param_4 + 4)) goto LAB_001fe9e0;\nLAB_001fe9d2:\n        piVar7[2] = (int)param_2;\n      }\n      else {\n        *(int **)(iVar2 + 4) = piVar6;\n        piVar7 = (int *)piVar6[1];\n        param_2[1] = (int)piVar7;\n        if (piVar6 == *(int **)(param_4 + 4)) {\nLAB_001fe9e0:\n          *(int **)(param_4 + 4) = param_2;\n        }\n        else {\n          if (piVar6 == (int *)piVar7[2]) goto LAB_001fe9d2;\n          piVar7[3] = (int)param_2;\n        }\n      }\n      param_2[2] = (int)piVar6;\n      piVar4 = (int *)piVar1[2];\n      piVar6[1] = (int)param_2;\n      piVar5 = piVar6;\n      piVar6 = param_2;\n    }\n    *piVar6 = 1;\n    iVar2 = piVar4[3];\n    *piVar1 = 0;\n    piVar1[2] = iVar2;\n    if (iVar2 != 0) {\n      *(int **)(iVar2 + 4) = piVar1;\n    }\n    iVar2 = piVar1[1];\n    piVar4[1] = iVar2;\n    if (piVar1 == *(int **)(param_4 + 4)) {\n      *(int **)(param_4 + 4) = piVar4;\n    }\n    else if (piVar1 == *(int **)(iVar2 + 0xc)) {\n      *(int **)(iVar2 + 0xc) = piVar4;\n    }\n    else {\n      *(int **)(iVar2 + 8) = piVar4;\n    }\n    piVar4[3] = (int)piVar1;\n    piVar1[1] = (int)piVar4;\n    piVar7 = *(int **)(param_4 + 4);\n    param_2 = piVar5;\n  } while( true );" do (compound_statement "{\n    while( true ) {\n      while( true ) {\n        if ((param_2 == piVar7) || (piVar6 = (int *)param_2[1], *piVar6 != 0)) {\n          *piVar7 = 1;\n          return;\n        }\n        piVar1 = (int *)piVar6[1];\n        piVar4 = (int *)piVar1[2];\n        if (piVar6 == piVar4) break;\n        if ((piVar4 == (int *)0x0) || (*piVar4 != 0)) {\n          piVar4 = param_2;\n          if ((int *)piVar6[2] == param_2) {\n            iVar2 = param_2[3];\n            piVar6[2] = iVar2;\n            piVar7 = piVar1;\n            if (iVar2 != 0) {\n              *(int **)(iVar2 + 4) = piVar6;\n              piVar7 = (int *)piVar6[1];\n            }\n            param_2[1] = (int)piVar7;\n            if (piVar6 == *(int **)(param_4 + 4)) {\n              *(int **)(param_4 + 4) = param_2;\n            }\n            else if (piVar6 == (int *)piVar7[3]) {\n              piVar7[3] = (int)param_2;\n            }\n            else {\n              piVar7[2] = (int)param_2;\n            }\n            param_2[3] = (int)piVar6;\n            piVar6[1] = (int)param_2;\n            piVar4 = piVar6;\n            piVar6 = param_2;\n          }\n          *piVar6 = 1;\n          iVar2 = piVar1[3];\n          *piVar1 = 0;\n          iVar3 = *(int *)(iVar2 + 8);\n          piVar1[3] = iVar3;\n          if (iVar3 != 0) {\n            *(int **)(iVar3 + 4) = piVar1;\n          }\n          iVar3 = piVar1[1];\n          *(int *)(iVar2 + 4) = iVar3;\n          if (piVar1 == *(int **)(param_4 + 4)) {\n            *(int *)(param_4 + 4) = iVar2;\n          }\n          else if (piVar1 == *(int **)(iVar3 + 8)) {\n            *(int *)(iVar3 + 8) = iVar2;\n          }\n          else {\n            *(int *)(iVar3 + 0xc) = iVar2;\n          }\n          *(int **)(iVar2 + 8) = piVar1;\n          piVar1[1] = iVar2;\n          piVar7 = *(int **)(param_4 + 4);\n          param_2 = piVar4;\n        }\n        else {\n          *piVar6 = 1;\n          *piVar4 = 1;\n          *piVar1 = 0;\n          param_2 = piVar1;\n        }\n      }\n      piVar5 = (int *)piVar1[3];\n      if ((piVar5 == (int *)0x0) || (*piVar5 != 0)) break;\n      *piVar6 = 1;\n      *piVar5 = 1;\n      *piVar1 = 0;\n      param_2 = piVar1;\n    }\n    piVar5 = param_2;\n    if ((int *)piVar6[3] == param_2) {\n      iVar2 = param_2[2];\n      piVar6[3] = iVar2;\n      if (iVar2 == 0) {\n        param_2[1] = (int)piVar1;\n        piVar7 = piVar1;\n        if (piVar6 == *(int **)(param_4 + 4)) goto LAB_001fe9e0;\nLAB_001fe9d2:\n        piVar7[2] = (int)param_2;\n      }\n      else {\n        *(int **)(iVar2 + 4) = piVar6;\n        piVar7 = (int *)piVar6[1];\n        param_2[1] = (int)piVar7;\n        if (piVar6 == *(int **)(param_4 + 4)) {\nLAB_001fe9e0:\n          *(int **)(param_4 + 4) = param_2;\n        }\n        else {\n          if (piVar6 == (int *)piVar7[2]) goto LAB_001fe9d2;\n          piVar7[3] = (int)param_2;\n        }\n      }\n      param_2[2] = (int)piVar6;\n      piVar4 = (int *)piVar1[2];\n      piVar6[1] = (int)param_2;\n      piVar5 = piVar6;\n      piVar6 = param_2;\n    }\n    *piVar6 = 1;\n    iVar2 = piVar4[3];\n    *piVar1 = 0;\n    piVar1[2] = iVar2;\n    if (iVar2 != 0) {\n      *(int **)(iVar2 + 4) = piVar1;\n    }\n    iVar2 = piVar1[1];\n    piVar4[1] = iVar2;\n    if (piVar1 == *(int **)(param_4 + 4)) {\n      *(int **)(param_4 + 4) = piVar4;\n    }\n    else if (piVar1 == *(int **)(iVar2 + 0xc)) {\n      *(int **)(iVar2 + 0xc) = piVar4;\n    }\n    else {\n      *(int **)(iVar2 + 8) = piVar4;\n    }\n    piVar4[3] = (int)piVar1;\n    piVar1[1] = (int)piVar4;\n    piVar7 = *(int **)(param_4 + 4);\n    param_2 = piVar5;\n  }" { (while_statement "while( true ) {\n      while( true ) {\n        if ((param_2 == piVar7) || (piVar6 = (int *)param_2[1], *piVar6 != 0)) {\n          *piVar7 = 1;\n          return;\n        }\n        piVar1 = (int *)piVar6[1];\n        piVar4 = (int *)piVar1[2];\n        if (piVar6 == piVar4) break;\n        if ((piVar4 == (int *)0x0) || (*piVar4 != 0)) {\n          piVar4 = param_2;\n          if ((int *)piVar6[2] == param_2) {\n            iVar2 = param_2[3];\n            piVar6[2] = iVar2;\n            piVar7 = piVar1;\n            if (iVar2 != 0) {\n              *(int **)(iVar2 + 4) = piVar6;\n              piVar7 = (int *)piVar6[1];\n            }\n            param_2[1] = (int)piVar7;\n            if (piVar6 == *(int **)(param_4 + 4)) {\n              *(int **)(param_4 + 4) = param_2;\n            }\n            else if (piVar6 == (int *)piVar7[3]) {\n              piVar7[3] = (int)param_2;\n            }\n            else {\n              piVar7[2] = (int)param_2;\n            }\n            param_2[3] = (int)piVar6;\n            piVar6[1] = (int)param_2;\n            piVar4 = piVar6;\n            piVar6 = param_2;\n          }\n          *piVar6 = 1;\n          iVar2 = piVar1[3];\n          *piVar1 = 0;\n          iVar3 = *(int *)(iVar2 + 8);\n          piVar1[3] = iVar3;\n          if (iVar3 != 0) {\n            *(int **)(iVar3 + 4) = piVar1;\n          }\n          iVar3 = piVar1[1];\n          *(int *)(iVar2 + 4) = iVar3;\n          if (piVar1 == *(int **)(param_4 + 4)) {\n            *(int *)(param_4 + 4) = iVar2;\n          }\n          else if (piVar1 == *(int **)(iVar3 + 8)) {\n            *(int *)(iVar3 + 8) = iVar2;\n          }\n          else {\n            *(int *)(iVar3 + 0xc) = iVar2;\n          }\n          *(int **)(iVar2 + 8) = piVar1;\n          piVar1[1] = iVar2;\n          piVar7 = *(int **)(param_4 + 4);\n          param_2 = piVar4;\n        }\n        else {\n          *piVar6 = 1;\n          *piVar4 = 1;\n          *piVar1 = 0;\n          param_2 = piVar1;\n        }\n      }\n      piVar5 = (int *)piVar1[3];\n      if ((piVar5 == (int *)0x0) || (*piVar5 != 0)) break;\n      *piVar6 = 1;\n      *piVar5 = 1;\n      *piVar1 = 0;\n      param_2 = piVar1;\n    }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n      while( true ) {\n        if ((param_2 == piVar7) || (piVar6 = (int *)param_2[1], *piVar6 != 0)) {\n          *piVar7 = 1;\n          return;\n        }\n        piVar1 = (int *)piVar6[1];\n        piVar4 = (int *)piVar1[2];\n        if (piVar6 == piVar4) break;\n        if ((piVar4 == (int *)0x0) || (*piVar4 != 0)) {\n          piVar4 = param_2;\n          if ((int *)piVar6[2] == param_2) {\n            iVar2 = param_2[3];\n            piVar6[2] = iVar2;\n            piVar7 = piVar1;\n            if (iVar2 != 0) {\n              *(int **)(iVar2 + 4) = piVar6;\n              piVar7 = (int *)piVar6[1];\n            }\n            param_2[1] = (int)piVar7;\n            if (piVar6 == *(int **)(param_4 + 4)) {\n              *(int **)(param_4 + 4) = param_2;\n            }\n            else if (piVar6 == (int *)piVar7[3]) {\n              piVar7[3] = (int)param_2;\n            }\n            else {\n              piVar7[2] = (int)param_2;\n            }\n            param_2[3] = (int)piVar6;\n            piVar6[1] = (int)param_2;\n            piVar4 = piVar6;\n            piVar6 = param_2;\n          }\n          *piVar6 = 1;\n          iVar2 = piVar1[3];\n          *piVar1 = 0;\n          iVar3 = *(int *)(iVar2 + 8);\n          piVar1[3] = iVar3;\n          if (iVar3 != 0) {\n            *(int **)(iVar3 + 4) = piVar1;\n          }\n          iVar3 = piVar1[1];\n          *(int *)(iVar2 + 4) = iVar3;\n          if (piVar1 == *(int **)(param_4 + 4)) {\n            *(int *)(param_4 + 4) = iVar2;\n          }\n          else if (piVar1 == *(int **)(iVar3 + 8)) {\n            *(int *)(iVar3 + 8) = iVar2;\n          }\n          else {\n            *(int *)(iVar3 + 0xc) = iVar2;\n          }\n          *(int **)(iVar2 + 8) = piVar1;\n          piVar1[1] = iVar2;\n          piVar7 = *(int **)(param_4 + 4);\n          param_2 = piVar4;\n        }\n        else {\n          *piVar6 = 1;\n          *piVar4 = 1;\n          *piVar1 = 0;\n          param_2 = piVar1;\n        }\n      }\n      piVar5 = (int *)piVar1[3];\n      if ((piVar5 == (int *)0x0) || (*piVar5 != 0)) break;\n      *piVar6 = 1;\n      *piVar5 = 1;\n      *piVar1 = 0;\n      param_2 = piVar1;\n    }" { (while_statement "while( true ) {\n        if ((param_2 == piVar7) || (piVar6 = (int *)param_2[1], *piVar6 != 0)) {\n          *piVar7 = 1;\n          return;\n        }\n        piVar1 = (int *)piVar6[1];\n        piVar4 = (int *)piVar1[2];\n        if (piVar6 == piVar4) break;\n        if ((piVar4 == (int *)0x0) || (*piVar4 != 0)) {\n          piVar4 = param_2;\n          if ((int *)piVar6[2] == param_2) {\n            iVar2 = param_2[3];\n            piVar6[2] = iVar2;\n            piVar7 = piVar1;\n            if (iVar2 != 0) {\n              *(int **)(iVar2 + 4) = piVar6;\n              piVar7 = (int *)piVar6[1];\n            }\n            param_2[1] = (int)piVar7;\n            if (piVar6 == *(int **)(param_4 + 4)) {\n              *(int **)(param_4 + 4) = param_2;\n            }\n            else if (piVar6 == (int *)piVar7[3]) {\n              piVar7[3] = (int)param_2;\n            }\n            else {\n              piVar7[2] = (int)param_2;\n            }\n            param_2[3] = (int)piVar6;\n            piVar6[1] = (int)param_2;\n            piVar4 = piVar6;\n            piVar6 = param_2;\n          }\n          *piVar6 = 1;\n          iVar2 = piVar1[3];\n          *piVar1 = 0;\n          iVar3 = *(int *)(iVar2 + 8);\n          piVar1[3] = iVar3;\n          if (iVar3 != 0) {\n            *(int **)(iVar3 + 4) = piVar1;\n          }\n          iVar3 = piVar1[1];\n          *(int *)(iVar2 + 4) = iVar3;\n          if (piVar1 == *(int **)(param_4 + 4)) {\n            *(int *)(param_4 + 4) = iVar2;\n          }\n          else if (piVar1 == *(int **)(iVar3 + 8)) {\n            *(int *)(iVar3 + 8) = iVar2;\n          }\n          else {\n            *(int *)(iVar3 + 0xc) = iVar2;\n          }\n          *(int **)(iVar2 + 8) = piVar1;\n          piVar1[1] = iVar2;\n          piVar7 = *(int **)(param_4 + 4);\n          param_2 = piVar4;\n        }\n        else {\n          *piVar6 = 1;\n          *piVar4 = 1;\n          *piVar1 = 0;\n          param_2 = piVar1;\n        }\n      }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n        if ((param_2 == piVar7) || (piVar6 = (int *)param_2[1], *piVar6 != 0)) {\n          *piVar7 = 1;\n          return;\n        }\n        piVar1 = (int *)piVar6[1];\n        piVar4 = (int *)piVar1[2];\n        if (piVar6 == piVar4) break;\n        if ((piVar4 == (int *)0x0) || (*piVar4 != 0)) {\n          piVar4 = param_2;\n          if ((int *)piVar6[2] == param_2) {\n            iVar2 = param_2[3];\n            piVar6[2] = iVar2;\n            piVar7 = piVar1;\n            if (iVar2 != 0) {\n              *(int **)(iVar2 + 4) = piVar6;\n              piVar7 = (int *)piVar6[1];\n            }\n            param_2[1] = (int)piVar7;\n            if (piVar6 == *(int **)(param_4 + 4)) {\n              *(int **)(param_4 + 4) = param_2;\n            }\n            else if (piVar6 == (int *)piVar7[3]) {\n              piVar7[3] = (int)param_2;\n            }\n            else {\n              piVar7[2] = (int)param_2;\n            }\n            param_2[3] = (int)piVar6;\n            piVar6[1] = (int)param_2;\n            piVar4 = piVar6;\n            piVar6 = param_2;\n          }\n          *piVar6 = 1;\n          iVar2 = piVar1[3];\n          *piVar1 = 0;\n          iVar3 = *(int *)(iVar2 + 8);\n          piVar1[3] = iVar3;\n          if (iVar3 != 0) {\n            *(int **)(iVar3 + 4) = piVar1;\n          }\n          iVar3 = piVar1[1];\n          *(int *)(iVar2 + 4) = iVar3;\n          if (piVar1 == *(int **)(param_4 + 4)) {\n            *(int *)(param_4 + 4) = iVar2;\n          }\n          else if (piVar1 == *(int **)(iVar3 + 8)) {\n            *(int *)(iVar3 + 8) = iVar2;\n          }\n          else {\n            *(int *)(iVar3 + 0xc) = iVar2;\n          }\n          *(int **)(iVar2 + 8) = piVar1;\n          piVar1[1] = iVar2;\n          piVar7 = *(int **)(param_4 + 4);\n          param_2 = piVar4;\n        }\n        else {\n          *piVar6 = 1;\n          *piVar4 = 1;\n          *piVar1 = 0;\n          param_2 = piVar1;\n        }\n      }" { (if_statement "if ((param_2 == piVar7) || (piVar6 = (int *)param_2[1], *piVar6 != 0)) {\n          *piVar7 = 1;\n          return;\n        }" if (parenthesized_expression "((param_2 == piVar7) || (piVar6 = (int *)param_2[1], *piVar6 != 0))" ( (binary_expression "(param_2 == piVar7) || (piVar6 = (int *)param_2[1], *piVar6 != 0)" (parenthesized_expression "(param_2 == piVar7)" ( (binary_expression "param_2 == piVar7" identifier == identifier) )) || (parenthesized_expression "(piVar6 = (int *)param_2[1], *piVar6 != 0)" ( (comma_expression "piVar6 = (int *)param_2[1], *piVar6 != 0" (assignment_expression "piVar6 = (int *)param_2[1]" identifier = (cast_expression "(int *)param_2[1]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_2[1]" identifier [ number_literal ]))) , (binary_expression "*piVar6 != 0" (pointer_expression "*piVar6" * identifier) != number_literal)) ))) )) (compound_statement "{\n          *piVar7 = 1;\n          return;\n        }" { (expression_statement "*piVar7 = 1;" (assignment_expression "*piVar7 = 1" (pointer_expression "*piVar7" * identifier) = number_literal) ;) (return_statement "return;" return ;) })) (expression_statement "piVar1 = (int *)piVar6[1];" (assignment_expression "piVar1 = (int *)piVar6[1]" identifier = (cast_expression "(int *)piVar6[1]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar6[1]" identifier [ number_literal ]))) ;) (expression_statement "piVar4 = (int *)piVar1[2];" (assignment_expression "piVar4 = (int *)piVar1[2]" identifier = (cast_expression "(int *)piVar1[2]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar1[2]" identifier [ number_literal ]))) ;) (if_statement "if (piVar6 == piVar4) break;" if (parenthesized_expression "(piVar6 == piVar4)" ( (binary_expression "piVar6 == piVar4" identifier == identifier) )) (break_statement "break;" break ;)) (if_statement "if ((piVar4 == (int *)0x0) || (*piVar4 != 0)) {\n          piVar4 = param_2;\n          if ((int *)piVar6[2] == param_2) {\n            iVar2 = param_2[3];\n            piVar6[2] = iVar2;\n            piVar7 = piVar1;\n            if (iVar2 != 0) {\n              *(int **)(iVar2 + 4) = piVar6;\n              piVar7 = (int *)piVar6[1];\n            }\n            param_2[1] = (int)piVar7;\n            if (piVar6 == *(int **)(param_4 + 4)) {\n              *(int **)(param_4 + 4) = param_2;\n            }\n            else if (piVar6 == (int *)piVar7[3]) {\n              piVar7[3] = (int)param_2;\n            }\n            else {\n              piVar7[2] = (int)param_2;\n            }\n            param_2[3] = (int)piVar6;\n            piVar6[1] = (int)param_2;\n            piVar4 = piVar6;\n            piVar6 = param_2;\n          }\n          *piVar6 = 1;\n          iVar2 = piVar1[3];\n          *piVar1 = 0;\n          iVar3 = *(int *)(iVar2 + 8);\n          piVar1[3] = iVar3;\n          if (iVar3 != 0) {\n            *(int **)(iVar3 + 4) = piVar1;\n          }\n          iVar3 = piVar1[1];\n          *(int *)(iVar2 + 4) = iVar3;\n          if (piVar1 == *(int **)(param_4 + 4)) {\n            *(int *)(param_4 + 4) = iVar2;\n          }\n          else if (piVar1 == *(int **)(iVar3 + 8)) {\n            *(int *)(iVar3 + 8) = iVar2;\n          }\n          else {\n            *(int *)(iVar3 + 0xc) = iVar2;\n          }\n          *(int **)(iVar2 + 8) = piVar1;\n          piVar1[1] = iVar2;\n          piVar7 = *(int **)(param_4 + 4);\n          param_2 = piVar4;\n        }\n        else {\n          *piVar6 = 1;\n          *piVar4 = 1;\n          *piVar1 = 0;\n          param_2 = piVar1;\n        }" if (parenthesized_expression "((piVar4 == (int *)0x0) || (*piVar4 != 0))" ( (binary_expression "(piVar4 == (int *)0x0) || (*piVar4 != 0)" (parenthesized_expression "(piVar4 == (int *)0x0)" ( (binary_expression "piVar4 == (int *)0x0" identifier == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) || (parenthesized_expression "(*piVar4 != 0)" ( (binary_expression "*piVar4 != 0" (pointer_expression "*piVar4" * identifier) != number_literal) ))) )) (compound_statement "{\n          piVar4 = param_2;\n          if ((int *)piVar6[2] == param_2) {\n            iVar2 = param_2[3];\n            piVar6[2] = iVar2;\n            piVar7 = piVar1;\n            if (iVar2 != 0) {\n              *(int **)(iVar2 + 4) = piVar6;\n              piVar7 = (int *)piVar6[1];\n            }\n            param_2[1] = (int)piVar7;\n            if (piVar6 == *(int **)(param_4 + 4)) {\n              *(int **)(param_4 + 4) = param_2;\n            }\n            else if (piVar6 == (int *)piVar7[3]) {\n              piVar7[3] = (int)param_2;\n            }\n            else {\n              piVar7[2] = (int)param_2;\n            }\n            param_2[3] = (int)piVar6;\n            piVar6[1] = (int)param_2;\n            piVar4 = piVar6;\n            piVar6 = param_2;\n          }\n          *piVar6 = 1;\n          iVar2 = piVar1[3];\n          *piVar1 = 0;\n          iVar3 = *(int *)(iVar2 + 8);\n          piVar1[3] = iVar3;\n          if (iVar3 != 0) {\n            *(int **)(iVar3 + 4) = piVar1;\n          }\n          iVar3 = piVar1[1];\n          *(int *)(iVar2 + 4) = iVar3;\n          if (piVar1 == *(int **)(param_4 + 4)) {\n            *(int *)(param_4 + 4) = iVar2;\n          }\n          else if (piVar1 == *(int **)(iVar3 + 8)) {\n            *(int *)(iVar3 + 8) = iVar2;\n          }\n          else {\n            *(int *)(iVar3 + 0xc) = iVar2;\n          }\n          *(int **)(iVar2 + 8) = piVar1;\n          piVar1[1] = iVar2;\n          piVar7 = *(int **)(param_4 + 4);\n          param_2 = piVar4;\n        }" { (expression_statement "piVar4 = param_2;" (assignment_expression "piVar4 = param_2" identifier = identifier) ;) (if_statement "if ((int *)piVar6[2] == param_2) {\n            iVar2 = param_2[3];\n            piVar6[2] = iVar2;\n            piVar7 = piVar1;\n            if (iVar2 != 0) {\n              *(int **)(iVar2 + 4) = piVar6;\n              piVar7 = (int *)piVar6[1];\n            }\n            param_2[1] = (int)piVar7;\n            if (piVar6 == *(int **)(param_4 + 4)) {\n              *(int **)(param_4 + 4) = param_2;\n            }\n            else if (piVar6 == (int *)piVar7[3]) {\n              piVar7[3] = (int)param_2;\n            }\n            else {\n              piVar7[2] = (int)param_2;\n            }\n            param_2[3] = (int)piVar6;\n            piVar6[1] = (int)param_2;\n            piVar4 = piVar6;\n            piVar6 = param_2;\n          }" if (parenthesized_expression "((int *)piVar6[2] == param_2)" ( (binary_expression "(int *)piVar6[2] == param_2" (cast_expression "(int *)piVar6[2]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar6[2]" identifier [ number_literal ])) == identifier) )) (compound_statement "{\n            iVar2 = param_2[3];\n            piVar6[2] = iVar2;\n            piVar7 = piVar1;\n            if (iVar2 != 0) {\n              *(int **)(iVar2 + 4) = piVar6;\n              piVar7 = (int *)piVar6[1];\n            }\n            param_2[1] = (int)piVar7;\n            if (piVar6 == *(int **)(param_4 + 4)) {\n              *(int **)(param_4 + 4) = param_2;\n            }\n            else if (piVar6 == (int *)piVar7[3]) {\n              piVar7[3] = (int)param_2;\n            }\n            else {\n              piVar7[2] = (int)param_2;\n            }\n            param_2[3] = (int)piVar6;\n            piVar6[1] = (int)param_2;\n            piVar4 = piVar6;\n            piVar6 = param_2;\n          }" { (expression_statement "iVar2 = param_2[3];" (assignment_expression "iVar2 = param_2[3]" identifier = (subscript_expression "param_2[3]" identifier [ number_literal ])) ;) (expression_statement "piVar6[2] = iVar2;" (assignment_expression "piVar6[2] = iVar2" (subscript_expression "piVar6[2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "piVar7 = piVar1;" (assignment_expression "piVar7 = piVar1" identifier = identifier) ;) (if_statement "if (iVar2 != 0) {\n              *(int **)(iVar2 + 4) = piVar6;\n              piVar7 = (int *)piVar6[1];\n            }" if (parenthesized_expression "(iVar2 != 0)" ( (binary_expression "iVar2 != 0" identifier != number_literal) )) (compound_statement "{\n              *(int **)(iVar2 + 4) = piVar6;\n              piVar7 = (int *)piVar6[1];\n            }" { (expression_statement "*(int **)(iVar2 + 4) = piVar6;" (assignment_expression "*(int **)(iVar2 + 4) = piVar6" (pointer_expression "*(int **)(iVar2 + 4)" * (cast_expression "(int **)(iVar2 + 4)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar2 + 4)" ( (binary_expression "iVar2 + 4" identifier + number_literal) )))) = identifier) ;) (expression_statement "piVar7 = (int *)piVar6[1];" (assignment_expression "piVar7 = (int *)piVar6[1]" identifier = (cast_expression "(int *)piVar6[1]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar6[1]" identifier [ number_literal ]))) ;) })) (expression_statement "param_2[1] = (int)piVar7;" (assignment_expression "param_2[1] = (int)piVar7" (subscript_expression "param_2[1]" identifier [ number_literal ]) = (cast_expression "(int)piVar7" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (if_statement "if (piVar6 == *(int **)(param_4 + 4)) {\n              *(int **)(param_4 + 4) = param_2;\n            }\n            else if (piVar6 == (int *)piVar7[3]) {\n              piVar7[3] = (int)param_2;\n            }\n            else {\n              piVar7[2] = (int)param_2;\n            }" if (parenthesized_expression "(piVar6 == *(int **)(param_4 + 4))" ( (binary_expression "piVar6 == *(int **)(param_4 + 4)" identifier == (pointer_expression "*(int **)(param_4 + 4)" * (cast_expression "(int **)(param_4 + 4)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_4 + 4)" ( (binary_expression "param_4 + 4" identifier + number_literal) ))))) )) (compound_statement "{\n              *(int **)(param_4 + 4) = param_2;\n            }" { (expression_statement "*(int **)(param_4 + 4) = param_2;" (assignment_expression "*(int **)(param_4 + 4) = param_2" (pointer_expression "*(int **)(param_4 + 4)" * (cast_expression "(int **)(param_4 + 4)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_4 + 4)" ( (binary_expression "param_4 + 4" identifier + number_literal) )))) = identifier) ;) }) (else_clause "else if (piVar6 == (int *)piVar7[3]) {\n              piVar7[3] = (int)param_2;\n            }\n            else {\n              piVar7[2] = (int)param_2;\n            }" else (if_statement "if (piVar6 == (int *)piVar7[3]) {\n              piVar7[3] = (int)param_2;\n            }\n            else {\n              piVar7[2] = (int)param_2;\n            }" if (parenthesized_expression "(piVar6 == (int *)piVar7[3])" ( (binary_expression "piVar6 == (int *)piVar7[3]" identifier == (cast_expression "(int *)piVar7[3]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar7[3]" identifier [ number_literal ]))) )) (compound_statement "{\n              piVar7[3] = (int)param_2;\n            }" { (expression_statement "piVar7[3] = (int)param_2;" (assignment_expression "piVar7[3] = (int)param_2" (subscript_expression "piVar7[3]" identifier [ number_literal ]) = (cast_expression "(int)param_2" ( (type_descriptor "int" primitive_type) ) identifier)) ;) }) (else_clause "else {\n              piVar7[2] = (int)param_2;\n            }" else (compound_statement "{\n              piVar7[2] = (int)param_2;\n            }" { (expression_statement "piVar7[2] = (int)param_2;" (assignment_expression "piVar7[2] = (int)param_2" (subscript_expression "piVar7[2]" identifier [ number_literal ]) = (cast_expression "(int)param_2" ( (type_descriptor "int" primitive_type) ) identifier)) ;) }))))) (expression_statement "param_2[3] = (int)piVar6;" (assignment_expression "param_2[3] = (int)piVar6" (subscript_expression "param_2[3]" identifier [ number_literal ]) = (cast_expression "(int)piVar6" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "piVar6[1] = (int)param_2;" (assignment_expression "piVar6[1] = (int)param_2" (subscript_expression "piVar6[1]" identifier [ number_literal ]) = (cast_expression "(int)param_2" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "piVar4 = piVar6;" (assignment_expression "piVar4 = piVar6" identifier = identifier) ;) (expression_statement "piVar6 = param_2;" (assignment_expression "piVar6 = param_2" identifier = identifier) ;) })) (expression_statement "*piVar6 = 1;" (assignment_expression "*piVar6 = 1" (pointer_expression "*piVar6" * identifier) = number_literal) ;) (expression_statement "iVar2 = piVar1[3];" (assignment_expression "iVar2 = piVar1[3]" identifier = (subscript_expression "piVar1[3]" identifier [ number_literal ])) ;) (expression_statement "*piVar1 = 0;" (assignment_expression "*piVar1 = 0" (pointer_expression "*piVar1" * identifier) = number_literal) ;) (expression_statement "iVar3 = *(int *)(iVar2 + 8);" (assignment_expression "iVar3 = *(int *)(iVar2 + 8)" identifier = (pointer_expression "*(int *)(iVar2 + 8)" * (cast_expression "(int *)(iVar2 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 8)" ( (binary_expression "iVar2 + 8" identifier + number_literal) ))))) ;) (expression_statement "piVar1[3] = iVar3;" (assignment_expression "piVar1[3] = iVar3" (subscript_expression "piVar1[3]" identifier [ number_literal ]) = identifier) ;) (if_statement "if (iVar3 != 0) {\n            *(int **)(iVar3 + 4) = piVar1;\n          }" if (parenthesized_expression "(iVar3 != 0)" ( (binary_expression "iVar3 != 0" identifier != number_literal) )) (compound_statement "{\n            *(int **)(iVar3 + 4) = piVar1;\n          }" { (expression_statement "*(int **)(iVar3 + 4) = piVar1;" (assignment_expression "*(int **)(iVar3 + 4) = piVar1" (pointer_expression "*(int **)(iVar3 + 4)" * (cast_expression "(int **)(iVar3 + 4)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar3 + 4)" ( (binary_expression "iVar3 + 4" identifier + number_literal) )))) = identifier) ;) })) (expression_statement "iVar3 = piVar1[1];" (assignment_expression "iVar3 = piVar1[1]" identifier = (subscript_expression "piVar1[1]" identifier [ number_literal ])) ;) (expression_statement "*(int *)(iVar2 + 4) = iVar3;" (assignment_expression "*(int *)(iVar2 + 4) = iVar3" (pointer_expression "*(int *)(iVar2 + 4)" * (cast_expression "(int *)(iVar2 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 4)" ( (binary_expression "iVar2 + 4" identifier + number_literal) )))) = identifier) ;) (if_statement "if (piVar1 == *(int **)(param_4 + 4)) {\n            *(int *)(param_4 + 4) = iVar2;\n          }\n          else if (piVar1 == *(int **)(iVar3 + 8)) {\n            *(int *)(iVar3 + 8) = iVar2;\n          }\n          else {\n            *(int *)(iVar3 + 0xc) = iVar2;\n          }" if (parenthesized_expression "(piVar1 == *(int **)(param_4 + 4))" ( (binary_expression "piVar1 == *(int **)(param_4 + 4)" identifier == (pointer_expression "*(int **)(param_4 + 4)" * (cast_expression "(int **)(param_4 + 4)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_4 + 4)" ( (binary_expression "param_4 + 4" identifier + number_literal) ))))) )) (compound_statement "{\n            *(int *)(param_4 + 4) = iVar2;\n          }" { (expression_statement "*(int *)(param_4 + 4) = iVar2;" (assignment_expression "*(int *)(param_4 + 4) = iVar2" (pointer_expression "*(int *)(param_4 + 4)" * (cast_expression "(int *)(param_4 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_4 + 4)" ( (binary_expression "param_4 + 4" identifier + number_literal) )))) = identifier) ;) }) (else_clause "else if (piVar1 == *(int **)(iVar3 + 8)) {\n            *(int *)(iVar3 + 8) = iVar2;\n          }\n          else {\n            *(int *)(iVar3 + 0xc) = iVar2;\n          }" else (if_statement "if (piVar1 == *(int **)(iVar3 + 8)) {\n            *(int *)(iVar3 + 8) = iVar2;\n          }\n          else {\n            *(int *)(iVar3 + 0xc) = iVar2;\n          }" if (parenthesized_expression "(piVar1 == *(int **)(iVar3 + 8))" ( (binary_expression "piVar1 == *(int **)(iVar3 + 8)" identifier == (pointer_expression "*(int **)(iVar3 + 8)" * (cast_expression "(int **)(iVar3 + 8)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar3 + 8)" ( (binary_expression "iVar3 + 8" identifier + number_literal) ))))) )) (compound_statement "{\n            *(int *)(iVar3 + 8) = iVar2;\n          }" { (expression_statement "*(int *)(iVar3 + 8) = iVar2;" (assignment_expression "*(int *)(iVar3 + 8) = iVar2" (pointer_expression "*(int *)(iVar3 + 8)" * (cast_expression "(int *)(iVar3 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 8)" ( (binary_expression "iVar3 + 8" identifier + number_literal) )))) = identifier) ;) }) (else_clause "else {\n            *(int *)(iVar3 + 0xc) = iVar2;\n          }" else (compound_statement "{\n            *(int *)(iVar3 + 0xc) = iVar2;\n          }" { (expression_statement "*(int *)(iVar3 + 0xc) = iVar2;" (assignment_expression "*(int *)(iVar3 + 0xc) = iVar2" (pointer_expression "*(int *)(iVar3 + 0xc)" * (cast_expression "(int *)(iVar3 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 0xc)" ( (binary_expression "iVar3 + 0xc" identifier + number_literal) )))) = identifier) ;) }))))) (expression_statement "*(int **)(iVar2 + 8) = piVar1;" (assignment_expression "*(int **)(iVar2 + 8) = piVar1" (pointer_expression "*(int **)(iVar2 + 8)" * (cast_expression "(int **)(iVar2 + 8)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar2 + 8)" ( (binary_expression "iVar2 + 8" identifier + number_literal) )))) = identifier) ;) (expression_statement "piVar1[1] = iVar2;" (assignment_expression "piVar1[1] = iVar2" (subscript_expression "piVar1[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "piVar7 = *(int **)(param_4 + 4);" (assignment_expression "piVar7 = *(int **)(param_4 + 4)" identifier = (pointer_expression "*(int **)(param_4 + 4)" * (cast_expression "(int **)(param_4 + 4)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_4 + 4)" ( (binary_expression "param_4 + 4" identifier + number_literal) ))))) ;) (expression_statement "param_2 = piVar4;" (assignment_expression "param_2 = piVar4" identifier = identifier) ;) }) (else_clause "else {\n          *piVar6 = 1;\n          *piVar4 = 1;\n          *piVar1 = 0;\n          param_2 = piVar1;\n        }" else (compound_statement "{\n          *piVar6 = 1;\n          *piVar4 = 1;\n          *piVar1 = 0;\n          param_2 = piVar1;\n        }" { (expression_statement "*piVar6 = 1;" (assignment_expression "*piVar6 = 1" (pointer_expression "*piVar6" * identifier) = number_literal) ;) (expression_statement "*piVar4 = 1;" (assignment_expression "*piVar4 = 1" (pointer_expression "*piVar4" * identifier) = number_literal) ;) (expression_statement "*piVar1 = 0;" (assignment_expression "*piVar1 = 0" (pointer_expression "*piVar1" * identifier) = number_literal) ;) (expression_statement "param_2 = piVar1;" (assignment_expression "param_2 = piVar1" identifier = identifier) ;) }))) })) (expression_statement "piVar5 = (int *)piVar1[3];" (assignment_expression "piVar5 = (int *)piVar1[3]" identifier = (cast_expression "(int *)piVar1[3]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar1[3]" identifier [ number_literal ]))) ;) (if_statement "if ((piVar5 == (int *)0x0) || (*piVar5 != 0)) break;" if (parenthesized_expression "((piVar5 == (int *)0x0) || (*piVar5 != 0))" ( (binary_expression "(piVar5 == (int *)0x0) || (*piVar5 != 0)" (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 != 0)" ( (binary_expression "*piVar5 != 0" (pointer_expression "*piVar5" * identifier) != number_literal) ))) )) (break_statement "break;" break ;)) (expression_statement "*piVar6 = 1;" (assignment_expression "*piVar6 = 1" (pointer_expression "*piVar6" * identifier) = number_literal) ;) (expression_statement "*piVar5 = 1;" (assignment_expression "*piVar5 = 1" (pointer_expression "*piVar5" * identifier) = number_literal) ;) (expression_statement "*piVar1 = 0;" (assignment_expression "*piVar1 = 0" (pointer_expression "*piVar1" * identifier) = number_literal) ;) (expression_statement "param_2 = piVar1;" (assignment_expression "param_2 = piVar1" identifier = identifier) ;) })) (expression_statement "piVar5 = param_2;" (assignment_expression "piVar5 = param_2" identifier = identifier) ;) (if_statement "if ((int *)piVar6[3] == param_2) {\n      iVar2 = param_2[2];\n      piVar6[3] = iVar2;\n      if (iVar2 == 0) {\n        param_2[1] = (int)piVar1;\n        piVar7 = piVar1;\n        if (piVar6 == *(int **)(param_4 + 4)) goto LAB_001fe9e0;\nLAB_001fe9d2:\n        piVar7[2] = (int)param_2;\n      }\n      else {\n        *(int **)(iVar2 + 4) = piVar6;\n        piVar7 = (int *)piVar6[1];\n        param_2[1] = (int)piVar7;\n        if (piVar6 == *(int **)(param_4 + 4)) {\nLAB_001fe9e0:\n          *(int **)(param_4 + 4) = param_2;\n        }\n        else {\n          if (piVar6 == (int *)piVar7[2]) goto LAB_001fe9d2;\n          piVar7[3] = (int)param_2;\n        }\n      }\n      param_2[2] = (int)piVar6;\n      piVar4 = (int *)piVar1[2];\n      piVar6[1] = (int)param_2;\n      piVar5 = piVar6;\n      piVar6 = param_2;\n    }" if (parenthesized_expression "((int *)piVar6[3] == param_2)" ( (binary_expression "(int *)piVar6[3] == param_2" (cast_expression "(int *)piVar6[3]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar6[3]" identifier [ number_literal ])) == identifier) )) (compound_statement "{\n      iVar2 = param_2[2];\n      piVar6[3] = iVar2;\n      if (iVar2 == 0) {\n        param_2[1] = (int)piVar1;\n        piVar7 = piVar1;\n        if (piVar6 == *(int **)(param_4 + 4)) goto LAB_001fe9e0;\nLAB_001fe9d2:\n        piVar7[2] = (int)param_2;\n      }\n      else {\n        *(int **)(iVar2 + 4) = piVar6;\n        piVar7 = (int *)piVar6[1];\n        param_2[1] = (int)piVar7;\n        if (piVar6 == *(int **)(param_4 + 4)) {\nLAB_001fe9e0:\n          *(int **)(param_4 + 4) = param_2;\n        }\n        else {\n          if (piVar6 == (int *)piVar7[2]) goto LAB_001fe9d2;\n          piVar7[3] = (int)param_2;\n        }\n      }\n      param_2[2] = (int)piVar6;\n      piVar4 = (int *)piVar1[2];\n      piVar6[1] = (int)param_2;\n      piVar5 = piVar6;\n      piVar6 = param_2;\n    }" { (expression_statement "iVar2 = param_2[2];" (assignment_expression "iVar2 = param_2[2]" identifier = (subscript_expression "param_2[2]" identifier [ number_literal ])) ;) (expression_statement "piVar6[3] = iVar2;" (assignment_expression "piVar6[3] = iVar2" (subscript_expression "piVar6[3]" identifier [ number_literal ]) = identifier) ;) (if_statement "if (iVar2 == 0) {\n        param_2[1] = (int)piVar1;\n        piVar7 = piVar1;\n        if (piVar6 == *(int **)(param_4 + 4)) goto LAB_001fe9e0;\nLAB_001fe9d2:\n        piVar7[2] = (int)param_2;\n      }\n      else {\n        *(int **)(iVar2 + 4) = piVar6;\n        piVar7 = (int *)piVar6[1];\n        param_2[1] = (int)piVar7;\n        if (piVar6 == *(int **)(param_4 + 4)) {\nLAB_001fe9e0:\n          *(int **)(param_4 + 4) = param_2;\n        }\n        else {\n          if (piVar6 == (int *)piVar7[2]) goto LAB_001fe9d2;\n          piVar7[3] = (int)param_2;\n        }\n      }" if (parenthesized_expression "(iVar2 == 0)" ( (binary_expression "iVar2 == 0" identifier == number_literal) )) (compound_statement "{\n        param_2[1] = (int)piVar1;\n        piVar7 = piVar1;\n        if (piVar6 == *(int **)(param_4 + 4)) goto LAB_001fe9e0;\nLAB_001fe9d2:\n        piVar7[2] = (int)param_2;\n      }" { (expression_statement "param_2[1] = (int)piVar1;" (assignment_expression "param_2[1] = (int)piVar1" (subscript_expression "param_2[1]" identifier [ number_literal ]) = (cast_expression "(int)piVar1" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "piVar7 = piVar1;" (assignment_expression "piVar7 = piVar1" identifier = identifier) ;) (if_statement "if (piVar6 == *(int **)(param_4 + 4)) goto LAB_001fe9e0;" if (parenthesized_expression "(piVar6 == *(int **)(param_4 + 4))" ( (binary_expression "piVar6 == *(int **)(param_4 + 4)" identifier == (pointer_expression "*(int **)(param_4 + 4)" * (cast_expression "(int **)(param_4 + 4)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_4 + 4)" ( (binary_expression "param_4 + 4" identifier + number_literal) ))))) )) (goto_statement "goto LAB_001fe9e0;" goto statement_identifier ;)) (labeled_statement "LAB_001fe9d2:\n        piVar7[2] = (int)param_2;" statement_identifier : (expression_statement "piVar7[2] = (int)param_2;" (assignment_expression "piVar7[2] = (int)param_2" (subscript_expression "piVar7[2]" identifier [ number_literal ]) = (cast_expression "(int)param_2" ( (type_descriptor "int" primitive_type) ) identifier)) ;)) }) (else_clause "else {\n        *(int **)(iVar2 + 4) = piVar6;\n        piVar7 = (int *)piVar6[1];\n        param_2[1] = (int)piVar7;\n        if (piVar6 == *(int **)(param_4 + 4)) {\nLAB_001fe9e0:\n          *(int **)(param_4 + 4) = param_2;\n        }\n        else {\n          if (piVar6 == (int *)piVar7[2]) goto LAB_001fe9d2;\n          piVar7[3] = (int)param_2;\n        }\n      }" else (compound_statement "{\n        *(int **)(iVar2 + 4) = piVar6;\n        piVar7 = (int *)piVar6[1];\n        param_2[1] = (int)piVar7;\n        if (piVar6 == *(int **)(param_4 + 4)) {\nLAB_001fe9e0:\n          *(int **)(param_4 + 4) = param_2;\n        }\n        else {\n          if (piVar6 == (int *)piVar7[2]) goto LAB_001fe9d2;\n          piVar7[3] = (int)param_2;\n        }\n      }" { (expression_statement "*(int **)(iVar2 + 4) = piVar6;" (assignment_expression "*(int **)(iVar2 + 4) = piVar6" (pointer_expression "*(int **)(iVar2 + 4)" * (cast_expression "(int **)(iVar2 + 4)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar2 + 4)" ( (binary_expression "iVar2 + 4" identifier + number_literal) )))) = identifier) ;) (expression_statement "piVar7 = (int *)piVar6[1];" (assignment_expression "piVar7 = (int *)piVar6[1]" identifier = (cast_expression "(int *)piVar6[1]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar6[1]" identifier [ number_literal ]))) ;) (expression_statement "param_2[1] = (int)piVar7;" (assignment_expression "param_2[1] = (int)piVar7" (subscript_expression "param_2[1]" identifier [ number_literal ]) = (cast_expression "(int)piVar7" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (if_statement "if (piVar6 == *(int **)(param_4 + 4)) {\nLAB_001fe9e0:\n          *(int **)(param_4 + 4) = param_2;\n        }\n        else {\n          if (piVar6 == (int *)piVar7[2]) goto LAB_001fe9d2;\n          piVar7[3] = (int)param_2;\n        }" if (parenthesized_expression "(piVar6 == *(int **)(param_4 + 4))" ( (binary_expression "piVar6 == *(int **)(param_4 + 4)" identifier == (pointer_expression "*(int **)(param_4 + 4)" * (cast_expression "(int **)(param_4 + 4)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_4 + 4)" ( (binary_expression "param_4 + 4" identifier + number_literal) ))))) )) (compound_statement "{\nLAB_001fe9e0:\n          *(int **)(param_4 + 4) = param_2;\n        }" { (labeled_statement "LAB_001fe9e0:\n          *(int **)(param_4 + 4) = param_2;" statement_identifier : (expression_statement "*(int **)(param_4 + 4) = param_2;" (assignment_expression "*(int **)(param_4 + 4) = param_2" (pointer_expression "*(int **)(param_4 + 4)" * (cast_expression "(int **)(param_4 + 4)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_4 + 4)" ( (binary_expression "param_4 + 4" identifier + number_literal) )))) = identifier) ;)) }) (else_clause "else {\n          if (piVar6 == (int *)piVar7[2]) goto LAB_001fe9d2;\n          piVar7[3] = (int)param_2;\n        }" else (compound_statement "{\n          if (piVar6 == (int *)piVar7[2]) goto LAB_001fe9d2;\n          piVar7[3] = (int)param_2;\n        }" { (if_statement "if (piVar6 == (int *)piVar7[2]) goto LAB_001fe9d2;" if (parenthesized_expression "(piVar6 == (int *)piVar7[2])" ( (binary_expression "piVar6 == (int *)piVar7[2]" identifier == (cast_expression "(int *)piVar7[2]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar7[2]" identifier [ number_literal ]))) )) (goto_statement "goto LAB_001fe9d2;" goto statement_identifier ;)) (expression_statement "piVar7[3] = (int)param_2;" (assignment_expression "piVar7[3] = (int)param_2" (subscript_expression "piVar7[3]" identifier [ number_literal ]) = (cast_expression "(int)param_2" ( (type_descriptor "int" primitive_type) ) identifier)) ;) }))) }))) (expression_statement "param_2[2] = (int)piVar6;" (assignment_expression "param_2[2] = (int)piVar6" (subscript_expression "param_2[2]" identifier [ number_literal ]) = (cast_expression "(int)piVar6" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "piVar4 = (int *)piVar1[2];" (assignment_expression "piVar4 = (int *)piVar1[2]" identifier = (cast_expression "(int *)piVar1[2]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar1[2]" identifier [ number_literal ]))) ;) (expression_statement "piVar6[1] = (int)param_2;" (assignment_expression "piVar6[1] = (int)param_2" (subscript_expression "piVar6[1]" identifier [ number_literal ]) = (cast_expression "(int)param_2" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "piVar5 = piVar6;" (assignment_expression "piVar5 = piVar6" identifier = identifier) ;) (expression_statement "piVar6 = param_2;" (assignment_expression "piVar6 = param_2" identifier = identifier) ;) })) (expression_statement "*piVar6 = 1;" (assignment_expression "*piVar6 = 1" (pointer_expression "*piVar6" * identifier) = number_literal) ;) (expression_statement "iVar2 = piVar4[3];" (assignment_expression "iVar2 = piVar4[3]" identifier = (subscript_expression "piVar4[3]" identifier [ number_literal ])) ;) (expression_statement "*piVar1 = 0;" (assignment_expression "*piVar1 = 0" (pointer_expression "*piVar1" * identifier) = number_literal) ;) (expression_statement "piVar1[2] = iVar2;" (assignment_expression "piVar1[2] = iVar2" (subscript_expression "piVar1[2]" identifier [ number_literal ]) = identifier) ;) (if_statement "if (iVar2 != 0) {\n      *(int **)(iVar2 + 4) = piVar1;\n    }" if (parenthesized_expression "(iVar2 != 0)" ( (binary_expression "iVar2 != 0" identifier != number_literal) )) (compound_statement "{\n      *(int **)(iVar2 + 4) = piVar1;\n    }" { (expression_statement "*(int **)(iVar2 + 4) = piVar1;" (assignment_expression "*(int **)(iVar2 + 4) = piVar1" (pointer_expression "*(int **)(iVar2 + 4)" * (cast_expression "(int **)(iVar2 + 4)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar2 + 4)" ( (binary_expression "iVar2 + 4" identifier + number_literal) )))) = identifier) ;) })) (expression_statement "iVar2 = piVar1[1];" (assignment_expression "iVar2 = piVar1[1]" identifier = (subscript_expression "piVar1[1]" identifier [ number_literal ])) ;) (expression_statement "piVar4[1] = iVar2;" (assignment_expression "piVar4[1] = iVar2" (subscript_expression "piVar4[1]" identifier [ number_literal ]) = identifier) ;) (if_statement "if (piVar1 == *(int **)(param_4 + 4)) {\n      *(int **)(param_4 + 4) = piVar4;\n    }\n    else if (piVar1 == *(int **)(iVar2 + 0xc)) {\n      *(int **)(iVar2 + 0xc) = piVar4;\n    }\n    else {\n      *(int **)(iVar2 + 8) = piVar4;\n    }" if (parenthesized_expression "(piVar1 == *(int **)(param_4 + 4))" ( (binary_expression "piVar1 == *(int **)(param_4 + 4)" identifier == (pointer_expression "*(int **)(param_4 + 4)" * (cast_expression "(int **)(param_4 + 4)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_4 + 4)" ( (binary_expression "param_4 + 4" identifier + number_literal) ))))) )) (compound_statement "{\n      *(int **)(param_4 + 4) = piVar4;\n    }" { (expression_statement "*(int **)(param_4 + 4) = piVar4;" (assignment_expression "*(int **)(param_4 + 4) = piVar4" (pointer_expression "*(int **)(param_4 + 4)" * (cast_expression "(int **)(param_4 + 4)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_4 + 4)" ( (binary_expression "param_4 + 4" identifier + number_literal) )))) = identifier) ;) }) (else_clause "else if (piVar1 == *(int **)(iVar2 + 0xc)) {\n      *(int **)(iVar2 + 0xc) = piVar4;\n    }\n    else {\n      *(int **)(iVar2 + 8) = piVar4;\n    }" else (if_statement "if (piVar1 == *(int **)(iVar2 + 0xc)) {\n      *(int **)(iVar2 + 0xc) = piVar4;\n    }\n    else {\n      *(int **)(iVar2 + 8) = piVar4;\n    }" if (parenthesized_expression "(piVar1 == *(int **)(iVar2 + 0xc))" ( (binary_expression "piVar1 == *(int **)(iVar2 + 0xc)" identifier == (pointer_expression "*(int **)(iVar2 + 0xc)" * (cast_expression "(int **)(iVar2 + 0xc)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar2 + 0xc)" ( (binary_expression "iVar2 + 0xc" identifier + number_literal) ))))) )) (compound_statement "{\n      *(int **)(iVar2 + 0xc) = piVar4;\n    }" { (expression_statement "*(int **)(iVar2 + 0xc) = piVar4;" (assignment_expression "*(int **)(iVar2 + 0xc) = piVar4" (pointer_expression "*(int **)(iVar2 + 0xc)" * (cast_expression "(int **)(iVar2 + 0xc)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar2 + 0xc)" ( (binary_expression "iVar2 + 0xc" identifier + number_literal) )))) = identifier) ;) }) (else_clause "else {\n      *(int **)(iVar2 + 8) = piVar4;\n    }" else (compound_statement "{\n      *(int **)(iVar2 + 8) = piVar4;\n    }" { (expression_statement "*(int **)(iVar2 + 8) = piVar4;" (assignment_expression "*(int **)(iVar2 + 8) = piVar4" (pointer_expression "*(int **)(iVar2 + 8)" * (cast_expression "(int **)(iVar2 + 8)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar2 + 8)" ( (binary_expression "iVar2 + 8" identifier + number_literal) )))) = identifier) ;) }))))) (expression_statement "piVar4[3] = (int)piVar1;" (assignment_expression "piVar4[3] = (int)piVar1" (subscript_expression "piVar4[3]" identifier [ number_literal ]) = (cast_expression "(int)piVar1" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "piVar1[1] = (int)piVar4;" (assignment_expression "piVar1[1] = (int)piVar4" (subscript_expression "piVar1[1]" identifier [ number_literal ]) = (cast_expression "(int)piVar4" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "piVar7 = *(int **)(param_4 + 4);" (assignment_expression "piVar7 = *(int **)(param_4 + 4)" identifier = (pointer_expression "*(int **)(param_4 + 4)" * (cast_expression "(int **)(param_4 + 4)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_4 + 4)" ( (binary_expression "param_4 + 4" identifier + number_literal) ))))) ;) (expression_statement "param_2 = piVar5;" (assignment_expression "param_2 = piVar5" identifier = identifier) ;) }) while (parenthesized_expression "( true )" ( true )) ;)) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) ))) (compound_statement { (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE 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 (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (char_literal ' escape_sequence ')) )) (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 *)) ) (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 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 (pointer_expression * IDENT) = LIT) ;) (return_statement return ;) })) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (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 TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_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) ))))) ;) (labeled_statement statement_identifier : (do_statement do (compound_statement { (while_statement while (parenthesized_expression ( BOOL )) (compound_statement { (while_statement while (parenthesized_expression ( BOOL )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT == IDENT) )) || (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) , (binary_expression (pointer_expression * IDENT) != LIT)) ))) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;) (return_statement return ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == IDENT) )) (break_statement break ;)) (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 = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ])) == IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression IDENT = 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 = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) })) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression 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 == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) )) (compound_statement { (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) }))))) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) })) (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) })) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (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 *)) ) (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 *)) ) (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 *)) ) (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 (subscript_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 = IDENT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }))) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) || (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) != LIT) ))) )) (break_statement break ;)) (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) })) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ])) == IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = 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) ))))) )) (goto_statement goto statement_identifier ;)) (labeled_statement statement_identifier : (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;)) }) (else_clause else (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (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 { (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) ;)) }) (else_clause else (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) }))) }))) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) })) (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) })) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) }) (else_clause else (if_statement if (parenthesized_expression ( (binary_expression IDENT == (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) }))))) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = (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_001fe740(char param_1,int *param_2,int param_3,int param_4)\n\n{\n  int *piVar1;\n  int iVar2;\n  int iVar3;\n  int *piVar4;\n  int *piVar5;\n  int *piVar6;\n  int *piVar7;\n  \n  param_2[1] = param_3;\n  param_2[2] = 0;\n  param_2[3] = 0;\n  *param_2 = 0;\n  if (param_1 == '\0') {\n    *(int **)(param_3 + 0xc) = param_2;\n    if (*(int *)(param_4 + 0xc) == param_3) {\n      *(int **)(param_4 + 0xc) = param_2;\n    }\n  }\n  else {\n    *(int **)(param_3 + 8) = param_2;\n    if (param_4 == param_3) {\n      *(int **)(param_4 + 4) = param_2;\n      *(int **)(param_4 + 0xc) = param_2;\n      *param_2 = 1;\n      return;\n    }\n    if (*(int *)(param_4 + 8) == param_3) {\n      *(int **)(param_4 + 8) = param_2;\n      piVar7 = *(int **)(param_4 + 4);\n      goto joined_r0x001fe792;\n    }\n  }\n  piVar7 = *(int **)(param_4 + 4);\njoined_r0x001fe792:\n  do {\n    while( true ) {\n      while( true ) {\n        if ((param_2 == piVar7) || (piVar6 = (int *)param_2[1], *piVar6 != 0)) {\n          *piVar7 = 1;\n          return;\n        }\n        piVar1 = (int *)piVar6[1];\n        piVar4 = (int *)piVar1[2];\n        if (piVar6 == piVar4) break;\n        if ((piVar4 == (int *)0x0) || (*piVar4 != 0)) {\n          piVar4 = param_2;\n          if ((int *)piVar6[2] == param_2) {\n            iVar2 = param_2[3];\n            piVar6[2] = iVar2;\n            piVar7 = piVar1;\n            if (iVar2 != 0) {\n              *(int **)(iVar2 + 4) = piVar6;\n              piVar7 = (int *)piVar6[1];\n            }\n            param_2[1] = (int)piVar7;\n            if (piVar6 == *(int **)(param_4 + 4)) {\n              *(int **)(param_4 + 4) = param_2;\n            }\n            else if (piVar6 == (int *)piVar7[3]) {\n              piVar7[3] = (int)param_2;\n            }\n            else {\n              piVar7[2] = (int)param_2;\n            }\n            param_2[3] = (int)piVar6;\n            piVar6[1] = (int)param_2;\n            piVar4 = piVar6;\n            piVar6 = param_2;\n          }\n          *piVar6 = 1;\n          iVar2 = piVar1[3];\n          *piVar1 = 0;\n          iVar3 = *(int *)(iVar2 + 8);\n          piVar1[3] = iVar3;\n          if (iVar3 != 0) {\n            *(int **)(iVar3 + 4) = piVar1;\n          }\n          iVar3 = piVar1[1];\n          *(int *)(iVar2 + 4) = iVar3;\n          if (piVar1 == *(int **)(param_4 + 4)) {\n            *(int *)(param_4 + 4) = iVar2;\n          }\n          else if (piVar1 == *(int **)(iVar3 + 8)) {\n            *(int *)(iVar3 + 8) = iVar2;\n          }\n          else {\n            *(int *)(iVar3 + 0xc) = iVar2;\n          }\n          *(int **)(iVar2 + 8) = piVar1;\n          piVar1[1] = iVar2;\n          piVar7 = *(int **)(param_4 + 4);\n          param_2 = piVar4;\n        }\n        else {\n          *piVar6 = 1;\n          *piVar4 = 1;\n          *piVar1 = 0;\n          param_2 = piVar1;\n        }\n      }\n      piVar5 = (int *)piVar1[3];\n      if ((piVar5 == (int *)0x0) || (*piVar5 != 0)) break;\n      *piVar6 = 1;\n      *piVar5 = 1;\n      *piVar1 = 0;\n      param_2 = piVar1;\n    }\n    piVar5 = param_2;\n    if ((int *)piVar6[3] == param_2) {\n      iVar2 = param_2[2];\n      piVar6[3] = iVar2;\n      if (iVar2 == 0) {\n        param_2[1] = (int)piVar1;\n        piVar7 = piVar1;\n        if (piVar6 == *(int **)(param_4 + 4)) goto LAB_001fe9e0;\nLAB_001fe9d2:\n        piVar7[2] = (int)param_2;\n      }\n      else {\n        *(int **)(iVar2 + 4) = piVar6;\n        piVar7 = (int *)piVar6[1];\n        param_2[1] = (int)piVar7;\n        if (piVar6 == *(int **)(param_4 + 4)) {\nLAB_001fe9e0:\n          *(int **)(param_4 + 4) = param_2;\n        }\n        else {\n          if (piVar6 == (int *)piVar7[2]) goto LAB_001fe9d2;\n          piVar7[3] = (int)param_2;\n        }\n      }\n      param_2[2] = (int)piVar6;\n      piVar4 = (int *)piVar1[2];\n      piVar6[1] = (int)param_2;\n      piVar5 = piVar6;\n      piVar6 = param_2;\n    }\n    *piVar6 = 1;\n    iVar2 = piVar4[3];\n    *piVar1 = 0;\n    piVar1[2] = iVar2;\n    if (iVar2 != 0) {\n      *(int **)(iVar2 + 4) = piVar1;\n    }\n    iVar2 = piVar1[1];\n    piVar4[1] = iVar2;\n    if (piVar1 == *(int **)(param_4 + 4)) {\n      *(int **)(param_4 + 4) = piVar4;\n    }\n    else if (piVar1 == *(int **)(iVar2 + 0xc)) {\n      *(int **)(iVar2 + 0xc) = piVar4;\n    }\n    else {\n      *(int **)(iVar2 + 8) = piVar4;\n    }\n    piVar4[3] = (int)piVar1;\n    piVar1[1] = (int)piVar4;\n    piVar7 = *(int **)(param_4 + 4);\n    param_2 = piVar5;\n  } while( true );\n}" (primitive_type "void") (function_declarator "FUN_001fe740(char param_1,int *param_2,int param_3,int param_4)" (identifier "FUN_001fe740") (parameter_list "(char param_1,int *param_2,int param_3,int param_4)" (( "(") (parameter_declaration "char param_1" (primitive_type "char") (identifier "param_1")) (, ",") (parameter_declaration "int *param_2" (primitive_type "int") (pointer_declarator "*param_2" (* "*") (identifier "param_2"))) (, ",") (parameter_declaration "int param_3" (primitive_type "int") (identifier "param_3")) (, ",") (parameter_declaration "int param_4" (primitive_type "int") (identifier "param_4")) () ")"))) (compound_statement "{\n  int *piVar1;\n  int iVar2;\n  int iVar3;\n  int *piVar4;\n  int *piVar5;\n  int *piVar6;\n  int *piVar7;\n  \n  param_2[1] = param_3;\n  param_2[2] = 0;\n  param_2[3] = 0;\n  *param_2 = 0;\n  if (param_1 == '\0') {\n    *(int **)(param_3 + 0xc) = param_2;\n    if (*(int *)(param_4 + 0xc) == param_3) {\n      *(int **)(param_4 + 0xc) = param_2;\n    }\n  }\n  else {\n    *(int **)(param_3 + 8) = param_2;\n    if (param_4 == param_3) {\n      *(int **)(param_4 + 4) = param_2;\n      *(int **)(param_4 + 0xc) = param_2;\n      *param_2 = 1;\n      return;\n    }\n    if (*(int *)(param_4 + 8) == param_3) {\n      *(int **)(param_4 + 8) = param_2;\n      piVar7 = *(int **)(param_4 + 4);\n      goto joined_r0x001fe792;\n    }\n  }\n  piVar7 = *(int **)(param_4 + 4);\njoined_r0x001fe792:\n  do {\n    while( true ) {\n      while( true ) {\n        if ((param_2 == piVar7) || (piVar6 = (int *)param_2[1], *piVar6 != 0)) {\n          *piVar7 = 1;\n          return;\n        }\n        piVar1 = (int *)piVar6[1];\n        piVar4 = (int *)piVar1[2];\n        if (piVar6 == piVar4) break;\n        if ((piVar4 == (int *)0x0) || (*piVar4 != 0)) {\n          piVar4 = param_2;\n          if ((int *)piVar6[2] == param_2) {\n            iVar2 = param_2[3];\n            piVar6[2] = iVar2;\n            piVar7 = piVar1;\n            if (iVar2 != 0) {\n              *(int **)(iVar2 + 4) = piVar6;\n              piVar7 = (int *)piVar6[1];\n            }\n            param_2[1] = (int)piVar7;\n            if (piVar6 == *(int **)(param_4 + 4)) {\n              *(int **)(param_4 + 4) = param_2;\n            }\n            else if (piVar6 == (int *)piVar7[3]) {\n              piVar7[3] = (int)param_2;\n            }\n            else {\n              piVar7[2] = (int)param_2;\n            }\n            param_2[3] = (int)piVar6;\n            piVar6[1] = (int)param_2;\n            piVar4 = piVar6;\n            piVar6 = param_2;\n          }\n          *piVar6 = 1;\n          iVar2 = piVar1[3];\n          *piVar1 = 0;\n          iVar3 = *(int *)(iVar2 + 8);\n          piVar1[3] = iVar3;\n          if (iVar3 != 0) {\n            *(int **)(iVar3 + 4) = piVar1;\n          }\n          iVar3 = piVar1[1];\n          *(int *)(iVar2 + 4) = iVar3;\n          if (piVar1 == *(int **)(param_4 + 4)) {\n            *(int *)(param_4 + 4) = iVar2;\n          }\n          else if (piVar1 == *(int **)(iVar3 + 8)) {\n            *(int *)(iVar3 + 8) = iVar2;\n          }\n          else {\n            *(int *)(iVar3 + 0xc) = iVar2;\n          }\n          *(int **)(iVar2 + 8) = piVar1;\n          piVar1[1] = iVar2;\n          piVar7 = *(int **)(param_4 + 4);\n          param_2 = piVar4;\n        }\n        else {\n          *piVar6 = 1;\n          *piVar4 = 1;\n          *piVar1 = 0;\n          param_2 = piVar1;\n        }\n      }\n      piVar5 = (int *)piVar1[3];\n      if ((piVar5 == (int *)0x0) || (*piVar5 != 0)) break;\n      *piVar6 = 1;\n      *piVar5 = 1;\n      *piVar1 = 0;\n      param_2 = piVar1;\n    }\n    piVar5 = param_2;\n    if ((int *)piVar6[3] == param_2) {\n      iVar2 = param_2[2];\n      piVar6[3] = iVar2;\n      if (iVar2 == 0) {\n        param_2[1] = (int)piVar1;\n        piVar7 = piVar1;\n        if (piVar6 == *(int **)(param_4 + 4)) goto LAB_001fe9e0;\nLAB_001fe9d2:\n        piVar7[2] = (int)param_2;\n      }\n      else {\n        *(int **)(iVar2 + 4) = piVar6;\n        piVar7 = (int *)piVar6[1];\n        param_2[1] = (int)piVar7;\n        if (piVar6 == *(int **)(param_4 + 4)) {\nLAB_001fe9e0:\n          *(int **)(param_4 + 4) = param_2;\n        }\n        else {\n          if (piVar6 == (int *)piVar7[2]) goto LAB_001fe9d2;\n          piVar7[3] = (int)param_2;\n        }\n      }\n      param_2[2] = (int)piVar6;\n      piVar4 = (int *)piVar1[2];\n      piVar6[1] = (int)param_2;\n      piVar5 = piVar6;\n      piVar6 = param_2;\n    }\n    *piVar6 = 1;\n    iVar2 = piVar4[3];\n    *piVar1 = 0;\n    piVar1[2] = iVar2;\n    if (iVar2 != 0) {\n      *(int **)(iVar2 + 4) = piVar1;\n    }\n    iVar2 = piVar1[1];\n    piVar4[1] = iVar2;\n    if (piVar1 == *(int **)(param_4 + 4)) {\n      *(int **)(param_4 + 4) = piVar4;\n    }\n    else if (piVar1 == *(int **)(iVar2 + 0xc)) {\n      *(int **)(iVar2 + 0xc) = piVar4;\n    }\n    else {\n      *(int **)(iVar2 + 8) = piVar4;\n    }\n    piVar4[3] = (int)piVar1;\n    piVar1[1] = (int)piVar4;\n    piVar7 = *(int **)(param_4 + 4);\n    param_2 = piVar5;\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 iVar3;" (primitive_type "int") (identifier "iVar3") (; ";")) (declaration "int *piVar4;" (primitive_type "int") (pointer_declarator "*piVar4" (* "*") (identifier "piVar4")) (; ";")) (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")) (; ";")) (expression_statement "param_2[1] = param_3;" (assignment_expression "param_2[1] = param_3" (subscript_expression "param_2[1]" (identifier "param_2") ([ "[") (number_literal "1") (] "]")) (= "=") (identifier "param_3")) (; ";")) (expression_statement "param_2[2] = 0;" (assignment_expression "param_2[2] = 0" (subscript_expression "param_2[2]" (identifier "param_2") ([ "[") (number_literal "2") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "param_2[3] = 0;" (assignment_expression "param_2[3] = 0" (subscript_expression "param_2[3]" (identifier "param_2") ([ "[") (number_literal "3") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "*param_2 = 0;" (assignment_expression "*param_2 = 0" (pointer_expression "*param_2" (* "*") (identifier "param_2")) (= "=") (number_literal "0")) (; ";")) (if_statement "if (param_1 == '\0') {\n    *(int **)(param_3 + 0xc) = param_2;\n    if (*(int *)(param_4 + 0xc) == param_3) {\n      *(int **)(param_4 + 0xc) = param_2;\n    }\n  }\n  else {\n    *(int **)(param_3 + 8) = param_2;\n    if (param_4 == param_3) {\n      *(int **)(param_4 + 4) = param_2;\n      *(int **)(param_4 + 0xc) = param_2;\n      *param_2 = 1;\n      return;\n    }\n    if (*(int *)(param_4 + 8) == param_3) {\n      *(int **)(param_4 + 8) = param_2;\n      piVar7 = *(int **)(param_4 + 4);\n      goto joined_r0x001fe792;\n    }\n  }" (if "if") (parenthesized_expression "(param_1 == '\0')" (( "(") (binary_expression "param_1 == '\0'" (identifier "param_1") (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n    *(int **)(param_3 + 0xc) = param_2;\n    if (*(int *)(param_4 + 0xc) == param_3) {\n      *(int **)(param_4 + 0xc) = param_2;\n    }\n  }" ({ "{") (expression_statement "*(int **)(param_3 + 0xc) = param_2;" (assignment_expression "*(int **)(param_3 + 0xc) = param_2" (pointer_expression "*(int **)(param_3 + 0xc)" (* "*") (cast_expression "(int **)(param_3 + 0xc)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_3 + 0xc)" (( "(") (binary_expression "param_3 + 0xc" (identifier "param_3") (+ "+") (number_literal "0xc")) () ")")))) (= "=") (identifier "param_2")) (; ";")) (if_statement "if (*(int *)(param_4 + 0xc) == param_3) {\n      *(int **)(param_4 + 0xc) = param_2;\n    }" (if "if") (parenthesized_expression "(*(int *)(param_4 + 0xc) == param_3)" (( "(") (binary_expression "*(int *)(param_4 + 0xc) == param_3" (pointer_expression "*(int *)(param_4 + 0xc)" (* "*") (cast_expression "(int *)(param_4 + 0xc)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_4 + 0xc)" (( "(") (binary_expression "param_4 + 0xc" (identifier "param_4") (+ "+") (number_literal "0xc")) () ")")))) (== "==") (identifier "param_3")) () ")")) (compound_statement "{\n      *(int **)(param_4 + 0xc) = param_2;\n    }" ({ "{") (expression_statement "*(int **)(param_4 + 0xc) = param_2;" (assignment_expression "*(int **)(param_4 + 0xc) = param_2" (pointer_expression "*(int **)(param_4 + 0xc)" (* "*") (cast_expression "(int **)(param_4 + 0xc)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_4 + 0xc)" (( "(") (binary_expression "param_4 + 0xc" (identifier "param_4") (+ "+") (number_literal "0xc")) () ")")))) (= "=") (identifier "param_2")) (; ";")) (} "}"))) (} "}")) (else_clause "else {\n    *(int **)(param_3 + 8) = param_2;\n    if (param_4 == param_3) {\n      *(int **)(param_4 + 4) = param_2;\n      *(int **)(param_4 + 0xc) = param_2;\n      *param_2 = 1;\n      return;\n    }\n    if (*(int *)(param_4 + 8) == param_3) {\n      *(int **)(param_4 + 8) = param_2;\n      piVar7 = *(int **)(param_4 + 4);\n      goto joined_r0x001fe792;\n    }\n  }" (else "else") (compound_statement "{\n    *(int **)(param_3 + 8) = param_2;\n    if (param_4 == param_3) {\n      *(int **)(param_4 + 4) = param_2;\n      *(int **)(param_4 + 0xc) = param_2;\n      *param_2 = 1;\n      return;\n    }\n    if (*(int *)(param_4 + 8) == param_3) {\n      *(int **)(param_4 + 8) = param_2;\n      piVar7 = *(int **)(param_4 + 4);\n      goto joined_r0x001fe792;\n    }\n  }" ({ "{") (expression_statement "*(int **)(param_3 + 8) = param_2;" (assignment_expression "*(int **)(param_3 + 8) = param_2" (pointer_expression "*(int **)(param_3 + 8)" (* "*") (cast_expression "(int **)(param_3 + 8)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_3 + 8)" (( "(") (binary_expression "param_3 + 8" (identifier "param_3") (+ "+") (number_literal "8")) () ")")))) (= "=") (identifier "param_2")) (; ";")) (if_statement "if (param_4 == param_3) {\n      *(int **)(param_4 + 4) = param_2;\n      *(int **)(param_4 + 0xc) = param_2;\n      *param_2 = 1;\n      return;\n    }" (if "if") (parenthesized_expression "(param_4 == param_3)" (( "(") (binary_expression "param_4 == param_3" (identifier "param_4") (== "==") (identifier "param_3")) () ")")) (compound_statement "{\n      *(int **)(param_4 + 4) = param_2;\n      *(int **)(param_4 + 0xc) = param_2;\n      *param_2 = 1;\n      return;\n    }" ({ "{") (expression_statement "*(int **)(param_4 + 4) = param_2;" (assignment_expression "*(int **)(param_4 + 4) = param_2" (pointer_expression "*(int **)(param_4 + 4)" (* "*") (cast_expression "(int **)(param_4 + 4)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_4 + 4)" (( "(") (binary_expression "param_4 + 4" (identifier "param_4") (+ "+") (number_literal "4")) () ")")))) (= "=") (identifier "param_2")) (; ";")) (expression_statement "*(int **)(param_4 + 0xc) = param_2;" (assignment_expression "*(int **)(param_4 + 0xc) = param_2" (pointer_expression "*(int **)(param_4 + 0xc)" (* "*") (cast_expression "(int **)(param_4 + 0xc)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_4 + 0xc)" (( "(") (binary_expression "param_4 + 0xc" (identifier "param_4") (+ "+") (number_literal "0xc")) () ")")))) (= "=") (identifier "param_2")) (; ";")) (expression_statement "*param_2 = 1;" (assignment_expression "*param_2 = 1" (pointer_expression "*param_2" (* "*") (identifier "param_2")) (= "=") (number_literal "1")) (; ";")) (return_statement "return;" (return "return") (; ";")) (} "}"))) (if_statement "if (*(int *)(param_4 + 8) == param_3) {\n      *(int **)(param_4 + 8) = param_2;\n      piVar7 = *(int **)(param_4 + 4);\n      goto joined_r0x001fe792;\n    }" (if "if") (parenthesized_expression "(*(int *)(param_4 + 8) == param_3)" (( "(") (binary_expression "*(int *)(param_4 + 8) == param_3" (pointer_expression "*(int *)(param_4 + 8)" (* "*") (cast_expression "(int *)(param_4 + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_4 + 8)" (( "(") (binary_expression "param_4 + 8" (identifier "param_4") (+ "+") (number_literal "8")) () ")")))) (== "==") (identifier "param_3")) () ")")) (compound_statement "{\n      *(int **)(param_4 + 8) = param_2;\n      piVar7 = *(int **)(param_4 + 4);\n      goto joined_r0x001fe792;\n    }" ({ "{") (expression_statement "*(int **)(param_4 + 8) = param_2;" (assignment_expression "*(int **)(param_4 + 8) = param_2" (pointer_expression "*(int **)(param_4 + 8)" (* "*") (cast_expression "(int **)(param_4 + 8)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_4 + 8)" (( "(") (binary_expression "param_4 + 8" (identifier "param_4") (+ "+") (number_literal "8")) () ")")))) (= "=") (identifier "param_2")) (; ";")) (expression_statement "piVar7 = *(int **)(param_4 + 4);" (assignment_expression "piVar7 = *(int **)(param_4 + 4)" (identifier "piVar7") (= "=") (pointer_expression "*(int **)(param_4 + 4)" (* "*") (cast_expression "(int **)(param_4 + 4)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_4 + 4)" (( "(") (binary_expression "param_4 + 4" (identifier "param_4") (+ "+") (number_literal "4")) () ")"))))) (; ";")) (goto_statement "goto joined_r0x001fe792;" (goto "goto") (statement_identifier "joined_r0x001fe792") (; ";")) (} "}"))) (} "}")))) (expression_statement "piVar7 = *(int **)(param_4 + 4);" (assignment_expression "piVar7 = *(int **)(param_4 + 4)" (identifier "piVar7") (= "=") (pointer_expression "*(int **)(param_4 + 4)" (* "*") (cast_expression "(int **)(param_4 + 4)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_4 + 4)" (( "(") (binary_expression "param_4 + 4" (identifier "param_4") (+ "+") (number_literal "4")) () ")"))))) (; ";")) (labeled_statement "joined_r0x001fe792:\n  do {\n    while( true ) {\n      while( true ) {\n        if ((param_2 == piVar7) || (piVar6 = (int *)param_2[1], *piVar6 != 0)) {\n          *piVar7 = 1;\n          return;\n        }\n        piVar1 = (int *)piVar6[1];\n        piVar4 = (int *)piVar1[2];\n        if (piVar6 == piVar4) break;\n        if ((piVar4 == (int *)0x0) || (*piVar4 != 0)) {\n          piVar4 = param_2;\n          if ((int *)piVar6[2] == param_2) {\n            iVar2 = param_2[3];\n            piVar6[2] = iVar2;\n            piVar7 = piVar1;\n            if (iVar2 != 0) {\n              *(int **)(iVar2 + 4) = piVar6;\n              piVar7 = (int *)piVar6[1];\n            }\n            param_2[1] = (int)piVar7;\n            if (piVar6 == *(int **)(param_4 + 4)) {\n              *(int **)(param_4 + 4) = param_2;\n            }\n            else if (piVar6 == (int *)piVar7[3]) {\n              piVar7[3] = (int)param_2;\n            }\n            else {\n              piVar7[2] = (int)param_2;\n            }\n            param_2[3] = (int)piVar6;\n            piVar6[1] = (int)param_2;\n            piVar4 = piVar6;\n            piVar6 = param_2;\n          }\n          *piVar6 = 1;\n          iVar2 = piVar1[3];\n          *piVar1 = 0;\n          iVar3 = *(int *)(iVar2 + 8);\n          piVar1[3] = iVar3;\n          if (iVar3 != 0) {\n            *(int **)(iVar3 + 4) = piVar1;\n          }\n          iVar3 = piVar1[1];\n          *(int *)(iVar2 + 4) = iVar3;\n          if (piVar1 == *(int **)(param_4 + 4)) {\n            *(int *)(param_4 + 4) = iVar2;\n          }\n          else if (piVar1 == *(int **)(iVar3 + 8)) {\n            *(int *)(iVar3 + 8) = iVar2;\n          }\n          else {\n            *(int *)(iVar3 + 0xc) = iVar2;\n          }\n          *(int **)(iVar2 + 8) = piVar1;\n          piVar1[1] = iVar2;\n          piVar7 = *(int **)(param_4 + 4);\n          param_2 = piVar4;\n        }\n        else {\n          *piVar6 = 1;\n          *piVar4 = 1;\n          *piVar1 = 0;\n          param_2 = piVar1;\n        }\n      }\n      piVar5 = (int *)piVar1[3];\n      if ((piVar5 == (int *)0x0) || (*piVar5 != 0)) break;\n      *piVar6 = 1;\n      *piVar5 = 1;\n      *piVar1 = 0;\n      param_2 = piVar1;\n    }\n    piVar5 = param_2;\n    if ((int *)piVar6[3] == param_2) {\n      iVar2 = param_2[2];\n      piVar6[3] = iVar2;\n      if (iVar2 == 0) {\n        param_2[1] = (int)piVar1;\n        piVar7 = piVar1;\n        if (piVar6 == *(int **)(param_4 + 4)) goto LAB_001fe9e0;\nLAB_001fe9d2:\n        piVar7[2] = (int)param_2;\n      }\n      else {\n        *(int **)(iVar2 + 4) = piVar6;\n        piVar7 = (int *)piVar6[1];\n        param_2[1] = (int)piVar7;\n        if (piVar6 == *(int **)(param_4 + 4)) {\nLAB_001fe9e0:\n          *(int **)(param_4 + 4) = param_2;\n        }\n        else {\n          if (piVar6 == (int *)piVar7[2]) goto LAB_001fe9d2;\n          piVar7[3] = (int)param_2;\n        }\n      }\n      param_2[2] = (int)piVar6;\n      piVar4 = (int *)piVar1[2];\n      piVar6[1] = (int)param_2;\n      piVar5 = piVar6;\n      piVar6 = param_2;\n    }\n    *piVar6 = 1;\n    iVar2 = piVar4[3];\n    *piVar1 = 0;\n    piVar1[2] = iVar2;\n    if (iVar2 != 0) {\n      *(int **)(iVar2 + 4) = piVar1;\n    }\n    iVar2 = piVar1[1];\n    piVar4[1] = iVar2;\n    if (piVar1 == *(int **)(param_4 + 4)) {\n      *(int **)(param_4 + 4) = piVar4;\n    }\n    else if (piVar1 == *(int **)(iVar2 + 0xc)) {\n      *(int **)(iVar2 + 0xc) = piVar4;\n    }\n    else {\n      *(int **)(iVar2 + 8) = piVar4;\n    }\n    piVar4[3] = (int)piVar1;\n    piVar1[1] = (int)piVar4;\n    piVar7 = *(int **)(param_4 + 4);\n    param_2 = piVar5;\n  } while( true );" (statement_identifier "joined_r0x001fe792") (: ":") (do_statement "do {\n    while( true ) {\n      while( true ) {\n        if ((param_2 == piVar7) || (piVar6 = (int *)param_2[1], *piVar6 != 0)) {\n          *piVar7 = 1;\n          return;\n        }\n        piVar1 = (int *)piVar6[1];\n        piVar4 = (int *)piVar1[2];\n        if (piVar6 == piVar4) break;\n        if ((piVar4 == (int *)0x0) || (*piVar4 != 0)) {\n          piVar4 = param_2;\n          if ((int *)piVar6[2] == param_2) {\n            iVar2 = param_2[3];\n            piVar6[2] = iVar2;\n            piVar7 = piVar1;\n            if (iVar2 != 0) {\n              *(int **)(iVar2 + 4) = piVar6;\n              piVar7 = (int *)piVar6[1];\n            }\n            param_2[1] = (int)piVar7;\n            if (piVar6 == *(int **)(param_4 + 4)) {\n              *(int **)(param_4 + 4) = param_2;\n            }\n            else if (piVar6 == (int *)piVar7[3]) {\n              piVar7[3] = (int)param_2;\n            }\n            else {\n              piVar7[2] = (int)param_2;\n            }\n            param_2[3] = (int)piVar6;\n            piVar6[1] = (int)param_2;\n            piVar4 = piVar6;\n            piVar6 = param_2;\n          }\n          *piVar6 = 1;\n          iVar2 = piVar1[3];\n          *piVar1 = 0;\n          iVar3 = *(int *)(iVar2 + 8);\n          piVar1[3] = iVar3;\n          if (iVar3 != 0) {\n            *(int **)(iVar3 + 4) = piVar1;\n          }\n          iVar3 = piVar1[1];\n          *(int *)(iVar2 + 4) = iVar3;\n          if (piVar1 == *(int **)(param_4 + 4)) {\n            *(int *)(param_4 + 4) = iVar2;\n          }\n          else if (piVar1 == *(int **)(iVar3 + 8)) {\n            *(int *)(iVar3 + 8) = iVar2;\n          }\n          else {\n            *(int *)(iVar3 + 0xc) = iVar2;\n          }\n          *(int **)(iVar2 + 8) = piVar1;\n          piVar1[1] = iVar2;\n          piVar7 = *(int **)(param_4 + 4);\n          param_2 = piVar4;\n        }\n        else {\n          *piVar6 = 1;\n          *piVar4 = 1;\n          *piVar1 = 0;\n          param_2 = piVar1;\n        }\n      }\n      piVar5 = (int *)piVar1[3];\n      if ((piVar5 == (int *)0x0) || (*piVar5 != 0)) break;\n      *piVar6 = 1;\n      *piVar5 = 1;\n      *piVar1 = 0;\n      param_2 = piVar1;\n    }\n    piVar5 = param_2;\n    if ((int *)piVar6[3] == param_2) {\n      iVar2 = param_2[2];\n      piVar6[3] = iVar2;\n      if (iVar2 == 0) {\n        param_2[1] = (int)piVar1;\n        piVar7 = piVar1;\n        if (piVar6 == *(int **)(param_4 + 4)) goto LAB_001fe9e0;\nLAB_001fe9d2:\n        piVar7[2] = (int)param_2;\n      }\n      else {\n        *(int **)(iVar2 + 4) = piVar6;\n        piVar7 = (int *)piVar6[1];\n        param_2[1] = (int)piVar7;\n        if (piVar6 == *(int **)(param_4 + 4)) {\nLAB_001fe9e0:\n          *(int **)(param_4 + 4) = param_2;\n        }\n        else {\n          if (piVar6 == (int *)piVar7[2]) goto LAB_001fe9d2;\n          piVar7[3] = (int)param_2;\n        }\n      }\n      param_2[2] = (int)piVar6;\n      piVar4 = (int *)piVar1[2];\n      piVar6[1] = (int)param_2;\n      piVar5 = piVar6;\n      piVar6 = param_2;\n    }\n    *piVar6 = 1;\n    iVar2 = piVar4[3];\n    *piVar1 = 0;\n    piVar1[2] = iVar2;\n    if (iVar2 != 0) {\n      *(int **)(iVar2 + 4) = piVar1;\n    }\n    iVar2 = piVar1[1];\n    piVar4[1] = iVar2;\n    if (piVar1 == *(int **)(param_4 + 4)) {\n      *(int **)(param_4 + 4) = piVar4;\n    }\n    else if (piVar1 == *(int **)(iVar2 + 0xc)) {\n      *(int **)(iVar2 + 0xc) = piVar4;\n    }\n    else {\n      *(int **)(iVar2 + 8) = piVar4;\n    }\n    piVar4[3] = (int)piVar1;\n    piVar1[1] = (int)piVar4;\n    piVar7 = *(int **)(param_4 + 4);\n    param_2 = piVar5;\n  } while( true );" (do "do") (compound_statement "{\n    while( true ) {\n      while( true ) {\n        if ((param_2 == piVar7) || (piVar6 = (int *)param_2[1], *piVar6 != 0)) {\n          *piVar7 = 1;\n          return;\n        }\n        piVar1 = (int *)piVar6[1];\n        piVar4 = (int *)piVar1[2];\n        if (piVar6 == piVar4) break;\n        if ((piVar4 == (int *)0x0) || (*piVar4 != 0)) {\n          piVar4 = param_2;\n          if ((int *)piVar6[2] == param_2) {\n            iVar2 = param_2[3];\n            piVar6[2] = iVar2;\n            piVar7 = piVar1;\n            if (iVar2 != 0) {\n              *(int **)(iVar2 + 4) = piVar6;\n              piVar7 = (int *)piVar6[1];\n            }\n            param_2[1] = (int)piVar7;\n            if (piVar6 == *(int **)(param_4 + 4)) {\n              *(int **)(param_4 + 4) = param_2;\n            }\n            else if (piVar6 == (int *)piVar7[3]) {\n              piVar7[3] = (int)param_2;\n            }\n            else {\n              piVar7[2] = (int)param_2;\n            }\n            param_2[3] = (int)piVar6;\n            piVar6[1] = (int)param_2;\n            piVar4 = piVar6;\n            piVar6 = param_2;\n          }\n          *piVar6 = 1;\n          iVar2 = piVar1[3];\n          *piVar1 = 0;\n          iVar3 = *(int *)(iVar2 + 8);\n          piVar1[3] = iVar3;\n          if (iVar3 != 0) {\n            *(int **)(iVar3 + 4) = piVar1;\n          }\n          iVar3 = piVar1[1];\n          *(int *)(iVar2 + 4) = iVar3;\n          if (piVar1 == *(int **)(param_4 + 4)) {\n            *(int *)(param_4 + 4) = iVar2;\n          }\n          else if (piVar1 == *(int **)(iVar3 + 8)) {\n            *(int *)(iVar3 + 8) = iVar2;\n          }\n          else {\n            *(int *)(iVar3 + 0xc) = iVar2;\n          }\n          *(int **)(iVar2 + 8) = piVar1;\n          piVar1[1] = iVar2;\n          piVar7 = *(int **)(param_4 + 4);\n          param_2 = piVar4;\n        }\n        else {\n          *piVar6 = 1;\n          *piVar4 = 1;\n          *piVar1 = 0;\n          param_2 = piVar1;\n        }\n      }\n      piVar5 = (int *)piVar1[3];\n      if ((piVar5 == (int *)0x0) || (*piVar5 != 0)) break;\n      *piVar6 = 1;\n      *piVar5 = 1;\n      *piVar1 = 0;\n      param_2 = piVar1;\n    }\n    piVar5 = param_2;\n    if ((int *)piVar6[3] == param_2) {\n      iVar2 = param_2[2];\n      piVar6[3] = iVar2;\n      if (iVar2 == 0) {\n        param_2[1] = (int)piVar1;\n        piVar7 = piVar1;\n        if (piVar6 == *(int **)(param_4 + 4)) goto LAB_001fe9e0;\nLAB_001fe9d2:\n        piVar7[2] = (int)param_2;\n      }\n      else {\n        *(int **)(iVar2 + 4) = piVar6;\n        piVar7 = (int *)piVar6[1];\n        param_2[1] = (int)piVar7;\n        if (piVar6 == *(int **)(param_4 + 4)) {\nLAB_001fe9e0:\n          *(int **)(param_4 + 4) = param_2;\n        }\n        else {\n          if (piVar6 == (int *)piVar7[2]) goto LAB_001fe9d2;\n          piVar7[3] = (int)param_2;\n        }\n      }\n      param_2[2] = (int)piVar6;\n      piVar4 = (int *)piVar1[2];\n      piVar6[1] = (int)param_2;\n      piVar5 = piVar6;\n      piVar6 = param_2;\n    }\n    *piVar6 = 1;\n    iVar2 = piVar4[3];\n    *piVar1 = 0;\n    piVar1[2] = iVar2;\n    if (iVar2 != 0) {\n      *(int **)(iVar2 + 4) = piVar1;\n    }\n    iVar2 = piVar1[1];\n    piVar4[1] = iVar2;\n    if (piVar1 == *(int **)(param_4 + 4)) {\n      *(int **)(param_4 + 4) = piVar4;\n    }\n    else if (piVar1 == *(int **)(iVar2 + 0xc)) {\n      *(int **)(iVar2 + 0xc) = piVar4;\n    }\n    else {\n      *(int **)(iVar2 + 8) = piVar4;\n    }\n    piVar4[3] = (int)piVar1;\n    piVar1[1] = (int)piVar4;\n    piVar7 = *(int **)(param_4 + 4);\n    param_2 = piVar5;\n  }" ({ "{") (while_statement "while( true ) {\n      while( true ) {\n        if ((param_2 == piVar7) || (piVar6 = (int *)param_2[1], *piVar6 != 0)) {\n          *piVar7 = 1;\n          return;\n        }\n        piVar1 = (int *)piVar6[1];\n        piVar4 = (int *)piVar1[2];\n        if (piVar6 == piVar4) break;\n        if ((piVar4 == (int *)0x0) || (*piVar4 != 0)) {\n          piVar4 = param_2;\n          if ((int *)piVar6[2] == param_2) {\n            iVar2 = param_2[3];\n            piVar6[2] = iVar2;\n            piVar7 = piVar1;\n            if (iVar2 != 0) {\n              *(int **)(iVar2 + 4) = piVar6;\n              piVar7 = (int *)piVar6[1];\n            }\n            param_2[1] = (int)piVar7;\n            if (piVar6 == *(int **)(param_4 + 4)) {\n              *(int **)(param_4 + 4) = param_2;\n            }\n            else if (piVar6 == (int *)piVar7[3]) {\n              piVar7[3] = (int)param_2;\n            }\n            else {\n              piVar7[2] = (int)param_2;\n            }\n            param_2[3] = (int)piVar6;\n            piVar6[1] = (int)param_2;\n            piVar4 = piVar6;\n            piVar6 = param_2;\n          }\n          *piVar6 = 1;\n          iVar2 = piVar1[3];\n          *piVar1 = 0;\n          iVar3 = *(int *)(iVar2 + 8);\n          piVar1[3] = iVar3;\n          if (iVar3 != 0) {\n            *(int **)(iVar3 + 4) = piVar1;\n          }\n          iVar3 = piVar1[1];\n          *(int *)(iVar2 + 4) = iVar3;\n          if (piVar1 == *(int **)(param_4 + 4)) {\n            *(int *)(param_4 + 4) = iVar2;\n          }\n          else if (piVar1 == *(int **)(iVar3 + 8)) {\n            *(int *)(iVar3 + 8) = iVar2;\n          }\n          else {\n            *(int *)(iVar3 + 0xc) = iVar2;\n          }\n          *(int **)(iVar2 + 8) = piVar1;\n          piVar1[1] = iVar2;\n          piVar7 = *(int **)(param_4 + 4);\n          param_2 = piVar4;\n        }\n        else {\n          *piVar6 = 1;\n          *piVar4 = 1;\n          *piVar1 = 0;\n          param_2 = piVar1;\n        }\n      }\n      piVar5 = (int *)piVar1[3];\n      if ((piVar5 == (int *)0x0) || (*piVar5 != 0)) break;\n      *piVar6 = 1;\n      *piVar5 = 1;\n      *piVar1 = 0;\n      param_2 = piVar1;\n    }" (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (compound_statement "{\n      while( true ) {\n        if ((param_2 == piVar7) || (piVar6 = (int *)param_2[1], *piVar6 != 0)) {\n          *piVar7 = 1;\n          return;\n        }\n        piVar1 = (int *)piVar6[1];\n        piVar4 = (int *)piVar1[2];\n        if (piVar6 == piVar4) break;\n        if ((piVar4 == (int *)0x0) || (*piVar4 != 0)) {\n          piVar4 = param_2;\n          if ((int *)piVar6[2] == param_2) {\n            iVar2 = param_2[3];\n            piVar6[2] = iVar2;\n            piVar7 = piVar1;\n            if (iVar2 != 0) {\n              *(int **)(iVar2 + 4) = piVar6;\n              piVar7 = (int *)piVar6[1];\n            }\n            param_2[1] = (int)piVar7;\n            if (piVar6 == *(int **)(param_4 + 4)) {\n              *(int **)(param_4 + 4) = param_2;\n            }\n            else if (piVar6 == (int *)piVar7[3]) {\n              piVar7[3] = (int)param_2;\n            }\n            else {\n              piVar7[2] = (int)param_2;\n            }\n            param_2[3] = (int)piVar6;\n            piVar6[1] = (int)param_2;\n            piVar4 = piVar6;\n            piVar6 = param_2;\n          }\n          *piVar6 = 1;\n          iVar2 = piVar1[3];\n          *piVar1 = 0;\n          iVar3 = *(int *)(iVar2 + 8);\n          piVar1[3] = iVar3;\n          if (iVar3 != 0) {\n            *(int **)(iVar3 + 4) = piVar1;\n          }\n          iVar3 = piVar1[1];\n          *(int *)(iVar2 + 4) = iVar3;\n          if (piVar1 == *(int **)(param_4 + 4)) {\n            *(int *)(param_4 + 4) = iVar2;\n          }\n          else if (piVar1 == *(int **)(iVar3 + 8)) {\n            *(int *)(iVar3 + 8) = iVar2;\n          }\n          else {\n            *(int *)(iVar3 + 0xc) = iVar2;\n          }\n          *(int **)(iVar2 + 8) = piVar1;\n          piVar1[1] = iVar2;\n          piVar7 = *(int **)(param_4 + 4);\n          param_2 = piVar4;\n        }\n        else {\n          *piVar6 = 1;\n          *piVar4 = 1;\n          *piVar1 = 0;\n          param_2 = piVar1;\n        }\n      }\n      piVar5 = (int *)piVar1[3];\n      if ((piVar5 == (int *)0x0) || (*piVar5 != 0)) break;\n      *piVar6 = 1;\n      *piVar5 = 1;\n      *piVar1 = 0;\n      param_2 = piVar1;\n    }" ({ "{") (while_statement "while( true ) {\n        if ((param_2 == piVar7) || (piVar6 = (int *)param_2[1], *piVar6 != 0)) {\n          *piVar7 = 1;\n          return;\n        }\n        piVar1 = (int *)piVar6[1];\n        piVar4 = (int *)piVar1[2];\n        if (piVar6 == piVar4) break;\n        if ((piVar4 == (int *)0x0) || (*piVar4 != 0)) {\n          piVar4 = param_2;\n          if ((int *)piVar6[2] == param_2) {\n            iVar2 = param_2[3];\n            piVar6[2] = iVar2;\n            piVar7 = piVar1;\n            if (iVar2 != 0) {\n              *(int **)(iVar2 + 4) = piVar6;\n              piVar7 = (int *)piVar6[1];\n            }\n            param_2[1] = (int)piVar7;\n            if (piVar6 == *(int **)(param_4 + 4)) {\n              *(int **)(param_4 + 4) = param_2;\n            }\n            else if (piVar6 == (int *)piVar7[3]) {\n              piVar7[3] = (int)param_2;\n            }\n            else {\n              piVar7[2] = (int)param_2;\n            }\n            param_2[3] = (int)piVar6;\n            piVar6[1] = (int)param_2;\n            piVar4 = piVar6;\n            piVar6 = param_2;\n          }\n          *piVar6 = 1;\n          iVar2 = piVar1[3];\n          *piVar1 = 0;\n          iVar3 = *(int *)(iVar2 + 8);\n          piVar1[3] = iVar3;\n          if (iVar3 != 0) {\n            *(int **)(iVar3 + 4) = piVar1;\n          }\n          iVar3 = piVar1[1];\n          *(int *)(iVar2 + 4) = iVar3;\n          if (piVar1 == *(int **)(param_4 + 4)) {\n            *(int *)(param_4 + 4) = iVar2;\n          }\n          else if (piVar1 == *(int **)(iVar3 + 8)) {\n            *(int *)(iVar3 + 8) = iVar2;\n          }\n          else {\n            *(int *)(iVar3 + 0xc) = iVar2;\n          }\n          *(int **)(iVar2 + 8) = piVar1;\n          piVar1[1] = iVar2;\n          piVar7 = *(int **)(param_4 + 4);\n          param_2 = piVar4;\n        }\n        else {\n          *piVar6 = 1;\n          *piVar4 = 1;\n          *piVar1 = 0;\n          param_2 = piVar1;\n        }\n      }" (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (compound_statement "{\n        if ((param_2 == piVar7) || (piVar6 = (int *)param_2[1], *piVar6 != 0)) {\n          *piVar7 = 1;\n          return;\n        }\n        piVar1 = (int *)piVar6[1];\n        piVar4 = (int *)piVar1[2];\n        if (piVar6 == piVar4) break;\n        if ((piVar4 == (int *)0x0) || (*piVar4 != 0)) {\n          piVar4 = param_2;\n          if ((int *)piVar6[2] == param_2) {\n            iVar2 = param_2[3];\n            piVar6[2] = iVar2;\n            piVar7 = piVar1;\n            if (iVar2 != 0) {\n              *(int **)(iVar2 + 4) = piVar6;\n              piVar7 = (int *)piVar6[1];\n            }\n            param_2[1] = (int)piVar7;\n            if (piVar6 == *(int **)(param_4 + 4)) {\n              *(int **)(param_4 + 4) = param_2;\n            }\n            else if (piVar6 == (int *)piVar7[3]) {\n              piVar7[3] = (int)param_2;\n            }\n            else {\n              piVar7[2] = (int)param_2;\n            }\n            param_2[3] = (int)piVar6;\n            piVar6[1] = (int)param_2;\n            piVar4 = piVar6;\n            piVar6 = param_2;\n          }\n          *piVar6 = 1;\n          iVar2 = piVar1[3];\n          *piVar1 = 0;\n          iVar3 = *(int *)(iVar2 + 8);\n          piVar1[3] = iVar3;\n          if (iVar3 != 0) {\n            *(int **)(iVar3 + 4) = piVar1;\n          }\n          iVar3 = piVar1[1];\n          *(int *)(iVar2 + 4) = iVar3;\n          if (piVar1 == *(int **)(param_4 + 4)) {\n            *(int *)(param_4 + 4) = iVar2;\n          }\n          else if (piVar1 == *(int **)(iVar3 + 8)) {\n            *(int *)(iVar3 + 8) = iVar2;\n          }\n          else {\n            *(int *)(iVar3 + 0xc) = iVar2;\n          }\n          *(int **)(iVar2 + 8) = piVar1;\n          piVar1[1] = iVar2;\n          piVar7 = *(int **)(param_4 + 4);\n          param_2 = piVar4;\n        }\n        else {\n          *piVar6 = 1;\n          *piVar4 = 1;\n          *piVar1 = 0;\n          param_2 = piVar1;\n        }\n      }" ({ "{") (if_statement "if ((param_2 == piVar7) || (piVar6 = (int *)param_2[1], *piVar6 != 0)) {\n          *piVar7 = 1;\n          return;\n        }" (if "if") (parenthesized_expression "((param_2 == piVar7) || (piVar6 = (int *)param_2[1], *piVar6 != 0))" (( "(") (binary_expression "(param_2 == piVar7) || (piVar6 = (int *)param_2[1], *piVar6 != 0)" (parenthesized_expression "(param_2 == piVar7)" (( "(") (binary_expression "param_2 == piVar7" (identifier "param_2") (== "==") (identifier "piVar7")) () ")")) (|| "||") (parenthesized_expression "(piVar6 = (int *)param_2[1], *piVar6 != 0)" (( "(") (comma_expression "piVar6 = (int *)param_2[1], *piVar6 != 0" (assignment_expression "piVar6 = (int *)param_2[1]" (identifier "piVar6") (= "=") (cast_expression "(int *)param_2[1]" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_2[1]" (identifier "param_2") ([ "[") (number_literal "1") (] "]")))) (, ",") (binary_expression "*piVar6 != 0" (pointer_expression "*piVar6" (* "*") (identifier "piVar6")) (!= "!=") (number_literal "0"))) () ")"))) () ")")) (compound_statement "{\n          *piVar7 = 1;\n          return;\n        }" ({ "{") (expression_statement "*piVar7 = 1;" (assignment_expression "*piVar7 = 1" (pointer_expression "*piVar7" (* "*") (identifier "piVar7")) (= "=") (number_literal "1")) (; ";")) (return_statement "return;" (return "return") (; ";")) (} "}"))) (expression_statement "piVar1 = (int *)piVar6[1];" (assignment_expression "piVar1 = (int *)piVar6[1]" (identifier "piVar1") (= "=") (cast_expression "(int *)piVar6[1]" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "piVar6[1]" (identifier "piVar6") ([ "[") (number_literal "1") (] "]")))) (; ";")) (expression_statement "piVar4 = (int *)piVar1[2];" (assignment_expression "piVar4 = (int *)piVar1[2]" (identifier "piVar4") (= "=") (cast_expression "(int *)piVar1[2]" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "piVar1[2]" (identifier "piVar1") ([ "[") (number_literal "2") (] "]")))) (; ";")) (if_statement "if (piVar6 == piVar4) break;" (if "if") (parenthesized_expression "(piVar6 == piVar4)" (( "(") (binary_expression "piVar6 == piVar4" (identifier "piVar6") (== "==") (identifier "piVar4")) () ")")) (break_statement "break;" (break "break") (; ";"))) (if_statement "if ((piVar4 == (int *)0x0) || (*piVar4 != 0)) {\n          piVar4 = param_2;\n          if ((int *)piVar6[2] == param_2) {\n            iVar2 = param_2[3];\n            piVar6[2] = iVar2;\n            piVar7 = piVar1;\n            if (iVar2 != 0) {\n              *(int **)(iVar2 + 4) = piVar6;\n              piVar7 = (int *)piVar6[1];\n            }\n            param_2[1] = (int)piVar7;\n            if (piVar6 == *(int **)(param_4 + 4)) {\n              *(int **)(param_4 + 4) = param_2;\n            }\n            else if (piVar6 == (int *)piVar7[3]) {\n              piVar7[3] = (int)param_2;\n            }\n            else {\n              piVar7[2] = (int)param_2;\n            }\n            param_2[3] = (int)piVar6;\n            piVar6[1] = (int)param_2;\n            piVar4 = piVar6;\n            piVar6 = param_2;\n          }\n          *piVar6 = 1;\n          iVar2 = piVar1[3];\n          *piVar1 = 0;\n          iVar3 = *(int *)(iVar2 + 8);\n          piVar1[3] = iVar3;\n          if (iVar3 != 0) {\n            *(int **)(iVar3 + 4) = piVar1;\n          }\n          iVar3 = piVar1[1];\n          *(int *)(iVar2 + 4) = iVar3;\n          if (piVar1 == *(int **)(param_4 + 4)) {\n            *(int *)(param_4 + 4) = iVar2;\n          }\n          else if (piVar1 == *(int **)(iVar3 + 8)) {\n            *(int *)(iVar3 + 8) = iVar2;\n          }\n          else {\n            *(int *)(iVar3 + 0xc) = iVar2;\n          }\n          *(int **)(iVar2 + 8) = piVar1;\n          piVar1[1] = iVar2;\n          piVar7 = *(int **)(param_4 + 4);\n          param_2 = piVar4;\n        }\n        else {\n          *piVar6 = 1;\n          *piVar4 = 1;\n          *piVar1 = 0;\n          param_2 = piVar1;\n        }" (if "if") (parenthesized_expression "((piVar4 == (int *)0x0) || (*piVar4 != 0))" (( "(") (binary_expression "(piVar4 == (int *)0x0) || (*piVar4 != 0)" (parenthesized_expression "(piVar4 == (int *)0x0)" (( "(") (binary_expression "piVar4 == (int *)0x0" (identifier "piVar4") (== "==") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (|| "||") (parenthesized_expression "(*piVar4 != 0)" (( "(") (binary_expression "*piVar4 != 0" (pointer_expression "*piVar4" (* "*") (identifier "piVar4")) (!= "!=") (number_literal "0")) () ")"))) () ")")) (compound_statement "{\n          piVar4 = param_2;\n          if ((int *)piVar6[2] == param_2) {\n            iVar2 = param_2[3];\n            piVar6[2] = iVar2;\n            piVar7 = piVar1;\n            if (iVar2 != 0) {\n              *(int **)(iVar2 + 4) = piVar6;\n              piVar7 = (int *)piVar6[1];\n            }\n            param_2[1] = (int)piVar7;\n            if (piVar6 == *(int **)(param_4 + 4)) {\n              *(int **)(param_4 + 4) = param_2;\n            }\n            else if (piVar6 == (int *)piVar7[3]) {\n              piVar7[3] = (int)param_2;\n            }\n            else {\n              piVar7[2] = (int)param_2;\n            }\n            param_2[3] = (int)piVar6;\n            piVar6[1] = (int)param_2;\n            piVar4 = piVar6;\n            piVar6 = param_2;\n          }\n          *piVar6 = 1;\n          iVar2 = piVar1[3];\n          *piVar1 = 0;\n          iVar3 = *(int *)(iVar2 + 8);\n          piVar1[3] = iVar3;\n          if (iVar3 != 0) {\n            *(int **)(iVar3 + 4) = piVar1;\n          }\n          iVar3 = piVar1[1];\n          *(int *)(iVar2 + 4) = iVar3;\n          if (piVar1 == *(int **)(param_4 + 4)) {\n            *(int *)(param_4 + 4) = iVar2;\n          }\n          else if (piVar1 == *(int **)(iVar3 + 8)) {\n            *(int *)(iVar3 + 8) = iVar2;\n          }\n          else {\n            *(int *)(iVar3 + 0xc) = iVar2;\n          }\n          *(int **)(iVar2 + 8) = piVar1;\n          piVar1[1] = iVar2;\n          piVar7 = *(int **)(param_4 + 4);\n          param_2 = piVar4;\n        }" ({ "{") (expression_statement "piVar4 = param_2;" (assignment_expression "piVar4 = param_2" (identifier "piVar4") (= "=") (identifier "param_2")) (; ";")) (if_statement "if ((int *)piVar6[2] == param_2) {\n            iVar2 = param_2[3];\n            piVar6[2] = iVar2;\n            piVar7 = piVar1;\n            if (iVar2 != 0) {\n              *(int **)(iVar2 + 4) = piVar6;\n              piVar7 = (int *)piVar6[1];\n            }\n            param_2[1] = (int)piVar7;\n            if (piVar6 == *(int **)(param_4 + 4)) {\n              *(int **)(param_4 + 4) = param_2;\n            }\n            else if (piVar6 == (int *)piVar7[3]) {\n              piVar7[3] = (int)param_2;\n            }\n            else {\n              piVar7[2] = (int)param_2;\n            }\n            param_2[3] = (int)piVar6;\n            piVar6[1] = (int)param_2;\n            piVar4 = piVar6;\n            piVar6 = param_2;\n          }" (if "if") (parenthesized_expression "((int *)piVar6[2] == param_2)" (( "(") (binary_expression "(int *)piVar6[2] == param_2" (cast_expression "(int *)piVar6[2]" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "piVar6[2]" (identifier "piVar6") ([ "[") (number_literal "2") (] "]"))) (== "==") (identifier "param_2")) () ")")) (compound_statement "{\n            iVar2 = param_2[3];\n            piVar6[2] = iVar2;\n            piVar7 = piVar1;\n            if (iVar2 != 0) {\n              *(int **)(iVar2 + 4) = piVar6;\n              piVar7 = (int *)piVar6[1];\n            }\n            param_2[1] = (int)piVar7;\n            if (piVar6 == *(int **)(param_4 + 4)) {\n              *(int **)(param_4 + 4) = param_2;\n            }\n            else if (piVar6 == (int *)piVar7[3]) {\n              piVar7[3] = (int)param_2;\n            }\n            else {\n              piVar7[2] = (int)param_2;\n            }\n            param_2[3] = (int)piVar6;\n            piVar6[1] = (int)param_2;\n            piVar4 = piVar6;\n            piVar6 = param_2;\n          }" ({ "{") (expression_statement "iVar2 = param_2[3];" (assignment_expression "iVar2 = param_2[3]" (identifier "iVar2") (= "=") (subscript_expression "param_2[3]" (identifier "param_2") ([ "[") (number_literal "3") (] "]"))) (; ";")) (expression_statement "piVar6[2] = iVar2;" (assignment_expression "piVar6[2] = iVar2" (subscript_expression "piVar6[2]" (identifier "piVar6") ([ "[") (number_literal "2") (] "]")) (= "=") (identifier "iVar2")) (; ";")) (expression_statement "piVar7 = piVar1;" (assignment_expression "piVar7 = piVar1" (identifier "piVar7") (= "=") (identifier "piVar1")) (; ";")) (if_statement "if (iVar2 != 0) {\n              *(int **)(iVar2 + 4) = piVar6;\n              piVar7 = (int *)piVar6[1];\n            }" (if "if") (parenthesized_expression "(iVar2 != 0)" (( "(") (binary_expression "iVar2 != 0" (identifier "iVar2") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n              *(int **)(iVar2 + 4) = piVar6;\n              piVar7 = (int *)piVar6[1];\n            }" ({ "{") (expression_statement "*(int **)(iVar2 + 4) = piVar6;" (assignment_expression "*(int **)(iVar2 + 4) = piVar6" (pointer_expression "*(int **)(iVar2 + 4)" (* "*") (cast_expression "(int **)(iVar2 + 4)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar2 + 4)" (( "(") (binary_expression "iVar2 + 4" (identifier "iVar2") (+ "+") (number_literal "4")) () ")")))) (= "=") (identifier "piVar6")) (; ";")) (expression_statement "piVar7 = (int *)piVar6[1];" (assignment_expression "piVar7 = (int *)piVar6[1]" (identifier "piVar7") (= "=") (cast_expression "(int *)piVar6[1]" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "piVar6[1]" (identifier "piVar6") ([ "[") (number_literal "1") (] "]")))) (; ";")) (} "}"))) (expression_statement "param_2[1] = (int)piVar7;" (assignment_expression "param_2[1] = (int)piVar7" (subscript_expression "param_2[1]" (identifier "param_2") ([ "[") (number_literal "1") (] "]")) (= "=") (cast_expression "(int)piVar7" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar7"))) (; ";")) (if_statement "if (piVar6 == *(int **)(param_4 + 4)) {\n              *(int **)(param_4 + 4) = param_2;\n            }\n            else if (piVar6 == (int *)piVar7[3]) {\n              piVar7[3] = (int)param_2;\n            }\n            else {\n              piVar7[2] = (int)param_2;\n            }" (if "if") (parenthesized_expression "(piVar6 == *(int **)(param_4 + 4))" (( "(") (binary_expression "piVar6 == *(int **)(param_4 + 4)" (identifier "piVar6") (== "==") (pointer_expression "*(int **)(param_4 + 4)" (* "*") (cast_expression "(int **)(param_4 + 4)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_4 + 4)" (( "(") (binary_expression "param_4 + 4" (identifier "param_4") (+ "+") (number_literal "4")) () ")"))))) () ")")) (compound_statement "{\n              *(int **)(param_4 + 4) = param_2;\n            }" ({ "{") (expression_statement "*(int **)(param_4 + 4) = param_2;" (assignment_expression "*(int **)(param_4 + 4) = param_2" (pointer_expression "*(int **)(param_4 + 4)" (* "*") (cast_expression "(int **)(param_4 + 4)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_4 + 4)" (( "(") (binary_expression "param_4 + 4" (identifier "param_4") (+ "+") (number_literal "4")) () ")")))) (= "=") (identifier "param_2")) (; ";")) (} "}")) (else_clause "else if (piVar6 == (int *)piVar7[3]) {\n              piVar7[3] = (int)param_2;\n            }\n            else {\n              piVar7[2] = (int)param_2;\n            }" (else "else") (if_statement "if (piVar6 == (int *)piVar7[3]) {\n              piVar7[3] = (int)param_2;\n            }\n            else {\n              piVar7[2] = (int)param_2;\n            }" (if "if") (parenthesized_expression "(piVar6 == (int *)piVar7[3])" (( "(") (binary_expression "piVar6 == (int *)piVar7[3]" (identifier "piVar6") (== "==") (cast_expression "(int *)piVar7[3]" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "piVar7[3]" (identifier "piVar7") ([ "[") (number_literal "3") (] "]")))) () ")")) (compound_statement "{\n              piVar7[3] = (int)param_2;\n            }" ({ "{") (expression_statement "piVar7[3] = (int)param_2;" (assignment_expression "piVar7[3] = (int)param_2" (subscript_expression "piVar7[3]" (identifier "piVar7") ([ "[") (number_literal "3") (] "]")) (= "=") (cast_expression "(int)param_2" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_2"))) (; ";")) (} "}")) (else_clause "else {\n              piVar7[2] = (int)param_2;\n            }" (else "else") (compound_statement "{\n              piVar7[2] = (int)param_2;\n            }" ({ "{") (expression_statement "piVar7[2] = (int)param_2;" (assignment_expression "piVar7[2] = (int)param_2" (subscript_expression "piVar7[2]" (identifier "piVar7") ([ "[") (number_literal "2") (] "]")) (= "=") (cast_expression "(int)param_2" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_2"))) (; ";")) (} "}")))))) (expression_statement "param_2[3] = (int)piVar6;" (assignment_expression "param_2[3] = (int)piVar6" (subscript_expression "param_2[3]" (identifier "param_2") ([ "[") (number_literal "3") (] "]")) (= "=") (cast_expression "(int)piVar6" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar6"))) (; ";")) (expression_statement "piVar6[1] = (int)param_2;" (assignment_expression "piVar6[1] = (int)param_2" (subscript_expression "piVar6[1]" (identifier "piVar6") ([ "[") (number_literal "1") (] "]")) (= "=") (cast_expression "(int)param_2" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_2"))) (; ";")) (expression_statement "piVar4 = piVar6;" (assignment_expression "piVar4 = piVar6" (identifier "piVar4") (= "=") (identifier "piVar6")) (; ";")) (expression_statement "piVar6 = param_2;" (assignment_expression "piVar6 = param_2" (identifier "piVar6") (= "=") (identifier "param_2")) (; ";")) (} "}"))) (expression_statement "*piVar6 = 1;" (assignment_expression "*piVar6 = 1" (pointer_expression "*piVar6" (* "*") (identifier "piVar6")) (= "=") (number_literal "1")) (; ";")) (expression_statement "iVar2 = piVar1[3];" (assignment_expression "iVar2 = piVar1[3]" (identifier "iVar2") (= "=") (subscript_expression "piVar1[3]" (identifier "piVar1") ([ "[") (number_literal "3") (] "]"))) (; ";")) (expression_statement "*piVar1 = 0;" (assignment_expression "*piVar1 = 0" (pointer_expression "*piVar1" (* "*") (identifier "piVar1")) (= "=") (number_literal "0")) (; ";")) (expression_statement "iVar3 = *(int *)(iVar2 + 8);" (assignment_expression "iVar3 = *(int *)(iVar2 + 8)" (identifier "iVar3") (= "=") (pointer_expression "*(int *)(iVar2 + 8)" (* "*") (cast_expression "(int *)(iVar2 + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar2 + 8)" (( "(") (binary_expression "iVar2 + 8" (identifier "iVar2") (+ "+") (number_literal "8")) () ")"))))) (; ";")) (expression_statement "piVar1[3] = iVar3;" (assignment_expression "piVar1[3] = iVar3" (subscript_expression "piVar1[3]" (identifier "piVar1") ([ "[") (number_literal "3") (] "]")) (= "=") (identifier "iVar3")) (; ";")) (if_statement "if (iVar3 != 0) {\n            *(int **)(iVar3 + 4) = piVar1;\n          }" (if "if") (parenthesized_expression "(iVar3 != 0)" (( "(") (binary_expression "iVar3 != 0" (identifier "iVar3") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n            *(int **)(iVar3 + 4) = piVar1;\n          }" ({ "{") (expression_statement "*(int **)(iVar3 + 4) = piVar1;" (assignment_expression "*(int **)(iVar3 + 4) = piVar1" (pointer_expression "*(int **)(iVar3 + 4)" (* "*") (cast_expression "(int **)(iVar3 + 4)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar3 + 4)" (( "(") (binary_expression "iVar3 + 4" (identifier "iVar3") (+ "+") (number_literal "4")) () ")")))) (= "=") (identifier "piVar1")) (; ";")) (} "}"))) (expression_statement "iVar3 = piVar1[1];" (assignment_expression "iVar3 = piVar1[1]" (identifier "iVar3") (= "=") (subscript_expression "piVar1[1]" (identifier "piVar1") ([ "[") (number_literal "1") (] "]"))) (; ";")) (expression_statement "*(int *)(iVar2 + 4) = iVar3;" (assignment_expression "*(int *)(iVar2 + 4) = iVar3" (pointer_expression "*(int *)(iVar2 + 4)" (* "*") (cast_expression "(int *)(iVar2 + 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar2 + 4)" (( "(") (binary_expression "iVar2 + 4" (identifier "iVar2") (+ "+") (number_literal "4")) () ")")))) (= "=") (identifier "iVar3")) (; ";")) (if_statement "if (piVar1 == *(int **)(param_4 + 4)) {\n            *(int *)(param_4 + 4) = iVar2;\n          }\n          else if (piVar1 == *(int **)(iVar3 + 8)) {\n            *(int *)(iVar3 + 8) = iVar2;\n          }\n          else {\n            *(int *)(iVar3 + 0xc) = iVar2;\n          }" (if "if") (parenthesized_expression "(piVar1 == *(int **)(param_4 + 4))" (( "(") (binary_expression "piVar1 == *(int **)(param_4 + 4)" (identifier "piVar1") (== "==") (pointer_expression "*(int **)(param_4 + 4)" (* "*") (cast_expression "(int **)(param_4 + 4)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_4 + 4)" (( "(") (binary_expression "param_4 + 4" (identifier "param_4") (+ "+") (number_literal "4")) () ")"))))) () ")")) (compound_statement "{\n            *(int *)(param_4 + 4) = iVar2;\n          }" ({ "{") (expression_statement "*(int *)(param_4 + 4) = iVar2;" (assignment_expression "*(int *)(param_4 + 4) = iVar2" (pointer_expression "*(int *)(param_4 + 4)" (* "*") (cast_expression "(int *)(param_4 + 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_4 + 4)" (( "(") (binary_expression "param_4 + 4" (identifier "param_4") (+ "+") (number_literal "4")) () ")")))) (= "=") (identifier "iVar2")) (; ";")) (} "}")) (else_clause "else if (piVar1 == *(int **)(iVar3 + 8)) {\n            *(int *)(iVar3 + 8) = iVar2;\n          }\n          else {\n            *(int *)(iVar3 + 0xc) = iVar2;\n          }" (else "else") (if_statement "if (piVar1 == *(int **)(iVar3 + 8)) {\n            *(int *)(iVar3 + 8) = iVar2;\n          }\n          else {\n            *(int *)(iVar3 + 0xc) = iVar2;\n          }" (if "if") (parenthesized_expression "(piVar1 == *(int **)(iVar3 + 8))" (( "(") (binary_expression "piVar1 == *(int **)(iVar3 + 8)" (identifier "piVar1") (== "==") (pointer_expression "*(int **)(iVar3 + 8)" (* "*") (cast_expression "(int **)(iVar3 + 8)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar3 + 8)" (( "(") (binary_expression "iVar3 + 8" (identifier "iVar3") (+ "+") (number_literal "8")) () ")"))))) () ")")) (compound_statement "{\n            *(int *)(iVar3 + 8) = iVar2;\n          }" ({ "{") (expression_statement "*(int *)(iVar3 + 8) = iVar2;" (assignment_expression "*(int *)(iVar3 + 8) = iVar2" (pointer_expression "*(int *)(iVar3 + 8)" (* "*") (cast_expression "(int *)(iVar3 + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar3 + 8)" (( "(") (binary_expression "iVar3 + 8" (identifier "iVar3") (+ "+") (number_literal "8")) () ")")))) (= "=") (identifier "iVar2")) (; ";")) (} "}")) (else_clause "else {\n            *(int *)(iVar3 + 0xc) = iVar2;\n          }" (else "else") (compound_statement "{\n            *(int *)(iVar3 + 0xc) = iVar2;\n          }" ({ "{") (expression_statement "*(int *)(iVar3 + 0xc) = iVar2;" (assignment_expression "*(int *)(iVar3 + 0xc) = iVar2" (pointer_expression "*(int *)(iVar3 + 0xc)" (* "*") (cast_expression "(int *)(iVar3 + 0xc)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar3 + 0xc)" (( "(") (binary_expression "iVar3 + 0xc" (identifier "iVar3") (+ "+") (number_literal "0xc")) () ")")))) (= "=") (identifier "iVar2")) (; ";")) (} "}")))))) (expression_statement "*(int **)(iVar2 + 8) = piVar1;" (assignment_expression "*(int **)(iVar2 + 8) = piVar1" (pointer_expression "*(int **)(iVar2 + 8)" (* "*") (cast_expression "(int **)(iVar2 + 8)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar2 + 8)" (( "(") (binary_expression "iVar2 + 8" (identifier "iVar2") (+ "+") (number_literal "8")) () ")")))) (= "=") (identifier "piVar1")) (; ";")) (expression_statement "piVar1[1] = iVar2;" (assignment_expression "piVar1[1] = iVar2" (subscript_expression "piVar1[1]" (identifier "piVar1") ([ "[") (number_literal "1") (] "]")) (= "=") (identifier "iVar2")) (; ";")) (expression_statement "piVar7 = *(int **)(param_4 + 4);" (assignment_expression "piVar7 = *(int **)(param_4 + 4)" (identifier "piVar7") (= "=") (pointer_expression "*(int **)(param_4 + 4)" (* "*") (cast_expression "(int **)(param_4 + 4)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_4 + 4)" (( "(") (binary_expression "param_4 + 4" (identifier "param_4") (+ "+") (number_literal "4")) () ")"))))) (; ";")) (expression_statement "param_2 = piVar4;" (assignment_expression "param_2 = piVar4" (identifier "param_2") (= "=") (identifier "piVar4")) (; ";")) (} "}")) (else_clause "else {\n          *piVar6 = 1;\n          *piVar4 = 1;\n          *piVar1 = 0;\n          param_2 = piVar1;\n        }" (else "else") (compound_statement "{\n          *piVar6 = 1;\n          *piVar4 = 1;\n          *piVar1 = 0;\n          param_2 = piVar1;\n        }" ({ "{") (expression_statement "*piVar6 = 1;" (assignment_expression "*piVar6 = 1" (pointer_expression "*piVar6" (* "*") (identifier "piVar6")) (= "=") (number_literal "1")) (; ";")) (expression_statement "*piVar4 = 1;" (assignment_expression "*piVar4 = 1" (pointer_expression "*piVar4" (* "*") (identifier "piVar4")) (= "=") (number_literal "1")) (; ";")) (expression_statement "*piVar1 = 0;" (assignment_expression "*piVar1 = 0" (pointer_expression "*piVar1" (* "*") (identifier "piVar1")) (= "=") (number_literal "0")) (; ";")) (expression_statement "param_2 = piVar1;" (assignment_expression "param_2 = piVar1" (identifier "param_2") (= "=") (identifier "piVar1")) (; ";")) (} "}")))) (} "}"))) (expression_statement "piVar5 = (int *)piVar1[3];" (assignment_expression "piVar5 = (int *)piVar1[3]" (identifier "piVar5") (= "=") (cast_expression "(int *)piVar1[3]" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "piVar1[3]" (identifier "piVar1") ([ "[") (number_literal "3") (] "]")))) (; ";")) (if_statement "if ((piVar5 == (int *)0x0) || (*piVar5 != 0)) break;" (if "if") (parenthesized_expression "((piVar5 == (int *)0x0) || (*piVar5 != 0))" (( "(") (binary_expression "(piVar5 == (int *)0x0) || (*piVar5 != 0)" (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 != 0)" (( "(") (binary_expression "*piVar5 != 0" (pointer_expression "*piVar5" (* "*") (identifier "piVar5")) (!= "!=") (number_literal "0")) () ")"))) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "*piVar6 = 1;" (assignment_expression "*piVar6 = 1" (pointer_expression "*piVar6" (* "*") (identifier "piVar6")) (= "=") (number_literal "1")) (; ";")) (expression_statement "*piVar5 = 1;" (assignment_expression "*piVar5 = 1" (pointer_expression "*piVar5" (* "*") (identifier "piVar5")) (= "=") (number_literal "1")) (; ";")) (expression_statement "*piVar1 = 0;" (assignment_expression "*piVar1 = 0" (pointer_expression "*piVar1" (* "*") (identifier "piVar1")) (= "=") (number_literal "0")) (; ";")) (expression_statement "param_2 = piVar1;" (assignment_expression "param_2 = piVar1" (identifier "param_2") (= "=") (identifier "piVar1")) (; ";")) (} "}"))) (expression_statement "piVar5 = param_2;" (assignment_expression "piVar5 = param_2" (identifier "piVar5") (= "=") (identifier "param_2")) (; ";")) (if_statement "if ((int *)piVar6[3] == param_2) {\n      iVar2 = param_2[2];\n      piVar6[3] = iVar2;\n      if (iVar2 == 0) {\n        param_2[1] = (int)piVar1;\n        piVar7 = piVar1;\n        if (piVar6 == *(int **)(param_4 + 4)) goto LAB_001fe9e0;\nLAB_001fe9d2:\n        piVar7[2] = (int)param_2;\n      }\n      else {\n        *(int **)(iVar2 + 4) = piVar6;\n        piVar7 = (int *)piVar6[1];\n        param_2[1] = (int)piVar7;\n        if (piVar6 == *(int **)(param_4 + 4)) {\nLAB_001fe9e0:\n          *(int **)(param_4 + 4) = param_2;\n        }\n        else {\n          if (piVar6 == (int *)piVar7[2]) goto LAB_001fe9d2;\n          piVar7[3] = (int)param_2;\n        }\n      }\n      param_2[2] = (int)piVar6;\n      piVar4 = (int *)piVar1[2];\n      piVar6[1] = (int)param_2;\n      piVar5 = piVar6;\n      piVar6 = param_2;\n    }" (if "if") (parenthesized_expression "((int *)piVar6[3] == param_2)" (( "(") (binary_expression "(int *)piVar6[3] == param_2" (cast_expression "(int *)piVar6[3]" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "piVar6[3]" (identifier "piVar6") ([ "[") (number_literal "3") (] "]"))) (== "==") (identifier "param_2")) () ")")) (compound_statement "{\n      iVar2 = param_2[2];\n      piVar6[3] = iVar2;\n      if (iVar2 == 0) {\n        param_2[1] = (int)piVar1;\n        piVar7 = piVar1;\n        if (piVar6 == *(int **)(param_4 + 4)) goto LAB_001fe9e0;\nLAB_001fe9d2:\n        piVar7[2] = (int)param_2;\n      }\n      else {\n        *(int **)(iVar2 + 4) = piVar6;\n        piVar7 = (int *)piVar6[1];\n        param_2[1] = (int)piVar7;\n        if (piVar6 == *(int **)(param_4 + 4)) {\nLAB_001fe9e0:\n          *(int **)(param_4 + 4) = param_2;\n        }\n        else {\n          if (piVar6 == (int *)piVar7[2]) goto LAB_001fe9d2;\n          piVar7[3] = (int)param_2;\n        }\n      }\n      param_2[2] = (int)piVar6;\n      piVar4 = (int *)piVar1[2];\n      piVar6[1] = (int)param_2;\n      piVar5 = piVar6;\n      piVar6 = param_2;\n    }" ({ "{") (expression_statement "iVar2 = param_2[2];" (assignment_expression "iVar2 = param_2[2]" (identifier "iVar2") (= "=") (subscript_expression "param_2[2]" (identifier "param_2") ([ "[") (number_literal "2") (] "]"))) (; ";")) (expression_statement "piVar6[3] = iVar2;" (assignment_expression "piVar6[3] = iVar2" (subscript_expression "piVar6[3]" (identifier "piVar6") ([ "[") (number_literal "3") (] "]")) (= "=") (identifier "iVar2")) (; ";")) (if_statement "if (iVar2 == 0) {\n        param_2[1] = (int)piVar1;\n        piVar7 = piVar1;\n        if (piVar6 == *(int **)(param_4 + 4)) goto LAB_001fe9e0;\nLAB_001fe9d2:\n        piVar7[2] = (int)param_2;\n      }\n      else {\n        *(int **)(iVar2 + 4) = piVar6;\n        piVar7 = (int *)piVar6[1];\n        param_2[1] = (int)piVar7;\n        if (piVar6 == *(int **)(param_4 + 4)) {\nLAB_001fe9e0:\n          *(int **)(param_4 + 4) = param_2;\n        }\n        else {\n          if (piVar6 == (int *)piVar7[2]) goto LAB_001fe9d2;\n          piVar7[3] = (int)param_2;\n        }\n      }" (if "if") (parenthesized_expression "(iVar2 == 0)" (( "(") (binary_expression "iVar2 == 0" (identifier "iVar2") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n        param_2[1] = (int)piVar1;\n        piVar7 = piVar1;\n        if (piVar6 == *(int **)(param_4 + 4)) goto LAB_001fe9e0;\nLAB_001fe9d2:\n        piVar7[2] = (int)param_2;\n      }" ({ "{") (expression_statement "param_2[1] = (int)piVar1;" (assignment_expression "param_2[1] = (int)piVar1" (subscript_expression "param_2[1]" (identifier "param_2") ([ "[") (number_literal "1") (] "]")) (= "=") (cast_expression "(int)piVar1" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar1"))) (; ";")) (expression_statement "piVar7 = piVar1;" (assignment_expression "piVar7 = piVar1" (identifier "piVar7") (= "=") (identifier "piVar1")) (; ";")) (if_statement "if (piVar6 == *(int **)(param_4 + 4)) goto LAB_001fe9e0;" (if "if") (parenthesized_expression "(piVar6 == *(int **)(param_4 + 4))" (( "(") (binary_expression "piVar6 == *(int **)(param_4 + 4)" (identifier "piVar6") (== "==") (pointer_expression "*(int **)(param_4 + 4)" (* "*") (cast_expression "(int **)(param_4 + 4)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_4 + 4)" (( "(") (binary_expression "param_4 + 4" (identifier "param_4") (+ "+") (number_literal "4")) () ")"))))) () ")")) (goto_statement "goto LAB_001fe9e0;" (goto "goto") (statement_identifier "LAB_001fe9e0") (; ";"))) (labeled_statement "LAB_001fe9d2:\n        piVar7[2] = (int)param_2;" (statement_identifier "LAB_001fe9d2") (: ":") (expression_statement "piVar7[2] = (int)param_2;" (assignment_expression "piVar7[2] = (int)param_2" (subscript_expression "piVar7[2]" (identifier "piVar7") ([ "[") (number_literal "2") (] "]")) (= "=") (cast_expression "(int)param_2" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_2"))) (; ";"))) (} "}")) (else_clause "else {\n        *(int **)(iVar2 + 4) = piVar6;\n        piVar7 = (int *)piVar6[1];\n        param_2[1] = (int)piVar7;\n        if (piVar6 == *(int **)(param_4 + 4)) {\nLAB_001fe9e0:\n          *(int **)(param_4 + 4) = param_2;\n        }\n        else {\n          if (piVar6 == (int *)piVar7[2]) goto LAB_001fe9d2;\n          piVar7[3] = (int)param_2;\n        }\n      }" (else "else") (compound_statement "{\n        *(int **)(iVar2 + 4) = piVar6;\n        piVar7 = (int *)piVar6[1];\n        param_2[1] = (int)piVar7;\n        if (piVar6 == *(int **)(param_4 + 4)) {\nLAB_001fe9e0:\n          *(int **)(param_4 + 4) = param_2;\n        }\n        else {\n          if (piVar6 == (int *)piVar7[2]) goto LAB_001fe9d2;\n          piVar7[3] = (int)param_2;\n        }\n      }" ({ "{") (expression_statement "*(int **)(iVar2 + 4) = piVar6;" (assignment_expression "*(int **)(iVar2 + 4) = piVar6" (pointer_expression "*(int **)(iVar2 + 4)" (* "*") (cast_expression "(int **)(iVar2 + 4)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar2 + 4)" (( "(") (binary_expression "iVar2 + 4" (identifier "iVar2") (+ "+") (number_literal "4")) () ")")))) (= "=") (identifier "piVar6")) (; ";")) (expression_statement "piVar7 = (int *)piVar6[1];" (assignment_expression "piVar7 = (int *)piVar6[1]" (identifier "piVar7") (= "=") (cast_expression "(int *)piVar6[1]" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "piVar6[1]" (identifier "piVar6") ([ "[") (number_literal "1") (] "]")))) (; ";")) (expression_statement "param_2[1] = (int)piVar7;" (assignment_expression "param_2[1] = (int)piVar7" (subscript_expression "param_2[1]" (identifier "param_2") ([ "[") (number_literal "1") (] "]")) (= "=") (cast_expression "(int)piVar7" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar7"))) (; ";")) (if_statement "if (piVar6 == *(int **)(param_4 + 4)) {\nLAB_001fe9e0:\n          *(int **)(param_4 + 4) = param_2;\n        }\n        else {\n          if (piVar6 == (int *)piVar7[2]) goto LAB_001fe9d2;\n          piVar7[3] = (int)param_2;\n        }" (if "if") (parenthesized_expression "(piVar6 == *(int **)(param_4 + 4))" (( "(") (binary_expression "piVar6 == *(int **)(param_4 + 4)" (identifier "piVar6") (== "==") (pointer_expression "*(int **)(param_4 + 4)" (* "*") (cast_expression "(int **)(param_4 + 4)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_4 + 4)" (( "(") (binary_expression "param_4 + 4" (identifier "param_4") (+ "+") (number_literal "4")) () ")"))))) () ")")) (compound_statement "{\nLAB_001fe9e0:\n          *(int **)(param_4 + 4) = param_2;\n        }" ({ "{") (labeled_statement "LAB_001fe9e0:\n          *(int **)(param_4 + 4) = param_2;" (statement_identifier "LAB_001fe9e0") (: ":") (expression_statement "*(int **)(param_4 + 4) = param_2;" (assignment_expression "*(int **)(param_4 + 4) = param_2" (pointer_expression "*(int **)(param_4 + 4)" (* "*") (cast_expression "(int **)(param_4 + 4)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_4 + 4)" (( "(") (binary_expression "param_4 + 4" (identifier "param_4") (+ "+") (number_literal "4")) () ")")))) (= "=") (identifier "param_2")) (; ";"))) (} "}")) (else_clause "else {\n          if (piVar6 == (int *)piVar7[2]) goto LAB_001fe9d2;\n          piVar7[3] = (int)param_2;\n        }" (else "else") (compound_statement "{\n          if (piVar6 == (int *)piVar7[2]) goto LAB_001fe9d2;\n          piVar7[3] = (int)param_2;\n        }" ({ "{") (if_statement "if (piVar6 == (int *)piVar7[2]) goto LAB_001fe9d2;" (if "if") (parenthesized_expression "(piVar6 == (int *)piVar7[2])" (( "(") (binary_expression "piVar6 == (int *)piVar7[2]" (identifier "piVar6") (== "==") (cast_expression "(int *)piVar7[2]" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "piVar7[2]" (identifier "piVar7") ([ "[") (number_literal "2") (] "]")))) () ")")) (goto_statement "goto LAB_001fe9d2;" (goto "goto") (statement_identifier "LAB_001fe9d2") (; ";"))) (expression_statement "piVar7[3] = (int)param_2;" (assignment_expression "piVar7[3] = (int)param_2" (subscript_expression "piVar7[3]" (identifier "piVar7") ([ "[") (number_literal "3") (] "]")) (= "=") (cast_expression "(int)param_2" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_2"))) (; ";")) (} "}")))) (} "}")))) (expression_statement "param_2[2] = (int)piVar6;" (assignment_expression "param_2[2] = (int)piVar6" (subscript_expression "param_2[2]" (identifier "param_2") ([ "[") (number_literal "2") (] "]")) (= "=") (cast_expression "(int)piVar6" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar6"))) (; ";")) (expression_statement "piVar4 = (int *)piVar1[2];" (assignment_expression "piVar4 = (int *)piVar1[2]" (identifier "piVar4") (= "=") (cast_expression "(int *)piVar1[2]" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "piVar1[2]" (identifier "piVar1") ([ "[") (number_literal "2") (] "]")))) (; ";")) (expression_statement "piVar6[1] = (int)param_2;" (assignment_expression "piVar6[1] = (int)param_2" (subscript_expression "piVar6[1]" (identifier "piVar6") ([ "[") (number_literal "1") (] "]")) (= "=") (cast_expression "(int)param_2" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_2"))) (; ";")) (expression_statement "piVar5 = piVar6;" (assignment_expression "piVar5 = piVar6" (identifier "piVar5") (= "=") (identifier "piVar6")) (; ";")) (expression_statement "piVar6 = param_2;" (assignment_expression "piVar6 = param_2" (identifier "piVar6") (= "=") (identifier "param_2")) (; ";")) (} "}"))) (expression_statement "*piVar6 = 1;" (assignment_expression "*piVar6 = 1" (pointer_expression "*piVar6" (* "*") (identifier "piVar6")) (= "=") (number_literal "1")) (; ";")) (expression_statement "iVar2 = piVar4[3];" (assignment_expression "iVar2 = piVar4[3]" (identifier "iVar2") (= "=") (subscript_expression "piVar4[3]" (identifier "piVar4") ([ "[") (number_literal "3") (] "]"))) (; ";")) (expression_statement "*piVar1 = 0;" (assignment_expression "*piVar1 = 0" (pointer_expression "*piVar1" (* "*") (identifier "piVar1")) (= "=") (number_literal "0")) (; ";")) (expression_statement "piVar1[2] = iVar2;" (assignment_expression "piVar1[2] = iVar2" (subscript_expression "piVar1[2]" (identifier "piVar1") ([ "[") (number_literal "2") (] "]")) (= "=") (identifier "iVar2")) (; ";")) (if_statement "if (iVar2 != 0) {\n      *(int **)(iVar2 + 4) = piVar1;\n    }" (if "if") (parenthesized_expression "(iVar2 != 0)" (( "(") (binary_expression "iVar2 != 0" (identifier "iVar2") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n      *(int **)(iVar2 + 4) = piVar1;\n    }" ({ "{") (expression_statement "*(int **)(iVar2 + 4) = piVar1;" (assignment_expression "*(int **)(iVar2 + 4) = piVar1" (pointer_expression "*(int **)(iVar2 + 4)" (* "*") (cast_expression "(int **)(iVar2 + 4)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar2 + 4)" (( "(") (binary_expression "iVar2 + 4" (identifier "iVar2") (+ "+") (number_literal "4")) () ")")))) (= "=") (identifier "piVar1")) (; ";")) (} "}"))) (expression_statement "iVar2 = piVar1[1];" (assignment_expression "iVar2 = piVar1[1]" (identifier "iVar2") (= "=") (subscript_expression "piVar1[1]" (identifier "piVar1") ([ "[") (number_literal "1") (] "]"))) (; ";")) (expression_statement "piVar4[1] = iVar2;" (assignment_expression "piVar4[1] = iVar2" (subscript_expression "piVar4[1]" (identifier "piVar4") ([ "[") (number_literal "1") (] "]")) (= "=") (identifier "iVar2")) (; ";")) (if_statement "if (piVar1 == *(int **)(param_4 + 4)) {\n      *(int **)(param_4 + 4) = piVar4;\n    }\n    else if (piVar1 == *(int **)(iVar2 + 0xc)) {\n      *(int **)(iVar2 + 0xc) = piVar4;\n    }\n    else {\n      *(int **)(iVar2 + 8) = piVar4;\n    }" (if "if") (parenthesized_expression "(piVar1 == *(int **)(param_4 + 4))" (( "(") (binary_expression "piVar1 == *(int **)(param_4 + 4)" (identifier "piVar1") (== "==") (pointer_expression "*(int **)(param_4 + 4)" (* "*") (cast_expression "(int **)(param_4 + 4)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_4 + 4)" (( "(") (binary_expression "param_4 + 4" (identifier "param_4") (+ "+") (number_literal "4")) () ")"))))) () ")")) (compound_statement "{\n      *(int **)(param_4 + 4) = piVar4;\n    }" ({ "{") (expression_statement "*(int **)(param_4 + 4) = piVar4;" (assignment_expression "*(int **)(param_4 + 4) = piVar4" (pointer_expression "*(int **)(param_4 + 4)" (* "*") (cast_expression "(int **)(param_4 + 4)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_4 + 4)" (( "(") (binary_expression "param_4 + 4" (identifier "param_4") (+ "+") (number_literal "4")) () ")")))) (= "=") (identifier "piVar4")) (; ";")) (} "}")) (else_clause "else if (piVar1 == *(int **)(iVar2 + 0xc)) {\n      *(int **)(iVar2 + 0xc) = piVar4;\n    }\n    else {\n      *(int **)(iVar2 + 8) = piVar4;\n    }" (else "else") (if_statement "if (piVar1 == *(int **)(iVar2 + 0xc)) {\n      *(int **)(iVar2 + 0xc) = piVar4;\n    }\n    else {\n      *(int **)(iVar2 + 8) = piVar4;\n    }" (if "if") (parenthesized_expression "(piVar1 == *(int **)(iVar2 + 0xc))" (( "(") (binary_expression "piVar1 == *(int **)(iVar2 + 0xc)" (identifier "piVar1") (== "==") (pointer_expression "*(int **)(iVar2 + 0xc)" (* "*") (cast_expression "(int **)(iVar2 + 0xc)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar2 + 0xc)" (( "(") (binary_expression "iVar2 + 0xc" (identifier "iVar2") (+ "+") (number_literal "0xc")) () ")"))))) () ")")) (compound_statement "{\n      *(int **)(iVar2 + 0xc) = piVar4;\n    }" ({ "{") (expression_statement "*(int **)(iVar2 + 0xc) = piVar4;" (assignment_expression "*(int **)(iVar2 + 0xc) = piVar4" (pointer_expression "*(int **)(iVar2 + 0xc)" (* "*") (cast_expression "(int **)(iVar2 + 0xc)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar2 + 0xc)" (( "(") (binary_expression "iVar2 + 0xc" (identifier "iVar2") (+ "+") (number_literal "0xc")) () ")")))) (= "=") (identifier "piVar4")) (; ";")) (} "}")) (else_clause "else {\n      *(int **)(iVar2 + 8) = piVar4;\n    }" (else "else") (compound_statement "{\n      *(int **)(iVar2 + 8) = piVar4;\n    }" ({ "{") (expression_statement "*(int **)(iVar2 + 8) = piVar4;" (assignment_expression "*(int **)(iVar2 + 8) = piVar4" (pointer_expression "*(int **)(iVar2 + 8)" (* "*") (cast_expression "(int **)(iVar2 + 8)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar2 + 8)" (( "(") (binary_expression "iVar2 + 8" (identifier "iVar2") (+ "+") (number_literal "8")) () ")")))) (= "=") (identifier "piVar4")) (; ";")) (} "}")))))) (expression_statement "piVar4[3] = (int)piVar1;" (assignment_expression "piVar4[3] = (int)piVar1" (subscript_expression "piVar4[3]" (identifier "piVar4") ([ "[") (number_literal "3") (] "]")) (= "=") (cast_expression "(int)piVar1" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar1"))) (; ";")) (expression_statement "piVar1[1] = (int)piVar4;" (assignment_expression "piVar1[1] = (int)piVar4" (subscript_expression "piVar1[1]" (identifier "piVar1") ([ "[") (number_literal "1") (] "]")) (= "=") (cast_expression "(int)piVar4" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar4"))) (; ";")) (expression_statement "piVar7 = *(int **)(param_4 + 4);" (assignment_expression "piVar7 = *(int **)(param_4 + 4)" (identifier "piVar7") (= "=") (pointer_expression "*(int **)(param_4 + 4)" (* "*") (cast_expression "(int **)(param_4 + 4)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_4 + 4)" (( "(") (binary_expression "param_4 + 4" (identifier "param_4") (+ "+") (number_literal "4")) () ")"))))) (; ";")) (expression_statement "param_2 = piVar5;" (assignment_expression "param_2 = piVar5" (identifier "param_2") (= "=") (identifier "piVar5")) (; ";")) (} "}")) (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (; ";"))) (} "}")))

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

void std::function_1
               (bool param_1,type_1 *var_3,type_1 *var_2,
               type_1 *var_1)

{
  type_2 var_10;
  type_1 *var_7;
  type_1 *p_Var3;
  type_1 *var_6;
  type_2 var_9;
  type_2 var_8;
  type_1 *var_4;
  
  var_3->_M_parent = var_2;
  var_3->_M_left = (type_2)0x0;
  var_3->_M_right = (type_2)0x0;
  var_3->_M_color = var_5;
  if (param_1) {
    var_2->_M_left = var_3;
    if (var_1 == var_2) {
      var_1->_M_parent = var_3;
      var_1->_M_right = var_3;
      var_3->_M_color = _S_black;
      return;
    }
    if (var_1->_M_left == var_2) {
      var_1->_M_left = var_3;
      var_4 = var_1->_M_parent;
      goto joined_r0x001fe792;
    }
  }
  else {
    var_2->_M_right = var_3;
    if (var_1->_M_right == var_2) {
      var_1->_M_right = var_3;
    }
  }
  var_4 = var_1->_M_parent;
joined_r0x001fe792:
  do {
    while( true ) {
      while( true ) {
        if ((var_3 == var_4) || (var_6 = var_3->_M_parent, var_6->_M_color != var_5)) {
          var_4->_M_color = _S_black;
          return;
        }
        var_10 = var_6->_M_parent;
        var_7 = var_10->_M_left;
        if (var_6 == var_7) break;
        if ((var_7 == (type_1 *)0x0) || (var_7->_M_color != var_5)) {
          var_7 = var_3;
          if (var_6->_M_left == var_3) {
            var_8 = var_3->_M_right;
            var_6->_M_left = var_8;
            var_9 = var_10;
            if (var_8 != (type_2)0x0) {
              var_8->_M_parent = var_6;
              var_9 = var_6->_M_parent;
            }
            var_3->_M_parent = var_9;
            if (var_6 == var_1->_M_parent) {
              var_1->_M_parent = var_3;
            }
            else if (var_6 == var_9->_M_right) {
              var_9->_M_right = var_3;
            }
            else {
              var_9->_M_left = var_3;
            }
            var_3->_M_right = var_6;
            var_6->_M_parent = var_3;
            var_7 = var_6;
            var_6 = var_3;
          }
          var_6->_M_color = _S_black;
          var_8 = var_10->_M_right;
          var_10->_M_color = var_5;
          var_9 = var_8->_M_left;
          var_10->_M_right = var_9;
          if (var_9 != (type_2)0x0) {
            var_9->_M_parent = var_10;
          }
          var_9 = var_10->_M_parent;
          var_8->_M_parent = var_9;
          if (var_10 == var_1->_M_parent) {
            var_1->_M_parent = var_8;
          }
          else if (var_10 == var_9->_M_left) {
            var_9->_M_left = var_8;
          }
          else {
            var_9->_M_right = var_8;
          }
          var_8->_M_left = var_10;
          var_10->_M_parent = var_8;
          var_4 = var_1->_M_parent;
          var_3 = var_7;
        }
        else {
          var_6->_M_color = _S_black;
          var_7->_M_color = _S_black;
          var_10->_M_color = var_5;
          var_3 = var_10;
        }
      }
      var_8 = var_10->_M_right;
      if ((var_8 == (type_2)0x0) || (var_8->_M_color != var_5)) break;
      var_6->_M_color = _S_black;
      var_8->_M_color = _S_black;
      var_10->_M_color = var_5;
      var_3 = var_10;
    }
    p_Var3 = var_3;
    if (var_6->_M_right == var_3) {
      var_8 = var_3->_M_left;
      var_6->_M_right = var_8;
      if (var_8 == (type_2)0x0) {
        var_3->_M_parent = var_10;
        var_8 = var_10;
        if (var_6 == var_1->_M_parent) goto LAB_001fe9e0;
LAB_001fe9d2:
        var_8->_M_left = var_3;
      }
      else {
        var_8->_M_parent = var_6;
        var_8 = var_6->_M_parent;
        var_3->_M_parent = var_8;
        if (var_6 == var_1->_M_parent) {
LAB_001fe9e0:
          var_1->_M_parent = var_3;
        }
        else {
          if (var_6 == var_8->_M_left) goto LAB_001fe9d2;
          var_8->_M_right = var_3;
        }
      }
      var_3->_M_left = var_6;
      var_7 = var_10->_M_left;
      var_6->_M_parent = var_3;
      p_Var3 = var_6;
      var_6 = var_3;
    }
    var_6->_M_color = _S_black;
    var_8 = var_7->_M_right;
    var_10->_M_color = var_5;
    var_10->_M_left = var_8;
    if (var_8 != (type_2)0x0) {
      var_8->_M_parent = var_10;
    }
    var_8 = var_10->_M_parent;
    var_7->_M_parent = var_8;
    if (var_10 == var_1->_M_parent) {
      var_1->_M_parent = var_7;
    }
    else if (var_10 == var_8->_M_right) {
      var_8->_M_right = var_7;
    }
    else {
      var_8->_M_left = var_7;
    }
    var_7->_M_right = var_10;
    var_10->_M_parent = var_7;
    var_4 = var_1->_M_parent;
    var_3 = p_Var3;
  } while( true );
}


(translation_unit (function_definition type: (primitive_type) declarator: (function_declarator declarator: (identifier) parameters: (parameter_list (parameter_declaration type: (primitive_type) declarator: (identifier)) (parameter_declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (parameter_declaration type: (primitive_type) declarator: (identifier)) (parameter_declaration type: (primitive_type) declarator: (identifier)))) body: (compound_statement (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (number_literal))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (char_literal (escape_sequence)))) 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))) (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (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: (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: (pointer_expression argument: (identifier)) right: (number_literal))) (return_statement))) (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (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: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (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) (do_statement body: (compound_statement (while_statement condition: (parenthesized_expression (true)) body: (compound_statement (while_statement condition: (parenthesized_expression (true)) body: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) right: (parenthesized_expression (comma_expression left: (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (subscript_expression argument: (identifier) index: (number_literal)))) right: (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))) (return_statement))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (subscript_expression argument: (identifier) index: (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (subscript_expression argument: (identifier) index: (number_literal))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (break_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: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (subscript_expression argument: (identifier) index: (number_literal))) right: (identifier))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier))) (expression_statement (assignment_expression left: (identifier) 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: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (subscript_expression argument: (identifier) index: (number_literal))))))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (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: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (subscript_expression argument: (identifier) index: (number_literal))))) consequence: (compound_statement (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier))))))))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (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)) 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)) 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)) 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: (subscript_expression argument: (identifier) index: (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: (identifier)))) alternative: (else_clause (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: (identifier)) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (identifier)))))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (subscript_expression argument: (identifier) index: (number_literal))))) (if_statement condition: (parenthesized_expression (binary_expression left: (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: (break_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: (identifier)) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (subscript_expression argument: (identifier) index: (number_literal))) right: (identifier))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (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: (goto_statement label: (statement_identifier))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (subscript_expression argument: (identifier) index: (number_literal))))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)))) (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 (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))))) 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: (subscript_expression argument: (identifier) index: (number_literal))))) consequence: (goto_statement label: (statement_identifier))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)))))))))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (subscript_expression argument: (identifier) index: (number_literal))))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (number_literal))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) consequence: (compound_statement (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier)))) alternative: (else_clause (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) consequence: (compound_statement (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier)))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier)))))))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (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(char param_1,int *param_2,int param_3,int param_4)

{
  int *piVar1;
  int iVar2;
  int iVar3;
  int *piVar4;
  int *piVar5;
  int *piVar6;
  int *piVar7;
  
  param_2[1] = param_3;
  param_2[2] = 0;
  param_2[3] = 0;
  *param_2 = 0;
  if (param_1 == '\0') {
    *(int **)(param_3 + 0xc) = param_2;
    if (*(int *)(param_4 + 0xc) == param_3) {
      *(int **)(param_4 + 0xc) = param_2;
    }
  }
  else {
    *(int **)(param_3 + 8) = param_2;
    if (param_4 == param_3) {
      *(int **)(param_4 + 4) = param_2;
      *(int **)(param_4 + 0xc) = param_2;
      *param_2 = 1;
      return;
    }
    if (*(int *)(param_4 + 8) == param_3) {
      *(int **)(param_4 + 8) = param_2;
      piVar7 = *(int **)(param_4 + 4);
      goto joined_r0x001fe792;
    }
  }
  piVar7 = *(int **)(param_4 + 4);
joined_r0x001fe792:
  do {
    while( true ) {
      while( true ) {
        if ((param_2 == piVar7) || (piVar6 = (int *)param_2[1], *piVar6 != 0)) {
          *piVar7 = 1;
          return;
        }
        piVar1 = (int *)piVar6[1];
        piVar4 = (int *)piVar1[2];
        if (piVar6 == piVar4) break;
        if ((piVar4 == (int *)0x0) || (*piVar4 != 0)) {
          piVar4 = param_2;
          if ((int *)piVar6[2] == param_2) {
            iVar2 = param_2[3];
            piVar6[2] = iVar2;
            piVar7 = piVar1;
            if (iVar2 != 0) {
              *(int **)(iVar2 + 4) = piVar6;
              piVar7 = (int *)piVar6[1];
            }
            param_2[1] = (int)piVar7;
            if (piVar6 == *(int **)(param_4 + 4)) {
              *(int **)(param_4 + 4) = param_2;
            }
            else if (piVar6 == (int *)piVar7[3]) {
              piVar7[3] = (int)param_2;
            }
            else {
              piVar7[2] = (int)param_2;
            }
            param_2[3] = (int)piVar6;
            piVar6[1] = (int)param_2;
            piVar4 = piVar6;
            piVar6 = param_2;
          }
          *piVar6 = 1;
          iVar2 = piVar1[3];
          *piVar1 = 0;
          iVar3 = *(int *)(iVar2 + 8);
          piVar1[3] = iVar3;
          if (iVar3 != 0) {
            *(int **)(iVar3 + 4) = piVar1;
          }
          iVar3 = piVar1[1];
          *(int *)(iVar2 + 4) = iVar3;
          if (piVar1 == *(int **)(param_4 + 4)) {
            *(int *)(param_4 + 4) = iVar2;
          }
          else if (piVar1 == *(int **)(iVar3 + 8)) {
            *(int *)(iVar3 + 8) = iVar2;
          }
          else {
            *(int *)(iVar3 + 0xc) = iVar2;
          }
          *(int **)(iVar2 + 8) = piVar1;
          piVar1[1] = iVar2;
          piVar7 = *(int **)(param_4 + 4);
          param_2 = piVar4;
        }
        else {
          *piVar6 = 1;
          *piVar4 = 1;
          *piVar1 = 0;
          param_2 = piVar1;
        }
      }
      piVar5 = (int *)piVar1[3];
      if ((piVar5 == (int *)0x0) || (*piVar5 != 0)) break;
      *piVar6 = 1;
      *piVar5 = 1;
      *piVar1 = 0;
      param_2 = piVar1;
    }
    piVar5 = param_2;
    if ((int *)piVar6[3] == param_2) {
      iVar2 = param_2[2];
      piVar6[3] = iVar2;
      if (iVar2 == 0) {
        param_2[1] = (int)piVar1;
        piVar7 = piVar1;
        if (piVar6 == *(int **)(param_4 + 4)) goto LAB_001fe9e0;
LAB_001fe9d2:
        piVar7[2] = (int)param_2;
      }
      else {
        *(int **)(iVar2 + 4) = piVar6;
        piVar7 = (int *)piVar6[1];
        param_2[1] = (int)piVar7;
        if (piVar6 == *(int **)(param_4 + 4)) {
LAB_001fe9e0:
          *(int **)(param_4 + 4) = param_2;
        }
        else {
          if (piVar6 == (int *)piVar7[2]) goto LAB_001fe9d2;
          piVar7[3] = (int)param_2;
        }
      }
      param_2[2] = (int)piVar6;
      piVar4 = (int *)piVar1[2];
      piVar6[1] = (int)param_2;
      piVar5 = piVar6;
      piVar6 = param_2;
    }
    *piVar6 = 1;
    iVar2 = piVar4[3];
    *piVar1 = 0;
    piVar1[2] = iVar2;
    if (iVar2 != 0) {
      *(int **)(iVar2 + 4) = piVar1;
    }
    iVar2 = piVar1[1];
    piVar4[1] = iVar2;
    if (piVar1 == *(int **)(param_4 + 4)) {
      *(int **)(param_4 + 4) = piVar4;
    }
    else if (piVar1 == *(int **)(iVar2 + 0xc)) {
      *(int **)(iVar2 + 0xc) = piVar4;
    }
    else {
      *(int **)(iVar2 + 8) = piVar4;
    }
    piVar4[3] = (int)piVar1;
    piVar1[1] = (int)piVar4;
    piVar7 = *(int **)(param_4 + 4);
    param_2 = piVar5;
  } while( true );
}

