
RowSetEntry * rowSetEntryMerge(RowSetEntry *pA,RowSetEntry *pB)

{
  int iVar1;
  int iVar2;
  RowSetEntry *pRVar3;
  RowSetEntry **ppFirst;
  RowSetEntry *pRVar4;
  RowSetEntry **ppLast;
  RowSetEntry *pRVar5;
  uint uVar6;
  uint uVar7;
  undefined4 *puVar8;
  undefined *puVar9;
  RowSetEntry *pRStack_50;
  RowSetEntry *pRStack_4c;
  RowSetEntry head;
  
  puVar9 = PTR___stack_chk_guard_000f5568;
  iVar2 = *(int *)&pA->v;
  uVar6 = (uint)pA->v;
  iVar1 = *(int *)&pB->v;
  pRVar4 = *(RowSetEntry **)PTR___stack_chk_guard_000f5568;
  uVar7 = (uint)pB->v;
  pRVar3 = &head;
  do {
    while ((iVar1 < iVar2 || ((iVar2 == iVar1 && (uVar7 < uVar6))))) {
      pRVar3->pRight = pB;
      pRVar5 = pB->pRight;
      if (pRVar5 == (RowSetEntry *)0x0) {
        pB->pRight = pA;
        ppLast = (RowSetEntry **)0x0;
LAB_0002153c:
        if (pRVar4 == *(RowSetEntry **)puVar9) {
          return head.pRight;
        }
        puVar9 = PTR___stack_chk_fail_000f5540;
        (*(code *)PTR___stack_chk_fail_000f5540)();
        puVar8 = *(undefined4 **)(puVar9 + 0xd3ffc);
        pRStack_4c = (RowSetEntry *)*puVar8;
        if (pRVar4->pLeft == (RowSetEntry *)0x0) {
          *(RowSetEntry **)&pB->v = pRVar4;
          pRVar3 = pRVar4->pRight;
        }
        else {
          rowSetTreeToList(pRVar4->pLeft,(RowSetEntry **)pB,&pRStack_50);
          pRStack_50->pRight = pRVar4;
          pRVar3 = pRVar4->pRight;
        }
        if (pRVar3 == (RowSetEntry *)0x0) {
          ppFirst = &pRVar4->pRight;
          *ppLast = pRVar4;
        }
        else {
          ppFirst = &pRVar4->pRight;
          rowSetTreeToList(pRVar3,ppFirst,ppLast);
        }
        pRVar4 = (RowSetEntry *)*puVar8;
        if (pRStack_4c != pRVar4) {
          (**(code **)(puVar9 + 0xd3fd4))();
          pRVar4 = *(RowSetEntry **)&pRVar3->v;
          if (pRVar4 == (RowSetEntry *)0x0) {
            return (RowSetEntry *)0x0;
          }
          if (ppFirst == (RowSetEntry **)0x1) {
            *(RowSetEntry **)&pRVar3->v = pRVar4->pRight;
            pRVar4->pRight = (RowSetEntry *)0x0;
            pRVar4->pLeft = (RowSetEntry *)0x0;
          }
          else {
            pRVar4 = rowSetNDeepTree((RowSetEntry **)pRVar3,(int)ppFirst + -1);
            pRVar5 = *(RowSetEntry **)&pRVar3->v;
            if (pRVar5 != (RowSetEntry *)0x0) {
              pRVar5->pLeft = pRVar4;
              *(RowSetEntry **)&pRVar3->v = pRVar5->pRight;
              pRVar3 = rowSetNDeepTree((RowSetEntry **)pRVar3,(int)((int)ppFirst + -1));
              pRVar5->pRight = pRVar3;
              pRVar4 = pRVar5;
            }
          }
          return pRVar4;
        }
        return pRVar4;
      }
      iVar1 = *(int *)&pRVar5->v;
      pRVar3 = pB;
      pB = pRVar5;
      uVar7 = (uint)pRVar5->v;
    }
    ppLast = (RowSetEntry **)(uint)(iVar2 < iVar1);
    if ((ppLast == (RowSetEntry **)0x0) && ((iVar1 != iVar2 || (uVar7 <= uVar6)))) {
      pRVar5 = pA->pRight;
    }
    else {
      pRVar3->pRight = pA;
      pRVar5 = pA->pRight;
      pRVar3 = pA;
    }
    pA = pRVar5;
    if (pA == (RowSetEntry *)0x0) {
      pRVar3->pRight = pB;
      goto LAB_0002153c;
    }
    iVar2 = *(int *)&pA->v;
    uVar6 = (uint)pA->v;
  } while( true );
}



int FUN_00021478(int *param_1,int *param_2)

{
  int iVar1;
  undefined4 uVar2;
  int iVar3;
  int *piVar4;
  int iVar5;
  int *piVar6;
  uint uVar7;
  uint uVar8;
  int *piVar9;
  undefined *puVar10;
  int iStack_50;
  int aiStack_20 [2];
  int local_18;
  int local_c;
  
  puVar10 = PTR___stack_chk_guard_000f5568;
  iVar3 = *param_1;
  uVar7 = param_1[1];
  iVar1 = *param_2;
  local_c = *(int *)PTR___stack_chk_guard_000f5568;
  uVar8 = param_2[1];
  piVar9 = aiStack_20;
  do {
    while ((iVar1 < iVar3 || ((iVar3 == iVar1 && (uVar8 < uVar7))))) {
      piVar9[2] = (int)param_2;
      piVar6 = (int *)param_2[2];
      if (piVar6 == (int *)0x0) {
        param_2[2] = (int)param_1;
        piVar6 = (int *)0x0;
LAB_0002153c:
        if (local_c == *(int *)puVar10) {
          return local_18;
        }
        iVar3 = local_c;
        puVar10 = PTR___stack_chk_fail_000f5540;
        (*(code *)PTR___stack_chk_fail_000f5540)();
        piVar9 = *(int **)(puVar10 + 0xd3ffc);
        iVar1 = *piVar9;
        if (*(int *)(iVar3 + 0xc) == 0) {
          *param_2 = iVar3;
          piVar4 = *(int **)(iVar3 + 8);
        }
        else {
          FUN_0002156c();
          *(int *)(iStack_50 + 8) = iVar3;
          piVar4 = *(int **)(iVar3 + 8);
        }
        if (piVar4 == (int *)0x0) {
          iVar5 = iVar3 + 8;
          *piVar6 = iVar3;
        }
        else {
          iVar5 = iVar3 + 8;
          FUN_0002156c(piVar4,iVar5,piVar6);
        }
        iVar3 = *piVar9;
        if (iVar1 != iVar3) {
          (**(code **)(puVar10 + 0xd3fd4))();
          iVar3 = *piVar4;
          if (iVar3 == 0) {
            return 0;
          }
          if (iVar5 == 1) {
            *piVar4 = *(int *)(iVar3 + 8);
            *(undefined4 *)(iVar3 + 8) = 0;
            *(undefined4 *)(iVar3 + 0xc) = 0;
          }
          else {
            iVar3 = FUN_00021630();
            iVar1 = *piVar4;
            if (iVar1 != 0) {
              *(int *)(iVar1 + 0xc) = iVar3;
              *piVar4 = *(int *)(iVar1 + 8);
              uVar2 = FUN_00021630(piVar4,iVar5 + -1);
              *(undefined4 *)(iVar1 + 8) = uVar2;
              iVar3 = iVar1;
            }
          }
          return iVar3;
        }
        return iVar3;
      }
      iVar1 = *piVar6;
      piVar9 = param_2;
      param_2 = piVar6;
      uVar8 = piVar6[1];
    }
    piVar6 = (int *)(uint)(iVar3 < iVar1);
    if ((piVar6 == (int *)0x0) && ((iVar1 != iVar3 || (uVar8 <= uVar7)))) {
      piVar4 = (int *)param_1[2];
    }
    else {
      piVar9[2] = (int)param_1;
      piVar4 = (int *)param_1[2];
      piVar9 = param_1;
    }
    param_1 = piVar4;
    if (param_1 == (int *)0x0) {
      piVar9[2] = (int)param_2;
      goto LAB_0002153c;
    }
    iVar3 = *param_1;
    uVar7 = param_1[1];
  } while( true );
}


