
/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */

regoff_t rpl_re_search(re_pattern_buffer *bufp,char *string,Idx length,Idx start,regoff_t range,
                      re_registers *regs)

{
  int iVar1;
  byte bVar2;
  byte bVar3;
  regmatch_t *pmatch;
  reg_errcode_t rVar4;
  size_t __size;
  regoff_t *prVar5;
  regoff_t *prVar6;
  uint uVar7;
  int last_start;
  char cVar8;
  regoff_t rVar9;
  uint uVar10;
  uint local_28;
  uint local_24;
  
  iVar1 = start + range;
  if ((start < 0) || (length < start)) {
    return -1;
  }
  last_start = length;
  if (((length < iVar1) || ((-1 < range && (iVar1 < start)))) ||
     ((-1 < iVar1 && ((last_start = iVar1, -1 < range || (iVar1 < start)))))) {
    bVar2 = bufp->field_0x1c;
    local_28 = bVar2 >> 5 & 3;
    if ((start < last_start) && ((bufp->fastmap != (char *)0x0 && ((bVar2 & 8) == 0)))) {
      rpl_re_compile_fastmap(bufp);
      bVar2 = bufp->field_0x1c;
    }
  }
  else {
    last_start = 0;
    bVar2 = bufp->field_0x1c;
    local_28 = bVar2 >> 5 & 3;
  }
  if (((bVar2 & 0x10) == 0) && (regs != (re_registers *)0x0)) {
    if (((bVar2 & 6) == 4) && (local_24 = regs->num_regs, local_24 <= bufp->re_nsub)) {
      if ((int)local_24 < 1) goto LAB_0002ac98;
    }
    else {
      local_24 = bufp->re_nsub + 1;
    }
    __size = local_24 * 8;
  }
  else {
LAB_0002ac98:
    __size = 8;
    local_24 = 1;
    regs = (re_registers *)0x0;
  }
  pmatch = (regmatch_t *)malloc(__size);
  if (pmatch == (regmatch_t *)0x0) {
    return -2;
  }
  rVar4 = re_search_internal(bufp,string,length,start,last_start,length,local_24,pmatch,local_28);
  if (rVar4 == _REG_NOERROR) {
    if (regs != (re_registers *)0x0) {
      uVar7 = local_24 + 1;
      bVar2 = (byte)bufp->field_0x1c >> 1;
      bVar3 = bVar2 & 3;
      if ((bVar2 & 3) == 0) {
        prVar5 = (regoff_t *)malloc(uVar7 * 4);
        regs->start = prVar5;
        if (prVar5 != (regoff_t *)0x0) {
          prVar6 = (regoff_t *)malloc(uVar7 * 4);
          regs->end = prVar6;
          if (prVar6 != (regoff_t *)0x0) {
            cVar8 = '\x01';
            regs->num_regs = uVar7;
            uVar10 = uVar7;
            goto LAB_0002abce;
          }
          free(prVar5);
        }
LAB_0002ae33:
        cVar8 = '\0';
      }
      else {
        if (bVar3 == 1) {
          cVar8 = '\x01';
          uVar10 = regs->num_regs;
          if (regs->num_regs < uVar7) {
            prVar5 = (regoff_t *)realloc(regs->start,uVar7 * 4);
            if (prVar5 == (regoff_t *)0x0) goto LAB_0002ae33;
            prVar6 = (regoff_t *)realloc(regs->end,uVar7 * 4);
            if (prVar6 == (regoff_t *)0x0) {
              cVar8 = '\0';
              free(prVar5);
              goto LAB_0002ac4a;
            }
            regs->start = prVar5;
            regs->num_regs = uVar7;
            regs->end = prVar6;
            uVar10 = uVar7;
          }
        }
        else {
          if (bVar3 != 2) {
                    /* WARNING: Subroutine does not return */
            __assert_fail("regs_allocated == REGS_FIXED","lib/regexec.c",0x1f8,"re_copy_regs");
          }
          if (regs->num_regs < local_24) {
                    /* WARNING: Subroutine does not return */
            __assert_fail("regs->num_regs >= nregs","lib/regexec.c",0x1fa,"re_copy_regs");
          }
          cVar8 = '\x02';
          uVar10 = regs->num_regs;
        }
LAB_0002abce:
        if ((int)local_24 < 1) {
          uVar7 = 0;
        }
        else {
          prVar5 = regs->start;
          prVar6 = regs->end;
          uVar7 = 0;
          do {
            prVar5[uVar7] = pmatch[uVar7].rm_so;
            prVar6[uVar7] = pmatch[uVar7].rm_eo;
            uVar7 = uVar7 + 1;
          } while (local_24 != uVar7);
          uVar10 = regs->num_regs;
        }
        if (uVar7 < uVar10) {
          prVar5 = regs->end;
          prVar6 = regs->start;
          do {
            uVar10 = uVar7 + 1;
            prVar5[uVar7] = -1;
            prVar6[uVar7] = -1;
            uVar7 = uVar10;
          } while (uVar10 < regs->num_regs);
        }
      }
LAB_0002ac4a:
      bufp->field_0x1c = bufp->field_0x1c & 0xf9 | cVar8 * '\x02';
      if (cVar8 == '\0') goto LAB_0002ab5b;
    }
    rVar9 = pmatch->rm_so;
  }
  else {
    rVar9 = -1;
    if (rVar4 == _REG_NOMATCH) goto LAB_0002ab60;
LAB_0002ab5b:
    rVar9 = -2;
  }
LAB_0002ab60:
  free(pmatch);
  return rVar9;
}



/* WARNING: Function: __i686.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */

undefined4
FUN_0002aa50(int param_1,undefined4 param_2,int param_3,int param_4,int param_5,uint *param_6)

{
  uint uVar1;
  byte bVar2;
  byte bVar3;
  undefined4 *__ptr;
  int iVar4;
  size_t __size;
  void *pvVar5;
  void *pvVar6;
  uint uVar7;
  uint uVar8;
  int iVar9;
  char cVar10;
  undefined4 uVar11;
  uint uVar12;
  uint local_24;
  
  iVar4 = param_4 + param_5;
  if ((param_4 < 0) || (param_3 < param_4)) {
    return 0xffffffff;
  }
  iVar9 = param_3;
  if (((param_3 < iVar4) || ((-1 < param_5 && (iVar4 < param_4)))) ||
     ((-1 < iVar4 && ((iVar9 = iVar4, -1 < param_5 || (iVar4 < param_4)))))) {
    bVar2 = *(byte *)(param_1 + 0x1c);
    bVar3 = bVar2 >> 5 & 3;
    if ((param_4 < iVar9) && ((*(int *)(param_1 + 0x10) != 0 && ((bVar2 & 8) == 0)))) {
      FUN_00029ec0(param_1);
      bVar2 = *(byte *)(param_1 + 0x1c);
    }
  }
  else {
    iVar9 = 0;
    bVar2 = *(byte *)(param_1 + 0x1c);
    bVar3 = bVar2 >> 5 & 3;
  }
  if (((bVar2 & 0x10) == 0) && (param_6 != (uint *)0x0)) {
    if (((bVar2 & 6) == 4) && (local_24 = *param_6, local_24 <= *(uint *)(param_1 + 0x18))) {
      if ((int)local_24 < 1) goto LAB_0002ac98;
    }
    else {
      local_24 = *(uint *)(param_1 + 0x18) + 1;
    }
    __size = local_24 * 8;
  }
  else {
LAB_0002ac98:
    __size = 8;
    local_24 = 1;
    param_6 = (uint *)0x0;
  }
  __ptr = (undefined4 *)malloc(__size);
  if (__ptr == (undefined4 *)0x0) {
    return 0xfffffffe;
  }
  iVar4 = FUN_00023920(param_1,param_2,param_3,param_4,iVar9,param_3,local_24,__ptr,bVar3);
  if (iVar4 == 0) {
    if (param_6 != (uint *)0x0) {
      uVar7 = local_24 + 1;
      bVar2 = *(byte *)(param_1 + 0x1c) >> 1;
      bVar3 = bVar2 & 3;
      if ((bVar2 & 3) == 0) {
        pvVar5 = malloc(uVar7 * 4);
        param_6[1] = (uint)pvVar5;
        if (pvVar5 != (void *)0x0) {
          pvVar6 = malloc(uVar7 * 4);
          param_6[2] = (uint)pvVar6;
          if (pvVar6 != (void *)0x0) {
            cVar10 = '\x01';
            *param_6 = uVar7;
            uVar8 = uVar7;
            goto LAB_0002abce;
          }
          free(pvVar5);
        }
LAB_0002ae33:
        cVar10 = '\0';
      }
      else {
        if (bVar3 == 1) {
          cVar10 = '\x01';
          uVar8 = *param_6;
          if (*param_6 < uVar7) {
            pvVar5 = realloc((void *)param_6[1],uVar7 * 4);
            if (pvVar5 == (void *)0x0) goto LAB_0002ae33;
            pvVar6 = realloc((void *)param_6[2],uVar7 * 4);
            if (pvVar6 == (void *)0x0) {
              cVar10 = '\0';
              free(pvVar5);
              goto LAB_0002ac4a;
            }
            param_6[1] = (uint)pvVar5;
            *param_6 = uVar7;
            param_6[2] = (uint)pvVar6;
            uVar8 = uVar7;
          }
        }
        else {
          if (bVar3 != 2) {
                    /* WARNING: Subroutine does not return */
            __assert_fail("regs_allocated == REGS_FIXED","lib/regexec.c",0x1f8,"re_copy_regs");
          }
          if (*param_6 < local_24) {
                    /* WARNING: Subroutine does not return */
            __assert_fail("regs->num_regs >= nregs","lib/regexec.c",0x1fa,"re_copy_regs");
          }
          cVar10 = '\x02';
          uVar8 = *param_6;
        }
LAB_0002abce:
        if ((int)local_24 < 1) {
          uVar7 = 0;
        }
        else {
          uVar8 = param_6[1];
          uVar1 = param_6[2];
          uVar7 = 0;
          do {
            *(undefined4 *)(uVar8 + uVar7 * 4) = __ptr[uVar7 * 2];
            *(undefined4 *)(uVar1 + uVar7 * 4) = __ptr[uVar7 * 2 + 1];
            uVar7 = uVar7 + 1;
          } while (local_24 != uVar7);
          uVar8 = *param_6;
        }
        if (uVar7 < uVar8) {
          uVar8 = param_6[2];
          uVar1 = param_6[1];
          do {
            uVar12 = uVar7 + 1;
            *(undefined4 *)(uVar8 + uVar7 * 4) = 0xffffffff;
            *(undefined4 *)(uVar1 + uVar7 * 4) = 0xffffffff;
            uVar7 = uVar12;
          } while (uVar12 < *param_6);
        }
      }
LAB_0002ac4a:
      *(byte *)(param_1 + 0x1c) = *(byte *)(param_1 + 0x1c) & 0xf9 | cVar10 * '\x02';
      if (cVar10 == '\0') goto LAB_0002ab5b;
    }
    uVar11 = *__ptr;
  }
  else {
    uVar11 = 0xffffffff;
    if (iVar4 == 1) goto LAB_0002ab60;
LAB_0002ab5b:
    uVar11 = 0xfffffffe;
  }
LAB_0002ab60:
  free(__ptr);
  return uVar11;
}


PUSH EBP
PUSH EDI
PUSH ESI
PUSH EBX
CALL 0x00011720
ADD EBX,0xa5a7
SUB ESP,0x1c
MOV ESI,dword ptr [ESP + 0x3c]
MOV EAX,dword ptr [ESP + 0x40]
LEA EDX,[ESI + EAX*0x1]
TEST ESI,ESI
JS 0x0002ad80
CMP dword ptr [ESP + 0x38],ESI
JL 0x0002ad80
CMP dword ptr [ESP + 0x38],EDX
JL 0x0002ace8
TEST EAX,EAX
JS 0x0002aa95
CMP ESI,EDX
JG 0x0002ace8
TEST EDX,EDX
JS 0x0002ad60
TEST EAX,EAX
JNS 0x0002aaa9
CMP ESI,EDX
JLE 0x0002ad60
MOV EAX,dword ptr [ESP + 0x30]
MOVZX ECX,byte ptr [EAX + 0x1c]
MOV EAX,ECX
SHR AL,0x5
AND EAX,0x3
MOV dword ptr [ESP + 0x4],EAX
CMP ESI,EDX
JGE 0x0002aad5
MOV EAX,dword ptr [ESP + 0x30]
MOV EBP,dword ptr [EAX + 0x10]
TEST EBP,EBP
JZ 0x0002aad5
TEST CL,0x8
JZ 0x0002acc0
TEST CL,0x10
JNZ 0x0002ac98
MOV EDI,dword ptr [ESP + 0x44]
TEST EDI,EDI
JZ 0x0002ac98
MOV EAX,dword ptr [ESP + 0x30]
AND ECX,0x6
MOV EAX,dword ptr [EAX + 0x18]
CMP CL,0x4
JZ 0x0002ac78
LEA EBP,[EAX + 0x1]
MOV dword ptr [ESP + 0x8],EBP
LEA EAX,[EBP*0x8 + 0x0]
MOV dword ptr [ESP],EDX
SUB ESP,0xc
PUSH EAX
CALL 0x00011250
ADD ESP,0x10
MOV EDI,EAX
TEST EAX,EAX
JZ 0x0002ad90
SUB ESP,0xc
PUSH dword ptr [ESP + 0x10]
PUSH EAX
PUSH EBP
PUSH dword ptr [ESP + 0x50]
MOV EDX,dword ptr [ESP + 0x1c]
PUSH EDX
PUSH ESI
PUSH dword ptr [ESP + 0x5c]
PUSH dword ptr [ESP + 0x5c]
PUSH dword ptr [ESP + 0x5c]
CALL 0x00023920
ADD ESP,0x30
MOV ESI,EAX
TEST EAX,EAX
JZ 0x0002ab80
MOV EBP,0xffffffff
CMP EAX,0x1
JZ 0x0002ab60
MOV EBP,0xfffffffe
SUB ESP,0xc
PUSH EDI
CALL 0x000110c0
ADD ESP,0x10
ADD ESP,0x1c
MOV EAX,EBP
POP EBX
POP ESI
POP EDI
POP EBP
RET
MOV EAX,dword ptr [ESP + 0x44]
TEST EAX,EAX
JZ 0x0002ac6d
MOV EAX,dword ptr [ESP + 0x30]
MOV ECX,dword ptr [ESP + 0x8]
MOVZX EAX,byte ptr [EAX + 0x1c]
ADD ECX,0x1
MOV byte ptr [ESP],AL
SHR AL,0x1
AND EAX,0x3
JZ 0x0002acf8
CMP EAX,0x1
JZ 0x0002ada0
CMP EAX,0x2
JNZ 0x0002ae4d
MOV EAX,dword ptr [ESP + 0x44]
MOV EDX,dword ptr [EAX]
CMP EBP,EDX
JA 0x0002ae6c
MOV EBP,0x2
MOV ECX,dword ptr [ESP + 0x8]
TEST ECX,ECX
JLE 0x0002ae20
MOV EAX,dword ptr [ESP + 0x44]
MOV EDX,dword ptr [EAX + 0x4]
MOV EAX,dword ptr [EAX + 0x8]
MOV dword ptr [ESP],EAX
MOV EAX,EBP
MOV byte ptr [ESP + 0x4],AL
LEA ESI,[ESI]
MOV EBP,dword ptr [EDI + ESI*0x8]
MOV EAX,dword ptr [ESP]
MOV dword ptr [EDX + ESI*0x4],EBP
MOV EBP,dword ptr [EDI + ESI*0x8 + 0x4]
MOV dword ptr [EAX + ESI*0x4],EBP
ADD ESI,0x1
CMP ECX,ESI
JNZ 0x0002abf0
MOV ECX,dword ptr [ESP + 0x44]
MOVZX EBP,byte ptr [ESP + 0x4]
MOV EAX,ESI
MOV EDX,dword ptr [ECX]
CMP EDX,EAX
JBE 0x0002ac4a
MOV ECX,dword ptr [ESP + 0x44]
MOV EDX,dword ptr [ESP + 0x44]
MOV dword ptr [ESP],EDI
MOV EDI,dword ptr [ESP + 0x44]
MOV ECX,dword ptr [ECX + 0x8]
MOV EDX,dword ptr [EDX + 0x4]
LEA ESI,[ESI]
ADD ESI,0x1
MOV dword ptr [ECX + EAX*0x4],0xffffffff
MOV dword ptr [EDX + EAX*0x4],0xffffffff
MOV EAX,ESI
CMP dword ptr [EDI],ESI
JA 0x0002ac30
MOV EDI,dword ptr [ESP]
MOV EAX,dword ptr [ESP + 0x30]
LEA EDX,[EBP + EBP*0x1]
MOV ECX,dword ptr [ESP + 0x30]
MOVZX EAX,byte ptr [EAX + 0x1c]
MOV byte ptr [ESP],AL
AND EAX,0xfffffff9
OR EAX,EDX
MOV byte ptr [ECX + 0x1c],AL
TEST AL,0x6
JZ 0x0002ab5b
MOV EBP,dword ptr [EDI]
JMP 0x0002ab60
MOV EDI,dword ptr [ESP + 0x44]
MOV EBP,dword ptr [EDI]
CMP EBP,EAX
JA 0x0002aafd
MOV dword ptr [ESP + 0x8],EBP
TEST EBP,EBP
JG 0x0002ab04
LEA ESI,[ESI]
MOV EAX,0x8
MOV EBP,0x1
MOV dword ptr [ESP + 0x8],0x1
MOV dword ptr [ESP + 0x44],0x0
JMP 0x0002ab0b
MOV dword ptr [ESP],EDX
SUB ESP,0xc
PUSH dword ptr [ESP + 0x3c]
CALL 0x00029ec0
ADD ESP,0x10
MOV EAX,dword ptr [ESP + 0x30]
MOV EDX,dword ptr [ESP]
MOVZX ECX,byte ptr [EAX + 0x1c]
JMP 0x0002aad5
MOV EDX,dword ptr [ESP + 0x38]
JMP 0x0002aaa9
MOV dword ptr [ESP],ECX
LEA EBP,[ECX*0x4 + 0x0]
SUB ESP,0xc
PUSH EBP
CALL 0x00011250
MOV ECX,EAX
MOV EAX,dword ptr [ESP + 0x54]
ADD ESP,0x10
MOV EDX,dword ptr [ESP]
TEST ECX,ECX
MOV dword ptr [EAX + 0x4],ECX
JZ 0x0002ae33
MOV dword ptr [ESP + 0x4],ECX
SUB ESP,0xc
MOV dword ptr [ESP + 0xc],EDX
PUSH EBP
CALL 0x00011250
MOV ECX,dword ptr [ESP + 0x54]
ADD ESP,0x10
MOV EDX,dword ptr [ESP]
TEST EAX,EAX
MOV dword ptr [ECX + 0x8],EAX
MOV ECX,dword ptr [ESP + 0x4]
JZ 0x0002ae27
MOV EAX,dword ptr [ESP + 0x44]
MOV EBP,0x1
MOV dword ptr [EAX],EDX
JMP 0x0002abce
MOV EAX,dword ptr [ESP + 0x30]
XOR EDX,EDX
MOVZX ECX,byte ptr [EAX + 0x1c]
MOV EAX,ECX
SHR AL,0x5
AND EAX,0x3
MOV dword ptr [ESP + 0x4],EAX
JMP 0x0002aad5
ADD ESP,0x1c
MOV EBP,0xffffffff
POP EBX
MOV EAX,EBP
POP ESI
POP EDI
POP EBP
RET
MOV EBP,0xfffffffe
JMP 0x0002ab6c
MOV EAX,dword ptr [ESP + 0x44]
MOV EBP,0x1
MOV EDX,dword ptr [EAX]
CMP EDX,ECX
JNC 0x0002abce
MOV dword ptr [ESP + 0xc],ECX
LEA EAX,[ECX*0x4 + 0x0]
SUB ESP,0x8
MOV dword ptr [ESP + 0x8],EAX
PUSH EAX
MOV ECX,dword ptr [ESP + 0x50]
PUSH dword ptr [ECX + 0x4]
CALL 0x00011240
ADD ESP,0x10
TEST EAX,EAX
MOV dword ptr [ESP + 0x4],EAX
JZ 0x0002ae33
SUB ESP,0x8
PUSH dword ptr [ESP + 0x8]
MOV EAX,dword ptr [ESP + 0x50]
PUSH dword ptr [EAX + 0x8]
CALL 0x00011240
MOV dword ptr [ESP + 0x10],EAX
ADD ESP,0x10
TEST EAX,EAX
MOV EDX,dword ptr [ESP + 0x4]
MOV ECX,dword ptr [ESP + 0xc]
JZ 0x0002ae3a
MOV EAX,dword ptr [ESP + 0x44]
MOV dword ptr [EAX + 0x4],EDX
MOV EDX,dword ptr [ESP]
MOV dword ptr [EAX],ECX
MOV dword ptr [EAX + 0x8],EDX
MOV EDX,ECX
JMP 0x0002abce
XOR EAX,EAX
JMP 0x0002ac14
SUB ESP,0xc
PUSH ECX
CALL 0x000110c0
ADD ESP,0x10
XOR EBP,EBP
JMP 0x0002ac4a
SUB ESP,0xc
XOR EBP,EBP
PUSH EDX
CALL 0x000110c0
ADD ESP,0x10
JMP 0x0002ac4a
LEA EAX,[EBX + 0xffff906c]
PUSH EAX
LEA EAX,[EBX + 0xffff882c]
PUSH 0x1f8
PUSH EAX
LEA EAX,[EBX + 0xffff888d]
PUSH EAX
CALL 0x00011450
LEA EAX,[EBX + 0xffff906c]
PUSH EAX
LEA EAX,[EBX + 0xffff882c]
PUSH 0x1fa
PUSH EAX
LEA EAX,[EBX + 0xffff88aa]
PUSH EAX
CALL 0x00011450
(translation_unit "/* WARNING: Function: __i686.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */\n\nundefined4\nFUN_0002aa50(int param_1,undefined4 param_2,int param_3,int param_4,int param_5,uint *param_6)\n\n{\n  uint uVar1;\n  byte bVar2;\n  byte bVar3;\n  undefined4 *__ptr;\n  int iVar4;\n  size_t __size;\n  void *pvVar5;\n  void *pvVar6;\n  uint uVar7;\n  uint uVar8;\n  int iVar9;\n  char cVar10;\n  undefined4 uVar11;\n  uint uVar12;\n  uint local_24;\n  \n  iVar4 = param_4 + param_5;\n  if ((param_4 < 0) || (param_3 < param_4)) {\n    return 0xffffffff;\n  }\n  iVar9 = param_3;\n  if (((param_3 < iVar4) || ((-1 < param_5 && (iVar4 < param_4)))) ||\n     ((-1 < iVar4 && ((iVar9 = iVar4, -1 < param_5 || (iVar4 < param_4)))))) {\n    bVar2 = *(byte *)(param_1 + 0x1c);\n    bVar3 = bVar2 >> 5 & 3;\n    if ((param_4 < iVar9) && ((*(int *)(param_1 + 0x10) != 0 && ((bVar2 & 8) == 0)))) {\n      FUN_00029ec0(param_1);\n      bVar2 = *(byte *)(param_1 + 0x1c);\n    }\n  }\n  else {\n    iVar9 = 0;\n    bVar2 = *(byte *)(param_1 + 0x1c);\n    bVar3 = bVar2 >> 5 & 3;\n  }\n  if (((bVar2 & 0x10) == 0) && (param_6 != (uint *)0x0)) {\n    if (((bVar2 & 6) == 4) && (local_24 = *param_6, local_24 <= *(uint *)(param_1 + 0x18))) {\n      if ((int)local_24 < 1) goto LAB_0002ac98;\n    }\n    else {\n      local_24 = *(uint *)(param_1 + 0x18) + 1;\n    }\n    __size = local_24 * 8;\n  }\n  else {\nLAB_0002ac98:\n    __size = 8;\n    local_24 = 1;\n    param_6 = (uint *)0x0;\n  }\n  __ptr = (undefined4 *)malloc(__size);\n  if (__ptr == (undefined4 *)0x0) {\n    return 0xfffffffe;\n  }\n  iVar4 = FUN_00023920(param_1,param_2,param_3,param_4,iVar9,param_3,local_24,__ptr,bVar3);\n  if (iVar4 == 0) {\n    if (param_6 != (uint *)0x0) {\n      uVar7 = local_24 + 1;\n      bVar2 = *(byte *)(param_1 + 0x1c) >> 1;\n      bVar3 = bVar2 & 3;\n      if ((bVar2 & 3) == 0) {\n        pvVar5 = malloc(uVar7 * 4);\n        param_6[1] = (uint)pvVar5;\n        if (pvVar5 != (void *)0x0) {\n          pvVar6 = malloc(uVar7 * 4);\n          param_6[2] = (uint)pvVar6;\n          if (pvVar6 != (void *)0x0) {\n            cVar10 = '\x01';\n            *param_6 = uVar7;\n            uVar8 = uVar7;\n            goto LAB_0002abce;\n          }\n          free(pvVar5);\n        }\nLAB_0002ae33:\n        cVar10 = '\0';\n      }\n      else {\n        if (bVar3 == 1) {\n          cVar10 = '\x01';\n          uVar8 = *param_6;\n          if (*param_6 < uVar7) {\n            pvVar5 = realloc((void *)param_6[1],uVar7 * 4);\n            if (pvVar5 == (void *)0x0) goto LAB_0002ae33;\n            pvVar6 = realloc((void *)param_6[2],uVar7 * 4);\n            if (pvVar6 == (void *)0x0) {\n              cVar10 = '\0';\n              free(pvVar5);\n              goto LAB_0002ac4a;\n            }\n            param_6[1] = (uint)pvVar5;\n            *param_6 = uVar7;\n            param_6[2] = (uint)pvVar6;\n            uVar8 = uVar7;\n          }\n        }\n        else {\n          if (bVar3 != 2) {\n                    /* WARNING: Subroutine does not return */\n            __assert_fail("regs_allocated == REGS_FIXED","lib/regexec.c",0x1f8,"re_copy_regs");\n          }\n          if (*param_6 < local_24) {\n                    /* WARNING: Subroutine does not return */\n            __assert_fail("regs->num_regs >= nregs","lib/regexec.c",0x1fa,"re_copy_regs");\n          }\n          cVar10 = '\x02';\n          uVar8 = *param_6;\n        }\nLAB_0002abce:\n        if ((int)local_24 < 1) {\n          uVar7 = 0;\n        }\n        else {\n          uVar8 = param_6[1];\n          uVar1 = param_6[2];\n          uVar7 = 0;\n          do {\n            *(undefined4 *)(uVar8 + uVar7 * 4) = __ptr[uVar7 * 2];\n            *(undefined4 *)(uVar1 + uVar7 * 4) = __ptr[uVar7 * 2 + 1];\n            uVar7 = uVar7 + 1;\n          } while (local_24 != uVar7);\n          uVar8 = *param_6;\n        }\n        if (uVar7 < uVar8) {\n          uVar8 = param_6[2];\n          uVar1 = param_6[1];\n          do {\n            uVar12 = uVar7 + 1;\n            *(undefined4 *)(uVar8 + uVar7 * 4) = 0xffffffff;\n            *(undefined4 *)(uVar1 + uVar7 * 4) = 0xffffffff;\n            uVar7 = uVar12;\n          } while (uVar12 < *param_6);\n        }\n      }\nLAB_0002ac4a:\n      *(byte *)(param_1 + 0x1c) = *(byte *)(param_1 + 0x1c) & 0xf9 | cVar10 * '\x02';\n      if (cVar10 == '\0') goto LAB_0002ab5b;\n    }\n    uVar11 = *__ptr;\n  }\n  else {\n    uVar11 = 0xffffffff;\n    if (iVar4 == 1) goto LAB_0002ab60;\nLAB_0002ab5b:\n    uVar11 = 0xfffffffe;\n  }\nLAB_0002ab60:\n  free(__ptr);\n  return uVar11;\n}\n\n" comment (function_definition "undefined4\nFUN_0002aa50(int param_1,undefined4 param_2,int param_3,int param_4,int param_5,uint *param_6)\n\n{\n  uint uVar1;\n  byte bVar2;\n  byte bVar3;\n  undefined4 *__ptr;\n  int iVar4;\n  size_t __size;\n  void *pvVar5;\n  void *pvVar6;\n  uint uVar7;\n  uint uVar8;\n  int iVar9;\n  char cVar10;\n  undefined4 uVar11;\n  uint uVar12;\n  uint local_24;\n  \n  iVar4 = param_4 + param_5;\n  if ((param_4 < 0) || (param_3 < param_4)) {\n    return 0xffffffff;\n  }\n  iVar9 = param_3;\n  if (((param_3 < iVar4) || ((-1 < param_5 && (iVar4 < param_4)))) ||\n     ((-1 < iVar4 && ((iVar9 = iVar4, -1 < param_5 || (iVar4 < param_4)))))) {\n    bVar2 = *(byte *)(param_1 + 0x1c);\n    bVar3 = bVar2 >> 5 & 3;\n    if ((param_4 < iVar9) && ((*(int *)(param_1 + 0x10) != 0 && ((bVar2 & 8) == 0)))) {\n      FUN_00029ec0(param_1);\n      bVar2 = *(byte *)(param_1 + 0x1c);\n    }\n  }\n  else {\n    iVar9 = 0;\n    bVar2 = *(byte *)(param_1 + 0x1c);\n    bVar3 = bVar2 >> 5 & 3;\n  }\n  if (((bVar2 & 0x10) == 0) && (param_6 != (uint *)0x0)) {\n    if (((bVar2 & 6) == 4) && (local_24 = *param_6, local_24 <= *(uint *)(param_1 + 0x18))) {\n      if ((int)local_24 < 1) goto LAB_0002ac98;\n    }\n    else {\n      local_24 = *(uint *)(param_1 + 0x18) + 1;\n    }\n    __size = local_24 * 8;\n  }\n  else {\nLAB_0002ac98:\n    __size = 8;\n    local_24 = 1;\n    param_6 = (uint *)0x0;\n  }\n  __ptr = (undefined4 *)malloc(__size);\n  if (__ptr == (undefined4 *)0x0) {\n    return 0xfffffffe;\n  }\n  iVar4 = FUN_00023920(param_1,param_2,param_3,param_4,iVar9,param_3,local_24,__ptr,bVar3);\n  if (iVar4 == 0) {\n    if (param_6 != (uint *)0x0) {\n      uVar7 = local_24 + 1;\n      bVar2 = *(byte *)(param_1 + 0x1c) >> 1;\n      bVar3 = bVar2 & 3;\n      if ((bVar2 & 3) == 0) {\n        pvVar5 = malloc(uVar7 * 4);\n        param_6[1] = (uint)pvVar5;\n        if (pvVar5 != (void *)0x0) {\n          pvVar6 = malloc(uVar7 * 4);\n          param_6[2] = (uint)pvVar6;\n          if (pvVar6 != (void *)0x0) {\n            cVar10 = '\x01';\n            *param_6 = uVar7;\n            uVar8 = uVar7;\n            goto LAB_0002abce;\n          }\n          free(pvVar5);\n        }\nLAB_0002ae33:\n        cVar10 = '\0';\n      }\n      else {\n        if (bVar3 == 1) {\n          cVar10 = '\x01';\n          uVar8 = *param_6;\n          if (*param_6 < uVar7) {\n            pvVar5 = realloc((void *)param_6[1],uVar7 * 4);\n            if (pvVar5 == (void *)0x0) goto LAB_0002ae33;\n            pvVar6 = realloc((void *)param_6[2],uVar7 * 4);\n            if (pvVar6 == (void *)0x0) {\n              cVar10 = '\0';\n              free(pvVar5);\n              goto LAB_0002ac4a;\n            }\n            param_6[1] = (uint)pvVar5;\n            *param_6 = uVar7;\n            param_6[2] = (uint)pvVar6;\n            uVar8 = uVar7;\n          }\n        }\n        else {\n          if (bVar3 != 2) {\n                    /* WARNING: Subroutine does not return */\n            __assert_fail("regs_allocated == REGS_FIXED","lib/regexec.c",0x1f8,"re_copy_regs");\n          }\n          if (*param_6 < local_24) {\n                    /* WARNING: Subroutine does not return */\n            __assert_fail("regs->num_regs >= nregs","lib/regexec.c",0x1fa,"re_copy_regs");\n          }\n          cVar10 = '\x02';\n          uVar8 = *param_6;\n        }\nLAB_0002abce:\n        if ((int)local_24 < 1) {\n          uVar7 = 0;\n        }\n        else {\n          uVar8 = param_6[1];\n          uVar1 = param_6[2];\n          uVar7 = 0;\n          do {\n            *(undefined4 *)(uVar8 + uVar7 * 4) = __ptr[uVar7 * 2];\n            *(undefined4 *)(uVar1 + uVar7 * 4) = __ptr[uVar7 * 2 + 1];\n            uVar7 = uVar7 + 1;\n          } while (local_24 != uVar7);\n          uVar8 = *param_6;\n        }\n        if (uVar7 < uVar8) {\n          uVar8 = param_6[2];\n          uVar1 = param_6[1];\n          do {\n            uVar12 = uVar7 + 1;\n            *(undefined4 *)(uVar8 + uVar7 * 4) = 0xffffffff;\n            *(undefined4 *)(uVar1 + uVar7 * 4) = 0xffffffff;\n            uVar7 = uVar12;\n          } while (uVar12 < *param_6);\n        }\n      }\nLAB_0002ac4a:\n      *(byte *)(param_1 + 0x1c) = *(byte *)(param_1 + 0x1c) & 0xf9 | cVar10 * '\x02';\n      if (cVar10 == '\0') goto LAB_0002ab5b;\n    }\n    uVar11 = *__ptr;\n  }\n  else {\n    uVar11 = 0xffffffff;\n    if (iVar4 == 1) goto LAB_0002ab60;\nLAB_0002ab5b:\n    uVar11 = 0xfffffffe;\n  }\nLAB_0002ab60:\n  free(__ptr);\n  return uVar11;\n}" type_identifier (function_declarator "FUN_0002aa50(int param_1,undefined4 param_2,int param_3,int param_4,int param_5,uint *param_6)" identifier (parameter_list "(int param_1,undefined4 param_2,int param_3,int param_4,int param_5,uint *param_6)" ( (parameter_declaration "int param_1" primitive_type identifier) , (parameter_declaration "undefined4 param_2" type_identifier identifier) , (parameter_declaration "int param_3" primitive_type identifier) , (parameter_declaration "int param_4" primitive_type identifier) , (parameter_declaration "int param_5" primitive_type identifier) , (parameter_declaration "uint *param_6" type_identifier (pointer_declarator "*param_6" * identifier)) ))) (compound_statement "{\n  uint uVar1;\n  byte bVar2;\n  byte bVar3;\n  undefined4 *__ptr;\n  int iVar4;\n  size_t __size;\n  void *pvVar5;\n  void *pvVar6;\n  uint uVar7;\n  uint uVar8;\n  int iVar9;\n  char cVar10;\n  undefined4 uVar11;\n  uint uVar12;\n  uint local_24;\n  \n  iVar4 = param_4 + param_5;\n  if ((param_4 < 0) || (param_3 < param_4)) {\n    return 0xffffffff;\n  }\n  iVar9 = param_3;\n  if (((param_3 < iVar4) || ((-1 < param_5 && (iVar4 < param_4)))) ||\n     ((-1 < iVar4 && ((iVar9 = iVar4, -1 < param_5 || (iVar4 < param_4)))))) {\n    bVar2 = *(byte *)(param_1 + 0x1c);\n    bVar3 = bVar2 >> 5 & 3;\n    if ((param_4 < iVar9) && ((*(int *)(param_1 + 0x10) != 0 && ((bVar2 & 8) == 0)))) {\n      FUN_00029ec0(param_1);\n      bVar2 = *(byte *)(param_1 + 0x1c);\n    }\n  }\n  else {\n    iVar9 = 0;\n    bVar2 = *(byte *)(param_1 + 0x1c);\n    bVar3 = bVar2 >> 5 & 3;\n  }\n  if (((bVar2 & 0x10) == 0) && (param_6 != (uint *)0x0)) {\n    if (((bVar2 & 6) == 4) && (local_24 = *param_6, local_24 <= *(uint *)(param_1 + 0x18))) {\n      if ((int)local_24 < 1) goto LAB_0002ac98;\n    }\n    else {\n      local_24 = *(uint *)(param_1 + 0x18) + 1;\n    }\n    __size = local_24 * 8;\n  }\n  else {\nLAB_0002ac98:\n    __size = 8;\n    local_24 = 1;\n    param_6 = (uint *)0x0;\n  }\n  __ptr = (undefined4 *)malloc(__size);\n  if (__ptr == (undefined4 *)0x0) {\n    return 0xfffffffe;\n  }\n  iVar4 = FUN_00023920(param_1,param_2,param_3,param_4,iVar9,param_3,local_24,__ptr,bVar3);\n  if (iVar4 == 0) {\n    if (param_6 != (uint *)0x0) {\n      uVar7 = local_24 + 1;\n      bVar2 = *(byte *)(param_1 + 0x1c) >> 1;\n      bVar3 = bVar2 & 3;\n      if ((bVar2 & 3) == 0) {\n        pvVar5 = malloc(uVar7 * 4);\n        param_6[1] = (uint)pvVar5;\n        if (pvVar5 != (void *)0x0) {\n          pvVar6 = malloc(uVar7 * 4);\n          param_6[2] = (uint)pvVar6;\n          if (pvVar6 != (void *)0x0) {\n            cVar10 = '\x01';\n            *param_6 = uVar7;\n            uVar8 = uVar7;\n            goto LAB_0002abce;\n          }\n          free(pvVar5);\n        }\nLAB_0002ae33:\n        cVar10 = '\0';\n      }\n      else {\n        if (bVar3 == 1) {\n          cVar10 = '\x01';\n          uVar8 = *param_6;\n          if (*param_6 < uVar7) {\n            pvVar5 = realloc((void *)param_6[1],uVar7 * 4);\n            if (pvVar5 == (void *)0x0) goto LAB_0002ae33;\n            pvVar6 = realloc((void *)param_6[2],uVar7 * 4);\n            if (pvVar6 == (void *)0x0) {\n              cVar10 = '\0';\n              free(pvVar5);\n              goto LAB_0002ac4a;\n            }\n            param_6[1] = (uint)pvVar5;\n            *param_6 = uVar7;\n            param_6[2] = (uint)pvVar6;\n            uVar8 = uVar7;\n          }\n        }\n        else {\n          if (bVar3 != 2) {\n                    /* WARNING: Subroutine does not return */\n            __assert_fail("regs_allocated == REGS_FIXED","lib/regexec.c",0x1f8,"re_copy_regs");\n          }\n          if (*param_6 < local_24) {\n                    /* WARNING: Subroutine does not return */\n            __assert_fail("regs->num_regs >= nregs","lib/regexec.c",0x1fa,"re_copy_regs");\n          }\n          cVar10 = '\x02';\n          uVar8 = *param_6;\n        }\nLAB_0002abce:\n        if ((int)local_24 < 1) {\n          uVar7 = 0;\n        }\n        else {\n          uVar8 = param_6[1];\n          uVar1 = param_6[2];\n          uVar7 = 0;\n          do {\n            *(undefined4 *)(uVar8 + uVar7 * 4) = __ptr[uVar7 * 2];\n            *(undefined4 *)(uVar1 + uVar7 * 4) = __ptr[uVar7 * 2 + 1];\n            uVar7 = uVar7 + 1;\n          } while (local_24 != uVar7);\n          uVar8 = *param_6;\n        }\n        if (uVar7 < uVar8) {\n          uVar8 = param_6[2];\n          uVar1 = param_6[1];\n          do {\n            uVar12 = uVar7 + 1;\n            *(undefined4 *)(uVar8 + uVar7 * 4) = 0xffffffff;\n            *(undefined4 *)(uVar1 + uVar7 * 4) = 0xffffffff;\n            uVar7 = uVar12;\n          } while (uVar12 < *param_6);\n        }\n      }\nLAB_0002ac4a:\n      *(byte *)(param_1 + 0x1c) = *(byte *)(param_1 + 0x1c) & 0xf9 | cVar10 * '\x02';\n      if (cVar10 == '\0') goto LAB_0002ab5b;\n    }\n    uVar11 = *__ptr;\n  }\n  else {\n    uVar11 = 0xffffffff;\n    if (iVar4 == 1) goto LAB_0002ab60;\nLAB_0002ab5b:\n    uVar11 = 0xfffffffe;\n  }\nLAB_0002ab60:\n  free(__ptr);\n  return uVar11;\n}" { (declaration "uint uVar1;" type_identifier identifier ;) (declaration "byte bVar2;" type_identifier identifier ;) (declaration "byte bVar3;" type_identifier identifier ;) (declaration "undefined4 *__ptr;" type_identifier (pointer_declarator "*__ptr" * identifier) ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "size_t __size;" primitive_type identifier ;) (declaration "void *pvVar5;" primitive_type (pointer_declarator "*pvVar5" * identifier) ;) (declaration "void *pvVar6;" primitive_type (pointer_declarator "*pvVar6" * identifier) ;) (declaration "uint uVar7;" type_identifier identifier ;) (declaration "uint uVar8;" type_identifier identifier ;) (declaration "int iVar9;" primitive_type identifier ;) (declaration "char cVar10;" primitive_type identifier ;) (declaration "undefined4 uVar11;" type_identifier identifier ;) (declaration "uint uVar12;" type_identifier identifier ;) (declaration "uint local_24;" type_identifier identifier ;) (expression_statement "iVar4 = param_4 + param_5;" (assignment_expression "iVar4 = param_4 + param_5" identifier = (binary_expression "param_4 + param_5" identifier + identifier)) ;) (if_statement "if ((param_4 < 0) || (param_3 < param_4)) {\n    return 0xffffffff;\n  }" if (parenthesized_expression "((param_4 < 0) || (param_3 < param_4))" ( (binary_expression "(param_4 < 0) || (param_3 < param_4)" (parenthesized_expression "(param_4 < 0)" ( (binary_expression "param_4 < 0" identifier < number_literal) )) || (parenthesized_expression "(param_3 < param_4)" ( (binary_expression "param_3 < param_4" identifier < identifier) ))) )) (compound_statement "{\n    return 0xffffffff;\n  }" { (return_statement "return 0xffffffff;" return number_literal ;) })) (expression_statement "iVar9 = param_3;" (assignment_expression "iVar9 = param_3" identifier = identifier) ;) (if_statement "if (((param_3 < iVar4) || ((-1 < param_5 && (iVar4 < param_4)))) ||\n     ((-1 < iVar4 && ((iVar9 = iVar4, -1 < param_5 || (iVar4 < param_4)))))) {\n    bVar2 = *(byte *)(param_1 + 0x1c);\n    bVar3 = bVar2 >> 5 & 3;\n    if ((param_4 < iVar9) && ((*(int *)(param_1 + 0x10) != 0 && ((bVar2 & 8) == 0)))) {\n      FUN_00029ec0(param_1);\n      bVar2 = *(byte *)(param_1 + 0x1c);\n    }\n  }\n  else {\n    iVar9 = 0;\n    bVar2 = *(byte *)(param_1 + 0x1c);\n    bVar3 = bVar2 >> 5 & 3;\n  }" if (parenthesized_expression "(((param_3 < iVar4) || ((-1 < param_5 && (iVar4 < param_4)))) ||\n     ((-1 < iVar4 && ((iVar9 = iVar4, -1 < param_5 || (iVar4 < param_4))))))" ( (binary_expression "((param_3 < iVar4) || ((-1 < param_5 && (iVar4 < param_4)))) ||\n     ((-1 < iVar4 && ((iVar9 = iVar4, -1 < param_5 || (iVar4 < param_4)))))" (parenthesized_expression "((param_3 < iVar4) || ((-1 < param_5 && (iVar4 < param_4))))" ( (binary_expression "(param_3 < iVar4) || ((-1 < param_5 && (iVar4 < param_4)))" (parenthesized_expression "(param_3 < iVar4)" ( (binary_expression "param_3 < iVar4" identifier < identifier) )) || (parenthesized_expression "((-1 < param_5 && (iVar4 < param_4)))" ( (parenthesized_expression "(-1 < param_5 && (iVar4 < param_4))" ( (binary_expression "-1 < param_5 && (iVar4 < param_4)" (binary_expression "-1 < param_5" number_literal < identifier) && (parenthesized_expression "(iVar4 < param_4)" ( (binary_expression "iVar4 < param_4" identifier < identifier) ))) )) ))) )) || (parenthesized_expression "((-1 < iVar4 && ((iVar9 = iVar4, -1 < param_5 || (iVar4 < param_4)))))" ( (parenthesized_expression "(-1 < iVar4 && ((iVar9 = iVar4, -1 < param_5 || (iVar4 < param_4))))" ( (binary_expression "-1 < iVar4 && ((iVar9 = iVar4, -1 < param_5 || (iVar4 < param_4)))" (binary_expression "-1 < iVar4" number_literal < identifier) && (parenthesized_expression "((iVar9 = iVar4, -1 < param_5 || (iVar4 < param_4)))" ( (parenthesized_expression "(iVar9 = iVar4, -1 < param_5 || (iVar4 < param_4))" ( (comma_expression "iVar9 = iVar4, -1 < param_5 || (iVar4 < param_4)" (assignment_expression "iVar9 = iVar4" identifier = identifier) , (binary_expression "-1 < param_5 || (iVar4 < param_4)" (binary_expression "-1 < param_5" number_literal < identifier) || (parenthesized_expression "(iVar4 < param_4)" ( (binary_expression "iVar4 < param_4" identifier < identifier) )))) )) ))) )) ))) )) (compound_statement "{\n    bVar2 = *(byte *)(param_1 + 0x1c);\n    bVar3 = bVar2 >> 5 & 3;\n    if ((param_4 < iVar9) && ((*(int *)(param_1 + 0x10) != 0 && ((bVar2 & 8) == 0)))) {\n      FUN_00029ec0(param_1);\n      bVar2 = *(byte *)(param_1 + 0x1c);\n    }\n  }" { (expression_statement "bVar2 = *(byte *)(param_1 + 0x1c);" (assignment_expression "bVar2 = *(byte *)(param_1 + 0x1c)" identifier = (pointer_expression "*(byte *)(param_1 + 0x1c)" * (cast_expression "(byte *)(param_1 + 0x1c)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x1c)" ( (binary_expression "param_1 + 0x1c" identifier + number_literal) ))))) ;) (expression_statement "bVar3 = bVar2 >> 5 & 3;" (assignment_expression "bVar3 = bVar2 >> 5 & 3" identifier = (binary_expression "bVar2 >> 5 & 3" (binary_expression "bVar2 >> 5" identifier >> number_literal) & number_literal)) ;) (if_statement "if ((param_4 < iVar9) && ((*(int *)(param_1 + 0x10) != 0 && ((bVar2 & 8) == 0)))) {\n      FUN_00029ec0(param_1);\n      bVar2 = *(byte *)(param_1 + 0x1c);\n    }" if (parenthesized_expression "((param_4 < iVar9) && ((*(int *)(param_1 + 0x10) != 0 && ((bVar2 & 8) == 0))))" ( (binary_expression "(param_4 < iVar9) && ((*(int *)(param_1 + 0x10) != 0 && ((bVar2 & 8) == 0)))" (parenthesized_expression "(param_4 < iVar9)" ( (binary_expression "param_4 < iVar9" identifier < identifier) )) && (parenthesized_expression "((*(int *)(param_1 + 0x10) != 0 && ((bVar2 & 8) == 0)))" ( (parenthesized_expression "(*(int *)(param_1 + 0x10) != 0 && ((bVar2 & 8) == 0))" ( (binary_expression "*(int *)(param_1 + 0x10) != 0 && ((bVar2 & 8) == 0)" (binary_expression "*(int *)(param_1 + 0x10) != 0" (pointer_expression "*(int *)(param_1 + 0x10)" * (cast_expression "(int *)(param_1 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x10)" ( (binary_expression "param_1 + 0x10" identifier + number_literal) )))) != number_literal) && (parenthesized_expression "((bVar2 & 8) == 0)" ( (binary_expression "(bVar2 & 8) == 0" (parenthesized_expression "(bVar2 & 8)" ( (binary_expression "bVar2 & 8" identifier & number_literal) )) == number_literal) ))) )) ))) )) (compound_statement "{\n      FUN_00029ec0(param_1);\n      bVar2 = *(byte *)(param_1 + 0x1c);\n    }" { (expression_statement "FUN_00029ec0(param_1);" (call_expression "FUN_00029ec0(param_1)" identifier (argument_list "(param_1)" ( identifier ))) ;) (expression_statement "bVar2 = *(byte *)(param_1 + 0x1c);" (assignment_expression "bVar2 = *(byte *)(param_1 + 0x1c)" identifier = (pointer_expression "*(byte *)(param_1 + 0x1c)" * (cast_expression "(byte *)(param_1 + 0x1c)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x1c)" ( (binary_expression "param_1 + 0x1c" identifier + number_literal) ))))) ;) })) }) (else_clause "else {\n    iVar9 = 0;\n    bVar2 = *(byte *)(param_1 + 0x1c);\n    bVar3 = bVar2 >> 5 & 3;\n  }" else (compound_statement "{\n    iVar9 = 0;\n    bVar2 = *(byte *)(param_1 + 0x1c);\n    bVar3 = bVar2 >> 5 & 3;\n  }" { (expression_statement "iVar9 = 0;" (assignment_expression "iVar9 = 0" identifier = number_literal) ;) (expression_statement "bVar2 = *(byte *)(param_1 + 0x1c);" (assignment_expression "bVar2 = *(byte *)(param_1 + 0x1c)" identifier = (pointer_expression "*(byte *)(param_1 + 0x1c)" * (cast_expression "(byte *)(param_1 + 0x1c)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x1c)" ( (binary_expression "param_1 + 0x1c" identifier + number_literal) ))))) ;) (expression_statement "bVar3 = bVar2 >> 5 & 3;" (assignment_expression "bVar3 = bVar2 >> 5 & 3" identifier = (binary_expression "bVar2 >> 5 & 3" (binary_expression "bVar2 >> 5" identifier >> number_literal) & number_literal)) ;) }))) (if_statement "if (((bVar2 & 0x10) == 0) && (param_6 != (uint *)0x0)) {\n    if (((bVar2 & 6) == 4) && (local_24 = *param_6, local_24 <= *(uint *)(param_1 + 0x18))) {\n      if ((int)local_24 < 1) goto LAB_0002ac98;\n    }\n    else {\n      local_24 = *(uint *)(param_1 + 0x18) + 1;\n    }\n    __size = local_24 * 8;\n  }\n  else {\nLAB_0002ac98:\n    __size = 8;\n    local_24 = 1;\n    param_6 = (uint *)0x0;\n  }" if (parenthesized_expression "(((bVar2 & 0x10) == 0) && (param_6 != (uint *)0x0))" ( (binary_expression "((bVar2 & 0x10) == 0) && (param_6 != (uint *)0x0)" (parenthesized_expression "((bVar2 & 0x10) == 0)" ( (binary_expression "(bVar2 & 0x10) == 0" (parenthesized_expression "(bVar2 & 0x10)" ( (binary_expression "bVar2 & 0x10" identifier & number_literal) )) == number_literal) )) && (parenthesized_expression "(param_6 != (uint *)0x0)" ( (binary_expression "param_6 != (uint *)0x0" identifier != (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ))) )) (compound_statement "{\n    if (((bVar2 & 6) == 4) && (local_24 = *param_6, local_24 <= *(uint *)(param_1 + 0x18))) {\n      if ((int)local_24 < 1) goto LAB_0002ac98;\n    }\n    else {\n      local_24 = *(uint *)(param_1 + 0x18) + 1;\n    }\n    __size = local_24 * 8;\n  }" { (if_statement "if (((bVar2 & 6) == 4) && (local_24 = *param_6, local_24 <= *(uint *)(param_1 + 0x18))) {\n      if ((int)local_24 < 1) goto LAB_0002ac98;\n    }\n    else {\n      local_24 = *(uint *)(param_1 + 0x18) + 1;\n    }" if (parenthesized_expression "(((bVar2 & 6) == 4) && (local_24 = *param_6, local_24 <= *(uint *)(param_1 + 0x18)))" ( (binary_expression "((bVar2 & 6) == 4) && (local_24 = *param_6, local_24 <= *(uint *)(param_1 + 0x18))" (parenthesized_expression "((bVar2 & 6) == 4)" ( (binary_expression "(bVar2 & 6) == 4" (parenthesized_expression "(bVar2 & 6)" ( (binary_expression "bVar2 & 6" identifier & number_literal) )) == number_literal) )) && (parenthesized_expression "(local_24 = *param_6, local_24 <= *(uint *)(param_1 + 0x18))" ( (comma_expression "local_24 = *param_6, local_24 <= *(uint *)(param_1 + 0x18)" (assignment_expression "local_24 = *param_6" identifier = (pointer_expression "*param_6" * identifier)) , (binary_expression "local_24 <= *(uint *)(param_1 + 0x18)" identifier <= (pointer_expression "*(uint *)(param_1 + 0x18)" * (cast_expression "(uint *)(param_1 + 0x18)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x18)" ( (binary_expression "param_1 + 0x18" identifier + number_literal) )))))) ))) )) (compound_statement "{\n      if ((int)local_24 < 1) goto LAB_0002ac98;\n    }" { (if_statement "if ((int)local_24 < 1) goto LAB_0002ac98;" if (parenthesized_expression "((int)local_24 < 1)" ( (binary_expression "(int)local_24 < 1" (cast_expression "(int)local_24" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (goto_statement "goto LAB_0002ac98;" goto statement_identifier ;)) }) (else_clause "else {\n      local_24 = *(uint *)(param_1 + 0x18) + 1;\n    }" else (compound_statement "{\n      local_24 = *(uint *)(param_1 + 0x18) + 1;\n    }" { (expression_statement "local_24 = *(uint *)(param_1 + 0x18) + 1;" (assignment_expression "local_24 = *(uint *)(param_1 + 0x18) + 1" identifier = (binary_expression "*(uint *)(param_1 + 0x18) + 1" (pointer_expression "*(uint *)(param_1 + 0x18)" * (cast_expression "(uint *)(param_1 + 0x18)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x18)" ( (binary_expression "param_1 + 0x18" identifier + number_literal) )))) + number_literal)) ;) }))) (expression_statement "__size = local_24 * 8;" (assignment_expression "__size = local_24 * 8" identifier = (binary_expression "local_24 * 8" identifier * number_literal)) ;) }) (else_clause "else {\nLAB_0002ac98:\n    __size = 8;\n    local_24 = 1;\n    param_6 = (uint *)0x0;\n  }" else (compound_statement "{\nLAB_0002ac98:\n    __size = 8;\n    local_24 = 1;\n    param_6 = (uint *)0x0;\n  }" { (labeled_statement "LAB_0002ac98:\n    __size = 8;" statement_identifier : (expression_statement "__size = 8;" (assignment_expression "__size = 8" identifier = number_literal) ;)) (expression_statement "local_24 = 1;" (assignment_expression "local_24 = 1" identifier = number_literal) ;) (expression_statement "param_6 = (uint *)0x0;" (assignment_expression "param_6 = (uint *)0x0" identifier = (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) }))) (expression_statement "__ptr = (undefined4 *)malloc(__size);" (assignment_expression "__ptr = (undefined4 *)malloc(__size)" identifier = (cast_expression "(undefined4 *)malloc(__size)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "malloc(__size)" identifier (argument_list "(__size)" ( identifier ))))) ;) (if_statement "if (__ptr == (undefined4 *)0x0) {\n    return 0xfffffffe;\n  }" if (parenthesized_expression "(__ptr == (undefined4 *)0x0)" ( (binary_expression "__ptr == (undefined4 *)0x0" identifier == (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    return 0xfffffffe;\n  }" { (return_statement "return 0xfffffffe;" return number_literal ;) })) (expression_statement "iVar4 = FUN_00023920(param_1,param_2,param_3,param_4,iVar9,param_3,local_24,__ptr,bVar3);" (assignment_expression "iVar4 = FUN_00023920(param_1,param_2,param_3,param_4,iVar9,param_3,local_24,__ptr,bVar3)" identifier = (call_expression "FUN_00023920(param_1,param_2,param_3,param_4,iVar9,param_3,local_24,__ptr,bVar3)" identifier (argument_list "(param_1,param_2,param_3,param_4,iVar9,param_3,local_24,__ptr,bVar3)" ( identifier , identifier , identifier , identifier , identifier , identifier , identifier , identifier , identifier )))) ;) (if_statement "if (iVar4 == 0) {\n    if (param_6 != (uint *)0x0) {\n      uVar7 = local_24 + 1;\n      bVar2 = *(byte *)(param_1 + 0x1c) >> 1;\n      bVar3 = bVar2 & 3;\n      if ((bVar2 & 3) == 0) {\n        pvVar5 = malloc(uVar7 * 4);\n        param_6[1] = (uint)pvVar5;\n        if (pvVar5 != (void *)0x0) {\n          pvVar6 = malloc(uVar7 * 4);\n          param_6[2] = (uint)pvVar6;\n          if (pvVar6 != (void *)0x0) {\n            cVar10 = '\x01';\n            *param_6 = uVar7;\n            uVar8 = uVar7;\n            goto LAB_0002abce;\n          }\n          free(pvVar5);\n        }\nLAB_0002ae33:\n        cVar10 = '\0';\n      }\n      else {\n        if (bVar3 == 1) {\n          cVar10 = '\x01';\n          uVar8 = *param_6;\n          if (*param_6 < uVar7) {\n            pvVar5 = realloc((void *)param_6[1],uVar7 * 4);\n            if (pvVar5 == (void *)0x0) goto LAB_0002ae33;\n            pvVar6 = realloc((void *)param_6[2],uVar7 * 4);\n            if (pvVar6 == (void *)0x0) {\n              cVar10 = '\0';\n              free(pvVar5);\n              goto LAB_0002ac4a;\n            }\n            param_6[1] = (uint)pvVar5;\n            *param_6 = uVar7;\n            param_6[2] = (uint)pvVar6;\n            uVar8 = uVar7;\n          }\n        }\n        else {\n          if (bVar3 != 2) {\n                    /* WARNING: Subroutine does not return */\n            __assert_fail("regs_allocated == REGS_FIXED","lib/regexec.c",0x1f8,"re_copy_regs");\n          }\n          if (*param_6 < local_24) {\n                    /* WARNING: Subroutine does not return */\n            __assert_fail("regs->num_regs >= nregs","lib/regexec.c",0x1fa,"re_copy_regs");\n          }\n          cVar10 = '\x02';\n          uVar8 = *param_6;\n        }\nLAB_0002abce:\n        if ((int)local_24 < 1) {\n          uVar7 = 0;\n        }\n        else {\n          uVar8 = param_6[1];\n          uVar1 = param_6[2];\n          uVar7 = 0;\n          do {\n            *(undefined4 *)(uVar8 + uVar7 * 4) = __ptr[uVar7 * 2];\n            *(undefined4 *)(uVar1 + uVar7 * 4) = __ptr[uVar7 * 2 + 1];\n            uVar7 = uVar7 + 1;\n          } while (local_24 != uVar7);\n          uVar8 = *param_6;\n        }\n        if (uVar7 < uVar8) {\n          uVar8 = param_6[2];\n          uVar1 = param_6[1];\n          do {\n            uVar12 = uVar7 + 1;\n            *(undefined4 *)(uVar8 + uVar7 * 4) = 0xffffffff;\n            *(undefined4 *)(uVar1 + uVar7 * 4) = 0xffffffff;\n            uVar7 = uVar12;\n          } while (uVar12 < *param_6);\n        }\n      }\nLAB_0002ac4a:\n      *(byte *)(param_1 + 0x1c) = *(byte *)(param_1 + 0x1c) & 0xf9 | cVar10 * '\x02';\n      if (cVar10 == '\0') goto LAB_0002ab5b;\n    }\n    uVar11 = *__ptr;\n  }\n  else {\n    uVar11 = 0xffffffff;\n    if (iVar4 == 1) goto LAB_0002ab60;\nLAB_0002ab5b:\n    uVar11 = 0xfffffffe;\n  }" if (parenthesized_expression "(iVar4 == 0)" ( (binary_expression "iVar4 == 0" identifier == number_literal) )) (compound_statement "{\n    if (param_6 != (uint *)0x0) {\n      uVar7 = local_24 + 1;\n      bVar2 = *(byte *)(param_1 + 0x1c) >> 1;\n      bVar3 = bVar2 & 3;\n      if ((bVar2 & 3) == 0) {\n        pvVar5 = malloc(uVar7 * 4);\n        param_6[1] = (uint)pvVar5;\n        if (pvVar5 != (void *)0x0) {\n          pvVar6 = malloc(uVar7 * 4);\n          param_6[2] = (uint)pvVar6;\n          if (pvVar6 != (void *)0x0) {\n            cVar10 = '\x01';\n            *param_6 = uVar7;\n            uVar8 = uVar7;\n            goto LAB_0002abce;\n          }\n          free(pvVar5);\n        }\nLAB_0002ae33:\n        cVar10 = '\0';\n      }\n      else {\n        if (bVar3 == 1) {\n          cVar10 = '\x01';\n          uVar8 = *param_6;\n          if (*param_6 < uVar7) {\n            pvVar5 = realloc((void *)param_6[1],uVar7 * 4);\n            if (pvVar5 == (void *)0x0) goto LAB_0002ae33;\n            pvVar6 = realloc((void *)param_6[2],uVar7 * 4);\n            if (pvVar6 == (void *)0x0) {\n              cVar10 = '\0';\n              free(pvVar5);\n              goto LAB_0002ac4a;\n            }\n            param_6[1] = (uint)pvVar5;\n            *param_6 = uVar7;\n            param_6[2] = (uint)pvVar6;\n            uVar8 = uVar7;\n          }\n        }\n        else {\n          if (bVar3 != 2) {\n                    /* WARNING: Subroutine does not return */\n            __assert_fail("regs_allocated == REGS_FIXED","lib/regexec.c",0x1f8,"re_copy_regs");\n          }\n          if (*param_6 < local_24) {\n                    /* WARNING: Subroutine does not return */\n            __assert_fail("regs->num_regs >= nregs","lib/regexec.c",0x1fa,"re_copy_regs");\n          }\n          cVar10 = '\x02';\n          uVar8 = *param_6;\n        }\nLAB_0002abce:\n        if ((int)local_24 < 1) {\n          uVar7 = 0;\n        }\n        else {\n          uVar8 = param_6[1];\n          uVar1 = param_6[2];\n          uVar7 = 0;\n          do {\n            *(undefined4 *)(uVar8 + uVar7 * 4) = __ptr[uVar7 * 2];\n            *(undefined4 *)(uVar1 + uVar7 * 4) = __ptr[uVar7 * 2 + 1];\n            uVar7 = uVar7 + 1;\n          } while (local_24 != uVar7);\n          uVar8 = *param_6;\n        }\n        if (uVar7 < uVar8) {\n          uVar8 = param_6[2];\n          uVar1 = param_6[1];\n          do {\n            uVar12 = uVar7 + 1;\n            *(undefined4 *)(uVar8 + uVar7 * 4) = 0xffffffff;\n            *(undefined4 *)(uVar1 + uVar7 * 4) = 0xffffffff;\n            uVar7 = uVar12;\n          } while (uVar12 < *param_6);\n        }\n      }\nLAB_0002ac4a:\n      *(byte *)(param_1 + 0x1c) = *(byte *)(param_1 + 0x1c) & 0xf9 | cVar10 * '\x02';\n      if (cVar10 == '\0') goto LAB_0002ab5b;\n    }\n    uVar11 = *__ptr;\n  }" { (if_statement "if (param_6 != (uint *)0x0) {\n      uVar7 = local_24 + 1;\n      bVar2 = *(byte *)(param_1 + 0x1c) >> 1;\n      bVar3 = bVar2 & 3;\n      if ((bVar2 & 3) == 0) {\n        pvVar5 = malloc(uVar7 * 4);\n        param_6[1] = (uint)pvVar5;\n        if (pvVar5 != (void *)0x0) {\n          pvVar6 = malloc(uVar7 * 4);\n          param_6[2] = (uint)pvVar6;\n          if (pvVar6 != (void *)0x0) {\n            cVar10 = '\x01';\n            *param_6 = uVar7;\n            uVar8 = uVar7;\n            goto LAB_0002abce;\n          }\n          free(pvVar5);\n        }\nLAB_0002ae33:\n        cVar10 = '\0';\n      }\n      else {\n        if (bVar3 == 1) {\n          cVar10 = '\x01';\n          uVar8 = *param_6;\n          if (*param_6 < uVar7) {\n            pvVar5 = realloc((void *)param_6[1],uVar7 * 4);\n            if (pvVar5 == (void *)0x0) goto LAB_0002ae33;\n            pvVar6 = realloc((void *)param_6[2],uVar7 * 4);\n            if (pvVar6 == (void *)0x0) {\n              cVar10 = '\0';\n              free(pvVar5);\n              goto LAB_0002ac4a;\n            }\n            param_6[1] = (uint)pvVar5;\n            *param_6 = uVar7;\n            param_6[2] = (uint)pvVar6;\n            uVar8 = uVar7;\n          }\n        }\n        else {\n          if (bVar3 != 2) {\n                    /* WARNING: Subroutine does not return */\n            __assert_fail("regs_allocated == REGS_FIXED","lib/regexec.c",0x1f8,"re_copy_regs");\n          }\n          if (*param_6 < local_24) {\n                    /* WARNING: Subroutine does not return */\n            __assert_fail("regs->num_regs >= nregs","lib/regexec.c",0x1fa,"re_copy_regs");\n          }\n          cVar10 = '\x02';\n          uVar8 = *param_6;\n        }\nLAB_0002abce:\n        if ((int)local_24 < 1) {\n          uVar7 = 0;\n        }\n        else {\n          uVar8 = param_6[1];\n          uVar1 = param_6[2];\n          uVar7 = 0;\n          do {\n            *(undefined4 *)(uVar8 + uVar7 * 4) = __ptr[uVar7 * 2];\n            *(undefined4 *)(uVar1 + uVar7 * 4) = __ptr[uVar7 * 2 + 1];\n            uVar7 = uVar7 + 1;\n          } while (local_24 != uVar7);\n          uVar8 = *param_6;\n        }\n        if (uVar7 < uVar8) {\n          uVar8 = param_6[2];\n          uVar1 = param_6[1];\n          do {\n            uVar12 = uVar7 + 1;\n            *(undefined4 *)(uVar8 + uVar7 * 4) = 0xffffffff;\n            *(undefined4 *)(uVar1 + uVar7 * 4) = 0xffffffff;\n            uVar7 = uVar12;\n          } while (uVar12 < *param_6);\n        }\n      }\nLAB_0002ac4a:\n      *(byte *)(param_1 + 0x1c) = *(byte *)(param_1 + 0x1c) & 0xf9 | cVar10 * '\x02';\n      if (cVar10 == '\0') goto LAB_0002ab5b;\n    }" if (parenthesized_expression "(param_6 != (uint *)0x0)" ( (binary_expression "param_6 != (uint *)0x0" identifier != (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      uVar7 = local_24 + 1;\n      bVar2 = *(byte *)(param_1 + 0x1c) >> 1;\n      bVar3 = bVar2 & 3;\n      if ((bVar2 & 3) == 0) {\n        pvVar5 = malloc(uVar7 * 4);\n        param_6[1] = (uint)pvVar5;\n        if (pvVar5 != (void *)0x0) {\n          pvVar6 = malloc(uVar7 * 4);\n          param_6[2] = (uint)pvVar6;\n          if (pvVar6 != (void *)0x0) {\n            cVar10 = '\x01';\n            *param_6 = uVar7;\n            uVar8 = uVar7;\n            goto LAB_0002abce;\n          }\n          free(pvVar5);\n        }\nLAB_0002ae33:\n        cVar10 = '\0';\n      }\n      else {\n        if (bVar3 == 1) {\n          cVar10 = '\x01';\n          uVar8 = *param_6;\n          if (*param_6 < uVar7) {\n            pvVar5 = realloc((void *)param_6[1],uVar7 * 4);\n            if (pvVar5 == (void *)0x0) goto LAB_0002ae33;\n            pvVar6 = realloc((void *)param_6[2],uVar7 * 4);\n            if (pvVar6 == (void *)0x0) {\n              cVar10 = '\0';\n              free(pvVar5);\n              goto LAB_0002ac4a;\n            }\n            param_6[1] = (uint)pvVar5;\n            *param_6 = uVar7;\n            param_6[2] = (uint)pvVar6;\n            uVar8 = uVar7;\n          }\n        }\n        else {\n          if (bVar3 != 2) {\n                    /* WARNING: Subroutine does not return */\n            __assert_fail("regs_allocated == REGS_FIXED","lib/regexec.c",0x1f8,"re_copy_regs");\n          }\n          if (*param_6 < local_24) {\n                    /* WARNING: Subroutine does not return */\n            __assert_fail("regs->num_regs >= nregs","lib/regexec.c",0x1fa,"re_copy_regs");\n          }\n          cVar10 = '\x02';\n          uVar8 = *param_6;\n        }\nLAB_0002abce:\n        if ((int)local_24 < 1) {\n          uVar7 = 0;\n        }\n        else {\n          uVar8 = param_6[1];\n          uVar1 = param_6[2];\n          uVar7 = 0;\n          do {\n            *(undefined4 *)(uVar8 + uVar7 * 4) = __ptr[uVar7 * 2];\n            *(undefined4 *)(uVar1 + uVar7 * 4) = __ptr[uVar7 * 2 + 1];\n            uVar7 = uVar7 + 1;\n          } while (local_24 != uVar7);\n          uVar8 = *param_6;\n        }\n        if (uVar7 < uVar8) {\n          uVar8 = param_6[2];\n          uVar1 = param_6[1];\n          do {\n            uVar12 = uVar7 + 1;\n            *(undefined4 *)(uVar8 + uVar7 * 4) = 0xffffffff;\n            *(undefined4 *)(uVar1 + uVar7 * 4) = 0xffffffff;\n            uVar7 = uVar12;\n          } while (uVar12 < *param_6);\n        }\n      }\nLAB_0002ac4a:\n      *(byte *)(param_1 + 0x1c) = *(byte *)(param_1 + 0x1c) & 0xf9 | cVar10 * '\x02';\n      if (cVar10 == '\0') goto LAB_0002ab5b;\n    }" { (expression_statement "uVar7 = local_24 + 1;" (assignment_expression "uVar7 = local_24 + 1" identifier = (binary_expression "local_24 + 1" identifier + number_literal)) ;) (expression_statement "bVar2 = *(byte *)(param_1 + 0x1c) >> 1;" (assignment_expression "bVar2 = *(byte *)(param_1 + 0x1c) >> 1" identifier = (binary_expression "*(byte *)(param_1 + 0x1c) >> 1" (pointer_expression "*(byte *)(param_1 + 0x1c)" * (cast_expression "(byte *)(param_1 + 0x1c)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x1c)" ( (binary_expression "param_1 + 0x1c" identifier + number_literal) )))) >> number_literal)) ;) (expression_statement "bVar3 = bVar2 & 3;" (assignment_expression "bVar3 = bVar2 & 3" identifier = (binary_expression "bVar2 & 3" identifier & number_literal)) ;) (if_statement "if ((bVar2 & 3) == 0) {\n        pvVar5 = malloc(uVar7 * 4);\n        param_6[1] = (uint)pvVar5;\n        if (pvVar5 != (void *)0x0) {\n          pvVar6 = malloc(uVar7 * 4);\n          param_6[2] = (uint)pvVar6;\n          if (pvVar6 != (void *)0x0) {\n            cVar10 = '\x01';\n            *param_6 = uVar7;\n            uVar8 = uVar7;\n            goto LAB_0002abce;\n          }\n          free(pvVar5);\n        }\nLAB_0002ae33:\n        cVar10 = '\0';\n      }\n      else {\n        if (bVar3 == 1) {\n          cVar10 = '\x01';\n          uVar8 = *param_6;\n          if (*param_6 < uVar7) {\n            pvVar5 = realloc((void *)param_6[1],uVar7 * 4);\n            if (pvVar5 == (void *)0x0) goto LAB_0002ae33;\n            pvVar6 = realloc((void *)param_6[2],uVar7 * 4);\n            if (pvVar6 == (void *)0x0) {\n              cVar10 = '\0';\n              free(pvVar5);\n              goto LAB_0002ac4a;\n            }\n            param_6[1] = (uint)pvVar5;\n            *param_6 = uVar7;\n            param_6[2] = (uint)pvVar6;\n            uVar8 = uVar7;\n          }\n        }\n        else {\n          if (bVar3 != 2) {\n                    /* WARNING: Subroutine does not return */\n            __assert_fail("regs_allocated == REGS_FIXED","lib/regexec.c",0x1f8,"re_copy_regs");\n          }\n          if (*param_6 < local_24) {\n                    /* WARNING: Subroutine does not return */\n            __assert_fail("regs->num_regs >= nregs","lib/regexec.c",0x1fa,"re_copy_regs");\n          }\n          cVar10 = '\x02';\n          uVar8 = *param_6;\n        }\nLAB_0002abce:\n        if ((int)local_24 < 1) {\n          uVar7 = 0;\n        }\n        else {\n          uVar8 = param_6[1];\n          uVar1 = param_6[2];\n          uVar7 = 0;\n          do {\n            *(undefined4 *)(uVar8 + uVar7 * 4) = __ptr[uVar7 * 2];\n            *(undefined4 *)(uVar1 + uVar7 * 4) = __ptr[uVar7 * 2 + 1];\n            uVar7 = uVar7 + 1;\n          } while (local_24 != uVar7);\n          uVar8 = *param_6;\n        }\n        if (uVar7 < uVar8) {\n          uVar8 = param_6[2];\n          uVar1 = param_6[1];\n          do {\n            uVar12 = uVar7 + 1;\n            *(undefined4 *)(uVar8 + uVar7 * 4) = 0xffffffff;\n            *(undefined4 *)(uVar1 + uVar7 * 4) = 0xffffffff;\n            uVar7 = uVar12;\n          } while (uVar12 < *param_6);\n        }\n      }" if (parenthesized_expression "((bVar2 & 3) == 0)" ( (binary_expression "(bVar2 & 3) == 0" (parenthesized_expression "(bVar2 & 3)" ( (binary_expression "bVar2 & 3" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n        pvVar5 = malloc(uVar7 * 4);\n        param_6[1] = (uint)pvVar5;\n        if (pvVar5 != (void *)0x0) {\n          pvVar6 = malloc(uVar7 * 4);\n          param_6[2] = (uint)pvVar6;\n          if (pvVar6 != (void *)0x0) {\n            cVar10 = '\x01';\n            *param_6 = uVar7;\n            uVar8 = uVar7;\n            goto LAB_0002abce;\n          }\n          free(pvVar5);\n        }\nLAB_0002ae33:\n        cVar10 = '\0';\n      }" { (expression_statement "pvVar5 = malloc(uVar7 * 4);" (assignment_expression "pvVar5 = malloc(uVar7 * 4)" identifier = (call_expression "malloc(uVar7 * 4)" identifier (argument_list "(uVar7 * 4)" ( (binary_expression "uVar7 * 4" identifier * number_literal) )))) ;) (expression_statement "param_6[1] = (uint)pvVar5;" (assignment_expression "param_6[1] = (uint)pvVar5" (subscript_expression "param_6[1]" identifier [ number_literal ]) = (cast_expression "(uint)pvVar5" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (if_statement "if (pvVar5 != (void *)0x0) {\n          pvVar6 = malloc(uVar7 * 4);\n          param_6[2] = (uint)pvVar6;\n          if (pvVar6 != (void *)0x0) {\n            cVar10 = '\x01';\n            *param_6 = uVar7;\n            uVar8 = uVar7;\n            goto LAB_0002abce;\n          }\n          free(pvVar5);\n        }" if (parenthesized_expression "(pvVar5 != (void *)0x0)" ( (binary_expression "pvVar5 != (void *)0x0" identifier != (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          pvVar6 = malloc(uVar7 * 4);\n          param_6[2] = (uint)pvVar6;\n          if (pvVar6 != (void *)0x0) {\n            cVar10 = '\x01';\n            *param_6 = uVar7;\n            uVar8 = uVar7;\n            goto LAB_0002abce;\n          }\n          free(pvVar5);\n        }" { (expression_statement "pvVar6 = malloc(uVar7 * 4);" (assignment_expression "pvVar6 = malloc(uVar7 * 4)" identifier = (call_expression "malloc(uVar7 * 4)" identifier (argument_list "(uVar7 * 4)" ( (binary_expression "uVar7 * 4" identifier * number_literal) )))) ;) (expression_statement "param_6[2] = (uint)pvVar6;" (assignment_expression "param_6[2] = (uint)pvVar6" (subscript_expression "param_6[2]" identifier [ number_literal ]) = (cast_expression "(uint)pvVar6" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (if_statement "if (pvVar6 != (void *)0x0) {\n            cVar10 = '\x01';\n            *param_6 = uVar7;\n            uVar8 = uVar7;\n            goto LAB_0002abce;\n          }" if (parenthesized_expression "(pvVar6 != (void *)0x0)" ( (binary_expression "pvVar6 != (void *)0x0" identifier != (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n            cVar10 = '\x01';\n            *param_6 = uVar7;\n            uVar8 = uVar7;\n            goto LAB_0002abce;\n          }" { (expression_statement "cVar10 = '\x01';" (assignment_expression "cVar10 = '\x01'" identifier = (char_literal "'\x01'" ' escape_sequence ')) ;) (expression_statement "*param_6 = uVar7;" (assignment_expression "*param_6 = uVar7" (pointer_expression "*param_6" * identifier) = identifier) ;) (expression_statement "uVar8 = uVar7;" (assignment_expression "uVar8 = uVar7" identifier = identifier) ;) (goto_statement "goto LAB_0002abce;" goto statement_identifier ;) })) (expression_statement "free(pvVar5);" (call_expression "free(pvVar5)" identifier (argument_list "(pvVar5)" ( identifier ))) ;) })) (labeled_statement "LAB_0002ae33:\n        cVar10 = '\0';" statement_identifier : (expression_statement "cVar10 = '\0';" (assignment_expression "cVar10 = '\0'" identifier = (char_literal "'\0'" ' escape_sequence ')) ;)) }) (else_clause "else {\n        if (bVar3 == 1) {\n          cVar10 = '\x01';\n          uVar8 = *param_6;\n          if (*param_6 < uVar7) {\n            pvVar5 = realloc((void *)param_6[1],uVar7 * 4);\n            if (pvVar5 == (void *)0x0) goto LAB_0002ae33;\n            pvVar6 = realloc((void *)param_6[2],uVar7 * 4);\n            if (pvVar6 == (void *)0x0) {\n              cVar10 = '\0';\n              free(pvVar5);\n              goto LAB_0002ac4a;\n            }\n            param_6[1] = (uint)pvVar5;\n            *param_6 = uVar7;\n            param_6[2] = (uint)pvVar6;\n            uVar8 = uVar7;\n          }\n        }\n        else {\n          if (bVar3 != 2) {\n                    /* WARNING: Subroutine does not return */\n            __assert_fail("regs_allocated == REGS_FIXED","lib/regexec.c",0x1f8,"re_copy_regs");\n          }\n          if (*param_6 < local_24) {\n                    /* WARNING: Subroutine does not return */\n            __assert_fail("regs->num_regs >= nregs","lib/regexec.c",0x1fa,"re_copy_regs");\n          }\n          cVar10 = '\x02';\n          uVar8 = *param_6;\n        }\nLAB_0002abce:\n        if ((int)local_24 < 1) {\n          uVar7 = 0;\n        }\n        else {\n          uVar8 = param_6[1];\n          uVar1 = param_6[2];\n          uVar7 = 0;\n          do {\n            *(undefined4 *)(uVar8 + uVar7 * 4) = __ptr[uVar7 * 2];\n            *(undefined4 *)(uVar1 + uVar7 * 4) = __ptr[uVar7 * 2 + 1];\n            uVar7 = uVar7 + 1;\n          } while (local_24 != uVar7);\n          uVar8 = *param_6;\n        }\n        if (uVar7 < uVar8) {\n          uVar8 = param_6[2];\n          uVar1 = param_6[1];\n          do {\n            uVar12 = uVar7 + 1;\n            *(undefined4 *)(uVar8 + uVar7 * 4) = 0xffffffff;\n            *(undefined4 *)(uVar1 + uVar7 * 4) = 0xffffffff;\n            uVar7 = uVar12;\n          } while (uVar12 < *param_6);\n        }\n      }" else (compound_statement "{\n        if (bVar3 == 1) {\n          cVar10 = '\x01';\n          uVar8 = *param_6;\n          if (*param_6 < uVar7) {\n            pvVar5 = realloc((void *)param_6[1],uVar7 * 4);\n            if (pvVar5 == (void *)0x0) goto LAB_0002ae33;\n            pvVar6 = realloc((void *)param_6[2],uVar7 * 4);\n            if (pvVar6 == (void *)0x0) {\n              cVar10 = '\0';\n              free(pvVar5);\n              goto LAB_0002ac4a;\n            }\n            param_6[1] = (uint)pvVar5;\n            *param_6 = uVar7;\n            param_6[2] = (uint)pvVar6;\n            uVar8 = uVar7;\n          }\n        }\n        else {\n          if (bVar3 != 2) {\n                    /* WARNING: Subroutine does not return */\n            __assert_fail("regs_allocated == REGS_FIXED","lib/regexec.c",0x1f8,"re_copy_regs");\n          }\n          if (*param_6 < local_24) {\n                    /* WARNING: Subroutine does not return */\n            __assert_fail("regs->num_regs >= nregs","lib/regexec.c",0x1fa,"re_copy_regs");\n          }\n          cVar10 = '\x02';\n          uVar8 = *param_6;\n        }\nLAB_0002abce:\n        if ((int)local_24 < 1) {\n          uVar7 = 0;\n        }\n        else {\n          uVar8 = param_6[1];\n          uVar1 = param_6[2];\n          uVar7 = 0;\n          do {\n            *(undefined4 *)(uVar8 + uVar7 * 4) = __ptr[uVar7 * 2];\n            *(undefined4 *)(uVar1 + uVar7 * 4) = __ptr[uVar7 * 2 + 1];\n            uVar7 = uVar7 + 1;\n          } while (local_24 != uVar7);\n          uVar8 = *param_6;\n        }\n        if (uVar7 < uVar8) {\n          uVar8 = param_6[2];\n          uVar1 = param_6[1];\n          do {\n            uVar12 = uVar7 + 1;\n            *(undefined4 *)(uVar8 + uVar7 * 4) = 0xffffffff;\n            *(undefined4 *)(uVar1 + uVar7 * 4) = 0xffffffff;\n            uVar7 = uVar12;\n          } while (uVar12 < *param_6);\n        }\n      }" { (if_statement "if (bVar3 == 1) {\n          cVar10 = '\x01';\n          uVar8 = *param_6;\n          if (*param_6 < uVar7) {\n            pvVar5 = realloc((void *)param_6[1],uVar7 * 4);\n            if (pvVar5 == (void *)0x0) goto LAB_0002ae33;\n            pvVar6 = realloc((void *)param_6[2],uVar7 * 4);\n            if (pvVar6 == (void *)0x0) {\n              cVar10 = '\0';\n              free(pvVar5);\n              goto LAB_0002ac4a;\n            }\n            param_6[1] = (uint)pvVar5;\n            *param_6 = uVar7;\n            param_6[2] = (uint)pvVar6;\n            uVar8 = uVar7;\n          }\n        }\n        else {\n          if (bVar3 != 2) {\n                    /* WARNING: Subroutine does not return */\n            __assert_fail("regs_allocated == REGS_FIXED","lib/regexec.c",0x1f8,"re_copy_regs");\n          }\n          if (*param_6 < local_24) {\n                    /* WARNING: Subroutine does not return */\n            __assert_fail("regs->num_regs >= nregs","lib/regexec.c",0x1fa,"re_copy_regs");\n          }\n          cVar10 = '\x02';\n          uVar8 = *param_6;\n        }" if (parenthesized_expression "(bVar3 == 1)" ( (binary_expression "bVar3 == 1" identifier == number_literal) )) (compound_statement "{\n          cVar10 = '\x01';\n          uVar8 = *param_6;\n          if (*param_6 < uVar7) {\n            pvVar5 = realloc((void *)param_6[1],uVar7 * 4);\n            if (pvVar5 == (void *)0x0) goto LAB_0002ae33;\n            pvVar6 = realloc((void *)param_6[2],uVar7 * 4);\n            if (pvVar6 == (void *)0x0) {\n              cVar10 = '\0';\n              free(pvVar5);\n              goto LAB_0002ac4a;\n            }\n            param_6[1] = (uint)pvVar5;\n            *param_6 = uVar7;\n            param_6[2] = (uint)pvVar6;\n            uVar8 = uVar7;\n          }\n        }" { (expression_statement "cVar10 = '\x01';" (assignment_expression "cVar10 = '\x01'" identifier = (char_literal "'\x01'" ' escape_sequence ')) ;) (expression_statement "uVar8 = *param_6;" (assignment_expression "uVar8 = *param_6" identifier = (pointer_expression "*param_6" * identifier)) ;) (if_statement "if (*param_6 < uVar7) {\n            pvVar5 = realloc((void *)param_6[1],uVar7 * 4);\n            if (pvVar5 == (void *)0x0) goto LAB_0002ae33;\n            pvVar6 = realloc((void *)param_6[2],uVar7 * 4);\n            if (pvVar6 == (void *)0x0) {\n              cVar10 = '\0';\n              free(pvVar5);\n              goto LAB_0002ac4a;\n            }\n            param_6[1] = (uint)pvVar5;\n            *param_6 = uVar7;\n            param_6[2] = (uint)pvVar6;\n            uVar8 = uVar7;\n          }" if (parenthesized_expression "(*param_6 < uVar7)" ( (binary_expression "*param_6 < uVar7" (pointer_expression "*param_6" * identifier) < identifier) )) (compound_statement "{\n            pvVar5 = realloc((void *)param_6[1],uVar7 * 4);\n            if (pvVar5 == (void *)0x0) goto LAB_0002ae33;\n            pvVar6 = realloc((void *)param_6[2],uVar7 * 4);\n            if (pvVar6 == (void *)0x0) {\n              cVar10 = '\0';\n              free(pvVar5);\n              goto LAB_0002ac4a;\n            }\n            param_6[1] = (uint)pvVar5;\n            *param_6 = uVar7;\n            param_6[2] = (uint)pvVar6;\n            uVar8 = uVar7;\n          }" { (expression_statement "pvVar5 = realloc((void *)param_6[1],uVar7 * 4);" (assignment_expression "pvVar5 = realloc((void *)param_6[1],uVar7 * 4)" identifier = (call_expression "realloc((void *)param_6[1],uVar7 * 4)" identifier (argument_list "((void *)param_6[1],uVar7 * 4)" ( (cast_expression "(void *)param_6[1]" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_6[1]" identifier [ number_literal ])) , (binary_expression "uVar7 * 4" identifier * number_literal) )))) ;) (if_statement "if (pvVar5 == (void *)0x0) goto LAB_0002ae33;" if (parenthesized_expression "(pvVar5 == (void *)0x0)" ( (binary_expression "pvVar5 == (void *)0x0" identifier == (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_0002ae33;" goto statement_identifier ;)) (expression_statement "pvVar6 = realloc((void *)param_6[2],uVar7 * 4);" (assignment_expression "pvVar6 = realloc((void *)param_6[2],uVar7 * 4)" identifier = (call_expression "realloc((void *)param_6[2],uVar7 * 4)" identifier (argument_list "((void *)param_6[2],uVar7 * 4)" ( (cast_expression "(void *)param_6[2]" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_6[2]" identifier [ number_literal ])) , (binary_expression "uVar7 * 4" identifier * number_literal) )))) ;) (if_statement "if (pvVar6 == (void *)0x0) {\n              cVar10 = '\0';\n              free(pvVar5);\n              goto LAB_0002ac4a;\n            }" if (parenthesized_expression "(pvVar6 == (void *)0x0)" ( (binary_expression "pvVar6 == (void *)0x0" identifier == (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n              cVar10 = '\0';\n              free(pvVar5);\n              goto LAB_0002ac4a;\n            }" { (expression_statement "cVar10 = '\0';" (assignment_expression "cVar10 = '\0'" identifier = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "free(pvVar5);" (call_expression "free(pvVar5)" identifier (argument_list "(pvVar5)" ( identifier ))) ;) (goto_statement "goto LAB_0002ac4a;" goto statement_identifier ;) })) (expression_statement "param_6[1] = (uint)pvVar5;" (assignment_expression "param_6[1] = (uint)pvVar5" (subscript_expression "param_6[1]" identifier [ number_literal ]) = (cast_expression "(uint)pvVar5" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (expression_statement "*param_6 = uVar7;" (assignment_expression "*param_6 = uVar7" (pointer_expression "*param_6" * identifier) = identifier) ;) (expression_statement "param_6[2] = (uint)pvVar6;" (assignment_expression "param_6[2] = (uint)pvVar6" (subscript_expression "param_6[2]" identifier [ number_literal ]) = (cast_expression "(uint)pvVar6" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (expression_statement "uVar8 = uVar7;" (assignment_expression "uVar8 = uVar7" identifier = identifier) ;) })) }) (else_clause "else {\n          if (bVar3 != 2) {\n                    /* WARNING: Subroutine does not return */\n            __assert_fail("regs_allocated == REGS_FIXED","lib/regexec.c",0x1f8,"re_copy_regs");\n          }\n          if (*param_6 < local_24) {\n                    /* WARNING: Subroutine does not return */\n            __assert_fail("regs->num_regs >= nregs","lib/regexec.c",0x1fa,"re_copy_regs");\n          }\n          cVar10 = '\x02';\n          uVar8 = *param_6;\n        }" else (compound_statement "{\n          if (bVar3 != 2) {\n                    /* WARNING: Subroutine does not return */\n            __assert_fail("regs_allocated == REGS_FIXED","lib/regexec.c",0x1f8,"re_copy_regs");\n          }\n          if (*param_6 < local_24) {\n                    /* WARNING: Subroutine does not return */\n            __assert_fail("regs->num_regs >= nregs","lib/regexec.c",0x1fa,"re_copy_regs");\n          }\n          cVar10 = '\x02';\n          uVar8 = *param_6;\n        }" { (if_statement "if (bVar3 != 2) {\n                    /* WARNING: Subroutine does not return */\n            __assert_fail("regs_allocated == REGS_FIXED","lib/regexec.c",0x1f8,"re_copy_regs");\n          }" if (parenthesized_expression "(bVar3 != 2)" ( (binary_expression "bVar3 != 2" identifier != number_literal) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n            __assert_fail("regs_allocated == REGS_FIXED","lib/regexec.c",0x1f8,"re_copy_regs");\n          }" { comment (expression_statement "__assert_fail("regs_allocated == REGS_FIXED","lib/regexec.c",0x1f8,"re_copy_regs");" (call_expression "__assert_fail("regs_allocated == REGS_FIXED","lib/regexec.c",0x1f8,"re_copy_regs")" identifier (argument_list "("regs_allocated == REGS_FIXED","lib/regexec.c",0x1f8,"re_copy_regs")" ( (string_literal ""regs_allocated == REGS_FIXED"" " string_content ") , (string_literal ""lib/regexec.c"" " string_content ") , number_literal , (string_literal ""re_copy_regs"" " string_content ") ))) ;) })) (if_statement "if (*param_6 < local_24) {\n                    /* WARNING: Subroutine does not return */\n            __assert_fail("regs->num_regs >= nregs","lib/regexec.c",0x1fa,"re_copy_regs");\n          }" if (parenthesized_expression "(*param_6 < local_24)" ( (binary_expression "*param_6 < local_24" (pointer_expression "*param_6" * identifier) < identifier) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n            __assert_fail("regs->num_regs >= nregs","lib/regexec.c",0x1fa,"re_copy_regs");\n          }" { comment (expression_statement "__assert_fail("regs->num_regs >= nregs","lib/regexec.c",0x1fa,"re_copy_regs");" (call_expression "__assert_fail("regs->num_regs >= nregs","lib/regexec.c",0x1fa,"re_copy_regs")" identifier (argument_list "("regs->num_regs >= nregs","lib/regexec.c",0x1fa,"re_copy_regs")" ( (string_literal ""regs->num_regs >= nregs"" " string_content ") , (string_literal ""lib/regexec.c"" " string_content ") , number_literal , (string_literal ""re_copy_regs"" " string_content ") ))) ;) })) (expression_statement "cVar10 = '\x02';" (assignment_expression "cVar10 = '\x02'" identifier = (char_literal "'\x02'" ' escape_sequence ')) ;) (expression_statement "uVar8 = *param_6;" (assignment_expression "uVar8 = *param_6" identifier = (pointer_expression "*param_6" * identifier)) ;) }))) (labeled_statement "LAB_0002abce:\n        if ((int)local_24 < 1) {\n          uVar7 = 0;\n        }\n        else {\n          uVar8 = param_6[1];\n          uVar1 = param_6[2];\n          uVar7 = 0;\n          do {\n            *(undefined4 *)(uVar8 + uVar7 * 4) = __ptr[uVar7 * 2];\n            *(undefined4 *)(uVar1 + uVar7 * 4) = __ptr[uVar7 * 2 + 1];\n            uVar7 = uVar7 + 1;\n          } while (local_24 != uVar7);\n          uVar8 = *param_6;\n        }" statement_identifier : (if_statement "if ((int)local_24 < 1) {\n          uVar7 = 0;\n        }\n        else {\n          uVar8 = param_6[1];\n          uVar1 = param_6[2];\n          uVar7 = 0;\n          do {\n            *(undefined4 *)(uVar8 + uVar7 * 4) = __ptr[uVar7 * 2];\n            *(undefined4 *)(uVar1 + uVar7 * 4) = __ptr[uVar7 * 2 + 1];\n            uVar7 = uVar7 + 1;\n          } while (local_24 != uVar7);\n          uVar8 = *param_6;\n        }" if (parenthesized_expression "((int)local_24 < 1)" ( (binary_expression "(int)local_24 < 1" (cast_expression "(int)local_24" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n          uVar7 = 0;\n        }" { (expression_statement "uVar7 = 0;" (assignment_expression "uVar7 = 0" identifier = number_literal) ;) }) (else_clause "else {\n          uVar8 = param_6[1];\n          uVar1 = param_6[2];\n          uVar7 = 0;\n          do {\n            *(undefined4 *)(uVar8 + uVar7 * 4) = __ptr[uVar7 * 2];\n            *(undefined4 *)(uVar1 + uVar7 * 4) = __ptr[uVar7 * 2 + 1];\n            uVar7 = uVar7 + 1;\n          } while (local_24 != uVar7);\n          uVar8 = *param_6;\n        }" else (compound_statement "{\n          uVar8 = param_6[1];\n          uVar1 = param_6[2];\n          uVar7 = 0;\n          do {\n            *(undefined4 *)(uVar8 + uVar7 * 4) = __ptr[uVar7 * 2];\n            *(undefined4 *)(uVar1 + uVar7 * 4) = __ptr[uVar7 * 2 + 1];\n            uVar7 = uVar7 + 1;\n          } while (local_24 != uVar7);\n          uVar8 = *param_6;\n        }" { (expression_statement "uVar8 = param_6[1];" (assignment_expression "uVar8 = param_6[1]" identifier = (subscript_expression "param_6[1]" identifier [ number_literal ])) ;) (expression_statement "uVar1 = param_6[2];" (assignment_expression "uVar1 = param_6[2]" identifier = (subscript_expression "param_6[2]" identifier [ number_literal ])) ;) (expression_statement "uVar7 = 0;" (assignment_expression "uVar7 = 0" identifier = number_literal) ;) (do_statement "do {\n            *(undefined4 *)(uVar8 + uVar7 * 4) = __ptr[uVar7 * 2];\n            *(undefined4 *)(uVar1 + uVar7 * 4) = __ptr[uVar7 * 2 + 1];\n            uVar7 = uVar7 + 1;\n          } while (local_24 != uVar7);" do (compound_statement "{\n            *(undefined4 *)(uVar8 + uVar7 * 4) = __ptr[uVar7 * 2];\n            *(undefined4 *)(uVar1 + uVar7 * 4) = __ptr[uVar7 * 2 + 1];\n            uVar7 = uVar7 + 1;\n          }" { (expression_statement "*(undefined4 *)(uVar8 + uVar7 * 4) = __ptr[uVar7 * 2];" (assignment_expression "*(undefined4 *)(uVar8 + uVar7 * 4) = __ptr[uVar7 * 2]" (pointer_expression "*(undefined4 *)(uVar8 + uVar7 * 4)" * (cast_expression "(undefined4 *)(uVar8 + uVar7 * 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar8 + uVar7 * 4)" ( (binary_expression "uVar8 + uVar7 * 4" identifier + (binary_expression "uVar7 * 4" identifier * number_literal)) )))) = (subscript_expression "__ptr[uVar7 * 2]" identifier [ (binary_expression "uVar7 * 2" identifier * number_literal) ])) ;) (expression_statement "*(undefined4 *)(uVar1 + uVar7 * 4) = __ptr[uVar7 * 2 + 1];" (assignment_expression "*(undefined4 *)(uVar1 + uVar7 * 4) = __ptr[uVar7 * 2 + 1]" (pointer_expression "*(undefined4 *)(uVar1 + uVar7 * 4)" * (cast_expression "(undefined4 *)(uVar1 + uVar7 * 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar1 + uVar7 * 4)" ( (binary_expression "uVar1 + uVar7 * 4" identifier + (binary_expression "uVar7 * 4" identifier * number_literal)) )))) = (subscript_expression "__ptr[uVar7 * 2 + 1]" identifier [ (binary_expression "uVar7 * 2 + 1" (binary_expression "uVar7 * 2" identifier * number_literal) + number_literal) ])) ;) (expression_statement "uVar7 = uVar7 + 1;" (assignment_expression "uVar7 = uVar7 + 1" identifier = (binary_expression "uVar7 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(local_24 != uVar7)" ( (binary_expression "local_24 != uVar7" identifier != identifier) )) ;) (expression_statement "uVar8 = *param_6;" (assignment_expression "uVar8 = *param_6" identifier = (pointer_expression "*param_6" * identifier)) ;) })))) (if_statement "if (uVar7 < uVar8) {\n          uVar8 = param_6[2];\n          uVar1 = param_6[1];\n          do {\n            uVar12 = uVar7 + 1;\n            *(undefined4 *)(uVar8 + uVar7 * 4) = 0xffffffff;\n            *(undefined4 *)(uVar1 + uVar7 * 4) = 0xffffffff;\n            uVar7 = uVar12;\n          } while (uVar12 < *param_6);\n        }" if (parenthesized_expression "(uVar7 < uVar8)" ( (binary_expression "uVar7 < uVar8" identifier < identifier) )) (compound_statement "{\n          uVar8 = param_6[2];\n          uVar1 = param_6[1];\n          do {\n            uVar12 = uVar7 + 1;\n            *(undefined4 *)(uVar8 + uVar7 * 4) = 0xffffffff;\n            *(undefined4 *)(uVar1 + uVar7 * 4) = 0xffffffff;\n            uVar7 = uVar12;\n          } while (uVar12 < *param_6);\n        }" { (expression_statement "uVar8 = param_6[2];" (assignment_expression "uVar8 = param_6[2]" identifier = (subscript_expression "param_6[2]" identifier [ number_literal ])) ;) (expression_statement "uVar1 = param_6[1];" (assignment_expression "uVar1 = param_6[1]" identifier = (subscript_expression "param_6[1]" identifier [ number_literal ])) ;) (do_statement "do {\n            uVar12 = uVar7 + 1;\n            *(undefined4 *)(uVar8 + uVar7 * 4) = 0xffffffff;\n            *(undefined4 *)(uVar1 + uVar7 * 4) = 0xffffffff;\n            uVar7 = uVar12;\n          } while (uVar12 < *param_6);" do (compound_statement "{\n            uVar12 = uVar7 + 1;\n            *(undefined4 *)(uVar8 + uVar7 * 4) = 0xffffffff;\n            *(undefined4 *)(uVar1 + uVar7 * 4) = 0xffffffff;\n            uVar7 = uVar12;\n          }" { (expression_statement "uVar12 = uVar7 + 1;" (assignment_expression "uVar12 = uVar7 + 1" identifier = (binary_expression "uVar7 + 1" identifier + number_literal)) ;) (expression_statement "*(undefined4 *)(uVar8 + uVar7 * 4) = 0xffffffff;" (assignment_expression "*(undefined4 *)(uVar8 + uVar7 * 4) = 0xffffffff" (pointer_expression "*(undefined4 *)(uVar8 + uVar7 * 4)" * (cast_expression "(undefined4 *)(uVar8 + uVar7 * 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar8 + uVar7 * 4)" ( (binary_expression "uVar8 + uVar7 * 4" identifier + (binary_expression "uVar7 * 4" identifier * number_literal)) )))) = number_literal) ;) (expression_statement "*(undefined4 *)(uVar1 + uVar7 * 4) = 0xffffffff;" (assignment_expression "*(undefined4 *)(uVar1 + uVar7 * 4) = 0xffffffff" (pointer_expression "*(undefined4 *)(uVar1 + uVar7 * 4)" * (cast_expression "(undefined4 *)(uVar1 + uVar7 * 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar1 + uVar7 * 4)" ( (binary_expression "uVar1 + uVar7 * 4" identifier + (binary_expression "uVar7 * 4" identifier * number_literal)) )))) = number_literal) ;) (expression_statement "uVar7 = uVar12;" (assignment_expression "uVar7 = uVar12" identifier = identifier) ;) }) while (parenthesized_expression "(uVar12 < *param_6)" ( (binary_expression "uVar12 < *param_6" identifier < (pointer_expression "*param_6" * identifier)) )) ;) })) }))) (labeled_statement "LAB_0002ac4a:\n      *(byte *)(param_1 + 0x1c) = *(byte *)(param_1 + 0x1c) & 0xf9 | cVar10 * '\x02';" statement_identifier : (expression_statement "*(byte *)(param_1 + 0x1c) = *(byte *)(param_1 + 0x1c) & 0xf9 | cVar10 * '\x02';" (assignment_expression "*(byte *)(param_1 + 0x1c) = *(byte *)(param_1 + 0x1c) & 0xf9 | cVar10 * '\x02'" (pointer_expression "*(byte *)(param_1 + 0x1c)" * (cast_expression "(byte *)(param_1 + 0x1c)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x1c)" ( (binary_expression "param_1 + 0x1c" identifier + number_literal) )))) = (binary_expression "*(byte *)(param_1 + 0x1c) & 0xf9 | cVar10 * '\x02'" (binary_expression "*(byte *)(param_1 + 0x1c) & 0xf9" (pointer_expression "*(byte *)(param_1 + 0x1c)" * (cast_expression "(byte *)(param_1 + 0x1c)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x1c)" ( (binary_expression "param_1 + 0x1c" identifier + number_literal) )))) & number_literal) | (binary_expression "cVar10 * '\x02'" identifier * (char_literal "'\x02'" ' escape_sequence ')))) ;)) (if_statement "if (cVar10 == '\0') goto LAB_0002ab5b;" if (parenthesized_expression "(cVar10 == '\0')" ( (binary_expression "cVar10 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )) (goto_statement "goto LAB_0002ab5b;" goto statement_identifier ;)) })) (expression_statement "uVar11 = *__ptr;" (assignment_expression "uVar11 = *__ptr" identifier = (pointer_expression "*__ptr" * identifier)) ;) }) (else_clause "else {\n    uVar11 = 0xffffffff;\n    if (iVar4 == 1) goto LAB_0002ab60;\nLAB_0002ab5b:\n    uVar11 = 0xfffffffe;\n  }" else (compound_statement "{\n    uVar11 = 0xffffffff;\n    if (iVar4 == 1) goto LAB_0002ab60;\nLAB_0002ab5b:\n    uVar11 = 0xfffffffe;\n  }" { (expression_statement "uVar11 = 0xffffffff;" (assignment_expression "uVar11 = 0xffffffff" identifier = number_literal) ;) (if_statement "if (iVar4 == 1) goto LAB_0002ab60;" if (parenthesized_expression "(iVar4 == 1)" ( (binary_expression "iVar4 == 1" identifier == number_literal) )) (goto_statement "goto LAB_0002ab60;" goto statement_identifier ;)) (labeled_statement "LAB_0002ab5b:\n    uVar11 = 0xfffffffe;" statement_identifier : (expression_statement "uVar11 = 0xfffffffe;" (assignment_expression "uVar11 = 0xfffffffe" identifier = number_literal) ;)) }))) (labeled_statement "LAB_0002ab60:\n  free(__ptr);" statement_identifier : (expression_statement "free(__ptr);" (call_expression "free(__ptr)" identifier (argument_list "(__ptr)" ( identifier ))) ;)) (return_statement "return uVar11;" return identifier ;) })))
(translation_unit "/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */\n\nregoff_t rpl_re_search(re_pattern_buffer *bufp,char *string,Idx length,Idx start,regoff_t range,\n                      re_registers *regs)\n\n{\n  int iVar1;\n  byte bVar2;\n  byte bVar3;\n  regmatch_t *pmatch;\n  reg_errcode_t rVar4;\n  size_t __size;\n  regoff_t *prVar5;\n  regoff_t *prVar6;\n  uint uVar7;\n  int last_start;\n  char cVar8;\n  regoff_t rVar9;\n  uint uVar10;\n  uint local_28;\n  uint local_24;\n  \n  iVar1 = start + range;\n  if ((start < 0) || (length < start)) {\n    return -1;\n  }\n  last_start = length;\n  if (((length < iVar1) || ((-1 < range && (iVar1 < start)))) ||\n     ((-1 < iVar1 && ((last_start = iVar1, -1 < range || (iVar1 < start)))))) {\n    bVar2 = bufp->field_0x1c;\n    local_28 = bVar2 >> 5 & 3;\n    if ((start < last_start) && ((bufp->fastmap != (char *)0x0 && ((bVar2 & 8) == 0)))) {\n      rpl_re_compile_fastmap(bufp);\n      bVar2 = bufp->field_0x1c;\n    }\n  }\n  else {\n    last_start = 0;\n    bVar2 = bufp->field_0x1c;\n    local_28 = bVar2 >> 5 & 3;\n  }\n  if (((bVar2 & 0x10) == 0) && (regs != (re_registers *)0x0)) {\n    if (((bVar2 & 6) == 4) && (local_24 = regs->num_regs, local_24 <= bufp->re_nsub)) {\n      if ((int)local_24 < 1) goto LAB_0002ac98;\n    }\n    else {\n      local_24 = bufp->re_nsub + 1;\n    }\n    __size = local_24 * 8;\n  }\n  else {\nLAB_0002ac98:\n    __size = 8;\n    local_24 = 1;\n    regs = (re_registers *)0x0;\n  }\n  pmatch = (regmatch_t *)malloc(__size);\n  if (pmatch == (regmatch_t *)0x0) {\n    return -2;\n  }\n  rVar4 = re_search_internal(bufp,string,length,start,last_start,length,local_24,pmatch,local_28);\n  if (rVar4 == _REG_NOERROR) {\n    if (regs != (re_registers *)0x0) {\n      uVar7 = local_24 + 1;\n      bVar2 = (byte)bufp->field_0x1c >> 1;\n      bVar3 = bVar2 & 3;\n      if ((bVar2 & 3) == 0) {\n        prVar5 = (regoff_t *)malloc(uVar7 * 4);\n        regs->start = prVar5;\n        if (prVar5 != (regoff_t *)0x0) {\n          prVar6 = (regoff_t *)malloc(uVar7 * 4);\n          regs->end = prVar6;\n          if (prVar6 != (regoff_t *)0x0) {\n            cVar8 = '\x01';\n            regs->num_regs = uVar7;\n            uVar10 = uVar7;\n            goto LAB_0002abce;\n          }\n          free(prVar5);\n        }\nLAB_0002ae33:\n        cVar8 = '\0';\n      }\n      else {\n        if (bVar3 == 1) {\n          cVar8 = '\x01';\n          uVar10 = regs->num_regs;\n          if (regs->num_regs < uVar7) {\n            prVar5 = (regoff_t *)realloc(regs->start,uVar7 * 4);\n            if (prVar5 == (regoff_t *)0x0) goto LAB_0002ae33;\n            prVar6 = (regoff_t *)realloc(regs->end,uVar7 * 4);\n            if (prVar6 == (regoff_t *)0x0) {\n              cVar8 = '\0';\n              free(prVar5);\n              goto LAB_0002ac4a;\n            }\n            regs->start = prVar5;\n            regs->num_regs = uVar7;\n            regs->end = prVar6;\n            uVar10 = uVar7;\n          }\n        }\n        else {\n          if (bVar3 != 2) {\n                    /* WARNING: Subroutine does not return */\n            __assert_fail("regs_allocated == REGS_FIXED","lib/regexec.c",0x1f8,"re_copy_regs");\n          }\n          if (regs->num_regs < local_24) {\n                    /* WARNING: Subroutine does not return */\n            __assert_fail("regs->num_regs >= nregs","lib/regexec.c",0x1fa,"re_copy_regs");\n          }\n          cVar8 = '\x02';\n          uVar10 = regs->num_regs;\n        }\nLAB_0002abce:\n        if ((int)local_24 < 1) {\n          uVar7 = 0;\n        }\n        else {\n          prVar5 = regs->start;\n          prVar6 = regs->end;\n          uVar7 = 0;\n          do {\n            prVar5[uVar7] = pmatch[uVar7].rm_so;\n            prVar6[uVar7] = pmatch[uVar7].rm_eo;\n            uVar7 = uVar7 + 1;\n          } while (local_24 != uVar7);\n          uVar10 = regs->num_regs;\n        }\n        if (uVar7 < uVar10) {\n          prVar5 = regs->end;\n          prVar6 = regs->start;\n          do {\n            uVar10 = uVar7 + 1;\n            prVar5[uVar7] = -1;\n            prVar6[uVar7] = -1;\n            uVar7 = uVar10;\n          } while (uVar10 < regs->num_regs);\n        }\n      }\nLAB_0002ac4a:\n      bufp->field_0x1c = bufp->field_0x1c & 0xf9 | cVar8 * '\x02';\n      if (cVar8 == '\0') goto LAB_0002ab5b;\n    }\n    rVar9 = pmatch->rm_so;\n  }\n  else {\n    rVar9 = -1;\n    if (rVar4 == _REG_NOMATCH) goto LAB_0002ab60;\nLAB_0002ab5b:\n    rVar9 = -2;\n  }\nLAB_0002ab60:\n  free(pmatch);\n  return rVar9;\n}\n\n" comment (function_definition "regoff_t rpl_re_search(re_pattern_buffer *bufp,char *string,Idx length,Idx start,regoff_t range,\n                      re_registers *regs)\n\n{\n  int iVar1;\n  byte bVar2;\n  byte bVar3;\n  regmatch_t *pmatch;\n  reg_errcode_t rVar4;\n  size_t __size;\n  regoff_t *prVar5;\n  regoff_t *prVar6;\n  uint uVar7;\n  int last_start;\n  char cVar8;\n  regoff_t rVar9;\n  uint uVar10;\n  uint local_28;\n  uint local_24;\n  \n  iVar1 = start + range;\n  if ((start < 0) || (length < start)) {\n    return -1;\n  }\n  last_start = length;\n  if (((length < iVar1) || ((-1 < range && (iVar1 < start)))) ||\n     ((-1 < iVar1 && ((last_start = iVar1, -1 < range || (iVar1 < start)))))) {\n    bVar2 = bufp->field_0x1c;\n    local_28 = bVar2 >> 5 & 3;\n    if ((start < last_start) && ((bufp->fastmap != (char *)0x0 && ((bVar2 & 8) == 0)))) {\n      rpl_re_compile_fastmap(bufp);\n      bVar2 = bufp->field_0x1c;\n    }\n  }\n  else {\n    last_start = 0;\n    bVar2 = bufp->field_0x1c;\n    local_28 = bVar2 >> 5 & 3;\n  }\n  if (((bVar2 & 0x10) == 0) && (regs != (re_registers *)0x0)) {\n    if (((bVar2 & 6) == 4) && (local_24 = regs->num_regs, local_24 <= bufp->re_nsub)) {\n      if ((int)local_24 < 1) goto LAB_0002ac98;\n    }\n    else {\n      local_24 = bufp->re_nsub + 1;\n    }\n    __size = local_24 * 8;\n  }\n  else {\nLAB_0002ac98:\n    __size = 8;\n    local_24 = 1;\n    regs = (re_registers *)0x0;\n  }\n  pmatch = (regmatch_t *)malloc(__size);\n  if (pmatch == (regmatch_t *)0x0) {\n    return -2;\n  }\n  rVar4 = re_search_internal(bufp,string,length,start,last_start,length,local_24,pmatch,local_28);\n  if (rVar4 == _REG_NOERROR) {\n    if (regs != (re_registers *)0x0) {\n      uVar7 = local_24 + 1;\n      bVar2 = (byte)bufp->field_0x1c >> 1;\n      bVar3 = bVar2 & 3;\n      if ((bVar2 & 3) == 0) {\n        prVar5 = (regoff_t *)malloc(uVar7 * 4);\n        regs->start = prVar5;\n        if (prVar5 != (regoff_t *)0x0) {\n          prVar6 = (regoff_t *)malloc(uVar7 * 4);\n          regs->end = prVar6;\n          if (prVar6 != (regoff_t *)0x0) {\n            cVar8 = '\x01';\n            regs->num_regs = uVar7;\n            uVar10 = uVar7;\n            goto LAB_0002abce;\n          }\n          free(prVar5);\n        }\nLAB_0002ae33:\n        cVar8 = '\0';\n      }\n      else {\n        if (bVar3 == 1) {\n          cVar8 = '\x01';\n          uVar10 = regs->num_regs;\n          if (regs->num_regs < uVar7) {\n            prVar5 = (regoff_t *)realloc(regs->start,uVar7 * 4);\n            if (prVar5 == (regoff_t *)0x0) goto LAB_0002ae33;\n            prVar6 = (regoff_t *)realloc(regs->end,uVar7 * 4);\n            if (prVar6 == (regoff_t *)0x0) {\n              cVar8 = '\0';\n              free(prVar5);\n              goto LAB_0002ac4a;\n            }\n            regs->start = prVar5;\n            regs->num_regs = uVar7;\n            regs->end = prVar6;\n            uVar10 = uVar7;\n          }\n        }\n        else {\n          if (bVar3 != 2) {\n                    /* WARNING: Subroutine does not return */\n            __assert_fail("regs_allocated == REGS_FIXED","lib/regexec.c",0x1f8,"re_copy_regs");\n          }\n          if (regs->num_regs < local_24) {\n                    /* WARNING: Subroutine does not return */\n            __assert_fail("regs->num_regs >= nregs","lib/regexec.c",0x1fa,"re_copy_regs");\n          }\n          cVar8 = '\x02';\n          uVar10 = regs->num_regs;\n        }\nLAB_0002abce:\n        if ((int)local_24 < 1) {\n          uVar7 = 0;\n        }\n        else {\n          prVar5 = regs->start;\n          prVar6 = regs->end;\n          uVar7 = 0;\n          do {\n            prVar5[uVar7] = pmatch[uVar7].rm_so;\n            prVar6[uVar7] = pmatch[uVar7].rm_eo;\n            uVar7 = uVar7 + 1;\n          } while (local_24 != uVar7);\n          uVar10 = regs->num_regs;\n        }\n        if (uVar7 < uVar10) {\n          prVar5 = regs->end;\n          prVar6 = regs->start;\n          do {\n            uVar10 = uVar7 + 1;\n            prVar5[uVar7] = -1;\n            prVar6[uVar7] = -1;\n            uVar7 = uVar10;\n          } while (uVar10 < regs->num_regs);\n        }\n      }\nLAB_0002ac4a:\n      bufp->field_0x1c = bufp->field_0x1c & 0xf9 | cVar8 * '\x02';\n      if (cVar8 == '\0') goto LAB_0002ab5b;\n    }\n    rVar9 = pmatch->rm_so;\n  }\n  else {\n    rVar9 = -1;\n    if (rVar4 == _REG_NOMATCH) goto LAB_0002ab60;\nLAB_0002ab5b:\n    rVar9 = -2;\n  }\nLAB_0002ab60:\n  free(pmatch);\n  return rVar9;\n}" type_identifier (function_declarator "rpl_re_search(re_pattern_buffer *bufp,char *string,Idx length,Idx start,regoff_t range,\n                      re_registers *regs)" identifier (parameter_list "(re_pattern_buffer *bufp,char *string,Idx length,Idx start,regoff_t range,\n                      re_registers *regs)" ( (parameter_declaration "re_pattern_buffer *bufp" type_identifier (pointer_declarator "*bufp" * identifier)) , (parameter_declaration "char *string" primitive_type (pointer_declarator "*string" * identifier)) , (parameter_declaration "Idx length" type_identifier identifier) , (parameter_declaration "Idx start" type_identifier identifier) , (parameter_declaration "regoff_t range" type_identifier identifier) , (parameter_declaration "re_registers *regs" type_identifier (pointer_declarator "*regs" * identifier)) ))) (compound_statement "{\n  int iVar1;\n  byte bVar2;\n  byte bVar3;\n  regmatch_t *pmatch;\n  reg_errcode_t rVar4;\n  size_t __size;\n  regoff_t *prVar5;\n  regoff_t *prVar6;\n  uint uVar7;\n  int last_start;\n  char cVar8;\n  regoff_t rVar9;\n  uint uVar10;\n  uint local_28;\n  uint local_24;\n  \n  iVar1 = start + range;\n  if ((start < 0) || (length < start)) {\n    return -1;\n  }\n  last_start = length;\n  if (((length < iVar1) || ((-1 < range && (iVar1 < start)))) ||\n     ((-1 < iVar1 && ((last_start = iVar1, -1 < range || (iVar1 < start)))))) {\n    bVar2 = bufp->field_0x1c;\n    local_28 = bVar2 >> 5 & 3;\n    if ((start < last_start) && ((bufp->fastmap != (char *)0x0 && ((bVar2 & 8) == 0)))) {\n      rpl_re_compile_fastmap(bufp);\n      bVar2 = bufp->field_0x1c;\n    }\n  }\n  else {\n    last_start = 0;\n    bVar2 = bufp->field_0x1c;\n    local_28 = bVar2 >> 5 & 3;\n  }\n  if (((bVar2 & 0x10) == 0) && (regs != (re_registers *)0x0)) {\n    if (((bVar2 & 6) == 4) && (local_24 = regs->num_regs, local_24 <= bufp->re_nsub)) {\n      if ((int)local_24 < 1) goto LAB_0002ac98;\n    }\n    else {\n      local_24 = bufp->re_nsub + 1;\n    }\n    __size = local_24 * 8;\n  }\n  else {\nLAB_0002ac98:\n    __size = 8;\n    local_24 = 1;\n    regs = (re_registers *)0x0;\n  }\n  pmatch = (regmatch_t *)malloc(__size);\n  if (pmatch == (regmatch_t *)0x0) {\n    return -2;\n  }\n  rVar4 = re_search_internal(bufp,string,length,start,last_start,length,local_24,pmatch,local_28);\n  if (rVar4 == _REG_NOERROR) {\n    if (regs != (re_registers *)0x0) {\n      uVar7 = local_24 + 1;\n      bVar2 = (byte)bufp->field_0x1c >> 1;\n      bVar3 = bVar2 & 3;\n      if ((bVar2 & 3) == 0) {\n        prVar5 = (regoff_t *)malloc(uVar7 * 4);\n        regs->start = prVar5;\n        if (prVar5 != (regoff_t *)0x0) {\n          prVar6 = (regoff_t *)malloc(uVar7 * 4);\n          regs->end = prVar6;\n          if (prVar6 != (regoff_t *)0x0) {\n            cVar8 = '\x01';\n            regs->num_regs = uVar7;\n            uVar10 = uVar7;\n            goto LAB_0002abce;\n          }\n          free(prVar5);\n        }\nLAB_0002ae33:\n        cVar8 = '\0';\n      }\n      else {\n        if (bVar3 == 1) {\n          cVar8 = '\x01';\n          uVar10 = regs->num_regs;\n          if (regs->num_regs < uVar7) {\n            prVar5 = (regoff_t *)realloc(regs->start,uVar7 * 4);\n            if (prVar5 == (regoff_t *)0x0) goto LAB_0002ae33;\n            prVar6 = (regoff_t *)realloc(regs->end,uVar7 * 4);\n            if (prVar6 == (regoff_t *)0x0) {\n              cVar8 = '\0';\n              free(prVar5);\n              goto LAB_0002ac4a;\n            }\n            regs->start = prVar5;\n            regs->num_regs = uVar7;\n            regs->end = prVar6;\n            uVar10 = uVar7;\n          }\n        }\n        else {\n          if (bVar3 != 2) {\n                    /* WARNING: Subroutine does not return */\n            __assert_fail("regs_allocated == REGS_FIXED","lib/regexec.c",0x1f8,"re_copy_regs");\n          }\n          if (regs->num_regs < local_24) {\n                    /* WARNING: Subroutine does not return */\n            __assert_fail("regs->num_regs >= nregs","lib/regexec.c",0x1fa,"re_copy_regs");\n          }\n          cVar8 = '\x02';\n          uVar10 = regs->num_regs;\n        }\nLAB_0002abce:\n        if ((int)local_24 < 1) {\n          uVar7 = 0;\n        }\n        else {\n          prVar5 = regs->start;\n          prVar6 = regs->end;\n          uVar7 = 0;\n          do {\n            prVar5[uVar7] = pmatch[uVar7].rm_so;\n            prVar6[uVar7] = pmatch[uVar7].rm_eo;\n            uVar7 = uVar7 + 1;\n          } while (local_24 != uVar7);\n          uVar10 = regs->num_regs;\n        }\n        if (uVar7 < uVar10) {\n          prVar5 = regs->end;\n          prVar6 = regs->start;\n          do {\n            uVar10 = uVar7 + 1;\n            prVar5[uVar7] = -1;\n            prVar6[uVar7] = -1;\n            uVar7 = uVar10;\n          } while (uVar10 < regs->num_regs);\n        }\n      }\nLAB_0002ac4a:\n      bufp->field_0x1c = bufp->field_0x1c & 0xf9 | cVar8 * '\x02';\n      if (cVar8 == '\0') goto LAB_0002ab5b;\n    }\n    rVar9 = pmatch->rm_so;\n  }\n  else {\n    rVar9 = -1;\n    if (rVar4 == _REG_NOMATCH) goto LAB_0002ab60;\nLAB_0002ab5b:\n    rVar9 = -2;\n  }\nLAB_0002ab60:\n  free(pmatch);\n  return rVar9;\n}" { (declaration "int iVar1;" primitive_type identifier ;) (declaration "byte bVar2;" type_identifier identifier ;) (declaration "byte bVar3;" type_identifier identifier ;) (declaration "regmatch_t *pmatch;" type_identifier (pointer_declarator "*pmatch" * identifier) ;) (declaration "reg_errcode_t rVar4;" type_identifier identifier ;) (declaration "size_t __size;" primitive_type identifier ;) (declaration "regoff_t *prVar5;" type_identifier (pointer_declarator "*prVar5" * identifier) ;) (declaration "regoff_t *prVar6;" type_identifier (pointer_declarator "*prVar6" * identifier) ;) (declaration "uint uVar7;" type_identifier identifier ;) (declaration "int last_start;" primitive_type identifier ;) (declaration "char cVar8;" primitive_type identifier ;) (declaration "regoff_t rVar9;" type_identifier identifier ;) (declaration "uint uVar10;" type_identifier identifier ;) (declaration "uint local_28;" type_identifier identifier ;) (declaration "uint local_24;" type_identifier identifier ;) (expression_statement "iVar1 = start + range;" (assignment_expression "iVar1 = start + range" identifier = (binary_expression "start + range" identifier + identifier)) ;) (if_statement "if ((start < 0) || (length < start)) {\n    return -1;\n  }" if (parenthesized_expression "((start < 0) || (length < start))" ( (binary_expression "(start < 0) || (length < start)" (parenthesized_expression "(start < 0)" ( (binary_expression "start < 0" identifier < number_literal) )) || (parenthesized_expression "(length < start)" ( (binary_expression "length < start" identifier < identifier) ))) )) (compound_statement "{\n    return -1;\n  }" { (return_statement "return -1;" return number_literal ;) })) (expression_statement "last_start = length;" (assignment_expression "last_start = length" identifier = identifier) ;) (if_statement "if (((length < iVar1) || ((-1 < range && (iVar1 < start)))) ||\n     ((-1 < iVar1 && ((last_start = iVar1, -1 < range || (iVar1 < start)))))) {\n    bVar2 = bufp->field_0x1c;\n    local_28 = bVar2 >> 5 & 3;\n    if ((start < last_start) && ((bufp->fastmap != (char *)0x0 && ((bVar2 & 8) == 0)))) {\n      rpl_re_compile_fastmap(bufp);\n      bVar2 = bufp->field_0x1c;\n    }\n  }\n  else {\n    last_start = 0;\n    bVar2 = bufp->field_0x1c;\n    local_28 = bVar2 >> 5 & 3;\n  }" if (parenthesized_expression "(((length < iVar1) || ((-1 < range && (iVar1 < start)))) ||\n     ((-1 < iVar1 && ((last_start = iVar1, -1 < range || (iVar1 < start))))))" ( (binary_expression "((length < iVar1) || ((-1 < range && (iVar1 < start)))) ||\n     ((-1 < iVar1 && ((last_start = iVar1, -1 < range || (iVar1 < start)))))" (parenthesized_expression "((length < iVar1) || ((-1 < range && (iVar1 < start))))" ( (binary_expression "(length < iVar1) || ((-1 < range && (iVar1 < start)))" (parenthesized_expression "(length < iVar1)" ( (binary_expression "length < iVar1" identifier < identifier) )) || (parenthesized_expression "((-1 < range && (iVar1 < start)))" ( (parenthesized_expression "(-1 < range && (iVar1 < start))" ( (binary_expression "-1 < range && (iVar1 < start)" (binary_expression "-1 < range" number_literal < identifier) && (parenthesized_expression "(iVar1 < start)" ( (binary_expression "iVar1 < start" identifier < identifier) ))) )) ))) )) || (parenthesized_expression "((-1 < iVar1 && ((last_start = iVar1, -1 < range || (iVar1 < start)))))" ( (parenthesized_expression "(-1 < iVar1 && ((last_start = iVar1, -1 < range || (iVar1 < start))))" ( (binary_expression "-1 < iVar1 && ((last_start = iVar1, -1 < range || (iVar1 < start)))" (binary_expression "-1 < iVar1" number_literal < identifier) && (parenthesized_expression "((last_start = iVar1, -1 < range || (iVar1 < start)))" ( (parenthesized_expression "(last_start = iVar1, -1 < range || (iVar1 < start))" ( (comma_expression "last_start = iVar1, -1 < range || (iVar1 < start)" (assignment_expression "last_start = iVar1" identifier = identifier) , (binary_expression "-1 < range || (iVar1 < start)" (binary_expression "-1 < range" number_literal < identifier) || (parenthesized_expression "(iVar1 < start)" ( (binary_expression "iVar1 < start" identifier < identifier) )))) )) ))) )) ))) )) (compound_statement "{\n    bVar2 = bufp->field_0x1c;\n    local_28 = bVar2 >> 5 & 3;\n    if ((start < last_start) && ((bufp->fastmap != (char *)0x0 && ((bVar2 & 8) == 0)))) {\n      rpl_re_compile_fastmap(bufp);\n      bVar2 = bufp->field_0x1c;\n    }\n  }" { (expression_statement "bVar2 = bufp->field_0x1c;" (assignment_expression "bVar2 = bufp->field_0x1c" identifier = (field_expression "bufp->field_0x1c" identifier -> field_identifier)) ;) (expression_statement "local_28 = bVar2 >> 5 & 3;" (assignment_expression "local_28 = bVar2 >> 5 & 3" identifier = (binary_expression "bVar2 >> 5 & 3" (binary_expression "bVar2 >> 5" identifier >> number_literal) & number_literal)) ;) (if_statement "if ((start < last_start) && ((bufp->fastmap != (char *)0x0 && ((bVar2 & 8) == 0)))) {\n      rpl_re_compile_fastmap(bufp);\n      bVar2 = bufp->field_0x1c;\n    }" if (parenthesized_expression "((start < last_start) && ((bufp->fastmap != (char *)0x0 && ((bVar2 & 8) == 0))))" ( (binary_expression "(start < last_start) && ((bufp->fastmap != (char *)0x0 && ((bVar2 & 8) == 0)))" (parenthesized_expression "(start < last_start)" ( (binary_expression "start < last_start" identifier < identifier) )) && (parenthesized_expression "((bufp->fastmap != (char *)0x0 && ((bVar2 & 8) == 0)))" ( (parenthesized_expression "(bufp->fastmap != (char *)0x0 && ((bVar2 & 8) == 0))" ( (binary_expression "bufp->fastmap != (char *)0x0 && ((bVar2 & 8) == 0)" (binary_expression "bufp->fastmap != (char *)0x0" (field_expression "bufp->fastmap" identifier -> field_identifier) != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) && (parenthesized_expression "((bVar2 & 8) == 0)" ( (binary_expression "(bVar2 & 8) == 0" (parenthesized_expression "(bVar2 & 8)" ( (binary_expression "bVar2 & 8" identifier & number_literal) )) == number_literal) ))) )) ))) )) (compound_statement "{\n      rpl_re_compile_fastmap(bufp);\n      bVar2 = bufp->field_0x1c;\n    }" { (expression_statement "rpl_re_compile_fastmap(bufp);" (call_expression "rpl_re_compile_fastmap(bufp)" identifier (argument_list "(bufp)" ( identifier ))) ;) (expression_statement "bVar2 = bufp->field_0x1c;" (assignment_expression "bVar2 = bufp->field_0x1c" identifier = (field_expression "bufp->field_0x1c" identifier -> field_identifier)) ;) })) }) (else_clause "else {\n    last_start = 0;\n    bVar2 = bufp->field_0x1c;\n    local_28 = bVar2 >> 5 & 3;\n  }" else (compound_statement "{\n    last_start = 0;\n    bVar2 = bufp->field_0x1c;\n    local_28 = bVar2 >> 5 & 3;\n  }" { (expression_statement "last_start = 0;" (assignment_expression "last_start = 0" identifier = number_literal) ;) (expression_statement "bVar2 = bufp->field_0x1c;" (assignment_expression "bVar2 = bufp->field_0x1c" identifier = (field_expression "bufp->field_0x1c" identifier -> field_identifier)) ;) (expression_statement "local_28 = bVar2 >> 5 & 3;" (assignment_expression "local_28 = bVar2 >> 5 & 3" identifier = (binary_expression "bVar2 >> 5 & 3" (binary_expression "bVar2 >> 5" identifier >> number_literal) & number_literal)) ;) }))) (if_statement "if (((bVar2 & 0x10) == 0) && (regs != (re_registers *)0x0)) {\n    if (((bVar2 & 6) == 4) && (local_24 = regs->num_regs, local_24 <= bufp->re_nsub)) {\n      if ((int)local_24 < 1) goto LAB_0002ac98;\n    }\n    else {\n      local_24 = bufp->re_nsub + 1;\n    }\n    __size = local_24 * 8;\n  }\n  else {\nLAB_0002ac98:\n    __size = 8;\n    local_24 = 1;\n    regs = (re_registers *)0x0;\n  }" if (parenthesized_expression "(((bVar2 & 0x10) == 0) && (regs != (re_registers *)0x0))" ( (binary_expression "((bVar2 & 0x10) == 0) && (regs != (re_registers *)0x0)" (parenthesized_expression "((bVar2 & 0x10) == 0)" ( (binary_expression "(bVar2 & 0x10) == 0" (parenthesized_expression "(bVar2 & 0x10)" ( (binary_expression "bVar2 & 0x10" identifier & number_literal) )) == number_literal) )) && (parenthesized_expression "(regs != (re_registers *)0x0)" ( (binary_expression "regs != (re_registers *)0x0" identifier != (cast_expression "(re_registers *)0x0" ( (type_descriptor "re_registers *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ))) )) (compound_statement "{\n    if (((bVar2 & 6) == 4) && (local_24 = regs->num_regs, local_24 <= bufp->re_nsub)) {\n      if ((int)local_24 < 1) goto LAB_0002ac98;\n    }\n    else {\n      local_24 = bufp->re_nsub + 1;\n    }\n    __size = local_24 * 8;\n  }" { (if_statement "if (((bVar2 & 6) == 4) && (local_24 = regs->num_regs, local_24 <= bufp->re_nsub)) {\n      if ((int)local_24 < 1) goto LAB_0002ac98;\n    }\n    else {\n      local_24 = bufp->re_nsub + 1;\n    }" if (parenthesized_expression "(((bVar2 & 6) == 4) && (local_24 = regs->num_regs, local_24 <= bufp->re_nsub))" ( (binary_expression "((bVar2 & 6) == 4) && (local_24 = regs->num_regs, local_24 <= bufp->re_nsub)" (parenthesized_expression "((bVar2 & 6) == 4)" ( (binary_expression "(bVar2 & 6) == 4" (parenthesized_expression "(bVar2 & 6)" ( (binary_expression "bVar2 & 6" identifier & number_literal) )) == number_literal) )) && (parenthesized_expression "(local_24 = regs->num_regs, local_24 <= bufp->re_nsub)" ( (comma_expression "local_24 = regs->num_regs, local_24 <= bufp->re_nsub" (assignment_expression "local_24 = regs->num_regs" identifier = (field_expression "regs->num_regs" identifier -> field_identifier)) , (binary_expression "local_24 <= bufp->re_nsub" identifier <= (field_expression "bufp->re_nsub" identifier -> field_identifier))) ))) )) (compound_statement "{\n      if ((int)local_24 < 1) goto LAB_0002ac98;\n    }" { (if_statement "if ((int)local_24 < 1) goto LAB_0002ac98;" if (parenthesized_expression "((int)local_24 < 1)" ( (binary_expression "(int)local_24 < 1" (cast_expression "(int)local_24" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (goto_statement "goto LAB_0002ac98;" goto statement_identifier ;)) }) (else_clause "else {\n      local_24 = bufp->re_nsub + 1;\n    }" else (compound_statement "{\n      local_24 = bufp->re_nsub + 1;\n    }" { (expression_statement "local_24 = bufp->re_nsub + 1;" (assignment_expression "local_24 = bufp->re_nsub + 1" identifier = (binary_expression "bufp->re_nsub + 1" (field_expression "bufp->re_nsub" identifier -> field_identifier) + number_literal)) ;) }))) (expression_statement "__size = local_24 * 8;" (assignment_expression "__size = local_24 * 8" identifier = (binary_expression "local_24 * 8" identifier * number_literal)) ;) }) (else_clause "else {\nLAB_0002ac98:\n    __size = 8;\n    local_24 = 1;\n    regs = (re_registers *)0x0;\n  }" else (compound_statement "{\nLAB_0002ac98:\n    __size = 8;\n    local_24 = 1;\n    regs = (re_registers *)0x0;\n  }" { (labeled_statement "LAB_0002ac98:\n    __size = 8;" statement_identifier : (expression_statement "__size = 8;" (assignment_expression "__size = 8" identifier = number_literal) ;)) (expression_statement "local_24 = 1;" (assignment_expression "local_24 = 1" identifier = number_literal) ;) (expression_statement "regs = (re_registers *)0x0;" (assignment_expression "regs = (re_registers *)0x0" identifier = (cast_expression "(re_registers *)0x0" ( (type_descriptor "re_registers *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) }))) (expression_statement "pmatch = (regmatch_t *)malloc(__size);" (assignment_expression "pmatch = (regmatch_t *)malloc(__size)" identifier = (cast_expression "(regmatch_t *)malloc(__size)" ( (type_descriptor "regmatch_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "malloc(__size)" identifier (argument_list "(__size)" ( identifier ))))) ;) (if_statement "if (pmatch == (regmatch_t *)0x0) {\n    return -2;\n  }" if (parenthesized_expression "(pmatch == (regmatch_t *)0x0)" ( (binary_expression "pmatch == (regmatch_t *)0x0" identifier == (cast_expression "(regmatch_t *)0x0" ( (type_descriptor "regmatch_t *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    return -2;\n  }" { (return_statement "return -2;" return number_literal ;) })) (expression_statement "rVar4 = re_search_internal(bufp,string,length,start,last_start,length,local_24,pmatch,local_28);" (assignment_expression "rVar4 = re_search_internal(bufp,string,length,start,last_start,length,local_24,pmatch,local_28)" identifier = (call_expression "re_search_internal(bufp,string,length,start,last_start,length,local_24,pmatch,local_28)" identifier (argument_list "(bufp,string,length,start,last_start,length,local_24,pmatch,local_28)" ( identifier , identifier , identifier , identifier , identifier , identifier , identifier , identifier , identifier )))) ;) (if_statement "if (rVar4 == _REG_NOERROR) {\n    if (regs != (re_registers *)0x0) {\n      uVar7 = local_24 + 1;\n      bVar2 = (byte)bufp->field_0x1c >> 1;\n      bVar3 = bVar2 & 3;\n      if ((bVar2 & 3) == 0) {\n        prVar5 = (regoff_t *)malloc(uVar7 * 4);\n        regs->start = prVar5;\n        if (prVar5 != (regoff_t *)0x0) {\n          prVar6 = (regoff_t *)malloc(uVar7 * 4);\n          regs->end = prVar6;\n          if (prVar6 != (regoff_t *)0x0) {\n            cVar8 = '\x01';\n            regs->num_regs = uVar7;\n            uVar10 = uVar7;\n            goto LAB_0002abce;\n          }\n          free(prVar5);\n        }\nLAB_0002ae33:\n        cVar8 = '\0';\n      }\n      else {\n        if (bVar3 == 1) {\n          cVar8 = '\x01';\n          uVar10 = regs->num_regs;\n          if (regs->num_regs < uVar7) {\n            prVar5 = (regoff_t *)realloc(regs->start,uVar7 * 4);\n            if (prVar5 == (regoff_t *)0x0) goto LAB_0002ae33;\n            prVar6 = (regoff_t *)realloc(regs->end,uVar7 * 4);\n            if (prVar6 == (regoff_t *)0x0) {\n              cVar8 = '\0';\n              free(prVar5);\n              goto LAB_0002ac4a;\n            }\n            regs->start = prVar5;\n            regs->num_regs = uVar7;\n            regs->end = prVar6;\n            uVar10 = uVar7;\n          }\n        }\n        else {\n          if (bVar3 != 2) {\n                    /* WARNING: Subroutine does not return */\n            __assert_fail("regs_allocated == REGS_FIXED","lib/regexec.c",0x1f8,"re_copy_regs");\n          }\n          if (regs->num_regs < local_24) {\n                    /* WARNING: Subroutine does not return */\n            __assert_fail("regs->num_regs >= nregs","lib/regexec.c",0x1fa,"re_copy_regs");\n          }\n          cVar8 = '\x02';\n          uVar10 = regs->num_regs;\n        }\nLAB_0002abce:\n        if ((int)local_24 < 1) {\n          uVar7 = 0;\n        }\n        else {\n          prVar5 = regs->start;\n          prVar6 = regs->end;\n          uVar7 = 0;\n          do {\n            prVar5[uVar7] = pmatch[uVar7].rm_so;\n            prVar6[uVar7] = pmatch[uVar7].rm_eo;\n            uVar7 = uVar7 + 1;\n          } while (local_24 != uVar7);\n          uVar10 = regs->num_regs;\n        }\n        if (uVar7 < uVar10) {\n          prVar5 = regs->end;\n          prVar6 = regs->start;\n          do {\n            uVar10 = uVar7 + 1;\n            prVar5[uVar7] = -1;\n            prVar6[uVar7] = -1;\n            uVar7 = uVar10;\n          } while (uVar10 < regs->num_regs);\n        }\n      }\nLAB_0002ac4a:\n      bufp->field_0x1c = bufp->field_0x1c & 0xf9 | cVar8 * '\x02';\n      if (cVar8 == '\0') goto LAB_0002ab5b;\n    }\n    rVar9 = pmatch->rm_so;\n  }\n  else {\n    rVar9 = -1;\n    if (rVar4 == _REG_NOMATCH) goto LAB_0002ab60;\nLAB_0002ab5b:\n    rVar9 = -2;\n  }" if (parenthesized_expression "(rVar4 == _REG_NOERROR)" ( (binary_expression "rVar4 == _REG_NOERROR" identifier == identifier) )) (compound_statement "{\n    if (regs != (re_registers *)0x0) {\n      uVar7 = local_24 + 1;\n      bVar2 = (byte)bufp->field_0x1c >> 1;\n      bVar3 = bVar2 & 3;\n      if ((bVar2 & 3) == 0) {\n        prVar5 = (regoff_t *)malloc(uVar7 * 4);\n        regs->start = prVar5;\n        if (prVar5 != (regoff_t *)0x0) {\n          prVar6 = (regoff_t *)malloc(uVar7 * 4);\n          regs->end = prVar6;\n          if (prVar6 != (regoff_t *)0x0) {\n            cVar8 = '\x01';\n            regs->num_regs = uVar7;\n            uVar10 = uVar7;\n            goto LAB_0002abce;\n          }\n          free(prVar5);\n        }\nLAB_0002ae33:\n        cVar8 = '\0';\n      }\n      else {\n        if (bVar3 == 1) {\n          cVar8 = '\x01';\n          uVar10 = regs->num_regs;\n          if (regs->num_regs < uVar7) {\n            prVar5 = (regoff_t *)realloc(regs->start,uVar7 * 4);\n            if (prVar5 == (regoff_t *)0x0) goto LAB_0002ae33;\n            prVar6 = (regoff_t *)realloc(regs->end,uVar7 * 4);\n            if (prVar6 == (regoff_t *)0x0) {\n              cVar8 = '\0';\n              free(prVar5);\n              goto LAB_0002ac4a;\n            }\n            regs->start = prVar5;\n            regs->num_regs = uVar7;\n            regs->end = prVar6;\n            uVar10 = uVar7;\n          }\n        }\n        else {\n          if (bVar3 != 2) {\n                    /* WARNING: Subroutine does not return */\n            __assert_fail("regs_allocated == REGS_FIXED","lib/regexec.c",0x1f8,"re_copy_regs");\n          }\n          if (regs->num_regs < local_24) {\n                    /* WARNING: Subroutine does not return */\n            __assert_fail("regs->num_regs >= nregs","lib/regexec.c",0x1fa,"re_copy_regs");\n          }\n          cVar8 = '\x02';\n          uVar10 = regs->num_regs;\n        }\nLAB_0002abce:\n        if ((int)local_24 < 1) {\n          uVar7 = 0;\n        }\n        else {\n          prVar5 = regs->start;\n          prVar6 = regs->end;\n          uVar7 = 0;\n          do {\n            prVar5[uVar7] = pmatch[uVar7].rm_so;\n            prVar6[uVar7] = pmatch[uVar7].rm_eo;\n            uVar7 = uVar7 + 1;\n          } while (local_24 != uVar7);\n          uVar10 = regs->num_regs;\n        }\n        if (uVar7 < uVar10) {\n          prVar5 = regs->end;\n          prVar6 = regs->start;\n          do {\n            uVar10 = uVar7 + 1;\n            prVar5[uVar7] = -1;\n            prVar6[uVar7] = -1;\n            uVar7 = uVar10;\n          } while (uVar10 < regs->num_regs);\n        }\n      }\nLAB_0002ac4a:\n      bufp->field_0x1c = bufp->field_0x1c & 0xf9 | cVar8 * '\x02';\n      if (cVar8 == '\0') goto LAB_0002ab5b;\n    }\n    rVar9 = pmatch->rm_so;\n  }" { (if_statement "if (regs != (re_registers *)0x0) {\n      uVar7 = local_24 + 1;\n      bVar2 = (byte)bufp->field_0x1c >> 1;\n      bVar3 = bVar2 & 3;\n      if ((bVar2 & 3) == 0) {\n        prVar5 = (regoff_t *)malloc(uVar7 * 4);\n        regs->start = prVar5;\n        if (prVar5 != (regoff_t *)0x0) {\n          prVar6 = (regoff_t *)malloc(uVar7 * 4);\n          regs->end = prVar6;\n          if (prVar6 != (regoff_t *)0x0) {\n            cVar8 = '\x01';\n            regs->num_regs = uVar7;\n            uVar10 = uVar7;\n            goto LAB_0002abce;\n          }\n          free(prVar5);\n        }\nLAB_0002ae33:\n        cVar8 = '\0';\n      }\n      else {\n        if (bVar3 == 1) {\n          cVar8 = '\x01';\n          uVar10 = regs->num_regs;\n          if (regs->num_regs < uVar7) {\n            prVar5 = (regoff_t *)realloc(regs->start,uVar7 * 4);\n            if (prVar5 == (regoff_t *)0x0) goto LAB_0002ae33;\n            prVar6 = (regoff_t *)realloc(regs->end,uVar7 * 4);\n            if (prVar6 == (regoff_t *)0x0) {\n              cVar8 = '\0';\n              free(prVar5);\n              goto LAB_0002ac4a;\n            }\n            regs->start = prVar5;\n            regs->num_regs = uVar7;\n            regs->end = prVar6;\n            uVar10 = uVar7;\n          }\n        }\n        else {\n          if (bVar3 != 2) {\n                    /* WARNING: Subroutine does not return */\n            __assert_fail("regs_allocated == REGS_FIXED","lib/regexec.c",0x1f8,"re_copy_regs");\n          }\n          if (regs->num_regs < local_24) {\n                    /* WARNING: Subroutine does not return */\n            __assert_fail("regs->num_regs >= nregs","lib/regexec.c",0x1fa,"re_copy_regs");\n          }\n          cVar8 = '\x02';\n          uVar10 = regs->num_regs;\n        }\nLAB_0002abce:\n        if ((int)local_24 < 1) {\n          uVar7 = 0;\n        }\n        else {\n          prVar5 = regs->start;\n          prVar6 = regs->end;\n          uVar7 = 0;\n          do {\n            prVar5[uVar7] = pmatch[uVar7].rm_so;\n            prVar6[uVar7] = pmatch[uVar7].rm_eo;\n            uVar7 = uVar7 + 1;\n          } while (local_24 != uVar7);\n          uVar10 = regs->num_regs;\n        }\n        if (uVar7 < uVar10) {\n          prVar5 = regs->end;\n          prVar6 = regs->start;\n          do {\n            uVar10 = uVar7 + 1;\n            prVar5[uVar7] = -1;\n            prVar6[uVar7] = -1;\n            uVar7 = uVar10;\n          } while (uVar10 < regs->num_regs);\n        }\n      }\nLAB_0002ac4a:\n      bufp->field_0x1c = bufp->field_0x1c & 0xf9 | cVar8 * '\x02';\n      if (cVar8 == '\0') goto LAB_0002ab5b;\n    }" if (parenthesized_expression "(regs != (re_registers *)0x0)" ( (binary_expression "regs != (re_registers *)0x0" identifier != (cast_expression "(re_registers *)0x0" ( (type_descriptor "re_registers *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      uVar7 = local_24 + 1;\n      bVar2 = (byte)bufp->field_0x1c >> 1;\n      bVar3 = bVar2 & 3;\n      if ((bVar2 & 3) == 0) {\n        prVar5 = (regoff_t *)malloc(uVar7 * 4);\n        regs->start = prVar5;\n        if (prVar5 != (regoff_t *)0x0) {\n          prVar6 = (regoff_t *)malloc(uVar7 * 4);\n          regs->end = prVar6;\n          if (prVar6 != (regoff_t *)0x0) {\n            cVar8 = '\x01';\n            regs->num_regs = uVar7;\n            uVar10 = uVar7;\n            goto LAB_0002abce;\n          }\n          free(prVar5);\n        }\nLAB_0002ae33:\n        cVar8 = '\0';\n      }\n      else {\n        if (bVar3 == 1) {\n          cVar8 = '\x01';\n          uVar10 = regs->num_regs;\n          if (regs->num_regs < uVar7) {\n            prVar5 = (regoff_t *)realloc(regs->start,uVar7 * 4);\n            if (prVar5 == (regoff_t *)0x0) goto LAB_0002ae33;\n            prVar6 = (regoff_t *)realloc(regs->end,uVar7 * 4);\n            if (prVar6 == (regoff_t *)0x0) {\n              cVar8 = '\0';\n              free(prVar5);\n              goto LAB_0002ac4a;\n            }\n            regs->start = prVar5;\n            regs->num_regs = uVar7;\n            regs->end = prVar6;\n            uVar10 = uVar7;\n          }\n        }\n        else {\n          if (bVar3 != 2) {\n                    /* WARNING: Subroutine does not return */\n            __assert_fail("regs_allocated == REGS_FIXED","lib/regexec.c",0x1f8,"re_copy_regs");\n          }\n          if (regs->num_regs < local_24) {\n                    /* WARNING: Subroutine does not return */\n            __assert_fail("regs->num_regs >= nregs","lib/regexec.c",0x1fa,"re_copy_regs");\n          }\n          cVar8 = '\x02';\n          uVar10 = regs->num_regs;\n        }\nLAB_0002abce:\n        if ((int)local_24 < 1) {\n          uVar7 = 0;\n        }\n        else {\n          prVar5 = regs->start;\n          prVar6 = regs->end;\n          uVar7 = 0;\n          do {\n            prVar5[uVar7] = pmatch[uVar7].rm_so;\n            prVar6[uVar7] = pmatch[uVar7].rm_eo;\n            uVar7 = uVar7 + 1;\n          } while (local_24 != uVar7);\n          uVar10 = regs->num_regs;\n        }\n        if (uVar7 < uVar10) {\n          prVar5 = regs->end;\n          prVar6 = regs->start;\n          do {\n            uVar10 = uVar7 + 1;\n            prVar5[uVar7] = -1;\n            prVar6[uVar7] = -1;\n            uVar7 = uVar10;\n          } while (uVar10 < regs->num_regs);\n        }\n      }\nLAB_0002ac4a:\n      bufp->field_0x1c = bufp->field_0x1c & 0xf9 | cVar8 * '\x02';\n      if (cVar8 == '\0') goto LAB_0002ab5b;\n    }" { (expression_statement "uVar7 = local_24 + 1;" (assignment_expression "uVar7 = local_24 + 1" identifier = (binary_expression "local_24 + 1" identifier + number_literal)) ;) (expression_statement "bVar2 = (byte)bufp->field_0x1c >> 1;" (assignment_expression "bVar2 = (byte)bufp->field_0x1c >> 1" identifier = (binary_expression "(byte)bufp->field_0x1c >> 1" (cast_expression "(byte)bufp->field_0x1c" ( (type_descriptor "byte" type_identifier) ) (field_expression "bufp->field_0x1c" identifier -> field_identifier)) >> number_literal)) ;) (expression_statement "bVar3 = bVar2 & 3;" (assignment_expression "bVar3 = bVar2 & 3" identifier = (binary_expression "bVar2 & 3" identifier & number_literal)) ;) (if_statement "if ((bVar2 & 3) == 0) {\n        prVar5 = (regoff_t *)malloc(uVar7 * 4);\n        regs->start = prVar5;\n        if (prVar5 != (regoff_t *)0x0) {\n          prVar6 = (regoff_t *)malloc(uVar7 * 4);\n          regs->end = prVar6;\n          if (prVar6 != (regoff_t *)0x0) {\n            cVar8 = '\x01';\n            regs->num_regs = uVar7;\n            uVar10 = uVar7;\n            goto LAB_0002abce;\n          }\n          free(prVar5);\n        }\nLAB_0002ae33:\n        cVar8 = '\0';\n      }\n      else {\n        if (bVar3 == 1) {\n          cVar8 = '\x01';\n          uVar10 = regs->num_regs;\n          if (regs->num_regs < uVar7) {\n            prVar5 = (regoff_t *)realloc(regs->start,uVar7 * 4);\n            if (prVar5 == (regoff_t *)0x0) goto LAB_0002ae33;\n            prVar6 = (regoff_t *)realloc(regs->end,uVar7 * 4);\n            if (prVar6 == (regoff_t *)0x0) {\n              cVar8 = '\0';\n              free(prVar5);\n              goto LAB_0002ac4a;\n            }\n            regs->start = prVar5;\n            regs->num_regs = uVar7;\n            regs->end = prVar6;\n            uVar10 = uVar7;\n          }\n        }\n        else {\n          if (bVar3 != 2) {\n                    /* WARNING: Subroutine does not return */\n            __assert_fail("regs_allocated == REGS_FIXED","lib/regexec.c",0x1f8,"re_copy_regs");\n          }\n          if (regs->num_regs < local_24) {\n                    /* WARNING: Subroutine does not return */\n            __assert_fail("regs->num_regs >= nregs","lib/regexec.c",0x1fa,"re_copy_regs");\n          }\n          cVar8 = '\x02';\n          uVar10 = regs->num_regs;\n        }\nLAB_0002abce:\n        if ((int)local_24 < 1) {\n          uVar7 = 0;\n        }\n        else {\n          prVar5 = regs->start;\n          prVar6 = regs->end;\n          uVar7 = 0;\n          do {\n            prVar5[uVar7] = pmatch[uVar7].rm_so;\n            prVar6[uVar7] = pmatch[uVar7].rm_eo;\n            uVar7 = uVar7 + 1;\n          } while (local_24 != uVar7);\n          uVar10 = regs->num_regs;\n        }\n        if (uVar7 < uVar10) {\n          prVar5 = regs->end;\n          prVar6 = regs->start;\n          do {\n            uVar10 = uVar7 + 1;\n            prVar5[uVar7] = -1;\n            prVar6[uVar7] = -1;\n            uVar7 = uVar10;\n          } while (uVar10 < regs->num_regs);\n        }\n      }" if (parenthesized_expression "((bVar2 & 3) == 0)" ( (binary_expression "(bVar2 & 3) == 0" (parenthesized_expression "(bVar2 & 3)" ( (binary_expression "bVar2 & 3" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n        prVar5 = (regoff_t *)malloc(uVar7 * 4);\n        regs->start = prVar5;\n        if (prVar5 != (regoff_t *)0x0) {\n          prVar6 = (regoff_t *)malloc(uVar7 * 4);\n          regs->end = prVar6;\n          if (prVar6 != (regoff_t *)0x0) {\n            cVar8 = '\x01';\n            regs->num_regs = uVar7;\n            uVar10 = uVar7;\n            goto LAB_0002abce;\n          }\n          free(prVar5);\n        }\nLAB_0002ae33:\n        cVar8 = '\0';\n      }" { (expression_statement "prVar5 = (regoff_t *)malloc(uVar7 * 4);" (assignment_expression "prVar5 = (regoff_t *)malloc(uVar7 * 4)" identifier = (cast_expression "(regoff_t *)malloc(uVar7 * 4)" ( (type_descriptor "regoff_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "malloc(uVar7 * 4)" identifier (argument_list "(uVar7 * 4)" ( (binary_expression "uVar7 * 4" identifier * number_literal) ))))) ;) (expression_statement "regs->start = prVar5;" (assignment_expression "regs->start = prVar5" (field_expression "regs->start" identifier -> field_identifier) = identifier) ;) (if_statement "if (prVar5 != (regoff_t *)0x0) {\n          prVar6 = (regoff_t *)malloc(uVar7 * 4);\n          regs->end = prVar6;\n          if (prVar6 != (regoff_t *)0x0) {\n            cVar8 = '\x01';\n            regs->num_regs = uVar7;\n            uVar10 = uVar7;\n            goto LAB_0002abce;\n          }\n          free(prVar5);\n        }" if (parenthesized_expression "(prVar5 != (regoff_t *)0x0)" ( (binary_expression "prVar5 != (regoff_t *)0x0" identifier != (cast_expression "(regoff_t *)0x0" ( (type_descriptor "regoff_t *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          prVar6 = (regoff_t *)malloc(uVar7 * 4);\n          regs->end = prVar6;\n          if (prVar6 != (regoff_t *)0x0) {\n            cVar8 = '\x01';\n            regs->num_regs = uVar7;\n            uVar10 = uVar7;\n            goto LAB_0002abce;\n          }\n          free(prVar5);\n        }" { (expression_statement "prVar6 = (regoff_t *)malloc(uVar7 * 4);" (assignment_expression "prVar6 = (regoff_t *)malloc(uVar7 * 4)" identifier = (cast_expression "(regoff_t *)malloc(uVar7 * 4)" ( (type_descriptor "regoff_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "malloc(uVar7 * 4)" identifier (argument_list "(uVar7 * 4)" ( (binary_expression "uVar7 * 4" identifier * number_literal) ))))) ;) (expression_statement "regs->end = prVar6;" (assignment_expression "regs->end = prVar6" (field_expression "regs->end" identifier -> field_identifier) = identifier) ;) (if_statement "if (prVar6 != (regoff_t *)0x0) {\n            cVar8 = '\x01';\n            regs->num_regs = uVar7;\n            uVar10 = uVar7;\n            goto LAB_0002abce;\n          }" if (parenthesized_expression "(prVar6 != (regoff_t *)0x0)" ( (binary_expression "prVar6 != (regoff_t *)0x0" identifier != (cast_expression "(regoff_t *)0x0" ( (type_descriptor "regoff_t *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n            cVar8 = '\x01';\n            regs->num_regs = uVar7;\n            uVar10 = uVar7;\n            goto LAB_0002abce;\n          }" { (expression_statement "cVar8 = '\x01';" (assignment_expression "cVar8 = '\x01'" identifier = (char_literal "'\x01'" ' escape_sequence ')) ;) (expression_statement "regs->num_regs = uVar7;" (assignment_expression "regs->num_regs = uVar7" (field_expression "regs->num_regs" identifier -> field_identifier) = identifier) ;) (expression_statement "uVar10 = uVar7;" (assignment_expression "uVar10 = uVar7" identifier = identifier) ;) (goto_statement "goto LAB_0002abce;" goto statement_identifier ;) })) (expression_statement "free(prVar5);" (call_expression "free(prVar5)" identifier (argument_list "(prVar5)" ( identifier ))) ;) })) (labeled_statement "LAB_0002ae33:\n        cVar8 = '\0';" statement_identifier : (expression_statement "cVar8 = '\0';" (assignment_expression "cVar8 = '\0'" identifier = (char_literal "'\0'" ' escape_sequence ')) ;)) }) (else_clause "else {\n        if (bVar3 == 1) {\n          cVar8 = '\x01';\n          uVar10 = regs->num_regs;\n          if (regs->num_regs < uVar7) {\n            prVar5 = (regoff_t *)realloc(regs->start,uVar7 * 4);\n            if (prVar5 == (regoff_t *)0x0) goto LAB_0002ae33;\n            prVar6 = (regoff_t *)realloc(regs->end,uVar7 * 4);\n            if (prVar6 == (regoff_t *)0x0) {\n              cVar8 = '\0';\n              free(prVar5);\n              goto LAB_0002ac4a;\n            }\n            regs->start = prVar5;\n            regs->num_regs = uVar7;\n            regs->end = prVar6;\n            uVar10 = uVar7;\n          }\n        }\n        else {\n          if (bVar3 != 2) {\n                    /* WARNING: Subroutine does not return */\n            __assert_fail("regs_allocated == REGS_FIXED","lib/regexec.c",0x1f8,"re_copy_regs");\n          }\n          if (regs->num_regs < local_24) {\n                    /* WARNING: Subroutine does not return */\n            __assert_fail("regs->num_regs >= nregs","lib/regexec.c",0x1fa,"re_copy_regs");\n          }\n          cVar8 = '\x02';\n          uVar10 = regs->num_regs;\n        }\nLAB_0002abce:\n        if ((int)local_24 < 1) {\n          uVar7 = 0;\n        }\n        else {\n          prVar5 = regs->start;\n          prVar6 = regs->end;\n          uVar7 = 0;\n          do {\n            prVar5[uVar7] = pmatch[uVar7].rm_so;\n            prVar6[uVar7] = pmatch[uVar7].rm_eo;\n            uVar7 = uVar7 + 1;\n          } while (local_24 != uVar7);\n          uVar10 = regs->num_regs;\n        }\n        if (uVar7 < uVar10) {\n          prVar5 = regs->end;\n          prVar6 = regs->start;\n          do {\n            uVar10 = uVar7 + 1;\n            prVar5[uVar7] = -1;\n            prVar6[uVar7] = -1;\n            uVar7 = uVar10;\n          } while (uVar10 < regs->num_regs);\n        }\n      }" else (compound_statement "{\n        if (bVar3 == 1) {\n          cVar8 = '\x01';\n          uVar10 = regs->num_regs;\n          if (regs->num_regs < uVar7) {\n            prVar5 = (regoff_t *)realloc(regs->start,uVar7 * 4);\n            if (prVar5 == (regoff_t *)0x0) goto LAB_0002ae33;\n            prVar6 = (regoff_t *)realloc(regs->end,uVar7 * 4);\n            if (prVar6 == (regoff_t *)0x0) {\n              cVar8 = '\0';\n              free(prVar5);\n              goto LAB_0002ac4a;\n            }\n            regs->start = prVar5;\n            regs->num_regs = uVar7;\n            regs->end = prVar6;\n            uVar10 = uVar7;\n          }\n        }\n        else {\n          if (bVar3 != 2) {\n                    /* WARNING: Subroutine does not return */\n            __assert_fail("regs_allocated == REGS_FIXED","lib/regexec.c",0x1f8,"re_copy_regs");\n          }\n          if (regs->num_regs < local_24) {\n                    /* WARNING: Subroutine does not return */\n            __assert_fail("regs->num_regs >= nregs","lib/regexec.c",0x1fa,"re_copy_regs");\n          }\n          cVar8 = '\x02';\n          uVar10 = regs->num_regs;\n        }\nLAB_0002abce:\n        if ((int)local_24 < 1) {\n          uVar7 = 0;\n        }\n        else {\n          prVar5 = regs->start;\n          prVar6 = regs->end;\n          uVar7 = 0;\n          do {\n            prVar5[uVar7] = pmatch[uVar7].rm_so;\n            prVar6[uVar7] = pmatch[uVar7].rm_eo;\n            uVar7 = uVar7 + 1;\n          } while (local_24 != uVar7);\n          uVar10 = regs->num_regs;\n        }\n        if (uVar7 < uVar10) {\n          prVar5 = regs->end;\n          prVar6 = regs->start;\n          do {\n            uVar10 = uVar7 + 1;\n            prVar5[uVar7] = -1;\n            prVar6[uVar7] = -1;\n            uVar7 = uVar10;\n          } while (uVar10 < regs->num_regs);\n        }\n      }" { (if_statement "if (bVar3 == 1) {\n          cVar8 = '\x01';\n          uVar10 = regs->num_regs;\n          if (regs->num_regs < uVar7) {\n            prVar5 = (regoff_t *)realloc(regs->start,uVar7 * 4);\n            if (prVar5 == (regoff_t *)0x0) goto LAB_0002ae33;\n            prVar6 = (regoff_t *)realloc(regs->end,uVar7 * 4);\n            if (prVar6 == (regoff_t *)0x0) {\n              cVar8 = '\0';\n              free(prVar5);\n              goto LAB_0002ac4a;\n            }\n            regs->start = prVar5;\n            regs->num_regs = uVar7;\n            regs->end = prVar6;\n            uVar10 = uVar7;\n          }\n        }\n        else {\n          if (bVar3 != 2) {\n                    /* WARNING: Subroutine does not return */\n            __assert_fail("regs_allocated == REGS_FIXED","lib/regexec.c",0x1f8,"re_copy_regs");\n          }\n          if (regs->num_regs < local_24) {\n                    /* WARNING: Subroutine does not return */\n            __assert_fail("regs->num_regs >= nregs","lib/regexec.c",0x1fa,"re_copy_regs");\n          }\n          cVar8 = '\x02';\n          uVar10 = regs->num_regs;\n        }" if (parenthesized_expression "(bVar3 == 1)" ( (binary_expression "bVar3 == 1" identifier == number_literal) )) (compound_statement "{\n          cVar8 = '\x01';\n          uVar10 = regs->num_regs;\n          if (regs->num_regs < uVar7) {\n            prVar5 = (regoff_t *)realloc(regs->start,uVar7 * 4);\n            if (prVar5 == (regoff_t *)0x0) goto LAB_0002ae33;\n            prVar6 = (regoff_t *)realloc(regs->end,uVar7 * 4);\n            if (prVar6 == (regoff_t *)0x0) {\n              cVar8 = '\0';\n              free(prVar5);\n              goto LAB_0002ac4a;\n            }\n            regs->start = prVar5;\n            regs->num_regs = uVar7;\n            regs->end = prVar6;\n            uVar10 = uVar7;\n          }\n        }" { (expression_statement "cVar8 = '\x01';" (assignment_expression "cVar8 = '\x01'" identifier = (char_literal "'\x01'" ' escape_sequence ')) ;) (expression_statement "uVar10 = regs->num_regs;" (assignment_expression "uVar10 = regs->num_regs" identifier = (field_expression "regs->num_regs" identifier -> field_identifier)) ;) (if_statement "if (regs->num_regs < uVar7) {\n            prVar5 = (regoff_t *)realloc(regs->start,uVar7 * 4);\n            if (prVar5 == (regoff_t *)0x0) goto LAB_0002ae33;\n            prVar6 = (regoff_t *)realloc(regs->end,uVar7 * 4);\n            if (prVar6 == (regoff_t *)0x0) {\n              cVar8 = '\0';\n              free(prVar5);\n              goto LAB_0002ac4a;\n            }\n            regs->start = prVar5;\n            regs->num_regs = uVar7;\n            regs->end = prVar6;\n            uVar10 = uVar7;\n          }" if (parenthesized_expression "(regs->num_regs < uVar7)" ( (binary_expression "regs->num_regs < uVar7" (field_expression "regs->num_regs" identifier -> field_identifier) < identifier) )) (compound_statement "{\n            prVar5 = (regoff_t *)realloc(regs->start,uVar7 * 4);\n            if (prVar5 == (regoff_t *)0x0) goto LAB_0002ae33;\n            prVar6 = (regoff_t *)realloc(regs->end,uVar7 * 4);\n            if (prVar6 == (regoff_t *)0x0) {\n              cVar8 = '\0';\n              free(prVar5);\n              goto LAB_0002ac4a;\n            }\n            regs->start = prVar5;\n            regs->num_regs = uVar7;\n            regs->end = prVar6;\n            uVar10 = uVar7;\n          }" { (expression_statement "prVar5 = (regoff_t *)realloc(regs->start,uVar7 * 4);" (assignment_expression "prVar5 = (regoff_t *)realloc(regs->start,uVar7 * 4)" identifier = (cast_expression "(regoff_t *)realloc(regs->start,uVar7 * 4)" ( (type_descriptor "regoff_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "realloc(regs->start,uVar7 * 4)" identifier (argument_list "(regs->start,uVar7 * 4)" ( (field_expression "regs->start" identifier -> field_identifier) , (binary_expression "uVar7 * 4" identifier * number_literal) ))))) ;) (if_statement "if (prVar5 == (regoff_t *)0x0) goto LAB_0002ae33;" if (parenthesized_expression "(prVar5 == (regoff_t *)0x0)" ( (binary_expression "prVar5 == (regoff_t *)0x0" identifier == (cast_expression "(regoff_t *)0x0" ( (type_descriptor "regoff_t *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_0002ae33;" goto statement_identifier ;)) (expression_statement "prVar6 = (regoff_t *)realloc(regs->end,uVar7 * 4);" (assignment_expression "prVar6 = (regoff_t *)realloc(regs->end,uVar7 * 4)" identifier = (cast_expression "(regoff_t *)realloc(regs->end,uVar7 * 4)" ( (type_descriptor "regoff_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "realloc(regs->end,uVar7 * 4)" identifier (argument_list "(regs->end,uVar7 * 4)" ( (field_expression "regs->end" identifier -> field_identifier) , (binary_expression "uVar7 * 4" identifier * number_literal) ))))) ;) (if_statement "if (prVar6 == (regoff_t *)0x0) {\n              cVar8 = '\0';\n              free(prVar5);\n              goto LAB_0002ac4a;\n            }" if (parenthesized_expression "(prVar6 == (regoff_t *)0x0)" ( (binary_expression "prVar6 == (regoff_t *)0x0" identifier == (cast_expression "(regoff_t *)0x0" ( (type_descriptor "regoff_t *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n              cVar8 = '\0';\n              free(prVar5);\n              goto LAB_0002ac4a;\n            }" { (expression_statement "cVar8 = '\0';" (assignment_expression "cVar8 = '\0'" identifier = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "free(prVar5);" (call_expression "free(prVar5)" identifier (argument_list "(prVar5)" ( identifier ))) ;) (goto_statement "goto LAB_0002ac4a;" goto statement_identifier ;) })) (expression_statement "regs->start = prVar5;" (assignment_expression "regs->start = prVar5" (field_expression "regs->start" identifier -> field_identifier) = identifier) ;) (expression_statement "regs->num_regs = uVar7;" (assignment_expression "regs->num_regs = uVar7" (field_expression "regs->num_regs" identifier -> field_identifier) = identifier) ;) (expression_statement "regs->end = prVar6;" (assignment_expression "regs->end = prVar6" (field_expression "regs->end" identifier -> field_identifier) = identifier) ;) (expression_statement "uVar10 = uVar7;" (assignment_expression "uVar10 = uVar7" identifier = identifier) ;) })) }) (else_clause "else {\n          if (bVar3 != 2) {\n                    /* WARNING: Subroutine does not return */\n            __assert_fail("regs_allocated == REGS_FIXED","lib/regexec.c",0x1f8,"re_copy_regs");\n          }\n          if (regs->num_regs < local_24) {\n                    /* WARNING: Subroutine does not return */\n            __assert_fail("regs->num_regs >= nregs","lib/regexec.c",0x1fa,"re_copy_regs");\n          }\n          cVar8 = '\x02';\n          uVar10 = regs->num_regs;\n        }" else (compound_statement "{\n          if (bVar3 != 2) {\n                    /* WARNING: Subroutine does not return */\n            __assert_fail("regs_allocated == REGS_FIXED","lib/regexec.c",0x1f8,"re_copy_regs");\n          }\n          if (regs->num_regs < local_24) {\n                    /* WARNING: Subroutine does not return */\n            __assert_fail("regs->num_regs >= nregs","lib/regexec.c",0x1fa,"re_copy_regs");\n          }\n          cVar8 = '\x02';\n          uVar10 = regs->num_regs;\n        }" { (if_statement "if (bVar3 != 2) {\n                    /* WARNING: Subroutine does not return */\n            __assert_fail("regs_allocated == REGS_FIXED","lib/regexec.c",0x1f8,"re_copy_regs");\n          }" if (parenthesized_expression "(bVar3 != 2)" ( (binary_expression "bVar3 != 2" identifier != number_literal) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n            __assert_fail("regs_allocated == REGS_FIXED","lib/regexec.c",0x1f8,"re_copy_regs");\n          }" { comment (expression_statement "__assert_fail("regs_allocated == REGS_FIXED","lib/regexec.c",0x1f8,"re_copy_regs");" (call_expression "__assert_fail("regs_allocated == REGS_FIXED","lib/regexec.c",0x1f8,"re_copy_regs")" identifier (argument_list "("regs_allocated == REGS_FIXED","lib/regexec.c",0x1f8,"re_copy_regs")" ( (string_literal ""regs_allocated == REGS_FIXED"" " string_content ") , (string_literal ""lib/regexec.c"" " string_content ") , number_literal , (string_literal ""re_copy_regs"" " string_content ") ))) ;) })) (if_statement "if (regs->num_regs < local_24) {\n                    /* WARNING: Subroutine does not return */\n            __assert_fail("regs->num_regs >= nregs","lib/regexec.c",0x1fa,"re_copy_regs");\n          }" if (parenthesized_expression "(regs->num_regs < local_24)" ( (binary_expression "regs->num_regs < local_24" (field_expression "regs->num_regs" identifier -> field_identifier) < identifier) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n            __assert_fail("regs->num_regs >= nregs","lib/regexec.c",0x1fa,"re_copy_regs");\n          }" { comment (expression_statement "__assert_fail("regs->num_regs >= nregs","lib/regexec.c",0x1fa,"re_copy_regs");" (call_expression "__assert_fail("regs->num_regs >= nregs","lib/regexec.c",0x1fa,"re_copy_regs")" identifier (argument_list "("regs->num_regs >= nregs","lib/regexec.c",0x1fa,"re_copy_regs")" ( (string_literal ""regs->num_regs >= nregs"" " string_content ") , (string_literal ""lib/regexec.c"" " string_content ") , number_literal , (string_literal ""re_copy_regs"" " string_content ") ))) ;) })) (expression_statement "cVar8 = '\x02';" (assignment_expression "cVar8 = '\x02'" identifier = (char_literal "'\x02'" ' escape_sequence ')) ;) (expression_statement "uVar10 = regs->num_regs;" (assignment_expression "uVar10 = regs->num_regs" identifier = (field_expression "regs->num_regs" identifier -> field_identifier)) ;) }))) (labeled_statement "LAB_0002abce:\n        if ((int)local_24 < 1) {\n          uVar7 = 0;\n        }\n        else {\n          prVar5 = regs->start;\n          prVar6 = regs->end;\n          uVar7 = 0;\n          do {\n            prVar5[uVar7] = pmatch[uVar7].rm_so;\n            prVar6[uVar7] = pmatch[uVar7].rm_eo;\n            uVar7 = uVar7 + 1;\n          } while (local_24 != uVar7);\n          uVar10 = regs->num_regs;\n        }" statement_identifier : (if_statement "if ((int)local_24 < 1) {\n          uVar7 = 0;\n        }\n        else {\n          prVar5 = regs->start;\n          prVar6 = regs->end;\n          uVar7 = 0;\n          do {\n            prVar5[uVar7] = pmatch[uVar7].rm_so;\n            prVar6[uVar7] = pmatch[uVar7].rm_eo;\n            uVar7 = uVar7 + 1;\n          } while (local_24 != uVar7);\n          uVar10 = regs->num_regs;\n        }" if (parenthesized_expression "((int)local_24 < 1)" ( (binary_expression "(int)local_24 < 1" (cast_expression "(int)local_24" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n          uVar7 = 0;\n        }" { (expression_statement "uVar7 = 0;" (assignment_expression "uVar7 = 0" identifier = number_literal) ;) }) (else_clause "else {\n          prVar5 = regs->start;\n          prVar6 = regs->end;\n          uVar7 = 0;\n          do {\n            prVar5[uVar7] = pmatch[uVar7].rm_so;\n            prVar6[uVar7] = pmatch[uVar7].rm_eo;\n            uVar7 = uVar7 + 1;\n          } while (local_24 != uVar7);\n          uVar10 = regs->num_regs;\n        }" else (compound_statement "{\n          prVar5 = regs->start;\n          prVar6 = regs->end;\n          uVar7 = 0;\n          do {\n            prVar5[uVar7] = pmatch[uVar7].rm_so;\n            prVar6[uVar7] = pmatch[uVar7].rm_eo;\n            uVar7 = uVar7 + 1;\n          } while (local_24 != uVar7);\n          uVar10 = regs->num_regs;\n        }" { (expression_statement "prVar5 = regs->start;" (assignment_expression "prVar5 = regs->start" identifier = (field_expression "regs->start" identifier -> field_identifier)) ;) (expression_statement "prVar6 = regs->end;" (assignment_expression "prVar6 = regs->end" identifier = (field_expression "regs->end" identifier -> field_identifier)) ;) (expression_statement "uVar7 = 0;" (assignment_expression "uVar7 = 0" identifier = number_literal) ;) (do_statement "do {\n            prVar5[uVar7] = pmatch[uVar7].rm_so;\n            prVar6[uVar7] = pmatch[uVar7].rm_eo;\n            uVar7 = uVar7 + 1;\n          } while (local_24 != uVar7);" do (compound_statement "{\n            prVar5[uVar7] = pmatch[uVar7].rm_so;\n            prVar6[uVar7] = pmatch[uVar7].rm_eo;\n            uVar7 = uVar7 + 1;\n          }" { (expression_statement "prVar5[uVar7] = pmatch[uVar7].rm_so;" (assignment_expression "prVar5[uVar7] = pmatch[uVar7].rm_so" (subscript_expression "prVar5[uVar7]" identifier [ identifier ]) = (field_expression "pmatch[uVar7].rm_so" (subscript_expression "pmatch[uVar7]" identifier [ identifier ]) . field_identifier)) ;) (expression_statement "prVar6[uVar7] = pmatch[uVar7].rm_eo;" (assignment_expression "prVar6[uVar7] = pmatch[uVar7].rm_eo" (subscript_expression "prVar6[uVar7]" identifier [ identifier ]) = (field_expression "pmatch[uVar7].rm_eo" (subscript_expression "pmatch[uVar7]" identifier [ identifier ]) . field_identifier)) ;) (expression_statement "uVar7 = uVar7 + 1;" (assignment_expression "uVar7 = uVar7 + 1" identifier = (binary_expression "uVar7 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(local_24 != uVar7)" ( (binary_expression "local_24 != uVar7" identifier != identifier) )) ;) (expression_statement "uVar10 = regs->num_regs;" (assignment_expression "uVar10 = regs->num_regs" identifier = (field_expression "regs->num_regs" identifier -> field_identifier)) ;) })))) (if_statement "if (uVar7 < uVar10) {\n          prVar5 = regs->end;\n          prVar6 = regs->start;\n          do {\n            uVar10 = uVar7 + 1;\n            prVar5[uVar7] = -1;\n            prVar6[uVar7] = -1;\n            uVar7 = uVar10;\n          } while (uVar10 < regs->num_regs);\n        }" if (parenthesized_expression "(uVar7 < uVar10)" ( (binary_expression "uVar7 < uVar10" identifier < identifier) )) (compound_statement "{\n          prVar5 = regs->end;\n          prVar6 = regs->start;\n          do {\n            uVar10 = uVar7 + 1;\n            prVar5[uVar7] = -1;\n            prVar6[uVar7] = -1;\n            uVar7 = uVar10;\n          } while (uVar10 < regs->num_regs);\n        }" { (expression_statement "prVar5 = regs->end;" (assignment_expression "prVar5 = regs->end" identifier = (field_expression "regs->end" identifier -> field_identifier)) ;) (expression_statement "prVar6 = regs->start;" (assignment_expression "prVar6 = regs->start" identifier = (field_expression "regs->start" identifier -> field_identifier)) ;) (do_statement "do {\n            uVar10 = uVar7 + 1;\n            prVar5[uVar7] = -1;\n            prVar6[uVar7] = -1;\n            uVar7 = uVar10;\n          } while (uVar10 < regs->num_regs);" do (compound_statement "{\n            uVar10 = uVar7 + 1;\n            prVar5[uVar7] = -1;\n            prVar6[uVar7] = -1;\n            uVar7 = uVar10;\n          }" { (expression_statement "uVar10 = uVar7 + 1;" (assignment_expression "uVar10 = uVar7 + 1" identifier = (binary_expression "uVar7 + 1" identifier + number_literal)) ;) (expression_statement "prVar5[uVar7] = -1;" (assignment_expression "prVar5[uVar7] = -1" (subscript_expression "prVar5[uVar7]" identifier [ identifier ]) = number_literal) ;) (expression_statement "prVar6[uVar7] = -1;" (assignment_expression "prVar6[uVar7] = -1" (subscript_expression "prVar6[uVar7]" identifier [ identifier ]) = number_literal) ;) (expression_statement "uVar7 = uVar10;" (assignment_expression "uVar7 = uVar10" identifier = identifier) ;) }) while (parenthesized_expression "(uVar10 < regs->num_regs)" ( (binary_expression "uVar10 < regs->num_regs" identifier < (field_expression "regs->num_regs" identifier -> field_identifier)) )) ;) })) }))) (labeled_statement "LAB_0002ac4a:\n      bufp->field_0x1c = bufp->field_0x1c & 0xf9 | cVar8 * '\x02';" statement_identifier : (expression_statement "bufp->field_0x1c = bufp->field_0x1c & 0xf9 | cVar8 * '\x02';" (assignment_expression "bufp->field_0x1c = bufp->field_0x1c & 0xf9 | cVar8 * '\x02'" (field_expression "bufp->field_0x1c" identifier -> field_identifier) = (binary_expression "bufp->field_0x1c & 0xf9 | cVar8 * '\x02'" (binary_expression "bufp->field_0x1c & 0xf9" (field_expression "bufp->field_0x1c" identifier -> field_identifier) & number_literal) | (binary_expression "cVar8 * '\x02'" identifier * (char_literal "'\x02'" ' escape_sequence ')))) ;)) (if_statement "if (cVar8 == '\0') goto LAB_0002ab5b;" if (parenthesized_expression "(cVar8 == '\0')" ( (binary_expression "cVar8 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )) (goto_statement "goto LAB_0002ab5b;" goto statement_identifier ;)) })) (expression_statement "rVar9 = pmatch->rm_so;" (assignment_expression "rVar9 = pmatch->rm_so" identifier = (field_expression "pmatch->rm_so" identifier -> field_identifier)) ;) }) (else_clause "else {\n    rVar9 = -1;\n    if (rVar4 == _REG_NOMATCH) goto LAB_0002ab60;\nLAB_0002ab5b:\n    rVar9 = -2;\n  }" else (compound_statement "{\n    rVar9 = -1;\n    if (rVar4 == _REG_NOMATCH) goto LAB_0002ab60;\nLAB_0002ab5b:\n    rVar9 = -2;\n  }" { (expression_statement "rVar9 = -1;" (assignment_expression "rVar9 = -1" identifier = number_literal) ;) (if_statement "if (rVar4 == _REG_NOMATCH) goto LAB_0002ab60;" if (parenthesized_expression "(rVar4 == _REG_NOMATCH)" ( (binary_expression "rVar4 == _REG_NOMATCH" identifier == identifier) )) (goto_statement "goto LAB_0002ab60;" goto statement_identifier ;)) (labeled_statement "LAB_0002ab5b:\n    rVar9 = -2;" statement_identifier : (expression_statement "rVar9 = -2;" (assignment_expression "rVar9 = -2" identifier = number_literal) ;)) }))) (labeled_statement "LAB_0002ab60:\n  free(pmatch);" statement_identifier : (expression_statement "free(pmatch);" (call_expression "free(pmatch)" identifier (argument_list "(pmatch)" ( identifier ))) ;)) (return_statement "return rVar9;" return identifier ;) })))
(translation_unit "undefined4\nFUN_0002aa50(int param_1,undefined4 param_2,int param_3,int param_4,int param_5,uint *param_6)\n\n{\n  uint uVar1;\n  byte bVar2;\n  byte bVar3;\n  undefined4 *__ptr;\n  int iVar4;\n  size_t __size;\n  void *pvVar5;\n  void *pvVar6;\n  uint uVar7;\n  uint uVar8;\n  int iVar9;\n  char cVar10;\n  undefined4 uVar11;\n  uint uVar12;\n  uint local_24;\n  \n  iVar4 = param_4 + param_5;\n  if ((param_4 < 0) || (param_3 < param_4)) {\n    return 0xffffffff;\n  }\n  iVar9 = param_3;\n  if (((param_3 < iVar4) || ((-1 < param_5 && (iVar4 < param_4)))) ||\n     ((-1 < iVar4 && ((iVar9 = iVar4, -1 < param_5 || (iVar4 < param_4)))))) {\n    bVar2 = *(byte *)(param_1 + 0x1c);\n    bVar3 = bVar2 >> 5 & 3;\n    if ((param_4 < iVar9) && ((*(int *)(param_1 + 0x10) != 0 && ((bVar2 & 8) == 0)))) {\n      FUN_00029ec0(param_1);\n      bVar2 = *(byte *)(param_1 + 0x1c);\n    }\n  }\n  else {\n    iVar9 = 0;\n    bVar2 = *(byte *)(param_1 + 0x1c);\n    bVar3 = bVar2 >> 5 & 3;\n  }\n  if (((bVar2 & 0x10) == 0) && (param_6 != (uint *)0x0)) {\n    if (((bVar2 & 6) == 4) && (local_24 = *param_6, local_24 <= *(uint *)(param_1 + 0x18))) {\n      if ((int)local_24 < 1) goto LAB_0002ac98;\n    }\n    else {\n      local_24 = *(uint *)(param_1 + 0x18) + 1;\n    }\n    __size = local_24 * 8;\n  }\n  else {\nLAB_0002ac98:\n    __size = 8;\n    local_24 = 1;\n    param_6 = (uint *)0x0;\n  }\n  __ptr = (undefined4 *)malloc(__size);\n  if (__ptr == (undefined4 *)0x0) {\n    return 0xfffffffe;\n  }\n  iVar4 = FUN_00023920(param_1,param_2,param_3,param_4,iVar9,param_3,local_24,__ptr,bVar3);\n  if (iVar4 == 0) {\n    if (param_6 != (uint *)0x0) {\n      uVar7 = local_24 + 1;\n      bVar2 = *(byte *)(param_1 + 0x1c) >> 1;\n      bVar3 = bVar2 & 3;\n      if ((bVar2 & 3) == 0) {\n        pvVar5 = malloc(uVar7 * 4);\n        param_6[1] = (uint)pvVar5;\n        if (pvVar5 != (void *)0x0) {\n          pvVar6 = malloc(uVar7 * 4);\n          param_6[2] = (uint)pvVar6;\n          if (pvVar6 != (void *)0x0) {\n            cVar10 = '\x01';\n            *param_6 = uVar7;\n            uVar8 = uVar7;\n            goto LAB_0002abce;\n          }\n          free(pvVar5);\n        }\nLAB_0002ae33:\n        cVar10 = '\0';\n      }\n      else {\n        if (bVar3 == 1) {\n          cVar10 = '\x01';\n          uVar8 = *param_6;\n          if (*param_6 < uVar7) {\n            pvVar5 = realloc((void *)param_6[1],uVar7 * 4);\n            if (pvVar5 == (void *)0x0) goto LAB_0002ae33;\n            pvVar6 = realloc((void *)param_6[2],uVar7 * 4);\n            if (pvVar6 == (void *)0x0) {\n              cVar10 = '\0';\n              free(pvVar5);\n              goto LAB_0002ac4a;\n            }\n            param_6[1] = (uint)pvVar5;\n            *param_6 = uVar7;\n            param_6[2] = (uint)pvVar6;\n            uVar8 = uVar7;\n          }\n        }\n        else {\n          if (bVar3 != 2) {\n                    \n            __assert_fail("regs_allocated == REGS_FIXED","lib/regexec.c",0x1f8,"re_copy_regs");\n          }\n          if (*param_6 < local_24) {\n                    \n            __assert_fail("regs->num_regs >= nregs","lib/regexec.c",0x1fa,"re_copy_regs");\n          }\n          cVar10 = '\x02';\n          uVar8 = *param_6;\n        }\nLAB_0002abce:\n        if ((int)local_24 < 1) {\n          uVar7 = 0;\n        }\n        else {\n          uVar8 = param_6[1];\n          uVar1 = param_6[2];\n          uVar7 = 0;\n          do {\n            *(undefined4 *)(uVar8 + uVar7 * 4) = __ptr[uVar7 * 2];\n            *(undefined4 *)(uVar1 + uVar7 * 4) = __ptr[uVar7 * 2 + 1];\n            uVar7 = uVar7 + 1;\n          } while (local_24 != uVar7);\n          uVar8 = *param_6;\n        }\n        if (uVar7 < uVar8) {\n          uVar8 = param_6[2];\n          uVar1 = param_6[1];\n          do {\n            uVar12 = uVar7 + 1;\n            *(undefined4 *)(uVar8 + uVar7 * 4) = 0xffffffff;\n            *(undefined4 *)(uVar1 + uVar7 * 4) = 0xffffffff;\n            uVar7 = uVar12;\n          } while (uVar12 < *param_6);\n        }\n      }\nLAB_0002ac4a:\n      *(byte *)(param_1 + 0x1c) = *(byte *)(param_1 + 0x1c) & 0xf9 | cVar10 * '\x02';\n      if (cVar10 == '\0') goto LAB_0002ab5b;\n    }\n    uVar11 = *__ptr;\n  }\n  else {\n    uVar11 = 0xffffffff;\n    if (iVar4 == 1) goto LAB_0002ab60;\nLAB_0002ab5b:\n    uVar11 = 0xfffffffe;\n  }\nLAB_0002ab60:\n  free(__ptr);\n  return uVar11;\n}\n\n" (function_definition "undefined4\nFUN_0002aa50(int param_1,undefined4 param_2,int param_3,int param_4,int param_5,uint *param_6)\n\n{\n  uint uVar1;\n  byte bVar2;\n  byte bVar3;\n  undefined4 *__ptr;\n  int iVar4;\n  size_t __size;\n  void *pvVar5;\n  void *pvVar6;\n  uint uVar7;\n  uint uVar8;\n  int iVar9;\n  char cVar10;\n  undefined4 uVar11;\n  uint uVar12;\n  uint local_24;\n  \n  iVar4 = param_4 + param_5;\n  if ((param_4 < 0) || (param_3 < param_4)) {\n    return 0xffffffff;\n  }\n  iVar9 = param_3;\n  if (((param_3 < iVar4) || ((-1 < param_5 && (iVar4 < param_4)))) ||\n     ((-1 < iVar4 && ((iVar9 = iVar4, -1 < param_5 || (iVar4 < param_4)))))) {\n    bVar2 = *(byte *)(param_1 + 0x1c);\n    bVar3 = bVar2 >> 5 & 3;\n    if ((param_4 < iVar9) && ((*(int *)(param_1 + 0x10) != 0 && ((bVar2 & 8) == 0)))) {\n      FUN_00029ec0(param_1);\n      bVar2 = *(byte *)(param_1 + 0x1c);\n    }\n  }\n  else {\n    iVar9 = 0;\n    bVar2 = *(byte *)(param_1 + 0x1c);\n    bVar3 = bVar2 >> 5 & 3;\n  }\n  if (((bVar2 & 0x10) == 0) && (param_6 != (uint *)0x0)) {\n    if (((bVar2 & 6) == 4) && (local_24 = *param_6, local_24 <= *(uint *)(param_1 + 0x18))) {\n      if ((int)local_24 < 1) goto LAB_0002ac98;\n    }\n    else {\n      local_24 = *(uint *)(param_1 + 0x18) + 1;\n    }\n    __size = local_24 * 8;\n  }\n  else {\nLAB_0002ac98:\n    __size = 8;\n    local_24 = 1;\n    param_6 = (uint *)0x0;\n  }\n  __ptr = (undefined4 *)malloc(__size);\n  if (__ptr == (undefined4 *)0x0) {\n    return 0xfffffffe;\n  }\n  iVar4 = FUN_00023920(param_1,param_2,param_3,param_4,iVar9,param_3,local_24,__ptr,bVar3);\n  if (iVar4 == 0) {\n    if (param_6 != (uint *)0x0) {\n      uVar7 = local_24 + 1;\n      bVar2 = *(byte *)(param_1 + 0x1c) >> 1;\n      bVar3 = bVar2 & 3;\n      if ((bVar2 & 3) == 0) {\n        pvVar5 = malloc(uVar7 * 4);\n        param_6[1] = (uint)pvVar5;\n        if (pvVar5 != (void *)0x0) {\n          pvVar6 = malloc(uVar7 * 4);\n          param_6[2] = (uint)pvVar6;\n          if (pvVar6 != (void *)0x0) {\n            cVar10 = '\x01';\n            *param_6 = uVar7;\n            uVar8 = uVar7;\n            goto LAB_0002abce;\n          }\n          free(pvVar5);\n        }\nLAB_0002ae33:\n        cVar10 = '\0';\n      }\n      else {\n        if (bVar3 == 1) {\n          cVar10 = '\x01';\n          uVar8 = *param_6;\n          if (*param_6 < uVar7) {\n            pvVar5 = realloc((void *)param_6[1],uVar7 * 4);\n            if (pvVar5 == (void *)0x0) goto LAB_0002ae33;\n            pvVar6 = realloc((void *)param_6[2],uVar7 * 4);\n            if (pvVar6 == (void *)0x0) {\n              cVar10 = '\0';\n              free(pvVar5);\n              goto LAB_0002ac4a;\n            }\n            param_6[1] = (uint)pvVar5;\n            *param_6 = uVar7;\n            param_6[2] = (uint)pvVar6;\n            uVar8 = uVar7;\n          }\n        }\n        else {\n          if (bVar3 != 2) {\n                    \n            __assert_fail("regs_allocated == REGS_FIXED","lib/regexec.c",0x1f8,"re_copy_regs");\n          }\n          if (*param_6 < local_24) {\n                    \n            __assert_fail("regs->num_regs >= nregs","lib/regexec.c",0x1fa,"re_copy_regs");\n          }\n          cVar10 = '\x02';\n          uVar8 = *param_6;\n        }\nLAB_0002abce:\n        if ((int)local_24 < 1) {\n          uVar7 = 0;\n        }\n        else {\n          uVar8 = param_6[1];\n          uVar1 = param_6[2];\n          uVar7 = 0;\n          do {\n            *(undefined4 *)(uVar8 + uVar7 * 4) = __ptr[uVar7 * 2];\n            *(undefined4 *)(uVar1 + uVar7 * 4) = __ptr[uVar7 * 2 + 1];\n            uVar7 = uVar7 + 1;\n          } while (local_24 != uVar7);\n          uVar8 = *param_6;\n        }\n        if (uVar7 < uVar8) {\n          uVar8 = param_6[2];\n          uVar1 = param_6[1];\n          do {\n            uVar12 = uVar7 + 1;\n            *(undefined4 *)(uVar8 + uVar7 * 4) = 0xffffffff;\n            *(undefined4 *)(uVar1 + uVar7 * 4) = 0xffffffff;\n            uVar7 = uVar12;\n          } while (uVar12 < *param_6);\n        }\n      }\nLAB_0002ac4a:\n      *(byte *)(param_1 + 0x1c) = *(byte *)(param_1 + 0x1c) & 0xf9 | cVar10 * '\x02';\n      if (cVar10 == '\0') goto LAB_0002ab5b;\n    }\n    uVar11 = *__ptr;\n  }\n  else {\n    uVar11 = 0xffffffff;\n    if (iVar4 == 1) goto LAB_0002ab60;\nLAB_0002ab5b:\n    uVar11 = 0xfffffffe;\n  }\nLAB_0002ab60:\n  free(__ptr);\n  return uVar11;\n}" type_identifier (function_declarator "FUN_0002aa50(int param_1,undefined4 param_2,int param_3,int param_4,int param_5,uint *param_6)" identifier (parameter_list "(int param_1,undefined4 param_2,int param_3,int param_4,int param_5,uint *param_6)" ( (parameter_declaration "int param_1" primitive_type identifier) , (parameter_declaration "undefined4 param_2" type_identifier identifier) , (parameter_declaration "int param_3" primitive_type identifier) , (parameter_declaration "int param_4" primitive_type identifier) , (parameter_declaration "int param_5" primitive_type identifier) , (parameter_declaration "uint *param_6" type_identifier (pointer_declarator "*param_6" * identifier)) ))) (compound_statement "{\n  uint uVar1;\n  byte bVar2;\n  byte bVar3;\n  undefined4 *__ptr;\n  int iVar4;\n  size_t __size;\n  void *pvVar5;\n  void *pvVar6;\n  uint uVar7;\n  uint uVar8;\n  int iVar9;\n  char cVar10;\n  undefined4 uVar11;\n  uint uVar12;\n  uint local_24;\n  \n  iVar4 = param_4 + param_5;\n  if ((param_4 < 0) || (param_3 < param_4)) {\n    return 0xffffffff;\n  }\n  iVar9 = param_3;\n  if (((param_3 < iVar4) || ((-1 < param_5 && (iVar4 < param_4)))) ||\n     ((-1 < iVar4 && ((iVar9 = iVar4, -1 < param_5 || (iVar4 < param_4)))))) {\n    bVar2 = *(byte *)(param_1 + 0x1c);\n    bVar3 = bVar2 >> 5 & 3;\n    if ((param_4 < iVar9) && ((*(int *)(param_1 + 0x10) != 0 && ((bVar2 & 8) == 0)))) {\n      FUN_00029ec0(param_1);\n      bVar2 = *(byte *)(param_1 + 0x1c);\n    }\n  }\n  else {\n    iVar9 = 0;\n    bVar2 = *(byte *)(param_1 + 0x1c);\n    bVar3 = bVar2 >> 5 & 3;\n  }\n  if (((bVar2 & 0x10) == 0) && (param_6 != (uint *)0x0)) {\n    if (((bVar2 & 6) == 4) && (local_24 = *param_6, local_24 <= *(uint *)(param_1 + 0x18))) {\n      if ((int)local_24 < 1) goto LAB_0002ac98;\n    }\n    else {\n      local_24 = *(uint *)(param_1 + 0x18) + 1;\n    }\n    __size = local_24 * 8;\n  }\n  else {\nLAB_0002ac98:\n    __size = 8;\n    local_24 = 1;\n    param_6 = (uint *)0x0;\n  }\n  __ptr = (undefined4 *)malloc(__size);\n  if (__ptr == (undefined4 *)0x0) {\n    return 0xfffffffe;\n  }\n  iVar4 = FUN_00023920(param_1,param_2,param_3,param_4,iVar9,param_3,local_24,__ptr,bVar3);\n  if (iVar4 == 0) {\n    if (param_6 != (uint *)0x0) {\n      uVar7 = local_24 + 1;\n      bVar2 = *(byte *)(param_1 + 0x1c) >> 1;\n      bVar3 = bVar2 & 3;\n      if ((bVar2 & 3) == 0) {\n        pvVar5 = malloc(uVar7 * 4);\n        param_6[1] = (uint)pvVar5;\n        if (pvVar5 != (void *)0x0) {\n          pvVar6 = malloc(uVar7 * 4);\n          param_6[2] = (uint)pvVar6;\n          if (pvVar6 != (void *)0x0) {\n            cVar10 = '\x01';\n            *param_6 = uVar7;\n            uVar8 = uVar7;\n            goto LAB_0002abce;\n          }\n          free(pvVar5);\n        }\nLAB_0002ae33:\n        cVar10 = '\0';\n      }\n      else {\n        if (bVar3 == 1) {\n          cVar10 = '\x01';\n          uVar8 = *param_6;\n          if (*param_6 < uVar7) {\n            pvVar5 = realloc((void *)param_6[1],uVar7 * 4);\n            if (pvVar5 == (void *)0x0) goto LAB_0002ae33;\n            pvVar6 = realloc((void *)param_6[2],uVar7 * 4);\n            if (pvVar6 == (void *)0x0) {\n              cVar10 = '\0';\n              free(pvVar5);\n              goto LAB_0002ac4a;\n            }\n            param_6[1] = (uint)pvVar5;\n            *param_6 = uVar7;\n            param_6[2] = (uint)pvVar6;\n            uVar8 = uVar7;\n          }\n        }\n        else {\n          if (bVar3 != 2) {\n                    \n            __assert_fail("regs_allocated == REGS_FIXED","lib/regexec.c",0x1f8,"re_copy_regs");\n          }\n          if (*param_6 < local_24) {\n                    \n            __assert_fail("regs->num_regs >= nregs","lib/regexec.c",0x1fa,"re_copy_regs");\n          }\n          cVar10 = '\x02';\n          uVar8 = *param_6;\n        }\nLAB_0002abce:\n        if ((int)local_24 < 1) {\n          uVar7 = 0;\n        }\n        else {\n          uVar8 = param_6[1];\n          uVar1 = param_6[2];\n          uVar7 = 0;\n          do {\n            *(undefined4 *)(uVar8 + uVar7 * 4) = __ptr[uVar7 * 2];\n            *(undefined4 *)(uVar1 + uVar7 * 4) = __ptr[uVar7 * 2 + 1];\n            uVar7 = uVar7 + 1;\n          } while (local_24 != uVar7);\n          uVar8 = *param_6;\n        }\n        if (uVar7 < uVar8) {\n          uVar8 = param_6[2];\n          uVar1 = param_6[1];\n          do {\n            uVar12 = uVar7 + 1;\n            *(undefined4 *)(uVar8 + uVar7 * 4) = 0xffffffff;\n            *(undefined4 *)(uVar1 + uVar7 * 4) = 0xffffffff;\n            uVar7 = uVar12;\n          } while (uVar12 < *param_6);\n        }\n      }\nLAB_0002ac4a:\n      *(byte *)(param_1 + 0x1c) = *(byte *)(param_1 + 0x1c) & 0xf9 | cVar10 * '\x02';\n      if (cVar10 == '\0') goto LAB_0002ab5b;\n    }\n    uVar11 = *__ptr;\n  }\n  else {\n    uVar11 = 0xffffffff;\n    if (iVar4 == 1) goto LAB_0002ab60;\nLAB_0002ab5b:\n    uVar11 = 0xfffffffe;\n  }\nLAB_0002ab60:\n  free(__ptr);\n  return uVar11;\n}" { (declaration "uint uVar1;" type_identifier identifier ;) (declaration "byte bVar2;" type_identifier identifier ;) (declaration "byte bVar3;" type_identifier identifier ;) (declaration "undefined4 *__ptr;" type_identifier (pointer_declarator "*__ptr" * identifier) ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "size_t __size;" primitive_type identifier ;) (declaration "void *pvVar5;" primitive_type (pointer_declarator "*pvVar5" * identifier) ;) (declaration "void *pvVar6;" primitive_type (pointer_declarator "*pvVar6" * identifier) ;) (declaration "uint uVar7;" type_identifier identifier ;) (declaration "uint uVar8;" type_identifier identifier ;) (declaration "int iVar9;" primitive_type identifier ;) (declaration "char cVar10;" primitive_type identifier ;) (declaration "undefined4 uVar11;" type_identifier identifier ;) (declaration "uint uVar12;" type_identifier identifier ;) (declaration "uint local_24;" type_identifier identifier ;) (expression_statement "iVar4 = param_4 + param_5;" (assignment_expression "iVar4 = param_4 + param_5" identifier = (binary_expression "param_4 + param_5" identifier + identifier)) ;) (if_statement "if ((param_4 < 0) || (param_3 < param_4)) {\n    return 0xffffffff;\n  }" if (parenthesized_expression "((param_4 < 0) || (param_3 < param_4))" ( (binary_expression "(param_4 < 0) || (param_3 < param_4)" (parenthesized_expression "(param_4 < 0)" ( (binary_expression "param_4 < 0" identifier < number_literal) )) || (parenthesized_expression "(param_3 < param_4)" ( (binary_expression "param_3 < param_4" identifier < identifier) ))) )) (compound_statement "{\n    return 0xffffffff;\n  }" { (return_statement "return 0xffffffff;" return number_literal ;) })) (expression_statement "iVar9 = param_3;" (assignment_expression "iVar9 = param_3" identifier = identifier) ;) (if_statement "if (((param_3 < iVar4) || ((-1 < param_5 && (iVar4 < param_4)))) ||\n     ((-1 < iVar4 && ((iVar9 = iVar4, -1 < param_5 || (iVar4 < param_4)))))) {\n    bVar2 = *(byte *)(param_1 + 0x1c);\n    bVar3 = bVar2 >> 5 & 3;\n    if ((param_4 < iVar9) && ((*(int *)(param_1 + 0x10) != 0 && ((bVar2 & 8) == 0)))) {\n      FUN_00029ec0(param_1);\n      bVar2 = *(byte *)(param_1 + 0x1c);\n    }\n  }\n  else {\n    iVar9 = 0;\n    bVar2 = *(byte *)(param_1 + 0x1c);\n    bVar3 = bVar2 >> 5 & 3;\n  }" if (parenthesized_expression "(((param_3 < iVar4) || ((-1 < param_5 && (iVar4 < param_4)))) ||\n     ((-1 < iVar4 && ((iVar9 = iVar4, -1 < param_5 || (iVar4 < param_4))))))" ( (binary_expression "((param_3 < iVar4) || ((-1 < param_5 && (iVar4 < param_4)))) ||\n     ((-1 < iVar4 && ((iVar9 = iVar4, -1 < param_5 || (iVar4 < param_4)))))" (parenthesized_expression "((param_3 < iVar4) || ((-1 < param_5 && (iVar4 < param_4))))" ( (binary_expression "(param_3 < iVar4) || ((-1 < param_5 && (iVar4 < param_4)))" (parenthesized_expression "(param_3 < iVar4)" ( (binary_expression "param_3 < iVar4" identifier < identifier) )) || (parenthesized_expression "((-1 < param_5 && (iVar4 < param_4)))" ( (parenthesized_expression "(-1 < param_5 && (iVar4 < param_4))" ( (binary_expression "-1 < param_5 && (iVar4 < param_4)" (binary_expression "-1 < param_5" number_literal < identifier) && (parenthesized_expression "(iVar4 < param_4)" ( (binary_expression "iVar4 < param_4" identifier < identifier) ))) )) ))) )) || (parenthesized_expression "((-1 < iVar4 && ((iVar9 = iVar4, -1 < param_5 || (iVar4 < param_4)))))" ( (parenthesized_expression "(-1 < iVar4 && ((iVar9 = iVar4, -1 < param_5 || (iVar4 < param_4))))" ( (binary_expression "-1 < iVar4 && ((iVar9 = iVar4, -1 < param_5 || (iVar4 < param_4)))" (binary_expression "-1 < iVar4" number_literal < identifier) && (parenthesized_expression "((iVar9 = iVar4, -1 < param_5 || (iVar4 < param_4)))" ( (parenthesized_expression "(iVar9 = iVar4, -1 < param_5 || (iVar4 < param_4))" ( (comma_expression "iVar9 = iVar4, -1 < param_5 || (iVar4 < param_4)" (assignment_expression "iVar9 = iVar4" identifier = identifier) , (binary_expression "-1 < param_5 || (iVar4 < param_4)" (binary_expression "-1 < param_5" number_literal < identifier) || (parenthesized_expression "(iVar4 < param_4)" ( (binary_expression "iVar4 < param_4" identifier < identifier) )))) )) ))) )) ))) )) (compound_statement "{\n    bVar2 = *(byte *)(param_1 + 0x1c);\n    bVar3 = bVar2 >> 5 & 3;\n    if ((param_4 < iVar9) && ((*(int *)(param_1 + 0x10) != 0 && ((bVar2 & 8) == 0)))) {\n      FUN_00029ec0(param_1);\n      bVar2 = *(byte *)(param_1 + 0x1c);\n    }\n  }" { (expression_statement "bVar2 = *(byte *)(param_1 + 0x1c);" (assignment_expression "bVar2 = *(byte *)(param_1 + 0x1c)" identifier = (pointer_expression "*(byte *)(param_1 + 0x1c)" * (cast_expression "(byte *)(param_1 + 0x1c)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x1c)" ( (binary_expression "param_1 + 0x1c" identifier + number_literal) ))))) ;) (expression_statement "bVar3 = bVar2 >> 5 & 3;" (assignment_expression "bVar3 = bVar2 >> 5 & 3" identifier = (binary_expression "bVar2 >> 5 & 3" (binary_expression "bVar2 >> 5" identifier >> number_literal) & number_literal)) ;) (if_statement "if ((param_4 < iVar9) && ((*(int *)(param_1 + 0x10) != 0 && ((bVar2 & 8) == 0)))) {\n      FUN_00029ec0(param_1);\n      bVar2 = *(byte *)(param_1 + 0x1c);\n    }" if (parenthesized_expression "((param_4 < iVar9) && ((*(int *)(param_1 + 0x10) != 0 && ((bVar2 & 8) == 0))))" ( (binary_expression "(param_4 < iVar9) && ((*(int *)(param_1 + 0x10) != 0 && ((bVar2 & 8) == 0)))" (parenthesized_expression "(param_4 < iVar9)" ( (binary_expression "param_4 < iVar9" identifier < identifier) )) && (parenthesized_expression "((*(int *)(param_1 + 0x10) != 0 && ((bVar2 & 8) == 0)))" ( (parenthesized_expression "(*(int *)(param_1 + 0x10) != 0 && ((bVar2 & 8) == 0))" ( (binary_expression "*(int *)(param_1 + 0x10) != 0 && ((bVar2 & 8) == 0)" (binary_expression "*(int *)(param_1 + 0x10) != 0" (pointer_expression "*(int *)(param_1 + 0x10)" * (cast_expression "(int *)(param_1 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x10)" ( (binary_expression "param_1 + 0x10" identifier + number_literal) )))) != number_literal) && (parenthesized_expression "((bVar2 & 8) == 0)" ( (binary_expression "(bVar2 & 8) == 0" (parenthesized_expression "(bVar2 & 8)" ( (binary_expression "bVar2 & 8" identifier & number_literal) )) == number_literal) ))) )) ))) )) (compound_statement "{\n      FUN_00029ec0(param_1);\n      bVar2 = *(byte *)(param_1 + 0x1c);\n    }" { (expression_statement "FUN_00029ec0(param_1);" (call_expression "FUN_00029ec0(param_1)" identifier (argument_list "(param_1)" ( identifier ))) ;) (expression_statement "bVar2 = *(byte *)(param_1 + 0x1c);" (assignment_expression "bVar2 = *(byte *)(param_1 + 0x1c)" identifier = (pointer_expression "*(byte *)(param_1 + 0x1c)" * (cast_expression "(byte *)(param_1 + 0x1c)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x1c)" ( (binary_expression "param_1 + 0x1c" identifier + number_literal) ))))) ;) })) }) (else_clause "else {\n    iVar9 = 0;\n    bVar2 = *(byte *)(param_1 + 0x1c);\n    bVar3 = bVar2 >> 5 & 3;\n  }" else (compound_statement "{\n    iVar9 = 0;\n    bVar2 = *(byte *)(param_1 + 0x1c);\n    bVar3 = bVar2 >> 5 & 3;\n  }" { (expression_statement "iVar9 = 0;" (assignment_expression "iVar9 = 0" identifier = number_literal) ;) (expression_statement "bVar2 = *(byte *)(param_1 + 0x1c);" (assignment_expression "bVar2 = *(byte *)(param_1 + 0x1c)" identifier = (pointer_expression "*(byte *)(param_1 + 0x1c)" * (cast_expression "(byte *)(param_1 + 0x1c)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x1c)" ( (binary_expression "param_1 + 0x1c" identifier + number_literal) ))))) ;) (expression_statement "bVar3 = bVar2 >> 5 & 3;" (assignment_expression "bVar3 = bVar2 >> 5 & 3" identifier = (binary_expression "bVar2 >> 5 & 3" (binary_expression "bVar2 >> 5" identifier >> number_literal) & number_literal)) ;) }))) (if_statement "if (((bVar2 & 0x10) == 0) && (param_6 != (uint *)0x0)) {\n    if (((bVar2 & 6) == 4) && (local_24 = *param_6, local_24 <= *(uint *)(param_1 + 0x18))) {\n      if ((int)local_24 < 1) goto LAB_0002ac98;\n    }\n    else {\n      local_24 = *(uint *)(param_1 + 0x18) + 1;\n    }\n    __size = local_24 * 8;\n  }\n  else {\nLAB_0002ac98:\n    __size = 8;\n    local_24 = 1;\n    param_6 = (uint *)0x0;\n  }" if (parenthesized_expression "(((bVar2 & 0x10) == 0) && (param_6 != (uint *)0x0))" ( (binary_expression "((bVar2 & 0x10) == 0) && (param_6 != (uint *)0x0)" (parenthesized_expression "((bVar2 & 0x10) == 0)" ( (binary_expression "(bVar2 & 0x10) == 0" (parenthesized_expression "(bVar2 & 0x10)" ( (binary_expression "bVar2 & 0x10" identifier & number_literal) )) == number_literal) )) && (parenthesized_expression "(param_6 != (uint *)0x0)" ( (binary_expression "param_6 != (uint *)0x0" identifier != (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ))) )) (compound_statement "{\n    if (((bVar2 & 6) == 4) && (local_24 = *param_6, local_24 <= *(uint *)(param_1 + 0x18))) {\n      if ((int)local_24 < 1) goto LAB_0002ac98;\n    }\n    else {\n      local_24 = *(uint *)(param_1 + 0x18) + 1;\n    }\n    __size = local_24 * 8;\n  }" { (if_statement "if (((bVar2 & 6) == 4) && (local_24 = *param_6, local_24 <= *(uint *)(param_1 + 0x18))) {\n      if ((int)local_24 < 1) goto LAB_0002ac98;\n    }\n    else {\n      local_24 = *(uint *)(param_1 + 0x18) + 1;\n    }" if (parenthesized_expression "(((bVar2 & 6) == 4) && (local_24 = *param_6, local_24 <= *(uint *)(param_1 + 0x18)))" ( (binary_expression "((bVar2 & 6) == 4) && (local_24 = *param_6, local_24 <= *(uint *)(param_1 + 0x18))" (parenthesized_expression "((bVar2 & 6) == 4)" ( (binary_expression "(bVar2 & 6) == 4" (parenthesized_expression "(bVar2 & 6)" ( (binary_expression "bVar2 & 6" identifier & number_literal) )) == number_literal) )) && (parenthesized_expression "(local_24 = *param_6, local_24 <= *(uint *)(param_1 + 0x18))" ( (comma_expression "local_24 = *param_6, local_24 <= *(uint *)(param_1 + 0x18)" (assignment_expression "local_24 = *param_6" identifier = (pointer_expression "*param_6" * identifier)) , (binary_expression "local_24 <= *(uint *)(param_1 + 0x18)" identifier <= (pointer_expression "*(uint *)(param_1 + 0x18)" * (cast_expression "(uint *)(param_1 + 0x18)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x18)" ( (binary_expression "param_1 + 0x18" identifier + number_literal) )))))) ))) )) (compound_statement "{\n      if ((int)local_24 < 1) goto LAB_0002ac98;\n    }" { (if_statement "if ((int)local_24 < 1) goto LAB_0002ac98;" if (parenthesized_expression "((int)local_24 < 1)" ( (binary_expression "(int)local_24 < 1" (cast_expression "(int)local_24" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (goto_statement "goto LAB_0002ac98;" goto statement_identifier ;)) }) (else_clause "else {\n      local_24 = *(uint *)(param_1 + 0x18) + 1;\n    }" else (compound_statement "{\n      local_24 = *(uint *)(param_1 + 0x18) + 1;\n    }" { (expression_statement "local_24 = *(uint *)(param_1 + 0x18) + 1;" (assignment_expression "local_24 = *(uint *)(param_1 + 0x18) + 1" identifier = (binary_expression "*(uint *)(param_1 + 0x18) + 1" (pointer_expression "*(uint *)(param_1 + 0x18)" * (cast_expression "(uint *)(param_1 + 0x18)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x18)" ( (binary_expression "param_1 + 0x18" identifier + number_literal) )))) + number_literal)) ;) }))) (expression_statement "__size = local_24 * 8;" (assignment_expression "__size = local_24 * 8" identifier = (binary_expression "local_24 * 8" identifier * number_literal)) ;) }) (else_clause "else {\nLAB_0002ac98:\n    __size = 8;\n    local_24 = 1;\n    param_6 = (uint *)0x0;\n  }" else (compound_statement "{\nLAB_0002ac98:\n    __size = 8;\n    local_24 = 1;\n    param_6 = (uint *)0x0;\n  }" { (labeled_statement "LAB_0002ac98:\n    __size = 8;" statement_identifier : (expression_statement "__size = 8;" (assignment_expression "__size = 8" identifier = number_literal) ;)) (expression_statement "local_24 = 1;" (assignment_expression "local_24 = 1" identifier = number_literal) ;) (expression_statement "param_6 = (uint *)0x0;" (assignment_expression "param_6 = (uint *)0x0" identifier = (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) }))) (expression_statement "__ptr = (undefined4 *)malloc(__size);" (assignment_expression "__ptr = (undefined4 *)malloc(__size)" identifier = (cast_expression "(undefined4 *)malloc(__size)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "malloc(__size)" identifier (argument_list "(__size)" ( identifier ))))) ;) (if_statement "if (__ptr == (undefined4 *)0x0) {\n    return 0xfffffffe;\n  }" if (parenthesized_expression "(__ptr == (undefined4 *)0x0)" ( (binary_expression "__ptr == (undefined4 *)0x0" identifier == (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    return 0xfffffffe;\n  }" { (return_statement "return 0xfffffffe;" return number_literal ;) })) (expression_statement "iVar4 = FUN_00023920(param_1,param_2,param_3,param_4,iVar9,param_3,local_24,__ptr,bVar3);" (assignment_expression "iVar4 = FUN_00023920(param_1,param_2,param_3,param_4,iVar9,param_3,local_24,__ptr,bVar3)" identifier = (call_expression "FUN_00023920(param_1,param_2,param_3,param_4,iVar9,param_3,local_24,__ptr,bVar3)" identifier (argument_list "(param_1,param_2,param_3,param_4,iVar9,param_3,local_24,__ptr,bVar3)" ( identifier , identifier , identifier , identifier , identifier , identifier , identifier , identifier , identifier )))) ;) (if_statement "if (iVar4 == 0) {\n    if (param_6 != (uint *)0x0) {\n      uVar7 = local_24 + 1;\n      bVar2 = *(byte *)(param_1 + 0x1c) >> 1;\n      bVar3 = bVar2 & 3;\n      if ((bVar2 & 3) == 0) {\n        pvVar5 = malloc(uVar7 * 4);\n        param_6[1] = (uint)pvVar5;\n        if (pvVar5 != (void *)0x0) {\n          pvVar6 = malloc(uVar7 * 4);\n          param_6[2] = (uint)pvVar6;\n          if (pvVar6 != (void *)0x0) {\n            cVar10 = '\x01';\n            *param_6 = uVar7;\n            uVar8 = uVar7;\n            goto LAB_0002abce;\n          }\n          free(pvVar5);\n        }\nLAB_0002ae33:\n        cVar10 = '\0';\n      }\n      else {\n        if (bVar3 == 1) {\n          cVar10 = '\x01';\n          uVar8 = *param_6;\n          if (*param_6 < uVar7) {\n            pvVar5 = realloc((void *)param_6[1],uVar7 * 4);\n            if (pvVar5 == (void *)0x0) goto LAB_0002ae33;\n            pvVar6 = realloc((void *)param_6[2],uVar7 * 4);\n            if (pvVar6 == (void *)0x0) {\n              cVar10 = '\0';\n              free(pvVar5);\n              goto LAB_0002ac4a;\n            }\n            param_6[1] = (uint)pvVar5;\n            *param_6 = uVar7;\n            param_6[2] = (uint)pvVar6;\n            uVar8 = uVar7;\n          }\n        }\n        else {\n          if (bVar3 != 2) {\n                    \n            __assert_fail("regs_allocated == REGS_FIXED","lib/regexec.c",0x1f8,"re_copy_regs");\n          }\n          if (*param_6 < local_24) {\n                    \n            __assert_fail("regs->num_regs >= nregs","lib/regexec.c",0x1fa,"re_copy_regs");\n          }\n          cVar10 = '\x02';\n          uVar8 = *param_6;\n        }\nLAB_0002abce:\n        if ((int)local_24 < 1) {\n          uVar7 = 0;\n        }\n        else {\n          uVar8 = param_6[1];\n          uVar1 = param_6[2];\n          uVar7 = 0;\n          do {\n            *(undefined4 *)(uVar8 + uVar7 * 4) = __ptr[uVar7 * 2];\n            *(undefined4 *)(uVar1 + uVar7 * 4) = __ptr[uVar7 * 2 + 1];\n            uVar7 = uVar7 + 1;\n          } while (local_24 != uVar7);\n          uVar8 = *param_6;\n        }\n        if (uVar7 < uVar8) {\n          uVar8 = param_6[2];\n          uVar1 = param_6[1];\n          do {\n            uVar12 = uVar7 + 1;\n            *(undefined4 *)(uVar8 + uVar7 * 4) = 0xffffffff;\n            *(undefined4 *)(uVar1 + uVar7 * 4) = 0xffffffff;\n            uVar7 = uVar12;\n          } while (uVar12 < *param_6);\n        }\n      }\nLAB_0002ac4a:\n      *(byte *)(param_1 + 0x1c) = *(byte *)(param_1 + 0x1c) & 0xf9 | cVar10 * '\x02';\n      if (cVar10 == '\0') goto LAB_0002ab5b;\n    }\n    uVar11 = *__ptr;\n  }\n  else {\n    uVar11 = 0xffffffff;\n    if (iVar4 == 1) goto LAB_0002ab60;\nLAB_0002ab5b:\n    uVar11 = 0xfffffffe;\n  }" if (parenthesized_expression "(iVar4 == 0)" ( (binary_expression "iVar4 == 0" identifier == number_literal) )) (compound_statement "{\n    if (param_6 != (uint *)0x0) {\n      uVar7 = local_24 + 1;\n      bVar2 = *(byte *)(param_1 + 0x1c) >> 1;\n      bVar3 = bVar2 & 3;\n      if ((bVar2 & 3) == 0) {\n        pvVar5 = malloc(uVar7 * 4);\n        param_6[1] = (uint)pvVar5;\n        if (pvVar5 != (void *)0x0) {\n          pvVar6 = malloc(uVar7 * 4);\n          param_6[2] = (uint)pvVar6;\n          if (pvVar6 != (void *)0x0) {\n            cVar10 = '\x01';\n            *param_6 = uVar7;\n            uVar8 = uVar7;\n            goto LAB_0002abce;\n          }\n          free(pvVar5);\n        }\nLAB_0002ae33:\n        cVar10 = '\0';\n      }\n      else {\n        if (bVar3 == 1) {\n          cVar10 = '\x01';\n          uVar8 = *param_6;\n          if (*param_6 < uVar7) {\n            pvVar5 = realloc((void *)param_6[1],uVar7 * 4);\n            if (pvVar5 == (void *)0x0) goto LAB_0002ae33;\n            pvVar6 = realloc((void *)param_6[2],uVar7 * 4);\n            if (pvVar6 == (void *)0x0) {\n              cVar10 = '\0';\n              free(pvVar5);\n              goto LAB_0002ac4a;\n            }\n            param_6[1] = (uint)pvVar5;\n            *param_6 = uVar7;\n            param_6[2] = (uint)pvVar6;\n            uVar8 = uVar7;\n          }\n        }\n        else {\n          if (bVar3 != 2) {\n                    \n            __assert_fail("regs_allocated == REGS_FIXED","lib/regexec.c",0x1f8,"re_copy_regs");\n          }\n          if (*param_6 < local_24) {\n                    \n            __assert_fail("regs->num_regs >= nregs","lib/regexec.c",0x1fa,"re_copy_regs");\n          }\n          cVar10 = '\x02';\n          uVar8 = *param_6;\n        }\nLAB_0002abce:\n        if ((int)local_24 < 1) {\n          uVar7 = 0;\n        }\n        else {\n          uVar8 = param_6[1];\n          uVar1 = param_6[2];\n          uVar7 = 0;\n          do {\n            *(undefined4 *)(uVar8 + uVar7 * 4) = __ptr[uVar7 * 2];\n            *(undefined4 *)(uVar1 + uVar7 * 4) = __ptr[uVar7 * 2 + 1];\n            uVar7 = uVar7 + 1;\n          } while (local_24 != uVar7);\n          uVar8 = *param_6;\n        }\n        if (uVar7 < uVar8) {\n          uVar8 = param_6[2];\n          uVar1 = param_6[1];\n          do {\n            uVar12 = uVar7 + 1;\n            *(undefined4 *)(uVar8 + uVar7 * 4) = 0xffffffff;\n            *(undefined4 *)(uVar1 + uVar7 * 4) = 0xffffffff;\n            uVar7 = uVar12;\n          } while (uVar12 < *param_6);\n        }\n      }\nLAB_0002ac4a:\n      *(byte *)(param_1 + 0x1c) = *(byte *)(param_1 + 0x1c) & 0xf9 | cVar10 * '\x02';\n      if (cVar10 == '\0') goto LAB_0002ab5b;\n    }\n    uVar11 = *__ptr;\n  }" { (if_statement "if (param_6 != (uint *)0x0) {\n      uVar7 = local_24 + 1;\n      bVar2 = *(byte *)(param_1 + 0x1c) >> 1;\n      bVar3 = bVar2 & 3;\n      if ((bVar2 & 3) == 0) {\n        pvVar5 = malloc(uVar7 * 4);\n        param_6[1] = (uint)pvVar5;\n        if (pvVar5 != (void *)0x0) {\n          pvVar6 = malloc(uVar7 * 4);\n          param_6[2] = (uint)pvVar6;\n          if (pvVar6 != (void *)0x0) {\n            cVar10 = '\x01';\n            *param_6 = uVar7;\n            uVar8 = uVar7;\n            goto LAB_0002abce;\n          }\n          free(pvVar5);\n        }\nLAB_0002ae33:\n        cVar10 = '\0';\n      }\n      else {\n        if (bVar3 == 1) {\n          cVar10 = '\x01';\n          uVar8 = *param_6;\n          if (*param_6 < uVar7) {\n            pvVar5 = realloc((void *)param_6[1],uVar7 * 4);\n            if (pvVar5 == (void *)0x0) goto LAB_0002ae33;\n            pvVar6 = realloc((void *)param_6[2],uVar7 * 4);\n            if (pvVar6 == (void *)0x0) {\n              cVar10 = '\0';\n              free(pvVar5);\n              goto LAB_0002ac4a;\n            }\n            param_6[1] = (uint)pvVar5;\n            *param_6 = uVar7;\n            param_6[2] = (uint)pvVar6;\n            uVar8 = uVar7;\n          }\n        }\n        else {\n          if (bVar3 != 2) {\n                    \n            __assert_fail("regs_allocated == REGS_FIXED","lib/regexec.c",0x1f8,"re_copy_regs");\n          }\n          if (*param_6 < local_24) {\n                    \n            __assert_fail("regs->num_regs >= nregs","lib/regexec.c",0x1fa,"re_copy_regs");\n          }\n          cVar10 = '\x02';\n          uVar8 = *param_6;\n        }\nLAB_0002abce:\n        if ((int)local_24 < 1) {\n          uVar7 = 0;\n        }\n        else {\n          uVar8 = param_6[1];\n          uVar1 = param_6[2];\n          uVar7 = 0;\n          do {\n            *(undefined4 *)(uVar8 + uVar7 * 4) = __ptr[uVar7 * 2];\n            *(undefined4 *)(uVar1 + uVar7 * 4) = __ptr[uVar7 * 2 + 1];\n            uVar7 = uVar7 + 1;\n          } while (local_24 != uVar7);\n          uVar8 = *param_6;\n        }\n        if (uVar7 < uVar8) {\n          uVar8 = param_6[2];\n          uVar1 = param_6[1];\n          do {\n            uVar12 = uVar7 + 1;\n            *(undefined4 *)(uVar8 + uVar7 * 4) = 0xffffffff;\n            *(undefined4 *)(uVar1 + uVar7 * 4) = 0xffffffff;\n            uVar7 = uVar12;\n          } while (uVar12 < *param_6);\n        }\n      }\nLAB_0002ac4a:\n      *(byte *)(param_1 + 0x1c) = *(byte *)(param_1 + 0x1c) & 0xf9 | cVar10 * '\x02';\n      if (cVar10 == '\0') goto LAB_0002ab5b;\n    }" if (parenthesized_expression "(param_6 != (uint *)0x0)" ( (binary_expression "param_6 != (uint *)0x0" identifier != (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      uVar7 = local_24 + 1;\n      bVar2 = *(byte *)(param_1 + 0x1c) >> 1;\n      bVar3 = bVar2 & 3;\n      if ((bVar2 & 3) == 0) {\n        pvVar5 = malloc(uVar7 * 4);\n        param_6[1] = (uint)pvVar5;\n        if (pvVar5 != (void *)0x0) {\n          pvVar6 = malloc(uVar7 * 4);\n          param_6[2] = (uint)pvVar6;\n          if (pvVar6 != (void *)0x0) {\n            cVar10 = '\x01';\n            *param_6 = uVar7;\n            uVar8 = uVar7;\n            goto LAB_0002abce;\n          }\n          free(pvVar5);\n        }\nLAB_0002ae33:\n        cVar10 = '\0';\n      }\n      else {\n        if (bVar3 == 1) {\n          cVar10 = '\x01';\n          uVar8 = *param_6;\n          if (*param_6 < uVar7) {\n            pvVar5 = realloc((void *)param_6[1],uVar7 * 4);\n            if (pvVar5 == (void *)0x0) goto LAB_0002ae33;\n            pvVar6 = realloc((void *)param_6[2],uVar7 * 4);\n            if (pvVar6 == (void *)0x0) {\n              cVar10 = '\0';\n              free(pvVar5);\n              goto LAB_0002ac4a;\n            }\n            param_6[1] = (uint)pvVar5;\n            *param_6 = uVar7;\n            param_6[2] = (uint)pvVar6;\n            uVar8 = uVar7;\n          }\n        }\n        else {\n          if (bVar3 != 2) {\n                    \n            __assert_fail("regs_allocated == REGS_FIXED","lib/regexec.c",0x1f8,"re_copy_regs");\n          }\n          if (*param_6 < local_24) {\n                    \n            __assert_fail("regs->num_regs >= nregs","lib/regexec.c",0x1fa,"re_copy_regs");\n          }\n          cVar10 = '\x02';\n          uVar8 = *param_6;\n        }\nLAB_0002abce:\n        if ((int)local_24 < 1) {\n          uVar7 = 0;\n        }\n        else {\n          uVar8 = param_6[1];\n          uVar1 = param_6[2];\n          uVar7 = 0;\n          do {\n            *(undefined4 *)(uVar8 + uVar7 * 4) = __ptr[uVar7 * 2];\n            *(undefined4 *)(uVar1 + uVar7 * 4) = __ptr[uVar7 * 2 + 1];\n            uVar7 = uVar7 + 1;\n          } while (local_24 != uVar7);\n          uVar8 = *param_6;\n        }\n        if (uVar7 < uVar8) {\n          uVar8 = param_6[2];\n          uVar1 = param_6[1];\n          do {\n            uVar12 = uVar7 + 1;\n            *(undefined4 *)(uVar8 + uVar7 * 4) = 0xffffffff;\n            *(undefined4 *)(uVar1 + uVar7 * 4) = 0xffffffff;\n            uVar7 = uVar12;\n          } while (uVar12 < *param_6);\n        }\n      }\nLAB_0002ac4a:\n      *(byte *)(param_1 + 0x1c) = *(byte *)(param_1 + 0x1c) & 0xf9 | cVar10 * '\x02';\n      if (cVar10 == '\0') goto LAB_0002ab5b;\n    }" { (expression_statement "uVar7 = local_24 + 1;" (assignment_expression "uVar7 = local_24 + 1" identifier = (binary_expression "local_24 + 1" identifier + number_literal)) ;) (expression_statement "bVar2 = *(byte *)(param_1 + 0x1c) >> 1;" (assignment_expression "bVar2 = *(byte *)(param_1 + 0x1c) >> 1" identifier = (binary_expression "*(byte *)(param_1 + 0x1c) >> 1" (pointer_expression "*(byte *)(param_1 + 0x1c)" * (cast_expression "(byte *)(param_1 + 0x1c)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x1c)" ( (binary_expression "param_1 + 0x1c" identifier + number_literal) )))) >> number_literal)) ;) (expression_statement "bVar3 = bVar2 & 3;" (assignment_expression "bVar3 = bVar2 & 3" identifier = (binary_expression "bVar2 & 3" identifier & number_literal)) ;) (if_statement "if ((bVar2 & 3) == 0) {\n        pvVar5 = malloc(uVar7 * 4);\n        param_6[1] = (uint)pvVar5;\n        if (pvVar5 != (void *)0x0) {\n          pvVar6 = malloc(uVar7 * 4);\n          param_6[2] = (uint)pvVar6;\n          if (pvVar6 != (void *)0x0) {\n            cVar10 = '\x01';\n            *param_6 = uVar7;\n            uVar8 = uVar7;\n            goto LAB_0002abce;\n          }\n          free(pvVar5);\n        }\nLAB_0002ae33:\n        cVar10 = '\0';\n      }\n      else {\n        if (bVar3 == 1) {\n          cVar10 = '\x01';\n          uVar8 = *param_6;\n          if (*param_6 < uVar7) {\n            pvVar5 = realloc((void *)param_6[1],uVar7 * 4);\n            if (pvVar5 == (void *)0x0) goto LAB_0002ae33;\n            pvVar6 = realloc((void *)param_6[2],uVar7 * 4);\n            if (pvVar6 == (void *)0x0) {\n              cVar10 = '\0';\n              free(pvVar5);\n              goto LAB_0002ac4a;\n            }\n            param_6[1] = (uint)pvVar5;\n            *param_6 = uVar7;\n            param_6[2] = (uint)pvVar6;\n            uVar8 = uVar7;\n          }\n        }\n        else {\n          if (bVar3 != 2) {\n                    \n            __assert_fail("regs_allocated == REGS_FIXED","lib/regexec.c",0x1f8,"re_copy_regs");\n          }\n          if (*param_6 < local_24) {\n                    \n            __assert_fail("regs->num_regs >= nregs","lib/regexec.c",0x1fa,"re_copy_regs");\n          }\n          cVar10 = '\x02';\n          uVar8 = *param_6;\n        }\nLAB_0002abce:\n        if ((int)local_24 < 1) {\n          uVar7 = 0;\n        }\n        else {\n          uVar8 = param_6[1];\n          uVar1 = param_6[2];\n          uVar7 = 0;\n          do {\n            *(undefined4 *)(uVar8 + uVar7 * 4) = __ptr[uVar7 * 2];\n            *(undefined4 *)(uVar1 + uVar7 * 4) = __ptr[uVar7 * 2 + 1];\n            uVar7 = uVar7 + 1;\n          } while (local_24 != uVar7);\n          uVar8 = *param_6;\n        }\n        if (uVar7 < uVar8) {\n          uVar8 = param_6[2];\n          uVar1 = param_6[1];\n          do {\n            uVar12 = uVar7 + 1;\n            *(undefined4 *)(uVar8 + uVar7 * 4) = 0xffffffff;\n            *(undefined4 *)(uVar1 + uVar7 * 4) = 0xffffffff;\n            uVar7 = uVar12;\n          } while (uVar12 < *param_6);\n        }\n      }" if (parenthesized_expression "((bVar2 & 3) == 0)" ( (binary_expression "(bVar2 & 3) == 0" (parenthesized_expression "(bVar2 & 3)" ( (binary_expression "bVar2 & 3" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n        pvVar5 = malloc(uVar7 * 4);\n        param_6[1] = (uint)pvVar5;\n        if (pvVar5 != (void *)0x0) {\n          pvVar6 = malloc(uVar7 * 4);\n          param_6[2] = (uint)pvVar6;\n          if (pvVar6 != (void *)0x0) {\n            cVar10 = '\x01';\n            *param_6 = uVar7;\n            uVar8 = uVar7;\n            goto LAB_0002abce;\n          }\n          free(pvVar5);\n        }\nLAB_0002ae33:\n        cVar10 = '\0';\n      }" { (expression_statement "pvVar5 = malloc(uVar7 * 4);" (assignment_expression "pvVar5 = malloc(uVar7 * 4)" identifier = (call_expression "malloc(uVar7 * 4)" identifier (argument_list "(uVar7 * 4)" ( (binary_expression "uVar7 * 4" identifier * number_literal) )))) ;) (expression_statement "param_6[1] = (uint)pvVar5;" (assignment_expression "param_6[1] = (uint)pvVar5" (subscript_expression "param_6[1]" identifier [ number_literal ]) = (cast_expression "(uint)pvVar5" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (if_statement "if (pvVar5 != (void *)0x0) {\n          pvVar6 = malloc(uVar7 * 4);\n          param_6[2] = (uint)pvVar6;\n          if (pvVar6 != (void *)0x0) {\n            cVar10 = '\x01';\n            *param_6 = uVar7;\n            uVar8 = uVar7;\n            goto LAB_0002abce;\n          }\n          free(pvVar5);\n        }" if (parenthesized_expression "(pvVar5 != (void *)0x0)" ( (binary_expression "pvVar5 != (void *)0x0" identifier != (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          pvVar6 = malloc(uVar7 * 4);\n          param_6[2] = (uint)pvVar6;\n          if (pvVar6 != (void *)0x0) {\n            cVar10 = '\x01';\n            *param_6 = uVar7;\n            uVar8 = uVar7;\n            goto LAB_0002abce;\n          }\n          free(pvVar5);\n        }" { (expression_statement "pvVar6 = malloc(uVar7 * 4);" (assignment_expression "pvVar6 = malloc(uVar7 * 4)" identifier = (call_expression "malloc(uVar7 * 4)" identifier (argument_list "(uVar7 * 4)" ( (binary_expression "uVar7 * 4" identifier * number_literal) )))) ;) (expression_statement "param_6[2] = (uint)pvVar6;" (assignment_expression "param_6[2] = (uint)pvVar6" (subscript_expression "param_6[2]" identifier [ number_literal ]) = (cast_expression "(uint)pvVar6" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (if_statement "if (pvVar6 != (void *)0x0) {\n            cVar10 = '\x01';\n            *param_6 = uVar7;\n            uVar8 = uVar7;\n            goto LAB_0002abce;\n          }" if (parenthesized_expression "(pvVar6 != (void *)0x0)" ( (binary_expression "pvVar6 != (void *)0x0" identifier != (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n            cVar10 = '\x01';\n            *param_6 = uVar7;\n            uVar8 = uVar7;\n            goto LAB_0002abce;\n          }" { (expression_statement "cVar10 = '\x01';" (assignment_expression "cVar10 = '\x01'" identifier = (char_literal "'\x01'" ' escape_sequence ')) ;) (expression_statement "*param_6 = uVar7;" (assignment_expression "*param_6 = uVar7" (pointer_expression "*param_6" * identifier) = identifier) ;) (expression_statement "uVar8 = uVar7;" (assignment_expression "uVar8 = uVar7" identifier = identifier) ;) (goto_statement "goto LAB_0002abce;" goto statement_identifier ;) })) (expression_statement "free(pvVar5);" (call_expression "free(pvVar5)" identifier (argument_list "(pvVar5)" ( identifier ))) ;) })) (labeled_statement "LAB_0002ae33:\n        cVar10 = '\0';" statement_identifier : (expression_statement "cVar10 = '\0';" (assignment_expression "cVar10 = '\0'" identifier = (char_literal "'\0'" ' escape_sequence ')) ;)) }) (else_clause "else {\n        if (bVar3 == 1) {\n          cVar10 = '\x01';\n          uVar8 = *param_6;\n          if (*param_6 < uVar7) {\n            pvVar5 = realloc((void *)param_6[1],uVar7 * 4);\n            if (pvVar5 == (void *)0x0) goto LAB_0002ae33;\n            pvVar6 = realloc((void *)param_6[2],uVar7 * 4);\n            if (pvVar6 == (void *)0x0) {\n              cVar10 = '\0';\n              free(pvVar5);\n              goto LAB_0002ac4a;\n            }\n            param_6[1] = (uint)pvVar5;\n            *param_6 = uVar7;\n            param_6[2] = (uint)pvVar6;\n            uVar8 = uVar7;\n          }\n        }\n        else {\n          if (bVar3 != 2) {\n                    \n            __assert_fail("regs_allocated == REGS_FIXED","lib/regexec.c",0x1f8,"re_copy_regs");\n          }\n          if (*param_6 < local_24) {\n                    \n            __assert_fail("regs->num_regs >= nregs","lib/regexec.c",0x1fa,"re_copy_regs");\n          }\n          cVar10 = '\x02';\n          uVar8 = *param_6;\n        }\nLAB_0002abce:\n        if ((int)local_24 < 1) {\n          uVar7 = 0;\n        }\n        else {\n          uVar8 = param_6[1];\n          uVar1 = param_6[2];\n          uVar7 = 0;\n          do {\n            *(undefined4 *)(uVar8 + uVar7 * 4) = __ptr[uVar7 * 2];\n            *(undefined4 *)(uVar1 + uVar7 * 4) = __ptr[uVar7 * 2 + 1];\n            uVar7 = uVar7 + 1;\n          } while (local_24 != uVar7);\n          uVar8 = *param_6;\n        }\n        if (uVar7 < uVar8) {\n          uVar8 = param_6[2];\n          uVar1 = param_6[1];\n          do {\n            uVar12 = uVar7 + 1;\n            *(undefined4 *)(uVar8 + uVar7 * 4) = 0xffffffff;\n            *(undefined4 *)(uVar1 + uVar7 * 4) = 0xffffffff;\n            uVar7 = uVar12;\n          } while (uVar12 < *param_6);\n        }\n      }" else (compound_statement "{\n        if (bVar3 == 1) {\n          cVar10 = '\x01';\n          uVar8 = *param_6;\n          if (*param_6 < uVar7) {\n            pvVar5 = realloc((void *)param_6[1],uVar7 * 4);\n            if (pvVar5 == (void *)0x0) goto LAB_0002ae33;\n            pvVar6 = realloc((void *)param_6[2],uVar7 * 4);\n            if (pvVar6 == (void *)0x0) {\n              cVar10 = '\0';\n              free(pvVar5);\n              goto LAB_0002ac4a;\n            }\n            param_6[1] = (uint)pvVar5;\n            *param_6 = uVar7;\n            param_6[2] = (uint)pvVar6;\n            uVar8 = uVar7;\n          }\n        }\n        else {\n          if (bVar3 != 2) {\n                    \n            __assert_fail("regs_allocated == REGS_FIXED","lib/regexec.c",0x1f8,"re_copy_regs");\n          }\n          if (*param_6 < local_24) {\n                    \n            __assert_fail("regs->num_regs >= nregs","lib/regexec.c",0x1fa,"re_copy_regs");\n          }\n          cVar10 = '\x02';\n          uVar8 = *param_6;\n        }\nLAB_0002abce:\n        if ((int)local_24 < 1) {\n          uVar7 = 0;\n        }\n        else {\n          uVar8 = param_6[1];\n          uVar1 = param_6[2];\n          uVar7 = 0;\n          do {\n            *(undefined4 *)(uVar8 + uVar7 * 4) = __ptr[uVar7 * 2];\n            *(undefined4 *)(uVar1 + uVar7 * 4) = __ptr[uVar7 * 2 + 1];\n            uVar7 = uVar7 + 1;\n          } while (local_24 != uVar7);\n          uVar8 = *param_6;\n        }\n        if (uVar7 < uVar8) {\n          uVar8 = param_6[2];\n          uVar1 = param_6[1];\n          do {\n            uVar12 = uVar7 + 1;\n            *(undefined4 *)(uVar8 + uVar7 * 4) = 0xffffffff;\n            *(undefined4 *)(uVar1 + uVar7 * 4) = 0xffffffff;\n            uVar7 = uVar12;\n          } while (uVar12 < *param_6);\n        }\n      }" { (if_statement "if (bVar3 == 1) {\n          cVar10 = '\x01';\n          uVar8 = *param_6;\n          if (*param_6 < uVar7) {\n            pvVar5 = realloc((void *)param_6[1],uVar7 * 4);\n            if (pvVar5 == (void *)0x0) goto LAB_0002ae33;\n            pvVar6 = realloc((void *)param_6[2],uVar7 * 4);\n            if (pvVar6 == (void *)0x0) {\n              cVar10 = '\0';\n              free(pvVar5);\n              goto LAB_0002ac4a;\n            }\n            param_6[1] = (uint)pvVar5;\n            *param_6 = uVar7;\n            param_6[2] = (uint)pvVar6;\n            uVar8 = uVar7;\n          }\n        }\n        else {\n          if (bVar3 != 2) {\n                    \n            __assert_fail("regs_allocated == REGS_FIXED","lib/regexec.c",0x1f8,"re_copy_regs");\n          }\n          if (*param_6 < local_24) {\n                    \n            __assert_fail("regs->num_regs >= nregs","lib/regexec.c",0x1fa,"re_copy_regs");\n          }\n          cVar10 = '\x02';\n          uVar8 = *param_6;\n        }" if (parenthesized_expression "(bVar3 == 1)" ( (binary_expression "bVar3 == 1" identifier == number_literal) )) (compound_statement "{\n          cVar10 = '\x01';\n          uVar8 = *param_6;\n          if (*param_6 < uVar7) {\n            pvVar5 = realloc((void *)param_6[1],uVar7 * 4);\n            if (pvVar5 == (void *)0x0) goto LAB_0002ae33;\n            pvVar6 = realloc((void *)param_6[2],uVar7 * 4);\n            if (pvVar6 == (void *)0x0) {\n              cVar10 = '\0';\n              free(pvVar5);\n              goto LAB_0002ac4a;\n            }\n            param_6[1] = (uint)pvVar5;\n            *param_6 = uVar7;\n            param_6[2] = (uint)pvVar6;\n            uVar8 = uVar7;\n          }\n        }" { (expression_statement "cVar10 = '\x01';" (assignment_expression "cVar10 = '\x01'" identifier = (char_literal "'\x01'" ' escape_sequence ')) ;) (expression_statement "uVar8 = *param_6;" (assignment_expression "uVar8 = *param_6" identifier = (pointer_expression "*param_6" * identifier)) ;) (if_statement "if (*param_6 < uVar7) {\n            pvVar5 = realloc((void *)param_6[1],uVar7 * 4);\n            if (pvVar5 == (void *)0x0) goto LAB_0002ae33;\n            pvVar6 = realloc((void *)param_6[2],uVar7 * 4);\n            if (pvVar6 == (void *)0x0) {\n              cVar10 = '\0';\n              free(pvVar5);\n              goto LAB_0002ac4a;\n            }\n            param_6[1] = (uint)pvVar5;\n            *param_6 = uVar7;\n            param_6[2] = (uint)pvVar6;\n            uVar8 = uVar7;\n          }" if (parenthesized_expression "(*param_6 < uVar7)" ( (binary_expression "*param_6 < uVar7" (pointer_expression "*param_6" * identifier) < identifier) )) (compound_statement "{\n            pvVar5 = realloc((void *)param_6[1],uVar7 * 4);\n            if (pvVar5 == (void *)0x0) goto LAB_0002ae33;\n            pvVar6 = realloc((void *)param_6[2],uVar7 * 4);\n            if (pvVar6 == (void *)0x0) {\n              cVar10 = '\0';\n              free(pvVar5);\n              goto LAB_0002ac4a;\n            }\n            param_6[1] = (uint)pvVar5;\n            *param_6 = uVar7;\n            param_6[2] = (uint)pvVar6;\n            uVar8 = uVar7;\n          }" { (expression_statement "pvVar5 = realloc((void *)param_6[1],uVar7 * 4);" (assignment_expression "pvVar5 = realloc((void *)param_6[1],uVar7 * 4)" identifier = (call_expression "realloc((void *)param_6[1],uVar7 * 4)" identifier (argument_list "((void *)param_6[1],uVar7 * 4)" ( (cast_expression "(void *)param_6[1]" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_6[1]" identifier [ number_literal ])) , (binary_expression "uVar7 * 4" identifier * number_literal) )))) ;) (if_statement "if (pvVar5 == (void *)0x0) goto LAB_0002ae33;" if (parenthesized_expression "(pvVar5 == (void *)0x0)" ( (binary_expression "pvVar5 == (void *)0x0" identifier == (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_0002ae33;" goto statement_identifier ;)) (expression_statement "pvVar6 = realloc((void *)param_6[2],uVar7 * 4);" (assignment_expression "pvVar6 = realloc((void *)param_6[2],uVar7 * 4)" identifier = (call_expression "realloc((void *)param_6[2],uVar7 * 4)" identifier (argument_list "((void *)param_6[2],uVar7 * 4)" ( (cast_expression "(void *)param_6[2]" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_6[2]" identifier [ number_literal ])) , (binary_expression "uVar7 * 4" identifier * number_literal) )))) ;) (if_statement "if (pvVar6 == (void *)0x0) {\n              cVar10 = '\0';\n              free(pvVar5);\n              goto LAB_0002ac4a;\n            }" if (parenthesized_expression "(pvVar6 == (void *)0x0)" ( (binary_expression "pvVar6 == (void *)0x0" identifier == (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n              cVar10 = '\0';\n              free(pvVar5);\n              goto LAB_0002ac4a;\n            }" { (expression_statement "cVar10 = '\0';" (assignment_expression "cVar10 = '\0'" identifier = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "free(pvVar5);" (call_expression "free(pvVar5)" identifier (argument_list "(pvVar5)" ( identifier ))) ;) (goto_statement "goto LAB_0002ac4a;" goto statement_identifier ;) })) (expression_statement "param_6[1] = (uint)pvVar5;" (assignment_expression "param_6[1] = (uint)pvVar5" (subscript_expression "param_6[1]" identifier [ number_literal ]) = (cast_expression "(uint)pvVar5" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (expression_statement "*param_6 = uVar7;" (assignment_expression "*param_6 = uVar7" (pointer_expression "*param_6" * identifier) = identifier) ;) (expression_statement "param_6[2] = (uint)pvVar6;" (assignment_expression "param_6[2] = (uint)pvVar6" (subscript_expression "param_6[2]" identifier [ number_literal ]) = (cast_expression "(uint)pvVar6" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (expression_statement "uVar8 = uVar7;" (assignment_expression "uVar8 = uVar7" identifier = identifier) ;) })) }) (else_clause "else {\n          if (bVar3 != 2) {\n                    \n            __assert_fail("regs_allocated == REGS_FIXED","lib/regexec.c",0x1f8,"re_copy_regs");\n          }\n          if (*param_6 < local_24) {\n                    \n            __assert_fail("regs->num_regs >= nregs","lib/regexec.c",0x1fa,"re_copy_regs");\n          }\n          cVar10 = '\x02';\n          uVar8 = *param_6;\n        }" else (compound_statement "{\n          if (bVar3 != 2) {\n                    \n            __assert_fail("regs_allocated == REGS_FIXED","lib/regexec.c",0x1f8,"re_copy_regs");\n          }\n          if (*param_6 < local_24) {\n                    \n            __assert_fail("regs->num_regs >= nregs","lib/regexec.c",0x1fa,"re_copy_regs");\n          }\n          cVar10 = '\x02';\n          uVar8 = *param_6;\n        }" { (if_statement "if (bVar3 != 2) {\n                    \n            __assert_fail("regs_allocated == REGS_FIXED","lib/regexec.c",0x1f8,"re_copy_regs");\n          }" if (parenthesized_expression "(bVar3 != 2)" ( (binary_expression "bVar3 != 2" identifier != number_literal) )) (compound_statement "{\n                    \n            __assert_fail("regs_allocated == REGS_FIXED","lib/regexec.c",0x1f8,"re_copy_regs");\n          }" { (expression_statement "__assert_fail("regs_allocated == REGS_FIXED","lib/regexec.c",0x1f8,"re_copy_regs");" (call_expression "__assert_fail("regs_allocated == REGS_FIXED","lib/regexec.c",0x1f8,"re_copy_regs")" identifier (argument_list "("regs_allocated == REGS_FIXED","lib/regexec.c",0x1f8,"re_copy_regs")" ( (string_literal ""regs_allocated == REGS_FIXED"" " string_content ") , (string_literal ""lib/regexec.c"" " string_content ") , number_literal , (string_literal ""re_copy_regs"" " string_content ") ))) ;) })) (if_statement "if (*param_6 < local_24) {\n                    \n            __assert_fail("regs->num_regs >= nregs","lib/regexec.c",0x1fa,"re_copy_regs");\n          }" if (parenthesized_expression "(*param_6 < local_24)" ( (binary_expression "*param_6 < local_24" (pointer_expression "*param_6" * identifier) < identifier) )) (compound_statement "{\n                    \n            __assert_fail("regs->num_regs >= nregs","lib/regexec.c",0x1fa,"re_copy_regs");\n          }" { (expression_statement "__assert_fail("regs->num_regs >= nregs","lib/regexec.c",0x1fa,"re_copy_regs");" (call_expression "__assert_fail("regs->num_regs >= nregs","lib/regexec.c",0x1fa,"re_copy_regs")" identifier (argument_list "("regs->num_regs >= nregs","lib/regexec.c",0x1fa,"re_copy_regs")" ( (string_literal ""regs->num_regs >= nregs"" " string_content ") , (string_literal ""lib/regexec.c"" " string_content ") , number_literal , (string_literal ""re_copy_regs"" " string_content ") ))) ;) })) (expression_statement "cVar10 = '\x02';" (assignment_expression "cVar10 = '\x02'" identifier = (char_literal "'\x02'" ' escape_sequence ')) ;) (expression_statement "uVar8 = *param_6;" (assignment_expression "uVar8 = *param_6" identifier = (pointer_expression "*param_6" * identifier)) ;) }))) (labeled_statement "LAB_0002abce:\n        if ((int)local_24 < 1) {\n          uVar7 = 0;\n        }\n        else {\n          uVar8 = param_6[1];\n          uVar1 = param_6[2];\n          uVar7 = 0;\n          do {\n            *(undefined4 *)(uVar8 + uVar7 * 4) = __ptr[uVar7 * 2];\n            *(undefined4 *)(uVar1 + uVar7 * 4) = __ptr[uVar7 * 2 + 1];\n            uVar7 = uVar7 + 1;\n          } while (local_24 != uVar7);\n          uVar8 = *param_6;\n        }" statement_identifier : (if_statement "if ((int)local_24 < 1) {\n          uVar7 = 0;\n        }\n        else {\n          uVar8 = param_6[1];\n          uVar1 = param_6[2];\n          uVar7 = 0;\n          do {\n            *(undefined4 *)(uVar8 + uVar7 * 4) = __ptr[uVar7 * 2];\n            *(undefined4 *)(uVar1 + uVar7 * 4) = __ptr[uVar7 * 2 + 1];\n            uVar7 = uVar7 + 1;\n          } while (local_24 != uVar7);\n          uVar8 = *param_6;\n        }" if (parenthesized_expression "((int)local_24 < 1)" ( (binary_expression "(int)local_24 < 1" (cast_expression "(int)local_24" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n          uVar7 = 0;\n        }" { (expression_statement "uVar7 = 0;" (assignment_expression "uVar7 = 0" identifier = number_literal) ;) }) (else_clause "else {\n          uVar8 = param_6[1];\n          uVar1 = param_6[2];\n          uVar7 = 0;\n          do {\n            *(undefined4 *)(uVar8 + uVar7 * 4) = __ptr[uVar7 * 2];\n            *(undefined4 *)(uVar1 + uVar7 * 4) = __ptr[uVar7 * 2 + 1];\n            uVar7 = uVar7 + 1;\n          } while (local_24 != uVar7);\n          uVar8 = *param_6;\n        }" else (compound_statement "{\n          uVar8 = param_6[1];\n          uVar1 = param_6[2];\n          uVar7 = 0;\n          do {\n            *(undefined4 *)(uVar8 + uVar7 * 4) = __ptr[uVar7 * 2];\n            *(undefined4 *)(uVar1 + uVar7 * 4) = __ptr[uVar7 * 2 + 1];\n            uVar7 = uVar7 + 1;\n          } while (local_24 != uVar7);\n          uVar8 = *param_6;\n        }" { (expression_statement "uVar8 = param_6[1];" (assignment_expression "uVar8 = param_6[1]" identifier = (subscript_expression "param_6[1]" identifier [ number_literal ])) ;) (expression_statement "uVar1 = param_6[2];" (assignment_expression "uVar1 = param_6[2]" identifier = (subscript_expression "param_6[2]" identifier [ number_literal ])) ;) (expression_statement "uVar7 = 0;" (assignment_expression "uVar7 = 0" identifier = number_literal) ;) (do_statement "do {\n            *(undefined4 *)(uVar8 + uVar7 * 4) = __ptr[uVar7 * 2];\n            *(undefined4 *)(uVar1 + uVar7 * 4) = __ptr[uVar7 * 2 + 1];\n            uVar7 = uVar7 + 1;\n          } while (local_24 != uVar7);" do (compound_statement "{\n            *(undefined4 *)(uVar8 + uVar7 * 4) = __ptr[uVar7 * 2];\n            *(undefined4 *)(uVar1 + uVar7 * 4) = __ptr[uVar7 * 2 + 1];\n            uVar7 = uVar7 + 1;\n          }" { (expression_statement "*(undefined4 *)(uVar8 + uVar7 * 4) = __ptr[uVar7 * 2];" (assignment_expression "*(undefined4 *)(uVar8 + uVar7 * 4) = __ptr[uVar7 * 2]" (pointer_expression "*(undefined4 *)(uVar8 + uVar7 * 4)" * (cast_expression "(undefined4 *)(uVar8 + uVar7 * 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar8 + uVar7 * 4)" ( (binary_expression "uVar8 + uVar7 * 4" identifier + (binary_expression "uVar7 * 4" identifier * number_literal)) )))) = (subscript_expression "__ptr[uVar7 * 2]" identifier [ (binary_expression "uVar7 * 2" identifier * number_literal) ])) ;) (expression_statement "*(undefined4 *)(uVar1 + uVar7 * 4) = __ptr[uVar7 * 2 + 1];" (assignment_expression "*(undefined4 *)(uVar1 + uVar7 * 4) = __ptr[uVar7 * 2 + 1]" (pointer_expression "*(undefined4 *)(uVar1 + uVar7 * 4)" * (cast_expression "(undefined4 *)(uVar1 + uVar7 * 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar1 + uVar7 * 4)" ( (binary_expression "uVar1 + uVar7 * 4" identifier + (binary_expression "uVar7 * 4" identifier * number_literal)) )))) = (subscript_expression "__ptr[uVar7 * 2 + 1]" identifier [ (binary_expression "uVar7 * 2 + 1" (binary_expression "uVar7 * 2" identifier * number_literal) + number_literal) ])) ;) (expression_statement "uVar7 = uVar7 + 1;" (assignment_expression "uVar7 = uVar7 + 1" identifier = (binary_expression "uVar7 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(local_24 != uVar7)" ( (binary_expression "local_24 != uVar7" identifier != identifier) )) ;) (expression_statement "uVar8 = *param_6;" (assignment_expression "uVar8 = *param_6" identifier = (pointer_expression "*param_6" * identifier)) ;) })))) (if_statement "if (uVar7 < uVar8) {\n          uVar8 = param_6[2];\n          uVar1 = param_6[1];\n          do {\n            uVar12 = uVar7 + 1;\n            *(undefined4 *)(uVar8 + uVar7 * 4) = 0xffffffff;\n            *(undefined4 *)(uVar1 + uVar7 * 4) = 0xffffffff;\n            uVar7 = uVar12;\n          } while (uVar12 < *param_6);\n        }" if (parenthesized_expression "(uVar7 < uVar8)" ( (binary_expression "uVar7 < uVar8" identifier < identifier) )) (compound_statement "{\n          uVar8 = param_6[2];\n          uVar1 = param_6[1];\n          do {\n            uVar12 = uVar7 + 1;\n            *(undefined4 *)(uVar8 + uVar7 * 4) = 0xffffffff;\n            *(undefined4 *)(uVar1 + uVar7 * 4) = 0xffffffff;\n            uVar7 = uVar12;\n          } while (uVar12 < *param_6);\n        }" { (expression_statement "uVar8 = param_6[2];" (assignment_expression "uVar8 = param_6[2]" identifier = (subscript_expression "param_6[2]" identifier [ number_literal ])) ;) (expression_statement "uVar1 = param_6[1];" (assignment_expression "uVar1 = param_6[1]" identifier = (subscript_expression "param_6[1]" identifier [ number_literal ])) ;) (do_statement "do {\n            uVar12 = uVar7 + 1;\n            *(undefined4 *)(uVar8 + uVar7 * 4) = 0xffffffff;\n            *(undefined4 *)(uVar1 + uVar7 * 4) = 0xffffffff;\n            uVar7 = uVar12;\n          } while (uVar12 < *param_6);" do (compound_statement "{\n            uVar12 = uVar7 + 1;\n            *(undefined4 *)(uVar8 + uVar7 * 4) = 0xffffffff;\n            *(undefined4 *)(uVar1 + uVar7 * 4) = 0xffffffff;\n            uVar7 = uVar12;\n          }" { (expression_statement "uVar12 = uVar7 + 1;" (assignment_expression "uVar12 = uVar7 + 1" identifier = (binary_expression "uVar7 + 1" identifier + number_literal)) ;) (expression_statement "*(undefined4 *)(uVar8 + uVar7 * 4) = 0xffffffff;" (assignment_expression "*(undefined4 *)(uVar8 + uVar7 * 4) = 0xffffffff" (pointer_expression "*(undefined4 *)(uVar8 + uVar7 * 4)" * (cast_expression "(undefined4 *)(uVar8 + uVar7 * 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar8 + uVar7 * 4)" ( (binary_expression "uVar8 + uVar7 * 4" identifier + (binary_expression "uVar7 * 4" identifier * number_literal)) )))) = number_literal) ;) (expression_statement "*(undefined4 *)(uVar1 + uVar7 * 4) = 0xffffffff;" (assignment_expression "*(undefined4 *)(uVar1 + uVar7 * 4) = 0xffffffff" (pointer_expression "*(undefined4 *)(uVar1 + uVar7 * 4)" * (cast_expression "(undefined4 *)(uVar1 + uVar7 * 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar1 + uVar7 * 4)" ( (binary_expression "uVar1 + uVar7 * 4" identifier + (binary_expression "uVar7 * 4" identifier * number_literal)) )))) = number_literal) ;) (expression_statement "uVar7 = uVar12;" (assignment_expression "uVar7 = uVar12" identifier = identifier) ;) }) while (parenthesized_expression "(uVar12 < *param_6)" ( (binary_expression "uVar12 < *param_6" identifier < (pointer_expression "*param_6" * identifier)) )) ;) })) }))) (labeled_statement "LAB_0002ac4a:\n      *(byte *)(param_1 + 0x1c) = *(byte *)(param_1 + 0x1c) & 0xf9 | cVar10 * '\x02';" statement_identifier : (expression_statement "*(byte *)(param_1 + 0x1c) = *(byte *)(param_1 + 0x1c) & 0xf9 | cVar10 * '\x02';" (assignment_expression "*(byte *)(param_1 + 0x1c) = *(byte *)(param_1 + 0x1c) & 0xf9 | cVar10 * '\x02'" (pointer_expression "*(byte *)(param_1 + 0x1c)" * (cast_expression "(byte *)(param_1 + 0x1c)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x1c)" ( (binary_expression "param_1 + 0x1c" identifier + number_literal) )))) = (binary_expression "*(byte *)(param_1 + 0x1c) & 0xf9 | cVar10 * '\x02'" (binary_expression "*(byte *)(param_1 + 0x1c) & 0xf9" (pointer_expression "*(byte *)(param_1 + 0x1c)" * (cast_expression "(byte *)(param_1 + 0x1c)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x1c)" ( (binary_expression "param_1 + 0x1c" identifier + number_literal) )))) & number_literal) | (binary_expression "cVar10 * '\x02'" identifier * (char_literal "'\x02'" ' escape_sequence ')))) ;)) (if_statement "if (cVar10 == '\0') goto LAB_0002ab5b;" if (parenthesized_expression "(cVar10 == '\0')" ( (binary_expression "cVar10 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )) (goto_statement "goto LAB_0002ab5b;" goto statement_identifier ;)) })) (expression_statement "uVar11 = *__ptr;" (assignment_expression "uVar11 = *__ptr" identifier = (pointer_expression "*__ptr" * identifier)) ;) }) (else_clause "else {\n    uVar11 = 0xffffffff;\n    if (iVar4 == 1) goto LAB_0002ab60;\nLAB_0002ab5b:\n    uVar11 = 0xfffffffe;\n  }" else (compound_statement "{\n    uVar11 = 0xffffffff;\n    if (iVar4 == 1) goto LAB_0002ab60;\nLAB_0002ab5b:\n    uVar11 = 0xfffffffe;\n  }" { (expression_statement "uVar11 = 0xffffffff;" (assignment_expression "uVar11 = 0xffffffff" identifier = number_literal) ;) (if_statement "if (iVar4 == 1) goto LAB_0002ab60;" if (parenthesized_expression "(iVar4 == 1)" ( (binary_expression "iVar4 == 1" identifier == number_literal) )) (goto_statement "goto LAB_0002ab60;" goto statement_identifier ;)) (labeled_statement "LAB_0002ab5b:\n    uVar11 = 0xfffffffe;" statement_identifier : (expression_statement "uVar11 = 0xfffffffe;" (assignment_expression "uVar11 = 0xfffffffe" identifier = number_literal) ;)) }))) (labeled_statement "LAB_0002ab60:\n  free(__ptr);" statement_identifier : (expression_statement "free(__ptr);" (call_expression "free(__ptr)" identifier (argument_list "(__ptr)" ( identifier ))) ;)) (return_statement "return uVar11;" return identifier ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE (pointer_declarator * IDENT)) ))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * 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 ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT < LIT) )) || (parenthesized_expression ( (binary_expression IDENT < IDENT) ))) )) (compound_statement { (return_statement return LIT ;) })) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT < IDENT) )) || (parenthesized_expression ( (parenthesized_expression ( (binary_expression (binary_expression LIT < IDENT) && (parenthesized_expression ( (binary_expression IDENT < IDENT) ))) )) ))) )) || (parenthesized_expression ( (parenthesized_expression ( (binary_expression (binary_expression LIT < IDENT) && (parenthesized_expression ( (parenthesized_expression ( (comma_expression (assignment_expression IDENT = IDENT) , (binary_expression (binary_expression LIT < IDENT) || (parenthesized_expression ( (binary_expression IDENT < IDENT) )))) )) ))) )) ))) )) (compound_statement { (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 (binary_expression IDENT >> LIT) & LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT < IDENT) )) && (parenthesized_expression ( (parenthesized_expression ( (binary_expression (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != LIT) && (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) == LIT) ))) )) ))) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) })) }) (else_clause else (compound_statement { (expression_statement (assignment_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 (binary_expression IDENT >> LIT) & LIT)) ;) }))) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) == LIT) )) && (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ))) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) == LIT) )) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (pointer_expression * IDENT)) , (binary_expression IDENT <= (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))))) ))) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) < LIT) )) (goto_statement goto statement_identifier ;)) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT)) ;) }))) (expression_statement (assignment_expression IDENT = (binary_expression IDENT * LIT)) ;) }) (else_clause else (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = LIT) ;)) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) }))) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( IDENT ))))) ;) (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 IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT , IDENT , IDENT , IDENT , IDENT , IDENT , IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) >> LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT & LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (binary_expression IDENT * LIT) )))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (binary_expression IDENT * LIT) )))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (char_literal ' escape_sequence ')) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) })) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (char_literal ' escape_sequence ')) ;)) }) (else_clause else (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (char_literal ' escape_sequence ')) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ])) , (binary_expression IDENT * LIT) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ])) , (binary_expression IDENT * LIT) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (char_literal ' escape_sequence ')) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) })) }) (else_clause else (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (string_literal " string_content ") , (string_literal " string_content ") , LIT , (string_literal " string_content ") ))) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) < IDENT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (string_literal " string_content ") , (string_literal " string_content ") , LIT , (string_literal " string_content ") ))) ;) })) (expression_statement (assignment_expression IDENT = (char_literal ' escape_sequence ')) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) }))) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression IDENT * LIT)) )))) = (subscript_expression IDENT [ (binary_expression IDENT * LIT) ])) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression IDENT * LIT)) )))) = (subscript_expression IDENT [ (binary_expression (binary_expression IDENT * LIT) + LIT) ])) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT != IDENT) )) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) })))) (if_statement if (parenthesized_expression ( (binary_expression IDENT < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (do_statement do (compound_statement { (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 IDENT + (binary_expression IDENT * LIT)) )))) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression IDENT * LIT)) )))) = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }) while (parenthesized_expression ( (binary_expression IDENT < (pointer_expression * IDENT)) )) ;) })) }))) (labeled_statement statement_identifier : (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) & LIT) | (binary_expression IDENT * (char_literal ' escape_sequence ')))) ;)) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (char_literal ' escape_sequence ')) )) (goto_statement goto statement_identifier ;)) })) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (goto_statement goto statement_identifier ;)) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = LIT) ;)) }))) (labeled_statement statement_identifier : (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;)) (return_statement return IDENT ;) })))
(function_definition "undefined4\nFUN_0002aa50(int param_1,undefined4 param_2,int param_3,int param_4,int param_5,uint *param_6)\n\n{\n  uint uVar1;\n  byte bVar2;\n  byte bVar3;\n  undefined4 *__ptr;\n  int iVar4;\n  size_t __size;\n  void *pvVar5;\n  void *pvVar6;\n  uint uVar7;\n  uint uVar8;\n  int iVar9;\n  char cVar10;\n  undefined4 uVar11;\n  uint uVar12;\n  uint local_24;\n  \n  iVar4 = param_4 + param_5;\n  if ((param_4 < 0) || (param_3 < param_4)) {\n    return 0xffffffff;\n  }\n  iVar9 = param_3;\n  if (((param_3 < iVar4) || ((-1 < param_5 && (iVar4 < param_4)))) ||\n     ((-1 < iVar4 && ((iVar9 = iVar4, -1 < param_5 || (iVar4 < param_4)))))) {\n    bVar2 = *(byte *)(param_1 + 0x1c);\n    bVar3 = bVar2 >> 5 & 3;\n    if ((param_4 < iVar9) && ((*(int *)(param_1 + 0x10) != 0 && ((bVar2 & 8) == 0)))) {\n      FUN_00029ec0(param_1);\n      bVar2 = *(byte *)(param_1 + 0x1c);\n    }\n  }\n  else {\n    iVar9 = 0;\n    bVar2 = *(byte *)(param_1 + 0x1c);\n    bVar3 = bVar2 >> 5 & 3;\n  }\n  if (((bVar2 & 0x10) == 0) && (param_6 != (uint *)0x0)) {\n    if (((bVar2 & 6) == 4) && (local_24 = *param_6, local_24 <= *(uint *)(param_1 + 0x18))) {\n      if ((int)local_24 < 1) goto LAB_0002ac98;\n    }\n    else {\n      local_24 = *(uint *)(param_1 + 0x18) + 1;\n    }\n    __size = local_24 * 8;\n  }\n  else {\nLAB_0002ac98:\n    __size = 8;\n    local_24 = 1;\n    param_6 = (uint *)0x0;\n  }\n  __ptr = (undefined4 *)malloc(__size);\n  if (__ptr == (undefined4 *)0x0) {\n    return 0xfffffffe;\n  }\n  iVar4 = FUN_00023920(param_1,param_2,param_3,param_4,iVar9,param_3,local_24,__ptr,bVar3);\n  if (iVar4 == 0) {\n    if (param_6 != (uint *)0x0) {\n      uVar7 = local_24 + 1;\n      bVar2 = *(byte *)(param_1 + 0x1c) >> 1;\n      bVar3 = bVar2 & 3;\n      if ((bVar2 & 3) == 0) {\n        pvVar5 = malloc(uVar7 * 4);\n        param_6[1] = (uint)pvVar5;\n        if (pvVar5 != (void *)0x0) {\n          pvVar6 = malloc(uVar7 * 4);\n          param_6[2] = (uint)pvVar6;\n          if (pvVar6 != (void *)0x0) {\n            cVar10 = '\x01';\n            *param_6 = uVar7;\n            uVar8 = uVar7;\n            goto LAB_0002abce;\n          }\n          free(pvVar5);\n        }\nLAB_0002ae33:\n        cVar10 = '\0';\n      }\n      else {\n        if (bVar3 == 1) {\n          cVar10 = '\x01';\n          uVar8 = *param_6;\n          if (*param_6 < uVar7) {\n            pvVar5 = realloc((void *)param_6[1],uVar7 * 4);\n            if (pvVar5 == (void *)0x0) goto LAB_0002ae33;\n            pvVar6 = realloc((void *)param_6[2],uVar7 * 4);\n            if (pvVar6 == (void *)0x0) {\n              cVar10 = '\0';\n              free(pvVar5);\n              goto LAB_0002ac4a;\n            }\n            param_6[1] = (uint)pvVar5;\n            *param_6 = uVar7;\n            param_6[2] = (uint)pvVar6;\n            uVar8 = uVar7;\n          }\n        }\n        else {\n          if (bVar3 != 2) {\n                    \n            __assert_fail("regs_allocated == REGS_FIXED","lib/regexec.c",0x1f8,"re_copy_regs");\n          }\n          if (*param_6 < local_24) {\n                    \n            __assert_fail("regs->num_regs >= nregs","lib/regexec.c",0x1fa,"re_copy_regs");\n          }\n          cVar10 = '\x02';\n          uVar8 = *param_6;\n        }\nLAB_0002abce:\n        if ((int)local_24 < 1) {\n          uVar7 = 0;\n        }\n        else {\n          uVar8 = param_6[1];\n          uVar1 = param_6[2];\n          uVar7 = 0;\n          do {\n            *(undefined4 *)(uVar8 + uVar7 * 4) = __ptr[uVar7 * 2];\n            *(undefined4 *)(uVar1 + uVar7 * 4) = __ptr[uVar7 * 2 + 1];\n            uVar7 = uVar7 + 1;\n          } while (local_24 != uVar7);\n          uVar8 = *param_6;\n        }\n        if (uVar7 < uVar8) {\n          uVar8 = param_6[2];\n          uVar1 = param_6[1];\n          do {\n            uVar12 = uVar7 + 1;\n            *(undefined4 *)(uVar8 + uVar7 * 4) = 0xffffffff;\n            *(undefined4 *)(uVar1 + uVar7 * 4) = 0xffffffff;\n            uVar7 = uVar12;\n          } while (uVar12 < *param_6);\n        }\n      }\nLAB_0002ac4a:\n      *(byte *)(param_1 + 0x1c) = *(byte *)(param_1 + 0x1c) & 0xf9 | cVar10 * '\x02';\n      if (cVar10 == '\0') goto LAB_0002ab5b;\n    }\n    uVar11 = *__ptr;\n  }\n  else {\n    uVar11 = 0xffffffff;\n    if (iVar4 == 1) goto LAB_0002ab60;\nLAB_0002ab5b:\n    uVar11 = 0xfffffffe;\n  }\nLAB_0002ab60:\n  free(__ptr);\n  return uVar11;\n}" (type_identifier "undefined4") (function_declarator "FUN_0002aa50(int param_1,undefined4 param_2,int param_3,int param_4,int param_5,uint *param_6)" (identifier "FUN_0002aa50") (parameter_list "(int param_1,undefined4 param_2,int param_3,int param_4,int param_5,uint *param_6)" (( "(") (parameter_declaration "int param_1" (primitive_type "int") (identifier "param_1")) (, ",") (parameter_declaration "undefined4 param_2" (type_identifier "undefined4") (identifier "param_2")) (, ",") (parameter_declaration "int param_3" (primitive_type "int") (identifier "param_3")) (, ",") (parameter_declaration "int param_4" (primitive_type "int") (identifier "param_4")) (, ",") (parameter_declaration "int param_5" (primitive_type "int") (identifier "param_5")) (, ",") (parameter_declaration "uint *param_6" (type_identifier "uint") (pointer_declarator "*param_6" (* "*") (identifier "param_6"))) () ")"))) (compound_statement "{\n  uint uVar1;\n  byte bVar2;\n  byte bVar3;\n  undefined4 *__ptr;\n  int iVar4;\n  size_t __size;\n  void *pvVar5;\n  void *pvVar6;\n  uint uVar7;\n  uint uVar8;\n  int iVar9;\n  char cVar10;\n  undefined4 uVar11;\n  uint uVar12;\n  uint local_24;\n  \n  iVar4 = param_4 + param_5;\n  if ((param_4 < 0) || (param_3 < param_4)) {\n    return 0xffffffff;\n  }\n  iVar9 = param_3;\n  if (((param_3 < iVar4) || ((-1 < param_5 && (iVar4 < param_4)))) ||\n     ((-1 < iVar4 && ((iVar9 = iVar4, -1 < param_5 || (iVar4 < param_4)))))) {\n    bVar2 = *(byte *)(param_1 + 0x1c);\n    bVar3 = bVar2 >> 5 & 3;\n    if ((param_4 < iVar9) && ((*(int *)(param_1 + 0x10) != 0 && ((bVar2 & 8) == 0)))) {\n      FUN_00029ec0(param_1);\n      bVar2 = *(byte *)(param_1 + 0x1c);\n    }\n  }\n  else {\n    iVar9 = 0;\n    bVar2 = *(byte *)(param_1 + 0x1c);\n    bVar3 = bVar2 >> 5 & 3;\n  }\n  if (((bVar2 & 0x10) == 0) && (param_6 != (uint *)0x0)) {\n    if (((bVar2 & 6) == 4) && (local_24 = *param_6, local_24 <= *(uint *)(param_1 + 0x18))) {\n      if ((int)local_24 < 1) goto LAB_0002ac98;\n    }\n    else {\n      local_24 = *(uint *)(param_1 + 0x18) + 1;\n    }\n    __size = local_24 * 8;\n  }\n  else {\nLAB_0002ac98:\n    __size = 8;\n    local_24 = 1;\n    param_6 = (uint *)0x0;\n  }\n  __ptr = (undefined4 *)malloc(__size);\n  if (__ptr == (undefined4 *)0x0) {\n    return 0xfffffffe;\n  }\n  iVar4 = FUN_00023920(param_1,param_2,param_3,param_4,iVar9,param_3,local_24,__ptr,bVar3);\n  if (iVar4 == 0) {\n    if (param_6 != (uint *)0x0) {\n      uVar7 = local_24 + 1;\n      bVar2 = *(byte *)(param_1 + 0x1c) >> 1;\n      bVar3 = bVar2 & 3;\n      if ((bVar2 & 3) == 0) {\n        pvVar5 = malloc(uVar7 * 4);\n        param_6[1] = (uint)pvVar5;\n        if (pvVar5 != (void *)0x0) {\n          pvVar6 = malloc(uVar7 * 4);\n          param_6[2] = (uint)pvVar6;\n          if (pvVar6 != (void *)0x0) {\n            cVar10 = '\x01';\n            *param_6 = uVar7;\n            uVar8 = uVar7;\n            goto LAB_0002abce;\n          }\n          free(pvVar5);\n        }\nLAB_0002ae33:\n        cVar10 = '\0';\n      }\n      else {\n        if (bVar3 == 1) {\n          cVar10 = '\x01';\n          uVar8 = *param_6;\n          if (*param_6 < uVar7) {\n            pvVar5 = realloc((void *)param_6[1],uVar7 * 4);\n            if (pvVar5 == (void *)0x0) goto LAB_0002ae33;\n            pvVar6 = realloc((void *)param_6[2],uVar7 * 4);\n            if (pvVar6 == (void *)0x0) {\n              cVar10 = '\0';\n              free(pvVar5);\n              goto LAB_0002ac4a;\n            }\n            param_6[1] = (uint)pvVar5;\n            *param_6 = uVar7;\n            param_6[2] = (uint)pvVar6;\n            uVar8 = uVar7;\n          }\n        }\n        else {\n          if (bVar3 != 2) {\n                    \n            __assert_fail("regs_allocated == REGS_FIXED","lib/regexec.c",0x1f8,"re_copy_regs");\n          }\n          if (*param_6 < local_24) {\n                    \n            __assert_fail("regs->num_regs >= nregs","lib/regexec.c",0x1fa,"re_copy_regs");\n          }\n          cVar10 = '\x02';\n          uVar8 = *param_6;\n        }\nLAB_0002abce:\n        if ((int)local_24 < 1) {\n          uVar7 = 0;\n        }\n        else {\n          uVar8 = param_6[1];\n          uVar1 = param_6[2];\n          uVar7 = 0;\n          do {\n            *(undefined4 *)(uVar8 + uVar7 * 4) = __ptr[uVar7 * 2];\n            *(undefined4 *)(uVar1 + uVar7 * 4) = __ptr[uVar7 * 2 + 1];\n            uVar7 = uVar7 + 1;\n          } while (local_24 != uVar7);\n          uVar8 = *param_6;\n        }\n        if (uVar7 < uVar8) {\n          uVar8 = param_6[2];\n          uVar1 = param_6[1];\n          do {\n            uVar12 = uVar7 + 1;\n            *(undefined4 *)(uVar8 + uVar7 * 4) = 0xffffffff;\n            *(undefined4 *)(uVar1 + uVar7 * 4) = 0xffffffff;\n            uVar7 = uVar12;\n          } while (uVar12 < *param_6);\n        }\n      }\nLAB_0002ac4a:\n      *(byte *)(param_1 + 0x1c) = *(byte *)(param_1 + 0x1c) & 0xf9 | cVar10 * '\x02';\n      if (cVar10 == '\0') goto LAB_0002ab5b;\n    }\n    uVar11 = *__ptr;\n  }\n  else {\n    uVar11 = 0xffffffff;\n    if (iVar4 == 1) goto LAB_0002ab60;\nLAB_0002ab5b:\n    uVar11 = 0xfffffffe;\n  }\nLAB_0002ab60:\n  free(__ptr);\n  return uVar11;\n}" ({ "{") (declaration "uint uVar1;" (type_identifier "uint") (identifier "uVar1") (; ";")) (declaration "byte bVar2;" (type_identifier "byte") (identifier "bVar2") (; ";")) (declaration "byte bVar3;" (type_identifier "byte") (identifier "bVar3") (; ";")) (declaration "undefined4 *__ptr;" (type_identifier "undefined4") (pointer_declarator "*__ptr" (* "*") (identifier "__ptr")) (; ";")) (declaration "int iVar4;" (primitive_type "int") (identifier "iVar4") (; ";")) (declaration "size_t __size;" (primitive_type "size_t") (identifier "__size") (; ";")) (declaration "void *pvVar5;" (primitive_type "void") (pointer_declarator "*pvVar5" (* "*") (identifier "pvVar5")) (; ";")) (declaration "void *pvVar6;" (primitive_type "void") (pointer_declarator "*pvVar6" (* "*") (identifier "pvVar6")) (; ";")) (declaration "uint uVar7;" (type_identifier "uint") (identifier "uVar7") (; ";")) (declaration "uint uVar8;" (type_identifier "uint") (identifier "uVar8") (; ";")) (declaration "int iVar9;" (primitive_type "int") (identifier "iVar9") (; ";")) (declaration "char cVar10;" (primitive_type "char") (identifier "cVar10") (; ";")) (declaration "undefined4 uVar11;" (type_identifier "undefined4") (identifier "uVar11") (; ";")) (declaration "uint uVar12;" (type_identifier "uint") (identifier "uVar12") (; ";")) (declaration "uint local_24;" (type_identifier "uint") (identifier "local_24") (; ";")) (expression_statement "iVar4 = param_4 + param_5;" (assignment_expression "iVar4 = param_4 + param_5" (identifier "iVar4") (= "=") (binary_expression "param_4 + param_5" (identifier "param_4") (+ "+") (identifier "param_5"))) (; ";")) (if_statement "if ((param_4 < 0) || (param_3 < param_4)) {\n    return 0xffffffff;\n  }" (if "if") (parenthesized_expression "((param_4 < 0) || (param_3 < param_4))" (( "(") (binary_expression "(param_4 < 0) || (param_3 < param_4)" (parenthesized_expression "(param_4 < 0)" (( "(") (binary_expression "param_4 < 0" (identifier "param_4") (< "<") (number_literal "0")) () ")")) (|| "||") (parenthesized_expression "(param_3 < param_4)" (( "(") (binary_expression "param_3 < param_4" (identifier "param_3") (< "<") (identifier "param_4")) () ")"))) () ")")) (compound_statement "{\n    return 0xffffffff;\n  }" ({ "{") (return_statement "return 0xffffffff;" (return "return") (number_literal "0xffffffff") (; ";")) (} "}"))) (expression_statement "iVar9 = param_3;" (assignment_expression "iVar9 = param_3" (identifier "iVar9") (= "=") (identifier "param_3")) (; ";")) (if_statement "if (((param_3 < iVar4) || ((-1 < param_5 && (iVar4 < param_4)))) ||\n     ((-1 < iVar4 && ((iVar9 = iVar4, -1 < param_5 || (iVar4 < param_4)))))) {\n    bVar2 = *(byte *)(param_1 + 0x1c);\n    bVar3 = bVar2 >> 5 & 3;\n    if ((param_4 < iVar9) && ((*(int *)(param_1 + 0x10) != 0 && ((bVar2 & 8) == 0)))) {\n      FUN_00029ec0(param_1);\n      bVar2 = *(byte *)(param_1 + 0x1c);\n    }\n  }\n  else {\n    iVar9 = 0;\n    bVar2 = *(byte *)(param_1 + 0x1c);\n    bVar3 = bVar2 >> 5 & 3;\n  }" (if "if") (parenthesized_expression "(((param_3 < iVar4) || ((-1 < param_5 && (iVar4 < param_4)))) ||\n     ((-1 < iVar4 && ((iVar9 = iVar4, -1 < param_5 || (iVar4 < param_4))))))" (( "(") (binary_expression "((param_3 < iVar4) || ((-1 < param_5 && (iVar4 < param_4)))) ||\n     ((-1 < iVar4 && ((iVar9 = iVar4, -1 < param_5 || (iVar4 < param_4)))))" (parenthesized_expression "((param_3 < iVar4) || ((-1 < param_5 && (iVar4 < param_4))))" (( "(") (binary_expression "(param_3 < iVar4) || ((-1 < param_5 && (iVar4 < param_4)))" (parenthesized_expression "(param_3 < iVar4)" (( "(") (binary_expression "param_3 < iVar4" (identifier "param_3") (< "<") (identifier "iVar4")) () ")")) (|| "||") (parenthesized_expression "((-1 < param_5 && (iVar4 < param_4)))" (( "(") (parenthesized_expression "(-1 < param_5 && (iVar4 < param_4))" (( "(") (binary_expression "-1 < param_5 && (iVar4 < param_4)" (binary_expression "-1 < param_5" (number_literal "-1") (< "<") (identifier "param_5")) (&& "&&") (parenthesized_expression "(iVar4 < param_4)" (( "(") (binary_expression "iVar4 < param_4" (identifier "iVar4") (< "<") (identifier "param_4")) () ")"))) () ")")) () ")"))) () ")")) (|| "||") (parenthesized_expression "((-1 < iVar4 && ((iVar9 = iVar4, -1 < param_5 || (iVar4 < param_4)))))" (( "(") (parenthesized_expression "(-1 < iVar4 && ((iVar9 = iVar4, -1 < param_5 || (iVar4 < param_4))))" (( "(") (binary_expression "-1 < iVar4 && ((iVar9 = iVar4, -1 < param_5 || (iVar4 < param_4)))" (binary_expression "-1 < iVar4" (number_literal "-1") (< "<") (identifier "iVar4")) (&& "&&") (parenthesized_expression "((iVar9 = iVar4, -1 < param_5 || (iVar4 < param_4)))" (( "(") (parenthesized_expression "(iVar9 = iVar4, -1 < param_5 || (iVar4 < param_4))" (( "(") (comma_expression "iVar9 = iVar4, -1 < param_5 || (iVar4 < param_4)" (assignment_expression "iVar9 = iVar4" (identifier "iVar9") (= "=") (identifier "iVar4")) (, ",") (binary_expression "-1 < param_5 || (iVar4 < param_4)" (binary_expression "-1 < param_5" (number_literal "-1") (< "<") (identifier "param_5")) (|| "||") (parenthesized_expression "(iVar4 < param_4)" (( "(") (binary_expression "iVar4 < param_4" (identifier "iVar4") (< "<") (identifier "param_4")) () ")")))) () ")")) () ")"))) () ")")) () ")"))) () ")")) (compound_statement "{\n    bVar2 = *(byte *)(param_1 + 0x1c);\n    bVar3 = bVar2 >> 5 & 3;\n    if ((param_4 < iVar9) && ((*(int *)(param_1 + 0x10) != 0 && ((bVar2 & 8) == 0)))) {\n      FUN_00029ec0(param_1);\n      bVar2 = *(byte *)(param_1 + 0x1c);\n    }\n  }" ({ "{") (expression_statement "bVar2 = *(byte *)(param_1 + 0x1c);" (assignment_expression "bVar2 = *(byte *)(param_1 + 0x1c)" (identifier "bVar2") (= "=") (pointer_expression "*(byte *)(param_1 + 0x1c)" (* "*") (cast_expression "(byte *)(param_1 + 0x1c)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x1c)" (( "(") (binary_expression "param_1 + 0x1c" (identifier "param_1") (+ "+") (number_literal "0x1c")) () ")"))))) (; ";")) (expression_statement "bVar3 = bVar2 >> 5 & 3;" (assignment_expression "bVar3 = bVar2 >> 5 & 3" (identifier "bVar3") (= "=") (binary_expression "bVar2 >> 5 & 3" (binary_expression "bVar2 >> 5" (identifier "bVar2") (>> ">>") (number_literal "5")) (& "&") (number_literal "3"))) (; ";")) (if_statement "if ((param_4 < iVar9) && ((*(int *)(param_1 + 0x10) != 0 && ((bVar2 & 8) == 0)))) {\n      FUN_00029ec0(param_1);\n      bVar2 = *(byte *)(param_1 + 0x1c);\n    }" (if "if") (parenthesized_expression "((param_4 < iVar9) && ((*(int *)(param_1 + 0x10) != 0 && ((bVar2 & 8) == 0))))" (( "(") (binary_expression "(param_4 < iVar9) && ((*(int *)(param_1 + 0x10) != 0 && ((bVar2 & 8) == 0)))" (parenthesized_expression "(param_4 < iVar9)" (( "(") (binary_expression "param_4 < iVar9" (identifier "param_4") (< "<") (identifier "iVar9")) () ")")) (&& "&&") (parenthesized_expression "((*(int *)(param_1 + 0x10) != 0 && ((bVar2 & 8) == 0)))" (( "(") (parenthesized_expression "(*(int *)(param_1 + 0x10) != 0 && ((bVar2 & 8) == 0))" (( "(") (binary_expression "*(int *)(param_1 + 0x10) != 0 && ((bVar2 & 8) == 0)" (binary_expression "*(int *)(param_1 + 0x10) != 0" (pointer_expression "*(int *)(param_1 + 0x10)" (* "*") (cast_expression "(int *)(param_1 + 0x10)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x10)" (( "(") (binary_expression "param_1 + 0x10" (identifier "param_1") (+ "+") (number_literal "0x10")) () ")")))) (!= "!=") (number_literal "0")) (&& "&&") (parenthesized_expression "((bVar2 & 8) == 0)" (( "(") (binary_expression "(bVar2 & 8) == 0" (parenthesized_expression "(bVar2 & 8)" (( "(") (binary_expression "bVar2 & 8" (identifier "bVar2") (& "&") (number_literal "8")) () ")")) (== "==") (number_literal "0")) () ")"))) () ")")) () ")"))) () ")")) (compound_statement "{\n      FUN_00029ec0(param_1);\n      bVar2 = *(byte *)(param_1 + 0x1c);\n    }" ({ "{") (expression_statement "FUN_00029ec0(param_1);" (call_expression "FUN_00029ec0(param_1)" (identifier "FUN_00029ec0") (argument_list "(param_1)" (( "(") (identifier "param_1") () ")"))) (; ";")) (expression_statement "bVar2 = *(byte *)(param_1 + 0x1c);" (assignment_expression "bVar2 = *(byte *)(param_1 + 0x1c)" (identifier "bVar2") (= "=") (pointer_expression "*(byte *)(param_1 + 0x1c)" (* "*") (cast_expression "(byte *)(param_1 + 0x1c)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x1c)" (( "(") (binary_expression "param_1 + 0x1c" (identifier "param_1") (+ "+") (number_literal "0x1c")) () ")"))))) (; ";")) (} "}"))) (} "}")) (else_clause "else {\n    iVar9 = 0;\n    bVar2 = *(byte *)(param_1 + 0x1c);\n    bVar3 = bVar2 >> 5 & 3;\n  }" (else "else") (compound_statement "{\n    iVar9 = 0;\n    bVar2 = *(byte *)(param_1 + 0x1c);\n    bVar3 = bVar2 >> 5 & 3;\n  }" ({ "{") (expression_statement "iVar9 = 0;" (assignment_expression "iVar9 = 0" (identifier "iVar9") (= "=") (number_literal "0")) (; ";")) (expression_statement "bVar2 = *(byte *)(param_1 + 0x1c);" (assignment_expression "bVar2 = *(byte *)(param_1 + 0x1c)" (identifier "bVar2") (= "=") (pointer_expression "*(byte *)(param_1 + 0x1c)" (* "*") (cast_expression "(byte *)(param_1 + 0x1c)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x1c)" (( "(") (binary_expression "param_1 + 0x1c" (identifier "param_1") (+ "+") (number_literal "0x1c")) () ")"))))) (; ";")) (expression_statement "bVar3 = bVar2 >> 5 & 3;" (assignment_expression "bVar3 = bVar2 >> 5 & 3" (identifier "bVar3") (= "=") (binary_expression "bVar2 >> 5 & 3" (binary_expression "bVar2 >> 5" (identifier "bVar2") (>> ">>") (number_literal "5")) (& "&") (number_literal "3"))) (; ";")) (} "}")))) (if_statement "if (((bVar2 & 0x10) == 0) && (param_6 != (uint *)0x0)) {\n    if (((bVar2 & 6) == 4) && (local_24 = *param_6, local_24 <= *(uint *)(param_1 + 0x18))) {\n      if ((int)local_24 < 1) goto LAB_0002ac98;\n    }\n    else {\n      local_24 = *(uint *)(param_1 + 0x18) + 1;\n    }\n    __size = local_24 * 8;\n  }\n  else {\nLAB_0002ac98:\n    __size = 8;\n    local_24 = 1;\n    param_6 = (uint *)0x0;\n  }" (if "if") (parenthesized_expression "(((bVar2 & 0x10) == 0) && (param_6 != (uint *)0x0))" (( "(") (binary_expression "((bVar2 & 0x10) == 0) && (param_6 != (uint *)0x0)" (parenthesized_expression "((bVar2 & 0x10) == 0)" (( "(") (binary_expression "(bVar2 & 0x10) == 0" (parenthesized_expression "(bVar2 & 0x10)" (( "(") (binary_expression "bVar2 & 0x10" (identifier "bVar2") (& "&") (number_literal "0x10")) () ")")) (== "==") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "(param_6 != (uint *)0x0)" (( "(") (binary_expression "param_6 != (uint *)0x0" (identifier "param_6") (!= "!=") (cast_expression "(uint *)0x0" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")"))) () ")")) (compound_statement "{\n    if (((bVar2 & 6) == 4) && (local_24 = *param_6, local_24 <= *(uint *)(param_1 + 0x18))) {\n      if ((int)local_24 < 1) goto LAB_0002ac98;\n    }\n    else {\n      local_24 = *(uint *)(param_1 + 0x18) + 1;\n    }\n    __size = local_24 * 8;\n  }" ({ "{") (if_statement "if (((bVar2 & 6) == 4) && (local_24 = *param_6, local_24 <= *(uint *)(param_1 + 0x18))) {\n      if ((int)local_24 < 1) goto LAB_0002ac98;\n    }\n    else {\n      local_24 = *(uint *)(param_1 + 0x18) + 1;\n    }" (if "if") (parenthesized_expression "(((bVar2 & 6) == 4) && (local_24 = *param_6, local_24 <= *(uint *)(param_1 + 0x18)))" (( "(") (binary_expression "((bVar2 & 6) == 4) && (local_24 = *param_6, local_24 <= *(uint *)(param_1 + 0x18))" (parenthesized_expression "((bVar2 & 6) == 4)" (( "(") (binary_expression "(bVar2 & 6) == 4" (parenthesized_expression "(bVar2 & 6)" (( "(") (binary_expression "bVar2 & 6" (identifier "bVar2") (& "&") (number_literal "6")) () ")")) (== "==") (number_literal "4")) () ")")) (&& "&&") (parenthesized_expression "(local_24 = *param_6, local_24 <= *(uint *)(param_1 + 0x18))" (( "(") (comma_expression "local_24 = *param_6, local_24 <= *(uint *)(param_1 + 0x18)" (assignment_expression "local_24 = *param_6" (identifier "local_24") (= "=") (pointer_expression "*param_6" (* "*") (identifier "param_6"))) (, ",") (binary_expression "local_24 <= *(uint *)(param_1 + 0x18)" (identifier "local_24") (<= "<=") (pointer_expression "*(uint *)(param_1 + 0x18)" (* "*") (cast_expression "(uint *)(param_1 + 0x18)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x18)" (( "(") (binary_expression "param_1 + 0x18" (identifier "param_1") (+ "+") (number_literal "0x18")) () ")")))))) () ")"))) () ")")) (compound_statement "{\n      if ((int)local_24 < 1) goto LAB_0002ac98;\n    }" ({ "{") (if_statement "if ((int)local_24 < 1) goto LAB_0002ac98;" (if "if") (parenthesized_expression "((int)local_24 < 1)" (( "(") (binary_expression "(int)local_24 < 1" (cast_expression "(int)local_24" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_24")) (< "<") (number_literal "1")) () ")")) (goto_statement "goto LAB_0002ac98;" (goto "goto") (statement_identifier "LAB_0002ac98") (; ";"))) (} "}")) (else_clause "else {\n      local_24 = *(uint *)(param_1 + 0x18) + 1;\n    }" (else "else") (compound_statement "{\n      local_24 = *(uint *)(param_1 + 0x18) + 1;\n    }" ({ "{") (expression_statement "local_24 = *(uint *)(param_1 + 0x18) + 1;" (assignment_expression "local_24 = *(uint *)(param_1 + 0x18) + 1" (identifier "local_24") (= "=") (binary_expression "*(uint *)(param_1 + 0x18) + 1" (pointer_expression "*(uint *)(param_1 + 0x18)" (* "*") (cast_expression "(uint *)(param_1 + 0x18)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x18)" (( "(") (binary_expression "param_1 + 0x18" (identifier "param_1") (+ "+") (number_literal "0x18")) () ")")))) (+ "+") (number_literal "1"))) (; ";")) (} "}")))) (expression_statement "__size = local_24 * 8;" (assignment_expression "__size = local_24 * 8" (identifier "__size") (= "=") (binary_expression "local_24 * 8" (identifier "local_24") (* "*") (number_literal "8"))) (; ";")) (} "}")) (else_clause "else {\nLAB_0002ac98:\n    __size = 8;\n    local_24 = 1;\n    param_6 = (uint *)0x0;\n  }" (else "else") (compound_statement "{\nLAB_0002ac98:\n    __size = 8;\n    local_24 = 1;\n    param_6 = (uint *)0x0;\n  }" ({ "{") (labeled_statement "LAB_0002ac98:\n    __size = 8;" (statement_identifier "LAB_0002ac98") (: ":") (expression_statement "__size = 8;" (assignment_expression "__size = 8" (identifier "__size") (= "=") (number_literal "8")) (; ";"))) (expression_statement "local_24 = 1;" (assignment_expression "local_24 = 1" (identifier "local_24") (= "=") (number_literal "1")) (; ";")) (expression_statement "param_6 = (uint *)0x0;" (assignment_expression "param_6 = (uint *)0x0" (identifier "param_6") (= "=") (cast_expression "(uint *)0x0" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (} "}")))) (expression_statement "__ptr = (undefined4 *)malloc(__size);" (assignment_expression "__ptr = (undefined4 *)malloc(__size)" (identifier "__ptr") (= "=") (cast_expression "(undefined4 *)malloc(__size)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "malloc(__size)" (identifier "malloc") (argument_list "(__size)" (( "(") (identifier "__size") () ")"))))) (; ";")) (if_statement "if (__ptr == (undefined4 *)0x0) {\n    return 0xfffffffe;\n  }" (if "if") (parenthesized_expression "(__ptr == (undefined4 *)0x0)" (( "(") (binary_expression "__ptr == (undefined4 *)0x0" (identifier "__ptr") (== "==") (cast_expression "(undefined4 *)0x0" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n    return 0xfffffffe;\n  }" ({ "{") (return_statement "return 0xfffffffe;" (return "return") (number_literal "0xfffffffe") (; ";")) (} "}"))) (expression_statement "iVar4 = FUN_00023920(param_1,param_2,param_3,param_4,iVar9,param_3,local_24,__ptr,bVar3);" (assignment_expression "iVar4 = FUN_00023920(param_1,param_2,param_3,param_4,iVar9,param_3,local_24,__ptr,bVar3)" (identifier "iVar4") (= "=") (call_expression "FUN_00023920(param_1,param_2,param_3,param_4,iVar9,param_3,local_24,__ptr,bVar3)" (identifier "FUN_00023920") (argument_list "(param_1,param_2,param_3,param_4,iVar9,param_3,local_24,__ptr,bVar3)" (( "(") (identifier "param_1") (, ",") (identifier "param_2") (, ",") (identifier "param_3") (, ",") (identifier "param_4") (, ",") (identifier "iVar9") (, ",") (identifier "param_3") (, ",") (identifier "local_24") (, ",") (identifier "__ptr") (, ",") (identifier "bVar3") () ")")))) (; ";")) (if_statement "if (iVar4 == 0) {\n    if (param_6 != (uint *)0x0) {\n      uVar7 = local_24 + 1;\n      bVar2 = *(byte *)(param_1 + 0x1c) >> 1;\n      bVar3 = bVar2 & 3;\n      if ((bVar2 & 3) == 0) {\n        pvVar5 = malloc(uVar7 * 4);\n        param_6[1] = (uint)pvVar5;\n        if (pvVar5 != (void *)0x0) {\n          pvVar6 = malloc(uVar7 * 4);\n          param_6[2] = (uint)pvVar6;\n          if (pvVar6 != (void *)0x0) {\n            cVar10 = '\x01';\n            *param_6 = uVar7;\n            uVar8 = uVar7;\n            goto LAB_0002abce;\n          }\n          free(pvVar5);\n        }\nLAB_0002ae33:\n        cVar10 = '\0';\n      }\n      else {\n        if (bVar3 == 1) {\n          cVar10 = '\x01';\n          uVar8 = *param_6;\n          if (*param_6 < uVar7) {\n            pvVar5 = realloc((void *)param_6[1],uVar7 * 4);\n            if (pvVar5 == (void *)0x0) goto LAB_0002ae33;\n            pvVar6 = realloc((void *)param_6[2],uVar7 * 4);\n            if (pvVar6 == (void *)0x0) {\n              cVar10 = '\0';\n              free(pvVar5);\n              goto LAB_0002ac4a;\n            }\n            param_6[1] = (uint)pvVar5;\n            *param_6 = uVar7;\n            param_6[2] = (uint)pvVar6;\n            uVar8 = uVar7;\n          }\n        }\n        else {\n          if (bVar3 != 2) {\n                    \n            __assert_fail("regs_allocated == REGS_FIXED","lib/regexec.c",0x1f8,"re_copy_regs");\n          }\n          if (*param_6 < local_24) {\n                    \n            __assert_fail("regs->num_regs >= nregs","lib/regexec.c",0x1fa,"re_copy_regs");\n          }\n          cVar10 = '\x02';\n          uVar8 = *param_6;\n        }\nLAB_0002abce:\n        if ((int)local_24 < 1) {\n          uVar7 = 0;\n        }\n        else {\n          uVar8 = param_6[1];\n          uVar1 = param_6[2];\n          uVar7 = 0;\n          do {\n            *(undefined4 *)(uVar8 + uVar7 * 4) = __ptr[uVar7 * 2];\n            *(undefined4 *)(uVar1 + uVar7 * 4) = __ptr[uVar7 * 2 + 1];\n            uVar7 = uVar7 + 1;\n          } while (local_24 != uVar7);\n          uVar8 = *param_6;\n        }\n        if (uVar7 < uVar8) {\n          uVar8 = param_6[2];\n          uVar1 = param_6[1];\n          do {\n            uVar12 = uVar7 + 1;\n            *(undefined4 *)(uVar8 + uVar7 * 4) = 0xffffffff;\n            *(undefined4 *)(uVar1 + uVar7 * 4) = 0xffffffff;\n            uVar7 = uVar12;\n          } while (uVar12 < *param_6);\n        }\n      }\nLAB_0002ac4a:\n      *(byte *)(param_1 + 0x1c) = *(byte *)(param_1 + 0x1c) & 0xf9 | cVar10 * '\x02';\n      if (cVar10 == '\0') goto LAB_0002ab5b;\n    }\n    uVar11 = *__ptr;\n  }\n  else {\n    uVar11 = 0xffffffff;\n    if (iVar4 == 1) goto LAB_0002ab60;\nLAB_0002ab5b:\n    uVar11 = 0xfffffffe;\n  }" (if "if") (parenthesized_expression "(iVar4 == 0)" (( "(") (binary_expression "iVar4 == 0" (identifier "iVar4") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n    if (param_6 != (uint *)0x0) {\n      uVar7 = local_24 + 1;\n      bVar2 = *(byte *)(param_1 + 0x1c) >> 1;\n      bVar3 = bVar2 & 3;\n      if ((bVar2 & 3) == 0) {\n        pvVar5 = malloc(uVar7 * 4);\n        param_6[1] = (uint)pvVar5;\n        if (pvVar5 != (void *)0x0) {\n          pvVar6 = malloc(uVar7 * 4);\n          param_6[2] = (uint)pvVar6;\n          if (pvVar6 != (void *)0x0) {\n            cVar10 = '\x01';\n            *param_6 = uVar7;\n            uVar8 = uVar7;\n            goto LAB_0002abce;\n          }\n          free(pvVar5);\n        }\nLAB_0002ae33:\n        cVar10 = '\0';\n      }\n      else {\n        if (bVar3 == 1) {\n          cVar10 = '\x01';\n          uVar8 = *param_6;\n          if (*param_6 < uVar7) {\n            pvVar5 = realloc((void *)param_6[1],uVar7 * 4);\n            if (pvVar5 == (void *)0x0) goto LAB_0002ae33;\n            pvVar6 = realloc((void *)param_6[2],uVar7 * 4);\n            if (pvVar6 == (void *)0x0) {\n              cVar10 = '\0';\n              free(pvVar5);\n              goto LAB_0002ac4a;\n            }\n            param_6[1] = (uint)pvVar5;\n            *param_6 = uVar7;\n            param_6[2] = (uint)pvVar6;\n            uVar8 = uVar7;\n          }\n        }\n        else {\n          if (bVar3 != 2) {\n                    \n            __assert_fail("regs_allocated == REGS_FIXED","lib/regexec.c",0x1f8,"re_copy_regs");\n          }\n          if (*param_6 < local_24) {\n                    \n            __assert_fail("regs->num_regs >= nregs","lib/regexec.c",0x1fa,"re_copy_regs");\n          }\n          cVar10 = '\x02';\n          uVar8 = *param_6;\n        }\nLAB_0002abce:\n        if ((int)local_24 < 1) {\n          uVar7 = 0;\n        }\n        else {\n          uVar8 = param_6[1];\n          uVar1 = param_6[2];\n          uVar7 = 0;\n          do {\n            *(undefined4 *)(uVar8 + uVar7 * 4) = __ptr[uVar7 * 2];\n            *(undefined4 *)(uVar1 + uVar7 * 4) = __ptr[uVar7 * 2 + 1];\n            uVar7 = uVar7 + 1;\n          } while (local_24 != uVar7);\n          uVar8 = *param_6;\n        }\n        if (uVar7 < uVar8) {\n          uVar8 = param_6[2];\n          uVar1 = param_6[1];\n          do {\n            uVar12 = uVar7 + 1;\n            *(undefined4 *)(uVar8 + uVar7 * 4) = 0xffffffff;\n            *(undefined4 *)(uVar1 + uVar7 * 4) = 0xffffffff;\n            uVar7 = uVar12;\n          } while (uVar12 < *param_6);\n        }\n      }\nLAB_0002ac4a:\n      *(byte *)(param_1 + 0x1c) = *(byte *)(param_1 + 0x1c) & 0xf9 | cVar10 * '\x02';\n      if (cVar10 == '\0') goto LAB_0002ab5b;\n    }\n    uVar11 = *__ptr;\n  }" ({ "{") (if_statement "if (param_6 != (uint *)0x0) {\n      uVar7 = local_24 + 1;\n      bVar2 = *(byte *)(param_1 + 0x1c) >> 1;\n      bVar3 = bVar2 & 3;\n      if ((bVar2 & 3) == 0) {\n        pvVar5 = malloc(uVar7 * 4);\n        param_6[1] = (uint)pvVar5;\n        if (pvVar5 != (void *)0x0) {\n          pvVar6 = malloc(uVar7 * 4);\n          param_6[2] = (uint)pvVar6;\n          if (pvVar6 != (void *)0x0) {\n            cVar10 = '\x01';\n            *param_6 = uVar7;\n            uVar8 = uVar7;\n            goto LAB_0002abce;\n          }\n          free(pvVar5);\n        }\nLAB_0002ae33:\n        cVar10 = '\0';\n      }\n      else {\n        if (bVar3 == 1) {\n          cVar10 = '\x01';\n          uVar8 = *param_6;\n          if (*param_6 < uVar7) {\n            pvVar5 = realloc((void *)param_6[1],uVar7 * 4);\n            if (pvVar5 == (void *)0x0) goto LAB_0002ae33;\n            pvVar6 = realloc((void *)param_6[2],uVar7 * 4);\n            if (pvVar6 == (void *)0x0) {\n              cVar10 = '\0';\n              free(pvVar5);\n              goto LAB_0002ac4a;\n            }\n            param_6[1] = (uint)pvVar5;\n            *param_6 = uVar7;\n            param_6[2] = (uint)pvVar6;\n            uVar8 = uVar7;\n          }\n        }\n        else {\n          if (bVar3 != 2) {\n                    \n            __assert_fail("regs_allocated == REGS_FIXED","lib/regexec.c",0x1f8,"re_copy_regs");\n          }\n          if (*param_6 < local_24) {\n                    \n            __assert_fail("regs->num_regs >= nregs","lib/regexec.c",0x1fa,"re_copy_regs");\n          }\n          cVar10 = '\x02';\n          uVar8 = *param_6;\n        }\nLAB_0002abce:\n        if ((int)local_24 < 1) {\n          uVar7 = 0;\n        }\n        else {\n          uVar8 = param_6[1];\n          uVar1 = param_6[2];\n          uVar7 = 0;\n          do {\n            *(undefined4 *)(uVar8 + uVar7 * 4) = __ptr[uVar7 * 2];\n            *(undefined4 *)(uVar1 + uVar7 * 4) = __ptr[uVar7 * 2 + 1];\n            uVar7 = uVar7 + 1;\n          } while (local_24 != uVar7);\n          uVar8 = *param_6;\n        }\n        if (uVar7 < uVar8) {\n          uVar8 = param_6[2];\n          uVar1 = param_6[1];\n          do {\n            uVar12 = uVar7 + 1;\n            *(undefined4 *)(uVar8 + uVar7 * 4) = 0xffffffff;\n            *(undefined4 *)(uVar1 + uVar7 * 4) = 0xffffffff;\n            uVar7 = uVar12;\n          } while (uVar12 < *param_6);\n        }\n      }\nLAB_0002ac4a:\n      *(byte *)(param_1 + 0x1c) = *(byte *)(param_1 + 0x1c) & 0xf9 | cVar10 * '\x02';\n      if (cVar10 == '\0') goto LAB_0002ab5b;\n    }" (if "if") (parenthesized_expression "(param_6 != (uint *)0x0)" (( "(") (binary_expression "param_6 != (uint *)0x0" (identifier "param_6") (!= "!=") (cast_expression "(uint *)0x0" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n      uVar7 = local_24 + 1;\n      bVar2 = *(byte *)(param_1 + 0x1c) >> 1;\n      bVar3 = bVar2 & 3;\n      if ((bVar2 & 3) == 0) {\n        pvVar5 = malloc(uVar7 * 4);\n        param_6[1] = (uint)pvVar5;\n        if (pvVar5 != (void *)0x0) {\n          pvVar6 = malloc(uVar7 * 4);\n          param_6[2] = (uint)pvVar6;\n          if (pvVar6 != (void *)0x0) {\n            cVar10 = '\x01';\n            *param_6 = uVar7;\n            uVar8 = uVar7;\n            goto LAB_0002abce;\n          }\n          free(pvVar5);\n        }\nLAB_0002ae33:\n        cVar10 = '\0';\n      }\n      else {\n        if (bVar3 == 1) {\n          cVar10 = '\x01';\n          uVar8 = *param_6;\n          if (*param_6 < uVar7) {\n            pvVar5 = realloc((void *)param_6[1],uVar7 * 4);\n            if (pvVar5 == (void *)0x0) goto LAB_0002ae33;\n            pvVar6 = realloc((void *)param_6[2],uVar7 * 4);\n            if (pvVar6 == (void *)0x0) {\n              cVar10 = '\0';\n              free(pvVar5);\n              goto LAB_0002ac4a;\n            }\n            param_6[1] = (uint)pvVar5;\n            *param_6 = uVar7;\n            param_6[2] = (uint)pvVar6;\n            uVar8 = uVar7;\n          }\n        }\n        else {\n          if (bVar3 != 2) {\n                    \n            __assert_fail("regs_allocated == REGS_FIXED","lib/regexec.c",0x1f8,"re_copy_regs");\n          }\n          if (*param_6 < local_24) {\n                    \n            __assert_fail("regs->num_regs >= nregs","lib/regexec.c",0x1fa,"re_copy_regs");\n          }\n          cVar10 = '\x02';\n          uVar8 = *param_6;\n        }\nLAB_0002abce:\n        if ((int)local_24 < 1) {\n          uVar7 = 0;\n        }\n        else {\n          uVar8 = param_6[1];\n          uVar1 = param_6[2];\n          uVar7 = 0;\n          do {\n            *(undefined4 *)(uVar8 + uVar7 * 4) = __ptr[uVar7 * 2];\n            *(undefined4 *)(uVar1 + uVar7 * 4) = __ptr[uVar7 * 2 + 1];\n            uVar7 = uVar7 + 1;\n          } while (local_24 != uVar7);\n          uVar8 = *param_6;\n        }\n        if (uVar7 < uVar8) {\n          uVar8 = param_6[2];\n          uVar1 = param_6[1];\n          do {\n            uVar12 = uVar7 + 1;\n            *(undefined4 *)(uVar8 + uVar7 * 4) = 0xffffffff;\n            *(undefined4 *)(uVar1 + uVar7 * 4) = 0xffffffff;\n            uVar7 = uVar12;\n          } while (uVar12 < *param_6);\n        }\n      }\nLAB_0002ac4a:\n      *(byte *)(param_1 + 0x1c) = *(byte *)(param_1 + 0x1c) & 0xf9 | cVar10 * '\x02';\n      if (cVar10 == '\0') goto LAB_0002ab5b;\n    }" ({ "{") (expression_statement "uVar7 = local_24 + 1;" (assignment_expression "uVar7 = local_24 + 1" (identifier "uVar7") (= "=") (binary_expression "local_24 + 1" (identifier "local_24") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "bVar2 = *(byte *)(param_1 + 0x1c) >> 1;" (assignment_expression "bVar2 = *(byte *)(param_1 + 0x1c) >> 1" (identifier "bVar2") (= "=") (binary_expression "*(byte *)(param_1 + 0x1c) >> 1" (pointer_expression "*(byte *)(param_1 + 0x1c)" (* "*") (cast_expression "(byte *)(param_1 + 0x1c)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x1c)" (( "(") (binary_expression "param_1 + 0x1c" (identifier "param_1") (+ "+") (number_literal "0x1c")) () ")")))) (>> ">>") (number_literal "1"))) (; ";")) (expression_statement "bVar3 = bVar2 & 3;" (assignment_expression "bVar3 = bVar2 & 3" (identifier "bVar3") (= "=") (binary_expression "bVar2 & 3" (identifier "bVar2") (& "&") (number_literal "3"))) (; ";")) (if_statement "if ((bVar2 & 3) == 0) {\n        pvVar5 = malloc(uVar7 * 4);\n        param_6[1] = (uint)pvVar5;\n        if (pvVar5 != (void *)0x0) {\n          pvVar6 = malloc(uVar7 * 4);\n          param_6[2] = (uint)pvVar6;\n          if (pvVar6 != (void *)0x0) {\n            cVar10 = '\x01';\n            *param_6 = uVar7;\n            uVar8 = uVar7;\n            goto LAB_0002abce;\n          }\n          free(pvVar5);\n        }\nLAB_0002ae33:\n        cVar10 = '\0';\n      }\n      else {\n        if (bVar3 == 1) {\n          cVar10 = '\x01';\n          uVar8 = *param_6;\n          if (*param_6 < uVar7) {\n            pvVar5 = realloc((void *)param_6[1],uVar7 * 4);\n            if (pvVar5 == (void *)0x0) goto LAB_0002ae33;\n            pvVar6 = realloc((void *)param_6[2],uVar7 * 4);\n            if (pvVar6 == (void *)0x0) {\n              cVar10 = '\0';\n              free(pvVar5);\n              goto LAB_0002ac4a;\n            }\n            param_6[1] = (uint)pvVar5;\n            *param_6 = uVar7;\n            param_6[2] = (uint)pvVar6;\n            uVar8 = uVar7;\n          }\n        }\n        else {\n          if (bVar3 != 2) {\n                    \n            __assert_fail("regs_allocated == REGS_FIXED","lib/regexec.c",0x1f8,"re_copy_regs");\n          }\n          if (*param_6 < local_24) {\n                    \n            __assert_fail("regs->num_regs >= nregs","lib/regexec.c",0x1fa,"re_copy_regs");\n          }\n          cVar10 = '\x02';\n          uVar8 = *param_6;\n        }\nLAB_0002abce:\n        if ((int)local_24 < 1) {\n          uVar7 = 0;\n        }\n        else {\n          uVar8 = param_6[1];\n          uVar1 = param_6[2];\n          uVar7 = 0;\n          do {\n            *(undefined4 *)(uVar8 + uVar7 * 4) = __ptr[uVar7 * 2];\n            *(undefined4 *)(uVar1 + uVar7 * 4) = __ptr[uVar7 * 2 + 1];\n            uVar7 = uVar7 + 1;\n          } while (local_24 != uVar7);\n          uVar8 = *param_6;\n        }\n        if (uVar7 < uVar8) {\n          uVar8 = param_6[2];\n          uVar1 = param_6[1];\n          do {\n            uVar12 = uVar7 + 1;\n            *(undefined4 *)(uVar8 + uVar7 * 4) = 0xffffffff;\n            *(undefined4 *)(uVar1 + uVar7 * 4) = 0xffffffff;\n            uVar7 = uVar12;\n          } while (uVar12 < *param_6);\n        }\n      }" (if "if") (parenthesized_expression "((bVar2 & 3) == 0)" (( "(") (binary_expression "(bVar2 & 3) == 0" (parenthesized_expression "(bVar2 & 3)" (( "(") (binary_expression "bVar2 & 3" (identifier "bVar2") (& "&") (number_literal "3")) () ")")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n        pvVar5 = malloc(uVar7 * 4);\n        param_6[1] = (uint)pvVar5;\n        if (pvVar5 != (void *)0x0) {\n          pvVar6 = malloc(uVar7 * 4);\n          param_6[2] = (uint)pvVar6;\n          if (pvVar6 != (void *)0x0) {\n            cVar10 = '\x01';\n            *param_6 = uVar7;\n            uVar8 = uVar7;\n            goto LAB_0002abce;\n          }\n          free(pvVar5);\n        }\nLAB_0002ae33:\n        cVar10 = '\0';\n      }" ({ "{") (expression_statement "pvVar5 = malloc(uVar7 * 4);" (assignment_expression "pvVar5 = malloc(uVar7 * 4)" (identifier "pvVar5") (= "=") (call_expression "malloc(uVar7 * 4)" (identifier "malloc") (argument_list "(uVar7 * 4)" (( "(") (binary_expression "uVar7 * 4" (identifier "uVar7") (* "*") (number_literal "4")) () ")")))) (; ";")) (expression_statement "param_6[1] = (uint)pvVar5;" (assignment_expression "param_6[1] = (uint)pvVar5" (subscript_expression "param_6[1]" (identifier "param_6") ([ "[") (number_literal "1") (] "]")) (= "=") (cast_expression "(uint)pvVar5" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "pvVar5"))) (; ";")) (if_statement "if (pvVar5 != (void *)0x0) {\n          pvVar6 = malloc(uVar7 * 4);\n          param_6[2] = (uint)pvVar6;\n          if (pvVar6 != (void *)0x0) {\n            cVar10 = '\x01';\n            *param_6 = uVar7;\n            uVar8 = uVar7;\n            goto LAB_0002abce;\n          }\n          free(pvVar5);\n        }" (if "if") (parenthesized_expression "(pvVar5 != (void *)0x0)" (( "(") (binary_expression "pvVar5 != (void *)0x0" (identifier "pvVar5") (!= "!=") (cast_expression "(void *)0x0" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n          pvVar6 = malloc(uVar7 * 4);\n          param_6[2] = (uint)pvVar6;\n          if (pvVar6 != (void *)0x0) {\n            cVar10 = '\x01';\n            *param_6 = uVar7;\n            uVar8 = uVar7;\n            goto LAB_0002abce;\n          }\n          free(pvVar5);\n        }" ({ "{") (expression_statement "pvVar6 = malloc(uVar7 * 4);" (assignment_expression "pvVar6 = malloc(uVar7 * 4)" (identifier "pvVar6") (= "=") (call_expression "malloc(uVar7 * 4)" (identifier "malloc") (argument_list "(uVar7 * 4)" (( "(") (binary_expression "uVar7 * 4" (identifier "uVar7") (* "*") (number_literal "4")) () ")")))) (; ";")) (expression_statement "param_6[2] = (uint)pvVar6;" (assignment_expression "param_6[2] = (uint)pvVar6" (subscript_expression "param_6[2]" (identifier "param_6") ([ "[") (number_literal "2") (] "]")) (= "=") (cast_expression "(uint)pvVar6" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "pvVar6"))) (; ";")) (if_statement "if (pvVar6 != (void *)0x0) {\n            cVar10 = '\x01';\n            *param_6 = uVar7;\n            uVar8 = uVar7;\n            goto LAB_0002abce;\n          }" (if "if") (parenthesized_expression "(pvVar6 != (void *)0x0)" (( "(") (binary_expression "pvVar6 != (void *)0x0" (identifier "pvVar6") (!= "!=") (cast_expression "(void *)0x0" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n            cVar10 = '\x01';\n            *param_6 = uVar7;\n            uVar8 = uVar7;\n            goto LAB_0002abce;\n          }" ({ "{") (expression_statement "cVar10 = '\x01';" (assignment_expression "cVar10 = '\x01'" (identifier "cVar10") (= "=") (char_literal "'\x01'" (' "'") (escape_sequence "\x01") (' "'"))) (; ";")) (expression_statement "*param_6 = uVar7;" (assignment_expression "*param_6 = uVar7" (pointer_expression "*param_6" (* "*") (identifier "param_6")) (= "=") (identifier "uVar7")) (; ";")) (expression_statement "uVar8 = uVar7;" (assignment_expression "uVar8 = uVar7" (identifier "uVar8") (= "=") (identifier "uVar7")) (; ";")) (goto_statement "goto LAB_0002abce;" (goto "goto") (statement_identifier "LAB_0002abce") (; ";")) (} "}"))) (expression_statement "free(pvVar5);" (call_expression "free(pvVar5)" (identifier "free") (argument_list "(pvVar5)" (( "(") (identifier "pvVar5") () ")"))) (; ";")) (} "}"))) (labeled_statement "LAB_0002ae33:\n        cVar10 = '\0';" (statement_identifier "LAB_0002ae33") (: ":") (expression_statement "cVar10 = '\0';" (assignment_expression "cVar10 = '\0'" (identifier "cVar10") (= "=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) (; ";"))) (} "}")) (else_clause "else {\n        if (bVar3 == 1) {\n          cVar10 = '\x01';\n          uVar8 = *param_6;\n          if (*param_6 < uVar7) {\n            pvVar5 = realloc((void *)param_6[1],uVar7 * 4);\n            if (pvVar5 == (void *)0x0) goto LAB_0002ae33;\n            pvVar6 = realloc((void *)param_6[2],uVar7 * 4);\n            if (pvVar6 == (void *)0x0) {\n              cVar10 = '\0';\n              free(pvVar5);\n              goto LAB_0002ac4a;\n            }\n            param_6[1] = (uint)pvVar5;\n            *param_6 = uVar7;\n            param_6[2] = (uint)pvVar6;\n            uVar8 = uVar7;\n          }\n        }\n        else {\n          if (bVar3 != 2) {\n                    \n            __assert_fail("regs_allocated == REGS_FIXED","lib/regexec.c",0x1f8,"re_copy_regs");\n          }\n          if (*param_6 < local_24) {\n                    \n            __assert_fail("regs->num_regs >= nregs","lib/regexec.c",0x1fa,"re_copy_regs");\n          }\n          cVar10 = '\x02';\n          uVar8 = *param_6;\n        }\nLAB_0002abce:\n        if ((int)local_24 < 1) {\n          uVar7 = 0;\n        }\n        else {\n          uVar8 = param_6[1];\n          uVar1 = param_6[2];\n          uVar7 = 0;\n          do {\n            *(undefined4 *)(uVar8 + uVar7 * 4) = __ptr[uVar7 * 2];\n            *(undefined4 *)(uVar1 + uVar7 * 4) = __ptr[uVar7 * 2 + 1];\n            uVar7 = uVar7 + 1;\n          } while (local_24 != uVar7);\n          uVar8 = *param_6;\n        }\n        if (uVar7 < uVar8) {\n          uVar8 = param_6[2];\n          uVar1 = param_6[1];\n          do {\n            uVar12 = uVar7 + 1;\n            *(undefined4 *)(uVar8 + uVar7 * 4) = 0xffffffff;\n            *(undefined4 *)(uVar1 + uVar7 * 4) = 0xffffffff;\n            uVar7 = uVar12;\n          } while (uVar12 < *param_6);\n        }\n      }" (else "else") (compound_statement "{\n        if (bVar3 == 1) {\n          cVar10 = '\x01';\n          uVar8 = *param_6;\n          if (*param_6 < uVar7) {\n            pvVar5 = realloc((void *)param_6[1],uVar7 * 4);\n            if (pvVar5 == (void *)0x0) goto LAB_0002ae33;\n            pvVar6 = realloc((void *)param_6[2],uVar7 * 4);\n            if (pvVar6 == (void *)0x0) {\n              cVar10 = '\0';\n              free(pvVar5);\n              goto LAB_0002ac4a;\n            }\n            param_6[1] = (uint)pvVar5;\n            *param_6 = uVar7;\n            param_6[2] = (uint)pvVar6;\n            uVar8 = uVar7;\n          }\n        }\n        else {\n          if (bVar3 != 2) {\n                    \n            __assert_fail("regs_allocated == REGS_FIXED","lib/regexec.c",0x1f8,"re_copy_regs");\n          }\n          if (*param_6 < local_24) {\n                    \n            __assert_fail("regs->num_regs >= nregs","lib/regexec.c",0x1fa,"re_copy_regs");\n          }\n          cVar10 = '\x02';\n          uVar8 = *param_6;\n        }\nLAB_0002abce:\n        if ((int)local_24 < 1) {\n          uVar7 = 0;\n        }\n        else {\n          uVar8 = param_6[1];\n          uVar1 = param_6[2];\n          uVar7 = 0;\n          do {\n            *(undefined4 *)(uVar8 + uVar7 * 4) = __ptr[uVar7 * 2];\n            *(undefined4 *)(uVar1 + uVar7 * 4) = __ptr[uVar7 * 2 + 1];\n            uVar7 = uVar7 + 1;\n          } while (local_24 != uVar7);\n          uVar8 = *param_6;\n        }\n        if (uVar7 < uVar8) {\n          uVar8 = param_6[2];\n          uVar1 = param_6[1];\n          do {\n            uVar12 = uVar7 + 1;\n            *(undefined4 *)(uVar8 + uVar7 * 4) = 0xffffffff;\n            *(undefined4 *)(uVar1 + uVar7 * 4) = 0xffffffff;\n            uVar7 = uVar12;\n          } while (uVar12 < *param_6);\n        }\n      }" ({ "{") (if_statement "if (bVar3 == 1) {\n          cVar10 = '\x01';\n          uVar8 = *param_6;\n          if (*param_6 < uVar7) {\n            pvVar5 = realloc((void *)param_6[1],uVar7 * 4);\n            if (pvVar5 == (void *)0x0) goto LAB_0002ae33;\n            pvVar6 = realloc((void *)param_6[2],uVar7 * 4);\n            if (pvVar6 == (void *)0x0) {\n              cVar10 = '\0';\n              free(pvVar5);\n              goto LAB_0002ac4a;\n            }\n            param_6[1] = (uint)pvVar5;\n            *param_6 = uVar7;\n            param_6[2] = (uint)pvVar6;\n            uVar8 = uVar7;\n          }\n        }\n        else {\n          if (bVar3 != 2) {\n                    \n            __assert_fail("regs_allocated == REGS_FIXED","lib/regexec.c",0x1f8,"re_copy_regs");\n          }\n          if (*param_6 < local_24) {\n                    \n            __assert_fail("regs->num_regs >= nregs","lib/regexec.c",0x1fa,"re_copy_regs");\n          }\n          cVar10 = '\x02';\n          uVar8 = *param_6;\n        }" (if "if") (parenthesized_expression "(bVar3 == 1)" (( "(") (binary_expression "bVar3 == 1" (identifier "bVar3") (== "==") (number_literal "1")) () ")")) (compound_statement "{\n          cVar10 = '\x01';\n          uVar8 = *param_6;\n          if (*param_6 < uVar7) {\n            pvVar5 = realloc((void *)param_6[1],uVar7 * 4);\n            if (pvVar5 == (void *)0x0) goto LAB_0002ae33;\n            pvVar6 = realloc((void *)param_6[2],uVar7 * 4);\n            if (pvVar6 == (void *)0x0) {\n              cVar10 = '\0';\n              free(pvVar5);\n              goto LAB_0002ac4a;\n            }\n            param_6[1] = (uint)pvVar5;\n            *param_6 = uVar7;\n            param_6[2] = (uint)pvVar6;\n            uVar8 = uVar7;\n          }\n        }" ({ "{") (expression_statement "cVar10 = '\x01';" (assignment_expression "cVar10 = '\x01'" (identifier "cVar10") (= "=") (char_literal "'\x01'" (' "'") (escape_sequence "\x01") (' "'"))) (; ";")) (expression_statement "uVar8 = *param_6;" (assignment_expression "uVar8 = *param_6" (identifier "uVar8") (= "=") (pointer_expression "*param_6" (* "*") (identifier "param_6"))) (; ";")) (if_statement "if (*param_6 < uVar7) {\n            pvVar5 = realloc((void *)param_6[1],uVar7 * 4);\n            if (pvVar5 == (void *)0x0) goto LAB_0002ae33;\n            pvVar6 = realloc((void *)param_6[2],uVar7 * 4);\n            if (pvVar6 == (void *)0x0) {\n              cVar10 = '\0';\n              free(pvVar5);\n              goto LAB_0002ac4a;\n            }\n            param_6[1] = (uint)pvVar5;\n            *param_6 = uVar7;\n            param_6[2] = (uint)pvVar6;\n            uVar8 = uVar7;\n          }" (if "if") (parenthesized_expression "(*param_6 < uVar7)" (( "(") (binary_expression "*param_6 < uVar7" (pointer_expression "*param_6" (* "*") (identifier "param_6")) (< "<") (identifier "uVar7")) () ")")) (compound_statement "{\n            pvVar5 = realloc((void *)param_6[1],uVar7 * 4);\n            if (pvVar5 == (void *)0x0) goto LAB_0002ae33;\n            pvVar6 = realloc((void *)param_6[2],uVar7 * 4);\n            if (pvVar6 == (void *)0x0) {\n              cVar10 = '\0';\n              free(pvVar5);\n              goto LAB_0002ac4a;\n            }\n            param_6[1] = (uint)pvVar5;\n            *param_6 = uVar7;\n            param_6[2] = (uint)pvVar6;\n            uVar8 = uVar7;\n          }" ({ "{") (expression_statement "pvVar5 = realloc((void *)param_6[1],uVar7 * 4);" (assignment_expression "pvVar5 = realloc((void *)param_6[1],uVar7 * 4)" (identifier "pvVar5") (= "=") (call_expression "realloc((void *)param_6[1],uVar7 * 4)" (identifier "realloc") (argument_list "((void *)param_6[1],uVar7 * 4)" (( "(") (cast_expression "(void *)param_6[1]" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_6[1]" (identifier "param_6") ([ "[") (number_literal "1") (] "]"))) (, ",") (binary_expression "uVar7 * 4" (identifier "uVar7") (* "*") (number_literal "4")) () ")")))) (; ";")) (if_statement "if (pvVar5 == (void *)0x0) goto LAB_0002ae33;" (if "if") (parenthesized_expression "(pvVar5 == (void *)0x0)" (( "(") (binary_expression "pvVar5 == (void *)0x0" (identifier "pvVar5") (== "==") (cast_expression "(void *)0x0" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (goto_statement "goto LAB_0002ae33;" (goto "goto") (statement_identifier "LAB_0002ae33") (; ";"))) (expression_statement "pvVar6 = realloc((void *)param_6[2],uVar7 * 4);" (assignment_expression "pvVar6 = realloc((void *)param_6[2],uVar7 * 4)" (identifier "pvVar6") (= "=") (call_expression "realloc((void *)param_6[2],uVar7 * 4)" (identifier "realloc") (argument_list "((void *)param_6[2],uVar7 * 4)" (( "(") (cast_expression "(void *)param_6[2]" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_6[2]" (identifier "param_6") ([ "[") (number_literal "2") (] "]"))) (, ",") (binary_expression "uVar7 * 4" (identifier "uVar7") (* "*") (number_literal "4")) () ")")))) (; ";")) (if_statement "if (pvVar6 == (void *)0x0) {\n              cVar10 = '\0';\n              free(pvVar5);\n              goto LAB_0002ac4a;\n            }" (if "if") (parenthesized_expression "(pvVar6 == (void *)0x0)" (( "(") (binary_expression "pvVar6 == (void *)0x0" (identifier "pvVar6") (== "==") (cast_expression "(void *)0x0" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n              cVar10 = '\0';\n              free(pvVar5);\n              goto LAB_0002ac4a;\n            }" ({ "{") (expression_statement "cVar10 = '\0';" (assignment_expression "cVar10 = '\0'" (identifier "cVar10") (= "=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) (; ";")) (expression_statement "free(pvVar5);" (call_expression "free(pvVar5)" (identifier "free") (argument_list "(pvVar5)" (( "(") (identifier "pvVar5") () ")"))) (; ";")) (goto_statement "goto LAB_0002ac4a;" (goto "goto") (statement_identifier "LAB_0002ac4a") (; ";")) (} "}"))) (expression_statement "param_6[1] = (uint)pvVar5;" (assignment_expression "param_6[1] = (uint)pvVar5" (subscript_expression "param_6[1]" (identifier "param_6") ([ "[") (number_literal "1") (] "]")) (= "=") (cast_expression "(uint)pvVar5" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "pvVar5"))) (; ";")) (expression_statement "*param_6 = uVar7;" (assignment_expression "*param_6 = uVar7" (pointer_expression "*param_6" (* "*") (identifier "param_6")) (= "=") (identifier "uVar7")) (; ";")) (expression_statement "param_6[2] = (uint)pvVar6;" (assignment_expression "param_6[2] = (uint)pvVar6" (subscript_expression "param_6[2]" (identifier "param_6") ([ "[") (number_literal "2") (] "]")) (= "=") (cast_expression "(uint)pvVar6" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "pvVar6"))) (; ";")) (expression_statement "uVar8 = uVar7;" (assignment_expression "uVar8 = uVar7" (identifier "uVar8") (= "=") (identifier "uVar7")) (; ";")) (} "}"))) (} "}")) (else_clause "else {\n          if (bVar3 != 2) {\n                    \n            __assert_fail("regs_allocated == REGS_FIXED","lib/regexec.c",0x1f8,"re_copy_regs");\n          }\n          if (*param_6 < local_24) {\n                    \n            __assert_fail("regs->num_regs >= nregs","lib/regexec.c",0x1fa,"re_copy_regs");\n          }\n          cVar10 = '\x02';\n          uVar8 = *param_6;\n        }" (else "else") (compound_statement "{\n          if (bVar3 != 2) {\n                    \n            __assert_fail("regs_allocated == REGS_FIXED","lib/regexec.c",0x1f8,"re_copy_regs");\n          }\n          if (*param_6 < local_24) {\n                    \n            __assert_fail("regs->num_regs >= nregs","lib/regexec.c",0x1fa,"re_copy_regs");\n          }\n          cVar10 = '\x02';\n          uVar8 = *param_6;\n        }" ({ "{") (if_statement "if (bVar3 != 2) {\n                    \n            __assert_fail("regs_allocated == REGS_FIXED","lib/regexec.c",0x1f8,"re_copy_regs");\n          }" (if "if") (parenthesized_expression "(bVar3 != 2)" (( "(") (binary_expression "bVar3 != 2" (identifier "bVar3") (!= "!=") (number_literal "2")) () ")")) (compound_statement "{\n                    \n            __assert_fail("regs_allocated == REGS_FIXED","lib/regexec.c",0x1f8,"re_copy_regs");\n          }" ({ "{") (expression_statement "__assert_fail("regs_allocated == REGS_FIXED","lib/regexec.c",0x1f8,"re_copy_regs");" (call_expression "__assert_fail("regs_allocated == REGS_FIXED","lib/regexec.c",0x1f8,"re_copy_regs")" (identifier "__assert_fail") (argument_list "("regs_allocated == REGS_FIXED","lib/regexec.c",0x1f8,"re_copy_regs")" (( "(") (string_literal ""regs_allocated == REGS_FIXED"" (" """) (string_content "regs_allocated == REGS_FIXED") (" """)) (, ",") (string_literal ""lib/regexec.c"" (" """) (string_content "lib/regexec.c") (" """)) (, ",") (number_literal "0x1f8") (, ",") (string_literal ""re_copy_regs"" (" """) (string_content "re_copy_regs") (" """)) () ")"))) (; ";")) (} "}"))) (if_statement "if (*param_6 < local_24) {\n                    \n            __assert_fail("regs->num_regs >= nregs","lib/regexec.c",0x1fa,"re_copy_regs");\n          }" (if "if") (parenthesized_expression "(*param_6 < local_24)" (( "(") (binary_expression "*param_6 < local_24" (pointer_expression "*param_6" (* "*") (identifier "param_6")) (< "<") (identifier "local_24")) () ")")) (compound_statement "{\n                    \n            __assert_fail("regs->num_regs >= nregs","lib/regexec.c",0x1fa,"re_copy_regs");\n          }" ({ "{") (expression_statement "__assert_fail("regs->num_regs >= nregs","lib/regexec.c",0x1fa,"re_copy_regs");" (call_expression "__assert_fail("regs->num_regs >= nregs","lib/regexec.c",0x1fa,"re_copy_regs")" (identifier "__assert_fail") (argument_list "("regs->num_regs >= nregs","lib/regexec.c",0x1fa,"re_copy_regs")" (( "(") (string_literal ""regs->num_regs >= nregs"" (" """) (string_content "regs->num_regs >= nregs") (" """)) (, ",") (string_literal ""lib/regexec.c"" (" """) (string_content "lib/regexec.c") (" """)) (, ",") (number_literal "0x1fa") (, ",") (string_literal ""re_copy_regs"" (" """) (string_content "re_copy_regs") (" """)) () ")"))) (; ";")) (} "}"))) (expression_statement "cVar10 = '\x02';" (assignment_expression "cVar10 = '\x02'" (identifier "cVar10") (= "=") (char_literal "'\x02'" (' "'") (escape_sequence "\x02") (' "'"))) (; ";")) (expression_statement "uVar8 = *param_6;" (assignment_expression "uVar8 = *param_6" (identifier "uVar8") (= "=") (pointer_expression "*param_6" (* "*") (identifier "param_6"))) (; ";")) (} "}")))) (labeled_statement "LAB_0002abce:\n        if ((int)local_24 < 1) {\n          uVar7 = 0;\n        }\n        else {\n          uVar8 = param_6[1];\n          uVar1 = param_6[2];\n          uVar7 = 0;\n          do {\n            *(undefined4 *)(uVar8 + uVar7 * 4) = __ptr[uVar7 * 2];\n            *(undefined4 *)(uVar1 + uVar7 * 4) = __ptr[uVar7 * 2 + 1];\n            uVar7 = uVar7 + 1;\n          } while (local_24 != uVar7);\n          uVar8 = *param_6;\n        }" (statement_identifier "LAB_0002abce") (: ":") (if_statement "if ((int)local_24 < 1) {\n          uVar7 = 0;\n        }\n        else {\n          uVar8 = param_6[1];\n          uVar1 = param_6[2];\n          uVar7 = 0;\n          do {\n            *(undefined4 *)(uVar8 + uVar7 * 4) = __ptr[uVar7 * 2];\n            *(undefined4 *)(uVar1 + uVar7 * 4) = __ptr[uVar7 * 2 + 1];\n            uVar7 = uVar7 + 1;\n          } while (local_24 != uVar7);\n          uVar8 = *param_6;\n        }" (if "if") (parenthesized_expression "((int)local_24 < 1)" (( "(") (binary_expression "(int)local_24 < 1" (cast_expression "(int)local_24" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_24")) (< "<") (number_literal "1")) () ")")) (compound_statement "{\n          uVar7 = 0;\n        }" ({ "{") (expression_statement "uVar7 = 0;" (assignment_expression "uVar7 = 0" (identifier "uVar7") (= "=") (number_literal "0")) (; ";")) (} "}")) (else_clause "else {\n          uVar8 = param_6[1];\n          uVar1 = param_6[2];\n          uVar7 = 0;\n          do {\n            *(undefined4 *)(uVar8 + uVar7 * 4) = __ptr[uVar7 * 2];\n            *(undefined4 *)(uVar1 + uVar7 * 4) = __ptr[uVar7 * 2 + 1];\n            uVar7 = uVar7 + 1;\n          } while (local_24 != uVar7);\n          uVar8 = *param_6;\n        }" (else "else") (compound_statement "{\n          uVar8 = param_6[1];\n          uVar1 = param_6[2];\n          uVar7 = 0;\n          do {\n            *(undefined4 *)(uVar8 + uVar7 * 4) = __ptr[uVar7 * 2];\n            *(undefined4 *)(uVar1 + uVar7 * 4) = __ptr[uVar7 * 2 + 1];\n            uVar7 = uVar7 + 1;\n          } while (local_24 != uVar7);\n          uVar8 = *param_6;\n        }" ({ "{") (expression_statement "uVar8 = param_6[1];" (assignment_expression "uVar8 = param_6[1]" (identifier "uVar8") (= "=") (subscript_expression "param_6[1]" (identifier "param_6") ([ "[") (number_literal "1") (] "]"))) (; ";")) (expression_statement "uVar1 = param_6[2];" (assignment_expression "uVar1 = param_6[2]" (identifier "uVar1") (= "=") (subscript_expression "param_6[2]" (identifier "param_6") ([ "[") (number_literal "2") (] "]"))) (; ";")) (expression_statement "uVar7 = 0;" (assignment_expression "uVar7 = 0" (identifier "uVar7") (= "=") (number_literal "0")) (; ";")) (do_statement "do {\n            *(undefined4 *)(uVar8 + uVar7 * 4) = __ptr[uVar7 * 2];\n            *(undefined4 *)(uVar1 + uVar7 * 4) = __ptr[uVar7 * 2 + 1];\n            uVar7 = uVar7 + 1;\n          } while (local_24 != uVar7);" (do "do") (compound_statement "{\n            *(undefined4 *)(uVar8 + uVar7 * 4) = __ptr[uVar7 * 2];\n            *(undefined4 *)(uVar1 + uVar7 * 4) = __ptr[uVar7 * 2 + 1];\n            uVar7 = uVar7 + 1;\n          }" ({ "{") (expression_statement "*(undefined4 *)(uVar8 + uVar7 * 4) = __ptr[uVar7 * 2];" (assignment_expression "*(undefined4 *)(uVar8 + uVar7 * 4) = __ptr[uVar7 * 2]" (pointer_expression "*(undefined4 *)(uVar8 + uVar7 * 4)" (* "*") (cast_expression "(undefined4 *)(uVar8 + uVar7 * 4)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar8 + uVar7 * 4)" (( "(") (binary_expression "uVar8 + uVar7 * 4" (identifier "uVar8") (+ "+") (binary_expression "uVar7 * 4" (identifier "uVar7") (* "*") (number_literal "4"))) () ")")))) (= "=") (subscript_expression "__ptr[uVar7 * 2]" (identifier "__ptr") ([ "[") (binary_expression "uVar7 * 2" (identifier "uVar7") (* "*") (number_literal "2")) (] "]"))) (; ";")) (expression_statement "*(undefined4 *)(uVar1 + uVar7 * 4) = __ptr[uVar7 * 2 + 1];" (assignment_expression "*(undefined4 *)(uVar1 + uVar7 * 4) = __ptr[uVar7 * 2 + 1]" (pointer_expression "*(undefined4 *)(uVar1 + uVar7 * 4)" (* "*") (cast_expression "(undefined4 *)(uVar1 + uVar7 * 4)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar1 + uVar7 * 4)" (( "(") (binary_expression "uVar1 + uVar7 * 4" (identifier "uVar1") (+ "+") (binary_expression "uVar7 * 4" (identifier "uVar7") (* "*") (number_literal "4"))) () ")")))) (= "=") (subscript_expression "__ptr[uVar7 * 2 + 1]" (identifier "__ptr") ([ "[") (binary_expression "uVar7 * 2 + 1" (binary_expression "uVar7 * 2" (identifier "uVar7") (* "*") (number_literal "2")) (+ "+") (number_literal "1")) (] "]"))) (; ";")) (expression_statement "uVar7 = uVar7 + 1;" (assignment_expression "uVar7 = uVar7 + 1" (identifier "uVar7") (= "=") (binary_expression "uVar7 + 1" (identifier "uVar7") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(local_24 != uVar7)" (( "(") (binary_expression "local_24 != uVar7" (identifier "local_24") (!= "!=") (identifier "uVar7")) () ")")) (; ";")) (expression_statement "uVar8 = *param_6;" (assignment_expression "uVar8 = *param_6" (identifier "uVar8") (= "=") (pointer_expression "*param_6" (* "*") (identifier "param_6"))) (; ";")) (} "}"))))) (if_statement "if (uVar7 < uVar8) {\n          uVar8 = param_6[2];\n          uVar1 = param_6[1];\n          do {\n            uVar12 = uVar7 + 1;\n            *(undefined4 *)(uVar8 + uVar7 * 4) = 0xffffffff;\n            *(undefined4 *)(uVar1 + uVar7 * 4) = 0xffffffff;\n            uVar7 = uVar12;\n          } while (uVar12 < *param_6);\n        }" (if "if") (parenthesized_expression "(uVar7 < uVar8)" (( "(") (binary_expression "uVar7 < uVar8" (identifier "uVar7") (< "<") (identifier "uVar8")) () ")")) (compound_statement "{\n          uVar8 = param_6[2];\n          uVar1 = param_6[1];\n          do {\n            uVar12 = uVar7 + 1;\n            *(undefined4 *)(uVar8 + uVar7 * 4) = 0xffffffff;\n            *(undefined4 *)(uVar1 + uVar7 * 4) = 0xffffffff;\n            uVar7 = uVar12;\n          } while (uVar12 < *param_6);\n        }" ({ "{") (expression_statement "uVar8 = param_6[2];" (assignment_expression "uVar8 = param_6[2]" (identifier "uVar8") (= "=") (subscript_expression "param_6[2]" (identifier "param_6") ([ "[") (number_literal "2") (] "]"))) (; ";")) (expression_statement "uVar1 = param_6[1];" (assignment_expression "uVar1 = param_6[1]" (identifier "uVar1") (= "=") (subscript_expression "param_6[1]" (identifier "param_6") ([ "[") (number_literal "1") (] "]"))) (; ";")) (do_statement "do {\n            uVar12 = uVar7 + 1;\n            *(undefined4 *)(uVar8 + uVar7 * 4) = 0xffffffff;\n            *(undefined4 *)(uVar1 + uVar7 * 4) = 0xffffffff;\n            uVar7 = uVar12;\n          } while (uVar12 < *param_6);" (do "do") (compound_statement "{\n            uVar12 = uVar7 + 1;\n            *(undefined4 *)(uVar8 + uVar7 * 4) = 0xffffffff;\n            *(undefined4 *)(uVar1 + uVar7 * 4) = 0xffffffff;\n            uVar7 = uVar12;\n          }" ({ "{") (expression_statement "uVar12 = uVar7 + 1;" (assignment_expression "uVar12 = uVar7 + 1" (identifier "uVar12") (= "=") (binary_expression "uVar7 + 1" (identifier "uVar7") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "*(undefined4 *)(uVar8 + uVar7 * 4) = 0xffffffff;" (assignment_expression "*(undefined4 *)(uVar8 + uVar7 * 4) = 0xffffffff" (pointer_expression "*(undefined4 *)(uVar8 + uVar7 * 4)" (* "*") (cast_expression "(undefined4 *)(uVar8 + uVar7 * 4)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar8 + uVar7 * 4)" (( "(") (binary_expression "uVar8 + uVar7 * 4" (identifier "uVar8") (+ "+") (binary_expression "uVar7 * 4" (identifier "uVar7") (* "*") (number_literal "4"))) () ")")))) (= "=") (number_literal "0xffffffff")) (; ";")) (expression_statement "*(undefined4 *)(uVar1 + uVar7 * 4) = 0xffffffff;" (assignment_expression "*(undefined4 *)(uVar1 + uVar7 * 4) = 0xffffffff" (pointer_expression "*(undefined4 *)(uVar1 + uVar7 * 4)" (* "*") (cast_expression "(undefined4 *)(uVar1 + uVar7 * 4)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar1 + uVar7 * 4)" (( "(") (binary_expression "uVar1 + uVar7 * 4" (identifier "uVar1") (+ "+") (binary_expression "uVar7 * 4" (identifier "uVar7") (* "*") (number_literal "4"))) () ")")))) (= "=") (number_literal "0xffffffff")) (; ";")) (expression_statement "uVar7 = uVar12;" (assignment_expression "uVar7 = uVar12" (identifier "uVar7") (= "=") (identifier "uVar12")) (; ";")) (} "}")) (while "while") (parenthesized_expression "(uVar12 < *param_6)" (( "(") (binary_expression "uVar12 < *param_6" (identifier "uVar12") (< "<") (pointer_expression "*param_6" (* "*") (identifier "param_6"))) () ")")) (; ";")) (} "}"))) (} "}")))) (labeled_statement "LAB_0002ac4a:\n      *(byte *)(param_1 + 0x1c) = *(byte *)(param_1 + 0x1c) & 0xf9 | cVar10 * '\x02';" (statement_identifier "LAB_0002ac4a") (: ":") (expression_statement "*(byte *)(param_1 + 0x1c) = *(byte *)(param_1 + 0x1c) & 0xf9 | cVar10 * '\x02';" (assignment_expression "*(byte *)(param_1 + 0x1c) = *(byte *)(param_1 + 0x1c) & 0xf9 | cVar10 * '\x02'" (pointer_expression "*(byte *)(param_1 + 0x1c)" (* "*") (cast_expression "(byte *)(param_1 + 0x1c)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x1c)" (( "(") (binary_expression "param_1 + 0x1c" (identifier "param_1") (+ "+") (number_literal "0x1c")) () ")")))) (= "=") (binary_expression "*(byte *)(param_1 + 0x1c) & 0xf9 | cVar10 * '\x02'" (binary_expression "*(byte *)(param_1 + 0x1c) & 0xf9" (pointer_expression "*(byte *)(param_1 + 0x1c)" (* "*") (cast_expression "(byte *)(param_1 + 0x1c)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x1c)" (( "(") (binary_expression "param_1 + 0x1c" (identifier "param_1") (+ "+") (number_literal "0x1c")) () ")")))) (& "&") (number_literal "0xf9")) (| "|") (binary_expression "cVar10 * '\x02'" (identifier "cVar10") (* "*") (char_literal "'\x02'" (' "'") (escape_sequence "\x02") (' "'"))))) (; ";"))) (if_statement "if (cVar10 == '\0') goto LAB_0002ab5b;" (if "if") (parenthesized_expression "(cVar10 == '\0')" (( "(") (binary_expression "cVar10 == '\0'" (identifier "cVar10") (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (goto_statement "goto LAB_0002ab5b;" (goto "goto") (statement_identifier "LAB_0002ab5b") (; ";"))) (} "}"))) (expression_statement "uVar11 = *__ptr;" (assignment_expression "uVar11 = *__ptr" (identifier "uVar11") (= "=") (pointer_expression "*__ptr" (* "*") (identifier "__ptr"))) (; ";")) (} "}")) (else_clause "else {\n    uVar11 = 0xffffffff;\n    if (iVar4 == 1) goto LAB_0002ab60;\nLAB_0002ab5b:\n    uVar11 = 0xfffffffe;\n  }" (else "else") (compound_statement "{\n    uVar11 = 0xffffffff;\n    if (iVar4 == 1) goto LAB_0002ab60;\nLAB_0002ab5b:\n    uVar11 = 0xfffffffe;\n  }" ({ "{") (expression_statement "uVar11 = 0xffffffff;" (assignment_expression "uVar11 = 0xffffffff" (identifier "uVar11") (= "=") (number_literal "0xffffffff")) (; ";")) (if_statement "if (iVar4 == 1) goto LAB_0002ab60;" (if "if") (parenthesized_expression "(iVar4 == 1)" (( "(") (binary_expression "iVar4 == 1" (identifier "iVar4") (== "==") (number_literal "1")) () ")")) (goto_statement "goto LAB_0002ab60;" (goto "goto") (statement_identifier "LAB_0002ab60") (; ";"))) (labeled_statement "LAB_0002ab5b:\n    uVar11 = 0xfffffffe;" (statement_identifier "LAB_0002ab5b") (: ":") (expression_statement "uVar11 = 0xfffffffe;" (assignment_expression "uVar11 = 0xfffffffe" (identifier "uVar11") (= "=") (number_literal "0xfffffffe")) (; ";"))) (} "}")))) (labeled_statement "LAB_0002ab60:\n  free(__ptr);" (statement_identifier "LAB_0002ab60") (: ":") (expression_statement "free(__ptr);" (call_expression "free(__ptr)" (identifier "free") (argument_list "(__ptr)" (( "(") (identifier "__ptr") () ")"))) (; ";"))) (return_statement "return uVar11;" (return "return") (identifier "uVar11") (; ";")) (} "}")))

/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */

type_1 function_1(type_2 *bufp,char *string,type_3 var_3,type_3 var_1,type_1 var_2,
                      type_4 *var_8)

{
  int var_4;
  type_5 var_5;
  type_5 var_19;
  type_6 *var_11;
  type_7 var_13;
  size_t __size;
  type_1 *var_16;
  type_1 *var_17;
  type_8 var_15;
  int var_6;
  char var_23;
  type_1 rVar9;
  type_8 var_22;
  type_8 local_28;
  type_8 var_9;
  
  var_4 = var_1 + var_2;
  if ((var_1 < 0) || (var_3 < var_1)) {
    return -1;
  }
  var_6 = var_3;
  if (((var_3 < var_4) || ((-1 < var_2 && (var_4 < var_1)))) ||
     ((-1 < var_4 && ((var_6 = var_4, -1 < var_2 || (var_4 < var_1)))))) {
    var_5 = bufp->field_0x1c;
    local_28 = var_5 >> 5 & 3;
    if ((var_1 < var_6) && ((bufp->fastmap != (char *)0x0 && ((var_5 & 8) == 0)))) {
      var_7(bufp);
      var_5 = bufp->field_0x1c;
    }
  }
  else {
    var_6 = 0;
    var_5 = bufp->field_0x1c;
    local_28 = var_5 >> 5 & 3;
  }
  if (((var_5 & 0x10) == 0) && (var_8 != (type_4 *)0x0)) {
    if (((var_5 & 6) == 4) && (var_9 = var_8->num_regs, var_9 <= bufp->re_nsub)) {
      if ((int)var_9 < 1) goto LAB_0002ac98;
    }
    else {
      var_9 = bufp->re_nsub + 1;
    }
    __size = var_9 * 8;
  }
  else {
LAB_0002ac98:
    __size = 8;
    var_9 = 1;
    var_8 = (type_4 *)0x0;
  }
  var_11 = (type_6 *)var_10(__size);
  if (var_11 == (type_6 *)0x0) {
    return -2;
  }
  var_13 = var_12(bufp,string,var_3,var_1,var_6,var_3,var_9,var_11,local_28);
  if (var_13 == var_14) {
    if (var_8 != (type_4 *)0x0) {
      var_15 = var_9 + 1;
      var_5 = (type_5)bufp->field_0x1c >> 1;
      var_19 = var_5 & 3;
      if ((var_5 & 3) == 0) {
        var_16 = (type_1 *)var_10(var_15 * 4);
        var_8->var_1 = var_16;
        if (var_16 != (type_1 *)0x0) {
          var_17 = (type_1 *)var_10(var_15 * 4);
          var_8->end = var_17;
          if (var_17 != (type_1 *)0x0) {
            var_23 = '\x01';
            var_8->num_regs = var_15;
            var_22 = var_15;
            goto LAB_0002abce;
          }
          var_18(var_16);
        }
LAB_0002ae33:
        var_23 = '\0';
      }
      else {
        if (var_19 == 1) {
          var_23 = '\x01';
          var_22 = var_8->num_regs;
          if (var_8->num_regs < var_15) {
            var_16 = (type_1 *)var_20(var_8->var_1,var_15 * 4);
            if (var_16 == (type_1 *)0x0) goto LAB_0002ae33;
            var_17 = (type_1 *)var_20(var_8->end,var_15 * 4);
            if (var_17 == (type_1 *)0x0) {
              var_23 = '\0';
              var_18(var_16);
              goto LAB_0002ac4a;
            }
            var_8->var_1 = var_16;
            var_8->num_regs = var_15;
            var_8->end = var_17;
            var_22 = var_15;
          }
        }
        else {
          if (var_19 != 2) {
                    /* WARNING: Subroutine does not return */
            var_21("regs_allocated == REGS_FIXED","lib/regexec.c",0x1f8,"re_copy_regs");
          }
          if (var_8->num_regs < var_9) {
                    /* WARNING: Subroutine does not return */
            var_21("regs->num_regs >= nregs","lib/regexec.c",0x1fa,"re_copy_regs");
          }
          var_23 = '\x02';
          var_22 = var_8->num_regs;
        }
LAB_0002abce:
        if ((int)var_9 < 1) {
          var_15 = 0;
        }
        else {
          var_16 = var_8->var_1;
          var_17 = var_8->end;
          var_15 = 0;
          do {
            var_16[var_15] = var_11[var_15].rm_so;
            var_17[var_15] = var_11[var_15].rm_eo;
            var_15 = var_15 + 1;
          } while (var_9 != var_15);
          var_22 = var_8->num_regs;
        }
        if (var_15 < var_22) {
          var_16 = var_8->end;
          var_17 = var_8->var_1;
          do {
            var_22 = var_15 + 1;
            var_16[var_15] = -1;
            var_17[var_15] = -1;
            var_15 = var_22;
          } while (var_22 < var_8->num_regs);
        }
      }
LAB_0002ac4a:
      bufp->field_0x1c = bufp->field_0x1c & 0xf9 | var_23 * '\x02';
      if (var_23 == '\0') goto LAB_0002ab5b;
    }
    rVar9 = var_11->rm_so;
  }
  else {
    rVar9 = -1;
    if (var_13 == var_24) goto LAB_0002ab60;
LAB_0002ab5b:
    rVar9 = -2;
  }
LAB_0002ab60:
  var_18(var_11);
  return rVar9;
}


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

/* WARNING: Function: __i686.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */

undefined4
MASKED(int param_1,undefined4 param_2,int param_3,int param_4,int param_5,uint *param_6)

{
  uint uVar1;
  byte bVar2;
  byte bVar3;
  undefined4 *__ptr;
  int iVar4;
  size_t __size;
  void *pvVar5;
  void *pvVar6;
  uint uVar7;
  uint uVar8;
  int iVar9;
  char cVar10;
  undefined4 uVar11;
  uint uVar12;
  uint local_24;
  
  iVar4 = param_4 + param_5;
  if ((param_4 < 0) || (param_3 < param_4)) {
    return 0xffffffff;
  }
  iVar9 = param_3;
  if (((param_3 < iVar4) || ((-1 < param_5 && (iVar4 < param_4)))) ||
     ((-1 < iVar4 && ((iVar9 = iVar4, -1 < param_5 || (iVar4 < param_4)))))) {
    bVar2 = *(byte *)(param_1 + 0x1c);
    bVar3 = bVar2 >> 5 & 3;
    if ((param_4 < iVar9) && ((*(int *)(param_1 + 0x10) != 0 && ((bVar2 & 8) == 0)))) {
      FUN_00029ec0(param_1);
      bVar2 = *(byte *)(param_1 + 0x1c);
    }
  }
  else {
    iVar9 = 0;
    bVar2 = *(byte *)(param_1 + 0x1c);
    bVar3 = bVar2 >> 5 & 3;
  }
  if (((bVar2 & 0x10) == 0) && (param_6 != (uint *)0x0)) {
    if (((bVar2 & 6) == 4) && (local_24 = *param_6, local_24 <= *(uint *)(param_1 + 0x18))) {
      if ((int)local_24 < 1) goto LAB_0002ac98;
    }
    else {
      local_24 = *(uint *)(param_1 + 0x18) + 1;
    }
    __size = local_24 * 8;
  }
  else {
LAB_0002ac98:
    __size = 8;
    local_24 = 1;
    param_6 = (uint *)0x0;
  }
  __ptr = (undefined4 *)malloc(__size);
  if (__ptr == (undefined4 *)0x0) {
    return 0xfffffffe;
  }
  iVar4 = FUN_00023920(param_1,param_2,param_3,param_4,iVar9,param_3,local_24,__ptr,bVar3);
  if (iVar4 == 0) {
    if (param_6 != (uint *)0x0) {
      uVar7 = local_24 + 1;
      bVar2 = *(byte *)(param_1 + 0x1c) >> 1;
      bVar3 = bVar2 & 3;
      if ((bVar2 & 3) == 0) {
        pvVar5 = malloc(uVar7 * 4);
        param_6[1] = (uint)pvVar5;
        if (pvVar5 != (void *)0x0) {
          pvVar6 = malloc(uVar7 * 4);
          param_6[2] = (uint)pvVar6;
          if (pvVar6 != (void *)0x0) {
            cVar10 = '\x01';
            *param_6 = uVar7;
            uVar8 = uVar7;
            goto LAB_0002abce;
          }
          free(pvVar5);
        }
LAB_0002ae33:
        cVar10 = '\0';
      }
      else {
        if (bVar3 == 1) {
          cVar10 = '\x01';
          uVar8 = *param_6;
          if (*param_6 < uVar7) {
            pvVar5 = realloc((void *)param_6[1],uVar7 * 4);
            if (pvVar5 == (void *)0x0) goto LAB_0002ae33;
            pvVar6 = realloc((void *)param_6[2],uVar7 * 4);
            if (pvVar6 == (void *)0x0) {
              cVar10 = '\0';
              free(pvVar5);
              goto LAB_0002ac4a;
            }
            param_6[1] = (uint)pvVar5;
            *param_6 = uVar7;
            param_6[2] = (uint)pvVar6;
            uVar8 = uVar7;
          }
        }
        else {
          if (bVar3 != 2) {
                    /* WARNING: Subroutine does not return */
            __assert_fail("regs_allocated == REGS_FIXED","lib/regexec.c",0x1f8,"re_copy_regs");
          }
          if (*param_6 < local_24) {
                    /* WARNING: Subroutine does not return */
            __assert_fail("regs->num_regs >= nregs","lib/regexec.c",0x1fa,"re_copy_regs");
          }
          cVar10 = '\x02';
          uVar8 = *param_6;
        }
LAB_0002abce:
        if ((int)local_24 < 1) {
          uVar7 = 0;
        }
        else {
          uVar8 = param_6[1];
          uVar1 = param_6[2];
          uVar7 = 0;
          do {
            *(undefined4 *)(uVar8 + uVar7 * 4) = __ptr[uVar7 * 2];
            *(undefined4 *)(uVar1 + uVar7 * 4) = __ptr[uVar7 * 2 + 1];
            uVar7 = uVar7 + 1;
          } while (local_24 != uVar7);
          uVar8 = *param_6;
        }
        if (uVar7 < uVar8) {
          uVar8 = param_6[2];
          uVar1 = param_6[1];
          do {
            uVar12 = uVar7 + 1;
            *(undefined4 *)(uVar8 + uVar7 * 4) = 0xffffffff;
            *(undefined4 *)(uVar1 + uVar7 * 4) = 0xffffffff;
            uVar7 = uVar12;
          } while (uVar12 < *param_6);
        }
      }
LAB_0002ac4a:
      *(byte *)(param_1 + 0x1c) = *(byte *)(param_1 + 0x1c) & 0xf9 | cVar10 * '\x02';
      if (cVar10 == '\0') goto LAB_0002ab5b;
    }
    uVar11 = *__ptr;
  }
  else {
    uVar11 = 0xffffffff;
    if (iVar4 == 1) goto LAB_0002ab60;
LAB_0002ab5b:
    uVar11 = 0xfffffffe;
  }
LAB_0002ab60:
  free(__ptr);
  return uVar11;
}

