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

void * Pcompile(char *pattern,size_t size,reg_syntax_t ignored)

{
  char *pcVar1;
  int iVar2;
  _Bool _Var3;
  _Bool _Var4;
  size_t n;
  char *__s;
  int *piVar5;
  void *pvVar6;
  size_t sVar7;
  char *pcVar8;
  char *pcVar9;
  undefined4 uVar10;
  int iVar11;
  undefined4 extraout_ECX;
  char *__dest;
  char *pcVar12;
  int in_GS_OFFSET;
  bool bVar13;
  bool bVar14;
  undefined8 uVar15;
  int local_4e4;
  int e;
  char *ep;
  int sub [300];
  
  iVar2 = *(int *)(in_GS_OFFSET + 0x14);
  n = (size + 5) * 4;
  if (((int)n < 0) || (size + 5 >> 0x1e != 0)) {
                    /* WARNING: Subroutine does not return */
    xalloc_die();
  }
  __s = (char *)xmalloc(n);
  bVar13 = match_icase == false;
  bVar14 = match_icase == false;
  piVar5 = (int *)xcalloc(1,0x18);
  local_4e4 = 0x21 - (uint)bVar14;
  if ((localeinfo.multibyte != false) &&
     (local_4e4 = 0x821 - (uint)bVar13, localeinfo.using_utf8 == false)) {
    uVar10 = dcgettext(0,"-P supports only unibyte and UTF-8 locales",5,size);
                    /* WARNING: Subroutine does not return */
    error(2,0,uVar10);
  }
  pvVar6 = rpl_memchr(pattern,10,size);
  if (pvVar6 != (void *)0x0) {
    uVar10 = dcgettext(0,"the -P option only supports a single pattern",5,extraout_ECX);
                    /* WARNING: Subroutine does not return */
    error(2,0,uVar10);
  }
  *__s = '\0';
  _Var3 = match_words;
  if (match_words != false) {
    *(undefined4 *)__s = Pcompile::wprefix._0_4_;
    *(undefined4 *)(__s + 4) = Pcompile::wprefix._4_4_;
    *(undefined2 *)(__s + 8) = Pcompile::wprefix._8_2_;
    __s[10] = Pcompile::wprefix[10];
  }
  _Var4 = match_lines;
  if (match_lines != false) {
    *(undefined4 *)__s = Pcompile::xprefix._0_4_;
    __s[4] = Pcompile::xprefix[4];
  }
  sVar7 = strlen(__s);
  __dest = __s + sVar7;
  pcVar9 = pattern;
  do {
    pcVar12 = pattern + (size - (int)pcVar9);
    pcVar8 = (char *)rpl_memchr(pcVar9,0,(size_t)pcVar12);
    if (pcVar8 == (char *)0x0) {
      pcVar8 = __dest + (int)pcVar12;
      memcpy(__dest,pcVar9,(size_t)pcVar12);
      uVar10 = Pcompile::wsuffix._4_4_;
      if (_Var3 == false) {
        *pcVar8 = '\0';
      }
      else {
        *(undefined4 *)pcVar8 = Pcompile::wsuffix._0_4_;
        *(undefined4 *)(pcVar8 + 4) = uVar10;
      }
      if (_Var4 != false) {
        *(undefined2 *)pcVar8 = Pcompile::xsuffix._0_2_;
        pcVar8[2] = Pcompile::xsuffix[2];
      }
      uVar10 = pcre_maketables();
      iVar11 = pcre_compile(__s,local_4e4,&ep,&e,uVar10);
      *piVar5 = iVar11;
      if (iVar11 == 0) {
                    /* WARNING: Subroutine does not return */
        error(2,0,&DAT_0003ac56,ep);
      }
      iVar11 = pcre_study(iVar11,9,&ep);
      piVar5[1] = iVar11;
      if (ep != (char *)0x0) {
                    /* WARNING: Subroutine does not return */
        error(2,0,&DAT_0003ac56,ep);
      }
      uVar15 = pcre_fullinfo(*piVar5,iVar11,0x10,&e);
      if ((int)uVar15 != 0) {
        uVar10 = dcgettext(0,"internal error (should never happen)",5,
                           (int)((ulonglong)uVar15 >> 0x20));
                    /* WARNING: Subroutine does not return */
        error(2,0,uVar10);
      }
      if (e != 0) {
        piVar5[3] = 0x8000;
      }
      free(__s);
      iVar11 = pcre_exec(*piVar5,piVar5[1],"",0,0,0x80,sub,300);
      piVar5[4] = iVar11;
      iVar11 = pcre_exec(*piVar5,piVar5[1],"",0,0,0,sub,300);
      piVar5[5] = iVar11;
      if (iVar2 != *(int *)(in_GS_OFFSET + 0x14)) {
                    /* WARNING: Subroutine does not return */
        __stack_chk_fail_local();
      }
      return piVar5;
    }
    sVar7 = (int)pcVar8 - (int)pcVar9;
    memcpy(__dest,pcVar9,sVar7);
    if ((pattern < pcVar8) && (pcVar9 = pcVar8, pcVar8[-1] == '\\')) {
      do {
        pcVar12 = pcVar9 + -1;
        if (pattern == pcVar12) {
          sVar7 = sVar7 - ((int)pcVar8 - (int)pattern & 1U);
          goto LAB_0001e130;
        }
        pcVar1 = pcVar9 + -2;
        pcVar9 = pcVar12;
      } while (*pcVar1 == '\\');
      sVar7 = sVar7 - ((int)pcVar8 - (int)pcVar12 & 1U);
    }
LAB_0001e130:
    pcVar9 = pcVar8 + 1;
    builtin_strncpy(__dest + sVar7,"\\000",5);
    __dest = __dest + sVar7 + 4;
  } while( true );
}



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

int * FUN_0001e020(void *param_1,int param_2)

{
  char cVar1;
  char cVar2;
  int iVar3;
  char *__s;
  int *piVar4;
  size_t sVar5;
  void *pvVar6;
  void *pvVar7;
  undefined4 uVar9;
  undefined4 extraout_ECX;
  char *__dest;
  char *pcVar10;
  int in_GS_OFFSET;
  bool bVar11;
  bool bVar12;
  undefined8 uVar13;
  int local_4e4;
  int local_4d8;
  int local_4d4;
  undefined1 local_4d0 [1200];
  int local_20;
  undefined4 uStack_14;
  void *pvVar8;
  
  uStack_14 = 0x1e029;
  local_20 = *(int *)(in_GS_OFFSET + 0x14);
  iVar3 = (param_2 + 5U) * 4;
  if ((iVar3 < 0) || (param_2 + 5U >> 0x1e != 0)) {
                    /* WARNING: Subroutine does not return */
    FUN_0002f1c0();
  }
  __s = (char *)FUN_0002efa0(iVar3);
  bVar11 = DAT_0004ca26 == '\0';
  bVar12 = DAT_0004ca26 == '\0';
  piVar4 = (int *)FUN_0002f0e0(1,0x18);
  local_4e4 = 0x21 - (uint)bVar12;
  if ((DAT_0004c520 != '\0') && (local_4e4 = 0x821 - (uint)bVar11, DAT_0004c521 == '\0')) {
    uVar9 = dcgettext(0,"-P supports only unibyte and UTF-8 locales",5,param_2);
                    /* WARNING: Subroutine does not return */
    error(2,0,uVar9);
  }
  iVar3 = FUN_00036f10(param_1,10,param_2);
  if (iVar3 != 0) {
    uVar9 = dcgettext(0,"the -P option only supports a single pattern",5,extraout_ECX);
                    /* WARNING: Subroutine does not return */
    error(2,0,uVar9);
  }
  *__s = '\0';
  cVar1 = DAT_0004ca24;
  if (DAT_0004ca24 != '\0') {
    *(undefined4 *)__s = DAT_0003abf4;
    *(undefined4 *)(__s + 4) = DAT_0003abf8;
    *(undefined2 *)(__s + 8) = DAT_0003abfc;
    __s[10] = DAT_0003abfe;
  }
  cVar2 = DAT_0004ca25;
  if (DAT_0004ca25 != '\0') {
    *(undefined4 *)__s = DAT_0003abec;
    __s[4] = DAT_0003abf0;
  }
  sVar5 = strlen(__s);
  __dest = __s + sVar5;
  pvVar8 = param_1;
  do {
    sVar5 = (int)param_1 + (param_2 - (int)pvVar8);
    pvVar6 = (void *)FUN_00036f10(pvVar8,0,sVar5);
    if (pvVar6 == (void *)0x0) {
      pcVar10 = __dest + sVar5;
      memcpy(__dest,pvVar8,sVar5);
      uVar9 = DAT_0003abe8;
      if (cVar1 == '\0') {
        *pcVar10 = '\0';
      }
      else {
        *(undefined4 *)pcVar10 = DAT_0003abe4;
        *(undefined4 *)(pcVar10 + 4) = uVar9;
      }
      if (cVar2 != '\0') {
        *(undefined2 *)pcVar10 = DAT_0003abe0;
        pcVar10[2] = DAT_0003abe2;
      }
      uVar9 = pcre_maketables();
      iVar3 = pcre_compile(__s,local_4e4,&local_4d4,&local_4d8,uVar9);
      *piVar4 = iVar3;
      if (iVar3 == 0) {
                    /* WARNING: Subroutine does not return */
        error(2,0,&DAT_0003ac56,local_4d4);
      }
      iVar3 = pcre_study(iVar3,9,&local_4d4);
      piVar4[1] = iVar3;
      if (local_4d4 != 0) {
                    /* WARNING: Subroutine does not return */
        error(2,0,&DAT_0003ac56,local_4d4);
      }
      uVar13 = pcre_fullinfo(*piVar4,iVar3,0x10,&local_4d8);
      if ((int)uVar13 != 0) {
        uVar9 = dcgettext(0,"internal error (should never happen)",5,
                          (int)((ulonglong)uVar13 >> 0x20));
                    /* WARNING: Subroutine does not return */
        error(2,0,uVar9);
      }
      if (local_4d8 != 0) {
        piVar4[3] = 0x8000;
      }
      free(__s);
      iVar3 = pcre_exec(*piVar4,piVar4[1],"",0,0,0x80,local_4d0,300);
      piVar4[4] = iVar3;
      iVar3 = pcre_exec(*piVar4,piVar4[1],"",0,0,0,local_4d0,300);
      piVar4[5] = iVar3;
      if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {
                    /* WARNING: Subroutine does not return */
        FUN_00038830();
      }
      return piVar4;
    }
    sVar5 = (int)pvVar6 - (int)pvVar8;
    memcpy(__dest,pvVar8,sVar5);
    if ((param_1 < pvVar6) && (pvVar8 = pvVar6, *(char *)((int)pvVar6 - 1) == '\\')) {
      do {
        pvVar7 = (void *)((int)pvVar8 - 1);
        if (param_1 == pvVar7) {
          sVar5 = sVar5 - ((int)pvVar6 - (int)param_1 & 1U);
          goto LAB_0001e130;
        }
        pcVar10 = (char *)((int)pvVar8 - 2);
        pvVar8 = pvVar7;
      } while (*pcVar10 == '\\');
      sVar5 = sVar5 - ((int)pvVar6 - (int)pvVar7 & 1U);
    }
LAB_0001e130:
    pvVar8 = (void *)((int)pvVar6 + 1);
    builtin_strncpy(__dest + sVar5,"\\000",5);
    __dest = __dest + sVar5 + 4;
  } while( true );
}