lui gp,0xe
addiu gp,gp,-0x41d8
addu gp,gp,t9
lw t2,-0x7d38(gp)
addiu sp,sp,-0x38
lw v1,0x0(a0)
lw t0,0x4(a0)
addiu a3,sp,0x18
lw v0,0x0(a1)
lw a2,0x0(t2)
lw t1,0x4(a1)
sw gp,0x10(sp)
sw ra,0x34(sp)
sw a2,0x2c(sp)
slt a2,v0,v1
bne a2,zero,0x00021504
_nop
bne v1,v0,0x000214d0
_slt a2,v1,v0
sltu a2,t1,t0
bne a2,zero,0x00021504
_slt a2,v1,v0
bne a2,zero,0x00021524
_nop
bne v0,v1,0x000214e8
_sltu t0,t0,t1
bne t0,zero,0x00021524
_nop
lw a0,0x8(a0)
beq a0,zero,0x00021538
_nop
lw v1,0x0(a0)
slt a2,v0,v1
beq a2,zero,0x000214bc
_lw t0,0x4(a0)
sw a1,0x8(a3)
lw a2,0x8(a1)
beq a2,zero,0x00021558
_or a3,a1,zero
lw v0,0x0(a2)
lw t1,0x4(a2)
b 0x000214b0
_or a1,a2,zero
sw a0,0x8(a3)
or a3,a0,zero
lw a0,0x8(a0)
bne a0,zero,0x000214f4
_nop
sw a1,0x8(a3)
lw a0,0x2c(sp)
lw v1,0x0(t2)
bne a0,v1,0x00021560
_lw v0,0x20(sp)
lw ra,0x34(sp)
jr ra
_addiu sp,sp,0x38
b 0x0002153c
_sw a0,0x8(a1)
lw t9,-0x7d60(gp)
jalr t9
_nop
(translation_unit "int FUN_00021478(int *param_1,int *param_2)\n\n{\n  int iVar1;\n  undefined4 uVar2;\n  int iVar3;\n  int *piVar4;\n  int iVar5;\n  int *piVar6;\n  uint uVar7;\n  uint uVar8;\n  int *piVar9;\n  undefined *puVar10;\n  int iStack_50;\n  int aiStack_20 [2];\n  int local_18;\n  int local_c;\n  \n  puVar10 = PTR___stack_chk_guard_000f5568;\n  iVar3 = *param_1;\n  uVar7 = param_1[1];\n  iVar1 = *param_2;\n  local_c = *(int *)PTR___stack_chk_guard_000f5568;\n  uVar8 = param_2[1];\n  piVar9 = aiStack_20;\n  do {\n    while ((iVar1 < iVar3 || ((iVar3 == iVar1 && (uVar8 < uVar7))))) {\n      piVar9[2] = (int)param_2;\n      piVar6 = (int *)param_2[2];\n      if (piVar6 == (int *)0x0) {\n        param_2[2] = (int)param_1;\n        piVar6 = (int *)0x0;\nLAB_0002153c:\n        if (local_c == *(int *)puVar10) {\n          return local_18;\n        }\n        iVar3 = local_c;\n        puVar10 = PTR___stack_chk_fail_000f5540;\n        (*(code *)PTR___stack_chk_fail_000f5540)();\n        piVar9 = *(int **)(puVar10 + 0xd3ffc);\n        iVar1 = *piVar9;\n        if (*(int *)(iVar3 + 0xc) == 0) {\n          *param_2 = iVar3;\n          piVar4 = *(int **)(iVar3 + 8);\n        }\n        else {\n          FUN_0002156c();\n          *(int *)(iStack_50 + 8) = iVar3;\n          piVar4 = *(int **)(iVar3 + 8);\n        }\n        if (piVar4 == (int *)0x0) {\n          iVar5 = iVar3 + 8;\n          *piVar6 = iVar3;\n        }\n        else {\n          iVar5 = iVar3 + 8;\n          FUN_0002156c(piVar4,iVar5,piVar6);\n        }\n        iVar3 = *piVar9;\n        if (iVar1 != iVar3) {\n          (**(code **)(puVar10 + 0xd3fd4))();\n          iVar3 = *piVar4;\n          if (iVar3 == 0) {\n            return 0;\n          }\n          if (iVar5 == 1) {\n            *piVar4 = *(int *)(iVar3 + 8);\n            *(undefined4 *)(iVar3 + 8) = 0;\n            *(undefined4 *)(iVar3 + 0xc) = 0;\n          }\n          else {\n            iVar3 = FUN_00021630();\n            iVar1 = *piVar4;\n            if (iVar1 != 0) {\n              *(int *)(iVar1 + 0xc) = iVar3;\n              *piVar4 = *(int *)(iVar1 + 8);\n              uVar2 = FUN_00021630(piVar4,iVar5 + -1);\n              *(undefined4 *)(iVar1 + 8) = uVar2;\n              iVar3 = iVar1;\n            }\n          }\n          return iVar3;\n        }\n        return iVar3;\n      }\n      iVar1 = *piVar6;\n      piVar9 = param_2;\n      param_2 = piVar6;\n      uVar8 = piVar6[1];\n    }\n    piVar6 = (int *)(uint)(iVar3 < iVar1);\n    if ((piVar6 == (int *)0x0) && ((iVar1 != iVar3 || (uVar8 <= uVar7)))) {\n      piVar4 = (int *)param_1[2];\n    }\n    else {\n      piVar9[2] = (int)param_1;\n      piVar4 = (int *)param_1[2];\n      piVar9 = param_1;\n    }\n    param_1 = piVar4;\n    if (param_1 == (int *)0x0) {\n      piVar9[2] = (int)param_2;\n      goto LAB_0002153c;\n    }\n    iVar3 = *param_1;\n    uVar7 = param_1[1];\n  } while( true );\n}\n\n" (function_definition "int FUN_00021478(int *param_1,int *param_2)\n\n{\n  int iVar1;\n  undefined4 uVar2;\n  int iVar3;\n  int *piVar4;\n  int iVar5;\n  int *piVar6;\n  uint uVar7;\n  uint uVar8;\n  int *piVar9;\n  undefined *puVar10;\n  int iStack_50;\n  int aiStack_20 [2];\n  int local_18;\n  int local_c;\n  \n  puVar10 = PTR___stack_chk_guard_000f5568;\n  iVar3 = *param_1;\n  uVar7 = param_1[1];\n  iVar1 = *param_2;\n  local_c = *(int *)PTR___stack_chk_guard_000f5568;\n  uVar8 = param_2[1];\n  piVar9 = aiStack_20;\n  do {\n    while ((iVar1 < iVar3 || ((iVar3 == iVar1 && (uVar8 < uVar7))))) {\n      piVar9[2] = (int)param_2;\n      piVar6 = (int *)param_2[2];\n      if (piVar6 == (int *)0x0) {\n        param_2[2] = (int)param_1;\n        piVar6 = (int *)0x0;\nLAB_0002153c:\n        if (local_c == *(int *)puVar10) {\n          return local_18;\n        }\n        iVar3 = local_c;\n        puVar10 = PTR___stack_chk_fail_000f5540;\n        (*(code *)PTR___stack_chk_fail_000f5540)();\n        piVar9 = *(int **)(puVar10 + 0xd3ffc);\n        iVar1 = *piVar9;\n        if (*(int *)(iVar3 + 0xc) == 0) {\n          *param_2 = iVar3;\n          piVar4 = *(int **)(iVar3 + 8);\n        }\n        else {\n          FUN_0002156c();\n          *(int *)(iStack_50 + 8) = iVar3;\n          piVar4 = *(int **)(iVar3 + 8);\n        }\n        if (piVar4 == (int *)0x0) {\n          iVar5 = iVar3 + 8;\n          *piVar6 = iVar3;\n        }\n        else {\n          iVar5 = iVar3 + 8;\n          FUN_0002156c(piVar4,iVar5,piVar6);\n        }\n        iVar3 = *piVar9;\n        if (iVar1 != iVar3) {\n          (**(code **)(puVar10 + 0xd3fd4))();\n          iVar3 = *piVar4;\n          if (iVar3 == 0) {\n            return 0;\n          }\n          if (iVar5 == 1) {\n            *piVar4 = *(int *)(iVar3 + 8);\n            *(undefined4 *)(iVar3 + 8) = 0;\n            *(undefined4 *)(iVar3 + 0xc) = 0;\n          }\n          else {\n            iVar3 = FUN_00021630();\n            iVar1 = *piVar4;\n            if (iVar1 != 0) {\n              *(int *)(iVar1 + 0xc) = iVar3;\n              *piVar4 = *(int *)(iVar1 + 8);\n              uVar2 = FUN_00021630(piVar4,iVar5 + -1);\n              *(undefined4 *)(iVar1 + 8) = uVar2;\n              iVar3 = iVar1;\n            }\n          }\n          return iVar3;\n        }\n        return iVar3;\n      }\n      iVar1 = *piVar6;\n      piVar9 = param_2;\n      param_2 = piVar6;\n      uVar8 = piVar6[1];\n    }\n    piVar6 = (int *)(uint)(iVar3 < iVar1);\n    if ((piVar6 == (int *)0x0) && ((iVar1 != iVar3 || (uVar8 <= uVar7)))) {\n      piVar4 = (int *)param_1[2];\n    }\n    else {\n      piVar9[2] = (int)param_1;\n      piVar4 = (int *)param_1[2];\n      piVar9 = param_1;\n    }\n    param_1 = piVar4;\n    if (param_1 == (int *)0x0) {\n      piVar9[2] = (int)param_2;\n      goto LAB_0002153c;\n    }\n    iVar3 = *param_1;\n    uVar7 = param_1[1];\n  } while( true );\n}" primitive_type (function_declarator "FUN_00021478(int *param_1,int *param_2)" identifier (parameter_list "(int *param_1,int *param_2)" ( (parameter_declaration "int *param_1" primitive_type (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "int *param_2" primitive_type (pointer_declarator "*param_2" * identifier)) ))) (compound_statement "{\n  int iVar1;\n  undefined4 uVar2;\n  int iVar3;\n  int *piVar4;\n  int iVar5;\n  int *piVar6;\n  uint uVar7;\n  uint uVar8;\n  int *piVar9;\n  undefined *puVar10;\n  int iStack_50;\n  int aiStack_20 [2];\n  int local_18;\n  int local_c;\n  \n  puVar10 = PTR___stack_chk_guard_000f5568;\n  iVar3 = *param_1;\n  uVar7 = param_1[1];\n  iVar1 = *param_2;\n  local_c = *(int *)PTR___stack_chk_guard_000f5568;\n  uVar8 = param_2[1];\n  piVar9 = aiStack_20;\n  do {\n    while ((iVar1 < iVar3 || ((iVar3 == iVar1 && (uVar8 < uVar7))))) {\n      piVar9[2] = (int)param_2;\n      piVar6 = (int *)param_2[2];\n      if (piVar6 == (int *)0x0) {\n        param_2[2] = (int)param_1;\n        piVar6 = (int *)0x0;\nLAB_0002153c:\n        if (local_c == *(int *)puVar10) {\n          return local_18;\n        }\n        iVar3 = local_c;\n        puVar10 = PTR___stack_chk_fail_000f5540;\n        (*(code *)PTR___stack_chk_fail_000f5540)();\n        piVar9 = *(int **)(puVar10 + 0xd3ffc);\n        iVar1 = *piVar9;\n        if (*(int *)(iVar3 + 0xc) == 0) {\n          *param_2 = iVar3;\n          piVar4 = *(int **)(iVar3 + 8);\n        }\n        else {\n          FUN_0002156c();\n          *(int *)(iStack_50 + 8) = iVar3;\n          piVar4 = *(int **)(iVar3 + 8);\n        }\n        if (piVar4 == (int *)0x0) {\n          iVar5 = iVar3 + 8;\n          *piVar6 = iVar3;\n        }\n        else {\n          iVar5 = iVar3 + 8;\n          FUN_0002156c(piVar4,iVar5,piVar6);\n        }\n        iVar3 = *piVar9;\n        if (iVar1 != iVar3) {\n          (**(code **)(puVar10 + 0xd3fd4))();\n          iVar3 = *piVar4;\n          if (iVar3 == 0) {\n            return 0;\n          }\n          if (iVar5 == 1) {\n            *piVar4 = *(int *)(iVar3 + 8);\n            *(undefined4 *)(iVar3 + 8) = 0;\n            *(undefined4 *)(iVar3 + 0xc) = 0;\n          }\n          else {\n            iVar3 = FUN_00021630();\n            iVar1 = *piVar4;\n            if (iVar1 != 0) {\n              *(int *)(iVar1 + 0xc) = iVar3;\n              *piVar4 = *(int *)(iVar1 + 8);\n              uVar2 = FUN_00021630(piVar4,iVar5 + -1);\n              *(undefined4 *)(iVar1 + 8) = uVar2;\n              iVar3 = iVar1;\n            }\n          }\n          return iVar3;\n        }\n        return iVar3;\n      }\n      iVar1 = *piVar6;\n      piVar9 = param_2;\n      param_2 = piVar6;\n      uVar8 = piVar6[1];\n    }\n    piVar6 = (int *)(uint)(iVar3 < iVar1);\n    if ((piVar6 == (int *)0x0) && ((iVar1 != iVar3 || (uVar8 <= uVar7)))) {\n      piVar4 = (int *)param_1[2];\n    }\n    else {\n      piVar9[2] = (int)param_1;\n      piVar4 = (int *)param_1[2];\n      piVar9 = param_1;\n    }\n    param_1 = piVar4;\n    if (param_1 == (int *)0x0) {\n      piVar9[2] = (int)param_2;\n      goto LAB_0002153c;\n    }\n    iVar3 = *param_1;\n    uVar7 = param_1[1];\n  } while( true );\n}" { (declaration "int iVar1;" primitive_type identifier ;) (declaration "undefined4 uVar2;" type_identifier identifier ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "int *piVar4;" primitive_type (pointer_declarator "*piVar4" * identifier) ;) (declaration "int iVar5;" primitive_type identifier ;) (declaration "int *piVar6;" primitive_type (pointer_declarator "*piVar6" * identifier) ;) (declaration "uint uVar7;" type_identifier identifier ;) (declaration "uint uVar8;" type_identifier identifier ;) (declaration "int *piVar9;" primitive_type (pointer_declarator "*piVar9" * identifier) ;) (declaration "undefined *puVar10;" type_identifier (pointer_declarator "*puVar10" * identifier) ;) (declaration "int iStack_50;" primitive_type identifier ;) (declaration "int aiStack_20 [2];" primitive_type (array_declarator "aiStack_20 [2]" identifier [ number_literal ]) ;) (declaration "int local_18;" primitive_type identifier ;) (declaration "int local_c;" primitive_type identifier ;) (expression_statement "puVar10 = PTR___stack_chk_guard_000f5568;" (assignment_expression "puVar10 = PTR___stack_chk_guard_000f5568" identifier = identifier) ;) (expression_statement "iVar3 = *param_1;" (assignment_expression "iVar3 = *param_1" identifier = (pointer_expression "*param_1" * identifier)) ;) (expression_statement "uVar7 = param_1[1];" (assignment_expression "uVar7 = param_1[1]" identifier = (subscript_expression "param_1[1]" identifier [ number_literal ])) ;) (expression_statement "iVar1 = *param_2;" (assignment_expression "iVar1 = *param_2" identifier = (pointer_expression "*param_2" * identifier)) ;) (expression_statement "local_c = *(int *)PTR___stack_chk_guard_000f5568;" (assignment_expression "local_c = *(int *)PTR___stack_chk_guard_000f5568" identifier = (pointer_expression "*(int *)PTR___stack_chk_guard_000f5568" * (cast_expression "(int *)PTR___stack_chk_guard_000f5568" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) ;) (expression_statement "uVar8 = param_2[1];" (assignment_expression "uVar8 = param_2[1]" identifier = (subscript_expression "param_2[1]" identifier [ number_literal ])) ;) (expression_statement "piVar9 = aiStack_20;" (assignment_expression "piVar9 = aiStack_20" identifier = identifier) ;) (do_statement "do {\n    while ((iVar1 < iVar3 || ((iVar3 == iVar1 && (uVar8 < uVar7))))) {\n      piVar9[2] = (int)param_2;\n      piVar6 = (int *)param_2[2];\n      if (piVar6 == (int *)0x0) {\n        param_2[2] = (int)param_1;\n        piVar6 = (int *)0x0;\nLAB_0002153c:\n        if (local_c == *(int *)puVar10) {\n          return local_18;\n        }\n        iVar3 = local_c;\n        puVar10 = PTR___stack_chk_fail_000f5540;\n        (*(code *)PTR___stack_chk_fail_000f5540)();\n        piVar9 = *(int **)(puVar10 + 0xd3ffc);\n        iVar1 = *piVar9;\n        if (*(int *)(iVar3 + 0xc) == 0) {\n          *param_2 = iVar3;\n          piVar4 = *(int **)(iVar3 + 8);\n        }\n        else {\n          FUN_0002156c();\n          *(int *)(iStack_50 + 8) = iVar3;\n          piVar4 = *(int **)(iVar3 + 8);\n        }\n        if (piVar4 == (int *)0x0) {\n          iVar5 = iVar3 + 8;\n          *piVar6 = iVar3;\n        }\n        else {\n          iVar5 = iVar3 + 8;\n          FUN_0002156c(piVar4,iVar5,piVar6);\n        }\n        iVar3 = *piVar9;\n        if (iVar1 != iVar3) {\n          (**(code **)(puVar10 + 0xd3fd4))();\n          iVar3 = *piVar4;\n          if (iVar3 == 0) {\n            return 0;\n          }\n          if (iVar5 == 1) {\n            *piVar4 = *(int *)(iVar3 + 8);\n            *(undefined4 *)(iVar3 + 8) = 0;\n            *(undefined4 *)(iVar3 + 0xc) = 0;\n          }\n          else {\n            iVar3 = FUN_00021630();\n            iVar1 = *piVar4;\n            if (iVar1 != 0) {\n              *(int *)(iVar1 + 0xc) = iVar3;\n              *piVar4 = *(int *)(iVar1 + 8);\n              uVar2 = FUN_00021630(piVar4,iVar5 + -1);\n              *(undefined4 *)(iVar1 + 8) = uVar2;\n              iVar3 = iVar1;\n            }\n          }\n          return iVar3;\n        }\n        return iVar3;\n      }\n      iVar1 = *piVar6;\n      piVar9 = param_2;\n      param_2 = piVar6;\n      uVar8 = piVar6[1];\n    }\n    piVar6 = (int *)(uint)(iVar3 < iVar1);\n    if ((piVar6 == (int *)0x0) && ((iVar1 != iVar3 || (uVar8 <= uVar7)))) {\n      piVar4 = (int *)param_1[2];\n    }\n    else {\n      piVar9[2] = (int)param_1;\n      piVar4 = (int *)param_1[2];\n      piVar9 = param_1;\n    }\n    param_1 = piVar4;\n    if (param_1 == (int *)0x0) {\n      piVar9[2] = (int)param_2;\n      goto LAB_0002153c;\n    }\n    iVar3 = *param_1;\n    uVar7 = param_1[1];\n  } while( true );" do (compound_statement "{\n    while ((iVar1 < iVar3 || ((iVar3 == iVar1 && (uVar8 < uVar7))))) {\n      piVar9[2] = (int)param_2;\n      piVar6 = (int *)param_2[2];\n      if (piVar6 == (int *)0x0) {\n        param_2[2] = (int)param_1;\n        piVar6 = (int *)0x0;\nLAB_0002153c:\n        if (local_c == *(int *)puVar10) {\n          return local_18;\n        }\n        iVar3 = local_c;\n        puVar10 = PTR___stack_chk_fail_000f5540;\n        (*(code *)PTR___stack_chk_fail_000f5540)();\n        piVar9 = *(int **)(puVar10 + 0xd3ffc);\n        iVar1 = *piVar9;\n        if (*(int *)(iVar3 + 0xc) == 0) {\n          *param_2 = iVar3;\n          piVar4 = *(int **)(iVar3 + 8);\n        }\n        else {\n          FUN_0002156c();\n          *(int *)(iStack_50 + 8) = iVar3;\n          piVar4 = *(int **)(iVar3 + 8);\n        }\n        if (piVar4 == (int *)0x0) {\n          iVar5 = iVar3 + 8;\n          *piVar6 = iVar3;\n        }\n        else {\n          iVar5 = iVar3 + 8;\n          FUN_0002156c(piVar4,iVar5,piVar6);\n        }\n        iVar3 = *piVar9;\n        if (iVar1 != iVar3) {\n          (**(code **)(puVar10 + 0xd3fd4))();\n          iVar3 = *piVar4;\n          if (iVar3 == 0) {\n            return 0;\n          }\n          if (iVar5 == 1) {\n            *piVar4 = *(int *)(iVar3 + 8);\n            *(undefined4 *)(iVar3 + 8) = 0;\n            *(undefined4 *)(iVar3 + 0xc) = 0;\n          }\n          else {\n            iVar3 = FUN_00021630();\n            iVar1 = *piVar4;\n            if (iVar1 != 0) {\n              *(int *)(iVar1 + 0xc) = iVar3;\n              *piVar4 = *(int *)(iVar1 + 8);\n              uVar2 = FUN_00021630(piVar4,iVar5 + -1);\n              *(undefined4 *)(iVar1 + 8) = uVar2;\n              iVar3 = iVar1;\n            }\n          }\n          return iVar3;\n        }\n        return iVar3;\n      }\n      iVar1 = *piVar6;\n      piVar9 = param_2;\n      param_2 = piVar6;\n      uVar8 = piVar6[1];\n    }\n    piVar6 = (int *)(uint)(iVar3 < iVar1);\n    if ((piVar6 == (int *)0x0) && ((iVar1 != iVar3 || (uVar8 <= uVar7)))) {\n      piVar4 = (int *)param_1[2];\n    }\n    else {\n      piVar9[2] = (int)param_1;\n      piVar4 = (int *)param_1[2];\n      piVar9 = param_1;\n    }\n    param_1 = piVar4;\n    if (param_1 == (int *)0x0) {\n      piVar9[2] = (int)param_2;\n      goto LAB_0002153c;\n    }\n    iVar3 = *param_1;\n    uVar7 = param_1[1];\n  }" { (while_statement "while ((iVar1 < iVar3 || ((iVar3 == iVar1 && (uVar8 < uVar7))))) {\n      piVar9[2] = (int)param_2;\n      piVar6 = (int *)param_2[2];\n      if (piVar6 == (int *)0x0) {\n        param_2[2] = (int)param_1;\n        piVar6 = (int *)0x0;\nLAB_0002153c:\n        if (local_c == *(int *)puVar10) {\n          return local_18;\n        }\n        iVar3 = local_c;\n        puVar10 = PTR___stack_chk_fail_000f5540;\n        (*(code *)PTR___stack_chk_fail_000f5540)();\n        piVar9 = *(int **)(puVar10 + 0xd3ffc);\n        iVar1 = *piVar9;\n        if (*(int *)(iVar3 + 0xc) == 0) {\n          *param_2 = iVar3;\n          piVar4 = *(int **)(iVar3 + 8);\n        }\n        else {\n          FUN_0002156c();\n          *(int *)(iStack_50 + 8) = iVar3;\n          piVar4 = *(int **)(iVar3 + 8);\n        }\n        if (piVar4 == (int *)0x0) {\n          iVar5 = iVar3 + 8;\n          *piVar6 = iVar3;\n        }\n        else {\n          iVar5 = iVar3 + 8;\n          FUN_0002156c(piVar4,iVar5,piVar6);\n        }\n        iVar3 = *piVar9;\n        if (iVar1 != iVar3) {\n          (**(code **)(puVar10 + 0xd3fd4))();\n          iVar3 = *piVar4;\n          if (iVar3 == 0) {\n            return 0;\n          }\n          if (iVar5 == 1) {\n            *piVar4 = *(int *)(iVar3 + 8);\n            *(undefined4 *)(iVar3 + 8) = 0;\n            *(undefined4 *)(iVar3 + 0xc) = 0;\n          }\n          else {\n            iVar3 = FUN_00021630();\n            iVar1 = *piVar4;\n            if (iVar1 != 0) {\n              *(int *)(iVar1 + 0xc) = iVar3;\n              *piVar4 = *(int *)(iVar1 + 8);\n              uVar2 = FUN_00021630(piVar4,iVar5 + -1);\n              *(undefined4 *)(iVar1 + 8) = uVar2;\n              iVar3 = iVar1;\n            }\n          }\n          return iVar3;\n        }\n        return iVar3;\n      }\n      iVar1 = *piVar6;\n      piVar9 = param_2;\n      param_2 = piVar6;\n      uVar8 = piVar6[1];\n    }" while (parenthesized_expression "((iVar1 < iVar3 || ((iVar3 == iVar1 && (uVar8 < uVar7)))))" ( (parenthesized_expression "(iVar1 < iVar3 || ((iVar3 == iVar1 && (uVar8 < uVar7))))" ( (binary_expression "iVar1 < iVar3 || ((iVar3 == iVar1 && (uVar8 < uVar7)))" (binary_expression "iVar1 < iVar3" identifier < identifier) || (parenthesized_expression "((iVar3 == iVar1 && (uVar8 < uVar7)))" ( (parenthesized_expression "(iVar3 == iVar1 && (uVar8 < uVar7))" ( (binary_expression "iVar3 == iVar1 && (uVar8 < uVar7)" (binary_expression "iVar3 == iVar1" identifier == identifier) && (parenthesized_expression "(uVar8 < uVar7)" ( (binary_expression "uVar8 < uVar7" identifier < identifier) ))) )) ))) )) )) (compound_statement "{\n      piVar9[2] = (int)param_2;\n      piVar6 = (int *)param_2[2];\n      if (piVar6 == (int *)0x0) {\n        param_2[2] = (int)param_1;\n        piVar6 = (int *)0x0;\nLAB_0002153c:\n        if (local_c == *(int *)puVar10) {\n          return local_18;\n        }\n        iVar3 = local_c;\n        puVar10 = PTR___stack_chk_fail_000f5540;\n        (*(code *)PTR___stack_chk_fail_000f5540)();\n        piVar9 = *(int **)(puVar10 + 0xd3ffc);\n        iVar1 = *piVar9;\n        if (*(int *)(iVar3 + 0xc) == 0) {\n          *param_2 = iVar3;\n          piVar4 = *(int **)(iVar3 + 8);\n        }\n        else {\n          FUN_0002156c();\n          *(int *)(iStack_50 + 8) = iVar3;\n          piVar4 = *(int **)(iVar3 + 8);\n        }\n        if (piVar4 == (int *)0x0) {\n          iVar5 = iVar3 + 8;\n          *piVar6 = iVar3;\n        }\n        else {\n          iVar5 = iVar3 + 8;\n          FUN_0002156c(piVar4,iVar5,piVar6);\n        }\n        iVar3 = *piVar9;\n        if (iVar1 != iVar3) {\n          (**(code **)(puVar10 + 0xd3fd4))();\n          iVar3 = *piVar4;\n          if (iVar3 == 0) {\n            return 0;\n          }\n          if (iVar5 == 1) {\n            *piVar4 = *(int *)(iVar3 + 8);\n            *(undefined4 *)(iVar3 + 8) = 0;\n            *(undefined4 *)(iVar3 + 0xc) = 0;\n          }\n          else {\n            iVar3 = FUN_00021630();\n            iVar1 = *piVar4;\n            if (iVar1 != 0) {\n              *(int *)(iVar1 + 0xc) = iVar3;\n              *piVar4 = *(int *)(iVar1 + 8);\n              uVar2 = FUN_00021630(piVar4,iVar5 + -1);\n              *(undefined4 *)(iVar1 + 8) = uVar2;\n              iVar3 = iVar1;\n            }\n          }\n          return iVar3;\n        }\n        return iVar3;\n      }\n      iVar1 = *piVar6;\n      piVar9 = param_2;\n      param_2 = piVar6;\n      uVar8 = piVar6[1];\n    }" { (expression_statement "piVar9[2] = (int)param_2;" (assignment_expression "piVar9[2] = (int)param_2" (subscript_expression "piVar9[2]" identifier [ number_literal ]) = (cast_expression "(int)param_2" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "piVar6 = (int *)param_2[2];" (assignment_expression "piVar6 = (int *)param_2[2]" identifier = (cast_expression "(int *)param_2[2]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_2[2]" identifier [ number_literal ]))) ;) (if_statement "if (piVar6 == (int *)0x0) {\n        param_2[2] = (int)param_1;\n        piVar6 = (int *)0x0;\nLAB_0002153c:\n        if (local_c == *(int *)puVar10) {\n          return local_18;\n        }\n        iVar3 = local_c;\n        puVar10 = PTR___stack_chk_fail_000f5540;\n        (*(code *)PTR___stack_chk_fail_000f5540)();\n        piVar9 = *(int **)(puVar10 + 0xd3ffc);\n        iVar1 = *piVar9;\n        if (*(int *)(iVar3 + 0xc) == 0) {\n          *param_2 = iVar3;\n          piVar4 = *(int **)(iVar3 + 8);\n        }\n        else {\n          FUN_0002156c();\n          *(int *)(iStack_50 + 8) = iVar3;\n          piVar4 = *(int **)(iVar3 + 8);\n        }\n        if (piVar4 == (int *)0x0) {\n          iVar5 = iVar3 + 8;\n          *piVar6 = iVar3;\n        }\n        else {\n          iVar5 = iVar3 + 8;\n          FUN_0002156c(piVar4,iVar5,piVar6);\n        }\n        iVar3 = *piVar9;\n        if (iVar1 != iVar3) {\n          (**(code **)(puVar10 + 0xd3fd4))();\n          iVar3 = *piVar4;\n          if (iVar3 == 0) {\n            return 0;\n          }\n          if (iVar5 == 1) {\n            *piVar4 = *(int *)(iVar3 + 8);\n            *(undefined4 *)(iVar3 + 8) = 0;\n            *(undefined4 *)(iVar3 + 0xc) = 0;\n          }\n          else {\n            iVar3 = FUN_00021630();\n            iVar1 = *piVar4;\n            if (iVar1 != 0) {\n              *(int *)(iVar1 + 0xc) = iVar3;\n              *piVar4 = *(int *)(iVar1 + 8);\n              uVar2 = FUN_00021630(piVar4,iVar5 + -1);\n              *(undefined4 *)(iVar1 + 8) = uVar2;\n              iVar3 = iVar1;\n            }\n          }\n          return iVar3;\n        }\n        return iVar3;\n      }" if (parenthesized_expression "(piVar6 == (int *)0x0)" ( (binary_expression "piVar6 == (int *)0x0" identifier == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        param_2[2] = (int)param_1;\n        piVar6 = (int *)0x0;\nLAB_0002153c:\n        if (local_c == *(int *)puVar10) {\n          return local_18;\n        }\n        iVar3 = local_c;\n        puVar10 = PTR___stack_chk_fail_000f5540;\n        (*(code *)PTR___stack_chk_fail_000f5540)();\n        piVar9 = *(int **)(puVar10 + 0xd3ffc);\n        iVar1 = *piVar9;\n        if (*(int *)(iVar3 + 0xc) == 0) {\n          *param_2 = iVar3;\n          piVar4 = *(int **)(iVar3 + 8);\n        }\n        else {\n          FUN_0002156c();\n          *(int *)(iStack_50 + 8) = iVar3;\n          piVar4 = *(int **)(iVar3 + 8);\n        }\n        if (piVar4 == (int *)0x0) {\n          iVar5 = iVar3 + 8;\n          *piVar6 = iVar3;\n        }\n        else {\n          iVar5 = iVar3 + 8;\n          FUN_0002156c(piVar4,iVar5,piVar6);\n        }\n        iVar3 = *piVar9;\n        if (iVar1 != iVar3) {\n          (**(code **)(puVar10 + 0xd3fd4))();\n          iVar3 = *piVar4;\n          if (iVar3 == 0) {\n            return 0;\n          }\n          if (iVar5 == 1) {\n            *piVar4 = *(int *)(iVar3 + 8);\n            *(undefined4 *)(iVar3 + 8) = 0;\n            *(undefined4 *)(iVar3 + 0xc) = 0;\n          }\n          else {\n            iVar3 = FUN_00021630();\n            iVar1 = *piVar4;\n            if (iVar1 != 0) {\n              *(int *)(iVar1 + 0xc) = iVar3;\n              *piVar4 = *(int *)(iVar1 + 8);\n              uVar2 = FUN_00021630(piVar4,iVar5 + -1);\n              *(undefined4 *)(iVar1 + 8) = uVar2;\n              iVar3 = iVar1;\n            }\n          }\n          return iVar3;\n        }\n        return iVar3;\n      }" { (expression_statement "param_2[2] = (int)param_1;" (assignment_expression "param_2[2] = (int)param_1" (subscript_expression "param_2[2]" identifier [ number_literal ]) = (cast_expression "(int)param_1" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "piVar6 = (int *)0x0;" (assignment_expression "piVar6 = (int *)0x0" identifier = (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (labeled_statement "LAB_0002153c:\n        if (local_c == *(int *)puVar10) {\n          return local_18;\n        }" statement_identifier : (if_statement "if (local_c == *(int *)puVar10) {\n          return local_18;\n        }" if (parenthesized_expression "(local_c == *(int *)puVar10)" ( (binary_expression "local_c == *(int *)puVar10" identifier == (pointer_expression "*(int *)puVar10" * (cast_expression "(int *)puVar10" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) )) (compound_statement "{\n          return local_18;\n        }" { (return_statement "return local_18;" return identifier ;) }))) (expression_statement "iVar3 = local_c;" (assignment_expression "iVar3 = local_c" identifier = identifier) ;) (expression_statement "puVar10 = PTR___stack_chk_fail_000f5540;" (assignment_expression "puVar10 = PTR___stack_chk_fail_000f5540" identifier = identifier) ;) (expression_statement "(*(code *)PTR___stack_chk_fail_000f5540)();" (call_expression "(*(code *)PTR___stack_chk_fail_000f5540)()" (parenthesized_expression "(*(code *)PTR___stack_chk_fail_000f5540)" ( (pointer_expression "*(code *)PTR___stack_chk_fail_000f5540" * (cast_expression "(code *)PTR___stack_chk_fail_000f5540" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) (expression_statement "piVar9 = *(int **)(puVar10 + 0xd3ffc);" (assignment_expression "piVar9 = *(int **)(puVar10 + 0xd3ffc)" identifier = (pointer_expression "*(int **)(puVar10 + 0xd3ffc)" * (cast_expression "(int **)(puVar10 + 0xd3ffc)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar10 + 0xd3ffc)" ( (binary_expression "puVar10 + 0xd3ffc" identifier + number_literal) ))))) ;) (expression_statement "iVar1 = *piVar9;" (assignment_expression "iVar1 = *piVar9" identifier = (pointer_expression "*piVar9" * identifier)) ;) (if_statement "if (*(int *)(iVar3 + 0xc) == 0) {\n          *param_2 = iVar3;\n          piVar4 = *(int **)(iVar3 + 8);\n        }\n        else {\n          FUN_0002156c();\n          *(int *)(iStack_50 + 8) = iVar3;\n          piVar4 = *(int **)(iVar3 + 8);\n        }" if (parenthesized_expression "(*(int *)(iVar3 + 0xc) == 0)" ( (binary_expression "*(int *)(iVar3 + 0xc) == 0" (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) )))) == number_literal) )) (compound_statement "{\n          *param_2 = iVar3;\n          piVar4 = *(int **)(iVar3 + 8);\n        }" { (expression_statement "*param_2 = iVar3;" (assignment_expression "*param_2 = iVar3" (pointer_expression "*param_2" * identifier) = identifier) ;) (expression_statement "piVar4 = *(int **)(iVar3 + 8);" (assignment_expression "piVar4 = *(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) ))))) ;) }) (else_clause "else {\n          FUN_0002156c();\n          *(int *)(iStack_50 + 8) = iVar3;\n          piVar4 = *(int **)(iVar3 + 8);\n        }" else (compound_statement "{\n          FUN_0002156c();\n          *(int *)(iStack_50 + 8) = iVar3;\n          piVar4 = *(int **)(iVar3 + 8);\n        }" { (expression_statement "FUN_0002156c();" (call_expression "FUN_0002156c()" identifier (argument_list "()" ( ))) ;) (expression_statement "*(int *)(iStack_50 + 8) = iVar3;" (assignment_expression "*(int *)(iStack_50 + 8) = iVar3" (pointer_expression "*(int *)(iStack_50 + 8)" * (cast_expression "(int *)(iStack_50 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iStack_50 + 8)" ( (binary_expression "iStack_50 + 8" identifier + number_literal) )))) = identifier) ;) (expression_statement "piVar4 = *(int **)(iVar3 + 8);" (assignment_expression "piVar4 = *(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) ))))) ;) }))) (if_statement "if (piVar4 == (int *)0x0) {\n          iVar5 = iVar3 + 8;\n          *piVar6 = iVar3;\n        }\n        else {\n          iVar5 = iVar3 + 8;\n          FUN_0002156c(piVar4,iVar5,piVar6);\n        }" if (parenthesized_expression "(piVar4 == (int *)0x0)" ( (binary_expression "piVar4 == (int *)0x0" identifier == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          iVar5 = iVar3 + 8;\n          *piVar6 = iVar3;\n        }" { (expression_statement "iVar5 = iVar3 + 8;" (assignment_expression "iVar5 = iVar3 + 8" identifier = (binary_expression "iVar3 + 8" identifier + number_literal)) ;) (expression_statement "*piVar6 = iVar3;" (assignment_expression "*piVar6 = iVar3" (pointer_expression "*piVar6" * identifier) = identifier) ;) }) (else_clause "else {\n          iVar5 = iVar3 + 8;\n          FUN_0002156c(piVar4,iVar5,piVar6);\n        }" else (compound_statement "{\n          iVar5 = iVar3 + 8;\n          FUN_0002156c(piVar4,iVar5,piVar6);\n        }" { (expression_statement "iVar5 = iVar3 + 8;" (assignment_expression "iVar5 = iVar3 + 8" identifier = (binary_expression "iVar3 + 8" identifier + number_literal)) ;) (expression_statement "FUN_0002156c(piVar4,iVar5,piVar6);" (call_expression "FUN_0002156c(piVar4,iVar5,piVar6)" identifier (argument_list "(piVar4,iVar5,piVar6)" ( identifier , identifier , identifier ))) ;) }))) (expression_statement "iVar3 = *piVar9;" (assignment_expression "iVar3 = *piVar9" identifier = (pointer_expression "*piVar9" * identifier)) ;) (if_statement "if (iVar1 != iVar3) {\n          (**(code **)(puVar10 + 0xd3fd4))();\n          iVar3 = *piVar4;\n          if (iVar3 == 0) {\n            return 0;\n          }\n          if (iVar5 == 1) {\n            *piVar4 = *(int *)(iVar3 + 8);\n            *(undefined4 *)(iVar3 + 8) = 0;\n            *(undefined4 *)(iVar3 + 0xc) = 0;\n          }\n          else {\n            iVar3 = FUN_00021630();\n            iVar1 = *piVar4;\n            if (iVar1 != 0) {\n              *(int *)(iVar1 + 0xc) = iVar3;\n              *piVar4 = *(int *)(iVar1 + 8);\n              uVar2 = FUN_00021630(piVar4,iVar5 + -1);\n              *(undefined4 *)(iVar1 + 8) = uVar2;\n              iVar3 = iVar1;\n            }\n          }\n          return iVar3;\n        }" if (parenthesized_expression "(iVar1 != iVar3)" ( (binary_expression "iVar1 != iVar3" identifier != identifier) )) (compound_statement "{\n          (**(code **)(puVar10 + 0xd3fd4))();\n          iVar3 = *piVar4;\n          if (iVar3 == 0) {\n            return 0;\n          }\n          if (iVar5 == 1) {\n            *piVar4 = *(int *)(iVar3 + 8);\n            *(undefined4 *)(iVar3 + 8) = 0;\n            *(undefined4 *)(iVar3 + 0xc) = 0;\n          }\n          else {\n            iVar3 = FUN_00021630();\n            iVar1 = *piVar4;\n            if (iVar1 != 0) {\n              *(int *)(iVar1 + 0xc) = iVar3;\n              *piVar4 = *(int *)(iVar1 + 8);\n              uVar2 = FUN_00021630(piVar4,iVar5 + -1);\n              *(undefined4 *)(iVar1 + 8) = uVar2;\n              iVar3 = iVar1;\n            }\n          }\n          return iVar3;\n        }" { (expression_statement "(**(code **)(puVar10 + 0xd3fd4))();" (call_expression "(**(code **)(puVar10 + 0xd3fd4))()" (parenthesized_expression "(**(code **)(puVar10 + 0xd3fd4))" ( (pointer_expression "**(code **)(puVar10 + 0xd3fd4)" * (pointer_expression "*(code **)(puVar10 + 0xd3fd4)" * (cast_expression "(code **)(puVar10 + 0xd3fd4)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar10 + 0xd3fd4)" ( (binary_expression "puVar10 + 0xd3fd4" identifier + number_literal) ))))) )) (argument_list "()" ( ))) ;) (expression_statement "iVar3 = *piVar4;" (assignment_expression "iVar3 = *piVar4" identifier = (pointer_expression "*piVar4" * identifier)) ;) (if_statement "if (iVar3 == 0) {\n            return 0;\n          }" if (parenthesized_expression "(iVar3 == 0)" ( (binary_expression "iVar3 == 0" identifier == number_literal) )) (compound_statement "{\n            return 0;\n          }" { (return_statement "return 0;" return number_literal ;) })) (if_statement "if (iVar5 == 1) {\n            *piVar4 = *(int *)(iVar3 + 8);\n            *(undefined4 *)(iVar3 + 8) = 0;\n            *(undefined4 *)(iVar3 + 0xc) = 0;\n          }\n          else {\n            iVar3 = FUN_00021630();\n            iVar1 = *piVar4;\n            if (iVar1 != 0) {\n              *(int *)(iVar1 + 0xc) = iVar3;\n              *piVar4 = *(int *)(iVar1 + 8);\n              uVar2 = FUN_00021630(piVar4,iVar5 + -1);\n              *(undefined4 *)(iVar1 + 8) = uVar2;\n              iVar3 = iVar1;\n            }\n          }" if (parenthesized_expression "(iVar5 == 1)" ( (binary_expression "iVar5 == 1" identifier == number_literal) )) (compound_statement "{\n            *piVar4 = *(int *)(iVar3 + 8);\n            *(undefined4 *)(iVar3 + 8) = 0;\n            *(undefined4 *)(iVar3 + 0xc) = 0;\n          }" { (expression_statement "*piVar4 = *(int *)(iVar3 + 8);" (assignment_expression "*piVar4 = *(int *)(iVar3 + 8)" (pointer_expression "*piVar4" * identifier) = (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) ))))) ;) (expression_statement "*(undefined4 *)(iVar3 + 8) = 0;" (assignment_expression "*(undefined4 *)(iVar3 + 8) = 0" (pointer_expression "*(undefined4 *)(iVar3 + 8)" * (cast_expression "(undefined4 *)(iVar3 + 8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 8)" ( (binary_expression "iVar3 + 8" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)(iVar3 + 0xc) = 0;" (assignment_expression "*(undefined4 *)(iVar3 + 0xc) = 0" (pointer_expression "*(undefined4 *)(iVar3 + 0xc)" * (cast_expression "(undefined4 *)(iVar3 + 0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 0xc)" ( (binary_expression "iVar3 + 0xc" identifier + number_literal) )))) = number_literal) ;) }) (else_clause "else {\n            iVar3 = FUN_00021630();\n            iVar1 = *piVar4;\n            if (iVar1 != 0) {\n              *(int *)(iVar1 + 0xc) = iVar3;\n              *piVar4 = *(int *)(iVar1 + 8);\n              uVar2 = FUN_00021630(piVar4,iVar5 + -1);\n              *(undefined4 *)(iVar1 + 8) = uVar2;\n              iVar3 = iVar1;\n            }\n          }" else (compound_statement "{\n            iVar3 = FUN_00021630();\n            iVar1 = *piVar4;\n            if (iVar1 != 0) {\n              *(int *)(iVar1 + 0xc) = iVar3;\n              *piVar4 = *(int *)(iVar1 + 8);\n              uVar2 = FUN_00021630(piVar4,iVar5 + -1);\n              *(undefined4 *)(iVar1 + 8) = uVar2;\n              iVar3 = iVar1;\n            }\n          }" { (expression_statement "iVar3 = FUN_00021630();" (assignment_expression "iVar3 = FUN_00021630()" identifier = (call_expression "FUN_00021630()" identifier (argument_list "()" ( )))) ;) (expression_statement "iVar1 = *piVar4;" (assignment_expression "iVar1 = *piVar4" identifier = (pointer_expression "*piVar4" * identifier)) ;) (if_statement "if (iVar1 != 0) {\n              *(int *)(iVar1 + 0xc) = iVar3;\n              *piVar4 = *(int *)(iVar1 + 8);\n              uVar2 = FUN_00021630(piVar4,iVar5 + -1);\n              *(undefined4 *)(iVar1 + 8) = uVar2;\n              iVar3 = iVar1;\n            }" if (parenthesized_expression "(iVar1 != 0)" ( (binary_expression "iVar1 != 0" identifier != number_literal) )) (compound_statement "{\n              *(int *)(iVar1 + 0xc) = iVar3;\n              *piVar4 = *(int *)(iVar1 + 8);\n              uVar2 = FUN_00021630(piVar4,iVar5 + -1);\n              *(undefined4 *)(iVar1 + 8) = uVar2;\n              iVar3 = iVar1;\n            }" { (expression_statement "*(int *)(iVar1 + 0xc) = iVar3;" (assignment_expression "*(int *)(iVar1 + 0xc) = iVar3" (pointer_expression "*(int *)(iVar1 + 0xc)" * (cast_expression "(int *)(iVar1 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 0xc)" ( (binary_expression "iVar1 + 0xc" identifier + number_literal) )))) = identifier) ;) (expression_statement "*piVar4 = *(int *)(iVar1 + 8);" (assignment_expression "*piVar4 = *(int *)(iVar1 + 8)" (pointer_expression "*piVar4" * identifier) = (pointer_expression "*(int *)(iVar1 + 8)" * (cast_expression "(int *)(iVar1 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 8)" ( (binary_expression "iVar1 + 8" identifier + number_literal) ))))) ;) (expression_statement "uVar2 = FUN_00021630(piVar4,iVar5 + -1);" (assignment_expression "uVar2 = FUN_00021630(piVar4,iVar5 + -1)" identifier = (call_expression "FUN_00021630(piVar4,iVar5 + -1)" identifier (argument_list "(piVar4,iVar5 + -1)" ( identifier , (binary_expression "iVar5 + -1" identifier + number_literal) )))) ;) (expression_statement "*(undefined4 *)(iVar1 + 8) = uVar2;" (assignment_expression "*(undefined4 *)(iVar1 + 8) = uVar2" (pointer_expression "*(undefined4 *)(iVar1 + 8)" * (cast_expression "(undefined4 *)(iVar1 + 8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 8)" ( (binary_expression "iVar1 + 8" identifier + number_literal) )))) = identifier) ;) (expression_statement "iVar3 = iVar1;" (assignment_expression "iVar3 = iVar1" identifier = identifier) ;) })) }))) (return_statement "return iVar3;" return identifier ;) })) (return_statement "return iVar3;" return identifier ;) })) (expression_statement "iVar1 = *piVar6;" (assignment_expression "iVar1 = *piVar6" identifier = (pointer_expression "*piVar6" * identifier)) ;) (expression_statement "piVar9 = param_2;" (assignment_expression "piVar9 = param_2" identifier = identifier) ;) (expression_statement "param_2 = piVar6;" (assignment_expression "param_2 = piVar6" identifier = identifier) ;) (expression_statement "uVar8 = piVar6[1];" (assignment_expression "uVar8 = piVar6[1]" identifier = (subscript_expression "piVar6[1]" identifier [ number_literal ])) ;) })) (expression_statement "piVar6 = (int *)(uint)(iVar3 < iVar1);" (assignment_expression "piVar6 = (int *)(uint)(iVar3 < iVar1)" identifier = (cast_expression "(int *)(uint)(iVar3 < iVar1)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "(uint)(iVar3 < iVar1)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(iVar3 < iVar1)" ( (binary_expression "iVar3 < iVar1" identifier < identifier) ))))) ;) (if_statement "if ((piVar6 == (int *)0x0) && ((iVar1 != iVar3 || (uVar8 <= uVar7)))) {\n      piVar4 = (int *)param_1[2];\n    }\n    else {\n      piVar9[2] = (int)param_1;\n      piVar4 = (int *)param_1[2];\n      piVar9 = param_1;\n    }" if (parenthesized_expression "((piVar6 == (int *)0x0) && ((iVar1 != iVar3 || (uVar8 <= uVar7))))" ( (binary_expression "(piVar6 == (int *)0x0) && ((iVar1 != iVar3 || (uVar8 <= uVar7)))" (parenthesized_expression "(piVar6 == (int *)0x0)" ( (binary_expression "piVar6 == (int *)0x0" identifier == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) && (parenthesized_expression "((iVar1 != iVar3 || (uVar8 <= uVar7)))" ( (parenthesized_expression "(iVar1 != iVar3 || (uVar8 <= uVar7))" ( (binary_expression "iVar1 != iVar3 || (uVar8 <= uVar7)" (binary_expression "iVar1 != iVar3" identifier != identifier) || (parenthesized_expression "(uVar8 <= uVar7)" ( (binary_expression "uVar8 <= uVar7" identifier <= identifier) ))) )) ))) )) (compound_statement "{\n      piVar4 = (int *)param_1[2];\n    }" { (expression_statement "piVar4 = (int *)param_1[2];" (assignment_expression "piVar4 = (int *)param_1[2]" identifier = (cast_expression "(int *)param_1[2]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[2]" identifier [ number_literal ]))) ;) }) (else_clause "else {\n      piVar9[2] = (int)param_1;\n      piVar4 = (int *)param_1[2];\n      piVar9 = param_1;\n    }" else (compound_statement "{\n      piVar9[2] = (int)param_1;\n      piVar4 = (int *)param_1[2];\n      piVar9 = param_1;\n    }" { (expression_statement "piVar9[2] = (int)param_1;" (assignment_expression "piVar9[2] = (int)param_1" (subscript_expression "piVar9[2]" identifier [ number_literal ]) = (cast_expression "(int)param_1" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "piVar4 = (int *)param_1[2];" (assignment_expression "piVar4 = (int *)param_1[2]" identifier = (cast_expression "(int *)param_1[2]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[2]" identifier [ number_literal ]))) ;) (expression_statement "piVar9 = param_1;" (assignment_expression "piVar9 = param_1" identifier = identifier) ;) }))) (expression_statement "param_1 = piVar4;" (assignment_expression "param_1 = piVar4" identifier = identifier) ;) (if_statement "if (param_1 == (int *)0x0) {\n      piVar9[2] = (int)param_2;\n      goto LAB_0002153c;\n    }" if (parenthesized_expression "(param_1 == (int *)0x0)" ( (binary_expression "param_1 == (int *)0x0" identifier == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      piVar9[2] = (int)param_2;\n      goto LAB_0002153c;\n    }" { (expression_statement "piVar9[2] = (int)param_2;" (assignment_expression "piVar9[2] = (int)param_2" (subscript_expression "piVar9[2]" identifier [ number_literal ]) = (cast_expression "(int)param_2" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (goto_statement "goto LAB_0002153c;" goto statement_identifier ;) })) (expression_statement "iVar3 = *param_1;" (assignment_expression "iVar3 = *param_1" identifier = (pointer_expression "*param_1" * identifier)) ;) (expression_statement "uVar7 = param_1[1];" (assignment_expression "uVar7 = param_1[1]" identifier = (subscript_expression "param_1[1]" identifier [ number_literal ])) ;) }) while (parenthesized_expression "( true )" ( true )) ;) })))
(translation_unit "RowSetEntry * rowSetEntryMerge(RowSetEntry *pA,RowSetEntry *pB)\n\n{\n  int iVar1;\n  int iVar2;\n  RowSetEntry *pRVar3;\n  RowSetEntry **ppFirst;\n  RowSetEntry *pRVar4;\n  RowSetEntry **ppLast;\n  RowSetEntry *pRVar5;\n  uint uVar6;\n  uint uVar7;\n  undefined4 *puVar8;\n  undefined *puVar9;\n  RowSetEntry *pRStack_50;\n  RowSetEntry *pRStack_4c;\n  RowSetEntry head;\n  \n  puVar9 = PTR___stack_chk_guard_000f5568;\n  iVar2 = *(int *)&pA->v;\n  uVar6 = (uint)pA->v;\n  iVar1 = *(int *)&pB->v;\n  pRVar4 = *(RowSetEntry **)PTR___stack_chk_guard_000f5568;\n  uVar7 = (uint)pB->v;\n  pRVar3 = &head;\n  do {\n    while ((iVar1 < iVar2 || ((iVar2 == iVar1 && (uVar7 < uVar6))))) {\n      pRVar3->pRight = pB;\n      pRVar5 = pB->pRight;\n      if (pRVar5 == (RowSetEntry *)0x0) {\n        pB->pRight = pA;\n        ppLast = (RowSetEntry **)0x0;\nLAB_0002153c:\n        if (pRVar4 == *(RowSetEntry **)puVar9) {\n          return head.pRight;\n        }\n        puVar9 = PTR___stack_chk_fail_000f5540;\n        (*(code *)PTR___stack_chk_fail_000f5540)();\n        puVar8 = *(undefined4 **)(puVar9 + 0xd3ffc);\n        pRStack_4c = (RowSetEntry *)*puVar8;\n        if (pRVar4->pLeft == (RowSetEntry *)0x0) {\n          *(RowSetEntry **)&pB->v = pRVar4;\n          pRVar3 = pRVar4->pRight;\n        }\n        else {\n          rowSetTreeToList(pRVar4->pLeft,(RowSetEntry **)pB,&pRStack_50);\n          pRStack_50->pRight = pRVar4;\n          pRVar3 = pRVar4->pRight;\n        }\n        if (pRVar3 == (RowSetEntry *)0x0) {\n          ppFirst = &pRVar4->pRight;\n          *ppLast = pRVar4;\n        }\n        else {\n          ppFirst = &pRVar4->pRight;\n          rowSetTreeToList(pRVar3,ppFirst,ppLast);\n        }\n        pRVar4 = (RowSetEntry *)*puVar8;\n        if (pRStack_4c != pRVar4) {\n          (**(code **)(puVar9 + 0xd3fd4))();\n          pRVar4 = *(RowSetEntry **)&pRVar3->v;\n          if (pRVar4 == (RowSetEntry *)0x0) {\n            return (RowSetEntry *)0x0;\n          }\n          if (ppFirst == (RowSetEntry **)0x1) {\n            *(RowSetEntry **)&pRVar3->v = pRVar4->pRight;\n            pRVar4->pRight = (RowSetEntry *)0x0;\n            pRVar4->pLeft = (RowSetEntry *)0x0;\n          }\n          else {\n            pRVar4 = rowSetNDeepTree((RowSetEntry **)pRVar3,(int)ppFirst + -1);\n            pRVar5 = *(RowSetEntry **)&pRVar3->v;\n            if (pRVar5 != (RowSetEntry *)0x0) {\n              pRVar5->pLeft = pRVar4;\n              *(RowSetEntry **)&pRVar3->v = pRVar5->pRight;\n              pRVar3 = rowSetNDeepTree((RowSetEntry **)pRVar3,(int)((int)ppFirst + -1));\n              pRVar5->pRight = pRVar3;\n              pRVar4 = pRVar5;\n            }\n          }\n          return pRVar4;\n        }\n        return pRVar4;\n      }\n      iVar1 = *(int *)&pRVar5->v;\n      pRVar3 = pB;\n      pB = pRVar5;\n      uVar7 = (uint)pRVar5->v;\n    }\n    ppLast = (RowSetEntry **)(uint)(iVar2 < iVar1);\n    if ((ppLast == (RowSetEntry **)0x0) && ((iVar1 != iVar2 || (uVar7 <= uVar6)))) {\n      pRVar5 = pA->pRight;\n    }\n    else {\n      pRVar3->pRight = pA;\n      pRVar5 = pA->pRight;\n      pRVar3 = pA;\n    }\n    pA = pRVar5;\n    if (pA == (RowSetEntry *)0x0) {\n      pRVar3->pRight = pB;\n      goto LAB_0002153c;\n    }\n    iVar2 = *(int *)&pA->v;\n    uVar6 = (uint)pA->v;\n  } while( true );\n}\n\n" (function_definition "RowSetEntry * rowSetEntryMerge(RowSetEntry *pA,RowSetEntry *pB)\n\n{\n  int iVar1;\n  int iVar2;\n  RowSetEntry *pRVar3;\n  RowSetEntry **ppFirst;\n  RowSetEntry *pRVar4;\n  RowSetEntry **ppLast;\n  RowSetEntry *pRVar5;\n  uint uVar6;\n  uint uVar7;\n  undefined4 *puVar8;\n  undefined *puVar9;\n  RowSetEntry *pRStack_50;\n  RowSetEntry *pRStack_4c;\n  RowSetEntry head;\n  \n  puVar9 = PTR___stack_chk_guard_000f5568;\n  iVar2 = *(int *)&pA->v;\n  uVar6 = (uint)pA->v;\n  iVar1 = *(int *)&pB->v;\n  pRVar4 = *(RowSetEntry **)PTR___stack_chk_guard_000f5568;\n  uVar7 = (uint)pB->v;\n  pRVar3 = &head;\n  do {\n    while ((iVar1 < iVar2 || ((iVar2 == iVar1 && (uVar7 < uVar6))))) {\n      pRVar3->pRight = pB;\n      pRVar5 = pB->pRight;\n      if (pRVar5 == (RowSetEntry *)0x0) {\n        pB->pRight = pA;\n        ppLast = (RowSetEntry **)0x0;\nLAB_0002153c:\n        if (pRVar4 == *(RowSetEntry **)puVar9) {\n          return head.pRight;\n        }\n        puVar9 = PTR___stack_chk_fail_000f5540;\n        (*(code *)PTR___stack_chk_fail_000f5540)();\n        puVar8 = *(undefined4 **)(puVar9 + 0xd3ffc);\n        pRStack_4c = (RowSetEntry *)*puVar8;\n        if (pRVar4->pLeft == (RowSetEntry *)0x0) {\n          *(RowSetEntry **)&pB->v = pRVar4;\n          pRVar3 = pRVar4->pRight;\n        }\n        else {\n          rowSetTreeToList(pRVar4->pLeft,(RowSetEntry **)pB,&pRStack_50);\n          pRStack_50->pRight = pRVar4;\n          pRVar3 = pRVar4->pRight;\n        }\n        if (pRVar3 == (RowSetEntry *)0x0) {\n          ppFirst = &pRVar4->pRight;\n          *ppLast = pRVar4;\n        }\n        else {\n          ppFirst = &pRVar4->pRight;\n          rowSetTreeToList(pRVar3,ppFirst,ppLast);\n        }\n        pRVar4 = (RowSetEntry *)*puVar8;\n        if (pRStack_4c != pRVar4) {\n          (**(code **)(puVar9 + 0xd3fd4))();\n          pRVar4 = *(RowSetEntry **)&pRVar3->v;\n          if (pRVar4 == (RowSetEntry *)0x0) {\n            return (RowSetEntry *)0x0;\n          }\n          if (ppFirst == (RowSetEntry **)0x1) {\n            *(RowSetEntry **)&pRVar3->v = pRVar4->pRight;\n            pRVar4->pRight = (RowSetEntry *)0x0;\n            pRVar4->pLeft = (RowSetEntry *)0x0;\n          }\n          else {\n            pRVar4 = rowSetNDeepTree((RowSetEntry **)pRVar3,(int)ppFirst + -1);\n            pRVar5 = *(RowSetEntry **)&pRVar3->v;\n            if (pRVar5 != (RowSetEntry *)0x0) {\n              pRVar5->pLeft = pRVar4;\n              *(RowSetEntry **)&pRVar3->v = pRVar5->pRight;\n              pRVar3 = rowSetNDeepTree((RowSetEntry **)pRVar3,(int)((int)ppFirst + -1));\n              pRVar5->pRight = pRVar3;\n              pRVar4 = pRVar5;\n            }\n          }\n          return pRVar4;\n        }\n        return pRVar4;\n      }\n      iVar1 = *(int *)&pRVar5->v;\n      pRVar3 = pB;\n      pB = pRVar5;\n      uVar7 = (uint)pRVar5->v;\n    }\n    ppLast = (RowSetEntry **)(uint)(iVar2 < iVar1);\n    if ((ppLast == (RowSetEntry **)0x0) && ((iVar1 != iVar2 || (uVar7 <= uVar6)))) {\n      pRVar5 = pA->pRight;\n    }\n    else {\n      pRVar3->pRight = pA;\n      pRVar5 = pA->pRight;\n      pRVar3 = pA;\n    }\n    pA = pRVar5;\n    if (pA == (RowSetEntry *)0x0) {\n      pRVar3->pRight = pB;\n      goto LAB_0002153c;\n    }\n    iVar2 = *(int *)&pA->v;\n    uVar6 = (uint)pA->v;\n  } while( true );\n}" type_identifier (pointer_declarator "* rowSetEntryMerge(RowSetEntry *pA,RowSetEntry *pB)" * (function_declarator "rowSetEntryMerge(RowSetEntry *pA,RowSetEntry *pB)" identifier (parameter_list "(RowSetEntry *pA,RowSetEntry *pB)" ( (parameter_declaration "RowSetEntry *pA" type_identifier (pointer_declarator "*pA" * identifier)) , (parameter_declaration "RowSetEntry *pB" type_identifier (pointer_declarator "*pB" * identifier)) )))) (compound_statement "{\n  int iVar1;\n  int iVar2;\n  RowSetEntry *pRVar3;\n  RowSetEntry **ppFirst;\n  RowSetEntry *pRVar4;\n  RowSetEntry **ppLast;\n  RowSetEntry *pRVar5;\n  uint uVar6;\n  uint uVar7;\n  undefined4 *puVar8;\n  undefined *puVar9;\n  RowSetEntry *pRStack_50;\n  RowSetEntry *pRStack_4c;\n  RowSetEntry head;\n  \n  puVar9 = PTR___stack_chk_guard_000f5568;\n  iVar2 = *(int *)&pA->v;\n  uVar6 = (uint)pA->v;\n  iVar1 = *(int *)&pB->v;\n  pRVar4 = *(RowSetEntry **)PTR___stack_chk_guard_000f5568;\n  uVar7 = (uint)pB->v;\n  pRVar3 = &head;\n  do {\n    while ((iVar1 < iVar2 || ((iVar2 == iVar1 && (uVar7 < uVar6))))) {\n      pRVar3->pRight = pB;\n      pRVar5 = pB->pRight;\n      if (pRVar5 == (RowSetEntry *)0x0) {\n        pB->pRight = pA;\n        ppLast = (RowSetEntry **)0x0;\nLAB_0002153c:\n        if (pRVar4 == *(RowSetEntry **)puVar9) {\n          return head.pRight;\n        }\n        puVar9 = PTR___stack_chk_fail_000f5540;\n        (*(code *)PTR___stack_chk_fail_000f5540)();\n        puVar8 = *(undefined4 **)(puVar9 + 0xd3ffc);\n        pRStack_4c = (RowSetEntry *)*puVar8;\n        if (pRVar4->pLeft == (RowSetEntry *)0x0) {\n          *(RowSetEntry **)&pB->v = pRVar4;\n          pRVar3 = pRVar4->pRight;\n        }\n        else {\n          rowSetTreeToList(pRVar4->pLeft,(RowSetEntry **)pB,&pRStack_50);\n          pRStack_50->pRight = pRVar4;\n          pRVar3 = pRVar4->pRight;\n        }\n        if (pRVar3 == (RowSetEntry *)0x0) {\n          ppFirst = &pRVar4->pRight;\n          *ppLast = pRVar4;\n        }\n        else {\n          ppFirst = &pRVar4->pRight;\n          rowSetTreeToList(pRVar3,ppFirst,ppLast);\n        }\n        pRVar4 = (RowSetEntry *)*puVar8;\n        if (pRStack_4c != pRVar4) {\n          (**(code **)(puVar9 + 0xd3fd4))();\n          pRVar4 = *(RowSetEntry **)&pRVar3->v;\n          if (pRVar4 == (RowSetEntry *)0x0) {\n            return (RowSetEntry *)0x0;\n          }\n          if (ppFirst == (RowSetEntry **)0x1) {\n            *(RowSetEntry **)&pRVar3->v = pRVar4->pRight;\n            pRVar4->pRight = (RowSetEntry *)0x0;\n            pRVar4->pLeft = (RowSetEntry *)0x0;\n          }\n          else {\n            pRVar4 = rowSetNDeepTree((RowSetEntry **)pRVar3,(int)ppFirst + -1);\n            pRVar5 = *(RowSetEntry **)&pRVar3->v;\n            if (pRVar5 != (RowSetEntry *)0x0) {\n              pRVar5->pLeft = pRVar4;\n              *(RowSetEntry **)&pRVar3->v = pRVar5->pRight;\n              pRVar3 = rowSetNDeepTree((RowSetEntry **)pRVar3,(int)((int)ppFirst + -1));\n              pRVar5->pRight = pRVar3;\n              pRVar4 = pRVar5;\n            }\n          }\n          return pRVar4;\n        }\n        return pRVar4;\n      }\n      iVar1 = *(int *)&pRVar5->v;\n      pRVar3 = pB;\n      pB = pRVar5;\n      uVar7 = (uint)pRVar5->v;\n    }\n    ppLast = (RowSetEntry **)(uint)(iVar2 < iVar1);\n    if ((ppLast == (RowSetEntry **)0x0) && ((iVar1 != iVar2 || (uVar7 <= uVar6)))) {\n      pRVar5 = pA->pRight;\n    }\n    else {\n      pRVar3->pRight = pA;\n      pRVar5 = pA->pRight;\n      pRVar3 = pA;\n    }\n    pA = pRVar5;\n    if (pA == (RowSetEntry *)0x0) {\n      pRVar3->pRight = pB;\n      goto LAB_0002153c;\n    }\n    iVar2 = *(int *)&pA->v;\n    uVar6 = (uint)pA->v;\n  } while( true );\n}" { (declaration "int iVar1;" primitive_type identifier ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "RowSetEntry *pRVar3;" type_identifier (pointer_declarator "*pRVar3" * identifier) ;) (declaration "RowSetEntry **ppFirst;" type_identifier (pointer_declarator "**ppFirst" * (pointer_declarator "*ppFirst" * identifier)) ;) (declaration "RowSetEntry *pRVar4;" type_identifier (pointer_declarator "*pRVar4" * identifier) ;) (declaration "RowSetEntry **ppLast;" type_identifier (pointer_declarator "**ppLast" * (pointer_declarator "*ppLast" * identifier)) ;) (declaration "RowSetEntry *pRVar5;" type_identifier (pointer_declarator "*pRVar5" * identifier) ;) (declaration "uint uVar6;" type_identifier identifier ;) (declaration "uint uVar7;" type_identifier identifier ;) (declaration "undefined4 *puVar8;" type_identifier (pointer_declarator "*puVar8" * identifier) ;) (declaration "undefined *puVar9;" type_identifier (pointer_declarator "*puVar9" * identifier) ;) (declaration "RowSetEntry *pRStack_50;" type_identifier (pointer_declarator "*pRStack_50" * identifier) ;) (declaration "RowSetEntry *pRStack_4c;" type_identifier (pointer_declarator "*pRStack_4c" * identifier) ;) (declaration "RowSetEntry head;" type_identifier identifier ;) (expression_statement "puVar9 = PTR___stack_chk_guard_000f5568;" (assignment_expression "puVar9 = PTR___stack_chk_guard_000f5568" identifier = identifier) ;) (expression_statement "iVar2 = *(int *)&pA->v;" (assignment_expression "iVar2 = *(int *)&pA->v" identifier = (pointer_expression "*(int *)&pA->v" * (cast_expression "(int *)&pA->v" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "&pA->v" & (field_expression "pA->v" identifier -> field_identifier))))) ;) (expression_statement "uVar6 = (uint)pA->v;" (assignment_expression "uVar6 = (uint)pA->v" identifier = (cast_expression "(uint)pA->v" ( (type_descriptor "uint" type_identifier) ) (field_expression "pA->v" identifier -> field_identifier))) ;) (expression_statement "iVar1 = *(int *)&pB->v;" (assignment_expression "iVar1 = *(int *)&pB->v" identifier = (pointer_expression "*(int *)&pB->v" * (cast_expression "(int *)&pB->v" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "&pB->v" & (field_expression "pB->v" identifier -> field_identifier))))) ;) (expression_statement "pRVar4 = *(RowSetEntry **)PTR___stack_chk_guard_000f5568;" (assignment_expression "pRVar4 = *(RowSetEntry **)PTR___stack_chk_guard_000f5568" identifier = (pointer_expression "*(RowSetEntry **)PTR___stack_chk_guard_000f5568" * (cast_expression "(RowSetEntry **)PTR___stack_chk_guard_000f5568" ( (type_descriptor "RowSetEntry **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier))) ;) (expression_statement "uVar7 = (uint)pB->v;" (assignment_expression "uVar7 = (uint)pB->v" identifier = (cast_expression "(uint)pB->v" ( (type_descriptor "uint" type_identifier) ) (field_expression "pB->v" identifier -> field_identifier))) ;) (expression_statement "pRVar3 = &head;" (assignment_expression "pRVar3 = &head" identifier = (pointer_expression "&head" & identifier)) ;) (do_statement "do {\n    while ((iVar1 < iVar2 || ((iVar2 == iVar1 && (uVar7 < uVar6))))) {\n      pRVar3->pRight = pB;\n      pRVar5 = pB->pRight;\n      if (pRVar5 == (RowSetEntry *)0x0) {\n        pB->pRight = pA;\n        ppLast = (RowSetEntry **)0x0;\nLAB_0002153c:\n        if (pRVar4 == *(RowSetEntry **)puVar9) {\n          return head.pRight;\n        }\n        puVar9 = PTR___stack_chk_fail_000f5540;\n        (*(code *)PTR___stack_chk_fail_000f5540)();\n        puVar8 = *(undefined4 **)(puVar9 + 0xd3ffc);\n        pRStack_4c = (RowSetEntry *)*puVar8;\n        if (pRVar4->pLeft == (RowSetEntry *)0x0) {\n          *(RowSetEntry **)&pB->v = pRVar4;\n          pRVar3 = pRVar4->pRight;\n        }\n        else {\n          rowSetTreeToList(pRVar4->pLeft,(RowSetEntry **)pB,&pRStack_50);\n          pRStack_50->pRight = pRVar4;\n          pRVar3 = pRVar4->pRight;\n        }\n        if (pRVar3 == (RowSetEntry *)0x0) {\n          ppFirst = &pRVar4->pRight;\n          *ppLast = pRVar4;\n        }\n        else {\n          ppFirst = &pRVar4->pRight;\n          rowSetTreeToList(pRVar3,ppFirst,ppLast);\n        }\n        pRVar4 = (RowSetEntry *)*puVar8;\n        if (pRStack_4c != pRVar4) {\n          (**(code **)(puVar9 + 0xd3fd4))();\n          pRVar4 = *(RowSetEntry **)&pRVar3->v;\n          if (pRVar4 == (RowSetEntry *)0x0) {\n            return (RowSetEntry *)0x0;\n          }\n          if (ppFirst == (RowSetEntry **)0x1) {\n            *(RowSetEntry **)&pRVar3->v = pRVar4->pRight;\n            pRVar4->pRight = (RowSetEntry *)0x0;\n            pRVar4->pLeft = (RowSetEntry *)0x0;\n          }\n          else {\n            pRVar4 = rowSetNDeepTree((RowSetEntry **)pRVar3,(int)ppFirst + -1);\n            pRVar5 = *(RowSetEntry **)&pRVar3->v;\n            if (pRVar5 != (RowSetEntry *)0x0) {\n              pRVar5->pLeft = pRVar4;\n              *(RowSetEntry **)&pRVar3->v = pRVar5->pRight;\n              pRVar3 = rowSetNDeepTree((RowSetEntry **)pRVar3,(int)((int)ppFirst + -1));\n              pRVar5->pRight = pRVar3;\n              pRVar4 = pRVar5;\n            }\n          }\n          return pRVar4;\n        }\n        return pRVar4;\n      }\n      iVar1 = *(int *)&pRVar5->v;\n      pRVar3 = pB;\n      pB = pRVar5;\n      uVar7 = (uint)pRVar5->v;\n    }\n    ppLast = (RowSetEntry **)(uint)(iVar2 < iVar1);\n    if ((ppLast == (RowSetEntry **)0x0) && ((iVar1 != iVar2 || (uVar7 <= uVar6)))) {\n      pRVar5 = pA->pRight;\n    }\n    else {\n      pRVar3->pRight = pA;\n      pRVar5 = pA->pRight;\n      pRVar3 = pA;\n    }\n    pA = pRVar5;\n    if (pA == (RowSetEntry *)0x0) {\n      pRVar3->pRight = pB;\n      goto LAB_0002153c;\n    }\n    iVar2 = *(int *)&pA->v;\n    uVar6 = (uint)pA->v;\n  } while( true );" do (compound_statement "{\n    while ((iVar1 < iVar2 || ((iVar2 == iVar1 && (uVar7 < uVar6))))) {\n      pRVar3->pRight = pB;\n      pRVar5 = pB->pRight;\n      if (pRVar5 == (RowSetEntry *)0x0) {\n        pB->pRight = pA;\n        ppLast = (RowSetEntry **)0x0;\nLAB_0002153c:\n        if (pRVar4 == *(RowSetEntry **)puVar9) {\n          return head.pRight;\n        }\n        puVar9 = PTR___stack_chk_fail_000f5540;\n        (*(code *)PTR___stack_chk_fail_000f5540)();\n        puVar8 = *(undefined4 **)(puVar9 + 0xd3ffc);\n        pRStack_4c = (RowSetEntry *)*puVar8;\n        if (pRVar4->pLeft == (RowSetEntry *)0x0) {\n          *(RowSetEntry **)&pB->v = pRVar4;\n          pRVar3 = pRVar4->pRight;\n        }\n        else {\n          rowSetTreeToList(pRVar4->pLeft,(RowSetEntry **)pB,&pRStack_50);\n          pRStack_50->pRight = pRVar4;\n          pRVar3 = pRVar4->pRight;\n        }\n        if (pRVar3 == (RowSetEntry *)0x0) {\n          ppFirst = &pRVar4->pRight;\n          *ppLast = pRVar4;\n        }\n        else {\n          ppFirst = &pRVar4->pRight;\n          rowSetTreeToList(pRVar3,ppFirst,ppLast);\n        }\n        pRVar4 = (RowSetEntry *)*puVar8;\n        if (pRStack_4c != pRVar4) {\n          (**(code **)(puVar9 + 0xd3fd4))();\n          pRVar4 = *(RowSetEntry **)&pRVar3->v;\n          if (pRVar4 == (RowSetEntry *)0x0) {\n            return (RowSetEntry *)0x0;\n          }\n          if (ppFirst == (RowSetEntry **)0x1) {\n            *(RowSetEntry **)&pRVar3->v = pRVar4->pRight;\n            pRVar4->pRight = (RowSetEntry *)0x0;\n            pRVar4->pLeft = (RowSetEntry *)0x0;\n          }\n          else {\n            pRVar4 = rowSetNDeepTree((RowSetEntry **)pRVar3,(int)ppFirst + -1);\n            pRVar5 = *(RowSetEntry **)&pRVar3->v;\n            if (pRVar5 != (RowSetEntry *)0x0) {\n              pRVar5->pLeft = pRVar4;\n              *(RowSetEntry **)&pRVar3->v = pRVar5->pRight;\n              pRVar3 = rowSetNDeepTree((RowSetEntry **)pRVar3,(int)((int)ppFirst + -1));\n              pRVar5->pRight = pRVar3;\n              pRVar4 = pRVar5;\n            }\n          }\n          return pRVar4;\n        }\n        return pRVar4;\n      }\n      iVar1 = *(int *)&pRVar5->v;\n      pRVar3 = pB;\n      pB = pRVar5;\n      uVar7 = (uint)pRVar5->v;\n    }\n    ppLast = (RowSetEntry **)(uint)(iVar2 < iVar1);\n    if ((ppLast == (RowSetEntry **)0x0) && ((iVar1 != iVar2 || (uVar7 <= uVar6)))) {\n      pRVar5 = pA->pRight;\n    }\n    else {\n      pRVar3->pRight = pA;\n      pRVar5 = pA->pRight;\n      pRVar3 = pA;\n    }\n    pA = pRVar5;\n    if (pA == (RowSetEntry *)0x0) {\n      pRVar3->pRight = pB;\n      goto LAB_0002153c;\n    }\n    iVar2 = *(int *)&pA->v;\n    uVar6 = (uint)pA->v;\n  }" { (while_statement "while ((iVar1 < iVar2 || ((iVar2 == iVar1 && (uVar7 < uVar6))))) {\n      pRVar3->pRight = pB;\n      pRVar5 = pB->pRight;\n      if (pRVar5 == (RowSetEntry *)0x0) {\n        pB->pRight = pA;\n        ppLast = (RowSetEntry **)0x0;\nLAB_0002153c:\n        if (pRVar4 == *(RowSetEntry **)puVar9) {\n          return head.pRight;\n        }\n        puVar9 = PTR___stack_chk_fail_000f5540;\n        (*(code *)PTR___stack_chk_fail_000f5540)();\n        puVar8 = *(undefined4 **)(puVar9 + 0xd3ffc);\n        pRStack_4c = (RowSetEntry *)*puVar8;\n        if (pRVar4->pLeft == (RowSetEntry *)0x0) {\n          *(RowSetEntry **)&pB->v = pRVar4;\n          pRVar3 = pRVar4->pRight;\n        }\n        else {\n          rowSetTreeToList(pRVar4->pLeft,(RowSetEntry **)pB,&pRStack_50);\n          pRStack_50->pRight = pRVar4;\n          pRVar3 = pRVar4->pRight;\n        }\n        if (pRVar3 == (RowSetEntry *)0x0) {\n          ppFirst = &pRVar4->pRight;\n          *ppLast = pRVar4;\n        }\n        else {\n          ppFirst = &pRVar4->pRight;\n          rowSetTreeToList(pRVar3,ppFirst,ppLast);\n        }\n        pRVar4 = (RowSetEntry *)*puVar8;\n        if (pRStack_4c != pRVar4) {\n          (**(code **)(puVar9 + 0xd3fd4))();\n          pRVar4 = *(RowSetEntry **)&pRVar3->v;\n          if (pRVar4 == (RowSetEntry *)0x0) {\n            return (RowSetEntry *)0x0;\n          }\n          if (ppFirst == (RowSetEntry **)0x1) {\n            *(RowSetEntry **)&pRVar3->v = pRVar4->pRight;\n            pRVar4->pRight = (RowSetEntry *)0x0;\n            pRVar4->pLeft = (RowSetEntry *)0x0;\n          }\n          else {\n            pRVar4 = rowSetNDeepTree((RowSetEntry **)pRVar3,(int)ppFirst + -1);\n            pRVar5 = *(RowSetEntry **)&pRVar3->v;\n            if (pRVar5 != (RowSetEntry *)0x0) {\n              pRVar5->pLeft = pRVar4;\n              *(RowSetEntry **)&pRVar3->v = pRVar5->pRight;\n              pRVar3 = rowSetNDeepTree((RowSetEntry **)pRVar3,(int)((int)ppFirst + -1));\n              pRVar5->pRight = pRVar3;\n              pRVar4 = pRVar5;\n            }\n          }\n          return pRVar4;\n        }\n        return pRVar4;\n      }\n      iVar1 = *(int *)&pRVar5->v;\n      pRVar3 = pB;\n      pB = pRVar5;\n      uVar7 = (uint)pRVar5->v;\n    }" while (parenthesized_expression "((iVar1 < iVar2 || ((iVar2 == iVar1 && (uVar7 < uVar6)))))" ( (parenthesized_expression "(iVar1 < iVar2 || ((iVar2 == iVar1 && (uVar7 < uVar6))))" ( (binary_expression "iVar1 < iVar2 || ((iVar2 == iVar1 && (uVar7 < uVar6)))" (binary_expression "iVar1 < iVar2" identifier < identifier) || (parenthesized_expression "((iVar2 == iVar1 && (uVar7 < uVar6)))" ( (parenthesized_expression "(iVar2 == iVar1 && (uVar7 < uVar6))" ( (binary_expression "iVar2 == iVar1 && (uVar7 < uVar6)" (binary_expression "iVar2 == iVar1" identifier == identifier) && (parenthesized_expression "(uVar7 < uVar6)" ( (binary_expression "uVar7 < uVar6" identifier < identifier) ))) )) ))) )) )) (compound_statement "{\n      pRVar3->pRight = pB;\n      pRVar5 = pB->pRight;\n      if (pRVar5 == (RowSetEntry *)0x0) {\n        pB->pRight = pA;\n        ppLast = (RowSetEntry **)0x0;\nLAB_0002153c:\n        if (pRVar4 == *(RowSetEntry **)puVar9) {\n          return head.pRight;\n        }\n        puVar9 = PTR___stack_chk_fail_000f5540;\n        (*(code *)PTR___stack_chk_fail_000f5540)();\n        puVar8 = *(undefined4 **)(puVar9 + 0xd3ffc);\n        pRStack_4c = (RowSetEntry *)*puVar8;\n        if (pRVar4->pLeft == (RowSetEntry *)0x0) {\n          *(RowSetEntry **)&pB->v = pRVar4;\n          pRVar3 = pRVar4->pRight;\n        }\n        else {\n          rowSetTreeToList(pRVar4->pLeft,(RowSetEntry **)pB,&pRStack_50);\n          pRStack_50->pRight = pRVar4;\n          pRVar3 = pRVar4->pRight;\n        }\n        if (pRVar3 == (RowSetEntry *)0x0) {\n          ppFirst = &pRVar4->pRight;\n          *ppLast = pRVar4;\n        }\n        else {\n          ppFirst = &pRVar4->pRight;\n          rowSetTreeToList(pRVar3,ppFirst,ppLast);\n        }\n        pRVar4 = (RowSetEntry *)*puVar8;\n        if (pRStack_4c != pRVar4) {\n          (**(code **)(puVar9 + 0xd3fd4))();\n          pRVar4 = *(RowSetEntry **)&pRVar3->v;\n          if (pRVar4 == (RowSetEntry *)0x0) {\n            return (RowSetEntry *)0x0;\n          }\n          if (ppFirst == (RowSetEntry **)0x1) {\n            *(RowSetEntry **)&pRVar3->v = pRVar4->pRight;\n            pRVar4->pRight = (RowSetEntry *)0x0;\n            pRVar4->pLeft = (RowSetEntry *)0x0;\n          }\n          else {\n            pRVar4 = rowSetNDeepTree((RowSetEntry **)pRVar3,(int)ppFirst + -1);\n            pRVar5 = *(RowSetEntry **)&pRVar3->v;\n            if (pRVar5 != (RowSetEntry *)0x0) {\n              pRVar5->pLeft = pRVar4;\n              *(RowSetEntry **)&pRVar3->v = pRVar5->pRight;\n              pRVar3 = rowSetNDeepTree((RowSetEntry **)pRVar3,(int)((int)ppFirst + -1));\n              pRVar5->pRight = pRVar3;\n              pRVar4 = pRVar5;\n            }\n          }\n          return pRVar4;\n        }\n        return pRVar4;\n      }\n      iVar1 = *(int *)&pRVar5->v;\n      pRVar3 = pB;\n      pB = pRVar5;\n      uVar7 = (uint)pRVar5->v;\n    }" { (expression_statement "pRVar3->pRight = pB;" (assignment_expression "pRVar3->pRight = pB" (field_expression "pRVar3->pRight" identifier -> field_identifier) = identifier) ;) (expression_statement "pRVar5 = pB->pRight;" (assignment_expression "pRVar5 = pB->pRight" identifier = (field_expression "pB->pRight" identifier -> field_identifier)) ;) (if_statement "if (pRVar5 == (RowSetEntry *)0x0) {\n        pB->pRight = pA;\n        ppLast = (RowSetEntry **)0x0;\nLAB_0002153c:\n        if (pRVar4 == *(RowSetEntry **)puVar9) {\n          return head.pRight;\n        }\n        puVar9 = PTR___stack_chk_fail_000f5540;\n        (*(code *)PTR___stack_chk_fail_000f5540)();\n        puVar8 = *(undefined4 **)(puVar9 + 0xd3ffc);\n        pRStack_4c = (RowSetEntry *)*puVar8;\n        if (pRVar4->pLeft == (RowSetEntry *)0x0) {\n          *(RowSetEntry **)&pB->v = pRVar4;\n          pRVar3 = pRVar4->pRight;\n        }\n        else {\n          rowSetTreeToList(pRVar4->pLeft,(RowSetEntry **)pB,&pRStack_50);\n          pRStack_50->pRight = pRVar4;\n          pRVar3 = pRVar4->pRight;\n        }\n        if (pRVar3 == (RowSetEntry *)0x0) {\n          ppFirst = &pRVar4->pRight;\n          *ppLast = pRVar4;\n        }\n        else {\n          ppFirst = &pRVar4->pRight;\n          rowSetTreeToList(pRVar3,ppFirst,ppLast);\n        }\n        pRVar4 = (RowSetEntry *)*puVar8;\n        if (pRStack_4c != pRVar4) {\n          (**(code **)(puVar9 + 0xd3fd4))();\n          pRVar4 = *(RowSetEntry **)&pRVar3->v;\n          if (pRVar4 == (RowSetEntry *)0x0) {\n            return (RowSetEntry *)0x0;\n          }\n          if (ppFirst == (RowSetEntry **)0x1) {\n            *(RowSetEntry **)&pRVar3->v = pRVar4->pRight;\n            pRVar4->pRight = (RowSetEntry *)0x0;\n            pRVar4->pLeft = (RowSetEntry *)0x0;\n          }\n          else {\n            pRVar4 = rowSetNDeepTree((RowSetEntry **)pRVar3,(int)ppFirst + -1);\n            pRVar5 = *(RowSetEntry **)&pRVar3->v;\n            if (pRVar5 != (RowSetEntry *)0x0) {\n              pRVar5->pLeft = pRVar4;\n              *(RowSetEntry **)&pRVar3->v = pRVar5->pRight;\n              pRVar3 = rowSetNDeepTree((RowSetEntry **)pRVar3,(int)((int)ppFirst + -1));\n              pRVar5->pRight = pRVar3;\n              pRVar4 = pRVar5;\n            }\n          }\n          return pRVar4;\n        }\n        return pRVar4;\n      }" if (parenthesized_expression "(pRVar5 == (RowSetEntry *)0x0)" ( (binary_expression "pRVar5 == (RowSetEntry *)0x0" identifier == (cast_expression "(RowSetEntry *)0x0" ( (type_descriptor "RowSetEntry *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        pB->pRight = pA;\n        ppLast = (RowSetEntry **)0x0;\nLAB_0002153c:\n        if (pRVar4 == *(RowSetEntry **)puVar9) {\n          return head.pRight;\n        }\n        puVar9 = PTR___stack_chk_fail_000f5540;\n        (*(code *)PTR___stack_chk_fail_000f5540)();\n        puVar8 = *(undefined4 **)(puVar9 + 0xd3ffc);\n        pRStack_4c = (RowSetEntry *)*puVar8;\n        if (pRVar4->pLeft == (RowSetEntry *)0x0) {\n          *(RowSetEntry **)&pB->v = pRVar4;\n          pRVar3 = pRVar4->pRight;\n        }\n        else {\n          rowSetTreeToList(pRVar4->pLeft,(RowSetEntry **)pB,&pRStack_50);\n          pRStack_50->pRight = pRVar4;\n          pRVar3 = pRVar4->pRight;\n        }\n        if (pRVar3 == (RowSetEntry *)0x0) {\n          ppFirst = &pRVar4->pRight;\n          *ppLast = pRVar4;\n        }\n        else {\n          ppFirst = &pRVar4->pRight;\n          rowSetTreeToList(pRVar3,ppFirst,ppLast);\n        }\n        pRVar4 = (RowSetEntry *)*puVar8;\n        if (pRStack_4c != pRVar4) {\n          (**(code **)(puVar9 + 0xd3fd4))();\n          pRVar4 = *(RowSetEntry **)&pRVar3->v;\n          if (pRVar4 == (RowSetEntry *)0x0) {\n            return (RowSetEntry *)0x0;\n          }\n          if (ppFirst == (RowSetEntry **)0x1) {\n            *(RowSetEntry **)&pRVar3->v = pRVar4->pRight;\n            pRVar4->pRight = (RowSetEntry *)0x0;\n            pRVar4->pLeft = (RowSetEntry *)0x0;\n          }\n          else {\n            pRVar4 = rowSetNDeepTree((RowSetEntry **)pRVar3,(int)ppFirst + -1);\n            pRVar5 = *(RowSetEntry **)&pRVar3->v;\n            if (pRVar5 != (RowSetEntry *)0x0) {\n              pRVar5->pLeft = pRVar4;\n              *(RowSetEntry **)&pRVar3->v = pRVar5->pRight;\n              pRVar3 = rowSetNDeepTree((RowSetEntry **)pRVar3,(int)((int)ppFirst + -1));\n              pRVar5->pRight = pRVar3;\n              pRVar4 = pRVar5;\n            }\n          }\n          return pRVar4;\n        }\n        return pRVar4;\n      }" { (expression_statement "pB->pRight = pA;" (assignment_expression "pB->pRight = pA" (field_expression "pB->pRight" identifier -> field_identifier) = identifier) ;) (expression_statement "ppLast = (RowSetEntry **)0x0;" (assignment_expression "ppLast = (RowSetEntry **)0x0" identifier = (cast_expression "(RowSetEntry **)0x0" ( (type_descriptor "RowSetEntry **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) number_literal)) ;) (labeled_statement "LAB_0002153c:\n        if (pRVar4 == *(RowSetEntry **)puVar9) {\n          return head.pRight;\n        }" statement_identifier : (if_statement "if (pRVar4 == *(RowSetEntry **)puVar9) {\n          return head.pRight;\n        }" if (parenthesized_expression "(pRVar4 == *(RowSetEntry **)puVar9)" ( (binary_expression "pRVar4 == *(RowSetEntry **)puVar9" identifier == (pointer_expression "*(RowSetEntry **)puVar9" * (cast_expression "(RowSetEntry **)puVar9" ( (type_descriptor "RowSetEntry **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier))) )) (compound_statement "{\n          return head.pRight;\n        }" { (return_statement "return head.pRight;" return (field_expression "head.pRight" identifier . field_identifier) ;) }))) (expression_statement "puVar9 = PTR___stack_chk_fail_000f5540;" (assignment_expression "puVar9 = PTR___stack_chk_fail_000f5540" identifier = identifier) ;) (expression_statement "(*(code *)PTR___stack_chk_fail_000f5540)();" (call_expression "(*(code *)PTR___stack_chk_fail_000f5540)()" (parenthesized_expression "(*(code *)PTR___stack_chk_fail_000f5540)" ( (pointer_expression "*(code *)PTR___stack_chk_fail_000f5540" * (cast_expression "(code *)PTR___stack_chk_fail_000f5540" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) (expression_statement "puVar8 = *(undefined4 **)(puVar9 + 0xd3ffc);" (assignment_expression "puVar8 = *(undefined4 **)(puVar9 + 0xd3ffc)" identifier = (pointer_expression "*(undefined4 **)(puVar9 + 0xd3ffc)" * (cast_expression "(undefined4 **)(puVar9 + 0xd3ffc)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar9 + 0xd3ffc)" ( (binary_expression "puVar9 + 0xd3ffc" identifier + number_literal) ))))) ;) (expression_statement "pRStack_4c = (RowSetEntry *)*puVar8;" (assignment_expression "pRStack_4c = (RowSetEntry *)*puVar8" identifier = (cast_expression "(RowSetEntry *)*puVar8" ( (type_descriptor "RowSetEntry *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar8" * identifier))) ;) (if_statement "if (pRVar4->pLeft == (RowSetEntry *)0x0) {\n          *(RowSetEntry **)&pB->v = pRVar4;\n          pRVar3 = pRVar4->pRight;\n        }\n        else {\n          rowSetTreeToList(pRVar4->pLeft,(RowSetEntry **)pB,&pRStack_50);\n          pRStack_50->pRight = pRVar4;\n          pRVar3 = pRVar4->pRight;\n        }" if (parenthesized_expression "(pRVar4->pLeft == (RowSetEntry *)0x0)" ( (binary_expression "pRVar4->pLeft == (RowSetEntry *)0x0" (field_expression "pRVar4->pLeft" identifier -> field_identifier) == (cast_expression "(RowSetEntry *)0x0" ( (type_descriptor "RowSetEntry *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          *(RowSetEntry **)&pB->v = pRVar4;\n          pRVar3 = pRVar4->pRight;\n        }" { (expression_statement "*(RowSetEntry **)&pB->v = pRVar4;" (assignment_expression "*(RowSetEntry **)&pB->v = pRVar4" (pointer_expression "*(RowSetEntry **)&pB->v" * (cast_expression "(RowSetEntry **)&pB->v" ( (type_descriptor "RowSetEntry **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (pointer_expression "&pB->v" & (field_expression "pB->v" identifier -> field_identifier)))) = identifier) ;) (expression_statement "pRVar3 = pRVar4->pRight;" (assignment_expression "pRVar3 = pRVar4->pRight" identifier = (field_expression "pRVar4->pRight" identifier -> field_identifier)) ;) }) (else_clause "else {\n          rowSetTreeToList(pRVar4->pLeft,(RowSetEntry **)pB,&pRStack_50);\n          pRStack_50->pRight = pRVar4;\n          pRVar3 = pRVar4->pRight;\n        }" else (compound_statement "{\n          rowSetTreeToList(pRVar4->pLeft,(RowSetEntry **)pB,&pRStack_50);\n          pRStack_50->pRight = pRVar4;\n          pRVar3 = pRVar4->pRight;\n        }" { (expression_statement "rowSetTreeToList(pRVar4->pLeft,(RowSetEntry **)pB,&pRStack_50);" (call_expression "rowSetTreeToList(pRVar4->pLeft,(RowSetEntry **)pB,&pRStack_50)" identifier (argument_list "(pRVar4->pLeft,(RowSetEntry **)pB,&pRStack_50)" ( (field_expression "pRVar4->pLeft" identifier -> field_identifier) , (cast_expression "(RowSetEntry **)pB" ( (type_descriptor "RowSetEntry **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier) , (pointer_expression "&pRStack_50" & identifier) ))) ;) (expression_statement "pRStack_50->pRight = pRVar4;" (assignment_expression "pRStack_50->pRight = pRVar4" (field_expression "pRStack_50->pRight" identifier -> field_identifier) = identifier) ;) (expression_statement "pRVar3 = pRVar4->pRight;" (assignment_expression "pRVar3 = pRVar4->pRight" identifier = (field_expression "pRVar4->pRight" identifier -> field_identifier)) ;) }))) (if_statement "if (pRVar3 == (RowSetEntry *)0x0) {\n          ppFirst = &pRVar4->pRight;\n          *ppLast = pRVar4;\n        }\n        else {\n          ppFirst = &pRVar4->pRight;\n          rowSetTreeToList(pRVar3,ppFirst,ppLast);\n        }" if (parenthesized_expression "(pRVar3 == (RowSetEntry *)0x0)" ( (binary_expression "pRVar3 == (RowSetEntry *)0x0" identifier == (cast_expression "(RowSetEntry *)0x0" ( (type_descriptor "RowSetEntry *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          ppFirst = &pRVar4->pRight;\n          *ppLast = pRVar4;\n        }" { (expression_statement "ppFirst = &pRVar4->pRight;" (assignment_expression "ppFirst = &pRVar4->pRight" identifier = (pointer_expression "&pRVar4->pRight" & (field_expression "pRVar4->pRight" identifier -> field_identifier))) ;) (expression_statement "*ppLast = pRVar4;" (assignment_expression "*ppLast = pRVar4" (pointer_expression "*ppLast" * identifier) = identifier) ;) }) (else_clause "else {\n          ppFirst = &pRVar4->pRight;\n          rowSetTreeToList(pRVar3,ppFirst,ppLast);\n        }" else (compound_statement "{\n          ppFirst = &pRVar4->pRight;\n          rowSetTreeToList(pRVar3,ppFirst,ppLast);\n        }" { (expression_statement "ppFirst = &pRVar4->pRight;" (assignment_expression "ppFirst = &pRVar4->pRight" identifier = (pointer_expression "&pRVar4->pRight" & (field_expression "pRVar4->pRight" identifier -> field_identifier))) ;) (expression_statement "rowSetTreeToList(pRVar3,ppFirst,ppLast);" (call_expression "rowSetTreeToList(pRVar3,ppFirst,ppLast)" identifier (argument_list "(pRVar3,ppFirst,ppLast)" ( identifier , identifier , identifier ))) ;) }))) (expression_statement "pRVar4 = (RowSetEntry *)*puVar8;" (assignment_expression "pRVar4 = (RowSetEntry *)*puVar8" identifier = (cast_expression "(RowSetEntry *)*puVar8" ( (type_descriptor "RowSetEntry *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar8" * identifier))) ;) (if_statement "if (pRStack_4c != pRVar4) {\n          (**(code **)(puVar9 + 0xd3fd4))();\n          pRVar4 = *(RowSetEntry **)&pRVar3->v;\n          if (pRVar4 == (RowSetEntry *)0x0) {\n            return (RowSetEntry *)0x0;\n          }\n          if (ppFirst == (RowSetEntry **)0x1) {\n            *(RowSetEntry **)&pRVar3->v = pRVar4->pRight;\n            pRVar4->pRight = (RowSetEntry *)0x0;\n            pRVar4->pLeft = (RowSetEntry *)0x0;\n          }\n          else {\n            pRVar4 = rowSetNDeepTree((RowSetEntry **)pRVar3,(int)ppFirst + -1);\n            pRVar5 = *(RowSetEntry **)&pRVar3->v;\n            if (pRVar5 != (RowSetEntry *)0x0) {\n              pRVar5->pLeft = pRVar4;\n              *(RowSetEntry **)&pRVar3->v = pRVar5->pRight;\n              pRVar3 = rowSetNDeepTree((RowSetEntry **)pRVar3,(int)((int)ppFirst + -1));\n              pRVar5->pRight = pRVar3;\n              pRVar4 = pRVar5;\n            }\n          }\n          return pRVar4;\n        }" if (parenthesized_expression "(pRStack_4c != pRVar4)" ( (binary_expression "pRStack_4c != pRVar4" identifier != identifier) )) (compound_statement "{\n          (**(code **)(puVar9 + 0xd3fd4))();\n          pRVar4 = *(RowSetEntry **)&pRVar3->v;\n          if (pRVar4 == (RowSetEntry *)0x0) {\n            return (RowSetEntry *)0x0;\n          }\n          if (ppFirst == (RowSetEntry **)0x1) {\n            *(RowSetEntry **)&pRVar3->v = pRVar4->pRight;\n            pRVar4->pRight = (RowSetEntry *)0x0;\n            pRVar4->pLeft = (RowSetEntry *)0x0;\n          }\n          else {\n            pRVar4 = rowSetNDeepTree((RowSetEntry **)pRVar3,(int)ppFirst + -1);\n            pRVar5 = *(RowSetEntry **)&pRVar3->v;\n            if (pRVar5 != (RowSetEntry *)0x0) {\n              pRVar5->pLeft = pRVar4;\n              *(RowSetEntry **)&pRVar3->v = pRVar5->pRight;\n              pRVar3 = rowSetNDeepTree((RowSetEntry **)pRVar3,(int)((int)ppFirst + -1));\n              pRVar5->pRight = pRVar3;\n              pRVar4 = pRVar5;\n            }\n          }\n          return pRVar4;\n        }" { (expression_statement "(**(code **)(puVar9 + 0xd3fd4))();" (call_expression "(**(code **)(puVar9 + 0xd3fd4))()" (parenthesized_expression "(**(code **)(puVar9 + 0xd3fd4))" ( (pointer_expression "**(code **)(puVar9 + 0xd3fd4)" * (pointer_expression "*(code **)(puVar9 + 0xd3fd4)" * (cast_expression "(code **)(puVar9 + 0xd3fd4)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar9 + 0xd3fd4)" ( (binary_expression "puVar9 + 0xd3fd4" identifier + number_literal) ))))) )) (argument_list "()" ( ))) ;) (expression_statement "pRVar4 = *(RowSetEntry **)&pRVar3->v;" (assignment_expression "pRVar4 = *(RowSetEntry **)&pRVar3->v" identifier = (pointer_expression "*(RowSetEntry **)&pRVar3->v" * (cast_expression "(RowSetEntry **)&pRVar3->v" ( (type_descriptor "RowSetEntry **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (pointer_expression "&pRVar3->v" & (field_expression "pRVar3->v" identifier -> field_identifier))))) ;) (if_statement "if (pRVar4 == (RowSetEntry *)0x0) {\n            return (RowSetEntry *)0x0;\n          }" if (parenthesized_expression "(pRVar4 == (RowSetEntry *)0x0)" ( (binary_expression "pRVar4 == (RowSetEntry *)0x0" identifier == (cast_expression "(RowSetEntry *)0x0" ( (type_descriptor "RowSetEntry *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n            return (RowSetEntry *)0x0;\n          }" { (return_statement "return (RowSetEntry *)0x0;" return (cast_expression "(RowSetEntry *)0x0" ( (type_descriptor "RowSetEntry *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) ;) })) (if_statement "if (ppFirst == (RowSetEntry **)0x1) {\n            *(RowSetEntry **)&pRVar3->v = pRVar4->pRight;\n            pRVar4->pRight = (RowSetEntry *)0x0;\n            pRVar4->pLeft = (RowSetEntry *)0x0;\n          }\n          else {\n            pRVar4 = rowSetNDeepTree((RowSetEntry **)pRVar3,(int)ppFirst + -1);\n            pRVar5 = *(RowSetEntry **)&pRVar3->v;\n            if (pRVar5 != (RowSetEntry *)0x0) {\n              pRVar5->pLeft = pRVar4;\n              *(RowSetEntry **)&pRVar3->v = pRVar5->pRight;\n              pRVar3 = rowSetNDeepTree((RowSetEntry **)pRVar3,(int)((int)ppFirst + -1));\n              pRVar5->pRight = pRVar3;\n              pRVar4 = pRVar5;\n            }\n          }" if (parenthesized_expression "(ppFirst == (RowSetEntry **)0x1)" ( (binary_expression "ppFirst == (RowSetEntry **)0x1" identifier == (cast_expression "(RowSetEntry **)0x1" ( (type_descriptor "RowSetEntry **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) number_literal)) )) (compound_statement "{\n            *(RowSetEntry **)&pRVar3->v = pRVar4->pRight;\n            pRVar4->pRight = (RowSetEntry *)0x0;\n            pRVar4->pLeft = (RowSetEntry *)0x0;\n          }" { (expression_statement "*(RowSetEntry **)&pRVar3->v = pRVar4->pRight;" (assignment_expression "*(RowSetEntry **)&pRVar3->v = pRVar4->pRight" (pointer_expression "*(RowSetEntry **)&pRVar3->v" * (cast_expression "(RowSetEntry **)&pRVar3->v" ( (type_descriptor "RowSetEntry **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (pointer_expression "&pRVar3->v" & (field_expression "pRVar3->v" identifier -> field_identifier)))) = (field_expression "pRVar4->pRight" identifier -> field_identifier)) ;) (expression_statement "pRVar4->pRight = (RowSetEntry *)0x0;" (assignment_expression "pRVar4->pRight = (RowSetEntry *)0x0" (field_expression "pRVar4->pRight" identifier -> field_identifier) = (cast_expression "(RowSetEntry *)0x0" ( (type_descriptor "RowSetEntry *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "pRVar4->pLeft = (RowSetEntry *)0x0;" (assignment_expression "pRVar4->pLeft = (RowSetEntry *)0x0" (field_expression "pRVar4->pLeft" identifier -> field_identifier) = (cast_expression "(RowSetEntry *)0x0" ( (type_descriptor "RowSetEntry *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) }) (else_clause "else {\n            pRVar4 = rowSetNDeepTree((RowSetEntry **)pRVar3,(int)ppFirst + -1);\n            pRVar5 = *(RowSetEntry **)&pRVar3->v;\n            if (pRVar5 != (RowSetEntry *)0x0) {\n              pRVar5->pLeft = pRVar4;\n              *(RowSetEntry **)&pRVar3->v = pRVar5->pRight;\n              pRVar3 = rowSetNDeepTree((RowSetEntry **)pRVar3,(int)((int)ppFirst + -1));\n              pRVar5->pRight = pRVar3;\n              pRVar4 = pRVar5;\n            }\n          }" else (compound_statement "{\n            pRVar4 = rowSetNDeepTree((RowSetEntry **)pRVar3,(int)ppFirst + -1);\n            pRVar5 = *(RowSetEntry **)&pRVar3->v;\n            if (pRVar5 != (RowSetEntry *)0x0) {\n              pRVar5->pLeft = pRVar4;\n              *(RowSetEntry **)&pRVar3->v = pRVar5->pRight;\n              pRVar3 = rowSetNDeepTree((RowSetEntry **)pRVar3,(int)((int)ppFirst + -1));\n              pRVar5->pRight = pRVar3;\n              pRVar4 = pRVar5;\n            }\n          }" { (expression_statement "pRVar4 = rowSetNDeepTree((RowSetEntry **)pRVar3,(int)ppFirst + -1);" (assignment_expression "pRVar4 = rowSetNDeepTree((RowSetEntry **)pRVar3,(int)ppFirst + -1)" identifier = (call_expression "rowSetNDeepTree((RowSetEntry **)pRVar3,(int)ppFirst + -1)" identifier (argument_list "((RowSetEntry **)pRVar3,(int)ppFirst + -1)" ( (cast_expression "(RowSetEntry **)pRVar3" ( (type_descriptor "RowSetEntry **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier) , (binary_expression "(int)ppFirst + -1" (cast_expression "(int)ppFirst" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (expression_statement "pRVar5 = *(RowSetEntry **)&pRVar3->v;" (assignment_expression "pRVar5 = *(RowSetEntry **)&pRVar3->v" identifier = (pointer_expression "*(RowSetEntry **)&pRVar3->v" * (cast_expression "(RowSetEntry **)&pRVar3->v" ( (type_descriptor "RowSetEntry **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (pointer_expression "&pRVar3->v" & (field_expression "pRVar3->v" identifier -> field_identifier))))) ;) (if_statement "if (pRVar5 != (RowSetEntry *)0x0) {\n              pRVar5->pLeft = pRVar4;\n              *(RowSetEntry **)&pRVar3->v = pRVar5->pRight;\n              pRVar3 = rowSetNDeepTree((RowSetEntry **)pRVar3,(int)((int)ppFirst + -1));\n              pRVar5->pRight = pRVar3;\n              pRVar4 = pRVar5;\n            }" if (parenthesized_expression "(pRVar5 != (RowSetEntry *)0x0)" ( (binary_expression "pRVar5 != (RowSetEntry *)0x0" identifier != (cast_expression "(RowSetEntry *)0x0" ( (type_descriptor "RowSetEntry *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n              pRVar5->pLeft = pRVar4;\n              *(RowSetEntry **)&pRVar3->v = pRVar5->pRight;\n              pRVar3 = rowSetNDeepTree((RowSetEntry **)pRVar3,(int)((int)ppFirst + -1));\n              pRVar5->pRight = pRVar3;\n              pRVar4 = pRVar5;\n            }" { (expression_statement "pRVar5->pLeft = pRVar4;" (assignment_expression "pRVar5->pLeft = pRVar4" (field_expression "pRVar5->pLeft" identifier -> field_identifier) = identifier) ;) (expression_statement "*(RowSetEntry **)&pRVar3->v = pRVar5->pRight;" (assignment_expression "*(RowSetEntry **)&pRVar3->v = pRVar5->pRight" (pointer_expression "*(RowSetEntry **)&pRVar3->v" * (cast_expression "(RowSetEntry **)&pRVar3->v" ( (type_descriptor "RowSetEntry **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (pointer_expression "&pRVar3->v" & (field_expression "pRVar3->v" identifier -> field_identifier)))) = (field_expression "pRVar5->pRight" identifier -> field_identifier)) ;) (expression_statement "pRVar3 = rowSetNDeepTree((RowSetEntry **)pRVar3,(int)((int)ppFirst + -1));" (assignment_expression "pRVar3 = rowSetNDeepTree((RowSetEntry **)pRVar3,(int)((int)ppFirst + -1))" identifier = (call_expression "rowSetNDeepTree((RowSetEntry **)pRVar3,(int)((int)ppFirst + -1))" identifier (argument_list "((RowSetEntry **)pRVar3,(int)((int)ppFirst + -1))" ( (cast_expression "(RowSetEntry **)pRVar3" ( (type_descriptor "RowSetEntry **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier) , (cast_expression "(int)((int)ppFirst + -1)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((int)ppFirst + -1)" ( (binary_expression "(int)ppFirst + -1" (cast_expression "(int)ppFirst" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))) )))) ;) (expression_statement "pRVar5->pRight = pRVar3;" (assignment_expression "pRVar5->pRight = pRVar3" (field_expression "pRVar5->pRight" identifier -> field_identifier) = identifier) ;) (expression_statement "pRVar4 = pRVar5;" (assignment_expression "pRVar4 = pRVar5" identifier = identifier) ;) })) }))) (return_statement "return pRVar4;" return identifier ;) })) (return_statement "return pRVar4;" return identifier ;) })) (expression_statement "iVar1 = *(int *)&pRVar5->v;" (assignment_expression "iVar1 = *(int *)&pRVar5->v" identifier = (pointer_expression "*(int *)&pRVar5->v" * (cast_expression "(int *)&pRVar5->v" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "&pRVar5->v" & (field_expression "pRVar5->v" identifier -> field_identifier))))) ;) (expression_statement "pRVar3 = pB;" (assignment_expression "pRVar3 = pB" identifier = identifier) ;) (expression_statement "pB = pRVar5;" (assignment_expression "pB = pRVar5" identifier = identifier) ;) (expression_statement "uVar7 = (uint)pRVar5->v;" (assignment_expression "uVar7 = (uint)pRVar5->v" identifier = (cast_expression "(uint)pRVar5->v" ( (type_descriptor "uint" type_identifier) ) (field_expression "pRVar5->v" identifier -> field_identifier))) ;) })) (expression_statement "ppLast = (RowSetEntry **)(uint)(iVar2 < iVar1);" (assignment_expression "ppLast = (RowSetEntry **)(uint)(iVar2 < iVar1)" identifier = (cast_expression "(RowSetEntry **)(uint)(iVar2 < iVar1)" ( (type_descriptor "RowSetEntry **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (call_expression "(uint)(iVar2 < iVar1)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(iVar2 < iVar1)" ( (binary_expression "iVar2 < iVar1" identifier < identifier) ))))) ;) (if_statement "if ((ppLast == (RowSetEntry **)0x0) && ((iVar1 != iVar2 || (uVar7 <= uVar6)))) {\n      pRVar5 = pA->pRight;\n    }\n    else {\n      pRVar3->pRight = pA;\n      pRVar5 = pA->pRight;\n      pRVar3 = pA;\n    }" if (parenthesized_expression "((ppLast == (RowSetEntry **)0x0) && ((iVar1 != iVar2 || (uVar7 <= uVar6))))" ( (binary_expression "(ppLast == (RowSetEntry **)0x0) && ((iVar1 != iVar2 || (uVar7 <= uVar6)))" (parenthesized_expression "(ppLast == (RowSetEntry **)0x0)" ( (binary_expression "ppLast == (RowSetEntry **)0x0" identifier == (cast_expression "(RowSetEntry **)0x0" ( (type_descriptor "RowSetEntry **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) number_literal)) )) && (parenthesized_expression "((iVar1 != iVar2 || (uVar7 <= uVar6)))" ( (parenthesized_expression "(iVar1 != iVar2 || (uVar7 <= uVar6))" ( (binary_expression "iVar1 != iVar2 || (uVar7 <= uVar6)" (binary_expression "iVar1 != iVar2" identifier != identifier) || (parenthesized_expression "(uVar7 <= uVar6)" ( (binary_expression "uVar7 <= uVar6" identifier <= identifier) ))) )) ))) )) (compound_statement "{\n      pRVar5 = pA->pRight;\n    }" { (expression_statement "pRVar5 = pA->pRight;" (assignment_expression "pRVar5 = pA->pRight" identifier = (field_expression "pA->pRight" identifier -> field_identifier)) ;) }) (else_clause "else {\n      pRVar3->pRight = pA;\n      pRVar5 = pA->pRight;\n      pRVar3 = pA;\n    }" else (compound_statement "{\n      pRVar3->pRight = pA;\n      pRVar5 = pA->pRight;\n      pRVar3 = pA;\n    }" { (expression_statement "pRVar3->pRight = pA;" (assignment_expression "pRVar3->pRight = pA" (field_expression "pRVar3->pRight" identifier -> field_identifier) = identifier) ;) (expression_statement "pRVar5 = pA->pRight;" (assignment_expression "pRVar5 = pA->pRight" identifier = (field_expression "pA->pRight" identifier -> field_identifier)) ;) (expression_statement "pRVar3 = pA;" (assignment_expression "pRVar3 = pA" identifier = identifier) ;) }))) (expression_statement "pA = pRVar5;" (assignment_expression "pA = pRVar5" identifier = identifier) ;) (if_statement "if (pA == (RowSetEntry *)0x0) {\n      pRVar3->pRight = pB;\n      goto LAB_0002153c;\n    }" if (parenthesized_expression "(pA == (RowSetEntry *)0x0)" ( (binary_expression "pA == (RowSetEntry *)0x0" identifier == (cast_expression "(RowSetEntry *)0x0" ( (type_descriptor "RowSetEntry *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      pRVar3->pRight = pB;\n      goto LAB_0002153c;\n    }" { (expression_statement "pRVar3->pRight = pB;" (assignment_expression "pRVar3->pRight = pB" (field_expression "pRVar3->pRight" identifier -> field_identifier) = identifier) ;) (goto_statement "goto LAB_0002153c;" goto statement_identifier ;) })) (expression_statement "iVar2 = *(int *)&pA->v;" (assignment_expression "iVar2 = *(int *)&pA->v" identifier = (pointer_expression "*(int *)&pA->v" * (cast_expression "(int *)&pA->v" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "&pA->v" & (field_expression "pA->v" identifier -> field_identifier))))) ;) (expression_statement "uVar6 = (uint)pA->v;" (assignment_expression "uVar6 = (uint)pA->v" identifier = (cast_expression "(uint)pA->v" ( (type_descriptor "uint" type_identifier) ) (field_expression "pA->v" identifier -> field_identifier))) ;) }) while (parenthesized_expression "( true )" ( true )) ;) })))
(translation_unit "int FUN_00021478(int *param_1,int *param_2)\n\n{\n  int iVar1;\n  undefined4 uVar2;\n  int iVar3;\n  int *piVar4;\n  int iVar5;\n  int *piVar6;\n  uint uVar7;\n  uint uVar8;\n  int *piVar9;\n  undefined *puVar10;\n  int iStack_50;\n  int aiStack_20 [2];\n  int local_18;\n  int local_c;\n  \n  puVar10 = PTR___stack_chk_guard_000f5568;\n  iVar3 = *param_1;\n  uVar7 = param_1[1];\n  iVar1 = *param_2;\n  local_c = *(int *)PTR___stack_chk_guard_000f5568;\n  uVar8 = param_2[1];\n  piVar9 = aiStack_20;\n  do {\n    while ((iVar1 < iVar3 || ((iVar3 == iVar1 && (uVar8 < uVar7))))) {\n      piVar9[2] = (int)param_2;\n      piVar6 = (int *)param_2[2];\n      if (piVar6 == (int *)0x0) {\n        param_2[2] = (int)param_1;\n        piVar6 = (int *)0x0;\nLAB_0002153c:\n        if (local_c == *(int *)puVar10) {\n          return local_18;\n        }\n        iVar3 = local_c;\n        puVar10 = PTR___stack_chk_fail_000f5540;\n        (*(code *)PTR___stack_chk_fail_000f5540)();\n        piVar9 = *(int **)(puVar10 + 0xd3ffc);\n        iVar1 = *piVar9;\n        if (*(int *)(iVar3 + 0xc) == 0) {\n          *param_2 = iVar3;\n          piVar4 = *(int **)(iVar3 + 8);\n        }\n        else {\n          FUN_0002156c();\n          *(int *)(iStack_50 + 8) = iVar3;\n          piVar4 = *(int **)(iVar3 + 8);\n        }\n        if (piVar4 == (int *)0x0) {\n          iVar5 = iVar3 + 8;\n          *piVar6 = iVar3;\n        }\n        else {\n          iVar5 = iVar3 + 8;\n          FUN_0002156c(piVar4,iVar5,piVar6);\n        }\n        iVar3 = *piVar9;\n        if (iVar1 != iVar3) {\n          (**(code **)(puVar10 + 0xd3fd4))();\n          iVar3 = *piVar4;\n          if (iVar3 == 0) {\n            return 0;\n          }\n          if (iVar5 == 1) {\n            *piVar4 = *(int *)(iVar3 + 8);\n            *(undefined4 *)(iVar3 + 8) = 0;\n            *(undefined4 *)(iVar3 + 0xc) = 0;\n          }\n          else {\n            iVar3 = FUN_00021630();\n            iVar1 = *piVar4;\n            if (iVar1 != 0) {\n              *(int *)(iVar1 + 0xc) = iVar3;\n              *piVar4 = *(int *)(iVar1 + 8);\n              uVar2 = FUN_00021630(piVar4,iVar5 + -1);\n              *(undefined4 *)(iVar1 + 8) = uVar2;\n              iVar3 = iVar1;\n            }\n          }\n          return iVar3;\n        }\n        return iVar3;\n      }\n      iVar1 = *piVar6;\n      piVar9 = param_2;\n      param_2 = piVar6;\n      uVar8 = piVar6[1];\n    }\n    piVar6 = (int *)(uint)(iVar3 < iVar1);\n    if ((piVar6 == (int *)0x0) && ((iVar1 != iVar3 || (uVar8 <= uVar7)))) {\n      piVar4 = (int *)param_1[2];\n    }\n    else {\n      piVar9[2] = (int)param_1;\n      piVar4 = (int *)param_1[2];\n      piVar9 = param_1;\n    }\n    param_1 = piVar4;\n    if (param_1 == (int *)0x0) {\n      piVar9[2] = (int)param_2;\n      goto LAB_0002153c;\n    }\n    iVar3 = *param_1;\n    uVar7 = param_1[1];\n  } while( true );\n}\n\n" (function_definition "int FUN_00021478(int *param_1,int *param_2)\n\n{\n  int iVar1;\n  undefined4 uVar2;\n  int iVar3;\n  int *piVar4;\n  int iVar5;\n  int *piVar6;\n  uint uVar7;\n  uint uVar8;\n  int *piVar9;\n  undefined *puVar10;\n  int iStack_50;\n  int aiStack_20 [2];\n  int local_18;\n  int local_c;\n  \n  puVar10 = PTR___stack_chk_guard_000f5568;\n  iVar3 = *param_1;\n  uVar7 = param_1[1];\n  iVar1 = *param_2;\n  local_c = *(int *)PTR___stack_chk_guard_000f5568;\n  uVar8 = param_2[1];\n  piVar9 = aiStack_20;\n  do {\n    while ((iVar1 < iVar3 || ((iVar3 == iVar1 && (uVar8 < uVar7))))) {\n      piVar9[2] = (int)param_2;\n      piVar6 = (int *)param_2[2];\n      if (piVar6 == (int *)0x0) {\n        param_2[2] = (int)param_1;\n        piVar6 = (int *)0x0;\nLAB_0002153c:\n        if (local_c == *(int *)puVar10) {\n          return local_18;\n        }\n        iVar3 = local_c;\n        puVar10 = PTR___stack_chk_fail_000f5540;\n        (*(code *)PTR___stack_chk_fail_000f5540)();\n        piVar9 = *(int **)(puVar10 + 0xd3ffc);\n        iVar1 = *piVar9;\n        if (*(int *)(iVar3 + 0xc) == 0) {\n          *param_2 = iVar3;\n          piVar4 = *(int **)(iVar3 + 8);\n        }\n        else {\n          FUN_0002156c();\n          *(int *)(iStack_50 + 8) = iVar3;\n          piVar4 = *(int **)(iVar3 + 8);\n        }\n        if (piVar4 == (int *)0x0) {\n          iVar5 = iVar3 + 8;\n          *piVar6 = iVar3;\n        }\n        else {\n          iVar5 = iVar3 + 8;\n          FUN_0002156c(piVar4,iVar5,piVar6);\n        }\n        iVar3 = *piVar9;\n        if (iVar1 != iVar3) {\n          (**(code **)(puVar10 + 0xd3fd4))();\n          iVar3 = *piVar4;\n          if (iVar3 == 0) {\n            return 0;\n          }\n          if (iVar5 == 1) {\n            *piVar4 = *(int *)(iVar3 + 8);\n            *(undefined4 *)(iVar3 + 8) = 0;\n            *(undefined4 *)(iVar3 + 0xc) = 0;\n          }\n          else {\n            iVar3 = FUN_00021630();\n            iVar1 = *piVar4;\n            if (iVar1 != 0) {\n              *(int *)(iVar1 + 0xc) = iVar3;\n              *piVar4 = *(int *)(iVar1 + 8);\n              uVar2 = FUN_00021630(piVar4,iVar5 + -1);\n              *(undefined4 *)(iVar1 + 8) = uVar2;\n              iVar3 = iVar1;\n            }\n          }\n          return iVar3;\n        }\n        return iVar3;\n      }\n      iVar1 = *piVar6;\n      piVar9 = param_2;\n      param_2 = piVar6;\n      uVar8 = piVar6[1];\n    }\n    piVar6 = (int *)(uint)(iVar3 < iVar1);\n    if ((piVar6 == (int *)0x0) && ((iVar1 != iVar3 || (uVar8 <= uVar7)))) {\n      piVar4 = (int *)param_1[2];\n    }\n    else {\n      piVar9[2] = (int)param_1;\n      piVar4 = (int *)param_1[2];\n      piVar9 = param_1;\n    }\n    param_1 = piVar4;\n    if (param_1 == (int *)0x0) {\n      piVar9[2] = (int)param_2;\n      goto LAB_0002153c;\n    }\n    iVar3 = *param_1;\n    uVar7 = param_1[1];\n  } while( true );\n}" primitive_type (function_declarator "FUN_00021478(int *param_1,int *param_2)" identifier (parameter_list "(int *param_1,int *param_2)" ( (parameter_declaration "int *param_1" primitive_type (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "int *param_2" primitive_type (pointer_declarator "*param_2" * identifier)) ))) (compound_statement "{\n  int iVar1;\n  undefined4 uVar2;\n  int iVar3;\n  int *piVar4;\n  int iVar5;\n  int *piVar6;\n  uint uVar7;\n  uint uVar8;\n  int *piVar9;\n  undefined *puVar10;\n  int iStack_50;\n  int aiStack_20 [2];\n  int local_18;\n  int local_c;\n  \n  puVar10 = PTR___stack_chk_guard_000f5568;\n  iVar3 = *param_1;\n  uVar7 = param_1[1];\n  iVar1 = *param_2;\n  local_c = *(int *)PTR___stack_chk_guard_000f5568;\n  uVar8 = param_2[1];\n  piVar9 = aiStack_20;\n  do {\n    while ((iVar1 < iVar3 || ((iVar3 == iVar1 && (uVar8 < uVar7))))) {\n      piVar9[2] = (int)param_2;\n      piVar6 = (int *)param_2[2];\n      if (piVar6 == (int *)0x0) {\n        param_2[2] = (int)param_1;\n        piVar6 = (int *)0x0;\nLAB_0002153c:\n        if (local_c == *(int *)puVar10) {\n          return local_18;\n        }\n        iVar3 = local_c;\n        puVar10 = PTR___stack_chk_fail_000f5540;\n        (*(code *)PTR___stack_chk_fail_000f5540)();\n        piVar9 = *(int **)(puVar10 + 0xd3ffc);\n        iVar1 = *piVar9;\n        if (*(int *)(iVar3 + 0xc) == 0) {\n          *param_2 = iVar3;\n          piVar4 = *(int **)(iVar3 + 8);\n        }\n        else {\n          FUN_0002156c();\n          *(int *)(iStack_50 + 8) = iVar3;\n          piVar4 = *(int **)(iVar3 + 8);\n        }\n        if (piVar4 == (int *)0x0) {\n          iVar5 = iVar3 + 8;\n          *piVar6 = iVar3;\n        }\n        else {\n          iVar5 = iVar3 + 8;\n          FUN_0002156c(piVar4,iVar5,piVar6);\n        }\n        iVar3 = *piVar9;\n        if (iVar1 != iVar3) {\n          (**(code **)(puVar10 + 0xd3fd4))();\n          iVar3 = *piVar4;\n          if (iVar3 == 0) {\n            return 0;\n          }\n          if (iVar5 == 1) {\n            *piVar4 = *(int *)(iVar3 + 8);\n            *(undefined4 *)(iVar3 + 8) = 0;\n            *(undefined4 *)(iVar3 + 0xc) = 0;\n          }\n          else {\n            iVar3 = FUN_00021630();\n            iVar1 = *piVar4;\n            if (iVar1 != 0) {\n              *(int *)(iVar1 + 0xc) = iVar3;\n              *piVar4 = *(int *)(iVar1 + 8);\n              uVar2 = FUN_00021630(piVar4,iVar5 + -1);\n              *(undefined4 *)(iVar1 + 8) = uVar2;\n              iVar3 = iVar1;\n            }\n          }\n          return iVar3;\n        }\n        return iVar3;\n      }\n      iVar1 = *piVar6;\n      piVar9 = param_2;\n      param_2 = piVar6;\n      uVar8 = piVar6[1];\n    }\n    piVar6 = (int *)(uint)(iVar3 < iVar1);\n    if ((piVar6 == (int *)0x0) && ((iVar1 != iVar3 || (uVar8 <= uVar7)))) {\n      piVar4 = (int *)param_1[2];\n    }\n    else {\n      piVar9[2] = (int)param_1;\n      piVar4 = (int *)param_1[2];\n      piVar9 = param_1;\n    }\n    param_1 = piVar4;\n    if (param_1 == (int *)0x0) {\n      piVar9[2] = (int)param_2;\n      goto LAB_0002153c;\n    }\n    iVar3 = *param_1;\n    uVar7 = param_1[1];\n  } while( true );\n}" { (declaration "int iVar1;" primitive_type identifier ;) (declaration "undefined4 uVar2;" type_identifier identifier ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "int *piVar4;" primitive_type (pointer_declarator "*piVar4" * identifier) ;) (declaration "int iVar5;" primitive_type identifier ;) (declaration "int *piVar6;" primitive_type (pointer_declarator "*piVar6" * identifier) ;) (declaration "uint uVar7;" type_identifier identifier ;) (declaration "uint uVar8;" type_identifier identifier ;) (declaration "int *piVar9;" primitive_type (pointer_declarator "*piVar9" * identifier) ;) (declaration "undefined *puVar10;" type_identifier (pointer_declarator "*puVar10" * identifier) ;) (declaration "int iStack_50;" primitive_type identifier ;) (declaration "int aiStack_20 [2];" primitive_type (array_declarator "aiStack_20 [2]" identifier [ number_literal ]) ;) (declaration "int local_18;" primitive_type identifier ;) (declaration "int local_c;" primitive_type identifier ;) (expression_statement "puVar10 = PTR___stack_chk_guard_000f5568;" (assignment_expression "puVar10 = PTR___stack_chk_guard_000f5568" identifier = identifier) ;) (expression_statement "iVar3 = *param_1;" (assignment_expression "iVar3 = *param_1" identifier = (pointer_expression "*param_1" * identifier)) ;) (expression_statement "uVar7 = param_1[1];" (assignment_expression "uVar7 = param_1[1]" identifier = (subscript_expression "param_1[1]" identifier [ number_literal ])) ;) (expression_statement "iVar1 = *param_2;" (assignment_expression "iVar1 = *param_2" identifier = (pointer_expression "*param_2" * identifier)) ;) (expression_statement "local_c = *(int *)PTR___stack_chk_guard_000f5568;" (assignment_expression "local_c = *(int *)PTR___stack_chk_guard_000f5568" identifier = (pointer_expression "*(int *)PTR___stack_chk_guard_000f5568" * (cast_expression "(int *)PTR___stack_chk_guard_000f5568" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) ;) (expression_statement "uVar8 = param_2[1];" (assignment_expression "uVar8 = param_2[1]" identifier = (subscript_expression "param_2[1]" identifier [ number_literal ])) ;) (expression_statement "piVar9 = aiStack_20;" (assignment_expression "piVar9 = aiStack_20" identifier = identifier) ;) (do_statement "do {\n    while ((iVar1 < iVar3 || ((iVar3 == iVar1 && (uVar8 < uVar7))))) {\n      piVar9[2] = (int)param_2;\n      piVar6 = (int *)param_2[2];\n      if (piVar6 == (int *)0x0) {\n        param_2[2] = (int)param_1;\n        piVar6 = (int *)0x0;\nLAB_0002153c:\n        if (local_c == *(int *)puVar10) {\n          return local_18;\n        }\n        iVar3 = local_c;\n        puVar10 = PTR___stack_chk_fail_000f5540;\n        (*(code *)PTR___stack_chk_fail_000f5540)();\n        piVar9 = *(int **)(puVar10 + 0xd3ffc);\n        iVar1 = *piVar9;\n        if (*(int *)(iVar3 + 0xc) == 0) {\n          *param_2 = iVar3;\n          piVar4 = *(int **)(iVar3 + 8);\n        }\n        else {\n          FUN_0002156c();\n          *(int *)(iStack_50 + 8) = iVar3;\n          piVar4 = *(int **)(iVar3 + 8);\n        }\n        if (piVar4 == (int *)0x0) {\n          iVar5 = iVar3 + 8;\n          *piVar6 = iVar3;\n        }\n        else {\n          iVar5 = iVar3 + 8;\n          FUN_0002156c(piVar4,iVar5,piVar6);\n        }\n        iVar3 = *piVar9;\n        if (iVar1 != iVar3) {\n          (**(code **)(puVar10 + 0xd3fd4))();\n          iVar3 = *piVar4;\n          if (iVar3 == 0) {\n            return 0;\n          }\n          if (iVar5 == 1) {\n            *piVar4 = *(int *)(iVar3 + 8);\n            *(undefined4 *)(iVar3 + 8) = 0;\n            *(undefined4 *)(iVar3 + 0xc) = 0;\n          }\n          else {\n            iVar3 = FUN_00021630();\n            iVar1 = *piVar4;\n            if (iVar1 != 0) {\n              *(int *)(iVar1 + 0xc) = iVar3;\n              *piVar4 = *(int *)(iVar1 + 8);\n              uVar2 = FUN_00021630(piVar4,iVar5 + -1);\n              *(undefined4 *)(iVar1 + 8) = uVar2;\n              iVar3 = iVar1;\n            }\n          }\n          return iVar3;\n        }\n        return iVar3;\n      }\n      iVar1 = *piVar6;\n      piVar9 = param_2;\n      param_2 = piVar6;\n      uVar8 = piVar6[1];\n    }\n    piVar6 = (int *)(uint)(iVar3 < iVar1);\n    if ((piVar6 == (int *)0x0) && ((iVar1 != iVar3 || (uVar8 <= uVar7)))) {\n      piVar4 = (int *)param_1[2];\n    }\n    else {\n      piVar9[2] = (int)param_1;\n      piVar4 = (int *)param_1[2];\n      piVar9 = param_1;\n    }\n    param_1 = piVar4;\n    if (param_1 == (int *)0x0) {\n      piVar9[2] = (int)param_2;\n      goto LAB_0002153c;\n    }\n    iVar3 = *param_1;\n    uVar7 = param_1[1];\n  } while( true );" do (compound_statement "{\n    while ((iVar1 < iVar3 || ((iVar3 == iVar1 && (uVar8 < uVar7))))) {\n      piVar9[2] = (int)param_2;\n      piVar6 = (int *)param_2[2];\n      if (piVar6 == (int *)0x0) {\n        param_2[2] = (int)param_1;\n        piVar6 = (int *)0x0;\nLAB_0002153c:\n        if (local_c == *(int *)puVar10) {\n          return local_18;\n        }\n        iVar3 = local_c;\n        puVar10 = PTR___stack_chk_fail_000f5540;\n        (*(code *)PTR___stack_chk_fail_000f5540)();\n        piVar9 = *(int **)(puVar10 + 0xd3ffc);\n        iVar1 = *piVar9;\n        if (*(int *)(iVar3 + 0xc) == 0) {\n          *param_2 = iVar3;\n          piVar4 = *(int **)(iVar3 + 8);\n        }\n        else {\n          FUN_0002156c();\n          *(int *)(iStack_50 + 8) = iVar3;\n          piVar4 = *(int **)(iVar3 + 8);\n        }\n        if (piVar4 == (int *)0x0) {\n          iVar5 = iVar3 + 8;\n          *piVar6 = iVar3;\n        }\n        else {\n          iVar5 = iVar3 + 8;\n          FUN_0002156c(piVar4,iVar5,piVar6);\n        }\n        iVar3 = *piVar9;\n        if (iVar1 != iVar3) {\n          (**(code **)(puVar10 + 0xd3fd4))();\n          iVar3 = *piVar4;\n          if (iVar3 == 0) {\n            return 0;\n          }\n          if (iVar5 == 1) {\n            *piVar4 = *(int *)(iVar3 + 8);\n            *(undefined4 *)(iVar3 + 8) = 0;\n            *(undefined4 *)(iVar3 + 0xc) = 0;\n          }\n          else {\n            iVar3 = FUN_00021630();\n            iVar1 = *piVar4;\n            if (iVar1 != 0) {\n              *(int *)(iVar1 + 0xc) = iVar3;\n              *piVar4 = *(int *)(iVar1 + 8);\n              uVar2 = FUN_00021630(piVar4,iVar5 + -1);\n              *(undefined4 *)(iVar1 + 8) = uVar2;\n              iVar3 = iVar1;\n            }\n          }\n          return iVar3;\n        }\n        return iVar3;\n      }\n      iVar1 = *piVar6;\n      piVar9 = param_2;\n      param_2 = piVar6;\n      uVar8 = piVar6[1];\n    }\n    piVar6 = (int *)(uint)(iVar3 < iVar1);\n    if ((piVar6 == (int *)0x0) && ((iVar1 != iVar3 || (uVar8 <= uVar7)))) {\n      piVar4 = (int *)param_1[2];\n    }\n    else {\n      piVar9[2] = (int)param_1;\n      piVar4 = (int *)param_1[2];\n      piVar9 = param_1;\n    }\n    param_1 = piVar4;\n    if (param_1 == (int *)0x0) {\n      piVar9[2] = (int)param_2;\n      goto LAB_0002153c;\n    }\n    iVar3 = *param_1;\n    uVar7 = param_1[1];\n  }" { (while_statement "while ((iVar1 < iVar3 || ((iVar3 == iVar1 && (uVar8 < uVar7))))) {\n      piVar9[2] = (int)param_2;\n      piVar6 = (int *)param_2[2];\n      if (piVar6 == (int *)0x0) {\n        param_2[2] = (int)param_1;\n        piVar6 = (int *)0x0;\nLAB_0002153c:\n        if (local_c == *(int *)puVar10) {\n          return local_18;\n        }\n        iVar3 = local_c;\n        puVar10 = PTR___stack_chk_fail_000f5540;\n        (*(code *)PTR___stack_chk_fail_000f5540)();\n        piVar9 = *(int **)(puVar10 + 0xd3ffc);\n        iVar1 = *piVar9;\n        if (*(int *)(iVar3 + 0xc) == 0) {\n          *param_2 = iVar3;\n          piVar4 = *(int **)(iVar3 + 8);\n        }\n        else {\n          FUN_0002156c();\n          *(int *)(iStack_50 + 8) = iVar3;\n          piVar4 = *(int **)(iVar3 + 8);\n        }\n        if (piVar4 == (int *)0x0) {\n          iVar5 = iVar3 + 8;\n          *piVar6 = iVar3;\n        }\n        else {\n          iVar5 = iVar3 + 8;\n          FUN_0002156c(piVar4,iVar5,piVar6);\n        }\n        iVar3 = *piVar9;\n        if (iVar1 != iVar3) {\n          (**(code **)(puVar10 + 0xd3fd4))();\n          iVar3 = *piVar4;\n          if (iVar3 == 0) {\n            return 0;\n          }\n          if (iVar5 == 1) {\n            *piVar4 = *(int *)(iVar3 + 8);\n            *(undefined4 *)(iVar3 + 8) = 0;\n            *(undefined4 *)(iVar3 + 0xc) = 0;\n          }\n          else {\n            iVar3 = FUN_00021630();\n            iVar1 = *piVar4;\n            if (iVar1 != 0) {\n              *(int *)(iVar1 + 0xc) = iVar3;\n              *piVar4 = *(int *)(iVar1 + 8);\n              uVar2 = FUN_00021630(piVar4,iVar5 + -1);\n              *(undefined4 *)(iVar1 + 8) = uVar2;\n              iVar3 = iVar1;\n            }\n          }\n          return iVar3;\n        }\n        return iVar3;\n      }\n      iVar1 = *piVar6;\n      piVar9 = param_2;\n      param_2 = piVar6;\n      uVar8 = piVar6[1];\n    }" while (parenthesized_expression "((iVar1 < iVar3 || ((iVar3 == iVar1 && (uVar8 < uVar7)))))" ( (parenthesized_expression "(iVar1 < iVar3 || ((iVar3 == iVar1 && (uVar8 < uVar7))))" ( (binary_expression "iVar1 < iVar3 || ((iVar3 == iVar1 && (uVar8 < uVar7)))" (binary_expression "iVar1 < iVar3" identifier < identifier) || (parenthesized_expression "((iVar3 == iVar1 && (uVar8 < uVar7)))" ( (parenthesized_expression "(iVar3 == iVar1 && (uVar8 < uVar7))" ( (binary_expression "iVar3 == iVar1 && (uVar8 < uVar7)" (binary_expression "iVar3 == iVar1" identifier == identifier) && (parenthesized_expression "(uVar8 < uVar7)" ( (binary_expression "uVar8 < uVar7" identifier < identifier) ))) )) ))) )) )) (compound_statement "{\n      piVar9[2] = (int)param_2;\n      piVar6 = (int *)param_2[2];\n      if (piVar6 == (int *)0x0) {\n        param_2[2] = (int)param_1;\n        piVar6 = (int *)0x0;\nLAB_0002153c:\n        if (local_c == *(int *)puVar10) {\n          return local_18;\n        }\n        iVar3 = local_c;\n        puVar10 = PTR___stack_chk_fail_000f5540;\n        (*(code *)PTR___stack_chk_fail_000f5540)();\n        piVar9 = *(int **)(puVar10 + 0xd3ffc);\n        iVar1 = *piVar9;\n        if (*(int *)(iVar3 + 0xc) == 0) {\n          *param_2 = iVar3;\n          piVar4 = *(int **)(iVar3 + 8);\n        }\n        else {\n          FUN_0002156c();\n          *(int *)(iStack_50 + 8) = iVar3;\n          piVar4 = *(int **)(iVar3 + 8);\n        }\n        if (piVar4 == (int *)0x0) {\n          iVar5 = iVar3 + 8;\n          *piVar6 = iVar3;\n        }\n        else {\n          iVar5 = iVar3 + 8;\n          FUN_0002156c(piVar4,iVar5,piVar6);\n        }\n        iVar3 = *piVar9;\n        if (iVar1 != iVar3) {\n          (**(code **)(puVar10 + 0xd3fd4))();\n          iVar3 = *piVar4;\n          if (iVar3 == 0) {\n            return 0;\n          }\n          if (iVar5 == 1) {\n            *piVar4 = *(int *)(iVar3 + 8);\n            *(undefined4 *)(iVar3 + 8) = 0;\n            *(undefined4 *)(iVar3 + 0xc) = 0;\n          }\n          else {\n            iVar3 = FUN_00021630();\n            iVar1 = *piVar4;\n            if (iVar1 != 0) {\n              *(int *)(iVar1 + 0xc) = iVar3;\n              *piVar4 = *(int *)(iVar1 + 8);\n              uVar2 = FUN_00021630(piVar4,iVar5 + -1);\n              *(undefined4 *)(iVar1 + 8) = uVar2;\n              iVar3 = iVar1;\n            }\n          }\n          return iVar3;\n        }\n        return iVar3;\n      }\n      iVar1 = *piVar6;\n      piVar9 = param_2;\n      param_2 = piVar6;\n      uVar8 = piVar6[1];\n    }" { (expression_statement "piVar9[2] = (int)param_2;" (assignment_expression "piVar9[2] = (int)param_2" (subscript_expression "piVar9[2]" identifier [ number_literal ]) = (cast_expression "(int)param_2" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "piVar6 = (int *)param_2[2];" (assignment_expression "piVar6 = (int *)param_2[2]" identifier = (cast_expression "(int *)param_2[2]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_2[2]" identifier [ number_literal ]))) ;) (if_statement "if (piVar6 == (int *)0x0) {\n        param_2[2] = (int)param_1;\n        piVar6 = (int *)0x0;\nLAB_0002153c:\n        if (local_c == *(int *)puVar10) {\n          return local_18;\n        }\n        iVar3 = local_c;\n        puVar10 = PTR___stack_chk_fail_000f5540;\n        (*(code *)PTR___stack_chk_fail_000f5540)();\n        piVar9 = *(int **)(puVar10 + 0xd3ffc);\n        iVar1 = *piVar9;\n        if (*(int *)(iVar3 + 0xc) == 0) {\n          *param_2 = iVar3;\n          piVar4 = *(int **)(iVar3 + 8);\n        }\n        else {\n          FUN_0002156c();\n          *(int *)(iStack_50 + 8) = iVar3;\n          piVar4 = *(int **)(iVar3 + 8);\n        }\n        if (piVar4 == (int *)0x0) {\n          iVar5 = iVar3 + 8;\n          *piVar6 = iVar3;\n        }\n        else {\n          iVar5 = iVar3 + 8;\n          FUN_0002156c(piVar4,iVar5,piVar6);\n        }\n        iVar3 = *piVar9;\n        if (iVar1 != iVar3) {\n          (**(code **)(puVar10 + 0xd3fd4))();\n          iVar3 = *piVar4;\n          if (iVar3 == 0) {\n            return 0;\n          }\n          if (iVar5 == 1) {\n            *piVar4 = *(int *)(iVar3 + 8);\n            *(undefined4 *)(iVar3 + 8) = 0;\n            *(undefined4 *)(iVar3 + 0xc) = 0;\n          }\n          else {\n            iVar3 = FUN_00021630();\n            iVar1 = *piVar4;\n            if (iVar1 != 0) {\n              *(int *)(iVar1 + 0xc) = iVar3;\n              *piVar4 = *(int *)(iVar1 + 8);\n              uVar2 = FUN_00021630(piVar4,iVar5 + -1);\n              *(undefined4 *)(iVar1 + 8) = uVar2;\n              iVar3 = iVar1;\n            }\n          }\n          return iVar3;\n        }\n        return iVar3;\n      }" if (parenthesized_expression "(piVar6 == (int *)0x0)" ( (binary_expression "piVar6 == (int *)0x0" identifier == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        param_2[2] = (int)param_1;\n        piVar6 = (int *)0x0;\nLAB_0002153c:\n        if (local_c == *(int *)puVar10) {\n          return local_18;\n        }\n        iVar3 = local_c;\n        puVar10 = PTR___stack_chk_fail_000f5540;\n        (*(code *)PTR___stack_chk_fail_000f5540)();\n        piVar9 = *(int **)(puVar10 + 0xd3ffc);\n        iVar1 = *piVar9;\n        if (*(int *)(iVar3 + 0xc) == 0) {\n          *param_2 = iVar3;\n          piVar4 = *(int **)(iVar3 + 8);\n        }\n        else {\n          FUN_0002156c();\n          *(int *)(iStack_50 + 8) = iVar3;\n          piVar4 = *(int **)(iVar3 + 8);\n        }\n        if (piVar4 == (int *)0x0) {\n          iVar5 = iVar3 + 8;\n          *piVar6 = iVar3;\n        }\n        else {\n          iVar5 = iVar3 + 8;\n          FUN_0002156c(piVar4,iVar5,piVar6);\n        }\n        iVar3 = *piVar9;\n        if (iVar1 != iVar3) {\n          (**(code **)(puVar10 + 0xd3fd4))();\n          iVar3 = *piVar4;\n          if (iVar3 == 0) {\n            return 0;\n          }\n          if (iVar5 == 1) {\n            *piVar4 = *(int *)(iVar3 + 8);\n            *(undefined4 *)(iVar3 + 8) = 0;\n            *(undefined4 *)(iVar3 + 0xc) = 0;\n          }\n          else {\n            iVar3 = FUN_00021630();\n            iVar1 = *piVar4;\n            if (iVar1 != 0) {\n              *(int *)(iVar1 + 0xc) = iVar3;\n              *piVar4 = *(int *)(iVar1 + 8);\n              uVar2 = FUN_00021630(piVar4,iVar5 + -1);\n              *(undefined4 *)(iVar1 + 8) = uVar2;\n              iVar3 = iVar1;\n            }\n          }\n          return iVar3;\n        }\n        return iVar3;\n      }" { (expression_statement "param_2[2] = (int)param_1;" (assignment_expression "param_2[2] = (int)param_1" (subscript_expression "param_2[2]" identifier [ number_literal ]) = (cast_expression "(int)param_1" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "piVar6 = (int *)0x0;" (assignment_expression "piVar6 = (int *)0x0" identifier = (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (labeled_statement "LAB_0002153c:\n        if (local_c == *(int *)puVar10) {\n          return local_18;\n        }" statement_identifier : (if_statement "if (local_c == *(int *)puVar10) {\n          return local_18;\n        }" if (parenthesized_expression "(local_c == *(int *)puVar10)" ( (binary_expression "local_c == *(int *)puVar10" identifier == (pointer_expression "*(int *)puVar10" * (cast_expression "(int *)puVar10" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) )) (compound_statement "{\n          return local_18;\n        }" { (return_statement "return local_18;" return identifier ;) }))) (expression_statement "iVar3 = local_c;" (assignment_expression "iVar3 = local_c" identifier = identifier) ;) (expression_statement "puVar10 = PTR___stack_chk_fail_000f5540;" (assignment_expression "puVar10 = PTR___stack_chk_fail_000f5540" identifier = identifier) ;) (expression_statement "(*(code *)PTR___stack_chk_fail_000f5540)();" (call_expression "(*(code *)PTR___stack_chk_fail_000f5540)()" (parenthesized_expression "(*(code *)PTR___stack_chk_fail_000f5540)" ( (pointer_expression "*(code *)PTR___stack_chk_fail_000f5540" * (cast_expression "(code *)PTR___stack_chk_fail_000f5540" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) (expression_statement "piVar9 = *(int **)(puVar10 + 0xd3ffc);" (assignment_expression "piVar9 = *(int **)(puVar10 + 0xd3ffc)" identifier = (pointer_expression "*(int **)(puVar10 + 0xd3ffc)" * (cast_expression "(int **)(puVar10 + 0xd3ffc)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar10 + 0xd3ffc)" ( (binary_expression "puVar10 + 0xd3ffc" identifier + number_literal) ))))) ;) (expression_statement "iVar1 = *piVar9;" (assignment_expression "iVar1 = *piVar9" identifier = (pointer_expression "*piVar9" * identifier)) ;) (if_statement "if (*(int *)(iVar3 + 0xc) == 0) {\n          *param_2 = iVar3;\n          piVar4 = *(int **)(iVar3 + 8);\n        }\n        else {\n          FUN_0002156c();\n          *(int *)(iStack_50 + 8) = iVar3;\n          piVar4 = *(int **)(iVar3 + 8);\n        }" if (parenthesized_expression "(*(int *)(iVar3 + 0xc) == 0)" ( (binary_expression "*(int *)(iVar3 + 0xc) == 0" (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) )))) == number_literal) )) (compound_statement "{\n          *param_2 = iVar3;\n          piVar4 = *(int **)(iVar3 + 8);\n        }" { (expression_statement "*param_2 = iVar3;" (assignment_expression "*param_2 = iVar3" (pointer_expression "*param_2" * identifier) = identifier) ;) (expression_statement "piVar4 = *(int **)(iVar3 + 8);" (assignment_expression "piVar4 = *(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) ))))) ;) }) (else_clause "else {\n          FUN_0002156c();\n          *(int *)(iStack_50 + 8) = iVar3;\n          piVar4 = *(int **)(iVar3 + 8);\n        }" else (compound_statement "{\n          FUN_0002156c();\n          *(int *)(iStack_50 + 8) = iVar3;\n          piVar4 = *(int **)(iVar3 + 8);\n        }" { (expression_statement "FUN_0002156c();" (call_expression "FUN_0002156c()" identifier (argument_list "()" ( ))) ;) (expression_statement "*(int *)(iStack_50 + 8) = iVar3;" (assignment_expression "*(int *)(iStack_50 + 8) = iVar3" (pointer_expression "*(int *)(iStack_50 + 8)" * (cast_expression "(int *)(iStack_50 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iStack_50 + 8)" ( (binary_expression "iStack_50 + 8" identifier + number_literal) )))) = identifier) ;) (expression_statement "piVar4 = *(int **)(iVar3 + 8);" (assignment_expression "piVar4 = *(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) ))))) ;) }))) (if_statement "if (piVar4 == (int *)0x0) {\n          iVar5 = iVar3 + 8;\n          *piVar6 = iVar3;\n        }\n        else {\n          iVar5 = iVar3 + 8;\n          FUN_0002156c(piVar4,iVar5,piVar6);\n        }" if (parenthesized_expression "(piVar4 == (int *)0x0)" ( (binary_expression "piVar4 == (int *)0x0" identifier == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          iVar5 = iVar3 + 8;\n          *piVar6 = iVar3;\n        }" { (expression_statement "iVar5 = iVar3 + 8;" (assignment_expression "iVar5 = iVar3 + 8" identifier = (binary_expression "iVar3 + 8" identifier + number_literal)) ;) (expression_statement "*piVar6 = iVar3;" (assignment_expression "*piVar6 = iVar3" (pointer_expression "*piVar6" * identifier) = identifier) ;) }) (else_clause "else {\n          iVar5 = iVar3 + 8;\n          FUN_0002156c(piVar4,iVar5,piVar6);\n        }" else (compound_statement "{\n          iVar5 = iVar3 + 8;\n          FUN_0002156c(piVar4,iVar5,piVar6);\n        }" { (expression_statement "iVar5 = iVar3 + 8;" (assignment_expression "iVar5 = iVar3 + 8" identifier = (binary_expression "iVar3 + 8" identifier + number_literal)) ;) (expression_statement "FUN_0002156c(piVar4,iVar5,piVar6);" (call_expression "FUN_0002156c(piVar4,iVar5,piVar6)" identifier (argument_list "(piVar4,iVar5,piVar6)" ( identifier , identifier , identifier ))) ;) }))) (expression_statement "iVar3 = *piVar9;" (assignment_expression "iVar3 = *piVar9" identifier = (pointer_expression "*piVar9" * identifier)) ;) (if_statement "if (iVar1 != iVar3) {\n          (**(code **)(puVar10 + 0xd3fd4))();\n          iVar3 = *piVar4;\n          if (iVar3 == 0) {\n            return 0;\n          }\n          if (iVar5 == 1) {\n            *piVar4 = *(int *)(iVar3 + 8);\n            *(undefined4 *)(iVar3 + 8) = 0;\n            *(undefined4 *)(iVar3 + 0xc) = 0;\n          }\n          else {\n            iVar3 = FUN_00021630();\n            iVar1 = *piVar4;\n            if (iVar1 != 0) {\n              *(int *)(iVar1 + 0xc) = iVar3;\n              *piVar4 = *(int *)(iVar1 + 8);\n              uVar2 = FUN_00021630(piVar4,iVar5 + -1);\n              *(undefined4 *)(iVar1 + 8) = uVar2;\n              iVar3 = iVar1;\n            }\n          }\n          return iVar3;\n        }" if (parenthesized_expression "(iVar1 != iVar3)" ( (binary_expression "iVar1 != iVar3" identifier != identifier) )) (compound_statement "{\n          (**(code **)(puVar10 + 0xd3fd4))();\n          iVar3 = *piVar4;\n          if (iVar3 == 0) {\n            return 0;\n          }\n          if (iVar5 == 1) {\n            *piVar4 = *(int *)(iVar3 + 8);\n            *(undefined4 *)(iVar3 + 8) = 0;\n            *(undefined4 *)(iVar3 + 0xc) = 0;\n          }\n          else {\n            iVar3 = FUN_00021630();\n            iVar1 = *piVar4;\n            if (iVar1 != 0) {\n              *(int *)(iVar1 + 0xc) = iVar3;\n              *piVar4 = *(int *)(iVar1 + 8);\n              uVar2 = FUN_00021630(piVar4,iVar5 + -1);\n              *(undefined4 *)(iVar1 + 8) = uVar2;\n              iVar3 = iVar1;\n            }\n          }\n          return iVar3;\n        }" { (expression_statement "(**(code **)(puVar10 + 0xd3fd4))();" (call_expression "(**(code **)(puVar10 + 0xd3fd4))()" (parenthesized_expression "(**(code **)(puVar10 + 0xd3fd4))" ( (pointer_expression "**(code **)(puVar10 + 0xd3fd4)" * (pointer_expression "*(code **)(puVar10 + 0xd3fd4)" * (cast_expression "(code **)(puVar10 + 0xd3fd4)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar10 + 0xd3fd4)" ( (binary_expression "puVar10 + 0xd3fd4" identifier + number_literal) ))))) )) (argument_list "()" ( ))) ;) (expression_statement "iVar3 = *piVar4;" (assignment_expression "iVar3 = *piVar4" identifier = (pointer_expression "*piVar4" * identifier)) ;) (if_statement "if (iVar3 == 0) {\n            return 0;\n          }" if (parenthesized_expression "(iVar3 == 0)" ( (binary_expression "iVar3 == 0" identifier == number_literal) )) (compound_statement "{\n            return 0;\n          }" { (return_statement "return 0;" return number_literal ;) })) (if_statement "if (iVar5 == 1) {\n            *piVar4 = *(int *)(iVar3 + 8);\n            *(undefined4 *)(iVar3 + 8) = 0;\n            *(undefined4 *)(iVar3 + 0xc) = 0;\n          }\n          else {\n            iVar3 = FUN_00021630();\n            iVar1 = *piVar4;\n            if (iVar1 != 0) {\n              *(int *)(iVar1 + 0xc) = iVar3;\n              *piVar4 = *(int *)(iVar1 + 8);\n              uVar2 = FUN_00021630(piVar4,iVar5 + -1);\n              *(undefined4 *)(iVar1 + 8) = uVar2;\n              iVar3 = iVar1;\n            }\n          }" if (parenthesized_expression "(iVar5 == 1)" ( (binary_expression "iVar5 == 1" identifier == number_literal) )) (compound_statement "{\n            *piVar4 = *(int *)(iVar3 + 8);\n            *(undefined4 *)(iVar3 + 8) = 0;\n            *(undefined4 *)(iVar3 + 0xc) = 0;\n          }" { (expression_statement "*piVar4 = *(int *)(iVar3 + 8);" (assignment_expression "*piVar4 = *(int *)(iVar3 + 8)" (pointer_expression "*piVar4" * identifier) = (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) ))))) ;) (expression_statement "*(undefined4 *)(iVar3 + 8) = 0;" (assignment_expression "*(undefined4 *)(iVar3 + 8) = 0" (pointer_expression "*(undefined4 *)(iVar3 + 8)" * (cast_expression "(undefined4 *)(iVar3 + 8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 8)" ( (binary_expression "iVar3 + 8" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)(iVar3 + 0xc) = 0;" (assignment_expression "*(undefined4 *)(iVar3 + 0xc) = 0" (pointer_expression "*(undefined4 *)(iVar3 + 0xc)" * (cast_expression "(undefined4 *)(iVar3 + 0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 0xc)" ( (binary_expression "iVar3 + 0xc" identifier + number_literal) )))) = number_literal) ;) }) (else_clause "else {\n            iVar3 = FUN_00021630();\n            iVar1 = *piVar4;\n            if (iVar1 != 0) {\n              *(int *)(iVar1 + 0xc) = iVar3;\n              *piVar4 = *(int *)(iVar1 + 8);\n              uVar2 = FUN_00021630(piVar4,iVar5 + -1);\n              *(undefined4 *)(iVar1 + 8) = uVar2;\n              iVar3 = iVar1;\n            }\n          }" else (compound_statement "{\n            iVar3 = FUN_00021630();\n            iVar1 = *piVar4;\n            if (iVar1 != 0) {\n              *(int *)(iVar1 + 0xc) = iVar3;\n              *piVar4 = *(int *)(iVar1 + 8);\n              uVar2 = FUN_00021630(piVar4,iVar5 + -1);\n              *(undefined4 *)(iVar1 + 8) = uVar2;\n              iVar3 = iVar1;\n            }\n          }" { (expression_statement "iVar3 = FUN_00021630();" (assignment_expression "iVar3 = FUN_00021630()" identifier = (call_expression "FUN_00021630()" identifier (argument_list "()" ( )))) ;) (expression_statement "iVar1 = *piVar4;" (assignment_expression "iVar1 = *piVar4" identifier = (pointer_expression "*piVar4" * identifier)) ;) (if_statement "if (iVar1 != 0) {\n              *(int *)(iVar1 + 0xc) = iVar3;\n              *piVar4 = *(int *)(iVar1 + 8);\n              uVar2 = FUN_00021630(piVar4,iVar5 + -1);\n              *(undefined4 *)(iVar1 + 8) = uVar2;\n              iVar3 = iVar1;\n            }" if (parenthesized_expression "(iVar1 != 0)" ( (binary_expression "iVar1 != 0" identifier != number_literal) )) (compound_statement "{\n              *(int *)(iVar1 + 0xc) = iVar3;\n              *piVar4 = *(int *)(iVar1 + 8);\n              uVar2 = FUN_00021630(piVar4,iVar5 + -1);\n              *(undefined4 *)(iVar1 + 8) = uVar2;\n              iVar3 = iVar1;\n            }" { (expression_statement "*(int *)(iVar1 + 0xc) = iVar3;" (assignment_expression "*(int *)(iVar1 + 0xc) = iVar3" (pointer_expression "*(int *)(iVar1 + 0xc)" * (cast_expression "(int *)(iVar1 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 0xc)" ( (binary_expression "iVar1 + 0xc" identifier + number_literal) )))) = identifier) ;) (expression_statement "*piVar4 = *(int *)(iVar1 + 8);" (assignment_expression "*piVar4 = *(int *)(iVar1 + 8)" (pointer_expression "*piVar4" * identifier) = (pointer_expression "*(int *)(iVar1 + 8)" * (cast_expression "(int *)(iVar1 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 8)" ( (binary_expression "iVar1 + 8" identifier + number_literal) ))))) ;) (expression_statement "uVar2 = FUN_00021630(piVar4,iVar5 + -1);" (assignment_expression "uVar2 = FUN_00021630(piVar4,iVar5 + -1)" identifier = (call_expression "FUN_00021630(piVar4,iVar5 + -1)" identifier (argument_list "(piVar4,iVar5 + -1)" ( identifier , (binary_expression "iVar5 + -1" identifier + number_literal) )))) ;) (expression_statement "*(undefined4 *)(iVar1 + 8) = uVar2;" (assignment_expression "*(undefined4 *)(iVar1 + 8) = uVar2" (pointer_expression "*(undefined4 *)(iVar1 + 8)" * (cast_expression "(undefined4 *)(iVar1 + 8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 8)" ( (binary_expression "iVar1 + 8" identifier + number_literal) )))) = identifier) ;) (expression_statement "iVar3 = iVar1;" (assignment_expression "iVar3 = iVar1" identifier = identifier) ;) })) }))) (return_statement "return iVar3;" return identifier ;) })) (return_statement "return iVar3;" return identifier ;) })) (expression_statement "iVar1 = *piVar6;" (assignment_expression "iVar1 = *piVar6" identifier = (pointer_expression "*piVar6" * identifier)) ;) (expression_statement "piVar9 = param_2;" (assignment_expression "piVar9 = param_2" identifier = identifier) ;) (expression_statement "param_2 = piVar6;" (assignment_expression "param_2 = piVar6" identifier = identifier) ;) (expression_statement "uVar8 = piVar6[1];" (assignment_expression "uVar8 = piVar6[1]" identifier = (subscript_expression "piVar6[1]" identifier [ number_literal ])) ;) })) (expression_statement "piVar6 = (int *)(uint)(iVar3 < iVar1);" (assignment_expression "piVar6 = (int *)(uint)(iVar3 < iVar1)" identifier = (cast_expression "(int *)(uint)(iVar3 < iVar1)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "(uint)(iVar3 < iVar1)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(iVar3 < iVar1)" ( (binary_expression "iVar3 < iVar1" identifier < identifier) ))))) ;) (if_statement "if ((piVar6 == (int *)0x0) && ((iVar1 != iVar3 || (uVar8 <= uVar7)))) {\n      piVar4 = (int *)param_1[2];\n    }\n    else {\n      piVar9[2] = (int)param_1;\n      piVar4 = (int *)param_1[2];\n      piVar9 = param_1;\n    }" if (parenthesized_expression "((piVar6 == (int *)0x0) && ((iVar1 != iVar3 || (uVar8 <= uVar7))))" ( (binary_expression "(piVar6 == (int *)0x0) && ((iVar1 != iVar3 || (uVar8 <= uVar7)))" (parenthesized_expression "(piVar6 == (int *)0x0)" ( (binary_expression "piVar6 == (int *)0x0" identifier == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) && (parenthesized_expression "((iVar1 != iVar3 || (uVar8 <= uVar7)))" ( (parenthesized_expression "(iVar1 != iVar3 || (uVar8 <= uVar7))" ( (binary_expression "iVar1 != iVar3 || (uVar8 <= uVar7)" (binary_expression "iVar1 != iVar3" identifier != identifier) || (parenthesized_expression "(uVar8 <= uVar7)" ( (binary_expression "uVar8 <= uVar7" identifier <= identifier) ))) )) ))) )) (compound_statement "{\n      piVar4 = (int *)param_1[2];\n    }" { (expression_statement "piVar4 = (int *)param_1[2];" (assignment_expression "piVar4 = (int *)param_1[2]" identifier = (cast_expression "(int *)param_1[2]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[2]" identifier [ number_literal ]))) ;) }) (else_clause "else {\n      piVar9[2] = (int)param_1;\n      piVar4 = (int *)param_1[2];\n      piVar9 = param_1;\n    }" else (compound_statement "{\n      piVar9[2] = (int)param_1;\n      piVar4 = (int *)param_1[2];\n      piVar9 = param_1;\n    }" { (expression_statement "piVar9[2] = (int)param_1;" (assignment_expression "piVar9[2] = (int)param_1" (subscript_expression "piVar9[2]" identifier [ number_literal ]) = (cast_expression "(int)param_1" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "piVar4 = (int *)param_1[2];" (assignment_expression "piVar4 = (int *)param_1[2]" identifier = (cast_expression "(int *)param_1[2]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[2]" identifier [ number_literal ]))) ;) (expression_statement "piVar9 = param_1;" (assignment_expression "piVar9 = param_1" identifier = identifier) ;) }))) (expression_statement "param_1 = piVar4;" (assignment_expression "param_1 = piVar4" identifier = identifier) ;) (if_statement "if (param_1 == (int *)0x0) {\n      piVar9[2] = (int)param_2;\n      goto LAB_0002153c;\n    }" if (parenthesized_expression "(param_1 == (int *)0x0)" ( (binary_expression "param_1 == (int *)0x0" identifier == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      piVar9[2] = (int)param_2;\n      goto LAB_0002153c;\n    }" { (expression_statement "piVar9[2] = (int)param_2;" (assignment_expression "piVar9[2] = (int)param_2" (subscript_expression "piVar9[2]" identifier [ number_literal ]) = (cast_expression "(int)param_2" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (goto_statement "goto LAB_0002153c;" goto statement_identifier ;) })) (expression_statement "iVar3 = *param_1;" (assignment_expression "iVar3 = *param_1" identifier = (pointer_expression "*param_1" * identifier)) ;) (expression_statement "uVar7 = param_1[1];" (assignment_expression "uVar7 = param_1[1]" identifier = (subscript_expression "param_1[1]" identifier [ number_literal ])) ;) }) while (parenthesized_expression "( true )" ( true )) ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE (pointer_declarator * IDENT)) ))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT))) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (do_statement do (compound_statement { (while_statement while (parenthesized_expression ( (parenthesized_expression ( (binary_expression (binary_expression IDENT < IDENT) || (parenthesized_expression ( (parenthesized_expression ( (binary_expression (binary_expression IDENT == IDENT) && (parenthesized_expression ( (binary_expression IDENT < IDENT) ))) )) ))) )) )) (compound_statement { (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression IDENT == (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT))) )) (compound_statement { (return_statement return IDENT ;) }))) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( ))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == LIT) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) }) (else_clause else (compound_statement { (expression_statement (call_expression IDENT (argument_list ( ))) ;) (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 IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) }))) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT ))) ;) }))) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != IDENT) )) (compound_statement { (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( ))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (return_statement return LIT ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * 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 *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , (binary_expression IDENT + LIT) )))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) })) }))) (return_statement return IDENT ;) })) (return_statement return IDENT ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT < IDENT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) && (parenthesized_expression ( (parenthesized_expression ( (binary_expression (binary_expression IDENT != IDENT) || (parenthesized_expression ( (binary_expression IDENT <= IDENT) ))) )) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }))) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) }) while (parenthesized_expression ( BOOL )) ;) })))
(function_definition "int FUN_00021478(int *param_1,int *param_2)\n\n{\n  int iVar1;\n  undefined4 uVar2;\n  int iVar3;\n  int *piVar4;\n  int iVar5;\n  int *piVar6;\n  uint uVar7;\n  uint uVar8;\n  int *piVar9;\n  undefined *puVar10;\n  int iStack_50;\n  int aiStack_20 [2];\n  int local_18;\n  int local_c;\n  \n  puVar10 = PTR___stack_chk_guard_000f5568;\n  iVar3 = *param_1;\n  uVar7 = param_1[1];\n  iVar1 = *param_2;\n  local_c = *(int *)PTR___stack_chk_guard_000f5568;\n  uVar8 = param_2[1];\n  piVar9 = aiStack_20;\n  do {\n    while ((iVar1 < iVar3 || ((iVar3 == iVar1 && (uVar8 < uVar7))))) {\n      piVar9[2] = (int)param_2;\n      piVar6 = (int *)param_2[2];\n      if (piVar6 == (int *)0x0) {\n        param_2[2] = (int)param_1;\n        piVar6 = (int *)0x0;\nLAB_0002153c:\n        if (local_c == *(int *)puVar10) {\n          return local_18;\n        }\n        iVar3 = local_c;\n        puVar10 = PTR___stack_chk_fail_000f5540;\n        (*(code *)PTR___stack_chk_fail_000f5540)();\n        piVar9 = *(int **)(puVar10 + 0xd3ffc);\n        iVar1 = *piVar9;\n        if (*(int *)(iVar3 + 0xc) == 0) {\n          *param_2 = iVar3;\n          piVar4 = *(int **)(iVar3 + 8);\n        }\n        else {\n          FUN_0002156c();\n          *(int *)(iStack_50 + 8) = iVar3;\n          piVar4 = *(int **)(iVar3 + 8);\n        }\n        if (piVar4 == (int *)0x0) {\n          iVar5 = iVar3 + 8;\n          *piVar6 = iVar3;\n        }\n        else {\n          iVar5 = iVar3 + 8;\n          FUN_0002156c(piVar4,iVar5,piVar6);\n        }\n        iVar3 = *piVar9;\n        if (iVar1 != iVar3) {\n          (**(code **)(puVar10 + 0xd3fd4))();\n          iVar3 = *piVar4;\n          if (iVar3 == 0) {\n            return 0;\n          }\n          if (iVar5 == 1) {\n            *piVar4 = *(int *)(iVar3 + 8);\n            *(undefined4 *)(iVar3 + 8) = 0;\n            *(undefined4 *)(iVar3 + 0xc) = 0;\n          }\n          else {\n            iVar3 = FUN_00021630();\n            iVar1 = *piVar4;\n            if (iVar1 != 0) {\n              *(int *)(iVar1 + 0xc) = iVar3;\n              *piVar4 = *(int *)(iVar1 + 8);\n              uVar2 = FUN_00021630(piVar4,iVar5 + -1);\n              *(undefined4 *)(iVar1 + 8) = uVar2;\n              iVar3 = iVar1;\n            }\n          }\n          return iVar3;\n        }\n        return iVar3;\n      }\n      iVar1 = *piVar6;\n      piVar9 = param_2;\n      param_2 = piVar6;\n      uVar8 = piVar6[1];\n    }\n    piVar6 = (int *)(uint)(iVar3 < iVar1);\n    if ((piVar6 == (int *)0x0) && ((iVar1 != iVar3 || (uVar8 <= uVar7)))) {\n      piVar4 = (int *)param_1[2];\n    }\n    else {\n      piVar9[2] = (int)param_1;\n      piVar4 = (int *)param_1[2];\n      piVar9 = param_1;\n    }\n    param_1 = piVar4;\n    if (param_1 == (int *)0x0) {\n      piVar9[2] = (int)param_2;\n      goto LAB_0002153c;\n    }\n    iVar3 = *param_1;\n    uVar7 = param_1[1];\n  } while( true );\n}" (primitive_type "int") (function_declarator "FUN_00021478(int *param_1,int *param_2)" (identifier "FUN_00021478") (parameter_list "(int *param_1,int *param_2)" (( "(") (parameter_declaration "int *param_1" (primitive_type "int") (pointer_declarator "*param_1" (* "*") (identifier "param_1"))) (, ",") (parameter_declaration "int *param_2" (primitive_type "int") (pointer_declarator "*param_2" (* "*") (identifier "param_2"))) () ")"))) (compound_statement "{\n  int iVar1;\n  undefined4 uVar2;\n  int iVar3;\n  int *piVar4;\n  int iVar5;\n  int *piVar6;\n  uint uVar7;\n  uint uVar8;\n  int *piVar9;\n  undefined *puVar10;\n  int iStack_50;\n  int aiStack_20 [2];\n  int local_18;\n  int local_c;\n  \n  puVar10 = PTR___stack_chk_guard_000f5568;\n  iVar3 = *param_1;\n  uVar7 = param_1[1];\n  iVar1 = *param_2;\n  local_c = *(int *)PTR___stack_chk_guard_000f5568;\n  uVar8 = param_2[1];\n  piVar9 = aiStack_20;\n  do {\n    while ((iVar1 < iVar3 || ((iVar3 == iVar1 && (uVar8 < uVar7))))) {\n      piVar9[2] = (int)param_2;\n      piVar6 = (int *)param_2[2];\n      if (piVar6 == (int *)0x0) {\n        param_2[2] = (int)param_1;\n        piVar6 = (int *)0x0;\nLAB_0002153c:\n        if (local_c == *(int *)puVar10) {\n          return local_18;\n        }\n        iVar3 = local_c;\n        puVar10 = PTR___stack_chk_fail_000f5540;\n        (*(code *)PTR___stack_chk_fail_000f5540)();\n        piVar9 = *(int **)(puVar10 + 0xd3ffc);\n        iVar1 = *piVar9;\n        if (*(int *)(iVar3 + 0xc) == 0) {\n          *param_2 = iVar3;\n          piVar4 = *(int **)(iVar3 + 8);\n        }\n        else {\n          FUN_0002156c();\n          *(int *)(iStack_50 + 8) = iVar3;\n          piVar4 = *(int **)(iVar3 + 8);\n        }\n        if (piVar4 == (int *)0x0) {\n          iVar5 = iVar3 + 8;\n          *piVar6 = iVar3;\n        }\n        else {\n          iVar5 = iVar3 + 8;\n          FUN_0002156c(piVar4,iVar5,piVar6);\n        }\n        iVar3 = *piVar9;\n        if (iVar1 != iVar3) {\n          (**(code **)(puVar10 + 0xd3fd4))();\n          iVar3 = *piVar4;\n          if (iVar3 == 0) {\n            return 0;\n          }\n          if (iVar5 == 1) {\n            *piVar4 = *(int *)(iVar3 + 8);\n            *(undefined4 *)(iVar3 + 8) = 0;\n            *(undefined4 *)(iVar3 + 0xc) = 0;\n          }\n          else {\n            iVar3 = FUN_00021630();\n            iVar1 = *piVar4;\n            if (iVar1 != 0) {\n              *(int *)(iVar1 + 0xc) = iVar3;\n              *piVar4 = *(int *)(iVar1 + 8);\n              uVar2 = FUN_00021630(piVar4,iVar5 + -1);\n              *(undefined4 *)(iVar1 + 8) = uVar2;\n              iVar3 = iVar1;\n            }\n          }\n          return iVar3;\n        }\n        return iVar3;\n      }\n      iVar1 = *piVar6;\n      piVar9 = param_2;\n      param_2 = piVar6;\n      uVar8 = piVar6[1];\n    }\n    piVar6 = (int *)(uint)(iVar3 < iVar1);\n    if ((piVar6 == (int *)0x0) && ((iVar1 != iVar3 || (uVar8 <= uVar7)))) {\n      piVar4 = (int *)param_1[2];\n    }\n    else {\n      piVar9[2] = (int)param_1;\n      piVar4 = (int *)param_1[2];\n      piVar9 = param_1;\n    }\n    param_1 = piVar4;\n    if (param_1 == (int *)0x0) {\n      piVar9[2] = (int)param_2;\n      goto LAB_0002153c;\n    }\n    iVar3 = *param_1;\n    uVar7 = param_1[1];\n  } while( true );\n}" ({ "{") (declaration "int iVar1;" (primitive_type "int") (identifier "iVar1") (; ";")) (declaration "undefined4 uVar2;" (type_identifier "undefined4") (identifier "uVar2") (; ";")) (declaration "int iVar3;" (primitive_type "int") (identifier "iVar3") (; ";")) (declaration "int *piVar4;" (primitive_type "int") (pointer_declarator "*piVar4" (* "*") (identifier "piVar4")) (; ";")) (declaration "int iVar5;" (primitive_type "int") (identifier "iVar5") (; ";")) (declaration "int *piVar6;" (primitive_type "int") (pointer_declarator "*piVar6" (* "*") (identifier "piVar6")) (; ";")) (declaration "uint uVar7;" (type_identifier "uint") (identifier "uVar7") (; ";")) (declaration "uint uVar8;" (type_identifier "uint") (identifier "uVar8") (; ";")) (declaration "int *piVar9;" (primitive_type "int") (pointer_declarator "*piVar9" (* "*") (identifier "piVar9")) (; ";")) (declaration "undefined *puVar10;" (type_identifier "undefined") (pointer_declarator "*puVar10" (* "*") (identifier "puVar10")) (; ";")) (declaration "int iStack_50;" (primitive_type "int") (identifier "iStack_50") (; ";")) (declaration "int aiStack_20 [2];" (primitive_type "int") (array_declarator "aiStack_20 [2]" (identifier "aiStack_20") ([ "[") (number_literal "2") (] "]")) (; ";")) (declaration "int local_18;" (primitive_type "int") (identifier "local_18") (; ";")) (declaration "int local_c;" (primitive_type "int") (identifier "local_c") (; ";")) (expression_statement "puVar10 = PTR___stack_chk_guard_000f5568;" (assignment_expression "puVar10 = PTR___stack_chk_guard_000f5568" (identifier "puVar10") (= "=") (identifier "PTR___stack_chk_guard_000f5568")) (; ";")) (expression_statement "iVar3 = *param_1;" (assignment_expression "iVar3 = *param_1" (identifier "iVar3") (= "=") (pointer_expression "*param_1" (* "*") (identifier "param_1"))) (; ";")) (expression_statement "uVar7 = param_1[1];" (assignment_expression "uVar7 = param_1[1]" (identifier "uVar7") (= "=") (subscript_expression "param_1[1]" (identifier "param_1") ([ "[") (number_literal "1") (] "]"))) (; ";")) (expression_statement "iVar1 = *param_2;" (assignment_expression "iVar1 = *param_2" (identifier "iVar1") (= "=") (pointer_expression "*param_2" (* "*") (identifier "param_2"))) (; ";")) (expression_statement "local_c = *(int *)PTR___stack_chk_guard_000f5568;" (assignment_expression "local_c = *(int *)PTR___stack_chk_guard_000f5568" (identifier "local_c") (= "=") (pointer_expression "*(int *)PTR___stack_chk_guard_000f5568" (* "*") (cast_expression "(int *)PTR___stack_chk_guard_000f5568" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR___stack_chk_guard_000f5568")))) (; ";")) (expression_statement "uVar8 = param_2[1];" (assignment_expression "uVar8 = param_2[1]" (identifier "uVar8") (= "=") (subscript_expression "param_2[1]" (identifier "param_2") ([ "[") (number_literal "1") (] "]"))) (; ";")) (expression_statement "piVar9 = aiStack_20;" (assignment_expression "piVar9 = aiStack_20" (identifier "piVar9") (= "=") (identifier "aiStack_20")) (; ";")) (do_statement "do {\n    while ((iVar1 < iVar3 || ((iVar3 == iVar1 && (uVar8 < uVar7))))) {\n      piVar9[2] = (int)param_2;\n      piVar6 = (int *)param_2[2];\n      if (piVar6 == (int *)0x0) {\n        param_2[2] = (int)param_1;\n        piVar6 = (int *)0x0;\nLAB_0002153c:\n        if (local_c == *(int *)puVar10) {\n          return local_18;\n        }\n        iVar3 = local_c;\n        puVar10 = PTR___stack_chk_fail_000f5540;\n        (*(code *)PTR___stack_chk_fail_000f5540)();\n        piVar9 = *(int **)(puVar10 + 0xd3ffc);\n        iVar1 = *piVar9;\n        if (*(int *)(iVar3 + 0xc) == 0) {\n          *param_2 = iVar3;\n          piVar4 = *(int **)(iVar3 + 8);\n        }\n        else {\n          FUN_0002156c();\n          *(int *)(iStack_50 + 8) = iVar3;\n          piVar4 = *(int **)(iVar3 + 8);\n        }\n        if (piVar4 == (int *)0x0) {\n          iVar5 = iVar3 + 8;\n          *piVar6 = iVar3;\n        }\n        else {\n          iVar5 = iVar3 + 8;\n          FUN_0002156c(piVar4,iVar5,piVar6);\n        }\n        iVar3 = *piVar9;\n        if (iVar1 != iVar3) {\n          (**(code **)(puVar10 + 0xd3fd4))();\n          iVar3 = *piVar4;\n          if (iVar3 == 0) {\n            return 0;\n          }\n          if (iVar5 == 1) {\n            *piVar4 = *(int *)(iVar3 + 8);\n            *(undefined4 *)(iVar3 + 8) = 0;\n            *(undefined4 *)(iVar3 + 0xc) = 0;\n          }\n          else {\n            iVar3 = FUN_00021630();\n            iVar1 = *piVar4;\n            if (iVar1 != 0) {\n              *(int *)(iVar1 + 0xc) = iVar3;\n              *piVar4 = *(int *)(iVar1 + 8);\n              uVar2 = FUN_00021630(piVar4,iVar5 + -1);\n              *(undefined4 *)(iVar1 + 8) = uVar2;\n              iVar3 = iVar1;\n            }\n          }\n          return iVar3;\n        }\n        return iVar3;\n      }\n      iVar1 = *piVar6;\n      piVar9 = param_2;\n      param_2 = piVar6;\n      uVar8 = piVar6[1];\n    }\n    piVar6 = (int *)(uint)(iVar3 < iVar1);\n    if ((piVar6 == (int *)0x0) && ((iVar1 != iVar3 || (uVar8 <= uVar7)))) {\n      piVar4 = (int *)param_1[2];\n    }\n    else {\n      piVar9[2] = (int)param_1;\n      piVar4 = (int *)param_1[2];\n      piVar9 = param_1;\n    }\n    param_1 = piVar4;\n    if (param_1 == (int *)0x0) {\n      piVar9[2] = (int)param_2;\n      goto LAB_0002153c;\n    }\n    iVar3 = *param_1;\n    uVar7 = param_1[1];\n  } while( true );" (do "do") (compound_statement "{\n    while ((iVar1 < iVar3 || ((iVar3 == iVar1 && (uVar8 < uVar7))))) {\n      piVar9[2] = (int)param_2;\n      piVar6 = (int *)param_2[2];\n      if (piVar6 == (int *)0x0) {\n        param_2[2] = (int)param_1;\n        piVar6 = (int *)0x0;\nLAB_0002153c:\n        if (local_c == *(int *)puVar10) {\n          return local_18;\n        }\n        iVar3 = local_c;\n        puVar10 = PTR___stack_chk_fail_000f5540;\n        (*(code *)PTR___stack_chk_fail_000f5540)();\n        piVar9 = *(int **)(puVar10 + 0xd3ffc);\n        iVar1 = *piVar9;\n        if (*(int *)(iVar3 + 0xc) == 0) {\n          *param_2 = iVar3;\n          piVar4 = *(int **)(iVar3 + 8);\n        }\n        else {\n          FUN_0002156c();\n          *(int *)(iStack_50 + 8) = iVar3;\n          piVar4 = *(int **)(iVar3 + 8);\n        }\n        if (piVar4 == (int *)0x0) {\n          iVar5 = iVar3 + 8;\n          *piVar6 = iVar3;\n        }\n        else {\n          iVar5 = iVar3 + 8;\n          FUN_0002156c(piVar4,iVar5,piVar6);\n        }\n        iVar3 = *piVar9;\n        if (iVar1 != iVar3) {\n          (**(code **)(puVar10 + 0xd3fd4))();\n          iVar3 = *piVar4;\n          if (iVar3 == 0) {\n            return 0;\n          }\n          if (iVar5 == 1) {\n            *piVar4 = *(int *)(iVar3 + 8);\n            *(undefined4 *)(iVar3 + 8) = 0;\n            *(undefined4 *)(iVar3 + 0xc) = 0;\n          }\n          else {\n            iVar3 = FUN_00021630();\n            iVar1 = *piVar4;\n            if (iVar1 != 0) {\n              *(int *)(iVar1 + 0xc) = iVar3;\n              *piVar4 = *(int *)(iVar1 + 8);\n              uVar2 = FUN_00021630(piVar4,iVar5 + -1);\n              *(undefined4 *)(iVar1 + 8) = uVar2;\n              iVar3 = iVar1;\n            }\n          }\n          return iVar3;\n        }\n        return iVar3;\n      }\n      iVar1 = *piVar6;\n      piVar9 = param_2;\n      param_2 = piVar6;\n      uVar8 = piVar6[1];\n    }\n    piVar6 = (int *)(uint)(iVar3 < iVar1);\n    if ((piVar6 == (int *)0x0) && ((iVar1 != iVar3 || (uVar8 <= uVar7)))) {\n      piVar4 = (int *)param_1[2];\n    }\n    else {\n      piVar9[2] = (int)param_1;\n      piVar4 = (int *)param_1[2];\n      piVar9 = param_1;\n    }\n    param_1 = piVar4;\n    if (param_1 == (int *)0x0) {\n      piVar9[2] = (int)param_2;\n      goto LAB_0002153c;\n    }\n    iVar3 = *param_1;\n    uVar7 = param_1[1];\n  }" ({ "{") (while_statement "while ((iVar1 < iVar3 || ((iVar3 == iVar1 && (uVar8 < uVar7))))) {\n      piVar9[2] = (int)param_2;\n      piVar6 = (int *)param_2[2];\n      if (piVar6 == (int *)0x0) {\n        param_2[2] = (int)param_1;\n        piVar6 = (int *)0x0;\nLAB_0002153c:\n        if (local_c == *(int *)puVar10) {\n          return local_18;\n        }\n        iVar3 = local_c;\n        puVar10 = PTR___stack_chk_fail_000f5540;\n        (*(code *)PTR___stack_chk_fail_000f5540)();\n        piVar9 = *(int **)(puVar10 + 0xd3ffc);\n        iVar1 = *piVar9;\n        if (*(int *)(iVar3 + 0xc) == 0) {\n          *param_2 = iVar3;\n          piVar4 = *(int **)(iVar3 + 8);\n        }\n        else {\n          FUN_0002156c();\n          *(int *)(iStack_50 + 8) = iVar3;\n          piVar4 = *(int **)(iVar3 + 8);\n        }\n        if (piVar4 == (int *)0x0) {\n          iVar5 = iVar3 + 8;\n          *piVar6 = iVar3;\n        }\n        else {\n          iVar5 = iVar3 + 8;\n          FUN_0002156c(piVar4,iVar5,piVar6);\n        }\n        iVar3 = *piVar9;\n        if (iVar1 != iVar3) {\n          (**(code **)(puVar10 + 0xd3fd4))();\n          iVar3 = *piVar4;\n          if (iVar3 == 0) {\n            return 0;\n          }\n          if (iVar5 == 1) {\n            *piVar4 = *(int *)(iVar3 + 8);\n            *(undefined4 *)(iVar3 + 8) = 0;\n            *(undefined4 *)(iVar3 + 0xc) = 0;\n          }\n          else {\n            iVar3 = FUN_00021630();\n            iVar1 = *piVar4;\n            if (iVar1 != 0) {\n              *(int *)(iVar1 + 0xc) = iVar3;\n              *piVar4 = *(int *)(iVar1 + 8);\n              uVar2 = FUN_00021630(piVar4,iVar5 + -1);\n              *(undefined4 *)(iVar1 + 8) = uVar2;\n              iVar3 = iVar1;\n            }\n          }\n          return iVar3;\n        }\n        return iVar3;\n      }\n      iVar1 = *piVar6;\n      piVar9 = param_2;\n      param_2 = piVar6;\n      uVar8 = piVar6[1];\n    }" (while "while") (parenthesized_expression "((iVar1 < iVar3 || ((iVar3 == iVar1 && (uVar8 < uVar7)))))" (( "(") (parenthesized_expression "(iVar1 < iVar3 || ((iVar3 == iVar1 && (uVar8 < uVar7))))" (( "(") (binary_expression "iVar1 < iVar3 || ((iVar3 == iVar1 && (uVar8 < uVar7)))" (binary_expression "iVar1 < iVar3" (identifier "iVar1") (< "<") (identifier "iVar3")) (|| "||") (parenthesized_expression "((iVar3 == iVar1 && (uVar8 < uVar7)))" (( "(") (parenthesized_expression "(iVar3 == iVar1 && (uVar8 < uVar7))" (( "(") (binary_expression "iVar3 == iVar1 && (uVar8 < uVar7)" (binary_expression "iVar3 == iVar1" (identifier "iVar3") (== "==") (identifier "iVar1")) (&& "&&") (parenthesized_expression "(uVar8 < uVar7)" (( "(") (binary_expression "uVar8 < uVar7" (identifier "uVar8") (< "<") (identifier "uVar7")) () ")"))) () ")")) () ")"))) () ")")) () ")")) (compound_statement "{\n      piVar9[2] = (int)param_2;\n      piVar6 = (int *)param_2[2];\n      if (piVar6 == (int *)0x0) {\n        param_2[2] = (int)param_1;\n        piVar6 = (int *)0x0;\nLAB_0002153c:\n        if (local_c == *(int *)puVar10) {\n          return local_18;\n        }\n        iVar3 = local_c;\n        puVar10 = PTR___stack_chk_fail_000f5540;\n        (*(code *)PTR___stack_chk_fail_000f5540)();\n        piVar9 = *(int **)(puVar10 + 0xd3ffc);\n        iVar1 = *piVar9;\n        if (*(int *)(iVar3 + 0xc) == 0) {\n          *param_2 = iVar3;\n          piVar4 = *(int **)(iVar3 + 8);\n        }\n        else {\n          FUN_0002156c();\n          *(int *)(iStack_50 + 8) = iVar3;\n          piVar4 = *(int **)(iVar3 + 8);\n        }\n        if (piVar4 == (int *)0x0) {\n          iVar5 = iVar3 + 8;\n          *piVar6 = iVar3;\n        }\n        else {\n          iVar5 = iVar3 + 8;\n          FUN_0002156c(piVar4,iVar5,piVar6);\n        }\n        iVar3 = *piVar9;\n        if (iVar1 != iVar3) {\n          (**(code **)(puVar10 + 0xd3fd4))();\n          iVar3 = *piVar4;\n          if (iVar3 == 0) {\n            return 0;\n          }\n          if (iVar5 == 1) {\n            *piVar4 = *(int *)(iVar3 + 8);\n            *(undefined4 *)(iVar3 + 8) = 0;\n            *(undefined4 *)(iVar3 + 0xc) = 0;\n          }\n          else {\n            iVar3 = FUN_00021630();\n            iVar1 = *piVar4;\n            if (iVar1 != 0) {\n              *(int *)(iVar1 + 0xc) = iVar3;\n              *piVar4 = *(int *)(iVar1 + 8);\n              uVar2 = FUN_00021630(piVar4,iVar5 + -1);\n              *(undefined4 *)(iVar1 + 8) = uVar2;\n              iVar3 = iVar1;\n            }\n          }\n          return iVar3;\n        }\n        return iVar3;\n      }\n      iVar1 = *piVar6;\n      piVar9 = param_2;\n      param_2 = piVar6;\n      uVar8 = piVar6[1];\n    }" ({ "{") (expression_statement "piVar9[2] = (int)param_2;" (assignment_expression "piVar9[2] = (int)param_2" (subscript_expression "piVar9[2]" (identifier "piVar9") ([ "[") (number_literal "2") (] "]")) (= "=") (cast_expression "(int)param_2" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_2"))) (; ";")) (expression_statement "piVar6 = (int *)param_2[2];" (assignment_expression "piVar6 = (int *)param_2[2]" (identifier "piVar6") (= "=") (cast_expression "(int *)param_2[2]" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_2[2]" (identifier "param_2") ([ "[") (number_literal "2") (] "]")))) (; ";")) (if_statement "if (piVar6 == (int *)0x0) {\n        param_2[2] = (int)param_1;\n        piVar6 = (int *)0x0;\nLAB_0002153c:\n        if (local_c == *(int *)puVar10) {\n          return local_18;\n        }\n        iVar3 = local_c;\n        puVar10 = PTR___stack_chk_fail_000f5540;\n        (*(code *)PTR___stack_chk_fail_000f5540)();\n        piVar9 = *(int **)(puVar10 + 0xd3ffc);\n        iVar1 = *piVar9;\n        if (*(int *)(iVar3 + 0xc) == 0) {\n          *param_2 = iVar3;\n          piVar4 = *(int **)(iVar3 + 8);\n        }\n        else {\n          FUN_0002156c();\n          *(int *)(iStack_50 + 8) = iVar3;\n          piVar4 = *(int **)(iVar3 + 8);\n        }\n        if (piVar4 == (int *)0x0) {\n          iVar5 = iVar3 + 8;\n          *piVar6 = iVar3;\n        }\n        else {\n          iVar5 = iVar3 + 8;\n          FUN_0002156c(piVar4,iVar5,piVar6);\n        }\n        iVar3 = *piVar9;\n        if (iVar1 != iVar3) {\n          (**(code **)(puVar10 + 0xd3fd4))();\n          iVar3 = *piVar4;\n          if (iVar3 == 0) {\n            return 0;\n          }\n          if (iVar5 == 1) {\n            *piVar4 = *(int *)(iVar3 + 8);\n            *(undefined4 *)(iVar3 + 8) = 0;\n            *(undefined4 *)(iVar3 + 0xc) = 0;\n          }\n          else {\n            iVar3 = FUN_00021630();\n            iVar1 = *piVar4;\n            if (iVar1 != 0) {\n              *(int *)(iVar1 + 0xc) = iVar3;\n              *piVar4 = *(int *)(iVar1 + 8);\n              uVar2 = FUN_00021630(piVar4,iVar5 + -1);\n              *(undefined4 *)(iVar1 + 8) = uVar2;\n              iVar3 = iVar1;\n            }\n          }\n          return iVar3;\n        }\n        return iVar3;\n      }" (if "if") (parenthesized_expression "(piVar6 == (int *)0x0)" (( "(") (binary_expression "piVar6 == (int *)0x0" (identifier "piVar6") (== "==") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n        param_2[2] = (int)param_1;\n        piVar6 = (int *)0x0;\nLAB_0002153c:\n        if (local_c == *(int *)puVar10) {\n          return local_18;\n        }\n        iVar3 = local_c;\n        puVar10 = PTR___stack_chk_fail_000f5540;\n        (*(code *)PTR___stack_chk_fail_000f5540)();\n        piVar9 = *(int **)(puVar10 + 0xd3ffc);\n        iVar1 = *piVar9;\n        if (*(int *)(iVar3 + 0xc) == 0) {\n          *param_2 = iVar3;\n          piVar4 = *(int **)(iVar3 + 8);\n        }\n        else {\n          FUN_0002156c();\n          *(int *)(iStack_50 + 8) = iVar3;\n          piVar4 = *(int **)(iVar3 + 8);\n        }\n        if (piVar4 == (int *)0x0) {\n          iVar5 = iVar3 + 8;\n          *piVar6 = iVar3;\n        }\n        else {\n          iVar5 = iVar3 + 8;\n          FUN_0002156c(piVar4,iVar5,piVar6);\n        }\n        iVar3 = *piVar9;\n        if (iVar1 != iVar3) {\n          (**(code **)(puVar10 + 0xd3fd4))();\n          iVar3 = *piVar4;\n          if (iVar3 == 0) {\n            return 0;\n          }\n          if (iVar5 == 1) {\n            *piVar4 = *(int *)(iVar3 + 8);\n            *(undefined4 *)(iVar3 + 8) = 0;\n            *(undefined4 *)(iVar3 + 0xc) = 0;\n          }\n          else {\n            iVar3 = FUN_00021630();\n            iVar1 = *piVar4;\n            if (iVar1 != 0) {\n              *(int *)(iVar1 + 0xc) = iVar3;\n              *piVar4 = *(int *)(iVar1 + 8);\n              uVar2 = FUN_00021630(piVar4,iVar5 + -1);\n              *(undefined4 *)(iVar1 + 8) = uVar2;\n              iVar3 = iVar1;\n            }\n          }\n          return iVar3;\n        }\n        return iVar3;\n      }" ({ "{") (expression_statement "param_2[2] = (int)param_1;" (assignment_expression "param_2[2] = (int)param_1" (subscript_expression "param_2[2]" (identifier "param_2") ([ "[") (number_literal "2") (] "]")) (= "=") (cast_expression "(int)param_1" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_1"))) (; ";")) (expression_statement "piVar6 = (int *)0x0;" (assignment_expression "piVar6 = (int *)0x0" (identifier "piVar6") (= "=") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (labeled_statement "LAB_0002153c:\n        if (local_c == *(int *)puVar10) {\n          return local_18;\n        }" (statement_identifier "LAB_0002153c") (: ":") (if_statement "if (local_c == *(int *)puVar10) {\n          return local_18;\n        }" (if "if") (parenthesized_expression "(local_c == *(int *)puVar10)" (( "(") (binary_expression "local_c == *(int *)puVar10" (identifier "local_c") (== "==") (pointer_expression "*(int *)puVar10" (* "*") (cast_expression "(int *)puVar10" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "puVar10")))) () ")")) (compound_statement "{\n          return local_18;\n        }" ({ "{") (return_statement "return local_18;" (return "return") (identifier "local_18") (; ";")) (} "}")))) (expression_statement "iVar3 = local_c;" (assignment_expression "iVar3 = local_c" (identifier "iVar3") (= "=") (identifier "local_c")) (; ";")) (expression_statement "puVar10 = PTR___stack_chk_fail_000f5540;" (assignment_expression "puVar10 = PTR___stack_chk_fail_000f5540" (identifier "puVar10") (= "=") (identifier "PTR___stack_chk_fail_000f5540")) (; ";")) (expression_statement "(*(code *)PTR___stack_chk_fail_000f5540)();" (call_expression "(*(code *)PTR___stack_chk_fail_000f5540)()" (parenthesized_expression "(*(code *)PTR___stack_chk_fail_000f5540)" (( "(") (pointer_expression "*(code *)PTR___stack_chk_fail_000f5540" (* "*") (cast_expression "(code *)PTR___stack_chk_fail_000f5540" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR___stack_chk_fail_000f5540"))) () ")")) (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "piVar9 = *(int **)(puVar10 + 0xd3ffc);" (assignment_expression "piVar9 = *(int **)(puVar10 + 0xd3ffc)" (identifier "piVar9") (= "=") (pointer_expression "*(int **)(puVar10 + 0xd3ffc)" (* "*") (cast_expression "(int **)(puVar10 + 0xd3ffc)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar10 + 0xd3ffc)" (( "(") (binary_expression "puVar10 + 0xd3ffc" (identifier "puVar10") (+ "+") (number_literal "0xd3ffc")) () ")"))))) (; ";")) (expression_statement "iVar1 = *piVar9;" (assignment_expression "iVar1 = *piVar9" (identifier "iVar1") (= "=") (pointer_expression "*piVar9" (* "*") (identifier "piVar9"))) (; ";")) (if_statement "if (*(int *)(iVar3 + 0xc) == 0) {\n          *param_2 = iVar3;\n          piVar4 = *(int **)(iVar3 + 8);\n        }\n        else {\n          FUN_0002156c();\n          *(int *)(iStack_50 + 8) = iVar3;\n          piVar4 = *(int **)(iVar3 + 8);\n        }" (if "if") (parenthesized_expression "(*(int *)(iVar3 + 0xc) == 0)" (( "(") (binary_expression "*(int *)(iVar3 + 0xc) == 0" (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")) () ")")))) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n          *param_2 = iVar3;\n          piVar4 = *(int **)(iVar3 + 8);\n        }" ({ "{") (expression_statement "*param_2 = iVar3;" (assignment_expression "*param_2 = iVar3" (pointer_expression "*param_2" (* "*") (identifier "param_2")) (= "=") (identifier "iVar3")) (; ";")) (expression_statement "piVar4 = *(int **)(iVar3 + 8);" (assignment_expression "piVar4 = *(int **)(iVar3 + 8)" (identifier "piVar4") (= "=") (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")) () ")"))))) (; ";")) (} "}")) (else_clause "else {\n          FUN_0002156c();\n          *(int *)(iStack_50 + 8) = iVar3;\n          piVar4 = *(int **)(iVar3 + 8);\n        }" (else "else") (compound_statement "{\n          FUN_0002156c();\n          *(int *)(iStack_50 + 8) = iVar3;\n          piVar4 = *(int **)(iVar3 + 8);\n        }" ({ "{") (expression_statement "FUN_0002156c();" (call_expression "FUN_0002156c()" (identifier "FUN_0002156c") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "*(int *)(iStack_50 + 8) = iVar3;" (assignment_expression "*(int *)(iStack_50 + 8) = iVar3" (pointer_expression "*(int *)(iStack_50 + 8)" (* "*") (cast_expression "(int *)(iStack_50 + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iStack_50 + 8)" (( "(") (binary_expression "iStack_50 + 8" (identifier "iStack_50") (+ "+") (number_literal "8")) () ")")))) (= "=") (identifier "iVar3")) (; ";")) (expression_statement "piVar4 = *(int **)(iVar3 + 8);" (assignment_expression "piVar4 = *(int **)(iVar3 + 8)" (identifier "piVar4") (= "=") (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")) () ")"))))) (; ";")) (} "}")))) (if_statement "if (piVar4 == (int *)0x0) {\n          iVar5 = iVar3 + 8;\n          *piVar6 = iVar3;\n        }\n        else {\n          iVar5 = iVar3 + 8;\n          FUN_0002156c(piVar4,iVar5,piVar6);\n        }" (if "if") (parenthesized_expression "(piVar4 == (int *)0x0)" (( "(") (binary_expression "piVar4 == (int *)0x0" (identifier "piVar4") (== "==") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n          iVar5 = iVar3 + 8;\n          *piVar6 = iVar3;\n        }" ({ "{") (expression_statement "iVar5 = iVar3 + 8;" (assignment_expression "iVar5 = iVar3 + 8" (identifier "iVar5") (= "=") (binary_expression "iVar3 + 8" (identifier "iVar3") (+ "+") (number_literal "8"))) (; ";")) (expression_statement "*piVar6 = iVar3;" (assignment_expression "*piVar6 = iVar3" (pointer_expression "*piVar6" (* "*") (identifier "piVar6")) (= "=") (identifier "iVar3")) (; ";")) (} "}")) (else_clause "else {\n          iVar5 = iVar3 + 8;\n          FUN_0002156c(piVar4,iVar5,piVar6);\n        }" (else "else") (compound_statement "{\n          iVar5 = iVar3 + 8;\n          FUN_0002156c(piVar4,iVar5,piVar6);\n        }" ({ "{") (expression_statement "iVar5 = iVar3 + 8;" (assignment_expression "iVar5 = iVar3 + 8" (identifier "iVar5") (= "=") (binary_expression "iVar3 + 8" (identifier "iVar3") (+ "+") (number_literal "8"))) (; ";")) (expression_statement "FUN_0002156c(piVar4,iVar5,piVar6);" (call_expression "FUN_0002156c(piVar4,iVar5,piVar6)" (identifier "FUN_0002156c") (argument_list "(piVar4,iVar5,piVar6)" (( "(") (identifier "piVar4") (, ",") (identifier "iVar5") (, ",") (identifier "piVar6") () ")"))) (; ";")) (} "}")))) (expression_statement "iVar3 = *piVar9;" (assignment_expression "iVar3 = *piVar9" (identifier "iVar3") (= "=") (pointer_expression "*piVar9" (* "*") (identifier "piVar9"))) (; ";")) (if_statement "if (iVar1 != iVar3) {\n          (**(code **)(puVar10 + 0xd3fd4))();\n          iVar3 = *piVar4;\n          if (iVar3 == 0) {\n            return 0;\n          }\n          if (iVar5 == 1) {\n            *piVar4 = *(int *)(iVar3 + 8);\n            *(undefined4 *)(iVar3 + 8) = 0;\n            *(undefined4 *)(iVar3 + 0xc) = 0;\n          }\n          else {\n            iVar3 = FUN_00021630();\n            iVar1 = *piVar4;\n            if (iVar1 != 0) {\n              *(int *)(iVar1 + 0xc) = iVar3;\n              *piVar4 = *(int *)(iVar1 + 8);\n              uVar2 = FUN_00021630(piVar4,iVar5 + -1);\n              *(undefined4 *)(iVar1 + 8) = uVar2;\n              iVar3 = iVar1;\n            }\n          }\n          return iVar3;\n        }" (if "if") (parenthesized_expression "(iVar1 != iVar3)" (( "(") (binary_expression "iVar1 != iVar3" (identifier "iVar1") (!= "!=") (identifier "iVar3")) () ")")) (compound_statement "{\n          (**(code **)(puVar10 + 0xd3fd4))();\n          iVar3 = *piVar4;\n          if (iVar3 == 0) {\n            return 0;\n          }\n          if (iVar5 == 1) {\n            *piVar4 = *(int *)(iVar3 + 8);\n            *(undefined4 *)(iVar3 + 8) = 0;\n            *(undefined4 *)(iVar3 + 0xc) = 0;\n          }\n          else {\n            iVar3 = FUN_00021630();\n            iVar1 = *piVar4;\n            if (iVar1 != 0) {\n              *(int *)(iVar1 + 0xc) = iVar3;\n              *piVar4 = *(int *)(iVar1 + 8);\n              uVar2 = FUN_00021630(piVar4,iVar5 + -1);\n              *(undefined4 *)(iVar1 + 8) = uVar2;\n              iVar3 = iVar1;\n            }\n          }\n          return iVar3;\n        }" ({ "{") (expression_statement "(**(code **)(puVar10 + 0xd3fd4))();" (call_expression "(**(code **)(puVar10 + 0xd3fd4))()" (parenthesized_expression "(**(code **)(puVar10 + 0xd3fd4))" (( "(") (pointer_expression "**(code **)(puVar10 + 0xd3fd4)" (* "*") (pointer_expression "*(code **)(puVar10 + 0xd3fd4)" (* "*") (cast_expression "(code **)(puVar10 + 0xd3fd4)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar10 + 0xd3fd4)" (( "(") (binary_expression "puVar10 + 0xd3fd4" (identifier "puVar10") (+ "+") (number_literal "0xd3fd4")) () ")"))))) () ")")) (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "iVar3 = *piVar4;" (assignment_expression "iVar3 = *piVar4" (identifier "iVar3") (= "=") (pointer_expression "*piVar4" (* "*") (identifier "piVar4"))) (; ";")) (if_statement "if (iVar3 == 0) {\n            return 0;\n          }" (if "if") (parenthesized_expression "(iVar3 == 0)" (( "(") (binary_expression "iVar3 == 0" (identifier "iVar3") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n            return 0;\n          }" ({ "{") (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}"))) (if_statement "if (iVar5 == 1) {\n            *piVar4 = *(int *)(iVar3 + 8);\n            *(undefined4 *)(iVar3 + 8) = 0;\n            *(undefined4 *)(iVar3 + 0xc) = 0;\n          }\n          else {\n            iVar3 = FUN_00021630();\n            iVar1 = *piVar4;\n            if (iVar1 != 0) {\n              *(int *)(iVar1 + 0xc) = iVar3;\n              *piVar4 = *(int *)(iVar1 + 8);\n              uVar2 = FUN_00021630(piVar4,iVar5 + -1);\n              *(undefined4 *)(iVar1 + 8) = uVar2;\n              iVar3 = iVar1;\n            }\n          }" (if "if") (parenthesized_expression "(iVar5 == 1)" (( "(") (binary_expression "iVar5 == 1" (identifier "iVar5") (== "==") (number_literal "1")) () ")")) (compound_statement "{\n            *piVar4 = *(int *)(iVar3 + 8);\n            *(undefined4 *)(iVar3 + 8) = 0;\n            *(undefined4 *)(iVar3 + 0xc) = 0;\n          }" ({ "{") (expression_statement "*piVar4 = *(int *)(iVar3 + 8);" (assignment_expression "*piVar4 = *(int *)(iVar3 + 8)" (pointer_expression "*piVar4" (* "*") (identifier "piVar4")) (= "=") (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")) () ")"))))) (; ";")) (expression_statement "*(undefined4 *)(iVar3 + 8) = 0;" (assignment_expression "*(undefined4 *)(iVar3 + 8) = 0" (pointer_expression "*(undefined4 *)(iVar3 + 8)" (* "*") (cast_expression "(undefined4 *)(iVar3 + 8)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar3 + 8)" (( "(") (binary_expression "iVar3 + 8" (identifier "iVar3") (+ "+") (number_literal "8")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "*(undefined4 *)(iVar3 + 0xc) = 0;" (assignment_expression "*(undefined4 *)(iVar3 + 0xc) = 0" (pointer_expression "*(undefined4 *)(iVar3 + 0xc)" (* "*") (cast_expression "(undefined4 *)(iVar3 + 0xc)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar3 + 0xc)" (( "(") (binary_expression "iVar3 + 0xc" (identifier "iVar3") (+ "+") (number_literal "0xc")) () ")")))) (= "=") (number_literal "0")) (; ";")) (} "}")) (else_clause "else {\n            iVar3 = FUN_00021630();\n            iVar1 = *piVar4;\n            if (iVar1 != 0) {\n              *(int *)(iVar1 + 0xc) = iVar3;\n              *piVar4 = *(int *)(iVar1 + 8);\n              uVar2 = FUN_00021630(piVar4,iVar5 + -1);\n              *(undefined4 *)(iVar1 + 8) = uVar2;\n              iVar3 = iVar1;\n            }\n          }" (else "else") (compound_statement "{\n            iVar3 = FUN_00021630();\n            iVar1 = *piVar4;\n            if (iVar1 != 0) {\n              *(int *)(iVar1 + 0xc) = iVar3;\n              *piVar4 = *(int *)(iVar1 + 8);\n              uVar2 = FUN_00021630(piVar4,iVar5 + -1);\n              *(undefined4 *)(iVar1 + 8) = uVar2;\n              iVar3 = iVar1;\n            }\n          }" ({ "{") (expression_statement "iVar3 = FUN_00021630();" (assignment_expression "iVar3 = FUN_00021630()" (identifier "iVar3") (= "=") (call_expression "FUN_00021630()" (identifier "FUN_00021630") (argument_list "()" (( "(") () ")")))) (; ";")) (expression_statement "iVar1 = *piVar4;" (assignment_expression "iVar1 = *piVar4" (identifier "iVar1") (= "=") (pointer_expression "*piVar4" (* "*") (identifier "piVar4"))) (; ";")) (if_statement "if (iVar1 != 0) {\n              *(int *)(iVar1 + 0xc) = iVar3;\n              *piVar4 = *(int *)(iVar1 + 8);\n              uVar2 = FUN_00021630(piVar4,iVar5 + -1);\n              *(undefined4 *)(iVar1 + 8) = uVar2;\n              iVar3 = iVar1;\n            }" (if "if") (parenthesized_expression "(iVar1 != 0)" (( "(") (binary_expression "iVar1 != 0" (identifier "iVar1") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n              *(int *)(iVar1 + 0xc) = iVar3;\n              *piVar4 = *(int *)(iVar1 + 8);\n              uVar2 = FUN_00021630(piVar4,iVar5 + -1);\n              *(undefined4 *)(iVar1 + 8) = uVar2;\n              iVar3 = iVar1;\n            }" ({ "{") (expression_statement "*(int *)(iVar1 + 0xc) = iVar3;" (assignment_expression "*(int *)(iVar1 + 0xc) = iVar3" (pointer_expression "*(int *)(iVar1 + 0xc)" (* "*") (cast_expression "(int *)(iVar1 + 0xc)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar1 + 0xc)" (( "(") (binary_expression "iVar1 + 0xc" (identifier "iVar1") (+ "+") (number_literal "0xc")) () ")")))) (= "=") (identifier "iVar3")) (; ";")) (expression_statement "*piVar4 = *(int *)(iVar1 + 8);" (assignment_expression "*piVar4 = *(int *)(iVar1 + 8)" (pointer_expression "*piVar4" (* "*") (identifier "piVar4")) (= "=") (pointer_expression "*(int *)(iVar1 + 8)" (* "*") (cast_expression "(int *)(iVar1 + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar1 + 8)" (( "(") (binary_expression "iVar1 + 8" (identifier "iVar1") (+ "+") (number_literal "8")) () ")"))))) (; ";")) (expression_statement "uVar2 = FUN_00021630(piVar4,iVar5 + -1);" (assignment_expression "uVar2 = FUN_00021630(piVar4,iVar5 + -1)" (identifier "uVar2") (= "=") (call_expression "FUN_00021630(piVar4,iVar5 + -1)" (identifier "FUN_00021630") (argument_list "(piVar4,iVar5 + -1)" (( "(") (identifier "piVar4") (, ",") (binary_expression "iVar5 + -1" (identifier "iVar5") (+ "+") (number_literal "-1")) () ")")))) (; ";")) (expression_statement "*(undefined4 *)(iVar1 + 8) = uVar2;" (assignment_expression "*(undefined4 *)(iVar1 + 8) = uVar2" (pointer_expression "*(undefined4 *)(iVar1 + 8)" (* "*") (cast_expression "(undefined4 *)(iVar1 + 8)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar1 + 8)" (( "(") (binary_expression "iVar1 + 8" (identifier "iVar1") (+ "+") (number_literal "8")) () ")")))) (= "=") (identifier "uVar2")) (; ";")) (expression_statement "iVar3 = iVar1;" (assignment_expression "iVar3 = iVar1" (identifier "iVar3") (= "=") (identifier "iVar1")) (; ";")) (} "}"))) (} "}")))) (return_statement "return iVar3;" (return "return") (identifier "iVar3") (; ";")) (} "}"))) (return_statement "return iVar3;" (return "return") (identifier "iVar3") (; ";")) (} "}"))) (expression_statement "iVar1 = *piVar6;" (assignment_expression "iVar1 = *piVar6" (identifier "iVar1") (= "=") (pointer_expression "*piVar6" (* "*") (identifier "piVar6"))) (; ";")) (expression_statement "piVar9 = param_2;" (assignment_expression "piVar9 = param_2" (identifier "piVar9") (= "=") (identifier "param_2")) (; ";")) (expression_statement "param_2 = piVar6;" (assignment_expression "param_2 = piVar6" (identifier "param_2") (= "=") (identifier "piVar6")) (; ";")) (expression_statement "uVar8 = piVar6[1];" (assignment_expression "uVar8 = piVar6[1]" (identifier "uVar8") (= "=") (subscript_expression "piVar6[1]" (identifier "piVar6") ([ "[") (number_literal "1") (] "]"))) (; ";")) (} "}"))) (expression_statement "piVar6 = (int *)(uint)(iVar3 < iVar1);" (assignment_expression "piVar6 = (int *)(uint)(iVar3 < iVar1)" (identifier "piVar6") (= "=") (cast_expression "(int *)(uint)(iVar3 < iVar1)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "(uint)(iVar3 < iVar1)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(iVar3 < iVar1)" (( "(") (binary_expression "iVar3 < iVar1" (identifier "iVar3") (< "<") (identifier "iVar1")) () ")"))))) (; ";")) (if_statement "if ((piVar6 == (int *)0x0) && ((iVar1 != iVar3 || (uVar8 <= uVar7)))) {\n      piVar4 = (int *)param_1[2];\n    }\n    else {\n      piVar9[2] = (int)param_1;\n      piVar4 = (int *)param_1[2];\n      piVar9 = param_1;\n    }" (if "if") (parenthesized_expression "((piVar6 == (int *)0x0) && ((iVar1 != iVar3 || (uVar8 <= uVar7))))" (( "(") (binary_expression "(piVar6 == (int *)0x0) && ((iVar1 != iVar3 || (uVar8 <= uVar7)))" (parenthesized_expression "(piVar6 == (int *)0x0)" (( "(") (binary_expression "piVar6 == (int *)0x0" (identifier "piVar6") (== "==") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (&& "&&") (parenthesized_expression "((iVar1 != iVar3 || (uVar8 <= uVar7)))" (( "(") (parenthesized_expression "(iVar1 != iVar3 || (uVar8 <= uVar7))" (( "(") (binary_expression "iVar1 != iVar3 || (uVar8 <= uVar7)" (binary_expression "iVar1 != iVar3" (identifier "iVar1") (!= "!=") (identifier "iVar3")) (|| "||") (parenthesized_expression "(uVar8 <= uVar7)" (( "(") (binary_expression "uVar8 <= uVar7" (identifier "uVar8") (<= "<=") (identifier "uVar7")) () ")"))) () ")")) () ")"))) () ")")) (compound_statement "{\n      piVar4 = (int *)param_1[2];\n    }" ({ "{") (expression_statement "piVar4 = (int *)param_1[2];" (assignment_expression "piVar4 = (int *)param_1[2]" (identifier "piVar4") (= "=") (cast_expression "(int *)param_1[2]" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_1[2]" (identifier "param_1") ([ "[") (number_literal "2") (] "]")))) (; ";")) (} "}")) (else_clause "else {\n      piVar9[2] = (int)param_1;\n      piVar4 = (int *)param_1[2];\n      piVar9 = param_1;\n    }" (else "else") (compound_statement "{\n      piVar9[2] = (int)param_1;\n      piVar4 = (int *)param_1[2];\n      piVar9 = param_1;\n    }" ({ "{") (expression_statement "piVar9[2] = (int)param_1;" (assignment_expression "piVar9[2] = (int)param_1" (subscript_expression "piVar9[2]" (identifier "piVar9") ([ "[") (number_literal "2") (] "]")) (= "=") (cast_expression "(int)param_1" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_1"))) (; ";")) (expression_statement "piVar4 = (int *)param_1[2];" (assignment_expression "piVar4 = (int *)param_1[2]" (identifier "piVar4") (= "=") (cast_expression "(int *)param_1[2]" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_1[2]" (identifier "param_1") ([ "[") (number_literal "2") (] "]")))) (; ";")) (expression_statement "piVar9 = param_1;" (assignment_expression "piVar9 = param_1" (identifier "piVar9") (= "=") (identifier "param_1")) (; ";")) (} "}")))) (expression_statement "param_1 = piVar4;" (assignment_expression "param_1 = piVar4" (identifier "param_1") (= "=") (identifier "piVar4")) (; ";")) (if_statement "if (param_1 == (int *)0x0) {\n      piVar9[2] = (int)param_2;\n      goto LAB_0002153c;\n    }" (if "if") (parenthesized_expression "(param_1 == (int *)0x0)" (( "(") (binary_expression "param_1 == (int *)0x0" (identifier "param_1") (== "==") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n      piVar9[2] = (int)param_2;\n      goto LAB_0002153c;\n    }" ({ "{") (expression_statement "piVar9[2] = (int)param_2;" (assignment_expression "piVar9[2] = (int)param_2" (subscript_expression "piVar9[2]" (identifier "piVar9") ([ "[") (number_literal "2") (] "]")) (= "=") (cast_expression "(int)param_2" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_2"))) (; ";")) (goto_statement "goto LAB_0002153c;" (goto "goto") (statement_identifier "LAB_0002153c") (; ";")) (} "}"))) (expression_statement "iVar3 = *param_1;" (assignment_expression "iVar3 = *param_1" (identifier "iVar3") (= "=") (pointer_expression "*param_1" (* "*") (identifier "param_1"))) (; ";")) (expression_statement "uVar7 = param_1[1];" (assignment_expression "uVar7 = param_1[1]" (identifier "uVar7") (= "=") (subscript_expression "param_1[1]" (identifier "param_1") ([ "[") (number_literal "1") (] "]"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (; ";")) (} "}")))
(translation_unit (function_definition type: (primitive_type) declarator: (function_declarator declarator: (identifier) parameters: (parameter_list (parameter_declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (parameter_declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))))) body: (compound_statement (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (array_declarator declarator: (identifier) size: (number_literal))) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (do_statement body: (compound_statement (while_statement condition: (parenthesized_expression (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (identifier)) right: (parenthesized_expression (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (identifier)) right: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))))))))) body: (compound_statement (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (subscript_expression argument: (identifier) index: (number_literal))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (compound_statement (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (number_literal)))) (labeled_statement label: (statement_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)) value: (identifier))))) consequence: (compound_statement (return_statement (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) arguments: (argument_list))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))))) alternative: (else_clause (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list))) (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: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (identifier)))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier) (identifier))))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (compound_statement (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) arguments: (argument_list))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (return_statement (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal)))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (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)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (expression_statement (assignment_expression left: (pointer_expression argument: (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: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier) (binary_expression left: (identifier) right: (number_literal)))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier)))))))) (return_statement (identifier)))) (return_statement (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (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: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (identifier) right: (identifier))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (number_literal)))) right: (parenthesized_expression (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (identifier)) right: (parenthesized_expression (binary_expression left: (identifier) right: (identifier)))))))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (subscript_expression argument: (identifier) index: (number_literal)))))) 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: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (subscript_expression argument: (identifier) index: (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (identifier)))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (compound_statement (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)))) (goto_statement label: (statement_identifier)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal))))) condition: (parenthesized_expression (true))))))

int MASKED(int *param_1,int *param_2)

{
  int iVar1;
  undefined4 uVar2;
  int iVar3;
  int *piVar4;
  int iVar5;
  int *piVar6;
  uint uVar7;
  uint uVar8;
  int *piVar9;
  undefined *puVar10;
  int iStack_50;
  int aiStack_20 [2];
  int local_18;
  int local_c;
  
  puVar10 = PTR___stack_chk_guard_000f5568;
  iVar3 = *param_1;
  uVar7 = param_1[1];
  iVar1 = *param_2;
  local_c = *(int *)PTR___stack_chk_guard_000f5568;
  uVar8 = param_2[1];
  piVar9 = aiStack_20;
  do {
    while ((iVar1 < iVar3 || ((iVar3 == iVar1 && (uVar8 < uVar7))))) {
      piVar9[2] = (int)param_2;
      piVar6 = (int *)param_2[2];
      if (piVar6 == (int *)0x0) {
        param_2[2] = (int)param_1;
        piVar6 = (int *)0x0;
LAB_0002153c:
        if (local_c == *(int *)puVar10) {
          return local_18;
        }
        iVar3 = local_c;
        puVar10 = PTR___stack_chk_fail_000f5540;
        (*(code *)PTR___stack_chk_fail_000f5540)();
        piVar9 = *(int **)(puVar10 + 0xd3ffc);
        iVar1 = *piVar9;
        if (*(int *)(iVar3 + 0xc) == 0) {
          *param_2 = iVar3;
          piVar4 = *(int **)(iVar3 + 8);
        }
        else {
          FUN_0002156c();
          *(int *)(iStack_50 + 8) = iVar3;
          piVar4 = *(int **)(iVar3 + 8);
        }
        if (piVar4 == (int *)0x0) {
          iVar5 = iVar3 + 8;
          *piVar6 = iVar3;
        }
        else {
          iVar5 = iVar3 + 8;
          FUN_0002156c(piVar4,iVar5,piVar6);
        }
        iVar3 = *piVar9;
        if (iVar1 != iVar3) {
          (**(code **)(puVar10 + 0xd3fd4))();
          iVar3 = *piVar4;
          if (iVar3 == 0) {
            return 0;
          }
          if (iVar5 == 1) {
            *piVar4 = *(int *)(iVar3 + 8);
            *(undefined4 *)(iVar3 + 8) = 0;
            *(undefined4 *)(iVar3 + 0xc) = 0;
          }
          else {
            iVar3 = FUN_00021630();
            iVar1 = *piVar4;
            if (iVar1 != 0) {
              *(int *)(iVar1 + 0xc) = iVar3;
              *piVar4 = *(int *)(iVar1 + 8);
              uVar2 = FUN_00021630(piVar4,iVar5 + -1);
              *(undefined4 *)(iVar1 + 8) = uVar2;
              iVar3 = iVar1;
            }
          }
          return iVar3;
        }
        return iVar3;
      }
      iVar1 = *piVar6;
      piVar9 = param_2;
      param_2 = piVar6;
      uVar8 = piVar6[1];
    }
    piVar6 = (int *)(uint)(iVar3 < iVar1);
    if ((piVar6 == (int *)0x0) && ((iVar1 != iVar3 || (uVar8 <= uVar7)))) {
      piVar4 = (int *)param_1[2];
    }
    else {
      piVar9[2] = (int)param_1;
      piVar4 = (int *)param_1[2];
      piVar9 = param_1;
    }
    param_1 = piVar4;
    if (param_1 == (int *)0x0) {
      piVar9[2] = (int)param_2;
      goto LAB_0002153c;
    }
    iVar3 = *param_1;
    uVar7 = param_1[1];
  } while( true );
}

