
/* WARNING: Function: __x86.get_pc_thunk.ax replaced with injection: get_pc_thunk_ax */
/* WARNING: Unknown calling convention */

reg_errcode_t re_node_set_add_intersect(re_node_set *dest,re_node_set *src1,re_node_set *src2)

{
  int *piVar1;
  int *piVar2;
  Idx *pIVar3;
  Idx *pIVar4;
  int iVar5;
  int iVar6;
  Idx *__ptr;
  int iVar7;
  int iVar8;
  int iVar9;
  size_t __n;
  int iVar10;
  bool bVar11;
  int local_24;
  
  iVar10 = src1->nelem;
  if (iVar10 == 0) {
    return _REG_NOERROR;
  }
  iVar6 = src2->nelem;
  if (iVar6 == 0) {
    return _REG_NOERROR;
  }
  iVar7 = dest->nelem;
  __ptr = dest->elems;
  if (dest->alloc < iVar10 + iVar6 + iVar7) {
    iVar10 = dest->alloc + iVar10 + iVar6;
    __ptr = (Idx *)realloc(__ptr,iVar10 * 4);
    if (__ptr == (Idx *)0x0) {
      return _REG_ESPACE;
    }
    dest->alloc = iVar10;
    iVar7 = dest->nelem;
    dest->elems = __ptr;
    iVar6 = src2->nelem;
    iVar10 = src1->nelem;
  }
  iVar8 = iVar7 + -1;
  local_24 = iVar7 + iVar10 + iVar6;
  iVar10 = iVar10 + -1;
  iVar6 = iVar6 + -1;
  pIVar3 = src1->elems;
  pIVar4 = src2->elems;
  iVar9 = pIVar3[iVar10];
  iVar7 = pIVar4[iVar6];
  do {
    bVar11 = SBORROW4(iVar9,iVar7);
    iVar5 = iVar9 - iVar7;
    if (iVar9 == iVar7) goto LAB_0001e8ae;
    while (bVar11 != iVar5 < 0) {
      iVar6 = iVar6 + -1;
      if (iVar6 < 0) goto LAB_0001e940;
      while( true ) {
        iVar7 = pIVar4[iVar6];
        bVar11 = SBORROW4(iVar9,iVar7);
        iVar5 = iVar9 - iVar7;
        if (iVar5 != 0) break;
LAB_0001e8ae:
        if (-1 < iVar8) {
          do {
            if (__ptr[iVar8] <= iVar9) {
              if (__ptr[iVar8] == iVar9) goto LAB_0001e8d7;
              break;
            }
            iVar8 = iVar8 + -1;
          } while (iVar8 != -1);
        }
        local_24 = local_24 + -1;
        __ptr[local_24] = iVar9;
LAB_0001e8d7:
        iVar10 = iVar10 + -1;
        if ((iVar10 < 0) || (iVar6 = iVar6 + -1, iVar6 < 0)) goto LAB_0001e940;
        iVar9 = pIVar3[iVar10];
      }
    }
    iVar10 = iVar10 + -1;
    if (iVar10 < 0) break;
    iVar9 = pIVar3[iVar10];
  } while( true );
LAB_0001e940:
  iVar7 = dest->nelem;
  iVar10 = iVar7 + -1;
  iVar9 = src1->nelem + iVar7 + src2->nelem;
  iVar6 = iVar9 + -1;
  iVar9 = iVar9 - local_24;
  dest->nelem = iVar7 + iVar9;
  if ((iVar9 < 1) || (iVar10 < 0)) {
    __n = iVar9 * 4;
  }
  else {
    do {
      while( true ) {
        piVar1 = __ptr + iVar6;
        piVar2 = __ptr + iVar10;
        iVar7 = iVar10 + iVar9;
        if (*piVar1 <= *piVar2) break;
        iVar6 = iVar6 + -1;
        __ptr[iVar7] = *piVar1;
        iVar9 = iVar9 + -1;
        if (iVar9 == 0) {
          __n = 0;
          __ptr = dest->elems;
          goto LAB_0001e8f3;
        }
      }
      iVar10 = iVar10 + -1;
      __ptr[iVar7] = *piVar2;
    } while (iVar10 != -1);
    __n = iVar9 << 2;
    __ptr = dest->elems;
  }
LAB_0001e8f3:
  memcpy(__ptr,__ptr + local_24,__n);
  return _REG_NOERROR;
}



/* WARNING: Function: __i686.get_pc_thunk.ax replaced with injection: get_pc_thunk_ax */

undefined4 FUN_0001e810(int *param_1,int param_2,int param_3)

{
  int *piVar1;
  int iVar2;
  int iVar3;
  void *__ptr;
  int iVar4;
  int iVar5;
  int iVar6;
  int iVar7;
  size_t __n;
  int iVar8;
  int iVar9;
  bool bVar10;
  int local_24;
  
  iVar9 = *(int *)(param_2 + 4);
  if (iVar9 == 0) {
    return 0;
  }
  iVar3 = *(int *)(param_3 + 4);
  if (iVar3 == 0) {
    return 0;
  }
  iVar5 = param_1[1];
  __ptr = (void *)param_1[2];
  if (*param_1 < iVar9 + iVar3 + iVar5) {
    iVar9 = *param_1 + iVar9 + iVar3;
    __ptr = realloc(__ptr,iVar9 * 4);
    if (__ptr == (void *)0x0) {
      return 0xc;
    }
    *param_1 = iVar9;
    iVar5 = param_1[1];
    param_1[2] = (int)__ptr;
    iVar3 = *(int *)(param_3 + 4);
    iVar9 = *(int *)(param_2 + 4);
  }
  iVar6 = iVar5 + -1;
  local_24 = iVar5 + iVar9 + iVar3;
  iVar9 = iVar9 + -1;
  iVar3 = iVar3 + -1;
  iVar5 = *(int *)(param_2 + 8);
  iVar7 = *(int *)(param_3 + 8);
  iVar4 = *(int *)(iVar5 + iVar9 * 4);
  iVar8 = *(int *)(iVar7 + iVar3 * 4);
  do {
    bVar10 = SBORROW4(iVar4,iVar8);
    iVar2 = iVar4 - iVar8;
    if (iVar4 == iVar8) goto LAB_0001e8ae;
    while (bVar10 != iVar2 < 0) {
      iVar3 = iVar3 + -1;
      if (iVar3 < 0) goto LAB_0001e940;
      while( true ) {
        iVar8 = *(int *)(iVar7 + iVar3 * 4);
        bVar10 = SBORROW4(iVar4,iVar8);
        iVar2 = iVar4 - iVar8;
        if (iVar2 != 0) break;
LAB_0001e8ae:
        if (-1 < iVar6) {
          do {
            iVar8 = *(int *)((int)__ptr + iVar6 * 4);
            if (iVar8 <= iVar4) {
              if (iVar8 == iVar4) goto LAB_0001e8d7;
              break;
            }
            iVar6 = iVar6 + -1;
          } while (iVar6 != -1);
        }
        local_24 = local_24 + -1;
        *(int *)((int)__ptr + local_24 * 4) = iVar4;
LAB_0001e8d7:
        iVar9 = iVar9 + -1;
        if ((iVar9 < 0) || (iVar3 = iVar3 + -1, iVar3 < 0)) goto LAB_0001e940;
        iVar4 = *(int *)(iVar5 + iVar9 * 4);
      }
    }
    iVar9 = iVar9 + -1;
    if (iVar9 < 0) break;
    iVar4 = *(int *)(iVar5 + iVar9 * 4);
  } while( true );
LAB_0001e940:
  iVar5 = param_1[1];
  iVar9 = iVar5 + -1;
  iVar7 = *(int *)(param_2 + 4) + iVar5 + *(int *)(param_3 + 4);
  iVar3 = iVar7 + -1;
  iVar7 = iVar7 - local_24;
  param_1[1] = iVar5 + iVar7;
  if ((iVar7 < 1) || (iVar9 < 0)) {
    __n = iVar7 * 4;
  }
  else {
    do {
      while( true ) {
        iVar5 = *(int *)((int)__ptr + iVar3 * 4);
        iVar8 = *(int *)((int)__ptr + iVar9 * 4);
        piVar1 = (int *)((int)__ptr + (iVar9 + iVar7) * 4);
        if (iVar5 <= iVar8) break;
        iVar3 = iVar3 + -1;
        *piVar1 = iVar5;
        iVar7 = iVar7 + -1;
        if (iVar7 == 0) {
          __n = 0;
          __ptr = (void *)param_1[2];
          goto LAB_0001e8f3;
        }
      }
      iVar9 = iVar9 + -1;
      *piVar1 = iVar8;
    } while (iVar9 != -1);
    __n = iVar7 << 2;
    __ptr = (void *)param_1[2];
  }
LAB_0001e8f3:
  memcpy(__ptr,(void *)((int)__ptr + local_24 * 4),__n);
  return 0;
}