PUSH EBP
PUSH EDI
PUSH ESI
PUSH EBX
CALL 0x000142a0
ADD EBX,0x29dc3
SUB ESP,0x4ec
MOV EAX,dword ptr [ESP + 0x500]
MOV ESI,dword ptr [ESP + 0x504]
MOV dword ptr [ESP + 0x8],EAX
MOV EAX,GS:[0x14]
MOV dword ptr [ESP + 0x4dc],EAX
XOR EAX,EAX
LEA EAX,[ESI + 0x5]
MOV ECX,EAX
SHR ECX,0x1e
SETNZ DL
SHL EAX,0x2
JS 0x0001e3ea
MOVZX EDX,DL
TEST EDX,EDX
JNZ 0x0001e3ea
SUB ESP,0xc
PUSH EAX
CALL 0x0002efa0
MOV dword ptr [ESP + 0x20],EAX
LEA EAX,[EBX + 0x4c3a]
POP EDI
POP EBP
CMP byte ptr [EAX],0x1
SBB EDI,EDI
ADD EDI,0x821
CMP byte ptr [EAX],0x1
SBB EAX,EAX
ADD EAX,0x21
MOV dword ptr [ESP + 0x20],EAX
MOV EAX,dword ptr [ESP + 0x10]
ADD EAX,ESI
MOV dword ptr [ESP + 0x14],EAX
PUSH 0x18
PUSH 0x1
CALL 0x0002f0e0
MOV dword ptr [ESP + 0x24],EAX
LEA EAX,[EBX + 0x4734]
ADD ESP,0x10
CMP byte ptr [EAX],0x0
JNZ 0x0001e2c8
SUB ESP,0x4
PUSH ESI
PUSH 0xa
PUSH dword ptr [ESP + 0x14]
CALL 0x00036f10
ADD ESP,0x10
TEST EAX,EAX
JNZ 0x0001e3ae
MOV EAX,dword ptr [ESP + 0x10]
MOV byte ptr [EAX],0x0
LEA EAX,[EBX + 0x4c38]
MOVZX EAX,byte ptr [EAX]
MOV byte ptr [ESP + 0x1e],AL
TEST AL,AL
JNZ 0x0001e350
LEA EAX,[EBX + 0x4c39]
MOVZX EAX,byte ptr [EAX]
MOV byte ptr [ESP + 0x1f],AL
TEST AL,AL
JNZ 0x0001e330
SUB ESP,0xc
MOV ESI,dword ptr [ESP + 0x1c]
PUSH ESI
CALL 0x00012390
ADD ESP,0x10
MOV EBP,dword ptr [ESP + 0x8]
LEA ESI,[ESI + EAX*0x1]
JMP 0x0001e141
ADD ESI,EDI
LEA EBP,[EDX + 0x1]
MOV dword ptr [ESI],0x3030305c
ADD ESI,0x4
MOV byte ptr [ESI],0x0
MOV EDI,dword ptr [ESP + 0xc]
SUB ESP,0x4
SUB EDI,EBP
PUSH EDI
PUSH 0x0
PUSH EBP
CALL 0x00036f10
ADD ESP,0x10
MOV EDX,EAX
TEST EAX,EAX
JZ 0x0001e1a8
MOV EDI,EDX
MOV dword ptr [ESP + 0x4],EDX
SUB ESP,0x4
SUB EDI,EBP
PUSH EDI
PUSH EBP
PUSH ESI
CALL 0x00012130
ADD ESP,0x10
MOV EDX,dword ptr [ESP + 0x4]
CMP dword ptr [ESP + 0x8],EDX
JNC 0x0001e130
CMP byte ptr [EDX + -0x1],0x5c
JNZ 0x0001e130
MOV EAX,EDX
SUB EAX,0x1
CMP dword ptr [ESP + 0x8],EAX
JZ 0x0001e380
CMP byte ptr [EAX + -0x1],0x5c
JZ 0x0001e184
MOV ECX,EDX
SUB ECX,EAX
MOV EAX,ECX
AND EAX,0x1
SUB EDI,EAX
JMP 0x0001e130
SUB ESP,0x4
PUSH EDI
PUSH EBP
PUSH ESI
ADD ESI,EDI
CALL 0x00012130
ADD ESP,0x10
CMP byte ptr [ESP + 0x1e],0x0
JNZ 0x0001e310
MOV byte ptr [ESI],0x0
CMP byte ptr [ESP + 0x1f],0x0
JNZ 0x0001e2f0
CALL 0x000120e0
SUB ESP,0xc
PUSH EAX
LEA ESI,[ESP + 0x34]
PUSH ESI
LEA EDI,[ESP + 0x3c]
PUSH EDI
PUSH dword ptr [ESP + 0x30]
PUSH dword ptr [ESP + 0x2c]
CALL 0x00012400
MOV ECX,dword ptr [ESP + 0x34]
ADD ESP,0x20
MOV dword ptr [ECX],EAX
TEST EAX,EAX
JZ 0x0001e405
SUB ESP,0x4
PUSH EDI
PUSH 0x9
PUSH EAX
CALL 0x00012550
MOV ECX,dword ptr [ESP + 0x24]
MOV EDX,dword ptr [ESP + 0x38]
ADD ESP,0x10
MOV dword ptr [ECX + 0x4],EAX
TEST EDX,EDX
JNZ 0x0001e3f4
PUSH ESI
PUSH 0x10
PUSH EAX
MOV EAX,dword ptr [ESP + 0x20]
PUSH dword ptr [EAX]
CALL 0x00012320
ADD ESP,0x10
TEST EAX,EAX
JNZ 0x0001e3cc
MOV EAX,dword ptr [ESP + 0x24]
TEST EAX,EAX
JNZ 0x0001e2e0
SUB ESP,0xc
LEA ESI,[EBX + 0xffff5c9e]
PUSH dword ptr [ESP + 0x1c]
CALL 0x00012740
PUSH 0x12c
LEA EDI,[ESP + 0x40]
PUSH EDI
PUSH 0x80
PUSH 0x0
PUSH 0x0
PUSH ESI
MOV EBP,dword ptr [ESP + 0x3c]
PUSH dword ptr [EBP + 0x4]
PUSH dword ptr [EBP]
CALL 0x00012200
ADD ESP,0x30
MOV dword ptr [EBP + 0x10],EAX
PUSH 0x12c
PUSH EDI
PUSH 0x0
PUSH 0x0
PUSH 0x0
PUSH ESI
PUSH dword ptr [EBP + 0x4]
PUSH dword ptr [EBP]
CALL 0x00012200
ADD ESP,0x20
MOV dword ptr [EBP + 0x14],EAX
MOV EAX,EBP
MOV ECX,dword ptr [ESP + 0x4dc]
XOR ECX,dword ptr GS:[0x14]
JNZ 0x0001e3ef
ADD ESP,0x4ec
POP EBX
POP ESI
POP EDI
POP EBP
RET
CMP byte ptr [EAX + 0x1],0x0
JZ 0x0001e390
MOV dword ptr [ESP + 0x18],EDI
JMP 0x0001e0ca
MOV EAX,dword ptr [ESP + 0x14]
MOV dword ptr [EAX + 0xc],0x8000
JMP 0x0001e24a
MOVZX EAX,word ptr [EBX + 0xffff2df4]
MOV word ptr [ESI],AX
MOVZX EAX,byte ptr [EBX + 0xffff2df6]
MOV byte ptr [ESI + 0x2],AL
JMP 0x0001e1d1
MOV EAX,dword ptr [EBX + 0xffff2df8]
MOV EDX,dword ptr [EBX + 0xffff2dfc]
MOV dword ptr [ESI],EAX
MOV dword ptr [ESI + 0x4],EDX
JMP 0x0001e1c6
MOV EAX,dword ptr [EBX + 0xffff2e00]
MOV ECX,dword ptr [ESP + 0x10]
MOV dword ptr [ECX],EAX
MOVZX EAX,byte ptr [EBX + 0xffff2e04]
MOV byte ptr [ECX + 0x4],AL
JMP 0x0001e115
MOV ECX,dword ptr [ESP + 0x10]
MOV EAX,dword ptr [EBX + 0xffff2e08]
MOV dword ptr [ECX],EAX
MOV EAX,dword ptr [EBX + 0xffff2e0c]
MOV dword ptr [ECX + 0x4],EAX
MOVZX EAX,word ptr [EBX + 0xffff2e10]
MOV word ptr [ECX + 0x8],AX
MOVZX EAX,byte ptr [EBX + 0xffff2e12]
MOV byte ptr [ECX + 0xa],AL
JMP 0x0001e100
MOV EAX,EDX
SUB EAX,dword ptr [ESP + 0x8]
AND EAX,0x1
SUB EDI,EAX
JMP 0x0001e130
LEA EAX,[EBX + 0xffff2d08]
PUSH ESI
PUSH 0x5
PUSH EAX
PUSH 0x0
CALL 0x00012180
ADD ESP,0xc
PUSH EAX
PUSH 0x0
PUSH 0x2
CALL 0x000122c0
LEA EAX,[EBX + 0xffff2d34]
PUSH ECX
PUSH 0x5
PUSH EAX
PUSH 0x0
CALL 0x00012180
ADD ESP,0xc
PUSH EAX
PUSH 0x0
PUSH 0x2
CALL 0x000122c0
LEA EAX,[EBX + 0xffff2d64]
PUSH EDX
PUSH 0x5
PUSH EAX
PUSH 0x0
CALL 0x00012180
ADD ESP,0xc
PUSH EAX
PUSH 0x0
PUSH 0x2
CALL 0x000122c0
CALL 0x0002f1c0
CALL 0x00038830
LEA EAX,[EBX + 0xffff2e6a]
PUSH EDX
PUSH EAX
PUSH 0x0
PUSH 0x2
CALL 0x000122c0
LEA EAX,[EBX + 0xffff2e6a]
PUSH dword ptr [ESP + 0x28]
PUSH EAX
PUSH 0x0
PUSH 0x2
CALL 0x000122c0
(translation_unit "/* WARNING: Function: __i686.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */\n\nint * FUN_0001e020(void *param_1,int param_2)\n\n{\n  char cVar1;\n  char cVar2;\n  int iVar3;\n  char *__s;\n  int *piVar4;\n  size_t sVar5;\n  void *pvVar6;\n  void *pvVar7;\n  undefined4 uVar9;\n  undefined4 extraout_ECX;\n  char *__dest;\n  char *pcVar10;\n  int in_GS_OFFSET;\n  bool bVar11;\n  bool bVar12;\n  undefined8 uVar13;\n  int local_4e4;\n  int local_4d8;\n  int local_4d4;\n  undefined1 local_4d0 [1200];\n  int local_20;\n  undefined4 uStack_14;\n  void *pvVar8;\n  \n  uStack_14 = 0x1e029;\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  iVar3 = (param_2 + 5U) * 4;\n  if ((iVar3 < 0) || (param_2 + 5U >> 0x1e != 0)) {\n                    /* WARNING: Subroutine does not return */\n    FUN_0002f1c0();\n  }\n  __s = (char *)FUN_0002efa0(iVar3);\n  bVar11 = DAT_0004ca26 == '\0';\n  bVar12 = DAT_0004ca26 == '\0';\n  piVar4 = (int *)FUN_0002f0e0(1,0x18);\n  local_4e4 = 0x21 - (uint)bVar12;\n  if ((DAT_0004c520 != '\0') && (local_4e4 = 0x821 - (uint)bVar11, DAT_0004c521 == '\0')) {\n    uVar9 = dcgettext(0,"-P supports only unibyte and UTF-8 locales",5,param_2);\n                    /* WARNING: Subroutine does not return */\n    error(2,0,uVar9);\n  }\n  iVar3 = FUN_00036f10(param_1,10,param_2);\n  if (iVar3 != 0) {\n    uVar9 = dcgettext(0,"the -P option only supports a single pattern",5,extraout_ECX);\n                    /* WARNING: Subroutine does not return */\n    error(2,0,uVar9);\n  }\n  *__s = '\0';\n  cVar1 = DAT_0004ca24;\n  if (DAT_0004ca24 != '\0') {\n    *(undefined4 *)__s = DAT_0003abf4;\n    *(undefined4 *)(__s + 4) = DAT_0003abf8;\n    *(undefined2 *)(__s + 8) = DAT_0003abfc;\n    __s[10] = DAT_0003abfe;\n  }\n  cVar2 = DAT_0004ca25;\n  if (DAT_0004ca25 != '\0') {\n    *(undefined4 *)__s = DAT_0003abec;\n    __s[4] = DAT_0003abf0;\n  }\n  sVar5 = strlen(__s);\n  __dest = __s + sVar5;\n  pvVar8 = param_1;\n  do {\n    sVar5 = (int)param_1 + (param_2 - (int)pvVar8);\n    pvVar6 = (void *)FUN_00036f10(pvVar8,0,sVar5);\n    if (pvVar6 == (void *)0x0) {\n      pcVar10 = __dest + sVar5;\n      memcpy(__dest,pvVar8,sVar5);\n      uVar9 = DAT_0003abe8;\n      if (cVar1 == '\0') {\n        *pcVar10 = '\0';\n      }\n      else {\n        *(undefined4 *)pcVar10 = DAT_0003abe4;\n        *(undefined4 *)(pcVar10 + 4) = uVar9;\n      }\n      if (cVar2 != '\0') {\n        *(undefined2 *)pcVar10 = DAT_0003abe0;\n        pcVar10[2] = DAT_0003abe2;\n      }\n      uVar9 = pcre_maketables();\n      iVar3 = pcre_compile(__s,local_4e4,&local_4d4,&local_4d8,uVar9);\n      *piVar4 = iVar3;\n      if (iVar3 == 0) {\n                    /* WARNING: Subroutine does not return */\n        error(2,0,&DAT_0003ac56,local_4d4);\n      }\n      iVar3 = pcre_study(iVar3,9,&local_4d4);\n      piVar4[1] = iVar3;\n      if (local_4d4 != 0) {\n                    /* WARNING: Subroutine does not return */\n        error(2,0,&DAT_0003ac56,local_4d4);\n      }\n      uVar13 = pcre_fullinfo(*piVar4,iVar3,0x10,&local_4d8);\n      if ((int)uVar13 != 0) {\n        uVar9 = dcgettext(0,"internal error (should never happen)",5,\n                          (int)((ulonglong)uVar13 >> 0x20));\n                    /* WARNING: Subroutine does not return */\n        error(2,0,uVar9);\n      }\n      if (local_4d8 != 0) {\n        piVar4[3] = 0x8000;\n      }\n      free(__s);\n      iVar3 = pcre_exec(*piVar4,piVar4[1],"",0,0,0x80,local_4d0,300);\n      piVar4[4] = iVar3;\n      iVar3 = pcre_exec(*piVar4,piVar4[1],"",0,0,0,local_4d0,300);\n      piVar4[5] = iVar3;\n      if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    /* WARNING: Subroutine does not return */\n        FUN_00038830();\n      }\n      return piVar4;\n    }\n    sVar5 = (int)pvVar6 - (int)pvVar8;\n    memcpy(__dest,pvVar8,sVar5);\n    if ((param_1 < pvVar6) && (pvVar8 = pvVar6, *(char *)((int)pvVar6 - 1) == '\\')) {\n      do {\n        pvVar7 = (void *)((int)pvVar8 - 1);\n        if (param_1 == pvVar7) {\n          sVar5 = sVar5 - ((int)pvVar6 - (int)param_1 & 1U);\n          goto LAB_0001e130;\n        }\n        pcVar10 = (char *)((int)pvVar8 - 2);\n        pvVar8 = pvVar7;\n      } while (*pcVar10 == '\\');\n      sVar5 = sVar5 - ((int)pvVar6 - (int)pvVar7 & 1U);\n    }\nLAB_0001e130:\n    pvVar8 = (void *)((int)pvVar6 + 1);\n    builtin_strncpy(__dest + sVar5,"\\000",5);\n    __dest = __dest + sVar5 + 4;\n  } while( true );\n}\n\n" comment (function_definition "int * FUN_0001e020(void *param_1,int param_2)\n\n{\n  char cVar1;\n  char cVar2;\n  int iVar3;\n  char *__s;\n  int *piVar4;\n  size_t sVar5;\n  void *pvVar6;\n  void *pvVar7;\n  undefined4 uVar9;\n  undefined4 extraout_ECX;\n  char *__dest;\n  char *pcVar10;\n  int in_GS_OFFSET;\n  bool bVar11;\n  bool bVar12;\n  undefined8 uVar13;\n  int local_4e4;\n  int local_4d8;\n  int local_4d4;\n  undefined1 local_4d0 [1200];\n  int local_20;\n  undefined4 uStack_14;\n  void *pvVar8;\n  \n  uStack_14 = 0x1e029;\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  iVar3 = (param_2 + 5U) * 4;\n  if ((iVar3 < 0) || (param_2 + 5U >> 0x1e != 0)) {\n                    /* WARNING: Subroutine does not return */\n    FUN_0002f1c0();\n  }\n  __s = (char *)FUN_0002efa0(iVar3);\n  bVar11 = DAT_0004ca26 == '\0';\n  bVar12 = DAT_0004ca26 == '\0';\n  piVar4 = (int *)FUN_0002f0e0(1,0x18);\n  local_4e4 = 0x21 - (uint)bVar12;\n  if ((DAT_0004c520 != '\0') && (local_4e4 = 0x821 - (uint)bVar11, DAT_0004c521 == '\0')) {\n    uVar9 = dcgettext(0,"-P supports only unibyte and UTF-8 locales",5,param_2);\n                    /* WARNING: Subroutine does not return */\n    error(2,0,uVar9);\n  }\n  iVar3 = FUN_00036f10(param_1,10,param_2);\n  if (iVar3 != 0) {\n    uVar9 = dcgettext(0,"the -P option only supports a single pattern",5,extraout_ECX);\n                    /* WARNING: Subroutine does not return */\n    error(2,0,uVar9);\n  }\n  *__s = '\0';\n  cVar1 = DAT_0004ca24;\n  if (DAT_0004ca24 != '\0') {\n    *(undefined4 *)__s = DAT_0003abf4;\n    *(undefined4 *)(__s + 4) = DAT_0003abf8;\n    *(undefined2 *)(__s + 8) = DAT_0003abfc;\n    __s[10] = DAT_0003abfe;\n  }\n  cVar2 = DAT_0004ca25;\n  if (DAT_0004ca25 != '\0') {\n    *(undefined4 *)__s = DAT_0003abec;\n    __s[4] = DAT_0003abf0;\n  }\n  sVar5 = strlen(__s);\n  __dest = __s + sVar5;\n  pvVar8 = param_1;\n  do {\n    sVar5 = (int)param_1 + (param_2 - (int)pvVar8);\n    pvVar6 = (void *)FUN_00036f10(pvVar8,0,sVar5);\n    if (pvVar6 == (void *)0x0) {\n      pcVar10 = __dest + sVar5;\n      memcpy(__dest,pvVar8,sVar5);\n      uVar9 = DAT_0003abe8;\n      if (cVar1 == '\0') {\n        *pcVar10 = '\0';\n      }\n      else {\n        *(undefined4 *)pcVar10 = DAT_0003abe4;\n        *(undefined4 *)(pcVar10 + 4) = uVar9;\n      }\n      if (cVar2 != '\0') {\n        *(undefined2 *)pcVar10 = DAT_0003abe0;\n        pcVar10[2] = DAT_0003abe2;\n      }\n      uVar9 = pcre_maketables();\n      iVar3 = pcre_compile(__s,local_4e4,&local_4d4,&local_4d8,uVar9);\n      *piVar4 = iVar3;\n      if (iVar3 == 0) {\n                    /* WARNING: Subroutine does not return */\n        error(2,0,&DAT_0003ac56,local_4d4);\n      }\n      iVar3 = pcre_study(iVar3,9,&local_4d4);\n      piVar4[1] = iVar3;\n      if (local_4d4 != 0) {\n                    /* WARNING: Subroutine does not return */\n        error(2,0,&DAT_0003ac56,local_4d4);\n      }\n      uVar13 = pcre_fullinfo(*piVar4,iVar3,0x10,&local_4d8);\n      if ((int)uVar13 != 0) {\n        uVar9 = dcgettext(0,"internal error (should never happen)",5,\n                          (int)((ulonglong)uVar13 >> 0x20));\n                    /* WARNING: Subroutine does not return */\n        error(2,0,uVar9);\n      }\n      if (local_4d8 != 0) {\n        piVar4[3] = 0x8000;\n      }\n      free(__s);\n      iVar3 = pcre_exec(*piVar4,piVar4[1],"",0,0,0x80,local_4d0,300);\n      piVar4[4] = iVar3;\n      iVar3 = pcre_exec(*piVar4,piVar4[1],"",0,0,0,local_4d0,300);\n      piVar4[5] = iVar3;\n      if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    /* WARNING: Subroutine does not return */\n        FUN_00038830();\n      }\n      return piVar4;\n    }\n    sVar5 = (int)pvVar6 - (int)pvVar8;\n    memcpy(__dest,pvVar8,sVar5);\n    if ((param_1 < pvVar6) && (pvVar8 = pvVar6, *(char *)((int)pvVar6 - 1) == '\\')) {\n      do {\n        pvVar7 = (void *)((int)pvVar8 - 1);\n        if (param_1 == pvVar7) {\n          sVar5 = sVar5 - ((int)pvVar6 - (int)param_1 & 1U);\n          goto LAB_0001e130;\n        }\n        pcVar10 = (char *)((int)pvVar8 - 2);\n        pvVar8 = pvVar7;\n      } while (*pcVar10 == '\\');\n      sVar5 = sVar5 - ((int)pvVar6 - (int)pvVar7 & 1U);\n    }\nLAB_0001e130:\n    pvVar8 = (void *)((int)pvVar6 + 1);\n    builtin_strncpy(__dest + sVar5,"\\000",5);\n    __dest = __dest + sVar5 + 4;\n  } while( true );\n}" primitive_type (pointer_declarator "* FUN_0001e020(void *param_1,int param_2)" * (function_declarator "FUN_0001e020(void *param_1,int param_2)" identifier (parameter_list "(void *param_1,int param_2)" ( (parameter_declaration "void *param_1" primitive_type (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "int param_2" primitive_type identifier) )))) (compound_statement "{\n  char cVar1;\n  char cVar2;\n  int iVar3;\n  char *__s;\n  int *piVar4;\n  size_t sVar5;\n  void *pvVar6;\n  void *pvVar7;\n  undefined4 uVar9;\n  undefined4 extraout_ECX;\n  char *__dest;\n  char *pcVar10;\n  int in_GS_OFFSET;\n  bool bVar11;\n  bool bVar12;\n  undefined8 uVar13;\n  int local_4e4;\n  int local_4d8;\n  int local_4d4;\n  undefined1 local_4d0 [1200];\n  int local_20;\n  undefined4 uStack_14;\n  void *pvVar8;\n  \n  uStack_14 = 0x1e029;\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  iVar3 = (param_2 + 5U) * 4;\n  if ((iVar3 < 0) || (param_2 + 5U >> 0x1e != 0)) {\n                    /* WARNING: Subroutine does not return */\n    FUN_0002f1c0();\n  }\n  __s = (char *)FUN_0002efa0(iVar3);\n  bVar11 = DAT_0004ca26 == '\0';\n  bVar12 = DAT_0004ca26 == '\0';\n  piVar4 = (int *)FUN_0002f0e0(1,0x18);\n  local_4e4 = 0x21 - (uint)bVar12;\n  if ((DAT_0004c520 != '\0') && (local_4e4 = 0x821 - (uint)bVar11, DAT_0004c521 == '\0')) {\n    uVar9 = dcgettext(0,"-P supports only unibyte and UTF-8 locales",5,param_2);\n                    /* WARNING: Subroutine does not return */\n    error(2,0,uVar9);\n  }\n  iVar3 = FUN_00036f10(param_1,10,param_2);\n  if (iVar3 != 0) {\n    uVar9 = dcgettext(0,"the -P option only supports a single pattern",5,extraout_ECX);\n                    /* WARNING: Subroutine does not return */\n    error(2,0,uVar9);\n  }\n  *__s = '\0';\n  cVar1 = DAT_0004ca24;\n  if (DAT_0004ca24 != '\0') {\n    *(undefined4 *)__s = DAT_0003abf4;\n    *(undefined4 *)(__s + 4) = DAT_0003abf8;\n    *(undefined2 *)(__s + 8) = DAT_0003abfc;\n    __s[10] = DAT_0003abfe;\n  }\n  cVar2 = DAT_0004ca25;\n  if (DAT_0004ca25 != '\0') {\n    *(undefined4 *)__s = DAT_0003abec;\n    __s[4] = DAT_0003abf0;\n  }\n  sVar5 = strlen(__s);\n  __dest = __s + sVar5;\n  pvVar8 = param_1;\n  do {\n    sVar5 = (int)param_1 + (param_2 - (int)pvVar8);\n    pvVar6 = (void *)FUN_00036f10(pvVar8,0,sVar5);\n    if (pvVar6 == (void *)0x0) {\n      pcVar10 = __dest + sVar5;\n      memcpy(__dest,pvVar8,sVar5);\n      uVar9 = DAT_0003abe8;\n      if (cVar1 == '\0') {\n        *pcVar10 = '\0';\n      }\n      else {\n        *(undefined4 *)pcVar10 = DAT_0003abe4;\n        *(undefined4 *)(pcVar10 + 4) = uVar9;\n      }\n      if (cVar2 != '\0') {\n        *(undefined2 *)pcVar10 = DAT_0003abe0;\n        pcVar10[2] = DAT_0003abe2;\n      }\n      uVar9 = pcre_maketables();\n      iVar3 = pcre_compile(__s,local_4e4,&local_4d4,&local_4d8,uVar9);\n      *piVar4 = iVar3;\n      if (iVar3 == 0) {\n                    /* WARNING: Subroutine does not return */\n        error(2,0,&DAT_0003ac56,local_4d4);\n      }\n      iVar3 = pcre_study(iVar3,9,&local_4d4);\n      piVar4[1] = iVar3;\n      if (local_4d4 != 0) {\n                    /* WARNING: Subroutine does not return */\n        error(2,0,&DAT_0003ac56,local_4d4);\n      }\n      uVar13 = pcre_fullinfo(*piVar4,iVar3,0x10,&local_4d8);\n      if ((int)uVar13 != 0) {\n        uVar9 = dcgettext(0,"internal error (should never happen)",5,\n                          (int)((ulonglong)uVar13 >> 0x20));\n                    /* WARNING: Subroutine does not return */\n        error(2,0,uVar9);\n      }\n      if (local_4d8 != 0) {\n        piVar4[3] = 0x8000;\n      }\n      free(__s);\n      iVar3 = pcre_exec(*piVar4,piVar4[1],"",0,0,0x80,local_4d0,300);\n      piVar4[4] = iVar3;\n      iVar3 = pcre_exec(*piVar4,piVar4[1],"",0,0,0,local_4d0,300);\n      piVar4[5] = iVar3;\n      if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    /* WARNING: Subroutine does not return */\n        FUN_00038830();\n      }\n      return piVar4;\n    }\n    sVar5 = (int)pvVar6 - (int)pvVar8;\n    memcpy(__dest,pvVar8,sVar5);\n    if ((param_1 < pvVar6) && (pvVar8 = pvVar6, *(char *)((int)pvVar6 - 1) == '\\')) {\n      do {\n        pvVar7 = (void *)((int)pvVar8 - 1);\n        if (param_1 == pvVar7) {\n          sVar5 = sVar5 - ((int)pvVar6 - (int)param_1 & 1U);\n          goto LAB_0001e130;\n        }\n        pcVar10 = (char *)((int)pvVar8 - 2);\n        pvVar8 = pvVar7;\n      } while (*pcVar10 == '\\');\n      sVar5 = sVar5 - ((int)pvVar6 - (int)pvVar7 & 1U);\n    }\nLAB_0001e130:\n    pvVar8 = (void *)((int)pvVar6 + 1);\n    builtin_strncpy(__dest + sVar5,"\\000",5);\n    __dest = __dest + sVar5 + 4;\n  } while( true );\n}" { (declaration "char cVar1;" primitive_type identifier ;) (declaration "char cVar2;" primitive_type identifier ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "char *__s;" primitive_type (pointer_declarator "*__s" * identifier) ;) (declaration "int *piVar4;" primitive_type (pointer_declarator "*piVar4" * identifier) ;) (declaration "size_t sVar5;" primitive_type identifier ;) (declaration "void *pvVar6;" primitive_type (pointer_declarator "*pvVar6" * identifier) ;) (declaration "void *pvVar7;" primitive_type (pointer_declarator "*pvVar7" * identifier) ;) (declaration "undefined4 uVar9;" type_identifier identifier ;) (declaration "undefined4 extraout_ECX;" type_identifier identifier ;) (declaration "char *__dest;" primitive_type (pointer_declarator "*__dest" * identifier) ;) (declaration "char *pcVar10;" primitive_type (pointer_declarator "*pcVar10" * identifier) ;) (declaration "int in_GS_OFFSET;" primitive_type identifier ;) (declaration "bool bVar11;" primitive_type identifier ;) (declaration "bool bVar12;" primitive_type identifier ;) (declaration "undefined8 uVar13;" type_identifier identifier ;) (declaration "int local_4e4;" primitive_type identifier ;) (declaration "int local_4d8;" primitive_type identifier ;) (declaration "int local_4d4;" primitive_type identifier ;) (declaration "undefined1 local_4d0 [1200];" type_identifier (array_declarator "local_4d0 [1200]" identifier [ number_literal ]) ;) (declaration "int local_20;" primitive_type identifier ;) (declaration "undefined4 uStack_14;" type_identifier identifier ;) (declaration "void *pvVar8;" primitive_type (pointer_declarator "*pvVar8" * identifier) ;) (expression_statement "uStack_14 = 0x1e029;" (assignment_expression "uStack_14 = 0x1e029" identifier = number_literal) ;) (expression_statement "local_20 = *(int *)(in_GS_OFFSET + 0x14);" (assignment_expression "local_20 = *(int *)(in_GS_OFFSET + 0x14)" identifier = (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" * (cast_expression "(int *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) ;) (expression_statement "iVar3 = (param_2 + 5U) * 4;" (assignment_expression "iVar3 = (param_2 + 5U) * 4" identifier = (binary_expression "(param_2 + 5U) * 4" (parenthesized_expression "(param_2 + 5U)" ( (binary_expression "param_2 + 5U" identifier + number_literal) )) * number_literal)) ;) (if_statement "if ((iVar3 < 0) || (param_2 + 5U >> 0x1e != 0)) {\n                    /* WARNING: Subroutine does not return */\n    FUN_0002f1c0();\n  }" if (parenthesized_expression "((iVar3 < 0) || (param_2 + 5U >> 0x1e != 0))" ( (binary_expression "(iVar3 < 0) || (param_2 + 5U >> 0x1e != 0)" (parenthesized_expression "(iVar3 < 0)" ( (binary_expression "iVar3 < 0" identifier < number_literal) )) || (parenthesized_expression "(param_2 + 5U >> 0x1e != 0)" ( (binary_expression "param_2 + 5U >> 0x1e != 0" (binary_expression "param_2 + 5U >> 0x1e" (binary_expression "param_2 + 5U" identifier + number_literal) >> number_literal) != number_literal) ))) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n    FUN_0002f1c0();\n  }" { comment (expression_statement "FUN_0002f1c0();" (call_expression "FUN_0002f1c0()" identifier (argument_list "()" ( ))) ;) })) (expression_statement "__s = (char *)FUN_0002efa0(iVar3);" (assignment_expression "__s = (char *)FUN_0002efa0(iVar3)" identifier = (cast_expression "(char *)FUN_0002efa0(iVar3)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_0002efa0(iVar3)" identifier (argument_list "(iVar3)" ( identifier ))))) ;) (expression_statement "bVar11 = DAT_0004ca26 == '\0';" (assignment_expression "bVar11 = DAT_0004ca26 == '\0'" identifier = (binary_expression "DAT_0004ca26 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence '))) ;) (expression_statement "bVar12 = DAT_0004ca26 == '\0';" (assignment_expression "bVar12 = DAT_0004ca26 == '\0'" identifier = (binary_expression "DAT_0004ca26 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence '))) ;) (expression_statement "piVar4 = (int *)FUN_0002f0e0(1,0x18);" (assignment_expression "piVar4 = (int *)FUN_0002f0e0(1,0x18)" identifier = (cast_expression "(int *)FUN_0002f0e0(1,0x18)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_0002f0e0(1,0x18)" identifier (argument_list "(1,0x18)" ( number_literal , number_literal ))))) ;) (expression_statement "local_4e4 = 0x21 - (uint)bVar12;" (assignment_expression "local_4e4 = 0x21 - (uint)bVar12" identifier = (binary_expression "0x21 - (uint)bVar12" number_literal - (cast_expression "(uint)bVar12" ( (type_descriptor "uint" type_identifier) ) identifier))) ;) (if_statement "if ((DAT_0004c520 != '\0') && (local_4e4 = 0x821 - (uint)bVar11, DAT_0004c521 == '\0')) {\n    uVar9 = dcgettext(0,"-P supports only unibyte and UTF-8 locales",5,param_2);\n                    /* WARNING: Subroutine does not return */\n    error(2,0,uVar9);\n  }" if (parenthesized_expression "((DAT_0004c520 != '\0') && (local_4e4 = 0x821 - (uint)bVar11, DAT_0004c521 == '\0'))" ( (binary_expression "(DAT_0004c520 != '\0') && (local_4e4 = 0x821 - (uint)bVar11, DAT_0004c521 == '\0')" (parenthesized_expression "(DAT_0004c520 != '\0')" ( (binary_expression "DAT_0004c520 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) && (parenthesized_expression "(local_4e4 = 0x821 - (uint)bVar11, DAT_0004c521 == '\0')" ( (comma_expression "local_4e4 = 0x821 - (uint)bVar11, DAT_0004c521 == '\0'" (assignment_expression "local_4e4 = 0x821 - (uint)bVar11" identifier = (binary_expression "0x821 - (uint)bVar11" number_literal - (cast_expression "(uint)bVar11" ( (type_descriptor "uint" type_identifier) ) identifier))) , (binary_expression "DAT_0004c521 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence '))) ))) )) (compound_statement "{\n    uVar9 = dcgettext(0,"-P supports only unibyte and UTF-8 locales",5,param_2);\n                    /* WARNING: Subroutine does not return */\n    error(2,0,uVar9);\n  }" { (expression_statement "uVar9 = dcgettext(0,"-P supports only unibyte and UTF-8 locales",5,param_2);" (assignment_expression "uVar9 = dcgettext(0,"-P supports only unibyte and UTF-8 locales",5,param_2)" identifier = (call_expression "dcgettext(0,"-P supports only unibyte and UTF-8 locales",5,param_2)" identifier (argument_list "(0,"-P supports only unibyte and UTF-8 locales",5,param_2)" ( number_literal , (string_literal ""-P supports only unibyte and UTF-8 locales"" " string_content ") , number_literal , identifier )))) ;) comment (expression_statement "error(2,0,uVar9);" (call_expression "error(2,0,uVar9)" identifier (argument_list "(2,0,uVar9)" ( number_literal , number_literal , identifier ))) ;) })) (expression_statement "iVar3 = FUN_00036f10(param_1,10,param_2);" (assignment_expression "iVar3 = FUN_00036f10(param_1,10,param_2)" identifier = (call_expression "FUN_00036f10(param_1,10,param_2)" identifier (argument_list "(param_1,10,param_2)" ( identifier , number_literal , identifier )))) ;) (if_statement "if (iVar3 != 0) {\n    uVar9 = dcgettext(0,"the -P option only supports a single pattern",5,extraout_ECX);\n                    /* WARNING: Subroutine does not return */\n    error(2,0,uVar9);\n  }" if (parenthesized_expression "(iVar3 != 0)" ( (binary_expression "iVar3 != 0" identifier != number_literal) )) (compound_statement "{\n    uVar9 = dcgettext(0,"the -P option only supports a single pattern",5,extraout_ECX);\n                    /* WARNING: Subroutine does not return */\n    error(2,0,uVar9);\n  }" { (expression_statement "uVar9 = dcgettext(0,"the -P option only supports a single pattern",5,extraout_ECX);" (assignment_expression "uVar9 = dcgettext(0,"the -P option only supports a single pattern",5,extraout_ECX)" identifier = (call_expression "dcgettext(0,"the -P option only supports a single pattern",5,extraout_ECX)" identifier (argument_list "(0,"the -P option only supports a single pattern",5,extraout_ECX)" ( number_literal , (string_literal ""the -P option only supports a single pattern"" " string_content ") , number_literal , identifier )))) ;) comment (expression_statement "error(2,0,uVar9);" (call_expression "error(2,0,uVar9)" identifier (argument_list "(2,0,uVar9)" ( number_literal , number_literal , identifier ))) ;) })) (expression_statement "*__s = '\0';" (assignment_expression "*__s = '\0'" (pointer_expression "*__s" * identifier) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "cVar1 = DAT_0004ca24;" (assignment_expression "cVar1 = DAT_0004ca24" identifier = identifier) ;) (if_statement "if (DAT_0004ca24 != '\0') {\n    *(undefined4 *)__s = DAT_0003abf4;\n    *(undefined4 *)(__s + 4) = DAT_0003abf8;\n    *(undefined2 *)(__s + 8) = DAT_0003abfc;\n    __s[10] = DAT_0003abfe;\n  }" if (parenthesized_expression "(DAT_0004ca24 != '\0')" ( (binary_expression "DAT_0004ca24 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    *(undefined4 *)__s = DAT_0003abf4;\n    *(undefined4 *)(__s + 4) = DAT_0003abf8;\n    *(undefined2 *)(__s + 8) = DAT_0003abfc;\n    __s[10] = DAT_0003abfe;\n  }" { (expression_statement "*(undefined4 *)__s = DAT_0003abf4;" (assignment_expression "*(undefined4 *)__s = DAT_0003abf4" (pointer_expression "*(undefined4 *)__s" * (cast_expression "(undefined4 *)__s" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) = identifier) ;) (expression_statement "*(undefined4 *)(__s + 4) = DAT_0003abf8;" (assignment_expression "*(undefined4 *)(__s + 4) = DAT_0003abf8" (pointer_expression "*(undefined4 *)(__s + 4)" * (cast_expression "(undefined4 *)(__s + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(__s + 4)" ( (binary_expression "__s + 4" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined2 *)(__s + 8) = DAT_0003abfc;" (assignment_expression "*(undefined2 *)(__s + 8) = DAT_0003abfc" (pointer_expression "*(undefined2 *)(__s + 8)" * (cast_expression "(undefined2 *)(__s + 8)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(__s + 8)" ( (binary_expression "__s + 8" identifier + number_literal) )))) = identifier) ;) (expression_statement "__s[10] = DAT_0003abfe;" (assignment_expression "__s[10] = DAT_0003abfe" (subscript_expression "__s[10]" identifier [ number_literal ]) = identifier) ;) })) (expression_statement "cVar2 = DAT_0004ca25;" (assignment_expression "cVar2 = DAT_0004ca25" identifier = identifier) ;) (if_statement "if (DAT_0004ca25 != '\0') {\n    *(undefined4 *)__s = DAT_0003abec;\n    __s[4] = DAT_0003abf0;\n  }" if (parenthesized_expression "(DAT_0004ca25 != '\0')" ( (binary_expression "DAT_0004ca25 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    *(undefined4 *)__s = DAT_0003abec;\n    __s[4] = DAT_0003abf0;\n  }" { (expression_statement "*(undefined4 *)__s = DAT_0003abec;" (assignment_expression "*(undefined4 *)__s = DAT_0003abec" (pointer_expression "*(undefined4 *)__s" * (cast_expression "(undefined4 *)__s" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) = identifier) ;) (expression_statement "__s[4] = DAT_0003abf0;" (assignment_expression "__s[4] = DAT_0003abf0" (subscript_expression "__s[4]" identifier [ number_literal ]) = identifier) ;) })) (expression_statement "sVar5 = strlen(__s);" (assignment_expression "sVar5 = strlen(__s)" identifier = (call_expression "strlen(__s)" identifier (argument_list "(__s)" ( identifier )))) ;) (expression_statement "__dest = __s + sVar5;" (assignment_expression "__dest = __s + sVar5" identifier = (binary_expression "__s + sVar5" identifier + identifier)) ;) (expression_statement "pvVar8 = param_1;" (assignment_expression "pvVar8 = param_1" identifier = identifier) ;) (do_statement "do {\n    sVar5 = (int)param_1 + (param_2 - (int)pvVar8);\n    pvVar6 = (void *)FUN_00036f10(pvVar8,0,sVar5);\n    if (pvVar6 == (void *)0x0) {\n      pcVar10 = __dest + sVar5;\n      memcpy(__dest,pvVar8,sVar5);\n      uVar9 = DAT_0003abe8;\n      if (cVar1 == '\0') {\n        *pcVar10 = '\0';\n      }\n      else {\n        *(undefined4 *)pcVar10 = DAT_0003abe4;\n        *(undefined4 *)(pcVar10 + 4) = uVar9;\n      }\n      if (cVar2 != '\0') {\n        *(undefined2 *)pcVar10 = DAT_0003abe0;\n        pcVar10[2] = DAT_0003abe2;\n      }\n      uVar9 = pcre_maketables();\n      iVar3 = pcre_compile(__s,local_4e4,&local_4d4,&local_4d8,uVar9);\n      *piVar4 = iVar3;\n      if (iVar3 == 0) {\n                    /* WARNING: Subroutine does not return */\n        error(2,0,&DAT_0003ac56,local_4d4);\n      }\n      iVar3 = pcre_study(iVar3,9,&local_4d4);\n      piVar4[1] = iVar3;\n      if (local_4d4 != 0) {\n                    /* WARNING: Subroutine does not return */\n        error(2,0,&DAT_0003ac56,local_4d4);\n      }\n      uVar13 = pcre_fullinfo(*piVar4,iVar3,0x10,&local_4d8);\n      if ((int)uVar13 != 0) {\n        uVar9 = dcgettext(0,"internal error (should never happen)",5,\n                          (int)((ulonglong)uVar13 >> 0x20));\n                    /* WARNING: Subroutine does not return */\n        error(2,0,uVar9);\n      }\n      if (local_4d8 != 0) {\n        piVar4[3] = 0x8000;\n      }\n      free(__s);\n      iVar3 = pcre_exec(*piVar4,piVar4[1],"",0,0,0x80,local_4d0,300);\n      piVar4[4] = iVar3;\n      iVar3 = pcre_exec(*piVar4,piVar4[1],"",0,0,0,local_4d0,300);\n      piVar4[5] = iVar3;\n      if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    /* WARNING: Subroutine does not return */\n        FUN_00038830();\n      }\n      return piVar4;\n    }\n    sVar5 = (int)pvVar6 - (int)pvVar8;\n    memcpy(__dest,pvVar8,sVar5);\n    if ((param_1 < pvVar6) && (pvVar8 = pvVar6, *(char *)((int)pvVar6 - 1) == '\\')) {\n      do {\n        pvVar7 = (void *)((int)pvVar8 - 1);\n        if (param_1 == pvVar7) {\n          sVar5 = sVar5 - ((int)pvVar6 - (int)param_1 & 1U);\n          goto LAB_0001e130;\n        }\n        pcVar10 = (char *)((int)pvVar8 - 2);\n        pvVar8 = pvVar7;\n      } while (*pcVar10 == '\\');\n      sVar5 = sVar5 - ((int)pvVar6 - (int)pvVar7 & 1U);\n    }\nLAB_0001e130:\n    pvVar8 = (void *)((int)pvVar6 + 1);\n    builtin_strncpy(__dest + sVar5,"\\000",5);\n    __dest = __dest + sVar5 + 4;\n  } while( true );" do (compound_statement "{\n    sVar5 = (int)param_1 + (param_2 - (int)pvVar8);\n    pvVar6 = (void *)FUN_00036f10(pvVar8,0,sVar5);\n    if (pvVar6 == (void *)0x0) {\n      pcVar10 = __dest + sVar5;\n      memcpy(__dest,pvVar8,sVar5);\n      uVar9 = DAT_0003abe8;\n      if (cVar1 == '\0') {\n        *pcVar10 = '\0';\n      }\n      else {\n        *(undefined4 *)pcVar10 = DAT_0003abe4;\n        *(undefined4 *)(pcVar10 + 4) = uVar9;\n      }\n      if (cVar2 != '\0') {\n        *(undefined2 *)pcVar10 = DAT_0003abe0;\n        pcVar10[2] = DAT_0003abe2;\n      }\n      uVar9 = pcre_maketables();\n      iVar3 = pcre_compile(__s,local_4e4,&local_4d4,&local_4d8,uVar9);\n      *piVar4 = iVar3;\n      if (iVar3 == 0) {\n                    /* WARNING: Subroutine does not return */\n        error(2,0,&DAT_0003ac56,local_4d4);\n      }\n      iVar3 = pcre_study(iVar3,9,&local_4d4);\n      piVar4[1] = iVar3;\n      if (local_4d4 != 0) {\n                    /* WARNING: Subroutine does not return */\n        error(2,0,&DAT_0003ac56,local_4d4);\n      }\n      uVar13 = pcre_fullinfo(*piVar4,iVar3,0x10,&local_4d8);\n      if ((int)uVar13 != 0) {\n        uVar9 = dcgettext(0,"internal error (should never happen)",5,\n                          (int)((ulonglong)uVar13 >> 0x20));\n                    /* WARNING: Subroutine does not return */\n        error(2,0,uVar9);\n      }\n      if (local_4d8 != 0) {\n        piVar4[3] = 0x8000;\n      }\n      free(__s);\n      iVar3 = pcre_exec(*piVar4,piVar4[1],"",0,0,0x80,local_4d0,300);\n      piVar4[4] = iVar3;\n      iVar3 = pcre_exec(*piVar4,piVar4[1],"",0,0,0,local_4d0,300);\n      piVar4[5] = iVar3;\n      if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    /* WARNING: Subroutine does not return */\n        FUN_00038830();\n      }\n      return piVar4;\n    }\n    sVar5 = (int)pvVar6 - (int)pvVar8;\n    memcpy(__dest,pvVar8,sVar5);\n    if ((param_1 < pvVar6) && (pvVar8 = pvVar6, *(char *)((int)pvVar6 - 1) == '\\')) {\n      do {\n        pvVar7 = (void *)((int)pvVar8 - 1);\n        if (param_1 == pvVar7) {\n          sVar5 = sVar5 - ((int)pvVar6 - (int)param_1 & 1U);\n          goto LAB_0001e130;\n        }\n        pcVar10 = (char *)((int)pvVar8 - 2);\n        pvVar8 = pvVar7;\n      } while (*pcVar10 == '\\');\n      sVar5 = sVar5 - ((int)pvVar6 - (int)pvVar7 & 1U);\n    }\nLAB_0001e130:\n    pvVar8 = (void *)((int)pvVar6 + 1);\n    builtin_strncpy(__dest + sVar5,"\\000",5);\n    __dest = __dest + sVar5 + 4;\n  }" { (expression_statement "sVar5 = (int)param_1 + (param_2 - (int)pvVar8);" (assignment_expression "sVar5 = (int)param_1 + (param_2 - (int)pvVar8)" identifier = (binary_expression "(int)param_1 + (param_2 - (int)pvVar8)" (cast_expression "(int)param_1" ( (type_descriptor "int" primitive_type) ) identifier) + (parenthesized_expression "(param_2 - (int)pvVar8)" ( (binary_expression "param_2 - (int)pvVar8" identifier - (cast_expression "(int)pvVar8" ( (type_descriptor "int" primitive_type) ) identifier)) )))) ;) (expression_statement "pvVar6 = (void *)FUN_00036f10(pvVar8,0,sVar5);" (assignment_expression "pvVar6 = (void *)FUN_00036f10(pvVar8,0,sVar5)" identifier = (cast_expression "(void *)FUN_00036f10(pvVar8,0,sVar5)" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00036f10(pvVar8,0,sVar5)" identifier (argument_list "(pvVar8,0,sVar5)" ( identifier , number_literal , identifier ))))) ;) (if_statement "if (pvVar6 == (void *)0x0) {\n      pcVar10 = __dest + sVar5;\n      memcpy(__dest,pvVar8,sVar5);\n      uVar9 = DAT_0003abe8;\n      if (cVar1 == '\0') {\n        *pcVar10 = '\0';\n      }\n      else {\n        *(undefined4 *)pcVar10 = DAT_0003abe4;\n        *(undefined4 *)(pcVar10 + 4) = uVar9;\n      }\n      if (cVar2 != '\0') {\n        *(undefined2 *)pcVar10 = DAT_0003abe0;\n        pcVar10[2] = DAT_0003abe2;\n      }\n      uVar9 = pcre_maketables();\n      iVar3 = pcre_compile(__s,local_4e4,&local_4d4,&local_4d8,uVar9);\n      *piVar4 = iVar3;\n      if (iVar3 == 0) {\n                    /* WARNING: Subroutine does not return */\n        error(2,0,&DAT_0003ac56,local_4d4);\n      }\n      iVar3 = pcre_study(iVar3,9,&local_4d4);\n      piVar4[1] = iVar3;\n      if (local_4d4 != 0) {\n                    /* WARNING: Subroutine does not return */\n        error(2,0,&DAT_0003ac56,local_4d4);\n      }\n      uVar13 = pcre_fullinfo(*piVar4,iVar3,0x10,&local_4d8);\n      if ((int)uVar13 != 0) {\n        uVar9 = dcgettext(0,"internal error (should never happen)",5,\n                          (int)((ulonglong)uVar13 >> 0x20));\n                    /* WARNING: Subroutine does not return */\n        error(2,0,uVar9);\n      }\n      if (local_4d8 != 0) {\n        piVar4[3] = 0x8000;\n      }\n      free(__s);\n      iVar3 = pcre_exec(*piVar4,piVar4[1],"",0,0,0x80,local_4d0,300);\n      piVar4[4] = iVar3;\n      iVar3 = pcre_exec(*piVar4,piVar4[1],"",0,0,0,local_4d0,300);\n      piVar4[5] = iVar3;\n      if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    /* WARNING: Subroutine does not return */\n        FUN_00038830();\n      }\n      return piVar4;\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      pcVar10 = __dest + sVar5;\n      memcpy(__dest,pvVar8,sVar5);\n      uVar9 = DAT_0003abe8;\n      if (cVar1 == '\0') {\n        *pcVar10 = '\0';\n      }\n      else {\n        *(undefined4 *)pcVar10 = DAT_0003abe4;\n        *(undefined4 *)(pcVar10 + 4) = uVar9;\n      }\n      if (cVar2 != '\0') {\n        *(undefined2 *)pcVar10 = DAT_0003abe0;\n        pcVar10[2] = DAT_0003abe2;\n      }\n      uVar9 = pcre_maketables();\n      iVar3 = pcre_compile(__s,local_4e4,&local_4d4,&local_4d8,uVar9);\n      *piVar4 = iVar3;\n      if (iVar3 == 0) {\n                    /* WARNING: Subroutine does not return */\n        error(2,0,&DAT_0003ac56,local_4d4);\n      }\n      iVar3 = pcre_study(iVar3,9,&local_4d4);\n      piVar4[1] = iVar3;\n      if (local_4d4 != 0) {\n                    /* WARNING: Subroutine does not return */\n        error(2,0,&DAT_0003ac56,local_4d4);\n      }\n      uVar13 = pcre_fullinfo(*piVar4,iVar3,0x10,&local_4d8);\n      if ((int)uVar13 != 0) {\n        uVar9 = dcgettext(0,"internal error (should never happen)",5,\n                          (int)((ulonglong)uVar13 >> 0x20));\n                    /* WARNING: Subroutine does not return */\n        error(2,0,uVar9);\n      }\n      if (local_4d8 != 0) {\n        piVar4[3] = 0x8000;\n      }\n      free(__s);\n      iVar3 = pcre_exec(*piVar4,piVar4[1],"",0,0,0x80,local_4d0,300);\n      piVar4[4] = iVar3;\n      iVar3 = pcre_exec(*piVar4,piVar4[1],"",0,0,0,local_4d0,300);\n      piVar4[5] = iVar3;\n      if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    /* WARNING: Subroutine does not return */\n        FUN_00038830();\n      }\n      return piVar4;\n    }" { (expression_statement "pcVar10 = __dest + sVar5;" (assignment_expression "pcVar10 = __dest + sVar5" identifier = (binary_expression "__dest + sVar5" identifier + identifier)) ;) (expression_statement "memcpy(__dest,pvVar8,sVar5);" (call_expression "memcpy(__dest,pvVar8,sVar5)" identifier (argument_list "(__dest,pvVar8,sVar5)" ( identifier , identifier , identifier ))) ;) (expression_statement "uVar9 = DAT_0003abe8;" (assignment_expression "uVar9 = DAT_0003abe8" identifier = identifier) ;) (if_statement "if (cVar1 == '\0') {\n        *pcVar10 = '\0';\n      }\n      else {\n        *(undefined4 *)pcVar10 = DAT_0003abe4;\n        *(undefined4 *)(pcVar10 + 4) = uVar9;\n      }" if (parenthesized_expression "(cVar1 == '\0')" ( (binary_expression "cVar1 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n        *pcVar10 = '\0';\n      }" { (expression_statement "*pcVar10 = '\0';" (assignment_expression "*pcVar10 = '\0'" (pointer_expression "*pcVar10" * identifier) = (char_literal "'\0'" ' escape_sequence ')) ;) }) (else_clause "else {\n        *(undefined4 *)pcVar10 = DAT_0003abe4;\n        *(undefined4 *)(pcVar10 + 4) = uVar9;\n      }" else (compound_statement "{\n        *(undefined4 *)pcVar10 = DAT_0003abe4;\n        *(undefined4 *)(pcVar10 + 4) = uVar9;\n      }" { (expression_statement "*(undefined4 *)pcVar10 = DAT_0003abe4;" (assignment_expression "*(undefined4 *)pcVar10 = DAT_0003abe4" (pointer_expression "*(undefined4 *)pcVar10" * (cast_expression "(undefined4 *)pcVar10" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) = identifier) ;) (expression_statement "*(undefined4 *)(pcVar10 + 4) = uVar9;" (assignment_expression "*(undefined4 *)(pcVar10 + 4) = uVar9" (pointer_expression "*(undefined4 *)(pcVar10 + 4)" * (cast_expression "(undefined4 *)(pcVar10 + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar10 + 4)" ( (binary_expression "pcVar10 + 4" identifier + number_literal) )))) = identifier) ;) }))) (if_statement "if (cVar2 != '\0') {\n        *(undefined2 *)pcVar10 = DAT_0003abe0;\n        pcVar10[2] = DAT_0003abe2;\n      }" if (parenthesized_expression "(cVar2 != '\0')" ( (binary_expression "cVar2 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n        *(undefined2 *)pcVar10 = DAT_0003abe0;\n        pcVar10[2] = DAT_0003abe2;\n      }" { (expression_statement "*(undefined2 *)pcVar10 = DAT_0003abe0;" (assignment_expression "*(undefined2 *)pcVar10 = DAT_0003abe0" (pointer_expression "*(undefined2 *)pcVar10" * (cast_expression "(undefined2 *)pcVar10" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) = identifier) ;) (expression_statement "pcVar10[2] = DAT_0003abe2;" (assignment_expression "pcVar10[2] = DAT_0003abe2" (subscript_expression "pcVar10[2]" identifier [ number_literal ]) = identifier) ;) })) (expression_statement "uVar9 = pcre_maketables();" (assignment_expression "uVar9 = pcre_maketables()" identifier = (call_expression "pcre_maketables()" identifier (argument_list "()" ( )))) ;) (expression_statement "iVar3 = pcre_compile(__s,local_4e4,&local_4d4,&local_4d8,uVar9);" (assignment_expression "iVar3 = pcre_compile(__s,local_4e4,&local_4d4,&local_4d8,uVar9)" identifier = (call_expression "pcre_compile(__s,local_4e4,&local_4d4,&local_4d8,uVar9)" identifier (argument_list "(__s,local_4e4,&local_4d4,&local_4d8,uVar9)" ( identifier , identifier , (pointer_expression "&local_4d4" & identifier) , (pointer_expression "&local_4d8" & identifier) , identifier )))) ;) (expression_statement "*piVar4 = iVar3;" (assignment_expression "*piVar4 = iVar3" (pointer_expression "*piVar4" * identifier) = identifier) ;) (if_statement "if (iVar3 == 0) {\n                    /* WARNING: Subroutine does not return */\n        error(2,0,&DAT_0003ac56,local_4d4);\n      }" if (parenthesized_expression "(iVar3 == 0)" ( (binary_expression "iVar3 == 0" identifier == number_literal) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n        error(2,0,&DAT_0003ac56,local_4d4);\n      }" { comment (expression_statement "error(2,0,&DAT_0003ac56,local_4d4);" (call_expression "error(2,0,&DAT_0003ac56,local_4d4)" identifier (argument_list "(2,0,&DAT_0003ac56,local_4d4)" ( number_literal , number_literal , (pointer_expression "&DAT_0003ac56" & identifier) , identifier ))) ;) })) (expression_statement "iVar3 = pcre_study(iVar3,9,&local_4d4);" (assignment_expression "iVar3 = pcre_study(iVar3,9,&local_4d4)" identifier = (call_expression "pcre_study(iVar3,9,&local_4d4)" identifier (argument_list "(iVar3,9,&local_4d4)" ( identifier , number_literal , (pointer_expression "&local_4d4" & identifier) )))) ;) (expression_statement "piVar4[1] = iVar3;" (assignment_expression "piVar4[1] = iVar3" (subscript_expression "piVar4[1]" identifier [ number_literal ]) = identifier) ;) (if_statement "if (local_4d4 != 0) {\n                    /* WARNING: Subroutine does not return */\n        error(2,0,&DAT_0003ac56,local_4d4);\n      }" if (parenthesized_expression "(local_4d4 != 0)" ( (binary_expression "local_4d4 != 0" identifier != number_literal) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n        error(2,0,&DAT_0003ac56,local_4d4);\n      }" { comment (expression_statement "error(2,0,&DAT_0003ac56,local_4d4);" (call_expression "error(2,0,&DAT_0003ac56,local_4d4)" identifier (argument_list "(2,0,&DAT_0003ac56,local_4d4)" ( number_literal , number_literal , (pointer_expression "&DAT_0003ac56" & identifier) , identifier ))) ;) })) (expression_statement "uVar13 = pcre_fullinfo(*piVar4,iVar3,0x10,&local_4d8);" (assignment_expression "uVar13 = pcre_fullinfo(*piVar4,iVar3,0x10,&local_4d8)" identifier = (call_expression "pcre_fullinfo(*piVar4,iVar3,0x10,&local_4d8)" identifier (argument_list "(*piVar4,iVar3,0x10,&local_4d8)" ( (pointer_expression "*piVar4" * identifier) , identifier , number_literal , (pointer_expression "&local_4d8" & identifier) )))) ;) (if_statement "if ((int)uVar13 != 0) {\n        uVar9 = dcgettext(0,"internal error (should never happen)",5,\n                          (int)((ulonglong)uVar13 >> 0x20));\n                    /* WARNING: Subroutine does not return */\n        error(2,0,uVar9);\n      }" if (parenthesized_expression "((int)uVar13 != 0)" ( (binary_expression "(int)uVar13 != 0" (cast_expression "(int)uVar13" ( (type_descriptor "int" primitive_type) ) identifier) != number_literal) )) (compound_statement "{\n        uVar9 = dcgettext(0,"internal error (should never happen)",5,\n                          (int)((ulonglong)uVar13 >> 0x20));\n                    /* WARNING: Subroutine does not return */\n        error(2,0,uVar9);\n      }" { (expression_statement "uVar9 = dcgettext(0,"internal error (should never happen)",5,\n                          (int)((ulonglong)uVar13 >> 0x20));" (assignment_expression "uVar9 = dcgettext(0,"internal error (should never happen)",5,\n                          (int)((ulonglong)uVar13 >> 0x20))" identifier = (call_expression "dcgettext(0,"internal error (should never happen)",5,\n                          (int)((ulonglong)uVar13 >> 0x20))" identifier (argument_list "(0,"internal error (should never happen)",5,\n                          (int)((ulonglong)uVar13 >> 0x20))" ( number_literal , (string_literal ""internal error (should never happen)"" " string_content ") , number_literal , (cast_expression "(int)((ulonglong)uVar13 >> 0x20)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((ulonglong)uVar13 >> 0x20)" ( (binary_expression "(ulonglong)uVar13 >> 0x20" (cast_expression "(ulonglong)uVar13" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) ))) )))) ;) comment (expression_statement "error(2,0,uVar9);" (call_expression "error(2,0,uVar9)" identifier (argument_list "(2,0,uVar9)" ( number_literal , number_literal , identifier ))) ;) })) (if_statement "if (local_4d8 != 0) {\n        piVar4[3] = 0x8000;\n      }" if (parenthesized_expression "(local_4d8 != 0)" ( (binary_expression "local_4d8 != 0" identifier != number_literal) )) (compound_statement "{\n        piVar4[3] = 0x8000;\n      }" { (expression_statement "piVar4[3] = 0x8000;" (assignment_expression "piVar4[3] = 0x8000" (subscript_expression "piVar4[3]" identifier [ number_literal ]) = number_literal) ;) })) (expression_statement "free(__s);" (call_expression "free(__s)" identifier (argument_list "(__s)" ( identifier ))) ;) (expression_statement "iVar3 = pcre_exec(*piVar4,piVar4[1],"",0,0,0x80,local_4d0,300);" (assignment_expression "iVar3 = pcre_exec(*piVar4,piVar4[1],"",0,0,0x80,local_4d0,300)" identifier = (call_expression "pcre_exec(*piVar4,piVar4[1],"",0,0,0x80,local_4d0,300)" identifier (argument_list "(*piVar4,piVar4[1],"",0,0,0x80,local_4d0,300)" ( (pointer_expression "*piVar4" * identifier) , (subscript_expression "piVar4[1]" identifier [ number_literal ]) , (string_literal """" " ") , number_literal , number_literal , number_literal , identifier , number_literal )))) ;) (expression_statement "piVar4[4] = iVar3;" (assignment_expression "piVar4[4] = iVar3" (subscript_expression "piVar4[4]" identifier [ number_literal ]) = identifier) ;) (expression_statement "iVar3 = pcre_exec(*piVar4,piVar4[1],"",0,0,0,local_4d0,300);" (assignment_expression "iVar3 = pcre_exec(*piVar4,piVar4[1],"",0,0,0,local_4d0,300)" identifier = (call_expression "pcre_exec(*piVar4,piVar4[1],"",0,0,0,local_4d0,300)" identifier (argument_list "(*piVar4,piVar4[1],"",0,0,0,local_4d0,300)" ( (pointer_expression "*piVar4" * identifier) , (subscript_expression "piVar4[1]" identifier [ number_literal ]) , (string_literal """" " ") , number_literal , number_literal , number_literal , identifier , number_literal )))) ;) (expression_statement "piVar4[5] = iVar3;" (assignment_expression "piVar4[5] = iVar3" (subscript_expression "piVar4[5]" identifier [ number_literal ]) = identifier) ;) (if_statement "if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    /* WARNING: Subroutine does not return */\n        FUN_00038830();\n      }" if (parenthesized_expression "(local_20 != *(int *)(in_GS_OFFSET + 0x14))" ( (binary_expression "local_20 != *(int *)(in_GS_OFFSET + 0x14)" identifier != (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" * (cast_expression "(int *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n        FUN_00038830();\n      }" { comment (expression_statement "FUN_00038830();" (call_expression "FUN_00038830()" identifier (argument_list "()" ( ))) ;) })) (return_statement "return piVar4;" return identifier ;) })) (expression_statement "sVar5 = (int)pvVar6 - (int)pvVar8;" (assignment_expression "sVar5 = (int)pvVar6 - (int)pvVar8" identifier = (binary_expression "(int)pvVar6 - (int)pvVar8" (cast_expression "(int)pvVar6" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)pvVar8" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (expression_statement "memcpy(__dest,pvVar8,sVar5);" (call_expression "memcpy(__dest,pvVar8,sVar5)" identifier (argument_list "(__dest,pvVar8,sVar5)" ( identifier , identifier , identifier ))) ;) (if_statement "if ((param_1 < pvVar6) && (pvVar8 = pvVar6, *(char *)((int)pvVar6 - 1) == '\\')) {\n      do {\n        pvVar7 = (void *)((int)pvVar8 - 1);\n        if (param_1 == pvVar7) {\n          sVar5 = sVar5 - ((int)pvVar6 - (int)param_1 & 1U);\n          goto LAB_0001e130;\n        }\n        pcVar10 = (char *)((int)pvVar8 - 2);\n        pvVar8 = pvVar7;\n      } while (*pcVar10 == '\\');\n      sVar5 = sVar5 - ((int)pvVar6 - (int)pvVar7 & 1U);\n    }" if (parenthesized_expression "((param_1 < pvVar6) && (pvVar8 = pvVar6, *(char *)((int)pvVar6 - 1) == '\\'))" ( (binary_expression "(param_1 < pvVar6) && (pvVar8 = pvVar6, *(char *)((int)pvVar6 - 1) == '\\')" (parenthesized_expression "(param_1 < pvVar6)" ( (binary_expression "param_1 < pvVar6" identifier < identifier) )) && (parenthesized_expression "(pvVar8 = pvVar6, *(char *)((int)pvVar6 - 1) == '\\')" ( (comma_expression "pvVar8 = pvVar6, *(char *)((int)pvVar6 - 1) == '\\'" (assignment_expression "pvVar8 = pvVar6" identifier = identifier) , (binary_expression "*(char *)((int)pvVar6 - 1) == '\\'" (pointer_expression "*(char *)((int)pvVar6 - 1)" * (cast_expression "(char *)((int)pvVar6 - 1)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)pvVar6 - 1)" ( (binary_expression "(int)pvVar6 - 1" (cast_expression "(int)pvVar6" ( (type_descriptor "int" primitive_type) ) identifier) - number_literal) )))) == (char_literal "'\\'" ' escape_sequence '))) ))) )) (compound_statement "{\n      do {\n        pvVar7 = (void *)((int)pvVar8 - 1);\n        if (param_1 == pvVar7) {\n          sVar5 = sVar5 - ((int)pvVar6 - (int)param_1 & 1U);\n          goto LAB_0001e130;\n        }\n        pcVar10 = (char *)((int)pvVar8 - 2);\n        pvVar8 = pvVar7;\n      } while (*pcVar10 == '\\');\n      sVar5 = sVar5 - ((int)pvVar6 - (int)pvVar7 & 1U);\n    }" { (do_statement "do {\n        pvVar7 = (void *)((int)pvVar8 - 1);\n        if (param_1 == pvVar7) {\n          sVar5 = sVar5 - ((int)pvVar6 - (int)param_1 & 1U);\n          goto LAB_0001e130;\n        }\n        pcVar10 = (char *)((int)pvVar8 - 2);\n        pvVar8 = pvVar7;\n      } while (*pcVar10 == '\\');" do (compound_statement "{\n        pvVar7 = (void *)((int)pvVar8 - 1);\n        if (param_1 == pvVar7) {\n          sVar5 = sVar5 - ((int)pvVar6 - (int)param_1 & 1U);\n          goto LAB_0001e130;\n        }\n        pcVar10 = (char *)((int)pvVar8 - 2);\n        pvVar8 = pvVar7;\n      }" { (expression_statement "pvVar7 = (void *)((int)pvVar8 - 1);" (assignment_expression "pvVar7 = (void *)((int)pvVar8 - 1)" identifier = (cast_expression "(void *)((int)pvVar8 - 1)" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)pvVar8 - 1)" ( (binary_expression "(int)pvVar8 - 1" (cast_expression "(int)pvVar8" ( (type_descriptor "int" primitive_type) ) identifier) - number_literal) )))) ;) (if_statement "if (param_1 == pvVar7) {\n          sVar5 = sVar5 - ((int)pvVar6 - (int)param_1 & 1U);\n          goto LAB_0001e130;\n        }" if (parenthesized_expression "(param_1 == pvVar7)" ( (binary_expression "param_1 == pvVar7" identifier == identifier) )) (compound_statement "{\n          sVar5 = sVar5 - ((int)pvVar6 - (int)param_1 & 1U);\n          goto LAB_0001e130;\n        }" { (expression_statement "sVar5 = sVar5 - ((int)pvVar6 - (int)param_1 & 1U);" (assignment_expression "sVar5 = sVar5 - ((int)pvVar6 - (int)param_1 & 1U)" identifier = (binary_expression "sVar5 - ((int)pvVar6 - (int)param_1 & 1U)" identifier - (parenthesized_expression "((int)pvVar6 - (int)param_1 & 1U)" ( (binary_expression "(int)pvVar6 - (int)param_1 & 1U" (binary_expression "(int)pvVar6 - (int)param_1" (cast_expression "(int)pvVar6" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)param_1" ( (type_descriptor "int" primitive_type) ) identifier)) & number_literal) )))) ;) (goto_statement "goto LAB_0001e130;" goto statement_identifier ;) })) (expression_statement "pcVar10 = (char *)((int)pvVar8 - 2);" (assignment_expression "pcVar10 = (char *)((int)pvVar8 - 2)" identifier = (cast_expression "(char *)((int)pvVar8 - 2)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)pvVar8 - 2)" ( (binary_expression "(int)pvVar8 - 2" (cast_expression "(int)pvVar8" ( (type_descriptor "int" primitive_type) ) identifier) - number_literal) )))) ;) (expression_statement "pvVar8 = pvVar7;" (assignment_expression "pvVar8 = pvVar7" identifier = identifier) ;) }) while (parenthesized_expression "(*pcVar10 == '\\')" ( (binary_expression "*pcVar10 == '\\'" (pointer_expression "*pcVar10" * identifier) == (char_literal "'\\'" ' escape_sequence ')) )) ;) (expression_statement "sVar5 = sVar5 - ((int)pvVar6 - (int)pvVar7 & 1U);" (assignment_expression "sVar5 = sVar5 - ((int)pvVar6 - (int)pvVar7 & 1U)" identifier = (binary_expression "sVar5 - ((int)pvVar6 - (int)pvVar7 & 1U)" identifier - (parenthesized_expression "((int)pvVar6 - (int)pvVar7 & 1U)" ( (binary_expression "(int)pvVar6 - (int)pvVar7 & 1U" (binary_expression "(int)pvVar6 - (int)pvVar7" (cast_expression "(int)pvVar6" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)pvVar7" ( (type_descriptor "int" primitive_type) ) identifier)) & number_literal) )))) ;) })) (labeled_statement "LAB_0001e130:\n    pvVar8 = (void *)((int)pvVar6 + 1);" statement_identifier : (expression_statement "pvVar8 = (void *)((int)pvVar6 + 1);" (assignment_expression "pvVar8 = (void *)((int)pvVar6 + 1)" identifier = (cast_expression "(void *)((int)pvVar6 + 1)" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)pvVar6 + 1)" ( (binary_expression "(int)pvVar6 + 1" (cast_expression "(int)pvVar6" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;)) (expression_statement "builtin_strncpy(__dest + sVar5,"\\000",5);" (call_expression "builtin_strncpy(__dest + sVar5,"\\000",5)" identifier (argument_list "(__dest + sVar5,"\\000",5)" ( (binary_expression "__dest + sVar5" identifier + identifier) , (string_literal ""\\000"" " escape_sequence string_content ") , number_literal ))) ;) (expression_statement "__dest = __dest + sVar5 + 4;" (assignment_expression "__dest = __dest + sVar5 + 4" identifier = (binary_expression "__dest + sVar5 + 4" (binary_expression "__dest + sVar5" identifier + identifier) + number_literal)) ;) }) while (parenthesized_expression "( true )" ( true )) ;) })))
(translation_unit "/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */\n/* WARNING: Unknown calling convention */\n\nvoid * Pcompile(char *pattern,size_t size,reg_syntax_t ignored)\n\n{\n  char *pcVar1;\n  int iVar2;\n  _Bool _Var3;\n  _Bool _Var4;\n  size_t n;\n  char *__s;\n  int *piVar5;\n  void *pvVar6;\n  size_t sVar7;\n  char *pcVar8;\n  char *pcVar9;\n  undefined4 uVar10;\n  int iVar11;\n  undefined4 extraout_ECX;\n  char *__dest;\n  char *pcVar12;\n  int in_GS_OFFSET;\n  bool bVar13;\n  bool bVar14;\n  undefined8 uVar15;\n  int local_4e4;\n  int e;\n  char *ep;\n  int sub [300];\n  \n  iVar2 = *(int *)(in_GS_OFFSET + 0x14);\n  n = (size + 5) * 4;\n  if (((int)n < 0) || (size + 5 >> 0x1e != 0)) {\n                    /* WARNING: Subroutine does not return */\n    xalloc_die();\n  }\n  __s = (char *)xmalloc(n);\n  bVar13 = match_icase == false;\n  bVar14 = match_icase == false;\n  piVar5 = (int *)xcalloc(1,0x18);\n  local_4e4 = 0x21 - (uint)bVar14;\n  if ((localeinfo.multibyte != false) &&\n     (local_4e4 = 0x821 - (uint)bVar13, localeinfo.using_utf8 == false)) {\n    uVar10 = dcgettext(0,"-P supports only unibyte and UTF-8 locales",5,size);\n                    /* WARNING: Subroutine does not return */\n    error(2,0,uVar10);\n  }\n  pvVar6 = rpl_memchr(pattern,10,size);\n  if (pvVar6 != (void *)0x0) {\n    uVar10 = dcgettext(0,"the -P option only supports a single pattern",5,extraout_ECX);\n                    /* WARNING: Subroutine does not return */\n    error(2,0,uVar10);\n  }\n  *__s = '\0';\n  _Var3 = match_words;\n  if (match_words != false) {\n    *(undefined4 *)__s = Pcompile::wprefix._0_4_;\n    *(undefined4 *)(__s + 4) = Pcompile::wprefix._4_4_;\n    *(undefined2 *)(__s + 8) = Pcompile::wprefix._8_2_;\n    __s[10] = Pcompile::wprefix[10];\n  }\n  _Var4 = match_lines;\n  if (match_lines != false) {\n    *(undefined4 *)__s = Pcompile::xprefix._0_4_;\n    __s[4] = Pcompile::xprefix[4];\n  }\n  sVar7 = strlen(__s);\n  __dest = __s + sVar7;\n  pcVar9 = pattern;\n  do {\n    pcVar12 = pattern + (size - (int)pcVar9);\n    pcVar8 = (char *)rpl_memchr(pcVar9,0,(size_t)pcVar12);\n    if (pcVar8 == (char *)0x0) {\n      pcVar8 = __dest + (int)pcVar12;\n      memcpy(__dest,pcVar9,(size_t)pcVar12);\n      uVar10 = Pcompile::wsuffix._4_4_;\n      if (_Var3 == false) {\n        *pcVar8 = '\0';\n      }\n      else {\n        *(undefined4 *)pcVar8 = Pcompile::wsuffix._0_4_;\n        *(undefined4 *)(pcVar8 + 4) = uVar10;\n      }\n      if (_Var4 != false) {\n        *(undefined2 *)pcVar8 = Pcompile::xsuffix._0_2_;\n        pcVar8[2] = Pcompile::xsuffix[2];\n      }\n      uVar10 = pcre_maketables();\n      iVar11 = pcre_compile(__s,local_4e4,&ep,&e,uVar10);\n      *piVar5 = iVar11;\n      if (iVar11 == 0) {\n                    /* WARNING: Subroutine does not return */\n        error(2,0,&DAT_0003ac56,ep);\n      }\n      iVar11 = pcre_study(iVar11,9,&ep);\n      piVar5[1] = iVar11;\n      if (ep != (char *)0x0) {\n                    /* WARNING: Subroutine does not return */\n        error(2,0,&DAT_0003ac56,ep);\n      }\n      uVar15 = pcre_fullinfo(*piVar5,iVar11,0x10,&e);\n      if ((int)uVar15 != 0) {\n        uVar10 = dcgettext(0,"internal error (should never happen)",5,\n                           (int)((ulonglong)uVar15 >> 0x20));\n                    /* WARNING: Subroutine does not return */\n        error(2,0,uVar10);\n      }\n      if (e != 0) {\n        piVar5[3] = 0x8000;\n      }\n      free(__s);\n      iVar11 = pcre_exec(*piVar5,piVar5[1],"",0,0,0x80,sub,300);\n      piVar5[4] = iVar11;\n      iVar11 = pcre_exec(*piVar5,piVar5[1],"",0,0,0,sub,300);\n      piVar5[5] = iVar11;\n      if (iVar2 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    /* WARNING: Subroutine does not return */\n        __stack_chk_fail_local();\n      }\n      return piVar5;\n    }\n    sVar7 = (int)pcVar8 - (int)pcVar9;\n    memcpy(__dest,pcVar9,sVar7);\n    if ((pattern < pcVar8) && (pcVar9 = pcVar8, pcVar8[-1] == '\\')) {\n      do {\n        pcVar12 = pcVar9 + -1;\n        if (pattern == pcVar12) {\n          sVar7 = sVar7 - ((int)pcVar8 - (int)pattern & 1U);\n          goto LAB_0001e130;\n        }\n        pcVar1 = pcVar9 + -2;\n        pcVar9 = pcVar12;\n      } while (*pcVar1 == '\\');\n      sVar7 = sVar7 - ((int)pcVar8 - (int)pcVar12 & 1U);\n    }\nLAB_0001e130:\n    pcVar9 = pcVar8 + 1;\n    builtin_strncpy(__dest + sVar7,"\\000",5);\n    __dest = __dest + sVar7 + 4;\n  } while( true );\n}\n\n" comment comment (function_definition "void * Pcompile(char *pattern,size_t size,reg_syntax_t ignored)\n\n{\n  char *pcVar1;\n  int iVar2;\n  _Bool _Var3;\n  _Bool _Var4;\n  size_t n;\n  char *__s;\n  int *piVar5;\n  void *pvVar6;\n  size_t sVar7;\n  char *pcVar8;\n  char *pcVar9;\n  undefined4 uVar10;\n  int iVar11;\n  undefined4 extraout_ECX;\n  char *__dest;\n  char *pcVar12;\n  int in_GS_OFFSET;\n  bool bVar13;\n  bool bVar14;\n  undefined8 uVar15;\n  int local_4e4;\n  int e;\n  char *ep;\n  int sub [300];\n  \n  iVar2 = *(int *)(in_GS_OFFSET + 0x14);\n  n = (size + 5) * 4;\n  if (((int)n < 0) || (size + 5 >> 0x1e != 0)) {\n                    /* WARNING: Subroutine does not return */\n    xalloc_die();\n  }\n  __s = (char *)xmalloc(n);\n  bVar13 = match_icase == false;\n  bVar14 = match_icase == false;\n  piVar5 = (int *)xcalloc(1,0x18);\n  local_4e4 = 0x21 - (uint)bVar14;\n  if ((localeinfo.multibyte != false) &&\n     (local_4e4 = 0x821 - (uint)bVar13, localeinfo.using_utf8 == false)) {\n    uVar10 = dcgettext(0,"-P supports only unibyte and UTF-8 locales",5,size);\n                    /* WARNING: Subroutine does not return */\n    error(2,0,uVar10);\n  }\n  pvVar6 = rpl_memchr(pattern,10,size);\n  if (pvVar6 != (void *)0x0) {\n    uVar10 = dcgettext(0,"the -P option only supports a single pattern",5,extraout_ECX);\n                    /* WARNING: Subroutine does not return */\n    error(2,0,uVar10);\n  }\n  *__s = '\0';\n  _Var3 = match_words;\n  if (match_words != false) {\n    *(undefined4 *)__s = Pcompile::wprefix._0_4_;\n    *(undefined4 *)(__s + 4) = Pcompile::wprefix._4_4_;\n    *(undefined2 *)(__s + 8) = Pcompile::wprefix._8_2_;\n    __s[10] = Pcompile::wprefix[10];\n  }\n  _Var4 = match_lines;\n  if (match_lines != false) {\n    *(undefined4 *)__s = Pcompile::xprefix._0_4_;\n    __s[4] = Pcompile::xprefix[4];\n  }\n  sVar7 = strlen(__s);\n  __dest = __s + sVar7;\n  pcVar9 = pattern;\n  do {\n    pcVar12 = pattern + (size - (int)pcVar9);\n    pcVar8 = (char *)rpl_memchr(pcVar9,0,(size_t)pcVar12);\n    if (pcVar8 == (char *)0x0) {\n      pcVar8 = __dest + (int)pcVar12;\n      memcpy(__dest,pcVar9,(size_t)pcVar12);\n      uVar10 = Pcompile::wsuffix._4_4_;\n      if (_Var3 == false) {\n        *pcVar8 = '\0';\n      }\n      else {\n        *(undefined4 *)pcVar8 = Pcompile::wsuffix._0_4_;\n        *(undefined4 *)(pcVar8 + 4) = uVar10;\n      }\n      if (_Var4 != false) {\n        *(undefined2 *)pcVar8 = Pcompile::xsuffix._0_2_;\n        pcVar8[2] = Pcompile::xsuffix[2];\n      }\n      uVar10 = pcre_maketables();\n      iVar11 = pcre_compile(__s,local_4e4,&ep,&e,uVar10);\n      *piVar5 = iVar11;\n      if (iVar11 == 0) {\n                    /* WARNING: Subroutine does not return */\n        error(2,0,&DAT_0003ac56,ep);\n      }\n      iVar11 = pcre_study(iVar11,9,&ep);\n      piVar5[1] = iVar11;\n      if (ep != (char *)0x0) {\n                    /* WARNING: Subroutine does not return */\n        error(2,0,&DAT_0003ac56,ep);\n      }\n      uVar15 = pcre_fullinfo(*piVar5,iVar11,0x10,&e);\n      if ((int)uVar15 != 0) {\n        uVar10 = dcgettext(0,"internal error (should never happen)",5,\n                           (int)((ulonglong)uVar15 >> 0x20));\n                    /* WARNING: Subroutine does not return */\n        error(2,0,uVar10);\n      }\n      if (e != 0) {\n        piVar5[3] = 0x8000;\n      }\n      free(__s);\n      iVar11 = pcre_exec(*piVar5,piVar5[1],"",0,0,0x80,sub,300);\n      piVar5[4] = iVar11;\n      iVar11 = pcre_exec(*piVar5,piVar5[1],"",0,0,0,sub,300);\n      piVar5[5] = iVar11;\n      if (iVar2 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    /* WARNING: Subroutine does not return */\n        __stack_chk_fail_local();\n      }\n      return piVar5;\n    }\n    sVar7 = (int)pcVar8 - (int)pcVar9;\n    memcpy(__dest,pcVar9,sVar7);\n    if ((pattern < pcVar8) && (pcVar9 = pcVar8, pcVar8[-1] == '\\')) {\n      do {\n        pcVar12 = pcVar9 + -1;\n        if (pattern == pcVar12) {\n          sVar7 = sVar7 - ((int)pcVar8 - (int)pattern & 1U);\n          goto LAB_0001e130;\n        }\n        pcVar1 = pcVar9 + -2;\n        pcVar9 = pcVar12;\n      } while (*pcVar1 == '\\');\n      sVar7 = sVar7 - ((int)pcVar8 - (int)pcVar12 & 1U);\n    }\nLAB_0001e130:\n    pcVar9 = pcVar8 + 1;\n    builtin_strncpy(__dest + sVar7,"\\000",5);\n    __dest = __dest + sVar7 + 4;\n  } while( true );\n}" primitive_type (pointer_declarator "* Pcompile(char *pattern,size_t size,reg_syntax_t ignored)" * (function_declarator "Pcompile(char *pattern,size_t size,reg_syntax_t ignored)" identifier (parameter_list "(char *pattern,size_t size,reg_syntax_t ignored)" ( (parameter_declaration "char *pattern" primitive_type (pointer_declarator "*pattern" * identifier)) , (parameter_declaration "size_t size" primitive_type identifier) , (parameter_declaration "reg_syntax_t ignored" type_identifier identifier) )))) (compound_statement "{\n  char *pcVar1;\n  int iVar2;\n  _Bool _Var3;\n  _Bool _Var4;\n  size_t n;\n  char *__s;\n  int *piVar5;\n  void *pvVar6;\n  size_t sVar7;\n  char *pcVar8;\n  char *pcVar9;\n  undefined4 uVar10;\n  int iVar11;\n  undefined4 extraout_ECX;\n  char *__dest;\n  char *pcVar12;\n  int in_GS_OFFSET;\n  bool bVar13;\n  bool bVar14;\n  undefined8 uVar15;\n  int local_4e4;\n  int e;\n  char *ep;\n  int sub [300];\n  \n  iVar2 = *(int *)(in_GS_OFFSET + 0x14);\n  n = (size + 5) * 4;\n  if (((int)n < 0) || (size + 5 >> 0x1e != 0)) {\n                    /* WARNING: Subroutine does not return */\n    xalloc_die();\n  }\n  __s = (char *)xmalloc(n);\n  bVar13 = match_icase == false;\n  bVar14 = match_icase == false;\n  piVar5 = (int *)xcalloc(1,0x18);\n  local_4e4 = 0x21 - (uint)bVar14;\n  if ((localeinfo.multibyte != false) &&\n     (local_4e4 = 0x821 - (uint)bVar13, localeinfo.using_utf8 == false)) {\n    uVar10 = dcgettext(0,"-P supports only unibyte and UTF-8 locales",5,size);\n                    /* WARNING: Subroutine does not return */\n    error(2,0,uVar10);\n  }\n  pvVar6 = rpl_memchr(pattern,10,size);\n  if (pvVar6 != (void *)0x0) {\n    uVar10 = dcgettext(0,"the -P option only supports a single pattern",5,extraout_ECX);\n                    /* WARNING: Subroutine does not return */\n    error(2,0,uVar10);\n  }\n  *__s = '\0';\n  _Var3 = match_words;\n  if (match_words != false) {\n    *(undefined4 *)__s = Pcompile::wprefix._0_4_;\n    *(undefined4 *)(__s + 4) = Pcompile::wprefix._4_4_;\n    *(undefined2 *)(__s + 8) = Pcompile::wprefix._8_2_;\n    __s[10] = Pcompile::wprefix[10];\n  }\n  _Var4 = match_lines;\n  if (match_lines != false) {\n    *(undefined4 *)__s = Pcompile::xprefix._0_4_;\n    __s[4] = Pcompile::xprefix[4];\n  }\n  sVar7 = strlen(__s);\n  __dest = __s + sVar7;\n  pcVar9 = pattern;\n  do {\n    pcVar12 = pattern + (size - (int)pcVar9);\n    pcVar8 = (char *)rpl_memchr(pcVar9,0,(size_t)pcVar12);\n    if (pcVar8 == (char *)0x0) {\n      pcVar8 = __dest + (int)pcVar12;\n      memcpy(__dest,pcVar9,(size_t)pcVar12);\n      uVar10 = Pcompile::wsuffix._4_4_;\n      if (_Var3 == false) {\n        *pcVar8 = '\0';\n      }\n      else {\n        *(undefined4 *)pcVar8 = Pcompile::wsuffix._0_4_;\n        *(undefined4 *)(pcVar8 + 4) = uVar10;\n      }\n      if (_Var4 != false) {\n        *(undefined2 *)pcVar8 = Pcompile::xsuffix._0_2_;\n        pcVar8[2] = Pcompile::xsuffix[2];\n      }\n      uVar10 = pcre_maketables();\n      iVar11 = pcre_compile(__s,local_4e4,&ep,&e,uVar10);\n      *piVar5 = iVar11;\n      if (iVar11 == 0) {\n                    /* WARNING: Subroutine does not return */\n        error(2,0,&DAT_0003ac56,ep);\n      }\n      iVar11 = pcre_study(iVar11,9,&ep);\n      piVar5[1] = iVar11;\n      if (ep != (char *)0x0) {\n                    /* WARNING: Subroutine does not return */\n        error(2,0,&DAT_0003ac56,ep);\n      }\n      uVar15 = pcre_fullinfo(*piVar5,iVar11,0x10,&e);\n      if ((int)uVar15 != 0) {\n        uVar10 = dcgettext(0,"internal error (should never happen)",5,\n                           (int)((ulonglong)uVar15 >> 0x20));\n                    /* WARNING: Subroutine does not return */\n        error(2,0,uVar10);\n      }\n      if (e != 0) {\n        piVar5[3] = 0x8000;\n      }\n      free(__s);\n      iVar11 = pcre_exec(*piVar5,piVar5[1],"",0,0,0x80,sub,300);\n      piVar5[4] = iVar11;\n      iVar11 = pcre_exec(*piVar5,piVar5[1],"",0,0,0,sub,300);\n      piVar5[5] = iVar11;\n      if (iVar2 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    /* WARNING: Subroutine does not return */\n        __stack_chk_fail_local();\n      }\n      return piVar5;\n    }\n    sVar7 = (int)pcVar8 - (int)pcVar9;\n    memcpy(__dest,pcVar9,sVar7);\n    if ((pattern < pcVar8) && (pcVar9 = pcVar8, pcVar8[-1] == '\\')) {\n      do {\n        pcVar12 = pcVar9 + -1;\n        if (pattern == pcVar12) {\n          sVar7 = sVar7 - ((int)pcVar8 - (int)pattern & 1U);\n          goto LAB_0001e130;\n        }\n        pcVar1 = pcVar9 + -2;\n        pcVar9 = pcVar12;\n      } while (*pcVar1 == '\\');\n      sVar7 = sVar7 - ((int)pcVar8 - (int)pcVar12 & 1U);\n    }\nLAB_0001e130:\n    pcVar9 = pcVar8 + 1;\n    builtin_strncpy(__dest + sVar7,"\\000",5);\n    __dest = __dest + sVar7 + 4;\n  } while( true );\n}" { (declaration "char *pcVar1;" primitive_type (pointer_declarator "*pcVar1" * identifier) ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "_Bool _Var3;" type_identifier identifier ;) (declaration "_Bool _Var4;" type_identifier identifier ;) (declaration "size_t n;" primitive_type identifier ;) (declaration "char *__s;" primitive_type (pointer_declarator "*__s" * identifier) ;) (declaration "int *piVar5;" primitive_type (pointer_declarator "*piVar5" * identifier) ;) (declaration "void *pvVar6;" primitive_type (pointer_declarator "*pvVar6" * identifier) ;) (declaration "size_t sVar7;" primitive_type identifier ;) (declaration "char *pcVar8;" primitive_type (pointer_declarator "*pcVar8" * identifier) ;) (declaration "char *pcVar9;" primitive_type (pointer_declarator "*pcVar9" * identifier) ;) (declaration "undefined4 uVar10;" type_identifier identifier ;) (declaration "int iVar11;" primitive_type identifier ;) (declaration "undefined4 extraout_ECX;" type_identifier identifier ;) (declaration "char *__dest;" primitive_type (pointer_declarator "*__dest" * identifier) ;) (declaration "char *pcVar12;" primitive_type (pointer_declarator "*pcVar12" * identifier) ;) (declaration "int in_GS_OFFSET;" primitive_type identifier ;) (declaration "bool bVar13;" primitive_type identifier ;) (declaration "bool bVar14;" primitive_type identifier ;) (declaration "undefined8 uVar15;" type_identifier identifier ;) (declaration "int local_4e4;" primitive_type identifier ;) (declaration "int e;" primitive_type identifier ;) (declaration "char *ep;" primitive_type (pointer_declarator "*ep" * identifier) ;) (declaration "int sub [300];" primitive_type (array_declarator "sub [300]" identifier [ number_literal ]) ;) (expression_statement "iVar2 = *(int *)(in_GS_OFFSET + 0x14);" (assignment_expression "iVar2 = *(int *)(in_GS_OFFSET + 0x14)" identifier = (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" * (cast_expression "(int *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) ;) (expression_statement "n = (size + 5) * 4;" (assignment_expression "n = (size + 5) * 4" identifier = (binary_expression "(size + 5) * 4" (parenthesized_expression "(size + 5)" ( (binary_expression "size + 5" identifier + number_literal) )) * number_literal)) ;) (if_statement "if (((int)n < 0) || (size + 5 >> 0x1e != 0)) {\n                    /* WARNING: Subroutine does not return */\n    xalloc_die();\n  }" if (parenthesized_expression "(((int)n < 0) || (size + 5 >> 0x1e != 0))" ( (binary_expression "((int)n < 0) || (size + 5 >> 0x1e != 0)" (parenthesized_expression "((int)n < 0)" ( (binary_expression "(int)n < 0" (cast_expression "(int)n" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) || (parenthesized_expression "(size + 5 >> 0x1e != 0)" ( (binary_expression "size + 5 >> 0x1e != 0" (binary_expression "size + 5 >> 0x1e" (binary_expression "size + 5" identifier + number_literal) >> number_literal) != number_literal) ))) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n    xalloc_die();\n  }" { comment (expression_statement "xalloc_die();" (call_expression "xalloc_die()" identifier (argument_list "()" ( ))) ;) })) (expression_statement "__s = (char *)xmalloc(n);" (assignment_expression "__s = (char *)xmalloc(n)" identifier = (cast_expression "(char *)xmalloc(n)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "xmalloc(n)" identifier (argument_list "(n)" ( identifier ))))) ;) (expression_statement "bVar13 = match_icase == false;" (assignment_expression "bVar13 = match_icase == false" identifier = (binary_expression "match_icase == false" identifier == false)) ;) (expression_statement "bVar14 = match_icase == false;" (assignment_expression "bVar14 = match_icase == false" identifier = (binary_expression "match_icase == false" identifier == false)) ;) (expression_statement "piVar5 = (int *)xcalloc(1,0x18);" (assignment_expression "piVar5 = (int *)xcalloc(1,0x18)" identifier = (cast_expression "(int *)xcalloc(1,0x18)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "xcalloc(1,0x18)" identifier (argument_list "(1,0x18)" ( number_literal , number_literal ))))) ;) (expression_statement "local_4e4 = 0x21 - (uint)bVar14;" (assignment_expression "local_4e4 = 0x21 - (uint)bVar14" identifier = (binary_expression "0x21 - (uint)bVar14" number_literal - (cast_expression "(uint)bVar14" ( (type_descriptor "uint" type_identifier) ) identifier))) ;) (if_statement "if ((localeinfo.multibyte != false) &&\n     (local_4e4 = 0x821 - (uint)bVar13, localeinfo.using_utf8 == false)) {\n    uVar10 = dcgettext(0,"-P supports only unibyte and UTF-8 locales",5,size);\n                    /* WARNING: Subroutine does not return */\n    error(2,0,uVar10);\n  }" if (parenthesized_expression "((localeinfo.multibyte != false) &&\n     (local_4e4 = 0x821 - (uint)bVar13, localeinfo.using_utf8 == false))" ( (binary_expression "(localeinfo.multibyte != false) &&\n     (local_4e4 = 0x821 - (uint)bVar13, localeinfo.using_utf8 == false)" (parenthesized_expression "(localeinfo.multibyte != false)" ( (binary_expression "localeinfo.multibyte != false" (field_expression "localeinfo.multibyte" identifier . field_identifier) != false) )) && (parenthesized_expression "(local_4e4 = 0x821 - (uint)bVar13, localeinfo.using_utf8 == false)" ( (comma_expression "local_4e4 = 0x821 - (uint)bVar13, localeinfo.using_utf8 == false" (assignment_expression "local_4e4 = 0x821 - (uint)bVar13" identifier = (binary_expression "0x821 - (uint)bVar13" number_literal - (cast_expression "(uint)bVar13" ( (type_descriptor "uint" type_identifier) ) identifier))) , (binary_expression "localeinfo.using_utf8 == false" (field_expression "localeinfo.using_utf8" identifier . field_identifier) == false)) ))) )) (compound_statement "{\n    uVar10 = dcgettext(0,"-P supports only unibyte and UTF-8 locales",5,size);\n                    /* WARNING: Subroutine does not return */\n    error(2,0,uVar10);\n  }" { (expression_statement "uVar10 = dcgettext(0,"-P supports only unibyte and UTF-8 locales",5,size);" (assignment_expression "uVar10 = dcgettext(0,"-P supports only unibyte and UTF-8 locales",5,size)" identifier = (call_expression "dcgettext(0,"-P supports only unibyte and UTF-8 locales",5,size)" identifier (argument_list "(0,"-P supports only unibyte and UTF-8 locales",5,size)" ( number_literal , (string_literal ""-P supports only unibyte and UTF-8 locales"" " string_content ") , number_literal , identifier )))) ;) comment (expression_statement "error(2,0,uVar10);" (call_expression "error(2,0,uVar10)" identifier (argument_list "(2,0,uVar10)" ( number_literal , number_literal , identifier ))) ;) })) (expression_statement "pvVar6 = rpl_memchr(pattern,10,size);" (assignment_expression "pvVar6 = rpl_memchr(pattern,10,size)" identifier = (call_expression "rpl_memchr(pattern,10,size)" identifier (argument_list "(pattern,10,size)" ( identifier , number_literal , identifier )))) ;) (if_statement "if (pvVar6 != (void *)0x0) {\n    uVar10 = dcgettext(0,"the -P option only supports a single pattern",5,extraout_ECX);\n                    /* WARNING: Subroutine does not return */\n    error(2,0,uVar10);\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    uVar10 = dcgettext(0,"the -P option only supports a single pattern",5,extraout_ECX);\n                    /* WARNING: Subroutine does not return */\n    error(2,0,uVar10);\n  }" { (expression_statement "uVar10 = dcgettext(0,"the -P option only supports a single pattern",5,extraout_ECX);" (assignment_expression "uVar10 = dcgettext(0,"the -P option only supports a single pattern",5,extraout_ECX)" identifier = (call_expression "dcgettext(0,"the -P option only supports a single pattern",5,extraout_ECX)" identifier (argument_list "(0,"the -P option only supports a single pattern",5,extraout_ECX)" ( number_literal , (string_literal ""the -P option only supports a single pattern"" " string_content ") , number_literal , identifier )))) ;) comment (expression_statement "error(2,0,uVar10);" (call_expression "error(2,0,uVar10)" identifier (argument_list "(2,0,uVar10)" ( number_literal , number_literal , identifier ))) ;) })) (expression_statement "*__s = '\0';" (assignment_expression "*__s = '\0'" (pointer_expression "*__s" * identifier) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "_Var3 = match_words;" (assignment_expression "_Var3 = match_words" identifier = identifier) ;) (if_statement "if (match_words != false) {\n    *(undefined4 *)__s = Pcompile::wprefix._0_4_;\n    *(undefined4 *)(__s + 4) = Pcompile::wprefix._4_4_;\n    *(undefined2 *)(__s + 8) = Pcompile::wprefix._8_2_;\n    __s[10] = Pcompile::wprefix[10];\n  }" if (parenthesized_expression "(match_words != false)" ( (binary_expression "match_words != false" identifier != false) )) (compound_statement "{\n    *(undefined4 *)__s = Pcompile::wprefix._0_4_;\n    *(undefined4 *)(__s + 4) = Pcompile::wprefix._4_4_;\n    *(undefined2 *)(__s + 8) = Pcompile::wprefix._8_2_;\n    __s[10] = Pcompile::wprefix[10];\n  }" { (expression_statement "*(undefined4 *)__s = Pcompile::wprefix._0_4_;" (field_expression "*(undefined4 *)__s = Pcompile::wprefix._0_4_" (assignment_expression "*(undefined4 *)__s = Pcompile" (pointer_expression "*(undefined4 *)__s" * (cast_expression "(undefined4 *)__s" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) = identifier) (ERROR "::wprefix" : : identifier) . field_identifier) ;) (expression_statement "*(undefined4 *)(__s + 4) = Pcompile::wprefix._4_4_;" (field_expression "*(undefined4 *)(__s + 4) = Pcompile::wprefix._4_4_" (assignment_expression "*(undefined4 *)(__s + 4) = Pcompile" (pointer_expression "*(undefined4 *)(__s + 4)" * (cast_expression "(undefined4 *)(__s + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(__s + 4)" ( (binary_expression "__s + 4" identifier + number_literal) )))) = identifier) (ERROR "::wprefix" : : identifier) . field_identifier) ;) (expression_statement "*(undefined2 *)(__s + 8) = Pcompile::wprefix._8_2_;" (field_expression "*(undefined2 *)(__s + 8) = Pcompile::wprefix._8_2_" (assignment_expression "*(undefined2 *)(__s + 8) = Pcompile" (pointer_expression "*(undefined2 *)(__s + 8)" * (cast_expression "(undefined2 *)(__s + 8)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(__s + 8)" ( (binary_expression "__s + 8" identifier + number_literal) )))) = identifier) (ERROR "::wprefix" : : identifier) . field_identifier) ;) (expression_statement "__s[10] = Pcompile::wprefix[10];" (subscript_expression "__s[10] = Pcompile::wprefix[10]" (assignment_expression "__s[10] = Pcompile" (subscript_expression "__s[10]" identifier [ number_literal ]) = identifier) (ERROR "::wprefix" : : identifier) [ number_literal ]) ;) })) (expression_statement "_Var4 = match_lines;" (assignment_expression "_Var4 = match_lines" identifier = identifier) ;) (if_statement "if (match_lines != false) {\n    *(undefined4 *)__s = Pcompile::xprefix._0_4_;\n    __s[4] = Pcompile::xprefix[4];\n  }" if (parenthesized_expression "(match_lines != false)" ( (binary_expression "match_lines != false" identifier != false) )) (compound_statement "{\n    *(undefined4 *)__s = Pcompile::xprefix._0_4_;\n    __s[4] = Pcompile::xprefix[4];\n  }" { (expression_statement "*(undefined4 *)__s = Pcompile::xprefix._0_4_;" (field_expression "*(undefined4 *)__s = Pcompile::xprefix._0_4_" (assignment_expression "*(undefined4 *)__s = Pcompile" (pointer_expression "*(undefined4 *)__s" * (cast_expression "(undefined4 *)__s" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) = identifier) (ERROR "::xprefix" : : identifier) . field_identifier) ;) (expression_statement "__s[4] = Pcompile::xprefix[4];" (subscript_expression "__s[4] = Pcompile::xprefix[4]" (assignment_expression "__s[4] = Pcompile" (subscript_expression "__s[4]" identifier [ number_literal ]) = identifier) (ERROR "::xprefix" : : identifier) [ number_literal ]) ;) })) (expression_statement "sVar7 = strlen(__s);" (assignment_expression "sVar7 = strlen(__s)" identifier = (call_expression "strlen(__s)" identifier (argument_list "(__s)" ( identifier )))) ;) (expression_statement "__dest = __s + sVar7;" (assignment_expression "__dest = __s + sVar7" identifier = (binary_expression "__s + sVar7" identifier + identifier)) ;) (expression_statement "pcVar9 = pattern;" (assignment_expression "pcVar9 = pattern" identifier = identifier) ;) (do_statement "do {\n    pcVar12 = pattern + (size - (int)pcVar9);\n    pcVar8 = (char *)rpl_memchr(pcVar9,0,(size_t)pcVar12);\n    if (pcVar8 == (char *)0x0) {\n      pcVar8 = __dest + (int)pcVar12;\n      memcpy(__dest,pcVar9,(size_t)pcVar12);\n      uVar10 = Pcompile::wsuffix._4_4_;\n      if (_Var3 == false) {\n        *pcVar8 = '\0';\n      }\n      else {\n        *(undefined4 *)pcVar8 = Pcompile::wsuffix._0_4_;\n        *(undefined4 *)(pcVar8 + 4) = uVar10;\n      }\n      if (_Var4 != false) {\n        *(undefined2 *)pcVar8 = Pcompile::xsuffix._0_2_;\n        pcVar8[2] = Pcompile::xsuffix[2];\n      }\n      uVar10 = pcre_maketables();\n      iVar11 = pcre_compile(__s,local_4e4,&ep,&e,uVar10);\n      *piVar5 = iVar11;\n      if (iVar11 == 0) {\n                    /* WARNING: Subroutine does not return */\n        error(2,0,&DAT_0003ac56,ep);\n      }\n      iVar11 = pcre_study(iVar11,9,&ep);\n      piVar5[1] = iVar11;\n      if (ep != (char *)0x0) {\n                    /* WARNING: Subroutine does not return */\n        error(2,0,&DAT_0003ac56,ep);\n      }\n      uVar15 = pcre_fullinfo(*piVar5,iVar11,0x10,&e);\n      if ((int)uVar15 != 0) {\n        uVar10 = dcgettext(0,"internal error (should never happen)",5,\n                           (int)((ulonglong)uVar15 >> 0x20));\n                    /* WARNING: Subroutine does not return */\n        error(2,0,uVar10);\n      }\n      if (e != 0) {\n        piVar5[3] = 0x8000;\n      }\n      free(__s);\n      iVar11 = pcre_exec(*piVar5,piVar5[1],"",0,0,0x80,sub,300);\n      piVar5[4] = iVar11;\n      iVar11 = pcre_exec(*piVar5,piVar5[1],"",0,0,0,sub,300);\n      piVar5[5] = iVar11;\n      if (iVar2 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    /* WARNING: Subroutine does not return */\n        __stack_chk_fail_local();\n      }\n      return piVar5;\n    }\n    sVar7 = (int)pcVar8 - (int)pcVar9;\n    memcpy(__dest,pcVar9,sVar7);\n    if ((pattern < pcVar8) && (pcVar9 = pcVar8, pcVar8[-1] == '\\')) {\n      do {\n        pcVar12 = pcVar9 + -1;\n        if (pattern == pcVar12) {\n          sVar7 = sVar7 - ((int)pcVar8 - (int)pattern & 1U);\n          goto LAB_0001e130;\n        }\n        pcVar1 = pcVar9 + -2;\n        pcVar9 = pcVar12;\n      } while (*pcVar1 == '\\');\n      sVar7 = sVar7 - ((int)pcVar8 - (int)pcVar12 & 1U);\n    }\nLAB_0001e130:\n    pcVar9 = pcVar8 + 1;\n    builtin_strncpy(__dest + sVar7,"\\000",5);\n    __dest = __dest + sVar7 + 4;\n  } while( true );" do (compound_statement "{\n    pcVar12 = pattern + (size - (int)pcVar9);\n    pcVar8 = (char *)rpl_memchr(pcVar9,0,(size_t)pcVar12);\n    if (pcVar8 == (char *)0x0) {\n      pcVar8 = __dest + (int)pcVar12;\n      memcpy(__dest,pcVar9,(size_t)pcVar12);\n      uVar10 = Pcompile::wsuffix._4_4_;\n      if (_Var3 == false) {\n        *pcVar8 = '\0';\n      }\n      else {\n        *(undefined4 *)pcVar8 = Pcompile::wsuffix._0_4_;\n        *(undefined4 *)(pcVar8 + 4) = uVar10;\n      }\n      if (_Var4 != false) {\n        *(undefined2 *)pcVar8 = Pcompile::xsuffix._0_2_;\n        pcVar8[2] = Pcompile::xsuffix[2];\n      }\n      uVar10 = pcre_maketables();\n      iVar11 = pcre_compile(__s,local_4e4,&ep,&e,uVar10);\n      *piVar5 = iVar11;\n      if (iVar11 == 0) {\n                    /* WARNING: Subroutine does not return */\n        error(2,0,&DAT_0003ac56,ep);\n      }\n      iVar11 = pcre_study(iVar11,9,&ep);\n      piVar5[1] = iVar11;\n      if (ep != (char *)0x0) {\n                    /* WARNING: Subroutine does not return */\n        error(2,0,&DAT_0003ac56,ep);\n      }\n      uVar15 = pcre_fullinfo(*piVar5,iVar11,0x10,&e);\n      if ((int)uVar15 != 0) {\n        uVar10 = dcgettext(0,"internal error (should never happen)",5,\n                           (int)((ulonglong)uVar15 >> 0x20));\n                    /* WARNING: Subroutine does not return */\n        error(2,0,uVar10);\n      }\n      if (e != 0) {\n        piVar5[3] = 0x8000;\n      }\n      free(__s);\n      iVar11 = pcre_exec(*piVar5,piVar5[1],"",0,0,0x80,sub,300);\n      piVar5[4] = iVar11;\n      iVar11 = pcre_exec(*piVar5,piVar5[1],"",0,0,0,sub,300);\n      piVar5[5] = iVar11;\n      if (iVar2 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    /* WARNING: Subroutine does not return */\n        __stack_chk_fail_local();\n      }\n      return piVar5;\n    }\n    sVar7 = (int)pcVar8 - (int)pcVar9;\n    memcpy(__dest,pcVar9,sVar7);\n    if ((pattern < pcVar8) && (pcVar9 = pcVar8, pcVar8[-1] == '\\')) {\n      do {\n        pcVar12 = pcVar9 + -1;\n        if (pattern == pcVar12) {\n          sVar7 = sVar7 - ((int)pcVar8 - (int)pattern & 1U);\n          goto LAB_0001e130;\n        }\n        pcVar1 = pcVar9 + -2;\n        pcVar9 = pcVar12;\n      } while (*pcVar1 == '\\');\n      sVar7 = sVar7 - ((int)pcVar8 - (int)pcVar12 & 1U);\n    }\nLAB_0001e130:\n    pcVar9 = pcVar8 + 1;\n    builtin_strncpy(__dest + sVar7,"\\000",5);\n    __dest = __dest + sVar7 + 4;\n  }" { (expression_statement "pcVar12 = pattern + (size - (int)pcVar9);" (assignment_expression "pcVar12 = pattern + (size - (int)pcVar9)" identifier = (binary_expression "pattern + (size - (int)pcVar9)" identifier + (parenthesized_expression "(size - (int)pcVar9)" ( (binary_expression "size - (int)pcVar9" identifier - (cast_expression "(int)pcVar9" ( (type_descriptor "int" primitive_type) ) identifier)) )))) ;) (expression_statement "pcVar8 = (char *)rpl_memchr(pcVar9,0,(size_t)pcVar12);" (assignment_expression "pcVar8 = (char *)rpl_memchr(pcVar9,0,(size_t)pcVar12)" identifier = (cast_expression "(char *)rpl_memchr(pcVar9,0,(size_t)pcVar12)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "rpl_memchr(pcVar9,0,(size_t)pcVar12)" identifier (argument_list "(pcVar9,0,(size_t)pcVar12)" ( identifier , number_literal , (cast_expression "(size_t)pcVar12" ( (type_descriptor "size_t" primitive_type) ) identifier) ))))) ;) (if_statement "if (pcVar8 == (char *)0x0) {\n      pcVar8 = __dest + (int)pcVar12;\n      memcpy(__dest,pcVar9,(size_t)pcVar12);\n      uVar10 = Pcompile::wsuffix._4_4_;\n      if (_Var3 == false) {\n        *pcVar8 = '\0';\n      }\n      else {\n        *(undefined4 *)pcVar8 = Pcompile::wsuffix._0_4_;\n        *(undefined4 *)(pcVar8 + 4) = uVar10;\n      }\n      if (_Var4 != false) {\n        *(undefined2 *)pcVar8 = Pcompile::xsuffix._0_2_;\n        pcVar8[2] = Pcompile::xsuffix[2];\n      }\n      uVar10 = pcre_maketables();\n      iVar11 = pcre_compile(__s,local_4e4,&ep,&e,uVar10);\n      *piVar5 = iVar11;\n      if (iVar11 == 0) {\n                    /* WARNING: Subroutine does not return */\n        error(2,0,&DAT_0003ac56,ep);\n      }\n      iVar11 = pcre_study(iVar11,9,&ep);\n      piVar5[1] = iVar11;\n      if (ep != (char *)0x0) {\n                    /* WARNING: Subroutine does not return */\n        error(2,0,&DAT_0003ac56,ep);\n      }\n      uVar15 = pcre_fullinfo(*piVar5,iVar11,0x10,&e);\n      if ((int)uVar15 != 0) {\n        uVar10 = dcgettext(0,"internal error (should never happen)",5,\n                           (int)((ulonglong)uVar15 >> 0x20));\n                    /* WARNING: Subroutine does not return */\n        error(2,0,uVar10);\n      }\n      if (e != 0) {\n        piVar5[3] = 0x8000;\n      }\n      free(__s);\n      iVar11 = pcre_exec(*piVar5,piVar5[1],"",0,0,0x80,sub,300);\n      piVar5[4] = iVar11;\n      iVar11 = pcre_exec(*piVar5,piVar5[1],"",0,0,0,sub,300);\n      piVar5[5] = iVar11;\n      if (iVar2 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    /* WARNING: Subroutine does not return */\n        __stack_chk_fail_local();\n      }\n      return piVar5;\n    }" if (parenthesized_expression "(pcVar8 == (char *)0x0)" ( (binary_expression "pcVar8 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      pcVar8 = __dest + (int)pcVar12;\n      memcpy(__dest,pcVar9,(size_t)pcVar12);\n      uVar10 = Pcompile::wsuffix._4_4_;\n      if (_Var3 == false) {\n        *pcVar8 = '\0';\n      }\n      else {\n        *(undefined4 *)pcVar8 = Pcompile::wsuffix._0_4_;\n        *(undefined4 *)(pcVar8 + 4) = uVar10;\n      }\n      if (_Var4 != false) {\n        *(undefined2 *)pcVar8 = Pcompile::xsuffix._0_2_;\n        pcVar8[2] = Pcompile::xsuffix[2];\n      }\n      uVar10 = pcre_maketables();\n      iVar11 = pcre_compile(__s,local_4e4,&ep,&e,uVar10);\n      *piVar5 = iVar11;\n      if (iVar11 == 0) {\n                    /* WARNING: Subroutine does not return */\n        error(2,0,&DAT_0003ac56,ep);\n      }\n      iVar11 = pcre_study(iVar11,9,&ep);\n      piVar5[1] = iVar11;\n      if (ep != (char *)0x0) {\n                    /* WARNING: Subroutine does not return */\n        error(2,0,&DAT_0003ac56,ep);\n      }\n      uVar15 = pcre_fullinfo(*piVar5,iVar11,0x10,&e);\n      if ((int)uVar15 != 0) {\n        uVar10 = dcgettext(0,"internal error (should never happen)",5,\n                           (int)((ulonglong)uVar15 >> 0x20));\n                    /* WARNING: Subroutine does not return */\n        error(2,0,uVar10);\n      }\n      if (e != 0) {\n        piVar5[3] = 0x8000;\n      }\n      free(__s);\n      iVar11 = pcre_exec(*piVar5,piVar5[1],"",0,0,0x80,sub,300);\n      piVar5[4] = iVar11;\n      iVar11 = pcre_exec(*piVar5,piVar5[1],"",0,0,0,sub,300);\n      piVar5[5] = iVar11;\n      if (iVar2 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    /* WARNING: Subroutine does not return */\n        __stack_chk_fail_local();\n      }\n      return piVar5;\n    }" { (expression_statement "pcVar8 = __dest + (int)pcVar12;" (assignment_expression "pcVar8 = __dest + (int)pcVar12" identifier = (binary_expression "__dest + (int)pcVar12" identifier + (cast_expression "(int)pcVar12" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (expression_statement "memcpy(__dest,pcVar9,(size_t)pcVar12);" (call_expression "memcpy(__dest,pcVar9,(size_t)pcVar12)" identifier (argument_list "(__dest,pcVar9,(size_t)pcVar12)" ( identifier , identifier , (cast_expression "(size_t)pcVar12" ( (type_descriptor "size_t" primitive_type) ) identifier) ))) ;) (expression_statement "uVar10 = Pcompile::wsuffix._4_4_;" (field_expression "uVar10 = Pcompile::wsuffix._4_4_" (assignment_expression "uVar10 = Pcompile" identifier = identifier) (ERROR "::wsuffix" : : identifier) . field_identifier) ;) (if_statement "if (_Var3 == false) {\n        *pcVar8 = '\0';\n      }\n      else {\n        *(undefined4 *)pcVar8 = Pcompile::wsuffix._0_4_;\n        *(undefined4 *)(pcVar8 + 4) = uVar10;\n      }" if (parenthesized_expression "(_Var3 == false)" ( (binary_expression "_Var3 == false" identifier == false) )) (compound_statement "{\n        *pcVar8 = '\0';\n      }" { (expression_statement "*pcVar8 = '\0';" (assignment_expression "*pcVar8 = '\0'" (pointer_expression "*pcVar8" * identifier) = (char_literal "'\0'" ' escape_sequence ')) ;) }) (else_clause "else {\n        *(undefined4 *)pcVar8 = Pcompile::wsuffix._0_4_;\n        *(undefined4 *)(pcVar8 + 4) = uVar10;\n      }" else (compound_statement "{\n        *(undefined4 *)pcVar8 = Pcompile::wsuffix._0_4_;\n        *(undefined4 *)(pcVar8 + 4) = uVar10;\n      }" { (expression_statement "*(undefined4 *)pcVar8 = Pcompile::wsuffix._0_4_;" (field_expression "*(undefined4 *)pcVar8 = Pcompile::wsuffix._0_4_" (assignment_expression "*(undefined4 *)pcVar8 = Pcompile" (pointer_expression "*(undefined4 *)pcVar8" * (cast_expression "(undefined4 *)pcVar8" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) = identifier) (ERROR "::wsuffix" : : identifier) . field_identifier) ;) (expression_statement "*(undefined4 *)(pcVar8 + 4) = uVar10;" (assignment_expression "*(undefined4 *)(pcVar8 + 4) = uVar10" (pointer_expression "*(undefined4 *)(pcVar8 + 4)" * (cast_expression "(undefined4 *)(pcVar8 + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar8 + 4)" ( (binary_expression "pcVar8 + 4" identifier + number_literal) )))) = identifier) ;) }))) (if_statement "if (_Var4 != false) {\n        *(undefined2 *)pcVar8 = Pcompile::xsuffix._0_2_;\n        pcVar8[2] = Pcompile::xsuffix[2];\n      }" if (parenthesized_expression "(_Var4 != false)" ( (binary_expression "_Var4 != false" identifier != false) )) (compound_statement "{\n        *(undefined2 *)pcVar8 = Pcompile::xsuffix._0_2_;\n        pcVar8[2] = Pcompile::xsuffix[2];\n      }" { (expression_statement "*(undefined2 *)pcVar8 = Pcompile::xsuffix._0_2_;" (field_expression "*(undefined2 *)pcVar8 = Pcompile::xsuffix._0_2_" (assignment_expression "*(undefined2 *)pcVar8 = Pcompile" (pointer_expression "*(undefined2 *)pcVar8" * (cast_expression "(undefined2 *)pcVar8" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) = identifier) (ERROR "::xsuffix" : : identifier) . field_identifier) ;) (expression_statement "pcVar8[2] = Pcompile::xsuffix[2];" (subscript_expression "pcVar8[2] = Pcompile::xsuffix[2]" (assignment_expression "pcVar8[2] = Pcompile" (subscript_expression "pcVar8[2]" identifier [ number_literal ]) = identifier) (ERROR "::xsuffix" : : identifier) [ number_literal ]) ;) })) (expression_statement "uVar10 = pcre_maketables();" (assignment_expression "uVar10 = pcre_maketables()" identifier = (call_expression "pcre_maketables()" identifier (argument_list "()" ( )))) ;) (expression_statement "iVar11 = pcre_compile(__s,local_4e4,&ep,&e,uVar10);" (assignment_expression "iVar11 = pcre_compile(__s,local_4e4,&ep,&e,uVar10)" identifier = (call_expression "pcre_compile(__s,local_4e4,&ep,&e,uVar10)" identifier (argument_list "(__s,local_4e4,&ep,&e,uVar10)" ( identifier , identifier , (pointer_expression "&ep" & identifier) , (pointer_expression "&e" & identifier) , identifier )))) ;) (expression_statement "*piVar5 = iVar11;" (assignment_expression "*piVar5 = iVar11" (pointer_expression "*piVar5" * identifier) = identifier) ;) (if_statement "if (iVar11 == 0) {\n                    /* WARNING: Subroutine does not return */\n        error(2,0,&DAT_0003ac56,ep);\n      }" if (parenthesized_expression "(iVar11 == 0)" ( (binary_expression "iVar11 == 0" identifier == number_literal) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n        error(2,0,&DAT_0003ac56,ep);\n      }" { comment (expression_statement "error(2,0,&DAT_0003ac56,ep);" (call_expression "error(2,0,&DAT_0003ac56,ep)" identifier (argument_list "(2,0,&DAT_0003ac56,ep)" ( number_literal , number_literal , (pointer_expression "&DAT_0003ac56" & identifier) , identifier ))) ;) })) (expression_statement "iVar11 = pcre_study(iVar11,9,&ep);" (assignment_expression "iVar11 = pcre_study(iVar11,9,&ep)" identifier = (call_expression "pcre_study(iVar11,9,&ep)" identifier (argument_list "(iVar11,9,&ep)" ( identifier , number_literal , (pointer_expression "&ep" & identifier) )))) ;) (expression_statement "piVar5[1] = iVar11;" (assignment_expression "piVar5[1] = iVar11" (subscript_expression "piVar5[1]" identifier [ number_literal ]) = identifier) ;) (if_statement "if (ep != (char *)0x0) {\n                    /* WARNING: Subroutine does not return */\n        error(2,0,&DAT_0003ac56,ep);\n      }" if (parenthesized_expression "(ep != (char *)0x0)" ( (binary_expression "ep != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n        error(2,0,&DAT_0003ac56,ep);\n      }" { comment (expression_statement "error(2,0,&DAT_0003ac56,ep);" (call_expression "error(2,0,&DAT_0003ac56,ep)" identifier (argument_list "(2,0,&DAT_0003ac56,ep)" ( number_literal , number_literal , (pointer_expression "&DAT_0003ac56" & identifier) , identifier ))) ;) })) (expression_statement "uVar15 = pcre_fullinfo(*piVar5,iVar11,0x10,&e);" (assignment_expression "uVar15 = pcre_fullinfo(*piVar5,iVar11,0x10,&e)" identifier = (call_expression "pcre_fullinfo(*piVar5,iVar11,0x10,&e)" identifier (argument_list "(*piVar5,iVar11,0x10,&e)" ( (pointer_expression "*piVar5" * identifier) , identifier , number_literal , (pointer_expression "&e" & identifier) )))) ;) (if_statement "if ((int)uVar15 != 0) {\n        uVar10 = dcgettext(0,"internal error (should never happen)",5,\n                           (int)((ulonglong)uVar15 >> 0x20));\n                    /* WARNING: Subroutine does not return */\n        error(2,0,uVar10);\n      }" if (parenthesized_expression "((int)uVar15 != 0)" ( (binary_expression "(int)uVar15 != 0" (cast_expression "(int)uVar15" ( (type_descriptor "int" primitive_type) ) identifier) != number_literal) )) (compound_statement "{\n        uVar10 = dcgettext(0,"internal error (should never happen)",5,\n                           (int)((ulonglong)uVar15 >> 0x20));\n                    /* WARNING: Subroutine does not return */\n        error(2,0,uVar10);\n      }" { (expression_statement "uVar10 = dcgettext(0,"internal error (should never happen)",5,\n                           (int)((ulonglong)uVar15 >> 0x20));" (assignment_expression "uVar10 = dcgettext(0,"internal error (should never happen)",5,\n                           (int)((ulonglong)uVar15 >> 0x20))" identifier = (call_expression "dcgettext(0,"internal error (should never happen)",5,\n                           (int)((ulonglong)uVar15 >> 0x20))" identifier (argument_list "(0,"internal error (should never happen)",5,\n                           (int)((ulonglong)uVar15 >> 0x20))" ( number_literal , (string_literal ""internal error (should never happen)"" " string_content ") , number_literal , (cast_expression "(int)((ulonglong)uVar15 >> 0x20)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((ulonglong)uVar15 >> 0x20)" ( (binary_expression "(ulonglong)uVar15 >> 0x20" (cast_expression "(ulonglong)uVar15" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) ))) )))) ;) comment (expression_statement "error(2,0,uVar10);" (call_expression "error(2,0,uVar10)" identifier (argument_list "(2,0,uVar10)" ( number_literal , number_literal , identifier ))) ;) })) (if_statement "if (e != 0) {\n        piVar5[3] = 0x8000;\n      }" if (parenthesized_expression "(e != 0)" ( (binary_expression "e != 0" identifier != number_literal) )) (compound_statement "{\n        piVar5[3] = 0x8000;\n      }" { (expression_statement "piVar5[3] = 0x8000;" (assignment_expression "piVar5[3] = 0x8000" (subscript_expression "piVar5[3]" identifier [ number_literal ]) = number_literal) ;) })) (expression_statement "free(__s);" (call_expression "free(__s)" identifier (argument_list "(__s)" ( identifier ))) ;) (expression_statement "iVar11 = pcre_exec(*piVar5,piVar5[1],"",0,0,0x80,sub,300);" (assignment_expression "iVar11 = pcre_exec(*piVar5,piVar5[1],"",0,0,0x80,sub,300)" identifier = (call_expression "pcre_exec(*piVar5,piVar5[1],"",0,0,0x80,sub,300)" identifier (argument_list "(*piVar5,piVar5[1],"",0,0,0x80,sub,300)" ( (pointer_expression "*piVar5" * identifier) , (subscript_expression "piVar5[1]" identifier [ number_literal ]) , (string_literal """" " ") , number_literal , number_literal , number_literal , identifier , number_literal )))) ;) (expression_statement "piVar5[4] = iVar11;" (assignment_expression "piVar5[4] = iVar11" (subscript_expression "piVar5[4]" identifier [ number_literal ]) = identifier) ;) (expression_statement "iVar11 = pcre_exec(*piVar5,piVar5[1],"",0,0,0,sub,300);" (assignment_expression "iVar11 = pcre_exec(*piVar5,piVar5[1],"",0,0,0,sub,300)" identifier = (call_expression "pcre_exec(*piVar5,piVar5[1],"",0,0,0,sub,300)" identifier (argument_list "(*piVar5,piVar5[1],"",0,0,0,sub,300)" ( (pointer_expression "*piVar5" * identifier) , (subscript_expression "piVar5[1]" identifier [ number_literal ]) , (string_literal """" " ") , number_literal , number_literal , number_literal , identifier , number_literal )))) ;) (expression_statement "piVar5[5] = iVar11;" (assignment_expression "piVar5[5] = iVar11" (subscript_expression "piVar5[5]" identifier [ number_literal ]) = identifier) ;) (if_statement "if (iVar2 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    /* WARNING: Subroutine does not return */\n        __stack_chk_fail_local();\n      }" if (parenthesized_expression "(iVar2 != *(int *)(in_GS_OFFSET + 0x14))" ( (binary_expression "iVar2 != *(int *)(in_GS_OFFSET + 0x14)" identifier != (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" * (cast_expression "(int *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n        __stack_chk_fail_local();\n      }" { comment (expression_statement "__stack_chk_fail_local();" (call_expression "__stack_chk_fail_local()" identifier (argument_list "()" ( ))) ;) })) (return_statement "return piVar5;" return identifier ;) })) (expression_statement "sVar7 = (int)pcVar8 - (int)pcVar9;" (assignment_expression "sVar7 = (int)pcVar8 - (int)pcVar9" identifier = (binary_expression "(int)pcVar8 - (int)pcVar9" (cast_expression "(int)pcVar8" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)pcVar9" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (expression_statement "memcpy(__dest,pcVar9,sVar7);" (call_expression "memcpy(__dest,pcVar9,sVar7)" identifier (argument_list "(__dest,pcVar9,sVar7)" ( identifier , identifier , identifier ))) ;) (if_statement "if ((pattern < pcVar8) && (pcVar9 = pcVar8, pcVar8[-1] == '\\')) {\n      do {\n        pcVar12 = pcVar9 + -1;\n        if (pattern == pcVar12) {\n          sVar7 = sVar7 - ((int)pcVar8 - (int)pattern & 1U);\n          goto LAB_0001e130;\n        }\n        pcVar1 = pcVar9 + -2;\n        pcVar9 = pcVar12;\n      } while (*pcVar1 == '\\');\n      sVar7 = sVar7 - ((int)pcVar8 - (int)pcVar12 & 1U);\n    }" if (parenthesized_expression "((pattern < pcVar8) && (pcVar9 = pcVar8, pcVar8[-1] == '\\'))" ( (binary_expression "(pattern < pcVar8) && (pcVar9 = pcVar8, pcVar8[-1] == '\\')" (parenthesized_expression "(pattern < pcVar8)" ( (binary_expression "pattern < pcVar8" identifier < identifier) )) && (parenthesized_expression "(pcVar9 = pcVar8, pcVar8[-1] == '\\')" ( (comma_expression "pcVar9 = pcVar8, pcVar8[-1] == '\\'" (assignment_expression "pcVar9 = pcVar8" identifier = identifier) , (binary_expression "pcVar8[-1] == '\\'" (subscript_expression "pcVar8[-1]" identifier [ number_literal ]) == (char_literal "'\\'" ' escape_sequence '))) ))) )) (compound_statement "{\n      do {\n        pcVar12 = pcVar9 + -1;\n        if (pattern == pcVar12) {\n          sVar7 = sVar7 - ((int)pcVar8 - (int)pattern & 1U);\n          goto LAB_0001e130;\n        }\n        pcVar1 = pcVar9 + -2;\n        pcVar9 = pcVar12;\n      } while (*pcVar1 == '\\');\n      sVar7 = sVar7 - ((int)pcVar8 - (int)pcVar12 & 1U);\n    }" { (do_statement "do {\n        pcVar12 = pcVar9 + -1;\n        if (pattern == pcVar12) {\n          sVar7 = sVar7 - ((int)pcVar8 - (int)pattern & 1U);\n          goto LAB_0001e130;\n        }\n        pcVar1 = pcVar9 + -2;\n        pcVar9 = pcVar12;\n      } while (*pcVar1 == '\\');" do (compound_statement "{\n        pcVar12 = pcVar9 + -1;\n        if (pattern == pcVar12) {\n          sVar7 = sVar7 - ((int)pcVar8 - (int)pattern & 1U);\n          goto LAB_0001e130;\n        }\n        pcVar1 = pcVar9 + -2;\n        pcVar9 = pcVar12;\n      }" { (expression_statement "pcVar12 = pcVar9 + -1;" (assignment_expression "pcVar12 = pcVar9 + -1" identifier = (binary_expression "pcVar9 + -1" identifier + number_literal)) ;) (if_statement "if (pattern == pcVar12) {\n          sVar7 = sVar7 - ((int)pcVar8 - (int)pattern & 1U);\n          goto LAB_0001e130;\n        }" if (parenthesized_expression "(pattern == pcVar12)" ( (binary_expression "pattern == pcVar12" identifier == identifier) )) (compound_statement "{\n          sVar7 = sVar7 - ((int)pcVar8 - (int)pattern & 1U);\n          goto LAB_0001e130;\n        }" { (expression_statement "sVar7 = sVar7 - ((int)pcVar8 - (int)pattern & 1U);" (assignment_expression "sVar7 = sVar7 - ((int)pcVar8 - (int)pattern & 1U)" identifier = (binary_expression "sVar7 - ((int)pcVar8 - (int)pattern & 1U)" identifier - (parenthesized_expression "((int)pcVar8 - (int)pattern & 1U)" ( (binary_expression "(int)pcVar8 - (int)pattern & 1U" (binary_expression "(int)pcVar8 - (int)pattern" (cast_expression "(int)pcVar8" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)pattern" ( (type_descriptor "int" primitive_type) ) identifier)) & number_literal) )))) ;) (goto_statement "goto LAB_0001e130;" goto statement_identifier ;) })) (expression_statement "pcVar1 = pcVar9 + -2;" (assignment_expression "pcVar1 = pcVar9 + -2" identifier = (binary_expression "pcVar9 + -2" identifier + number_literal)) ;) (expression_statement "pcVar9 = pcVar12;" (assignment_expression "pcVar9 = pcVar12" identifier = identifier) ;) }) while (parenthesized_expression "(*pcVar1 == '\\')" ( (binary_expression "*pcVar1 == '\\'" (pointer_expression "*pcVar1" * identifier) == (char_literal "'\\'" ' escape_sequence ')) )) ;) (expression_statement "sVar7 = sVar7 - ((int)pcVar8 - (int)pcVar12 & 1U);" (assignment_expression "sVar7 = sVar7 - ((int)pcVar8 - (int)pcVar12 & 1U)" identifier = (binary_expression "sVar7 - ((int)pcVar8 - (int)pcVar12 & 1U)" identifier - (parenthesized_expression "((int)pcVar8 - (int)pcVar12 & 1U)" ( (binary_expression "(int)pcVar8 - (int)pcVar12 & 1U" (binary_expression "(int)pcVar8 - (int)pcVar12" (cast_expression "(int)pcVar8" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)pcVar12" ( (type_descriptor "int" primitive_type) ) identifier)) & number_literal) )))) ;) })) (labeled_statement "LAB_0001e130:\n    pcVar9 = pcVar8 + 1;" statement_identifier : (expression_statement "pcVar9 = pcVar8 + 1;" (assignment_expression "pcVar9 = pcVar8 + 1" identifier = (binary_expression "pcVar8 + 1" identifier + number_literal)) ;)) (expression_statement "builtin_strncpy(__dest + sVar7,"\\000",5);" (call_expression "builtin_strncpy(__dest + sVar7,"\\000",5)" identifier (argument_list "(__dest + sVar7,"\\000",5)" ( (binary_expression "__dest + sVar7" identifier + identifier) , (string_literal ""\\000"" " escape_sequence string_content ") , number_literal ))) ;) (expression_statement "__dest = __dest + sVar7 + 4;" (assignment_expression "__dest = __dest + sVar7 + 4" identifier = (binary_expression "__dest + sVar7 + 4" (binary_expression "__dest + sVar7" identifier + identifier) + number_literal)) ;) }) while (parenthesized_expression "( true )" ( true )) ;) })))
(translation_unit "int * FUN_0001e020(void *param_1,int param_2)\n\n{\n  char cVar1;\n  char cVar2;\n  int iVar3;\n  char *__s;\n  int *piVar4;\n  size_t sVar5;\n  void *pvVar6;\n  void *pvVar7;\n  undefined4 uVar9;\n  undefined4 extraout_ECX;\n  char *__dest;\n  char *pcVar10;\n  int in_GS_OFFSET;\n  bool bVar11;\n  bool bVar12;\n  undefined8 uVar13;\n  int local_4e4;\n  int local_4d8;\n  int local_4d4;\n  undefined1 local_4d0 [1200];\n  int local_20;\n  undefined4 uStack_14;\n  void *pvVar8;\n  \n  uStack_14 = 0x1e029;\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  iVar3 = (param_2 + 5U) * 4;\n  if ((iVar3 < 0) || (param_2 + 5U >> 0x1e != 0)) {\n                    \n    FUN_0002f1c0();\n  }\n  __s = (char *)FUN_0002efa0(iVar3);\n  bVar11 = DAT_0004ca26 == '\0';\n  bVar12 = DAT_0004ca26 == '\0';\n  piVar4 = (int *)FUN_0002f0e0(1,0x18);\n  local_4e4 = 0x21 - (uint)bVar12;\n  if ((DAT_0004c520 != '\0') && (local_4e4 = 0x821 - (uint)bVar11, DAT_0004c521 == '\0')) {\n    uVar9 = dcgettext(0,"-P supports only unibyte and UTF-8 locales",5,param_2);\n                    \n    error(2,0,uVar9);\n  }\n  iVar3 = FUN_00036f10(param_1,10,param_2);\n  if (iVar3 != 0) {\n    uVar9 = dcgettext(0,"the -P option only supports a single pattern",5,extraout_ECX);\n                    \n    error(2,0,uVar9);\n  }\n  *__s = '\0';\n  cVar1 = DAT_0004ca24;\n  if (DAT_0004ca24 != '\0') {\n    *(undefined4 *)__s = DAT_0003abf4;\n    *(undefined4 *)(__s + 4) = DAT_0003abf8;\n    *(undefined2 *)(__s + 8) = DAT_0003abfc;\n    __s[10] = DAT_0003abfe;\n  }\n  cVar2 = DAT_0004ca25;\n  if (DAT_0004ca25 != '\0') {\n    *(undefined4 *)__s = DAT_0003abec;\n    __s[4] = DAT_0003abf0;\n  }\n  sVar5 = strlen(__s);\n  __dest = __s + sVar5;\n  pvVar8 = param_1;\n  do {\n    sVar5 = (int)param_1 + (param_2 - (int)pvVar8);\n    pvVar6 = (void *)FUN_00036f10(pvVar8,0,sVar5);\n    if (pvVar6 == (void *)0x0) {\n      pcVar10 = __dest + sVar5;\n      memcpy(__dest,pvVar8,sVar5);\n      uVar9 = DAT_0003abe8;\n      if (cVar1 == '\0') {\n        *pcVar10 = '\0';\n      }\n      else {\n        *(undefined4 *)pcVar10 = DAT_0003abe4;\n        *(undefined4 *)(pcVar10 + 4) = uVar9;\n      }\n      if (cVar2 != '\0') {\n        *(undefined2 *)pcVar10 = DAT_0003abe0;\n        pcVar10[2] = DAT_0003abe2;\n      }\n      uVar9 = pcre_maketables();\n      iVar3 = pcre_compile(__s,local_4e4,&local_4d4,&local_4d8,uVar9);\n      *piVar4 = iVar3;\n      if (iVar3 == 0) {\n                    \n        error(2,0,&DAT_0003ac56,local_4d4);\n      }\n      iVar3 = pcre_study(iVar3,9,&local_4d4);\n      piVar4[1] = iVar3;\n      if (local_4d4 != 0) {\n                    \n        error(2,0,&DAT_0003ac56,local_4d4);\n      }\n      uVar13 = pcre_fullinfo(*piVar4,iVar3,0x10,&local_4d8);\n      if ((int)uVar13 != 0) {\n        uVar9 = dcgettext(0,"internal error (should never happen)",5,\n                          (int)((ulonglong)uVar13 >> 0x20));\n                    \n        error(2,0,uVar9);\n      }\n      if (local_4d8 != 0) {\n        piVar4[3] = 0x8000;\n      }\n      free(__s);\n      iVar3 = pcre_exec(*piVar4,piVar4[1],"",0,0,0x80,local_4d0,300);\n      piVar4[4] = iVar3;\n      iVar3 = pcre_exec(*piVar4,piVar4[1],"",0,0,0,local_4d0,300);\n      piVar4[5] = iVar3;\n      if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    \n        FUN_00038830();\n      }\n      return piVar4;\n    }\n    sVar5 = (int)pvVar6 - (int)pvVar8;\n    memcpy(__dest,pvVar8,sVar5);\n    if ((param_1 < pvVar6) && (pvVar8 = pvVar6, *(char *)((int)pvVar6 - 1) == '\\')) {\n      do {\n        pvVar7 = (void *)((int)pvVar8 - 1);\n        if (param_1 == pvVar7) {\n          sVar5 = sVar5 - ((int)pvVar6 - (int)param_1 & 1U);\n          goto LAB_0001e130;\n        }\n        pcVar10 = (char *)((int)pvVar8 - 2);\n        pvVar8 = pvVar7;\n      } while (*pcVar10 == '\\');\n      sVar5 = sVar5 - ((int)pvVar6 - (int)pvVar7 & 1U);\n    }\nLAB_0001e130:\n    pvVar8 = (void *)((int)pvVar6 + 1);\n    builtin_strncpy(__dest + sVar5,"\\000",5);\n    __dest = __dest + sVar5 + 4;\n  } while( true );\n}\n\n" (function_definition "int * FUN_0001e020(void *param_1,int param_2)\n\n{\n  char cVar1;\n  char cVar2;\n  int iVar3;\n  char *__s;\n  int *piVar4;\n  size_t sVar5;\n  void *pvVar6;\n  void *pvVar7;\n  undefined4 uVar9;\n  undefined4 extraout_ECX;\n  char *__dest;\n  char *pcVar10;\n  int in_GS_OFFSET;\n  bool bVar11;\n  bool bVar12;\n  undefined8 uVar13;\n  int local_4e4;\n  int local_4d8;\n  int local_4d4;\n  undefined1 local_4d0 [1200];\n  int local_20;\n  undefined4 uStack_14;\n  void *pvVar8;\n  \n  uStack_14 = 0x1e029;\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  iVar3 = (param_2 + 5U) * 4;\n  if ((iVar3 < 0) || (param_2 + 5U >> 0x1e != 0)) {\n                    \n    FUN_0002f1c0();\n  }\n  __s = (char *)FUN_0002efa0(iVar3);\n  bVar11 = DAT_0004ca26 == '\0';\n  bVar12 = DAT_0004ca26 == '\0';\n  piVar4 = (int *)FUN_0002f0e0(1,0x18);\n  local_4e4 = 0x21 - (uint)bVar12;\n  if ((DAT_0004c520 != '\0') && (local_4e4 = 0x821 - (uint)bVar11, DAT_0004c521 == '\0')) {\n    uVar9 = dcgettext(0,"-P supports only unibyte and UTF-8 locales",5,param_2);\n                    \n    error(2,0,uVar9);\n  }\n  iVar3 = FUN_00036f10(param_1,10,param_2);\n  if (iVar3 != 0) {\n    uVar9 = dcgettext(0,"the -P option only supports a single pattern",5,extraout_ECX);\n                    \n    error(2,0,uVar9);\n  }\n  *__s = '\0';\n  cVar1 = DAT_0004ca24;\n  if (DAT_0004ca24 != '\0') {\n    *(undefined4 *)__s = DAT_0003abf4;\n    *(undefined4 *)(__s + 4) = DAT_0003abf8;\n    *(undefined2 *)(__s + 8) = DAT_0003abfc;\n    __s[10] = DAT_0003abfe;\n  }\n  cVar2 = DAT_0004ca25;\n  if (DAT_0004ca25 != '\0') {\n    *(undefined4 *)__s = DAT_0003abec;\n    __s[4] = DAT_0003abf0;\n  }\n  sVar5 = strlen(__s);\n  __dest = __s + sVar5;\n  pvVar8 = param_1;\n  do {\n    sVar5 = (int)param_1 + (param_2 - (int)pvVar8);\n    pvVar6 = (void *)FUN_00036f10(pvVar8,0,sVar5);\n    if (pvVar6 == (void *)0x0) {\n      pcVar10 = __dest + sVar5;\n      memcpy(__dest,pvVar8,sVar5);\n      uVar9 = DAT_0003abe8;\n      if (cVar1 == '\0') {\n        *pcVar10 = '\0';\n      }\n      else {\n        *(undefined4 *)pcVar10 = DAT_0003abe4;\n        *(undefined4 *)(pcVar10 + 4) = uVar9;\n      }\n      if (cVar2 != '\0') {\n        *(undefined2 *)pcVar10 = DAT_0003abe0;\n        pcVar10[2] = DAT_0003abe2;\n      }\n      uVar9 = pcre_maketables();\n      iVar3 = pcre_compile(__s,local_4e4,&local_4d4,&local_4d8,uVar9);\n      *piVar4 = iVar3;\n      if (iVar3 == 0) {\n                    \n        error(2,0,&DAT_0003ac56,local_4d4);\n      }\n      iVar3 = pcre_study(iVar3,9,&local_4d4);\n      piVar4[1] = iVar3;\n      if (local_4d4 != 0) {\n                    \n        error(2,0,&DAT_0003ac56,local_4d4);\n      }\n      uVar13 = pcre_fullinfo(*piVar4,iVar3,0x10,&local_4d8);\n      if ((int)uVar13 != 0) {\n        uVar9 = dcgettext(0,"internal error (should never happen)",5,\n                          (int)((ulonglong)uVar13 >> 0x20));\n                    \n        error(2,0,uVar9);\n      }\n      if (local_4d8 != 0) {\n        piVar4[3] = 0x8000;\n      }\n      free(__s);\n      iVar3 = pcre_exec(*piVar4,piVar4[1],"",0,0,0x80,local_4d0,300);\n      piVar4[4] = iVar3;\n      iVar3 = pcre_exec(*piVar4,piVar4[1],"",0,0,0,local_4d0,300);\n      piVar4[5] = iVar3;\n      if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    \n        FUN_00038830();\n      }\n      return piVar4;\n    }\n    sVar5 = (int)pvVar6 - (int)pvVar8;\n    memcpy(__dest,pvVar8,sVar5);\n    if ((param_1 < pvVar6) && (pvVar8 = pvVar6, *(char *)((int)pvVar6 - 1) == '\\')) {\n      do {\n        pvVar7 = (void *)((int)pvVar8 - 1);\n        if (param_1 == pvVar7) {\n          sVar5 = sVar5 - ((int)pvVar6 - (int)param_1 & 1U);\n          goto LAB_0001e130;\n        }\n        pcVar10 = (char *)((int)pvVar8 - 2);\n        pvVar8 = pvVar7;\n      } while (*pcVar10 == '\\');\n      sVar5 = sVar5 - ((int)pvVar6 - (int)pvVar7 & 1U);\n    }\nLAB_0001e130:\n    pvVar8 = (void *)((int)pvVar6 + 1);\n    builtin_strncpy(__dest + sVar5,"\\000",5);\n    __dest = __dest + sVar5 + 4;\n  } while( true );\n}" primitive_type (pointer_declarator "* FUN_0001e020(void *param_1,int param_2)" * (function_declarator "FUN_0001e020(void *param_1,int param_2)" identifier (parameter_list "(void *param_1,int param_2)" ( (parameter_declaration "void *param_1" primitive_type (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "int param_2" primitive_type identifier) )))) (compound_statement "{\n  char cVar1;\n  char cVar2;\n  int iVar3;\n  char *__s;\n  int *piVar4;\n  size_t sVar5;\n  void *pvVar6;\n  void *pvVar7;\n  undefined4 uVar9;\n  undefined4 extraout_ECX;\n  char *__dest;\n  char *pcVar10;\n  int in_GS_OFFSET;\n  bool bVar11;\n  bool bVar12;\n  undefined8 uVar13;\n  int local_4e4;\n  int local_4d8;\n  int local_4d4;\n  undefined1 local_4d0 [1200];\n  int local_20;\n  undefined4 uStack_14;\n  void *pvVar8;\n  \n  uStack_14 = 0x1e029;\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  iVar3 = (param_2 + 5U) * 4;\n  if ((iVar3 < 0) || (param_2 + 5U >> 0x1e != 0)) {\n                    \n    FUN_0002f1c0();\n  }\n  __s = (char *)FUN_0002efa0(iVar3);\n  bVar11 = DAT_0004ca26 == '\0';\n  bVar12 = DAT_0004ca26 == '\0';\n  piVar4 = (int *)FUN_0002f0e0(1,0x18);\n  local_4e4 = 0x21 - (uint)bVar12;\n  if ((DAT_0004c520 != '\0') && (local_4e4 = 0x821 - (uint)bVar11, DAT_0004c521 == '\0')) {\n    uVar9 = dcgettext(0,"-P supports only unibyte and UTF-8 locales",5,param_2);\n                    \n    error(2,0,uVar9);\n  }\n  iVar3 = FUN_00036f10(param_1,10,param_2);\n  if (iVar3 != 0) {\n    uVar9 = dcgettext(0,"the -P option only supports a single pattern",5,extraout_ECX);\n                    \n    error(2,0,uVar9);\n  }\n  *__s = '\0';\n  cVar1 = DAT_0004ca24;\n  if (DAT_0004ca24 != '\0') {\n    *(undefined4 *)__s = DAT_0003abf4;\n    *(undefined4 *)(__s + 4) = DAT_0003abf8;\n    *(undefined2 *)(__s + 8) = DAT_0003abfc;\n    __s[10] = DAT_0003abfe;\n  }\n  cVar2 = DAT_0004ca25;\n  if (DAT_0004ca25 != '\0') {\n    *(undefined4 *)__s = DAT_0003abec;\n    __s[4] = DAT_0003abf0;\n  }\n  sVar5 = strlen(__s);\n  __dest = __s + sVar5;\n  pvVar8 = param_1;\n  do {\n    sVar5 = (int)param_1 + (param_2 - (int)pvVar8);\n    pvVar6 = (void *)FUN_00036f10(pvVar8,0,sVar5);\n    if (pvVar6 == (void *)0x0) {\n      pcVar10 = __dest + sVar5;\n      memcpy(__dest,pvVar8,sVar5);\n      uVar9 = DAT_0003abe8;\n      if (cVar1 == '\0') {\n        *pcVar10 = '\0';\n      }\n      else {\n        *(undefined4 *)pcVar10 = DAT_0003abe4;\n        *(undefined4 *)(pcVar10 + 4) = uVar9;\n      }\n      if (cVar2 != '\0') {\n        *(undefined2 *)pcVar10 = DAT_0003abe0;\n        pcVar10[2] = DAT_0003abe2;\n      }\n      uVar9 = pcre_maketables();\n      iVar3 = pcre_compile(__s,local_4e4,&local_4d4,&local_4d8,uVar9);\n      *piVar4 = iVar3;\n      if (iVar3 == 0) {\n                    \n        error(2,0,&DAT_0003ac56,local_4d4);\n      }\n      iVar3 = pcre_study(iVar3,9,&local_4d4);\n      piVar4[1] = iVar3;\n      if (local_4d4 != 0) {\n                    \n        error(2,0,&DAT_0003ac56,local_4d4);\n      }\n      uVar13 = pcre_fullinfo(*piVar4,iVar3,0x10,&local_4d8);\n      if ((int)uVar13 != 0) {\n        uVar9 = dcgettext(0,"internal error (should never happen)",5,\n                          (int)((ulonglong)uVar13 >> 0x20));\n                    \n        error(2,0,uVar9);\n      }\n      if (local_4d8 != 0) {\n        piVar4[3] = 0x8000;\n      }\n      free(__s);\n      iVar3 = pcre_exec(*piVar4,piVar4[1],"",0,0,0x80,local_4d0,300);\n      piVar4[4] = iVar3;\n      iVar3 = pcre_exec(*piVar4,piVar4[1],"",0,0,0,local_4d0,300);\n      piVar4[5] = iVar3;\n      if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    \n        FUN_00038830();\n      }\n      return piVar4;\n    }\n    sVar5 = (int)pvVar6 - (int)pvVar8;\n    memcpy(__dest,pvVar8,sVar5);\n    if ((param_1 < pvVar6) && (pvVar8 = pvVar6, *(char *)((int)pvVar6 - 1) == '\\')) {\n      do {\n        pvVar7 = (void *)((int)pvVar8 - 1);\n        if (param_1 == pvVar7) {\n          sVar5 = sVar5 - ((int)pvVar6 - (int)param_1 & 1U);\n          goto LAB_0001e130;\n        }\n        pcVar10 = (char *)((int)pvVar8 - 2);\n        pvVar8 = pvVar7;\n      } while (*pcVar10 == '\\');\n      sVar5 = sVar5 - ((int)pvVar6 - (int)pvVar7 & 1U);\n    }\nLAB_0001e130:\n    pvVar8 = (void *)((int)pvVar6 + 1);\n    builtin_strncpy(__dest + sVar5,"\\000",5);\n    __dest = __dest + sVar5 + 4;\n  } while( true );\n}" { (declaration "char cVar1;" primitive_type identifier ;) (declaration "char cVar2;" primitive_type identifier ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "char *__s;" primitive_type (pointer_declarator "*__s" * identifier) ;) (declaration "int *piVar4;" primitive_type (pointer_declarator "*piVar4" * identifier) ;) (declaration "size_t sVar5;" primitive_type identifier ;) (declaration "void *pvVar6;" primitive_type (pointer_declarator "*pvVar6" * identifier) ;) (declaration "void *pvVar7;" primitive_type (pointer_declarator "*pvVar7" * identifier) ;) (declaration "undefined4 uVar9;" type_identifier identifier ;) (declaration "undefined4 extraout_ECX;" type_identifier identifier ;) (declaration "char *__dest;" primitive_type (pointer_declarator "*__dest" * identifier) ;) (declaration "char *pcVar10;" primitive_type (pointer_declarator "*pcVar10" * identifier) ;) (declaration "int in_GS_OFFSET;" primitive_type identifier ;) (declaration "bool bVar11;" primitive_type identifier ;) (declaration "bool bVar12;" primitive_type identifier ;) (declaration "undefined8 uVar13;" type_identifier identifier ;) (declaration "int local_4e4;" primitive_type identifier ;) (declaration "int local_4d8;" primitive_type identifier ;) (declaration "int local_4d4;" primitive_type identifier ;) (declaration "undefined1 local_4d0 [1200];" type_identifier (array_declarator "local_4d0 [1200]" identifier [ number_literal ]) ;) (declaration "int local_20;" primitive_type identifier ;) (declaration "undefined4 uStack_14;" type_identifier identifier ;) (declaration "void *pvVar8;" primitive_type (pointer_declarator "*pvVar8" * identifier) ;) (expression_statement "uStack_14 = 0x1e029;" (assignment_expression "uStack_14 = 0x1e029" identifier = number_literal) ;) (expression_statement "local_20 = *(int *)(in_GS_OFFSET + 0x14);" (assignment_expression "local_20 = *(int *)(in_GS_OFFSET + 0x14)" identifier = (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" * (cast_expression "(int *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) ;) (expression_statement "iVar3 = (param_2 + 5U) * 4;" (assignment_expression "iVar3 = (param_2 + 5U) * 4" identifier = (binary_expression "(param_2 + 5U) * 4" (parenthesized_expression "(param_2 + 5U)" ( (binary_expression "param_2 + 5U" identifier + number_literal) )) * number_literal)) ;) (if_statement "if ((iVar3 < 0) || (param_2 + 5U >> 0x1e != 0)) {\n                    \n    FUN_0002f1c0();\n  }" if (parenthesized_expression "((iVar3 < 0) || (param_2 + 5U >> 0x1e != 0))" ( (binary_expression "(iVar3 < 0) || (param_2 + 5U >> 0x1e != 0)" (parenthesized_expression "(iVar3 < 0)" ( (binary_expression "iVar3 < 0" identifier < number_literal) )) || (parenthesized_expression "(param_2 + 5U >> 0x1e != 0)" ( (binary_expression "param_2 + 5U >> 0x1e != 0" (binary_expression "param_2 + 5U >> 0x1e" (binary_expression "param_2 + 5U" identifier + number_literal) >> number_literal) != number_literal) ))) )) (compound_statement "{\n                    \n    FUN_0002f1c0();\n  }" { (expression_statement "FUN_0002f1c0();" (call_expression "FUN_0002f1c0()" identifier (argument_list "()" ( ))) ;) })) (expression_statement "__s = (char *)FUN_0002efa0(iVar3);" (assignment_expression "__s = (char *)FUN_0002efa0(iVar3)" identifier = (cast_expression "(char *)FUN_0002efa0(iVar3)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_0002efa0(iVar3)" identifier (argument_list "(iVar3)" ( identifier ))))) ;) (expression_statement "bVar11 = DAT_0004ca26 == '\0';" (assignment_expression "bVar11 = DAT_0004ca26 == '\0'" identifier = (binary_expression "DAT_0004ca26 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence '))) ;) (expression_statement "bVar12 = DAT_0004ca26 == '\0';" (assignment_expression "bVar12 = DAT_0004ca26 == '\0'" identifier = (binary_expression "DAT_0004ca26 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence '))) ;) (expression_statement "piVar4 = (int *)FUN_0002f0e0(1,0x18);" (assignment_expression "piVar4 = (int *)FUN_0002f0e0(1,0x18)" identifier = (cast_expression "(int *)FUN_0002f0e0(1,0x18)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_0002f0e0(1,0x18)" identifier (argument_list "(1,0x18)" ( number_literal , number_literal ))))) ;) (expression_statement "local_4e4 = 0x21 - (uint)bVar12;" (assignment_expression "local_4e4 = 0x21 - (uint)bVar12" identifier = (binary_expression "0x21 - (uint)bVar12" number_literal - (cast_expression "(uint)bVar12" ( (type_descriptor "uint" type_identifier) ) identifier))) ;) (if_statement "if ((DAT_0004c520 != '\0') && (local_4e4 = 0x821 - (uint)bVar11, DAT_0004c521 == '\0')) {\n    uVar9 = dcgettext(0,"-P supports only unibyte and UTF-8 locales",5,param_2);\n                    \n    error(2,0,uVar9);\n  }" if (parenthesized_expression "((DAT_0004c520 != '\0') && (local_4e4 = 0x821 - (uint)bVar11, DAT_0004c521 == '\0'))" ( (binary_expression "(DAT_0004c520 != '\0') && (local_4e4 = 0x821 - (uint)bVar11, DAT_0004c521 == '\0')" (parenthesized_expression "(DAT_0004c520 != '\0')" ( (binary_expression "DAT_0004c520 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) && (parenthesized_expression "(local_4e4 = 0x821 - (uint)bVar11, DAT_0004c521 == '\0')" ( (comma_expression "local_4e4 = 0x821 - (uint)bVar11, DAT_0004c521 == '\0'" (assignment_expression "local_4e4 = 0x821 - (uint)bVar11" identifier = (binary_expression "0x821 - (uint)bVar11" number_literal - (cast_expression "(uint)bVar11" ( (type_descriptor "uint" type_identifier) ) identifier))) , (binary_expression "DAT_0004c521 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence '))) ))) )) (compound_statement "{\n    uVar9 = dcgettext(0,"-P supports only unibyte and UTF-8 locales",5,param_2);\n                    \n    error(2,0,uVar9);\n  }" { (expression_statement "uVar9 = dcgettext(0,"-P supports only unibyte and UTF-8 locales",5,param_2);" (assignment_expression "uVar9 = dcgettext(0,"-P supports only unibyte and UTF-8 locales",5,param_2)" identifier = (call_expression "dcgettext(0,"-P supports only unibyte and UTF-8 locales",5,param_2)" identifier (argument_list "(0,"-P supports only unibyte and UTF-8 locales",5,param_2)" ( number_literal , (string_literal ""-P supports only unibyte and UTF-8 locales"" " string_content ") , number_literal , identifier )))) ;) (expression_statement "error(2,0,uVar9);" (call_expression "error(2,0,uVar9)" identifier (argument_list "(2,0,uVar9)" ( number_literal , number_literal , identifier ))) ;) })) (expression_statement "iVar3 = FUN_00036f10(param_1,10,param_2);" (assignment_expression "iVar3 = FUN_00036f10(param_1,10,param_2)" identifier = (call_expression "FUN_00036f10(param_1,10,param_2)" identifier (argument_list "(param_1,10,param_2)" ( identifier , number_literal , identifier )))) ;) (if_statement "if (iVar3 != 0) {\n    uVar9 = dcgettext(0,"the -P option only supports a single pattern",5,extraout_ECX);\n                    \n    error(2,0,uVar9);\n  }" if (parenthesized_expression "(iVar3 != 0)" ( (binary_expression "iVar3 != 0" identifier != number_literal) )) (compound_statement "{\n    uVar9 = dcgettext(0,"the -P option only supports a single pattern",5,extraout_ECX);\n                    \n    error(2,0,uVar9);\n  }" { (expression_statement "uVar9 = dcgettext(0,"the -P option only supports a single pattern",5,extraout_ECX);" (assignment_expression "uVar9 = dcgettext(0,"the -P option only supports a single pattern",5,extraout_ECX)" identifier = (call_expression "dcgettext(0,"the -P option only supports a single pattern",5,extraout_ECX)" identifier (argument_list "(0,"the -P option only supports a single pattern",5,extraout_ECX)" ( number_literal , (string_literal ""the -P option only supports a single pattern"" " string_content ") , number_literal , identifier )))) ;) (expression_statement "error(2,0,uVar9);" (call_expression "error(2,0,uVar9)" identifier (argument_list "(2,0,uVar9)" ( number_literal , number_literal , identifier ))) ;) })) (expression_statement "*__s = '\0';" (assignment_expression "*__s = '\0'" (pointer_expression "*__s" * identifier) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "cVar1 = DAT_0004ca24;" (assignment_expression "cVar1 = DAT_0004ca24" identifier = identifier) ;) (if_statement "if (DAT_0004ca24 != '\0') {\n    *(undefined4 *)__s = DAT_0003abf4;\n    *(undefined4 *)(__s + 4) = DAT_0003abf8;\n    *(undefined2 *)(__s + 8) = DAT_0003abfc;\n    __s[10] = DAT_0003abfe;\n  }" if (parenthesized_expression "(DAT_0004ca24 != '\0')" ( (binary_expression "DAT_0004ca24 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    *(undefined4 *)__s = DAT_0003abf4;\n    *(undefined4 *)(__s + 4) = DAT_0003abf8;\n    *(undefined2 *)(__s + 8) = DAT_0003abfc;\n    __s[10] = DAT_0003abfe;\n  }" { (expression_statement "*(undefined4 *)__s = DAT_0003abf4;" (assignment_expression "*(undefined4 *)__s = DAT_0003abf4" (pointer_expression "*(undefined4 *)__s" * (cast_expression "(undefined4 *)__s" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) = identifier) ;) (expression_statement "*(undefined4 *)(__s + 4) = DAT_0003abf8;" (assignment_expression "*(undefined4 *)(__s + 4) = DAT_0003abf8" (pointer_expression "*(undefined4 *)(__s + 4)" * (cast_expression "(undefined4 *)(__s + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(__s + 4)" ( (binary_expression "__s + 4" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined2 *)(__s + 8) = DAT_0003abfc;" (assignment_expression "*(undefined2 *)(__s + 8) = DAT_0003abfc" (pointer_expression "*(undefined2 *)(__s + 8)" * (cast_expression "(undefined2 *)(__s + 8)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(__s + 8)" ( (binary_expression "__s + 8" identifier + number_literal) )))) = identifier) ;) (expression_statement "__s[10] = DAT_0003abfe;" (assignment_expression "__s[10] = DAT_0003abfe" (subscript_expression "__s[10]" identifier [ number_literal ]) = identifier) ;) })) (expression_statement "cVar2 = DAT_0004ca25;" (assignment_expression "cVar2 = DAT_0004ca25" identifier = identifier) ;) (if_statement "if (DAT_0004ca25 != '\0') {\n    *(undefined4 *)__s = DAT_0003abec;\n    __s[4] = DAT_0003abf0;\n  }" if (parenthesized_expression "(DAT_0004ca25 != '\0')" ( (binary_expression "DAT_0004ca25 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    *(undefined4 *)__s = DAT_0003abec;\n    __s[4] = DAT_0003abf0;\n  }" { (expression_statement "*(undefined4 *)__s = DAT_0003abec;" (assignment_expression "*(undefined4 *)__s = DAT_0003abec" (pointer_expression "*(undefined4 *)__s" * (cast_expression "(undefined4 *)__s" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) = identifier) ;) (expression_statement "__s[4] = DAT_0003abf0;" (assignment_expression "__s[4] = DAT_0003abf0" (subscript_expression "__s[4]" identifier [ number_literal ]) = identifier) ;) })) (expression_statement "sVar5 = strlen(__s);" (assignment_expression "sVar5 = strlen(__s)" identifier = (call_expression "strlen(__s)" identifier (argument_list "(__s)" ( identifier )))) ;) (expression_statement "__dest = __s + sVar5;" (assignment_expression "__dest = __s + sVar5" identifier = (binary_expression "__s + sVar5" identifier + identifier)) ;) (expression_statement "pvVar8 = param_1;" (assignment_expression "pvVar8 = param_1" identifier = identifier) ;) (do_statement "do {\n    sVar5 = (int)param_1 + (param_2 - (int)pvVar8);\n    pvVar6 = (void *)FUN_00036f10(pvVar8,0,sVar5);\n    if (pvVar6 == (void *)0x0) {\n      pcVar10 = __dest + sVar5;\n      memcpy(__dest,pvVar8,sVar5);\n      uVar9 = DAT_0003abe8;\n      if (cVar1 == '\0') {\n        *pcVar10 = '\0';\n      }\n      else {\n        *(undefined4 *)pcVar10 = DAT_0003abe4;\n        *(undefined4 *)(pcVar10 + 4) = uVar9;\n      }\n      if (cVar2 != '\0') {\n        *(undefined2 *)pcVar10 = DAT_0003abe0;\n        pcVar10[2] = DAT_0003abe2;\n      }\n      uVar9 = pcre_maketables();\n      iVar3 = pcre_compile(__s,local_4e4,&local_4d4,&local_4d8,uVar9);\n      *piVar4 = iVar3;\n      if (iVar3 == 0) {\n                    \n        error(2,0,&DAT_0003ac56,local_4d4);\n      }\n      iVar3 = pcre_study(iVar3,9,&local_4d4);\n      piVar4[1] = iVar3;\n      if (local_4d4 != 0) {\n                    \n        error(2,0,&DAT_0003ac56,local_4d4);\n      }\n      uVar13 = pcre_fullinfo(*piVar4,iVar3,0x10,&local_4d8);\n      if ((int)uVar13 != 0) {\n        uVar9 = dcgettext(0,"internal error (should never happen)",5,\n                          (int)((ulonglong)uVar13 >> 0x20));\n                    \n        error(2,0,uVar9);\n      }\n      if (local_4d8 != 0) {\n        piVar4[3] = 0x8000;\n      }\n      free(__s);\n      iVar3 = pcre_exec(*piVar4,piVar4[1],"",0,0,0x80,local_4d0,300);\n      piVar4[4] = iVar3;\n      iVar3 = pcre_exec(*piVar4,piVar4[1],"",0,0,0,local_4d0,300);\n      piVar4[5] = iVar3;\n      if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    \n        FUN_00038830();\n      }\n      return piVar4;\n    }\n    sVar5 = (int)pvVar6 - (int)pvVar8;\n    memcpy(__dest,pvVar8,sVar5);\n    if ((param_1 < pvVar6) && (pvVar8 = pvVar6, *(char *)((int)pvVar6 - 1) == '\\')) {\n      do {\n        pvVar7 = (void *)((int)pvVar8 - 1);\n        if (param_1 == pvVar7) {\n          sVar5 = sVar5 - ((int)pvVar6 - (int)param_1 & 1U);\n          goto LAB_0001e130;\n        }\n        pcVar10 = (char *)((int)pvVar8 - 2);\n        pvVar8 = pvVar7;\n      } while (*pcVar10 == '\\');\n      sVar5 = sVar5 - ((int)pvVar6 - (int)pvVar7 & 1U);\n    }\nLAB_0001e130:\n    pvVar8 = (void *)((int)pvVar6 + 1);\n    builtin_strncpy(__dest + sVar5,"\\000",5);\n    __dest = __dest + sVar5 + 4;\n  } while( true );" do (compound_statement "{\n    sVar5 = (int)param_1 + (param_2 - (int)pvVar8);\n    pvVar6 = (void *)FUN_00036f10(pvVar8,0,sVar5);\n    if (pvVar6 == (void *)0x0) {\n      pcVar10 = __dest + sVar5;\n      memcpy(__dest,pvVar8,sVar5);\n      uVar9 = DAT_0003abe8;\n      if (cVar1 == '\0') {\n        *pcVar10 = '\0';\n      }\n      else {\n        *(undefined4 *)pcVar10 = DAT_0003abe4;\n        *(undefined4 *)(pcVar10 + 4) = uVar9;\n      }\n      if (cVar2 != '\0') {\n        *(undefined2 *)pcVar10 = DAT_0003abe0;\n        pcVar10[2] = DAT_0003abe2;\n      }\n      uVar9 = pcre_maketables();\n      iVar3 = pcre_compile(__s,local_4e4,&local_4d4,&local_4d8,uVar9);\n      *piVar4 = iVar3;\n      if (iVar3 == 0) {\n                    \n        error(2,0,&DAT_0003ac56,local_4d4);\n      }\n      iVar3 = pcre_study(iVar3,9,&local_4d4);\n      piVar4[1] = iVar3;\n      if (local_4d4 != 0) {\n                    \n        error(2,0,&DAT_0003ac56,local_4d4);\n      }\n      uVar13 = pcre_fullinfo(*piVar4,iVar3,0x10,&local_4d8);\n      if ((int)uVar13 != 0) {\n        uVar9 = dcgettext(0,"internal error (should never happen)",5,\n                          (int)((ulonglong)uVar13 >> 0x20));\n                    \n        error(2,0,uVar9);\n      }\n      if (local_4d8 != 0) {\n        piVar4[3] = 0x8000;\n      }\n      free(__s);\n      iVar3 = pcre_exec(*piVar4,piVar4[1],"",0,0,0x80,local_4d0,300);\n      piVar4[4] = iVar3;\n      iVar3 = pcre_exec(*piVar4,piVar4[1],"",0,0,0,local_4d0,300);\n      piVar4[5] = iVar3;\n      if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    \n        FUN_00038830();\n      }\n      return piVar4;\n    }\n    sVar5 = (int)pvVar6 - (int)pvVar8;\n    memcpy(__dest,pvVar8,sVar5);\n    if ((param_1 < pvVar6) && (pvVar8 = pvVar6, *(char *)((int)pvVar6 - 1) == '\\')) {\n      do {\n        pvVar7 = (void *)((int)pvVar8 - 1);\n        if (param_1 == pvVar7) {\n          sVar5 = sVar5 - ((int)pvVar6 - (int)param_1 & 1U);\n          goto LAB_0001e130;\n        }\n        pcVar10 = (char *)((int)pvVar8 - 2);\n        pvVar8 = pvVar7;\n      } while (*pcVar10 == '\\');\n      sVar5 = sVar5 - ((int)pvVar6 - (int)pvVar7 & 1U);\n    }\nLAB_0001e130:\n    pvVar8 = (void *)((int)pvVar6 + 1);\n    builtin_strncpy(__dest + sVar5,"\\000",5);\n    __dest = __dest + sVar5 + 4;\n  }" { (expression_statement "sVar5 = (int)param_1 + (param_2 - (int)pvVar8);" (assignment_expression "sVar5 = (int)param_1 + (param_2 - (int)pvVar8)" identifier = (binary_expression "(int)param_1 + (param_2 - (int)pvVar8)" (cast_expression "(int)param_1" ( (type_descriptor "int" primitive_type) ) identifier) + (parenthesized_expression "(param_2 - (int)pvVar8)" ( (binary_expression "param_2 - (int)pvVar8" identifier - (cast_expression "(int)pvVar8" ( (type_descriptor "int" primitive_type) ) identifier)) )))) ;) (expression_statement "pvVar6 = (void *)FUN_00036f10(pvVar8,0,sVar5);" (assignment_expression "pvVar6 = (void *)FUN_00036f10(pvVar8,0,sVar5)" identifier = (cast_expression "(void *)FUN_00036f10(pvVar8,0,sVar5)" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00036f10(pvVar8,0,sVar5)" identifier (argument_list "(pvVar8,0,sVar5)" ( identifier , number_literal , identifier ))))) ;) (if_statement "if (pvVar6 == (void *)0x0) {\n      pcVar10 = __dest + sVar5;\n      memcpy(__dest,pvVar8,sVar5);\n      uVar9 = DAT_0003abe8;\n      if (cVar1 == '\0') {\n        *pcVar10 = '\0';\n      }\n      else {\n        *(undefined4 *)pcVar10 = DAT_0003abe4;\n        *(undefined4 *)(pcVar10 + 4) = uVar9;\n      }\n      if (cVar2 != '\0') {\n        *(undefined2 *)pcVar10 = DAT_0003abe0;\n        pcVar10[2] = DAT_0003abe2;\n      }\n      uVar9 = pcre_maketables();\n      iVar3 = pcre_compile(__s,local_4e4,&local_4d4,&local_4d8,uVar9);\n      *piVar4 = iVar3;\n      if (iVar3 == 0) {\n                    \n        error(2,0,&DAT_0003ac56,local_4d4);\n      }\n      iVar3 = pcre_study(iVar3,9,&local_4d4);\n      piVar4[1] = iVar3;\n      if (local_4d4 != 0) {\n                    \n        error(2,0,&DAT_0003ac56,local_4d4);\n      }\n      uVar13 = pcre_fullinfo(*piVar4,iVar3,0x10,&local_4d8);\n      if ((int)uVar13 != 0) {\n        uVar9 = dcgettext(0,"internal error (should never happen)",5,\n                          (int)((ulonglong)uVar13 >> 0x20));\n                    \n        error(2,0,uVar9);\n      }\n      if (local_4d8 != 0) {\n        piVar4[3] = 0x8000;\n      }\n      free(__s);\n      iVar3 = pcre_exec(*piVar4,piVar4[1],"",0,0,0x80,local_4d0,300);\n      piVar4[4] = iVar3;\n      iVar3 = pcre_exec(*piVar4,piVar4[1],"",0,0,0,local_4d0,300);\n      piVar4[5] = iVar3;\n      if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    \n        FUN_00038830();\n      }\n      return piVar4;\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      pcVar10 = __dest + sVar5;\n      memcpy(__dest,pvVar8,sVar5);\n      uVar9 = DAT_0003abe8;\n      if (cVar1 == '\0') {\n        *pcVar10 = '\0';\n      }\n      else {\n        *(undefined4 *)pcVar10 = DAT_0003abe4;\n        *(undefined4 *)(pcVar10 + 4) = uVar9;\n      }\n      if (cVar2 != '\0') {\n        *(undefined2 *)pcVar10 = DAT_0003abe0;\n        pcVar10[2] = DAT_0003abe2;\n      }\n      uVar9 = pcre_maketables();\n      iVar3 = pcre_compile(__s,local_4e4,&local_4d4,&local_4d8,uVar9);\n      *piVar4 = iVar3;\n      if (iVar3 == 0) {\n                    \n        error(2,0,&DAT_0003ac56,local_4d4);\n      }\n      iVar3 = pcre_study(iVar3,9,&local_4d4);\n      piVar4[1] = iVar3;\n      if (local_4d4 != 0) {\n                    \n        error(2,0,&DAT_0003ac56,local_4d4);\n      }\n      uVar13 = pcre_fullinfo(*piVar4,iVar3,0x10,&local_4d8);\n      if ((int)uVar13 != 0) {\n        uVar9 = dcgettext(0,"internal error (should never happen)",5,\n                          (int)((ulonglong)uVar13 >> 0x20));\n                    \n        error(2,0,uVar9);\n      }\n      if (local_4d8 != 0) {\n        piVar4[3] = 0x8000;\n      }\n      free(__s);\n      iVar3 = pcre_exec(*piVar4,piVar4[1],"",0,0,0x80,local_4d0,300);\n      piVar4[4] = iVar3;\n      iVar3 = pcre_exec(*piVar4,piVar4[1],"",0,0,0,local_4d0,300);\n      piVar4[5] = iVar3;\n      if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    \n        FUN_00038830();\n      }\n      return piVar4;\n    }" { (expression_statement "pcVar10 = __dest + sVar5;" (assignment_expression "pcVar10 = __dest + sVar5" identifier = (binary_expression "__dest + sVar5" identifier + identifier)) ;) (expression_statement "memcpy(__dest,pvVar8,sVar5);" (call_expression "memcpy(__dest,pvVar8,sVar5)" identifier (argument_list "(__dest,pvVar8,sVar5)" ( identifier , identifier , identifier ))) ;) (expression_statement "uVar9 = DAT_0003abe8;" (assignment_expression "uVar9 = DAT_0003abe8" identifier = identifier) ;) (if_statement "if (cVar1 == '\0') {\n        *pcVar10 = '\0';\n      }\n      else {\n        *(undefined4 *)pcVar10 = DAT_0003abe4;\n        *(undefined4 *)(pcVar10 + 4) = uVar9;\n      }" if (parenthesized_expression "(cVar1 == '\0')" ( (binary_expression "cVar1 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n        *pcVar10 = '\0';\n      }" { (expression_statement "*pcVar10 = '\0';" (assignment_expression "*pcVar10 = '\0'" (pointer_expression "*pcVar10" * identifier) = (char_literal "'\0'" ' escape_sequence ')) ;) }) (else_clause "else {\n        *(undefined4 *)pcVar10 = DAT_0003abe4;\n        *(undefined4 *)(pcVar10 + 4) = uVar9;\n      }" else (compound_statement "{\n        *(undefined4 *)pcVar10 = DAT_0003abe4;\n        *(undefined4 *)(pcVar10 + 4) = uVar9;\n      }" { (expression_statement "*(undefined4 *)pcVar10 = DAT_0003abe4;" (assignment_expression "*(undefined4 *)pcVar10 = DAT_0003abe4" (pointer_expression "*(undefined4 *)pcVar10" * (cast_expression "(undefined4 *)pcVar10" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) = identifier) ;) (expression_statement "*(undefined4 *)(pcVar10 + 4) = uVar9;" (assignment_expression "*(undefined4 *)(pcVar10 + 4) = uVar9" (pointer_expression "*(undefined4 *)(pcVar10 + 4)" * (cast_expression "(undefined4 *)(pcVar10 + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar10 + 4)" ( (binary_expression "pcVar10 + 4" identifier + number_literal) )))) = identifier) ;) }))) (if_statement "if (cVar2 != '\0') {\n        *(undefined2 *)pcVar10 = DAT_0003abe0;\n        pcVar10[2] = DAT_0003abe2;\n      }" if (parenthesized_expression "(cVar2 != '\0')" ( (binary_expression "cVar2 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n        *(undefined2 *)pcVar10 = DAT_0003abe0;\n        pcVar10[2] = DAT_0003abe2;\n      }" { (expression_statement "*(undefined2 *)pcVar10 = DAT_0003abe0;" (assignment_expression "*(undefined2 *)pcVar10 = DAT_0003abe0" (pointer_expression "*(undefined2 *)pcVar10" * (cast_expression "(undefined2 *)pcVar10" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) = identifier) ;) (expression_statement "pcVar10[2] = DAT_0003abe2;" (assignment_expression "pcVar10[2] = DAT_0003abe2" (subscript_expression "pcVar10[2]" identifier [ number_literal ]) = identifier) ;) })) (expression_statement "uVar9 = pcre_maketables();" (assignment_expression "uVar9 = pcre_maketables()" identifier = (call_expression "pcre_maketables()" identifier (argument_list "()" ( )))) ;) (expression_statement "iVar3 = pcre_compile(__s,local_4e4,&local_4d4,&local_4d8,uVar9);" (assignment_expression "iVar3 = pcre_compile(__s,local_4e4,&local_4d4,&local_4d8,uVar9)" identifier = (call_expression "pcre_compile(__s,local_4e4,&local_4d4,&local_4d8,uVar9)" identifier (argument_list "(__s,local_4e4,&local_4d4,&local_4d8,uVar9)" ( identifier , identifier , (pointer_expression "&local_4d4" & identifier) , (pointer_expression "&local_4d8" & identifier) , identifier )))) ;) (expression_statement "*piVar4 = iVar3;" (assignment_expression "*piVar4 = iVar3" (pointer_expression "*piVar4" * identifier) = identifier) ;) (if_statement "if (iVar3 == 0) {\n                    \n        error(2,0,&DAT_0003ac56,local_4d4);\n      }" if (parenthesized_expression "(iVar3 == 0)" ( (binary_expression "iVar3 == 0" identifier == number_literal) )) (compound_statement "{\n                    \n        error(2,0,&DAT_0003ac56,local_4d4);\n      }" { (expression_statement "error(2,0,&DAT_0003ac56,local_4d4);" (call_expression "error(2,0,&DAT_0003ac56,local_4d4)" identifier (argument_list "(2,0,&DAT_0003ac56,local_4d4)" ( number_literal , number_literal , (pointer_expression "&DAT_0003ac56" & identifier) , identifier ))) ;) })) (expression_statement "iVar3 = pcre_study(iVar3,9,&local_4d4);" (assignment_expression "iVar3 = pcre_study(iVar3,9,&local_4d4)" identifier = (call_expression "pcre_study(iVar3,9,&local_4d4)" identifier (argument_list "(iVar3,9,&local_4d4)" ( identifier , number_literal , (pointer_expression "&local_4d4" & identifier) )))) ;) (expression_statement "piVar4[1] = iVar3;" (assignment_expression "piVar4[1] = iVar3" (subscript_expression "piVar4[1]" identifier [ number_literal ]) = identifier) ;) (if_statement "if (local_4d4 != 0) {\n                    \n        error(2,0,&DAT_0003ac56,local_4d4);\n      }" if (parenthesized_expression "(local_4d4 != 0)" ( (binary_expression "local_4d4 != 0" identifier != number_literal) )) (compound_statement "{\n                    \n        error(2,0,&DAT_0003ac56,local_4d4);\n      }" { (expression_statement "error(2,0,&DAT_0003ac56,local_4d4);" (call_expression "error(2,0,&DAT_0003ac56,local_4d4)" identifier (argument_list "(2,0,&DAT_0003ac56,local_4d4)" ( number_literal , number_literal , (pointer_expression "&DAT_0003ac56" & identifier) , identifier ))) ;) })) (expression_statement "uVar13 = pcre_fullinfo(*piVar4,iVar3,0x10,&local_4d8);" (assignment_expression "uVar13 = pcre_fullinfo(*piVar4,iVar3,0x10,&local_4d8)" identifier = (call_expression "pcre_fullinfo(*piVar4,iVar3,0x10,&local_4d8)" identifier (argument_list "(*piVar4,iVar3,0x10,&local_4d8)" ( (pointer_expression "*piVar4" * identifier) , identifier , number_literal , (pointer_expression "&local_4d8" & identifier) )))) ;) (if_statement "if ((int)uVar13 != 0) {\n        uVar9 = dcgettext(0,"internal error (should never happen)",5,\n                          (int)((ulonglong)uVar13 >> 0x20));\n                    \n        error(2,0,uVar9);\n      }" if (parenthesized_expression "((int)uVar13 != 0)" ( (binary_expression "(int)uVar13 != 0" (cast_expression "(int)uVar13" ( (type_descriptor "int" primitive_type) ) identifier) != number_literal) )) (compound_statement "{\n        uVar9 = dcgettext(0,"internal error (should never happen)",5,\n                          (int)((ulonglong)uVar13 >> 0x20));\n                    \n        error(2,0,uVar9);\n      }" { (expression_statement "uVar9 = dcgettext(0,"internal error (should never happen)",5,\n                          (int)((ulonglong)uVar13 >> 0x20));" (assignment_expression "uVar9 = dcgettext(0,"internal error (should never happen)",5,\n                          (int)((ulonglong)uVar13 >> 0x20))" identifier = (call_expression "dcgettext(0,"internal error (should never happen)",5,\n                          (int)((ulonglong)uVar13 >> 0x20))" identifier (argument_list "(0,"internal error (should never happen)",5,\n                          (int)((ulonglong)uVar13 >> 0x20))" ( number_literal , (string_literal ""internal error (should never happen)"" " string_content ") , number_literal , (cast_expression "(int)((ulonglong)uVar13 >> 0x20)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((ulonglong)uVar13 >> 0x20)" ( (binary_expression "(ulonglong)uVar13 >> 0x20" (cast_expression "(ulonglong)uVar13" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) ))) )))) ;) (expression_statement "error(2,0,uVar9);" (call_expression "error(2,0,uVar9)" identifier (argument_list "(2,0,uVar9)" ( number_literal , number_literal , identifier ))) ;) })) (if_statement "if (local_4d8 != 0) {\n        piVar4[3] = 0x8000;\n      }" if (parenthesized_expression "(local_4d8 != 0)" ( (binary_expression "local_4d8 != 0" identifier != number_literal) )) (compound_statement "{\n        piVar4[3] = 0x8000;\n      }" { (expression_statement "piVar4[3] = 0x8000;" (assignment_expression "piVar4[3] = 0x8000" (subscript_expression "piVar4[3]" identifier [ number_literal ]) = number_literal) ;) })) (expression_statement "free(__s);" (call_expression "free(__s)" identifier (argument_list "(__s)" ( identifier ))) ;) (expression_statement "iVar3 = pcre_exec(*piVar4,piVar4[1],"",0,0,0x80,local_4d0,300);" (assignment_expression "iVar3 = pcre_exec(*piVar4,piVar4[1],"",0,0,0x80,local_4d0,300)" identifier = (call_expression "pcre_exec(*piVar4,piVar4[1],"",0,0,0x80,local_4d0,300)" identifier (argument_list "(*piVar4,piVar4[1],"",0,0,0x80,local_4d0,300)" ( (pointer_expression "*piVar4" * identifier) , (subscript_expression "piVar4[1]" identifier [ number_literal ]) , (string_literal """" " ") , number_literal , number_literal , number_literal , identifier , number_literal )))) ;) (expression_statement "piVar4[4] = iVar3;" (assignment_expression "piVar4[4] = iVar3" (subscript_expression "piVar4[4]" identifier [ number_literal ]) = identifier) ;) (expression_statement "iVar3 = pcre_exec(*piVar4,piVar4[1],"",0,0,0,local_4d0,300);" (assignment_expression "iVar3 = pcre_exec(*piVar4,piVar4[1],"",0,0,0,local_4d0,300)" identifier = (call_expression "pcre_exec(*piVar4,piVar4[1],"",0,0,0,local_4d0,300)" identifier (argument_list "(*piVar4,piVar4[1],"",0,0,0,local_4d0,300)" ( (pointer_expression "*piVar4" * identifier) , (subscript_expression "piVar4[1]" identifier [ number_literal ]) , (string_literal """" " ") , number_literal , number_literal , number_literal , identifier , number_literal )))) ;) (expression_statement "piVar4[5] = iVar3;" (assignment_expression "piVar4[5] = iVar3" (subscript_expression "piVar4[5]" identifier [ number_literal ]) = identifier) ;) (if_statement "if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    \n        FUN_00038830();\n      }" if (parenthesized_expression "(local_20 != *(int *)(in_GS_OFFSET + 0x14))" ( (binary_expression "local_20 != *(int *)(in_GS_OFFSET + 0x14)" identifier != (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" * (cast_expression "(int *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) )) (compound_statement "{\n                    \n        FUN_00038830();\n      }" { (expression_statement "FUN_00038830();" (call_expression "FUN_00038830()" identifier (argument_list "()" ( ))) ;) })) (return_statement "return piVar4;" return identifier ;) })) (expression_statement "sVar5 = (int)pvVar6 - (int)pvVar8;" (assignment_expression "sVar5 = (int)pvVar6 - (int)pvVar8" identifier = (binary_expression "(int)pvVar6 - (int)pvVar8" (cast_expression "(int)pvVar6" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)pvVar8" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (expression_statement "memcpy(__dest,pvVar8,sVar5);" (call_expression "memcpy(__dest,pvVar8,sVar5)" identifier (argument_list "(__dest,pvVar8,sVar5)" ( identifier , identifier , identifier ))) ;) (if_statement "if ((param_1 < pvVar6) && (pvVar8 = pvVar6, *(char *)((int)pvVar6 - 1) == '\\')) {\n      do {\n        pvVar7 = (void *)((int)pvVar8 - 1);\n        if (param_1 == pvVar7) {\n          sVar5 = sVar5 - ((int)pvVar6 - (int)param_1 & 1U);\n          goto LAB_0001e130;\n        }\n        pcVar10 = (char *)((int)pvVar8 - 2);\n        pvVar8 = pvVar7;\n      } while (*pcVar10 == '\\');\n      sVar5 = sVar5 - ((int)pvVar6 - (int)pvVar7 & 1U);\n    }" if (parenthesized_expression "((param_1 < pvVar6) && (pvVar8 = pvVar6, *(char *)((int)pvVar6 - 1) == '\\'))" ( (binary_expression "(param_1 < pvVar6) && (pvVar8 = pvVar6, *(char *)((int)pvVar6 - 1) == '\\')" (parenthesized_expression "(param_1 < pvVar6)" ( (binary_expression "param_1 < pvVar6" identifier < identifier) )) && (parenthesized_expression "(pvVar8 = pvVar6, *(char *)((int)pvVar6 - 1) == '\\')" ( (comma_expression "pvVar8 = pvVar6, *(char *)((int)pvVar6 - 1) == '\\'" (assignment_expression "pvVar8 = pvVar6" identifier = identifier) , (binary_expression "*(char *)((int)pvVar6 - 1) == '\\'" (pointer_expression "*(char *)((int)pvVar6 - 1)" * (cast_expression "(char *)((int)pvVar6 - 1)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)pvVar6 - 1)" ( (binary_expression "(int)pvVar6 - 1" (cast_expression "(int)pvVar6" ( (type_descriptor "int" primitive_type) ) identifier) - number_literal) )))) == (char_literal "'\\'" ' escape_sequence '))) ))) )) (compound_statement "{\n      do {\n        pvVar7 = (void *)((int)pvVar8 - 1);\n        if (param_1 == pvVar7) {\n          sVar5 = sVar5 - ((int)pvVar6 - (int)param_1 & 1U);\n          goto LAB_0001e130;\n        }\n        pcVar10 = (char *)((int)pvVar8 - 2);\n        pvVar8 = pvVar7;\n      } while (*pcVar10 == '\\');\n      sVar5 = sVar5 - ((int)pvVar6 - (int)pvVar7 & 1U);\n    }" { (do_statement "do {\n        pvVar7 = (void *)((int)pvVar8 - 1);\n        if (param_1 == pvVar7) {\n          sVar5 = sVar5 - ((int)pvVar6 - (int)param_1 & 1U);\n          goto LAB_0001e130;\n        }\n        pcVar10 = (char *)((int)pvVar8 - 2);\n        pvVar8 = pvVar7;\n      } while (*pcVar10 == '\\');" do (compound_statement "{\n        pvVar7 = (void *)((int)pvVar8 - 1);\n        if (param_1 == pvVar7) {\n          sVar5 = sVar5 - ((int)pvVar6 - (int)param_1 & 1U);\n          goto LAB_0001e130;\n        }\n        pcVar10 = (char *)((int)pvVar8 - 2);\n        pvVar8 = pvVar7;\n      }" { (expression_statement "pvVar7 = (void *)((int)pvVar8 - 1);" (assignment_expression "pvVar7 = (void *)((int)pvVar8 - 1)" identifier = (cast_expression "(void *)((int)pvVar8 - 1)" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)pvVar8 - 1)" ( (binary_expression "(int)pvVar8 - 1" (cast_expression "(int)pvVar8" ( (type_descriptor "int" primitive_type) ) identifier) - number_literal) )))) ;) (if_statement "if (param_1 == pvVar7) {\n          sVar5 = sVar5 - ((int)pvVar6 - (int)param_1 & 1U);\n          goto LAB_0001e130;\n        }" if (parenthesized_expression "(param_1 == pvVar7)" ( (binary_expression "param_1 == pvVar7" identifier == identifier) )) (compound_statement "{\n          sVar5 = sVar5 - ((int)pvVar6 - (int)param_1 & 1U);\n          goto LAB_0001e130;\n        }" { (expression_statement "sVar5 = sVar5 - ((int)pvVar6 - (int)param_1 & 1U);" (assignment_expression "sVar5 = sVar5 - ((int)pvVar6 - (int)param_1 & 1U)" identifier = (binary_expression "sVar5 - ((int)pvVar6 - (int)param_1 & 1U)" identifier - (parenthesized_expression "((int)pvVar6 - (int)param_1 & 1U)" ( (binary_expression "(int)pvVar6 - (int)param_1 & 1U" (binary_expression "(int)pvVar6 - (int)param_1" (cast_expression "(int)pvVar6" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)param_1" ( (type_descriptor "int" primitive_type) ) identifier)) & number_literal) )))) ;) (goto_statement "goto LAB_0001e130;" goto statement_identifier ;) })) (expression_statement "pcVar10 = (char *)((int)pvVar8 - 2);" (assignment_expression "pcVar10 = (char *)((int)pvVar8 - 2)" identifier = (cast_expression "(char *)((int)pvVar8 - 2)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)pvVar8 - 2)" ( (binary_expression "(int)pvVar8 - 2" (cast_expression "(int)pvVar8" ( (type_descriptor "int" primitive_type) ) identifier) - number_literal) )))) ;) (expression_statement "pvVar8 = pvVar7;" (assignment_expression "pvVar8 = pvVar7" identifier = identifier) ;) }) while (parenthesized_expression "(*pcVar10 == '\\')" ( (binary_expression "*pcVar10 == '\\'" (pointer_expression "*pcVar10" * identifier) == (char_literal "'\\'" ' escape_sequence ')) )) ;) (expression_statement "sVar5 = sVar5 - ((int)pvVar6 - (int)pvVar7 & 1U);" (assignment_expression "sVar5 = sVar5 - ((int)pvVar6 - (int)pvVar7 & 1U)" identifier = (binary_expression "sVar5 - ((int)pvVar6 - (int)pvVar7 & 1U)" identifier - (parenthesized_expression "((int)pvVar6 - (int)pvVar7 & 1U)" ( (binary_expression "(int)pvVar6 - (int)pvVar7 & 1U" (binary_expression "(int)pvVar6 - (int)pvVar7" (cast_expression "(int)pvVar6" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)pvVar7" ( (type_descriptor "int" primitive_type) ) identifier)) & number_literal) )))) ;) })) (labeled_statement "LAB_0001e130:\n    pvVar8 = (void *)((int)pvVar6 + 1);" statement_identifier : (expression_statement "pvVar8 = (void *)((int)pvVar6 + 1);" (assignment_expression "pvVar8 = (void *)((int)pvVar6 + 1)" identifier = (cast_expression "(void *)((int)pvVar6 + 1)" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)pvVar6 + 1)" ( (binary_expression "(int)pvVar6 + 1" (cast_expression "(int)pvVar6" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;)) (expression_statement "builtin_strncpy(__dest + sVar5,"\\000",5);" (call_expression "builtin_strncpy(__dest + sVar5,"\\000",5)" identifier (argument_list "(__dest + sVar5,"\\000",5)" ( (binary_expression "__dest + sVar5" identifier + identifier) , (string_literal ""\\000"" " escape_sequence string_content ") , number_literal ))) ;) (expression_statement "__dest = __dest + sVar5 + 4;" (assignment_expression "__dest = __dest + sVar5 + 4" identifier = (binary_expression "__dest + sVar5 + 4" (binary_expression "__dest + sVar5" identifier + identifier) + number_literal)) ;) }) while (parenthesized_expression "( true )" ( true )) ;) })))
(translation_unit (function_definition TYPE (pointer_declarator * (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE IDENT) )))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * 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 ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (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 (parenthesized_expression ( (binary_expression IDENT + LIT) )) * LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT < LIT) )) || (parenthesized_expression ( (binary_expression (binary_expression (binary_expression IDENT + LIT) >> LIT) != LIT) ))) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( ))) ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( IDENT ))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT == (char_literal ' escape_sequence '))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT == (char_literal ' escape_sequence '))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( LIT , LIT ))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression LIT - (cast_expression ( (type_descriptor TYPE) ) IDENT))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT != (char_literal ' escape_sequence ')) )) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (binary_expression LIT - (cast_expression ( (type_descriptor TYPE) ) IDENT))) , (binary_expression IDENT == (char_literal ' escape_sequence '))) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( LIT , (string_literal " string_content ") , LIT , IDENT )))) ;) (expression_statement (call_expression IDENT (argument_list ( LIT , LIT , IDENT ))) ;) })) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , LIT , IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( LIT , (string_literal " string_content ") , LIT , IDENT )))) ;) (expression_statement (call_expression IDENT (argument_list ( LIT , LIT , IDENT ))) ;) })) (expression_statement (assignment_expression (pointer_expression * IDENT) = (char_literal ' escape_sequence ')) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) })) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) })) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + (parenthesized_expression ( (binary_expression IDENT - (cast_expression ( (type_descriptor TYPE) ) IDENT)) )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( IDENT , LIT , IDENT ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT ))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = (char_literal ' escape_sequence ')) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) }))) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) })) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT , (pointer_expression & IDENT) , (pointer_expression & IDENT) , IDENT )))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( LIT , LIT , (pointer_expression & IDENT) , IDENT ))) ;) })) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , LIT , (pointer_expression & IDENT) )))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( LIT , LIT , (pointer_expression & IDENT) , IDENT ))) ;) })) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (pointer_expression * IDENT) , IDENT , LIT , (pointer_expression & IDENT) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( LIT , (string_literal " string_content ") , LIT , (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT) ))) )))) ;) (expression_statement (call_expression IDENT (argument_list ( LIT , LIT , IDENT ))) ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) })) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (pointer_expression * IDENT) , (subscript_expression IDENT [ LIT ]) , (string_literal " ") , LIT , LIT , LIT , IDENT , LIT )))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (pointer_expression * IDENT) , (subscript_expression IDENT [ LIT ]) , (string_literal " ") , LIT , LIT , LIT , IDENT , LIT )))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( ))) ;) })) (return_statement return IDENT ;) })) (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) - (cast_expression ( (type_descriptor TYPE) ) IDENT))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT ))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT < IDENT) )) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = IDENT) , (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) - LIT) )))) == (char_literal ' escape_sequence '))) ))) )) (compound_statement { (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) - LIT) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT - (parenthesized_expression ( (binary_expression (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) - (cast_expression ( (type_descriptor TYPE) ) IDENT)) & LIT) )))) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) - LIT) )))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }) while (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) == (char_literal ' escape_sequence ')) )) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT - (parenthesized_expression ( (binary_expression (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) - (cast_expression ( (type_descriptor TYPE) ) IDENT)) & LIT) )))) ;) })) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) ;)) (expression_statement (call_expression IDENT (argument_list ( (binary_expression IDENT + IDENT) , (string_literal " escape_sequence string_content ") , LIT ))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + IDENT) + LIT)) ;) }) while (parenthesized_expression ( BOOL )) ;) })))
(function_definition "int * FUN_0001e020(void *param_1,int param_2)\n\n{\n  char cVar1;\n  char cVar2;\n  int iVar3;\n  char *__s;\n  int *piVar4;\n  size_t sVar5;\n  void *pvVar6;\n  void *pvVar7;\n  undefined4 uVar9;\n  undefined4 extraout_ECX;\n  char *__dest;\n  char *pcVar10;\n  int in_GS_OFFSET;\n  bool bVar11;\n  bool bVar12;\n  undefined8 uVar13;\n  int local_4e4;\n  int local_4d8;\n  int local_4d4;\n  undefined1 local_4d0 [1200];\n  int local_20;\n  undefined4 uStack_14;\n  void *pvVar8;\n  \n  uStack_14 = 0x1e029;\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  iVar3 = (param_2 + 5U) * 4;\n  if ((iVar3 < 0) || (param_2 + 5U >> 0x1e != 0)) {\n                    \n    FUN_0002f1c0();\n  }\n  __s = (char *)FUN_0002efa0(iVar3);\n  bVar11 = DAT_0004ca26 == '\0';\n  bVar12 = DAT_0004ca26 == '\0';\n  piVar4 = (int *)FUN_0002f0e0(1,0x18);\n  local_4e4 = 0x21 - (uint)bVar12;\n  if ((DAT_0004c520 != '\0') && (local_4e4 = 0x821 - (uint)bVar11, DAT_0004c521 == '\0')) {\n    uVar9 = dcgettext(0,"-P supports only unibyte and UTF-8 locales",5,param_2);\n                    \n    error(2,0,uVar9);\n  }\n  iVar3 = FUN_00036f10(param_1,10,param_2);\n  if (iVar3 != 0) {\n    uVar9 = dcgettext(0,"the -P option only supports a single pattern",5,extraout_ECX);\n                    \n    error(2,0,uVar9);\n  }\n  *__s = '\0';\n  cVar1 = DAT_0004ca24;\n  if (DAT_0004ca24 != '\0') {\n    *(undefined4 *)__s = DAT_0003abf4;\n    *(undefined4 *)(__s + 4) = DAT_0003abf8;\n    *(undefined2 *)(__s + 8) = DAT_0003abfc;\n    __s[10] = DAT_0003abfe;\n  }\n  cVar2 = DAT_0004ca25;\n  if (DAT_0004ca25 != '\0') {\n    *(undefined4 *)__s = DAT_0003abec;\n    __s[4] = DAT_0003abf0;\n  }\n  sVar5 = strlen(__s);\n  __dest = __s + sVar5;\n  pvVar8 = param_1;\n  do {\n    sVar5 = (int)param_1 + (param_2 - (int)pvVar8);\n    pvVar6 = (void *)FUN_00036f10(pvVar8,0,sVar5);\n    if (pvVar6 == (void *)0x0) {\n      pcVar10 = __dest + sVar5;\n      memcpy(__dest,pvVar8,sVar5);\n      uVar9 = DAT_0003abe8;\n      if (cVar1 == '\0') {\n        *pcVar10 = '\0';\n      }\n      else {\n        *(undefined4 *)pcVar10 = DAT_0003abe4;\n        *(undefined4 *)(pcVar10 + 4) = uVar9;\n      }\n      if (cVar2 != '\0') {\n        *(undefined2 *)pcVar10 = DAT_0003abe0;\n        pcVar10[2] = DAT_0003abe2;\n      }\n      uVar9 = pcre_maketables();\n      iVar3 = pcre_compile(__s,local_4e4,&local_4d4,&local_4d8,uVar9);\n      *piVar4 = iVar3;\n      if (iVar3 == 0) {\n                    \n        error(2,0,&DAT_0003ac56,local_4d4);\n      }\n      iVar3 = pcre_study(iVar3,9,&local_4d4);\n      piVar4[1] = iVar3;\n      if (local_4d4 != 0) {\n                    \n        error(2,0,&DAT_0003ac56,local_4d4);\n      }\n      uVar13 = pcre_fullinfo(*piVar4,iVar3,0x10,&local_4d8);\n      if ((int)uVar13 != 0) {\n        uVar9 = dcgettext(0,"internal error (should never happen)",5,\n                          (int)((ulonglong)uVar13 >> 0x20));\n                    \n        error(2,0,uVar9);\n      }\n      if (local_4d8 != 0) {\n        piVar4[3] = 0x8000;\n      }\n      free(__s);\n      iVar3 = pcre_exec(*piVar4,piVar4[1],"",0,0,0x80,local_4d0,300);\n      piVar4[4] = iVar3;\n      iVar3 = pcre_exec(*piVar4,piVar4[1],"",0,0,0,local_4d0,300);\n      piVar4[5] = iVar3;\n      if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    \n        FUN_00038830();\n      }\n      return piVar4;\n    }\n    sVar5 = (int)pvVar6 - (int)pvVar8;\n    memcpy(__dest,pvVar8,sVar5);\n    if ((param_1 < pvVar6) && (pvVar8 = pvVar6, *(char *)((int)pvVar6 - 1) == '\\')) {\n      do {\n        pvVar7 = (void *)((int)pvVar8 - 1);\n        if (param_1 == pvVar7) {\n          sVar5 = sVar5 - ((int)pvVar6 - (int)param_1 & 1U);\n          goto LAB_0001e130;\n        }\n        pcVar10 = (char *)((int)pvVar8 - 2);\n        pvVar8 = pvVar7;\n      } while (*pcVar10 == '\\');\n      sVar5 = sVar5 - ((int)pvVar6 - (int)pvVar7 & 1U);\n    }\nLAB_0001e130:\n    pvVar8 = (void *)((int)pvVar6 + 1);\n    builtin_strncpy(__dest + sVar5,"\\000",5);\n    __dest = __dest + sVar5 + 4;\n  } while( true );\n}" (primitive_type "int") (pointer_declarator "* FUN_0001e020(void *param_1,int param_2)" (* "*") (function_declarator "FUN_0001e020(void *param_1,int param_2)" (identifier "FUN_0001e020") (parameter_list "(void *param_1,int param_2)" (( "(") (parameter_declaration "void *param_1" (primitive_type "void") (pointer_declarator "*param_1" (* "*") (identifier "param_1"))) (, ",") (parameter_declaration "int param_2" (primitive_type "int") (identifier "param_2")) () ")")))) (compound_statement "{\n  char cVar1;\n  char cVar2;\n  int iVar3;\n  char *__s;\n  int *piVar4;\n  size_t sVar5;\n  void *pvVar6;\n  void *pvVar7;\n  undefined4 uVar9;\n  undefined4 extraout_ECX;\n  char *__dest;\n  char *pcVar10;\n  int in_GS_OFFSET;\n  bool bVar11;\n  bool bVar12;\n  undefined8 uVar13;\n  int local_4e4;\n  int local_4d8;\n  int local_4d4;\n  undefined1 local_4d0 [1200];\n  int local_20;\n  undefined4 uStack_14;\n  void *pvVar8;\n  \n  uStack_14 = 0x1e029;\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  iVar3 = (param_2 + 5U) * 4;\n  if ((iVar3 < 0) || (param_2 + 5U >> 0x1e != 0)) {\n                    \n    FUN_0002f1c0();\n  }\n  __s = (char *)FUN_0002efa0(iVar3);\n  bVar11 = DAT_0004ca26 == '\0';\n  bVar12 = DAT_0004ca26 == '\0';\n  piVar4 = (int *)FUN_0002f0e0(1,0x18);\n  local_4e4 = 0x21 - (uint)bVar12;\n  if ((DAT_0004c520 != '\0') && (local_4e4 = 0x821 - (uint)bVar11, DAT_0004c521 == '\0')) {\n    uVar9 = dcgettext(0,"-P supports only unibyte and UTF-8 locales",5,param_2);\n                    \n    error(2,0,uVar9);\n  }\n  iVar3 = FUN_00036f10(param_1,10,param_2);\n  if (iVar3 != 0) {\n    uVar9 = dcgettext(0,"the -P option only supports a single pattern",5,extraout_ECX);\n                    \n    error(2,0,uVar9);\n  }\n  *__s = '\0';\n  cVar1 = DAT_0004ca24;\n  if (DAT_0004ca24 != '\0') {\n    *(undefined4 *)__s = DAT_0003abf4;\n    *(undefined4 *)(__s + 4) = DAT_0003abf8;\n    *(undefined2 *)(__s + 8) = DAT_0003abfc;\n    __s[10] = DAT_0003abfe;\n  }\n  cVar2 = DAT_0004ca25;\n  if (DAT_0004ca25 != '\0') {\n    *(undefined4 *)__s = DAT_0003abec;\n    __s[4] = DAT_0003abf0;\n  }\n  sVar5 = strlen(__s);\n  __dest = __s + sVar5;\n  pvVar8 = param_1;\n  do {\n    sVar5 = (int)param_1 + (param_2 - (int)pvVar8);\n    pvVar6 = (void *)FUN_00036f10(pvVar8,0,sVar5);\n    if (pvVar6 == (void *)0x0) {\n      pcVar10 = __dest + sVar5;\n      memcpy(__dest,pvVar8,sVar5);\n      uVar9 = DAT_0003abe8;\n      if (cVar1 == '\0') {\n        *pcVar10 = '\0';\n      }\n      else {\n        *(undefined4 *)pcVar10 = DAT_0003abe4;\n        *(undefined4 *)(pcVar10 + 4) = uVar9;\n      }\n      if (cVar2 != '\0') {\n        *(undefined2 *)pcVar10 = DAT_0003abe0;\n        pcVar10[2] = DAT_0003abe2;\n      }\n      uVar9 = pcre_maketables();\n      iVar3 = pcre_compile(__s,local_4e4,&local_4d4,&local_4d8,uVar9);\n      *piVar4 = iVar3;\n      if (iVar3 == 0) {\n                    \n        error(2,0,&DAT_0003ac56,local_4d4);\n      }\n      iVar3 = pcre_study(iVar3,9,&local_4d4);\n      piVar4[1] = iVar3;\n      if (local_4d4 != 0) {\n                    \n        error(2,0,&DAT_0003ac56,local_4d4);\n      }\n      uVar13 = pcre_fullinfo(*piVar4,iVar3,0x10,&local_4d8);\n      if ((int)uVar13 != 0) {\n        uVar9 = dcgettext(0,"internal error (should never happen)",5,\n                          (int)((ulonglong)uVar13 >> 0x20));\n                    \n        error(2,0,uVar9);\n      }\n      if (local_4d8 != 0) {\n        piVar4[3] = 0x8000;\n      }\n      free(__s);\n      iVar3 = pcre_exec(*piVar4,piVar4[1],"",0,0,0x80,local_4d0,300);\n      piVar4[4] = iVar3;\n      iVar3 = pcre_exec(*piVar4,piVar4[1],"",0,0,0,local_4d0,300);\n      piVar4[5] = iVar3;\n      if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    \n        FUN_00038830();\n      }\n      return piVar4;\n    }\n    sVar5 = (int)pvVar6 - (int)pvVar8;\n    memcpy(__dest,pvVar8,sVar5);\n    if ((param_1 < pvVar6) && (pvVar8 = pvVar6, *(char *)((int)pvVar6 - 1) == '\\')) {\n      do {\n        pvVar7 = (void *)((int)pvVar8 - 1);\n        if (param_1 == pvVar7) {\n          sVar5 = sVar5 - ((int)pvVar6 - (int)param_1 & 1U);\n          goto LAB_0001e130;\n        }\n        pcVar10 = (char *)((int)pvVar8 - 2);\n        pvVar8 = pvVar7;\n      } while (*pcVar10 == '\\');\n      sVar5 = sVar5 - ((int)pvVar6 - (int)pvVar7 & 1U);\n    }\nLAB_0001e130:\n    pvVar8 = (void *)((int)pvVar6 + 1);\n    builtin_strncpy(__dest + sVar5,"\\000",5);\n    __dest = __dest + sVar5 + 4;\n  } while( true );\n}" ({ "{") (declaration "char cVar1;" (primitive_type "char") (identifier "cVar1") (; ";")) (declaration "char cVar2;" (primitive_type "char") (identifier "cVar2") (; ";")) (declaration "int iVar3;" (primitive_type "int") (identifier "iVar3") (; ";")) (declaration "char *__s;" (primitive_type "char") (pointer_declarator "*__s" (* "*") (identifier "__s")) (; ";")) (declaration "int *piVar4;" (primitive_type "int") (pointer_declarator "*piVar4" (* "*") (identifier "piVar4")) (; ";")) (declaration "size_t sVar5;" (primitive_type "size_t") (identifier "sVar5") (; ";")) (declaration "void *pvVar6;" (primitive_type "void") (pointer_declarator "*pvVar6" (* "*") (identifier "pvVar6")) (; ";")) (declaration "void *pvVar7;" (primitive_type "void") (pointer_declarator "*pvVar7" (* "*") (identifier "pvVar7")) (; ";")) (declaration "undefined4 uVar9;" (type_identifier "undefined4") (identifier "uVar9") (; ";")) (declaration "undefined4 extraout_ECX;" (type_identifier "undefined4") (identifier "extraout_ECX") (; ";")) (declaration "char *__dest;" (primitive_type "char") (pointer_declarator "*__dest" (* "*") (identifier "__dest")) (; ";")) (declaration "char *pcVar10;" (primitive_type "char") (pointer_declarator "*pcVar10" (* "*") (identifier "pcVar10")) (; ";")) (declaration "int in_GS_OFFSET;" (primitive_type "int") (identifier "in_GS_OFFSET") (; ";")) (declaration "bool bVar11;" (primitive_type "bool") (identifier "bVar11") (; ";")) (declaration "bool bVar12;" (primitive_type "bool") (identifier "bVar12") (; ";")) (declaration "undefined8 uVar13;" (type_identifier "undefined8") (identifier "uVar13") (; ";")) (declaration "int local_4e4;" (primitive_type "int") (identifier "local_4e4") (; ";")) (declaration "int local_4d8;" (primitive_type "int") (identifier "local_4d8") (; ";")) (declaration "int local_4d4;" (primitive_type "int") (identifier "local_4d4") (; ";")) (declaration "undefined1 local_4d0 [1200];" (type_identifier "undefined1") (array_declarator "local_4d0 [1200]" (identifier "local_4d0") ([ "[") (number_literal "1200") (] "]")) (; ";")) (declaration "int local_20;" (primitive_type "int") (identifier "local_20") (; ";")) (declaration "undefined4 uStack_14;" (type_identifier "undefined4") (identifier "uStack_14") (; ";")) (declaration "void *pvVar8;" (primitive_type "void") (pointer_declarator "*pvVar8" (* "*") (identifier "pvVar8")) (; ";")) (expression_statement "uStack_14 = 0x1e029;" (assignment_expression "uStack_14 = 0x1e029" (identifier "uStack_14") (= "=") (number_literal "0x1e029")) (; ";")) (expression_statement "local_20 = *(int *)(in_GS_OFFSET + 0x14);" (assignment_expression "local_20 = *(int *)(in_GS_OFFSET + 0x14)" (identifier "local_20") (= "=") (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" (* "*") (cast_expression "(int *)(in_GS_OFFSET + 0x14)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(in_GS_OFFSET + 0x14)" (( "(") (binary_expression "in_GS_OFFSET + 0x14" (identifier "in_GS_OFFSET") (+ "+") (number_literal "0x14")) () ")"))))) (; ";")) (expression_statement "iVar3 = (param_2 + 5U) * 4;" (assignment_expression "iVar3 = (param_2 + 5U) * 4" (identifier "iVar3") (= "=") (binary_expression "(param_2 + 5U) * 4" (parenthesized_expression "(param_2 + 5U)" (( "(") (binary_expression "param_2 + 5U" (identifier "param_2") (+ "+") (number_literal "5U")) () ")")) (* "*") (number_literal "4"))) (; ";")) (if_statement "if ((iVar3 < 0) || (param_2 + 5U >> 0x1e != 0)) {\n                    \n    FUN_0002f1c0();\n  }" (if "if") (parenthesized_expression "((iVar3 < 0) || (param_2 + 5U >> 0x1e != 0))" (( "(") (binary_expression "(iVar3 < 0) || (param_2 + 5U >> 0x1e != 0)" (parenthesized_expression "(iVar3 < 0)" (( "(") (binary_expression "iVar3 < 0" (identifier "iVar3") (< "<") (number_literal "0")) () ")")) (|| "||") (parenthesized_expression "(param_2 + 5U >> 0x1e != 0)" (( "(") (binary_expression "param_2 + 5U >> 0x1e != 0" (binary_expression "param_2 + 5U >> 0x1e" (binary_expression "param_2 + 5U" (identifier "param_2") (+ "+") (number_literal "5U")) (>> ">>") (number_literal "0x1e")) (!= "!=") (number_literal "0")) () ")"))) () ")")) (compound_statement "{\n                    \n    FUN_0002f1c0();\n  }" ({ "{") (expression_statement "FUN_0002f1c0();" (call_expression "FUN_0002f1c0()" (identifier "FUN_0002f1c0") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}"))) (expression_statement "__s = (char *)FUN_0002efa0(iVar3);" (assignment_expression "__s = (char *)FUN_0002efa0(iVar3)" (identifier "__s") (= "=") (cast_expression "(char *)FUN_0002efa0(iVar3)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_0002efa0(iVar3)" (identifier "FUN_0002efa0") (argument_list "(iVar3)" (( "(") (identifier "iVar3") () ")"))))) (; ";")) (expression_statement "bVar11 = DAT_0004ca26 == '\0';" (assignment_expression "bVar11 = DAT_0004ca26 == '\0'" (identifier "bVar11") (= "=") (binary_expression "DAT_0004ca26 == '\0'" (identifier "DAT_0004ca26") (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'")))) (; ";")) (expression_statement "bVar12 = DAT_0004ca26 == '\0';" (assignment_expression "bVar12 = DAT_0004ca26 == '\0'" (identifier "bVar12") (= "=") (binary_expression "DAT_0004ca26 == '\0'" (identifier "DAT_0004ca26") (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'")))) (; ";")) (expression_statement "piVar4 = (int *)FUN_0002f0e0(1,0x18);" (assignment_expression "piVar4 = (int *)FUN_0002f0e0(1,0x18)" (identifier "piVar4") (= "=") (cast_expression "(int *)FUN_0002f0e0(1,0x18)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_0002f0e0(1,0x18)" (identifier "FUN_0002f0e0") (argument_list "(1,0x18)" (( "(") (number_literal "1") (, ",") (number_literal "0x18") () ")"))))) (; ";")) (expression_statement "local_4e4 = 0x21 - (uint)bVar12;" (assignment_expression "local_4e4 = 0x21 - (uint)bVar12" (identifier "local_4e4") (= "=") (binary_expression "0x21 - (uint)bVar12" (number_literal "0x21") (- "-") (cast_expression "(uint)bVar12" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "bVar12")))) (; ";")) (if_statement "if ((DAT_0004c520 != '\0') && (local_4e4 = 0x821 - (uint)bVar11, DAT_0004c521 == '\0')) {\n    uVar9 = dcgettext(0,"-P supports only unibyte and UTF-8 locales",5,param_2);\n                    \n    error(2,0,uVar9);\n  }" (if "if") (parenthesized_expression "((DAT_0004c520 != '\0') && (local_4e4 = 0x821 - (uint)bVar11, DAT_0004c521 == '\0'))" (( "(") (binary_expression "(DAT_0004c520 != '\0') && (local_4e4 = 0x821 - (uint)bVar11, DAT_0004c521 == '\0')" (parenthesized_expression "(DAT_0004c520 != '\0')" (( "(") (binary_expression "DAT_0004c520 != '\0'" (identifier "DAT_0004c520") (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (&& "&&") (parenthesized_expression "(local_4e4 = 0x821 - (uint)bVar11, DAT_0004c521 == '\0')" (( "(") (comma_expression "local_4e4 = 0x821 - (uint)bVar11, DAT_0004c521 == '\0'" (assignment_expression "local_4e4 = 0x821 - (uint)bVar11" (identifier "local_4e4") (= "=") (binary_expression "0x821 - (uint)bVar11" (number_literal "0x821") (- "-") (cast_expression "(uint)bVar11" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "bVar11")))) (, ",") (binary_expression "DAT_0004c521 == '\0'" (identifier "DAT_0004c521") (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'")))) () ")"))) () ")")) (compound_statement "{\n    uVar9 = dcgettext(0,"-P supports only unibyte and UTF-8 locales",5,param_2);\n                    \n    error(2,0,uVar9);\n  }" ({ "{") (expression_statement "uVar9 = dcgettext(0,"-P supports only unibyte and UTF-8 locales",5,param_2);" (assignment_expression "uVar9 = dcgettext(0,"-P supports only unibyte and UTF-8 locales",5,param_2)" (identifier "uVar9") (= "=") (call_expression "dcgettext(0,"-P supports only unibyte and UTF-8 locales",5,param_2)" (identifier "dcgettext") (argument_list "(0,"-P supports only unibyte and UTF-8 locales",5,param_2)" (( "(") (number_literal "0") (, ",") (string_literal ""-P supports only unibyte and UTF-8 locales"" (" """) (string_content "-P supports only unibyte and UTF-8 locales") (" """)) (, ",") (number_literal "5") (, ",") (identifier "param_2") () ")")))) (; ";")) (expression_statement "error(2,0,uVar9);" (call_expression "error(2,0,uVar9)" (identifier "error") (argument_list "(2,0,uVar9)" (( "(") (number_literal "2") (, ",") (number_literal "0") (, ",") (identifier "uVar9") () ")"))) (; ";")) (} "}"))) (expression_statement "iVar3 = FUN_00036f10(param_1,10,param_2);" (assignment_expression "iVar3 = FUN_00036f10(param_1,10,param_2)" (identifier "iVar3") (= "=") (call_expression "FUN_00036f10(param_1,10,param_2)" (identifier "FUN_00036f10") (argument_list "(param_1,10,param_2)" (( "(") (identifier "param_1") (, ",") (number_literal "10") (, ",") (identifier "param_2") () ")")))) (; ";")) (if_statement "if (iVar3 != 0) {\n    uVar9 = dcgettext(0,"the -P option only supports a single pattern",5,extraout_ECX);\n                    \n    error(2,0,uVar9);\n  }" (if "if") (parenthesized_expression "(iVar3 != 0)" (( "(") (binary_expression "iVar3 != 0" (identifier "iVar3") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n    uVar9 = dcgettext(0,"the -P option only supports a single pattern",5,extraout_ECX);\n                    \n    error(2,0,uVar9);\n  }" ({ "{") (expression_statement "uVar9 = dcgettext(0,"the -P option only supports a single pattern",5,extraout_ECX);" (assignment_expression "uVar9 = dcgettext(0,"the -P option only supports a single pattern",5,extraout_ECX)" (identifier "uVar9") (= "=") (call_expression "dcgettext(0,"the -P option only supports a single pattern",5,extraout_ECX)" (identifier "dcgettext") (argument_list "(0,"the -P option only supports a single pattern",5,extraout_ECX)" (( "(") (number_literal "0") (, ",") (string_literal ""the -P option only supports a single pattern"" (" """) (string_content "the -P option only supports a single pattern") (" """)) (, ",") (number_literal "5") (, ",") (identifier "extraout_ECX") () ")")))) (; ";")) (expression_statement "error(2,0,uVar9);" (call_expression "error(2,0,uVar9)" (identifier "error") (argument_list "(2,0,uVar9)" (( "(") (number_literal "2") (, ",") (number_literal "0") (, ",") (identifier "uVar9") () ")"))) (; ";")) (} "}"))) (expression_statement "*__s = '\0';" (assignment_expression "*__s = '\0'" (pointer_expression "*__s" (* "*") (identifier "__s")) (= "=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) (; ";")) (expression_statement "cVar1 = DAT_0004ca24;" (assignment_expression "cVar1 = DAT_0004ca24" (identifier "cVar1") (= "=") (identifier "DAT_0004ca24")) (; ";")) (if_statement "if (DAT_0004ca24 != '\0') {\n    *(undefined4 *)__s = DAT_0003abf4;\n    *(undefined4 *)(__s + 4) = DAT_0003abf8;\n    *(undefined2 *)(__s + 8) = DAT_0003abfc;\n    __s[10] = DAT_0003abfe;\n  }" (if "if") (parenthesized_expression "(DAT_0004ca24 != '\0')" (( "(") (binary_expression "DAT_0004ca24 != '\0'" (identifier "DAT_0004ca24") (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n    *(undefined4 *)__s = DAT_0003abf4;\n    *(undefined4 *)(__s + 4) = DAT_0003abf8;\n    *(undefined2 *)(__s + 8) = DAT_0003abfc;\n    __s[10] = DAT_0003abfe;\n  }" ({ "{") (expression_statement "*(undefined4 *)__s = DAT_0003abf4;" (assignment_expression "*(undefined4 *)__s = DAT_0003abf4" (pointer_expression "*(undefined4 *)__s" (* "*") (cast_expression "(undefined4 *)__s" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "__s"))) (= "=") (identifier "DAT_0003abf4")) (; ";")) (expression_statement "*(undefined4 *)(__s + 4) = DAT_0003abf8;" (assignment_expression "*(undefined4 *)(__s + 4) = DAT_0003abf8" (pointer_expression "*(undefined4 *)(__s + 4)" (* "*") (cast_expression "(undefined4 *)(__s + 4)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(__s + 4)" (( "(") (binary_expression "__s + 4" (identifier "__s") (+ "+") (number_literal "4")) () ")")))) (= "=") (identifier "DAT_0003abf8")) (; ";")) (expression_statement "*(undefined2 *)(__s + 8) = DAT_0003abfc;" (assignment_expression "*(undefined2 *)(__s + 8) = DAT_0003abfc" (pointer_expression "*(undefined2 *)(__s + 8)" (* "*") (cast_expression "(undefined2 *)(__s + 8)" (( "(") (type_descriptor "undefined2 *" (type_identifier "undefined2") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(__s + 8)" (( "(") (binary_expression "__s + 8" (identifier "__s") (+ "+") (number_literal "8")) () ")")))) (= "=") (identifier "DAT_0003abfc")) (; ";")) (expression_statement "__s[10] = DAT_0003abfe;" (assignment_expression "__s[10] = DAT_0003abfe" (subscript_expression "__s[10]" (identifier "__s") ([ "[") (number_literal "10") (] "]")) (= "=") (identifier "DAT_0003abfe")) (; ";")) (} "}"))) (expression_statement "cVar2 = DAT_0004ca25;" (assignment_expression "cVar2 = DAT_0004ca25" (identifier "cVar2") (= "=") (identifier "DAT_0004ca25")) (; ";")) (if_statement "if (DAT_0004ca25 != '\0') {\n    *(undefined4 *)__s = DAT_0003abec;\n    __s[4] = DAT_0003abf0;\n  }" (if "if") (parenthesized_expression "(DAT_0004ca25 != '\0')" (( "(") (binary_expression "DAT_0004ca25 != '\0'" (identifier "DAT_0004ca25") (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n    *(undefined4 *)__s = DAT_0003abec;\n    __s[4] = DAT_0003abf0;\n  }" ({ "{") (expression_statement "*(undefined4 *)__s = DAT_0003abec;" (assignment_expression "*(undefined4 *)__s = DAT_0003abec" (pointer_expression "*(undefined4 *)__s" (* "*") (cast_expression "(undefined4 *)__s" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "__s"))) (= "=") (identifier "DAT_0003abec")) (; ";")) (expression_statement "__s[4] = DAT_0003abf0;" (assignment_expression "__s[4] = DAT_0003abf0" (subscript_expression "__s[4]" (identifier "__s") ([ "[") (number_literal "4") (] "]")) (= "=") (identifier "DAT_0003abf0")) (; ";")) (} "}"))) (expression_statement "sVar5 = strlen(__s);" (assignment_expression "sVar5 = strlen(__s)" (identifier "sVar5") (= "=") (call_expression "strlen(__s)" (identifier "strlen") (argument_list "(__s)" (( "(") (identifier "__s") () ")")))) (; ";")) (expression_statement "__dest = __s + sVar5;" (assignment_expression "__dest = __s + sVar5" (identifier "__dest") (= "=") (binary_expression "__s + sVar5" (identifier "__s") (+ "+") (identifier "sVar5"))) (; ";")) (expression_statement "pvVar8 = param_1;" (assignment_expression "pvVar8 = param_1" (identifier "pvVar8") (= "=") (identifier "param_1")) (; ";")) (do_statement "do {\n    sVar5 = (int)param_1 + (param_2 - (int)pvVar8);\n    pvVar6 = (void *)FUN_00036f10(pvVar8,0,sVar5);\n    if (pvVar6 == (void *)0x0) {\n      pcVar10 = __dest + sVar5;\n      memcpy(__dest,pvVar8,sVar5);\n      uVar9 = DAT_0003abe8;\n      if (cVar1 == '\0') {\n        *pcVar10 = '\0';\n      }\n      else {\n        *(undefined4 *)pcVar10 = DAT_0003abe4;\n        *(undefined4 *)(pcVar10 + 4) = uVar9;\n      }\n      if (cVar2 != '\0') {\n        *(undefined2 *)pcVar10 = DAT_0003abe0;\n        pcVar10[2] = DAT_0003abe2;\n      }\n      uVar9 = pcre_maketables();\n      iVar3 = pcre_compile(__s,local_4e4,&local_4d4,&local_4d8,uVar9);\n      *piVar4 = iVar3;\n      if (iVar3 == 0) {\n                    \n        error(2,0,&DAT_0003ac56,local_4d4);\n      }\n      iVar3 = pcre_study(iVar3,9,&local_4d4);\n      piVar4[1] = iVar3;\n      if (local_4d4 != 0) {\n                    \n        error(2,0,&DAT_0003ac56,local_4d4);\n      }\n      uVar13 = pcre_fullinfo(*piVar4,iVar3,0x10,&local_4d8);\n      if ((int)uVar13 != 0) {\n        uVar9 = dcgettext(0,"internal error (should never happen)",5,\n                          (int)((ulonglong)uVar13 >> 0x20));\n                    \n        error(2,0,uVar9);\n      }\n      if (local_4d8 != 0) {\n        piVar4[3] = 0x8000;\n      }\n      free(__s);\n      iVar3 = pcre_exec(*piVar4,piVar4[1],"",0,0,0x80,local_4d0,300);\n      piVar4[4] = iVar3;\n      iVar3 = pcre_exec(*piVar4,piVar4[1],"",0,0,0,local_4d0,300);\n      piVar4[5] = iVar3;\n      if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    \n        FUN_00038830();\n      }\n      return piVar4;\n    }\n    sVar5 = (int)pvVar6 - (int)pvVar8;\n    memcpy(__dest,pvVar8,sVar5);\n    if ((param_1 < pvVar6) && (pvVar8 = pvVar6, *(char *)((int)pvVar6 - 1) == '\\')) {\n      do {\n        pvVar7 = (void *)((int)pvVar8 - 1);\n        if (param_1 == pvVar7) {\n          sVar5 = sVar5 - ((int)pvVar6 - (int)param_1 & 1U);\n          goto LAB_0001e130;\n        }\n        pcVar10 = (char *)((int)pvVar8 - 2);\n        pvVar8 = pvVar7;\n      } while (*pcVar10 == '\\');\n      sVar5 = sVar5 - ((int)pvVar6 - (int)pvVar7 & 1U);\n    }\nLAB_0001e130:\n    pvVar8 = (void *)((int)pvVar6 + 1);\n    builtin_strncpy(__dest + sVar5,"\\000",5);\n    __dest = __dest + sVar5 + 4;\n  } while( true );" (do "do") (compound_statement "{\n    sVar5 = (int)param_1 + (param_2 - (int)pvVar8);\n    pvVar6 = (void *)FUN_00036f10(pvVar8,0,sVar5);\n    if (pvVar6 == (void *)0x0) {\n      pcVar10 = __dest + sVar5;\n      memcpy(__dest,pvVar8,sVar5);\n      uVar9 = DAT_0003abe8;\n      if (cVar1 == '\0') {\n        *pcVar10 = '\0';\n      }\n      else {\n        *(undefined4 *)pcVar10 = DAT_0003abe4;\n        *(undefined4 *)(pcVar10 + 4) = uVar9;\n      }\n      if (cVar2 != '\0') {\n        *(undefined2 *)pcVar10 = DAT_0003abe0;\n        pcVar10[2] = DAT_0003abe2;\n      }\n      uVar9 = pcre_maketables();\n      iVar3 = pcre_compile(__s,local_4e4,&local_4d4,&local_4d8,uVar9);\n      *piVar4 = iVar3;\n      if (iVar3 == 0) {\n                    \n        error(2,0,&DAT_0003ac56,local_4d4);\n      }\n      iVar3 = pcre_study(iVar3,9,&local_4d4);\n      piVar4[1] = iVar3;\n      if (local_4d4 != 0) {\n                    \n        error(2,0,&DAT_0003ac56,local_4d4);\n      }\n      uVar13 = pcre_fullinfo(*piVar4,iVar3,0x10,&local_4d8);\n      if ((int)uVar13 != 0) {\n        uVar9 = dcgettext(0,"internal error (should never happen)",5,\n                          (int)((ulonglong)uVar13 >> 0x20));\n                    \n        error(2,0,uVar9);\n      }\n      if (local_4d8 != 0) {\n        piVar4[3] = 0x8000;\n      }\n      free(__s);\n      iVar3 = pcre_exec(*piVar4,piVar4[1],"",0,0,0x80,local_4d0,300);\n      piVar4[4] = iVar3;\n      iVar3 = pcre_exec(*piVar4,piVar4[1],"",0,0,0,local_4d0,300);\n      piVar4[5] = iVar3;\n      if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    \n        FUN_00038830();\n      }\n      return piVar4;\n    }\n    sVar5 = (int)pvVar6 - (int)pvVar8;\n    memcpy(__dest,pvVar8,sVar5);\n    if ((param_1 < pvVar6) && (pvVar8 = pvVar6, *(char *)((int)pvVar6 - 1) == '\\')) {\n      do {\n        pvVar7 = (void *)((int)pvVar8 - 1);\n        if (param_1 == pvVar7) {\n          sVar5 = sVar5 - ((int)pvVar6 - (int)param_1 & 1U);\n          goto LAB_0001e130;\n        }\n        pcVar10 = (char *)((int)pvVar8 - 2);\n        pvVar8 = pvVar7;\n      } while (*pcVar10 == '\\');\n      sVar5 = sVar5 - ((int)pvVar6 - (int)pvVar7 & 1U);\n    }\nLAB_0001e130:\n    pvVar8 = (void *)((int)pvVar6 + 1);\n    builtin_strncpy(__dest + sVar5,"\\000",5);\n    __dest = __dest + sVar5 + 4;\n  }" ({ "{") (expression_statement "sVar5 = (int)param_1 + (param_2 - (int)pvVar8);" (assignment_expression "sVar5 = (int)param_1 + (param_2 - (int)pvVar8)" (identifier "sVar5") (= "=") (binary_expression "(int)param_1 + (param_2 - (int)pvVar8)" (cast_expression "(int)param_1" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_1")) (+ "+") (parenthesized_expression "(param_2 - (int)pvVar8)" (( "(") (binary_expression "param_2 - (int)pvVar8" (identifier "param_2") (- "-") (cast_expression "(int)pvVar8" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pvVar8"))) () ")")))) (; ";")) (expression_statement "pvVar6 = (void *)FUN_00036f10(pvVar8,0,sVar5);" (assignment_expression "pvVar6 = (void *)FUN_00036f10(pvVar8,0,sVar5)" (identifier "pvVar6") (= "=") (cast_expression "(void *)FUN_00036f10(pvVar8,0,sVar5)" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_00036f10(pvVar8,0,sVar5)" (identifier "FUN_00036f10") (argument_list "(pvVar8,0,sVar5)" (( "(") (identifier "pvVar8") (, ",") (number_literal "0") (, ",") (identifier "sVar5") () ")"))))) (; ";")) (if_statement "if (pvVar6 == (void *)0x0) {\n      pcVar10 = __dest + sVar5;\n      memcpy(__dest,pvVar8,sVar5);\n      uVar9 = DAT_0003abe8;\n      if (cVar1 == '\0') {\n        *pcVar10 = '\0';\n      }\n      else {\n        *(undefined4 *)pcVar10 = DAT_0003abe4;\n        *(undefined4 *)(pcVar10 + 4) = uVar9;\n      }\n      if (cVar2 != '\0') {\n        *(undefined2 *)pcVar10 = DAT_0003abe0;\n        pcVar10[2] = DAT_0003abe2;\n      }\n      uVar9 = pcre_maketables();\n      iVar3 = pcre_compile(__s,local_4e4,&local_4d4,&local_4d8,uVar9);\n      *piVar4 = iVar3;\n      if (iVar3 == 0) {\n                    \n        error(2,0,&DAT_0003ac56,local_4d4);\n      }\n      iVar3 = pcre_study(iVar3,9,&local_4d4);\n      piVar4[1] = iVar3;\n      if (local_4d4 != 0) {\n                    \n        error(2,0,&DAT_0003ac56,local_4d4);\n      }\n      uVar13 = pcre_fullinfo(*piVar4,iVar3,0x10,&local_4d8);\n      if ((int)uVar13 != 0) {\n        uVar9 = dcgettext(0,"internal error (should never happen)",5,\n                          (int)((ulonglong)uVar13 >> 0x20));\n                    \n        error(2,0,uVar9);\n      }\n      if (local_4d8 != 0) {\n        piVar4[3] = 0x8000;\n      }\n      free(__s);\n      iVar3 = pcre_exec(*piVar4,piVar4[1],"",0,0,0x80,local_4d0,300);\n      piVar4[4] = iVar3;\n      iVar3 = pcre_exec(*piVar4,piVar4[1],"",0,0,0,local_4d0,300);\n      piVar4[5] = iVar3;\n      if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    \n        FUN_00038830();\n      }\n      return piVar4;\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      pcVar10 = __dest + sVar5;\n      memcpy(__dest,pvVar8,sVar5);\n      uVar9 = DAT_0003abe8;\n      if (cVar1 == '\0') {\n        *pcVar10 = '\0';\n      }\n      else {\n        *(undefined4 *)pcVar10 = DAT_0003abe4;\n        *(undefined4 *)(pcVar10 + 4) = uVar9;\n      }\n      if (cVar2 != '\0') {\n        *(undefined2 *)pcVar10 = DAT_0003abe0;\n        pcVar10[2] = DAT_0003abe2;\n      }\n      uVar9 = pcre_maketables();\n      iVar3 = pcre_compile(__s,local_4e4,&local_4d4,&local_4d8,uVar9);\n      *piVar4 = iVar3;\n      if (iVar3 == 0) {\n                    \n        error(2,0,&DAT_0003ac56,local_4d4);\n      }\n      iVar3 = pcre_study(iVar3,9,&local_4d4);\n      piVar4[1] = iVar3;\n      if (local_4d4 != 0) {\n                    \n        error(2,0,&DAT_0003ac56,local_4d4);\n      }\n      uVar13 = pcre_fullinfo(*piVar4,iVar3,0x10,&local_4d8);\n      if ((int)uVar13 != 0) {\n        uVar9 = dcgettext(0,"internal error (should never happen)",5,\n                          (int)((ulonglong)uVar13 >> 0x20));\n                    \n        error(2,0,uVar9);\n      }\n      if (local_4d8 != 0) {\n        piVar4[3] = 0x8000;\n      }\n      free(__s);\n      iVar3 = pcre_exec(*piVar4,piVar4[1],"",0,0,0x80,local_4d0,300);\n      piVar4[4] = iVar3;\n      iVar3 = pcre_exec(*piVar4,piVar4[1],"",0,0,0,local_4d0,300);\n      piVar4[5] = iVar3;\n      if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    \n        FUN_00038830();\n      }\n      return piVar4;\n    }" ({ "{") (expression_statement "pcVar10 = __dest + sVar5;" (assignment_expression "pcVar10 = __dest + sVar5" (identifier "pcVar10") (= "=") (binary_expression "__dest + sVar5" (identifier "__dest") (+ "+") (identifier "sVar5"))) (; ";")) (expression_statement "memcpy(__dest,pvVar8,sVar5);" (call_expression "memcpy(__dest,pvVar8,sVar5)" (identifier "memcpy") (argument_list "(__dest,pvVar8,sVar5)" (( "(") (identifier "__dest") (, ",") (identifier "pvVar8") (, ",") (identifier "sVar5") () ")"))) (; ";")) (expression_statement "uVar9 = DAT_0003abe8;" (assignment_expression "uVar9 = DAT_0003abe8" (identifier "uVar9") (= "=") (identifier "DAT_0003abe8")) (; ";")) (if_statement "if (cVar1 == '\0') {\n        *pcVar10 = '\0';\n      }\n      else {\n        *(undefined4 *)pcVar10 = DAT_0003abe4;\n        *(undefined4 *)(pcVar10 + 4) = uVar9;\n      }" (if "if") (parenthesized_expression "(cVar1 == '\0')" (( "(") (binary_expression "cVar1 == '\0'" (identifier "cVar1") (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n        *pcVar10 = '\0';\n      }" ({ "{") (expression_statement "*pcVar10 = '\0';" (assignment_expression "*pcVar10 = '\0'" (pointer_expression "*pcVar10" (* "*") (identifier "pcVar10")) (= "=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) (; ";")) (} "}")) (else_clause "else {\n        *(undefined4 *)pcVar10 = DAT_0003abe4;\n        *(undefined4 *)(pcVar10 + 4) = uVar9;\n      }" (else "else") (compound_statement "{\n        *(undefined4 *)pcVar10 = DAT_0003abe4;\n        *(undefined4 *)(pcVar10 + 4) = uVar9;\n      }" ({ "{") (expression_statement "*(undefined4 *)pcVar10 = DAT_0003abe4;" (assignment_expression "*(undefined4 *)pcVar10 = DAT_0003abe4" (pointer_expression "*(undefined4 *)pcVar10" (* "*") (cast_expression "(undefined4 *)pcVar10" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "pcVar10"))) (= "=") (identifier "DAT_0003abe4")) (; ";")) (expression_statement "*(undefined4 *)(pcVar10 + 4) = uVar9;" (assignment_expression "*(undefined4 *)(pcVar10 + 4) = uVar9" (pointer_expression "*(undefined4 *)(pcVar10 + 4)" (* "*") (cast_expression "(undefined4 *)(pcVar10 + 4)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(pcVar10 + 4)" (( "(") (binary_expression "pcVar10 + 4" (identifier "pcVar10") (+ "+") (number_literal "4")) () ")")))) (= "=") (identifier "uVar9")) (; ";")) (} "}")))) (if_statement "if (cVar2 != '\0') {\n        *(undefined2 *)pcVar10 = DAT_0003abe0;\n        pcVar10[2] = DAT_0003abe2;\n      }" (if "if") (parenthesized_expression "(cVar2 != '\0')" (( "(") (binary_expression "cVar2 != '\0'" (identifier "cVar2") (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n        *(undefined2 *)pcVar10 = DAT_0003abe0;\n        pcVar10[2] = DAT_0003abe2;\n      }" ({ "{") (expression_statement "*(undefined2 *)pcVar10 = DAT_0003abe0;" (assignment_expression "*(undefined2 *)pcVar10 = DAT_0003abe0" (pointer_expression "*(undefined2 *)pcVar10" (* "*") (cast_expression "(undefined2 *)pcVar10" (( "(") (type_descriptor "undefined2 *" (type_identifier "undefined2") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "pcVar10"))) (= "=") (identifier "DAT_0003abe0")) (; ";")) (expression_statement "pcVar10[2] = DAT_0003abe2;" (assignment_expression "pcVar10[2] = DAT_0003abe2" (subscript_expression "pcVar10[2]" (identifier "pcVar10") ([ "[") (number_literal "2") (] "]")) (= "=") (identifier "DAT_0003abe2")) (; ";")) (} "}"))) (expression_statement "uVar9 = pcre_maketables();" (assignment_expression "uVar9 = pcre_maketables()" (identifier "uVar9") (= "=") (call_expression "pcre_maketables()" (identifier "pcre_maketables") (argument_list "()" (( "(") () ")")))) (; ";")) (expression_statement "iVar3 = pcre_compile(__s,local_4e4,&local_4d4,&local_4d8,uVar9);" (assignment_expression "iVar3 = pcre_compile(__s,local_4e4,&local_4d4,&local_4d8,uVar9)" (identifier "iVar3") (= "=") (call_expression "pcre_compile(__s,local_4e4,&local_4d4,&local_4d8,uVar9)" (identifier "pcre_compile") (argument_list "(__s,local_4e4,&local_4d4,&local_4d8,uVar9)" (( "(") (identifier "__s") (, ",") (identifier "local_4e4") (, ",") (pointer_expression "&local_4d4" (& "&") (identifier "local_4d4")) (, ",") (pointer_expression "&local_4d8" (& "&") (identifier "local_4d8")) (, ",") (identifier "uVar9") () ")")))) (; ";")) (expression_statement "*piVar4 = iVar3;" (assignment_expression "*piVar4 = iVar3" (pointer_expression "*piVar4" (* "*") (identifier "piVar4")) (= "=") (identifier "iVar3")) (; ";")) (if_statement "if (iVar3 == 0) {\n                    \n        error(2,0,&DAT_0003ac56,local_4d4);\n      }" (if "if") (parenthesized_expression "(iVar3 == 0)" (( "(") (binary_expression "iVar3 == 0" (identifier "iVar3") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n                    \n        error(2,0,&DAT_0003ac56,local_4d4);\n      }" ({ "{") (expression_statement "error(2,0,&DAT_0003ac56,local_4d4);" (call_expression "error(2,0,&DAT_0003ac56,local_4d4)" (identifier "error") (argument_list "(2,0,&DAT_0003ac56,local_4d4)" (( "(") (number_literal "2") (, ",") (number_literal "0") (, ",") (pointer_expression "&DAT_0003ac56" (& "&") (identifier "DAT_0003ac56")) (, ",") (identifier "local_4d4") () ")"))) (; ";")) (} "}"))) (expression_statement "iVar3 = pcre_study(iVar3,9,&local_4d4);" (assignment_expression "iVar3 = pcre_study(iVar3,9,&local_4d4)" (identifier "iVar3") (= "=") (call_expression "pcre_study(iVar3,9,&local_4d4)" (identifier "pcre_study") (argument_list "(iVar3,9,&local_4d4)" (( "(") (identifier "iVar3") (, ",") (number_literal "9") (, ",") (pointer_expression "&local_4d4" (& "&") (identifier "local_4d4")) () ")")))) (; ";")) (expression_statement "piVar4[1] = iVar3;" (assignment_expression "piVar4[1] = iVar3" (subscript_expression "piVar4[1]" (identifier "piVar4") ([ "[") (number_literal "1") (] "]")) (= "=") (identifier "iVar3")) (; ";")) (if_statement "if (local_4d4 != 0) {\n                    \n        error(2,0,&DAT_0003ac56,local_4d4);\n      }" (if "if") (parenthesized_expression "(local_4d4 != 0)" (( "(") (binary_expression "local_4d4 != 0" (identifier "local_4d4") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n                    \n        error(2,0,&DAT_0003ac56,local_4d4);\n      }" ({ "{") (expression_statement "error(2,0,&DAT_0003ac56,local_4d4);" (call_expression "error(2,0,&DAT_0003ac56,local_4d4)" (identifier "error") (argument_list "(2,0,&DAT_0003ac56,local_4d4)" (( "(") (number_literal "2") (, ",") (number_literal "0") (, ",") (pointer_expression "&DAT_0003ac56" (& "&") (identifier "DAT_0003ac56")) (, ",") (identifier "local_4d4") () ")"))) (; ";")) (} "}"))) (expression_statement "uVar13 = pcre_fullinfo(*piVar4,iVar3,0x10,&local_4d8);" (assignment_expression "uVar13 = pcre_fullinfo(*piVar4,iVar3,0x10,&local_4d8)" (identifier "uVar13") (= "=") (call_expression "pcre_fullinfo(*piVar4,iVar3,0x10,&local_4d8)" (identifier "pcre_fullinfo") (argument_list "(*piVar4,iVar3,0x10,&local_4d8)" (( "(") (pointer_expression "*piVar4" (* "*") (identifier "piVar4")) (, ",") (identifier "iVar3") (, ",") (number_literal "0x10") (, ",") (pointer_expression "&local_4d8" (& "&") (identifier "local_4d8")) () ")")))) (; ";")) (if_statement "if ((int)uVar13 != 0) {\n        uVar9 = dcgettext(0,"internal error (should never happen)",5,\n                          (int)((ulonglong)uVar13 >> 0x20));\n                    \n        error(2,0,uVar9);\n      }" (if "if") (parenthesized_expression "((int)uVar13 != 0)" (( "(") (binary_expression "(int)uVar13 != 0" (cast_expression "(int)uVar13" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar13")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n        uVar9 = dcgettext(0,"internal error (should never happen)",5,\n                          (int)((ulonglong)uVar13 >> 0x20));\n                    \n        error(2,0,uVar9);\n      }" ({ "{") (expression_statement "uVar9 = dcgettext(0,"internal error (should never happen)",5,\n                          (int)((ulonglong)uVar13 >> 0x20));" (assignment_expression "uVar9 = dcgettext(0,"internal error (should never happen)",5,\n                          (int)((ulonglong)uVar13 >> 0x20))" (identifier "uVar9") (= "=") (call_expression "dcgettext(0,"internal error (should never happen)",5,\n                          (int)((ulonglong)uVar13 >> 0x20))" (identifier "dcgettext") (argument_list "(0,"internal error (should never happen)",5,\n                          (int)((ulonglong)uVar13 >> 0x20))" (( "(") (number_literal "0") (, ",") (string_literal ""internal error (should never happen)"" (" """) (string_content "internal error (should never happen)") (" """)) (, ",") (number_literal "5") (, ",") (cast_expression "(int)((ulonglong)uVar13 >> 0x20)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (parenthesized_expression "((ulonglong)uVar13 >> 0x20)" (( "(") (binary_expression "(ulonglong)uVar13 >> 0x20" (cast_expression "(ulonglong)uVar13" (( "(") (type_descriptor "ulonglong" (type_identifier "ulonglong")) () ")") (identifier "uVar13")) (>> ">>") (number_literal "0x20")) () ")"))) () ")")))) (; ";")) (expression_statement "error(2,0,uVar9);" (call_expression "error(2,0,uVar9)" (identifier "error") (argument_list "(2,0,uVar9)" (( "(") (number_literal "2") (, ",") (number_literal "0") (, ",") (identifier "uVar9") () ")"))) (; ";")) (} "}"))) (if_statement "if (local_4d8 != 0) {\n        piVar4[3] = 0x8000;\n      }" (if "if") (parenthesized_expression "(local_4d8 != 0)" (( "(") (binary_expression "local_4d8 != 0" (identifier "local_4d8") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n        piVar4[3] = 0x8000;\n      }" ({ "{") (expression_statement "piVar4[3] = 0x8000;" (assignment_expression "piVar4[3] = 0x8000" (subscript_expression "piVar4[3]" (identifier "piVar4") ([ "[") (number_literal "3") (] "]")) (= "=") (number_literal "0x8000")) (; ";")) (} "}"))) (expression_statement "free(__s);" (call_expression "free(__s)" (identifier "free") (argument_list "(__s)" (( "(") (identifier "__s") () ")"))) (; ";")) (expression_statement "iVar3 = pcre_exec(*piVar4,piVar4[1],"",0,0,0x80,local_4d0,300);" (assignment_expression "iVar3 = pcre_exec(*piVar4,piVar4[1],"",0,0,0x80,local_4d0,300)" (identifier "iVar3") (= "=") (call_expression "pcre_exec(*piVar4,piVar4[1],"",0,0,0x80,local_4d0,300)" (identifier "pcre_exec") (argument_list "(*piVar4,piVar4[1],"",0,0,0x80,local_4d0,300)" (( "(") (pointer_expression "*piVar4" (* "*") (identifier "piVar4")) (, ",") (subscript_expression "piVar4[1]" (identifier "piVar4") ([ "[") (number_literal "1") (] "]")) (, ",") (string_literal """" (" """) (" """)) (, ",") (number_literal "0") (, ",") (number_literal "0") (, ",") (number_literal "0x80") (, ",") (identifier "local_4d0") (, ",") (number_literal "300") () ")")))) (; ";")) (expression_statement "piVar4[4] = iVar3;" (assignment_expression "piVar4[4] = iVar3" (subscript_expression "piVar4[4]" (identifier "piVar4") ([ "[") (number_literal "4") (] "]")) (= "=") (identifier "iVar3")) (; ";")) (expression_statement "iVar3 = pcre_exec(*piVar4,piVar4[1],"",0,0,0,local_4d0,300);" (assignment_expression "iVar3 = pcre_exec(*piVar4,piVar4[1],"",0,0,0,local_4d0,300)" (identifier "iVar3") (= "=") (call_expression "pcre_exec(*piVar4,piVar4[1],"",0,0,0,local_4d0,300)" (identifier "pcre_exec") (argument_list "(*piVar4,piVar4[1],"",0,0,0,local_4d0,300)" (( "(") (pointer_expression "*piVar4" (* "*") (identifier "piVar4")) (, ",") (subscript_expression "piVar4[1]" (identifier "piVar4") ([ "[") (number_literal "1") (] "]")) (, ",") (string_literal """" (" """) (" """)) (, ",") (number_literal "0") (, ",") (number_literal "0") (, ",") (number_literal "0") (, ",") (identifier "local_4d0") (, ",") (number_literal "300") () ")")))) (; ";")) (expression_statement "piVar4[5] = iVar3;" (assignment_expression "piVar4[5] = iVar3" (subscript_expression "piVar4[5]" (identifier "piVar4") ([ "[") (number_literal "5") (] "]")) (= "=") (identifier "iVar3")) (; ";")) (if_statement "if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    \n        FUN_00038830();\n      }" (if "if") (parenthesized_expression "(local_20 != *(int *)(in_GS_OFFSET + 0x14))" (( "(") (binary_expression "local_20 != *(int *)(in_GS_OFFSET + 0x14)" (identifier "local_20") (!= "!=") (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" (* "*") (cast_expression "(int *)(in_GS_OFFSET + 0x14)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(in_GS_OFFSET + 0x14)" (( "(") (binary_expression "in_GS_OFFSET + 0x14" (identifier "in_GS_OFFSET") (+ "+") (number_literal "0x14")) () ")"))))) () ")")) (compound_statement "{\n                    \n        FUN_00038830();\n      }" ({ "{") (expression_statement "FUN_00038830();" (call_expression "FUN_00038830()" (identifier "FUN_00038830") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}"))) (return_statement "return piVar4;" (return "return") (identifier "piVar4") (; ";")) (} "}"))) (expression_statement "sVar5 = (int)pvVar6 - (int)pvVar8;" (assignment_expression "sVar5 = (int)pvVar6 - (int)pvVar8" (identifier "sVar5") (= "=") (binary_expression "(int)pvVar6 - (int)pvVar8" (cast_expression "(int)pvVar6" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pvVar6")) (- "-") (cast_expression "(int)pvVar8" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pvVar8")))) (; ";")) (expression_statement "memcpy(__dest,pvVar8,sVar5);" (call_expression "memcpy(__dest,pvVar8,sVar5)" (identifier "memcpy") (argument_list "(__dest,pvVar8,sVar5)" (( "(") (identifier "__dest") (, ",") (identifier "pvVar8") (, ",") (identifier "sVar5") () ")"))) (; ";")) (if_statement "if ((param_1 < pvVar6) && (pvVar8 = pvVar6, *(char *)((int)pvVar6 - 1) == '\\')) {\n      do {\n        pvVar7 = (void *)((int)pvVar8 - 1);\n        if (param_1 == pvVar7) {\n          sVar5 = sVar5 - ((int)pvVar6 - (int)param_1 & 1U);\n          goto LAB_0001e130;\n        }\n        pcVar10 = (char *)((int)pvVar8 - 2);\n        pvVar8 = pvVar7;\n      } while (*pcVar10 == '\\');\n      sVar5 = sVar5 - ((int)pvVar6 - (int)pvVar7 & 1U);\n    }" (if "if") (parenthesized_expression "((param_1 < pvVar6) && (pvVar8 = pvVar6, *(char *)((int)pvVar6 - 1) == '\\'))" (( "(") (binary_expression "(param_1 < pvVar6) && (pvVar8 = pvVar6, *(char *)((int)pvVar6 - 1) == '\\')" (parenthesized_expression "(param_1 < pvVar6)" (( "(") (binary_expression "param_1 < pvVar6" (identifier "param_1") (< "<") (identifier "pvVar6")) () ")")) (&& "&&") (parenthesized_expression "(pvVar8 = pvVar6, *(char *)((int)pvVar6 - 1) == '\\')" (( "(") (comma_expression "pvVar8 = pvVar6, *(char *)((int)pvVar6 - 1) == '\\'" (assignment_expression "pvVar8 = pvVar6" (identifier "pvVar8") (= "=") (identifier "pvVar6")) (, ",") (binary_expression "*(char *)((int)pvVar6 - 1) == '\\'" (pointer_expression "*(char *)((int)pvVar6 - 1)" (* "*") (cast_expression "(char *)((int)pvVar6 - 1)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)pvVar6 - 1)" (( "(") (binary_expression "(int)pvVar6 - 1" (cast_expression "(int)pvVar6" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pvVar6")) (- "-") (number_literal "1")) () ")")))) (== "==") (char_literal "'\\'" (' "'") (escape_sequence "\\") (' "'")))) () ")"))) () ")")) (compound_statement "{\n      do {\n        pvVar7 = (void *)((int)pvVar8 - 1);\n        if (param_1 == pvVar7) {\n          sVar5 = sVar5 - ((int)pvVar6 - (int)param_1 & 1U);\n          goto LAB_0001e130;\n        }\n        pcVar10 = (char *)((int)pvVar8 - 2);\n        pvVar8 = pvVar7;\n      } while (*pcVar10 == '\\');\n      sVar5 = sVar5 - ((int)pvVar6 - (int)pvVar7 & 1U);\n    }" ({ "{") (do_statement "do {\n        pvVar7 = (void *)((int)pvVar8 - 1);\n        if (param_1 == pvVar7) {\n          sVar5 = sVar5 - ((int)pvVar6 - (int)param_1 & 1U);\n          goto LAB_0001e130;\n        }\n        pcVar10 = (char *)((int)pvVar8 - 2);\n        pvVar8 = pvVar7;\n      } while (*pcVar10 == '\\');" (do "do") (compound_statement "{\n        pvVar7 = (void *)((int)pvVar8 - 1);\n        if (param_1 == pvVar7) {\n          sVar5 = sVar5 - ((int)pvVar6 - (int)param_1 & 1U);\n          goto LAB_0001e130;\n        }\n        pcVar10 = (char *)((int)pvVar8 - 2);\n        pvVar8 = pvVar7;\n      }" ({ "{") (expression_statement "pvVar7 = (void *)((int)pvVar8 - 1);" (assignment_expression "pvVar7 = (void *)((int)pvVar8 - 1)" (identifier "pvVar7") (= "=") (cast_expression "(void *)((int)pvVar8 - 1)" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)pvVar8 - 1)" (( "(") (binary_expression "(int)pvVar8 - 1" (cast_expression "(int)pvVar8" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pvVar8")) (- "-") (number_literal "1")) () ")")))) (; ";")) (if_statement "if (param_1 == pvVar7) {\n          sVar5 = sVar5 - ((int)pvVar6 - (int)param_1 & 1U);\n          goto LAB_0001e130;\n        }" (if "if") (parenthesized_expression "(param_1 == pvVar7)" (( "(") (binary_expression "param_1 == pvVar7" (identifier "param_1") (== "==") (identifier "pvVar7")) () ")")) (compound_statement "{\n          sVar5 = sVar5 - ((int)pvVar6 - (int)param_1 & 1U);\n          goto LAB_0001e130;\n        }" ({ "{") (expression_statement "sVar5 = sVar5 - ((int)pvVar6 - (int)param_1 & 1U);" (assignment_expression "sVar5 = sVar5 - ((int)pvVar6 - (int)param_1 & 1U)" (identifier "sVar5") (= "=") (binary_expression "sVar5 - ((int)pvVar6 - (int)param_1 & 1U)" (identifier "sVar5") (- "-") (parenthesized_expression "((int)pvVar6 - (int)param_1 & 1U)" (( "(") (binary_expression "(int)pvVar6 - (int)param_1 & 1U" (binary_expression "(int)pvVar6 - (int)param_1" (cast_expression "(int)pvVar6" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pvVar6")) (- "-") (cast_expression "(int)param_1" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_1"))) (& "&") (number_literal "1U")) () ")")))) (; ";")) (goto_statement "goto LAB_0001e130;" (goto "goto") (statement_identifier "LAB_0001e130") (; ";")) (} "}"))) (expression_statement "pcVar10 = (char *)((int)pvVar8 - 2);" (assignment_expression "pcVar10 = (char *)((int)pvVar8 - 2)" (identifier "pcVar10") (= "=") (cast_expression "(char *)((int)pvVar8 - 2)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)pvVar8 - 2)" (( "(") (binary_expression "(int)pvVar8 - 2" (cast_expression "(int)pvVar8" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pvVar8")) (- "-") (number_literal "2")) () ")")))) (; ";")) (expression_statement "pvVar8 = pvVar7;" (assignment_expression "pvVar8 = pvVar7" (identifier "pvVar8") (= "=") (identifier "pvVar7")) (; ";")) (} "}")) (while "while") (parenthesized_expression "(*pcVar10 == '\\')" (( "(") (binary_expression "*pcVar10 == '\\'" (pointer_expression "*pcVar10" (* "*") (identifier "pcVar10")) (== "==") (char_literal "'\\'" (' "'") (escape_sequence "\\") (' "'"))) () ")")) (; ";")) (expression_statement "sVar5 = sVar5 - ((int)pvVar6 - (int)pvVar7 & 1U);" (assignment_expression "sVar5 = sVar5 - ((int)pvVar6 - (int)pvVar7 & 1U)" (identifier "sVar5") (= "=") (binary_expression "sVar5 - ((int)pvVar6 - (int)pvVar7 & 1U)" (identifier "sVar5") (- "-") (parenthesized_expression "((int)pvVar6 - (int)pvVar7 & 1U)" (( "(") (binary_expression "(int)pvVar6 - (int)pvVar7 & 1U" (binary_expression "(int)pvVar6 - (int)pvVar7" (cast_expression "(int)pvVar6" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pvVar6")) (- "-") (cast_expression "(int)pvVar7" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pvVar7"))) (& "&") (number_literal "1U")) () ")")))) (; ";")) (} "}"))) (labeled_statement "LAB_0001e130:\n    pvVar8 = (void *)((int)pvVar6 + 1);" (statement_identifier "LAB_0001e130") (: ":") (expression_statement "pvVar8 = (void *)((int)pvVar6 + 1);" (assignment_expression "pvVar8 = (void *)((int)pvVar6 + 1)" (identifier "pvVar8") (= "=") (cast_expression "(void *)((int)pvVar6 + 1)" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)pvVar6 + 1)" (( "(") (binary_expression "(int)pvVar6 + 1" (cast_expression "(int)pvVar6" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pvVar6")) (+ "+") (number_literal "1")) () ")")))) (; ";"))) (expression_statement "builtin_strncpy(__dest + sVar5,"\\000",5);" (call_expression "builtin_strncpy(__dest + sVar5,"\\000",5)" (identifier "builtin_strncpy") (argument_list "(__dest + sVar5,"\\000",5)" (( "(") (binary_expression "__dest + sVar5" (identifier "__dest") (+ "+") (identifier "sVar5")) (, ",") (string_literal ""\\000"" (" """) (escape_sequence "\\") (string_content "000") (" """)) (, ",") (number_literal "5") () ")"))) (; ";")) (expression_statement "__dest = __dest + sVar5 + 4;" (assignment_expression "__dest = __dest + sVar5 + 4" (identifier "__dest") (= "=") (binary_expression "__dest + sVar5 + 4" (binary_expression "__dest + sVar5" (identifier "__dest") (+ "+") (identifier "sVar5")) (+ "+") (number_literal "4"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (; ";")) (} "}")))

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

void * function_1(char *var_16,size_t var_2,type_1 ignored)

{
  char *pcVar1;
  int var_31;
  type_2 var_20;
  type_2 var_21;
  size_t n;
  char *var_12;
  int *piVar5;
  void *var_10;
  size_t var_15;
  char *var_17;
  char *var_33;
  type_3 uVar10;
  int var_24;
  type_3 extraout_ECX;
  char *var_18;
  char *var_34;
  int var_1;
  bool bVar13;
  bool bVar14;
  type_4 uVar15;
  int local_4e4;
  int var_28;
  char *var_26;
  int sub [300];
  
  var_31 = *(int *)(var_1 + 0x14);
  n = (var_2 + 5) * 4;
  if (((int)n < 0) || (var_2 + 5 >> 0x1e != 0)) {
                    /* WARNING: Subroutine does not return */
    var_3();
  }
  var_12 = (char *)var_4(n);
  bVar13 = var_5 == false;
  bVar14 = var_5 == false;
  piVar5 = (int *)var_6(1,0x18);
  local_4e4 = 0x21 - (type_5)bVar14;
  if ((localeinfo.multibyte != false) &&
     (local_4e4 = 0x821 - (type_5)bVar13, localeinfo.using_utf8 == false)) {
    uVar10 = var_7(0,"-P supports only unibyte and UTF-8 locales",5,var_2);
                    /* WARNING: Subroutine does not return */
    var_8(2,0,uVar10);
  }
  var_10 = var_9(var_16,10,var_2);
  if (var_10 != (void *)0x0) {
    uVar10 = var_7(0,"the -P option only supports a single pattern",5,extraout_ECX);
                    /* WARNING: Subroutine does not return */
    var_8(2,0,uVar10);
  }
  *var_12 = '\0';
  var_20 = var_11;
  if (var_11 != false) {
    *(type_3 *)var_12 = function_1::wprefix._0_4_;
    *(type_3 *)(var_12 + 4) = function_1::wprefix._4_4_;
    *(type_6 *)(var_12 + 8) = function_1::wprefix._8_2_;
    var_12[10] = function_1::wprefix[10];
  }
  var_21 = var_13;
  if (var_13 != false) {
    *(type_3 *)var_12 = function_1::xprefix._0_4_;
    var_12[4] = function_1::xprefix[4];
  }
  var_15 = var_14(var_12);
  var_18 = var_12 + var_15;
  var_33 = var_16;
  do {
    var_34 = var_16 + (var_2 - (int)var_33);
    var_17 = (char *)var_9(var_33,0,(size_t)var_34);
    if (var_17 == (char *)0x0) {
      var_17 = var_18 + (int)var_34;
      var_19(var_18,var_33,(size_t)var_34);
      uVar10 = function_1::wsuffix._4_4_;
      if (var_20 == false) {
        *var_17 = '\0';
      }
      else {
        *(type_3 *)var_17 = function_1::wsuffix._0_4_;
        *(type_3 *)(var_17 + 4) = uVar10;
      }
      if (var_21 != false) {
        *(type_6 *)var_17 = function_1::xsuffix._0_2_;
        var_17[2] = function_1::xsuffix[2];
      }
      uVar10 = var_22();
      var_24 = var_23(var_12,local_4e4,&var_26,&var_28,uVar10);
      *piVar5 = var_24;
      if (var_24 == 0) {
                    /* WARNING: Subroutine does not return */
        var_8(2,0,&DAT_0003ac56,var_26);
      }
      var_24 = var_25(var_24,9,&var_26);
      piVar5[1] = var_24;
      if (var_26 != (char *)0x0) {
                    /* WARNING: Subroutine does not return */
        var_8(2,0,&DAT_0003ac56,var_26);
      }
      uVar15 = var_27(*piVar5,var_24,0x10,&var_28);
      if ((int)uVar15 != 0) {
        uVar10 = var_7(0,"internal error (should never happen)",5,
                           (int)((type_7)uVar15 >> 0x20));
                    /* WARNING: Subroutine does not return */
        var_8(2,0,uVar10);
      }
      if (var_28 != 0) {
        piVar5[3] = 0x8000;
      }
      var_29(var_12);
      var_24 = var_30(*piVar5,piVar5[1],"",0,0,0x80,sub,300);
      piVar5[4] = var_24;
      var_24 = var_30(*piVar5,piVar5[1],"",0,0,0,sub,300);
      piVar5[5] = var_24;
      if (var_31 != *(int *)(var_1 + 0x14)) {
                    /* WARNING: Subroutine does not return */
        var_32();
      }
      return piVar5;
    }
    var_15 = (int)var_17 - (int)var_33;
    var_19(var_18,var_33,var_15);
    if ((var_16 < var_17) && (var_33 = var_17, var_17[-1] == '\\')) {
      do {
        var_34 = var_33 + -1;
        if (var_16 == var_34) {
          var_15 = var_15 - ((int)var_17 - (int)var_16 & 1U);
          goto LAB_0001e130;
        }
        pcVar1 = var_33 + -2;
        var_33 = var_34;
      } while (*pcVar1 == '\\');
      var_15 = var_15 - ((int)var_17 - (int)var_34 & 1U);
    }
LAB_0001e130:
    var_33 = var_17 + 1;
    var_35(var_18 + var_15,"\\000",5);
    var_18 = var_18 + var_15 + 4;
  } while( true );
}


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

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

int * MASKED(void *param_1,int param_2)

{
  char cVar1;
  char cVar2;
  int iVar3;
  char *__s;
  int *piVar4;
  size_t sVar5;
  void *pvVar6;
  void *pvVar7;
  undefined4 uVar9;
  undefined4 extraout_ECX;
  char *__dest;
  char *pcVar10;
  int in_GS_OFFSET;
  bool bVar11;
  bool bVar12;
  undefined8 uVar13;
  int local_4e4;
  int local_4d8;
  int local_4d4;
  undefined1 local_4d0 [1200];
  int local_20;
  undefined4 uStack_14;
  void *pvVar8;
  
  uStack_14 = 0x1e029;
  local_20 = *(int *)(in_GS_OFFSET + 0x14);
  iVar3 = (param_2 + 5U) * 4;
  if ((iVar3 < 0) || (param_2 + 5U >> 0x1e != 0)) {
                    /* WARNING: Subroutine does not return */
    FUN_0002f1c0();
  }
  __s = (char *)FUN_0002efa0(iVar3);
  bVar11 = DAT_0004ca26 == '\0';
  bVar12 = DAT_0004ca26 == '\0';
  piVar4 = (int *)FUN_0002f0e0(1,0x18);
  local_4e4 = 0x21 - (uint)bVar12;
  if ((DAT_0004c520 != '\0') && (local_4e4 = 0x821 - (uint)bVar11, DAT_0004c521 == '\0')) {
    uVar9 = dcgettext(0,"-P supports only unibyte and UTF-8 locales",5,param_2);
                    /* WARNING: Subroutine does not return */
    error(2,0,uVar9);
  }
  iVar3 = FUN_00036f10(param_1,10,param_2);
  if (iVar3 != 0) {
    uVar9 = dcgettext(0,"the -P option only supports a single pattern",5,extraout_ECX);
                    /* WARNING: Subroutine does not return */
    error(2,0,uVar9);
  }
  *__s = '\0';
  cVar1 = DAT_0004ca24;
  if (DAT_0004ca24 != '\0') {
    *(undefined4 *)__s = DAT_0003abf4;
    *(undefined4 *)(__s + 4) = DAT_0003abf8;
    *(undefined2 *)(__s + 8) = DAT_0003abfc;
    __s[10] = DAT_0003abfe;
  }
  cVar2 = DAT_0004ca25;
  if (DAT_0004ca25 != '\0') {
    *(undefined4 *)__s = DAT_0003abec;
    __s[4] = DAT_0003abf0;
  }
  sVar5 = strlen(__s);
  __dest = __s + sVar5;
  pvVar8 = param_1;
  do {
    sVar5 = (int)param_1 + (param_2 - (int)pvVar8);
    pvVar6 = (void *)FUN_00036f10(pvVar8,0,sVar5);
    if (pvVar6 == (void *)0x0) {
      pcVar10 = __dest + sVar5;
      memcpy(__dest,pvVar8,sVar5);
      uVar9 = DAT_0003abe8;
      if (cVar1 == '\0') {
        *pcVar10 = '\0';
      }
      else {
        *(undefined4 *)pcVar10 = DAT_0003abe4;
        *(undefined4 *)(pcVar10 + 4) = uVar9;
      }
      if (cVar2 != '\0') {
        *(undefined2 *)pcVar10 = DAT_0003abe0;
        pcVar10[2] = DAT_0003abe2;
      }
      uVar9 = pcre_maketables();
      iVar3 = pcre_compile(__s,local_4e4,&local_4d4,&local_4d8,uVar9);
      *piVar4 = iVar3;
      if (iVar3 == 0) {
                    /* WARNING: Subroutine does not return */
        error(2,0,&DAT_0003ac56,local_4d4);
      }
      iVar3 = pcre_study(iVar3,9,&local_4d4);
      piVar4[1] = iVar3;
      if (local_4d4 != 0) {
                    /* WARNING: Subroutine does not return */
        error(2,0,&DAT_0003ac56,local_4d4);
      }
      uVar13 = pcre_fullinfo(*piVar4,iVar3,0x10,&local_4d8);
      if ((int)uVar13 != 0) {
        uVar9 = dcgettext(0,"internal error (should never happen)",5,
                          (int)((ulonglong)uVar13 >> 0x20));
                    /* WARNING: Subroutine does not return */
        error(2,0,uVar9);
      }
      if (local_4d8 != 0) {
        piVar4[3] = 0x8000;
      }
      free(__s);
      iVar3 = pcre_exec(*piVar4,piVar4[1],"",0,0,0x80,local_4d0,300);
      piVar4[4] = iVar3;
      iVar3 = pcre_exec(*piVar4,piVar4[1],"",0,0,0,local_4d0,300);
      piVar4[5] = iVar3;
      if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {
                    /* WARNING: Subroutine does not return */
        FUN_00038830();
      }
      return piVar4;
    }
    sVar5 = (int)pvVar6 - (int)pvVar8;
    memcpy(__dest,pvVar8,sVar5);
    if ((param_1 < pvVar6) && (pvVar8 = pvVar6, *(char *)((int)pvVar6 - 1) == '\\')) {
      do {
        pvVar7 = (void *)((int)pvVar8 - 1);
        if (param_1 == pvVar7) {
          sVar5 = sVar5 - ((int)pvVar6 - (int)param_1 & 1U);
          goto LAB_0001e130;
        }
        pcVar10 = (char *)((int)pvVar8 - 2);
        pvVar8 = pvVar7;
      } while (*pcVar10 == '\\');
      sVar5 = sVar5 - ((int)pvVar6 - (int)pvVar7 & 1U);
    }
LAB_0001e130:
    pvVar8 = (void *)((int)pvVar6 + 1);
    builtin_strncpy(__dest + sVar5,"\\000",5);
    __dest = __dest + sVar5 + 4;
  } while( true );
}