CALL 0x0001607c
ADD EAX,0x197eb
PUSH EBP
PUSH EDI
PUSH ESI
PUSH EBX
SUB ESP,0x1c
MOV dword ptr [ESP + 0xc],EAX
MOV EAX,dword ptr [ESP + 0x34]
MOV EAX,dword ptr [EAX + 0x4]
TEST EAX,EAX
JZ 0x0001e90e
MOV ESI,dword ptr [ESP + 0x38]
MOV ECX,dword ptr [ESI + 0x4]
TEST ECX,ECX
JZ 0x0001e920
MOV ESI,dword ptr [ESP + 0x30]
LEA EBX,[EAX + ECX*0x1]
MOV EDI,dword ptr [ESP + 0x30]
MOV EDX,dword ptr [ESI + 0x4]
MOV ESI,dword ptr [ESI]
MOV EDI,dword ptr [EDI + 0x8]
LEA EBP,[EBX + EDX*0x1]
CMP EBP,ESI
JG 0x0001e9ca
LEA EBX,[EDX + EAX*0x1]
SUB EDX,0x1
LEA ESI,[EBX + ECX*0x1]
MOV dword ptr [ESP + 0x8],ESI
LEA ESI,[EAX + -0x1]
LEA EAX,[ECX + -0x1]
MOV ECX,dword ptr [ESP + 0x34]
MOV EBP,dword ptr [ECX + 0x8]
MOV ECX,dword ptr [ESP + 0x38]
MOV ECX,dword ptr [ECX + 0x8]
MOV EBX,ECX
MOV dword ptr [ESP + 0x4],ECX
MOV ECX,dword ptr [EBP + ESI*0x4]
MOV EBX,dword ptr [EBX + EAX*0x4]
NOP
CMP ECX,EBX
JZ 0x0001e8ae
JGE 0x0001e930
SUB EAX,0x1
JS 0x0001e940
MOV EBX,dword ptr [ESP + 0x4]
MOV EBX,dword ptr [EBX + EAX*0x4]
CMP ECX,EBX
JNZ 0x0001e894
TEST EDX,EDX
JNS 0x0001e8c0
JMP 0x0001e8cb
SUB EDX,0x1
CMP EDX,-0x1
JZ 0x0001e8cb
MOV EBX,dword ptr [EDI + EDX*0x4]
CMP EBX,ECX
JG 0x0001e8b8
CMP EBX,ECX
JZ 0x0001e8d7
SUB dword ptr [ESP + 0x8],0x1
MOV EBX,dword ptr [ESP + 0x8]
MOV dword ptr [EDI + EBX*0x4],ECX
SUB ESI,0x1
JS 0x0001e940
SUB EAX,0x1
JS 0x0001e940
MOV ECX,dword ptr [EBP + ESI*0x4]
JMP 0x0001e8a3
SHL EDX,0x2
MOV EAX,dword ptr [ESP + 0x8]
SUB ESP,0x4
PUSH EDX
LEA EAX,[EDI + EAX*0x4]
PUSH EAX
PUSH EDI
MOV EBX,dword ptr [ESP + 0x1c]
CALL 0x00012110
ADD ESP,0x10
XOR EAX,EAX
ADD ESP,0x1c
POP EBX
POP ESI
POP EDI
POP EBP
RET
ADD ESP,0x1c
XOR EAX,EAX
POP EBX
POP ESI
POP EDI
POP EBP
RET
SUB ESI,0x1
JS 0x0001e940
MOV ECX,dword ptr [EBP + ESI*0x4]
JMP 0x0001e890
MOV EAX,dword ptr [ESP + 0x30]
MOV ESI,dword ptr [ESP + 0x34]
MOV EBX,dword ptr [ESP + 0x30]
MOV ECX,dword ptr [EAX + 0x4]
MOV EDX,dword ptr [ESI + 0x4]
MOV ESI,dword ptr [ESP + 0x38]
ADD EDX,ECX
LEA EAX,[ECX + -0x1]
ADD EDX,dword ptr [ESI + 0x4]
LEA ESI,[EDX + -0x1]
SUB EDX,dword ptr [ESP + 0x8]
ADD ECX,EDX
MOV dword ptr [EBX + 0x4],ECX
TEST EDX,EDX
JLE 0x0001e8f0
TEST EAX,EAX
JS 0x0001e8f0
LEA ESI,[ESI]
LEA ESI,[ESI]
MOV EBX,dword ptr [EDI + ESI*0x4]
MOV ECX,dword ptr [EDI + EAX*0x4]
LEA EBP,[EAX + EDX*0x1]
LEA EBP,[EDI + EBP*0x4]
CMP EBX,ECX
JLE 0x0001e9b0
SUB ESI,0x1
MOV dword ptr [EBP],EBX
SUB EDX,0x1
JNZ 0x0001e980
MOV EAX,dword ptr [ESP + 0x30]
XOR EDX,EDX
MOV EDI,dword ptr [EAX + 0x8]
JMP 0x0001e8f3
SUB EAX,0x1
MOV dword ptr [EBP],ECX
CMP EAX,-0x1
JNZ 0x0001e980
MOV EAX,dword ptr [ESP + 0x30]
SHL EDX,0x2
MOV EDI,dword ptr [EAX + 0x8]
JMP 0x0001e8f3
ADD ESI,EBX
SUB ESP,0x8
LEA EAX,[ESI*0x4 + 0x0]
PUSH EAX
PUSH EDI
MOV EBX,dword ptr [ESP + 0x1c]
CALL 0x00012290
ADD ESP,0x10
MOV EDI,EAX
TEST EAX,EAX
JZ 0x0001ea09
MOV EAX,dword ptr [ESP + 0x30]
MOV dword ptr [EAX],ESI
MOV EDX,dword ptr [EAX + 0x4]
MOV dword ptr [EAX + 0x8],EDI
MOV ESI,dword ptr [ESP + 0x38]
MOV EAX,dword ptr [ESP + 0x34]
MOV ECX,dword ptr [ESI + 0x4]
MOV EAX,dword ptr [EAX + 0x4]
JMP 0x0001e861
MOV EAX,0xc
JMP 0x0001e90e
(translation_unit "/* WARNING: Function: __i686.get_pc_thunk.ax replaced with injection: get_pc_thunk_ax */\n\nundefined4 FUN_0001e810(int *param_1,int param_2,int param_3)\n\n{\n  int *piVar1;\n  int iVar2;\n  int iVar3;\n  void *__ptr;\n  int iVar4;\n  int iVar5;\n  int iVar6;\n  int iVar7;\n  size_t __n;\n  int iVar8;\n  int iVar9;\n  bool bVar10;\n  int local_24;\n  \n  iVar9 = *(int *)(param_2 + 4);\n  if (iVar9 == 0) {\n    return 0;\n  }\n  iVar3 = *(int *)(param_3 + 4);\n  if (iVar3 == 0) {\n    return 0;\n  }\n  iVar5 = param_1[1];\n  __ptr = (void *)param_1[2];\n  if (*param_1 < iVar9 + iVar3 + iVar5) {\n    iVar9 = *param_1 + iVar9 + iVar3;\n    __ptr = realloc(__ptr,iVar9 * 4);\n    if (__ptr == (void *)0x0) {\n      return 0xc;\n    }\n    *param_1 = iVar9;\n    iVar5 = param_1[1];\n    param_1[2] = (int)__ptr;\n    iVar3 = *(int *)(param_3 + 4);\n    iVar9 = *(int *)(param_2 + 4);\n  }\n  iVar6 = iVar5 + -1;\n  local_24 = iVar5 + iVar9 + iVar3;\n  iVar9 = iVar9 + -1;\n  iVar3 = iVar3 + -1;\n  iVar5 = *(int *)(param_2 + 8);\n  iVar7 = *(int *)(param_3 + 8);\n  iVar4 = *(int *)(iVar5 + iVar9 * 4);\n  iVar8 = *(int *)(iVar7 + iVar3 * 4);\n  do {\n    bVar10 = SBORROW4(iVar4,iVar8);\n    iVar2 = iVar4 - iVar8;\n    if (iVar4 == iVar8) goto LAB_0001e8ae;\n    while (bVar10 != iVar2 < 0) {\n      iVar3 = iVar3 + -1;\n      if (iVar3 < 0) goto LAB_0001e940;\n      while( true ) {\n        iVar8 = *(int *)(iVar7 + iVar3 * 4);\n        bVar10 = SBORROW4(iVar4,iVar8);\n        iVar2 = iVar4 - iVar8;\n        if (iVar2 != 0) break;\nLAB_0001e8ae:\n        if (-1 < iVar6) {\n          do {\n            iVar8 = *(int *)((int)__ptr + iVar6 * 4);\n            if (iVar8 <= iVar4) {\n              if (iVar8 == iVar4) goto LAB_0001e8d7;\n              break;\n            }\n            iVar6 = iVar6 + -1;\n          } while (iVar6 != -1);\n        }\n        local_24 = local_24 + -1;\n        *(int *)((int)__ptr + local_24 * 4) = iVar4;\nLAB_0001e8d7:\n        iVar9 = iVar9 + -1;\n        if ((iVar9 < 0) || (iVar3 = iVar3 + -1, iVar3 < 0)) goto LAB_0001e940;\n        iVar4 = *(int *)(iVar5 + iVar9 * 4);\n      }\n    }\n    iVar9 = iVar9 + -1;\n    if (iVar9 < 0) break;\n    iVar4 = *(int *)(iVar5 + iVar9 * 4);\n  } while( true );\nLAB_0001e940:\n  iVar5 = param_1[1];\n  iVar9 = iVar5 + -1;\n  iVar7 = *(int *)(param_2 + 4) + iVar5 + *(int *)(param_3 + 4);\n  iVar3 = iVar7 + -1;\n  iVar7 = iVar7 - local_24;\n  param_1[1] = iVar5 + iVar7;\n  if ((iVar7 < 1) || (iVar9 < 0)) {\n    __n = iVar7 * 4;\n  }\n  else {\n    do {\n      while( true ) {\n        iVar5 = *(int *)((int)__ptr + iVar3 * 4);\n        iVar8 = *(int *)((int)__ptr + iVar9 * 4);\n        piVar1 = (int *)((int)__ptr + (iVar9 + iVar7) * 4);\n        if (iVar5 <= iVar8) break;\n        iVar3 = iVar3 + -1;\n        *piVar1 = iVar5;\n        iVar7 = iVar7 + -1;\n        if (iVar7 == 0) {\n          __n = 0;\n          __ptr = (void *)param_1[2];\n          goto LAB_0001e8f3;\n        }\n      }\n      iVar9 = iVar9 + -1;\n      *piVar1 = iVar8;\n    } while (iVar9 != -1);\n    __n = iVar7 << 2;\n    __ptr = (void *)param_1[2];\n  }\nLAB_0001e8f3:\n  memcpy(__ptr,(void *)((int)__ptr + local_24 * 4),__n);\n  return 0;\n}\n\n" comment (function_definition "undefined4 FUN_0001e810(int *param_1,int param_2,int param_3)\n\n{\n  int *piVar1;\n  int iVar2;\n  int iVar3;\n  void *__ptr;\n  int iVar4;\n  int iVar5;\n  int iVar6;\n  int iVar7;\n  size_t __n;\n  int iVar8;\n  int iVar9;\n  bool bVar10;\n  int local_24;\n  \n  iVar9 = *(int *)(param_2 + 4);\n  if (iVar9 == 0) {\n    return 0;\n  }\n  iVar3 = *(int *)(param_3 + 4);\n  if (iVar3 == 0) {\n    return 0;\n  }\n  iVar5 = param_1[1];\n  __ptr = (void *)param_1[2];\n  if (*param_1 < iVar9 + iVar3 + iVar5) {\n    iVar9 = *param_1 + iVar9 + iVar3;\n    __ptr = realloc(__ptr,iVar9 * 4);\n    if (__ptr == (void *)0x0) {\n      return 0xc;\n    }\n    *param_1 = iVar9;\n    iVar5 = param_1[1];\n    param_1[2] = (int)__ptr;\n    iVar3 = *(int *)(param_3 + 4);\n    iVar9 = *(int *)(param_2 + 4);\n  }\n  iVar6 = iVar5 + -1;\n  local_24 = iVar5 + iVar9 + iVar3;\n  iVar9 = iVar9 + -1;\n  iVar3 = iVar3 + -1;\n  iVar5 = *(int *)(param_2 + 8);\n  iVar7 = *(int *)(param_3 + 8);\n  iVar4 = *(int *)(iVar5 + iVar9 * 4);\n  iVar8 = *(int *)(iVar7 + iVar3 * 4);\n  do {\n    bVar10 = SBORROW4(iVar4,iVar8);\n    iVar2 = iVar4 - iVar8;\n    if (iVar4 == iVar8) goto LAB_0001e8ae;\n    while (bVar10 != iVar2 < 0) {\n      iVar3 = iVar3 + -1;\n      if (iVar3 < 0) goto LAB_0001e940;\n      while( true ) {\n        iVar8 = *(int *)(iVar7 + iVar3 * 4);\n        bVar10 = SBORROW4(iVar4,iVar8);\n        iVar2 = iVar4 - iVar8;\n        if (iVar2 != 0) break;\nLAB_0001e8ae:\n        if (-1 < iVar6) {\n          do {\n            iVar8 = *(int *)((int)__ptr + iVar6 * 4);\n            if (iVar8 <= iVar4) {\n              if (iVar8 == iVar4) goto LAB_0001e8d7;\n              break;\n            }\n            iVar6 = iVar6 + -1;\n          } while (iVar6 != -1);\n        }\n        local_24 = local_24 + -1;\n        *(int *)((int)__ptr + local_24 * 4) = iVar4;\nLAB_0001e8d7:\n        iVar9 = iVar9 + -1;\n        if ((iVar9 < 0) || (iVar3 = iVar3 + -1, iVar3 < 0)) goto LAB_0001e940;\n        iVar4 = *(int *)(iVar5 + iVar9 * 4);\n      }\n    }\n    iVar9 = iVar9 + -1;\n    if (iVar9 < 0) break;\n    iVar4 = *(int *)(iVar5 + iVar9 * 4);\n  } while( true );\nLAB_0001e940:\n  iVar5 = param_1[1];\n  iVar9 = iVar5 + -1;\n  iVar7 = *(int *)(param_2 + 4) + iVar5 + *(int *)(param_3 + 4);\n  iVar3 = iVar7 + -1;\n  iVar7 = iVar7 - local_24;\n  param_1[1] = iVar5 + iVar7;\n  if ((iVar7 < 1) || (iVar9 < 0)) {\n    __n = iVar7 * 4;\n  }\n  else {\n    do {\n      while( true ) {\n        iVar5 = *(int *)((int)__ptr + iVar3 * 4);\n        iVar8 = *(int *)((int)__ptr + iVar9 * 4);\n        piVar1 = (int *)((int)__ptr + (iVar9 + iVar7) * 4);\n        if (iVar5 <= iVar8) break;\n        iVar3 = iVar3 + -1;\n        *piVar1 = iVar5;\n        iVar7 = iVar7 + -1;\n        if (iVar7 == 0) {\n          __n = 0;\n          __ptr = (void *)param_1[2];\n          goto LAB_0001e8f3;\n        }\n      }\n      iVar9 = iVar9 + -1;\n      *piVar1 = iVar8;\n    } while (iVar9 != -1);\n    __n = iVar7 << 2;\n    __ptr = (void *)param_1[2];\n  }\nLAB_0001e8f3:\n  memcpy(__ptr,(void *)((int)__ptr + local_24 * 4),__n);\n  return 0;\n}" type_identifier (function_declarator "FUN_0001e810(int *param_1,int param_2,int param_3)" identifier (parameter_list "(int *param_1,int param_2,int param_3)" ( (parameter_declaration "int *param_1" primitive_type (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "int param_2" primitive_type identifier) , (parameter_declaration "int param_3" primitive_type identifier) ))) (compound_statement "{\n  int *piVar1;\n  int iVar2;\n  int iVar3;\n  void *__ptr;\n  int iVar4;\n  int iVar5;\n  int iVar6;\n  int iVar7;\n  size_t __n;\n  int iVar8;\n  int iVar9;\n  bool bVar10;\n  int local_24;\n  \n  iVar9 = *(int *)(param_2 + 4);\n  if (iVar9 == 0) {\n    return 0;\n  }\n  iVar3 = *(int *)(param_3 + 4);\n  if (iVar3 == 0) {\n    return 0;\n  }\n  iVar5 = param_1[1];\n  __ptr = (void *)param_1[2];\n  if (*param_1 < iVar9 + iVar3 + iVar5) {\n    iVar9 = *param_1 + iVar9 + iVar3;\n    __ptr = realloc(__ptr,iVar9 * 4);\n    if (__ptr == (void *)0x0) {\n      return 0xc;\n    }\n    *param_1 = iVar9;\n    iVar5 = param_1[1];\n    param_1[2] = (int)__ptr;\n    iVar3 = *(int *)(param_3 + 4);\n    iVar9 = *(int *)(param_2 + 4);\n  }\n  iVar6 = iVar5 + -1;\n  local_24 = iVar5 + iVar9 + iVar3;\n  iVar9 = iVar9 + -1;\n  iVar3 = iVar3 + -1;\n  iVar5 = *(int *)(param_2 + 8);\n  iVar7 = *(int *)(param_3 + 8);\n  iVar4 = *(int *)(iVar5 + iVar9 * 4);\n  iVar8 = *(int *)(iVar7 + iVar3 * 4);\n  do {\n    bVar10 = SBORROW4(iVar4,iVar8);\n    iVar2 = iVar4 - iVar8;\n    if (iVar4 == iVar8) goto LAB_0001e8ae;\n    while (bVar10 != iVar2 < 0) {\n      iVar3 = iVar3 + -1;\n      if (iVar3 < 0) goto LAB_0001e940;\n      while( true ) {\n        iVar8 = *(int *)(iVar7 + iVar3 * 4);\n        bVar10 = SBORROW4(iVar4,iVar8);\n        iVar2 = iVar4 - iVar8;\n        if (iVar2 != 0) break;\nLAB_0001e8ae:\n        if (-1 < iVar6) {\n          do {\n            iVar8 = *(int *)((int)__ptr + iVar6 * 4);\n            if (iVar8 <= iVar4) {\n              if (iVar8 == iVar4) goto LAB_0001e8d7;\n              break;\n            }\n            iVar6 = iVar6 + -1;\n          } while (iVar6 != -1);\n        }\n        local_24 = local_24 + -1;\n        *(int *)((int)__ptr + local_24 * 4) = iVar4;\nLAB_0001e8d7:\n        iVar9 = iVar9 + -1;\n        if ((iVar9 < 0) || (iVar3 = iVar3 + -1, iVar3 < 0)) goto LAB_0001e940;\n        iVar4 = *(int *)(iVar5 + iVar9 * 4);\n      }\n    }\n    iVar9 = iVar9 + -1;\n    if (iVar9 < 0) break;\n    iVar4 = *(int *)(iVar5 + iVar9 * 4);\n  } while( true );\nLAB_0001e940:\n  iVar5 = param_1[1];\n  iVar9 = iVar5 + -1;\n  iVar7 = *(int *)(param_2 + 4) + iVar5 + *(int *)(param_3 + 4);\n  iVar3 = iVar7 + -1;\n  iVar7 = iVar7 - local_24;\n  param_1[1] = iVar5 + iVar7;\n  if ((iVar7 < 1) || (iVar9 < 0)) {\n    __n = iVar7 * 4;\n  }\n  else {\n    do {\n      while( true ) {\n        iVar5 = *(int *)((int)__ptr + iVar3 * 4);\n        iVar8 = *(int *)((int)__ptr + iVar9 * 4);\n        piVar1 = (int *)((int)__ptr + (iVar9 + iVar7) * 4);\n        if (iVar5 <= iVar8) break;\n        iVar3 = iVar3 + -1;\n        *piVar1 = iVar5;\n        iVar7 = iVar7 + -1;\n        if (iVar7 == 0) {\n          __n = 0;\n          __ptr = (void *)param_1[2];\n          goto LAB_0001e8f3;\n        }\n      }\n      iVar9 = iVar9 + -1;\n      *piVar1 = iVar8;\n    } while (iVar9 != -1);\n    __n = iVar7 << 2;\n    __ptr = (void *)param_1[2];\n  }\nLAB_0001e8f3:\n  memcpy(__ptr,(void *)((int)__ptr + local_24 * 4),__n);\n  return 0;\n}" { (declaration "int *piVar1;" primitive_type (pointer_declarator "*piVar1" * identifier) ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "void *__ptr;" primitive_type (pointer_declarator "*__ptr" * identifier) ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "int iVar5;" primitive_type identifier ;) (declaration "int iVar6;" primitive_type identifier ;) (declaration "int iVar7;" primitive_type identifier ;) (declaration "size_t __n;" primitive_type identifier ;) (declaration "int iVar8;" primitive_type identifier ;) (declaration "int iVar9;" primitive_type identifier ;) (declaration "bool bVar10;" primitive_type identifier ;) (declaration "int local_24;" primitive_type identifier ;) (expression_statement "iVar9 = *(int *)(param_2 + 4);" (assignment_expression "iVar9 = *(int *)(param_2 + 4)" identifier = (pointer_expression "*(int *)(param_2 + 4)" * (cast_expression "(int *)(param_2 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 4)" ( (binary_expression "param_2 + 4" identifier + number_literal) ))))) ;) (if_statement "if (iVar9 == 0) {\n    return 0;\n  }" if (parenthesized_expression "(iVar9 == 0)" ( (binary_expression "iVar9 == 0" identifier == number_literal) )) (compound_statement "{\n    return 0;\n  }" { (return_statement "return 0;" return number_literal ;) })) (expression_statement "iVar3 = *(int *)(param_3 + 4);" (assignment_expression "iVar3 = *(int *)(param_3 + 4)" identifier = (pointer_expression "*(int *)(param_3 + 4)" * (cast_expression "(int *)(param_3 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 4)" ( (binary_expression "param_3 + 4" identifier + number_literal) ))))) ;) (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 ;) })) (expression_statement "iVar5 = param_1[1];" (assignment_expression "iVar5 = param_1[1]" identifier = (subscript_expression "param_1[1]" identifier [ number_literal ])) ;) (expression_statement "__ptr = (void *)param_1[2];" (assignment_expression "__ptr = (void *)param_1[2]" identifier = (cast_expression "(void *)param_1[2]" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[2]" identifier [ number_literal ]))) ;) (if_statement "if (*param_1 < iVar9 + iVar3 + iVar5) {\n    iVar9 = *param_1 + iVar9 + iVar3;\n    __ptr = realloc(__ptr,iVar9 * 4);\n    if (__ptr == (void *)0x0) {\n      return 0xc;\n    }\n    *param_1 = iVar9;\n    iVar5 = param_1[1];\n    param_1[2] = (int)__ptr;\n    iVar3 = *(int *)(param_3 + 4);\n    iVar9 = *(int *)(param_2 + 4);\n  }" if (parenthesized_expression "(*param_1 < iVar9 + iVar3 + iVar5)" ( (binary_expression "*param_1 < iVar9 + iVar3 + iVar5" (pointer_expression "*param_1" * identifier) < (binary_expression "iVar9 + iVar3 + iVar5" (binary_expression "iVar9 + iVar3" identifier + identifier) + identifier)) )) (compound_statement "{\n    iVar9 = *param_1 + iVar9 + iVar3;\n    __ptr = realloc(__ptr,iVar9 * 4);\n    if (__ptr == (void *)0x0) {\n      return 0xc;\n    }\n    *param_1 = iVar9;\n    iVar5 = param_1[1];\n    param_1[2] = (int)__ptr;\n    iVar3 = *(int *)(param_3 + 4);\n    iVar9 = *(int *)(param_2 + 4);\n  }" { (expression_statement "iVar9 = *param_1 + iVar9 + iVar3;" (assignment_expression "iVar9 = *param_1 + iVar9 + iVar3" identifier = (binary_expression "*param_1 + iVar9 + iVar3" (binary_expression "*param_1 + iVar9" (pointer_expression "*param_1" * identifier) + identifier) + identifier)) ;) (expression_statement "__ptr = realloc(__ptr,iVar9 * 4);" (assignment_expression "__ptr = realloc(__ptr,iVar9 * 4)" identifier = (call_expression "realloc(__ptr,iVar9 * 4)" identifier (argument_list "(__ptr,iVar9 * 4)" ( identifier , (binary_expression "iVar9 * 4" identifier * number_literal) )))) ;) (if_statement "if (__ptr == (void *)0x0) {\n      return 0xc;\n    }" if (parenthesized_expression "(__ptr == (void *)0x0)" ( (binary_expression "__ptr == (void *)0x0" identifier == (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      return 0xc;\n    }" { (return_statement "return 0xc;" return number_literal ;) })) (expression_statement "*param_1 = iVar9;" (assignment_expression "*param_1 = iVar9" (pointer_expression "*param_1" * identifier) = identifier) ;) (expression_statement "iVar5 = param_1[1];" (assignment_expression "iVar5 = param_1[1]" identifier = (subscript_expression "param_1[1]" identifier [ number_literal ])) ;) (expression_statement "param_1[2] = (int)__ptr;" (assignment_expression "param_1[2] = (int)__ptr" (subscript_expression "param_1[2]" identifier [ number_literal ]) = (cast_expression "(int)__ptr" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "iVar3 = *(int *)(param_3 + 4);" (assignment_expression "iVar3 = *(int *)(param_3 + 4)" identifier = (pointer_expression "*(int *)(param_3 + 4)" * (cast_expression "(int *)(param_3 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 4)" ( (binary_expression "param_3 + 4" identifier + number_literal) ))))) ;) (expression_statement "iVar9 = *(int *)(param_2 + 4);" (assignment_expression "iVar9 = *(int *)(param_2 + 4)" identifier = (pointer_expression "*(int *)(param_2 + 4)" * (cast_expression "(int *)(param_2 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 4)" ( (binary_expression "param_2 + 4" identifier + number_literal) ))))) ;) })) (expression_statement "iVar6 = iVar5 + -1;" (assignment_expression "iVar6 = iVar5 + -1" identifier = (binary_expression "iVar5 + -1" identifier + number_literal)) ;) (expression_statement "local_24 = iVar5 + iVar9 + iVar3;" (assignment_expression "local_24 = iVar5 + iVar9 + iVar3" identifier = (binary_expression "iVar5 + iVar9 + iVar3" (binary_expression "iVar5 + iVar9" identifier + identifier) + identifier)) ;) (expression_statement "iVar9 = iVar9 + -1;" (assignment_expression "iVar9 = iVar9 + -1" identifier = (binary_expression "iVar9 + -1" identifier + number_literal)) ;) (expression_statement "iVar3 = iVar3 + -1;" (assignment_expression "iVar3 = iVar3 + -1" identifier = (binary_expression "iVar3 + -1" identifier + number_literal)) ;) (expression_statement "iVar5 = *(int *)(param_2 + 8);" (assignment_expression "iVar5 = *(int *)(param_2 + 8)" identifier = (pointer_expression "*(int *)(param_2 + 8)" * (cast_expression "(int *)(param_2 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 8)" ( (binary_expression "param_2 + 8" identifier + number_literal) ))))) ;) (expression_statement "iVar7 = *(int *)(param_3 + 8);" (assignment_expression "iVar7 = *(int *)(param_3 + 8)" identifier = (pointer_expression "*(int *)(param_3 + 8)" * (cast_expression "(int *)(param_3 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 8)" ( (binary_expression "param_3 + 8" identifier + number_literal) ))))) ;) (expression_statement "iVar4 = *(int *)(iVar5 + iVar9 * 4);" (assignment_expression "iVar4 = *(int *)(iVar5 + iVar9 * 4)" identifier = (pointer_expression "*(int *)(iVar5 + iVar9 * 4)" * (cast_expression "(int *)(iVar5 + iVar9 * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + iVar9 * 4)" ( (binary_expression "iVar5 + iVar9 * 4" identifier + (binary_expression "iVar9 * 4" identifier * number_literal)) ))))) ;) (expression_statement "iVar8 = *(int *)(iVar7 + iVar3 * 4);" (assignment_expression "iVar8 = *(int *)(iVar7 + iVar3 * 4)" identifier = (pointer_expression "*(int *)(iVar7 + iVar3 * 4)" * (cast_expression "(int *)(iVar7 + iVar3 * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar7 + iVar3 * 4)" ( (binary_expression "iVar7 + iVar3 * 4" identifier + (binary_expression "iVar3 * 4" identifier * number_literal)) ))))) ;) (do_statement "do {\n    bVar10 = SBORROW4(iVar4,iVar8);\n    iVar2 = iVar4 - iVar8;\n    if (iVar4 == iVar8) goto LAB_0001e8ae;\n    while (bVar10 != iVar2 < 0) {\n      iVar3 = iVar3 + -1;\n      if (iVar3 < 0) goto LAB_0001e940;\n      while( true ) {\n        iVar8 = *(int *)(iVar7 + iVar3 * 4);\n        bVar10 = SBORROW4(iVar4,iVar8);\n        iVar2 = iVar4 - iVar8;\n        if (iVar2 != 0) break;\nLAB_0001e8ae:\n        if (-1 < iVar6) {\n          do {\n            iVar8 = *(int *)((int)__ptr + iVar6 * 4);\n            if (iVar8 <= iVar4) {\n              if (iVar8 == iVar4) goto LAB_0001e8d7;\n              break;\n            }\n            iVar6 = iVar6 + -1;\n          } while (iVar6 != -1);\n        }\n        local_24 = local_24 + -1;\n        *(int *)((int)__ptr + local_24 * 4) = iVar4;\nLAB_0001e8d7:\n        iVar9 = iVar9 + -1;\n        if ((iVar9 < 0) || (iVar3 = iVar3 + -1, iVar3 < 0)) goto LAB_0001e940;\n        iVar4 = *(int *)(iVar5 + iVar9 * 4);\n      }\n    }\n    iVar9 = iVar9 + -1;\n    if (iVar9 < 0) break;\n    iVar4 = *(int *)(iVar5 + iVar9 * 4);\n  } while( true );" do (compound_statement "{\n    bVar10 = SBORROW4(iVar4,iVar8);\n    iVar2 = iVar4 - iVar8;\n    if (iVar4 == iVar8) goto LAB_0001e8ae;\n    while (bVar10 != iVar2 < 0) {\n      iVar3 = iVar3 + -1;\n      if (iVar3 < 0) goto LAB_0001e940;\n      while( true ) {\n        iVar8 = *(int *)(iVar7 + iVar3 * 4);\n        bVar10 = SBORROW4(iVar4,iVar8);\n        iVar2 = iVar4 - iVar8;\n        if (iVar2 != 0) break;\nLAB_0001e8ae:\n        if (-1 < iVar6) {\n          do {\n            iVar8 = *(int *)((int)__ptr + iVar6 * 4);\n            if (iVar8 <= iVar4) {\n              if (iVar8 == iVar4) goto LAB_0001e8d7;\n              break;\n            }\n            iVar6 = iVar6 + -1;\n          } while (iVar6 != -1);\n        }\n        local_24 = local_24 + -1;\n        *(int *)((int)__ptr + local_24 * 4) = iVar4;\nLAB_0001e8d7:\n        iVar9 = iVar9 + -1;\n        if ((iVar9 < 0) || (iVar3 = iVar3 + -1, iVar3 < 0)) goto LAB_0001e940;\n        iVar4 = *(int *)(iVar5 + iVar9 * 4);\n      }\n    }\n    iVar9 = iVar9 + -1;\n    if (iVar9 < 0) break;\n    iVar4 = *(int *)(iVar5 + iVar9 * 4);\n  }" { (expression_statement "bVar10 = SBORROW4(iVar4,iVar8);" (assignment_expression "bVar10 = SBORROW4(iVar4,iVar8)" identifier = (call_expression "SBORROW4(iVar4,iVar8)" identifier (argument_list "(iVar4,iVar8)" ( identifier , identifier )))) ;) (expression_statement "iVar2 = iVar4 - iVar8;" (assignment_expression "iVar2 = iVar4 - iVar8" identifier = (binary_expression "iVar4 - iVar8" identifier - identifier)) ;) (if_statement "if (iVar4 == iVar8) goto LAB_0001e8ae;" if (parenthesized_expression "(iVar4 == iVar8)" ( (binary_expression "iVar4 == iVar8" identifier == identifier) )) (goto_statement "goto LAB_0001e8ae;" goto statement_identifier ;)) (while_statement "while (bVar10 != iVar2 < 0) {\n      iVar3 = iVar3 + -1;\n      if (iVar3 < 0) goto LAB_0001e940;\n      while( true ) {\n        iVar8 = *(int *)(iVar7 + iVar3 * 4);\n        bVar10 = SBORROW4(iVar4,iVar8);\n        iVar2 = iVar4 - iVar8;\n        if (iVar2 != 0) break;\nLAB_0001e8ae:\n        if (-1 < iVar6) {\n          do {\n            iVar8 = *(int *)((int)__ptr + iVar6 * 4);\n            if (iVar8 <= iVar4) {\n              if (iVar8 == iVar4) goto LAB_0001e8d7;\n              break;\n            }\n            iVar6 = iVar6 + -1;\n          } while (iVar6 != -1);\n        }\n        local_24 = local_24 + -1;\n        *(int *)((int)__ptr + local_24 * 4) = iVar4;\nLAB_0001e8d7:\n        iVar9 = iVar9 + -1;\n        if ((iVar9 < 0) || (iVar3 = iVar3 + -1, iVar3 < 0)) goto LAB_0001e940;\n        iVar4 = *(int *)(iVar5 + iVar9 * 4);\n      }\n    }" while (parenthesized_expression "(bVar10 != iVar2 < 0)" ( (binary_expression "bVar10 != iVar2 < 0" identifier != (binary_expression "iVar2 < 0" identifier < number_literal)) )) (compound_statement "{\n      iVar3 = iVar3 + -1;\n      if (iVar3 < 0) goto LAB_0001e940;\n      while( true ) {\n        iVar8 = *(int *)(iVar7 + iVar3 * 4);\n        bVar10 = SBORROW4(iVar4,iVar8);\n        iVar2 = iVar4 - iVar8;\n        if (iVar2 != 0) break;\nLAB_0001e8ae:\n        if (-1 < iVar6) {\n          do {\n            iVar8 = *(int *)((int)__ptr + iVar6 * 4);\n            if (iVar8 <= iVar4) {\n              if (iVar8 == iVar4) goto LAB_0001e8d7;\n              break;\n            }\n            iVar6 = iVar6 + -1;\n          } while (iVar6 != -1);\n        }\n        local_24 = local_24 + -1;\n        *(int *)((int)__ptr + local_24 * 4) = iVar4;\nLAB_0001e8d7:\n        iVar9 = iVar9 + -1;\n        if ((iVar9 < 0) || (iVar3 = iVar3 + -1, iVar3 < 0)) goto LAB_0001e940;\n        iVar4 = *(int *)(iVar5 + iVar9 * 4);\n      }\n    }" { (expression_statement "iVar3 = iVar3 + -1;" (assignment_expression "iVar3 = iVar3 + -1" identifier = (binary_expression "iVar3 + -1" identifier + number_literal)) ;) (if_statement "if (iVar3 < 0) goto LAB_0001e940;" if (parenthesized_expression "(iVar3 < 0)" ( (binary_expression "iVar3 < 0" identifier < number_literal) )) (goto_statement "goto LAB_0001e940;" goto statement_identifier ;)) (while_statement "while( true ) {\n        iVar8 = *(int *)(iVar7 + iVar3 * 4);\n        bVar10 = SBORROW4(iVar4,iVar8);\n        iVar2 = iVar4 - iVar8;\n        if (iVar2 != 0) break;\nLAB_0001e8ae:\n        if (-1 < iVar6) {\n          do {\n            iVar8 = *(int *)((int)__ptr + iVar6 * 4);\n            if (iVar8 <= iVar4) {\n              if (iVar8 == iVar4) goto LAB_0001e8d7;\n              break;\n            }\n            iVar6 = iVar6 + -1;\n          } while (iVar6 != -1);\n        }\n        local_24 = local_24 + -1;\n        *(int *)((int)__ptr + local_24 * 4) = iVar4;\nLAB_0001e8d7:\n        iVar9 = iVar9 + -1;\n        if ((iVar9 < 0) || (iVar3 = iVar3 + -1, iVar3 < 0)) goto LAB_0001e940;\n        iVar4 = *(int *)(iVar5 + iVar9 * 4);\n      }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n        iVar8 = *(int *)(iVar7 + iVar3 * 4);\n        bVar10 = SBORROW4(iVar4,iVar8);\n        iVar2 = iVar4 - iVar8;\n        if (iVar2 != 0) break;\nLAB_0001e8ae:\n        if (-1 < iVar6) {\n          do {\n            iVar8 = *(int *)((int)__ptr + iVar6 * 4);\n            if (iVar8 <= iVar4) {\n              if (iVar8 == iVar4) goto LAB_0001e8d7;\n              break;\n            }\n            iVar6 = iVar6 + -1;\n          } while (iVar6 != -1);\n        }\n        local_24 = local_24 + -1;\n        *(int *)((int)__ptr + local_24 * 4) = iVar4;\nLAB_0001e8d7:\n        iVar9 = iVar9 + -1;\n        if ((iVar9 < 0) || (iVar3 = iVar3 + -1, iVar3 < 0)) goto LAB_0001e940;\n        iVar4 = *(int *)(iVar5 + iVar9 * 4);\n      }" { (expression_statement "iVar8 = *(int *)(iVar7 + iVar3 * 4);" (assignment_expression "iVar8 = *(int *)(iVar7 + iVar3 * 4)" identifier = (pointer_expression "*(int *)(iVar7 + iVar3 * 4)" * (cast_expression "(int *)(iVar7 + iVar3 * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar7 + iVar3 * 4)" ( (binary_expression "iVar7 + iVar3 * 4" identifier + (binary_expression "iVar3 * 4" identifier * number_literal)) ))))) ;) (expression_statement "bVar10 = SBORROW4(iVar4,iVar8);" (assignment_expression "bVar10 = SBORROW4(iVar4,iVar8)" identifier = (call_expression "SBORROW4(iVar4,iVar8)" identifier (argument_list "(iVar4,iVar8)" ( identifier , identifier )))) ;) (expression_statement "iVar2 = iVar4 - iVar8;" (assignment_expression "iVar2 = iVar4 - iVar8" identifier = (binary_expression "iVar4 - iVar8" identifier - identifier)) ;) (if_statement "if (iVar2 != 0) break;" if (parenthesized_expression "(iVar2 != 0)" ( (binary_expression "iVar2 != 0" identifier != number_literal) )) (break_statement "break;" break ;)) (labeled_statement "LAB_0001e8ae:\n        if (-1 < iVar6) {\n          do {\n            iVar8 = *(int *)((int)__ptr + iVar6 * 4);\n            if (iVar8 <= iVar4) {\n              if (iVar8 == iVar4) goto LAB_0001e8d7;\n              break;\n            }\n            iVar6 = iVar6 + -1;\n          } while (iVar6 != -1);\n        }" statement_identifier : (if_statement "if (-1 < iVar6) {\n          do {\n            iVar8 = *(int *)((int)__ptr + iVar6 * 4);\n            if (iVar8 <= iVar4) {\n              if (iVar8 == iVar4) goto LAB_0001e8d7;\n              break;\n            }\n            iVar6 = iVar6 + -1;\n          } while (iVar6 != -1);\n        }" if (parenthesized_expression "(-1 < iVar6)" ( (binary_expression "-1 < iVar6" number_literal < identifier) )) (compound_statement "{\n          do {\n            iVar8 = *(int *)((int)__ptr + iVar6 * 4);\n            if (iVar8 <= iVar4) {\n              if (iVar8 == iVar4) goto LAB_0001e8d7;\n              break;\n            }\n            iVar6 = iVar6 + -1;\n          } while (iVar6 != -1);\n        }" { (do_statement "do {\n            iVar8 = *(int *)((int)__ptr + iVar6 * 4);\n            if (iVar8 <= iVar4) {\n              if (iVar8 == iVar4) goto LAB_0001e8d7;\n              break;\n            }\n            iVar6 = iVar6 + -1;\n          } while (iVar6 != -1);" do (compound_statement "{\n            iVar8 = *(int *)((int)__ptr + iVar6 * 4);\n            if (iVar8 <= iVar4) {\n              if (iVar8 == iVar4) goto LAB_0001e8d7;\n              break;\n            }\n            iVar6 = iVar6 + -1;\n          }" { (expression_statement "iVar8 = *(int *)((int)__ptr + iVar6 * 4);" (assignment_expression "iVar8 = *(int *)((int)__ptr + iVar6 * 4)" identifier = (pointer_expression "*(int *)((int)__ptr + iVar6 * 4)" * (cast_expression "(int *)((int)__ptr + iVar6 * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)__ptr + iVar6 * 4)" ( (binary_expression "(int)__ptr + iVar6 * 4" (cast_expression "(int)__ptr" ( (type_descriptor "int" primitive_type) ) identifier) + (binary_expression "iVar6 * 4" identifier * number_literal)) ))))) ;) (if_statement "if (iVar8 <= iVar4) {\n              if (iVar8 == iVar4) goto LAB_0001e8d7;\n              break;\n            }" if (parenthesized_expression "(iVar8 <= iVar4)" ( (binary_expression "iVar8 <= iVar4" identifier <= identifier) )) (compound_statement "{\n              if (iVar8 == iVar4) goto LAB_0001e8d7;\n              break;\n            }" { (if_statement "if (iVar8 == iVar4) goto LAB_0001e8d7;" if (parenthesized_expression "(iVar8 == iVar4)" ( (binary_expression "iVar8 == iVar4" identifier == identifier) )) (goto_statement "goto LAB_0001e8d7;" goto statement_identifier ;)) (break_statement "break;" break ;) })) (expression_statement "iVar6 = iVar6 + -1;" (assignment_expression "iVar6 = iVar6 + -1" identifier = (binary_expression "iVar6 + -1" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar6 != -1)" ( (binary_expression "iVar6 != -1" identifier != number_literal) )) ;) }))) (expression_statement "local_24 = local_24 + -1;" (assignment_expression "local_24 = local_24 + -1" identifier = (binary_expression "local_24 + -1" identifier + number_literal)) ;) (expression_statement "*(int *)((int)__ptr + local_24 * 4) = iVar4;" (assignment_expression "*(int *)((int)__ptr + local_24 * 4) = iVar4" (pointer_expression "*(int *)((int)__ptr + local_24 * 4)" * (cast_expression "(int *)((int)__ptr + local_24 * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)__ptr + local_24 * 4)" ( (binary_expression "(int)__ptr + local_24 * 4" (cast_expression "(int)__ptr" ( (type_descriptor "int" primitive_type) ) identifier) + (binary_expression "local_24 * 4" identifier * number_literal)) )))) = identifier) ;) (labeled_statement "LAB_0001e8d7:\n        iVar9 = iVar9 + -1;" statement_identifier : (expression_statement "iVar9 = iVar9 + -1;" (assignment_expression "iVar9 = iVar9 + -1" identifier = (binary_expression "iVar9 + -1" identifier + number_literal)) ;)) (if_statement "if ((iVar9 < 0) || (iVar3 = iVar3 + -1, iVar3 < 0)) goto LAB_0001e940;" if (parenthesized_expression "((iVar9 < 0) || (iVar3 = iVar3 + -1, iVar3 < 0))" ( (binary_expression "(iVar9 < 0) || (iVar3 = iVar3 + -1, iVar3 < 0)" (parenthesized_expression "(iVar9 < 0)" ( (binary_expression "iVar9 < 0" identifier < number_literal) )) || (parenthesized_expression "(iVar3 = iVar3 + -1, iVar3 < 0)" ( (comma_expression "iVar3 = iVar3 + -1, iVar3 < 0" (assignment_expression "iVar3 = iVar3 + -1" identifier = (binary_expression "iVar3 + -1" identifier + number_literal)) , (binary_expression "iVar3 < 0" identifier < number_literal)) ))) )) (goto_statement "goto LAB_0001e940;" goto statement_identifier ;)) (expression_statement "iVar4 = *(int *)(iVar5 + iVar9 * 4);" (assignment_expression "iVar4 = *(int *)(iVar5 + iVar9 * 4)" identifier = (pointer_expression "*(int *)(iVar5 + iVar9 * 4)" * (cast_expression "(int *)(iVar5 + iVar9 * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + iVar9 * 4)" ( (binary_expression "iVar5 + iVar9 * 4" identifier + (binary_expression "iVar9 * 4" identifier * number_literal)) ))))) ;) })) })) (expression_statement "iVar9 = iVar9 + -1;" (assignment_expression "iVar9 = iVar9 + -1" identifier = (binary_expression "iVar9 + -1" identifier + number_literal)) ;) (if_statement "if (iVar9 < 0) break;" if (parenthesized_expression "(iVar9 < 0)" ( (binary_expression "iVar9 < 0" identifier < number_literal) )) (break_statement "break;" break ;)) (expression_statement "iVar4 = *(int *)(iVar5 + iVar9 * 4);" (assignment_expression "iVar4 = *(int *)(iVar5 + iVar9 * 4)" identifier = (pointer_expression "*(int *)(iVar5 + iVar9 * 4)" * (cast_expression "(int *)(iVar5 + iVar9 * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + iVar9 * 4)" ( (binary_expression "iVar5 + iVar9 * 4" identifier + (binary_expression "iVar9 * 4" identifier * number_literal)) ))))) ;) }) while (parenthesized_expression "( true )" ( true )) ;) (labeled_statement "LAB_0001e940:\n  iVar5 = param_1[1];" statement_identifier : (expression_statement "iVar5 = param_1[1];" (assignment_expression "iVar5 = param_1[1]" identifier = (subscript_expression "param_1[1]" identifier [ number_literal ])) ;)) (expression_statement "iVar9 = iVar5 + -1;" (assignment_expression "iVar9 = iVar5 + -1" identifier = (binary_expression "iVar5 + -1" identifier + number_literal)) ;) (expression_statement "iVar7 = *(int *)(param_2 + 4) + iVar5 + *(int *)(param_3 + 4);" (assignment_expression "iVar7 = *(int *)(param_2 + 4) + iVar5 + *(int *)(param_3 + 4)" identifier = (binary_expression "*(int *)(param_2 + 4) + iVar5 + *(int *)(param_3 + 4)" (binary_expression "*(int *)(param_2 + 4) + iVar5" (pointer_expression "*(int *)(param_2 + 4)" * (cast_expression "(int *)(param_2 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 4)" ( (binary_expression "param_2 + 4" identifier + number_literal) )))) + identifier) + (pointer_expression "*(int *)(param_3 + 4)" * (cast_expression "(int *)(param_3 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 4)" ( (binary_expression "param_3 + 4" identifier + number_literal) )))))) ;) (expression_statement "iVar3 = iVar7 + -1;" (assignment_expression "iVar3 = iVar7 + -1" identifier = (binary_expression "iVar7 + -1" identifier + number_literal)) ;) (expression_statement "iVar7 = iVar7 - local_24;" (assignment_expression "iVar7 = iVar7 - local_24" identifier = (binary_expression "iVar7 - local_24" identifier - identifier)) ;) (expression_statement "param_1[1] = iVar5 + iVar7;" (assignment_expression "param_1[1] = iVar5 + iVar7" (subscript_expression "param_1[1]" identifier [ number_literal ]) = (binary_expression "iVar5 + iVar7" identifier + identifier)) ;) (if_statement "if ((iVar7 < 1) || (iVar9 < 0)) {\n    __n = iVar7 * 4;\n  }\n  else {\n    do {\n      while( true ) {\n        iVar5 = *(int *)((int)__ptr + iVar3 * 4);\n        iVar8 = *(int *)((int)__ptr + iVar9 * 4);\n        piVar1 = (int *)((int)__ptr + (iVar9 + iVar7) * 4);\n        if (iVar5 <= iVar8) break;\n        iVar3 = iVar3 + -1;\n        *piVar1 = iVar5;\n        iVar7 = iVar7 + -1;\n        if (iVar7 == 0) {\n          __n = 0;\n          __ptr = (void *)param_1[2];\n          goto LAB_0001e8f3;\n        }\n      }\n      iVar9 = iVar9 + -1;\n      *piVar1 = iVar8;\n    } while (iVar9 != -1);\n    __n = iVar7 << 2;\n    __ptr = (void *)param_1[2];\n  }" if (parenthesized_expression "((iVar7 < 1) || (iVar9 < 0))" ( (binary_expression "(iVar7 < 1) || (iVar9 < 0)" (parenthesized_expression "(iVar7 < 1)" ( (binary_expression "iVar7 < 1" identifier < number_literal) )) || (parenthesized_expression "(iVar9 < 0)" ( (binary_expression "iVar9 < 0" identifier < number_literal) ))) )) (compound_statement "{\n    __n = iVar7 * 4;\n  }" { (expression_statement "__n = iVar7 * 4;" (assignment_expression "__n = iVar7 * 4" identifier = (binary_expression "iVar7 * 4" identifier * number_literal)) ;) }) (else_clause "else {\n    do {\n      while( true ) {\n        iVar5 = *(int *)((int)__ptr + iVar3 * 4);\n        iVar8 = *(int *)((int)__ptr + iVar9 * 4);\n        piVar1 = (int *)((int)__ptr + (iVar9 + iVar7) * 4);\n        if (iVar5 <= iVar8) break;\n        iVar3 = iVar3 + -1;\n        *piVar1 = iVar5;\n        iVar7 = iVar7 + -1;\n        if (iVar7 == 0) {\n          __n = 0;\n          __ptr = (void *)param_1[2];\n          goto LAB_0001e8f3;\n        }\n      }\n      iVar9 = iVar9 + -1;\n      *piVar1 = iVar8;\n    } while (iVar9 != -1);\n    __n = iVar7 << 2;\n    __ptr = (void *)param_1[2];\n  }" else (compound_statement "{\n    do {\n      while( true ) {\n        iVar5 = *(int *)((int)__ptr + iVar3 * 4);\n        iVar8 = *(int *)((int)__ptr + iVar9 * 4);\n        piVar1 = (int *)((int)__ptr + (iVar9 + iVar7) * 4);\n        if (iVar5 <= iVar8) break;\n        iVar3 = iVar3 + -1;\n        *piVar1 = iVar5;\n        iVar7 = iVar7 + -1;\n        if (iVar7 == 0) {\n          __n = 0;\n          __ptr = (void *)param_1[2];\n          goto LAB_0001e8f3;\n        }\n      }\n      iVar9 = iVar9 + -1;\n      *piVar1 = iVar8;\n    } while (iVar9 != -1);\n    __n = iVar7 << 2;\n    __ptr = (void *)param_1[2];\n  }" { (do_statement "do {\n      while( true ) {\n        iVar5 = *(int *)((int)__ptr + iVar3 * 4);\n        iVar8 = *(int *)((int)__ptr + iVar9 * 4);\n        piVar1 = (int *)((int)__ptr + (iVar9 + iVar7) * 4);\n        if (iVar5 <= iVar8) break;\n        iVar3 = iVar3 + -1;\n        *piVar1 = iVar5;\n        iVar7 = iVar7 + -1;\n        if (iVar7 == 0) {\n          __n = 0;\n          __ptr = (void *)param_1[2];\n          goto LAB_0001e8f3;\n        }\n      }\n      iVar9 = iVar9 + -1;\n      *piVar1 = iVar8;\n    } while (iVar9 != -1);" do (compound_statement "{\n      while( true ) {\n        iVar5 = *(int *)((int)__ptr + iVar3 * 4);\n        iVar8 = *(int *)((int)__ptr + iVar9 * 4);\n        piVar1 = (int *)((int)__ptr + (iVar9 + iVar7) * 4);\n        if (iVar5 <= iVar8) break;\n        iVar3 = iVar3 + -1;\n        *piVar1 = iVar5;\n        iVar7 = iVar7 + -1;\n        if (iVar7 == 0) {\n          __n = 0;\n          __ptr = (void *)param_1[2];\n          goto LAB_0001e8f3;\n        }\n      }\n      iVar9 = iVar9 + -1;\n      *piVar1 = iVar8;\n    }" { (while_statement "while( true ) {\n        iVar5 = *(int *)((int)__ptr + iVar3 * 4);\n        iVar8 = *(int *)((int)__ptr + iVar9 * 4);\n        piVar1 = (int *)((int)__ptr + (iVar9 + iVar7) * 4);\n        if (iVar5 <= iVar8) break;\n        iVar3 = iVar3 + -1;\n        *piVar1 = iVar5;\n        iVar7 = iVar7 + -1;\n        if (iVar7 == 0) {\n          __n = 0;\n          __ptr = (void *)param_1[2];\n          goto LAB_0001e8f3;\n        }\n      }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n        iVar5 = *(int *)((int)__ptr + iVar3 * 4);\n        iVar8 = *(int *)((int)__ptr + iVar9 * 4);\n        piVar1 = (int *)((int)__ptr + (iVar9 + iVar7) * 4);\n        if (iVar5 <= iVar8) break;\n        iVar3 = iVar3 + -1;\n        *piVar1 = iVar5;\n        iVar7 = iVar7 + -1;\n        if (iVar7 == 0) {\n          __n = 0;\n          __ptr = (void *)param_1[2];\n          goto LAB_0001e8f3;\n        }\n      }" { (expression_statement "iVar5 = *(int *)((int)__ptr + iVar3 * 4);" (assignment_expression "iVar5 = *(int *)((int)__ptr + iVar3 * 4)" identifier = (pointer_expression "*(int *)((int)__ptr + iVar3 * 4)" * (cast_expression "(int *)((int)__ptr + iVar3 * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)__ptr + iVar3 * 4)" ( (binary_expression "(int)__ptr + iVar3 * 4" (cast_expression "(int)__ptr" ( (type_descriptor "int" primitive_type) ) identifier) + (binary_expression "iVar3 * 4" identifier * number_literal)) ))))) ;) (expression_statement "iVar8 = *(int *)((int)__ptr + iVar9 * 4);" (assignment_expression "iVar8 = *(int *)((int)__ptr + iVar9 * 4)" identifier = (pointer_expression "*(int *)((int)__ptr + iVar9 * 4)" * (cast_expression "(int *)((int)__ptr + iVar9 * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)__ptr + iVar9 * 4)" ( (binary_expression "(int)__ptr + iVar9 * 4" (cast_expression "(int)__ptr" ( (type_descriptor "int" primitive_type) ) identifier) + (binary_expression "iVar9 * 4" identifier * number_literal)) ))))) ;) (expression_statement "piVar1 = (int *)((int)__ptr + (iVar9 + iVar7) * 4);" (assignment_expression "piVar1 = (int *)((int)__ptr + (iVar9 + iVar7) * 4)" identifier = (cast_expression "(int *)((int)__ptr + (iVar9 + iVar7) * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)__ptr + (iVar9 + iVar7) * 4)" ( (binary_expression "(int)__ptr + (iVar9 + iVar7) * 4" (cast_expression "(int)__ptr" ( (type_descriptor "int" primitive_type) ) identifier) + (binary_expression "(iVar9 + iVar7) * 4" (parenthesized_expression "(iVar9 + iVar7)" ( (binary_expression "iVar9 + iVar7" identifier + identifier) )) * number_literal)) )))) ;) (if_statement "if (iVar5 <= iVar8) break;" if (parenthesized_expression "(iVar5 <= iVar8)" ( (binary_expression "iVar5 <= iVar8" identifier <= identifier) )) (break_statement "break;" break ;)) (expression_statement "iVar3 = iVar3 + -1;" (assignment_expression "iVar3 = iVar3 + -1" identifier = (binary_expression "iVar3 + -1" identifier + number_literal)) ;) (expression_statement "*piVar1 = iVar5;" (assignment_expression "*piVar1 = iVar5" (pointer_expression "*piVar1" * identifier) = identifier) ;) (expression_statement "iVar7 = iVar7 + -1;" (assignment_expression "iVar7 = iVar7 + -1" identifier = (binary_expression "iVar7 + -1" identifier + number_literal)) ;) (if_statement "if (iVar7 == 0) {\n          __n = 0;\n          __ptr = (void *)param_1[2];\n          goto LAB_0001e8f3;\n        }" if (parenthesized_expression "(iVar7 == 0)" ( (binary_expression "iVar7 == 0" identifier == number_literal) )) (compound_statement "{\n          __n = 0;\n          __ptr = (void *)param_1[2];\n          goto LAB_0001e8f3;\n        }" { (expression_statement "__n = 0;" (assignment_expression "__n = 0" identifier = number_literal) ;) (expression_statement "__ptr = (void *)param_1[2];" (assignment_expression "__ptr = (void *)param_1[2]" identifier = (cast_expression "(void *)param_1[2]" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[2]" identifier [ number_literal ]))) ;) (goto_statement "goto LAB_0001e8f3;" goto statement_identifier ;) })) })) (expression_statement "iVar9 = iVar9 + -1;" (assignment_expression "iVar9 = iVar9 + -1" identifier = (binary_expression "iVar9 + -1" identifier + number_literal)) ;) (expression_statement "*piVar1 = iVar8;" (assignment_expression "*piVar1 = iVar8" (pointer_expression "*piVar1" * identifier) = identifier) ;) }) while (parenthesized_expression "(iVar9 != -1)" ( (binary_expression "iVar9 != -1" identifier != number_literal) )) ;) (expression_statement "__n = iVar7 << 2;" (assignment_expression "__n = iVar7 << 2" identifier = (binary_expression "iVar7 << 2" identifier << number_literal)) ;) (expression_statement "__ptr = (void *)param_1[2];" (assignment_expression "__ptr = (void *)param_1[2]" identifier = (cast_expression "(void *)param_1[2]" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[2]" identifier [ number_literal ]))) ;) }))) (labeled_statement "LAB_0001e8f3:\n  memcpy(__ptr,(void *)((int)__ptr + local_24 * 4),__n);" statement_identifier : (expression_statement "memcpy(__ptr,(void *)((int)__ptr + local_24 * 4),__n);" (call_expression "memcpy(__ptr,(void *)((int)__ptr + local_24 * 4),__n)" identifier (argument_list "(__ptr,(void *)((int)__ptr + local_24 * 4),__n)" ( identifier , (cast_expression "(void *)((int)__ptr + local_24 * 4)" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)__ptr + local_24 * 4)" ( (binary_expression "(int)__ptr + local_24 * 4" (cast_expression "(int)__ptr" ( (type_descriptor "int" primitive_type) ) identifier) + (binary_expression "local_24 * 4" identifier * number_literal)) ))) , identifier ))) ;)) (return_statement "return 0;" return number_literal ;) })))
(translation_unit "/* WARNING: Function: __x86.get_pc_thunk.ax replaced with injection: get_pc_thunk_ax */\n/* WARNING: Unknown calling convention */\n\nreg_errcode_t re_node_set_add_intersect(re_node_set *dest,re_node_set *src1,re_node_set *src2)\n\n{\n  int *piVar1;\n  int *piVar2;\n  Idx *pIVar3;\n  Idx *pIVar4;\n  int iVar5;\n  int iVar6;\n  Idx *__ptr;\n  int iVar7;\n  int iVar8;\n  int iVar9;\n  size_t __n;\n  int iVar10;\n  bool bVar11;\n  int local_24;\n  \n  iVar10 = src1->nelem;\n  if (iVar10 == 0) {\n    return _REG_NOERROR;\n  }\n  iVar6 = src2->nelem;\n  if (iVar6 == 0) {\n    return _REG_NOERROR;\n  }\n  iVar7 = dest->nelem;\n  __ptr = dest->elems;\n  if (dest->alloc < iVar10 + iVar6 + iVar7) {\n    iVar10 = dest->alloc + iVar10 + iVar6;\n    __ptr = (Idx *)realloc(__ptr,iVar10 * 4);\n    if (__ptr == (Idx *)0x0) {\n      return _REG_ESPACE;\n    }\n    dest->alloc = iVar10;\n    iVar7 = dest->nelem;\n    dest->elems = __ptr;\n    iVar6 = src2->nelem;\n    iVar10 = src1->nelem;\n  }\n  iVar8 = iVar7 + -1;\n  local_24 = iVar7 + iVar10 + iVar6;\n  iVar10 = iVar10 + -1;\n  iVar6 = iVar6 + -1;\n  pIVar3 = src1->elems;\n  pIVar4 = src2->elems;\n  iVar9 = pIVar3[iVar10];\n  iVar7 = pIVar4[iVar6];\n  do {\n    bVar11 = SBORROW4(iVar9,iVar7);\n    iVar5 = iVar9 - iVar7;\n    if (iVar9 == iVar7) goto LAB_0001e8ae;\n    while (bVar11 != iVar5 < 0) {\n      iVar6 = iVar6 + -1;\n      if (iVar6 < 0) goto LAB_0001e940;\n      while( true ) {\n        iVar7 = pIVar4[iVar6];\n        bVar11 = SBORROW4(iVar9,iVar7);\n        iVar5 = iVar9 - iVar7;\n        if (iVar5 != 0) break;\nLAB_0001e8ae:\n        if (-1 < iVar8) {\n          do {\n            if (__ptr[iVar8] <= iVar9) {\n              if (__ptr[iVar8] == iVar9) goto LAB_0001e8d7;\n              break;\n            }\n            iVar8 = iVar8 + -1;\n          } while (iVar8 != -1);\n        }\n        local_24 = local_24 + -1;\n        __ptr[local_24] = iVar9;\nLAB_0001e8d7:\n        iVar10 = iVar10 + -1;\n        if ((iVar10 < 0) || (iVar6 = iVar6 + -1, iVar6 < 0)) goto LAB_0001e940;\n        iVar9 = pIVar3[iVar10];\n      }\n    }\n    iVar10 = iVar10 + -1;\n    if (iVar10 < 0) break;\n    iVar9 = pIVar3[iVar10];\n  } while( true );\nLAB_0001e940:\n  iVar7 = dest->nelem;\n  iVar10 = iVar7 + -1;\n  iVar9 = src1->nelem + iVar7 + src2->nelem;\n  iVar6 = iVar9 + -1;\n  iVar9 = iVar9 - local_24;\n  dest->nelem = iVar7 + iVar9;\n  if ((iVar9 < 1) || (iVar10 < 0)) {\n    __n = iVar9 * 4;\n  }\n  else {\n    do {\n      while( true ) {\n        piVar1 = __ptr + iVar6;\n        piVar2 = __ptr + iVar10;\n        iVar7 = iVar10 + iVar9;\n        if (*piVar1 <= *piVar2) break;\n        iVar6 = iVar6 + -1;\n        __ptr[iVar7] = *piVar1;\n        iVar9 = iVar9 + -1;\n        if (iVar9 == 0) {\n          __n = 0;\n          __ptr = dest->elems;\n          goto LAB_0001e8f3;\n        }\n      }\n      iVar10 = iVar10 + -1;\n      __ptr[iVar7] = *piVar2;\n    } while (iVar10 != -1);\n    __n = iVar9 << 2;\n    __ptr = dest->elems;\n  }\nLAB_0001e8f3:\n  memcpy(__ptr,__ptr + local_24,__n);\n  return _REG_NOERROR;\n}\n\n" comment comment (function_definition "reg_errcode_t re_node_set_add_intersect(re_node_set *dest,re_node_set *src1,re_node_set *src2)\n\n{\n  int *piVar1;\n  int *piVar2;\n  Idx *pIVar3;\n  Idx *pIVar4;\n  int iVar5;\n  int iVar6;\n  Idx *__ptr;\n  int iVar7;\n  int iVar8;\n  int iVar9;\n  size_t __n;\n  int iVar10;\n  bool bVar11;\n  int local_24;\n  \n  iVar10 = src1->nelem;\n  if (iVar10 == 0) {\n    return _REG_NOERROR;\n  }\n  iVar6 = src2->nelem;\n  if (iVar6 == 0) {\n    return _REG_NOERROR;\n  }\n  iVar7 = dest->nelem;\n  __ptr = dest->elems;\n  if (dest->alloc < iVar10 + iVar6 + iVar7) {\n    iVar10 = dest->alloc + iVar10 + iVar6;\n    __ptr = (Idx *)realloc(__ptr,iVar10 * 4);\n    if (__ptr == (Idx *)0x0) {\n      return _REG_ESPACE;\n    }\n    dest->alloc = iVar10;\n    iVar7 = dest->nelem;\n    dest->elems = __ptr;\n    iVar6 = src2->nelem;\n    iVar10 = src1->nelem;\n  }\n  iVar8 = iVar7 + -1;\n  local_24 = iVar7 + iVar10 + iVar6;\n  iVar10 = iVar10 + -1;\n  iVar6 = iVar6 + -1;\n  pIVar3 = src1->elems;\n  pIVar4 = src2->elems;\n  iVar9 = pIVar3[iVar10];\n  iVar7 = pIVar4[iVar6];\n  do {\n    bVar11 = SBORROW4(iVar9,iVar7);\n    iVar5 = iVar9 - iVar7;\n    if (iVar9 == iVar7) goto LAB_0001e8ae;\n    while (bVar11 != iVar5 < 0) {\n      iVar6 = iVar6 + -1;\n      if (iVar6 < 0) goto LAB_0001e940;\n      while( true ) {\n        iVar7 = pIVar4[iVar6];\n        bVar11 = SBORROW4(iVar9,iVar7);\n        iVar5 = iVar9 - iVar7;\n        if (iVar5 != 0) break;\nLAB_0001e8ae:\n        if (-1 < iVar8) {\n          do {\n            if (__ptr[iVar8] <= iVar9) {\n              if (__ptr[iVar8] == iVar9) goto LAB_0001e8d7;\n              break;\n            }\n            iVar8 = iVar8 + -1;\n          } while (iVar8 != -1);\n        }\n        local_24 = local_24 + -1;\n        __ptr[local_24] = iVar9;\nLAB_0001e8d7:\n        iVar10 = iVar10 + -1;\n        if ((iVar10 < 0) || (iVar6 = iVar6 + -1, iVar6 < 0)) goto LAB_0001e940;\n        iVar9 = pIVar3[iVar10];\n      }\n    }\n    iVar10 = iVar10 + -1;\n    if (iVar10 < 0) break;\n    iVar9 = pIVar3[iVar10];\n  } while( true );\nLAB_0001e940:\n  iVar7 = dest->nelem;\n  iVar10 = iVar7 + -1;\n  iVar9 = src1->nelem + iVar7 + src2->nelem;\n  iVar6 = iVar9 + -1;\n  iVar9 = iVar9 - local_24;\n  dest->nelem = iVar7 + iVar9;\n  if ((iVar9 < 1) || (iVar10 < 0)) {\n    __n = iVar9 * 4;\n  }\n  else {\n    do {\n      while( true ) {\n        piVar1 = __ptr + iVar6;\n        piVar2 = __ptr + iVar10;\n        iVar7 = iVar10 + iVar9;\n        if (*piVar1 <= *piVar2) break;\n        iVar6 = iVar6 + -1;\n        __ptr[iVar7] = *piVar1;\n        iVar9 = iVar9 + -1;\n        if (iVar9 == 0) {\n          __n = 0;\n          __ptr = dest->elems;\n          goto LAB_0001e8f3;\n        }\n      }\n      iVar10 = iVar10 + -1;\n      __ptr[iVar7] = *piVar2;\n    } while (iVar10 != -1);\n    __n = iVar9 << 2;\n    __ptr = dest->elems;\n  }\nLAB_0001e8f3:\n  memcpy(__ptr,__ptr + local_24,__n);\n  return _REG_NOERROR;\n}" type_identifier (function_declarator "re_node_set_add_intersect(re_node_set *dest,re_node_set *src1,re_node_set *src2)" identifier (parameter_list "(re_node_set *dest,re_node_set *src1,re_node_set *src2)" ( (parameter_declaration "re_node_set *dest" type_identifier (pointer_declarator "*dest" * identifier)) , (parameter_declaration "re_node_set *src1" type_identifier (pointer_declarator "*src1" * identifier)) , (parameter_declaration "re_node_set *src2" type_identifier (pointer_declarator "*src2" * identifier)) ))) (compound_statement "{\n  int *piVar1;\n  int *piVar2;\n  Idx *pIVar3;\n  Idx *pIVar4;\n  int iVar5;\n  int iVar6;\n  Idx *__ptr;\n  int iVar7;\n  int iVar8;\n  int iVar9;\n  size_t __n;\n  int iVar10;\n  bool bVar11;\n  int local_24;\n  \n  iVar10 = src1->nelem;\n  if (iVar10 == 0) {\n    return _REG_NOERROR;\n  }\n  iVar6 = src2->nelem;\n  if (iVar6 == 0) {\n    return _REG_NOERROR;\n  }\n  iVar7 = dest->nelem;\n  __ptr = dest->elems;\n  if (dest->alloc < iVar10 + iVar6 + iVar7) {\n    iVar10 = dest->alloc + iVar10 + iVar6;\n    __ptr = (Idx *)realloc(__ptr,iVar10 * 4);\n    if (__ptr == (Idx *)0x0) {\n      return _REG_ESPACE;\n    }\n    dest->alloc = iVar10;\n    iVar7 = dest->nelem;\n    dest->elems = __ptr;\n    iVar6 = src2->nelem;\n    iVar10 = src1->nelem;\n  }\n  iVar8 = iVar7 + -1;\n  local_24 = iVar7 + iVar10 + iVar6;\n  iVar10 = iVar10 + -1;\n  iVar6 = iVar6 + -1;\n  pIVar3 = src1->elems;\n  pIVar4 = src2->elems;\n  iVar9 = pIVar3[iVar10];\n  iVar7 = pIVar4[iVar6];\n  do {\n    bVar11 = SBORROW4(iVar9,iVar7);\n    iVar5 = iVar9 - iVar7;\n    if (iVar9 == iVar7) goto LAB_0001e8ae;\n    while (bVar11 != iVar5 < 0) {\n      iVar6 = iVar6 + -1;\n      if (iVar6 < 0) goto LAB_0001e940;\n      while( true ) {\n        iVar7 = pIVar4[iVar6];\n        bVar11 = SBORROW4(iVar9,iVar7);\n        iVar5 = iVar9 - iVar7;\n        if (iVar5 != 0) break;\nLAB_0001e8ae:\n        if (-1 < iVar8) {\n          do {\n            if (__ptr[iVar8] <= iVar9) {\n              if (__ptr[iVar8] == iVar9) goto LAB_0001e8d7;\n              break;\n            }\n            iVar8 = iVar8 + -1;\n          } while (iVar8 != -1);\n        }\n        local_24 = local_24 + -1;\n        __ptr[local_24] = iVar9;\nLAB_0001e8d7:\n        iVar10 = iVar10 + -1;\n        if ((iVar10 < 0) || (iVar6 = iVar6 + -1, iVar6 < 0)) goto LAB_0001e940;\n        iVar9 = pIVar3[iVar10];\n      }\n    }\n    iVar10 = iVar10 + -1;\n    if (iVar10 < 0) break;\n    iVar9 = pIVar3[iVar10];\n  } while( true );\nLAB_0001e940:\n  iVar7 = dest->nelem;\n  iVar10 = iVar7 + -1;\n  iVar9 = src1->nelem + iVar7 + src2->nelem;\n  iVar6 = iVar9 + -1;\n  iVar9 = iVar9 - local_24;\n  dest->nelem = iVar7 + iVar9;\n  if ((iVar9 < 1) || (iVar10 < 0)) {\n    __n = iVar9 * 4;\n  }\n  else {\n    do {\n      while( true ) {\n        piVar1 = __ptr + iVar6;\n        piVar2 = __ptr + iVar10;\n        iVar7 = iVar10 + iVar9;\n        if (*piVar1 <= *piVar2) break;\n        iVar6 = iVar6 + -1;\n        __ptr[iVar7] = *piVar1;\n        iVar9 = iVar9 + -1;\n        if (iVar9 == 0) {\n          __n = 0;\n          __ptr = dest->elems;\n          goto LAB_0001e8f3;\n        }\n      }\n      iVar10 = iVar10 + -1;\n      __ptr[iVar7] = *piVar2;\n    } while (iVar10 != -1);\n    __n = iVar9 << 2;\n    __ptr = dest->elems;\n  }\nLAB_0001e8f3:\n  memcpy(__ptr,__ptr + local_24,__n);\n  return _REG_NOERROR;\n}" { (declaration "int *piVar1;" primitive_type (pointer_declarator "*piVar1" * identifier) ;) (declaration "int *piVar2;" primitive_type (pointer_declarator "*piVar2" * identifier) ;) (declaration "Idx *pIVar3;" type_identifier (pointer_declarator "*pIVar3" * identifier) ;) (declaration "Idx *pIVar4;" type_identifier (pointer_declarator "*pIVar4" * identifier) ;) (declaration "int iVar5;" primitive_type identifier ;) (declaration "int iVar6;" primitive_type identifier ;) (declaration "Idx *__ptr;" type_identifier (pointer_declarator "*__ptr" * identifier) ;) (declaration "int iVar7;" primitive_type identifier ;) (declaration "int iVar8;" primitive_type identifier ;) (declaration "int iVar9;" primitive_type identifier ;) (declaration "size_t __n;" primitive_type identifier ;) (declaration "int iVar10;" primitive_type identifier ;) (declaration "bool bVar11;" primitive_type identifier ;) (declaration "int local_24;" primitive_type identifier ;) (expression_statement "iVar10 = src1->nelem;" (assignment_expression "iVar10 = src1->nelem" identifier = (field_expression "src1->nelem" identifier -> field_identifier)) ;) (if_statement "if (iVar10 == 0) {\n    return _REG_NOERROR;\n  }" if (parenthesized_expression "(iVar10 == 0)" ( (binary_expression "iVar10 == 0" identifier == number_literal) )) (compound_statement "{\n    return _REG_NOERROR;\n  }" { (return_statement "return _REG_NOERROR;" return identifier ;) })) (expression_statement "iVar6 = src2->nelem;" (assignment_expression "iVar6 = src2->nelem" identifier = (field_expression "src2->nelem" identifier -> field_identifier)) ;) (if_statement "if (iVar6 == 0) {\n    return _REG_NOERROR;\n  }" if (parenthesized_expression "(iVar6 == 0)" ( (binary_expression "iVar6 == 0" identifier == number_literal) )) (compound_statement "{\n    return _REG_NOERROR;\n  }" { (return_statement "return _REG_NOERROR;" return identifier ;) })) (expression_statement "iVar7 = dest->nelem;" (assignment_expression "iVar7 = dest->nelem" identifier = (field_expression "dest->nelem" identifier -> field_identifier)) ;) (expression_statement "__ptr = dest->elems;" (assignment_expression "__ptr = dest->elems" identifier = (field_expression "dest->elems" identifier -> field_identifier)) ;) (if_statement "if (dest->alloc < iVar10 + iVar6 + iVar7) {\n    iVar10 = dest->alloc + iVar10 + iVar6;\n    __ptr = (Idx *)realloc(__ptr,iVar10 * 4);\n    if (__ptr == (Idx *)0x0) {\n      return _REG_ESPACE;\n    }\n    dest->alloc = iVar10;\n    iVar7 = dest->nelem;\n    dest->elems = __ptr;\n    iVar6 = src2->nelem;\n    iVar10 = src1->nelem;\n  }" if (parenthesized_expression "(dest->alloc < iVar10 + iVar6 + iVar7)" ( (binary_expression "dest->alloc < iVar10 + iVar6 + iVar7" (field_expression "dest->alloc" identifier -> field_identifier) < (binary_expression "iVar10 + iVar6 + iVar7" (binary_expression "iVar10 + iVar6" identifier + identifier) + identifier)) )) (compound_statement "{\n    iVar10 = dest->alloc + iVar10 + iVar6;\n    __ptr = (Idx *)realloc(__ptr,iVar10 * 4);\n    if (__ptr == (Idx *)0x0) {\n      return _REG_ESPACE;\n    }\n    dest->alloc = iVar10;\n    iVar7 = dest->nelem;\n    dest->elems = __ptr;\n    iVar6 = src2->nelem;\n    iVar10 = src1->nelem;\n  }" { (expression_statement "iVar10 = dest->alloc + iVar10 + iVar6;" (assignment_expression "iVar10 = dest->alloc + iVar10 + iVar6" identifier = (binary_expression "dest->alloc + iVar10 + iVar6" (binary_expression "dest->alloc + iVar10" (field_expression "dest->alloc" identifier -> field_identifier) + identifier) + identifier)) ;) (expression_statement "__ptr = (Idx *)realloc(__ptr,iVar10 * 4);" (assignment_expression "__ptr = (Idx *)realloc(__ptr,iVar10 * 4)" identifier = (cast_expression "(Idx *)realloc(__ptr,iVar10 * 4)" ( (type_descriptor "Idx *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "realloc(__ptr,iVar10 * 4)" identifier (argument_list "(__ptr,iVar10 * 4)" ( identifier , (binary_expression "iVar10 * 4" identifier * number_literal) ))))) ;) (if_statement "if (__ptr == (Idx *)0x0) {\n      return _REG_ESPACE;\n    }" if (parenthesized_expression "(__ptr == (Idx *)0x0)" ( (binary_expression "__ptr == (Idx *)0x0" identifier == (cast_expression "(Idx *)0x0" ( (type_descriptor "Idx *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      return _REG_ESPACE;\n    }" { (return_statement "return _REG_ESPACE;" return identifier ;) })) (expression_statement "dest->alloc = iVar10;" (assignment_expression "dest->alloc = iVar10" (field_expression "dest->alloc" identifier -> field_identifier) = identifier) ;) (expression_statement "iVar7 = dest->nelem;" (assignment_expression "iVar7 = dest->nelem" identifier = (field_expression "dest->nelem" identifier -> field_identifier)) ;) (expression_statement "dest->elems = __ptr;" (assignment_expression "dest->elems = __ptr" (field_expression "dest->elems" identifier -> field_identifier) = identifier) ;) (expression_statement "iVar6 = src2->nelem;" (assignment_expression "iVar6 = src2->nelem" identifier = (field_expression "src2->nelem" identifier -> field_identifier)) ;) (expression_statement "iVar10 = src1->nelem;" (assignment_expression "iVar10 = src1->nelem" identifier = (field_expression "src1->nelem" identifier -> field_identifier)) ;) })) (expression_statement "iVar8 = iVar7 + -1;" (assignment_expression "iVar8 = iVar7 + -1" identifier = (binary_expression "iVar7 + -1" identifier + number_literal)) ;) (expression_statement "local_24 = iVar7 + iVar10 + iVar6;" (assignment_expression "local_24 = iVar7 + iVar10 + iVar6" identifier = (binary_expression "iVar7 + iVar10 + iVar6" (binary_expression "iVar7 + iVar10" identifier + identifier) + identifier)) ;) (expression_statement "iVar10 = iVar10 + -1;" (assignment_expression "iVar10 = iVar10 + -1" identifier = (binary_expression "iVar10 + -1" identifier + number_literal)) ;) (expression_statement "iVar6 = iVar6 + -1;" (assignment_expression "iVar6 = iVar6 + -1" identifier = (binary_expression "iVar6 + -1" identifier + number_literal)) ;) (expression_statement "pIVar3 = src1->elems;" (assignment_expression "pIVar3 = src1->elems" identifier = (field_expression "src1->elems" identifier -> field_identifier)) ;) (expression_statement "pIVar4 = src2->elems;" (assignment_expression "pIVar4 = src2->elems" identifier = (field_expression "src2->elems" identifier -> field_identifier)) ;) (expression_statement "iVar9 = pIVar3[iVar10];" (assignment_expression "iVar9 = pIVar3[iVar10]" identifier = (subscript_expression "pIVar3[iVar10]" identifier [ identifier ])) ;) (expression_statement "iVar7 = pIVar4[iVar6];" (assignment_expression "iVar7 = pIVar4[iVar6]" identifier = (subscript_expression "pIVar4[iVar6]" identifier [ identifier ])) ;) (do_statement "do {\n    bVar11 = SBORROW4(iVar9,iVar7);\n    iVar5 = iVar9 - iVar7;\n    if (iVar9 == iVar7) goto LAB_0001e8ae;\n    while (bVar11 != iVar5 < 0) {\n      iVar6 = iVar6 + -1;\n      if (iVar6 < 0) goto LAB_0001e940;\n      while( true ) {\n        iVar7 = pIVar4[iVar6];\n        bVar11 = SBORROW4(iVar9,iVar7);\n        iVar5 = iVar9 - iVar7;\n        if (iVar5 != 0) break;\nLAB_0001e8ae:\n        if (-1 < iVar8) {\n          do {\n            if (__ptr[iVar8] <= iVar9) {\n              if (__ptr[iVar8] == iVar9) goto LAB_0001e8d7;\n              break;\n            }\n            iVar8 = iVar8 + -1;\n          } while (iVar8 != -1);\n        }\n        local_24 = local_24 + -1;\n        __ptr[local_24] = iVar9;\nLAB_0001e8d7:\n        iVar10 = iVar10 + -1;\n        if ((iVar10 < 0) || (iVar6 = iVar6 + -1, iVar6 < 0)) goto LAB_0001e940;\n        iVar9 = pIVar3[iVar10];\n      }\n    }\n    iVar10 = iVar10 + -1;\n    if (iVar10 < 0) break;\n    iVar9 = pIVar3[iVar10];\n  } while( true );" do (compound_statement "{\n    bVar11 = SBORROW4(iVar9,iVar7);\n    iVar5 = iVar9 - iVar7;\n    if (iVar9 == iVar7) goto LAB_0001e8ae;\n    while (bVar11 != iVar5 < 0) {\n      iVar6 = iVar6 + -1;\n      if (iVar6 < 0) goto LAB_0001e940;\n      while( true ) {\n        iVar7 = pIVar4[iVar6];\n        bVar11 = SBORROW4(iVar9,iVar7);\n        iVar5 = iVar9 - iVar7;\n        if (iVar5 != 0) break;\nLAB_0001e8ae:\n        if (-1 < iVar8) {\n          do {\n            if (__ptr[iVar8] <= iVar9) {\n              if (__ptr[iVar8] == iVar9) goto LAB_0001e8d7;\n              break;\n            }\n            iVar8 = iVar8 + -1;\n          } while (iVar8 != -1);\n        }\n        local_24 = local_24 + -1;\n        __ptr[local_24] = iVar9;\nLAB_0001e8d7:\n        iVar10 = iVar10 + -1;\n        if ((iVar10 < 0) || (iVar6 = iVar6 + -1, iVar6 < 0)) goto LAB_0001e940;\n        iVar9 = pIVar3[iVar10];\n      }\n    }\n    iVar10 = iVar10 + -1;\n    if (iVar10 < 0) break;\n    iVar9 = pIVar3[iVar10];\n  }" { (expression_statement "bVar11 = SBORROW4(iVar9,iVar7);" (assignment_expression "bVar11 = SBORROW4(iVar9,iVar7)" identifier = (call_expression "SBORROW4(iVar9,iVar7)" identifier (argument_list "(iVar9,iVar7)" ( identifier , identifier )))) ;) (expression_statement "iVar5 = iVar9 - iVar7;" (assignment_expression "iVar5 = iVar9 - iVar7" identifier = (binary_expression "iVar9 - iVar7" identifier - identifier)) ;) (if_statement "if (iVar9 == iVar7) goto LAB_0001e8ae;" if (parenthesized_expression "(iVar9 == iVar7)" ( (binary_expression "iVar9 == iVar7" identifier == identifier) )) (goto_statement "goto LAB_0001e8ae;" goto statement_identifier ;)) (while_statement "while (bVar11 != iVar5 < 0) {\n      iVar6 = iVar6 + -1;\n      if (iVar6 < 0) goto LAB_0001e940;\n      while( true ) {\n        iVar7 = pIVar4[iVar6];\n        bVar11 = SBORROW4(iVar9,iVar7);\n        iVar5 = iVar9 - iVar7;\n        if (iVar5 != 0) break;\nLAB_0001e8ae:\n        if (-1 < iVar8) {\n          do {\n            if (__ptr[iVar8] <= iVar9) {\n              if (__ptr[iVar8] == iVar9) goto LAB_0001e8d7;\n              break;\n            }\n            iVar8 = iVar8 + -1;\n          } while (iVar8 != -1);\n        }\n        local_24 = local_24 + -1;\n        __ptr[local_24] = iVar9;\nLAB_0001e8d7:\n        iVar10 = iVar10 + -1;\n        if ((iVar10 < 0) || (iVar6 = iVar6 + -1, iVar6 < 0)) goto LAB_0001e940;\n        iVar9 = pIVar3[iVar10];\n      }\n    }" while (parenthesized_expression "(bVar11 != iVar5 < 0)" ( (binary_expression "bVar11 != iVar5 < 0" identifier != (binary_expression "iVar5 < 0" identifier < number_literal)) )) (compound_statement "{\n      iVar6 = iVar6 + -1;\n      if (iVar6 < 0) goto LAB_0001e940;\n      while( true ) {\n        iVar7 = pIVar4[iVar6];\n        bVar11 = SBORROW4(iVar9,iVar7);\n        iVar5 = iVar9 - iVar7;\n        if (iVar5 != 0) break;\nLAB_0001e8ae:\n        if (-1 < iVar8) {\n          do {\n            if (__ptr[iVar8] <= iVar9) {\n              if (__ptr[iVar8] == iVar9) goto LAB_0001e8d7;\n              break;\n            }\n            iVar8 = iVar8 + -1;\n          } while (iVar8 != -1);\n        }\n        local_24 = local_24 + -1;\n        __ptr[local_24] = iVar9;\nLAB_0001e8d7:\n        iVar10 = iVar10 + -1;\n        if ((iVar10 < 0) || (iVar6 = iVar6 + -1, iVar6 < 0)) goto LAB_0001e940;\n        iVar9 = pIVar3[iVar10];\n      }\n    }" { (expression_statement "iVar6 = iVar6 + -1;" (assignment_expression "iVar6 = iVar6 + -1" identifier = (binary_expression "iVar6 + -1" identifier + number_literal)) ;) (if_statement "if (iVar6 < 0) goto LAB_0001e940;" if (parenthesized_expression "(iVar6 < 0)" ( (binary_expression "iVar6 < 0" identifier < number_literal) )) (goto_statement "goto LAB_0001e940;" goto statement_identifier ;)) (while_statement "while( true ) {\n        iVar7 = pIVar4[iVar6];\n        bVar11 = SBORROW4(iVar9,iVar7);\n        iVar5 = iVar9 - iVar7;\n        if (iVar5 != 0) break;\nLAB_0001e8ae:\n        if (-1 < iVar8) {\n          do {\n            if (__ptr[iVar8] <= iVar9) {\n              if (__ptr[iVar8] == iVar9) goto LAB_0001e8d7;\n              break;\n            }\n            iVar8 = iVar8 + -1;\n          } while (iVar8 != -1);\n        }\n        local_24 = local_24 + -1;\n        __ptr[local_24] = iVar9;\nLAB_0001e8d7:\n        iVar10 = iVar10 + -1;\n        if ((iVar10 < 0) || (iVar6 = iVar6 + -1, iVar6 < 0)) goto LAB_0001e940;\n        iVar9 = pIVar3[iVar10];\n      }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n        iVar7 = pIVar4[iVar6];\n        bVar11 = SBORROW4(iVar9,iVar7);\n        iVar5 = iVar9 - iVar7;\n        if (iVar5 != 0) break;\nLAB_0001e8ae:\n        if (-1 < iVar8) {\n          do {\n            if (__ptr[iVar8] <= iVar9) {\n              if (__ptr[iVar8] == iVar9) goto LAB_0001e8d7;\n              break;\n            }\n            iVar8 = iVar8 + -1;\n          } while (iVar8 != -1);\n        }\n        local_24 = local_24 + -1;\n        __ptr[local_24] = iVar9;\nLAB_0001e8d7:\n        iVar10 = iVar10 + -1;\n        if ((iVar10 < 0) || (iVar6 = iVar6 + -1, iVar6 < 0)) goto LAB_0001e940;\n        iVar9 = pIVar3[iVar10];\n      }" { (expression_statement "iVar7 = pIVar4[iVar6];" (assignment_expression "iVar7 = pIVar4[iVar6]" identifier = (subscript_expression "pIVar4[iVar6]" identifier [ identifier ])) ;) (expression_statement "bVar11 = SBORROW4(iVar9,iVar7);" (assignment_expression "bVar11 = SBORROW4(iVar9,iVar7)" identifier = (call_expression "SBORROW4(iVar9,iVar7)" identifier (argument_list "(iVar9,iVar7)" ( identifier , identifier )))) ;) (expression_statement "iVar5 = iVar9 - iVar7;" (assignment_expression "iVar5 = iVar9 - iVar7" identifier = (binary_expression "iVar9 - iVar7" identifier - identifier)) ;) (if_statement "if (iVar5 != 0) break;" if (parenthesized_expression "(iVar5 != 0)" ( (binary_expression "iVar5 != 0" identifier != number_literal) )) (break_statement "break;" break ;)) (labeled_statement "LAB_0001e8ae:\n        if (-1 < iVar8) {\n          do {\n            if (__ptr[iVar8] <= iVar9) {\n              if (__ptr[iVar8] == iVar9) goto LAB_0001e8d7;\n              break;\n            }\n            iVar8 = iVar8 + -1;\n          } while (iVar8 != -1);\n        }" statement_identifier : (if_statement "if (-1 < iVar8) {\n          do {\n            if (__ptr[iVar8] <= iVar9) {\n              if (__ptr[iVar8] == iVar9) goto LAB_0001e8d7;\n              break;\n            }\n            iVar8 = iVar8 + -1;\n          } while (iVar8 != -1);\n        }" if (parenthesized_expression "(-1 < iVar8)" ( (binary_expression "-1 < iVar8" number_literal < identifier) )) (compound_statement "{\n          do {\n            if (__ptr[iVar8] <= iVar9) {\n              if (__ptr[iVar8] == iVar9) goto LAB_0001e8d7;\n              break;\n            }\n            iVar8 = iVar8 + -1;\n          } while (iVar8 != -1);\n        }" { (do_statement "do {\n            if (__ptr[iVar8] <= iVar9) {\n              if (__ptr[iVar8] == iVar9) goto LAB_0001e8d7;\n              break;\n            }\n            iVar8 = iVar8 + -1;\n          } while (iVar8 != -1);" do (compound_statement "{\n            if (__ptr[iVar8] <= iVar9) {\n              if (__ptr[iVar8] == iVar9) goto LAB_0001e8d7;\n              break;\n            }\n            iVar8 = iVar8 + -1;\n          }" { (if_statement "if (__ptr[iVar8] <= iVar9) {\n              if (__ptr[iVar8] == iVar9) goto LAB_0001e8d7;\n              break;\n            }" if (parenthesized_expression "(__ptr[iVar8] <= iVar9)" ( (binary_expression "__ptr[iVar8] <= iVar9" (subscript_expression "__ptr[iVar8]" identifier [ identifier ]) <= identifier) )) (compound_statement "{\n              if (__ptr[iVar8] == iVar9) goto LAB_0001e8d7;\n              break;\n            }" { (if_statement "if (__ptr[iVar8] == iVar9) goto LAB_0001e8d7;" if (parenthesized_expression "(__ptr[iVar8] == iVar9)" ( (binary_expression "__ptr[iVar8] == iVar9" (subscript_expression "__ptr[iVar8]" identifier [ identifier ]) == identifier) )) (goto_statement "goto LAB_0001e8d7;" goto statement_identifier ;)) (break_statement "break;" break ;) })) (expression_statement "iVar8 = iVar8 + -1;" (assignment_expression "iVar8 = iVar8 + -1" identifier = (binary_expression "iVar8 + -1" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar8 != -1)" ( (binary_expression "iVar8 != -1" identifier != number_literal) )) ;) }))) (expression_statement "local_24 = local_24 + -1;" (assignment_expression "local_24 = local_24 + -1" identifier = (binary_expression "local_24 + -1" identifier + number_literal)) ;) (expression_statement "__ptr[local_24] = iVar9;" (assignment_expression "__ptr[local_24] = iVar9" (subscript_expression "__ptr[local_24]" identifier [ identifier ]) = identifier) ;) (labeled_statement "LAB_0001e8d7:\n        iVar10 = iVar10 + -1;" statement_identifier : (expression_statement "iVar10 = iVar10 + -1;" (assignment_expression "iVar10 = iVar10 + -1" identifier = (binary_expression "iVar10 + -1" identifier + number_literal)) ;)) (if_statement "if ((iVar10 < 0) || (iVar6 = iVar6 + -1, iVar6 < 0)) goto LAB_0001e940;" if (parenthesized_expression "((iVar10 < 0) || (iVar6 = iVar6 + -1, iVar6 < 0))" ( (binary_expression "(iVar10 < 0) || (iVar6 = iVar6 + -1, iVar6 < 0)" (parenthesized_expression "(iVar10 < 0)" ( (binary_expression "iVar10 < 0" identifier < number_literal) )) || (parenthesized_expression "(iVar6 = iVar6 + -1, iVar6 < 0)" ( (comma_expression "iVar6 = iVar6 + -1, iVar6 < 0" (assignment_expression "iVar6 = iVar6 + -1" identifier = (binary_expression "iVar6 + -1" identifier + number_literal)) , (binary_expression "iVar6 < 0" identifier < number_literal)) ))) )) (goto_statement "goto LAB_0001e940;" goto statement_identifier ;)) (expression_statement "iVar9 = pIVar3[iVar10];" (assignment_expression "iVar9 = pIVar3[iVar10]" identifier = (subscript_expression "pIVar3[iVar10]" identifier [ identifier ])) ;) })) })) (expression_statement "iVar10 = iVar10 + -1;" (assignment_expression "iVar10 = iVar10 + -1" identifier = (binary_expression "iVar10 + -1" identifier + number_literal)) ;) (if_statement "if (iVar10 < 0) break;" if (parenthesized_expression "(iVar10 < 0)" ( (binary_expression "iVar10 < 0" identifier < number_literal) )) (break_statement "break;" break ;)) (expression_statement "iVar9 = pIVar3[iVar10];" (assignment_expression "iVar9 = pIVar3[iVar10]" identifier = (subscript_expression "pIVar3[iVar10]" identifier [ identifier ])) ;) }) while (parenthesized_expression "( true )" ( true )) ;) (labeled_statement "LAB_0001e940:\n  iVar7 = dest->nelem;" statement_identifier : (expression_statement "iVar7 = dest->nelem;" (assignment_expression "iVar7 = dest->nelem" identifier = (field_expression "dest->nelem" identifier -> field_identifier)) ;)) (expression_statement "iVar10 = iVar7 + -1;" (assignment_expression "iVar10 = iVar7 + -1" identifier = (binary_expression "iVar7 + -1" identifier + number_literal)) ;) (expression_statement "iVar9 = src1->nelem + iVar7 + src2->nelem;" (assignment_expression "iVar9 = src1->nelem + iVar7 + src2->nelem" identifier = (binary_expression "src1->nelem + iVar7 + src2->nelem" (binary_expression "src1->nelem + iVar7" (field_expression "src1->nelem" identifier -> field_identifier) + identifier) + (field_expression "src2->nelem" identifier -> field_identifier))) ;) (expression_statement "iVar6 = iVar9 + -1;" (assignment_expression "iVar6 = iVar9 + -1" identifier = (binary_expression "iVar9 + -1" identifier + number_literal)) ;) (expression_statement "iVar9 = iVar9 - local_24;" (assignment_expression "iVar9 = iVar9 - local_24" identifier = (binary_expression "iVar9 - local_24" identifier - identifier)) ;) (expression_statement "dest->nelem = iVar7 + iVar9;" (assignment_expression "dest->nelem = iVar7 + iVar9" (field_expression "dest->nelem" identifier -> field_identifier) = (binary_expression "iVar7 + iVar9" identifier + identifier)) ;) (if_statement "if ((iVar9 < 1) || (iVar10 < 0)) {\n    __n = iVar9 * 4;\n  }\n  else {\n    do {\n      while( true ) {\n        piVar1 = __ptr + iVar6;\n        piVar2 = __ptr + iVar10;\n        iVar7 = iVar10 + iVar9;\n        if (*piVar1 <= *piVar2) break;\n        iVar6 = iVar6 + -1;\n        __ptr[iVar7] = *piVar1;\n        iVar9 = iVar9 + -1;\n        if (iVar9 == 0) {\n          __n = 0;\n          __ptr = dest->elems;\n          goto LAB_0001e8f3;\n        }\n      }\n      iVar10 = iVar10 + -1;\n      __ptr[iVar7] = *piVar2;\n    } while (iVar10 != -1);\n    __n = iVar9 << 2;\n    __ptr = dest->elems;\n  }" if (parenthesized_expression "((iVar9 < 1) || (iVar10 < 0))" ( (binary_expression "(iVar9 < 1) || (iVar10 < 0)" (parenthesized_expression "(iVar9 < 1)" ( (binary_expression "iVar9 < 1" identifier < number_literal) )) || (parenthesized_expression "(iVar10 < 0)" ( (binary_expression "iVar10 < 0" identifier < number_literal) ))) )) (compound_statement "{\n    __n = iVar9 * 4;\n  }" { (expression_statement "__n = iVar9 * 4;" (assignment_expression "__n = iVar9 * 4" identifier = (binary_expression "iVar9 * 4" identifier * number_literal)) ;) }) (else_clause "else {\n    do {\n      while( true ) {\n        piVar1 = __ptr + iVar6;\n        piVar2 = __ptr + iVar10;\n        iVar7 = iVar10 + iVar9;\n        if (*piVar1 <= *piVar2) break;\n        iVar6 = iVar6 + -1;\n        __ptr[iVar7] = *piVar1;\n        iVar9 = iVar9 + -1;\n        if (iVar9 == 0) {\n          __n = 0;\n          __ptr = dest->elems;\n          goto LAB_0001e8f3;\n        }\n      }\n      iVar10 = iVar10 + -1;\n      __ptr[iVar7] = *piVar2;\n    } while (iVar10 != -1);\n    __n = iVar9 << 2;\n    __ptr = dest->elems;\n  }" else (compound_statement "{\n    do {\n      while( true ) {\n        piVar1 = __ptr + iVar6;\n        piVar2 = __ptr + iVar10;\n        iVar7 = iVar10 + iVar9;\n        if (*piVar1 <= *piVar2) break;\n        iVar6 = iVar6 + -1;\n        __ptr[iVar7] = *piVar1;\n        iVar9 = iVar9 + -1;\n        if (iVar9 == 0) {\n          __n = 0;\n          __ptr = dest->elems;\n          goto LAB_0001e8f3;\n        }\n      }\n      iVar10 = iVar10 + -1;\n      __ptr[iVar7] = *piVar2;\n    } while (iVar10 != -1);\n    __n = iVar9 << 2;\n    __ptr = dest->elems;\n  }" { (do_statement "do {\n      while( true ) {\n        piVar1 = __ptr + iVar6;\n        piVar2 = __ptr + iVar10;\n        iVar7 = iVar10 + iVar9;\n        if (*piVar1 <= *piVar2) break;\n        iVar6 = iVar6 + -1;\n        __ptr[iVar7] = *piVar1;\n        iVar9 = iVar9 + -1;\n        if (iVar9 == 0) {\n          __n = 0;\n          __ptr = dest->elems;\n          goto LAB_0001e8f3;\n        }\n      }\n      iVar10 = iVar10 + -1;\n      __ptr[iVar7] = *piVar2;\n    } while (iVar10 != -1);" do (compound_statement "{\n      while( true ) {\n        piVar1 = __ptr + iVar6;\n        piVar2 = __ptr + iVar10;\n        iVar7 = iVar10 + iVar9;\n        if (*piVar1 <= *piVar2) break;\n        iVar6 = iVar6 + -1;\n        __ptr[iVar7] = *piVar1;\n        iVar9 = iVar9 + -1;\n        if (iVar9 == 0) {\n          __n = 0;\n          __ptr = dest->elems;\n          goto LAB_0001e8f3;\n        }\n      }\n      iVar10 = iVar10 + -1;\n      __ptr[iVar7] = *piVar2;\n    }" { (while_statement "while( true ) {\n        piVar1 = __ptr + iVar6;\n        piVar2 = __ptr + iVar10;\n        iVar7 = iVar10 + iVar9;\n        if (*piVar1 <= *piVar2) break;\n        iVar6 = iVar6 + -1;\n        __ptr[iVar7] = *piVar1;\n        iVar9 = iVar9 + -1;\n        if (iVar9 == 0) {\n          __n = 0;\n          __ptr = dest->elems;\n          goto LAB_0001e8f3;\n        }\n      }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n        piVar1 = __ptr + iVar6;\n        piVar2 = __ptr + iVar10;\n        iVar7 = iVar10 + iVar9;\n        if (*piVar1 <= *piVar2) break;\n        iVar6 = iVar6 + -1;\n        __ptr[iVar7] = *piVar1;\n        iVar9 = iVar9 + -1;\n        if (iVar9 == 0) {\n          __n = 0;\n          __ptr = dest->elems;\n          goto LAB_0001e8f3;\n        }\n      }" { (expression_statement "piVar1 = __ptr + iVar6;" (assignment_expression "piVar1 = __ptr + iVar6" identifier = (binary_expression "__ptr + iVar6" identifier + identifier)) ;) (expression_statement "piVar2 = __ptr + iVar10;" (assignment_expression "piVar2 = __ptr + iVar10" identifier = (binary_expression "__ptr + iVar10" identifier + identifier)) ;) (expression_statement "iVar7 = iVar10 + iVar9;" (assignment_expression "iVar7 = iVar10 + iVar9" identifier = (binary_expression "iVar10 + iVar9" identifier + identifier)) ;) (if_statement "if (*piVar1 <= *piVar2) break;" if (parenthesized_expression "(*piVar1 <= *piVar2)" ( (binary_expression "*piVar1 <= *piVar2" (pointer_expression "*piVar1" * identifier) <= (pointer_expression "*piVar2" * identifier)) )) (break_statement "break;" break ;)) (expression_statement "iVar6 = iVar6 + -1;" (assignment_expression "iVar6 = iVar6 + -1" identifier = (binary_expression "iVar6 + -1" identifier + number_literal)) ;) (expression_statement "__ptr[iVar7] = *piVar1;" (assignment_expression "__ptr[iVar7] = *piVar1" (subscript_expression "__ptr[iVar7]" identifier [ identifier ]) = (pointer_expression "*piVar1" * identifier)) ;) (expression_statement "iVar9 = iVar9 + -1;" (assignment_expression "iVar9 = iVar9 + -1" identifier = (binary_expression "iVar9 + -1" identifier + number_literal)) ;) (if_statement "if (iVar9 == 0) {\n          __n = 0;\n          __ptr = dest->elems;\n          goto LAB_0001e8f3;\n        }" if (parenthesized_expression "(iVar9 == 0)" ( (binary_expression "iVar9 == 0" identifier == number_literal) )) (compound_statement "{\n          __n = 0;\n          __ptr = dest->elems;\n          goto LAB_0001e8f3;\n        }" { (expression_statement "__n = 0;" (assignment_expression "__n = 0" identifier = number_literal) ;) (expression_statement "__ptr = dest->elems;" (assignment_expression "__ptr = dest->elems" identifier = (field_expression "dest->elems" identifier -> field_identifier)) ;) (goto_statement "goto LAB_0001e8f3;" goto statement_identifier ;) })) })) (expression_statement "iVar10 = iVar10 + -1;" (assignment_expression "iVar10 = iVar10 + -1" identifier = (binary_expression "iVar10 + -1" identifier + number_literal)) ;) (expression_statement "__ptr[iVar7] = *piVar2;" (assignment_expression "__ptr[iVar7] = *piVar2" (subscript_expression "__ptr[iVar7]" identifier [ identifier ]) = (pointer_expression "*piVar2" * identifier)) ;) }) while (parenthesized_expression "(iVar10 != -1)" ( (binary_expression "iVar10 != -1" identifier != number_literal) )) ;) (expression_statement "__n = iVar9 << 2;" (assignment_expression "__n = iVar9 << 2" identifier = (binary_expression "iVar9 << 2" identifier << number_literal)) ;) (expression_statement "__ptr = dest->elems;" (assignment_expression "__ptr = dest->elems" identifier = (field_expression "dest->elems" identifier -> field_identifier)) ;) }))) (labeled_statement "LAB_0001e8f3:\n  memcpy(__ptr,__ptr + local_24,__n);" statement_identifier : (expression_statement "memcpy(__ptr,__ptr + local_24,__n);" (call_expression "memcpy(__ptr,__ptr + local_24,__n)" identifier (argument_list "(__ptr,__ptr + local_24,__n)" ( identifier , (binary_expression "__ptr + local_24" identifier + identifier) , identifier ))) ;)) (return_statement "return _REG_NOERROR;" return identifier ;) })))
(translation_unit "undefined4 FUN_0001e810(int *param_1,int param_2,int param_3)\n\n{\n  int *piVar1;\n  int iVar2;\n  int iVar3;\n  void *__ptr;\n  int iVar4;\n  int iVar5;\n  int iVar6;\n  int iVar7;\n  size_t __n;\n  int iVar8;\n  int iVar9;\n  bool bVar10;\n  int local_24;\n  \n  iVar9 = *(int *)(param_2 + 4);\n  if (iVar9 == 0) {\n    return 0;\n  }\n  iVar3 = *(int *)(param_3 + 4);\n  if (iVar3 == 0) {\n    return 0;\n  }\n  iVar5 = param_1[1];\n  __ptr = (void *)param_1[2];\n  if (*param_1 < iVar9 + iVar3 + iVar5) {\n    iVar9 = *param_1 + iVar9 + iVar3;\n    __ptr = realloc(__ptr,iVar9 * 4);\n    if (__ptr == (void *)0x0) {\n      return 0xc;\n    }\n    *param_1 = iVar9;\n    iVar5 = param_1[1];\n    param_1[2] = (int)__ptr;\n    iVar3 = *(int *)(param_3 + 4);\n    iVar9 = *(int *)(param_2 + 4);\n  }\n  iVar6 = iVar5 + -1;\n  local_24 = iVar5 + iVar9 + iVar3;\n  iVar9 = iVar9 + -1;\n  iVar3 = iVar3 + -1;\n  iVar5 = *(int *)(param_2 + 8);\n  iVar7 = *(int *)(param_3 + 8);\n  iVar4 = *(int *)(iVar5 + iVar9 * 4);\n  iVar8 = *(int *)(iVar7 + iVar3 * 4);\n  do {\n    bVar10 = SBORROW4(iVar4,iVar8);\n    iVar2 = iVar4 - iVar8;\n    if (iVar4 == iVar8) goto LAB_0001e8ae;\n    while (bVar10 != iVar2 < 0) {\n      iVar3 = iVar3 + -1;\n      if (iVar3 < 0) goto LAB_0001e940;\n      while( true ) {\n        iVar8 = *(int *)(iVar7 + iVar3 * 4);\n        bVar10 = SBORROW4(iVar4,iVar8);\n        iVar2 = iVar4 - iVar8;\n        if (iVar2 != 0) break;\nLAB_0001e8ae:\n        if (-1 < iVar6) {\n          do {\n            iVar8 = *(int *)((int)__ptr + iVar6 * 4);\n            if (iVar8 <= iVar4) {\n              if (iVar8 == iVar4) goto LAB_0001e8d7;\n              break;\n            }\n            iVar6 = iVar6 + -1;\n          } while (iVar6 != -1);\n        }\n        local_24 = local_24 + -1;\n        *(int *)((int)__ptr + local_24 * 4) = iVar4;\nLAB_0001e8d7:\n        iVar9 = iVar9 + -1;\n        if ((iVar9 < 0) || (iVar3 = iVar3 + -1, iVar3 < 0)) goto LAB_0001e940;\n        iVar4 = *(int *)(iVar5 + iVar9 * 4);\n      }\n    }\n    iVar9 = iVar9 + -1;\n    if (iVar9 < 0) break;\n    iVar4 = *(int *)(iVar5 + iVar9 * 4);\n  } while( true );\nLAB_0001e940:\n  iVar5 = param_1[1];\n  iVar9 = iVar5 + -1;\n  iVar7 = *(int *)(param_2 + 4) + iVar5 + *(int *)(param_3 + 4);\n  iVar3 = iVar7 + -1;\n  iVar7 = iVar7 - local_24;\n  param_1[1] = iVar5 + iVar7;\n  if ((iVar7 < 1) || (iVar9 < 0)) {\n    __n = iVar7 * 4;\n  }\n  else {\n    do {\n      while( true ) {\n        iVar5 = *(int *)((int)__ptr + iVar3 * 4);\n        iVar8 = *(int *)((int)__ptr + iVar9 * 4);\n        piVar1 = (int *)((int)__ptr + (iVar9 + iVar7) * 4);\n        if (iVar5 <= iVar8) break;\n        iVar3 = iVar3 + -1;\n        *piVar1 = iVar5;\n        iVar7 = iVar7 + -1;\n        if (iVar7 == 0) {\n          __n = 0;\n          __ptr = (void *)param_1[2];\n          goto LAB_0001e8f3;\n        }\n      }\n      iVar9 = iVar9 + -1;\n      *piVar1 = iVar8;\n    } while (iVar9 != -1);\n    __n = iVar7 << 2;\n    __ptr = (void *)param_1[2];\n  }\nLAB_0001e8f3:\n  memcpy(__ptr,(void *)((int)__ptr + local_24 * 4),__n);\n  return 0;\n}\n\n" (function_definition "undefined4 FUN_0001e810(int *param_1,int param_2,int param_3)\n\n{\n  int *piVar1;\n  int iVar2;\n  int iVar3;\n  void *__ptr;\n  int iVar4;\n  int iVar5;\n  int iVar6;\n  int iVar7;\n  size_t __n;\n  int iVar8;\n  int iVar9;\n  bool bVar10;\n  int local_24;\n  \n  iVar9 = *(int *)(param_2 + 4);\n  if (iVar9 == 0) {\n    return 0;\n  }\n  iVar3 = *(int *)(param_3 + 4);\n  if (iVar3 == 0) {\n    return 0;\n  }\n  iVar5 = param_1[1];\n  __ptr = (void *)param_1[2];\n  if (*param_1 < iVar9 + iVar3 + iVar5) {\n    iVar9 = *param_1 + iVar9 + iVar3;\n    __ptr = realloc(__ptr,iVar9 * 4);\n    if (__ptr == (void *)0x0) {\n      return 0xc;\n    }\n    *param_1 = iVar9;\n    iVar5 = param_1[1];\n    param_1[2] = (int)__ptr;\n    iVar3 = *(int *)(param_3 + 4);\n    iVar9 = *(int *)(param_2 + 4);\n  }\n  iVar6 = iVar5 + -1;\n  local_24 = iVar5 + iVar9 + iVar3;\n  iVar9 = iVar9 + -1;\n  iVar3 = iVar3 + -1;\n  iVar5 = *(int *)(param_2 + 8);\n  iVar7 = *(int *)(param_3 + 8);\n  iVar4 = *(int *)(iVar5 + iVar9 * 4);\n  iVar8 = *(int *)(iVar7 + iVar3 * 4);\n  do {\n    bVar10 = SBORROW4(iVar4,iVar8);\n    iVar2 = iVar4 - iVar8;\n    if (iVar4 == iVar8) goto LAB_0001e8ae;\n    while (bVar10 != iVar2 < 0) {\n      iVar3 = iVar3 + -1;\n      if (iVar3 < 0) goto LAB_0001e940;\n      while( true ) {\n        iVar8 = *(int *)(iVar7 + iVar3 * 4);\n        bVar10 = SBORROW4(iVar4,iVar8);\n        iVar2 = iVar4 - iVar8;\n        if (iVar2 != 0) break;\nLAB_0001e8ae:\n        if (-1 < iVar6) {\n          do {\n            iVar8 = *(int *)((int)__ptr + iVar6 * 4);\n            if (iVar8 <= iVar4) {\n              if (iVar8 == iVar4) goto LAB_0001e8d7;\n              break;\n            }\n            iVar6 = iVar6 + -1;\n          } while (iVar6 != -1);\n        }\n        local_24 = local_24 + -1;\n        *(int *)((int)__ptr + local_24 * 4) = iVar4;\nLAB_0001e8d7:\n        iVar9 = iVar9 + -1;\n        if ((iVar9 < 0) || (iVar3 = iVar3 + -1, iVar3 < 0)) goto LAB_0001e940;\n        iVar4 = *(int *)(iVar5 + iVar9 * 4);\n      }\n    }\n    iVar9 = iVar9 + -1;\n    if (iVar9 < 0) break;\n    iVar4 = *(int *)(iVar5 + iVar9 * 4);\n  } while( true );\nLAB_0001e940:\n  iVar5 = param_1[1];\n  iVar9 = iVar5 + -1;\n  iVar7 = *(int *)(param_2 + 4) + iVar5 + *(int *)(param_3 + 4);\n  iVar3 = iVar7 + -1;\n  iVar7 = iVar7 - local_24;\n  param_1[1] = iVar5 + iVar7;\n  if ((iVar7 < 1) || (iVar9 < 0)) {\n    __n = iVar7 * 4;\n  }\n  else {\n    do {\n      while( true ) {\n        iVar5 = *(int *)((int)__ptr + iVar3 * 4);\n        iVar8 = *(int *)((int)__ptr + iVar9 * 4);\n        piVar1 = (int *)((int)__ptr + (iVar9 + iVar7) * 4);\n        if (iVar5 <= iVar8) break;\n        iVar3 = iVar3 + -1;\n        *piVar1 = iVar5;\n        iVar7 = iVar7 + -1;\n        if (iVar7 == 0) {\n          __n = 0;\n          __ptr = (void *)param_1[2];\n          goto LAB_0001e8f3;\n        }\n      }\n      iVar9 = iVar9 + -1;\n      *piVar1 = iVar8;\n    } while (iVar9 != -1);\n    __n = iVar7 << 2;\n    __ptr = (void *)param_1[2];\n  }\nLAB_0001e8f3:\n  memcpy(__ptr,(void *)((int)__ptr + local_24 * 4),__n);\n  return 0;\n}" type_identifier (function_declarator "FUN_0001e810(int *param_1,int param_2,int param_3)" identifier (parameter_list "(int *param_1,int param_2,int param_3)" ( (parameter_declaration "int *param_1" primitive_type (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "int param_2" primitive_type identifier) , (parameter_declaration "int param_3" primitive_type identifier) ))) (compound_statement "{\n  int *piVar1;\n  int iVar2;\n  int iVar3;\n  void *__ptr;\n  int iVar4;\n  int iVar5;\n  int iVar6;\n  int iVar7;\n  size_t __n;\n  int iVar8;\n  int iVar9;\n  bool bVar10;\n  int local_24;\n  \n  iVar9 = *(int *)(param_2 + 4);\n  if (iVar9 == 0) {\n    return 0;\n  }\n  iVar3 = *(int *)(param_3 + 4);\n  if (iVar3 == 0) {\n    return 0;\n  }\n  iVar5 = param_1[1];\n  __ptr = (void *)param_1[2];\n  if (*param_1 < iVar9 + iVar3 + iVar5) {\n    iVar9 = *param_1 + iVar9 + iVar3;\n    __ptr = realloc(__ptr,iVar9 * 4);\n    if (__ptr == (void *)0x0) {\n      return 0xc;\n    }\n    *param_1 = iVar9;\n    iVar5 = param_1[1];\n    param_1[2] = (int)__ptr;\n    iVar3 = *(int *)(param_3 + 4);\n    iVar9 = *(int *)(param_2 + 4);\n  }\n  iVar6 = iVar5 + -1;\n  local_24 = iVar5 + iVar9 + iVar3;\n  iVar9 = iVar9 + -1;\n  iVar3 = iVar3 + -1;\n  iVar5 = *(int *)(param_2 + 8);\n  iVar7 = *(int *)(param_3 + 8);\n  iVar4 = *(int *)(iVar5 + iVar9 * 4);\n  iVar8 = *(int *)(iVar7 + iVar3 * 4);\n  do {\n    bVar10 = SBORROW4(iVar4,iVar8);\n    iVar2 = iVar4 - iVar8;\n    if (iVar4 == iVar8) goto LAB_0001e8ae;\n    while (bVar10 != iVar2 < 0) {\n      iVar3 = iVar3 + -1;\n      if (iVar3 < 0) goto LAB_0001e940;\n      while( true ) {\n        iVar8 = *(int *)(iVar7 + iVar3 * 4);\n        bVar10 = SBORROW4(iVar4,iVar8);\n        iVar2 = iVar4 - iVar8;\n        if (iVar2 != 0) break;\nLAB_0001e8ae:\n        if (-1 < iVar6) {\n          do {\n            iVar8 = *(int *)((int)__ptr + iVar6 * 4);\n            if (iVar8 <= iVar4) {\n              if (iVar8 == iVar4) goto LAB_0001e8d7;\n              break;\n            }\n            iVar6 = iVar6 + -1;\n          } while (iVar6 != -1);\n        }\n        local_24 = local_24 + -1;\n        *(int *)((int)__ptr + local_24 * 4) = iVar4;\nLAB_0001e8d7:\n        iVar9 = iVar9 + -1;\n        if ((iVar9 < 0) || (iVar3 = iVar3 + -1, iVar3 < 0)) goto LAB_0001e940;\n        iVar4 = *(int *)(iVar5 + iVar9 * 4);\n      }\n    }\n    iVar9 = iVar9 + -1;\n    if (iVar9 < 0) break;\n    iVar4 = *(int *)(iVar5 + iVar9 * 4);\n  } while( true );\nLAB_0001e940:\n  iVar5 = param_1[1];\n  iVar9 = iVar5 + -1;\n  iVar7 = *(int *)(param_2 + 4) + iVar5 + *(int *)(param_3 + 4);\n  iVar3 = iVar7 + -1;\n  iVar7 = iVar7 - local_24;\n  param_1[1] = iVar5 + iVar7;\n  if ((iVar7 < 1) || (iVar9 < 0)) {\n    __n = iVar7 * 4;\n  }\n  else {\n    do {\n      while( true ) {\n        iVar5 = *(int *)((int)__ptr + iVar3 * 4);\n        iVar8 = *(int *)((int)__ptr + iVar9 * 4);\n        piVar1 = (int *)((int)__ptr + (iVar9 + iVar7) * 4);\n        if (iVar5 <= iVar8) break;\n        iVar3 = iVar3 + -1;\n        *piVar1 = iVar5;\n        iVar7 = iVar7 + -1;\n        if (iVar7 == 0) {\n          __n = 0;\n          __ptr = (void *)param_1[2];\n          goto LAB_0001e8f3;\n        }\n      }\n      iVar9 = iVar9 + -1;\n      *piVar1 = iVar8;\n    } while (iVar9 != -1);\n    __n = iVar7 << 2;\n    __ptr = (void *)param_1[2];\n  }\nLAB_0001e8f3:\n  memcpy(__ptr,(void *)((int)__ptr + local_24 * 4),__n);\n  return 0;\n}" { (declaration "int *piVar1;" primitive_type (pointer_declarator "*piVar1" * identifier) ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "void *__ptr;" primitive_type (pointer_declarator "*__ptr" * identifier) ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "int iVar5;" primitive_type identifier ;) (declaration "int iVar6;" primitive_type identifier ;) (declaration "int iVar7;" primitive_type identifier ;) (declaration "size_t __n;" primitive_type identifier ;) (declaration "int iVar8;" primitive_type identifier ;) (declaration "int iVar9;" primitive_type identifier ;) (declaration "bool bVar10;" primitive_type identifier ;) (declaration "int local_24;" primitive_type identifier ;) (expression_statement "iVar9 = *(int *)(param_2 + 4);" (assignment_expression "iVar9 = *(int *)(param_2 + 4)" identifier = (pointer_expression "*(int *)(param_2 + 4)" * (cast_expression "(int *)(param_2 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 4)" ( (binary_expression "param_2 + 4" identifier + number_literal) ))))) ;) (if_statement "if (iVar9 == 0) {\n    return 0;\n  }" if (parenthesized_expression "(iVar9 == 0)" ( (binary_expression "iVar9 == 0" identifier == number_literal) )) (compound_statement "{\n    return 0;\n  }" { (return_statement "return 0;" return number_literal ;) })) (expression_statement "iVar3 = *(int *)(param_3 + 4);" (assignment_expression "iVar3 = *(int *)(param_3 + 4)" identifier = (pointer_expression "*(int *)(param_3 + 4)" * (cast_expression "(int *)(param_3 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 4)" ( (binary_expression "param_3 + 4" identifier + number_literal) ))))) ;) (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 ;) })) (expression_statement "iVar5 = param_1[1];" (assignment_expression "iVar5 = param_1[1]" identifier = (subscript_expression "param_1[1]" identifier [ number_literal ])) ;) (expression_statement "__ptr = (void *)param_1[2];" (assignment_expression "__ptr = (void *)param_1[2]" identifier = (cast_expression "(void *)param_1[2]" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[2]" identifier [ number_literal ]))) ;) (if_statement "if (*param_1 < iVar9 + iVar3 + iVar5) {\n    iVar9 = *param_1 + iVar9 + iVar3;\n    __ptr = realloc(__ptr,iVar9 * 4);\n    if (__ptr == (void *)0x0) {\n      return 0xc;\n    }\n    *param_1 = iVar9;\n    iVar5 = param_1[1];\n    param_1[2] = (int)__ptr;\n    iVar3 = *(int *)(param_3 + 4);\n    iVar9 = *(int *)(param_2 + 4);\n  }" if (parenthesized_expression "(*param_1 < iVar9 + iVar3 + iVar5)" ( (binary_expression "*param_1 < iVar9 + iVar3 + iVar5" (pointer_expression "*param_1" * identifier) < (binary_expression "iVar9 + iVar3 + iVar5" (binary_expression "iVar9 + iVar3" identifier + identifier) + identifier)) )) (compound_statement "{\n    iVar9 = *param_1 + iVar9 + iVar3;\n    __ptr = realloc(__ptr,iVar9 * 4);\n    if (__ptr == (void *)0x0) {\n      return 0xc;\n    }\n    *param_1 = iVar9;\n    iVar5 = param_1[1];\n    param_1[2] = (int)__ptr;\n    iVar3 = *(int *)(param_3 + 4);\n    iVar9 = *(int *)(param_2 + 4);\n  }" { (expression_statement "iVar9 = *param_1 + iVar9 + iVar3;" (assignment_expression "iVar9 = *param_1 + iVar9 + iVar3" identifier = (binary_expression "*param_1 + iVar9 + iVar3" (binary_expression "*param_1 + iVar9" (pointer_expression "*param_1" * identifier) + identifier) + identifier)) ;) (expression_statement "__ptr = realloc(__ptr,iVar9 * 4);" (assignment_expression "__ptr = realloc(__ptr,iVar9 * 4)" identifier = (call_expression "realloc(__ptr,iVar9 * 4)" identifier (argument_list "(__ptr,iVar9 * 4)" ( identifier , (binary_expression "iVar9 * 4" identifier * number_literal) )))) ;) (if_statement "if (__ptr == (void *)0x0) {\n      return 0xc;\n    }" if (parenthesized_expression "(__ptr == (void *)0x0)" ( (binary_expression "__ptr == (void *)0x0" identifier == (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      return 0xc;\n    }" { (return_statement "return 0xc;" return number_literal ;) })) (expression_statement "*param_1 = iVar9;" (assignment_expression "*param_1 = iVar9" (pointer_expression "*param_1" * identifier) = identifier) ;) (expression_statement "iVar5 = param_1[1];" (assignment_expression "iVar5 = param_1[1]" identifier = (subscript_expression "param_1[1]" identifier [ number_literal ])) ;) (expression_statement "param_1[2] = (int)__ptr;" (assignment_expression "param_1[2] = (int)__ptr" (subscript_expression "param_1[2]" identifier [ number_literal ]) = (cast_expression "(int)__ptr" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "iVar3 = *(int *)(param_3 + 4);" (assignment_expression "iVar3 = *(int *)(param_3 + 4)" identifier = (pointer_expression "*(int *)(param_3 + 4)" * (cast_expression "(int *)(param_3 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 4)" ( (binary_expression "param_3 + 4" identifier + number_literal) ))))) ;) (expression_statement "iVar9 = *(int *)(param_2 + 4);" (assignment_expression "iVar9 = *(int *)(param_2 + 4)" identifier = (pointer_expression "*(int *)(param_2 + 4)" * (cast_expression "(int *)(param_2 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 4)" ( (binary_expression "param_2 + 4" identifier + number_literal) ))))) ;) })) (expression_statement "iVar6 = iVar5 + -1;" (assignment_expression "iVar6 = iVar5 + -1" identifier = (binary_expression "iVar5 + -1" identifier + number_literal)) ;) (expression_statement "local_24 = iVar5 + iVar9 + iVar3;" (assignment_expression "local_24 = iVar5 + iVar9 + iVar3" identifier = (binary_expression "iVar5 + iVar9 + iVar3" (binary_expression "iVar5 + iVar9" identifier + identifier) + identifier)) ;) (expression_statement "iVar9 = iVar9 + -1;" (assignment_expression "iVar9 = iVar9 + -1" identifier = (binary_expression "iVar9 + -1" identifier + number_literal)) ;) (expression_statement "iVar3 = iVar3 + -1;" (assignment_expression "iVar3 = iVar3 + -1" identifier = (binary_expression "iVar3 + -1" identifier + number_literal)) ;) (expression_statement "iVar5 = *(int *)(param_2 + 8);" (assignment_expression "iVar5 = *(int *)(param_2 + 8)" identifier = (pointer_expression "*(int *)(param_2 + 8)" * (cast_expression "(int *)(param_2 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 8)" ( (binary_expression "param_2 + 8" identifier + number_literal) ))))) ;) (expression_statement "iVar7 = *(int *)(param_3 + 8);" (assignment_expression "iVar7 = *(int *)(param_3 + 8)" identifier = (pointer_expression "*(int *)(param_3 + 8)" * (cast_expression "(int *)(param_3 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 8)" ( (binary_expression "param_3 + 8" identifier + number_literal) ))))) ;) (expression_statement "iVar4 = *(int *)(iVar5 + iVar9 * 4);" (assignment_expression "iVar4 = *(int *)(iVar5 + iVar9 * 4)" identifier = (pointer_expression "*(int *)(iVar5 + iVar9 * 4)" * (cast_expression "(int *)(iVar5 + iVar9 * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + iVar9 * 4)" ( (binary_expression "iVar5 + iVar9 * 4" identifier + (binary_expression "iVar9 * 4" identifier * number_literal)) ))))) ;) (expression_statement "iVar8 = *(int *)(iVar7 + iVar3 * 4);" (assignment_expression "iVar8 = *(int *)(iVar7 + iVar3 * 4)" identifier = (pointer_expression "*(int *)(iVar7 + iVar3 * 4)" * (cast_expression "(int *)(iVar7 + iVar3 * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar7 + iVar3 * 4)" ( (binary_expression "iVar7 + iVar3 * 4" identifier + (binary_expression "iVar3 * 4" identifier * number_literal)) ))))) ;) (do_statement "do {\n    bVar10 = SBORROW4(iVar4,iVar8);\n    iVar2 = iVar4 - iVar8;\n    if (iVar4 == iVar8) goto LAB_0001e8ae;\n    while (bVar10 != iVar2 < 0) {\n      iVar3 = iVar3 + -1;\n      if (iVar3 < 0) goto LAB_0001e940;\n      while( true ) {\n        iVar8 = *(int *)(iVar7 + iVar3 * 4);\n        bVar10 = SBORROW4(iVar4,iVar8);\n        iVar2 = iVar4 - iVar8;\n        if (iVar2 != 0) break;\nLAB_0001e8ae:\n        if (-1 < iVar6) {\n          do {\n            iVar8 = *(int *)((int)__ptr + iVar6 * 4);\n            if (iVar8 <= iVar4) {\n              if (iVar8 == iVar4) goto LAB_0001e8d7;\n              break;\n            }\n            iVar6 = iVar6 + -1;\n          } while (iVar6 != -1);\n        }\n        local_24 = local_24 + -1;\n        *(int *)((int)__ptr + local_24 * 4) = iVar4;\nLAB_0001e8d7:\n        iVar9 = iVar9 + -1;\n        if ((iVar9 < 0) || (iVar3 = iVar3 + -1, iVar3 < 0)) goto LAB_0001e940;\n        iVar4 = *(int *)(iVar5 + iVar9 * 4);\n      }\n    }\n    iVar9 = iVar9 + -1;\n    if (iVar9 < 0) break;\n    iVar4 = *(int *)(iVar5 + iVar9 * 4);\n  } while( true );" do (compound_statement "{\n    bVar10 = SBORROW4(iVar4,iVar8);\n    iVar2 = iVar4 - iVar8;\n    if (iVar4 == iVar8) goto LAB_0001e8ae;\n    while (bVar10 != iVar2 < 0) {\n      iVar3 = iVar3 + -1;\n      if (iVar3 < 0) goto LAB_0001e940;\n      while( true ) {\n        iVar8 = *(int *)(iVar7 + iVar3 * 4);\n        bVar10 = SBORROW4(iVar4,iVar8);\n        iVar2 = iVar4 - iVar8;\n        if (iVar2 != 0) break;\nLAB_0001e8ae:\n        if (-1 < iVar6) {\n          do {\n            iVar8 = *(int *)((int)__ptr + iVar6 * 4);\n            if (iVar8 <= iVar4) {\n              if (iVar8 == iVar4) goto LAB_0001e8d7;\n              break;\n            }\n            iVar6 = iVar6 + -1;\n          } while (iVar6 != -1);\n        }\n        local_24 = local_24 + -1;\n        *(int *)((int)__ptr + local_24 * 4) = iVar4;\nLAB_0001e8d7:\n        iVar9 = iVar9 + -1;\n        if ((iVar9 < 0) || (iVar3 = iVar3 + -1, iVar3 < 0)) goto LAB_0001e940;\n        iVar4 = *(int *)(iVar5 + iVar9 * 4);\n      }\n    }\n    iVar9 = iVar9 + -1;\n    if (iVar9 < 0) break;\n    iVar4 = *(int *)(iVar5 + iVar9 * 4);\n  }" { (expression_statement "bVar10 = SBORROW4(iVar4,iVar8);" (assignment_expression "bVar10 = SBORROW4(iVar4,iVar8)" identifier = (call_expression "SBORROW4(iVar4,iVar8)" identifier (argument_list "(iVar4,iVar8)" ( identifier , identifier )))) ;) (expression_statement "iVar2 = iVar4 - iVar8;" (assignment_expression "iVar2 = iVar4 - iVar8" identifier = (binary_expression "iVar4 - iVar8" identifier - identifier)) ;) (if_statement "if (iVar4 == iVar8) goto LAB_0001e8ae;" if (parenthesized_expression "(iVar4 == iVar8)" ( (binary_expression "iVar4 == iVar8" identifier == identifier) )) (goto_statement "goto LAB_0001e8ae;" goto statement_identifier ;)) (while_statement "while (bVar10 != iVar2 < 0) {\n      iVar3 = iVar3 + -1;\n      if (iVar3 < 0) goto LAB_0001e940;\n      while( true ) {\n        iVar8 = *(int *)(iVar7 + iVar3 * 4);\n        bVar10 = SBORROW4(iVar4,iVar8);\n        iVar2 = iVar4 - iVar8;\n        if (iVar2 != 0) break;\nLAB_0001e8ae:\n        if (-1 < iVar6) {\n          do {\n            iVar8 = *(int *)((int)__ptr + iVar6 * 4);\n            if (iVar8 <= iVar4) {\n              if (iVar8 == iVar4) goto LAB_0001e8d7;\n              break;\n            }\n            iVar6 = iVar6 + -1;\n          } while (iVar6 != -1);\n        }\n        local_24 = local_24 + -1;\n        *(int *)((int)__ptr + local_24 * 4) = iVar4;\nLAB_0001e8d7:\n        iVar9 = iVar9 + -1;\n        if ((iVar9 < 0) || (iVar3 = iVar3 + -1, iVar3 < 0)) goto LAB_0001e940;\n        iVar4 = *(int *)(iVar5 + iVar9 * 4);\n      }\n    }" while (parenthesized_expression "(bVar10 != iVar2 < 0)" ( (binary_expression "bVar10 != iVar2 < 0" identifier != (binary_expression "iVar2 < 0" identifier < number_literal)) )) (compound_statement "{\n      iVar3 = iVar3 + -1;\n      if (iVar3 < 0) goto LAB_0001e940;\n      while( true ) {\n        iVar8 = *(int *)(iVar7 + iVar3 * 4);\n        bVar10 = SBORROW4(iVar4,iVar8);\n        iVar2 = iVar4 - iVar8;\n        if (iVar2 != 0) break;\nLAB_0001e8ae:\n        if (-1 < iVar6) {\n          do {\n            iVar8 = *(int *)((int)__ptr + iVar6 * 4);\n            if (iVar8 <= iVar4) {\n              if (iVar8 == iVar4) goto LAB_0001e8d7;\n              break;\n            }\n            iVar6 = iVar6 + -1;\n          } while (iVar6 != -1);\n        }\n        local_24 = local_24 + -1;\n        *(int *)((int)__ptr + local_24 * 4) = iVar4;\nLAB_0001e8d7:\n        iVar9 = iVar9 + -1;\n        if ((iVar9 < 0) || (iVar3 = iVar3 + -1, iVar3 < 0)) goto LAB_0001e940;\n        iVar4 = *(int *)(iVar5 + iVar9 * 4);\n      }\n    }" { (expression_statement "iVar3 = iVar3 + -1;" (assignment_expression "iVar3 = iVar3 + -1" identifier = (binary_expression "iVar3 + -1" identifier + number_literal)) ;) (if_statement "if (iVar3 < 0) goto LAB_0001e940;" if (parenthesized_expression "(iVar3 < 0)" ( (binary_expression "iVar3 < 0" identifier < number_literal) )) (goto_statement "goto LAB_0001e940;" goto statement_identifier ;)) (while_statement "while( true ) {\n        iVar8 = *(int *)(iVar7 + iVar3 * 4);\n        bVar10 = SBORROW4(iVar4,iVar8);\n        iVar2 = iVar4 - iVar8;\n        if (iVar2 != 0) break;\nLAB_0001e8ae:\n        if (-1 < iVar6) {\n          do {\n            iVar8 = *(int *)((int)__ptr + iVar6 * 4);\n            if (iVar8 <= iVar4) {\n              if (iVar8 == iVar4) goto LAB_0001e8d7;\n              break;\n            }\n            iVar6 = iVar6 + -1;\n          } while (iVar6 != -1);\n        }\n        local_24 = local_24 + -1;\n        *(int *)((int)__ptr + local_24 * 4) = iVar4;\nLAB_0001e8d7:\n        iVar9 = iVar9 + -1;\n        if ((iVar9 < 0) || (iVar3 = iVar3 + -1, iVar3 < 0)) goto LAB_0001e940;\n        iVar4 = *(int *)(iVar5 + iVar9 * 4);\n      }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n        iVar8 = *(int *)(iVar7 + iVar3 * 4);\n        bVar10 = SBORROW4(iVar4,iVar8);\n        iVar2 = iVar4 - iVar8;\n        if (iVar2 != 0) break;\nLAB_0001e8ae:\n        if (-1 < iVar6) {\n          do {\n            iVar8 = *(int *)((int)__ptr + iVar6 * 4);\n            if (iVar8 <= iVar4) {\n              if (iVar8 == iVar4) goto LAB_0001e8d7;\n              break;\n            }\n            iVar6 = iVar6 + -1;\n          } while (iVar6 != -1);\n        }\n        local_24 = local_24 + -1;\n        *(int *)((int)__ptr + local_24 * 4) = iVar4;\nLAB_0001e8d7:\n        iVar9 = iVar9 + -1;\n        if ((iVar9 < 0) || (iVar3 = iVar3 + -1, iVar3 < 0)) goto LAB_0001e940;\n        iVar4 = *(int *)(iVar5 + iVar9 * 4);\n      }" { (expression_statement "iVar8 = *(int *)(iVar7 + iVar3 * 4);" (assignment_expression "iVar8 = *(int *)(iVar7 + iVar3 * 4)" identifier = (pointer_expression "*(int *)(iVar7 + iVar3 * 4)" * (cast_expression "(int *)(iVar7 + iVar3 * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar7 + iVar3 * 4)" ( (binary_expression "iVar7 + iVar3 * 4" identifier + (binary_expression "iVar3 * 4" identifier * number_literal)) ))))) ;) (expression_statement "bVar10 = SBORROW4(iVar4,iVar8);" (assignment_expression "bVar10 = SBORROW4(iVar4,iVar8)" identifier = (call_expression "SBORROW4(iVar4,iVar8)" identifier (argument_list "(iVar4,iVar8)" ( identifier , identifier )))) ;) (expression_statement "iVar2 = iVar4 - iVar8;" (assignment_expression "iVar2 = iVar4 - iVar8" identifier = (binary_expression "iVar4 - iVar8" identifier - identifier)) ;) (if_statement "if (iVar2 != 0) break;" if (parenthesized_expression "(iVar2 != 0)" ( (binary_expression "iVar2 != 0" identifier != number_literal) )) (break_statement "break;" break ;)) (labeled_statement "LAB_0001e8ae:\n        if (-1 < iVar6) {\n          do {\n            iVar8 = *(int *)((int)__ptr + iVar6 * 4);\n            if (iVar8 <= iVar4) {\n              if (iVar8 == iVar4) goto LAB_0001e8d7;\n              break;\n            }\n            iVar6 = iVar6 + -1;\n          } while (iVar6 != -1);\n        }" statement_identifier : (if_statement "if (-1 < iVar6) {\n          do {\n            iVar8 = *(int *)((int)__ptr + iVar6 * 4);\n            if (iVar8 <= iVar4) {\n              if (iVar8 == iVar4) goto LAB_0001e8d7;\n              break;\n            }\n            iVar6 = iVar6 + -1;\n          } while (iVar6 != -1);\n        }" if (parenthesized_expression "(-1 < iVar6)" ( (binary_expression "-1 < iVar6" number_literal < identifier) )) (compound_statement "{\n          do {\n            iVar8 = *(int *)((int)__ptr + iVar6 * 4);\n            if (iVar8 <= iVar4) {\n              if (iVar8 == iVar4) goto LAB_0001e8d7;\n              break;\n            }\n            iVar6 = iVar6 + -1;\n          } while (iVar6 != -1);\n        }" { (do_statement "do {\n            iVar8 = *(int *)((int)__ptr + iVar6 * 4);\n            if (iVar8 <= iVar4) {\n              if (iVar8 == iVar4) goto LAB_0001e8d7;\n              break;\n            }\n            iVar6 = iVar6 + -1;\n          } while (iVar6 != -1);" do (compound_statement "{\n            iVar8 = *(int *)((int)__ptr + iVar6 * 4);\n            if (iVar8 <= iVar4) {\n              if (iVar8 == iVar4) goto LAB_0001e8d7;\n              break;\n            }\n            iVar6 = iVar6 + -1;\n          }" { (expression_statement "iVar8 = *(int *)((int)__ptr + iVar6 * 4);" (assignment_expression "iVar8 = *(int *)((int)__ptr + iVar6 * 4)" identifier = (pointer_expression "*(int *)((int)__ptr + iVar6 * 4)" * (cast_expression "(int *)((int)__ptr + iVar6 * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)__ptr + iVar6 * 4)" ( (binary_expression "(int)__ptr + iVar6 * 4" (cast_expression "(int)__ptr" ( (type_descriptor "int" primitive_type) ) identifier) + (binary_expression "iVar6 * 4" identifier * number_literal)) ))))) ;) (if_statement "if (iVar8 <= iVar4) {\n              if (iVar8 == iVar4) goto LAB_0001e8d7;\n              break;\n            }" if (parenthesized_expression "(iVar8 <= iVar4)" ( (binary_expression "iVar8 <= iVar4" identifier <= identifier) )) (compound_statement "{\n              if (iVar8 == iVar4) goto LAB_0001e8d7;\n              break;\n            }" { (if_statement "if (iVar8 == iVar4) goto LAB_0001e8d7;" if (parenthesized_expression "(iVar8 == iVar4)" ( (binary_expression "iVar8 == iVar4" identifier == identifier) )) (goto_statement "goto LAB_0001e8d7;" goto statement_identifier ;)) (break_statement "break;" break ;) })) (expression_statement "iVar6 = iVar6 + -1;" (assignment_expression "iVar6 = iVar6 + -1" identifier = (binary_expression "iVar6 + -1" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar6 != -1)" ( (binary_expression "iVar6 != -1" identifier != number_literal) )) ;) }))) (expression_statement "local_24 = local_24 + -1;" (assignment_expression "local_24 = local_24 + -1" identifier = (binary_expression "local_24 + -1" identifier + number_literal)) ;) (expression_statement "*(int *)((int)__ptr + local_24 * 4) = iVar4;" (assignment_expression "*(int *)((int)__ptr + local_24 * 4) = iVar4" (pointer_expression "*(int *)((int)__ptr + local_24 * 4)" * (cast_expression "(int *)((int)__ptr + local_24 * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)__ptr + local_24 * 4)" ( (binary_expression "(int)__ptr + local_24 * 4" (cast_expression "(int)__ptr" ( (type_descriptor "int" primitive_type) ) identifier) + (binary_expression "local_24 * 4" identifier * number_literal)) )))) = identifier) ;) (labeled_statement "LAB_0001e8d7:\n        iVar9 = iVar9 + -1;" statement_identifier : (expression_statement "iVar9 = iVar9 + -1;" (assignment_expression "iVar9 = iVar9 + -1" identifier = (binary_expression "iVar9 + -1" identifier + number_literal)) ;)) (if_statement "if ((iVar9 < 0) || (iVar3 = iVar3 + -1, iVar3 < 0)) goto LAB_0001e940;" if (parenthesized_expression "((iVar9 < 0) || (iVar3 = iVar3 + -1, iVar3 < 0))" ( (binary_expression "(iVar9 < 0) || (iVar3 = iVar3 + -1, iVar3 < 0)" (parenthesized_expression "(iVar9 < 0)" ( (binary_expression "iVar9 < 0" identifier < number_literal) )) || (parenthesized_expression "(iVar3 = iVar3 + -1, iVar3 < 0)" ( (comma_expression "iVar3 = iVar3 + -1, iVar3 < 0" (assignment_expression "iVar3 = iVar3 + -1" identifier = (binary_expression "iVar3 + -1" identifier + number_literal)) , (binary_expression "iVar3 < 0" identifier < number_literal)) ))) )) (goto_statement "goto LAB_0001e940;" goto statement_identifier ;)) (expression_statement "iVar4 = *(int *)(iVar5 + iVar9 * 4);" (assignment_expression "iVar4 = *(int *)(iVar5 + iVar9 * 4)" identifier = (pointer_expression "*(int *)(iVar5 + iVar9 * 4)" * (cast_expression "(int *)(iVar5 + iVar9 * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + iVar9 * 4)" ( (binary_expression "iVar5 + iVar9 * 4" identifier + (binary_expression "iVar9 * 4" identifier * number_literal)) ))))) ;) })) })) (expression_statement "iVar9 = iVar9 + -1;" (assignment_expression "iVar9 = iVar9 + -1" identifier = (binary_expression "iVar9 + -1" identifier + number_literal)) ;) (if_statement "if (iVar9 < 0) break;" if (parenthesized_expression "(iVar9 < 0)" ( (binary_expression "iVar9 < 0" identifier < number_literal) )) (break_statement "break;" break ;)) (expression_statement "iVar4 = *(int *)(iVar5 + iVar9 * 4);" (assignment_expression "iVar4 = *(int *)(iVar5 + iVar9 * 4)" identifier = (pointer_expression "*(int *)(iVar5 + iVar9 * 4)" * (cast_expression "(int *)(iVar5 + iVar9 * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + iVar9 * 4)" ( (binary_expression "iVar5 + iVar9 * 4" identifier + (binary_expression "iVar9 * 4" identifier * number_literal)) ))))) ;) }) while (parenthesized_expression "( true )" ( true )) ;) (labeled_statement "LAB_0001e940:\n  iVar5 = param_1[1];" statement_identifier : (expression_statement "iVar5 = param_1[1];" (assignment_expression "iVar5 = param_1[1]" identifier = (subscript_expression "param_1[1]" identifier [ number_literal ])) ;)) (expression_statement "iVar9 = iVar5 + -1;" (assignment_expression "iVar9 = iVar5 + -1" identifier = (binary_expression "iVar5 + -1" identifier + number_literal)) ;) (expression_statement "iVar7 = *(int *)(param_2 + 4) + iVar5 + *(int *)(param_3 + 4);" (assignment_expression "iVar7 = *(int *)(param_2 + 4) + iVar5 + *(int *)(param_3 + 4)" identifier = (binary_expression "*(int *)(param_2 + 4) + iVar5 + *(int *)(param_3 + 4)" (binary_expression "*(int *)(param_2 + 4) + iVar5" (pointer_expression "*(int *)(param_2 + 4)" * (cast_expression "(int *)(param_2 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 4)" ( (binary_expression "param_2 + 4" identifier + number_literal) )))) + identifier) + (pointer_expression "*(int *)(param_3 + 4)" * (cast_expression "(int *)(param_3 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 4)" ( (binary_expression "param_3 + 4" identifier + number_literal) )))))) ;) (expression_statement "iVar3 = iVar7 + -1;" (assignment_expression "iVar3 = iVar7 + -1" identifier = (binary_expression "iVar7 + -1" identifier + number_literal)) ;) (expression_statement "iVar7 = iVar7 - local_24;" (assignment_expression "iVar7 = iVar7 - local_24" identifier = (binary_expression "iVar7 - local_24" identifier - identifier)) ;) (expression_statement "param_1[1] = iVar5 + iVar7;" (assignment_expression "param_1[1] = iVar5 + iVar7" (subscript_expression "param_1[1]" identifier [ number_literal ]) = (binary_expression "iVar5 + iVar7" identifier + identifier)) ;) (if_statement "if ((iVar7 < 1) || (iVar9 < 0)) {\n    __n = iVar7 * 4;\n  }\n  else {\n    do {\n      while( true ) {\n        iVar5 = *(int *)((int)__ptr + iVar3 * 4);\n        iVar8 = *(int *)((int)__ptr + iVar9 * 4);\n        piVar1 = (int *)((int)__ptr + (iVar9 + iVar7) * 4);\n        if (iVar5 <= iVar8) break;\n        iVar3 = iVar3 + -1;\n        *piVar1 = iVar5;\n        iVar7 = iVar7 + -1;\n        if (iVar7 == 0) {\n          __n = 0;\n          __ptr = (void *)param_1[2];\n          goto LAB_0001e8f3;\n        }\n      }\n      iVar9 = iVar9 + -1;\n      *piVar1 = iVar8;\n    } while (iVar9 != -1);\n    __n = iVar7 << 2;\n    __ptr = (void *)param_1[2];\n  }" if (parenthesized_expression "((iVar7 < 1) || (iVar9 < 0))" ( (binary_expression "(iVar7 < 1) || (iVar9 < 0)" (parenthesized_expression "(iVar7 < 1)" ( (binary_expression "iVar7 < 1" identifier < number_literal) )) || (parenthesized_expression "(iVar9 < 0)" ( (binary_expression "iVar9 < 0" identifier < number_literal) ))) )) (compound_statement "{\n    __n = iVar7 * 4;\n  }" { (expression_statement "__n = iVar7 * 4;" (assignment_expression "__n = iVar7 * 4" identifier = (binary_expression "iVar7 * 4" identifier * number_literal)) ;) }) (else_clause "else {\n    do {\n      while( true ) {\n        iVar5 = *(int *)((int)__ptr + iVar3 * 4);\n        iVar8 = *(int *)((int)__ptr + iVar9 * 4);\n        piVar1 = (int *)((int)__ptr + (iVar9 + iVar7) * 4);\n        if (iVar5 <= iVar8) break;\n        iVar3 = iVar3 + -1;\n        *piVar1 = iVar5;\n        iVar7 = iVar7 + -1;\n        if (iVar7 == 0) {\n          __n = 0;\n          __ptr = (void *)param_1[2];\n          goto LAB_0001e8f3;\n        }\n      }\n      iVar9 = iVar9 + -1;\n      *piVar1 = iVar8;\n    } while (iVar9 != -1);\n    __n = iVar7 << 2;\n    __ptr = (void *)param_1[2];\n  }" else (compound_statement "{\n    do {\n      while( true ) {\n        iVar5 = *(int *)((int)__ptr + iVar3 * 4);\n        iVar8 = *(int *)((int)__ptr + iVar9 * 4);\n        piVar1 = (int *)((int)__ptr + (iVar9 + iVar7) * 4);\n        if (iVar5 <= iVar8) break;\n        iVar3 = iVar3 + -1;\n        *piVar1 = iVar5;\n        iVar7 = iVar7 + -1;\n        if (iVar7 == 0) {\n          __n = 0;\n          __ptr = (void *)param_1[2];\n          goto LAB_0001e8f3;\n        }\n      }\n      iVar9 = iVar9 + -1;\n      *piVar1 = iVar8;\n    } while (iVar9 != -1);\n    __n = iVar7 << 2;\n    __ptr = (void *)param_1[2];\n  }" { (do_statement "do {\n      while( true ) {\n        iVar5 = *(int *)((int)__ptr + iVar3 * 4);\n        iVar8 = *(int *)((int)__ptr + iVar9 * 4);\n        piVar1 = (int *)((int)__ptr + (iVar9 + iVar7) * 4);\n        if (iVar5 <= iVar8) break;\n        iVar3 = iVar3 + -1;\n        *piVar1 = iVar5;\n        iVar7 = iVar7 + -1;\n        if (iVar7 == 0) {\n          __n = 0;\n          __ptr = (void *)param_1[2];\n          goto LAB_0001e8f3;\n        }\n      }\n      iVar9 = iVar9 + -1;\n      *piVar1 = iVar8;\n    } while (iVar9 != -1);" do (compound_statement "{\n      while( true ) {\n        iVar5 = *(int *)((int)__ptr + iVar3 * 4);\n        iVar8 = *(int *)((int)__ptr + iVar9 * 4);\n        piVar1 = (int *)((int)__ptr + (iVar9 + iVar7) * 4);\n        if (iVar5 <= iVar8) break;\n        iVar3 = iVar3 + -1;\n        *piVar1 = iVar5;\n        iVar7 = iVar7 + -1;\n        if (iVar7 == 0) {\n          __n = 0;\n          __ptr = (void *)param_1[2];\n          goto LAB_0001e8f3;\n        }\n      }\n      iVar9 = iVar9 + -1;\n      *piVar1 = iVar8;\n    }" { (while_statement "while( true ) {\n        iVar5 = *(int *)((int)__ptr + iVar3 * 4);\n        iVar8 = *(int *)((int)__ptr + iVar9 * 4);\n        piVar1 = (int *)((int)__ptr + (iVar9 + iVar7) * 4);\n        if (iVar5 <= iVar8) break;\n        iVar3 = iVar3 + -1;\n        *piVar1 = iVar5;\n        iVar7 = iVar7 + -1;\n        if (iVar7 == 0) {\n          __n = 0;\n          __ptr = (void *)param_1[2];\n          goto LAB_0001e8f3;\n        }\n      }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n        iVar5 = *(int *)((int)__ptr + iVar3 * 4);\n        iVar8 = *(int *)((int)__ptr + iVar9 * 4);\n        piVar1 = (int *)((int)__ptr + (iVar9 + iVar7) * 4);\n        if (iVar5 <= iVar8) break;\n        iVar3 = iVar3 + -1;\n        *piVar1 = iVar5;\n        iVar7 = iVar7 + -1;\n        if (iVar7 == 0) {\n          __n = 0;\n          __ptr = (void *)param_1[2];\n          goto LAB_0001e8f3;\n        }\n      }" { (expression_statement "iVar5 = *(int *)((int)__ptr + iVar3 * 4);" (assignment_expression "iVar5 = *(int *)((int)__ptr + iVar3 * 4)" identifier = (pointer_expression "*(int *)((int)__ptr + iVar3 * 4)" * (cast_expression "(int *)((int)__ptr + iVar3 * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)__ptr + iVar3 * 4)" ( (binary_expression "(int)__ptr + iVar3 * 4" (cast_expression "(int)__ptr" ( (type_descriptor "int" primitive_type) ) identifier) + (binary_expression "iVar3 * 4" identifier * number_literal)) ))))) ;) (expression_statement "iVar8 = *(int *)((int)__ptr + iVar9 * 4);" (assignment_expression "iVar8 = *(int *)((int)__ptr + iVar9 * 4)" identifier = (pointer_expression "*(int *)((int)__ptr + iVar9 * 4)" * (cast_expression "(int *)((int)__ptr + iVar9 * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)__ptr + iVar9 * 4)" ( (binary_expression "(int)__ptr + iVar9 * 4" (cast_expression "(int)__ptr" ( (type_descriptor "int" primitive_type) ) identifier) + (binary_expression "iVar9 * 4" identifier * number_literal)) ))))) ;) (expression_statement "piVar1 = (int *)((int)__ptr + (iVar9 + iVar7) * 4);" (assignment_expression "piVar1 = (int *)((int)__ptr + (iVar9 + iVar7) * 4)" identifier = (cast_expression "(int *)((int)__ptr + (iVar9 + iVar7) * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)__ptr + (iVar9 + iVar7) * 4)" ( (binary_expression "(int)__ptr + (iVar9 + iVar7) * 4" (cast_expression "(int)__ptr" ( (type_descriptor "int" primitive_type) ) identifier) + (binary_expression "(iVar9 + iVar7) * 4" (parenthesized_expression "(iVar9 + iVar7)" ( (binary_expression "iVar9 + iVar7" identifier + identifier) )) * number_literal)) )))) ;) (if_statement "if (iVar5 <= iVar8) break;" if (parenthesized_expression "(iVar5 <= iVar8)" ( (binary_expression "iVar5 <= iVar8" identifier <= identifier) )) (break_statement "break;" break ;)) (expression_statement "iVar3 = iVar3 + -1;" (assignment_expression "iVar3 = iVar3 + -1" identifier = (binary_expression "iVar3 + -1" identifier + number_literal)) ;) (expression_statement "*piVar1 = iVar5;" (assignment_expression "*piVar1 = iVar5" (pointer_expression "*piVar1" * identifier) = identifier) ;) (expression_statement "iVar7 = iVar7 + -1;" (assignment_expression "iVar7 = iVar7 + -1" identifier = (binary_expression "iVar7 + -1" identifier + number_literal)) ;) (if_statement "if (iVar7 == 0) {\n          __n = 0;\n          __ptr = (void *)param_1[2];\n          goto LAB_0001e8f3;\n        }" if (parenthesized_expression "(iVar7 == 0)" ( (binary_expression "iVar7 == 0" identifier == number_literal) )) (compound_statement "{\n          __n = 0;\n          __ptr = (void *)param_1[2];\n          goto LAB_0001e8f3;\n        }" { (expression_statement "__n = 0;" (assignment_expression "__n = 0" identifier = number_literal) ;) (expression_statement "__ptr = (void *)param_1[2];" (assignment_expression "__ptr = (void *)param_1[2]" identifier = (cast_expression "(void *)param_1[2]" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[2]" identifier [ number_literal ]))) ;) (goto_statement "goto LAB_0001e8f3;" goto statement_identifier ;) })) })) (expression_statement "iVar9 = iVar9 + -1;" (assignment_expression "iVar9 = iVar9 + -1" identifier = (binary_expression "iVar9 + -1" identifier + number_literal)) ;) (expression_statement "*piVar1 = iVar8;" (assignment_expression "*piVar1 = iVar8" (pointer_expression "*piVar1" * identifier) = identifier) ;) }) while (parenthesized_expression "(iVar9 != -1)" ( (binary_expression "iVar9 != -1" identifier != number_literal) )) ;) (expression_statement "__n = iVar7 << 2;" (assignment_expression "__n = iVar7 << 2" identifier = (binary_expression "iVar7 << 2" identifier << number_literal)) ;) (expression_statement "__ptr = (void *)param_1[2];" (assignment_expression "__ptr = (void *)param_1[2]" identifier = (cast_expression "(void *)param_1[2]" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[2]" identifier [ number_literal ]))) ;) }))) (labeled_statement "LAB_0001e8f3:\n  memcpy(__ptr,(void *)((int)__ptr + local_24 * 4),__n);" statement_identifier : (expression_statement "memcpy(__ptr,(void *)((int)__ptr + local_24 * 4),__n);" (call_expression "memcpy(__ptr,(void *)((int)__ptr + local_24 * 4),__n)" identifier (argument_list "(__ptr,(void *)((int)__ptr + local_24 * 4),__n)" ( identifier , (cast_expression "(void *)((int)__ptr + local_24 * 4)" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)__ptr + local_24 * 4)" ( (binary_expression "(int)__ptr + local_24 * 4" (cast_expression "(int)__ptr" ( (type_descriptor "int" primitive_type) ) identifier) + (binary_expression "local_24 * 4" identifier * number_literal)) ))) , identifier ))) ;)) (return_statement "return 0;" return number_literal ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) ))) (compound_statement { (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (return_statement return LIT ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (return_statement return LIT ;) })) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) < (binary_expression (binary_expression IDENT + IDENT) + IDENT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression (pointer_expression * IDENT) + IDENT) + IDENT)) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , (binary_expression IDENT * LIT) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (return_statement return LIT ;) })) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + IDENT) + IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression IDENT * LIT)) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression IDENT * LIT)) ))))) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT - IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == IDENT) )) (goto_statement goto statement_identifier ;)) (while_statement while (parenthesized_expression ( (binary_expression IDENT != (binary_expression IDENT < LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (goto_statement goto statement_identifier ;)) (while_statement while (parenthesized_expression ( BOOL )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression IDENT * LIT)) ))))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT - IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (break_statement break ;)) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (compound_statement { (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + (binary_expression IDENT * LIT)) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT <= IDENT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == IDENT) )) (goto_statement goto statement_identifier ;)) (break_statement break ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT != LIT) )) ;) }))) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + (binary_expression IDENT * LIT)) )))) = IDENT) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;)) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT < LIT) )) || (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (binary_expression IDENT + LIT)) , (binary_expression IDENT < LIT)) ))) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression IDENT * LIT)) ))))) ;) })) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression IDENT * LIT)) ))))) ;) }) while (parenthesized_expression ( BOOL )) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + IDENT) + (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT - IDENT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression IDENT + IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT < LIT) )) || (parenthesized_expression ( (binary_expression IDENT < LIT) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT * LIT)) ;) }) (else_clause else (compound_statement { (do_statement do (compound_statement { (while_statement while (parenthesized_expression ( BOOL )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + (binary_expression IDENT * LIT)) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + (binary_expression IDENT * LIT)) ))))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + (binary_expression (parenthesized_expression ( (binary_expression IDENT + IDENT) )) * LIT)) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT <= IDENT) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (goto_statement goto statement_identifier ;) })) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) }) while (parenthesized_expression ( (binary_expression IDENT != LIT) )) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT << LIT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) }))) (labeled_statement statement_identifier : (expression_statement (call_expression IDENT (argument_list ( IDENT , (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + (binary_expression IDENT * LIT)) ))) , IDENT ))) ;)) (return_statement return LIT ;) })))
(function_definition "undefined4 FUN_0001e810(int *param_1,int param_2,int param_3)\n\n{\n  int *piVar1;\n  int iVar2;\n  int iVar3;\n  void *__ptr;\n  int iVar4;\n  int iVar5;\n  int iVar6;\n  int iVar7;\n  size_t __n;\n  int iVar8;\n  int iVar9;\n  bool bVar10;\n  int local_24;\n  \n  iVar9 = *(int *)(param_2 + 4);\n  if (iVar9 == 0) {\n    return 0;\n  }\n  iVar3 = *(int *)(param_3 + 4);\n  if (iVar3 == 0) {\n    return 0;\n  }\n  iVar5 = param_1[1];\n  __ptr = (void *)param_1[2];\n  if (*param_1 < iVar9 + iVar3 + iVar5) {\n    iVar9 = *param_1 + iVar9 + iVar3;\n    __ptr = realloc(__ptr,iVar9 * 4);\n    if (__ptr == (void *)0x0) {\n      return 0xc;\n    }\n    *param_1 = iVar9;\n    iVar5 = param_1[1];\n    param_1[2] = (int)__ptr;\n    iVar3 = *(int *)(param_3 + 4);\n    iVar9 = *(int *)(param_2 + 4);\n  }\n  iVar6 = iVar5 + -1;\n  local_24 = iVar5 + iVar9 + iVar3;\n  iVar9 = iVar9 + -1;\n  iVar3 = iVar3 + -1;\n  iVar5 = *(int *)(param_2 + 8);\n  iVar7 = *(int *)(param_3 + 8);\n  iVar4 = *(int *)(iVar5 + iVar9 * 4);\n  iVar8 = *(int *)(iVar7 + iVar3 * 4);\n  do {\n    bVar10 = SBORROW4(iVar4,iVar8);\n    iVar2 = iVar4 - iVar8;\n    if (iVar4 == iVar8) goto LAB_0001e8ae;\n    while (bVar10 != iVar2 < 0) {\n      iVar3 = iVar3 + -1;\n      if (iVar3 < 0) goto LAB_0001e940;\n      while( true ) {\n        iVar8 = *(int *)(iVar7 + iVar3 * 4);\n        bVar10 = SBORROW4(iVar4,iVar8);\n        iVar2 = iVar4 - iVar8;\n        if (iVar2 != 0) break;\nLAB_0001e8ae:\n        if (-1 < iVar6) {\n          do {\n            iVar8 = *(int *)((int)__ptr + iVar6 * 4);\n            if (iVar8 <= iVar4) {\n              if (iVar8 == iVar4) goto LAB_0001e8d7;\n              break;\n            }\n            iVar6 = iVar6 + -1;\n          } while (iVar6 != -1);\n        }\n        local_24 = local_24 + -1;\n        *(int *)((int)__ptr + local_24 * 4) = iVar4;\nLAB_0001e8d7:\n        iVar9 = iVar9 + -1;\n        if ((iVar9 < 0) || (iVar3 = iVar3 + -1, iVar3 < 0)) goto LAB_0001e940;\n        iVar4 = *(int *)(iVar5 + iVar9 * 4);\n      }\n    }\n    iVar9 = iVar9 + -1;\n    if (iVar9 < 0) break;\n    iVar4 = *(int *)(iVar5 + iVar9 * 4);\n  } while( true );\nLAB_0001e940:\n  iVar5 = param_1[1];\n  iVar9 = iVar5 + -1;\n  iVar7 = *(int *)(param_2 + 4) + iVar5 + *(int *)(param_3 + 4);\n  iVar3 = iVar7 + -1;\n  iVar7 = iVar7 - local_24;\n  param_1[1] = iVar5 + iVar7;\n  if ((iVar7 < 1) || (iVar9 < 0)) {\n    __n = iVar7 * 4;\n  }\n  else {\n    do {\n      while( true ) {\n        iVar5 = *(int *)((int)__ptr + iVar3 * 4);\n        iVar8 = *(int *)((int)__ptr + iVar9 * 4);\n        piVar1 = (int *)((int)__ptr + (iVar9 + iVar7) * 4);\n        if (iVar5 <= iVar8) break;\n        iVar3 = iVar3 + -1;\n        *piVar1 = iVar5;\n        iVar7 = iVar7 + -1;\n        if (iVar7 == 0) {\n          __n = 0;\n          __ptr = (void *)param_1[2];\n          goto LAB_0001e8f3;\n        }\n      }\n      iVar9 = iVar9 + -1;\n      *piVar1 = iVar8;\n    } while (iVar9 != -1);\n    __n = iVar7 << 2;\n    __ptr = (void *)param_1[2];\n  }\nLAB_0001e8f3:\n  memcpy(__ptr,(void *)((int)__ptr + local_24 * 4),__n);\n  return 0;\n}" (type_identifier "undefined4") (function_declarator "FUN_0001e810(int *param_1,int param_2,int param_3)" (identifier "FUN_0001e810") (parameter_list "(int *param_1,int param_2,int param_3)" (( "(") (parameter_declaration "int *param_1" (primitive_type "int") (pointer_declarator "*param_1" (* "*") (identifier "param_1"))) (, ",") (parameter_declaration "int param_2" (primitive_type "int") (identifier "param_2")) (, ",") (parameter_declaration "int param_3" (primitive_type "int") (identifier "param_3")) () ")"))) (compound_statement "{\n  int *piVar1;\n  int iVar2;\n  int iVar3;\n  void *__ptr;\n  int iVar4;\n  int iVar5;\n  int iVar6;\n  int iVar7;\n  size_t __n;\n  int iVar8;\n  int iVar9;\n  bool bVar10;\n  int local_24;\n  \n  iVar9 = *(int *)(param_2 + 4);\n  if (iVar9 == 0) {\n    return 0;\n  }\n  iVar3 = *(int *)(param_3 + 4);\n  if (iVar3 == 0) {\n    return 0;\n  }\n  iVar5 = param_1[1];\n  __ptr = (void *)param_1[2];\n  if (*param_1 < iVar9 + iVar3 + iVar5) {\n    iVar9 = *param_1 + iVar9 + iVar3;\n    __ptr = realloc(__ptr,iVar9 * 4);\n    if (__ptr == (void *)0x0) {\n      return 0xc;\n    }\n    *param_1 = iVar9;\n    iVar5 = param_1[1];\n    param_1[2] = (int)__ptr;\n    iVar3 = *(int *)(param_3 + 4);\n    iVar9 = *(int *)(param_2 + 4);\n  }\n  iVar6 = iVar5 + -1;\n  local_24 = iVar5 + iVar9 + iVar3;\n  iVar9 = iVar9 + -1;\n  iVar3 = iVar3 + -1;\n  iVar5 = *(int *)(param_2 + 8);\n  iVar7 = *(int *)(param_3 + 8);\n  iVar4 = *(int *)(iVar5 + iVar9 * 4);\n  iVar8 = *(int *)(iVar7 + iVar3 * 4);\n  do {\n    bVar10 = SBORROW4(iVar4,iVar8);\n    iVar2 = iVar4 - iVar8;\n    if (iVar4 == iVar8) goto LAB_0001e8ae;\n    while (bVar10 != iVar2 < 0) {\n      iVar3 = iVar3 + -1;\n      if (iVar3 < 0) goto LAB_0001e940;\n      while( true ) {\n        iVar8 = *(int *)(iVar7 + iVar3 * 4);\n        bVar10 = SBORROW4(iVar4,iVar8);\n        iVar2 = iVar4 - iVar8;\n        if (iVar2 != 0) break;\nLAB_0001e8ae:\n        if (-1 < iVar6) {\n          do {\n            iVar8 = *(int *)((int)__ptr + iVar6 * 4);\n            if (iVar8 <= iVar4) {\n              if (iVar8 == iVar4) goto LAB_0001e8d7;\n              break;\n            }\n            iVar6 = iVar6 + -1;\n          } while (iVar6 != -1);\n        }\n        local_24 = local_24 + -1;\n        *(int *)((int)__ptr + local_24 * 4) = iVar4;\nLAB_0001e8d7:\n        iVar9 = iVar9 + -1;\n        if ((iVar9 < 0) || (iVar3 = iVar3 + -1, iVar3 < 0)) goto LAB_0001e940;\n        iVar4 = *(int *)(iVar5 + iVar9 * 4);\n      }\n    }\n    iVar9 = iVar9 + -1;\n    if (iVar9 < 0) break;\n    iVar4 = *(int *)(iVar5 + iVar9 * 4);\n  } while( true );\nLAB_0001e940:\n  iVar5 = param_1[1];\n  iVar9 = iVar5 + -1;\n  iVar7 = *(int *)(param_2 + 4) + iVar5 + *(int *)(param_3 + 4);\n  iVar3 = iVar7 + -1;\n  iVar7 = iVar7 - local_24;\n  param_1[1] = iVar5 + iVar7;\n  if ((iVar7 < 1) || (iVar9 < 0)) {\n    __n = iVar7 * 4;\n  }\n  else {\n    do {\n      while( true ) {\n        iVar5 = *(int *)((int)__ptr + iVar3 * 4);\n        iVar8 = *(int *)((int)__ptr + iVar9 * 4);\n        piVar1 = (int *)((int)__ptr + (iVar9 + iVar7) * 4);\n        if (iVar5 <= iVar8) break;\n        iVar3 = iVar3 + -1;\n        *piVar1 = iVar5;\n        iVar7 = iVar7 + -1;\n        if (iVar7 == 0) {\n          __n = 0;\n          __ptr = (void *)param_1[2];\n          goto LAB_0001e8f3;\n        }\n      }\n      iVar9 = iVar9 + -1;\n      *piVar1 = iVar8;\n    } while (iVar9 != -1);\n    __n = iVar7 << 2;\n    __ptr = (void *)param_1[2];\n  }\nLAB_0001e8f3:\n  memcpy(__ptr,(void *)((int)__ptr + local_24 * 4),__n);\n  return 0;\n}" ({ "{") (declaration "int *piVar1;" (primitive_type "int") (pointer_declarator "*piVar1" (* "*") (identifier "piVar1")) (; ";")) (declaration "int iVar2;" (primitive_type "int") (identifier "iVar2") (; ";")) (declaration "int iVar3;" (primitive_type "int") (identifier "iVar3") (; ";")) (declaration "void *__ptr;" (primitive_type "void") (pointer_declarator "*__ptr" (* "*") (identifier "__ptr")) (; ";")) (declaration "int iVar4;" (primitive_type "int") (identifier "iVar4") (; ";")) (declaration "int iVar5;" (primitive_type "int") (identifier "iVar5") (; ";")) (declaration "int iVar6;" (primitive_type "int") (identifier "iVar6") (; ";")) (declaration "int iVar7;" (primitive_type "int") (identifier "iVar7") (; ";")) (declaration "size_t __n;" (primitive_type "size_t") (identifier "__n") (; ";")) (declaration "int iVar8;" (primitive_type "int") (identifier "iVar8") (; ";")) (declaration "int iVar9;" (primitive_type "int") (identifier "iVar9") (; ";")) (declaration "bool bVar10;" (primitive_type "bool") (identifier "bVar10") (; ";")) (declaration "int local_24;" (primitive_type "int") (identifier "local_24") (; ";")) (expression_statement "iVar9 = *(int *)(param_2 + 4);" (assignment_expression "iVar9 = *(int *)(param_2 + 4)" (identifier "iVar9") (= "=") (pointer_expression "*(int *)(param_2 + 4)" (* "*") (cast_expression "(int *)(param_2 + 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 4)" (( "(") (binary_expression "param_2 + 4" (identifier "param_2") (+ "+") (number_literal "4")) () ")"))))) (; ";")) (if_statement "if (iVar9 == 0) {\n    return 0;\n  }" (if "if") (parenthesized_expression "(iVar9 == 0)" (( "(") (binary_expression "iVar9 == 0" (identifier "iVar9") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n    return 0;\n  }" ({ "{") (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}"))) (expression_statement "iVar3 = *(int *)(param_3 + 4);" (assignment_expression "iVar3 = *(int *)(param_3 + 4)" (identifier "iVar3") (= "=") (pointer_expression "*(int *)(param_3 + 4)" (* "*") (cast_expression "(int *)(param_3 + 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_3 + 4)" (( "(") (binary_expression "param_3 + 4" (identifier "param_3") (+ "+") (number_literal "4")) () ")"))))) (; ";")) (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") (; ";")) (} "}"))) (expression_statement "iVar5 = param_1[1];" (assignment_expression "iVar5 = param_1[1]" (identifier "iVar5") (= "=") (subscript_expression "param_1[1]" (identifier "param_1") ([ "[") (number_literal "1") (] "]"))) (; ";")) (expression_statement "__ptr = (void *)param_1[2];" (assignment_expression "__ptr = (void *)param_1[2]" (identifier "__ptr") (= "=") (cast_expression "(void *)param_1[2]" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_1[2]" (identifier "param_1") ([ "[") (number_literal "2") (] "]")))) (; ";")) (if_statement "if (*param_1 < iVar9 + iVar3 + iVar5) {\n    iVar9 = *param_1 + iVar9 + iVar3;\n    __ptr = realloc(__ptr,iVar9 * 4);\n    if (__ptr == (void *)0x0) {\n      return 0xc;\n    }\n    *param_1 = iVar9;\n    iVar5 = param_1[1];\n    param_1[2] = (int)__ptr;\n    iVar3 = *(int *)(param_3 + 4);\n    iVar9 = *(int *)(param_2 + 4);\n  }" (if "if") (parenthesized_expression "(*param_1 < iVar9 + iVar3 + iVar5)" (( "(") (binary_expression "*param_1 < iVar9 + iVar3 + iVar5" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (< "<") (binary_expression "iVar9 + iVar3 + iVar5" (binary_expression "iVar9 + iVar3" (identifier "iVar9") (+ "+") (identifier "iVar3")) (+ "+") (identifier "iVar5"))) () ")")) (compound_statement "{\n    iVar9 = *param_1 + iVar9 + iVar3;\n    __ptr = realloc(__ptr,iVar9 * 4);\n    if (__ptr == (void *)0x0) {\n      return 0xc;\n    }\n    *param_1 = iVar9;\n    iVar5 = param_1[1];\n    param_1[2] = (int)__ptr;\n    iVar3 = *(int *)(param_3 + 4);\n    iVar9 = *(int *)(param_2 + 4);\n  }" ({ "{") (expression_statement "iVar9 = *param_1 + iVar9 + iVar3;" (assignment_expression "iVar9 = *param_1 + iVar9 + iVar3" (identifier "iVar9") (= "=") (binary_expression "*param_1 + iVar9 + iVar3" (binary_expression "*param_1 + iVar9" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (+ "+") (identifier "iVar9")) (+ "+") (identifier "iVar3"))) (; ";")) (expression_statement "__ptr = realloc(__ptr,iVar9 * 4);" (assignment_expression "__ptr = realloc(__ptr,iVar9 * 4)" (identifier "__ptr") (= "=") (call_expression "realloc(__ptr,iVar9 * 4)" (identifier "realloc") (argument_list "(__ptr,iVar9 * 4)" (( "(") (identifier "__ptr") (, ",") (binary_expression "iVar9 * 4" (identifier "iVar9") (* "*") (number_literal "4")) () ")")))) (; ";")) (if_statement "if (__ptr == (void *)0x0) {\n      return 0xc;\n    }" (if "if") (parenthesized_expression "(__ptr == (void *)0x0)" (( "(") (binary_expression "__ptr == (void *)0x0" (identifier "__ptr") (== "==") (cast_expression "(void *)0x0" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n      return 0xc;\n    }" ({ "{") (return_statement "return 0xc;" (return "return") (number_literal "0xc") (; ";")) (} "}"))) (expression_statement "*param_1 = iVar9;" (assignment_expression "*param_1 = iVar9" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (= "=") (identifier "iVar9")) (; ";")) (expression_statement "iVar5 = param_1[1];" (assignment_expression "iVar5 = param_1[1]" (identifier "iVar5") (= "=") (subscript_expression "param_1[1]" (identifier "param_1") ([ "[") (number_literal "1") (] "]"))) (; ";")) (expression_statement "param_1[2] = (int)__ptr;" (assignment_expression "param_1[2] = (int)__ptr" (subscript_expression "param_1[2]" (identifier "param_1") ([ "[") (number_literal "2") (] "]")) (= "=") (cast_expression "(int)__ptr" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "__ptr"))) (; ";")) (expression_statement "iVar3 = *(int *)(param_3 + 4);" (assignment_expression "iVar3 = *(int *)(param_3 + 4)" (identifier "iVar3") (= "=") (pointer_expression "*(int *)(param_3 + 4)" (* "*") (cast_expression "(int *)(param_3 + 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_3 + 4)" (( "(") (binary_expression "param_3 + 4" (identifier "param_3") (+ "+") (number_literal "4")) () ")"))))) (; ";")) (expression_statement "iVar9 = *(int *)(param_2 + 4);" (assignment_expression "iVar9 = *(int *)(param_2 + 4)" (identifier "iVar9") (= "=") (pointer_expression "*(int *)(param_2 + 4)" (* "*") (cast_expression "(int *)(param_2 + 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 4)" (( "(") (binary_expression "param_2 + 4" (identifier "param_2") (+ "+") (number_literal "4")) () ")"))))) (; ";")) (} "}"))) (expression_statement "iVar6 = iVar5 + -1;" (assignment_expression "iVar6 = iVar5 + -1" (identifier "iVar6") (= "=") (binary_expression "iVar5 + -1" (identifier "iVar5") (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "local_24 = iVar5 + iVar9 + iVar3;" (assignment_expression "local_24 = iVar5 + iVar9 + iVar3" (identifier "local_24") (= "=") (binary_expression "iVar5 + iVar9 + iVar3" (binary_expression "iVar5 + iVar9" (identifier "iVar5") (+ "+") (identifier "iVar9")) (+ "+") (identifier "iVar3"))) (; ";")) (expression_statement "iVar9 = iVar9 + -1;" (assignment_expression "iVar9 = iVar9 + -1" (identifier "iVar9") (= "=") (binary_expression "iVar9 + -1" (identifier "iVar9") (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "iVar3 = iVar3 + -1;" (assignment_expression "iVar3 = iVar3 + -1" (identifier "iVar3") (= "=") (binary_expression "iVar3 + -1" (identifier "iVar3") (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "iVar5 = *(int *)(param_2 + 8);" (assignment_expression "iVar5 = *(int *)(param_2 + 8)" (identifier "iVar5") (= "=") (pointer_expression "*(int *)(param_2 + 8)" (* "*") (cast_expression "(int *)(param_2 + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 8)" (( "(") (binary_expression "param_2 + 8" (identifier "param_2") (+ "+") (number_literal "8")) () ")"))))) (; ";")) (expression_statement "iVar7 = *(int *)(param_3 + 8);" (assignment_expression "iVar7 = *(int *)(param_3 + 8)" (identifier "iVar7") (= "=") (pointer_expression "*(int *)(param_3 + 8)" (* "*") (cast_expression "(int *)(param_3 + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_3 + 8)" (( "(") (binary_expression "param_3 + 8" (identifier "param_3") (+ "+") (number_literal "8")) () ")"))))) (; ";")) (expression_statement "iVar4 = *(int *)(iVar5 + iVar9 * 4);" (assignment_expression "iVar4 = *(int *)(iVar5 + iVar9 * 4)" (identifier "iVar4") (= "=") (pointer_expression "*(int *)(iVar5 + iVar9 * 4)" (* "*") (cast_expression "(int *)(iVar5 + iVar9 * 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar5 + iVar9 * 4)" (( "(") (binary_expression "iVar5 + iVar9 * 4" (identifier "iVar5") (+ "+") (binary_expression "iVar9 * 4" (identifier "iVar9") (* "*") (number_literal "4"))) () ")"))))) (; ";")) (expression_statement "iVar8 = *(int *)(iVar7 + iVar3 * 4);" (assignment_expression "iVar8 = *(int *)(iVar7 + iVar3 * 4)" (identifier "iVar8") (= "=") (pointer_expression "*(int *)(iVar7 + iVar3 * 4)" (* "*") (cast_expression "(int *)(iVar7 + iVar3 * 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar7 + iVar3 * 4)" (( "(") (binary_expression "iVar7 + iVar3 * 4" (identifier "iVar7") (+ "+") (binary_expression "iVar3 * 4" (identifier "iVar3") (* "*") (number_literal "4"))) () ")"))))) (; ";")) (do_statement "do {\n    bVar10 = SBORROW4(iVar4,iVar8);\n    iVar2 = iVar4 - iVar8;\n    if (iVar4 == iVar8) goto LAB_0001e8ae;\n    while (bVar10 != iVar2 < 0) {\n      iVar3 = iVar3 + -1;\n      if (iVar3 < 0) goto LAB_0001e940;\n      while( true ) {\n        iVar8 = *(int *)(iVar7 + iVar3 * 4);\n        bVar10 = SBORROW4(iVar4,iVar8);\n        iVar2 = iVar4 - iVar8;\n        if (iVar2 != 0) break;\nLAB_0001e8ae:\n        if (-1 < iVar6) {\n          do {\n            iVar8 = *(int *)((int)__ptr + iVar6 * 4);\n            if (iVar8 <= iVar4) {\n              if (iVar8 == iVar4) goto LAB_0001e8d7;\n              break;\n            }\n            iVar6 = iVar6 + -1;\n          } while (iVar6 != -1);\n        }\n        local_24 = local_24 + -1;\n        *(int *)((int)__ptr + local_24 * 4) = iVar4;\nLAB_0001e8d7:\n        iVar9 = iVar9 + -1;\n        if ((iVar9 < 0) || (iVar3 = iVar3 + -1, iVar3 < 0)) goto LAB_0001e940;\n        iVar4 = *(int *)(iVar5 + iVar9 * 4);\n      }\n    }\n    iVar9 = iVar9 + -1;\n    if (iVar9 < 0) break;\n    iVar4 = *(int *)(iVar5 + iVar9 * 4);\n  } while( true );" (do "do") (compound_statement "{\n    bVar10 = SBORROW4(iVar4,iVar8);\n    iVar2 = iVar4 - iVar8;\n    if (iVar4 == iVar8) goto LAB_0001e8ae;\n    while (bVar10 != iVar2 < 0) {\n      iVar3 = iVar3 + -1;\n      if (iVar3 < 0) goto LAB_0001e940;\n      while( true ) {\n        iVar8 = *(int *)(iVar7 + iVar3 * 4);\n        bVar10 = SBORROW4(iVar4,iVar8);\n        iVar2 = iVar4 - iVar8;\n        if (iVar2 != 0) break;\nLAB_0001e8ae:\n        if (-1 < iVar6) {\n          do {\n            iVar8 = *(int *)((int)__ptr + iVar6 * 4);\n            if (iVar8 <= iVar4) {\n              if (iVar8 == iVar4) goto LAB_0001e8d7;\n              break;\n            }\n            iVar6 = iVar6 + -1;\n          } while (iVar6 != -1);\n        }\n        local_24 = local_24 + -1;\n        *(int *)((int)__ptr + local_24 * 4) = iVar4;\nLAB_0001e8d7:\n        iVar9 = iVar9 + -1;\n        if ((iVar9 < 0) || (iVar3 = iVar3 + -1, iVar3 < 0)) goto LAB_0001e940;\n        iVar4 = *(int *)(iVar5 + iVar9 * 4);\n      }\n    }\n    iVar9 = iVar9 + -1;\n    if (iVar9 < 0) break;\n    iVar4 = *(int *)(iVar5 + iVar9 * 4);\n  }" ({ "{") (expression_statement "bVar10 = SBORROW4(iVar4,iVar8);" (assignment_expression "bVar10 = SBORROW4(iVar4,iVar8)" (identifier "bVar10") (= "=") (call_expression "SBORROW4(iVar4,iVar8)" (identifier "SBORROW4") (argument_list "(iVar4,iVar8)" (( "(") (identifier "iVar4") (, ",") (identifier "iVar8") () ")")))) (; ";")) (expression_statement "iVar2 = iVar4 - iVar8;" (assignment_expression "iVar2 = iVar4 - iVar8" (identifier "iVar2") (= "=") (binary_expression "iVar4 - iVar8" (identifier "iVar4") (- "-") (identifier "iVar8"))) (; ";")) (if_statement "if (iVar4 == iVar8) goto LAB_0001e8ae;" (if "if") (parenthesized_expression "(iVar4 == iVar8)" (( "(") (binary_expression "iVar4 == iVar8" (identifier "iVar4") (== "==") (identifier "iVar8")) () ")")) (goto_statement "goto LAB_0001e8ae;" (goto "goto") (statement_identifier "LAB_0001e8ae") (; ";"))) (while_statement "while (bVar10 != iVar2 < 0) {\n      iVar3 = iVar3 + -1;\n      if (iVar3 < 0) goto LAB_0001e940;\n      while( true ) {\n        iVar8 = *(int *)(iVar7 + iVar3 * 4);\n        bVar10 = SBORROW4(iVar4,iVar8);\n        iVar2 = iVar4 - iVar8;\n        if (iVar2 != 0) break;\nLAB_0001e8ae:\n        if (-1 < iVar6) {\n          do {\n            iVar8 = *(int *)((int)__ptr + iVar6 * 4);\n            if (iVar8 <= iVar4) {\n              if (iVar8 == iVar4) goto LAB_0001e8d7;\n              break;\n            }\n            iVar6 = iVar6 + -1;\n          } while (iVar6 != -1);\n        }\n        local_24 = local_24 + -1;\n        *(int *)((int)__ptr + local_24 * 4) = iVar4;\nLAB_0001e8d7:\n        iVar9 = iVar9 + -1;\n        if ((iVar9 < 0) || (iVar3 = iVar3 + -1, iVar3 < 0)) goto LAB_0001e940;\n        iVar4 = *(int *)(iVar5 + iVar9 * 4);\n      }\n    }" (while "while") (parenthesized_expression "(bVar10 != iVar2 < 0)" (( "(") (binary_expression "bVar10 != iVar2 < 0" (identifier "bVar10") (!= "!=") (binary_expression "iVar2 < 0" (identifier "iVar2") (< "<") (number_literal "0"))) () ")")) (compound_statement "{\n      iVar3 = iVar3 + -1;\n      if (iVar3 < 0) goto LAB_0001e940;\n      while( true ) {\n        iVar8 = *(int *)(iVar7 + iVar3 * 4);\n        bVar10 = SBORROW4(iVar4,iVar8);\n        iVar2 = iVar4 - iVar8;\n        if (iVar2 != 0) break;\nLAB_0001e8ae:\n        if (-1 < iVar6) {\n          do {\n            iVar8 = *(int *)((int)__ptr + iVar6 * 4);\n            if (iVar8 <= iVar4) {\n              if (iVar8 == iVar4) goto LAB_0001e8d7;\n              break;\n            }\n            iVar6 = iVar6 + -1;\n          } while (iVar6 != -1);\n        }\n        local_24 = local_24 + -1;\n        *(int *)((int)__ptr + local_24 * 4) = iVar4;\nLAB_0001e8d7:\n        iVar9 = iVar9 + -1;\n        if ((iVar9 < 0) || (iVar3 = iVar3 + -1, iVar3 < 0)) goto LAB_0001e940;\n        iVar4 = *(int *)(iVar5 + iVar9 * 4);\n      }\n    }" ({ "{") (expression_statement "iVar3 = iVar3 + -1;" (assignment_expression "iVar3 = iVar3 + -1" (identifier "iVar3") (= "=") (binary_expression "iVar3 + -1" (identifier "iVar3") (+ "+") (number_literal "-1"))) (; ";")) (if_statement "if (iVar3 < 0) goto LAB_0001e940;" (if "if") (parenthesized_expression "(iVar3 < 0)" (( "(") (binary_expression "iVar3 < 0" (identifier "iVar3") (< "<") (number_literal "0")) () ")")) (goto_statement "goto LAB_0001e940;" (goto "goto") (statement_identifier "LAB_0001e940") (; ";"))) (while_statement "while( true ) {\n        iVar8 = *(int *)(iVar7 + iVar3 * 4);\n        bVar10 = SBORROW4(iVar4,iVar8);\n        iVar2 = iVar4 - iVar8;\n        if (iVar2 != 0) break;\nLAB_0001e8ae:\n        if (-1 < iVar6) {\n          do {\n            iVar8 = *(int *)((int)__ptr + iVar6 * 4);\n            if (iVar8 <= iVar4) {\n              if (iVar8 == iVar4) goto LAB_0001e8d7;\n              break;\n            }\n            iVar6 = iVar6 + -1;\n          } while (iVar6 != -1);\n        }\n        local_24 = local_24 + -1;\n        *(int *)((int)__ptr + local_24 * 4) = iVar4;\nLAB_0001e8d7:\n        iVar9 = iVar9 + -1;\n        if ((iVar9 < 0) || (iVar3 = iVar3 + -1, iVar3 < 0)) goto LAB_0001e940;\n        iVar4 = *(int *)(iVar5 + iVar9 * 4);\n      }" (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (compound_statement "{\n        iVar8 = *(int *)(iVar7 + iVar3 * 4);\n        bVar10 = SBORROW4(iVar4,iVar8);\n        iVar2 = iVar4 - iVar8;\n        if (iVar2 != 0) break;\nLAB_0001e8ae:\n        if (-1 < iVar6) {\n          do {\n            iVar8 = *(int *)((int)__ptr + iVar6 * 4);\n            if (iVar8 <= iVar4) {\n              if (iVar8 == iVar4) goto LAB_0001e8d7;\n              break;\n            }\n            iVar6 = iVar6 + -1;\n          } while (iVar6 != -1);\n        }\n        local_24 = local_24 + -1;\n        *(int *)((int)__ptr + local_24 * 4) = iVar4;\nLAB_0001e8d7:\n        iVar9 = iVar9 + -1;\n        if ((iVar9 < 0) || (iVar3 = iVar3 + -1, iVar3 < 0)) goto LAB_0001e940;\n        iVar4 = *(int *)(iVar5 + iVar9 * 4);\n      }" ({ "{") (expression_statement "iVar8 = *(int *)(iVar7 + iVar3 * 4);" (assignment_expression "iVar8 = *(int *)(iVar7 + iVar3 * 4)" (identifier "iVar8") (= "=") (pointer_expression "*(int *)(iVar7 + iVar3 * 4)" (* "*") (cast_expression "(int *)(iVar7 + iVar3 * 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar7 + iVar3 * 4)" (( "(") (binary_expression "iVar7 + iVar3 * 4" (identifier "iVar7") (+ "+") (binary_expression "iVar3 * 4" (identifier "iVar3") (* "*") (number_literal "4"))) () ")"))))) (; ";")) (expression_statement "bVar10 = SBORROW4(iVar4,iVar8);" (assignment_expression "bVar10 = SBORROW4(iVar4,iVar8)" (identifier "bVar10") (= "=") (call_expression "SBORROW4(iVar4,iVar8)" (identifier "SBORROW4") (argument_list "(iVar4,iVar8)" (( "(") (identifier "iVar4") (, ",") (identifier "iVar8") () ")")))) (; ";")) (expression_statement "iVar2 = iVar4 - iVar8;" (assignment_expression "iVar2 = iVar4 - iVar8" (identifier "iVar2") (= "=") (binary_expression "iVar4 - iVar8" (identifier "iVar4") (- "-") (identifier "iVar8"))) (; ";")) (if_statement "if (iVar2 != 0) break;" (if "if") (parenthesized_expression "(iVar2 != 0)" (( "(") (binary_expression "iVar2 != 0" (identifier "iVar2") (!= "!=") (number_literal "0")) () ")")) (break_statement "break;" (break "break") (; ";"))) (labeled_statement "LAB_0001e8ae:\n        if (-1 < iVar6) {\n          do {\n            iVar8 = *(int *)((int)__ptr + iVar6 * 4);\n            if (iVar8 <= iVar4) {\n              if (iVar8 == iVar4) goto LAB_0001e8d7;\n              break;\n            }\n            iVar6 = iVar6 + -1;\n          } while (iVar6 != -1);\n        }" (statement_identifier "LAB_0001e8ae") (: ":") (if_statement "if (-1 < iVar6) {\n          do {\n            iVar8 = *(int *)((int)__ptr + iVar6 * 4);\n            if (iVar8 <= iVar4) {\n              if (iVar8 == iVar4) goto LAB_0001e8d7;\n              break;\n            }\n            iVar6 = iVar6 + -1;\n          } while (iVar6 != -1);\n        }" (if "if") (parenthesized_expression "(-1 < iVar6)" (( "(") (binary_expression "-1 < iVar6" (number_literal "-1") (< "<") (identifier "iVar6")) () ")")) (compound_statement "{\n          do {\n            iVar8 = *(int *)((int)__ptr + iVar6 * 4);\n            if (iVar8 <= iVar4) {\n              if (iVar8 == iVar4) goto LAB_0001e8d7;\n              break;\n            }\n            iVar6 = iVar6 + -1;\n          } while (iVar6 != -1);\n        }" ({ "{") (do_statement "do {\n            iVar8 = *(int *)((int)__ptr + iVar6 * 4);\n            if (iVar8 <= iVar4) {\n              if (iVar8 == iVar4) goto LAB_0001e8d7;\n              break;\n            }\n            iVar6 = iVar6 + -1;\n          } while (iVar6 != -1);" (do "do") (compound_statement "{\n            iVar8 = *(int *)((int)__ptr + iVar6 * 4);\n            if (iVar8 <= iVar4) {\n              if (iVar8 == iVar4) goto LAB_0001e8d7;\n              break;\n            }\n            iVar6 = iVar6 + -1;\n          }" ({ "{") (expression_statement "iVar8 = *(int *)((int)__ptr + iVar6 * 4);" (assignment_expression "iVar8 = *(int *)((int)__ptr + iVar6 * 4)" (identifier "iVar8") (= "=") (pointer_expression "*(int *)((int)__ptr + iVar6 * 4)" (* "*") (cast_expression "(int *)((int)__ptr + iVar6 * 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)__ptr + iVar6 * 4)" (( "(") (binary_expression "(int)__ptr + iVar6 * 4" (cast_expression "(int)__ptr" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "__ptr")) (+ "+") (binary_expression "iVar6 * 4" (identifier "iVar6") (* "*") (number_literal "4"))) () ")"))))) (; ";")) (if_statement "if (iVar8 <= iVar4) {\n              if (iVar8 == iVar4) goto LAB_0001e8d7;\n              break;\n            }" (if "if") (parenthesized_expression "(iVar8 <= iVar4)" (( "(") (binary_expression "iVar8 <= iVar4" (identifier "iVar8") (<= "<=") (identifier "iVar4")) () ")")) (compound_statement "{\n              if (iVar8 == iVar4) goto LAB_0001e8d7;\n              break;\n            }" ({ "{") (if_statement "if (iVar8 == iVar4) goto LAB_0001e8d7;" (if "if") (parenthesized_expression "(iVar8 == iVar4)" (( "(") (binary_expression "iVar8 == iVar4" (identifier "iVar8") (== "==") (identifier "iVar4")) () ")")) (goto_statement "goto LAB_0001e8d7;" (goto "goto") (statement_identifier "LAB_0001e8d7") (; ";"))) (break_statement "break;" (break "break") (; ";")) (} "}"))) (expression_statement "iVar6 = iVar6 + -1;" (assignment_expression "iVar6 = iVar6 + -1" (identifier "iVar6") (= "=") (binary_expression "iVar6 + -1" (identifier "iVar6") (+ "+") (number_literal "-1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(iVar6 != -1)" (( "(") (binary_expression "iVar6 != -1" (identifier "iVar6") (!= "!=") (number_literal "-1")) () ")")) (; ";")) (} "}")))) (expression_statement "local_24 = local_24 + -1;" (assignment_expression "local_24 = local_24 + -1" (identifier "local_24") (= "=") (binary_expression "local_24 + -1" (identifier "local_24") (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "*(int *)((int)__ptr + local_24 * 4) = iVar4;" (assignment_expression "*(int *)((int)__ptr + local_24 * 4) = iVar4" (pointer_expression "*(int *)((int)__ptr + local_24 * 4)" (* "*") (cast_expression "(int *)((int)__ptr + local_24 * 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)__ptr + local_24 * 4)" (( "(") (binary_expression "(int)__ptr + local_24 * 4" (cast_expression "(int)__ptr" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "__ptr")) (+ "+") (binary_expression "local_24 * 4" (identifier "local_24") (* "*") (number_literal "4"))) () ")")))) (= "=") (identifier "iVar4")) (; ";")) (labeled_statement "LAB_0001e8d7:\n        iVar9 = iVar9 + -1;" (statement_identifier "LAB_0001e8d7") (: ":") (expression_statement "iVar9 = iVar9 + -1;" (assignment_expression "iVar9 = iVar9 + -1" (identifier "iVar9") (= "=") (binary_expression "iVar9 + -1" (identifier "iVar9") (+ "+") (number_literal "-1"))) (; ";"))) (if_statement "if ((iVar9 < 0) || (iVar3 = iVar3 + -1, iVar3 < 0)) goto LAB_0001e940;" (if "if") (parenthesized_expression "((iVar9 < 0) || (iVar3 = iVar3 + -1, iVar3 < 0))" (( "(") (binary_expression "(iVar9 < 0) || (iVar3 = iVar3 + -1, iVar3 < 0)" (parenthesized_expression "(iVar9 < 0)" (( "(") (binary_expression "iVar9 < 0" (identifier "iVar9") (< "<") (number_literal "0")) () ")")) (|| "||") (parenthesized_expression "(iVar3 = iVar3 + -1, iVar3 < 0)" (( "(") (comma_expression "iVar3 = iVar3 + -1, iVar3 < 0" (assignment_expression "iVar3 = iVar3 + -1" (identifier "iVar3") (= "=") (binary_expression "iVar3 + -1" (identifier "iVar3") (+ "+") (number_literal "-1"))) (, ",") (binary_expression "iVar3 < 0" (identifier "iVar3") (< "<") (number_literal "0"))) () ")"))) () ")")) (goto_statement "goto LAB_0001e940;" (goto "goto") (statement_identifier "LAB_0001e940") (; ";"))) (expression_statement "iVar4 = *(int *)(iVar5 + iVar9 * 4);" (assignment_expression "iVar4 = *(int *)(iVar5 + iVar9 * 4)" (identifier "iVar4") (= "=") (pointer_expression "*(int *)(iVar5 + iVar9 * 4)" (* "*") (cast_expression "(int *)(iVar5 + iVar9 * 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar5 + iVar9 * 4)" (( "(") (binary_expression "iVar5 + iVar9 * 4" (identifier "iVar5") (+ "+") (binary_expression "iVar9 * 4" (identifier "iVar9") (* "*") (number_literal "4"))) () ")"))))) (; ";")) (} "}"))) (} "}"))) (expression_statement "iVar9 = iVar9 + -1;" (assignment_expression "iVar9 = iVar9 + -1" (identifier "iVar9") (= "=") (binary_expression "iVar9 + -1" (identifier "iVar9") (+ "+") (number_literal "-1"))) (; ";")) (if_statement "if (iVar9 < 0) break;" (if "if") (parenthesized_expression "(iVar9 < 0)" (( "(") (binary_expression "iVar9 < 0" (identifier "iVar9") (< "<") (number_literal "0")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "iVar4 = *(int *)(iVar5 + iVar9 * 4);" (assignment_expression "iVar4 = *(int *)(iVar5 + iVar9 * 4)" (identifier "iVar4") (= "=") (pointer_expression "*(int *)(iVar5 + iVar9 * 4)" (* "*") (cast_expression "(int *)(iVar5 + iVar9 * 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar5 + iVar9 * 4)" (( "(") (binary_expression "iVar5 + iVar9 * 4" (identifier "iVar5") (+ "+") (binary_expression "iVar9 * 4" (identifier "iVar9") (* "*") (number_literal "4"))) () ")"))))) (; ";")) (} "}")) (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (; ";")) (labeled_statement "LAB_0001e940:\n  iVar5 = param_1[1];" (statement_identifier "LAB_0001e940") (: ":") (expression_statement "iVar5 = param_1[1];" (assignment_expression "iVar5 = param_1[1]" (identifier "iVar5") (= "=") (subscript_expression "param_1[1]" (identifier "param_1") ([ "[") (number_literal "1") (] "]"))) (; ";"))) (expression_statement "iVar9 = iVar5 + -1;" (assignment_expression "iVar9 = iVar5 + -1" (identifier "iVar9") (= "=") (binary_expression "iVar5 + -1" (identifier "iVar5") (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "iVar7 = *(int *)(param_2 + 4) + iVar5 + *(int *)(param_3 + 4);" (assignment_expression "iVar7 = *(int *)(param_2 + 4) + iVar5 + *(int *)(param_3 + 4)" (identifier "iVar7") (= "=") (binary_expression "*(int *)(param_2 + 4) + iVar5 + *(int *)(param_3 + 4)" (binary_expression "*(int *)(param_2 + 4) + iVar5" (pointer_expression "*(int *)(param_2 + 4)" (* "*") (cast_expression "(int *)(param_2 + 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 4)" (( "(") (binary_expression "param_2 + 4" (identifier "param_2") (+ "+") (number_literal "4")) () ")")))) (+ "+") (identifier "iVar5")) (+ "+") (pointer_expression "*(int *)(param_3 + 4)" (* "*") (cast_expression "(int *)(param_3 + 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_3 + 4)" (( "(") (binary_expression "param_3 + 4" (identifier "param_3") (+ "+") (number_literal "4")) () ")")))))) (; ";")) (expression_statement "iVar3 = iVar7 + -1;" (assignment_expression "iVar3 = iVar7 + -1" (identifier "iVar3") (= "=") (binary_expression "iVar7 + -1" (identifier "iVar7") (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "iVar7 = iVar7 - local_24;" (assignment_expression "iVar7 = iVar7 - local_24" (identifier "iVar7") (= "=") (binary_expression "iVar7 - local_24" (identifier "iVar7") (- "-") (identifier "local_24"))) (; ";")) (expression_statement "param_1[1] = iVar5 + iVar7;" (assignment_expression "param_1[1] = iVar5 + iVar7" (subscript_expression "param_1[1]" (identifier "param_1") ([ "[") (number_literal "1") (] "]")) (= "=") (binary_expression "iVar5 + iVar7" (identifier "iVar5") (+ "+") (identifier "iVar7"))) (; ";")) (if_statement "if ((iVar7 < 1) || (iVar9 < 0)) {\n    __n = iVar7 * 4;\n  }\n  else {\n    do {\n      while( true ) {\n        iVar5 = *(int *)((int)__ptr + iVar3 * 4);\n        iVar8 = *(int *)((int)__ptr + iVar9 * 4);\n        piVar1 = (int *)((int)__ptr + (iVar9 + iVar7) * 4);\n        if (iVar5 <= iVar8) break;\n        iVar3 = iVar3 + -1;\n        *piVar1 = iVar5;\n        iVar7 = iVar7 + -1;\n        if (iVar7 == 0) {\n          __n = 0;\n          __ptr = (void *)param_1[2];\n          goto LAB_0001e8f3;\n        }\n      }\n      iVar9 = iVar9 + -1;\n      *piVar1 = iVar8;\n    } while (iVar9 != -1);\n    __n = iVar7 << 2;\n    __ptr = (void *)param_1[2];\n  }" (if "if") (parenthesized_expression "((iVar7 < 1) || (iVar9 < 0))" (( "(") (binary_expression "(iVar7 < 1) || (iVar9 < 0)" (parenthesized_expression "(iVar7 < 1)" (( "(") (binary_expression "iVar7 < 1" (identifier "iVar7") (< "<") (number_literal "1")) () ")")) (|| "||") (parenthesized_expression "(iVar9 < 0)" (( "(") (binary_expression "iVar9 < 0" (identifier "iVar9") (< "<") (number_literal "0")) () ")"))) () ")")) (compound_statement "{\n    __n = iVar7 * 4;\n  }" ({ "{") (expression_statement "__n = iVar7 * 4;" (assignment_expression "__n = iVar7 * 4" (identifier "__n") (= "=") (binary_expression "iVar7 * 4" (identifier "iVar7") (* "*") (number_literal "4"))) (; ";")) (} "}")) (else_clause "else {\n    do {\n      while( true ) {\n        iVar5 = *(int *)((int)__ptr + iVar3 * 4);\n        iVar8 = *(int *)((int)__ptr + iVar9 * 4);\n        piVar1 = (int *)((int)__ptr + (iVar9 + iVar7) * 4);\n        if (iVar5 <= iVar8) break;\n        iVar3 = iVar3 + -1;\n        *piVar1 = iVar5;\n        iVar7 = iVar7 + -1;\n        if (iVar7 == 0) {\n          __n = 0;\n          __ptr = (void *)param_1[2];\n          goto LAB_0001e8f3;\n        }\n      }\n      iVar9 = iVar9 + -1;\n      *piVar1 = iVar8;\n    } while (iVar9 != -1);\n    __n = iVar7 << 2;\n    __ptr = (void *)param_1[2];\n  }" (else "else") (compound_statement "{\n    do {\n      while( true ) {\n        iVar5 = *(int *)((int)__ptr + iVar3 * 4);\n        iVar8 = *(int *)((int)__ptr + iVar9 * 4);\n        piVar1 = (int *)((int)__ptr + (iVar9 + iVar7) * 4);\n        if (iVar5 <= iVar8) break;\n        iVar3 = iVar3 + -1;\n        *piVar1 = iVar5;\n        iVar7 = iVar7 + -1;\n        if (iVar7 == 0) {\n          __n = 0;\n          __ptr = (void *)param_1[2];\n          goto LAB_0001e8f3;\n        }\n      }\n      iVar9 = iVar9 + -1;\n      *piVar1 = iVar8;\n    } while (iVar9 != -1);\n    __n = iVar7 << 2;\n    __ptr = (void *)param_1[2];\n  }" ({ "{") (do_statement "do {\n      while( true ) {\n        iVar5 = *(int *)((int)__ptr + iVar3 * 4);\n        iVar8 = *(int *)((int)__ptr + iVar9 * 4);\n        piVar1 = (int *)((int)__ptr + (iVar9 + iVar7) * 4);\n        if (iVar5 <= iVar8) break;\n        iVar3 = iVar3 + -1;\n        *piVar1 = iVar5;\n        iVar7 = iVar7 + -1;\n        if (iVar7 == 0) {\n          __n = 0;\n          __ptr = (void *)param_1[2];\n          goto LAB_0001e8f3;\n        }\n      }\n      iVar9 = iVar9 + -1;\n      *piVar1 = iVar8;\n    } while (iVar9 != -1);" (do "do") (compound_statement "{\n      while( true ) {\n        iVar5 = *(int *)((int)__ptr + iVar3 * 4);\n        iVar8 = *(int *)((int)__ptr + iVar9 * 4);\n        piVar1 = (int *)((int)__ptr + (iVar9 + iVar7) * 4);\n        if (iVar5 <= iVar8) break;\n        iVar3 = iVar3 + -1;\n        *piVar1 = iVar5;\n        iVar7 = iVar7 + -1;\n        if (iVar7 == 0) {\n          __n = 0;\n          __ptr = (void *)param_1[2];\n          goto LAB_0001e8f3;\n        }\n      }\n      iVar9 = iVar9 + -1;\n      *piVar1 = iVar8;\n    }" ({ "{") (while_statement "while( true ) {\n        iVar5 = *(int *)((int)__ptr + iVar3 * 4);\n        iVar8 = *(int *)((int)__ptr + iVar9 * 4);\n        piVar1 = (int *)((int)__ptr + (iVar9 + iVar7) * 4);\n        if (iVar5 <= iVar8) break;\n        iVar3 = iVar3 + -1;\n        *piVar1 = iVar5;\n        iVar7 = iVar7 + -1;\n        if (iVar7 == 0) {\n          __n = 0;\n          __ptr = (void *)param_1[2];\n          goto LAB_0001e8f3;\n        }\n      }" (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (compound_statement "{\n        iVar5 = *(int *)((int)__ptr + iVar3 * 4);\n        iVar8 = *(int *)((int)__ptr + iVar9 * 4);\n        piVar1 = (int *)((int)__ptr + (iVar9 + iVar7) * 4);\n        if (iVar5 <= iVar8) break;\n        iVar3 = iVar3 + -1;\n        *piVar1 = iVar5;\n        iVar7 = iVar7 + -1;\n        if (iVar7 == 0) {\n          __n = 0;\n          __ptr = (void *)param_1[2];\n          goto LAB_0001e8f3;\n        }\n      }" ({ "{") (expression_statement "iVar5 = *(int *)((int)__ptr + iVar3 * 4);" (assignment_expression "iVar5 = *(int *)((int)__ptr + iVar3 * 4)" (identifier "iVar5") (= "=") (pointer_expression "*(int *)((int)__ptr + iVar3 * 4)" (* "*") (cast_expression "(int *)((int)__ptr + iVar3 * 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)__ptr + iVar3 * 4)" (( "(") (binary_expression "(int)__ptr + iVar3 * 4" (cast_expression "(int)__ptr" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "__ptr")) (+ "+") (binary_expression "iVar3 * 4" (identifier "iVar3") (* "*") (number_literal "4"))) () ")"))))) (; ";")) (expression_statement "iVar8 = *(int *)((int)__ptr + iVar9 * 4);" (assignment_expression "iVar8 = *(int *)((int)__ptr + iVar9 * 4)" (identifier "iVar8") (= "=") (pointer_expression "*(int *)((int)__ptr + iVar9 * 4)" (* "*") (cast_expression "(int *)((int)__ptr + iVar9 * 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)__ptr + iVar9 * 4)" (( "(") (binary_expression "(int)__ptr + iVar9 * 4" (cast_expression "(int)__ptr" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "__ptr")) (+ "+") (binary_expression "iVar9 * 4" (identifier "iVar9") (* "*") (number_literal "4"))) () ")"))))) (; ";")) (expression_statement "piVar1 = (int *)((int)__ptr + (iVar9 + iVar7) * 4);" (assignment_expression "piVar1 = (int *)((int)__ptr + (iVar9 + iVar7) * 4)" (identifier "piVar1") (= "=") (cast_expression "(int *)((int)__ptr + (iVar9 + iVar7) * 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)__ptr + (iVar9 + iVar7) * 4)" (( "(") (binary_expression "(int)__ptr + (iVar9 + iVar7) * 4" (cast_expression "(int)__ptr" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "__ptr")) (+ "+") (binary_expression "(iVar9 + iVar7) * 4" (parenthesized_expression "(iVar9 + iVar7)" (( "(") (binary_expression "iVar9 + iVar7" (identifier "iVar9") (+ "+") (identifier "iVar7")) () ")")) (* "*") (number_literal "4"))) () ")")))) (; ";")) (if_statement "if (iVar5 <= iVar8) break;" (if "if") (parenthesized_expression "(iVar5 <= iVar8)" (( "(") (binary_expression "iVar5 <= iVar8" (identifier "iVar5") (<= "<=") (identifier "iVar8")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "iVar3 = iVar3 + -1;" (assignment_expression "iVar3 = iVar3 + -1" (identifier "iVar3") (= "=") (binary_expression "iVar3 + -1" (identifier "iVar3") (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "*piVar1 = iVar5;" (assignment_expression "*piVar1 = iVar5" (pointer_expression "*piVar1" (* "*") (identifier "piVar1")) (= "=") (identifier "iVar5")) (; ";")) (expression_statement "iVar7 = iVar7 + -1;" (assignment_expression "iVar7 = iVar7 + -1" (identifier "iVar7") (= "=") (binary_expression "iVar7 + -1" (identifier "iVar7") (+ "+") (number_literal "-1"))) (; ";")) (if_statement "if (iVar7 == 0) {\n          __n = 0;\n          __ptr = (void *)param_1[2];\n          goto LAB_0001e8f3;\n        }" (if "if") (parenthesized_expression "(iVar7 == 0)" (( "(") (binary_expression "iVar7 == 0" (identifier "iVar7") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n          __n = 0;\n          __ptr = (void *)param_1[2];\n          goto LAB_0001e8f3;\n        }" ({ "{") (expression_statement "__n = 0;" (assignment_expression "__n = 0" (identifier "__n") (= "=") (number_literal "0")) (; ";")) (expression_statement "__ptr = (void *)param_1[2];" (assignment_expression "__ptr = (void *)param_1[2]" (identifier "__ptr") (= "=") (cast_expression "(void *)param_1[2]" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_1[2]" (identifier "param_1") ([ "[") (number_literal "2") (] "]")))) (; ";")) (goto_statement "goto LAB_0001e8f3;" (goto "goto") (statement_identifier "LAB_0001e8f3") (; ";")) (} "}"))) (} "}"))) (expression_statement "iVar9 = iVar9 + -1;" (assignment_expression "iVar9 = iVar9 + -1" (identifier "iVar9") (= "=") (binary_expression "iVar9 + -1" (identifier "iVar9") (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "*piVar1 = iVar8;" (assignment_expression "*piVar1 = iVar8" (pointer_expression "*piVar1" (* "*") (identifier "piVar1")) (= "=") (identifier "iVar8")) (; ";")) (} "}")) (while "while") (parenthesized_expression "(iVar9 != -1)" (( "(") (binary_expression "iVar9 != -1" (identifier "iVar9") (!= "!=") (number_literal "-1")) () ")")) (; ";")) (expression_statement "__n = iVar7 << 2;" (assignment_expression "__n = iVar7 << 2" (identifier "__n") (= "=") (binary_expression "iVar7 << 2" (identifier "iVar7") (<< "<<") (number_literal "2"))) (; ";")) (expression_statement "__ptr = (void *)param_1[2];" (assignment_expression "__ptr = (void *)param_1[2]" (identifier "__ptr") (= "=") (cast_expression "(void *)param_1[2]" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_1[2]" (identifier "param_1") ([ "[") (number_literal "2") (] "]")))) (; ";")) (} "}")))) (labeled_statement "LAB_0001e8f3:\n  memcpy(__ptr,(void *)((int)__ptr + local_24 * 4),__n);" (statement_identifier "LAB_0001e8f3") (: ":") (expression_statement "memcpy(__ptr,(void *)((int)__ptr + local_24 * 4),__n);" (call_expression "memcpy(__ptr,(void *)((int)__ptr + local_24 * 4),__n)" (identifier "memcpy") (argument_list "(__ptr,(void *)((int)__ptr + local_24 * 4),__n)" (( "(") (identifier "__ptr") (, ",") (cast_expression "(void *)((int)__ptr + local_24 * 4)" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)__ptr + local_24 * 4)" (( "(") (binary_expression "(int)__ptr + local_24 * 4" (cast_expression "(int)__ptr" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "__ptr")) (+ "+") (binary_expression "local_24 * 4" (identifier "local_24") (* "*") (number_literal "4"))) () ")"))) (, ",") (identifier "__n") () ")"))) (; ";"))) (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}")))

/* WARNING: Function: __x86.get_pc_thunk.ax replaced with injection: get_pc_thunk_ax */
/* WARNING: Unknown calling convention */

type_1 function_1(type_2 *dest,type_2 *src1,type_2 *src2)

{
  int *piVar1;
  int *piVar2;
  type_3 *pIVar3;
  type_3 *pIVar4;
  int var_9;
  int var_2;
  type_3 *var_5;
  int var_3;
  int var_10;
  int var_7;
  size_t __n;
  int var_1;
  bool var_8;
  int var_11;
  
  var_1 = src1->nelem;
  if (var_1 == 0) {
    return _REG_NOERROR;
  }
  var_2 = src2->nelem;
  if (var_2 == 0) {
    return _REG_NOERROR;
  }
  var_3 = dest->nelem;
  var_5 = dest->elems;
  if (dest->alloc < var_1 + var_2 + var_3) {
    var_1 = dest->alloc + var_1 + var_2;
    var_5 = (type_3 *)var_4(var_5,var_1 * 4);
    if (var_5 == (type_3 *)0x0) {
      return _REG_ESPACE;
    }
    dest->alloc = var_1;
    var_3 = dest->nelem;
    dest->elems = var_5;
    var_2 = src2->nelem;
    var_1 = src1->nelem;
  }
  var_10 = var_3 + -1;
  var_11 = var_3 + var_1 + var_2;
  var_1 = var_1 + -1;
  var_2 = var_2 + -1;
  pIVar3 = src1->elems;
  pIVar4 = src2->elems;
  var_7 = pIVar3[var_1];
  var_3 = pIVar4[var_2];
  do {
    var_8 = var_6(var_7,var_3);
    var_9 = var_7 - var_3;
    if (var_7 == var_3) goto LAB_0001e8ae;
    while (var_8 != var_9 < 0) {
      var_2 = var_2 + -1;
      if (var_2 < 0) goto LAB_0001e940;
      while( true ) {
        var_3 = pIVar4[var_2];
        var_8 = var_6(var_7,var_3);
        var_9 = var_7 - var_3;
        if (var_9 != 0) break;
LAB_0001e8ae:
        if (-1 < var_10) {
          do {
            if (var_5[var_10] <= var_7) {
              if (var_5[var_10] == var_7) goto LAB_0001e8d7;
              break;
            }
            var_10 = var_10 + -1;
          } while (var_10 != -1);
        }
        var_11 = var_11 + -1;
        var_5[var_11] = var_7;
LAB_0001e8d7:
        var_1 = var_1 + -1;
        if ((var_1 < 0) || (var_2 = var_2 + -1, var_2 < 0)) goto LAB_0001e940;
        var_7 = pIVar3[var_1];
      }
    }
    var_1 = var_1 + -1;
    if (var_1 < 0) break;
    var_7 = pIVar3[var_1];
  } while( true );
LAB_0001e940:
  var_3 = dest->nelem;
  var_1 = var_3 + -1;
  var_7 = src1->nelem + var_3 + src2->nelem;
  var_2 = var_7 + -1;
  var_7 = var_7 - var_11;
  dest->nelem = var_3 + var_7;
  if ((var_7 < 1) || (var_1 < 0)) {
    __n = var_7 * 4;
  }
  else {
    do {
      while( true ) {
        piVar1 = var_5 + var_2;
        piVar2 = var_5 + var_1;
        var_3 = var_1 + var_7;
        if (*piVar1 <= *piVar2) break;
        var_2 = var_2 + -1;
        var_5[var_3] = *piVar1;
        var_7 = var_7 + -1;
        if (var_7 == 0) {
          __n = 0;
          var_5 = dest->elems;
          goto LAB_0001e8f3;
        }
      }
      var_1 = var_1 + -1;
      var_5[var_3] = *piVar2;
    } while (var_1 != -1);
    __n = var_7 << 2;
    var_5 = dest->elems;
  }
LAB_0001e8f3:
  var_12(var_5,var_5 + var_11,__n);
  return _REG_NOERROR;
}


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

/* WARNING: Function: __i686.get_pc_thunk.ax replaced with injection: get_pc_thunk_ax */

undefined4 MASKED(int *param_1,int param_2,int param_3)

{
  int *piVar1;
  int iVar2;
  int iVar3;
  void *__ptr;
  int iVar4;
  int iVar5;
  int iVar6;
  int iVar7;
  size_t __n;
  int iVar8;
  int iVar9;
  bool bVar10;
  int local_24;
  
  iVar9 = *(int *)(param_2 + 4);
  if (iVar9 == 0) {
    return 0;
  }
  iVar3 = *(int *)(param_3 + 4);
  if (iVar3 == 0) {
    return 0;
  }
  iVar5 = param_1[1];
  __ptr = (void *)param_1[2];
  if (*param_1 < iVar9 + iVar3 + iVar5) {
    iVar9 = *param_1 + iVar9 + iVar3;
    __ptr = realloc(__ptr,iVar9 * 4);
    if (__ptr == (void *)0x0) {
      return 0xc;
    }
    *param_1 = iVar9;
    iVar5 = param_1[1];
    param_1[2] = (int)__ptr;
    iVar3 = *(int *)(param_3 + 4);
    iVar9 = *(int *)(param_2 + 4);
  }
  iVar6 = iVar5 + -1;
  local_24 = iVar5 + iVar9 + iVar3;
  iVar9 = iVar9 + -1;
  iVar3 = iVar3 + -1;
  iVar5 = *(int *)(param_2 + 8);
  iVar7 = *(int *)(param_3 + 8);
  iVar4 = *(int *)(iVar5 + iVar9 * 4);
  iVar8 = *(int *)(iVar7 + iVar3 * 4);
  do {
    bVar10 = SBORROW4(iVar4,iVar8);
    iVar2 = iVar4 - iVar8;
    if (iVar4 == iVar8) goto LAB_0001e8ae;
    while (bVar10 != iVar2 < 0) {
      iVar3 = iVar3 + -1;
      if (iVar3 < 0) goto LAB_0001e940;
      while( true ) {
        iVar8 = *(int *)(iVar7 + iVar3 * 4);
        bVar10 = SBORROW4(iVar4,iVar8);
        iVar2 = iVar4 - iVar8;
        if (iVar2 != 0) break;
LAB_0001e8ae:
        if (-1 < iVar6) {
          do {
            iVar8 = *(int *)((int)__ptr + iVar6 * 4);
            if (iVar8 <= iVar4) {
              if (iVar8 == iVar4) goto LAB_0001e8d7;
              break;
            }
            iVar6 = iVar6 + -1;
          } while (iVar6 != -1);
        }
        local_24 = local_24 + -1;
        *(int *)((int)__ptr + local_24 * 4) = iVar4;
LAB_0001e8d7:
        iVar9 = iVar9 + -1;
        if ((iVar9 < 0) || (iVar3 = iVar3 + -1, iVar3 < 0)) goto LAB_0001e940;
        iVar4 = *(int *)(iVar5 + iVar9 * 4);
      }
    }
    iVar9 = iVar9 + -1;
    if (iVar9 < 0) break;
    iVar4 = *(int *)(iVar5 + iVar9 * 4);
  } while( true );
LAB_0001e940:
  iVar5 = param_1[1];
  iVar9 = iVar5 + -1;
  iVar7 = *(int *)(param_2 + 4) + iVar5 + *(int *)(param_3 + 4);
  iVar3 = iVar7 + -1;
  iVar7 = iVar7 - local_24;
  param_1[1] = iVar5 + iVar7;
  if ((iVar7 < 1) || (iVar9 < 0)) {
    __n = iVar7 * 4;
  }
  else {
    do {
      while( true ) {
        iVar5 = *(int *)((int)__ptr + iVar3 * 4);
        iVar8 = *(int *)((int)__ptr + iVar9 * 4);
        piVar1 = (int *)((int)__ptr + (iVar9 + iVar7) * 4);
        if (iVar5 <= iVar8) break;
        iVar3 = iVar3 + -1;
        *piVar1 = iVar5;
        iVar7 = iVar7 + -1;
        if (iVar7 == 0) {
          __n = 0;
          __ptr = (void *)param_1[2];
          goto LAB_0001e8f3;
        }
      }
      iVar9 = iVar9 + -1;
      *piVar1 = iVar8;
    } while (iVar9 != -1);
    __n = iVar7 << 2;
    __ptr = (void *)param_1[2];
  }
LAB_0001e8f3:
  memcpy(__ptr,(void *)((int)__ptr + local_24 * 4),__n);
  return 0;
}

