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

int __regparm2
match_regex(regex *regex,char *buf,size_t buflen,size_t buf_start_offset,re_registers *regarray,
           int regsize)

{
  char cVar1;
  short sVar2;
  dfa *d;
  int iVar3;
  regex *new_regex;
  _Bool _Var4;
  void *pvVar5;
  dfa *d_00;
  char *pcVar6;
  re_registers *__regs;
  void *pvVar7;
  uint uVar8;
  regoff_t *prVar9;
  regoff_t *prVar10;
  uint uVar11;
  char *pcVar12;
  int in_GS_OFFSET;
  re_registers *in_stack_00000014;
  int in_stack_00000018;
  re_registers *local_40;
  _Bool backref;
  int local_20;
  undefined4 uStack_14;
  
  uStack_14 = 0x1bf59;
  local_40 = in_stack_00000014;
  local_20 = *(int *)(in_GS_OFFSET + 0x14);
  if (buflen == 0) {
    if (match_regex::regex_last == (regex *)0x0) {
      pcVar6 = (char *)dcgettext(0,"no previous regular expression",5,buf);
                    /* WARNING: Subroutine does not return */
      bad_prog(pcVar6);
    }
  }
  else {
    match_regex::regex_last = (regex *)buflen;
  }
  new_regex = match_regex::regex_last;
  if ((re_registers *)0x7ffffffe < regarray) {
    pcVar6 = (char *)dcgettext(0,"regex input buffer length larger than INT_MAX",5,0);
                    /* WARNING: Subroutine does not return */
    panic(pcVar6);
  }
  if ((((match_regex::regex_last->pattern).field_0x1c & 0x10) != 0) && (in_stack_00000018 != 0)) {
    if (match_regex::regex_last->dfa != (dfa *)0x0) {
      dfafree(match_regex::regex_last->dfa);
      free(new_regex->dfa);
      new_regex->dfa = (dfa *)0x0;
    }
    regfree((regex_t *)new_regex);
    compile_regex_1(new_regex,in_stack_00000018);
  }
  sVar2._0_1_ = new_regex->begline;
  sVar2._1_1_ = new_regex->endline;
  (new_regex->pattern).field_0x1c = (new_regex->pattern).field_0x1c & 0xf9 | 2;
  if (sVar2 != 0) {
    if (new_regex->endline == false) {
      if (regsize != 0) {
        if ((new_regex->flags & 4) == 0) goto LAB_0001c3a8;
        if (*(char *)((buf_start_offset - 1) + regsize) != buffer_delimiter) {
          pvVar5 = rpl_memchr((void *)(regsize + buf_start_offset),(int)buffer_delimiter,
                              (int)regarray - regsize);
          if (pvVar5 == (void *)0x0) goto LAB_0001c3a8;
          regsize = (int)pvVar5 + (1 - buf_start_offset);
        }
      }
    }
    else if ((new_regex->flags & 4) == 0) {
      regsize = (int)regarray;
    }
    else {
      pvVar5 = rpl_memchr((void *)(regsize + buf_start_offset),(int)buffer_delimiter,
                          (int)regarray - regsize);
      regsize = (int)pvVar5 - buf_start_offset;
      if (pvVar5 == (void *)0x0) {
        regsize = (int)regarray;
      }
    }
    if (in_stack_00000018 != 0) {
      prVar9 = in_stack_00000014->start;
      if (prVar9 == (regoff_t *)0x0) {
        prVar9 = (regoff_t *)xcalloc(1,4);
        in_stack_00000014->start = prVar9;
        prVar10 = (regoff_t *)xcalloc(1,4);
        in_stack_00000014->num_regs = 1;
        prVar9 = in_stack_00000014->start;
        in_stack_00000014->end = prVar10;
      }
      else {
        prVar10 = in_stack_00000014->end;
      }
      *prVar9 = regsize;
      *prVar10 = regsize;
      if (1 < in_stack_00000014->num_regs) {
        uVar11 = 1;
        do {
          prVar10[uVar11] = -1;
          prVar9[uVar11] = -1;
          uVar11 = uVar11 + 1;
        } while (uVar11 < in_stack_00000014->num_regs);
      }
    }
    uVar11 = 1;
    goto LAB_0001c07a;
  }
  if (regsize == 0) {
    d = new_regex->dfa;
    d_00 = dfasuperset(d);
    if (d_00 == (dfa *)0x0) {
      if ((in_stack_00000018 == 0) && ((new_regex->flags & 4) != 0)) {
LAB_0001c345:
        backref = false;
        pcVar6 = dfaexec(new_regex->dfa,(char *)buf_start_offset,
                         (char *)((int)&regarray->num_regs + buf_start_offset),true,(size_t *)0x0,
                         &backref);
        if (pcVar6 != (char *)0x0) {
          uVar11 = new_regex->flags;
LAB_0001c36d:
          uVar8 = uVar11 & 4;
          if (uVar8 == 0) goto LAB_0001c398;
          uVar11 = 1;
          if (backref == false) goto LAB_0001c07a;
          goto LAB_0001c2de;
        }
      }
      else {
        _Var4 = dfaisfast(d);
        if (!_Var4) goto LAB_0001c2d8;
        backref = false;
        pcVar6 = dfaexec(d,(char *)buf_start_offset,
                         (char *)((int)&regarray->num_regs + buf_start_offset),true,(size_t *)0x0,
                         &backref);
        if (pcVar6 != (char *)0x0) {
          uVar11 = new_regex->flags;
          uVar8 = uVar11 & 4;
          if (in_stack_00000018 == 0) goto LAB_0001c36d;
          goto LAB_0001c2de;
        }
      }
    }
    else {
      pcVar6 = dfaexec(d_00,(char *)buf_start_offset,
                       (char *)((int)&regarray->num_regs + buf_start_offset),true,(size_t *)0x0,
                       (_Bool *)0x0);
      if (pcVar6 != (char *)0x0) {
        uVar11 = new_regex->flags & 4;
        if (in_stack_00000018 == 0) {
          if (uVar11 != 0) goto LAB_0001c345;
          goto LAB_0001c398;
        }
        if (uVar11 != 0) goto LAB_0001c100;
        goto LAB_0001c2f2;
      }
    }
LAB_0001c3a8:
    uVar11 = 0;
  }
  else {
LAB_0001c2d8:
    uVar8 = new_regex->flags & 4;
LAB_0001c2de:
    if (uVar8 == 0) {
LAB_0001c2e6:
      if (in_stack_00000018 == 0) {
LAB_0001c398:
        local_40 = (re_registers *)0x0;
      }
LAB_0001c2f2:
      pcVar12 = (char *)re_search((re_pattern_buffer *)new_regex,(char *)buf_start_offset,
                                  (int)regarray,regsize,(int)regarray - regsize,local_40);
    }
    else {
LAB_0001c100:
      cVar1 = buffer_delimiter;
      if (buffer_delimiter == '\n') goto LAB_0001c2e6;
      pcVar6 = (char *)buf_start_offset;
      if (regsize != 0) {
        pvVar5 = memrchr((void *)buf_start_offset,(int)buffer_delimiter,regsize);
        pcVar6 = (char *)((int)pvVar5 + 1);
        if (pvVar5 == (void *)0x0) {
          pcVar6 = (char *)buf_start_offset;
        }
      }
      pcVar12 = (char *)(regsize + buf_start_offset);
      __regs = (re_registers *)0x0;
      if (in_stack_00000018 != 0) {
        __regs = in_stack_00000014;
      }
      pvVar5 = (void *)((int)&regarray->num_regs + buf_start_offset);
      while( true ) {
        pvVar7 = rpl_memchr(pcVar6,(int)cVar1,(int)pvVar5 - (int)pcVar6);
        if (pvVar7 == (void *)0x0) break;
        pcVar12 = (char *)re_search((re_pattern_buffer *)new_regex,pcVar6,(int)pvVar7 - (int)pcVar6,
                                    (int)pcVar12 - (int)pcVar6,(int)pvVar7 - (int)pcVar12,__regs);
        if (-1 < (int)pcVar12) goto LAB_0001c1f7;
        if (pvVar7 == pvVar5) goto LAB_0001c317;
        pcVar12 = (char *)((int)pvVar7 + 1);
        pcVar6 = pcVar12;
        cVar1 = buffer_delimiter;
      }
      pcVar12 = (char *)re_search((re_pattern_buffer *)new_regex,pcVar6,(int)pvVar5 - (int)pcVar6,
                                  (int)pcVar12 - (int)pcVar6,(int)pvVar5 - (int)pcVar12,__regs);
      if (-1 < (int)pcVar12) {
LAB_0001c1f7:
        pcVar12 = pcVar6 + ((int)pcVar12 - buf_start_offset);
        if ((in_stack_00000018 != 0) && (in_stack_00000014->num_regs != 0)) {
          prVar9 = in_stack_00000014->start;
          prVar10 = in_stack_00000014->end;
          uVar11 = 0;
          do {
            while( true ) {
              iVar3 = prVar9[uVar11];
              if (-1 < iVar3) {
                prVar9[uVar11] = (regoff_t)(pcVar6 + (iVar3 - buf_start_offset));
              }
              iVar3 = prVar10[uVar11];
              if (iVar3 < 0) break;
              prVar10[uVar11] = (regoff_t)(pcVar6 + (iVar3 - buf_start_offset));
              uVar11 = uVar11 + 1;
              if (in_stack_00000014->num_regs <= uVar11) goto LAB_0001c317;
            }
            uVar11 = uVar11 + 1;
          } while (uVar11 < in_stack_00000014->num_regs);
        }
      }
    }
LAB_0001c317:
    uVar11 = ~(uint)pcVar12 >> 0x1f;
  }
LAB_0001c07a:
  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {
                    /* WARNING: Subroutine does not return */
    __stack_chk_fail_local();
  }
  return uVar11;
}



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

uint __regparm2
FUN_0001bf50(undefined4 param_1,undefined4 param_2,re_pattern_buffer *param_3,char *param_4,
            uint param_5,uint param_6,re_registers *param_7,int param_8)

{
  ulong uVar1;
  regoff_t *prVar2;
  reg_syntax_t rVar3;
  re_pattern_buffer *__preg;
  char cVar4;
  int iVar5;
  void *pvVar6;
  re_registers *__regs;
  char *pcVar7;
  uint uVar8;
  regoff_t *prVar10;
  uint *puVar11;
  undefined4 uVar12;
  uint *puVar13;
  char *pcVar14;
  uint uVar15;
  char *pcVar16;
  char *__string;
  int in_GS_OFFSET;
  re_registers *local_40;
  char local_21;
  int local_20;
  undefined4 uStack_14;
  uchar *puVar9;
  
  uStack_14 = 0x1bf59;
  local_40 = param_7;
  local_20 = *(int *)(in_GS_OFFSET + 0x14);
  if (param_3 == (re_pattern_buffer *)0x0) {
    if (DAT_0003940c == (re_pattern_buffer *)0x0) {
      uVar12 = dcgettext(0,"no previous regular expression",5,param_2);
                    /* WARNING: Subroutine does not return */
      FUN_000131f0(uVar12);
    }
  }
  else {
    DAT_0003940c = param_3;
  }
  __preg = DAT_0003940c;
  if (0x7ffffffe < param_5) {
    uVar12 = dcgettext(0,"regex input buffer length larger than INT_MAX",5,0);
                    /* WARNING: Subroutine does not return */
    FUN_0001c8c0(uVar12);
  }
  if (((DAT_0003940c->field_0x1c & 0x10) != 0) && (param_8 != 0)) {
    if (DAT_0003940c[1].used != 0) {
      FUN_000245c0(DAT_0003940c[1].used);
      free((void *)__preg[1].used);
      __preg[1].used = 0;
    }
    regfree(__preg);
    FUN_0001bbc0();
  }
  rVar3 = __preg[1].syntax;
  __preg->field_0x1c = __preg->field_0x1c & 0xf9 | 2;
  if ((short)rVar3 != 0) {
    if (*(char *)((int)&__preg[1].syntax + 1) == '\0') {
      if (param_6 != 0) {
        if (((uint)__preg[1].buffer & 4) == 0) goto LAB_0001c3a8;
        if (param_4[param_6 - 1] != DAT_00039240) {
          iVar5 = FUN_0002b7a0(param_4 + param_6,(int)DAT_00039240,param_5 - param_6);
          if (iVar5 == 0) goto LAB_0001c3a8;
          param_6 = (iVar5 - (int)param_4) + 1;
        }
      }
    }
    else if (((uint)__preg[1].buffer & 4) == 0) {
      param_6 = param_5;
    }
    else {
      iVar5 = FUN_0002b7a0(param_4 + param_6,(int)DAT_00039240,param_5 - param_6);
      param_6 = iVar5 - (int)param_4;
      if (iVar5 == 0) {
        param_6 = param_5;
      }
    }
    if (param_8 != 0) {
      puVar13 = (uint *)param_7->start;
      if (puVar13 == (uint *)0x0) {
        prVar10 = (regoff_t *)FUN_00029ec0(1,4);
        param_7->start = prVar10;
        puVar11 = (uint *)FUN_00029ec0(1,4);
        param_7->num_regs = 1;
        puVar13 = (uint *)param_7->start;
        param_7->end = (regoff_t *)puVar11;
      }
      else {
        puVar11 = (uint *)param_7->end;
      }
      *puVar13 = param_6;
      *puVar11 = param_6;
      if (1 < param_7->num_regs) {
        uVar15 = 1;
        do {
          puVar11[uVar15] = 0xffffffff;
          puVar13[uVar15] = 0xffffffff;
          uVar15 = uVar15 + 1;
        } while (uVar15 < param_7->num_regs);
      }
    }
    uVar15 = 1;
    goto LAB_0001c07a;
  }
  if (param_6 == 0) {
    uVar1 = __preg[1].used;
    iVar5 = FUN_000245a0(uVar1);
    if (iVar5 == 0) {
      if ((param_8 == 0) && (((uint)__preg[1].buffer & 4) != 0)) {
LAB_0001c345:
        local_21 = '\0';
        iVar5 = FUN_00024580(__preg[1].used,param_4,param_4 + param_5,1,0,&local_21);
        if (iVar5 != 0) {
          puVar9 = __preg[1].buffer;
LAB_0001c36d:
          uVar8 = (uint)puVar9 & 4;
          if (uVar8 == 0) goto LAB_0001c398;
          uVar15 = 1;
          if (local_21 == '\0') goto LAB_0001c07a;
          goto LAB_0001c2de;
        }
      }
      else {
        cVar4 = FUN_000245b0(uVar1);
        if (cVar4 == '\0') goto LAB_0001c2d8;
        local_21 = '\0';
        iVar5 = FUN_00024580(uVar1,param_4,param_4 + param_5,1,0,&local_21);
        if (iVar5 != 0) {
          puVar9 = __preg[1].buffer;
          uVar8 = (uint)puVar9 & 4;
          if (param_8 == 0) goto LAB_0001c36d;
          goto LAB_0001c2de;
        }
      }
    }
    else {
      iVar5 = FUN_00024580(iVar5,param_4,param_4 + param_5,1,0,0);
      if (iVar5 != 0) {
        uVar15 = (uint)__preg[1].buffer & 4;
        if (param_8 == 0) {
          if (uVar15 != 0) goto LAB_0001c345;
          goto LAB_0001c398;
        }
        if (uVar15 != 0) goto LAB_0001c100;
        goto LAB_0001c2f2;
      }
    }
LAB_0001c3a8:
    uVar15 = 0;
  }
  else {
LAB_0001c2d8:
    uVar8 = (uint)__preg[1].buffer & 4;
LAB_0001c2de:
    if (uVar8 == 0) {
LAB_0001c2e6:
      if (param_8 == 0) {
LAB_0001c398:
        local_40 = (re_registers *)0x0;
      }
LAB_0001c2f2:
      pcVar16 = (char *)re_search(__preg,param_4,param_5,param_6,param_5 - param_6,local_40);
    }
    else {
LAB_0001c100:
      cVar4 = DAT_00039240;
      if (DAT_00039240 == '\n') goto LAB_0001c2e6;
      __string = param_4;
      if (param_6 != 0) {
        pvVar6 = memrchr(param_4,(int)DAT_00039240,param_6);
        __string = (char *)((int)pvVar6 + 1);
        if (pvVar6 == (void *)0x0) {
          __string = param_4;
        }
      }
      pcVar16 = param_4 + param_6;
      __regs = (re_registers *)0x0;
      if (param_8 != 0) {
        __regs = param_7;
      }
      pcVar14 = param_4 + param_5;
      while( true ) {
        pcVar7 = (char *)FUN_0002b7a0(__string,(int)cVar4,(int)pcVar14 - (int)__string);
        if (pcVar7 == (char *)0x0) break;
        pcVar16 = (char *)re_search(__preg,__string,(int)pcVar7 - (int)__string,
                                    (int)pcVar16 - (int)__string,(int)pcVar7 - (int)pcVar16,__regs);
        if (-1 < (int)pcVar16) goto LAB_0001c1f7;
        if (pcVar7 == pcVar14) goto LAB_0001c317;
        pcVar16 = pcVar7 + 1;
        __string = pcVar16;
        cVar4 = DAT_00039240;
      }
      pcVar16 = (char *)re_search(__preg,__string,(int)pcVar14 - (int)__string,
                                  (int)pcVar16 - (int)__string,(int)pcVar14 - (int)pcVar16,__regs);
      if (-1 < (int)pcVar16) {
LAB_0001c1f7:
        pcVar16 = __string + ((int)pcVar16 - (int)param_4);
        if ((param_8 != 0) && (param_7->num_regs != 0)) {
          prVar10 = param_7->start;
          prVar2 = param_7->end;
          uVar15 = 0;
          do {
            while( true ) {
              iVar5 = prVar10[uVar15];
              if (-1 < iVar5) {
                prVar10[uVar15] = (regoff_t)(__string + (iVar5 - (int)param_4));
              }
              iVar5 = prVar2[uVar15];
              if (iVar5 < 0) break;
              prVar2[uVar15] = (regoff_t)(__string + (iVar5 - (int)param_4));
              uVar15 = uVar15 + 1;
              if (param_7->num_regs <= uVar15) goto LAB_0001c317;
            }
            uVar15 = uVar15 + 1;
          } while (uVar15 < param_7->num_regs);
        }
      }
    }
LAB_0001c317:
    uVar15 = ~(uint)pcVar16 >> 0x1f;
  }
LAB_0001c07a:
  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {
                    /* WARNING: Subroutine does not return */
    FUN_0002c430();
  }
  return uVar15;
}


PUSH EBP
PUSH EDI
PUSH ESI
PUSH EBX
CALL 0x00012c30
ADD EBX,0x1d0a7
SUB ESP,0x3c
MOV EAX,dword ptr [ESP + 0x54]
MOV ESI,dword ptr [ESP + 0x50]
MOV dword ptr [ESP + 0x10],EAX
MOV EAX,dword ptr [ESP + 0x60]
MOV dword ptr [ESP + 0xc],EAX
MOV EAX,GS:[0x14]
MOV dword ptr [ESP + 0x2c],EAX
XOR EAX,EAX
TEST ESI,ESI
JZ 0x0001c290
MOV dword ptr [EBX + 0x40c],ESI
CMP dword ptr [ESP + 0x58],0x7ffffffe
JA 0x0001c4aa
TEST byte ptr [ESI + 0x1c],0x10
JZ 0x0001bfb0
MOV EAX,dword ptr [ESP + 0x64]
TEST EAX,EAX
JNZ 0x0001c250
MOVZX EAX,byte ptr [ESI + 0x1c]
AND EAX,0xfffffff9
OR EAX,0x2
CMP word ptr [ESI + 0x2c],0x0
MOV byte ptr [ESI + 0x1c],AL
JZ 0x0001c098
CMP byte ptr [ESI + 0x2d],0x0
JNZ 0x0001c3b0
MOV EAX,dword ptr [ESP + 0x5c]
TEST EAX,EAX
JZ 0x0001c028
TEST byte ptr [ESI + 0x20],0x4
JZ 0x0001c3a8
LEA EAX,[EBX + 0x240]
MOV EDI,dword ptr [ESP + 0x10]
MOV ESI,dword ptr [ESP + 0x5c]
MOVSX EAX,byte ptr [EAX]
CMP byte ptr [EDI + ESI*0x1 + -0x1],AL
JZ 0x0001c028
SUB ESP,0x4
MOV EDX,dword ptr [ESP + 0x5c]
SUB EDX,dword ptr [ESP + 0x60]
PUSH EDX
PUSH EAX
MOV EDX,dword ptr [ESP + 0x68]
ADD EDX,EDI
PUSH EDX
CALL 0x0002b7a0
ADD ESP,0x10
TEST EAX,EAX
JZ 0x0001c3a8
SUB EAX,EDI
ADD EAX,0x1
MOV dword ptr [ESP + 0x5c],EAX
MOV EAX,dword ptr [ESP + 0x64]
TEST EAX,EAX
JZ 0x0001c075
MOV EAX,dword ptr [ESP + 0xc]
MOV ECX,dword ptr [EAX + 0x4]
TEST ECX,ECX
JZ 0x0001c478
MOV EAX,dword ptr [EAX + 0x8]
MOV ESI,dword ptr [ESP + 0x5c]
MOV EBX,dword ptr [ESP + 0xc]
MOV dword ptr [ECX],ESI
MOV dword ptr [EAX],ESI
CMP dword ptr [EBX],0x1
JBE 0x0001c075
MOV EDX,0x1
LEA ESI,[ESI]
NOP
MOV dword ptr [EAX + EDX*0x4],0xffffffff
MOV dword ptr [ECX + EDX*0x4],0xffffffff
ADD EDX,0x1
CMP dword ptr [EBX],EDX
JA 0x0001c060
MOV EAX,0x1
MOV EBX,dword ptr [ESP + 0x2c]
XOR EBX,dword ptr GS:[0x14]
JNZ 0x0001c4c3
ADD ESP,0x3c
POP EBX
POP ESI
POP EDI
POP EBP
RET
MOV EDI,dword ptr [ESP + 0x5c]
TEST EDI,EDI
JNZ 0x0001c2d8
MOV EDI,dword ptr [ESI + 0x28]
SUB ESP,0xc
PUSH EDI
CALL 0x000245a0
ADD ESP,0x10
TEST EAX,EAX
JZ 0x0001c328
SUB ESP,0x8
PUSH 0x0
PUSH 0x0
PUSH 0x1
MOV EDI,dword ptr [ESP + 0x24]
MOV EBP,dword ptr [ESP + 0x6c]
ADD EBP,EDI
PUSH EBP
PUSH EDI
PUSH EAX
CALL 0x00024580
ADD ESP,0x20
TEST EAX,EAX
JZ 0x0001c3a8
MOV EAX,dword ptr [ESI + 0x20]
MOV EDX,dword ptr [ESP + 0x64]
AND EAX,0x4
TEST EDX,EDX
JZ 0x0001c390
TEST EAX,EAX
JZ 0x0001c2f2
LEA ESI,[ESI]
NOP
LEA EAX,[EBX + 0x240]
MOV dword ptr [ESP + 0x1c],EAX
MOVZX EAX,byte ptr [EAX]
CMP AL,0xa
JZ 0x0001c2e6
MOV EDX,dword ptr [ESP + 0x5c]
TEST EDX,EDX
JZ 0x0001c408
SUB ESP,0x4
MOVSX EBP,AL
PUSH dword ptr [ESP + 0x60]
PUSH EBP
PUSH dword ptr [ESP + 0x1c]
CALL 0x000123d0
ADD ESP,0x10
LEA EDI,[EAX + 0x1]
TEST EAX,EAX
CMOVZ EDI,dword ptr [ESP + 0x10]
MOV ECX,dword ptr [ESP + 0x10]
MOV EAX,dword ptr [ESP + 0x64]
MOV dword ptr [ESP + 0x18],ESI
MOV EDX,dword ptr [ESP + 0x5c]
ADD EDX,ECX
TEST EAX,EAX
MOV EAX,0x0
CMOVNZ EAX,dword ptr [ESP + 0xc]
ADD ECX,dword ptr [ESP + 0x58]
MOV ESI,EDX
MOV dword ptr [ESP + 0x14],EAX
MOV dword ptr [ESP + 0x4],ECX
JMP 0x0001c1ab
SUB ESP,0x8
SUB EAX,ESI
MOV EDX,ESI
PUSH dword ptr [ESP + 0x1c]
SUB EDX,EDI
PUSH EAX
MOV EAX,EBP
SUB EAX,EDI
PUSH EDX
PUSH EAX
PUSH EDI
PUSH dword ptr [ESP + 0x34]
CALL 0x00012440
ADD ESP,0x20
TEST EAX,EAX
JNS 0x0001c1f7
CMP EBP,dword ptr [ESP + 0x4]
JZ 0x0001c317
MOV EAX,dword ptr [ESP + 0x1c]
LEA EDI,[EBP + 0x1]
MOV ESI,EDI
MOVSX EBP,byte ptr [EAX]
MOV ECX,dword ptr [ESP + 0x4]
SUB ESP,0x4
SUB ECX,EDI
PUSH ECX
MOV dword ptr [ESP + 0x10],ECX
PUSH EBP
PUSH EDI
CALL 0x0002b7a0
ADD ESP,0x10
MOV ECX,dword ptr [ESP + 0x8]
TEST EAX,EAX
MOV EBP,EAX
JNZ 0x0001c170
SUB ESP,0x8
MOV EDX,ESI
MOV ESI,dword ptr [ESP + 0x20]
PUSH dword ptr [ESP + 0x1c]
MOV EAX,dword ptr [ESP + 0x10]
SUB EAX,EDX
SUB EDX,EDI
PUSH EAX
PUSH EDX
PUSH ECX
PUSH EDI
PUSH ESI
CALL 0x00012440
ADD ESP,0x20
TEST EAX,EAX
JS 0x0001c317
MOV EDX,dword ptr [ESP + 0x64]
SUB EDI,dword ptr [ESP + 0x10]
ADD EAX,EDI
TEST EDX,EDX
JZ 0x0001c317
MOV EBX,dword ptr [ESP + 0xc]
MOV EBP,dword ptr [EBX]
TEST EBP,EBP
JZ 0x0001c317
MOV ESI,dword ptr [EBX + 0x4]
MOV EBX,dword ptr [EBX + 0x8]
XOR EDX,EDX
NOP
MOV ECX,dword ptr [ESI + EDX*0x4]
TEST ECX,ECX
JS 0x0001c22c
ADD ECX,EDI
MOV dword ptr [ESI + EDX*0x4],ECX
MOV ECX,dword ptr [EBX + EDX*0x4]
TEST ECX,ECX
JS 0x0001c460
ADD ECX,EDI
MOV dword ptr [EBX + EDX*0x4],ECX
MOV ECX,dword ptr [ESP + 0xc]
ADD EDX,0x1
CMP dword ptr [ECX],EDX
JA 0x0001c220
JMP 0x0001c317
MOV EAX,dword ptr [ESI + 0x28]
TEST EAX,EAX
JZ 0x0001c273
SUB ESP,0xc
PUSH EAX
CALL 0x000245c0
POP EAX
PUSH dword ptr [ESI + 0x28]
CALL 0x00012700
MOV dword ptr [ESI + 0x28],0x0
ADD ESP,0x10
SUB ESP,0xc
PUSH ESI
CALL 0x00012250
MOV EDX,dword ptr [ESP + 0x74]
MOV EAX,ESI
CALL 0x0001bbc0
ADD ESP,0x10
JMP 0x0001bfb0
MOV ESI,dword ptr [EBX + 0x40c]
TEST ESI,ESI
JNZ 0x0001bf90
LEA EAX,[EBX + 0xffff5380]
PUSH EDX
PUSH 0x5
PUSH EAX
PUSH 0x0
CALL 0x00012140
MOV dword ptr [ESP],EAX
CALL 0x000131f0
SUB ESP,0xc
PUSH EDI
CALL 0x000245b0
ADD ESP,0x10
TEST AL,AL
JNZ 0x0001c418
LEA ESI,[ESI]
MOV EDX,dword ptr [ESI + 0x20]
AND EDX,0x4
TEST EDX,EDX
JNZ 0x0001c100
MOV EDI,dword ptr [ESP + 0x64]
TEST EDI,EDI
JZ 0x0001c398
SUB ESP,0x8
PUSH dword ptr [ESP + 0x14]
MOV EAX,dword ptr [ESP + 0x64]
SUB EAX,dword ptr [ESP + 0x68]
PUSH EAX
PUSH dword ptr [ESP + 0x6c]
PUSH dword ptr [ESP + 0x6c]
PUSH dword ptr [ESP + 0x28]
PUSH ESI
CALL 0x00012440
ADD ESP,0x20
NOT EAX
SHR EAX,0x1f
JMP 0x0001c07a
MOV ECX,dword ptr [ESP + 0x64]
TEST ECX,ECX
JNZ 0x0001c2c0
MOV EAX,dword ptr [ESP + 0x10]
MOV ECX,dword ptr [ESP + 0x58]
LEA EBP,[EAX + ECX*0x1]
TEST byte ptr [ESI + 0x20],0x4
JZ 0x0001c2c0
MOV byte ptr [ESP + 0x2b],0x0
SUB ESP,0x8
LEA EAX,[ESP + 0x33]
PUSH EAX
PUSH 0x0
PUSH 0x1
PUSH EBP
PUSH dword ptr [ESP + 0x28]
PUSH dword ptr [ESI + 0x28]
CALL 0x00024580
ADD ESP,0x20
TEST EAX,EAX
JZ 0x0001c3a8
MOV EAX,dword ptr [ESI + 0x20]
AND EAX,0x4
MOV EDX,EAX
JZ 0x0001c398
CMP byte ptr [ESP + 0x2b],0x0
MOV EAX,0x1
JNZ 0x0001c2de
JMP 0x0001c07a
TEST EAX,EAX
JNZ 0x0001c345
LEA ESI,[ESI]
MOV dword ptr [ESP + 0xc],0x0
JMP 0x0001c2f2
XOR EAX,EAX
JMP 0x0001c07a
TEST byte ptr [ESI + 0x20],0x4
JZ 0x0001c3f8
SUB ESP,0x4
MOV EAX,dword ptr [ESP + 0x5c]
SUB EAX,dword ptr [ESP + 0x60]
PUSH EAX
LEA EAX,[EBX + 0x240]
MOVSX EAX,byte ptr [EAX]
PUSH EAX
MOV EDI,dword ptr [ESP + 0x1c]
MOV EDX,dword ptr [ESP + 0x68]
ADD EDX,EDI
PUSH EDX
CALL 0x0002b7a0
ADD ESP,0x10
MOV EDX,EAX
SUB EDX,EDI
TEST EAX,EAX
CMOVZ EDX,dword ptr [ESP + 0x58]
MOV dword ptr [ESP + 0x5c],EDX
JMP 0x0001c028
MOV EAX,dword ptr [ESP + 0x58]
MOV dword ptr [ESP + 0x5c],EAX
JMP 0x0001c028
MOV EDI,dword ptr [ESP + 0x10]
MOVSX EBP,AL
JMP 0x0001c142
MOV byte ptr [ESP + 0x2b],0x0
SUB ESP,0x8
LEA EAX,[ESP + 0x33]
PUSH EAX
PUSH 0x0
PUSH 0x1
MOV ECX,dword ptr [ESP + 0x24]
MOV EAX,dword ptr [ESP + 0x6c]
ADD EAX,ECX
PUSH EAX
PUSH ECX
PUSH EDI
CALL 0x00024580
ADD ESP,0x20
TEST EAX,EAX
JZ 0x0001c3a8
MOV EAX,dword ptr [ESI + 0x20]
MOV ECX,dword ptr [ESP + 0x64]
MOV EDX,EAX
AND EDX,0x4
TEST ECX,ECX
JNZ 0x0001c2de
JMP 0x0001c36d
MOV ECX,dword ptr [ESP + 0xc]
ADD EDX,0x1
CMP dword ptr [ECX],EDX
JA 0x0001c220
JMP 0x0001c317
SUB ESP,0x8
PUSH 0x4
PUSH 0x1
CALL 0x00029ec0
MOV EDI,dword ptr [ESP + 0x1c]
MOV dword ptr [EDI + 0x4],EAX
POP EBP
POP EAX
PUSH 0x4
PUSH 0x1
CALL 0x00029ec0
MOV dword ptr [EDI],0x1
MOV ECX,dword ptr [EDI + 0x4]
ADD ESP,0x10
MOV dword ptr [EDI + 0x8],EAX
JMP 0x0001c042
PUSH EAX
LEA EAX,[EBX + 0xffff5340]
PUSH 0x5
PUSH EAX
PUSH 0x0
CALL 0x00012140
MOV dword ptr [ESP],EAX
CALL 0x0001c8c0
CALL 0x0002c430
(translation_unit "/* WARNING: Function: __i686.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */\n\nuint __regparm2\nFUN_0001bf50(undefined4 param_1,undefined4 param_2,re_pattern_buffer *param_3,char *param_4,\n            uint param_5,uint param_6,re_registers *param_7,int param_8)\n\n{\n  ulong uVar1;\n  regoff_t *prVar2;\n  reg_syntax_t rVar3;\n  re_pattern_buffer *__preg;\n  char cVar4;\n  int iVar5;\n  void *pvVar6;\n  re_registers *__regs;\n  char *pcVar7;\n  uint uVar8;\n  regoff_t *prVar10;\n  uint *puVar11;\n  undefined4 uVar12;\n  uint *puVar13;\n  char *pcVar14;\n  uint uVar15;\n  char *pcVar16;\n  char *__string;\n  int in_GS_OFFSET;\n  re_registers *local_40;\n  char local_21;\n  int local_20;\n  undefined4 uStack_14;\n  uchar *puVar9;\n  \n  uStack_14 = 0x1bf59;\n  local_40 = param_7;\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  if (param_3 == (re_pattern_buffer *)0x0) {\n    if (DAT_0003940c == (re_pattern_buffer *)0x0) {\n      uVar12 = dcgettext(0,"no previous regular expression",5,param_2);\n                    /* WARNING: Subroutine does not return */\n      FUN_000131f0(uVar12);\n    }\n  }\n  else {\n    DAT_0003940c = param_3;\n  }\n  __preg = DAT_0003940c;\n  if (0x7ffffffe < param_5) {\n    uVar12 = dcgettext(0,"regex input buffer length larger than INT_MAX",5,0);\n                    /* WARNING: Subroutine does not return */\n    FUN_0001c8c0(uVar12);\n  }\n  if (((DAT_0003940c->field_0x1c & 0x10) != 0) && (param_8 != 0)) {\n    if (DAT_0003940c[1].used != 0) {\n      FUN_000245c0(DAT_0003940c[1].used);\n      free((void *)__preg[1].used);\n      __preg[1].used = 0;\n    }\n    regfree(__preg);\n    FUN_0001bbc0();\n  }\n  rVar3 = __preg[1].syntax;\n  __preg->field_0x1c = __preg->field_0x1c & 0xf9 | 2;\n  if ((short)rVar3 != 0) {\n    if (*(char *)((int)&__preg[1].syntax + 1) == '\0') {\n      if (param_6 != 0) {\n        if (((uint)__preg[1].buffer & 4) == 0) goto LAB_0001c3a8;\n        if (param_4[param_6 - 1] != DAT_00039240) {\n          iVar5 = FUN_0002b7a0(param_4 + param_6,(int)DAT_00039240,param_5 - param_6);\n          if (iVar5 == 0) goto LAB_0001c3a8;\n          param_6 = (iVar5 - (int)param_4) + 1;\n        }\n      }\n    }\n    else if (((uint)__preg[1].buffer & 4) == 0) {\n      param_6 = param_5;\n    }\n    else {\n      iVar5 = FUN_0002b7a0(param_4 + param_6,(int)DAT_00039240,param_5 - param_6);\n      param_6 = iVar5 - (int)param_4;\n      if (iVar5 == 0) {\n        param_6 = param_5;\n      }\n    }\n    if (param_8 != 0) {\n      puVar13 = (uint *)param_7->start;\n      if (puVar13 == (uint *)0x0) {\n        prVar10 = (regoff_t *)FUN_00029ec0(1,4);\n        param_7->start = prVar10;\n        puVar11 = (uint *)FUN_00029ec0(1,4);\n        param_7->num_regs = 1;\n        puVar13 = (uint *)param_7->start;\n        param_7->end = (regoff_t *)puVar11;\n      }\n      else {\n        puVar11 = (uint *)param_7->end;\n      }\n      *puVar13 = param_6;\n      *puVar11 = param_6;\n      if (1 < param_7->num_regs) {\n        uVar15 = 1;\n        do {\n          puVar11[uVar15] = 0xffffffff;\n          puVar13[uVar15] = 0xffffffff;\n          uVar15 = uVar15 + 1;\n        } while (uVar15 < param_7->num_regs);\n      }\n    }\n    uVar15 = 1;\n    goto LAB_0001c07a;\n  }\n  if (param_6 == 0) {\n    uVar1 = __preg[1].used;\n    iVar5 = FUN_000245a0(uVar1);\n    if (iVar5 == 0) {\n      if ((param_8 == 0) && (((uint)__preg[1].buffer & 4) != 0)) {\nLAB_0001c345:\n        local_21 = '\0';\n        iVar5 = FUN_00024580(__preg[1].used,param_4,param_4 + param_5,1,0,&local_21);\n        if (iVar5 != 0) {\n          puVar9 = __preg[1].buffer;\nLAB_0001c36d:\n          uVar8 = (uint)puVar9 & 4;\n          if (uVar8 == 0) goto LAB_0001c398;\n          uVar15 = 1;\n          if (local_21 == '\0') goto LAB_0001c07a;\n          goto LAB_0001c2de;\n        }\n      }\n      else {\n        cVar4 = FUN_000245b0(uVar1);\n        if (cVar4 == '\0') goto LAB_0001c2d8;\n        local_21 = '\0';\n        iVar5 = FUN_00024580(uVar1,param_4,param_4 + param_5,1,0,&local_21);\n        if (iVar5 != 0) {\n          puVar9 = __preg[1].buffer;\n          uVar8 = (uint)puVar9 & 4;\n          if (param_8 == 0) goto LAB_0001c36d;\n          goto LAB_0001c2de;\n        }\n      }\n    }\n    else {\n      iVar5 = FUN_00024580(iVar5,param_4,param_4 + param_5,1,0,0);\n      if (iVar5 != 0) {\n        uVar15 = (uint)__preg[1].buffer & 4;\n        if (param_8 == 0) {\n          if (uVar15 != 0) goto LAB_0001c345;\n          goto LAB_0001c398;\n        }\n        if (uVar15 != 0) goto LAB_0001c100;\n        goto LAB_0001c2f2;\n      }\n    }\nLAB_0001c3a8:\n    uVar15 = 0;\n  }\n  else {\nLAB_0001c2d8:\n    uVar8 = (uint)__preg[1].buffer & 4;\nLAB_0001c2de:\n    if (uVar8 == 0) {\nLAB_0001c2e6:\n      if (param_8 == 0) {\nLAB_0001c398:\n        local_40 = (re_registers *)0x0;\n      }\nLAB_0001c2f2:\n      pcVar16 = (char *)re_search(__preg,param_4,param_5,param_6,param_5 - param_6,local_40);\n    }\n    else {\nLAB_0001c100:\n      cVar4 = DAT_00039240;\n      if (DAT_00039240 == '\n') goto LAB_0001c2e6;\n      __string = param_4;\n      if (param_6 != 0) {\n        pvVar6 = memrchr(param_4,(int)DAT_00039240,param_6);\n        __string = (char *)((int)pvVar6 + 1);\n        if (pvVar6 == (void *)0x0) {\n          __string = param_4;\n        }\n      }\n      pcVar16 = param_4 + param_6;\n      __regs = (re_registers *)0x0;\n      if (param_8 != 0) {\n        __regs = param_7;\n      }\n      pcVar14 = param_4 + param_5;\n      while( true ) {\n        pcVar7 = (char *)FUN_0002b7a0(__string,(int)cVar4,(int)pcVar14 - (int)__string);\n        if (pcVar7 == (char *)0x0) break;\n        pcVar16 = (char *)re_search(__preg,__string,(int)pcVar7 - (int)__string,\n                                    (int)pcVar16 - (int)__string,(int)pcVar7 - (int)pcVar16,__regs);\n        if (-1 < (int)pcVar16) goto LAB_0001c1f7;\n        if (pcVar7 == pcVar14) goto LAB_0001c317;\n        pcVar16 = pcVar7 + 1;\n        __string = pcVar16;\n        cVar4 = DAT_00039240;\n      }\n      pcVar16 = (char *)re_search(__preg,__string,(int)pcVar14 - (int)__string,\n                                  (int)pcVar16 - (int)__string,(int)pcVar14 - (int)pcVar16,__regs);\n      if (-1 < (int)pcVar16) {\nLAB_0001c1f7:\n        pcVar16 = __string + ((int)pcVar16 - (int)param_4);\n        if ((param_8 != 0) && (param_7->num_regs != 0)) {\n          prVar10 = param_7->start;\n          prVar2 = param_7->end;\n          uVar15 = 0;\n          do {\n            while( true ) {\n              iVar5 = prVar10[uVar15];\n              if (-1 < iVar5) {\n                prVar10[uVar15] = (regoff_t)(__string + (iVar5 - (int)param_4));\n              }\n              iVar5 = prVar2[uVar15];\n              if (iVar5 < 0) break;\n              prVar2[uVar15] = (regoff_t)(__string + (iVar5 - (int)param_4));\n              uVar15 = uVar15 + 1;\n              if (param_7->num_regs <= uVar15) goto LAB_0001c317;\n            }\n            uVar15 = uVar15 + 1;\n          } while (uVar15 < param_7->num_regs);\n        }\n      }\n    }\nLAB_0001c317:\n    uVar15 = ~(uint)pcVar16 >> 0x1f;\n  }\nLAB_0001c07a:\n  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    /* WARNING: Subroutine does not return */\n    FUN_0002c430();\n  }\n  return uVar15;\n}\n\n" comment (function_definition "uint __regparm2\nFUN_0001bf50(undefined4 param_1,undefined4 param_2,re_pattern_buffer *param_3,char *param_4,\n            uint param_5,uint param_6,re_registers *param_7,int param_8)\n\n{\n  ulong uVar1;\n  regoff_t *prVar2;\n  reg_syntax_t rVar3;\n  re_pattern_buffer *__preg;\n  char cVar4;\n  int iVar5;\n  void *pvVar6;\n  re_registers *__regs;\n  char *pcVar7;\n  uint uVar8;\n  regoff_t *prVar10;\n  uint *puVar11;\n  undefined4 uVar12;\n  uint *puVar13;\n  char *pcVar14;\n  uint uVar15;\n  char *pcVar16;\n  char *__string;\n  int in_GS_OFFSET;\n  re_registers *local_40;\n  char local_21;\n  int local_20;\n  undefined4 uStack_14;\n  uchar *puVar9;\n  \n  uStack_14 = 0x1bf59;\n  local_40 = param_7;\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  if (param_3 == (re_pattern_buffer *)0x0) {\n    if (DAT_0003940c == (re_pattern_buffer *)0x0) {\n      uVar12 = dcgettext(0,"no previous regular expression",5,param_2);\n                    /* WARNING: Subroutine does not return */\n      FUN_000131f0(uVar12);\n    }\n  }\n  else {\n    DAT_0003940c = param_3;\n  }\n  __preg = DAT_0003940c;\n  if (0x7ffffffe < param_5) {\n    uVar12 = dcgettext(0,"regex input buffer length larger than INT_MAX",5,0);\n                    /* WARNING: Subroutine does not return */\n    FUN_0001c8c0(uVar12);\n  }\n  if (((DAT_0003940c->field_0x1c & 0x10) != 0) && (param_8 != 0)) {\n    if (DAT_0003940c[1].used != 0) {\n      FUN_000245c0(DAT_0003940c[1].used);\n      free((void *)__preg[1].used);\n      __preg[1].used = 0;\n    }\n    regfree(__preg);\n    FUN_0001bbc0();\n  }\n  rVar3 = __preg[1].syntax;\n  __preg->field_0x1c = __preg->field_0x1c & 0xf9 | 2;\n  if ((short)rVar3 != 0) {\n    if (*(char *)((int)&__preg[1].syntax + 1) == '\0') {\n      if (param_6 != 0) {\n        if (((uint)__preg[1].buffer & 4) == 0) goto LAB_0001c3a8;\n        if (param_4[param_6 - 1] != DAT_00039240) {\n          iVar5 = FUN_0002b7a0(param_4 + param_6,(int)DAT_00039240,param_5 - param_6);\n          if (iVar5 == 0) goto LAB_0001c3a8;\n          param_6 = (iVar5 - (int)param_4) + 1;\n        }\n      }\n    }\n    else if (((uint)__preg[1].buffer & 4) == 0) {\n      param_6 = param_5;\n    }\n    else {\n      iVar5 = FUN_0002b7a0(param_4 + param_6,(int)DAT_00039240,param_5 - param_6);\n      param_6 = iVar5 - (int)param_4;\n      if (iVar5 == 0) {\n        param_6 = param_5;\n      }\n    }\n    if (param_8 != 0) {\n      puVar13 = (uint *)param_7->start;\n      if (puVar13 == (uint *)0x0) {\n        prVar10 = (regoff_t *)FUN_00029ec0(1,4);\n        param_7->start = prVar10;\n        puVar11 = (uint *)FUN_00029ec0(1,4);\n        param_7->num_regs = 1;\n        puVar13 = (uint *)param_7->start;\n        param_7->end = (regoff_t *)puVar11;\n      }\n      else {\n        puVar11 = (uint *)param_7->end;\n      }\n      *puVar13 = param_6;\n      *puVar11 = param_6;\n      if (1 < param_7->num_regs) {\n        uVar15 = 1;\n        do {\n          puVar11[uVar15] = 0xffffffff;\n          puVar13[uVar15] = 0xffffffff;\n          uVar15 = uVar15 + 1;\n        } while (uVar15 < param_7->num_regs);\n      }\n    }\n    uVar15 = 1;\n    goto LAB_0001c07a;\n  }\n  if (param_6 == 0) {\n    uVar1 = __preg[1].used;\n    iVar5 = FUN_000245a0(uVar1);\n    if (iVar5 == 0) {\n      if ((param_8 == 0) && (((uint)__preg[1].buffer & 4) != 0)) {\nLAB_0001c345:\n        local_21 = '\0';\n        iVar5 = FUN_00024580(__preg[1].used,param_4,param_4 + param_5,1,0,&local_21);\n        if (iVar5 != 0) {\n          puVar9 = __preg[1].buffer;\nLAB_0001c36d:\n          uVar8 = (uint)puVar9 & 4;\n          if (uVar8 == 0) goto LAB_0001c398;\n          uVar15 = 1;\n          if (local_21 == '\0') goto LAB_0001c07a;\n          goto LAB_0001c2de;\n        }\n      }\n      else {\n        cVar4 = FUN_000245b0(uVar1);\n        if (cVar4 == '\0') goto LAB_0001c2d8;\n        local_21 = '\0';\n        iVar5 = FUN_00024580(uVar1,param_4,param_4 + param_5,1,0,&local_21);\n        if (iVar5 != 0) {\n          puVar9 = __preg[1].buffer;\n          uVar8 = (uint)puVar9 & 4;\n          if (param_8 == 0) goto LAB_0001c36d;\n          goto LAB_0001c2de;\n        }\n      }\n    }\n    else {\n      iVar5 = FUN_00024580(iVar5,param_4,param_4 + param_5,1,0,0);\n      if (iVar5 != 0) {\n        uVar15 = (uint)__preg[1].buffer & 4;\n        if (param_8 == 0) {\n          if (uVar15 != 0) goto LAB_0001c345;\n          goto LAB_0001c398;\n        }\n        if (uVar15 != 0) goto LAB_0001c100;\n        goto LAB_0001c2f2;\n      }\n    }\nLAB_0001c3a8:\n    uVar15 = 0;\n  }\n  else {\nLAB_0001c2d8:\n    uVar8 = (uint)__preg[1].buffer & 4;\nLAB_0001c2de:\n    if (uVar8 == 0) {\nLAB_0001c2e6:\n      if (param_8 == 0) {\nLAB_0001c398:\n        local_40 = (re_registers *)0x0;\n      }\nLAB_0001c2f2:\n      pcVar16 = (char *)re_search(__preg,param_4,param_5,param_6,param_5 - param_6,local_40);\n    }\n    else {\nLAB_0001c100:\n      cVar4 = DAT_00039240;\n      if (DAT_00039240 == '\n') goto LAB_0001c2e6;\n      __string = param_4;\n      if (param_6 != 0) {\n        pvVar6 = memrchr(param_4,(int)DAT_00039240,param_6);\n        __string = (char *)((int)pvVar6 + 1);\n        if (pvVar6 == (void *)0x0) {\n          __string = param_4;\n        }\n      }\n      pcVar16 = param_4 + param_6;\n      __regs = (re_registers *)0x0;\n      if (param_8 != 0) {\n        __regs = param_7;\n      }\n      pcVar14 = param_4 + param_5;\n      while( true ) {\n        pcVar7 = (char *)FUN_0002b7a0(__string,(int)cVar4,(int)pcVar14 - (int)__string);\n        if (pcVar7 == (char *)0x0) break;\n        pcVar16 = (char *)re_search(__preg,__string,(int)pcVar7 - (int)__string,\n                                    (int)pcVar16 - (int)__string,(int)pcVar7 - (int)pcVar16,__regs);\n        if (-1 < (int)pcVar16) goto LAB_0001c1f7;\n        if (pcVar7 == pcVar14) goto LAB_0001c317;\n        pcVar16 = pcVar7 + 1;\n        __string = pcVar16;\n        cVar4 = DAT_00039240;\n      }\n      pcVar16 = (char *)re_search(__preg,__string,(int)pcVar14 - (int)__string,\n                                  (int)pcVar16 - (int)__string,(int)pcVar14 - (int)pcVar16,__regs);\n      if (-1 < (int)pcVar16) {\nLAB_0001c1f7:\n        pcVar16 = __string + ((int)pcVar16 - (int)param_4);\n        if ((param_8 != 0) && (param_7->num_regs != 0)) {\n          prVar10 = param_7->start;\n          prVar2 = param_7->end;\n          uVar15 = 0;\n          do {\n            while( true ) {\n              iVar5 = prVar10[uVar15];\n              if (-1 < iVar5) {\n                prVar10[uVar15] = (regoff_t)(__string + (iVar5 - (int)param_4));\n              }\n              iVar5 = prVar2[uVar15];\n              if (iVar5 < 0) break;\n              prVar2[uVar15] = (regoff_t)(__string + (iVar5 - (int)param_4));\n              uVar15 = uVar15 + 1;\n              if (param_7->num_regs <= uVar15) goto LAB_0001c317;\n            }\n            uVar15 = uVar15 + 1;\n          } while (uVar15 < param_7->num_regs);\n        }\n      }\n    }\nLAB_0001c317:\n    uVar15 = ~(uint)pcVar16 >> 0x1f;\n  }\nLAB_0001c07a:\n  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    /* WARNING: Subroutine does not return */\n    FUN_0002c430();\n  }\n  return uVar15;\n}" type_identifier (ERROR "__regparm2" identifier) (function_declarator "FUN_0001bf50(undefined4 param_1,undefined4 param_2,re_pattern_buffer *param_3,char *param_4,\n            uint param_5,uint param_6,re_registers *param_7,int param_8)" identifier (parameter_list "(undefined4 param_1,undefined4 param_2,re_pattern_buffer *param_3,char *param_4,\n            uint param_5,uint param_6,re_registers *param_7,int param_8)" ( (parameter_declaration "undefined4 param_1" type_identifier identifier) , (parameter_declaration "undefined4 param_2" type_identifier identifier) , (parameter_declaration "re_pattern_buffer *param_3" type_identifier (pointer_declarator "*param_3" * identifier)) , (parameter_declaration "char *param_4" primitive_type (pointer_declarator "*param_4" * identifier)) , (parameter_declaration "uint param_5" type_identifier identifier) , (parameter_declaration "uint param_6" type_identifier identifier) , (parameter_declaration "re_registers *param_7" type_identifier (pointer_declarator "*param_7" * identifier)) , (parameter_declaration "int param_8" primitive_type identifier) ))) (compound_statement "{\n  ulong uVar1;\n  regoff_t *prVar2;\n  reg_syntax_t rVar3;\n  re_pattern_buffer *__preg;\n  char cVar4;\n  int iVar5;\n  void *pvVar6;\n  re_registers *__regs;\n  char *pcVar7;\n  uint uVar8;\n  regoff_t *prVar10;\n  uint *puVar11;\n  undefined4 uVar12;\n  uint *puVar13;\n  char *pcVar14;\n  uint uVar15;\n  char *pcVar16;\n  char *__string;\n  int in_GS_OFFSET;\n  re_registers *local_40;\n  char local_21;\n  int local_20;\n  undefined4 uStack_14;\n  uchar *puVar9;\n  \n  uStack_14 = 0x1bf59;\n  local_40 = param_7;\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  if (param_3 == (re_pattern_buffer *)0x0) {\n    if (DAT_0003940c == (re_pattern_buffer *)0x0) {\n      uVar12 = dcgettext(0,"no previous regular expression",5,param_2);\n                    /* WARNING: Subroutine does not return */\n      FUN_000131f0(uVar12);\n    }\n  }\n  else {\n    DAT_0003940c = param_3;\n  }\n  __preg = DAT_0003940c;\n  if (0x7ffffffe < param_5) {\n    uVar12 = dcgettext(0,"regex input buffer length larger than INT_MAX",5,0);\n                    /* WARNING: Subroutine does not return */\n    FUN_0001c8c0(uVar12);\n  }\n  if (((DAT_0003940c->field_0x1c & 0x10) != 0) && (param_8 != 0)) {\n    if (DAT_0003940c[1].used != 0) {\n      FUN_000245c0(DAT_0003940c[1].used);\n      free((void *)__preg[1].used);\n      __preg[1].used = 0;\n    }\n    regfree(__preg);\n    FUN_0001bbc0();\n  }\n  rVar3 = __preg[1].syntax;\n  __preg->field_0x1c = __preg->field_0x1c & 0xf9 | 2;\n  if ((short)rVar3 != 0) {\n    if (*(char *)((int)&__preg[1].syntax + 1) == '\0') {\n      if (param_6 != 0) {\n        if (((uint)__preg[1].buffer & 4) == 0) goto LAB_0001c3a8;\n        if (param_4[param_6 - 1] != DAT_00039240) {\n          iVar5 = FUN_0002b7a0(param_4 + param_6,(int)DAT_00039240,param_5 - param_6);\n          if (iVar5 == 0) goto LAB_0001c3a8;\n          param_6 = (iVar5 - (int)param_4) + 1;\n        }\n      }\n    }\n    else if (((uint)__preg[1].buffer & 4) == 0) {\n      param_6 = param_5;\n    }\n    else {\n      iVar5 = FUN_0002b7a0(param_4 + param_6,(int)DAT_00039240,param_5 - param_6);\n      param_6 = iVar5 - (int)param_4;\n      if (iVar5 == 0) {\n        param_6 = param_5;\n      }\n    }\n    if (param_8 != 0) {\n      puVar13 = (uint *)param_7->start;\n      if (puVar13 == (uint *)0x0) {\n        prVar10 = (regoff_t *)FUN_00029ec0(1,4);\n        param_7->start = prVar10;\n        puVar11 = (uint *)FUN_00029ec0(1,4);\n        param_7->num_regs = 1;\n        puVar13 = (uint *)param_7->start;\n        param_7->end = (regoff_t *)puVar11;\n      }\n      else {\n        puVar11 = (uint *)param_7->end;\n      }\n      *puVar13 = param_6;\n      *puVar11 = param_6;\n      if (1 < param_7->num_regs) {\n        uVar15 = 1;\n        do {\n          puVar11[uVar15] = 0xffffffff;\n          puVar13[uVar15] = 0xffffffff;\n          uVar15 = uVar15 + 1;\n        } while (uVar15 < param_7->num_regs);\n      }\n    }\n    uVar15 = 1;\n    goto LAB_0001c07a;\n  }\n  if (param_6 == 0) {\n    uVar1 = __preg[1].used;\n    iVar5 = FUN_000245a0(uVar1);\n    if (iVar5 == 0) {\n      if ((param_8 == 0) && (((uint)__preg[1].buffer & 4) != 0)) {\nLAB_0001c345:\n        local_21 = '\0';\n        iVar5 = FUN_00024580(__preg[1].used,param_4,param_4 + param_5,1,0,&local_21);\n        if (iVar5 != 0) {\n          puVar9 = __preg[1].buffer;\nLAB_0001c36d:\n          uVar8 = (uint)puVar9 & 4;\n          if (uVar8 == 0) goto LAB_0001c398;\n          uVar15 = 1;\n          if (local_21 == '\0') goto LAB_0001c07a;\n          goto LAB_0001c2de;\n        }\n      }\n      else {\n        cVar4 = FUN_000245b0(uVar1);\n        if (cVar4 == '\0') goto LAB_0001c2d8;\n        local_21 = '\0';\n        iVar5 = FUN_00024580(uVar1,param_4,param_4 + param_5,1,0,&local_21);\n        if (iVar5 != 0) {\n          puVar9 = __preg[1].buffer;\n          uVar8 = (uint)puVar9 & 4;\n          if (param_8 == 0) goto LAB_0001c36d;\n          goto LAB_0001c2de;\n        }\n      }\n    }\n    else {\n      iVar5 = FUN_00024580(iVar5,param_4,param_4 + param_5,1,0,0);\n      if (iVar5 != 0) {\n        uVar15 = (uint)__preg[1].buffer & 4;\n        if (param_8 == 0) {\n          if (uVar15 != 0) goto LAB_0001c345;\n          goto LAB_0001c398;\n        }\n        if (uVar15 != 0) goto LAB_0001c100;\n        goto LAB_0001c2f2;\n      }\n    }\nLAB_0001c3a8:\n    uVar15 = 0;\n  }\n  else {\nLAB_0001c2d8:\n    uVar8 = (uint)__preg[1].buffer & 4;\nLAB_0001c2de:\n    if (uVar8 == 0) {\nLAB_0001c2e6:\n      if (param_8 == 0) {\nLAB_0001c398:\n        local_40 = (re_registers *)0x0;\n      }\nLAB_0001c2f2:\n      pcVar16 = (char *)re_search(__preg,param_4,param_5,param_6,param_5 - param_6,local_40);\n    }\n    else {\nLAB_0001c100:\n      cVar4 = DAT_00039240;\n      if (DAT_00039240 == '\n') goto LAB_0001c2e6;\n      __string = param_4;\n      if (param_6 != 0) {\n        pvVar6 = memrchr(param_4,(int)DAT_00039240,param_6);\n        __string = (char *)((int)pvVar6 + 1);\n        if (pvVar6 == (void *)0x0) {\n          __string = param_4;\n        }\n      }\n      pcVar16 = param_4 + param_6;\n      __regs = (re_registers *)0x0;\n      if (param_8 != 0) {\n        __regs = param_7;\n      }\n      pcVar14 = param_4 + param_5;\n      while( true ) {\n        pcVar7 = (char *)FUN_0002b7a0(__string,(int)cVar4,(int)pcVar14 - (int)__string);\n        if (pcVar7 == (char *)0x0) break;\n        pcVar16 = (char *)re_search(__preg,__string,(int)pcVar7 - (int)__string,\n                                    (int)pcVar16 - (int)__string,(int)pcVar7 - (int)pcVar16,__regs);\n        if (-1 < (int)pcVar16) goto LAB_0001c1f7;\n        if (pcVar7 == pcVar14) goto LAB_0001c317;\n        pcVar16 = pcVar7 + 1;\n        __string = pcVar16;\n        cVar4 = DAT_00039240;\n      }\n      pcVar16 = (char *)re_search(__preg,__string,(int)pcVar14 - (int)__string,\n                                  (int)pcVar16 - (int)__string,(int)pcVar14 - (int)pcVar16,__regs);\n      if (-1 < (int)pcVar16) {\nLAB_0001c1f7:\n        pcVar16 = __string + ((int)pcVar16 - (int)param_4);\n        if ((param_8 != 0) && (param_7->num_regs != 0)) {\n          prVar10 = param_7->start;\n          prVar2 = param_7->end;\n          uVar15 = 0;\n          do {\n            while( true ) {\n              iVar5 = prVar10[uVar15];\n              if (-1 < iVar5) {\n                prVar10[uVar15] = (regoff_t)(__string + (iVar5 - (int)param_4));\n              }\n              iVar5 = prVar2[uVar15];\n              if (iVar5 < 0) break;\n              prVar2[uVar15] = (regoff_t)(__string + (iVar5 - (int)param_4));\n              uVar15 = uVar15 + 1;\n              if (param_7->num_regs <= uVar15) goto LAB_0001c317;\n            }\n            uVar15 = uVar15 + 1;\n          } while (uVar15 < param_7->num_regs);\n        }\n      }\n    }\nLAB_0001c317:\n    uVar15 = ~(uint)pcVar16 >> 0x1f;\n  }\nLAB_0001c07a:\n  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    /* WARNING: Subroutine does not return */\n    FUN_0002c430();\n  }\n  return uVar15;\n}" { (declaration "ulong uVar1;" type_identifier identifier ;) (declaration "regoff_t *prVar2;" type_identifier (pointer_declarator "*prVar2" * identifier) ;) (declaration "reg_syntax_t rVar3;" type_identifier identifier ;) (declaration "re_pattern_buffer *__preg;" type_identifier (pointer_declarator "*__preg" * identifier) ;) (declaration "char cVar4;" primitive_type identifier ;) (declaration "int iVar5;" primitive_type identifier ;) (declaration "void *pvVar6;" primitive_type (pointer_declarator "*pvVar6" * identifier) ;) (declaration "re_registers *__regs;" type_identifier (pointer_declarator "*__regs" * identifier) ;) (declaration "char *pcVar7;" primitive_type (pointer_declarator "*pcVar7" * identifier) ;) (declaration "uint uVar8;" type_identifier identifier ;) (declaration "regoff_t *prVar10;" type_identifier (pointer_declarator "*prVar10" * identifier) ;) (declaration "uint *puVar11;" type_identifier (pointer_declarator "*puVar11" * identifier) ;) (declaration "undefined4 uVar12;" type_identifier identifier ;) (declaration "uint *puVar13;" type_identifier (pointer_declarator "*puVar13" * identifier) ;) (declaration "char *pcVar14;" primitive_type (pointer_declarator "*pcVar14" * identifier) ;) (declaration "uint uVar15;" type_identifier identifier ;) (declaration "char *pcVar16;" primitive_type (pointer_declarator "*pcVar16" * identifier) ;) (declaration "char *__string;" primitive_type (pointer_declarator "*__string" * identifier) ;) (declaration "int in_GS_OFFSET;" primitive_type identifier ;) (declaration "re_registers *local_40;" type_identifier (pointer_declarator "*local_40" * identifier) ;) (declaration "char local_21;" primitive_type identifier ;) (declaration "int local_20;" primitive_type identifier ;) (declaration "undefined4 uStack_14;" type_identifier identifier ;) (declaration "uchar *puVar9;" type_identifier (pointer_declarator "*puVar9" * identifier) ;) (expression_statement "uStack_14 = 0x1bf59;" (assignment_expression "uStack_14 = 0x1bf59" identifier = number_literal) ;) (expression_statement "local_40 = param_7;" (assignment_expression "local_40 = param_7" identifier = identifier) ;) (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) ))))) ;) (if_statement "if (param_3 == (re_pattern_buffer *)0x0) {\n    if (DAT_0003940c == (re_pattern_buffer *)0x0) {\n      uVar12 = dcgettext(0,"no previous regular expression",5,param_2);\n                    /* WARNING: Subroutine does not return */\n      FUN_000131f0(uVar12);\n    }\n  }\n  else {\n    DAT_0003940c = param_3;\n  }" if (parenthesized_expression "(param_3 == (re_pattern_buffer *)0x0)" ( (binary_expression "param_3 == (re_pattern_buffer *)0x0" identifier == (cast_expression "(re_pattern_buffer *)0x0" ( (type_descriptor "re_pattern_buffer *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    if (DAT_0003940c == (re_pattern_buffer *)0x0) {\n      uVar12 = dcgettext(0,"no previous regular expression",5,param_2);\n                    /* WARNING: Subroutine does not return */\n      FUN_000131f0(uVar12);\n    }\n  }" { (if_statement "if (DAT_0003940c == (re_pattern_buffer *)0x0) {\n      uVar12 = dcgettext(0,"no previous regular expression",5,param_2);\n                    /* WARNING: Subroutine does not return */\n      FUN_000131f0(uVar12);\n    }" if (parenthesized_expression "(DAT_0003940c == (re_pattern_buffer *)0x0)" ( (binary_expression "DAT_0003940c == (re_pattern_buffer *)0x0" identifier == (cast_expression "(re_pattern_buffer *)0x0" ( (type_descriptor "re_pattern_buffer *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      uVar12 = dcgettext(0,"no previous regular expression",5,param_2);\n                    /* WARNING: Subroutine does not return */\n      FUN_000131f0(uVar12);\n    }" { (expression_statement "uVar12 = dcgettext(0,"no previous regular expression",5,param_2);" (assignment_expression "uVar12 = dcgettext(0,"no previous regular expression",5,param_2)" identifier = (call_expression "dcgettext(0,"no previous regular expression",5,param_2)" identifier (argument_list "(0,"no previous regular expression",5,param_2)" ( number_literal , (string_literal ""no previous regular expression"" " string_content ") , number_literal , identifier )))) ;) comment (expression_statement "FUN_000131f0(uVar12);" (call_expression "FUN_000131f0(uVar12)" identifier (argument_list "(uVar12)" ( identifier ))) ;) })) }) (else_clause "else {\n    DAT_0003940c = param_3;\n  }" else (compound_statement "{\n    DAT_0003940c = param_3;\n  }" { (expression_statement "DAT_0003940c = param_3;" (assignment_expression "DAT_0003940c = param_3" identifier = identifier) ;) }))) (expression_statement "__preg = DAT_0003940c;" (assignment_expression "__preg = DAT_0003940c" identifier = identifier) ;) (if_statement "if (0x7ffffffe < param_5) {\n    uVar12 = dcgettext(0,"regex input buffer length larger than INT_MAX",5,0);\n                    /* WARNING: Subroutine does not return */\n    FUN_0001c8c0(uVar12);\n  }" if (parenthesized_expression "(0x7ffffffe < param_5)" ( (binary_expression "0x7ffffffe < param_5" number_literal < identifier) )) (compound_statement "{\n    uVar12 = dcgettext(0,"regex input buffer length larger than INT_MAX",5,0);\n                    /* WARNING: Subroutine does not return */\n    FUN_0001c8c0(uVar12);\n  }" { (expression_statement "uVar12 = dcgettext(0,"regex input buffer length larger than INT_MAX",5,0);" (assignment_expression "uVar12 = dcgettext(0,"regex input buffer length larger than INT_MAX",5,0)" identifier = (call_expression "dcgettext(0,"regex input buffer length larger than INT_MAX",5,0)" identifier (argument_list "(0,"regex input buffer length larger than INT_MAX",5,0)" ( number_literal , (string_literal ""regex input buffer length larger than INT_MAX"" " string_content ") , number_literal , number_literal )))) ;) comment (expression_statement "FUN_0001c8c0(uVar12);" (call_expression "FUN_0001c8c0(uVar12)" identifier (argument_list "(uVar12)" ( identifier ))) ;) })) (if_statement "if (((DAT_0003940c->field_0x1c & 0x10) != 0) && (param_8 != 0)) {\n    if (DAT_0003940c[1].used != 0) {\n      FUN_000245c0(DAT_0003940c[1].used);\n      free((void *)__preg[1].used);\n      __preg[1].used = 0;\n    }\n    regfree(__preg);\n    FUN_0001bbc0();\n  }" if (parenthesized_expression "(((DAT_0003940c->field_0x1c & 0x10) != 0) && (param_8 != 0))" ( (binary_expression "((DAT_0003940c->field_0x1c & 0x10) != 0) && (param_8 != 0)" (parenthesized_expression "((DAT_0003940c->field_0x1c & 0x10) != 0)" ( (binary_expression "(DAT_0003940c->field_0x1c & 0x10) != 0" (parenthesized_expression "(DAT_0003940c->field_0x1c & 0x10)" ( (binary_expression "DAT_0003940c->field_0x1c & 0x10" (field_expression "DAT_0003940c->field_0x1c" identifier -> field_identifier) & number_literal) )) != number_literal) )) && (parenthesized_expression "(param_8 != 0)" ( (binary_expression "param_8 != 0" identifier != number_literal) ))) )) (compound_statement "{\n    if (DAT_0003940c[1].used != 0) {\n      FUN_000245c0(DAT_0003940c[1].used);\n      free((void *)__preg[1].used);\n      __preg[1].used = 0;\n    }\n    regfree(__preg);\n    FUN_0001bbc0();\n  }" { (if_statement "if (DAT_0003940c[1].used != 0) {\n      FUN_000245c0(DAT_0003940c[1].used);\n      free((void *)__preg[1].used);\n      __preg[1].used = 0;\n    }" if (parenthesized_expression "(DAT_0003940c[1].used != 0)" ( (binary_expression "DAT_0003940c[1].used != 0" (field_expression "DAT_0003940c[1].used" (subscript_expression "DAT_0003940c[1]" identifier [ number_literal ]) . field_identifier) != number_literal) )) (compound_statement "{\n      FUN_000245c0(DAT_0003940c[1].used);\n      free((void *)__preg[1].used);\n      __preg[1].used = 0;\n    }" { (expression_statement "FUN_000245c0(DAT_0003940c[1].used);" (call_expression "FUN_000245c0(DAT_0003940c[1].used)" identifier (argument_list "(DAT_0003940c[1].used)" ( (field_expression "DAT_0003940c[1].used" (subscript_expression "DAT_0003940c[1]" identifier [ number_literal ]) . field_identifier) ))) ;) (expression_statement "free((void *)__preg[1].used);" (call_expression "free((void *)__preg[1].used)" identifier (argument_list "((void *)__preg[1].used)" ( (cast_expression "(void *)__preg[1].used" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (field_expression "__preg[1].used" (subscript_expression "__preg[1]" identifier [ number_literal ]) . field_identifier)) ))) ;) (expression_statement "__preg[1].used = 0;" (assignment_expression "__preg[1].used = 0" (field_expression "__preg[1].used" (subscript_expression "__preg[1]" identifier [ number_literal ]) . field_identifier) = number_literal) ;) })) (expression_statement "regfree(__preg);" (call_expression "regfree(__preg)" identifier (argument_list "(__preg)" ( identifier ))) ;) (expression_statement "FUN_0001bbc0();" (call_expression "FUN_0001bbc0()" identifier (argument_list "()" ( ))) ;) })) (expression_statement "rVar3 = __preg[1].syntax;" (assignment_expression "rVar3 = __preg[1].syntax" identifier = (field_expression "__preg[1].syntax" (subscript_expression "__preg[1]" identifier [ number_literal ]) . field_identifier)) ;) (expression_statement "__preg->field_0x1c = __preg->field_0x1c & 0xf9 | 2;" (assignment_expression "__preg->field_0x1c = __preg->field_0x1c & 0xf9 | 2" (field_expression "__preg->field_0x1c" identifier -> field_identifier) = (binary_expression "__preg->field_0x1c & 0xf9 | 2" (binary_expression "__preg->field_0x1c & 0xf9" (field_expression "__preg->field_0x1c" identifier -> field_identifier) & number_literal) | number_literal)) ;) (if_statement "if ((short)rVar3 != 0) {\n    if (*(char *)((int)&__preg[1].syntax + 1) == '\0') {\n      if (param_6 != 0) {\n        if (((uint)__preg[1].buffer & 4) == 0) goto LAB_0001c3a8;\n        if (param_4[param_6 - 1] != DAT_00039240) {\n          iVar5 = FUN_0002b7a0(param_4 + param_6,(int)DAT_00039240,param_5 - param_6);\n          if (iVar5 == 0) goto LAB_0001c3a8;\n          param_6 = (iVar5 - (int)param_4) + 1;\n        }\n      }\n    }\n    else if (((uint)__preg[1].buffer & 4) == 0) {\n      param_6 = param_5;\n    }\n    else {\n      iVar5 = FUN_0002b7a0(param_4 + param_6,(int)DAT_00039240,param_5 - param_6);\n      param_6 = iVar5 - (int)param_4;\n      if (iVar5 == 0) {\n        param_6 = param_5;\n      }\n    }\n    if (param_8 != 0) {\n      puVar13 = (uint *)param_7->start;\n      if (puVar13 == (uint *)0x0) {\n        prVar10 = (regoff_t *)FUN_00029ec0(1,4);\n        param_7->start = prVar10;\n        puVar11 = (uint *)FUN_00029ec0(1,4);\n        param_7->num_regs = 1;\n        puVar13 = (uint *)param_7->start;\n        param_7->end = (regoff_t *)puVar11;\n      }\n      else {\n        puVar11 = (uint *)param_7->end;\n      }\n      *puVar13 = param_6;\n      *puVar11 = param_6;\n      if (1 < param_7->num_regs) {\n        uVar15 = 1;\n        do {\n          puVar11[uVar15] = 0xffffffff;\n          puVar13[uVar15] = 0xffffffff;\n          uVar15 = uVar15 + 1;\n        } while (uVar15 < param_7->num_regs);\n      }\n    }\n    uVar15 = 1;\n    goto LAB_0001c07a;\n  }" if (parenthesized_expression "((short)rVar3 != 0)" ( (binary_expression "(short)rVar3 != 0" (cast_expression "(short)rVar3" ( (type_descriptor "short" (sized_type_specifier "short" short)) ) identifier) != number_literal) )) (compound_statement "{\n    if (*(char *)((int)&__preg[1].syntax + 1) == '\0') {\n      if (param_6 != 0) {\n        if (((uint)__preg[1].buffer & 4) == 0) goto LAB_0001c3a8;\n        if (param_4[param_6 - 1] != DAT_00039240) {\n          iVar5 = FUN_0002b7a0(param_4 + param_6,(int)DAT_00039240,param_5 - param_6);\n          if (iVar5 == 0) goto LAB_0001c3a8;\n          param_6 = (iVar5 - (int)param_4) + 1;\n        }\n      }\n    }\n    else if (((uint)__preg[1].buffer & 4) == 0) {\n      param_6 = param_5;\n    }\n    else {\n      iVar5 = FUN_0002b7a0(param_4 + param_6,(int)DAT_00039240,param_5 - param_6);\n      param_6 = iVar5 - (int)param_4;\n      if (iVar5 == 0) {\n        param_6 = param_5;\n      }\n    }\n    if (param_8 != 0) {\n      puVar13 = (uint *)param_7->start;\n      if (puVar13 == (uint *)0x0) {\n        prVar10 = (regoff_t *)FUN_00029ec0(1,4);\n        param_7->start = prVar10;\n        puVar11 = (uint *)FUN_00029ec0(1,4);\n        param_7->num_regs = 1;\n        puVar13 = (uint *)param_7->start;\n        param_7->end = (regoff_t *)puVar11;\n      }\n      else {\n        puVar11 = (uint *)param_7->end;\n      }\n      *puVar13 = param_6;\n      *puVar11 = param_6;\n      if (1 < param_7->num_regs) {\n        uVar15 = 1;\n        do {\n          puVar11[uVar15] = 0xffffffff;\n          puVar13[uVar15] = 0xffffffff;\n          uVar15 = uVar15 + 1;\n        } while (uVar15 < param_7->num_regs);\n      }\n    }\n    uVar15 = 1;\n    goto LAB_0001c07a;\n  }" { (if_statement "if (*(char *)((int)&__preg[1].syntax + 1) == '\0') {\n      if (param_6 != 0) {\n        if (((uint)__preg[1].buffer & 4) == 0) goto LAB_0001c3a8;\n        if (param_4[param_6 - 1] != DAT_00039240) {\n          iVar5 = FUN_0002b7a0(param_4 + param_6,(int)DAT_00039240,param_5 - param_6);\n          if (iVar5 == 0) goto LAB_0001c3a8;\n          param_6 = (iVar5 - (int)param_4) + 1;\n        }\n      }\n    }\n    else if (((uint)__preg[1].buffer & 4) == 0) {\n      param_6 = param_5;\n    }\n    else {\n      iVar5 = FUN_0002b7a0(param_4 + param_6,(int)DAT_00039240,param_5 - param_6);\n      param_6 = iVar5 - (int)param_4;\n      if (iVar5 == 0) {\n        param_6 = param_5;\n      }\n    }" if (parenthesized_expression "(*(char *)((int)&__preg[1].syntax + 1) == '\0')" ( (binary_expression "*(char *)((int)&__preg[1].syntax + 1) == '\0'" (pointer_expression "*(char *)((int)&__preg[1].syntax + 1)" * (cast_expression "(char *)((int)&__preg[1].syntax + 1)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&__preg[1].syntax + 1)" ( (binary_expression "(int)&__preg[1].syntax + 1" (cast_expression "(int)&__preg[1].syntax" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&__preg[1].syntax" & (field_expression "__preg[1].syntax" (subscript_expression "__preg[1]" identifier [ number_literal ]) . field_identifier))) + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n      if (param_6 != 0) {\n        if (((uint)__preg[1].buffer & 4) == 0) goto LAB_0001c3a8;\n        if (param_4[param_6 - 1] != DAT_00039240) {\n          iVar5 = FUN_0002b7a0(param_4 + param_6,(int)DAT_00039240,param_5 - param_6);\n          if (iVar5 == 0) goto LAB_0001c3a8;\n          param_6 = (iVar5 - (int)param_4) + 1;\n        }\n      }\n    }" { (if_statement "if (param_6 != 0) {\n        if (((uint)__preg[1].buffer & 4) == 0) goto LAB_0001c3a8;\n        if (param_4[param_6 - 1] != DAT_00039240) {\n          iVar5 = FUN_0002b7a0(param_4 + param_6,(int)DAT_00039240,param_5 - param_6);\n          if (iVar5 == 0) goto LAB_0001c3a8;\n          param_6 = (iVar5 - (int)param_4) + 1;\n        }\n      }" if (parenthesized_expression "(param_6 != 0)" ( (binary_expression "param_6 != 0" identifier != number_literal) )) (compound_statement "{\n        if (((uint)__preg[1].buffer & 4) == 0) goto LAB_0001c3a8;\n        if (param_4[param_6 - 1] != DAT_00039240) {\n          iVar5 = FUN_0002b7a0(param_4 + param_6,(int)DAT_00039240,param_5 - param_6);\n          if (iVar5 == 0) goto LAB_0001c3a8;\n          param_6 = (iVar5 - (int)param_4) + 1;\n        }\n      }" { (if_statement "if (((uint)__preg[1].buffer & 4) == 0) goto LAB_0001c3a8;" if (parenthesized_expression "(((uint)__preg[1].buffer & 4) == 0)" ( (binary_expression "((uint)__preg[1].buffer & 4) == 0" (parenthesized_expression "((uint)__preg[1].buffer & 4)" ( (binary_expression "(uint)__preg[1].buffer & 4" (cast_expression "(uint)__preg[1].buffer" ( (type_descriptor "uint" type_identifier) ) (field_expression "__preg[1].buffer" (subscript_expression "__preg[1]" identifier [ number_literal ]) . field_identifier)) & number_literal) )) == number_literal) )) (goto_statement "goto LAB_0001c3a8;" goto statement_identifier ;)) (if_statement "if (param_4[param_6 - 1] != DAT_00039240) {\n          iVar5 = FUN_0002b7a0(param_4 + param_6,(int)DAT_00039240,param_5 - param_6);\n          if (iVar5 == 0) goto LAB_0001c3a8;\n          param_6 = (iVar5 - (int)param_4) + 1;\n        }" if (parenthesized_expression "(param_4[param_6 - 1] != DAT_00039240)" ( (binary_expression "param_4[param_6 - 1] != DAT_00039240" (subscript_expression "param_4[param_6 - 1]" identifier [ (binary_expression "param_6 - 1" identifier - number_literal) ]) != identifier) )) (compound_statement "{\n          iVar5 = FUN_0002b7a0(param_4 + param_6,(int)DAT_00039240,param_5 - param_6);\n          if (iVar5 == 0) goto LAB_0001c3a8;\n          param_6 = (iVar5 - (int)param_4) + 1;\n        }" { (expression_statement "iVar5 = FUN_0002b7a0(param_4 + param_6,(int)DAT_00039240,param_5 - param_6);" (assignment_expression "iVar5 = FUN_0002b7a0(param_4 + param_6,(int)DAT_00039240,param_5 - param_6)" identifier = (call_expression "FUN_0002b7a0(param_4 + param_6,(int)DAT_00039240,param_5 - param_6)" identifier (argument_list "(param_4 + param_6,(int)DAT_00039240,param_5 - param_6)" ( (binary_expression "param_4 + param_6" identifier + identifier) , (cast_expression "(int)DAT_00039240" ( (type_descriptor "int" primitive_type) ) identifier) , (binary_expression "param_5 - param_6" identifier - identifier) )))) ;) (if_statement "if (iVar5 == 0) goto LAB_0001c3a8;" if (parenthesized_expression "(iVar5 == 0)" ( (binary_expression "iVar5 == 0" identifier == number_literal) )) (goto_statement "goto LAB_0001c3a8;" goto statement_identifier ;)) (expression_statement "param_6 = (iVar5 - (int)param_4) + 1;" (assignment_expression "param_6 = (iVar5 - (int)param_4) + 1" identifier = (binary_expression "(iVar5 - (int)param_4) + 1" (parenthesized_expression "(iVar5 - (int)param_4)" ( (binary_expression "iVar5 - (int)param_4" identifier - (cast_expression "(int)param_4" ( (type_descriptor "int" primitive_type) ) identifier)) )) + number_literal)) ;) })) })) }) (else_clause "else if (((uint)__preg[1].buffer & 4) == 0) {\n      param_6 = param_5;\n    }\n    else {\n      iVar5 = FUN_0002b7a0(param_4 + param_6,(int)DAT_00039240,param_5 - param_6);\n      param_6 = iVar5 - (int)param_4;\n      if (iVar5 == 0) {\n        param_6 = param_5;\n      }\n    }" else (if_statement "if (((uint)__preg[1].buffer & 4) == 0) {\n      param_6 = param_5;\n    }\n    else {\n      iVar5 = FUN_0002b7a0(param_4 + param_6,(int)DAT_00039240,param_5 - param_6);\n      param_6 = iVar5 - (int)param_4;\n      if (iVar5 == 0) {\n        param_6 = param_5;\n      }\n    }" if (parenthesized_expression "(((uint)__preg[1].buffer & 4) == 0)" ( (binary_expression "((uint)__preg[1].buffer & 4) == 0" (parenthesized_expression "((uint)__preg[1].buffer & 4)" ( (binary_expression "(uint)__preg[1].buffer & 4" (cast_expression "(uint)__preg[1].buffer" ( (type_descriptor "uint" type_identifier) ) (field_expression "__preg[1].buffer" (subscript_expression "__preg[1]" identifier [ number_literal ]) . field_identifier)) & number_literal) )) == number_literal) )) (compound_statement "{\n      param_6 = param_5;\n    }" { (expression_statement "param_6 = param_5;" (assignment_expression "param_6 = param_5" identifier = identifier) ;) }) (else_clause "else {\n      iVar5 = FUN_0002b7a0(param_4 + param_6,(int)DAT_00039240,param_5 - param_6);\n      param_6 = iVar5 - (int)param_4;\n      if (iVar5 == 0) {\n        param_6 = param_5;\n      }\n    }" else (compound_statement "{\n      iVar5 = FUN_0002b7a0(param_4 + param_6,(int)DAT_00039240,param_5 - param_6);\n      param_6 = iVar5 - (int)param_4;\n      if (iVar5 == 0) {\n        param_6 = param_5;\n      }\n    }" { (expression_statement "iVar5 = FUN_0002b7a0(param_4 + param_6,(int)DAT_00039240,param_5 - param_6);" (assignment_expression "iVar5 = FUN_0002b7a0(param_4 + param_6,(int)DAT_00039240,param_5 - param_6)" identifier = (call_expression "FUN_0002b7a0(param_4 + param_6,(int)DAT_00039240,param_5 - param_6)" identifier (argument_list "(param_4 + param_6,(int)DAT_00039240,param_5 - param_6)" ( (binary_expression "param_4 + param_6" identifier + identifier) , (cast_expression "(int)DAT_00039240" ( (type_descriptor "int" primitive_type) ) identifier) , (binary_expression "param_5 - param_6" identifier - identifier) )))) ;) (expression_statement "param_6 = iVar5 - (int)param_4;" (assignment_expression "param_6 = iVar5 - (int)param_4" identifier = (binary_expression "iVar5 - (int)param_4" identifier - (cast_expression "(int)param_4" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (if_statement "if (iVar5 == 0) {\n        param_6 = param_5;\n      }" if (parenthesized_expression "(iVar5 == 0)" ( (binary_expression "iVar5 == 0" identifier == number_literal) )) (compound_statement "{\n        param_6 = param_5;\n      }" { (expression_statement "param_6 = param_5;" (assignment_expression "param_6 = param_5" identifier = identifier) ;) })) }))))) (if_statement "if (param_8 != 0) {\n      puVar13 = (uint *)param_7->start;\n      if (puVar13 == (uint *)0x0) {\n        prVar10 = (regoff_t *)FUN_00029ec0(1,4);\n        param_7->start = prVar10;\n        puVar11 = (uint *)FUN_00029ec0(1,4);\n        param_7->num_regs = 1;\n        puVar13 = (uint *)param_7->start;\n        param_7->end = (regoff_t *)puVar11;\n      }\n      else {\n        puVar11 = (uint *)param_7->end;\n      }\n      *puVar13 = param_6;\n      *puVar11 = param_6;\n      if (1 < param_7->num_regs) {\n        uVar15 = 1;\n        do {\n          puVar11[uVar15] = 0xffffffff;\n          puVar13[uVar15] = 0xffffffff;\n          uVar15 = uVar15 + 1;\n        } while (uVar15 < param_7->num_regs);\n      }\n    }" if (parenthesized_expression "(param_8 != 0)" ( (binary_expression "param_8 != 0" identifier != number_literal) )) (compound_statement "{\n      puVar13 = (uint *)param_7->start;\n      if (puVar13 == (uint *)0x0) {\n        prVar10 = (regoff_t *)FUN_00029ec0(1,4);\n        param_7->start = prVar10;\n        puVar11 = (uint *)FUN_00029ec0(1,4);\n        param_7->num_regs = 1;\n        puVar13 = (uint *)param_7->start;\n        param_7->end = (regoff_t *)puVar11;\n      }\n      else {\n        puVar11 = (uint *)param_7->end;\n      }\n      *puVar13 = param_6;\n      *puVar11 = param_6;\n      if (1 < param_7->num_regs) {\n        uVar15 = 1;\n        do {\n          puVar11[uVar15] = 0xffffffff;\n          puVar13[uVar15] = 0xffffffff;\n          uVar15 = uVar15 + 1;\n        } while (uVar15 < param_7->num_regs);\n      }\n    }" { (expression_statement "puVar13 = (uint *)param_7->start;" (assignment_expression "puVar13 = (uint *)param_7->start" identifier = (cast_expression "(uint *)param_7->start" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "param_7->start" identifier -> field_identifier))) ;) (if_statement "if (puVar13 == (uint *)0x0) {\n        prVar10 = (regoff_t *)FUN_00029ec0(1,4);\n        param_7->start = prVar10;\n        puVar11 = (uint *)FUN_00029ec0(1,4);\n        param_7->num_regs = 1;\n        puVar13 = (uint *)param_7->start;\n        param_7->end = (regoff_t *)puVar11;\n      }\n      else {\n        puVar11 = (uint *)param_7->end;\n      }" if (parenthesized_expression "(puVar13 == (uint *)0x0)" ( (binary_expression "puVar13 == (uint *)0x0" identifier == (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        prVar10 = (regoff_t *)FUN_00029ec0(1,4);\n        param_7->start = prVar10;\n        puVar11 = (uint *)FUN_00029ec0(1,4);\n        param_7->num_regs = 1;\n        puVar13 = (uint *)param_7->start;\n        param_7->end = (regoff_t *)puVar11;\n      }" { (expression_statement "prVar10 = (regoff_t *)FUN_00029ec0(1,4);" (assignment_expression "prVar10 = (regoff_t *)FUN_00029ec0(1,4)" identifier = (cast_expression "(regoff_t *)FUN_00029ec0(1,4)" ( (type_descriptor "regoff_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00029ec0(1,4)" identifier (argument_list "(1,4)" ( number_literal , number_literal ))))) ;) (expression_statement "param_7->start = prVar10;" (assignment_expression "param_7->start = prVar10" (field_expression "param_7->start" identifier -> field_identifier) = identifier) ;) (expression_statement "puVar11 = (uint *)FUN_00029ec0(1,4);" (assignment_expression "puVar11 = (uint *)FUN_00029ec0(1,4)" identifier = (cast_expression "(uint *)FUN_00029ec0(1,4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00029ec0(1,4)" identifier (argument_list "(1,4)" ( number_literal , number_literal ))))) ;) (expression_statement "param_7->num_regs = 1;" (assignment_expression "param_7->num_regs = 1" (field_expression "param_7->num_regs" identifier -> field_identifier) = number_literal) ;) (expression_statement "puVar13 = (uint *)param_7->start;" (assignment_expression "puVar13 = (uint *)param_7->start" identifier = (cast_expression "(uint *)param_7->start" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "param_7->start" identifier -> field_identifier))) ;) (expression_statement "param_7->end = (regoff_t *)puVar11;" (assignment_expression "param_7->end = (regoff_t *)puVar11" (field_expression "param_7->end" identifier -> field_identifier) = (cast_expression "(regoff_t *)puVar11" ( (type_descriptor "regoff_t *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) }) (else_clause "else {\n        puVar11 = (uint *)param_7->end;\n      }" else (compound_statement "{\n        puVar11 = (uint *)param_7->end;\n      }" { (expression_statement "puVar11 = (uint *)param_7->end;" (assignment_expression "puVar11 = (uint *)param_7->end" identifier = (cast_expression "(uint *)param_7->end" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "param_7->end" identifier -> field_identifier))) ;) }))) (expression_statement "*puVar13 = param_6;" (assignment_expression "*puVar13 = param_6" (pointer_expression "*puVar13" * identifier) = identifier) ;) (expression_statement "*puVar11 = param_6;" (assignment_expression "*puVar11 = param_6" (pointer_expression "*puVar11" * identifier) = identifier) ;) (if_statement "if (1 < param_7->num_regs) {\n        uVar15 = 1;\n        do {\n          puVar11[uVar15] = 0xffffffff;\n          puVar13[uVar15] = 0xffffffff;\n          uVar15 = uVar15 + 1;\n        } while (uVar15 < param_7->num_regs);\n      }" if (parenthesized_expression "(1 < param_7->num_regs)" ( (binary_expression "1 < param_7->num_regs" number_literal < (field_expression "param_7->num_regs" identifier -> field_identifier)) )) (compound_statement "{\n        uVar15 = 1;\n        do {\n          puVar11[uVar15] = 0xffffffff;\n          puVar13[uVar15] = 0xffffffff;\n          uVar15 = uVar15 + 1;\n        } while (uVar15 < param_7->num_regs);\n      }" { (expression_statement "uVar15 = 1;" (assignment_expression "uVar15 = 1" identifier = number_literal) ;) (do_statement "do {\n          puVar11[uVar15] = 0xffffffff;\n          puVar13[uVar15] = 0xffffffff;\n          uVar15 = uVar15 + 1;\n        } while (uVar15 < param_7->num_regs);" do (compound_statement "{\n          puVar11[uVar15] = 0xffffffff;\n          puVar13[uVar15] = 0xffffffff;\n          uVar15 = uVar15 + 1;\n        }" { (expression_statement "puVar11[uVar15] = 0xffffffff;" (assignment_expression "puVar11[uVar15] = 0xffffffff" (subscript_expression "puVar11[uVar15]" identifier [ identifier ]) = number_literal) ;) (expression_statement "puVar13[uVar15] = 0xffffffff;" (assignment_expression "puVar13[uVar15] = 0xffffffff" (subscript_expression "puVar13[uVar15]" identifier [ identifier ]) = number_literal) ;) (expression_statement "uVar15 = uVar15 + 1;" (assignment_expression "uVar15 = uVar15 + 1" identifier = (binary_expression "uVar15 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar15 < param_7->num_regs)" ( (binary_expression "uVar15 < param_7->num_regs" identifier < (field_expression "param_7->num_regs" identifier -> field_identifier)) )) ;) })) })) (expression_statement "uVar15 = 1;" (assignment_expression "uVar15 = 1" identifier = number_literal) ;) (goto_statement "goto LAB_0001c07a;" goto statement_identifier ;) })) (if_statement "if (param_6 == 0) {\n    uVar1 = __preg[1].used;\n    iVar5 = FUN_000245a0(uVar1);\n    if (iVar5 == 0) {\n      if ((param_8 == 0) && (((uint)__preg[1].buffer & 4) != 0)) {\nLAB_0001c345:\n        local_21 = '\0';\n        iVar5 = FUN_00024580(__preg[1].used,param_4,param_4 + param_5,1,0,&local_21);\n        if (iVar5 != 0) {\n          puVar9 = __preg[1].buffer;\nLAB_0001c36d:\n          uVar8 = (uint)puVar9 & 4;\n          if (uVar8 == 0) goto LAB_0001c398;\n          uVar15 = 1;\n          if (local_21 == '\0') goto LAB_0001c07a;\n          goto LAB_0001c2de;\n        }\n      }\n      else {\n        cVar4 = FUN_000245b0(uVar1);\n        if (cVar4 == '\0') goto LAB_0001c2d8;\n        local_21 = '\0';\n        iVar5 = FUN_00024580(uVar1,param_4,param_4 + param_5,1,0,&local_21);\n        if (iVar5 != 0) {\n          puVar9 = __preg[1].buffer;\n          uVar8 = (uint)puVar9 & 4;\n          if (param_8 == 0) goto LAB_0001c36d;\n          goto LAB_0001c2de;\n        }\n      }\n    }\n    else {\n      iVar5 = FUN_00024580(iVar5,param_4,param_4 + param_5,1,0,0);\n      if (iVar5 != 0) {\n        uVar15 = (uint)__preg[1].buffer & 4;\n        if (param_8 == 0) {\n          if (uVar15 != 0) goto LAB_0001c345;\n          goto LAB_0001c398;\n        }\n        if (uVar15 != 0) goto LAB_0001c100;\n        goto LAB_0001c2f2;\n      }\n    }\nLAB_0001c3a8:\n    uVar15 = 0;\n  }\n  else {\nLAB_0001c2d8:\n    uVar8 = (uint)__preg[1].buffer & 4;\nLAB_0001c2de:\n    if (uVar8 == 0) {\nLAB_0001c2e6:\n      if (param_8 == 0) {\nLAB_0001c398:\n        local_40 = (re_registers *)0x0;\n      }\nLAB_0001c2f2:\n      pcVar16 = (char *)re_search(__preg,param_4,param_5,param_6,param_5 - param_6,local_40);\n    }\n    else {\nLAB_0001c100:\n      cVar4 = DAT_00039240;\n      if (DAT_00039240 == '\n') goto LAB_0001c2e6;\n      __string = param_4;\n      if (param_6 != 0) {\n        pvVar6 = memrchr(param_4,(int)DAT_00039240,param_6);\n        __string = (char *)((int)pvVar6 + 1);\n        if (pvVar6 == (void *)0x0) {\n          __string = param_4;\n        }\n      }\n      pcVar16 = param_4 + param_6;\n      __regs = (re_registers *)0x0;\n      if (param_8 != 0) {\n        __regs = param_7;\n      }\n      pcVar14 = param_4 + param_5;\n      while( true ) {\n        pcVar7 = (char *)FUN_0002b7a0(__string,(int)cVar4,(int)pcVar14 - (int)__string);\n        if (pcVar7 == (char *)0x0) break;\n        pcVar16 = (char *)re_search(__preg,__string,(int)pcVar7 - (int)__string,\n                                    (int)pcVar16 - (int)__string,(int)pcVar7 - (int)pcVar16,__regs);\n        if (-1 < (int)pcVar16) goto LAB_0001c1f7;\n        if (pcVar7 == pcVar14) goto LAB_0001c317;\n        pcVar16 = pcVar7 + 1;\n        __string = pcVar16;\n        cVar4 = DAT_00039240;\n      }\n      pcVar16 = (char *)re_search(__preg,__string,(int)pcVar14 - (int)__string,\n                                  (int)pcVar16 - (int)__string,(int)pcVar14 - (int)pcVar16,__regs);\n      if (-1 < (int)pcVar16) {\nLAB_0001c1f7:\n        pcVar16 = __string + ((int)pcVar16 - (int)param_4);\n        if ((param_8 != 0) && (param_7->num_regs != 0)) {\n          prVar10 = param_7->start;\n          prVar2 = param_7->end;\n          uVar15 = 0;\n          do {\n            while( true ) {\n              iVar5 = prVar10[uVar15];\n              if (-1 < iVar5) {\n                prVar10[uVar15] = (regoff_t)(__string + (iVar5 - (int)param_4));\n              }\n              iVar5 = prVar2[uVar15];\n              if (iVar5 < 0) break;\n              prVar2[uVar15] = (regoff_t)(__string + (iVar5 - (int)param_4));\n              uVar15 = uVar15 + 1;\n              if (param_7->num_regs <= uVar15) goto LAB_0001c317;\n            }\n            uVar15 = uVar15 + 1;\n          } while (uVar15 < param_7->num_regs);\n        }\n      }\n    }\nLAB_0001c317:\n    uVar15 = ~(uint)pcVar16 >> 0x1f;\n  }" if (parenthesized_expression "(param_6 == 0)" ( (binary_expression "param_6 == 0" identifier == number_literal) )) (compound_statement "{\n    uVar1 = __preg[1].used;\n    iVar5 = FUN_000245a0(uVar1);\n    if (iVar5 == 0) {\n      if ((param_8 == 0) && (((uint)__preg[1].buffer & 4) != 0)) {\nLAB_0001c345:\n        local_21 = '\0';\n        iVar5 = FUN_00024580(__preg[1].used,param_4,param_4 + param_5,1,0,&local_21);\n        if (iVar5 != 0) {\n          puVar9 = __preg[1].buffer;\nLAB_0001c36d:\n          uVar8 = (uint)puVar9 & 4;\n          if (uVar8 == 0) goto LAB_0001c398;\n          uVar15 = 1;\n          if (local_21 == '\0') goto LAB_0001c07a;\n          goto LAB_0001c2de;\n        }\n      }\n      else {\n        cVar4 = FUN_000245b0(uVar1);\n        if (cVar4 == '\0') goto LAB_0001c2d8;\n        local_21 = '\0';\n        iVar5 = FUN_00024580(uVar1,param_4,param_4 + param_5,1,0,&local_21);\n        if (iVar5 != 0) {\n          puVar9 = __preg[1].buffer;\n          uVar8 = (uint)puVar9 & 4;\n          if (param_8 == 0) goto LAB_0001c36d;\n          goto LAB_0001c2de;\n        }\n      }\n    }\n    else {\n      iVar5 = FUN_00024580(iVar5,param_4,param_4 + param_5,1,0,0);\n      if (iVar5 != 0) {\n        uVar15 = (uint)__preg[1].buffer & 4;\n        if (param_8 == 0) {\n          if (uVar15 != 0) goto LAB_0001c345;\n          goto LAB_0001c398;\n        }\n        if (uVar15 != 0) goto LAB_0001c100;\n        goto LAB_0001c2f2;\n      }\n    }\nLAB_0001c3a8:\n    uVar15 = 0;\n  }" { (expression_statement "uVar1 = __preg[1].used;" (assignment_expression "uVar1 = __preg[1].used" identifier = (field_expression "__preg[1].used" (subscript_expression "__preg[1]" identifier [ number_literal ]) . field_identifier)) ;) (expression_statement "iVar5 = FUN_000245a0(uVar1);" (assignment_expression "iVar5 = FUN_000245a0(uVar1)" identifier = (call_expression "FUN_000245a0(uVar1)" identifier (argument_list "(uVar1)" ( identifier )))) ;) (if_statement "if (iVar5 == 0) {\n      if ((param_8 == 0) && (((uint)__preg[1].buffer & 4) != 0)) {\nLAB_0001c345:\n        local_21 = '\0';\n        iVar5 = FUN_00024580(__preg[1].used,param_4,param_4 + param_5,1,0,&local_21);\n        if (iVar5 != 0) {\n          puVar9 = __preg[1].buffer;\nLAB_0001c36d:\n          uVar8 = (uint)puVar9 & 4;\n          if (uVar8 == 0) goto LAB_0001c398;\n          uVar15 = 1;\n          if (local_21 == '\0') goto LAB_0001c07a;\n          goto LAB_0001c2de;\n        }\n      }\n      else {\n        cVar4 = FUN_000245b0(uVar1);\n        if (cVar4 == '\0') goto LAB_0001c2d8;\n        local_21 = '\0';\n        iVar5 = FUN_00024580(uVar1,param_4,param_4 + param_5,1,0,&local_21);\n        if (iVar5 != 0) {\n          puVar9 = __preg[1].buffer;\n          uVar8 = (uint)puVar9 & 4;\n          if (param_8 == 0) goto LAB_0001c36d;\n          goto LAB_0001c2de;\n        }\n      }\n    }\n    else {\n      iVar5 = FUN_00024580(iVar5,param_4,param_4 + param_5,1,0,0);\n      if (iVar5 != 0) {\n        uVar15 = (uint)__preg[1].buffer & 4;\n        if (param_8 == 0) {\n          if (uVar15 != 0) goto LAB_0001c345;\n          goto LAB_0001c398;\n        }\n        if (uVar15 != 0) goto LAB_0001c100;\n        goto LAB_0001c2f2;\n      }\n    }" if (parenthesized_expression "(iVar5 == 0)" ( (binary_expression "iVar5 == 0" identifier == number_literal) )) (compound_statement "{\n      if ((param_8 == 0) && (((uint)__preg[1].buffer & 4) != 0)) {\nLAB_0001c345:\n        local_21 = '\0';\n        iVar5 = FUN_00024580(__preg[1].used,param_4,param_4 + param_5,1,0,&local_21);\n        if (iVar5 != 0) {\n          puVar9 = __preg[1].buffer;\nLAB_0001c36d:\n          uVar8 = (uint)puVar9 & 4;\n          if (uVar8 == 0) goto LAB_0001c398;\n          uVar15 = 1;\n          if (local_21 == '\0') goto LAB_0001c07a;\n          goto LAB_0001c2de;\n        }\n      }\n      else {\n        cVar4 = FUN_000245b0(uVar1);\n        if (cVar4 == '\0') goto LAB_0001c2d8;\n        local_21 = '\0';\n        iVar5 = FUN_00024580(uVar1,param_4,param_4 + param_5,1,0,&local_21);\n        if (iVar5 != 0) {\n          puVar9 = __preg[1].buffer;\n          uVar8 = (uint)puVar9 & 4;\n          if (param_8 == 0) goto LAB_0001c36d;\n          goto LAB_0001c2de;\n        }\n      }\n    }" { (if_statement "if ((param_8 == 0) && (((uint)__preg[1].buffer & 4) != 0)) {\nLAB_0001c345:\n        local_21 = '\0';\n        iVar5 = FUN_00024580(__preg[1].used,param_4,param_4 + param_5,1,0,&local_21);\n        if (iVar5 != 0) {\n          puVar9 = __preg[1].buffer;\nLAB_0001c36d:\n          uVar8 = (uint)puVar9 & 4;\n          if (uVar8 == 0) goto LAB_0001c398;\n          uVar15 = 1;\n          if (local_21 == '\0') goto LAB_0001c07a;\n          goto LAB_0001c2de;\n        }\n      }\n      else {\n        cVar4 = FUN_000245b0(uVar1);\n        if (cVar4 == '\0') goto LAB_0001c2d8;\n        local_21 = '\0';\n        iVar5 = FUN_00024580(uVar1,param_4,param_4 + param_5,1,0,&local_21);\n        if (iVar5 != 0) {\n          puVar9 = __preg[1].buffer;\n          uVar8 = (uint)puVar9 & 4;\n          if (param_8 == 0) goto LAB_0001c36d;\n          goto LAB_0001c2de;\n        }\n      }" if (parenthesized_expression "((param_8 == 0) && (((uint)__preg[1].buffer & 4) != 0))" ( (binary_expression "(param_8 == 0) && (((uint)__preg[1].buffer & 4) != 0)" (parenthesized_expression "(param_8 == 0)" ( (binary_expression "param_8 == 0" identifier == number_literal) )) && (parenthesized_expression "(((uint)__preg[1].buffer & 4) != 0)" ( (binary_expression "((uint)__preg[1].buffer & 4) != 0" (parenthesized_expression "((uint)__preg[1].buffer & 4)" ( (binary_expression "(uint)__preg[1].buffer & 4" (cast_expression "(uint)__preg[1].buffer" ( (type_descriptor "uint" type_identifier) ) (field_expression "__preg[1].buffer" (subscript_expression "__preg[1]" identifier [ number_literal ]) . field_identifier)) & number_literal) )) != number_literal) ))) )) (compound_statement "{\nLAB_0001c345:\n        local_21 = '\0';\n        iVar5 = FUN_00024580(__preg[1].used,param_4,param_4 + param_5,1,0,&local_21);\n        if (iVar5 != 0) {\n          puVar9 = __preg[1].buffer;\nLAB_0001c36d:\n          uVar8 = (uint)puVar9 & 4;\n          if (uVar8 == 0) goto LAB_0001c398;\n          uVar15 = 1;\n          if (local_21 == '\0') goto LAB_0001c07a;\n          goto LAB_0001c2de;\n        }\n      }" { (labeled_statement "LAB_0001c345:\n        local_21 = '\0';" statement_identifier : (expression_statement "local_21 = '\0';" (assignment_expression "local_21 = '\0'" identifier = (char_literal "'\0'" ' escape_sequence ')) ;)) (expression_statement "iVar5 = FUN_00024580(__preg[1].used,param_4,param_4 + param_5,1,0,&local_21);" (assignment_expression "iVar5 = FUN_00024580(__preg[1].used,param_4,param_4 + param_5,1,0,&local_21)" identifier = (call_expression "FUN_00024580(__preg[1].used,param_4,param_4 + param_5,1,0,&local_21)" identifier (argument_list "(__preg[1].used,param_4,param_4 + param_5,1,0,&local_21)" ( (field_expression "__preg[1].used" (subscript_expression "__preg[1]" identifier [ number_literal ]) . field_identifier) , identifier , (binary_expression "param_4 + param_5" identifier + identifier) , number_literal , number_literal , (pointer_expression "&local_21" & identifier) )))) ;) (if_statement "if (iVar5 != 0) {\n          puVar9 = __preg[1].buffer;\nLAB_0001c36d:\n          uVar8 = (uint)puVar9 & 4;\n          if (uVar8 == 0) goto LAB_0001c398;\n          uVar15 = 1;\n          if (local_21 == '\0') goto LAB_0001c07a;\n          goto LAB_0001c2de;\n        }" if (parenthesized_expression "(iVar5 != 0)" ( (binary_expression "iVar5 != 0" identifier != number_literal) )) (compound_statement "{\n          puVar9 = __preg[1].buffer;\nLAB_0001c36d:\n          uVar8 = (uint)puVar9 & 4;\n          if (uVar8 == 0) goto LAB_0001c398;\n          uVar15 = 1;\n          if (local_21 == '\0') goto LAB_0001c07a;\n          goto LAB_0001c2de;\n        }" { (expression_statement "puVar9 = __preg[1].buffer;" (assignment_expression "puVar9 = __preg[1].buffer" identifier = (field_expression "__preg[1].buffer" (subscript_expression "__preg[1]" identifier [ number_literal ]) . field_identifier)) ;) (labeled_statement "LAB_0001c36d:\n          uVar8 = (uint)puVar9 & 4;" statement_identifier : (expression_statement "uVar8 = (uint)puVar9 & 4;" (assignment_expression "uVar8 = (uint)puVar9 & 4" identifier = (binary_expression "(uint)puVar9 & 4" (cast_expression "(uint)puVar9" ( (type_descriptor "uint" type_identifier) ) identifier) & number_literal)) ;)) (if_statement "if (uVar8 == 0) goto LAB_0001c398;" if (parenthesized_expression "(uVar8 == 0)" ( (binary_expression "uVar8 == 0" identifier == number_literal) )) (goto_statement "goto LAB_0001c398;" goto statement_identifier ;)) (expression_statement "uVar15 = 1;" (assignment_expression "uVar15 = 1" identifier = number_literal) ;) (if_statement "if (local_21 == '\0') goto LAB_0001c07a;" if (parenthesized_expression "(local_21 == '\0')" ( (binary_expression "local_21 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )) (goto_statement "goto LAB_0001c07a;" goto statement_identifier ;)) (goto_statement "goto LAB_0001c2de;" goto statement_identifier ;) })) }) (else_clause "else {\n        cVar4 = FUN_000245b0(uVar1);\n        if (cVar4 == '\0') goto LAB_0001c2d8;\n        local_21 = '\0';\n        iVar5 = FUN_00024580(uVar1,param_4,param_4 + param_5,1,0,&local_21);\n        if (iVar5 != 0) {\n          puVar9 = __preg[1].buffer;\n          uVar8 = (uint)puVar9 & 4;\n          if (param_8 == 0) goto LAB_0001c36d;\n          goto LAB_0001c2de;\n        }\n      }" else (compound_statement "{\n        cVar4 = FUN_000245b0(uVar1);\n        if (cVar4 == '\0') goto LAB_0001c2d8;\n        local_21 = '\0';\n        iVar5 = FUN_00024580(uVar1,param_4,param_4 + param_5,1,0,&local_21);\n        if (iVar5 != 0) {\n          puVar9 = __preg[1].buffer;\n          uVar8 = (uint)puVar9 & 4;\n          if (param_8 == 0) goto LAB_0001c36d;\n          goto LAB_0001c2de;\n        }\n      }" { (expression_statement "cVar4 = FUN_000245b0(uVar1);" (assignment_expression "cVar4 = FUN_000245b0(uVar1)" identifier = (call_expression "FUN_000245b0(uVar1)" identifier (argument_list "(uVar1)" ( identifier )))) ;) (if_statement "if (cVar4 == '\0') goto LAB_0001c2d8;" if (parenthesized_expression "(cVar4 == '\0')" ( (binary_expression "cVar4 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )) (goto_statement "goto LAB_0001c2d8;" goto statement_identifier ;)) (expression_statement "local_21 = '\0';" (assignment_expression "local_21 = '\0'" identifier = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "iVar5 = FUN_00024580(uVar1,param_4,param_4 + param_5,1,0,&local_21);" (assignment_expression "iVar5 = FUN_00024580(uVar1,param_4,param_4 + param_5,1,0,&local_21)" identifier = (call_expression "FUN_00024580(uVar1,param_4,param_4 + param_5,1,0,&local_21)" identifier (argument_list "(uVar1,param_4,param_4 + param_5,1,0,&local_21)" ( identifier , identifier , (binary_expression "param_4 + param_5" identifier + identifier) , number_literal , number_literal , (pointer_expression "&local_21" & identifier) )))) ;) (if_statement "if (iVar5 != 0) {\n          puVar9 = __preg[1].buffer;\n          uVar8 = (uint)puVar9 & 4;\n          if (param_8 == 0) goto LAB_0001c36d;\n          goto LAB_0001c2de;\n        }" if (parenthesized_expression "(iVar5 != 0)" ( (binary_expression "iVar5 != 0" identifier != number_literal) )) (compound_statement "{\n          puVar9 = __preg[1].buffer;\n          uVar8 = (uint)puVar9 & 4;\n          if (param_8 == 0) goto LAB_0001c36d;\n          goto LAB_0001c2de;\n        }" { (expression_statement "puVar9 = __preg[1].buffer;" (assignment_expression "puVar9 = __preg[1].buffer" identifier = (field_expression "__preg[1].buffer" (subscript_expression "__preg[1]" identifier [ number_literal ]) . field_identifier)) ;) (expression_statement "uVar8 = (uint)puVar9 & 4;" (assignment_expression "uVar8 = (uint)puVar9 & 4" identifier = (binary_expression "(uint)puVar9 & 4" (cast_expression "(uint)puVar9" ( (type_descriptor "uint" type_identifier) ) identifier) & number_literal)) ;) (if_statement "if (param_8 == 0) goto LAB_0001c36d;" if (parenthesized_expression "(param_8 == 0)" ( (binary_expression "param_8 == 0" identifier == number_literal) )) (goto_statement "goto LAB_0001c36d;" goto statement_identifier ;)) (goto_statement "goto LAB_0001c2de;" goto statement_identifier ;) })) }))) }) (else_clause "else {\n      iVar5 = FUN_00024580(iVar5,param_4,param_4 + param_5,1,0,0);\n      if (iVar5 != 0) {\n        uVar15 = (uint)__preg[1].buffer & 4;\n        if (param_8 == 0) {\n          if (uVar15 != 0) goto LAB_0001c345;\n          goto LAB_0001c398;\n        }\n        if (uVar15 != 0) goto LAB_0001c100;\n        goto LAB_0001c2f2;\n      }\n    }" else (compound_statement "{\n      iVar5 = FUN_00024580(iVar5,param_4,param_4 + param_5,1,0,0);\n      if (iVar5 != 0) {\n        uVar15 = (uint)__preg[1].buffer & 4;\n        if (param_8 == 0) {\n          if (uVar15 != 0) goto LAB_0001c345;\n          goto LAB_0001c398;\n        }\n        if (uVar15 != 0) goto LAB_0001c100;\n        goto LAB_0001c2f2;\n      }\n    }" { (expression_statement "iVar5 = FUN_00024580(iVar5,param_4,param_4 + param_5,1,0,0);" (assignment_expression "iVar5 = FUN_00024580(iVar5,param_4,param_4 + param_5,1,0,0)" identifier = (call_expression "FUN_00024580(iVar5,param_4,param_4 + param_5,1,0,0)" identifier (argument_list "(iVar5,param_4,param_4 + param_5,1,0,0)" ( identifier , identifier , (binary_expression "param_4 + param_5" identifier + identifier) , number_literal , number_literal , number_literal )))) ;) (if_statement "if (iVar5 != 0) {\n        uVar15 = (uint)__preg[1].buffer & 4;\n        if (param_8 == 0) {\n          if (uVar15 != 0) goto LAB_0001c345;\n          goto LAB_0001c398;\n        }\n        if (uVar15 != 0) goto LAB_0001c100;\n        goto LAB_0001c2f2;\n      }" if (parenthesized_expression "(iVar5 != 0)" ( (binary_expression "iVar5 != 0" identifier != number_literal) )) (compound_statement "{\n        uVar15 = (uint)__preg[1].buffer & 4;\n        if (param_8 == 0) {\n          if (uVar15 != 0) goto LAB_0001c345;\n          goto LAB_0001c398;\n        }\n        if (uVar15 != 0) goto LAB_0001c100;\n        goto LAB_0001c2f2;\n      }" { (expression_statement "uVar15 = (uint)__preg[1].buffer & 4;" (assignment_expression "uVar15 = (uint)__preg[1].buffer & 4" identifier = (binary_expression "(uint)__preg[1].buffer & 4" (cast_expression "(uint)__preg[1].buffer" ( (type_descriptor "uint" type_identifier) ) (field_expression "__preg[1].buffer" (subscript_expression "__preg[1]" identifier [ number_literal ]) . field_identifier)) & number_literal)) ;) (if_statement "if (param_8 == 0) {\n          if (uVar15 != 0) goto LAB_0001c345;\n          goto LAB_0001c398;\n        }" if (parenthesized_expression "(param_8 == 0)" ( (binary_expression "param_8 == 0" identifier == number_literal) )) (compound_statement "{\n          if (uVar15 != 0) goto LAB_0001c345;\n          goto LAB_0001c398;\n        }" { (if_statement "if (uVar15 != 0) goto LAB_0001c345;" if (parenthesized_expression "(uVar15 != 0)" ( (binary_expression "uVar15 != 0" identifier != number_literal) )) (goto_statement "goto LAB_0001c345;" goto statement_identifier ;)) (goto_statement "goto LAB_0001c398;" goto statement_identifier ;) })) (if_statement "if (uVar15 != 0) goto LAB_0001c100;" if (parenthesized_expression "(uVar15 != 0)" ( (binary_expression "uVar15 != 0" identifier != number_literal) )) (goto_statement "goto LAB_0001c100;" goto statement_identifier ;)) (goto_statement "goto LAB_0001c2f2;" goto statement_identifier ;) })) }))) (labeled_statement "LAB_0001c3a8:\n    uVar15 = 0;" statement_identifier : (expression_statement "uVar15 = 0;" (assignment_expression "uVar15 = 0" identifier = number_literal) ;)) }) (else_clause "else {\nLAB_0001c2d8:\n    uVar8 = (uint)__preg[1].buffer & 4;\nLAB_0001c2de:\n    if (uVar8 == 0) {\nLAB_0001c2e6:\n      if (param_8 == 0) {\nLAB_0001c398:\n        local_40 = (re_registers *)0x0;\n      }\nLAB_0001c2f2:\n      pcVar16 = (char *)re_search(__preg,param_4,param_5,param_6,param_5 - param_6,local_40);\n    }\n    else {\nLAB_0001c100:\n      cVar4 = DAT_00039240;\n      if (DAT_00039240 == '\n') goto LAB_0001c2e6;\n      __string = param_4;\n      if (param_6 != 0) {\n        pvVar6 = memrchr(param_4,(int)DAT_00039240,param_6);\n        __string = (char *)((int)pvVar6 + 1);\n        if (pvVar6 == (void *)0x0) {\n          __string = param_4;\n        }\n      }\n      pcVar16 = param_4 + param_6;\n      __regs = (re_registers *)0x0;\n      if (param_8 != 0) {\n        __regs = param_7;\n      }\n      pcVar14 = param_4 + param_5;\n      while( true ) {\n        pcVar7 = (char *)FUN_0002b7a0(__string,(int)cVar4,(int)pcVar14 - (int)__string);\n        if (pcVar7 == (char *)0x0) break;\n        pcVar16 = (char *)re_search(__preg,__string,(int)pcVar7 - (int)__string,\n                                    (int)pcVar16 - (int)__string,(int)pcVar7 - (int)pcVar16,__regs);\n        if (-1 < (int)pcVar16) goto LAB_0001c1f7;\n        if (pcVar7 == pcVar14) goto LAB_0001c317;\n        pcVar16 = pcVar7 + 1;\n        __string = pcVar16;\n        cVar4 = DAT_00039240;\n      }\n      pcVar16 = (char *)re_search(__preg,__string,(int)pcVar14 - (int)__string,\n                                  (int)pcVar16 - (int)__string,(int)pcVar14 - (int)pcVar16,__regs);\n      if (-1 < (int)pcVar16) {\nLAB_0001c1f7:\n        pcVar16 = __string + ((int)pcVar16 - (int)param_4);\n        if ((param_8 != 0) && (param_7->num_regs != 0)) {\n          prVar10 = param_7->start;\n          prVar2 = param_7->end;\n          uVar15 = 0;\n          do {\n            while( true ) {\n              iVar5 = prVar10[uVar15];\n              if (-1 < iVar5) {\n                prVar10[uVar15] = (regoff_t)(__string + (iVar5 - (int)param_4));\n              }\n              iVar5 = prVar2[uVar15];\n              if (iVar5 < 0) break;\n              prVar2[uVar15] = (regoff_t)(__string + (iVar5 - (int)param_4));\n              uVar15 = uVar15 + 1;\n              if (param_7->num_regs <= uVar15) goto LAB_0001c317;\n            }\n            uVar15 = uVar15 + 1;\n          } while (uVar15 < param_7->num_regs);\n        }\n      }\n    }\nLAB_0001c317:\n    uVar15 = ~(uint)pcVar16 >> 0x1f;\n  }" else (compound_statement "{\nLAB_0001c2d8:\n    uVar8 = (uint)__preg[1].buffer & 4;\nLAB_0001c2de:\n    if (uVar8 == 0) {\nLAB_0001c2e6:\n      if (param_8 == 0) {\nLAB_0001c398:\n        local_40 = (re_registers *)0x0;\n      }\nLAB_0001c2f2:\n      pcVar16 = (char *)re_search(__preg,param_4,param_5,param_6,param_5 - param_6,local_40);\n    }\n    else {\nLAB_0001c100:\n      cVar4 = DAT_00039240;\n      if (DAT_00039240 == '\n') goto LAB_0001c2e6;\n      __string = param_4;\n      if (param_6 != 0) {\n        pvVar6 = memrchr(param_4,(int)DAT_00039240,param_6);\n        __string = (char *)((int)pvVar6 + 1);\n        if (pvVar6 == (void *)0x0) {\n          __string = param_4;\n        }\n      }\n      pcVar16 = param_4 + param_6;\n      __regs = (re_registers *)0x0;\n      if (param_8 != 0) {\n        __regs = param_7;\n      }\n      pcVar14 = param_4 + param_5;\n      while( true ) {\n        pcVar7 = (char *)FUN_0002b7a0(__string,(int)cVar4,(int)pcVar14 - (int)__string);\n        if (pcVar7 == (char *)0x0) break;\n        pcVar16 = (char *)re_search(__preg,__string,(int)pcVar7 - (int)__string,\n                                    (int)pcVar16 - (int)__string,(int)pcVar7 - (int)pcVar16,__regs);\n        if (-1 < (int)pcVar16) goto LAB_0001c1f7;\n        if (pcVar7 == pcVar14) goto LAB_0001c317;\n        pcVar16 = pcVar7 + 1;\n        __string = pcVar16;\n        cVar4 = DAT_00039240;\n      }\n      pcVar16 = (char *)re_search(__preg,__string,(int)pcVar14 - (int)__string,\n                                  (int)pcVar16 - (int)__string,(int)pcVar14 - (int)pcVar16,__regs);\n      if (-1 < (int)pcVar16) {\nLAB_0001c1f7:\n        pcVar16 = __string + ((int)pcVar16 - (int)param_4);\n        if ((param_8 != 0) && (param_7->num_regs != 0)) {\n          prVar10 = param_7->start;\n          prVar2 = param_7->end;\n          uVar15 = 0;\n          do {\n            while( true ) {\n              iVar5 = prVar10[uVar15];\n              if (-1 < iVar5) {\n                prVar10[uVar15] = (regoff_t)(__string + (iVar5 - (int)param_4));\n              }\n              iVar5 = prVar2[uVar15];\n              if (iVar5 < 0) break;\n              prVar2[uVar15] = (regoff_t)(__string + (iVar5 - (int)param_4));\n              uVar15 = uVar15 + 1;\n              if (param_7->num_regs <= uVar15) goto LAB_0001c317;\n            }\n            uVar15 = uVar15 + 1;\n          } while (uVar15 < param_7->num_regs);\n        }\n      }\n    }\nLAB_0001c317:\n    uVar15 = ~(uint)pcVar16 >> 0x1f;\n  }" { (labeled_statement "LAB_0001c2d8:\n    uVar8 = (uint)__preg[1].buffer & 4;" statement_identifier : (expression_statement "uVar8 = (uint)__preg[1].buffer & 4;" (assignment_expression "uVar8 = (uint)__preg[1].buffer & 4" identifier = (binary_expression "(uint)__preg[1].buffer & 4" (cast_expression "(uint)__preg[1].buffer" ( (type_descriptor "uint" type_identifier) ) (field_expression "__preg[1].buffer" (subscript_expression "__preg[1]" identifier [ number_literal ]) . field_identifier)) & number_literal)) ;)) (labeled_statement "LAB_0001c2de:\n    if (uVar8 == 0) {\nLAB_0001c2e6:\n      if (param_8 == 0) {\nLAB_0001c398:\n        local_40 = (re_registers *)0x0;\n      }\nLAB_0001c2f2:\n      pcVar16 = (char *)re_search(__preg,param_4,param_5,param_6,param_5 - param_6,local_40);\n    }\n    else {\nLAB_0001c100:\n      cVar4 = DAT_00039240;\n      if (DAT_00039240 == '\n') goto LAB_0001c2e6;\n      __string = param_4;\n      if (param_6 != 0) {\n        pvVar6 = memrchr(param_4,(int)DAT_00039240,param_6);\n        __string = (char *)((int)pvVar6 + 1);\n        if (pvVar6 == (void *)0x0) {\n          __string = param_4;\n        }\n      }\n      pcVar16 = param_4 + param_6;\n      __regs = (re_registers *)0x0;\n      if (param_8 != 0) {\n        __regs = param_7;\n      }\n      pcVar14 = param_4 + param_5;\n      while( true ) {\n        pcVar7 = (char *)FUN_0002b7a0(__string,(int)cVar4,(int)pcVar14 - (int)__string);\n        if (pcVar7 == (char *)0x0) break;\n        pcVar16 = (char *)re_search(__preg,__string,(int)pcVar7 - (int)__string,\n                                    (int)pcVar16 - (int)__string,(int)pcVar7 - (int)pcVar16,__regs);\n        if (-1 < (int)pcVar16) goto LAB_0001c1f7;\n        if (pcVar7 == pcVar14) goto LAB_0001c317;\n        pcVar16 = pcVar7 + 1;\n        __string = pcVar16;\n        cVar4 = DAT_00039240;\n      }\n      pcVar16 = (char *)re_search(__preg,__string,(int)pcVar14 - (int)__string,\n                                  (int)pcVar16 - (int)__string,(int)pcVar14 - (int)pcVar16,__regs);\n      if (-1 < (int)pcVar16) {\nLAB_0001c1f7:\n        pcVar16 = __string + ((int)pcVar16 - (int)param_4);\n        if ((param_8 != 0) && (param_7->num_regs != 0)) {\n          prVar10 = param_7->start;\n          prVar2 = param_7->end;\n          uVar15 = 0;\n          do {\n            while( true ) {\n              iVar5 = prVar10[uVar15];\n              if (-1 < iVar5) {\n                prVar10[uVar15] = (regoff_t)(__string + (iVar5 - (int)param_4));\n              }\n              iVar5 = prVar2[uVar15];\n              if (iVar5 < 0) break;\n              prVar2[uVar15] = (regoff_t)(__string + (iVar5 - (int)param_4));\n              uVar15 = uVar15 + 1;\n              if (param_7->num_regs <= uVar15) goto LAB_0001c317;\n            }\n            uVar15 = uVar15 + 1;\n          } while (uVar15 < param_7->num_regs);\n        }\n      }\n    }" statement_identifier : (if_statement "if (uVar8 == 0) {\nLAB_0001c2e6:\n      if (param_8 == 0) {\nLAB_0001c398:\n        local_40 = (re_registers *)0x0;\n      }\nLAB_0001c2f2:\n      pcVar16 = (char *)re_search(__preg,param_4,param_5,param_6,param_5 - param_6,local_40);\n    }\n    else {\nLAB_0001c100:\n      cVar4 = DAT_00039240;\n      if (DAT_00039240 == '\n') goto LAB_0001c2e6;\n      __string = param_4;\n      if (param_6 != 0) {\n        pvVar6 = memrchr(param_4,(int)DAT_00039240,param_6);\n        __string = (char *)((int)pvVar6 + 1);\n        if (pvVar6 == (void *)0x0) {\n          __string = param_4;\n        }\n      }\n      pcVar16 = param_4 + param_6;\n      __regs = (re_registers *)0x0;\n      if (param_8 != 0) {\n        __regs = param_7;\n      }\n      pcVar14 = param_4 + param_5;\n      while( true ) {\n        pcVar7 = (char *)FUN_0002b7a0(__string,(int)cVar4,(int)pcVar14 - (int)__string);\n        if (pcVar7 == (char *)0x0) break;\n        pcVar16 = (char *)re_search(__preg,__string,(int)pcVar7 - (int)__string,\n                                    (int)pcVar16 - (int)__string,(int)pcVar7 - (int)pcVar16,__regs);\n        if (-1 < (int)pcVar16) goto LAB_0001c1f7;\n        if (pcVar7 == pcVar14) goto LAB_0001c317;\n        pcVar16 = pcVar7 + 1;\n        __string = pcVar16;\n        cVar4 = DAT_00039240;\n      }\n      pcVar16 = (char *)re_search(__preg,__string,(int)pcVar14 - (int)__string,\n                                  (int)pcVar16 - (int)__string,(int)pcVar14 - (int)pcVar16,__regs);\n      if (-1 < (int)pcVar16) {\nLAB_0001c1f7:\n        pcVar16 = __string + ((int)pcVar16 - (int)param_4);\n        if ((param_8 != 0) && (param_7->num_regs != 0)) {\n          prVar10 = param_7->start;\n          prVar2 = param_7->end;\n          uVar15 = 0;\n          do {\n            while( true ) {\n              iVar5 = prVar10[uVar15];\n              if (-1 < iVar5) {\n                prVar10[uVar15] = (regoff_t)(__string + (iVar5 - (int)param_4));\n              }\n              iVar5 = prVar2[uVar15];\n              if (iVar5 < 0) break;\n              prVar2[uVar15] = (regoff_t)(__string + (iVar5 - (int)param_4));\n              uVar15 = uVar15 + 1;\n              if (param_7->num_regs <= uVar15) goto LAB_0001c317;\n            }\n            uVar15 = uVar15 + 1;\n          } while (uVar15 < param_7->num_regs);\n        }\n      }\n    }" if (parenthesized_expression "(uVar8 == 0)" ( (binary_expression "uVar8 == 0" identifier == number_literal) )) (compound_statement "{\nLAB_0001c2e6:\n      if (param_8 == 0) {\nLAB_0001c398:\n        local_40 = (re_registers *)0x0;\n      }\nLAB_0001c2f2:\n      pcVar16 = (char *)re_search(__preg,param_4,param_5,param_6,param_5 - param_6,local_40);\n    }" { (labeled_statement "LAB_0001c2e6:\n      if (param_8 == 0) {\nLAB_0001c398:\n        local_40 = (re_registers *)0x0;\n      }" statement_identifier : (if_statement "if (param_8 == 0) {\nLAB_0001c398:\n        local_40 = (re_registers *)0x0;\n      }" if (parenthesized_expression "(param_8 == 0)" ( (binary_expression "param_8 == 0" identifier == number_literal) )) (compound_statement "{\nLAB_0001c398:\n        local_40 = (re_registers *)0x0;\n      }" { (labeled_statement "LAB_0001c398:\n        local_40 = (re_registers *)0x0;" statement_identifier : (expression_statement "local_40 = (re_registers *)0x0;" (assignment_expression "local_40 = (re_registers *)0x0" identifier = (cast_expression "(re_registers *)0x0" ( (type_descriptor "re_registers *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;)) }))) (labeled_statement "LAB_0001c2f2:\n      pcVar16 = (char *)re_search(__preg,param_4,param_5,param_6,param_5 - param_6,local_40);" statement_identifier : (expression_statement "pcVar16 = (char *)re_search(__preg,param_4,param_5,param_6,param_5 - param_6,local_40);" (assignment_expression "pcVar16 = (char *)re_search(__preg,param_4,param_5,param_6,param_5 - param_6,local_40)" identifier = (cast_expression "(char *)re_search(__preg,param_4,param_5,param_6,param_5 - param_6,local_40)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "re_search(__preg,param_4,param_5,param_6,param_5 - param_6,local_40)" identifier (argument_list "(__preg,param_4,param_5,param_6,param_5 - param_6,local_40)" ( identifier , identifier , identifier , identifier , (binary_expression "param_5 - param_6" identifier - identifier) , identifier ))))) ;)) }) (else_clause "else {\nLAB_0001c100:\n      cVar4 = DAT_00039240;\n      if (DAT_00039240 == '\n') goto LAB_0001c2e6;\n      __string = param_4;\n      if (param_6 != 0) {\n        pvVar6 = memrchr(param_4,(int)DAT_00039240,param_6);\n        __string = (char *)((int)pvVar6 + 1);\n        if (pvVar6 == (void *)0x0) {\n          __string = param_4;\n        }\n      }\n      pcVar16 = param_4 + param_6;\n      __regs = (re_registers *)0x0;\n      if (param_8 != 0) {\n        __regs = param_7;\n      }\n      pcVar14 = param_4 + param_5;\n      while( true ) {\n        pcVar7 = (char *)FUN_0002b7a0(__string,(int)cVar4,(int)pcVar14 - (int)__string);\n        if (pcVar7 == (char *)0x0) break;\n        pcVar16 = (char *)re_search(__preg,__string,(int)pcVar7 - (int)__string,\n                                    (int)pcVar16 - (int)__string,(int)pcVar7 - (int)pcVar16,__regs);\n        if (-1 < (int)pcVar16) goto LAB_0001c1f7;\n        if (pcVar7 == pcVar14) goto LAB_0001c317;\n        pcVar16 = pcVar7 + 1;\n        __string = pcVar16;\n        cVar4 = DAT_00039240;\n      }\n      pcVar16 = (char *)re_search(__preg,__string,(int)pcVar14 - (int)__string,\n                                  (int)pcVar16 - (int)__string,(int)pcVar14 - (int)pcVar16,__regs);\n      if (-1 < (int)pcVar16) {\nLAB_0001c1f7:\n        pcVar16 = __string + ((int)pcVar16 - (int)param_4);\n        if ((param_8 != 0) && (param_7->num_regs != 0)) {\n          prVar10 = param_7->start;\n          prVar2 = param_7->end;\n          uVar15 = 0;\n          do {\n            while( true ) {\n              iVar5 = prVar10[uVar15];\n              if (-1 < iVar5) {\n                prVar10[uVar15] = (regoff_t)(__string + (iVar5 - (int)param_4));\n              }\n              iVar5 = prVar2[uVar15];\n              if (iVar5 < 0) break;\n              prVar2[uVar15] = (regoff_t)(__string + (iVar5 - (int)param_4));\n              uVar15 = uVar15 + 1;\n              if (param_7->num_regs <= uVar15) goto LAB_0001c317;\n            }\n            uVar15 = uVar15 + 1;\n          } while (uVar15 < param_7->num_regs);\n        }\n      }\n    }" else (compound_statement "{\nLAB_0001c100:\n      cVar4 = DAT_00039240;\n      if (DAT_00039240 == '\n') goto LAB_0001c2e6;\n      __string = param_4;\n      if (param_6 != 0) {\n        pvVar6 = memrchr(param_4,(int)DAT_00039240,param_6);\n        __string = (char *)((int)pvVar6 + 1);\n        if (pvVar6 == (void *)0x0) {\n          __string = param_4;\n        }\n      }\n      pcVar16 = param_4 + param_6;\n      __regs = (re_registers *)0x0;\n      if (param_8 != 0) {\n        __regs = param_7;\n      }\n      pcVar14 = param_4 + param_5;\n      while( true ) {\n        pcVar7 = (char *)FUN_0002b7a0(__string,(int)cVar4,(int)pcVar14 - (int)__string);\n        if (pcVar7 == (char *)0x0) break;\n        pcVar16 = (char *)re_search(__preg,__string,(int)pcVar7 - (int)__string,\n                                    (int)pcVar16 - (int)__string,(int)pcVar7 - (int)pcVar16,__regs);\n        if (-1 < (int)pcVar16) goto LAB_0001c1f7;\n        if (pcVar7 == pcVar14) goto LAB_0001c317;\n        pcVar16 = pcVar7 + 1;\n        __string = pcVar16;\n        cVar4 = DAT_00039240;\n      }\n      pcVar16 = (char *)re_search(__preg,__string,(int)pcVar14 - (int)__string,\n                                  (int)pcVar16 - (int)__string,(int)pcVar14 - (int)pcVar16,__regs);\n      if (-1 < (int)pcVar16) {\nLAB_0001c1f7:\n        pcVar16 = __string + ((int)pcVar16 - (int)param_4);\n        if ((param_8 != 0) && (param_7->num_regs != 0)) {\n          prVar10 = param_7->start;\n          prVar2 = param_7->end;\n          uVar15 = 0;\n          do {\n            while( true ) {\n              iVar5 = prVar10[uVar15];\n              if (-1 < iVar5) {\n                prVar10[uVar15] = (regoff_t)(__string + (iVar5 - (int)param_4));\n              }\n              iVar5 = prVar2[uVar15];\n              if (iVar5 < 0) break;\n              prVar2[uVar15] = (regoff_t)(__string + (iVar5 - (int)param_4));\n              uVar15 = uVar15 + 1;\n              if (param_7->num_regs <= uVar15) goto LAB_0001c317;\n            }\n            uVar15 = uVar15 + 1;\n          } while (uVar15 < param_7->num_regs);\n        }\n      }\n    }" { (labeled_statement "LAB_0001c100:\n      cVar4 = DAT_00039240;" statement_identifier : (expression_statement "cVar4 = DAT_00039240;" (assignment_expression "cVar4 = DAT_00039240" identifier = identifier) ;)) (if_statement "if (DAT_00039240 == '\n') goto LAB_0001c2e6;" if (parenthesized_expression "(DAT_00039240 == '\n')" ( (binary_expression "DAT_00039240 == '\n'" identifier == (char_literal "'\n'" ' escape_sequence ')) )) (goto_statement "goto LAB_0001c2e6;" goto statement_identifier ;)) (expression_statement "__string = param_4;" (assignment_expression "__string = param_4" identifier = identifier) ;) (if_statement "if (param_6 != 0) {\n        pvVar6 = memrchr(param_4,(int)DAT_00039240,param_6);\n        __string = (char *)((int)pvVar6 + 1);\n        if (pvVar6 == (void *)0x0) {\n          __string = param_4;\n        }\n      }" if (parenthesized_expression "(param_6 != 0)" ( (binary_expression "param_6 != 0" identifier != number_literal) )) (compound_statement "{\n        pvVar6 = memrchr(param_4,(int)DAT_00039240,param_6);\n        __string = (char *)((int)pvVar6 + 1);\n        if (pvVar6 == (void *)0x0) {\n          __string = param_4;\n        }\n      }" { (expression_statement "pvVar6 = memrchr(param_4,(int)DAT_00039240,param_6);" (assignment_expression "pvVar6 = memrchr(param_4,(int)DAT_00039240,param_6)" identifier = (call_expression "memrchr(param_4,(int)DAT_00039240,param_6)" identifier (argument_list "(param_4,(int)DAT_00039240,param_6)" ( identifier , (cast_expression "(int)DAT_00039240" ( (type_descriptor "int" primitive_type) ) identifier) , identifier )))) ;) (expression_statement "__string = (char *)((int)pvVar6 + 1);" (assignment_expression "__string = (char *)((int)pvVar6 + 1)" identifier = (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) )))) ;) (if_statement "if (pvVar6 == (void *)0x0) {\n          __string = param_4;\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          __string = param_4;\n        }" { (expression_statement "__string = param_4;" (assignment_expression "__string = param_4" identifier = identifier) ;) })) })) (expression_statement "pcVar16 = param_4 + param_6;" (assignment_expression "pcVar16 = param_4 + param_6" identifier = (binary_expression "param_4 + param_6" identifier + identifier)) ;) (expression_statement "__regs = (re_registers *)0x0;" (assignment_expression "__regs = (re_registers *)0x0" identifier = (cast_expression "(re_registers *)0x0" ( (type_descriptor "re_registers *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (if_statement "if (param_8 != 0) {\n        __regs = param_7;\n      }" if (parenthesized_expression "(param_8 != 0)" ( (binary_expression "param_8 != 0" identifier != number_literal) )) (compound_statement "{\n        __regs = param_7;\n      }" { (expression_statement "__regs = param_7;" (assignment_expression "__regs = param_7" identifier = identifier) ;) })) (expression_statement "pcVar14 = param_4 + param_5;" (assignment_expression "pcVar14 = param_4 + param_5" identifier = (binary_expression "param_4 + param_5" identifier + identifier)) ;) (while_statement "while( true ) {\n        pcVar7 = (char *)FUN_0002b7a0(__string,(int)cVar4,(int)pcVar14 - (int)__string);\n        if (pcVar7 == (char *)0x0) break;\n        pcVar16 = (char *)re_search(__preg,__string,(int)pcVar7 - (int)__string,\n                                    (int)pcVar16 - (int)__string,(int)pcVar7 - (int)pcVar16,__regs);\n        if (-1 < (int)pcVar16) goto LAB_0001c1f7;\n        if (pcVar7 == pcVar14) goto LAB_0001c317;\n        pcVar16 = pcVar7 + 1;\n        __string = pcVar16;\n        cVar4 = DAT_00039240;\n      }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n        pcVar7 = (char *)FUN_0002b7a0(__string,(int)cVar4,(int)pcVar14 - (int)__string);\n        if (pcVar7 == (char *)0x0) break;\n        pcVar16 = (char *)re_search(__preg,__string,(int)pcVar7 - (int)__string,\n                                    (int)pcVar16 - (int)__string,(int)pcVar7 - (int)pcVar16,__regs);\n        if (-1 < (int)pcVar16) goto LAB_0001c1f7;\n        if (pcVar7 == pcVar14) goto LAB_0001c317;\n        pcVar16 = pcVar7 + 1;\n        __string = pcVar16;\n        cVar4 = DAT_00039240;\n      }" { (expression_statement "pcVar7 = (char *)FUN_0002b7a0(__string,(int)cVar4,(int)pcVar14 - (int)__string);" (assignment_expression "pcVar7 = (char *)FUN_0002b7a0(__string,(int)cVar4,(int)pcVar14 - (int)__string)" identifier = (cast_expression "(char *)FUN_0002b7a0(__string,(int)cVar4,(int)pcVar14 - (int)__string)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_0002b7a0(__string,(int)cVar4,(int)pcVar14 - (int)__string)" identifier (argument_list "(__string,(int)cVar4,(int)pcVar14 - (int)__string)" ( identifier , (cast_expression "(int)cVar4" ( (type_descriptor "int" primitive_type) ) identifier) , (binary_expression "(int)pcVar14 - (int)__string" (cast_expression "(int)pcVar14" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)__string" ( (type_descriptor "int" primitive_type) ) identifier)) ))))) ;) (if_statement "if (pcVar7 == (char *)0x0) break;" if (parenthesized_expression "(pcVar7 == (char *)0x0)" ( (binary_expression "pcVar7 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (break_statement "break;" break ;)) (expression_statement "pcVar16 = (char *)re_search(__preg,__string,(int)pcVar7 - (int)__string,\n                                    (int)pcVar16 - (int)__string,(int)pcVar7 - (int)pcVar16,__regs);" (assignment_expression "pcVar16 = (char *)re_search(__preg,__string,(int)pcVar7 - (int)__string,\n                                    (int)pcVar16 - (int)__string,(int)pcVar7 - (int)pcVar16,__regs)" identifier = (cast_expression "(char *)re_search(__preg,__string,(int)pcVar7 - (int)__string,\n                                    (int)pcVar16 - (int)__string,(int)pcVar7 - (int)pcVar16,__regs)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "re_search(__preg,__string,(int)pcVar7 - (int)__string,\n                                    (int)pcVar16 - (int)__string,(int)pcVar7 - (int)pcVar16,__regs)" identifier (argument_list "(__preg,__string,(int)pcVar7 - (int)__string,\n                                    (int)pcVar16 - (int)__string,(int)pcVar7 - (int)pcVar16,__regs)" ( identifier , identifier , (binary_expression "(int)pcVar7 - (int)__string" (cast_expression "(int)pcVar7" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)__string" ( (type_descriptor "int" primitive_type) ) identifier)) , (binary_expression "(int)pcVar16 - (int)__string" (cast_expression "(int)pcVar16" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)__string" ( (type_descriptor "int" primitive_type) ) identifier)) , (binary_expression "(int)pcVar7 - (int)pcVar16" (cast_expression "(int)pcVar7" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)pcVar16" ( (type_descriptor "int" primitive_type) ) identifier)) , identifier ))))) ;) (if_statement "if (-1 < (int)pcVar16) goto LAB_0001c1f7;" if (parenthesized_expression "(-1 < (int)pcVar16)" ( (binary_expression "-1 < (int)pcVar16" number_literal < (cast_expression "(int)pcVar16" ( (type_descriptor "int" primitive_type) ) identifier)) )) (goto_statement "goto LAB_0001c1f7;" goto statement_identifier ;)) (if_statement "if (pcVar7 == pcVar14) goto LAB_0001c317;" if (parenthesized_expression "(pcVar7 == pcVar14)" ( (binary_expression "pcVar7 == pcVar14" identifier == identifier) )) (goto_statement "goto LAB_0001c317;" goto statement_identifier ;)) (expression_statement "pcVar16 = pcVar7 + 1;" (assignment_expression "pcVar16 = pcVar7 + 1" identifier = (binary_expression "pcVar7 + 1" identifier + number_literal)) ;) (expression_statement "__string = pcVar16;" (assignment_expression "__string = pcVar16" identifier = identifier) ;) (expression_statement "cVar4 = DAT_00039240;" (assignment_expression "cVar4 = DAT_00039240" identifier = identifier) ;) })) (expression_statement "pcVar16 = (char *)re_search(__preg,__string,(int)pcVar14 - (int)__string,\n                                  (int)pcVar16 - (int)__string,(int)pcVar14 - (int)pcVar16,__regs);" (assignment_expression "pcVar16 = (char *)re_search(__preg,__string,(int)pcVar14 - (int)__string,\n                                  (int)pcVar16 - (int)__string,(int)pcVar14 - (int)pcVar16,__regs)" identifier = (cast_expression "(char *)re_search(__preg,__string,(int)pcVar14 - (int)__string,\n                                  (int)pcVar16 - (int)__string,(int)pcVar14 - (int)pcVar16,__regs)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "re_search(__preg,__string,(int)pcVar14 - (int)__string,\n                                  (int)pcVar16 - (int)__string,(int)pcVar14 - (int)pcVar16,__regs)" identifier (argument_list "(__preg,__string,(int)pcVar14 - (int)__string,\n                                  (int)pcVar16 - (int)__string,(int)pcVar14 - (int)pcVar16,__regs)" ( identifier , identifier , (binary_expression "(int)pcVar14 - (int)__string" (cast_expression "(int)pcVar14" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)__string" ( (type_descriptor "int" primitive_type) ) identifier)) , (binary_expression "(int)pcVar16 - (int)__string" (cast_expression "(int)pcVar16" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)__string" ( (type_descriptor "int" primitive_type) ) identifier)) , (binary_expression "(int)pcVar14 - (int)pcVar16" (cast_expression "(int)pcVar14" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)pcVar16" ( (type_descriptor "int" primitive_type) ) identifier)) , identifier ))))) ;) (if_statement "if (-1 < (int)pcVar16) {\nLAB_0001c1f7:\n        pcVar16 = __string + ((int)pcVar16 - (int)param_4);\n        if ((param_8 != 0) && (param_7->num_regs != 0)) {\n          prVar10 = param_7->start;\n          prVar2 = param_7->end;\n          uVar15 = 0;\n          do {\n            while( true ) {\n              iVar5 = prVar10[uVar15];\n              if (-1 < iVar5) {\n                prVar10[uVar15] = (regoff_t)(__string + (iVar5 - (int)param_4));\n              }\n              iVar5 = prVar2[uVar15];\n              if (iVar5 < 0) break;\n              prVar2[uVar15] = (regoff_t)(__string + (iVar5 - (int)param_4));\n              uVar15 = uVar15 + 1;\n              if (param_7->num_regs <= uVar15) goto LAB_0001c317;\n            }\n            uVar15 = uVar15 + 1;\n          } while (uVar15 < param_7->num_regs);\n        }\n      }" if (parenthesized_expression "(-1 < (int)pcVar16)" ( (binary_expression "-1 < (int)pcVar16" number_literal < (cast_expression "(int)pcVar16" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\nLAB_0001c1f7:\n        pcVar16 = __string + ((int)pcVar16 - (int)param_4);\n        if ((param_8 != 0) && (param_7->num_regs != 0)) {\n          prVar10 = param_7->start;\n          prVar2 = param_7->end;\n          uVar15 = 0;\n          do {\n            while( true ) {\n              iVar5 = prVar10[uVar15];\n              if (-1 < iVar5) {\n                prVar10[uVar15] = (regoff_t)(__string + (iVar5 - (int)param_4));\n              }\n              iVar5 = prVar2[uVar15];\n              if (iVar5 < 0) break;\n              prVar2[uVar15] = (regoff_t)(__string + (iVar5 - (int)param_4));\n              uVar15 = uVar15 + 1;\n              if (param_7->num_regs <= uVar15) goto LAB_0001c317;\n            }\n            uVar15 = uVar15 + 1;\n          } while (uVar15 < param_7->num_regs);\n        }\n      }" { (labeled_statement "LAB_0001c1f7:\n        pcVar16 = __string + ((int)pcVar16 - (int)param_4);" statement_identifier : (expression_statement "pcVar16 = __string + ((int)pcVar16 - (int)param_4);" (assignment_expression "pcVar16 = __string + ((int)pcVar16 - (int)param_4)" identifier = (binary_expression "__string + ((int)pcVar16 - (int)param_4)" identifier + (parenthesized_expression "((int)pcVar16 - (int)param_4)" ( (binary_expression "(int)pcVar16 - (int)param_4" (cast_expression "(int)pcVar16" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)param_4" ( (type_descriptor "int" primitive_type) ) identifier)) )))) ;)) (if_statement "if ((param_8 != 0) && (param_7->num_regs != 0)) {\n          prVar10 = param_7->start;\n          prVar2 = param_7->end;\n          uVar15 = 0;\n          do {\n            while( true ) {\n              iVar5 = prVar10[uVar15];\n              if (-1 < iVar5) {\n                prVar10[uVar15] = (regoff_t)(__string + (iVar5 - (int)param_4));\n              }\n              iVar5 = prVar2[uVar15];\n              if (iVar5 < 0) break;\n              prVar2[uVar15] = (regoff_t)(__string + (iVar5 - (int)param_4));\n              uVar15 = uVar15 + 1;\n              if (param_7->num_regs <= uVar15) goto LAB_0001c317;\n            }\n            uVar15 = uVar15 + 1;\n          } while (uVar15 < param_7->num_regs);\n        }" if (parenthesized_expression "((param_8 != 0) && (param_7->num_regs != 0))" ( (binary_expression "(param_8 != 0) && (param_7->num_regs != 0)" (parenthesized_expression "(param_8 != 0)" ( (binary_expression "param_8 != 0" identifier != number_literal) )) && (parenthesized_expression "(param_7->num_regs != 0)" ( (binary_expression "param_7->num_regs != 0" (field_expression "param_7->num_regs" identifier -> field_identifier) != number_literal) ))) )) (compound_statement "{\n          prVar10 = param_7->start;\n          prVar2 = param_7->end;\n          uVar15 = 0;\n          do {\n            while( true ) {\n              iVar5 = prVar10[uVar15];\n              if (-1 < iVar5) {\n                prVar10[uVar15] = (regoff_t)(__string + (iVar5 - (int)param_4));\n              }\n              iVar5 = prVar2[uVar15];\n              if (iVar5 < 0) break;\n              prVar2[uVar15] = (regoff_t)(__string + (iVar5 - (int)param_4));\n              uVar15 = uVar15 + 1;\n              if (param_7->num_regs <= uVar15) goto LAB_0001c317;\n            }\n            uVar15 = uVar15 + 1;\n          } while (uVar15 < param_7->num_regs);\n        }" { (expression_statement "prVar10 = param_7->start;" (assignment_expression "prVar10 = param_7->start" identifier = (field_expression "param_7->start" identifier -> field_identifier)) ;) (expression_statement "prVar2 = param_7->end;" (assignment_expression "prVar2 = param_7->end" identifier = (field_expression "param_7->end" identifier -> field_identifier)) ;) (expression_statement "uVar15 = 0;" (assignment_expression "uVar15 = 0" identifier = number_literal) ;) (do_statement "do {\n            while( true ) {\n              iVar5 = prVar10[uVar15];\n              if (-1 < iVar5) {\n                prVar10[uVar15] = (regoff_t)(__string + (iVar5 - (int)param_4));\n              }\n              iVar5 = prVar2[uVar15];\n              if (iVar5 < 0) break;\n              prVar2[uVar15] = (regoff_t)(__string + (iVar5 - (int)param_4));\n              uVar15 = uVar15 + 1;\n              if (param_7->num_regs <= uVar15) goto LAB_0001c317;\n            }\n            uVar15 = uVar15 + 1;\n          } while (uVar15 < param_7->num_regs);" do (compound_statement "{\n            while( true ) {\n              iVar5 = prVar10[uVar15];\n              if (-1 < iVar5) {\n                prVar10[uVar15] = (regoff_t)(__string + (iVar5 - (int)param_4));\n              }\n              iVar5 = prVar2[uVar15];\n              if (iVar5 < 0) break;\n              prVar2[uVar15] = (regoff_t)(__string + (iVar5 - (int)param_4));\n              uVar15 = uVar15 + 1;\n              if (param_7->num_regs <= uVar15) goto LAB_0001c317;\n            }\n            uVar15 = uVar15 + 1;\n          }" { (while_statement "while( true ) {\n              iVar5 = prVar10[uVar15];\n              if (-1 < iVar5) {\n                prVar10[uVar15] = (regoff_t)(__string + (iVar5 - (int)param_4));\n              }\n              iVar5 = prVar2[uVar15];\n              if (iVar5 < 0) break;\n              prVar2[uVar15] = (regoff_t)(__string + (iVar5 - (int)param_4));\n              uVar15 = uVar15 + 1;\n              if (param_7->num_regs <= uVar15) goto LAB_0001c317;\n            }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n              iVar5 = prVar10[uVar15];\n              if (-1 < iVar5) {\n                prVar10[uVar15] = (regoff_t)(__string + (iVar5 - (int)param_4));\n              }\n              iVar5 = prVar2[uVar15];\n              if (iVar5 < 0) break;\n              prVar2[uVar15] = (regoff_t)(__string + (iVar5 - (int)param_4));\n              uVar15 = uVar15 + 1;\n              if (param_7->num_regs <= uVar15) goto LAB_0001c317;\n            }" { (expression_statement "iVar5 = prVar10[uVar15];" (assignment_expression "iVar5 = prVar10[uVar15]" identifier = (subscript_expression "prVar10[uVar15]" identifier [ identifier ])) ;) (if_statement "if (-1 < iVar5) {\n                prVar10[uVar15] = (regoff_t)(__string + (iVar5 - (int)param_4));\n              }" if (parenthesized_expression "(-1 < iVar5)" ( (binary_expression "-1 < iVar5" number_literal < identifier) )) (compound_statement "{\n                prVar10[uVar15] = (regoff_t)(__string + (iVar5 - (int)param_4));\n              }" { (expression_statement "prVar10[uVar15] = (regoff_t)(__string + (iVar5 - (int)param_4));" (assignment_expression "prVar10[uVar15] = (regoff_t)(__string + (iVar5 - (int)param_4))" (subscript_expression "prVar10[uVar15]" identifier [ identifier ]) = (call_expression "(regoff_t)(__string + (iVar5 - (int)param_4))" (parenthesized_expression "(regoff_t)" ( identifier )) (argument_list "(__string + (iVar5 - (int)param_4))" ( (binary_expression "__string + (iVar5 - (int)param_4)" identifier + (parenthesized_expression "(iVar5 - (int)param_4)" ( (binary_expression "iVar5 - (int)param_4" identifier - (cast_expression "(int)param_4" ( (type_descriptor "int" primitive_type) ) identifier)) ))) )))) ;) })) (expression_statement "iVar5 = prVar2[uVar15];" (assignment_expression "iVar5 = prVar2[uVar15]" identifier = (subscript_expression "prVar2[uVar15]" identifier [ identifier ])) ;) (if_statement "if (iVar5 < 0) break;" if (parenthesized_expression "(iVar5 < 0)" ( (binary_expression "iVar5 < 0" identifier < number_literal) )) (break_statement "break;" break ;)) (expression_statement "prVar2[uVar15] = (regoff_t)(__string + (iVar5 - (int)param_4));" (assignment_expression "prVar2[uVar15] = (regoff_t)(__string + (iVar5 - (int)param_4))" (subscript_expression "prVar2[uVar15]" identifier [ identifier ]) = (call_expression "(regoff_t)(__string + (iVar5 - (int)param_4))" (parenthesized_expression "(regoff_t)" ( identifier )) (argument_list "(__string + (iVar5 - (int)param_4))" ( (binary_expression "__string + (iVar5 - (int)param_4)" identifier + (parenthesized_expression "(iVar5 - (int)param_4)" ( (binary_expression "iVar5 - (int)param_4" identifier - (cast_expression "(int)param_4" ( (type_descriptor "int" primitive_type) ) identifier)) ))) )))) ;) (expression_statement "uVar15 = uVar15 + 1;" (assignment_expression "uVar15 = uVar15 + 1" identifier = (binary_expression "uVar15 + 1" identifier + number_literal)) ;) (if_statement "if (param_7->num_regs <= uVar15) goto LAB_0001c317;" if (parenthesized_expression "(param_7->num_regs <= uVar15)" ( (binary_expression "param_7->num_regs <= uVar15" (field_expression "param_7->num_regs" identifier -> field_identifier) <= identifier) )) (goto_statement "goto LAB_0001c317;" goto statement_identifier ;)) })) (expression_statement "uVar15 = uVar15 + 1;" (assignment_expression "uVar15 = uVar15 + 1" identifier = (binary_expression "uVar15 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar15 < param_7->num_regs)" ( (binary_expression "uVar15 < param_7->num_regs" identifier < (field_expression "param_7->num_regs" identifier -> field_identifier)) )) ;) })) })) })))) (labeled_statement "LAB_0001c317:\n    uVar15 = ~(uint)pcVar16 >> 0x1f;" statement_identifier : (expression_statement "uVar15 = ~(uint)pcVar16 >> 0x1f;" (assignment_expression "uVar15 = ~(uint)pcVar16 >> 0x1f" identifier = (binary_expression "~(uint)pcVar16 >> 0x1f" (unary_expression "~(uint)pcVar16" ~ (cast_expression "(uint)pcVar16" ( (type_descriptor "uint" type_identifier) ) identifier)) >> number_literal)) ;)) }))) (labeled_statement "LAB_0001c07a:\n  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    /* WARNING: Subroutine does not return */\n    FUN_0002c430();\n  }" statement_identifier : (if_statement "if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    /* WARNING: Subroutine does not return */\n    FUN_0002c430();\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_0002c430();\n  }" { comment (expression_statement "FUN_0002c430();" (call_expression "FUN_0002c430()" identifier (argument_list "()" ( ))) ;) }))) (return_statement "return uVar15;" return identifier ;) })))
(translation_unit "/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */\n\nint __regparm2\nmatch_regex(regex *regex,char *buf,size_t buflen,size_t buf_start_offset,re_registers *regarray,\n           int regsize)\n\n{\n  char cVar1;\n  short sVar2;\n  dfa *d;\n  int iVar3;\n  regex *new_regex;\n  _Bool _Var4;\n  void *pvVar5;\n  dfa *d_00;\n  char *pcVar6;\n  re_registers *__regs;\n  void *pvVar7;\n  uint uVar8;\n  regoff_t *prVar9;\n  regoff_t *prVar10;\n  uint uVar11;\n  char *pcVar12;\n  int in_GS_OFFSET;\n  re_registers *in_stack_00000014;\n  int in_stack_00000018;\n  re_registers *local_40;\n  _Bool backref;\n  int local_20;\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x1bf59;\n  local_40 = in_stack_00000014;\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  if (buflen == 0) {\n    if (match_regex::regex_last == (regex *)0x0) {\n      pcVar6 = (char *)dcgettext(0,"no previous regular expression",5,buf);\n                    /* WARNING: Subroutine does not return */\n      bad_prog(pcVar6);\n    }\n  }\n  else {\n    match_regex::regex_last = (regex *)buflen;\n  }\n  new_regex = match_regex::regex_last;\n  if ((re_registers *)0x7ffffffe < regarray) {\n    pcVar6 = (char *)dcgettext(0,"regex input buffer length larger than INT_MAX",5,0);\n                    /* WARNING: Subroutine does not return */\n    panic(pcVar6);\n  }\n  if ((((match_regex::regex_last->pattern).field_0x1c & 0x10) != 0) && (in_stack_00000018 != 0)) {\n    if (match_regex::regex_last->dfa != (dfa *)0x0) {\n      dfafree(match_regex::regex_last->dfa);\n      free(new_regex->dfa);\n      new_regex->dfa = (dfa *)0x0;\n    }\n    regfree((regex_t *)new_regex);\n    compile_regex_1(new_regex,in_stack_00000018);\n  }\n  sVar2._0_1_ = new_regex->begline;\n  sVar2._1_1_ = new_regex->endline;\n  (new_regex->pattern).field_0x1c = (new_regex->pattern).field_0x1c & 0xf9 | 2;\n  if (sVar2 != 0) {\n    if (new_regex->endline == false) {\n      if (regsize != 0) {\n        if ((new_regex->flags & 4) == 0) goto LAB_0001c3a8;\n        if (*(char *)((buf_start_offset - 1) + regsize) != buffer_delimiter) {\n          pvVar5 = rpl_memchr((void *)(regsize + buf_start_offset),(int)buffer_delimiter,\n                              (int)regarray - regsize);\n          if (pvVar5 == (void *)0x0) goto LAB_0001c3a8;\n          regsize = (int)pvVar5 + (1 - buf_start_offset);\n        }\n      }\n    }\n    else if ((new_regex->flags & 4) == 0) {\n      regsize = (int)regarray;\n    }\n    else {\n      pvVar5 = rpl_memchr((void *)(regsize + buf_start_offset),(int)buffer_delimiter,\n                          (int)regarray - regsize);\n      regsize = (int)pvVar5 - buf_start_offset;\n      if (pvVar5 == (void *)0x0) {\n        regsize = (int)regarray;\n      }\n    }\n    if (in_stack_00000018 != 0) {\n      prVar9 = in_stack_00000014->start;\n      if (prVar9 == (regoff_t *)0x0) {\n        prVar9 = (regoff_t *)xcalloc(1,4);\n        in_stack_00000014->start = prVar9;\n        prVar10 = (regoff_t *)xcalloc(1,4);\n        in_stack_00000014->num_regs = 1;\n        prVar9 = in_stack_00000014->start;\n        in_stack_00000014->end = prVar10;\n      }\n      else {\n        prVar10 = in_stack_00000014->end;\n      }\n      *prVar9 = regsize;\n      *prVar10 = regsize;\n      if (1 < in_stack_00000014->num_regs) {\n        uVar11 = 1;\n        do {\n          prVar10[uVar11] = -1;\n          prVar9[uVar11] = -1;\n          uVar11 = uVar11 + 1;\n        } while (uVar11 < in_stack_00000014->num_regs);\n      }\n    }\n    uVar11 = 1;\n    goto LAB_0001c07a;\n  }\n  if (regsize == 0) {\n    d = new_regex->dfa;\n    d_00 = dfasuperset(d);\n    if (d_00 == (dfa *)0x0) {\n      if ((in_stack_00000018 == 0) && ((new_regex->flags & 4) != 0)) {\nLAB_0001c345:\n        backref = false;\n        pcVar6 = dfaexec(new_regex->dfa,(char *)buf_start_offset,\n                         (char *)((int)&regarray->num_regs + buf_start_offset),true,(size_t *)0x0,\n                         &backref);\n        if (pcVar6 != (char *)0x0) {\n          uVar11 = new_regex->flags;\nLAB_0001c36d:\n          uVar8 = uVar11 & 4;\n          if (uVar8 == 0) goto LAB_0001c398;\n          uVar11 = 1;\n          if (backref == false) goto LAB_0001c07a;\n          goto LAB_0001c2de;\n        }\n      }\n      else {\n        _Var4 = dfaisfast(d);\n        if (!_Var4) goto LAB_0001c2d8;\n        backref = false;\n        pcVar6 = dfaexec(d,(char *)buf_start_offset,\n                         (char *)((int)&regarray->num_regs + buf_start_offset),true,(size_t *)0x0,\n                         &backref);\n        if (pcVar6 != (char *)0x0) {\n          uVar11 = new_regex->flags;\n          uVar8 = uVar11 & 4;\n          if (in_stack_00000018 == 0) goto LAB_0001c36d;\n          goto LAB_0001c2de;\n        }\n      }\n    }\n    else {\n      pcVar6 = dfaexec(d_00,(char *)buf_start_offset,\n                       (char *)((int)&regarray->num_regs + buf_start_offset),true,(size_t *)0x0,\n                       (_Bool *)0x0);\n      if (pcVar6 != (char *)0x0) {\n        uVar11 = new_regex->flags & 4;\n        if (in_stack_00000018 == 0) {\n          if (uVar11 != 0) goto LAB_0001c345;\n          goto LAB_0001c398;\n        }\n        if (uVar11 != 0) goto LAB_0001c100;\n        goto LAB_0001c2f2;\n      }\n    }\nLAB_0001c3a8:\n    uVar11 = 0;\n  }\n  else {\nLAB_0001c2d8:\n    uVar8 = new_regex->flags & 4;\nLAB_0001c2de:\n    if (uVar8 == 0) {\nLAB_0001c2e6:\n      if (in_stack_00000018 == 0) {\nLAB_0001c398:\n        local_40 = (re_registers *)0x0;\n      }\nLAB_0001c2f2:\n      pcVar12 = (char *)re_search((re_pattern_buffer *)new_regex,(char *)buf_start_offset,\n                                  (int)regarray,regsize,(int)regarray - regsize,local_40);\n    }\n    else {\nLAB_0001c100:\n      cVar1 = buffer_delimiter;\n      if (buffer_delimiter == '\n') goto LAB_0001c2e6;\n      pcVar6 = (char *)buf_start_offset;\n      if (regsize != 0) {\n        pvVar5 = memrchr((void *)buf_start_offset,(int)buffer_delimiter,regsize);\n        pcVar6 = (char *)((int)pvVar5 + 1);\n        if (pvVar5 == (void *)0x0) {\n          pcVar6 = (char *)buf_start_offset;\n        }\n      }\n      pcVar12 = (char *)(regsize + buf_start_offset);\n      __regs = (re_registers *)0x0;\n      if (in_stack_00000018 != 0) {\n        __regs = in_stack_00000014;\n      }\n      pvVar5 = (void *)((int)&regarray->num_regs + buf_start_offset);\n      while( true ) {\n        pvVar7 = rpl_memchr(pcVar6,(int)cVar1,(int)pvVar5 - (int)pcVar6);\n        if (pvVar7 == (void *)0x0) break;\n        pcVar12 = (char *)re_search((re_pattern_buffer *)new_regex,pcVar6,(int)pvVar7 - (int)pcVar6,\n                                    (int)pcVar12 - (int)pcVar6,(int)pvVar7 - (int)pcVar12,__regs);\n        if (-1 < (int)pcVar12) goto LAB_0001c1f7;\n        if (pvVar7 == pvVar5) goto LAB_0001c317;\n        pcVar12 = (char *)((int)pvVar7 + 1);\n        pcVar6 = pcVar12;\n        cVar1 = buffer_delimiter;\n      }\n      pcVar12 = (char *)re_search((re_pattern_buffer *)new_regex,pcVar6,(int)pvVar5 - (int)pcVar6,\n                                  (int)pcVar12 - (int)pcVar6,(int)pvVar5 - (int)pcVar12,__regs);\n      if (-1 < (int)pcVar12) {\nLAB_0001c1f7:\n        pcVar12 = pcVar6 + ((int)pcVar12 - buf_start_offset);\n        if ((in_stack_00000018 != 0) && (in_stack_00000014->num_regs != 0)) {\n          prVar9 = in_stack_00000014->start;\n          prVar10 = in_stack_00000014->end;\n          uVar11 = 0;\n          do {\n            while( true ) {\n              iVar3 = prVar9[uVar11];\n              if (-1 < iVar3) {\n                prVar9[uVar11] = (regoff_t)(pcVar6 + (iVar3 - buf_start_offset));\n              }\n              iVar3 = prVar10[uVar11];\n              if (iVar3 < 0) break;\n              prVar10[uVar11] = (regoff_t)(pcVar6 + (iVar3 - buf_start_offset));\n              uVar11 = uVar11 + 1;\n              if (in_stack_00000014->num_regs <= uVar11) goto LAB_0001c317;\n            }\n            uVar11 = uVar11 + 1;\n          } while (uVar11 < in_stack_00000014->num_regs);\n        }\n      }\n    }\nLAB_0001c317:\n    uVar11 = ~(uint)pcVar12 >> 0x1f;\n  }\nLAB_0001c07a:\n  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    /* WARNING: Subroutine does not return */\n    __stack_chk_fail_local();\n  }\n  return uVar11;\n}\n\n" comment (function_definition "int __regparm2\nmatch_regex(regex *regex,char *buf,size_t buflen,size_t buf_start_offset,re_registers *regarray,\n           int regsize)\n\n{\n  char cVar1;\n  short sVar2;\n  dfa *d;\n  int iVar3;\n  regex *new_regex;\n  _Bool _Var4;\n  void *pvVar5;\n  dfa *d_00;\n  char *pcVar6;\n  re_registers *__regs;\n  void *pvVar7;\n  uint uVar8;\n  regoff_t *prVar9;\n  regoff_t *prVar10;\n  uint uVar11;\n  char *pcVar12;\n  int in_GS_OFFSET;\n  re_registers *in_stack_00000014;\n  int in_stack_00000018;\n  re_registers *local_40;\n  _Bool backref;\n  int local_20;\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x1bf59;\n  local_40 = in_stack_00000014;\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  if (buflen == 0) {\n    if (match_regex::regex_last == (regex *)0x0) {\n      pcVar6 = (char *)dcgettext(0,"no previous regular expression",5,buf);\n                    /* WARNING: Subroutine does not return */\n      bad_prog(pcVar6);\n    }\n  }\n  else {\n    match_regex::regex_last = (regex *)buflen;\n  }\n  new_regex = match_regex::regex_last;\n  if ((re_registers *)0x7ffffffe < regarray) {\n    pcVar6 = (char *)dcgettext(0,"regex input buffer length larger than INT_MAX",5,0);\n                    /* WARNING: Subroutine does not return */\n    panic(pcVar6);\n  }\n  if ((((match_regex::regex_last->pattern).field_0x1c & 0x10) != 0) && (in_stack_00000018 != 0)) {\n    if (match_regex::regex_last->dfa != (dfa *)0x0) {\n      dfafree(match_regex::regex_last->dfa);\n      free(new_regex->dfa);\n      new_regex->dfa = (dfa *)0x0;\n    }\n    regfree((regex_t *)new_regex);\n    compile_regex_1(new_regex,in_stack_00000018);\n  }\n  sVar2._0_1_ = new_regex->begline;\n  sVar2._1_1_ = new_regex->endline;\n  (new_regex->pattern).field_0x1c = (new_regex->pattern).field_0x1c & 0xf9 | 2;\n  if (sVar2 != 0) {\n    if (new_regex->endline == false) {\n      if (regsize != 0) {\n        if ((new_regex->flags & 4) == 0) goto LAB_0001c3a8;\n        if (*(char *)((buf_start_offset - 1) + regsize) != buffer_delimiter) {\n          pvVar5 = rpl_memchr((void *)(regsize + buf_start_offset),(int)buffer_delimiter,\n                              (int)regarray - regsize);\n          if (pvVar5 == (void *)0x0) goto LAB_0001c3a8;\n          regsize = (int)pvVar5 + (1 - buf_start_offset);\n        }\n      }\n    }\n    else if ((new_regex->flags & 4) == 0) {\n      regsize = (int)regarray;\n    }\n    else {\n      pvVar5 = rpl_memchr((void *)(regsize + buf_start_offset),(int)buffer_delimiter,\n                          (int)regarray - regsize);\n      regsize = (int)pvVar5 - buf_start_offset;\n      if (pvVar5 == (void *)0x0) {\n        regsize = (int)regarray;\n      }\n    }\n    if (in_stack_00000018 != 0) {\n      prVar9 = in_stack_00000014->start;\n      if (prVar9 == (regoff_t *)0x0) {\n        prVar9 = (regoff_t *)xcalloc(1,4);\n        in_stack_00000014->start = prVar9;\n        prVar10 = (regoff_t *)xcalloc(1,4);\n        in_stack_00000014->num_regs = 1;\n        prVar9 = in_stack_00000014->start;\n        in_stack_00000014->end = prVar10;\n      }\n      else {\n        prVar10 = in_stack_00000014->end;\n      }\n      *prVar9 = regsize;\n      *prVar10 = regsize;\n      if (1 < in_stack_00000014->num_regs) {\n        uVar11 = 1;\n        do {\n          prVar10[uVar11] = -1;\n          prVar9[uVar11] = -1;\n          uVar11 = uVar11 + 1;\n        } while (uVar11 < in_stack_00000014->num_regs);\n      }\n    }\n    uVar11 = 1;\n    goto LAB_0001c07a;\n  }\n  if (regsize == 0) {\n    d = new_regex->dfa;\n    d_00 = dfasuperset(d);\n    if (d_00 == (dfa *)0x0) {\n      if ((in_stack_00000018 == 0) && ((new_regex->flags & 4) != 0)) {\nLAB_0001c345:\n        backref = false;\n        pcVar6 = dfaexec(new_regex->dfa,(char *)buf_start_offset,\n                         (char *)((int)&regarray->num_regs + buf_start_offset),true,(size_t *)0x0,\n                         &backref);\n        if (pcVar6 != (char *)0x0) {\n          uVar11 = new_regex->flags;\nLAB_0001c36d:\n          uVar8 = uVar11 & 4;\n          if (uVar8 == 0) goto LAB_0001c398;\n          uVar11 = 1;\n          if (backref == false) goto LAB_0001c07a;\n          goto LAB_0001c2de;\n        }\n      }\n      else {\n        _Var4 = dfaisfast(d);\n        if (!_Var4) goto LAB_0001c2d8;\n        backref = false;\n        pcVar6 = dfaexec(d,(char *)buf_start_offset,\n                         (char *)((int)&regarray->num_regs + buf_start_offset),true,(size_t *)0x0,\n                         &backref);\n        if (pcVar6 != (char *)0x0) {\n          uVar11 = new_regex->flags;\n          uVar8 = uVar11 & 4;\n          if (in_stack_00000018 == 0) goto LAB_0001c36d;\n          goto LAB_0001c2de;\n        }\n      }\n    }\n    else {\n      pcVar6 = dfaexec(d_00,(char *)buf_start_offset,\n                       (char *)((int)&regarray->num_regs + buf_start_offset),true,(size_t *)0x0,\n                       (_Bool *)0x0);\n      if (pcVar6 != (char *)0x0) {\n        uVar11 = new_regex->flags & 4;\n        if (in_stack_00000018 == 0) {\n          if (uVar11 != 0) goto LAB_0001c345;\n          goto LAB_0001c398;\n        }\n        if (uVar11 != 0) goto LAB_0001c100;\n        goto LAB_0001c2f2;\n      }\n    }\nLAB_0001c3a8:\n    uVar11 = 0;\n  }\n  else {\nLAB_0001c2d8:\n    uVar8 = new_regex->flags & 4;\nLAB_0001c2de:\n    if (uVar8 == 0) {\nLAB_0001c2e6:\n      if (in_stack_00000018 == 0) {\nLAB_0001c398:\n        local_40 = (re_registers *)0x0;\n      }\nLAB_0001c2f2:\n      pcVar12 = (char *)re_search((re_pattern_buffer *)new_regex,(char *)buf_start_offset,\n                                  (int)regarray,regsize,(int)regarray - regsize,local_40);\n    }\n    else {\nLAB_0001c100:\n      cVar1 = buffer_delimiter;\n      if (buffer_delimiter == '\n') goto LAB_0001c2e6;\n      pcVar6 = (char *)buf_start_offset;\n      if (regsize != 0) {\n        pvVar5 = memrchr((void *)buf_start_offset,(int)buffer_delimiter,regsize);\n        pcVar6 = (char *)((int)pvVar5 + 1);\n        if (pvVar5 == (void *)0x0) {\n          pcVar6 = (char *)buf_start_offset;\n        }\n      }\n      pcVar12 = (char *)(regsize + buf_start_offset);\n      __regs = (re_registers *)0x0;\n      if (in_stack_00000018 != 0) {\n        __regs = in_stack_00000014;\n      }\n      pvVar5 = (void *)((int)&regarray->num_regs + buf_start_offset);\n      while( true ) {\n        pvVar7 = rpl_memchr(pcVar6,(int)cVar1,(int)pvVar5 - (int)pcVar6);\n        if (pvVar7 == (void *)0x0) break;\n        pcVar12 = (char *)re_search((re_pattern_buffer *)new_regex,pcVar6,(int)pvVar7 - (int)pcVar6,\n                                    (int)pcVar12 - (int)pcVar6,(int)pvVar7 - (int)pcVar12,__regs);\n        if (-1 < (int)pcVar12) goto LAB_0001c1f7;\n        if (pvVar7 == pvVar5) goto LAB_0001c317;\n        pcVar12 = (char *)((int)pvVar7 + 1);\n        pcVar6 = pcVar12;\n        cVar1 = buffer_delimiter;\n      }\n      pcVar12 = (char *)re_search((re_pattern_buffer *)new_regex,pcVar6,(int)pvVar5 - (int)pcVar6,\n                                  (int)pcVar12 - (int)pcVar6,(int)pvVar5 - (int)pcVar12,__regs);\n      if (-1 < (int)pcVar12) {\nLAB_0001c1f7:\n        pcVar12 = pcVar6 + ((int)pcVar12 - buf_start_offset);\n        if ((in_stack_00000018 != 0) && (in_stack_00000014->num_regs != 0)) {\n          prVar9 = in_stack_00000014->start;\n          prVar10 = in_stack_00000014->end;\n          uVar11 = 0;\n          do {\n            while( true ) {\n              iVar3 = prVar9[uVar11];\n              if (-1 < iVar3) {\n                prVar9[uVar11] = (regoff_t)(pcVar6 + (iVar3 - buf_start_offset));\n              }\n              iVar3 = prVar10[uVar11];\n              if (iVar3 < 0) break;\n              prVar10[uVar11] = (regoff_t)(pcVar6 + (iVar3 - buf_start_offset));\n              uVar11 = uVar11 + 1;\n              if (in_stack_00000014->num_regs <= uVar11) goto LAB_0001c317;\n            }\n            uVar11 = uVar11 + 1;\n          } while (uVar11 < in_stack_00000014->num_regs);\n        }\n      }\n    }\nLAB_0001c317:\n    uVar11 = ~(uint)pcVar12 >> 0x1f;\n  }\nLAB_0001c07a:\n  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    /* WARNING: Subroutine does not return */\n    __stack_chk_fail_local();\n  }\n  return uVar11;\n}" primitive_type (ERROR "__regparm2" identifier) (function_declarator "match_regex(regex *regex,char *buf,size_t buflen,size_t buf_start_offset,re_registers *regarray,\n           int regsize)" identifier (parameter_list "(regex *regex,char *buf,size_t buflen,size_t buf_start_offset,re_registers *regarray,\n           int regsize)" ( (parameter_declaration "regex *regex" type_identifier (pointer_declarator "*regex" * identifier)) , (parameter_declaration "char *buf" primitive_type (pointer_declarator "*buf" * identifier)) , (parameter_declaration "size_t buflen" primitive_type identifier) , (parameter_declaration "size_t buf_start_offset" primitive_type identifier) , (parameter_declaration "re_registers *regarray" type_identifier (pointer_declarator "*regarray" * identifier)) , (parameter_declaration "int regsize" primitive_type identifier) ))) (compound_statement "{\n  char cVar1;\n  short sVar2;\n  dfa *d;\n  int iVar3;\n  regex *new_regex;\n  _Bool _Var4;\n  void *pvVar5;\n  dfa *d_00;\n  char *pcVar6;\n  re_registers *__regs;\n  void *pvVar7;\n  uint uVar8;\n  regoff_t *prVar9;\n  regoff_t *prVar10;\n  uint uVar11;\n  char *pcVar12;\n  int in_GS_OFFSET;\n  re_registers *in_stack_00000014;\n  int in_stack_00000018;\n  re_registers *local_40;\n  _Bool backref;\n  int local_20;\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x1bf59;\n  local_40 = in_stack_00000014;\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  if (buflen == 0) {\n    if (match_regex::regex_last == (regex *)0x0) {\n      pcVar6 = (char *)dcgettext(0,"no previous regular expression",5,buf);\n                    /* WARNING: Subroutine does not return */\n      bad_prog(pcVar6);\n    }\n  }\n  else {\n    match_regex::regex_last = (regex *)buflen;\n  }\n  new_regex = match_regex::regex_last;\n  if ((re_registers *)0x7ffffffe < regarray) {\n    pcVar6 = (char *)dcgettext(0,"regex input buffer length larger than INT_MAX",5,0);\n                    /* WARNING: Subroutine does not return */\n    panic(pcVar6);\n  }\n  if ((((match_regex::regex_last->pattern).field_0x1c & 0x10) != 0) && (in_stack_00000018 != 0)) {\n    if (match_regex::regex_last->dfa != (dfa *)0x0) {\n      dfafree(match_regex::regex_last->dfa);\n      free(new_regex->dfa);\n      new_regex->dfa = (dfa *)0x0;\n    }\n    regfree((regex_t *)new_regex);\n    compile_regex_1(new_regex,in_stack_00000018);\n  }\n  sVar2._0_1_ = new_regex->begline;\n  sVar2._1_1_ = new_regex->endline;\n  (new_regex->pattern).field_0x1c = (new_regex->pattern).field_0x1c & 0xf9 | 2;\n  if (sVar2 != 0) {\n    if (new_regex->endline == false) {\n      if (regsize != 0) {\n        if ((new_regex->flags & 4) == 0) goto LAB_0001c3a8;\n        if (*(char *)((buf_start_offset - 1) + regsize) != buffer_delimiter) {\n          pvVar5 = rpl_memchr((void *)(regsize + buf_start_offset),(int)buffer_delimiter,\n                              (int)regarray - regsize);\n          if (pvVar5 == (void *)0x0) goto LAB_0001c3a8;\n          regsize = (int)pvVar5 + (1 - buf_start_offset);\n        }\n      }\n    }\n    else if ((new_regex->flags & 4) == 0) {\n      regsize = (int)regarray;\n    }\n    else {\n      pvVar5 = rpl_memchr((void *)(regsize + buf_start_offset),(int)buffer_delimiter,\n                          (int)regarray - regsize);\n      regsize = (int)pvVar5 - buf_start_offset;\n      if (pvVar5 == (void *)0x0) {\n        regsize = (int)regarray;\n      }\n    }\n    if (in_stack_00000018 != 0) {\n      prVar9 = in_stack_00000014->start;\n      if (prVar9 == (regoff_t *)0x0) {\n        prVar9 = (regoff_t *)xcalloc(1,4);\n        in_stack_00000014->start = prVar9;\n        prVar10 = (regoff_t *)xcalloc(1,4);\n        in_stack_00000014->num_regs = 1;\n        prVar9 = in_stack_00000014->start;\n        in_stack_00000014->end = prVar10;\n      }\n      else {\n        prVar10 = in_stack_00000014->end;\n      }\n      *prVar9 = regsize;\n      *prVar10 = regsize;\n      if (1 < in_stack_00000014->num_regs) {\n        uVar11 = 1;\n        do {\n          prVar10[uVar11] = -1;\n          prVar9[uVar11] = -1;\n          uVar11 = uVar11 + 1;\n        } while (uVar11 < in_stack_00000014->num_regs);\n      }\n    }\n    uVar11 = 1;\n    goto LAB_0001c07a;\n  }\n  if (regsize == 0) {\n    d = new_regex->dfa;\n    d_00 = dfasuperset(d);\n    if (d_00 == (dfa *)0x0) {\n      if ((in_stack_00000018 == 0) && ((new_regex->flags & 4) != 0)) {\nLAB_0001c345:\n        backref = false;\n        pcVar6 = dfaexec(new_regex->dfa,(char *)buf_start_offset,\n                         (char *)((int)&regarray->num_regs + buf_start_offset),true,(size_t *)0x0,\n                         &backref);\n        if (pcVar6 != (char *)0x0) {\n          uVar11 = new_regex->flags;\nLAB_0001c36d:\n          uVar8 = uVar11 & 4;\n          if (uVar8 == 0) goto LAB_0001c398;\n          uVar11 = 1;\n          if (backref == false) goto LAB_0001c07a;\n          goto LAB_0001c2de;\n        }\n      }\n      else {\n        _Var4 = dfaisfast(d);\n        if (!_Var4) goto LAB_0001c2d8;\n        backref = false;\n        pcVar6 = dfaexec(d,(char *)buf_start_offset,\n                         (char *)((int)&regarray->num_regs + buf_start_offset),true,(size_t *)0x0,\n                         &backref);\n        if (pcVar6 != (char *)0x0) {\n          uVar11 = new_regex->flags;\n          uVar8 = uVar11 & 4;\n          if (in_stack_00000018 == 0) goto LAB_0001c36d;\n          goto LAB_0001c2de;\n        }\n      }\n    }\n    else {\n      pcVar6 = dfaexec(d_00,(char *)buf_start_offset,\n                       (char *)((int)&regarray->num_regs + buf_start_offset),true,(size_t *)0x0,\n                       (_Bool *)0x0);\n      if (pcVar6 != (char *)0x0) {\n        uVar11 = new_regex->flags & 4;\n        if (in_stack_00000018 == 0) {\n          if (uVar11 != 0) goto LAB_0001c345;\n          goto LAB_0001c398;\n        }\n        if (uVar11 != 0) goto LAB_0001c100;\n        goto LAB_0001c2f2;\n      }\n    }\nLAB_0001c3a8:\n    uVar11 = 0;\n  }\n  else {\nLAB_0001c2d8:\n    uVar8 = new_regex->flags & 4;\nLAB_0001c2de:\n    if (uVar8 == 0) {\nLAB_0001c2e6:\n      if (in_stack_00000018 == 0) {\nLAB_0001c398:\n        local_40 = (re_registers *)0x0;\n      }\nLAB_0001c2f2:\n      pcVar12 = (char *)re_search((re_pattern_buffer *)new_regex,(char *)buf_start_offset,\n                                  (int)regarray,regsize,(int)regarray - regsize,local_40);\n    }\n    else {\nLAB_0001c100:\n      cVar1 = buffer_delimiter;\n      if (buffer_delimiter == '\n') goto LAB_0001c2e6;\n      pcVar6 = (char *)buf_start_offset;\n      if (regsize != 0) {\n        pvVar5 = memrchr((void *)buf_start_offset,(int)buffer_delimiter,regsize);\n        pcVar6 = (char *)((int)pvVar5 + 1);\n        if (pvVar5 == (void *)0x0) {\n          pcVar6 = (char *)buf_start_offset;\n        }\n      }\n      pcVar12 = (char *)(regsize + buf_start_offset);\n      __regs = (re_registers *)0x0;\n      if (in_stack_00000018 != 0) {\n        __regs = in_stack_00000014;\n      }\n      pvVar5 = (void *)((int)&regarray->num_regs + buf_start_offset);\n      while( true ) {\n        pvVar7 = rpl_memchr(pcVar6,(int)cVar1,(int)pvVar5 - (int)pcVar6);\n        if (pvVar7 == (void *)0x0) break;\n        pcVar12 = (char *)re_search((re_pattern_buffer *)new_regex,pcVar6,(int)pvVar7 - (int)pcVar6,\n                                    (int)pcVar12 - (int)pcVar6,(int)pvVar7 - (int)pcVar12,__regs);\n        if (-1 < (int)pcVar12) goto LAB_0001c1f7;\n        if (pvVar7 == pvVar5) goto LAB_0001c317;\n        pcVar12 = (char *)((int)pvVar7 + 1);\n        pcVar6 = pcVar12;\n        cVar1 = buffer_delimiter;\n      }\n      pcVar12 = (char *)re_search((re_pattern_buffer *)new_regex,pcVar6,(int)pvVar5 - (int)pcVar6,\n                                  (int)pcVar12 - (int)pcVar6,(int)pvVar5 - (int)pcVar12,__regs);\n      if (-1 < (int)pcVar12) {\nLAB_0001c1f7:\n        pcVar12 = pcVar6 + ((int)pcVar12 - buf_start_offset);\n        if ((in_stack_00000018 != 0) && (in_stack_00000014->num_regs != 0)) {\n          prVar9 = in_stack_00000014->start;\n          prVar10 = in_stack_00000014->end;\n          uVar11 = 0;\n          do {\n            while( true ) {\n              iVar3 = prVar9[uVar11];\n              if (-1 < iVar3) {\n                prVar9[uVar11] = (regoff_t)(pcVar6 + (iVar3 - buf_start_offset));\n              }\n              iVar3 = prVar10[uVar11];\n              if (iVar3 < 0) break;\n              prVar10[uVar11] = (regoff_t)(pcVar6 + (iVar3 - buf_start_offset));\n              uVar11 = uVar11 + 1;\n              if (in_stack_00000014->num_regs <= uVar11) goto LAB_0001c317;\n            }\n            uVar11 = uVar11 + 1;\n          } while (uVar11 < in_stack_00000014->num_regs);\n        }\n      }\n    }\nLAB_0001c317:\n    uVar11 = ~(uint)pcVar12 >> 0x1f;\n  }\nLAB_0001c07a:\n  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    /* WARNING: Subroutine does not return */\n    __stack_chk_fail_local();\n  }\n  return uVar11;\n}" { (declaration "char cVar1;" primitive_type identifier ;) (declaration "short sVar2;" (sized_type_specifier "short" short) identifier ;) (declaration "dfa *d;" type_identifier (pointer_declarator "*d" * identifier) ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "regex *new_regex;" type_identifier (pointer_declarator "*new_regex" * identifier) ;) (declaration "_Bool _Var4;" type_identifier identifier ;) (declaration "void *pvVar5;" primitive_type (pointer_declarator "*pvVar5" * identifier) ;) (declaration "dfa *d_00;" type_identifier (pointer_declarator "*d_00" * identifier) ;) (declaration "char *pcVar6;" primitive_type (pointer_declarator "*pcVar6" * identifier) ;) (declaration "re_registers *__regs;" type_identifier (pointer_declarator "*__regs" * identifier) ;) (declaration "void *pvVar7;" primitive_type (pointer_declarator "*pvVar7" * identifier) ;) (declaration "uint uVar8;" type_identifier identifier ;) (declaration "regoff_t *prVar9;" type_identifier (pointer_declarator "*prVar9" * identifier) ;) (declaration "regoff_t *prVar10;" type_identifier (pointer_declarator "*prVar10" * identifier) ;) (declaration "uint uVar11;" type_identifier identifier ;) (declaration "char *pcVar12;" primitive_type (pointer_declarator "*pcVar12" * identifier) ;) (declaration "int in_GS_OFFSET;" primitive_type identifier ;) (declaration "re_registers *in_stack_00000014;" type_identifier (pointer_declarator "*in_stack_00000014" * identifier) ;) (declaration "int in_stack_00000018;" primitive_type identifier ;) (declaration "re_registers *local_40;" type_identifier (pointer_declarator "*local_40" * identifier) ;) (declaration "_Bool backref;" type_identifier identifier ;) (declaration "int local_20;" primitive_type identifier ;) (declaration "undefined4 uStack_14;" type_identifier identifier ;) (expression_statement "uStack_14 = 0x1bf59;" (assignment_expression "uStack_14 = 0x1bf59" identifier = number_literal) ;) (expression_statement "local_40 = in_stack_00000014;" (assignment_expression "local_40 = in_stack_00000014" identifier = identifier) ;) (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) ))))) ;) (if_statement "if (buflen == 0) {\n    if (match_regex::regex_last == (regex *)0x0) {\n      pcVar6 = (char *)dcgettext(0,"no previous regular expression",5,buf);\n                    /* WARNING: Subroutine does not return */\n      bad_prog(pcVar6);\n    }\n  }\n  else {\n    match_regex::regex_last = (regex *)buflen;\n  }" if (parenthesized_expression "(buflen == 0)" ( (binary_expression "buflen == 0" identifier == number_literal) )) (compound_statement "{\n    if (match_regex::regex_last == (regex *)0x0) {\n      pcVar6 = (char *)dcgettext(0,"no previous regular expression",5,buf);\n                    /* WARNING: Subroutine does not return */\n      bad_prog(pcVar6);\n    }\n  }" { (if_statement "if (match_regex::regex_last == (regex *)0x0) {\n      pcVar6 = (char *)dcgettext(0,"no previous regular expression",5,buf);\n                    /* WARNING: Subroutine does not return */\n      bad_prog(pcVar6);\n    }" if (parenthesized_expression "(match_regex::regex_last == (regex *)0x0)" ( (binary_expression "match_regex::regex_last == (regex *)0x0" identifier (ERROR "::regex_last" : : identifier) == (cast_expression "(regex *)0x0" ( (type_descriptor "regex *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      pcVar6 = (char *)dcgettext(0,"no previous regular expression",5,buf);\n                    /* WARNING: Subroutine does not return */\n      bad_prog(pcVar6);\n    }" { (expression_statement "pcVar6 = (char *)dcgettext(0,"no previous regular expression",5,buf);" (assignment_expression "pcVar6 = (char *)dcgettext(0,"no previous regular expression",5,buf)" identifier = (cast_expression "(char *)dcgettext(0,"no previous regular expression",5,buf)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "dcgettext(0,"no previous regular expression",5,buf)" identifier (argument_list "(0,"no previous regular expression",5,buf)" ( number_literal , (string_literal ""no previous regular expression"" " string_content ") , number_literal , identifier ))))) ;) comment (expression_statement "bad_prog(pcVar6);" (call_expression "bad_prog(pcVar6)" identifier (argument_list "(pcVar6)" ( identifier ))) ;) })) }) (else_clause "else {\n    match_regex::regex_last = (regex *)buflen;\n  }" else (compound_statement "{\n    match_regex::regex_last = (regex *)buflen;\n  }" { (labeled_statement "match_regex::regex_last = (regex *)buflen;" statement_identifier : (ERROR ":" :) (expression_statement "regex_last = (regex *)buflen;" (assignment_expression "regex_last = (regex *)buflen" identifier = (cast_expression "(regex *)buflen" ( (type_descriptor "regex *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;)) }))) (expression_statement "new_regex = match_regex::regex_last;" (assignment_expression "new_regex = match_regex" identifier = identifier) (ERROR "::regex_last" : : identifier) ;) (if_statement "if ((re_registers *)0x7ffffffe < regarray) {\n    pcVar6 = (char *)dcgettext(0,"regex input buffer length larger than INT_MAX",5,0);\n                    /* WARNING: Subroutine does not return */\n    panic(pcVar6);\n  }" if (parenthesized_expression "((re_registers *)0x7ffffffe < regarray)" ( (binary_expression "(re_registers *)0x7ffffffe < regarray" (cast_expression "(re_registers *)0x7ffffffe" ( (type_descriptor "re_registers *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) < identifier) )) (compound_statement "{\n    pcVar6 = (char *)dcgettext(0,"regex input buffer length larger than INT_MAX",5,0);\n                    /* WARNING: Subroutine does not return */\n    panic(pcVar6);\n  }" { (expression_statement "pcVar6 = (char *)dcgettext(0,"regex input buffer length larger than INT_MAX",5,0);" (assignment_expression "pcVar6 = (char *)dcgettext(0,"regex input buffer length larger than INT_MAX",5,0)" identifier = (cast_expression "(char *)dcgettext(0,"regex input buffer length larger than INT_MAX",5,0)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "dcgettext(0,"regex input buffer length larger than INT_MAX",5,0)" identifier (argument_list "(0,"regex input buffer length larger than INT_MAX",5,0)" ( number_literal , (string_literal ""regex input buffer length larger than INT_MAX"" " string_content ") , number_literal , number_literal ))))) ;) comment (expression_statement "panic(pcVar6);" (call_expression "panic(pcVar6)" identifier (argument_list "(pcVar6)" ( identifier ))) ;) })) (if_statement "if ((((match_regex::regex_last->pattern).field_0x1c & 0x10) != 0) && (in_stack_00000018 != 0)) {\n    if (match_regex::regex_last->dfa != (dfa *)0x0) {\n      dfafree(match_regex::regex_last->dfa);\n      free(new_regex->dfa);\n      new_regex->dfa = (dfa *)0x0;\n    }\n    regfree((regex_t *)new_regex);\n    compile_regex_1(new_regex,in_stack_00000018);\n  }" if (parenthesized_expression "((((match_regex::regex_last->pattern).field_0x1c & 0x10) != 0) && (in_stack_00000018 != 0))" ( (binary_expression "(((match_regex::regex_last->pattern).field_0x1c & 0x10) != 0) && (in_stack_00000018 != 0)" (parenthesized_expression "(((match_regex::regex_last->pattern).field_0x1c & 0x10) != 0)" ( (binary_expression "((match_regex::regex_last->pattern).field_0x1c & 0x10) != 0" (parenthesized_expression "((match_regex::regex_last->pattern).field_0x1c & 0x10)" ( (binary_expression "(match_regex::regex_last->pattern).field_0x1c & 0x10" (field_expression "(match_regex::regex_last->pattern).field_0x1c" (parenthesized_expression "(match_regex::regex_last->pattern)" ( (field_expression "match_regex::regex_last->pattern" identifier (ERROR "::regex_last" : : identifier) -> field_identifier) )) . field_identifier) & number_literal) )) != number_literal) )) && (parenthesized_expression "(in_stack_00000018 != 0)" ( (binary_expression "in_stack_00000018 != 0" identifier != number_literal) ))) )) (compound_statement "{\n    if (match_regex::regex_last->dfa != (dfa *)0x0) {\n      dfafree(match_regex::regex_last->dfa);\n      free(new_regex->dfa);\n      new_regex->dfa = (dfa *)0x0;\n    }\n    regfree((regex_t *)new_regex);\n    compile_regex_1(new_regex,in_stack_00000018);\n  }" { (if_statement "if (match_regex::regex_last->dfa != (dfa *)0x0) {\n      dfafree(match_regex::regex_last->dfa);\n      free(new_regex->dfa);\n      new_regex->dfa = (dfa *)0x0;\n    }" if (parenthesized_expression "(match_regex::regex_last->dfa != (dfa *)0x0)" ( (binary_expression "match_regex::regex_last->dfa != (dfa *)0x0" (field_expression "match_regex::regex_last->dfa" identifier (ERROR "::regex_last" : : identifier) -> field_identifier) != (cast_expression "(dfa *)0x0" ( (type_descriptor "dfa *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      dfafree(match_regex::regex_last->dfa);\n      free(new_regex->dfa);\n      new_regex->dfa = (dfa *)0x0;\n    }" { (labeled_statement "dfafree(match_regex::regex_last->dfa);" statement_identifier (ERROR "(match_regex:" ( (type_descriptor "match_regex" type_identifier) :) : (expression_statement "regex_last->dfa);" (field_expression "regex_last->dfa" identifier -> field_identifier) (ERROR ")" )) ;)) (expression_statement "free(new_regex->dfa);" (call_expression "free(new_regex->dfa)" identifier (argument_list "(new_regex->dfa)" ( (field_expression "new_regex->dfa" identifier -> field_identifier) ))) ;) (expression_statement "new_regex->dfa = (dfa *)0x0;" (assignment_expression "new_regex->dfa = (dfa *)0x0" (field_expression "new_regex->dfa" identifier -> field_identifier) = (cast_expression "(dfa *)0x0" ( (type_descriptor "dfa *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) })) (expression_statement "regfree((regex_t *)new_regex);" (call_expression "regfree((regex_t *)new_regex)" identifier (argument_list "((regex_t *)new_regex)" ( (cast_expression "(regex_t *)new_regex" ( (type_descriptor "regex_t *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) ))) ;) (expression_statement "compile_regex_1(new_regex,in_stack_00000018);" (call_expression "compile_regex_1(new_regex,in_stack_00000018)" identifier (argument_list "(new_regex,in_stack_00000018)" ( identifier , identifier ))) ;) })) (expression_statement "sVar2._0_1_ = new_regex->begline;" (assignment_expression "sVar2._0_1_ = new_regex->begline" (field_expression "sVar2._0_1_" identifier . field_identifier) = (field_expression "new_regex->begline" identifier -> field_identifier)) ;) (expression_statement "sVar2._1_1_ = new_regex->endline;" (assignment_expression "sVar2._1_1_ = new_regex->endline" (field_expression "sVar2._1_1_" identifier . field_identifier) = (field_expression "new_regex->endline" identifier -> field_identifier)) ;) (expression_statement "(new_regex->pattern).field_0x1c = (new_regex->pattern).field_0x1c & 0xf9 | 2;" (assignment_expression "(new_regex->pattern).field_0x1c = (new_regex->pattern).field_0x1c & 0xf9 | 2" (field_expression "(new_regex->pattern).field_0x1c" (parenthesized_expression "(new_regex->pattern)" ( (field_expression "new_regex->pattern" identifier -> field_identifier) )) . field_identifier) = (binary_expression "(new_regex->pattern).field_0x1c & 0xf9 | 2" (binary_expression "(new_regex->pattern).field_0x1c & 0xf9" (field_expression "(new_regex->pattern).field_0x1c" (parenthesized_expression "(new_regex->pattern)" ( (field_expression "new_regex->pattern" identifier -> field_identifier) )) . field_identifier) & number_literal) | number_literal)) ;) (if_statement "if (sVar2 != 0) {\n    if (new_regex->endline == false) {\n      if (regsize != 0) {\n        if ((new_regex->flags & 4) == 0) goto LAB_0001c3a8;\n        if (*(char *)((buf_start_offset - 1) + regsize) != buffer_delimiter) {\n          pvVar5 = rpl_memchr((void *)(regsize + buf_start_offset),(int)buffer_delimiter,\n                              (int)regarray - regsize);\n          if (pvVar5 == (void *)0x0) goto LAB_0001c3a8;\n          regsize = (int)pvVar5 + (1 - buf_start_offset);\n        }\n      }\n    }\n    else if ((new_regex->flags & 4) == 0) {\n      regsize = (int)regarray;\n    }\n    else {\n      pvVar5 = rpl_memchr((void *)(regsize + buf_start_offset),(int)buffer_delimiter,\n                          (int)regarray - regsize);\n      regsize = (int)pvVar5 - buf_start_offset;\n      if (pvVar5 == (void *)0x0) {\n        regsize = (int)regarray;\n      }\n    }\n    if (in_stack_00000018 != 0) {\n      prVar9 = in_stack_00000014->start;\n      if (prVar9 == (regoff_t *)0x0) {\n        prVar9 = (regoff_t *)xcalloc(1,4);\n        in_stack_00000014->start = prVar9;\n        prVar10 = (regoff_t *)xcalloc(1,4);\n        in_stack_00000014->num_regs = 1;\n        prVar9 = in_stack_00000014->start;\n        in_stack_00000014->end = prVar10;\n      }\n      else {\n        prVar10 = in_stack_00000014->end;\n      }\n      *prVar9 = regsize;\n      *prVar10 = regsize;\n      if (1 < in_stack_00000014->num_regs) {\n        uVar11 = 1;\n        do {\n          prVar10[uVar11] = -1;\n          prVar9[uVar11] = -1;\n          uVar11 = uVar11 + 1;\n        } while (uVar11 < in_stack_00000014->num_regs);\n      }\n    }\n    uVar11 = 1;\n    goto LAB_0001c07a;\n  }" if (parenthesized_expression "(sVar2 != 0)" ( (binary_expression "sVar2 != 0" identifier != number_literal) )) (compound_statement "{\n    if (new_regex->endline == false) {\n      if (regsize != 0) {\n        if ((new_regex->flags & 4) == 0) goto LAB_0001c3a8;\n        if (*(char *)((buf_start_offset - 1) + regsize) != buffer_delimiter) {\n          pvVar5 = rpl_memchr((void *)(regsize + buf_start_offset),(int)buffer_delimiter,\n                              (int)regarray - regsize);\n          if (pvVar5 == (void *)0x0) goto LAB_0001c3a8;\n          regsize = (int)pvVar5 + (1 - buf_start_offset);\n        }\n      }\n    }\n    else if ((new_regex->flags & 4) == 0) {\n      regsize = (int)regarray;\n    }\n    else {\n      pvVar5 = rpl_memchr((void *)(regsize + buf_start_offset),(int)buffer_delimiter,\n                          (int)regarray - regsize);\n      regsize = (int)pvVar5 - buf_start_offset;\n      if (pvVar5 == (void *)0x0) {\n        regsize = (int)regarray;\n      }\n    }\n    if (in_stack_00000018 != 0) {\n      prVar9 = in_stack_00000014->start;\n      if (prVar9 == (regoff_t *)0x0) {\n        prVar9 = (regoff_t *)xcalloc(1,4);\n        in_stack_00000014->start = prVar9;\n        prVar10 = (regoff_t *)xcalloc(1,4);\n        in_stack_00000014->num_regs = 1;\n        prVar9 = in_stack_00000014->start;\n        in_stack_00000014->end = prVar10;\n      }\n      else {\n        prVar10 = in_stack_00000014->end;\n      }\n      *prVar9 = regsize;\n      *prVar10 = regsize;\n      if (1 < in_stack_00000014->num_regs) {\n        uVar11 = 1;\n        do {\n          prVar10[uVar11] = -1;\n          prVar9[uVar11] = -1;\n          uVar11 = uVar11 + 1;\n        } while (uVar11 < in_stack_00000014->num_regs);\n      }\n    }\n    uVar11 = 1;\n    goto LAB_0001c07a;\n  }" { (if_statement "if (new_regex->endline == false) {\n      if (regsize != 0) {\n        if ((new_regex->flags & 4) == 0) goto LAB_0001c3a8;\n        if (*(char *)((buf_start_offset - 1) + regsize) != buffer_delimiter) {\n          pvVar5 = rpl_memchr((void *)(regsize + buf_start_offset),(int)buffer_delimiter,\n                              (int)regarray - regsize);\n          if (pvVar5 == (void *)0x0) goto LAB_0001c3a8;\n          regsize = (int)pvVar5 + (1 - buf_start_offset);\n        }\n      }\n    }\n    else if ((new_regex->flags & 4) == 0) {\n      regsize = (int)regarray;\n    }\n    else {\n      pvVar5 = rpl_memchr((void *)(regsize + buf_start_offset),(int)buffer_delimiter,\n                          (int)regarray - regsize);\n      regsize = (int)pvVar5 - buf_start_offset;\n      if (pvVar5 == (void *)0x0) {\n        regsize = (int)regarray;\n      }\n    }" if (parenthesized_expression "(new_regex->endline == false)" ( (binary_expression "new_regex->endline == false" (field_expression "new_regex->endline" identifier -> field_identifier) == false) )) (compound_statement "{\n      if (regsize != 0) {\n        if ((new_regex->flags & 4) == 0) goto LAB_0001c3a8;\n        if (*(char *)((buf_start_offset - 1) + regsize) != buffer_delimiter) {\n          pvVar5 = rpl_memchr((void *)(regsize + buf_start_offset),(int)buffer_delimiter,\n                              (int)regarray - regsize);\n          if (pvVar5 == (void *)0x0) goto LAB_0001c3a8;\n          regsize = (int)pvVar5 + (1 - buf_start_offset);\n        }\n      }\n    }" { (if_statement "if (regsize != 0) {\n        if ((new_regex->flags & 4) == 0) goto LAB_0001c3a8;\n        if (*(char *)((buf_start_offset - 1) + regsize) != buffer_delimiter) {\n          pvVar5 = rpl_memchr((void *)(regsize + buf_start_offset),(int)buffer_delimiter,\n                              (int)regarray - regsize);\n          if (pvVar5 == (void *)0x0) goto LAB_0001c3a8;\n          regsize = (int)pvVar5 + (1 - buf_start_offset);\n        }\n      }" if (parenthesized_expression "(regsize != 0)" ( (binary_expression "regsize != 0" identifier != number_literal) )) (compound_statement "{\n        if ((new_regex->flags & 4) == 0) goto LAB_0001c3a8;\n        if (*(char *)((buf_start_offset - 1) + regsize) != buffer_delimiter) {\n          pvVar5 = rpl_memchr((void *)(regsize + buf_start_offset),(int)buffer_delimiter,\n                              (int)regarray - regsize);\n          if (pvVar5 == (void *)0x0) goto LAB_0001c3a8;\n          regsize = (int)pvVar5 + (1 - buf_start_offset);\n        }\n      }" { (if_statement "if ((new_regex->flags & 4) == 0) goto LAB_0001c3a8;" if (parenthesized_expression "((new_regex->flags & 4) == 0)" ( (binary_expression "(new_regex->flags & 4) == 0" (parenthesized_expression "(new_regex->flags & 4)" ( (binary_expression "new_regex->flags & 4" (field_expression "new_regex->flags" identifier -> field_identifier) & number_literal) )) == number_literal) )) (goto_statement "goto LAB_0001c3a8;" goto statement_identifier ;)) (if_statement "if (*(char *)((buf_start_offset - 1) + regsize) != buffer_delimiter) {\n          pvVar5 = rpl_memchr((void *)(regsize + buf_start_offset),(int)buffer_delimiter,\n                              (int)regarray - regsize);\n          if (pvVar5 == (void *)0x0) goto LAB_0001c3a8;\n          regsize = (int)pvVar5 + (1 - buf_start_offset);\n        }" if (parenthesized_expression "(*(char *)((buf_start_offset - 1) + regsize) != buffer_delimiter)" ( (binary_expression "*(char *)((buf_start_offset - 1) + regsize) != buffer_delimiter" (pointer_expression "*(char *)((buf_start_offset - 1) + regsize)" * (cast_expression "(char *)((buf_start_offset - 1) + regsize)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((buf_start_offset - 1) + regsize)" ( (binary_expression "(buf_start_offset - 1) + regsize" (parenthesized_expression "(buf_start_offset - 1)" ( (binary_expression "buf_start_offset - 1" identifier - number_literal) )) + identifier) )))) != identifier) )) (compound_statement "{\n          pvVar5 = rpl_memchr((void *)(regsize + buf_start_offset),(int)buffer_delimiter,\n                              (int)regarray - regsize);\n          if (pvVar5 == (void *)0x0) goto LAB_0001c3a8;\n          regsize = (int)pvVar5 + (1 - buf_start_offset);\n        }" { (expression_statement "pvVar5 = rpl_memchr((void *)(regsize + buf_start_offset),(int)buffer_delimiter,\n                              (int)regarray - regsize);" (assignment_expression "pvVar5 = rpl_memchr((void *)(regsize + buf_start_offset),(int)buffer_delimiter,\n                              (int)regarray - regsize)" identifier = (call_expression "rpl_memchr((void *)(regsize + buf_start_offset),(int)buffer_delimiter,\n                              (int)regarray - regsize)" identifier (argument_list "((void *)(regsize + buf_start_offset),(int)buffer_delimiter,\n                              (int)regarray - regsize)" ( (cast_expression "(void *)(regsize + buf_start_offset)" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(regsize + buf_start_offset)" ( (binary_expression "regsize + buf_start_offset" identifier + identifier) ))) , (cast_expression "(int)buffer_delimiter" ( (type_descriptor "int" primitive_type) ) identifier) , (binary_expression "(int)regarray - regsize" (cast_expression "(int)regarray" ( (type_descriptor "int" primitive_type) ) identifier) - identifier) )))) ;) (if_statement "if (pvVar5 == (void *)0x0) goto LAB_0001c3a8;" if (parenthesized_expression "(pvVar5 == (void *)0x0)" ( (binary_expression "pvVar5 == (void *)0x0" identifier == (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_0001c3a8;" goto statement_identifier ;)) (expression_statement "regsize = (int)pvVar5 + (1 - buf_start_offset);" (assignment_expression "regsize = (int)pvVar5 + (1 - buf_start_offset)" identifier = (binary_expression "(int)pvVar5 + (1 - buf_start_offset)" (cast_expression "(int)pvVar5" ( (type_descriptor "int" primitive_type) ) identifier) + (parenthesized_expression "(1 - buf_start_offset)" ( (binary_expression "1 - buf_start_offset" number_literal - identifier) )))) ;) })) })) }) (else_clause "else if ((new_regex->flags & 4) == 0) {\n      regsize = (int)regarray;\n    }\n    else {\n      pvVar5 = rpl_memchr((void *)(regsize + buf_start_offset),(int)buffer_delimiter,\n                          (int)regarray - regsize);\n      regsize = (int)pvVar5 - buf_start_offset;\n      if (pvVar5 == (void *)0x0) {\n        regsize = (int)regarray;\n      }\n    }" else (if_statement "if ((new_regex->flags & 4) == 0) {\n      regsize = (int)regarray;\n    }\n    else {\n      pvVar5 = rpl_memchr((void *)(regsize + buf_start_offset),(int)buffer_delimiter,\n                          (int)regarray - regsize);\n      regsize = (int)pvVar5 - buf_start_offset;\n      if (pvVar5 == (void *)0x0) {\n        regsize = (int)regarray;\n      }\n    }" if (parenthesized_expression "((new_regex->flags & 4) == 0)" ( (binary_expression "(new_regex->flags & 4) == 0" (parenthesized_expression "(new_regex->flags & 4)" ( (binary_expression "new_regex->flags & 4" (field_expression "new_regex->flags" identifier -> field_identifier) & number_literal) )) == number_literal) )) (compound_statement "{\n      regsize = (int)regarray;\n    }" { (expression_statement "regsize = (int)regarray;" (assignment_expression "regsize = (int)regarray" identifier = (cast_expression "(int)regarray" ( (type_descriptor "int" primitive_type) ) identifier)) ;) }) (else_clause "else {\n      pvVar5 = rpl_memchr((void *)(regsize + buf_start_offset),(int)buffer_delimiter,\n                          (int)regarray - regsize);\n      regsize = (int)pvVar5 - buf_start_offset;\n      if (pvVar5 == (void *)0x0) {\n        regsize = (int)regarray;\n      }\n    }" else (compound_statement "{\n      pvVar5 = rpl_memchr((void *)(regsize + buf_start_offset),(int)buffer_delimiter,\n                          (int)regarray - regsize);\n      regsize = (int)pvVar5 - buf_start_offset;\n      if (pvVar5 == (void *)0x0) {\n        regsize = (int)regarray;\n      }\n    }" { (expression_statement "pvVar5 = rpl_memchr((void *)(regsize + buf_start_offset),(int)buffer_delimiter,\n                          (int)regarray - regsize);" (assignment_expression "pvVar5 = rpl_memchr((void *)(regsize + buf_start_offset),(int)buffer_delimiter,\n                          (int)regarray - regsize)" identifier = (call_expression "rpl_memchr((void *)(regsize + buf_start_offset),(int)buffer_delimiter,\n                          (int)regarray - regsize)" identifier (argument_list "((void *)(regsize + buf_start_offset),(int)buffer_delimiter,\n                          (int)regarray - regsize)" ( (cast_expression "(void *)(regsize + buf_start_offset)" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(regsize + buf_start_offset)" ( (binary_expression "regsize + buf_start_offset" identifier + identifier) ))) , (cast_expression "(int)buffer_delimiter" ( (type_descriptor "int" primitive_type) ) identifier) , (binary_expression "(int)regarray - regsize" (cast_expression "(int)regarray" ( (type_descriptor "int" primitive_type) ) identifier) - identifier) )))) ;) (expression_statement "regsize = (int)pvVar5 - buf_start_offset;" (assignment_expression "regsize = (int)pvVar5 - buf_start_offset" identifier = (binary_expression "(int)pvVar5 - buf_start_offset" (cast_expression "(int)pvVar5" ( (type_descriptor "int" primitive_type) ) identifier) - identifier)) ;) (if_statement "if (pvVar5 == (void *)0x0) {\n        regsize = (int)regarray;\n      }" if (parenthesized_expression "(pvVar5 == (void *)0x0)" ( (binary_expression "pvVar5 == (void *)0x0" identifier == (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        regsize = (int)regarray;\n      }" { (expression_statement "regsize = (int)regarray;" (assignment_expression "regsize = (int)regarray" identifier = (cast_expression "(int)regarray" ( (type_descriptor "int" primitive_type) ) identifier)) ;) })) }))))) (if_statement "if (in_stack_00000018 != 0) {\n      prVar9 = in_stack_00000014->start;\n      if (prVar9 == (regoff_t *)0x0) {\n        prVar9 = (regoff_t *)xcalloc(1,4);\n        in_stack_00000014->start = prVar9;\n        prVar10 = (regoff_t *)xcalloc(1,4);\n        in_stack_00000014->num_regs = 1;\n        prVar9 = in_stack_00000014->start;\n        in_stack_00000014->end = prVar10;\n      }\n      else {\n        prVar10 = in_stack_00000014->end;\n      }\n      *prVar9 = regsize;\n      *prVar10 = regsize;\n      if (1 < in_stack_00000014->num_regs) {\n        uVar11 = 1;\n        do {\n          prVar10[uVar11] = -1;\n          prVar9[uVar11] = -1;\n          uVar11 = uVar11 + 1;\n        } while (uVar11 < in_stack_00000014->num_regs);\n      }\n    }" if (parenthesized_expression "(in_stack_00000018 != 0)" ( (binary_expression "in_stack_00000018 != 0" identifier != number_literal) )) (compound_statement "{\n      prVar9 = in_stack_00000014->start;\n      if (prVar9 == (regoff_t *)0x0) {\n        prVar9 = (regoff_t *)xcalloc(1,4);\n        in_stack_00000014->start = prVar9;\n        prVar10 = (regoff_t *)xcalloc(1,4);\n        in_stack_00000014->num_regs = 1;\n        prVar9 = in_stack_00000014->start;\n        in_stack_00000014->end = prVar10;\n      }\n      else {\n        prVar10 = in_stack_00000014->end;\n      }\n      *prVar9 = regsize;\n      *prVar10 = regsize;\n      if (1 < in_stack_00000014->num_regs) {\n        uVar11 = 1;\n        do {\n          prVar10[uVar11] = -1;\n          prVar9[uVar11] = -1;\n          uVar11 = uVar11 + 1;\n        } while (uVar11 < in_stack_00000014->num_regs);\n      }\n    }" { (expression_statement "prVar9 = in_stack_00000014->start;" (assignment_expression "prVar9 = in_stack_00000014->start" identifier = (field_expression "in_stack_00000014->start" identifier -> field_identifier)) ;) (if_statement "if (prVar9 == (regoff_t *)0x0) {\n        prVar9 = (regoff_t *)xcalloc(1,4);\n        in_stack_00000014->start = prVar9;\n        prVar10 = (regoff_t *)xcalloc(1,4);\n        in_stack_00000014->num_regs = 1;\n        prVar9 = in_stack_00000014->start;\n        in_stack_00000014->end = prVar10;\n      }\n      else {\n        prVar10 = in_stack_00000014->end;\n      }" if (parenthesized_expression "(prVar9 == (regoff_t *)0x0)" ( (binary_expression "prVar9 == (regoff_t *)0x0" identifier == (cast_expression "(regoff_t *)0x0" ( (type_descriptor "regoff_t *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        prVar9 = (regoff_t *)xcalloc(1,4);\n        in_stack_00000014->start = prVar9;\n        prVar10 = (regoff_t *)xcalloc(1,4);\n        in_stack_00000014->num_regs = 1;\n        prVar9 = in_stack_00000014->start;\n        in_stack_00000014->end = prVar10;\n      }" { (expression_statement "prVar9 = (regoff_t *)xcalloc(1,4);" (assignment_expression "prVar9 = (regoff_t *)xcalloc(1,4)" identifier = (cast_expression "(regoff_t *)xcalloc(1,4)" ( (type_descriptor "regoff_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "xcalloc(1,4)" identifier (argument_list "(1,4)" ( number_literal , number_literal ))))) ;) (expression_statement "in_stack_00000014->start = prVar9;" (assignment_expression "in_stack_00000014->start = prVar9" (field_expression "in_stack_00000014->start" identifier -> field_identifier) = identifier) ;) (expression_statement "prVar10 = (regoff_t *)xcalloc(1,4);" (assignment_expression "prVar10 = (regoff_t *)xcalloc(1,4)" identifier = (cast_expression "(regoff_t *)xcalloc(1,4)" ( (type_descriptor "regoff_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "xcalloc(1,4)" identifier (argument_list "(1,4)" ( number_literal , number_literal ))))) ;) (expression_statement "in_stack_00000014->num_regs = 1;" (assignment_expression "in_stack_00000014->num_regs = 1" (field_expression "in_stack_00000014->num_regs" identifier -> field_identifier) = number_literal) ;) (expression_statement "prVar9 = in_stack_00000014->start;" (assignment_expression "prVar9 = in_stack_00000014->start" identifier = (field_expression "in_stack_00000014->start" identifier -> field_identifier)) ;) (expression_statement "in_stack_00000014->end = prVar10;" (assignment_expression "in_stack_00000014->end = prVar10" (field_expression "in_stack_00000014->end" identifier -> field_identifier) = identifier) ;) }) (else_clause "else {\n        prVar10 = in_stack_00000014->end;\n      }" else (compound_statement "{\n        prVar10 = in_stack_00000014->end;\n      }" { (expression_statement "prVar10 = in_stack_00000014->end;" (assignment_expression "prVar10 = in_stack_00000014->end" identifier = (field_expression "in_stack_00000014->end" identifier -> field_identifier)) ;) }))) (expression_statement "*prVar9 = regsize;" (assignment_expression "*prVar9 = regsize" (pointer_expression "*prVar9" * identifier) = identifier) ;) (expression_statement "*prVar10 = regsize;" (assignment_expression "*prVar10 = regsize" (pointer_expression "*prVar10" * identifier) = identifier) ;) (if_statement "if (1 < in_stack_00000014->num_regs) {\n        uVar11 = 1;\n        do {\n          prVar10[uVar11] = -1;\n          prVar9[uVar11] = -1;\n          uVar11 = uVar11 + 1;\n        } while (uVar11 < in_stack_00000014->num_regs);\n      }" if (parenthesized_expression "(1 < in_stack_00000014->num_regs)" ( (binary_expression "1 < in_stack_00000014->num_regs" number_literal < (field_expression "in_stack_00000014->num_regs" identifier -> field_identifier)) )) (compound_statement "{\n        uVar11 = 1;\n        do {\n          prVar10[uVar11] = -1;\n          prVar9[uVar11] = -1;\n          uVar11 = uVar11 + 1;\n        } while (uVar11 < in_stack_00000014->num_regs);\n      }" { (expression_statement "uVar11 = 1;" (assignment_expression "uVar11 = 1" identifier = number_literal) ;) (do_statement "do {\n          prVar10[uVar11] = -1;\n          prVar9[uVar11] = -1;\n          uVar11 = uVar11 + 1;\n        } while (uVar11 < in_stack_00000014->num_regs);" do (compound_statement "{\n          prVar10[uVar11] = -1;\n          prVar9[uVar11] = -1;\n          uVar11 = uVar11 + 1;\n        }" { (expression_statement "prVar10[uVar11] = -1;" (assignment_expression "prVar10[uVar11] = -1" (subscript_expression "prVar10[uVar11]" identifier [ identifier ]) = number_literal) ;) (expression_statement "prVar9[uVar11] = -1;" (assignment_expression "prVar9[uVar11] = -1" (subscript_expression "prVar9[uVar11]" identifier [ identifier ]) = number_literal) ;) (expression_statement "uVar11 = uVar11 + 1;" (assignment_expression "uVar11 = uVar11 + 1" identifier = (binary_expression "uVar11 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar11 < in_stack_00000014->num_regs)" ( (binary_expression "uVar11 < in_stack_00000014->num_regs" identifier < (field_expression "in_stack_00000014->num_regs" identifier -> field_identifier)) )) ;) })) })) (expression_statement "uVar11 = 1;" (assignment_expression "uVar11 = 1" identifier = number_literal) ;) (goto_statement "goto LAB_0001c07a;" goto statement_identifier ;) })) (if_statement "if (regsize == 0) {\n    d = new_regex->dfa;\n    d_00 = dfasuperset(d);\n    if (d_00 == (dfa *)0x0) {\n      if ((in_stack_00000018 == 0) && ((new_regex->flags & 4) != 0)) {\nLAB_0001c345:\n        backref = false;\n        pcVar6 = dfaexec(new_regex->dfa,(char *)buf_start_offset,\n                         (char *)((int)&regarray->num_regs + buf_start_offset),true,(size_t *)0x0,\n                         &backref);\n        if (pcVar6 != (char *)0x0) {\n          uVar11 = new_regex->flags;\nLAB_0001c36d:\n          uVar8 = uVar11 & 4;\n          if (uVar8 == 0) goto LAB_0001c398;\n          uVar11 = 1;\n          if (backref == false) goto LAB_0001c07a;\n          goto LAB_0001c2de;\n        }\n      }\n      else {\n        _Var4 = dfaisfast(d);\n        if (!_Var4) goto LAB_0001c2d8;\n        backref = false;\n        pcVar6 = dfaexec(d,(char *)buf_start_offset,\n                         (char *)((int)&regarray->num_regs + buf_start_offset),true,(size_t *)0x0,\n                         &backref);\n        if (pcVar6 != (char *)0x0) {\n          uVar11 = new_regex->flags;\n          uVar8 = uVar11 & 4;\n          if (in_stack_00000018 == 0) goto LAB_0001c36d;\n          goto LAB_0001c2de;\n        }\n      }\n    }\n    else {\n      pcVar6 = dfaexec(d_00,(char *)buf_start_offset,\n                       (char *)((int)&regarray->num_regs + buf_start_offset),true,(size_t *)0x0,\n                       (_Bool *)0x0);\n      if (pcVar6 != (char *)0x0) {\n        uVar11 = new_regex->flags & 4;\n        if (in_stack_00000018 == 0) {\n          if (uVar11 != 0) goto LAB_0001c345;\n          goto LAB_0001c398;\n        }\n        if (uVar11 != 0) goto LAB_0001c100;\n        goto LAB_0001c2f2;\n      }\n    }\nLAB_0001c3a8:\n    uVar11 = 0;\n  }\n  else {\nLAB_0001c2d8:\n    uVar8 = new_regex->flags & 4;\nLAB_0001c2de:\n    if (uVar8 == 0) {\nLAB_0001c2e6:\n      if (in_stack_00000018 == 0) {\nLAB_0001c398:\n        local_40 = (re_registers *)0x0;\n      }\nLAB_0001c2f2:\n      pcVar12 = (char *)re_search((re_pattern_buffer *)new_regex,(char *)buf_start_offset,\n                                  (int)regarray,regsize,(int)regarray - regsize,local_40);\n    }\n    else {\nLAB_0001c100:\n      cVar1 = buffer_delimiter;\n      if (buffer_delimiter == '\n') goto LAB_0001c2e6;\n      pcVar6 = (char *)buf_start_offset;\n      if (regsize != 0) {\n        pvVar5 = memrchr((void *)buf_start_offset,(int)buffer_delimiter,regsize);\n        pcVar6 = (char *)((int)pvVar5 + 1);\n        if (pvVar5 == (void *)0x0) {\n          pcVar6 = (char *)buf_start_offset;\n        }\n      }\n      pcVar12 = (char *)(regsize + buf_start_offset);\n      __regs = (re_registers *)0x0;\n      if (in_stack_00000018 != 0) {\n        __regs = in_stack_00000014;\n      }\n      pvVar5 = (void *)((int)&regarray->num_regs + buf_start_offset);\n      while( true ) {\n        pvVar7 = rpl_memchr(pcVar6,(int)cVar1,(int)pvVar5 - (int)pcVar6);\n        if (pvVar7 == (void *)0x0) break;\n        pcVar12 = (char *)re_search((re_pattern_buffer *)new_regex,pcVar6,(int)pvVar7 - (int)pcVar6,\n                                    (int)pcVar12 - (int)pcVar6,(int)pvVar7 - (int)pcVar12,__regs);\n        if (-1 < (int)pcVar12) goto LAB_0001c1f7;\n        if (pvVar7 == pvVar5) goto LAB_0001c317;\n        pcVar12 = (char *)((int)pvVar7 + 1);\n        pcVar6 = pcVar12;\n        cVar1 = buffer_delimiter;\n      }\n      pcVar12 = (char *)re_search((re_pattern_buffer *)new_regex,pcVar6,(int)pvVar5 - (int)pcVar6,\n                                  (int)pcVar12 - (int)pcVar6,(int)pvVar5 - (int)pcVar12,__regs);\n      if (-1 < (int)pcVar12) {\nLAB_0001c1f7:\n        pcVar12 = pcVar6 + ((int)pcVar12 - buf_start_offset);\n        if ((in_stack_00000018 != 0) && (in_stack_00000014->num_regs != 0)) {\n          prVar9 = in_stack_00000014->start;\n          prVar10 = in_stack_00000014->end;\n          uVar11 = 0;\n          do {\n            while( true ) {\n              iVar3 = prVar9[uVar11];\n              if (-1 < iVar3) {\n                prVar9[uVar11] = (regoff_t)(pcVar6 + (iVar3 - buf_start_offset));\n              }\n              iVar3 = prVar10[uVar11];\n              if (iVar3 < 0) break;\n              prVar10[uVar11] = (regoff_t)(pcVar6 + (iVar3 - buf_start_offset));\n              uVar11 = uVar11 + 1;\n              if (in_stack_00000014->num_regs <= uVar11) goto LAB_0001c317;\n            }\n            uVar11 = uVar11 + 1;\n          } while (uVar11 < in_stack_00000014->num_regs);\n        }\n      }\n    }\nLAB_0001c317:\n    uVar11 = ~(uint)pcVar12 >> 0x1f;\n  }" if (parenthesized_expression "(regsize == 0)" ( (binary_expression "regsize == 0" identifier == number_literal) )) (compound_statement "{\n    d = new_regex->dfa;\n    d_00 = dfasuperset(d);\n    if (d_00 == (dfa *)0x0) {\n      if ((in_stack_00000018 == 0) && ((new_regex->flags & 4) != 0)) {\nLAB_0001c345:\n        backref = false;\n        pcVar6 = dfaexec(new_regex->dfa,(char *)buf_start_offset,\n                         (char *)((int)&regarray->num_regs + buf_start_offset),true,(size_t *)0x0,\n                         &backref);\n        if (pcVar6 != (char *)0x0) {\n          uVar11 = new_regex->flags;\nLAB_0001c36d:\n          uVar8 = uVar11 & 4;\n          if (uVar8 == 0) goto LAB_0001c398;\n          uVar11 = 1;\n          if (backref == false) goto LAB_0001c07a;\n          goto LAB_0001c2de;\n        }\n      }\n      else {\n        _Var4 = dfaisfast(d);\n        if (!_Var4) goto LAB_0001c2d8;\n        backref = false;\n        pcVar6 = dfaexec(d,(char *)buf_start_offset,\n                         (char *)((int)&regarray->num_regs + buf_start_offset),true,(size_t *)0x0,\n                         &backref);\n        if (pcVar6 != (char *)0x0) {\n          uVar11 = new_regex->flags;\n          uVar8 = uVar11 & 4;\n          if (in_stack_00000018 == 0) goto LAB_0001c36d;\n          goto LAB_0001c2de;\n        }\n      }\n    }\n    else {\n      pcVar6 = dfaexec(d_00,(char *)buf_start_offset,\n                       (char *)((int)&regarray->num_regs + buf_start_offset),true,(size_t *)0x0,\n                       (_Bool *)0x0);\n      if (pcVar6 != (char *)0x0) {\n        uVar11 = new_regex->flags & 4;\n        if (in_stack_00000018 == 0) {\n          if (uVar11 != 0) goto LAB_0001c345;\n          goto LAB_0001c398;\n        }\n        if (uVar11 != 0) goto LAB_0001c100;\n        goto LAB_0001c2f2;\n      }\n    }\nLAB_0001c3a8:\n    uVar11 = 0;\n  }" { (expression_statement "d = new_regex->dfa;" (assignment_expression "d = new_regex->dfa" identifier = (field_expression "new_regex->dfa" identifier -> field_identifier)) ;) (expression_statement "d_00 = dfasuperset(d);" (assignment_expression "d_00 = dfasuperset(d)" identifier = (call_expression "dfasuperset(d)" identifier (argument_list "(d)" ( identifier )))) ;) (if_statement "if (d_00 == (dfa *)0x0) {\n      if ((in_stack_00000018 == 0) && ((new_regex->flags & 4) != 0)) {\nLAB_0001c345:\n        backref = false;\n        pcVar6 = dfaexec(new_regex->dfa,(char *)buf_start_offset,\n                         (char *)((int)&regarray->num_regs + buf_start_offset),true,(size_t *)0x0,\n                         &backref);\n        if (pcVar6 != (char *)0x0) {\n          uVar11 = new_regex->flags;\nLAB_0001c36d:\n          uVar8 = uVar11 & 4;\n          if (uVar8 == 0) goto LAB_0001c398;\n          uVar11 = 1;\n          if (backref == false) goto LAB_0001c07a;\n          goto LAB_0001c2de;\n        }\n      }\n      else {\n        _Var4 = dfaisfast(d);\n        if (!_Var4) goto LAB_0001c2d8;\n        backref = false;\n        pcVar6 = dfaexec(d,(char *)buf_start_offset,\n                         (char *)((int)&regarray->num_regs + buf_start_offset),true,(size_t *)0x0,\n                         &backref);\n        if (pcVar6 != (char *)0x0) {\n          uVar11 = new_regex->flags;\n          uVar8 = uVar11 & 4;\n          if (in_stack_00000018 == 0) goto LAB_0001c36d;\n          goto LAB_0001c2de;\n        }\n      }\n    }\n    else {\n      pcVar6 = dfaexec(d_00,(char *)buf_start_offset,\n                       (char *)((int)&regarray->num_regs + buf_start_offset),true,(size_t *)0x0,\n                       (_Bool *)0x0);\n      if (pcVar6 != (char *)0x0) {\n        uVar11 = new_regex->flags & 4;\n        if (in_stack_00000018 == 0) {\n          if (uVar11 != 0) goto LAB_0001c345;\n          goto LAB_0001c398;\n        }\n        if (uVar11 != 0) goto LAB_0001c100;\n        goto LAB_0001c2f2;\n      }\n    }" if (parenthesized_expression "(d_00 == (dfa *)0x0)" ( (binary_expression "d_00 == (dfa *)0x0" identifier == (cast_expression "(dfa *)0x0" ( (type_descriptor "dfa *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      if ((in_stack_00000018 == 0) && ((new_regex->flags & 4) != 0)) {\nLAB_0001c345:\n        backref = false;\n        pcVar6 = dfaexec(new_regex->dfa,(char *)buf_start_offset,\n                         (char *)((int)&regarray->num_regs + buf_start_offset),true,(size_t *)0x0,\n                         &backref);\n        if (pcVar6 != (char *)0x0) {\n          uVar11 = new_regex->flags;\nLAB_0001c36d:\n          uVar8 = uVar11 & 4;\n          if (uVar8 == 0) goto LAB_0001c398;\n          uVar11 = 1;\n          if (backref == false) goto LAB_0001c07a;\n          goto LAB_0001c2de;\n        }\n      }\n      else {\n        _Var4 = dfaisfast(d);\n        if (!_Var4) goto LAB_0001c2d8;\n        backref = false;\n        pcVar6 = dfaexec(d,(char *)buf_start_offset,\n                         (char *)((int)&regarray->num_regs + buf_start_offset),true,(size_t *)0x0,\n                         &backref);\n        if (pcVar6 != (char *)0x0) {\n          uVar11 = new_regex->flags;\n          uVar8 = uVar11 & 4;\n          if (in_stack_00000018 == 0) goto LAB_0001c36d;\n          goto LAB_0001c2de;\n        }\n      }\n    }" { (if_statement "if ((in_stack_00000018 == 0) && ((new_regex->flags & 4) != 0)) {\nLAB_0001c345:\n        backref = false;\n        pcVar6 = dfaexec(new_regex->dfa,(char *)buf_start_offset,\n                         (char *)((int)&regarray->num_regs + buf_start_offset),true,(size_t *)0x0,\n                         &backref);\n        if (pcVar6 != (char *)0x0) {\n          uVar11 = new_regex->flags;\nLAB_0001c36d:\n          uVar8 = uVar11 & 4;\n          if (uVar8 == 0) goto LAB_0001c398;\n          uVar11 = 1;\n          if (backref == false) goto LAB_0001c07a;\n          goto LAB_0001c2de;\n        }\n      }\n      else {\n        _Var4 = dfaisfast(d);\n        if (!_Var4) goto LAB_0001c2d8;\n        backref = false;\n        pcVar6 = dfaexec(d,(char *)buf_start_offset,\n                         (char *)((int)&regarray->num_regs + buf_start_offset),true,(size_t *)0x0,\n                         &backref);\n        if (pcVar6 != (char *)0x0) {\n          uVar11 = new_regex->flags;\n          uVar8 = uVar11 & 4;\n          if (in_stack_00000018 == 0) goto LAB_0001c36d;\n          goto LAB_0001c2de;\n        }\n      }" if (parenthesized_expression "((in_stack_00000018 == 0) && ((new_regex->flags & 4) != 0))" ( (binary_expression "(in_stack_00000018 == 0) && ((new_regex->flags & 4) != 0)" (parenthesized_expression "(in_stack_00000018 == 0)" ( (binary_expression "in_stack_00000018 == 0" identifier == number_literal) )) && (parenthesized_expression "((new_regex->flags & 4) != 0)" ( (binary_expression "(new_regex->flags & 4) != 0" (parenthesized_expression "(new_regex->flags & 4)" ( (binary_expression "new_regex->flags & 4" (field_expression "new_regex->flags" identifier -> field_identifier) & number_literal) )) != number_literal) ))) )) (compound_statement "{\nLAB_0001c345:\n        backref = false;\n        pcVar6 = dfaexec(new_regex->dfa,(char *)buf_start_offset,\n                         (char *)((int)&regarray->num_regs + buf_start_offset),true,(size_t *)0x0,\n                         &backref);\n        if (pcVar6 != (char *)0x0) {\n          uVar11 = new_regex->flags;\nLAB_0001c36d:\n          uVar8 = uVar11 & 4;\n          if (uVar8 == 0) goto LAB_0001c398;\n          uVar11 = 1;\n          if (backref == false) goto LAB_0001c07a;\n          goto LAB_0001c2de;\n        }\n      }" { (labeled_statement "LAB_0001c345:\n        backref = false;" statement_identifier : (expression_statement "backref = false;" (assignment_expression "backref = false" identifier = false) ;)) (expression_statement "pcVar6 = dfaexec(new_regex->dfa,(char *)buf_start_offset,\n                         (char *)((int)&regarray->num_regs + buf_start_offset),true,(size_t *)0x0,\n                         &backref);" (assignment_expression "pcVar6 = dfaexec(new_regex->dfa,(char *)buf_start_offset,\n                         (char *)((int)&regarray->num_regs + buf_start_offset),true,(size_t *)0x0,\n                         &backref)" identifier = (call_expression "dfaexec(new_regex->dfa,(char *)buf_start_offset,\n                         (char *)((int)&regarray->num_regs + buf_start_offset),true,(size_t *)0x0,\n                         &backref)" identifier (argument_list "(new_regex->dfa,(char *)buf_start_offset,\n                         (char *)((int)&regarray->num_regs + buf_start_offset),true,(size_t *)0x0,\n                         &backref)" ( (field_expression "new_regex->dfa" identifier -> field_identifier) , (cast_expression "(char *)buf_start_offset" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) , (cast_expression "(char *)((int)&regarray->num_regs + buf_start_offset)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&regarray->num_regs + buf_start_offset)" ( (binary_expression "(int)&regarray->num_regs + buf_start_offset" (cast_expression "(int)&regarray->num_regs" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&regarray->num_regs" & (field_expression "regarray->num_regs" identifier -> field_identifier))) + identifier) ))) , true , (cast_expression "(size_t *)0x0" ( (type_descriptor "size_t *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal) , (pointer_expression "&backref" & identifier) )))) ;) (if_statement "if (pcVar6 != (char *)0x0) {\n          uVar11 = new_regex->flags;\nLAB_0001c36d:\n          uVar8 = uVar11 & 4;\n          if (uVar8 == 0) goto LAB_0001c398;\n          uVar11 = 1;\n          if (backref == false) goto LAB_0001c07a;\n          goto LAB_0001c2de;\n        }" if (parenthesized_expression "(pcVar6 != (char *)0x0)" ( (binary_expression "pcVar6 != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          uVar11 = new_regex->flags;\nLAB_0001c36d:\n          uVar8 = uVar11 & 4;\n          if (uVar8 == 0) goto LAB_0001c398;\n          uVar11 = 1;\n          if (backref == false) goto LAB_0001c07a;\n          goto LAB_0001c2de;\n        }" { (expression_statement "uVar11 = new_regex->flags;" (assignment_expression "uVar11 = new_regex->flags" identifier = (field_expression "new_regex->flags" identifier -> field_identifier)) ;) (labeled_statement "LAB_0001c36d:\n          uVar8 = uVar11 & 4;" statement_identifier : (expression_statement "uVar8 = uVar11 & 4;" (assignment_expression "uVar8 = uVar11 & 4" identifier = (binary_expression "uVar11 & 4" identifier & number_literal)) ;)) (if_statement "if (uVar8 == 0) goto LAB_0001c398;" if (parenthesized_expression "(uVar8 == 0)" ( (binary_expression "uVar8 == 0" identifier == number_literal) )) (goto_statement "goto LAB_0001c398;" goto statement_identifier ;)) (expression_statement "uVar11 = 1;" (assignment_expression "uVar11 = 1" identifier = number_literal) ;) (if_statement "if (backref == false) goto LAB_0001c07a;" if (parenthesized_expression "(backref == false)" ( (binary_expression "backref == false" identifier == false) )) (goto_statement "goto LAB_0001c07a;" goto statement_identifier ;)) (goto_statement "goto LAB_0001c2de;" goto statement_identifier ;) })) }) (else_clause "else {\n        _Var4 = dfaisfast(d);\n        if (!_Var4) goto LAB_0001c2d8;\n        backref = false;\n        pcVar6 = dfaexec(d,(char *)buf_start_offset,\n                         (char *)((int)&regarray->num_regs + buf_start_offset),true,(size_t *)0x0,\n                         &backref);\n        if (pcVar6 != (char *)0x0) {\n          uVar11 = new_regex->flags;\n          uVar8 = uVar11 & 4;\n          if (in_stack_00000018 == 0) goto LAB_0001c36d;\n          goto LAB_0001c2de;\n        }\n      }" else (compound_statement "{\n        _Var4 = dfaisfast(d);\n        if (!_Var4) goto LAB_0001c2d8;\n        backref = false;\n        pcVar6 = dfaexec(d,(char *)buf_start_offset,\n                         (char *)((int)&regarray->num_regs + buf_start_offset),true,(size_t *)0x0,\n                         &backref);\n        if (pcVar6 != (char *)0x0) {\n          uVar11 = new_regex->flags;\n          uVar8 = uVar11 & 4;\n          if (in_stack_00000018 == 0) goto LAB_0001c36d;\n          goto LAB_0001c2de;\n        }\n      }" { (expression_statement "_Var4 = dfaisfast(d);" (assignment_expression "_Var4 = dfaisfast(d)" identifier = (call_expression "dfaisfast(d)" identifier (argument_list "(d)" ( identifier )))) ;) (if_statement "if (!_Var4) goto LAB_0001c2d8;" if (parenthesized_expression "(!_Var4)" ( (unary_expression "!_Var4" ! identifier) )) (goto_statement "goto LAB_0001c2d8;" goto statement_identifier ;)) (expression_statement "backref = false;" (assignment_expression "backref = false" identifier = false) ;) (expression_statement "pcVar6 = dfaexec(d,(char *)buf_start_offset,\n                         (char *)((int)&regarray->num_regs + buf_start_offset),true,(size_t *)0x0,\n                         &backref);" (assignment_expression "pcVar6 = dfaexec(d,(char *)buf_start_offset,\n                         (char *)((int)&regarray->num_regs + buf_start_offset),true,(size_t *)0x0,\n                         &backref)" identifier = (call_expression "dfaexec(d,(char *)buf_start_offset,\n                         (char *)((int)&regarray->num_regs + buf_start_offset),true,(size_t *)0x0,\n                         &backref)" identifier (argument_list "(d,(char *)buf_start_offset,\n                         (char *)((int)&regarray->num_regs + buf_start_offset),true,(size_t *)0x0,\n                         &backref)" ( identifier , (cast_expression "(char *)buf_start_offset" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) , (cast_expression "(char *)((int)&regarray->num_regs + buf_start_offset)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&regarray->num_regs + buf_start_offset)" ( (binary_expression "(int)&regarray->num_regs + buf_start_offset" (cast_expression "(int)&regarray->num_regs" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&regarray->num_regs" & (field_expression "regarray->num_regs" identifier -> field_identifier))) + identifier) ))) , true , (cast_expression "(size_t *)0x0" ( (type_descriptor "size_t *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal) , (pointer_expression "&backref" & identifier) )))) ;) (if_statement "if (pcVar6 != (char *)0x0) {\n          uVar11 = new_regex->flags;\n          uVar8 = uVar11 & 4;\n          if (in_stack_00000018 == 0) goto LAB_0001c36d;\n          goto LAB_0001c2de;\n        }" if (parenthesized_expression "(pcVar6 != (char *)0x0)" ( (binary_expression "pcVar6 != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          uVar11 = new_regex->flags;\n          uVar8 = uVar11 & 4;\n          if (in_stack_00000018 == 0) goto LAB_0001c36d;\n          goto LAB_0001c2de;\n        }" { (expression_statement "uVar11 = new_regex->flags;" (assignment_expression "uVar11 = new_regex->flags" identifier = (field_expression "new_regex->flags" identifier -> field_identifier)) ;) (expression_statement "uVar8 = uVar11 & 4;" (assignment_expression "uVar8 = uVar11 & 4" identifier = (binary_expression "uVar11 & 4" identifier & number_literal)) ;) (if_statement "if (in_stack_00000018 == 0) goto LAB_0001c36d;" if (parenthesized_expression "(in_stack_00000018 == 0)" ( (binary_expression "in_stack_00000018 == 0" identifier == number_literal) )) (goto_statement "goto LAB_0001c36d;" goto statement_identifier ;)) (goto_statement "goto LAB_0001c2de;" goto statement_identifier ;) })) }))) }) (else_clause "else {\n      pcVar6 = dfaexec(d_00,(char *)buf_start_offset,\n                       (char *)((int)&regarray->num_regs + buf_start_offset),true,(size_t *)0x0,\n                       (_Bool *)0x0);\n      if (pcVar6 != (char *)0x0) {\n        uVar11 = new_regex->flags & 4;\n        if (in_stack_00000018 == 0) {\n          if (uVar11 != 0) goto LAB_0001c345;\n          goto LAB_0001c398;\n        }\n        if (uVar11 != 0) goto LAB_0001c100;\n        goto LAB_0001c2f2;\n      }\n    }" else (compound_statement "{\n      pcVar6 = dfaexec(d_00,(char *)buf_start_offset,\n                       (char *)((int)&regarray->num_regs + buf_start_offset),true,(size_t *)0x0,\n                       (_Bool *)0x0);\n      if (pcVar6 != (char *)0x0) {\n        uVar11 = new_regex->flags & 4;\n        if (in_stack_00000018 == 0) {\n          if (uVar11 != 0) goto LAB_0001c345;\n          goto LAB_0001c398;\n        }\n        if (uVar11 != 0) goto LAB_0001c100;\n        goto LAB_0001c2f2;\n      }\n    }" { (expression_statement "pcVar6 = dfaexec(d_00,(char *)buf_start_offset,\n                       (char *)((int)&regarray->num_regs + buf_start_offset),true,(size_t *)0x0,\n                       (_Bool *)0x0);" (assignment_expression "pcVar6 = dfaexec(d_00,(char *)buf_start_offset,\n                       (char *)((int)&regarray->num_regs + buf_start_offset),true,(size_t *)0x0,\n                       (_Bool *)0x0)" identifier = (call_expression "dfaexec(d_00,(char *)buf_start_offset,\n                       (char *)((int)&regarray->num_regs + buf_start_offset),true,(size_t *)0x0,\n                       (_Bool *)0x0)" identifier (argument_list "(d_00,(char *)buf_start_offset,\n                       (char *)((int)&regarray->num_regs + buf_start_offset),true,(size_t *)0x0,\n                       (_Bool *)0x0)" ( identifier , (cast_expression "(char *)buf_start_offset" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) , (cast_expression "(char *)((int)&regarray->num_regs + buf_start_offset)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&regarray->num_regs + buf_start_offset)" ( (binary_expression "(int)&regarray->num_regs + buf_start_offset" (cast_expression "(int)&regarray->num_regs" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&regarray->num_regs" & (field_expression "regarray->num_regs" identifier -> field_identifier))) + identifier) ))) , true , (cast_expression "(size_t *)0x0" ( (type_descriptor "size_t *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal) , (cast_expression "(_Bool *)0x0" ( (type_descriptor "_Bool *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) )))) ;) (if_statement "if (pcVar6 != (char *)0x0) {\n        uVar11 = new_regex->flags & 4;\n        if (in_stack_00000018 == 0) {\n          if (uVar11 != 0) goto LAB_0001c345;\n          goto LAB_0001c398;\n        }\n        if (uVar11 != 0) goto LAB_0001c100;\n        goto LAB_0001c2f2;\n      }" if (parenthesized_expression "(pcVar6 != (char *)0x0)" ( (binary_expression "pcVar6 != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        uVar11 = new_regex->flags & 4;\n        if (in_stack_00000018 == 0) {\n          if (uVar11 != 0) goto LAB_0001c345;\n          goto LAB_0001c398;\n        }\n        if (uVar11 != 0) goto LAB_0001c100;\n        goto LAB_0001c2f2;\n      }" { (expression_statement "uVar11 = new_regex->flags & 4;" (assignment_expression "uVar11 = new_regex->flags & 4" identifier = (binary_expression "new_regex->flags & 4" (field_expression "new_regex->flags" identifier -> field_identifier) & number_literal)) ;) (if_statement "if (in_stack_00000018 == 0) {\n          if (uVar11 != 0) goto LAB_0001c345;\n          goto LAB_0001c398;\n        }" if (parenthesized_expression "(in_stack_00000018 == 0)" ( (binary_expression "in_stack_00000018 == 0" identifier == number_literal) )) (compound_statement "{\n          if (uVar11 != 0) goto LAB_0001c345;\n          goto LAB_0001c398;\n        }" { (if_statement "if (uVar11 != 0) goto LAB_0001c345;" if (parenthesized_expression "(uVar11 != 0)" ( (binary_expression "uVar11 != 0" identifier != number_literal) )) (goto_statement "goto LAB_0001c345;" goto statement_identifier ;)) (goto_statement "goto LAB_0001c398;" goto statement_identifier ;) })) (if_statement "if (uVar11 != 0) goto LAB_0001c100;" if (parenthesized_expression "(uVar11 != 0)" ( (binary_expression "uVar11 != 0" identifier != number_literal) )) (goto_statement "goto LAB_0001c100;" goto statement_identifier ;)) (goto_statement "goto LAB_0001c2f2;" goto statement_identifier ;) })) }))) (labeled_statement "LAB_0001c3a8:\n    uVar11 = 0;" statement_identifier : (expression_statement "uVar11 = 0;" (assignment_expression "uVar11 = 0" identifier = number_literal) ;)) }) (else_clause "else {\nLAB_0001c2d8:\n    uVar8 = new_regex->flags & 4;\nLAB_0001c2de:\n    if (uVar8 == 0) {\nLAB_0001c2e6:\n      if (in_stack_00000018 == 0) {\nLAB_0001c398:\n        local_40 = (re_registers *)0x0;\n      }\nLAB_0001c2f2:\n      pcVar12 = (char *)re_search((re_pattern_buffer *)new_regex,(char *)buf_start_offset,\n                                  (int)regarray,regsize,(int)regarray - regsize,local_40);\n    }\n    else {\nLAB_0001c100:\n      cVar1 = buffer_delimiter;\n      if (buffer_delimiter == '\n') goto LAB_0001c2e6;\n      pcVar6 = (char *)buf_start_offset;\n      if (regsize != 0) {\n        pvVar5 = memrchr((void *)buf_start_offset,(int)buffer_delimiter,regsize);\n        pcVar6 = (char *)((int)pvVar5 + 1);\n        if (pvVar5 == (void *)0x0) {\n          pcVar6 = (char *)buf_start_offset;\n        }\n      }\n      pcVar12 = (char *)(regsize + buf_start_offset);\n      __regs = (re_registers *)0x0;\n      if (in_stack_00000018 != 0) {\n        __regs = in_stack_00000014;\n      }\n      pvVar5 = (void *)((int)&regarray->num_regs + buf_start_offset);\n      while( true ) {\n        pvVar7 = rpl_memchr(pcVar6,(int)cVar1,(int)pvVar5 - (int)pcVar6);\n        if (pvVar7 == (void *)0x0) break;\n        pcVar12 = (char *)re_search((re_pattern_buffer *)new_regex,pcVar6,(int)pvVar7 - (int)pcVar6,\n                                    (int)pcVar12 - (int)pcVar6,(int)pvVar7 - (int)pcVar12,__regs);\n        if (-1 < (int)pcVar12) goto LAB_0001c1f7;\n        if (pvVar7 == pvVar5) goto LAB_0001c317;\n        pcVar12 = (char *)((int)pvVar7 + 1);\n        pcVar6 = pcVar12;\n        cVar1 = buffer_delimiter;\n      }\n      pcVar12 = (char *)re_search((re_pattern_buffer *)new_regex,pcVar6,(int)pvVar5 - (int)pcVar6,\n                                  (int)pcVar12 - (int)pcVar6,(int)pvVar5 - (int)pcVar12,__regs);\n      if (-1 < (int)pcVar12) {\nLAB_0001c1f7:\n        pcVar12 = pcVar6 + ((int)pcVar12 - buf_start_offset);\n        if ((in_stack_00000018 != 0) && (in_stack_00000014->num_regs != 0)) {\n          prVar9 = in_stack_00000014->start;\n          prVar10 = in_stack_00000014->end;\n          uVar11 = 0;\n          do {\n            while( true ) {\n              iVar3 = prVar9[uVar11];\n              if (-1 < iVar3) {\n                prVar9[uVar11] = (regoff_t)(pcVar6 + (iVar3 - buf_start_offset));\n              }\n              iVar3 = prVar10[uVar11];\n              if (iVar3 < 0) break;\n              prVar10[uVar11] = (regoff_t)(pcVar6 + (iVar3 - buf_start_offset));\n              uVar11 = uVar11 + 1;\n              if (in_stack_00000014->num_regs <= uVar11) goto LAB_0001c317;\n            }\n            uVar11 = uVar11 + 1;\n          } while (uVar11 < in_stack_00000014->num_regs);\n        }\n      }\n    }\nLAB_0001c317:\n    uVar11 = ~(uint)pcVar12 >> 0x1f;\n  }" else (compound_statement "{\nLAB_0001c2d8:\n    uVar8 = new_regex->flags & 4;\nLAB_0001c2de:\n    if (uVar8 == 0) {\nLAB_0001c2e6:\n      if (in_stack_00000018 == 0) {\nLAB_0001c398:\n        local_40 = (re_registers *)0x0;\n      }\nLAB_0001c2f2:\n      pcVar12 = (char *)re_search((re_pattern_buffer *)new_regex,(char *)buf_start_offset,\n                                  (int)regarray,regsize,(int)regarray - regsize,local_40);\n    }\n    else {\nLAB_0001c100:\n      cVar1 = buffer_delimiter;\n      if (buffer_delimiter == '\n') goto LAB_0001c2e6;\n      pcVar6 = (char *)buf_start_offset;\n      if (regsize != 0) {\n        pvVar5 = memrchr((void *)buf_start_offset,(int)buffer_delimiter,regsize);\n        pcVar6 = (char *)((int)pvVar5 + 1);\n        if (pvVar5 == (void *)0x0) {\n          pcVar6 = (char *)buf_start_offset;\n        }\n      }\n      pcVar12 = (char *)(regsize + buf_start_offset);\n      __regs = (re_registers *)0x0;\n      if (in_stack_00000018 != 0) {\n        __regs = in_stack_00000014;\n      }\n      pvVar5 = (void *)((int)&regarray->num_regs + buf_start_offset);\n      while( true ) {\n        pvVar7 = rpl_memchr(pcVar6,(int)cVar1,(int)pvVar5 - (int)pcVar6);\n        if (pvVar7 == (void *)0x0) break;\n        pcVar12 = (char *)re_search((re_pattern_buffer *)new_regex,pcVar6,(int)pvVar7 - (int)pcVar6,\n                                    (int)pcVar12 - (int)pcVar6,(int)pvVar7 - (int)pcVar12,__regs);\n        if (-1 < (int)pcVar12) goto LAB_0001c1f7;\n        if (pvVar7 == pvVar5) goto LAB_0001c317;\n        pcVar12 = (char *)((int)pvVar7 + 1);\n        pcVar6 = pcVar12;\n        cVar1 = buffer_delimiter;\n      }\n      pcVar12 = (char *)re_search((re_pattern_buffer *)new_regex,pcVar6,(int)pvVar5 - (int)pcVar6,\n                                  (int)pcVar12 - (int)pcVar6,(int)pvVar5 - (int)pcVar12,__regs);\n      if (-1 < (int)pcVar12) {\nLAB_0001c1f7:\n        pcVar12 = pcVar6 + ((int)pcVar12 - buf_start_offset);\n        if ((in_stack_00000018 != 0) && (in_stack_00000014->num_regs != 0)) {\n          prVar9 = in_stack_00000014->start;\n          prVar10 = in_stack_00000014->end;\n          uVar11 = 0;\n          do {\n            while( true ) {\n              iVar3 = prVar9[uVar11];\n              if (-1 < iVar3) {\n                prVar9[uVar11] = (regoff_t)(pcVar6 + (iVar3 - buf_start_offset));\n              }\n              iVar3 = prVar10[uVar11];\n              if (iVar3 < 0) break;\n              prVar10[uVar11] = (regoff_t)(pcVar6 + (iVar3 - buf_start_offset));\n              uVar11 = uVar11 + 1;\n              if (in_stack_00000014->num_regs <= uVar11) goto LAB_0001c317;\n            }\n            uVar11 = uVar11 + 1;\n          } while (uVar11 < in_stack_00000014->num_regs);\n        }\n      }\n    }\nLAB_0001c317:\n    uVar11 = ~(uint)pcVar12 >> 0x1f;\n  }" { (labeled_statement "LAB_0001c2d8:\n    uVar8 = new_regex->flags & 4;" statement_identifier : (expression_statement "uVar8 = new_regex->flags & 4;" (assignment_expression "uVar8 = new_regex->flags & 4" identifier = (binary_expression "new_regex->flags & 4" (field_expression "new_regex->flags" identifier -> field_identifier) & number_literal)) ;)) (labeled_statement "LAB_0001c2de:\n    if (uVar8 == 0) {\nLAB_0001c2e6:\n      if (in_stack_00000018 == 0) {\nLAB_0001c398:\n        local_40 = (re_registers *)0x0;\n      }\nLAB_0001c2f2:\n      pcVar12 = (char *)re_search((re_pattern_buffer *)new_regex,(char *)buf_start_offset,\n                                  (int)regarray,regsize,(int)regarray - regsize,local_40);\n    }\n    else {\nLAB_0001c100:\n      cVar1 = buffer_delimiter;\n      if (buffer_delimiter == '\n') goto LAB_0001c2e6;\n      pcVar6 = (char *)buf_start_offset;\n      if (regsize != 0) {\n        pvVar5 = memrchr((void *)buf_start_offset,(int)buffer_delimiter,regsize);\n        pcVar6 = (char *)((int)pvVar5 + 1);\n        if (pvVar5 == (void *)0x0) {\n          pcVar6 = (char *)buf_start_offset;\n        }\n      }\n      pcVar12 = (char *)(regsize + buf_start_offset);\n      __regs = (re_registers *)0x0;\n      if (in_stack_00000018 != 0) {\n        __regs = in_stack_00000014;\n      }\n      pvVar5 = (void *)((int)&regarray->num_regs + buf_start_offset);\n      while( true ) {\n        pvVar7 = rpl_memchr(pcVar6,(int)cVar1,(int)pvVar5 - (int)pcVar6);\n        if (pvVar7 == (void *)0x0) break;\n        pcVar12 = (char *)re_search((re_pattern_buffer *)new_regex,pcVar6,(int)pvVar7 - (int)pcVar6,\n                                    (int)pcVar12 - (int)pcVar6,(int)pvVar7 - (int)pcVar12,__regs);\n        if (-1 < (int)pcVar12) goto LAB_0001c1f7;\n        if (pvVar7 == pvVar5) goto LAB_0001c317;\n        pcVar12 = (char *)((int)pvVar7 + 1);\n        pcVar6 = pcVar12;\n        cVar1 = buffer_delimiter;\n      }\n      pcVar12 = (char *)re_search((re_pattern_buffer *)new_regex,pcVar6,(int)pvVar5 - (int)pcVar6,\n                                  (int)pcVar12 - (int)pcVar6,(int)pvVar5 - (int)pcVar12,__regs);\n      if (-1 < (int)pcVar12) {\nLAB_0001c1f7:\n        pcVar12 = pcVar6 + ((int)pcVar12 - buf_start_offset);\n        if ((in_stack_00000018 != 0) && (in_stack_00000014->num_regs != 0)) {\n          prVar9 = in_stack_00000014->start;\n          prVar10 = in_stack_00000014->end;\n          uVar11 = 0;\n          do {\n            while( true ) {\n              iVar3 = prVar9[uVar11];\n              if (-1 < iVar3) {\n                prVar9[uVar11] = (regoff_t)(pcVar6 + (iVar3 - buf_start_offset));\n              }\n              iVar3 = prVar10[uVar11];\n              if (iVar3 < 0) break;\n              prVar10[uVar11] = (regoff_t)(pcVar6 + (iVar3 - buf_start_offset));\n              uVar11 = uVar11 + 1;\n              if (in_stack_00000014->num_regs <= uVar11) goto LAB_0001c317;\n            }\n            uVar11 = uVar11 + 1;\n          } while (uVar11 < in_stack_00000014->num_regs);\n        }\n      }\n    }" statement_identifier : (if_statement "if (uVar8 == 0) {\nLAB_0001c2e6:\n      if (in_stack_00000018 == 0) {\nLAB_0001c398:\n        local_40 = (re_registers *)0x0;\n      }\nLAB_0001c2f2:\n      pcVar12 = (char *)re_search((re_pattern_buffer *)new_regex,(char *)buf_start_offset,\n                                  (int)regarray,regsize,(int)regarray - regsize,local_40);\n    }\n    else {\nLAB_0001c100:\n      cVar1 = buffer_delimiter;\n      if (buffer_delimiter == '\n') goto LAB_0001c2e6;\n      pcVar6 = (char *)buf_start_offset;\n      if (regsize != 0) {\n        pvVar5 = memrchr((void *)buf_start_offset,(int)buffer_delimiter,regsize);\n        pcVar6 = (char *)((int)pvVar5 + 1);\n        if (pvVar5 == (void *)0x0) {\n          pcVar6 = (char *)buf_start_offset;\n        }\n      }\n      pcVar12 = (char *)(regsize + buf_start_offset);\n      __regs = (re_registers *)0x0;\n      if (in_stack_00000018 != 0) {\n        __regs = in_stack_00000014;\n      }\n      pvVar5 = (void *)((int)&regarray->num_regs + buf_start_offset);\n      while( true ) {\n        pvVar7 = rpl_memchr(pcVar6,(int)cVar1,(int)pvVar5 - (int)pcVar6);\n        if (pvVar7 == (void *)0x0) break;\n        pcVar12 = (char *)re_search((re_pattern_buffer *)new_regex,pcVar6,(int)pvVar7 - (int)pcVar6,\n                                    (int)pcVar12 - (int)pcVar6,(int)pvVar7 - (int)pcVar12,__regs);\n        if (-1 < (int)pcVar12) goto LAB_0001c1f7;\n        if (pvVar7 == pvVar5) goto LAB_0001c317;\n        pcVar12 = (char *)((int)pvVar7 + 1);\n        pcVar6 = pcVar12;\n        cVar1 = buffer_delimiter;\n      }\n      pcVar12 = (char *)re_search((re_pattern_buffer *)new_regex,pcVar6,(int)pvVar5 - (int)pcVar6,\n                                  (int)pcVar12 - (int)pcVar6,(int)pvVar5 - (int)pcVar12,__regs);\n      if (-1 < (int)pcVar12) {\nLAB_0001c1f7:\n        pcVar12 = pcVar6 + ((int)pcVar12 - buf_start_offset);\n        if ((in_stack_00000018 != 0) && (in_stack_00000014->num_regs != 0)) {\n          prVar9 = in_stack_00000014->start;\n          prVar10 = in_stack_00000014->end;\n          uVar11 = 0;\n          do {\n            while( true ) {\n              iVar3 = prVar9[uVar11];\n              if (-1 < iVar3) {\n                prVar9[uVar11] = (regoff_t)(pcVar6 + (iVar3 - buf_start_offset));\n              }\n              iVar3 = prVar10[uVar11];\n              if (iVar3 < 0) break;\n              prVar10[uVar11] = (regoff_t)(pcVar6 + (iVar3 - buf_start_offset));\n              uVar11 = uVar11 + 1;\n              if (in_stack_00000014->num_regs <= uVar11) goto LAB_0001c317;\n            }\n            uVar11 = uVar11 + 1;\n          } while (uVar11 < in_stack_00000014->num_regs);\n        }\n      }\n    }" if (parenthesized_expression "(uVar8 == 0)" ( (binary_expression "uVar8 == 0" identifier == number_literal) )) (compound_statement "{\nLAB_0001c2e6:\n      if (in_stack_00000018 == 0) {\nLAB_0001c398:\n        local_40 = (re_registers *)0x0;\n      }\nLAB_0001c2f2:\n      pcVar12 = (char *)re_search((re_pattern_buffer *)new_regex,(char *)buf_start_offset,\n                                  (int)regarray,regsize,(int)regarray - regsize,local_40);\n    }" { (labeled_statement "LAB_0001c2e6:\n      if (in_stack_00000018 == 0) {\nLAB_0001c398:\n        local_40 = (re_registers *)0x0;\n      }" statement_identifier : (if_statement "if (in_stack_00000018 == 0) {\nLAB_0001c398:\n        local_40 = (re_registers *)0x0;\n      }" if (parenthesized_expression "(in_stack_00000018 == 0)" ( (binary_expression "in_stack_00000018 == 0" identifier == number_literal) )) (compound_statement "{\nLAB_0001c398:\n        local_40 = (re_registers *)0x0;\n      }" { (labeled_statement "LAB_0001c398:\n        local_40 = (re_registers *)0x0;" statement_identifier : (expression_statement "local_40 = (re_registers *)0x0;" (assignment_expression "local_40 = (re_registers *)0x0" identifier = (cast_expression "(re_registers *)0x0" ( (type_descriptor "re_registers *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;)) }))) (labeled_statement "LAB_0001c2f2:\n      pcVar12 = (char *)re_search((re_pattern_buffer *)new_regex,(char *)buf_start_offset,\n                                  (int)regarray,regsize,(int)regarray - regsize,local_40);" statement_identifier : (expression_statement "pcVar12 = (char *)re_search((re_pattern_buffer *)new_regex,(char *)buf_start_offset,\n                                  (int)regarray,regsize,(int)regarray - regsize,local_40);" (assignment_expression "pcVar12 = (char *)re_search((re_pattern_buffer *)new_regex,(char *)buf_start_offset,\n                                  (int)regarray,regsize,(int)regarray - regsize,local_40)" identifier = (cast_expression "(char *)re_search((re_pattern_buffer *)new_regex,(char *)buf_start_offset,\n                                  (int)regarray,regsize,(int)regarray - regsize,local_40)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "re_search((re_pattern_buffer *)new_regex,(char *)buf_start_offset,\n                                  (int)regarray,regsize,(int)regarray - regsize,local_40)" identifier (argument_list "((re_pattern_buffer *)new_regex,(char *)buf_start_offset,\n                                  (int)regarray,regsize,(int)regarray - regsize,local_40)" ( (cast_expression "(re_pattern_buffer *)new_regex" ( (type_descriptor "re_pattern_buffer *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) , (cast_expression "(char *)buf_start_offset" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) , (cast_expression "(int)regarray" ( (type_descriptor "int" primitive_type) ) identifier) , identifier , (binary_expression "(int)regarray - regsize" (cast_expression "(int)regarray" ( (type_descriptor "int" primitive_type) ) identifier) - identifier) , identifier ))))) ;)) }) (else_clause "else {\nLAB_0001c100:\n      cVar1 = buffer_delimiter;\n      if (buffer_delimiter == '\n') goto LAB_0001c2e6;\n      pcVar6 = (char *)buf_start_offset;\n      if (regsize != 0) {\n        pvVar5 = memrchr((void *)buf_start_offset,(int)buffer_delimiter,regsize);\n        pcVar6 = (char *)((int)pvVar5 + 1);\n        if (pvVar5 == (void *)0x0) {\n          pcVar6 = (char *)buf_start_offset;\n        }\n      }\n      pcVar12 = (char *)(regsize + buf_start_offset);\n      __regs = (re_registers *)0x0;\n      if (in_stack_00000018 != 0) {\n        __regs = in_stack_00000014;\n      }\n      pvVar5 = (void *)((int)&regarray->num_regs + buf_start_offset);\n      while( true ) {\n        pvVar7 = rpl_memchr(pcVar6,(int)cVar1,(int)pvVar5 - (int)pcVar6);\n        if (pvVar7 == (void *)0x0) break;\n        pcVar12 = (char *)re_search((re_pattern_buffer *)new_regex,pcVar6,(int)pvVar7 - (int)pcVar6,\n                                    (int)pcVar12 - (int)pcVar6,(int)pvVar7 - (int)pcVar12,__regs);\n        if (-1 < (int)pcVar12) goto LAB_0001c1f7;\n        if (pvVar7 == pvVar5) goto LAB_0001c317;\n        pcVar12 = (char *)((int)pvVar7 + 1);\n        pcVar6 = pcVar12;\n        cVar1 = buffer_delimiter;\n      }\n      pcVar12 = (char *)re_search((re_pattern_buffer *)new_regex,pcVar6,(int)pvVar5 - (int)pcVar6,\n                                  (int)pcVar12 - (int)pcVar6,(int)pvVar5 - (int)pcVar12,__regs);\n      if (-1 < (int)pcVar12) {\nLAB_0001c1f7:\n        pcVar12 = pcVar6 + ((int)pcVar12 - buf_start_offset);\n        if ((in_stack_00000018 != 0) && (in_stack_00000014->num_regs != 0)) {\n          prVar9 = in_stack_00000014->start;\n          prVar10 = in_stack_00000014->end;\n          uVar11 = 0;\n          do {\n            while( true ) {\n              iVar3 = prVar9[uVar11];\n              if (-1 < iVar3) {\n                prVar9[uVar11] = (regoff_t)(pcVar6 + (iVar3 - buf_start_offset));\n              }\n              iVar3 = prVar10[uVar11];\n              if (iVar3 < 0) break;\n              prVar10[uVar11] = (regoff_t)(pcVar6 + (iVar3 - buf_start_offset));\n              uVar11 = uVar11 + 1;\n              if (in_stack_00000014->num_regs <= uVar11) goto LAB_0001c317;\n            }\n            uVar11 = uVar11 + 1;\n          } while (uVar11 < in_stack_00000014->num_regs);\n        }\n      }\n    }" else (compound_statement "{\nLAB_0001c100:\n      cVar1 = buffer_delimiter;\n      if (buffer_delimiter == '\n') goto LAB_0001c2e6;\n      pcVar6 = (char *)buf_start_offset;\n      if (regsize != 0) {\n        pvVar5 = memrchr((void *)buf_start_offset,(int)buffer_delimiter,regsize);\n        pcVar6 = (char *)((int)pvVar5 + 1);\n        if (pvVar5 == (void *)0x0) {\n          pcVar6 = (char *)buf_start_offset;\n        }\n      }\n      pcVar12 = (char *)(regsize + buf_start_offset);\n      __regs = (re_registers *)0x0;\n      if (in_stack_00000018 != 0) {\n        __regs = in_stack_00000014;\n      }\n      pvVar5 = (void *)((int)&regarray->num_regs + buf_start_offset);\n      while( true ) {\n        pvVar7 = rpl_memchr(pcVar6,(int)cVar1,(int)pvVar5 - (int)pcVar6);\n        if (pvVar7 == (void *)0x0) break;\n        pcVar12 = (char *)re_search((re_pattern_buffer *)new_regex,pcVar6,(int)pvVar7 - (int)pcVar6,\n                                    (int)pcVar12 - (int)pcVar6,(int)pvVar7 - (int)pcVar12,__regs);\n        if (-1 < (int)pcVar12) goto LAB_0001c1f7;\n        if (pvVar7 == pvVar5) goto LAB_0001c317;\n        pcVar12 = (char *)((int)pvVar7 + 1);\n        pcVar6 = pcVar12;\n        cVar1 = buffer_delimiter;\n      }\n      pcVar12 = (char *)re_search((re_pattern_buffer *)new_regex,pcVar6,(int)pvVar5 - (int)pcVar6,\n                                  (int)pcVar12 - (int)pcVar6,(int)pvVar5 - (int)pcVar12,__regs);\n      if (-1 < (int)pcVar12) {\nLAB_0001c1f7:\n        pcVar12 = pcVar6 + ((int)pcVar12 - buf_start_offset);\n        if ((in_stack_00000018 != 0) && (in_stack_00000014->num_regs != 0)) {\n          prVar9 = in_stack_00000014->start;\n          prVar10 = in_stack_00000014->end;\n          uVar11 = 0;\n          do {\n            while( true ) {\n              iVar3 = prVar9[uVar11];\n              if (-1 < iVar3) {\n                prVar9[uVar11] = (regoff_t)(pcVar6 + (iVar3 - buf_start_offset));\n              }\n              iVar3 = prVar10[uVar11];\n              if (iVar3 < 0) break;\n              prVar10[uVar11] = (regoff_t)(pcVar6 + (iVar3 - buf_start_offset));\n              uVar11 = uVar11 + 1;\n              if (in_stack_00000014->num_regs <= uVar11) goto LAB_0001c317;\n            }\n            uVar11 = uVar11 + 1;\n          } while (uVar11 < in_stack_00000014->num_regs);\n        }\n      }\n    }" { (labeled_statement "LAB_0001c100:\n      cVar1 = buffer_delimiter;" statement_identifier : (expression_statement "cVar1 = buffer_delimiter;" (assignment_expression "cVar1 = buffer_delimiter" identifier = identifier) ;)) (if_statement "if (buffer_delimiter == '\n') goto LAB_0001c2e6;" if (parenthesized_expression "(buffer_delimiter == '\n')" ( (binary_expression "buffer_delimiter == '\n'" identifier == (char_literal "'\n'" ' escape_sequence ')) )) (goto_statement "goto LAB_0001c2e6;" goto statement_identifier ;)) (expression_statement "pcVar6 = (char *)buf_start_offset;" (assignment_expression "pcVar6 = (char *)buf_start_offset" identifier = (cast_expression "(char *)buf_start_offset" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) ;) (if_statement "if (regsize != 0) {\n        pvVar5 = memrchr((void *)buf_start_offset,(int)buffer_delimiter,regsize);\n        pcVar6 = (char *)((int)pvVar5 + 1);\n        if (pvVar5 == (void *)0x0) {\n          pcVar6 = (char *)buf_start_offset;\n        }\n      }" if (parenthesized_expression "(regsize != 0)" ( (binary_expression "regsize != 0" identifier != number_literal) )) (compound_statement "{\n        pvVar5 = memrchr((void *)buf_start_offset,(int)buffer_delimiter,regsize);\n        pcVar6 = (char *)((int)pvVar5 + 1);\n        if (pvVar5 == (void *)0x0) {\n          pcVar6 = (char *)buf_start_offset;\n        }\n      }" { (expression_statement "pvVar5 = memrchr((void *)buf_start_offset,(int)buffer_delimiter,regsize);" (assignment_expression "pvVar5 = memrchr((void *)buf_start_offset,(int)buffer_delimiter,regsize)" identifier = (call_expression "memrchr((void *)buf_start_offset,(int)buffer_delimiter,regsize)" identifier (argument_list "((void *)buf_start_offset,(int)buffer_delimiter,regsize)" ( (cast_expression "(void *)buf_start_offset" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) , (cast_expression "(int)buffer_delimiter" ( (type_descriptor "int" primitive_type) ) identifier) , identifier )))) ;) (expression_statement "pcVar6 = (char *)((int)pvVar5 + 1);" (assignment_expression "pcVar6 = (char *)((int)pvVar5 + 1)" identifier = (cast_expression "(char *)((int)pvVar5 + 1)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)pvVar5 + 1)" ( (binary_expression "(int)pvVar5 + 1" (cast_expression "(int)pvVar5" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (if_statement "if (pvVar5 == (void *)0x0) {\n          pcVar6 = (char *)buf_start_offset;\n        }" if (parenthesized_expression "(pvVar5 == (void *)0x0)" ( (binary_expression "pvVar5 == (void *)0x0" identifier == (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          pcVar6 = (char *)buf_start_offset;\n        }" { (expression_statement "pcVar6 = (char *)buf_start_offset;" (assignment_expression "pcVar6 = (char *)buf_start_offset" identifier = (cast_expression "(char *)buf_start_offset" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) ;) })) })) (expression_statement "pcVar12 = (char *)(regsize + buf_start_offset);" (assignment_expression "pcVar12 = (char *)(regsize + buf_start_offset)" identifier = (cast_expression "(char *)(regsize + buf_start_offset)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(regsize + buf_start_offset)" ( (binary_expression "regsize + buf_start_offset" identifier + identifier) )))) ;) (expression_statement "__regs = (re_registers *)0x0;" (assignment_expression "__regs = (re_registers *)0x0" identifier = (cast_expression "(re_registers *)0x0" ( (type_descriptor "re_registers *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (if_statement "if (in_stack_00000018 != 0) {\n        __regs = in_stack_00000014;\n      }" if (parenthesized_expression "(in_stack_00000018 != 0)" ( (binary_expression "in_stack_00000018 != 0" identifier != number_literal) )) (compound_statement "{\n        __regs = in_stack_00000014;\n      }" { (expression_statement "__regs = in_stack_00000014;" (assignment_expression "__regs = in_stack_00000014" identifier = identifier) ;) })) (expression_statement "pvVar5 = (void *)((int)&regarray->num_regs + buf_start_offset);" (assignment_expression "pvVar5 = (void *)((int)&regarray->num_regs + buf_start_offset)" identifier = (cast_expression "(void *)((int)&regarray->num_regs + buf_start_offset)" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&regarray->num_regs + buf_start_offset)" ( (binary_expression "(int)&regarray->num_regs + buf_start_offset" (cast_expression "(int)&regarray->num_regs" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&regarray->num_regs" & (field_expression "regarray->num_regs" identifier -> field_identifier))) + identifier) )))) ;) (while_statement "while( true ) {\n        pvVar7 = rpl_memchr(pcVar6,(int)cVar1,(int)pvVar5 - (int)pcVar6);\n        if (pvVar7 == (void *)0x0) break;\n        pcVar12 = (char *)re_search((re_pattern_buffer *)new_regex,pcVar6,(int)pvVar7 - (int)pcVar6,\n                                    (int)pcVar12 - (int)pcVar6,(int)pvVar7 - (int)pcVar12,__regs);\n        if (-1 < (int)pcVar12) goto LAB_0001c1f7;\n        if (pvVar7 == pvVar5) goto LAB_0001c317;\n        pcVar12 = (char *)((int)pvVar7 + 1);\n        pcVar6 = pcVar12;\n        cVar1 = buffer_delimiter;\n      }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n        pvVar7 = rpl_memchr(pcVar6,(int)cVar1,(int)pvVar5 - (int)pcVar6);\n        if (pvVar7 == (void *)0x0) break;\n        pcVar12 = (char *)re_search((re_pattern_buffer *)new_regex,pcVar6,(int)pvVar7 - (int)pcVar6,\n                                    (int)pcVar12 - (int)pcVar6,(int)pvVar7 - (int)pcVar12,__regs);\n        if (-1 < (int)pcVar12) goto LAB_0001c1f7;\n        if (pvVar7 == pvVar5) goto LAB_0001c317;\n        pcVar12 = (char *)((int)pvVar7 + 1);\n        pcVar6 = pcVar12;\n        cVar1 = buffer_delimiter;\n      }" { (expression_statement "pvVar7 = rpl_memchr(pcVar6,(int)cVar1,(int)pvVar5 - (int)pcVar6);" (assignment_expression "pvVar7 = rpl_memchr(pcVar6,(int)cVar1,(int)pvVar5 - (int)pcVar6)" identifier = (call_expression "rpl_memchr(pcVar6,(int)cVar1,(int)pvVar5 - (int)pcVar6)" identifier (argument_list "(pcVar6,(int)cVar1,(int)pvVar5 - (int)pcVar6)" ( identifier , (cast_expression "(int)cVar1" ( (type_descriptor "int" primitive_type) ) identifier) , (binary_expression "(int)pvVar5 - (int)pcVar6" (cast_expression "(int)pvVar5" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)pcVar6" ( (type_descriptor "int" primitive_type) ) identifier)) )))) ;) (if_statement "if (pvVar7 == (void *)0x0) break;" if (parenthesized_expression "(pvVar7 == (void *)0x0)" ( (binary_expression "pvVar7 == (void *)0x0" identifier == (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (break_statement "break;" break ;)) (expression_statement "pcVar12 = (char *)re_search((re_pattern_buffer *)new_regex,pcVar6,(int)pvVar7 - (int)pcVar6,\n                                    (int)pcVar12 - (int)pcVar6,(int)pvVar7 - (int)pcVar12,__regs);" (assignment_expression "pcVar12 = (char *)re_search((re_pattern_buffer *)new_regex,pcVar6,(int)pvVar7 - (int)pcVar6,\n                                    (int)pcVar12 - (int)pcVar6,(int)pvVar7 - (int)pcVar12,__regs)" identifier = (cast_expression "(char *)re_search((re_pattern_buffer *)new_regex,pcVar6,(int)pvVar7 - (int)pcVar6,\n                                    (int)pcVar12 - (int)pcVar6,(int)pvVar7 - (int)pcVar12,__regs)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "re_search((re_pattern_buffer *)new_regex,pcVar6,(int)pvVar7 - (int)pcVar6,\n                                    (int)pcVar12 - (int)pcVar6,(int)pvVar7 - (int)pcVar12,__regs)" identifier (argument_list "((re_pattern_buffer *)new_regex,pcVar6,(int)pvVar7 - (int)pcVar6,\n                                    (int)pcVar12 - (int)pcVar6,(int)pvVar7 - (int)pcVar12,__regs)" ( (cast_expression "(re_pattern_buffer *)new_regex" ( (type_descriptor "re_pattern_buffer *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) , identifier , (binary_expression "(int)pvVar7 - (int)pcVar6" (cast_expression "(int)pvVar7" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)pcVar6" ( (type_descriptor "int" primitive_type) ) identifier)) , (binary_expression "(int)pcVar12 - (int)pcVar6" (cast_expression "(int)pcVar12" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)pcVar6" ( (type_descriptor "int" primitive_type) ) identifier)) , (binary_expression "(int)pvVar7 - (int)pcVar12" (cast_expression "(int)pvVar7" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)pcVar12" ( (type_descriptor "int" primitive_type) ) identifier)) , identifier ))))) ;) (if_statement "if (-1 < (int)pcVar12) goto LAB_0001c1f7;" if (parenthesized_expression "(-1 < (int)pcVar12)" ( (binary_expression "-1 < (int)pcVar12" number_literal < (cast_expression "(int)pcVar12" ( (type_descriptor "int" primitive_type) ) identifier)) )) (goto_statement "goto LAB_0001c1f7;" goto statement_identifier ;)) (if_statement "if (pvVar7 == pvVar5) goto LAB_0001c317;" if (parenthesized_expression "(pvVar7 == pvVar5)" ( (binary_expression "pvVar7 == pvVar5" identifier == identifier) )) (goto_statement "goto LAB_0001c317;" goto statement_identifier ;)) (expression_statement "pcVar12 = (char *)((int)pvVar7 + 1);" (assignment_expression "pcVar12 = (char *)((int)pvVar7 + 1)" identifier = (cast_expression "(char *)((int)pvVar7 + 1)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)pvVar7 + 1)" ( (binary_expression "(int)pvVar7 + 1" (cast_expression "(int)pvVar7" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (expression_statement "pcVar6 = pcVar12;" (assignment_expression "pcVar6 = pcVar12" identifier = identifier) ;) (expression_statement "cVar1 = buffer_delimiter;" (assignment_expression "cVar1 = buffer_delimiter" identifier = identifier) ;) })) (expression_statement "pcVar12 = (char *)re_search((re_pattern_buffer *)new_regex,pcVar6,(int)pvVar5 - (int)pcVar6,\n                                  (int)pcVar12 - (int)pcVar6,(int)pvVar5 - (int)pcVar12,__regs);" (assignment_expression "pcVar12 = (char *)re_search((re_pattern_buffer *)new_regex,pcVar6,(int)pvVar5 - (int)pcVar6,\n                                  (int)pcVar12 - (int)pcVar6,(int)pvVar5 - (int)pcVar12,__regs)" identifier = (cast_expression "(char *)re_search((re_pattern_buffer *)new_regex,pcVar6,(int)pvVar5 - (int)pcVar6,\n                                  (int)pcVar12 - (int)pcVar6,(int)pvVar5 - (int)pcVar12,__regs)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "re_search((re_pattern_buffer *)new_regex,pcVar6,(int)pvVar5 - (int)pcVar6,\n                                  (int)pcVar12 - (int)pcVar6,(int)pvVar5 - (int)pcVar12,__regs)" identifier (argument_list "((re_pattern_buffer *)new_regex,pcVar6,(int)pvVar5 - (int)pcVar6,\n                                  (int)pcVar12 - (int)pcVar6,(int)pvVar5 - (int)pcVar12,__regs)" ( (cast_expression "(re_pattern_buffer *)new_regex" ( (type_descriptor "re_pattern_buffer *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) , identifier , (binary_expression "(int)pvVar5 - (int)pcVar6" (cast_expression "(int)pvVar5" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)pcVar6" ( (type_descriptor "int" primitive_type) ) identifier)) , (binary_expression "(int)pcVar12 - (int)pcVar6" (cast_expression "(int)pcVar12" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)pcVar6" ( (type_descriptor "int" primitive_type) ) identifier)) , (binary_expression "(int)pvVar5 - (int)pcVar12" (cast_expression "(int)pvVar5" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)pcVar12" ( (type_descriptor "int" primitive_type) ) identifier)) , identifier ))))) ;) (if_statement "if (-1 < (int)pcVar12) {\nLAB_0001c1f7:\n        pcVar12 = pcVar6 + ((int)pcVar12 - buf_start_offset);\n        if ((in_stack_00000018 != 0) && (in_stack_00000014->num_regs != 0)) {\n          prVar9 = in_stack_00000014->start;\n          prVar10 = in_stack_00000014->end;\n          uVar11 = 0;\n          do {\n            while( true ) {\n              iVar3 = prVar9[uVar11];\n              if (-1 < iVar3) {\n                prVar9[uVar11] = (regoff_t)(pcVar6 + (iVar3 - buf_start_offset));\n              }\n              iVar3 = prVar10[uVar11];\n              if (iVar3 < 0) break;\n              prVar10[uVar11] = (regoff_t)(pcVar6 + (iVar3 - buf_start_offset));\n              uVar11 = uVar11 + 1;\n              if (in_stack_00000014->num_regs <= uVar11) goto LAB_0001c317;\n            }\n            uVar11 = uVar11 + 1;\n          } while (uVar11 < in_stack_00000014->num_regs);\n        }\n      }" if (parenthesized_expression "(-1 < (int)pcVar12)" ( (binary_expression "-1 < (int)pcVar12" number_literal < (cast_expression "(int)pcVar12" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\nLAB_0001c1f7:\n        pcVar12 = pcVar6 + ((int)pcVar12 - buf_start_offset);\n        if ((in_stack_00000018 != 0) && (in_stack_00000014->num_regs != 0)) {\n          prVar9 = in_stack_00000014->start;\n          prVar10 = in_stack_00000014->end;\n          uVar11 = 0;\n          do {\n            while( true ) {\n              iVar3 = prVar9[uVar11];\n              if (-1 < iVar3) {\n                prVar9[uVar11] = (regoff_t)(pcVar6 + (iVar3 - buf_start_offset));\n              }\n              iVar3 = prVar10[uVar11];\n              if (iVar3 < 0) break;\n              prVar10[uVar11] = (regoff_t)(pcVar6 + (iVar3 - buf_start_offset));\n              uVar11 = uVar11 + 1;\n              if (in_stack_00000014->num_regs <= uVar11) goto LAB_0001c317;\n            }\n            uVar11 = uVar11 + 1;\n          } while (uVar11 < in_stack_00000014->num_regs);\n        }\n      }" { (labeled_statement "LAB_0001c1f7:\n        pcVar12 = pcVar6 + ((int)pcVar12 - buf_start_offset);" statement_identifier : (expression_statement "pcVar12 = pcVar6 + ((int)pcVar12 - buf_start_offset);" (assignment_expression "pcVar12 = pcVar6 + ((int)pcVar12 - buf_start_offset)" identifier = (binary_expression "pcVar6 + ((int)pcVar12 - buf_start_offset)" identifier + (parenthesized_expression "((int)pcVar12 - buf_start_offset)" ( (binary_expression "(int)pcVar12 - buf_start_offset" (cast_expression "(int)pcVar12" ( (type_descriptor "int" primitive_type) ) identifier) - identifier) )))) ;)) (if_statement "if ((in_stack_00000018 != 0) && (in_stack_00000014->num_regs != 0)) {\n          prVar9 = in_stack_00000014->start;\n          prVar10 = in_stack_00000014->end;\n          uVar11 = 0;\n          do {\n            while( true ) {\n              iVar3 = prVar9[uVar11];\n              if (-1 < iVar3) {\n                prVar9[uVar11] = (regoff_t)(pcVar6 + (iVar3 - buf_start_offset));\n              }\n              iVar3 = prVar10[uVar11];\n              if (iVar3 < 0) break;\n              prVar10[uVar11] = (regoff_t)(pcVar6 + (iVar3 - buf_start_offset));\n              uVar11 = uVar11 + 1;\n              if (in_stack_00000014->num_regs <= uVar11) goto LAB_0001c317;\n            }\n            uVar11 = uVar11 + 1;\n          } while (uVar11 < in_stack_00000014->num_regs);\n        }" if (parenthesized_expression "((in_stack_00000018 != 0) && (in_stack_00000014->num_regs != 0))" ( (binary_expression "(in_stack_00000018 != 0) && (in_stack_00000014->num_regs != 0)" (parenthesized_expression "(in_stack_00000018 != 0)" ( (binary_expression "in_stack_00000018 != 0" identifier != number_literal) )) && (parenthesized_expression "(in_stack_00000014->num_regs != 0)" ( (binary_expression "in_stack_00000014->num_regs != 0" (field_expression "in_stack_00000014->num_regs" identifier -> field_identifier) != number_literal) ))) )) (compound_statement "{\n          prVar9 = in_stack_00000014->start;\n          prVar10 = in_stack_00000014->end;\n          uVar11 = 0;\n          do {\n            while( true ) {\n              iVar3 = prVar9[uVar11];\n              if (-1 < iVar3) {\n                prVar9[uVar11] = (regoff_t)(pcVar6 + (iVar3 - buf_start_offset));\n              }\n              iVar3 = prVar10[uVar11];\n              if (iVar3 < 0) break;\n              prVar10[uVar11] = (regoff_t)(pcVar6 + (iVar3 - buf_start_offset));\n              uVar11 = uVar11 + 1;\n              if (in_stack_00000014->num_regs <= uVar11) goto LAB_0001c317;\n            }\n            uVar11 = uVar11 + 1;\n          } while (uVar11 < in_stack_00000014->num_regs);\n        }" { (expression_statement "prVar9 = in_stack_00000014->start;" (assignment_expression "prVar9 = in_stack_00000014->start" identifier = (field_expression "in_stack_00000014->start" identifier -> field_identifier)) ;) (expression_statement "prVar10 = in_stack_00000014->end;" (assignment_expression "prVar10 = in_stack_00000014->end" identifier = (field_expression "in_stack_00000014->end" identifier -> field_identifier)) ;) (expression_statement "uVar11 = 0;" (assignment_expression "uVar11 = 0" identifier = number_literal) ;) (do_statement "do {\n            while( true ) {\n              iVar3 = prVar9[uVar11];\n              if (-1 < iVar3) {\n                prVar9[uVar11] = (regoff_t)(pcVar6 + (iVar3 - buf_start_offset));\n              }\n              iVar3 = prVar10[uVar11];\n              if (iVar3 < 0) break;\n              prVar10[uVar11] = (regoff_t)(pcVar6 + (iVar3 - buf_start_offset));\n              uVar11 = uVar11 + 1;\n              if (in_stack_00000014->num_regs <= uVar11) goto LAB_0001c317;\n            }\n            uVar11 = uVar11 + 1;\n          } while (uVar11 < in_stack_00000014->num_regs);" do (compound_statement "{\n            while( true ) {\n              iVar3 = prVar9[uVar11];\n              if (-1 < iVar3) {\n                prVar9[uVar11] = (regoff_t)(pcVar6 + (iVar3 - buf_start_offset));\n              }\n              iVar3 = prVar10[uVar11];\n              if (iVar3 < 0) break;\n              prVar10[uVar11] = (regoff_t)(pcVar6 + (iVar3 - buf_start_offset));\n              uVar11 = uVar11 + 1;\n              if (in_stack_00000014->num_regs <= uVar11) goto LAB_0001c317;\n            }\n            uVar11 = uVar11 + 1;\n          }" { (while_statement "while( true ) {\n              iVar3 = prVar9[uVar11];\n              if (-1 < iVar3) {\n                prVar9[uVar11] = (regoff_t)(pcVar6 + (iVar3 - buf_start_offset));\n              }\n              iVar3 = prVar10[uVar11];\n              if (iVar3 < 0) break;\n              prVar10[uVar11] = (regoff_t)(pcVar6 + (iVar3 - buf_start_offset));\n              uVar11 = uVar11 + 1;\n              if (in_stack_00000014->num_regs <= uVar11) goto LAB_0001c317;\n            }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n              iVar3 = prVar9[uVar11];\n              if (-1 < iVar3) {\n                prVar9[uVar11] = (regoff_t)(pcVar6 + (iVar3 - buf_start_offset));\n              }\n              iVar3 = prVar10[uVar11];\n              if (iVar3 < 0) break;\n              prVar10[uVar11] = (regoff_t)(pcVar6 + (iVar3 - buf_start_offset));\n              uVar11 = uVar11 + 1;\n              if (in_stack_00000014->num_regs <= uVar11) goto LAB_0001c317;\n            }" { (expression_statement "iVar3 = prVar9[uVar11];" (assignment_expression "iVar3 = prVar9[uVar11]" identifier = (subscript_expression "prVar9[uVar11]" identifier [ identifier ])) ;) (if_statement "if (-1 < iVar3) {\n                prVar9[uVar11] = (regoff_t)(pcVar6 + (iVar3 - buf_start_offset));\n              }" if (parenthesized_expression "(-1 < iVar3)" ( (binary_expression "-1 < iVar3" number_literal < identifier) )) (compound_statement "{\n                prVar9[uVar11] = (regoff_t)(pcVar6 + (iVar3 - buf_start_offset));\n              }" { (expression_statement "prVar9[uVar11] = (regoff_t)(pcVar6 + (iVar3 - buf_start_offset));" (assignment_expression "prVar9[uVar11] = (regoff_t)(pcVar6 + (iVar3 - buf_start_offset))" (subscript_expression "prVar9[uVar11]" identifier [ identifier ]) = (call_expression "(regoff_t)(pcVar6 + (iVar3 - buf_start_offset))" (parenthesized_expression "(regoff_t)" ( identifier )) (argument_list "(pcVar6 + (iVar3 - buf_start_offset))" ( (binary_expression "pcVar6 + (iVar3 - buf_start_offset)" identifier + (parenthesized_expression "(iVar3 - buf_start_offset)" ( (binary_expression "iVar3 - buf_start_offset" identifier - identifier) ))) )))) ;) })) (expression_statement "iVar3 = prVar10[uVar11];" (assignment_expression "iVar3 = prVar10[uVar11]" identifier = (subscript_expression "prVar10[uVar11]" identifier [ identifier ])) ;) (if_statement "if (iVar3 < 0) break;" if (parenthesized_expression "(iVar3 < 0)" ( (binary_expression "iVar3 < 0" identifier < number_literal) )) (break_statement "break;" break ;)) (expression_statement "prVar10[uVar11] = (regoff_t)(pcVar6 + (iVar3 - buf_start_offset));" (assignment_expression "prVar10[uVar11] = (regoff_t)(pcVar6 + (iVar3 - buf_start_offset))" (subscript_expression "prVar10[uVar11]" identifier [ identifier ]) = (call_expression "(regoff_t)(pcVar6 + (iVar3 - buf_start_offset))" (parenthesized_expression "(regoff_t)" ( identifier )) (argument_list "(pcVar6 + (iVar3 - buf_start_offset))" ( (binary_expression "pcVar6 + (iVar3 - buf_start_offset)" identifier + (parenthesized_expression "(iVar3 - buf_start_offset)" ( (binary_expression "iVar3 - buf_start_offset" identifier - identifier) ))) )))) ;) (expression_statement "uVar11 = uVar11 + 1;" (assignment_expression "uVar11 = uVar11 + 1" identifier = (binary_expression "uVar11 + 1" identifier + number_literal)) ;) (if_statement "if (in_stack_00000014->num_regs <= uVar11) goto LAB_0001c317;" if (parenthesized_expression "(in_stack_00000014->num_regs <= uVar11)" ( (binary_expression "in_stack_00000014->num_regs <= uVar11" (field_expression "in_stack_00000014->num_regs" identifier -> field_identifier) <= identifier) )) (goto_statement "goto LAB_0001c317;" goto statement_identifier ;)) })) (expression_statement "uVar11 = uVar11 + 1;" (assignment_expression "uVar11 = uVar11 + 1" identifier = (binary_expression "uVar11 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar11 < in_stack_00000014->num_regs)" ( (binary_expression "uVar11 < in_stack_00000014->num_regs" identifier < (field_expression "in_stack_00000014->num_regs" identifier -> field_identifier)) )) ;) })) })) })))) (labeled_statement "LAB_0001c317:\n    uVar11 = ~(uint)pcVar12 >> 0x1f;" statement_identifier : (expression_statement "uVar11 = ~(uint)pcVar12 >> 0x1f;" (assignment_expression "uVar11 = ~(uint)pcVar12 >> 0x1f" identifier = (binary_expression "~(uint)pcVar12 >> 0x1f" (unary_expression "~(uint)pcVar12" ~ (cast_expression "(uint)pcVar12" ( (type_descriptor "uint" type_identifier) ) identifier)) >> number_literal)) ;)) }))) (labeled_statement "LAB_0001c07a:\n  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    /* WARNING: Subroutine does not return */\n    __stack_chk_fail_local();\n  }" statement_identifier : (if_statement "if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    /* WARNING: Subroutine does not return */\n    __stack_chk_fail_local();\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    __stack_chk_fail_local();\n  }" { comment (expression_statement "__stack_chk_fail_local();" (call_expression "__stack_chk_fail_local()" identifier (argument_list "()" ( ))) ;) }))) (return_statement "return uVar11;" return identifier ;) })))
(translation_unit "uint __regparm2\nFUN_0001bf50(undefined4 param_1,undefined4 param_2,re_pattern_buffer *param_3,char *param_4,\n            uint param_5,uint param_6,re_registers *param_7,int param_8)\n\n{\n  ulong uVar1;\n  regoff_t *prVar2;\n  reg_syntax_t rVar3;\n  re_pattern_buffer *__preg;\n  char cVar4;\n  int iVar5;\n  void *pvVar6;\n  re_registers *__regs;\n  char *pcVar7;\n  uint uVar8;\n  regoff_t *prVar10;\n  uint *puVar11;\n  undefined4 uVar12;\n  uint *puVar13;\n  char *pcVar14;\n  uint uVar15;\n  char *pcVar16;\n  char *__string;\n  int in_GS_OFFSET;\n  re_registers *local_40;\n  char local_21;\n  int local_20;\n  undefined4 uStack_14;\n  uchar *puVar9;\n  \n  uStack_14 = 0x1bf59;\n  local_40 = param_7;\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  if (param_3 == (re_pattern_buffer *)0x0) {\n    if (DAT_0003940c == (re_pattern_buffer *)0x0) {\n      uVar12 = dcgettext(0,"no previous regular expression",5,param_2);\n                    \n      FUN_000131f0(uVar12);\n    }\n  }\n  else {\n    DAT_0003940c = param_3;\n  }\n  __preg = DAT_0003940c;\n  if (0x7ffffffe < param_5) {\n    uVar12 = dcgettext(0,"regex input buffer length larger than INT_MAX",5,0);\n                    \n    FUN_0001c8c0(uVar12);\n  }\n  if (((DAT_0003940c->field_0x1c & 0x10) != 0) && (param_8 != 0)) {\n    if (DAT_0003940c[1].used != 0) {\n      FUN_000245c0(DAT_0003940c[1].used);\n      free((void *)__preg[1].used);\n      __preg[1].used = 0;\n    }\n    regfree(__preg);\n    FUN_0001bbc0();\n  }\n  rVar3 = __preg[1].syntax;\n  __preg->field_0x1c = __preg->field_0x1c & 0xf9 | 2;\n  if ((short)rVar3 != 0) {\n    if (*(char *)((int)&__preg[1].syntax + 1) == '\0') {\n      if (param_6 != 0) {\n        if (((uint)__preg[1].buffer & 4) == 0) goto LAB_0001c3a8;\n        if (param_4[param_6 - 1] != DAT_00039240) {\n          iVar5 = FUN_0002b7a0(param_4 + param_6,(int)DAT_00039240,param_5 - param_6);\n          if (iVar5 == 0) goto LAB_0001c3a8;\n          param_6 = (iVar5 - (int)param_4) + 1;\n        }\n      }\n    }\n    else if (((uint)__preg[1].buffer & 4) == 0) {\n      param_6 = param_5;\n    }\n    else {\n      iVar5 = FUN_0002b7a0(param_4 + param_6,(int)DAT_00039240,param_5 - param_6);\n      param_6 = iVar5 - (int)param_4;\n      if (iVar5 == 0) {\n        param_6 = param_5;\n      }\n    }\n    if (param_8 != 0) {\n      puVar13 = (uint *)param_7->start;\n      if (puVar13 == (uint *)0x0) {\n        prVar10 = (regoff_t *)FUN_00029ec0(1,4);\n        param_7->start = prVar10;\n        puVar11 = (uint *)FUN_00029ec0(1,4);\n        param_7->num_regs = 1;\n        puVar13 = (uint *)param_7->start;\n        param_7->end = (regoff_t *)puVar11;\n      }\n      else {\n        puVar11 = (uint *)param_7->end;\n      }\n      *puVar13 = param_6;\n      *puVar11 = param_6;\n      if (1 < param_7->num_regs) {\n        uVar15 = 1;\n        do {\n          puVar11[uVar15] = 0xffffffff;\n          puVar13[uVar15] = 0xffffffff;\n          uVar15 = uVar15 + 1;\n        } while (uVar15 < param_7->num_regs);\n      }\n    }\n    uVar15 = 1;\n    goto LAB_0001c07a;\n  }\n  if (param_6 == 0) {\n    uVar1 = __preg[1].used;\n    iVar5 = FUN_000245a0(uVar1);\n    if (iVar5 == 0) {\n      if ((param_8 == 0) && (((uint)__preg[1].buffer & 4) != 0)) {\nLAB_0001c345:\n        local_21 = '\0';\n        iVar5 = FUN_00024580(__preg[1].used,param_4,param_4 + param_5,1,0,&local_21);\n        if (iVar5 != 0) {\n          puVar9 = __preg[1].buffer;\nLAB_0001c36d:\n          uVar8 = (uint)puVar9 & 4;\n          if (uVar8 == 0) goto LAB_0001c398;\n          uVar15 = 1;\n          if (local_21 == '\0') goto LAB_0001c07a;\n          goto LAB_0001c2de;\n        }\n      }\n      else {\n        cVar4 = FUN_000245b0(uVar1);\n        if (cVar4 == '\0') goto LAB_0001c2d8;\n        local_21 = '\0';\n        iVar5 = FUN_00024580(uVar1,param_4,param_4 + param_5,1,0,&local_21);\n        if (iVar5 != 0) {\n          puVar9 = __preg[1].buffer;\n          uVar8 = (uint)puVar9 & 4;\n          if (param_8 == 0) goto LAB_0001c36d;\n          goto LAB_0001c2de;\n        }\n      }\n    }\n    else {\n      iVar5 = FUN_00024580(iVar5,param_4,param_4 + param_5,1,0,0);\n      if (iVar5 != 0) {\n        uVar15 = (uint)__preg[1].buffer & 4;\n        if (param_8 == 0) {\n          if (uVar15 != 0) goto LAB_0001c345;\n          goto LAB_0001c398;\n        }\n        if (uVar15 != 0) goto LAB_0001c100;\n        goto LAB_0001c2f2;\n      }\n    }\nLAB_0001c3a8:\n    uVar15 = 0;\n  }\n  else {\nLAB_0001c2d8:\n    uVar8 = (uint)__preg[1].buffer & 4;\nLAB_0001c2de:\n    if (uVar8 == 0) {\nLAB_0001c2e6:\n      if (param_8 == 0) {\nLAB_0001c398:\n        local_40 = (re_registers *)0x0;\n      }\nLAB_0001c2f2:\n      pcVar16 = (char *)re_search(__preg,param_4,param_5,param_6,param_5 - param_6,local_40);\n    }\n    else {\nLAB_0001c100:\n      cVar4 = DAT_00039240;\n      if (DAT_00039240 == '\n') goto LAB_0001c2e6;\n      __string = param_4;\n      if (param_6 != 0) {\n        pvVar6 = memrchr(param_4,(int)DAT_00039240,param_6);\n        __string = (char *)((int)pvVar6 + 1);\n        if (pvVar6 == (void *)0x0) {\n          __string = param_4;\n        }\n      }\n      pcVar16 = param_4 + param_6;\n      __regs = (re_registers *)0x0;\n      if (param_8 != 0) {\n        __regs = param_7;\n      }\n      pcVar14 = param_4 + param_5;\n      while( true ) {\n        pcVar7 = (char *)FUN_0002b7a0(__string,(int)cVar4,(int)pcVar14 - (int)__string);\n        if (pcVar7 == (char *)0x0) break;\n        pcVar16 = (char *)re_search(__preg,__string,(int)pcVar7 - (int)__string,\n                                    (int)pcVar16 - (int)__string,(int)pcVar7 - (int)pcVar16,__regs);\n        if (-1 < (int)pcVar16) goto LAB_0001c1f7;\n        if (pcVar7 == pcVar14) goto LAB_0001c317;\n        pcVar16 = pcVar7 + 1;\n        __string = pcVar16;\n        cVar4 = DAT_00039240;\n      }\n      pcVar16 = (char *)re_search(__preg,__string,(int)pcVar14 - (int)__string,\n                                  (int)pcVar16 - (int)__string,(int)pcVar14 - (int)pcVar16,__regs);\n      if (-1 < (int)pcVar16) {\nLAB_0001c1f7:\n        pcVar16 = __string + ((int)pcVar16 - (int)param_4);\n        if ((param_8 != 0) && (param_7->num_regs != 0)) {\n          prVar10 = param_7->start;\n          prVar2 = param_7->end;\n          uVar15 = 0;\n          do {\n            while( true ) {\n              iVar5 = prVar10[uVar15];\n              if (-1 < iVar5) {\n                prVar10[uVar15] = (regoff_t)(__string + (iVar5 - (int)param_4));\n              }\n              iVar5 = prVar2[uVar15];\n              if (iVar5 < 0) break;\n              prVar2[uVar15] = (regoff_t)(__string + (iVar5 - (int)param_4));\n              uVar15 = uVar15 + 1;\n              if (param_7->num_regs <= uVar15) goto LAB_0001c317;\n            }\n            uVar15 = uVar15 + 1;\n          } while (uVar15 < param_7->num_regs);\n        }\n      }\n    }\nLAB_0001c317:\n    uVar15 = ~(uint)pcVar16 >> 0x1f;\n  }\nLAB_0001c07a:\n  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    \n    FUN_0002c430();\n  }\n  return uVar15;\n}\n\n" (function_definition "uint __regparm2\nFUN_0001bf50(undefined4 param_1,undefined4 param_2,re_pattern_buffer *param_3,char *param_4,\n            uint param_5,uint param_6,re_registers *param_7,int param_8)\n\n{\n  ulong uVar1;\n  regoff_t *prVar2;\n  reg_syntax_t rVar3;\n  re_pattern_buffer *__preg;\n  char cVar4;\n  int iVar5;\n  void *pvVar6;\n  re_registers *__regs;\n  char *pcVar7;\n  uint uVar8;\n  regoff_t *prVar10;\n  uint *puVar11;\n  undefined4 uVar12;\n  uint *puVar13;\n  char *pcVar14;\n  uint uVar15;\n  char *pcVar16;\n  char *__string;\n  int in_GS_OFFSET;\n  re_registers *local_40;\n  char local_21;\n  int local_20;\n  undefined4 uStack_14;\n  uchar *puVar9;\n  \n  uStack_14 = 0x1bf59;\n  local_40 = param_7;\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  if (param_3 == (re_pattern_buffer *)0x0) {\n    if (DAT_0003940c == (re_pattern_buffer *)0x0) {\n      uVar12 = dcgettext(0,"no previous regular expression",5,param_2);\n                    \n      FUN_000131f0(uVar12);\n    }\n  }\n  else {\n    DAT_0003940c = param_3;\n  }\n  __preg = DAT_0003940c;\n  if (0x7ffffffe < param_5) {\n    uVar12 = dcgettext(0,"regex input buffer length larger than INT_MAX",5,0);\n                    \n    FUN_0001c8c0(uVar12);\n  }\n  if (((DAT_0003940c->field_0x1c & 0x10) != 0) && (param_8 != 0)) {\n    if (DAT_0003940c[1].used != 0) {\n      FUN_000245c0(DAT_0003940c[1].used);\n      free((void *)__preg[1].used);\n      __preg[1].used = 0;\n    }\n    regfree(__preg);\n    FUN_0001bbc0();\n  }\n  rVar3 = __preg[1].syntax;\n  __preg->field_0x1c = __preg->field_0x1c & 0xf9 | 2;\n  if ((short)rVar3 != 0) {\n    if (*(char *)((int)&__preg[1].syntax + 1) == '\0') {\n      if (param_6 != 0) {\n        if (((uint)__preg[1].buffer & 4) == 0) goto LAB_0001c3a8;\n        if (param_4[param_6 - 1] != DAT_00039240) {\n          iVar5 = FUN_0002b7a0(param_4 + param_6,(int)DAT_00039240,param_5 - param_6);\n          if (iVar5 == 0) goto LAB_0001c3a8;\n          param_6 = (iVar5 - (int)param_4) + 1;\n        }\n      }\n    }\n    else if (((uint)__preg[1].buffer & 4) == 0) {\n      param_6 = param_5;\n    }\n    else {\n      iVar5 = FUN_0002b7a0(param_4 + param_6,(int)DAT_00039240,param_5 - param_6);\n      param_6 = iVar5 - (int)param_4;\n      if (iVar5 == 0) {\n        param_6 = param_5;\n      }\n    }\n    if (param_8 != 0) {\n      puVar13 = (uint *)param_7->start;\n      if (puVar13 == (uint *)0x0) {\n        prVar10 = (regoff_t *)FUN_00029ec0(1,4);\n        param_7->start = prVar10;\n        puVar11 = (uint *)FUN_00029ec0(1,4);\n        param_7->num_regs = 1;\n        puVar13 = (uint *)param_7->start;\n        param_7->end = (regoff_t *)puVar11;\n      }\n      else {\n        puVar11 = (uint *)param_7->end;\n      }\n      *puVar13 = param_6;\n      *puVar11 = param_6;\n      if (1 < param_7->num_regs) {\n        uVar15 = 1;\n        do {\n          puVar11[uVar15] = 0xffffffff;\n          puVar13[uVar15] = 0xffffffff;\n          uVar15 = uVar15 + 1;\n        } while (uVar15 < param_7->num_regs);\n      }\n    }\n    uVar15 = 1;\n    goto LAB_0001c07a;\n  }\n  if (param_6 == 0) {\n    uVar1 = __preg[1].used;\n    iVar5 = FUN_000245a0(uVar1);\n    if (iVar5 == 0) {\n      if ((param_8 == 0) && (((uint)__preg[1].buffer & 4) != 0)) {\nLAB_0001c345:\n        local_21 = '\0';\n        iVar5 = FUN_00024580(__preg[1].used,param_4,param_4 + param_5,1,0,&local_21);\n        if (iVar5 != 0) {\n          puVar9 = __preg[1].buffer;\nLAB_0001c36d:\n          uVar8 = (uint)puVar9 & 4;\n          if (uVar8 == 0) goto LAB_0001c398;\n          uVar15 = 1;\n          if (local_21 == '\0') goto LAB_0001c07a;\n          goto LAB_0001c2de;\n        }\n      }\n      else {\n        cVar4 = FUN_000245b0(uVar1);\n        if (cVar4 == '\0') goto LAB_0001c2d8;\n        local_21 = '\0';\n        iVar5 = FUN_00024580(uVar1,param_4,param_4 + param_5,1,0,&local_21);\n        if (iVar5 != 0) {\n          puVar9 = __preg[1].buffer;\n          uVar8 = (uint)puVar9 & 4;\n          if (param_8 == 0) goto LAB_0001c36d;\n          goto LAB_0001c2de;\n        }\n      }\n    }\n    else {\n      iVar5 = FUN_00024580(iVar5,param_4,param_4 + param_5,1,0,0);\n      if (iVar5 != 0) {\n        uVar15 = (uint)__preg[1].buffer & 4;\n        if (param_8 == 0) {\n          if (uVar15 != 0) goto LAB_0001c345;\n          goto LAB_0001c398;\n        }\n        if (uVar15 != 0) goto LAB_0001c100;\n        goto LAB_0001c2f2;\n      }\n    }\nLAB_0001c3a8:\n    uVar15 = 0;\n  }\n  else {\nLAB_0001c2d8:\n    uVar8 = (uint)__preg[1].buffer & 4;\nLAB_0001c2de:\n    if (uVar8 == 0) {\nLAB_0001c2e6:\n      if (param_8 == 0) {\nLAB_0001c398:\n        local_40 = (re_registers *)0x0;\n      }\nLAB_0001c2f2:\n      pcVar16 = (char *)re_search(__preg,param_4,param_5,param_6,param_5 - param_6,local_40);\n    }\n    else {\nLAB_0001c100:\n      cVar4 = DAT_00039240;\n      if (DAT_00039240 == '\n') goto LAB_0001c2e6;\n      __string = param_4;\n      if (param_6 != 0) {\n        pvVar6 = memrchr(param_4,(int)DAT_00039240,param_6);\n        __string = (char *)((int)pvVar6 + 1);\n        if (pvVar6 == (void *)0x0) {\n          __string = param_4;\n        }\n      }\n      pcVar16 = param_4 + param_6;\n      __regs = (re_registers *)0x0;\n      if (param_8 != 0) {\n        __regs = param_7;\n      }\n      pcVar14 = param_4 + param_5;\n      while( true ) {\n        pcVar7 = (char *)FUN_0002b7a0(__string,(int)cVar4,(int)pcVar14 - (int)__string);\n        if (pcVar7 == (char *)0x0) break;\n        pcVar16 = (char *)re_search(__preg,__string,(int)pcVar7 - (int)__string,\n                                    (int)pcVar16 - (int)__string,(int)pcVar7 - (int)pcVar16,__regs);\n        if (-1 < (int)pcVar16) goto LAB_0001c1f7;\n        if (pcVar7 == pcVar14) goto LAB_0001c317;\n        pcVar16 = pcVar7 + 1;\n        __string = pcVar16;\n        cVar4 = DAT_00039240;\n      }\n      pcVar16 = (char *)re_search(__preg,__string,(int)pcVar14 - (int)__string,\n                                  (int)pcVar16 - (int)__string,(int)pcVar14 - (int)pcVar16,__regs);\n      if (-1 < (int)pcVar16) {\nLAB_0001c1f7:\n        pcVar16 = __string + ((int)pcVar16 - (int)param_4);\n        if ((param_8 != 0) && (param_7->num_regs != 0)) {\n          prVar10 = param_7->start;\n          prVar2 = param_7->end;\n          uVar15 = 0;\n          do {\n            while( true ) {\n              iVar5 = prVar10[uVar15];\n              if (-1 < iVar5) {\n                prVar10[uVar15] = (regoff_t)(__string + (iVar5 - (int)param_4));\n              }\n              iVar5 = prVar2[uVar15];\n              if (iVar5 < 0) break;\n              prVar2[uVar15] = (regoff_t)(__string + (iVar5 - (int)param_4));\n              uVar15 = uVar15 + 1;\n              if (param_7->num_regs <= uVar15) goto LAB_0001c317;\n            }\n            uVar15 = uVar15 + 1;\n          } while (uVar15 < param_7->num_regs);\n        }\n      }\n    }\nLAB_0001c317:\n    uVar15 = ~(uint)pcVar16 >> 0x1f;\n  }\nLAB_0001c07a:\n  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    \n    FUN_0002c430();\n  }\n  return uVar15;\n}" type_identifier (ERROR "__regparm2" identifier) (function_declarator "FUN_0001bf50(undefined4 param_1,undefined4 param_2,re_pattern_buffer *param_3,char *param_4,\n            uint param_5,uint param_6,re_registers *param_7,int param_8)" identifier (parameter_list "(undefined4 param_1,undefined4 param_2,re_pattern_buffer *param_3,char *param_4,\n            uint param_5,uint param_6,re_registers *param_7,int param_8)" ( (parameter_declaration "undefined4 param_1" type_identifier identifier) , (parameter_declaration "undefined4 param_2" type_identifier identifier) , (parameter_declaration "re_pattern_buffer *param_3" type_identifier (pointer_declarator "*param_3" * identifier)) , (parameter_declaration "char *param_4" primitive_type (pointer_declarator "*param_4" * identifier)) , (parameter_declaration "uint param_5" type_identifier identifier) , (parameter_declaration "uint param_6" type_identifier identifier) , (parameter_declaration "re_registers *param_7" type_identifier (pointer_declarator "*param_7" * identifier)) , (parameter_declaration "int param_8" primitive_type identifier) ))) (compound_statement "{\n  ulong uVar1;\n  regoff_t *prVar2;\n  reg_syntax_t rVar3;\n  re_pattern_buffer *__preg;\n  char cVar4;\n  int iVar5;\n  void *pvVar6;\n  re_registers *__regs;\n  char *pcVar7;\n  uint uVar8;\n  regoff_t *prVar10;\n  uint *puVar11;\n  undefined4 uVar12;\n  uint *puVar13;\n  char *pcVar14;\n  uint uVar15;\n  char *pcVar16;\n  char *__string;\n  int in_GS_OFFSET;\n  re_registers *local_40;\n  char local_21;\n  int local_20;\n  undefined4 uStack_14;\n  uchar *puVar9;\n  \n  uStack_14 = 0x1bf59;\n  local_40 = param_7;\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  if (param_3 == (re_pattern_buffer *)0x0) {\n    if (DAT_0003940c == (re_pattern_buffer *)0x0) {\n      uVar12 = dcgettext(0,"no previous regular expression",5,param_2);\n                    \n      FUN_000131f0(uVar12);\n    }\n  }\n  else {\n    DAT_0003940c = param_3;\n  }\n  __preg = DAT_0003940c;\n  if (0x7ffffffe < param_5) {\n    uVar12 = dcgettext(0,"regex input buffer length larger than INT_MAX",5,0);\n                    \n    FUN_0001c8c0(uVar12);\n  }\n  if (((DAT_0003940c->field_0x1c & 0x10) != 0) && (param_8 != 0)) {\n    if (DAT_0003940c[1].used != 0) {\n      FUN_000245c0(DAT_0003940c[1].used);\n      free((void *)__preg[1].used);\n      __preg[1].used = 0;\n    }\n    regfree(__preg);\n    FUN_0001bbc0();\n  }\n  rVar3 = __preg[1].syntax;\n  __preg->field_0x1c = __preg->field_0x1c & 0xf9 | 2;\n  if ((short)rVar3 != 0) {\n    if (*(char *)((int)&__preg[1].syntax + 1) == '\0') {\n      if (param_6 != 0) {\n        if (((uint)__preg[1].buffer & 4) == 0) goto LAB_0001c3a8;\n        if (param_4[param_6 - 1] != DAT_00039240) {\n          iVar5 = FUN_0002b7a0(param_4 + param_6,(int)DAT_00039240,param_5 - param_6);\n          if (iVar5 == 0) goto LAB_0001c3a8;\n          param_6 = (iVar5 - (int)param_4) + 1;\n        }\n      }\n    }\n    else if (((uint)__preg[1].buffer & 4) == 0) {\n      param_6 = param_5;\n    }\n    else {\n      iVar5 = FUN_0002b7a0(param_4 + param_6,(int)DAT_00039240,param_5 - param_6);\n      param_6 = iVar5 - (int)param_4;\n      if (iVar5 == 0) {\n        param_6 = param_5;\n      }\n    }\n    if (param_8 != 0) {\n      puVar13 = (uint *)param_7->start;\n      if (puVar13 == (uint *)0x0) {\n        prVar10 = (regoff_t *)FUN_00029ec0(1,4);\n        param_7->start = prVar10;\n        puVar11 = (uint *)FUN_00029ec0(1,4);\n        param_7->num_regs = 1;\n        puVar13 = (uint *)param_7->start;\n        param_7->end = (regoff_t *)puVar11;\n      }\n      else {\n        puVar11 = (uint *)param_7->end;\n      }\n      *puVar13 = param_6;\n      *puVar11 = param_6;\n      if (1 < param_7->num_regs) {\n        uVar15 = 1;\n        do {\n          puVar11[uVar15] = 0xffffffff;\n          puVar13[uVar15] = 0xffffffff;\n          uVar15 = uVar15 + 1;\n        } while (uVar15 < param_7->num_regs);\n      }\n    }\n    uVar15 = 1;\n    goto LAB_0001c07a;\n  }\n  if (param_6 == 0) {\n    uVar1 = __preg[1].used;\n    iVar5 = FUN_000245a0(uVar1);\n    if (iVar5 == 0) {\n      if ((param_8 == 0) && (((uint)__preg[1].buffer & 4) != 0)) {\nLAB_0001c345:\n        local_21 = '\0';\n        iVar5 = FUN_00024580(__preg[1].used,param_4,param_4 + param_5,1,0,&local_21);\n        if (iVar5 != 0) {\n          puVar9 = __preg[1].buffer;\nLAB_0001c36d:\n          uVar8 = (uint)puVar9 & 4;\n          if (uVar8 == 0) goto LAB_0001c398;\n          uVar15 = 1;\n          if (local_21 == '\0') goto LAB_0001c07a;\n          goto LAB_0001c2de;\n        }\n      }\n      else {\n        cVar4 = FUN_000245b0(uVar1);\n        if (cVar4 == '\0') goto LAB_0001c2d8;\n        local_21 = '\0';\n        iVar5 = FUN_00024580(uVar1,param_4,param_4 + param_5,1,0,&local_21);\n        if (iVar5 != 0) {\n          puVar9 = __preg[1].buffer;\n          uVar8 = (uint)puVar9 & 4;\n          if (param_8 == 0) goto LAB_0001c36d;\n          goto LAB_0001c2de;\n        }\n      }\n    }\n    else {\n      iVar5 = FUN_00024580(iVar5,param_4,param_4 + param_5,1,0,0);\n      if (iVar5 != 0) {\n        uVar15 = (uint)__preg[1].buffer & 4;\n        if (param_8 == 0) {\n          if (uVar15 != 0) goto LAB_0001c345;\n          goto LAB_0001c398;\n        }\n        if (uVar15 != 0) goto LAB_0001c100;\n        goto LAB_0001c2f2;\n      }\n    }\nLAB_0001c3a8:\n    uVar15 = 0;\n  }\n  else {\nLAB_0001c2d8:\n    uVar8 = (uint)__preg[1].buffer & 4;\nLAB_0001c2de:\n    if (uVar8 == 0) {\nLAB_0001c2e6:\n      if (param_8 == 0) {\nLAB_0001c398:\n        local_40 = (re_registers *)0x0;\n      }\nLAB_0001c2f2:\n      pcVar16 = (char *)re_search(__preg,param_4,param_5,param_6,param_5 - param_6,local_40);\n    }\n    else {\nLAB_0001c100:\n      cVar4 = DAT_00039240;\n      if (DAT_00039240 == '\n') goto LAB_0001c2e6;\n      __string = param_4;\n      if (param_6 != 0) {\n        pvVar6 = memrchr(param_4,(int)DAT_00039240,param_6);\n        __string = (char *)((int)pvVar6 + 1);\n        if (pvVar6 == (void *)0x0) {\n          __string = param_4;\n        }\n      }\n      pcVar16 = param_4 + param_6;\n      __regs = (re_registers *)0x0;\n      if (param_8 != 0) {\n        __regs = param_7;\n      }\n      pcVar14 = param_4 + param_5;\n      while( true ) {\n        pcVar7 = (char *)FUN_0002b7a0(__string,(int)cVar4,(int)pcVar14 - (int)__string);\n        if (pcVar7 == (char *)0x0) break;\n        pcVar16 = (char *)re_search(__preg,__string,(int)pcVar7 - (int)__string,\n                                    (int)pcVar16 - (int)__string,(int)pcVar7 - (int)pcVar16,__regs);\n        if (-1 < (int)pcVar16) goto LAB_0001c1f7;\n        if (pcVar7 == pcVar14) goto LAB_0001c317;\n        pcVar16 = pcVar7 + 1;\n        __string = pcVar16;\n        cVar4 = DAT_00039240;\n      }\n      pcVar16 = (char *)re_search(__preg,__string,(int)pcVar14 - (int)__string,\n                                  (int)pcVar16 - (int)__string,(int)pcVar14 - (int)pcVar16,__regs);\n      if (-1 < (int)pcVar16) {\nLAB_0001c1f7:\n        pcVar16 = __string + ((int)pcVar16 - (int)param_4);\n        if ((param_8 != 0) && (param_7->num_regs != 0)) {\n          prVar10 = param_7->start;\n          prVar2 = param_7->end;\n          uVar15 = 0;\n          do {\n            while( true ) {\n              iVar5 = prVar10[uVar15];\n              if (-1 < iVar5) {\n                prVar10[uVar15] = (regoff_t)(__string + (iVar5 - (int)param_4));\n              }\n              iVar5 = prVar2[uVar15];\n              if (iVar5 < 0) break;\n              prVar2[uVar15] = (regoff_t)(__string + (iVar5 - (int)param_4));\n              uVar15 = uVar15 + 1;\n              if (param_7->num_regs <= uVar15) goto LAB_0001c317;\n            }\n            uVar15 = uVar15 + 1;\n          } while (uVar15 < param_7->num_regs);\n        }\n      }\n    }\nLAB_0001c317:\n    uVar15 = ~(uint)pcVar16 >> 0x1f;\n  }\nLAB_0001c07a:\n  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    \n    FUN_0002c430();\n  }\n  return uVar15;\n}" { (declaration "ulong uVar1;" type_identifier identifier ;) (declaration "regoff_t *prVar2;" type_identifier (pointer_declarator "*prVar2" * identifier) ;) (declaration "reg_syntax_t rVar3;" type_identifier identifier ;) (declaration "re_pattern_buffer *__preg;" type_identifier (pointer_declarator "*__preg" * identifier) ;) (declaration "char cVar4;" primitive_type identifier ;) (declaration "int iVar5;" primitive_type identifier ;) (declaration "void *pvVar6;" primitive_type (pointer_declarator "*pvVar6" * identifier) ;) (declaration "re_registers *__regs;" type_identifier (pointer_declarator "*__regs" * identifier) ;) (declaration "char *pcVar7;" primitive_type (pointer_declarator "*pcVar7" * identifier) ;) (declaration "uint uVar8;" type_identifier identifier ;) (declaration "regoff_t *prVar10;" type_identifier (pointer_declarator "*prVar10" * identifier) ;) (declaration "uint *puVar11;" type_identifier (pointer_declarator "*puVar11" * identifier) ;) (declaration "undefined4 uVar12;" type_identifier identifier ;) (declaration "uint *puVar13;" type_identifier (pointer_declarator "*puVar13" * identifier) ;) (declaration "char *pcVar14;" primitive_type (pointer_declarator "*pcVar14" * identifier) ;) (declaration "uint uVar15;" type_identifier identifier ;) (declaration "char *pcVar16;" primitive_type (pointer_declarator "*pcVar16" * identifier) ;) (declaration "char *__string;" primitive_type (pointer_declarator "*__string" * identifier) ;) (declaration "int in_GS_OFFSET;" primitive_type identifier ;) (declaration "re_registers *local_40;" type_identifier (pointer_declarator "*local_40" * identifier) ;) (declaration "char local_21;" primitive_type identifier ;) (declaration "int local_20;" primitive_type identifier ;) (declaration "undefined4 uStack_14;" type_identifier identifier ;) (declaration "uchar *puVar9;" type_identifier (pointer_declarator "*puVar9" * identifier) ;) (expression_statement "uStack_14 = 0x1bf59;" (assignment_expression "uStack_14 = 0x1bf59" identifier = number_literal) ;) (expression_statement "local_40 = param_7;" (assignment_expression "local_40 = param_7" identifier = identifier) ;) (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) ))))) ;) (if_statement "if (param_3 == (re_pattern_buffer *)0x0) {\n    if (DAT_0003940c == (re_pattern_buffer *)0x0) {\n      uVar12 = dcgettext(0,"no previous regular expression",5,param_2);\n                    \n      FUN_000131f0(uVar12);\n    }\n  }\n  else {\n    DAT_0003940c = param_3;\n  }" if (parenthesized_expression "(param_3 == (re_pattern_buffer *)0x0)" ( (binary_expression "param_3 == (re_pattern_buffer *)0x0" identifier == (cast_expression "(re_pattern_buffer *)0x0" ( (type_descriptor "re_pattern_buffer *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    if (DAT_0003940c == (re_pattern_buffer *)0x0) {\n      uVar12 = dcgettext(0,"no previous regular expression",5,param_2);\n                    \n      FUN_000131f0(uVar12);\n    }\n  }" { (if_statement "if (DAT_0003940c == (re_pattern_buffer *)0x0) {\n      uVar12 = dcgettext(0,"no previous regular expression",5,param_2);\n                    \n      FUN_000131f0(uVar12);\n    }" if (parenthesized_expression "(DAT_0003940c == (re_pattern_buffer *)0x0)" ( (binary_expression "DAT_0003940c == (re_pattern_buffer *)0x0" identifier == (cast_expression "(re_pattern_buffer *)0x0" ( (type_descriptor "re_pattern_buffer *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      uVar12 = dcgettext(0,"no previous regular expression",5,param_2);\n                    \n      FUN_000131f0(uVar12);\n    }" { (expression_statement "uVar12 = dcgettext(0,"no previous regular expression",5,param_2);" (assignment_expression "uVar12 = dcgettext(0,"no previous regular expression",5,param_2)" identifier = (call_expression "dcgettext(0,"no previous regular expression",5,param_2)" identifier (argument_list "(0,"no previous regular expression",5,param_2)" ( number_literal , (string_literal ""no previous regular expression"" " string_content ") , number_literal , identifier )))) ;) (expression_statement "FUN_000131f0(uVar12);" (call_expression "FUN_000131f0(uVar12)" identifier (argument_list "(uVar12)" ( identifier ))) ;) })) }) (else_clause "else {\n    DAT_0003940c = param_3;\n  }" else (compound_statement "{\n    DAT_0003940c = param_3;\n  }" { (expression_statement "DAT_0003940c = param_3;" (assignment_expression "DAT_0003940c = param_3" identifier = identifier) ;) }))) (expression_statement "__preg = DAT_0003940c;" (assignment_expression "__preg = DAT_0003940c" identifier = identifier) ;) (if_statement "if (0x7ffffffe < param_5) {\n    uVar12 = dcgettext(0,"regex input buffer length larger than INT_MAX",5,0);\n                    \n    FUN_0001c8c0(uVar12);\n  }" if (parenthesized_expression "(0x7ffffffe < param_5)" ( (binary_expression "0x7ffffffe < param_5" number_literal < identifier) )) (compound_statement "{\n    uVar12 = dcgettext(0,"regex input buffer length larger than INT_MAX",5,0);\n                    \n    FUN_0001c8c0(uVar12);\n  }" { (expression_statement "uVar12 = dcgettext(0,"regex input buffer length larger than INT_MAX",5,0);" (assignment_expression "uVar12 = dcgettext(0,"regex input buffer length larger than INT_MAX",5,0)" identifier = (call_expression "dcgettext(0,"regex input buffer length larger than INT_MAX",5,0)" identifier (argument_list "(0,"regex input buffer length larger than INT_MAX",5,0)" ( number_literal , (string_literal ""regex input buffer length larger than INT_MAX"" " string_content ") , number_literal , number_literal )))) ;) (expression_statement "FUN_0001c8c0(uVar12);" (call_expression "FUN_0001c8c0(uVar12)" identifier (argument_list "(uVar12)" ( identifier ))) ;) })) (if_statement "if (((DAT_0003940c->field_0x1c & 0x10) != 0) && (param_8 != 0)) {\n    if (DAT_0003940c[1].used != 0) {\n      FUN_000245c0(DAT_0003940c[1].used);\n      free((void *)__preg[1].used);\n      __preg[1].used = 0;\n    }\n    regfree(__preg);\n    FUN_0001bbc0();\n  }" if (parenthesized_expression "(((DAT_0003940c->field_0x1c & 0x10) != 0) && (param_8 != 0))" ( (binary_expression "((DAT_0003940c->field_0x1c & 0x10) != 0) && (param_8 != 0)" (parenthesized_expression "((DAT_0003940c->field_0x1c & 0x10) != 0)" ( (binary_expression "(DAT_0003940c->field_0x1c & 0x10) != 0" (parenthesized_expression "(DAT_0003940c->field_0x1c & 0x10)" ( (binary_expression "DAT_0003940c->field_0x1c & 0x10" (field_expression "DAT_0003940c->field_0x1c" identifier -> field_identifier) & number_literal) )) != number_literal) )) && (parenthesized_expression "(param_8 != 0)" ( (binary_expression "param_8 != 0" identifier != number_literal) ))) )) (compound_statement "{\n    if (DAT_0003940c[1].used != 0) {\n      FUN_000245c0(DAT_0003940c[1].used);\n      free((void *)__preg[1].used);\n      __preg[1].used = 0;\n    }\n    regfree(__preg);\n    FUN_0001bbc0();\n  }" { (if_statement "if (DAT_0003940c[1].used != 0) {\n      FUN_000245c0(DAT_0003940c[1].used);\n      free((void *)__preg[1].used);\n      __preg[1].used = 0;\n    }" if (parenthesized_expression "(DAT_0003940c[1].used != 0)" ( (binary_expression "DAT_0003940c[1].used != 0" (field_expression "DAT_0003940c[1].used" (subscript_expression "DAT_0003940c[1]" identifier [ number_literal ]) . field_identifier) != number_literal) )) (compound_statement "{\n      FUN_000245c0(DAT_0003940c[1].used);\n      free((void *)__preg[1].used);\n      __preg[1].used = 0;\n    }" { (expression_statement "FUN_000245c0(DAT_0003940c[1].used);" (call_expression "FUN_000245c0(DAT_0003940c[1].used)" identifier (argument_list "(DAT_0003940c[1].used)" ( (field_expression "DAT_0003940c[1].used" (subscript_expression "DAT_0003940c[1]" identifier [ number_literal ]) . field_identifier) ))) ;) (expression_statement "free((void *)__preg[1].used);" (call_expression "free((void *)__preg[1].used)" identifier (argument_list "((void *)__preg[1].used)" ( (cast_expression "(void *)__preg[1].used" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (field_expression "__preg[1].used" (subscript_expression "__preg[1]" identifier [ number_literal ]) . field_identifier)) ))) ;) (expression_statement "__preg[1].used = 0;" (assignment_expression "__preg[1].used = 0" (field_expression "__preg[1].used" (subscript_expression "__preg[1]" identifier [ number_literal ]) . field_identifier) = number_literal) ;) })) (expression_statement "regfree(__preg);" (call_expression "regfree(__preg)" identifier (argument_list "(__preg)" ( identifier ))) ;) (expression_statement "FUN_0001bbc0();" (call_expression "FUN_0001bbc0()" identifier (argument_list "()" ( ))) ;) })) (expression_statement "rVar3 = __preg[1].syntax;" (assignment_expression "rVar3 = __preg[1].syntax" identifier = (field_expression "__preg[1].syntax" (subscript_expression "__preg[1]" identifier [ number_literal ]) . field_identifier)) ;) (expression_statement "__preg->field_0x1c = __preg->field_0x1c & 0xf9 | 2;" (assignment_expression "__preg->field_0x1c = __preg->field_0x1c & 0xf9 | 2" (field_expression "__preg->field_0x1c" identifier -> field_identifier) = (binary_expression "__preg->field_0x1c & 0xf9 | 2" (binary_expression "__preg->field_0x1c & 0xf9" (field_expression "__preg->field_0x1c" identifier -> field_identifier) & number_literal) | number_literal)) ;) (if_statement "if ((short)rVar3 != 0) {\n    if (*(char *)((int)&__preg[1].syntax + 1) == '\0') {\n      if (param_6 != 0) {\n        if (((uint)__preg[1].buffer & 4) == 0) goto LAB_0001c3a8;\n        if (param_4[param_6 - 1] != DAT_00039240) {\n          iVar5 = FUN_0002b7a0(param_4 + param_6,(int)DAT_00039240,param_5 - param_6);\n          if (iVar5 == 0) goto LAB_0001c3a8;\n          param_6 = (iVar5 - (int)param_4) + 1;\n        }\n      }\n    }\n    else if (((uint)__preg[1].buffer & 4) == 0) {\n      param_6 = param_5;\n    }\n    else {\n      iVar5 = FUN_0002b7a0(param_4 + param_6,(int)DAT_00039240,param_5 - param_6);\n      param_6 = iVar5 - (int)param_4;\n      if (iVar5 == 0) {\n        param_6 = param_5;\n      }\n    }\n    if (param_8 != 0) {\n      puVar13 = (uint *)param_7->start;\n      if (puVar13 == (uint *)0x0) {\n        prVar10 = (regoff_t *)FUN_00029ec0(1,4);\n        param_7->start = prVar10;\n        puVar11 = (uint *)FUN_00029ec0(1,4);\n        param_7->num_regs = 1;\n        puVar13 = (uint *)param_7->start;\n        param_7->end = (regoff_t *)puVar11;\n      }\n      else {\n        puVar11 = (uint *)param_7->end;\n      }\n      *puVar13 = param_6;\n      *puVar11 = param_6;\n      if (1 < param_7->num_regs) {\n        uVar15 = 1;\n        do {\n          puVar11[uVar15] = 0xffffffff;\n          puVar13[uVar15] = 0xffffffff;\n          uVar15 = uVar15 + 1;\n        } while (uVar15 < param_7->num_regs);\n      }\n    }\n    uVar15 = 1;\n    goto LAB_0001c07a;\n  }" if (parenthesized_expression "((short)rVar3 != 0)" ( (binary_expression "(short)rVar3 != 0" (cast_expression "(short)rVar3" ( (type_descriptor "short" (sized_type_specifier "short" short)) ) identifier) != number_literal) )) (compound_statement "{\n    if (*(char *)((int)&__preg[1].syntax + 1) == '\0') {\n      if (param_6 != 0) {\n        if (((uint)__preg[1].buffer & 4) == 0) goto LAB_0001c3a8;\n        if (param_4[param_6 - 1] != DAT_00039240) {\n          iVar5 = FUN_0002b7a0(param_4 + param_6,(int)DAT_00039240,param_5 - param_6);\n          if (iVar5 == 0) goto LAB_0001c3a8;\n          param_6 = (iVar5 - (int)param_4) + 1;\n        }\n      }\n    }\n    else if (((uint)__preg[1].buffer & 4) == 0) {\n      param_6 = param_5;\n    }\n    else {\n      iVar5 = FUN_0002b7a0(param_4 + param_6,(int)DAT_00039240,param_5 - param_6);\n      param_6 = iVar5 - (int)param_4;\n      if (iVar5 == 0) {\n        param_6 = param_5;\n      }\n    }\n    if (param_8 != 0) {\n      puVar13 = (uint *)param_7->start;\n      if (puVar13 == (uint *)0x0) {\n        prVar10 = (regoff_t *)FUN_00029ec0(1,4);\n        param_7->start = prVar10;\n        puVar11 = (uint *)FUN_00029ec0(1,4);\n        param_7->num_regs = 1;\n        puVar13 = (uint *)param_7->start;\n        param_7->end = (regoff_t *)puVar11;\n      }\n      else {\n        puVar11 = (uint *)param_7->end;\n      }\n      *puVar13 = param_6;\n      *puVar11 = param_6;\n      if (1 < param_7->num_regs) {\n        uVar15 = 1;\n        do {\n          puVar11[uVar15] = 0xffffffff;\n          puVar13[uVar15] = 0xffffffff;\n          uVar15 = uVar15 + 1;\n        } while (uVar15 < param_7->num_regs);\n      }\n    }\n    uVar15 = 1;\n    goto LAB_0001c07a;\n  }" { (if_statement "if (*(char *)((int)&__preg[1].syntax + 1) == '\0') {\n      if (param_6 != 0) {\n        if (((uint)__preg[1].buffer & 4) == 0) goto LAB_0001c3a8;\n        if (param_4[param_6 - 1] != DAT_00039240) {\n          iVar5 = FUN_0002b7a0(param_4 + param_6,(int)DAT_00039240,param_5 - param_6);\n          if (iVar5 == 0) goto LAB_0001c3a8;\n          param_6 = (iVar5 - (int)param_4) + 1;\n        }\n      }\n    }\n    else if (((uint)__preg[1].buffer & 4) == 0) {\n      param_6 = param_5;\n    }\n    else {\n      iVar5 = FUN_0002b7a0(param_4 + param_6,(int)DAT_00039240,param_5 - param_6);\n      param_6 = iVar5 - (int)param_4;\n      if (iVar5 == 0) {\n        param_6 = param_5;\n      }\n    }" if (parenthesized_expression "(*(char *)((int)&__preg[1].syntax + 1) == '\0')" ( (binary_expression "*(char *)((int)&__preg[1].syntax + 1) == '\0'" (pointer_expression "*(char *)((int)&__preg[1].syntax + 1)" * (cast_expression "(char *)((int)&__preg[1].syntax + 1)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&__preg[1].syntax + 1)" ( (binary_expression "(int)&__preg[1].syntax + 1" (cast_expression "(int)&__preg[1].syntax" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&__preg[1].syntax" & (field_expression "__preg[1].syntax" (subscript_expression "__preg[1]" identifier [ number_literal ]) . field_identifier))) + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n      if (param_6 != 0) {\n        if (((uint)__preg[1].buffer & 4) == 0) goto LAB_0001c3a8;\n        if (param_4[param_6 - 1] != DAT_00039240) {\n          iVar5 = FUN_0002b7a0(param_4 + param_6,(int)DAT_00039240,param_5 - param_6);\n          if (iVar5 == 0) goto LAB_0001c3a8;\n          param_6 = (iVar5 - (int)param_4) + 1;\n        }\n      }\n    }" { (if_statement "if (param_6 != 0) {\n        if (((uint)__preg[1].buffer & 4) == 0) goto LAB_0001c3a8;\n        if (param_4[param_6 - 1] != DAT_00039240) {\n          iVar5 = FUN_0002b7a0(param_4 + param_6,(int)DAT_00039240,param_5 - param_6);\n          if (iVar5 == 0) goto LAB_0001c3a8;\n          param_6 = (iVar5 - (int)param_4) + 1;\n        }\n      }" if (parenthesized_expression "(param_6 != 0)" ( (binary_expression "param_6 != 0" identifier != number_literal) )) (compound_statement "{\n        if (((uint)__preg[1].buffer & 4) == 0) goto LAB_0001c3a8;\n        if (param_4[param_6 - 1] != DAT_00039240) {\n          iVar5 = FUN_0002b7a0(param_4 + param_6,(int)DAT_00039240,param_5 - param_6);\n          if (iVar5 == 0) goto LAB_0001c3a8;\n          param_6 = (iVar5 - (int)param_4) + 1;\n        }\n      }" { (if_statement "if (((uint)__preg[1].buffer & 4) == 0) goto LAB_0001c3a8;" if (parenthesized_expression "(((uint)__preg[1].buffer & 4) == 0)" ( (binary_expression "((uint)__preg[1].buffer & 4) == 0" (parenthesized_expression "((uint)__preg[1].buffer & 4)" ( (binary_expression "(uint)__preg[1].buffer & 4" (cast_expression "(uint)__preg[1].buffer" ( (type_descriptor "uint" type_identifier) ) (field_expression "__preg[1].buffer" (subscript_expression "__preg[1]" identifier [ number_literal ]) . field_identifier)) & number_literal) )) == number_literal) )) (goto_statement "goto LAB_0001c3a8;" goto statement_identifier ;)) (if_statement "if (param_4[param_6 - 1] != DAT_00039240) {\n          iVar5 = FUN_0002b7a0(param_4 + param_6,(int)DAT_00039240,param_5 - param_6);\n          if (iVar5 == 0) goto LAB_0001c3a8;\n          param_6 = (iVar5 - (int)param_4) + 1;\n        }" if (parenthesized_expression "(param_4[param_6 - 1] != DAT_00039240)" ( (binary_expression "param_4[param_6 - 1] != DAT_00039240" (subscript_expression "param_4[param_6 - 1]" identifier [ (binary_expression "param_6 - 1" identifier - number_literal) ]) != identifier) )) (compound_statement "{\n          iVar5 = FUN_0002b7a0(param_4 + param_6,(int)DAT_00039240,param_5 - param_6);\n          if (iVar5 == 0) goto LAB_0001c3a8;\n          param_6 = (iVar5 - (int)param_4) + 1;\n        }" { (expression_statement "iVar5 = FUN_0002b7a0(param_4 + param_6,(int)DAT_00039240,param_5 - param_6);" (assignment_expression "iVar5 = FUN_0002b7a0(param_4 + param_6,(int)DAT_00039240,param_5 - param_6)" identifier = (call_expression "FUN_0002b7a0(param_4 + param_6,(int)DAT_00039240,param_5 - param_6)" identifier (argument_list "(param_4 + param_6,(int)DAT_00039240,param_5 - param_6)" ( (binary_expression "param_4 + param_6" identifier + identifier) , (cast_expression "(int)DAT_00039240" ( (type_descriptor "int" primitive_type) ) identifier) , (binary_expression "param_5 - param_6" identifier - identifier) )))) ;) (if_statement "if (iVar5 == 0) goto LAB_0001c3a8;" if (parenthesized_expression "(iVar5 == 0)" ( (binary_expression "iVar5 == 0" identifier == number_literal) )) (goto_statement "goto LAB_0001c3a8;" goto statement_identifier ;)) (expression_statement "param_6 = (iVar5 - (int)param_4) + 1;" (assignment_expression "param_6 = (iVar5 - (int)param_4) + 1" identifier = (binary_expression "(iVar5 - (int)param_4) + 1" (parenthesized_expression "(iVar5 - (int)param_4)" ( (binary_expression "iVar5 - (int)param_4" identifier - (cast_expression "(int)param_4" ( (type_descriptor "int" primitive_type) ) identifier)) )) + number_literal)) ;) })) })) }) (else_clause "else if (((uint)__preg[1].buffer & 4) == 0) {\n      param_6 = param_5;\n    }\n    else {\n      iVar5 = FUN_0002b7a0(param_4 + param_6,(int)DAT_00039240,param_5 - param_6);\n      param_6 = iVar5 - (int)param_4;\n      if (iVar5 == 0) {\n        param_6 = param_5;\n      }\n    }" else (if_statement "if (((uint)__preg[1].buffer & 4) == 0) {\n      param_6 = param_5;\n    }\n    else {\n      iVar5 = FUN_0002b7a0(param_4 + param_6,(int)DAT_00039240,param_5 - param_6);\n      param_6 = iVar5 - (int)param_4;\n      if (iVar5 == 0) {\n        param_6 = param_5;\n      }\n    }" if (parenthesized_expression "(((uint)__preg[1].buffer & 4) == 0)" ( (binary_expression "((uint)__preg[1].buffer & 4) == 0" (parenthesized_expression "((uint)__preg[1].buffer & 4)" ( (binary_expression "(uint)__preg[1].buffer & 4" (cast_expression "(uint)__preg[1].buffer" ( (type_descriptor "uint" type_identifier) ) (field_expression "__preg[1].buffer" (subscript_expression "__preg[1]" identifier [ number_literal ]) . field_identifier)) & number_literal) )) == number_literal) )) (compound_statement "{\n      param_6 = param_5;\n    }" { (expression_statement "param_6 = param_5;" (assignment_expression "param_6 = param_5" identifier = identifier) ;) }) (else_clause "else {\n      iVar5 = FUN_0002b7a0(param_4 + param_6,(int)DAT_00039240,param_5 - param_6);\n      param_6 = iVar5 - (int)param_4;\n      if (iVar5 == 0) {\n        param_6 = param_5;\n      }\n    }" else (compound_statement "{\n      iVar5 = FUN_0002b7a0(param_4 + param_6,(int)DAT_00039240,param_5 - param_6);\n      param_6 = iVar5 - (int)param_4;\n      if (iVar5 == 0) {\n        param_6 = param_5;\n      }\n    }" { (expression_statement "iVar5 = FUN_0002b7a0(param_4 + param_6,(int)DAT_00039240,param_5 - param_6);" (assignment_expression "iVar5 = FUN_0002b7a0(param_4 + param_6,(int)DAT_00039240,param_5 - param_6)" identifier = (call_expression "FUN_0002b7a0(param_4 + param_6,(int)DAT_00039240,param_5 - param_6)" identifier (argument_list "(param_4 + param_6,(int)DAT_00039240,param_5 - param_6)" ( (binary_expression "param_4 + param_6" identifier + identifier) , (cast_expression "(int)DAT_00039240" ( (type_descriptor "int" primitive_type) ) identifier) , (binary_expression "param_5 - param_6" identifier - identifier) )))) ;) (expression_statement "param_6 = iVar5 - (int)param_4;" (assignment_expression "param_6 = iVar5 - (int)param_4" identifier = (binary_expression "iVar5 - (int)param_4" identifier - (cast_expression "(int)param_4" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (if_statement "if (iVar5 == 0) {\n        param_6 = param_5;\n      }" if (parenthesized_expression "(iVar5 == 0)" ( (binary_expression "iVar5 == 0" identifier == number_literal) )) (compound_statement "{\n        param_6 = param_5;\n      }" { (expression_statement "param_6 = param_5;" (assignment_expression "param_6 = param_5" identifier = identifier) ;) })) }))))) (if_statement "if (param_8 != 0) {\n      puVar13 = (uint *)param_7->start;\n      if (puVar13 == (uint *)0x0) {\n        prVar10 = (regoff_t *)FUN_00029ec0(1,4);\n        param_7->start = prVar10;\n        puVar11 = (uint *)FUN_00029ec0(1,4);\n        param_7->num_regs = 1;\n        puVar13 = (uint *)param_7->start;\n        param_7->end = (regoff_t *)puVar11;\n      }\n      else {\n        puVar11 = (uint *)param_7->end;\n      }\n      *puVar13 = param_6;\n      *puVar11 = param_6;\n      if (1 < param_7->num_regs) {\n        uVar15 = 1;\n        do {\n          puVar11[uVar15] = 0xffffffff;\n          puVar13[uVar15] = 0xffffffff;\n          uVar15 = uVar15 + 1;\n        } while (uVar15 < param_7->num_regs);\n      }\n    }" if (parenthesized_expression "(param_8 != 0)" ( (binary_expression "param_8 != 0" identifier != number_literal) )) (compound_statement "{\n      puVar13 = (uint *)param_7->start;\n      if (puVar13 == (uint *)0x0) {\n        prVar10 = (regoff_t *)FUN_00029ec0(1,4);\n        param_7->start = prVar10;\n        puVar11 = (uint *)FUN_00029ec0(1,4);\n        param_7->num_regs = 1;\n        puVar13 = (uint *)param_7->start;\n        param_7->end = (regoff_t *)puVar11;\n      }\n      else {\n        puVar11 = (uint *)param_7->end;\n      }\n      *puVar13 = param_6;\n      *puVar11 = param_6;\n      if (1 < param_7->num_regs) {\n        uVar15 = 1;\n        do {\n          puVar11[uVar15] = 0xffffffff;\n          puVar13[uVar15] = 0xffffffff;\n          uVar15 = uVar15 + 1;\n        } while (uVar15 < param_7->num_regs);\n      }\n    }" { (expression_statement "puVar13 = (uint *)param_7->start;" (assignment_expression "puVar13 = (uint *)param_7->start" identifier = (cast_expression "(uint *)param_7->start" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "param_7->start" identifier -> field_identifier))) ;) (if_statement "if (puVar13 == (uint *)0x0) {\n        prVar10 = (regoff_t *)FUN_00029ec0(1,4);\n        param_7->start = prVar10;\n        puVar11 = (uint *)FUN_00029ec0(1,4);\n        param_7->num_regs = 1;\n        puVar13 = (uint *)param_7->start;\n        param_7->end = (regoff_t *)puVar11;\n      }\n      else {\n        puVar11 = (uint *)param_7->end;\n      }" if (parenthesized_expression "(puVar13 == (uint *)0x0)" ( (binary_expression "puVar13 == (uint *)0x0" identifier == (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        prVar10 = (regoff_t *)FUN_00029ec0(1,4);\n        param_7->start = prVar10;\n        puVar11 = (uint *)FUN_00029ec0(1,4);\n        param_7->num_regs = 1;\n        puVar13 = (uint *)param_7->start;\n        param_7->end = (regoff_t *)puVar11;\n      }" { (expression_statement "prVar10 = (regoff_t *)FUN_00029ec0(1,4);" (assignment_expression "prVar10 = (regoff_t *)FUN_00029ec0(1,4)" identifier = (cast_expression "(regoff_t *)FUN_00029ec0(1,4)" ( (type_descriptor "regoff_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00029ec0(1,4)" identifier (argument_list "(1,4)" ( number_literal , number_literal ))))) ;) (expression_statement "param_7->start = prVar10;" (assignment_expression "param_7->start = prVar10" (field_expression "param_7->start" identifier -> field_identifier) = identifier) ;) (expression_statement "puVar11 = (uint *)FUN_00029ec0(1,4);" (assignment_expression "puVar11 = (uint *)FUN_00029ec0(1,4)" identifier = (cast_expression "(uint *)FUN_00029ec0(1,4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00029ec0(1,4)" identifier (argument_list "(1,4)" ( number_literal , number_literal ))))) ;) (expression_statement "param_7->num_regs = 1;" (assignment_expression "param_7->num_regs = 1" (field_expression "param_7->num_regs" identifier -> field_identifier) = number_literal) ;) (expression_statement "puVar13 = (uint *)param_7->start;" (assignment_expression "puVar13 = (uint *)param_7->start" identifier = (cast_expression "(uint *)param_7->start" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "param_7->start" identifier -> field_identifier))) ;) (expression_statement "param_7->end = (regoff_t *)puVar11;" (assignment_expression "param_7->end = (regoff_t *)puVar11" (field_expression "param_7->end" identifier -> field_identifier) = (cast_expression "(regoff_t *)puVar11" ( (type_descriptor "regoff_t *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) }) (else_clause "else {\n        puVar11 = (uint *)param_7->end;\n      }" else (compound_statement "{\n        puVar11 = (uint *)param_7->end;\n      }" { (expression_statement "puVar11 = (uint *)param_7->end;" (assignment_expression "puVar11 = (uint *)param_7->end" identifier = (cast_expression "(uint *)param_7->end" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "param_7->end" identifier -> field_identifier))) ;) }))) (expression_statement "*puVar13 = param_6;" (assignment_expression "*puVar13 = param_6" (pointer_expression "*puVar13" * identifier) = identifier) ;) (expression_statement "*puVar11 = param_6;" (assignment_expression "*puVar11 = param_6" (pointer_expression "*puVar11" * identifier) = identifier) ;) (if_statement "if (1 < param_7->num_regs) {\n        uVar15 = 1;\n        do {\n          puVar11[uVar15] = 0xffffffff;\n          puVar13[uVar15] = 0xffffffff;\n          uVar15 = uVar15 + 1;\n        } while (uVar15 < param_7->num_regs);\n      }" if (parenthesized_expression "(1 < param_7->num_regs)" ( (binary_expression "1 < param_7->num_regs" number_literal < (field_expression "param_7->num_regs" identifier -> field_identifier)) )) (compound_statement "{\n        uVar15 = 1;\n        do {\n          puVar11[uVar15] = 0xffffffff;\n          puVar13[uVar15] = 0xffffffff;\n          uVar15 = uVar15 + 1;\n        } while (uVar15 < param_7->num_regs);\n      }" { (expression_statement "uVar15 = 1;" (assignment_expression "uVar15 = 1" identifier = number_literal) ;) (do_statement "do {\n          puVar11[uVar15] = 0xffffffff;\n          puVar13[uVar15] = 0xffffffff;\n          uVar15 = uVar15 + 1;\n        } while (uVar15 < param_7->num_regs);" do (compound_statement "{\n          puVar11[uVar15] = 0xffffffff;\n          puVar13[uVar15] = 0xffffffff;\n          uVar15 = uVar15 + 1;\n        }" { (expression_statement "puVar11[uVar15] = 0xffffffff;" (assignment_expression "puVar11[uVar15] = 0xffffffff" (subscript_expression "puVar11[uVar15]" identifier [ identifier ]) = number_literal) ;) (expression_statement "puVar13[uVar15] = 0xffffffff;" (assignment_expression "puVar13[uVar15] = 0xffffffff" (subscript_expression "puVar13[uVar15]" identifier [ identifier ]) = number_literal) ;) (expression_statement "uVar15 = uVar15 + 1;" (assignment_expression "uVar15 = uVar15 + 1" identifier = (binary_expression "uVar15 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar15 < param_7->num_regs)" ( (binary_expression "uVar15 < param_7->num_regs" identifier < (field_expression "param_7->num_regs" identifier -> field_identifier)) )) ;) })) })) (expression_statement "uVar15 = 1;" (assignment_expression "uVar15 = 1" identifier = number_literal) ;) (goto_statement "goto LAB_0001c07a;" goto statement_identifier ;) })) (if_statement "if (param_6 == 0) {\n    uVar1 = __preg[1].used;\n    iVar5 = FUN_000245a0(uVar1);\n    if (iVar5 == 0) {\n      if ((param_8 == 0) && (((uint)__preg[1].buffer & 4) != 0)) {\nLAB_0001c345:\n        local_21 = '\0';\n        iVar5 = FUN_00024580(__preg[1].used,param_4,param_4 + param_5,1,0,&local_21);\n        if (iVar5 != 0) {\n          puVar9 = __preg[1].buffer;\nLAB_0001c36d:\n          uVar8 = (uint)puVar9 & 4;\n          if (uVar8 == 0) goto LAB_0001c398;\n          uVar15 = 1;\n          if (local_21 == '\0') goto LAB_0001c07a;\n          goto LAB_0001c2de;\n        }\n      }\n      else {\n        cVar4 = FUN_000245b0(uVar1);\n        if (cVar4 == '\0') goto LAB_0001c2d8;\n        local_21 = '\0';\n        iVar5 = FUN_00024580(uVar1,param_4,param_4 + param_5,1,0,&local_21);\n        if (iVar5 != 0) {\n          puVar9 = __preg[1].buffer;\n          uVar8 = (uint)puVar9 & 4;\n          if (param_8 == 0) goto LAB_0001c36d;\n          goto LAB_0001c2de;\n        }\n      }\n    }\n    else {\n      iVar5 = FUN_00024580(iVar5,param_4,param_4 + param_5,1,0,0);\n      if (iVar5 != 0) {\n        uVar15 = (uint)__preg[1].buffer & 4;\n        if (param_8 == 0) {\n          if (uVar15 != 0) goto LAB_0001c345;\n          goto LAB_0001c398;\n        }\n        if (uVar15 != 0) goto LAB_0001c100;\n        goto LAB_0001c2f2;\n      }\n    }\nLAB_0001c3a8:\n    uVar15 = 0;\n  }\n  else {\nLAB_0001c2d8:\n    uVar8 = (uint)__preg[1].buffer & 4;\nLAB_0001c2de:\n    if (uVar8 == 0) {\nLAB_0001c2e6:\n      if (param_8 == 0) {\nLAB_0001c398:\n        local_40 = (re_registers *)0x0;\n      }\nLAB_0001c2f2:\n      pcVar16 = (char *)re_search(__preg,param_4,param_5,param_6,param_5 - param_6,local_40);\n    }\n    else {\nLAB_0001c100:\n      cVar4 = DAT_00039240;\n      if (DAT_00039240 == '\n') goto LAB_0001c2e6;\n      __string = param_4;\n      if (param_6 != 0) {\n        pvVar6 = memrchr(param_4,(int)DAT_00039240,param_6);\n        __string = (char *)((int)pvVar6 + 1);\n        if (pvVar6 == (void *)0x0) {\n          __string = param_4;\n        }\n      }\n      pcVar16 = param_4 + param_6;\n      __regs = (re_registers *)0x0;\n      if (param_8 != 0) {\n        __regs = param_7;\n      }\n      pcVar14 = param_4 + param_5;\n      while( true ) {\n        pcVar7 = (char *)FUN_0002b7a0(__string,(int)cVar4,(int)pcVar14 - (int)__string);\n        if (pcVar7 == (char *)0x0) break;\n        pcVar16 = (char *)re_search(__preg,__string,(int)pcVar7 - (int)__string,\n                                    (int)pcVar16 - (int)__string,(int)pcVar7 - (int)pcVar16,__regs);\n        if (-1 < (int)pcVar16) goto LAB_0001c1f7;\n        if (pcVar7 == pcVar14) goto LAB_0001c317;\n        pcVar16 = pcVar7 + 1;\n        __string = pcVar16;\n        cVar4 = DAT_00039240;\n      }\n      pcVar16 = (char *)re_search(__preg,__string,(int)pcVar14 - (int)__string,\n                                  (int)pcVar16 - (int)__string,(int)pcVar14 - (int)pcVar16,__regs);\n      if (-1 < (int)pcVar16) {\nLAB_0001c1f7:\n        pcVar16 = __string + ((int)pcVar16 - (int)param_4);\n        if ((param_8 != 0) && (param_7->num_regs != 0)) {\n          prVar10 = param_7->start;\n          prVar2 = param_7->end;\n          uVar15 = 0;\n          do {\n            while( true ) {\n              iVar5 = prVar10[uVar15];\n              if (-1 < iVar5) {\n                prVar10[uVar15] = (regoff_t)(__string + (iVar5 - (int)param_4));\n              }\n              iVar5 = prVar2[uVar15];\n              if (iVar5 < 0) break;\n              prVar2[uVar15] = (regoff_t)(__string + (iVar5 - (int)param_4));\n              uVar15 = uVar15 + 1;\n              if (param_7->num_regs <= uVar15) goto LAB_0001c317;\n            }\n            uVar15 = uVar15 + 1;\n          } while (uVar15 < param_7->num_regs);\n        }\n      }\n    }\nLAB_0001c317:\n    uVar15 = ~(uint)pcVar16 >> 0x1f;\n  }" if (parenthesized_expression "(param_6 == 0)" ( (binary_expression "param_6 == 0" identifier == number_literal) )) (compound_statement "{\n    uVar1 = __preg[1].used;\n    iVar5 = FUN_000245a0(uVar1);\n    if (iVar5 == 0) {\n      if ((param_8 == 0) && (((uint)__preg[1].buffer & 4) != 0)) {\nLAB_0001c345:\n        local_21 = '\0';\n        iVar5 = FUN_00024580(__preg[1].used,param_4,param_4 + param_5,1,0,&local_21);\n        if (iVar5 != 0) {\n          puVar9 = __preg[1].buffer;\nLAB_0001c36d:\n          uVar8 = (uint)puVar9 & 4;\n          if (uVar8 == 0) goto LAB_0001c398;\n          uVar15 = 1;\n          if (local_21 == '\0') goto LAB_0001c07a;\n          goto LAB_0001c2de;\n        }\n      }\n      else {\n        cVar4 = FUN_000245b0(uVar1);\n        if (cVar4 == '\0') goto LAB_0001c2d8;\n        local_21 = '\0';\n        iVar5 = FUN_00024580(uVar1,param_4,param_4 + param_5,1,0,&local_21);\n        if (iVar5 != 0) {\n          puVar9 = __preg[1].buffer;\n          uVar8 = (uint)puVar9 & 4;\n          if (param_8 == 0) goto LAB_0001c36d;\n          goto LAB_0001c2de;\n        }\n      }\n    }\n    else {\n      iVar5 = FUN_00024580(iVar5,param_4,param_4 + param_5,1,0,0);\n      if (iVar5 != 0) {\n        uVar15 = (uint)__preg[1].buffer & 4;\n        if (param_8 == 0) {\n          if (uVar15 != 0) goto LAB_0001c345;\n          goto LAB_0001c398;\n        }\n        if (uVar15 != 0) goto LAB_0001c100;\n        goto LAB_0001c2f2;\n      }\n    }\nLAB_0001c3a8:\n    uVar15 = 0;\n  }" { (expression_statement "uVar1 = __preg[1].used;" (assignment_expression "uVar1 = __preg[1].used" identifier = (field_expression "__preg[1].used" (subscript_expression "__preg[1]" identifier [ number_literal ]) . field_identifier)) ;) (expression_statement "iVar5 = FUN_000245a0(uVar1);" (assignment_expression "iVar5 = FUN_000245a0(uVar1)" identifier = (call_expression "FUN_000245a0(uVar1)" identifier (argument_list "(uVar1)" ( identifier )))) ;) (if_statement "if (iVar5 == 0) {\n      if ((param_8 == 0) && (((uint)__preg[1].buffer & 4) != 0)) {\nLAB_0001c345:\n        local_21 = '\0';\n        iVar5 = FUN_00024580(__preg[1].used,param_4,param_4 + param_5,1,0,&local_21);\n        if (iVar5 != 0) {\n          puVar9 = __preg[1].buffer;\nLAB_0001c36d:\n          uVar8 = (uint)puVar9 & 4;\n          if (uVar8 == 0) goto LAB_0001c398;\n          uVar15 = 1;\n          if (local_21 == '\0') goto LAB_0001c07a;\n          goto LAB_0001c2de;\n        }\n      }\n      else {\n        cVar4 = FUN_000245b0(uVar1);\n        if (cVar4 == '\0') goto LAB_0001c2d8;\n        local_21 = '\0';\n        iVar5 = FUN_00024580(uVar1,param_4,param_4 + param_5,1,0,&local_21);\n        if (iVar5 != 0) {\n          puVar9 = __preg[1].buffer;\n          uVar8 = (uint)puVar9 & 4;\n          if (param_8 == 0) goto LAB_0001c36d;\n          goto LAB_0001c2de;\n        }\n      }\n    }\n    else {\n      iVar5 = FUN_00024580(iVar5,param_4,param_4 + param_5,1,0,0);\n      if (iVar5 != 0) {\n        uVar15 = (uint)__preg[1].buffer & 4;\n        if (param_8 == 0) {\n          if (uVar15 != 0) goto LAB_0001c345;\n          goto LAB_0001c398;\n        }\n        if (uVar15 != 0) goto LAB_0001c100;\n        goto LAB_0001c2f2;\n      }\n    }" if (parenthesized_expression "(iVar5 == 0)" ( (binary_expression "iVar5 == 0" identifier == number_literal) )) (compound_statement "{\n      if ((param_8 == 0) && (((uint)__preg[1].buffer & 4) != 0)) {\nLAB_0001c345:\n        local_21 = '\0';\n        iVar5 = FUN_00024580(__preg[1].used,param_4,param_4 + param_5,1,0,&local_21);\n        if (iVar5 != 0) {\n          puVar9 = __preg[1].buffer;\nLAB_0001c36d:\n          uVar8 = (uint)puVar9 & 4;\n          if (uVar8 == 0) goto LAB_0001c398;\n          uVar15 = 1;\n          if (local_21 == '\0') goto LAB_0001c07a;\n          goto LAB_0001c2de;\n        }\n      }\n      else {\n        cVar4 = FUN_000245b0(uVar1);\n        if (cVar4 == '\0') goto LAB_0001c2d8;\n        local_21 = '\0';\n        iVar5 = FUN_00024580(uVar1,param_4,param_4 + param_5,1,0,&local_21);\n        if (iVar5 != 0) {\n          puVar9 = __preg[1].buffer;\n          uVar8 = (uint)puVar9 & 4;\n          if (param_8 == 0) goto LAB_0001c36d;\n          goto LAB_0001c2de;\n        }\n      }\n    }" { (if_statement "if ((param_8 == 0) && (((uint)__preg[1].buffer & 4) != 0)) {\nLAB_0001c345:\n        local_21 = '\0';\n        iVar5 = FUN_00024580(__preg[1].used,param_4,param_4 + param_5,1,0,&local_21);\n        if (iVar5 != 0) {\n          puVar9 = __preg[1].buffer;\nLAB_0001c36d:\n          uVar8 = (uint)puVar9 & 4;\n          if (uVar8 == 0) goto LAB_0001c398;\n          uVar15 = 1;\n          if (local_21 == '\0') goto LAB_0001c07a;\n          goto LAB_0001c2de;\n        }\n      }\n      else {\n        cVar4 = FUN_000245b0(uVar1);\n        if (cVar4 == '\0') goto LAB_0001c2d8;\n        local_21 = '\0';\n        iVar5 = FUN_00024580(uVar1,param_4,param_4 + param_5,1,0,&local_21);\n        if (iVar5 != 0) {\n          puVar9 = __preg[1].buffer;\n          uVar8 = (uint)puVar9 & 4;\n          if (param_8 == 0) goto LAB_0001c36d;\n          goto LAB_0001c2de;\n        }\n      }" if (parenthesized_expression "((param_8 == 0) && (((uint)__preg[1].buffer & 4) != 0))" ( (binary_expression "(param_8 == 0) && (((uint)__preg[1].buffer & 4) != 0)" (parenthesized_expression "(param_8 == 0)" ( (binary_expression "param_8 == 0" identifier == number_literal) )) && (parenthesized_expression "(((uint)__preg[1].buffer & 4) != 0)" ( (binary_expression "((uint)__preg[1].buffer & 4) != 0" (parenthesized_expression "((uint)__preg[1].buffer & 4)" ( (binary_expression "(uint)__preg[1].buffer & 4" (cast_expression "(uint)__preg[1].buffer" ( (type_descriptor "uint" type_identifier) ) (field_expression "__preg[1].buffer" (subscript_expression "__preg[1]" identifier [ number_literal ]) . field_identifier)) & number_literal) )) != number_literal) ))) )) (compound_statement "{\nLAB_0001c345:\n        local_21 = '\0';\n        iVar5 = FUN_00024580(__preg[1].used,param_4,param_4 + param_5,1,0,&local_21);\n        if (iVar5 != 0) {\n          puVar9 = __preg[1].buffer;\nLAB_0001c36d:\n          uVar8 = (uint)puVar9 & 4;\n          if (uVar8 == 0) goto LAB_0001c398;\n          uVar15 = 1;\n          if (local_21 == '\0') goto LAB_0001c07a;\n          goto LAB_0001c2de;\n        }\n      }" { (labeled_statement "LAB_0001c345:\n        local_21 = '\0';" statement_identifier : (expression_statement "local_21 = '\0';" (assignment_expression "local_21 = '\0'" identifier = (char_literal "'\0'" ' escape_sequence ')) ;)) (expression_statement "iVar5 = FUN_00024580(__preg[1].used,param_4,param_4 + param_5,1,0,&local_21);" (assignment_expression "iVar5 = FUN_00024580(__preg[1].used,param_4,param_4 + param_5,1,0,&local_21)" identifier = (call_expression "FUN_00024580(__preg[1].used,param_4,param_4 + param_5,1,0,&local_21)" identifier (argument_list "(__preg[1].used,param_4,param_4 + param_5,1,0,&local_21)" ( (field_expression "__preg[1].used" (subscript_expression "__preg[1]" identifier [ number_literal ]) . field_identifier) , identifier , (binary_expression "param_4 + param_5" identifier + identifier) , number_literal , number_literal , (pointer_expression "&local_21" & identifier) )))) ;) (if_statement "if (iVar5 != 0) {\n          puVar9 = __preg[1].buffer;\nLAB_0001c36d:\n          uVar8 = (uint)puVar9 & 4;\n          if (uVar8 == 0) goto LAB_0001c398;\n          uVar15 = 1;\n          if (local_21 == '\0') goto LAB_0001c07a;\n          goto LAB_0001c2de;\n        }" if (parenthesized_expression "(iVar5 != 0)" ( (binary_expression "iVar5 != 0" identifier != number_literal) )) (compound_statement "{\n          puVar9 = __preg[1].buffer;\nLAB_0001c36d:\n          uVar8 = (uint)puVar9 & 4;\n          if (uVar8 == 0) goto LAB_0001c398;\n          uVar15 = 1;\n          if (local_21 == '\0') goto LAB_0001c07a;\n          goto LAB_0001c2de;\n        }" { (expression_statement "puVar9 = __preg[1].buffer;" (assignment_expression "puVar9 = __preg[1].buffer" identifier = (field_expression "__preg[1].buffer" (subscript_expression "__preg[1]" identifier [ number_literal ]) . field_identifier)) ;) (labeled_statement "LAB_0001c36d:\n          uVar8 = (uint)puVar9 & 4;" statement_identifier : (expression_statement "uVar8 = (uint)puVar9 & 4;" (assignment_expression "uVar8 = (uint)puVar9 & 4" identifier = (binary_expression "(uint)puVar9 & 4" (cast_expression "(uint)puVar9" ( (type_descriptor "uint" type_identifier) ) identifier) & number_literal)) ;)) (if_statement "if (uVar8 == 0) goto LAB_0001c398;" if (parenthesized_expression "(uVar8 == 0)" ( (binary_expression "uVar8 == 0" identifier == number_literal) )) (goto_statement "goto LAB_0001c398;" goto statement_identifier ;)) (expression_statement "uVar15 = 1;" (assignment_expression "uVar15 = 1" identifier = number_literal) ;) (if_statement "if (local_21 == '\0') goto LAB_0001c07a;" if (parenthesized_expression "(local_21 == '\0')" ( (binary_expression "local_21 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )) (goto_statement "goto LAB_0001c07a;" goto statement_identifier ;)) (goto_statement "goto LAB_0001c2de;" goto statement_identifier ;) })) }) (else_clause "else {\n        cVar4 = FUN_000245b0(uVar1);\n        if (cVar4 == '\0') goto LAB_0001c2d8;\n        local_21 = '\0';\n        iVar5 = FUN_00024580(uVar1,param_4,param_4 + param_5,1,0,&local_21);\n        if (iVar5 != 0) {\n          puVar9 = __preg[1].buffer;\n          uVar8 = (uint)puVar9 & 4;\n          if (param_8 == 0) goto LAB_0001c36d;\n          goto LAB_0001c2de;\n        }\n      }" else (compound_statement "{\n        cVar4 = FUN_000245b0(uVar1);\n        if (cVar4 == '\0') goto LAB_0001c2d8;\n        local_21 = '\0';\n        iVar5 = FUN_00024580(uVar1,param_4,param_4 + param_5,1,0,&local_21);\n        if (iVar5 != 0) {\n          puVar9 = __preg[1].buffer;\n          uVar8 = (uint)puVar9 & 4;\n          if (param_8 == 0) goto LAB_0001c36d;\n          goto LAB_0001c2de;\n        }\n      }" { (expression_statement "cVar4 = FUN_000245b0(uVar1);" (assignment_expression "cVar4 = FUN_000245b0(uVar1)" identifier = (call_expression "FUN_000245b0(uVar1)" identifier (argument_list "(uVar1)" ( identifier )))) ;) (if_statement "if (cVar4 == '\0') goto LAB_0001c2d8;" if (parenthesized_expression "(cVar4 == '\0')" ( (binary_expression "cVar4 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )) (goto_statement "goto LAB_0001c2d8;" goto statement_identifier ;)) (expression_statement "local_21 = '\0';" (assignment_expression "local_21 = '\0'" identifier = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "iVar5 = FUN_00024580(uVar1,param_4,param_4 + param_5,1,0,&local_21);" (assignment_expression "iVar5 = FUN_00024580(uVar1,param_4,param_4 + param_5,1,0,&local_21)" identifier = (call_expression "FUN_00024580(uVar1,param_4,param_4 + param_5,1,0,&local_21)" identifier (argument_list "(uVar1,param_4,param_4 + param_5,1,0,&local_21)" ( identifier , identifier , (binary_expression "param_4 + param_5" identifier + identifier) , number_literal , number_literal , (pointer_expression "&local_21" & identifier) )))) ;) (if_statement "if (iVar5 != 0) {\n          puVar9 = __preg[1].buffer;\n          uVar8 = (uint)puVar9 & 4;\n          if (param_8 == 0) goto LAB_0001c36d;\n          goto LAB_0001c2de;\n        }" if (parenthesized_expression "(iVar5 != 0)" ( (binary_expression "iVar5 != 0" identifier != number_literal) )) (compound_statement "{\n          puVar9 = __preg[1].buffer;\n          uVar8 = (uint)puVar9 & 4;\n          if (param_8 == 0) goto LAB_0001c36d;\n          goto LAB_0001c2de;\n        }" { (expression_statement "puVar9 = __preg[1].buffer;" (assignment_expression "puVar9 = __preg[1].buffer" identifier = (field_expression "__preg[1].buffer" (subscript_expression "__preg[1]" identifier [ number_literal ]) . field_identifier)) ;) (expression_statement "uVar8 = (uint)puVar9 & 4;" (assignment_expression "uVar8 = (uint)puVar9 & 4" identifier = (binary_expression "(uint)puVar9 & 4" (cast_expression "(uint)puVar9" ( (type_descriptor "uint" type_identifier) ) identifier) & number_literal)) ;) (if_statement "if (param_8 == 0) goto LAB_0001c36d;" if (parenthesized_expression "(param_8 == 0)" ( (binary_expression "param_8 == 0" identifier == number_literal) )) (goto_statement "goto LAB_0001c36d;" goto statement_identifier ;)) (goto_statement "goto LAB_0001c2de;" goto statement_identifier ;) })) }))) }) (else_clause "else {\n      iVar5 = FUN_00024580(iVar5,param_4,param_4 + param_5,1,0,0);\n      if (iVar5 != 0) {\n        uVar15 = (uint)__preg[1].buffer & 4;\n        if (param_8 == 0) {\n          if (uVar15 != 0) goto LAB_0001c345;\n          goto LAB_0001c398;\n        }\n        if (uVar15 != 0) goto LAB_0001c100;\n        goto LAB_0001c2f2;\n      }\n    }" else (compound_statement "{\n      iVar5 = FUN_00024580(iVar5,param_4,param_4 + param_5,1,0,0);\n      if (iVar5 != 0) {\n        uVar15 = (uint)__preg[1].buffer & 4;\n        if (param_8 == 0) {\n          if (uVar15 != 0) goto LAB_0001c345;\n          goto LAB_0001c398;\n        }\n        if (uVar15 != 0) goto LAB_0001c100;\n        goto LAB_0001c2f2;\n      }\n    }" { (expression_statement "iVar5 = FUN_00024580(iVar5,param_4,param_4 + param_5,1,0,0);" (assignment_expression "iVar5 = FUN_00024580(iVar5,param_4,param_4 + param_5,1,0,0)" identifier = (call_expression "FUN_00024580(iVar5,param_4,param_4 + param_5,1,0,0)" identifier (argument_list "(iVar5,param_4,param_4 + param_5,1,0,0)" ( identifier , identifier , (binary_expression "param_4 + param_5" identifier + identifier) , number_literal , number_literal , number_literal )))) ;) (if_statement "if (iVar5 != 0) {\n        uVar15 = (uint)__preg[1].buffer & 4;\n        if (param_8 == 0) {\n          if (uVar15 != 0) goto LAB_0001c345;\n          goto LAB_0001c398;\n        }\n        if (uVar15 != 0) goto LAB_0001c100;\n        goto LAB_0001c2f2;\n      }" if (parenthesized_expression "(iVar5 != 0)" ( (binary_expression "iVar5 != 0" identifier != number_literal) )) (compound_statement "{\n        uVar15 = (uint)__preg[1].buffer & 4;\n        if (param_8 == 0) {\n          if (uVar15 != 0) goto LAB_0001c345;\n          goto LAB_0001c398;\n        }\n        if (uVar15 != 0) goto LAB_0001c100;\n        goto LAB_0001c2f2;\n      }" { (expression_statement "uVar15 = (uint)__preg[1].buffer & 4;" (assignment_expression "uVar15 = (uint)__preg[1].buffer & 4" identifier = (binary_expression "(uint)__preg[1].buffer & 4" (cast_expression "(uint)__preg[1].buffer" ( (type_descriptor "uint" type_identifier) ) (field_expression "__preg[1].buffer" (subscript_expression "__preg[1]" identifier [ number_literal ]) . field_identifier)) & number_literal)) ;) (if_statement "if (param_8 == 0) {\n          if (uVar15 != 0) goto LAB_0001c345;\n          goto LAB_0001c398;\n        }" if (parenthesized_expression "(param_8 == 0)" ( (binary_expression "param_8 == 0" identifier == number_literal) )) (compound_statement "{\n          if (uVar15 != 0) goto LAB_0001c345;\n          goto LAB_0001c398;\n        }" { (if_statement "if (uVar15 != 0) goto LAB_0001c345;" if (parenthesized_expression "(uVar15 != 0)" ( (binary_expression "uVar15 != 0" identifier != number_literal) )) (goto_statement "goto LAB_0001c345;" goto statement_identifier ;)) (goto_statement "goto LAB_0001c398;" goto statement_identifier ;) })) (if_statement "if (uVar15 != 0) goto LAB_0001c100;" if (parenthesized_expression "(uVar15 != 0)" ( (binary_expression "uVar15 != 0" identifier != number_literal) )) (goto_statement "goto LAB_0001c100;" goto statement_identifier ;)) (goto_statement "goto LAB_0001c2f2;" goto statement_identifier ;) })) }))) (labeled_statement "LAB_0001c3a8:\n    uVar15 = 0;" statement_identifier : (expression_statement "uVar15 = 0;" (assignment_expression "uVar15 = 0" identifier = number_literal) ;)) }) (else_clause "else {\nLAB_0001c2d8:\n    uVar8 = (uint)__preg[1].buffer & 4;\nLAB_0001c2de:\n    if (uVar8 == 0) {\nLAB_0001c2e6:\n      if (param_8 == 0) {\nLAB_0001c398:\n        local_40 = (re_registers *)0x0;\n      }\nLAB_0001c2f2:\n      pcVar16 = (char *)re_search(__preg,param_4,param_5,param_6,param_5 - param_6,local_40);\n    }\n    else {\nLAB_0001c100:\n      cVar4 = DAT_00039240;\n      if (DAT_00039240 == '\n') goto LAB_0001c2e6;\n      __string = param_4;\n      if (param_6 != 0) {\n        pvVar6 = memrchr(param_4,(int)DAT_00039240,param_6);\n        __string = (char *)((int)pvVar6 + 1);\n        if (pvVar6 == (void *)0x0) {\n          __string = param_4;\n        }\n      }\n      pcVar16 = param_4 + param_6;\n      __regs = (re_registers *)0x0;\n      if (param_8 != 0) {\n        __regs = param_7;\n      }\n      pcVar14 = param_4 + param_5;\n      while( true ) {\n        pcVar7 = (char *)FUN_0002b7a0(__string,(int)cVar4,(int)pcVar14 - (int)__string);\n        if (pcVar7 == (char *)0x0) break;\n        pcVar16 = (char *)re_search(__preg,__string,(int)pcVar7 - (int)__string,\n                                    (int)pcVar16 - (int)__string,(int)pcVar7 - (int)pcVar16,__regs);\n        if (-1 < (int)pcVar16) goto LAB_0001c1f7;\n        if (pcVar7 == pcVar14) goto LAB_0001c317;\n        pcVar16 = pcVar7 + 1;\n        __string = pcVar16;\n        cVar4 = DAT_00039240;\n      }\n      pcVar16 = (char *)re_search(__preg,__string,(int)pcVar14 - (int)__string,\n                                  (int)pcVar16 - (int)__string,(int)pcVar14 - (int)pcVar16,__regs);\n      if (-1 < (int)pcVar16) {\nLAB_0001c1f7:\n        pcVar16 = __string + ((int)pcVar16 - (int)param_4);\n        if ((param_8 != 0) && (param_7->num_regs != 0)) {\n          prVar10 = param_7->start;\n          prVar2 = param_7->end;\n          uVar15 = 0;\n          do {\n            while( true ) {\n              iVar5 = prVar10[uVar15];\n              if (-1 < iVar5) {\n                prVar10[uVar15] = (regoff_t)(__string + (iVar5 - (int)param_4));\n              }\n              iVar5 = prVar2[uVar15];\n              if (iVar5 < 0) break;\n              prVar2[uVar15] = (regoff_t)(__string + (iVar5 - (int)param_4));\n              uVar15 = uVar15 + 1;\n              if (param_7->num_regs <= uVar15) goto LAB_0001c317;\n            }\n            uVar15 = uVar15 + 1;\n          } while (uVar15 < param_7->num_regs);\n        }\n      }\n    }\nLAB_0001c317:\n    uVar15 = ~(uint)pcVar16 >> 0x1f;\n  }" else (compound_statement "{\nLAB_0001c2d8:\n    uVar8 = (uint)__preg[1].buffer & 4;\nLAB_0001c2de:\n    if (uVar8 == 0) {\nLAB_0001c2e6:\n      if (param_8 == 0) {\nLAB_0001c398:\n        local_40 = (re_registers *)0x0;\n      }\nLAB_0001c2f2:\n      pcVar16 = (char *)re_search(__preg,param_4,param_5,param_6,param_5 - param_6,local_40);\n    }\n    else {\nLAB_0001c100:\n      cVar4 = DAT_00039240;\n      if (DAT_00039240 == '\n') goto LAB_0001c2e6;\n      __string = param_4;\n      if (param_6 != 0) {\n        pvVar6 = memrchr(param_4,(int)DAT_00039240,param_6);\n        __string = (char *)((int)pvVar6 + 1);\n        if (pvVar6 == (void *)0x0) {\n          __string = param_4;\n        }\n      }\n      pcVar16 = param_4 + param_6;\n      __regs = (re_registers *)0x0;\n      if (param_8 != 0) {\n        __regs = param_7;\n      }\n      pcVar14 = param_4 + param_5;\n      while( true ) {\n        pcVar7 = (char *)FUN_0002b7a0(__string,(int)cVar4,(int)pcVar14 - (int)__string);\n        if (pcVar7 == (char *)0x0) break;\n        pcVar16 = (char *)re_search(__preg,__string,(int)pcVar7 - (int)__string,\n                                    (int)pcVar16 - (int)__string,(int)pcVar7 - (int)pcVar16,__regs);\n        if (-1 < (int)pcVar16) goto LAB_0001c1f7;\n        if (pcVar7 == pcVar14) goto LAB_0001c317;\n        pcVar16 = pcVar7 + 1;\n        __string = pcVar16;\n        cVar4 = DAT_00039240;\n      }\n      pcVar16 = (char *)re_search(__preg,__string,(int)pcVar14 - (int)__string,\n                                  (int)pcVar16 - (int)__string,(int)pcVar14 - (int)pcVar16,__regs);\n      if (-1 < (int)pcVar16) {\nLAB_0001c1f7:\n        pcVar16 = __string + ((int)pcVar16 - (int)param_4);\n        if ((param_8 != 0) && (param_7->num_regs != 0)) {\n          prVar10 = param_7->start;\n          prVar2 = param_7->end;\n          uVar15 = 0;\n          do {\n            while( true ) {\n              iVar5 = prVar10[uVar15];\n              if (-1 < iVar5) {\n                prVar10[uVar15] = (regoff_t)(__string + (iVar5 - (int)param_4));\n              }\n              iVar5 = prVar2[uVar15];\n              if (iVar5 < 0) break;\n              prVar2[uVar15] = (regoff_t)(__string + (iVar5 - (int)param_4));\n              uVar15 = uVar15 + 1;\n              if (param_7->num_regs <= uVar15) goto LAB_0001c317;\n            }\n            uVar15 = uVar15 + 1;\n          } while (uVar15 < param_7->num_regs);\n        }\n      }\n    }\nLAB_0001c317:\n    uVar15 = ~(uint)pcVar16 >> 0x1f;\n  }" { (labeled_statement "LAB_0001c2d8:\n    uVar8 = (uint)__preg[1].buffer & 4;" statement_identifier : (expression_statement "uVar8 = (uint)__preg[1].buffer & 4;" (assignment_expression "uVar8 = (uint)__preg[1].buffer & 4" identifier = (binary_expression "(uint)__preg[1].buffer & 4" (cast_expression "(uint)__preg[1].buffer" ( (type_descriptor "uint" type_identifier) ) (field_expression "__preg[1].buffer" (subscript_expression "__preg[1]" identifier [ number_literal ]) . field_identifier)) & number_literal)) ;)) (labeled_statement "LAB_0001c2de:\n    if (uVar8 == 0) {\nLAB_0001c2e6:\n      if (param_8 == 0) {\nLAB_0001c398:\n        local_40 = (re_registers *)0x0;\n      }\nLAB_0001c2f2:\n      pcVar16 = (char *)re_search(__preg,param_4,param_5,param_6,param_5 - param_6,local_40);\n    }\n    else {\nLAB_0001c100:\n      cVar4 = DAT_00039240;\n      if (DAT_00039240 == '\n') goto LAB_0001c2e6;\n      __string = param_4;\n      if (param_6 != 0) {\n        pvVar6 = memrchr(param_4,(int)DAT_00039240,param_6);\n        __string = (char *)((int)pvVar6 + 1);\n        if (pvVar6 == (void *)0x0) {\n          __string = param_4;\n        }\n      }\n      pcVar16 = param_4 + param_6;\n      __regs = (re_registers *)0x0;\n      if (param_8 != 0) {\n        __regs = param_7;\n      }\n      pcVar14 = param_4 + param_5;\n      while( true ) {\n        pcVar7 = (char *)FUN_0002b7a0(__string,(int)cVar4,(int)pcVar14 - (int)__string);\n        if (pcVar7 == (char *)0x0) break;\n        pcVar16 = (char *)re_search(__preg,__string,(int)pcVar7 - (int)__string,\n                                    (int)pcVar16 - (int)__string,(int)pcVar7 - (int)pcVar16,__regs);\n        if (-1 < (int)pcVar16) goto LAB_0001c1f7;\n        if (pcVar7 == pcVar14) goto LAB_0001c317;\n        pcVar16 = pcVar7 + 1;\n        __string = pcVar16;\n        cVar4 = DAT_00039240;\n      }\n      pcVar16 = (char *)re_search(__preg,__string,(int)pcVar14 - (int)__string,\n                                  (int)pcVar16 - (int)__string,(int)pcVar14 - (int)pcVar16,__regs);\n      if (-1 < (int)pcVar16) {\nLAB_0001c1f7:\n        pcVar16 = __string + ((int)pcVar16 - (int)param_4);\n        if ((param_8 != 0) && (param_7->num_regs != 0)) {\n          prVar10 = param_7->start;\n          prVar2 = param_7->end;\n          uVar15 = 0;\n          do {\n            while( true ) {\n              iVar5 = prVar10[uVar15];\n              if (-1 < iVar5) {\n                prVar10[uVar15] = (regoff_t)(__string + (iVar5 - (int)param_4));\n              }\n              iVar5 = prVar2[uVar15];\n              if (iVar5 < 0) break;\n              prVar2[uVar15] = (regoff_t)(__string + (iVar5 - (int)param_4));\n              uVar15 = uVar15 + 1;\n              if (param_7->num_regs <= uVar15) goto LAB_0001c317;\n            }\n            uVar15 = uVar15 + 1;\n          } while (uVar15 < param_7->num_regs);\n        }\n      }\n    }" statement_identifier : (if_statement "if (uVar8 == 0) {\nLAB_0001c2e6:\n      if (param_8 == 0) {\nLAB_0001c398:\n        local_40 = (re_registers *)0x0;\n      }\nLAB_0001c2f2:\n      pcVar16 = (char *)re_search(__preg,param_4,param_5,param_6,param_5 - param_6,local_40);\n    }\n    else {\nLAB_0001c100:\n      cVar4 = DAT_00039240;\n      if (DAT_00039240 == '\n') goto LAB_0001c2e6;\n      __string = param_4;\n      if (param_6 != 0) {\n        pvVar6 = memrchr(param_4,(int)DAT_00039240,param_6);\n        __string = (char *)((int)pvVar6 + 1);\n        if (pvVar6 == (void *)0x0) {\n          __string = param_4;\n        }\n      }\n      pcVar16 = param_4 + param_6;\n      __regs = (re_registers *)0x0;\n      if (param_8 != 0) {\n        __regs = param_7;\n      }\n      pcVar14 = param_4 + param_5;\n      while( true ) {\n        pcVar7 = (char *)FUN_0002b7a0(__string,(int)cVar4,(int)pcVar14 - (int)__string);\n        if (pcVar7 == (char *)0x0) break;\n        pcVar16 = (char *)re_search(__preg,__string,(int)pcVar7 - (int)__string,\n                                    (int)pcVar16 - (int)__string,(int)pcVar7 - (int)pcVar16,__regs);\n        if (-1 < (int)pcVar16) goto LAB_0001c1f7;\n        if (pcVar7 == pcVar14) goto LAB_0001c317;\n        pcVar16 = pcVar7 + 1;\n        __string = pcVar16;\n        cVar4 = DAT_00039240;\n      }\n      pcVar16 = (char *)re_search(__preg,__string,(int)pcVar14 - (int)__string,\n                                  (int)pcVar16 - (int)__string,(int)pcVar14 - (int)pcVar16,__regs);\n      if (-1 < (int)pcVar16) {\nLAB_0001c1f7:\n        pcVar16 = __string + ((int)pcVar16 - (int)param_4);\n        if ((param_8 != 0) && (param_7->num_regs != 0)) {\n          prVar10 = param_7->start;\n          prVar2 = param_7->end;\n          uVar15 = 0;\n          do {\n            while( true ) {\n              iVar5 = prVar10[uVar15];\n              if (-1 < iVar5) {\n                prVar10[uVar15] = (regoff_t)(__string + (iVar5 - (int)param_4));\n              }\n              iVar5 = prVar2[uVar15];\n              if (iVar5 < 0) break;\n              prVar2[uVar15] = (regoff_t)(__string + (iVar5 - (int)param_4));\n              uVar15 = uVar15 + 1;\n              if (param_7->num_regs <= uVar15) goto LAB_0001c317;\n            }\n            uVar15 = uVar15 + 1;\n          } while (uVar15 < param_7->num_regs);\n        }\n      }\n    }" if (parenthesized_expression "(uVar8 == 0)" ( (binary_expression "uVar8 == 0" identifier == number_literal) )) (compound_statement "{\nLAB_0001c2e6:\n      if (param_8 == 0) {\nLAB_0001c398:\n        local_40 = (re_registers *)0x0;\n      }\nLAB_0001c2f2:\n      pcVar16 = (char *)re_search(__preg,param_4,param_5,param_6,param_5 - param_6,local_40);\n    }" { (labeled_statement "LAB_0001c2e6:\n      if (param_8 == 0) {\nLAB_0001c398:\n        local_40 = (re_registers *)0x0;\n      }" statement_identifier : (if_statement "if (param_8 == 0) {\nLAB_0001c398:\n        local_40 = (re_registers *)0x0;\n      }" if (parenthesized_expression "(param_8 == 0)" ( (binary_expression "param_8 == 0" identifier == number_literal) )) (compound_statement "{\nLAB_0001c398:\n        local_40 = (re_registers *)0x0;\n      }" { (labeled_statement "LAB_0001c398:\n        local_40 = (re_registers *)0x0;" statement_identifier : (expression_statement "local_40 = (re_registers *)0x0;" (assignment_expression "local_40 = (re_registers *)0x0" identifier = (cast_expression "(re_registers *)0x0" ( (type_descriptor "re_registers *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;)) }))) (labeled_statement "LAB_0001c2f2:\n      pcVar16 = (char *)re_search(__preg,param_4,param_5,param_6,param_5 - param_6,local_40);" statement_identifier : (expression_statement "pcVar16 = (char *)re_search(__preg,param_4,param_5,param_6,param_5 - param_6,local_40);" (assignment_expression "pcVar16 = (char *)re_search(__preg,param_4,param_5,param_6,param_5 - param_6,local_40)" identifier = (cast_expression "(char *)re_search(__preg,param_4,param_5,param_6,param_5 - param_6,local_40)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "re_search(__preg,param_4,param_5,param_6,param_5 - param_6,local_40)" identifier (argument_list "(__preg,param_4,param_5,param_6,param_5 - param_6,local_40)" ( identifier , identifier , identifier , identifier , (binary_expression "param_5 - param_6" identifier - identifier) , identifier ))))) ;)) }) (else_clause "else {\nLAB_0001c100:\n      cVar4 = DAT_00039240;\n      if (DAT_00039240 == '\n') goto LAB_0001c2e6;\n      __string = param_4;\n      if (param_6 != 0) {\n        pvVar6 = memrchr(param_4,(int)DAT_00039240,param_6);\n        __string = (char *)((int)pvVar6 + 1);\n        if (pvVar6 == (void *)0x0) {\n          __string = param_4;\n        }\n      }\n      pcVar16 = param_4 + param_6;\n      __regs = (re_registers *)0x0;\n      if (param_8 != 0) {\n        __regs = param_7;\n      }\n      pcVar14 = param_4 + param_5;\n      while( true ) {\n        pcVar7 = (char *)FUN_0002b7a0(__string,(int)cVar4,(int)pcVar14 - (int)__string);\n        if (pcVar7 == (char *)0x0) break;\n        pcVar16 = (char *)re_search(__preg,__string,(int)pcVar7 - (int)__string,\n                                    (int)pcVar16 - (int)__string,(int)pcVar7 - (int)pcVar16,__regs);\n        if (-1 < (int)pcVar16) goto LAB_0001c1f7;\n        if (pcVar7 == pcVar14) goto LAB_0001c317;\n        pcVar16 = pcVar7 + 1;\n        __string = pcVar16;\n        cVar4 = DAT_00039240;\n      }\n      pcVar16 = (char *)re_search(__preg,__string,(int)pcVar14 - (int)__string,\n                                  (int)pcVar16 - (int)__string,(int)pcVar14 - (int)pcVar16,__regs);\n      if (-1 < (int)pcVar16) {\nLAB_0001c1f7:\n        pcVar16 = __string + ((int)pcVar16 - (int)param_4);\n        if ((param_8 != 0) && (param_7->num_regs != 0)) {\n          prVar10 = param_7->start;\n          prVar2 = param_7->end;\n          uVar15 = 0;\n          do {\n            while( true ) {\n              iVar5 = prVar10[uVar15];\n              if (-1 < iVar5) {\n                prVar10[uVar15] = (regoff_t)(__string + (iVar5 - (int)param_4));\n              }\n              iVar5 = prVar2[uVar15];\n              if (iVar5 < 0) break;\n              prVar2[uVar15] = (regoff_t)(__string + (iVar5 - (int)param_4));\n              uVar15 = uVar15 + 1;\n              if (param_7->num_regs <= uVar15) goto LAB_0001c317;\n            }\n            uVar15 = uVar15 + 1;\n          } while (uVar15 < param_7->num_regs);\n        }\n      }\n    }" else (compound_statement "{\nLAB_0001c100:\n      cVar4 = DAT_00039240;\n      if (DAT_00039240 == '\n') goto LAB_0001c2e6;\n      __string = param_4;\n      if (param_6 != 0) {\n        pvVar6 = memrchr(param_4,(int)DAT_00039240,param_6);\n        __string = (char *)((int)pvVar6 + 1);\n        if (pvVar6 == (void *)0x0) {\n          __string = param_4;\n        }\n      }\n      pcVar16 = param_4 + param_6;\n      __regs = (re_registers *)0x0;\n      if (param_8 != 0) {\n        __regs = param_7;\n      }\n      pcVar14 = param_4 + param_5;\n      while( true ) {\n        pcVar7 = (char *)FUN_0002b7a0(__string,(int)cVar4,(int)pcVar14 - (int)__string);\n        if (pcVar7 == (char *)0x0) break;\n        pcVar16 = (char *)re_search(__preg,__string,(int)pcVar7 - (int)__string,\n                                    (int)pcVar16 - (int)__string,(int)pcVar7 - (int)pcVar16,__regs);\n        if (-1 < (int)pcVar16) goto LAB_0001c1f7;\n        if (pcVar7 == pcVar14) goto LAB_0001c317;\n        pcVar16 = pcVar7 + 1;\n        __string = pcVar16;\n        cVar4 = DAT_00039240;\n      }\n      pcVar16 = (char *)re_search(__preg,__string,(int)pcVar14 - (int)__string,\n                                  (int)pcVar16 - (int)__string,(int)pcVar14 - (int)pcVar16,__regs);\n      if (-1 < (int)pcVar16) {\nLAB_0001c1f7:\n        pcVar16 = __string + ((int)pcVar16 - (int)param_4);\n        if ((param_8 != 0) && (param_7->num_regs != 0)) {\n          prVar10 = param_7->start;\n          prVar2 = param_7->end;\n          uVar15 = 0;\n          do {\n            while( true ) {\n              iVar5 = prVar10[uVar15];\n              if (-1 < iVar5) {\n                prVar10[uVar15] = (regoff_t)(__string + (iVar5 - (int)param_4));\n              }\n              iVar5 = prVar2[uVar15];\n              if (iVar5 < 0) break;\n              prVar2[uVar15] = (regoff_t)(__string + (iVar5 - (int)param_4));\n              uVar15 = uVar15 + 1;\n              if (param_7->num_regs <= uVar15) goto LAB_0001c317;\n            }\n            uVar15 = uVar15 + 1;\n          } while (uVar15 < param_7->num_regs);\n        }\n      }\n    }" { (labeled_statement "LAB_0001c100:\n      cVar4 = DAT_00039240;" statement_identifier : (expression_statement "cVar4 = DAT_00039240;" (assignment_expression "cVar4 = DAT_00039240" identifier = identifier) ;)) (if_statement "if (DAT_00039240 == '\n') goto LAB_0001c2e6;" if (parenthesized_expression "(DAT_00039240 == '\n')" ( (binary_expression "DAT_00039240 == '\n'" identifier == (char_literal "'\n'" ' escape_sequence ')) )) (goto_statement "goto LAB_0001c2e6;" goto statement_identifier ;)) (expression_statement "__string = param_4;" (assignment_expression "__string = param_4" identifier = identifier) ;) (if_statement "if (param_6 != 0) {\n        pvVar6 = memrchr(param_4,(int)DAT_00039240,param_6);\n        __string = (char *)((int)pvVar6 + 1);\n        if (pvVar6 == (void *)0x0) {\n          __string = param_4;\n        }\n      }" if (parenthesized_expression "(param_6 != 0)" ( (binary_expression "param_6 != 0" identifier != number_literal) )) (compound_statement "{\n        pvVar6 = memrchr(param_4,(int)DAT_00039240,param_6);\n        __string = (char *)((int)pvVar6 + 1);\n        if (pvVar6 == (void *)0x0) {\n          __string = param_4;\n        }\n      }" { (expression_statement "pvVar6 = memrchr(param_4,(int)DAT_00039240,param_6);" (assignment_expression "pvVar6 = memrchr(param_4,(int)DAT_00039240,param_6)" identifier = (call_expression "memrchr(param_4,(int)DAT_00039240,param_6)" identifier (argument_list "(param_4,(int)DAT_00039240,param_6)" ( identifier , (cast_expression "(int)DAT_00039240" ( (type_descriptor "int" primitive_type) ) identifier) , identifier )))) ;) (expression_statement "__string = (char *)((int)pvVar6 + 1);" (assignment_expression "__string = (char *)((int)pvVar6 + 1)" identifier = (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) )))) ;) (if_statement "if (pvVar6 == (void *)0x0) {\n          __string = param_4;\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          __string = param_4;\n        }" { (expression_statement "__string = param_4;" (assignment_expression "__string = param_4" identifier = identifier) ;) })) })) (expression_statement "pcVar16 = param_4 + param_6;" (assignment_expression "pcVar16 = param_4 + param_6" identifier = (binary_expression "param_4 + param_6" identifier + identifier)) ;) (expression_statement "__regs = (re_registers *)0x0;" (assignment_expression "__regs = (re_registers *)0x0" identifier = (cast_expression "(re_registers *)0x0" ( (type_descriptor "re_registers *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (if_statement "if (param_8 != 0) {\n        __regs = param_7;\n      }" if (parenthesized_expression "(param_8 != 0)" ( (binary_expression "param_8 != 0" identifier != number_literal) )) (compound_statement "{\n        __regs = param_7;\n      }" { (expression_statement "__regs = param_7;" (assignment_expression "__regs = param_7" identifier = identifier) ;) })) (expression_statement "pcVar14 = param_4 + param_5;" (assignment_expression "pcVar14 = param_4 + param_5" identifier = (binary_expression "param_4 + param_5" identifier + identifier)) ;) (while_statement "while( true ) {\n        pcVar7 = (char *)FUN_0002b7a0(__string,(int)cVar4,(int)pcVar14 - (int)__string);\n        if (pcVar7 == (char *)0x0) break;\n        pcVar16 = (char *)re_search(__preg,__string,(int)pcVar7 - (int)__string,\n                                    (int)pcVar16 - (int)__string,(int)pcVar7 - (int)pcVar16,__regs);\n        if (-1 < (int)pcVar16) goto LAB_0001c1f7;\n        if (pcVar7 == pcVar14) goto LAB_0001c317;\n        pcVar16 = pcVar7 + 1;\n        __string = pcVar16;\n        cVar4 = DAT_00039240;\n      }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n        pcVar7 = (char *)FUN_0002b7a0(__string,(int)cVar4,(int)pcVar14 - (int)__string);\n        if (pcVar7 == (char *)0x0) break;\n        pcVar16 = (char *)re_search(__preg,__string,(int)pcVar7 - (int)__string,\n                                    (int)pcVar16 - (int)__string,(int)pcVar7 - (int)pcVar16,__regs);\n        if (-1 < (int)pcVar16) goto LAB_0001c1f7;\n        if (pcVar7 == pcVar14) goto LAB_0001c317;\n        pcVar16 = pcVar7 + 1;\n        __string = pcVar16;\n        cVar4 = DAT_00039240;\n      }" { (expression_statement "pcVar7 = (char *)FUN_0002b7a0(__string,(int)cVar4,(int)pcVar14 - (int)__string);" (assignment_expression "pcVar7 = (char *)FUN_0002b7a0(__string,(int)cVar4,(int)pcVar14 - (int)__string)" identifier = (cast_expression "(char *)FUN_0002b7a0(__string,(int)cVar4,(int)pcVar14 - (int)__string)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_0002b7a0(__string,(int)cVar4,(int)pcVar14 - (int)__string)" identifier (argument_list "(__string,(int)cVar4,(int)pcVar14 - (int)__string)" ( identifier , (cast_expression "(int)cVar4" ( (type_descriptor "int" primitive_type) ) identifier) , (binary_expression "(int)pcVar14 - (int)__string" (cast_expression "(int)pcVar14" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)__string" ( (type_descriptor "int" primitive_type) ) identifier)) ))))) ;) (if_statement "if (pcVar7 == (char *)0x0) break;" if (parenthesized_expression "(pcVar7 == (char *)0x0)" ( (binary_expression "pcVar7 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (break_statement "break;" break ;)) (expression_statement "pcVar16 = (char *)re_search(__preg,__string,(int)pcVar7 - (int)__string,\n                                    (int)pcVar16 - (int)__string,(int)pcVar7 - (int)pcVar16,__regs);" (assignment_expression "pcVar16 = (char *)re_search(__preg,__string,(int)pcVar7 - (int)__string,\n                                    (int)pcVar16 - (int)__string,(int)pcVar7 - (int)pcVar16,__regs)" identifier = (cast_expression "(char *)re_search(__preg,__string,(int)pcVar7 - (int)__string,\n                                    (int)pcVar16 - (int)__string,(int)pcVar7 - (int)pcVar16,__regs)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "re_search(__preg,__string,(int)pcVar7 - (int)__string,\n                                    (int)pcVar16 - (int)__string,(int)pcVar7 - (int)pcVar16,__regs)" identifier (argument_list "(__preg,__string,(int)pcVar7 - (int)__string,\n                                    (int)pcVar16 - (int)__string,(int)pcVar7 - (int)pcVar16,__regs)" ( identifier , identifier , (binary_expression "(int)pcVar7 - (int)__string" (cast_expression "(int)pcVar7" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)__string" ( (type_descriptor "int" primitive_type) ) identifier)) , (binary_expression "(int)pcVar16 - (int)__string" (cast_expression "(int)pcVar16" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)__string" ( (type_descriptor "int" primitive_type) ) identifier)) , (binary_expression "(int)pcVar7 - (int)pcVar16" (cast_expression "(int)pcVar7" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)pcVar16" ( (type_descriptor "int" primitive_type) ) identifier)) , identifier ))))) ;) (if_statement "if (-1 < (int)pcVar16) goto LAB_0001c1f7;" if (parenthesized_expression "(-1 < (int)pcVar16)" ( (binary_expression "-1 < (int)pcVar16" number_literal < (cast_expression "(int)pcVar16" ( (type_descriptor "int" primitive_type) ) identifier)) )) (goto_statement "goto LAB_0001c1f7;" goto statement_identifier ;)) (if_statement "if (pcVar7 == pcVar14) goto LAB_0001c317;" if (parenthesized_expression "(pcVar7 == pcVar14)" ( (binary_expression "pcVar7 == pcVar14" identifier == identifier) )) (goto_statement "goto LAB_0001c317;" goto statement_identifier ;)) (expression_statement "pcVar16 = pcVar7 + 1;" (assignment_expression "pcVar16 = pcVar7 + 1" identifier = (binary_expression "pcVar7 + 1" identifier + number_literal)) ;) (expression_statement "__string = pcVar16;" (assignment_expression "__string = pcVar16" identifier = identifier) ;) (expression_statement "cVar4 = DAT_00039240;" (assignment_expression "cVar4 = DAT_00039240" identifier = identifier) ;) })) (expression_statement "pcVar16 = (char *)re_search(__preg,__string,(int)pcVar14 - (int)__string,\n                                  (int)pcVar16 - (int)__string,(int)pcVar14 - (int)pcVar16,__regs);" (assignment_expression "pcVar16 = (char *)re_search(__preg,__string,(int)pcVar14 - (int)__string,\n                                  (int)pcVar16 - (int)__string,(int)pcVar14 - (int)pcVar16,__regs)" identifier = (cast_expression "(char *)re_search(__preg,__string,(int)pcVar14 - (int)__string,\n                                  (int)pcVar16 - (int)__string,(int)pcVar14 - (int)pcVar16,__regs)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "re_search(__preg,__string,(int)pcVar14 - (int)__string,\n                                  (int)pcVar16 - (int)__string,(int)pcVar14 - (int)pcVar16,__regs)" identifier (argument_list "(__preg,__string,(int)pcVar14 - (int)__string,\n                                  (int)pcVar16 - (int)__string,(int)pcVar14 - (int)pcVar16,__regs)" ( identifier , identifier , (binary_expression "(int)pcVar14 - (int)__string" (cast_expression "(int)pcVar14" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)__string" ( (type_descriptor "int" primitive_type) ) identifier)) , (binary_expression "(int)pcVar16 - (int)__string" (cast_expression "(int)pcVar16" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)__string" ( (type_descriptor "int" primitive_type) ) identifier)) , (binary_expression "(int)pcVar14 - (int)pcVar16" (cast_expression "(int)pcVar14" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)pcVar16" ( (type_descriptor "int" primitive_type) ) identifier)) , identifier ))))) ;) (if_statement "if (-1 < (int)pcVar16) {\nLAB_0001c1f7:\n        pcVar16 = __string + ((int)pcVar16 - (int)param_4);\n        if ((param_8 != 0) && (param_7->num_regs != 0)) {\n          prVar10 = param_7->start;\n          prVar2 = param_7->end;\n          uVar15 = 0;\n          do {\n            while( true ) {\n              iVar5 = prVar10[uVar15];\n              if (-1 < iVar5) {\n                prVar10[uVar15] = (regoff_t)(__string + (iVar5 - (int)param_4));\n              }\n              iVar5 = prVar2[uVar15];\n              if (iVar5 < 0) break;\n              prVar2[uVar15] = (regoff_t)(__string + (iVar5 - (int)param_4));\n              uVar15 = uVar15 + 1;\n              if (param_7->num_regs <= uVar15) goto LAB_0001c317;\n            }\n            uVar15 = uVar15 + 1;\n          } while (uVar15 < param_7->num_regs);\n        }\n      }" if (parenthesized_expression "(-1 < (int)pcVar16)" ( (binary_expression "-1 < (int)pcVar16" number_literal < (cast_expression "(int)pcVar16" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\nLAB_0001c1f7:\n        pcVar16 = __string + ((int)pcVar16 - (int)param_4);\n        if ((param_8 != 0) && (param_7->num_regs != 0)) {\n          prVar10 = param_7->start;\n          prVar2 = param_7->end;\n          uVar15 = 0;\n          do {\n            while( true ) {\n              iVar5 = prVar10[uVar15];\n              if (-1 < iVar5) {\n                prVar10[uVar15] = (regoff_t)(__string + (iVar5 - (int)param_4));\n              }\n              iVar5 = prVar2[uVar15];\n              if (iVar5 < 0) break;\n              prVar2[uVar15] = (regoff_t)(__string + (iVar5 - (int)param_4));\n              uVar15 = uVar15 + 1;\n              if (param_7->num_regs <= uVar15) goto LAB_0001c317;\n            }\n            uVar15 = uVar15 + 1;\n          } while (uVar15 < param_7->num_regs);\n        }\n      }" { (labeled_statement "LAB_0001c1f7:\n        pcVar16 = __string + ((int)pcVar16 - (int)param_4);" statement_identifier : (expression_statement "pcVar16 = __string + ((int)pcVar16 - (int)param_4);" (assignment_expression "pcVar16 = __string + ((int)pcVar16 - (int)param_4)" identifier = (binary_expression "__string + ((int)pcVar16 - (int)param_4)" identifier + (parenthesized_expression "((int)pcVar16 - (int)param_4)" ( (binary_expression "(int)pcVar16 - (int)param_4" (cast_expression "(int)pcVar16" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)param_4" ( (type_descriptor "int" primitive_type) ) identifier)) )))) ;)) (if_statement "if ((param_8 != 0) && (param_7->num_regs != 0)) {\n          prVar10 = param_7->start;\n          prVar2 = param_7->end;\n          uVar15 = 0;\n          do {\n            while( true ) {\n              iVar5 = prVar10[uVar15];\n              if (-1 < iVar5) {\n                prVar10[uVar15] = (regoff_t)(__string + (iVar5 - (int)param_4));\n              }\n              iVar5 = prVar2[uVar15];\n              if (iVar5 < 0) break;\n              prVar2[uVar15] = (regoff_t)(__string + (iVar5 - (int)param_4));\n              uVar15 = uVar15 + 1;\n              if (param_7->num_regs <= uVar15) goto LAB_0001c317;\n            }\n            uVar15 = uVar15 + 1;\n          } while (uVar15 < param_7->num_regs);\n        }" if (parenthesized_expression "((param_8 != 0) && (param_7->num_regs != 0))" ( (binary_expression "(param_8 != 0) && (param_7->num_regs != 0)" (parenthesized_expression "(param_8 != 0)" ( (binary_expression "param_8 != 0" identifier != number_literal) )) && (parenthesized_expression "(param_7->num_regs != 0)" ( (binary_expression "param_7->num_regs != 0" (field_expression "param_7->num_regs" identifier -> field_identifier) != number_literal) ))) )) (compound_statement "{\n          prVar10 = param_7->start;\n          prVar2 = param_7->end;\n          uVar15 = 0;\n          do {\n            while( true ) {\n              iVar5 = prVar10[uVar15];\n              if (-1 < iVar5) {\n                prVar10[uVar15] = (regoff_t)(__string + (iVar5 - (int)param_4));\n              }\n              iVar5 = prVar2[uVar15];\n              if (iVar5 < 0) break;\n              prVar2[uVar15] = (regoff_t)(__string + (iVar5 - (int)param_4));\n              uVar15 = uVar15 + 1;\n              if (param_7->num_regs <= uVar15) goto LAB_0001c317;\n            }\n            uVar15 = uVar15 + 1;\n          } while (uVar15 < param_7->num_regs);\n        }" { (expression_statement "prVar10 = param_7->start;" (assignment_expression "prVar10 = param_7->start" identifier = (field_expression "param_7->start" identifier -> field_identifier)) ;) (expression_statement "prVar2 = param_7->end;" (assignment_expression "prVar2 = param_7->end" identifier = (field_expression "param_7->end" identifier -> field_identifier)) ;) (expression_statement "uVar15 = 0;" (assignment_expression "uVar15 = 0" identifier = number_literal) ;) (do_statement "do {\n            while( true ) {\n              iVar5 = prVar10[uVar15];\n              if (-1 < iVar5) {\n                prVar10[uVar15] = (regoff_t)(__string + (iVar5 - (int)param_4));\n              }\n              iVar5 = prVar2[uVar15];\n              if (iVar5 < 0) break;\n              prVar2[uVar15] = (regoff_t)(__string + (iVar5 - (int)param_4));\n              uVar15 = uVar15 + 1;\n              if (param_7->num_regs <= uVar15) goto LAB_0001c317;\n            }\n            uVar15 = uVar15 + 1;\n          } while (uVar15 < param_7->num_regs);" do (compound_statement "{\n            while( true ) {\n              iVar5 = prVar10[uVar15];\n              if (-1 < iVar5) {\n                prVar10[uVar15] = (regoff_t)(__string + (iVar5 - (int)param_4));\n              }\n              iVar5 = prVar2[uVar15];\n              if (iVar5 < 0) break;\n              prVar2[uVar15] = (regoff_t)(__string + (iVar5 - (int)param_4));\n              uVar15 = uVar15 + 1;\n              if (param_7->num_regs <= uVar15) goto LAB_0001c317;\n            }\n            uVar15 = uVar15 + 1;\n          }" { (while_statement "while( true ) {\n              iVar5 = prVar10[uVar15];\n              if (-1 < iVar5) {\n                prVar10[uVar15] = (regoff_t)(__string + (iVar5 - (int)param_4));\n              }\n              iVar5 = prVar2[uVar15];\n              if (iVar5 < 0) break;\n              prVar2[uVar15] = (regoff_t)(__string + (iVar5 - (int)param_4));\n              uVar15 = uVar15 + 1;\n              if (param_7->num_regs <= uVar15) goto LAB_0001c317;\n            }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n              iVar5 = prVar10[uVar15];\n              if (-1 < iVar5) {\n                prVar10[uVar15] = (regoff_t)(__string + (iVar5 - (int)param_4));\n              }\n              iVar5 = prVar2[uVar15];\n              if (iVar5 < 0) break;\n              prVar2[uVar15] = (regoff_t)(__string + (iVar5 - (int)param_4));\n              uVar15 = uVar15 + 1;\n              if (param_7->num_regs <= uVar15) goto LAB_0001c317;\n            }" { (expression_statement "iVar5 = prVar10[uVar15];" (assignment_expression "iVar5 = prVar10[uVar15]" identifier = (subscript_expression "prVar10[uVar15]" identifier [ identifier ])) ;) (if_statement "if (-1 < iVar5) {\n                prVar10[uVar15] = (regoff_t)(__string + (iVar5 - (int)param_4));\n              }" if (parenthesized_expression "(-1 < iVar5)" ( (binary_expression "-1 < iVar5" number_literal < identifier) )) (compound_statement "{\n                prVar10[uVar15] = (regoff_t)(__string + (iVar5 - (int)param_4));\n              }" { (expression_statement "prVar10[uVar15] = (regoff_t)(__string + (iVar5 - (int)param_4));" (assignment_expression "prVar10[uVar15] = (regoff_t)(__string + (iVar5 - (int)param_4))" (subscript_expression "prVar10[uVar15]" identifier [ identifier ]) = (call_expression "(regoff_t)(__string + (iVar5 - (int)param_4))" (parenthesized_expression "(regoff_t)" ( identifier )) (argument_list "(__string + (iVar5 - (int)param_4))" ( (binary_expression "__string + (iVar5 - (int)param_4)" identifier + (parenthesized_expression "(iVar5 - (int)param_4)" ( (binary_expression "iVar5 - (int)param_4" identifier - (cast_expression "(int)param_4" ( (type_descriptor "int" primitive_type) ) identifier)) ))) )))) ;) })) (expression_statement "iVar5 = prVar2[uVar15];" (assignment_expression "iVar5 = prVar2[uVar15]" identifier = (subscript_expression "prVar2[uVar15]" identifier [ identifier ])) ;) (if_statement "if (iVar5 < 0) break;" if (parenthesized_expression "(iVar5 < 0)" ( (binary_expression "iVar5 < 0" identifier < number_literal) )) (break_statement "break;" break ;)) (expression_statement "prVar2[uVar15] = (regoff_t)(__string + (iVar5 - (int)param_4));" (assignment_expression "prVar2[uVar15] = (regoff_t)(__string + (iVar5 - (int)param_4))" (subscript_expression "prVar2[uVar15]" identifier [ identifier ]) = (call_expression "(regoff_t)(__string + (iVar5 - (int)param_4))" (parenthesized_expression "(regoff_t)" ( identifier )) (argument_list "(__string + (iVar5 - (int)param_4))" ( (binary_expression "__string + (iVar5 - (int)param_4)" identifier + (parenthesized_expression "(iVar5 - (int)param_4)" ( (binary_expression "iVar5 - (int)param_4" identifier - (cast_expression "(int)param_4" ( (type_descriptor "int" primitive_type) ) identifier)) ))) )))) ;) (expression_statement "uVar15 = uVar15 + 1;" (assignment_expression "uVar15 = uVar15 + 1" identifier = (binary_expression "uVar15 + 1" identifier + number_literal)) ;) (if_statement "if (param_7->num_regs <= uVar15) goto LAB_0001c317;" if (parenthesized_expression "(param_7->num_regs <= uVar15)" ( (binary_expression "param_7->num_regs <= uVar15" (field_expression "param_7->num_regs" identifier -> field_identifier) <= identifier) )) (goto_statement "goto LAB_0001c317;" goto statement_identifier ;)) })) (expression_statement "uVar15 = uVar15 + 1;" (assignment_expression "uVar15 = uVar15 + 1" identifier = (binary_expression "uVar15 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar15 < param_7->num_regs)" ( (binary_expression "uVar15 < param_7->num_regs" identifier < (field_expression "param_7->num_regs" identifier -> field_identifier)) )) ;) })) })) })))) (labeled_statement "LAB_0001c317:\n    uVar15 = ~(uint)pcVar16 >> 0x1f;" statement_identifier : (expression_statement "uVar15 = ~(uint)pcVar16 >> 0x1f;" (assignment_expression "uVar15 = ~(uint)pcVar16 >> 0x1f" identifier = (binary_expression "~(uint)pcVar16 >> 0x1f" (unary_expression "~(uint)pcVar16" ~ (cast_expression "(uint)pcVar16" ( (type_descriptor "uint" type_identifier) ) identifier)) >> number_literal)) ;)) }))) (labeled_statement "LAB_0001c07a:\n  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    \n    FUN_0002c430();\n  }" statement_identifier : (if_statement "if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    \n    FUN_0002c430();\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_0002c430();\n  }" { (expression_statement "FUN_0002c430();" (call_expression "FUN_0002c430()" identifier (argument_list "()" ( ))) ;) }))) (return_statement "return uVar15;" return identifier ;) })))
(translation_unit (function_definition TYPE (ERROR IDENT) (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE IDENT) ))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * 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 (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( LIT , (string_literal " string_content ") , LIT , IDENT )))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) })) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) }))) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( LIT , (string_literal " string_content ") , LIT , LIT )))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (field_expression IDENT -> field_identifier) & LIT) )) != LIT) )) && (parenthesized_expression ( (binary_expression IDENT != LIT) ))) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (field_expression (subscript_expression IDENT [ LIT ]) . field_identifier) != LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (field_expression (subscript_expression IDENT [ LIT ]) . field_identifier) ))) ;) (expression_statement (call_expression IDENT (argument_list ( (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (field_expression (subscript_expression IDENT [ LIT ]) . field_identifier)) ))) ;) (expression_statement (assignment_expression (field_expression (subscript_expression IDENT [ LIT ]) . field_identifier) = LIT) ;) })) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) })) (expression_statement (assignment_expression IDENT = (field_expression (subscript_expression IDENT [ LIT ]) . field_identifier)) ;) (expression_statement (assignment_expression (field_expression IDENT -> field_identifier) = (binary_expression (binary_expression (field_expression IDENT -> field_identifier) & LIT) | LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier short)) ) IDENT) != LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) (pointer_expression & (field_expression (subscript_expression IDENT [ LIT ]) . field_identifier))) + LIT) )))) == (char_literal ' escape_sequence ')) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) (field_expression (subscript_expression IDENT [ LIT ]) . field_identifier)) & LIT) )) == LIT) )) (goto_statement goto statement_identifier ;)) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ (binary_expression IDENT - LIT) ]) != IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (binary_expression IDENT + IDENT) , (cast_expression ( (type_descriptor TYPE) ) IDENT) , (binary_expression IDENT - IDENT) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression IDENT - (cast_expression ( (type_descriptor TYPE) ) IDENT)) )) + LIT)) ;) })) })) }) (else_clause else (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) (field_expression (subscript_expression IDENT [ LIT ]) . field_identifier)) & LIT) )) == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (binary_expression IDENT + IDENT) , (cast_expression ( (type_descriptor TYPE) ) IDENT) , (binary_expression IDENT - IDENT) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT - (cast_expression ( (type_descriptor TYPE) ) IDENT))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) })) }))))) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (field_expression IDENT -> field_identifier))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( LIT , LIT ))))) ;) (expression_statement (assignment_expression (field_expression IDENT -> field_identifier) = IDENT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( LIT , LIT ))))) ;) (expression_statement (assignment_expression (field_expression IDENT -> field_identifier) = LIT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (field_expression IDENT -> field_identifier))) ;) (expression_statement (assignment_expression (field_expression IDENT -> field_identifier) = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (field_expression IDENT -> field_identifier))) ;) }))) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < (field_expression IDENT -> field_identifier)) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression (subscript_expression IDENT [ IDENT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ IDENT ]) = LIT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT < (field_expression IDENT -> field_identifier)) )) ;) })) })) (expression_statement (assignment_expression IDENT = LIT) ;) (goto_statement goto statement_identifier ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (field_expression (subscript_expression IDENT [ LIT ]) . field_identifier)) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT == LIT) )) && (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) (field_expression (subscript_expression IDENT [ LIT ]) . field_identifier)) & LIT) )) != LIT) ))) )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (char_literal ' escape_sequence ')) ;)) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (field_expression (subscript_expression IDENT [ LIT ]) . field_identifier) , IDENT , (binary_expression IDENT + IDENT) , LIT , LIT , (pointer_expression & IDENT) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (field_expression (subscript_expression IDENT [ LIT ]) . field_identifier)) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) & LIT)) ;)) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (char_literal ' escape_sequence ')) )) (goto_statement goto statement_identifier ;)) (goto_statement goto statement_identifier ;) })) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (char_literal ' escape_sequence ')) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (char_literal ' escape_sequence ')) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT , (binary_expression IDENT + IDENT) , LIT , LIT , (pointer_expression & IDENT) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (field_expression (subscript_expression IDENT [ LIT ]) . field_identifier)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) & LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (goto_statement goto statement_identifier ;)) (goto_statement goto statement_identifier ;) })) }))) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT , (binary_expression IDENT + IDENT) , LIT , LIT , LIT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE) ) (field_expression (subscript_expression IDENT [ LIT ]) . field_identifier)) & LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (goto_statement goto statement_identifier ;)) (goto_statement goto statement_identifier ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (goto_statement goto statement_identifier ;)) (goto_statement goto statement_identifier ;) })) }))) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = LIT) ;)) }) (else_clause else (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE) ) (field_expression (subscript_expression IDENT [ LIT ]) . field_identifier)) & LIT)) ;)) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;)) }))) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT , IDENT , (binary_expression IDENT - IDENT) , IDENT ))))) ;)) }) (else_clause else (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = IDENT) ;)) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (char_literal ' escape_sequence ')) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , (cast_expression ( (type_descriptor TYPE) ) IDENT) , IDENT )))) ;) (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 == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) })) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (while_statement while (parenthesized_expression ( BOOL )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( IDENT , (cast_expression ( (type_descriptor TYPE) ) IDENT) , (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) - (cast_expression ( (type_descriptor TYPE) ) IDENT)) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( IDENT , IDENT , (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) - (cast_expression ( (type_descriptor TYPE) ) IDENT)) , (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) - (cast_expression ( (type_descriptor TYPE) ) IDENT)) , (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) - (cast_expression ( (type_descriptor TYPE) ) IDENT)) , IDENT ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < (cast_expression ( (type_descriptor TYPE) ) IDENT)) )) (goto_statement goto statement_identifier ;)) (if_statement if (parenthesized_expression ( (binary_expression IDENT == IDENT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( IDENT , IDENT , (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) - (cast_expression ( (type_descriptor TYPE) ) IDENT)) , (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) - (cast_expression ( (type_descriptor TYPE) ) IDENT)) , (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) - (cast_expression ( (type_descriptor TYPE) ) IDENT)) , IDENT ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < (cast_expression ( (type_descriptor TYPE) ) IDENT)) )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) - (cast_expression ( (type_descriptor TYPE) ) IDENT)) )))) ;)) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT != LIT) )) && (parenthesized_expression ( (binary_expression (field_expression IDENT -> field_identifier) != LIT) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (field_expression IDENT -> field_identifier)) ;) (expression_statement (assignment_expression IDENT = (field_expression IDENT -> field_identifier)) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (do_statement do (compound_statement { (while_statement while (parenthesized_expression ( BOOL )) (compound_statement { (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ IDENT ])) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (compound_statement { (expression_statement (assignment_expression (subscript_expression IDENT [ IDENT ]) = (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT + (parenthesized_expression ( (binary_expression IDENT - (cast_expression ( (type_descriptor TYPE) ) IDENT)) ))) )))) ;) })) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ IDENT ])) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (break_statement break ;)) (expression_statement (assignment_expression (subscript_expression IDENT [ IDENT ]) = (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT + (parenthesized_expression ( (binary_expression IDENT - (cast_expression ( (type_descriptor TYPE) ) IDENT)) ))) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (field_expression IDENT -> field_identifier) <= IDENT) )) (goto_statement goto statement_identifier ;)) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT < (field_expression IDENT -> field_identifier)) )) ;) })) })) })))) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (binary_expression (unary_expression ~ (cast_expression ( (type_descriptor TYPE) ) IDENT)) >> LIT)) ;)) }))) (labeled_statement statement_identifier : (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 ;) })))
(function_definition "uint __regparm2\nFUN_0001bf50(undefined4 param_1,undefined4 param_2,re_pattern_buffer *param_3,char *param_4,\n            uint param_5,uint param_6,re_registers *param_7,int param_8)\n\n{\n  ulong uVar1;\n  regoff_t *prVar2;\n  reg_syntax_t rVar3;\n  re_pattern_buffer *__preg;\n  char cVar4;\n  int iVar5;\n  void *pvVar6;\n  re_registers *__regs;\n  char *pcVar7;\n  uint uVar8;\n  regoff_t *prVar10;\n  uint *puVar11;\n  undefined4 uVar12;\n  uint *puVar13;\n  char *pcVar14;\n  uint uVar15;\n  char *pcVar16;\n  char *__string;\n  int in_GS_OFFSET;\n  re_registers *local_40;\n  char local_21;\n  int local_20;\n  undefined4 uStack_14;\n  uchar *puVar9;\n  \n  uStack_14 = 0x1bf59;\n  local_40 = param_7;\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  if (param_3 == (re_pattern_buffer *)0x0) {\n    if (DAT_0003940c == (re_pattern_buffer *)0x0) {\n      uVar12 = dcgettext(0,"no previous regular expression",5,param_2);\n                    \n      FUN_000131f0(uVar12);\n    }\n  }\n  else {\n    DAT_0003940c = param_3;\n  }\n  __preg = DAT_0003940c;\n  if (0x7ffffffe < param_5) {\n    uVar12 = dcgettext(0,"regex input buffer length larger than INT_MAX",5,0);\n                    \n    FUN_0001c8c0(uVar12);\n  }\n  if (((DAT_0003940c->field_0x1c & 0x10) != 0) && (param_8 != 0)) {\n    if (DAT_0003940c[1].used != 0) {\n      FUN_000245c0(DAT_0003940c[1].used);\n      free((void *)__preg[1].used);\n      __preg[1].used = 0;\n    }\n    regfree(__preg);\n    FUN_0001bbc0();\n  }\n  rVar3 = __preg[1].syntax;\n  __preg->field_0x1c = __preg->field_0x1c & 0xf9 | 2;\n  if ((short)rVar3 != 0) {\n    if (*(char *)((int)&__preg[1].syntax + 1) == '\0') {\n      if (param_6 != 0) {\n        if (((uint)__preg[1].buffer & 4) == 0) goto LAB_0001c3a8;\n        if (param_4[param_6 - 1] != DAT_00039240) {\n          iVar5 = FUN_0002b7a0(param_4 + param_6,(int)DAT_00039240,param_5 - param_6);\n          if (iVar5 == 0) goto LAB_0001c3a8;\n          param_6 = (iVar5 - (int)param_4) + 1;\n        }\n      }\n    }\n    else if (((uint)__preg[1].buffer & 4) == 0) {\n      param_6 = param_5;\n    }\n    else {\n      iVar5 = FUN_0002b7a0(param_4 + param_6,(int)DAT_00039240,param_5 - param_6);\n      param_6 = iVar5 - (int)param_4;\n      if (iVar5 == 0) {\n        param_6 = param_5;\n      }\n    }\n    if (param_8 != 0) {\n      puVar13 = (uint *)param_7->start;\n      if (puVar13 == (uint *)0x0) {\n        prVar10 = (regoff_t *)FUN_00029ec0(1,4);\n        param_7->start = prVar10;\n        puVar11 = (uint *)FUN_00029ec0(1,4);\n        param_7->num_regs = 1;\n        puVar13 = (uint *)param_7->start;\n        param_7->end = (regoff_t *)puVar11;\n      }\n      else {\n        puVar11 = (uint *)param_7->end;\n      }\n      *puVar13 = param_6;\n      *puVar11 = param_6;\n      if (1 < param_7->num_regs) {\n        uVar15 = 1;\n        do {\n          puVar11[uVar15] = 0xffffffff;\n          puVar13[uVar15] = 0xffffffff;\n          uVar15 = uVar15 + 1;\n        } while (uVar15 < param_7->num_regs);\n      }\n    }\n    uVar15 = 1;\n    goto LAB_0001c07a;\n  }\n  if (param_6 == 0) {\n    uVar1 = __preg[1].used;\n    iVar5 = FUN_000245a0(uVar1);\n    if (iVar5 == 0) {\n      if ((param_8 == 0) && (((uint)__preg[1].buffer & 4) != 0)) {\nLAB_0001c345:\n        local_21 = '\0';\n        iVar5 = FUN_00024580(__preg[1].used,param_4,param_4 + param_5,1,0,&local_21);\n        if (iVar5 != 0) {\n          puVar9 = __preg[1].buffer;\nLAB_0001c36d:\n          uVar8 = (uint)puVar9 & 4;\n          if (uVar8 == 0) goto LAB_0001c398;\n          uVar15 = 1;\n          if (local_21 == '\0') goto LAB_0001c07a;\n          goto LAB_0001c2de;\n        }\n      }\n      else {\n        cVar4 = FUN_000245b0(uVar1);\n        if (cVar4 == '\0') goto LAB_0001c2d8;\n        local_21 = '\0';\n        iVar5 = FUN_00024580(uVar1,param_4,param_4 + param_5,1,0,&local_21);\n        if (iVar5 != 0) {\n          puVar9 = __preg[1].buffer;\n          uVar8 = (uint)puVar9 & 4;\n          if (param_8 == 0) goto LAB_0001c36d;\n          goto LAB_0001c2de;\n        }\n      }\n    }\n    else {\n      iVar5 = FUN_00024580(iVar5,param_4,param_4 + param_5,1,0,0);\n      if (iVar5 != 0) {\n        uVar15 = (uint)__preg[1].buffer & 4;\n        if (param_8 == 0) {\n          if (uVar15 != 0) goto LAB_0001c345;\n          goto LAB_0001c398;\n        }\n        if (uVar15 != 0) goto LAB_0001c100;\n        goto LAB_0001c2f2;\n      }\n    }\nLAB_0001c3a8:\n    uVar15 = 0;\n  }\n  else {\nLAB_0001c2d8:\n    uVar8 = (uint)__preg[1].buffer & 4;\nLAB_0001c2de:\n    if (uVar8 == 0) {\nLAB_0001c2e6:\n      if (param_8 == 0) {\nLAB_0001c398:\n        local_40 = (re_registers *)0x0;\n      }\nLAB_0001c2f2:\n      pcVar16 = (char *)re_search(__preg,param_4,param_5,param_6,param_5 - param_6,local_40);\n    }\n    else {\nLAB_0001c100:\n      cVar4 = DAT_00039240;\n      if (DAT_00039240 == '\n') goto LAB_0001c2e6;\n      __string = param_4;\n      if (param_6 != 0) {\n        pvVar6 = memrchr(param_4,(int)DAT_00039240,param_6);\n        __string = (char *)((int)pvVar6 + 1);\n        if (pvVar6 == (void *)0x0) {\n          __string = param_4;\n        }\n      }\n      pcVar16 = param_4 + param_6;\n      __regs = (re_registers *)0x0;\n      if (param_8 != 0) {\n        __regs = param_7;\n      }\n      pcVar14 = param_4 + param_5;\n      while( true ) {\n        pcVar7 = (char *)FUN_0002b7a0(__string,(int)cVar4,(int)pcVar14 - (int)__string);\n        if (pcVar7 == (char *)0x0) break;\n        pcVar16 = (char *)re_search(__preg,__string,(int)pcVar7 - (int)__string,\n                                    (int)pcVar16 - (int)__string,(int)pcVar7 - (int)pcVar16,__regs);\n        if (-1 < (int)pcVar16) goto LAB_0001c1f7;\n        if (pcVar7 == pcVar14) goto LAB_0001c317;\n        pcVar16 = pcVar7 + 1;\n        __string = pcVar16;\n        cVar4 = DAT_00039240;\n      }\n      pcVar16 = (char *)re_search(__preg,__string,(int)pcVar14 - (int)__string,\n                                  (int)pcVar16 - (int)__string,(int)pcVar14 - (int)pcVar16,__regs);\n      if (-1 < (int)pcVar16) {\nLAB_0001c1f7:\n        pcVar16 = __string + ((int)pcVar16 - (int)param_4);\n        if ((param_8 != 0) && (param_7->num_regs != 0)) {\n          prVar10 = param_7->start;\n          prVar2 = param_7->end;\n          uVar15 = 0;\n          do {\n            while( true ) {\n              iVar5 = prVar10[uVar15];\n              if (-1 < iVar5) {\n                prVar10[uVar15] = (regoff_t)(__string + (iVar5 - (int)param_4));\n              }\n              iVar5 = prVar2[uVar15];\n              if (iVar5 < 0) break;\n              prVar2[uVar15] = (regoff_t)(__string + (iVar5 - (int)param_4));\n              uVar15 = uVar15 + 1;\n              if (param_7->num_regs <= uVar15) goto LAB_0001c317;\n            }\n            uVar15 = uVar15 + 1;\n          } while (uVar15 < param_7->num_regs);\n        }\n      }\n    }\nLAB_0001c317:\n    uVar15 = ~(uint)pcVar16 >> 0x1f;\n  }\nLAB_0001c07a:\n  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    \n    FUN_0002c430();\n  }\n  return uVar15;\n}" (type_identifier "uint") (ERROR "__regparm2" (identifier "__regparm2")) (function_declarator "FUN_0001bf50(undefined4 param_1,undefined4 param_2,re_pattern_buffer *param_3,char *param_4,\n            uint param_5,uint param_6,re_registers *param_7,int param_8)" (identifier "FUN_0001bf50") (parameter_list "(undefined4 param_1,undefined4 param_2,re_pattern_buffer *param_3,char *param_4,\n            uint param_5,uint param_6,re_registers *param_7,int param_8)" (( "(") (parameter_declaration "undefined4 param_1" (type_identifier "undefined4") (identifier "param_1")) (, ",") (parameter_declaration "undefined4 param_2" (type_identifier "undefined4") (identifier "param_2")) (, ",") (parameter_declaration "re_pattern_buffer *param_3" (type_identifier "re_pattern_buffer") (pointer_declarator "*param_3" (* "*") (identifier "param_3"))) (, ",") (parameter_declaration "char *param_4" (primitive_type "char") (pointer_declarator "*param_4" (* "*") (identifier "param_4"))) (, ",") (parameter_declaration "uint param_5" (type_identifier "uint") (identifier "param_5")) (, ",") (parameter_declaration "uint param_6" (type_identifier "uint") (identifier "param_6")) (, ",") (parameter_declaration "re_registers *param_7" (type_identifier "re_registers") (pointer_declarator "*param_7" (* "*") (identifier "param_7"))) (, ",") (parameter_declaration "int param_8" (primitive_type "int") (identifier "param_8")) () ")"))) (compound_statement "{\n  ulong uVar1;\n  regoff_t *prVar2;\n  reg_syntax_t rVar3;\n  re_pattern_buffer *__preg;\n  char cVar4;\n  int iVar5;\n  void *pvVar6;\n  re_registers *__regs;\n  char *pcVar7;\n  uint uVar8;\n  regoff_t *prVar10;\n  uint *puVar11;\n  undefined4 uVar12;\n  uint *puVar13;\n  char *pcVar14;\n  uint uVar15;\n  char *pcVar16;\n  char *__string;\n  int in_GS_OFFSET;\n  re_registers *local_40;\n  char local_21;\n  int local_20;\n  undefined4 uStack_14;\n  uchar *puVar9;\n  \n  uStack_14 = 0x1bf59;\n  local_40 = param_7;\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  if (param_3 == (re_pattern_buffer *)0x0) {\n    if (DAT_0003940c == (re_pattern_buffer *)0x0) {\n      uVar12 = dcgettext(0,"no previous regular expression",5,param_2);\n                    \n      FUN_000131f0(uVar12);\n    }\n  }\n  else {\n    DAT_0003940c = param_3;\n  }\n  __preg = DAT_0003940c;\n  if (0x7ffffffe < param_5) {\n    uVar12 = dcgettext(0,"regex input buffer length larger than INT_MAX",5,0);\n                    \n    FUN_0001c8c0(uVar12);\n  }\n  if (((DAT_0003940c->field_0x1c & 0x10) != 0) && (param_8 != 0)) {\n    if (DAT_0003940c[1].used != 0) {\n      FUN_000245c0(DAT_0003940c[1].used);\n      free((void *)__preg[1].used);\n      __preg[1].used = 0;\n    }\n    regfree(__preg);\n    FUN_0001bbc0();\n  }\n  rVar3 = __preg[1].syntax;\n  __preg->field_0x1c = __preg->field_0x1c & 0xf9 | 2;\n  if ((short)rVar3 != 0) {\n    if (*(char *)((int)&__preg[1].syntax + 1) == '\0') {\n      if (param_6 != 0) {\n        if (((uint)__preg[1].buffer & 4) == 0) goto LAB_0001c3a8;\n        if (param_4[param_6 - 1] != DAT_00039240) {\n          iVar5 = FUN_0002b7a0(param_4 + param_6,(int)DAT_00039240,param_5 - param_6);\n          if (iVar5 == 0) goto LAB_0001c3a8;\n          param_6 = (iVar5 - (int)param_4) + 1;\n        }\n      }\n    }\n    else if (((uint)__preg[1].buffer & 4) == 0) {\n      param_6 = param_5;\n    }\n    else {\n      iVar5 = FUN_0002b7a0(param_4 + param_6,(int)DAT_00039240,param_5 - param_6);\n      param_6 = iVar5 - (int)param_4;\n      if (iVar5 == 0) {\n        param_6 = param_5;\n      }\n    }\n    if (param_8 != 0) {\n      puVar13 = (uint *)param_7->start;\n      if (puVar13 == (uint *)0x0) {\n        prVar10 = (regoff_t *)FUN_00029ec0(1,4);\n        param_7->start = prVar10;\n        puVar11 = (uint *)FUN_00029ec0(1,4);\n        param_7->num_regs = 1;\n        puVar13 = (uint *)param_7->start;\n        param_7->end = (regoff_t *)puVar11;\n      }\n      else {\n        puVar11 = (uint *)param_7->end;\n      }\n      *puVar13 = param_6;\n      *puVar11 = param_6;\n      if (1 < param_7->num_regs) {\n        uVar15 = 1;\n        do {\n          puVar11[uVar15] = 0xffffffff;\n          puVar13[uVar15] = 0xffffffff;\n          uVar15 = uVar15 + 1;\n        } while (uVar15 < param_7->num_regs);\n      }\n    }\n    uVar15 = 1;\n    goto LAB_0001c07a;\n  }\n  if (param_6 == 0) {\n    uVar1 = __preg[1].used;\n    iVar5 = FUN_000245a0(uVar1);\n    if (iVar5 == 0) {\n      if ((param_8 == 0) && (((uint)__preg[1].buffer & 4) != 0)) {\nLAB_0001c345:\n        local_21 = '\0';\n        iVar5 = FUN_00024580(__preg[1].used,param_4,param_4 + param_5,1,0,&local_21);\n        if (iVar5 != 0) {\n          puVar9 = __preg[1].buffer;\nLAB_0001c36d:\n          uVar8 = (uint)puVar9 & 4;\n          if (uVar8 == 0) goto LAB_0001c398;\n          uVar15 = 1;\n          if (local_21 == '\0') goto LAB_0001c07a;\n          goto LAB_0001c2de;\n        }\n      }\n      else {\n        cVar4 = FUN_000245b0(uVar1);\n        if (cVar4 == '\0') goto LAB_0001c2d8;\n        local_21 = '\0';\n        iVar5 = FUN_00024580(uVar1,param_4,param_4 + param_5,1,0,&local_21);\n        if (iVar5 != 0) {\n          puVar9 = __preg[1].buffer;\n          uVar8 = (uint)puVar9 & 4;\n          if (param_8 == 0) goto LAB_0001c36d;\n          goto LAB_0001c2de;\n        }\n      }\n    }\n    else {\n      iVar5 = FUN_00024580(iVar5,param_4,param_4 + param_5,1,0,0);\n      if (iVar5 != 0) {\n        uVar15 = (uint)__preg[1].buffer & 4;\n        if (param_8 == 0) {\n          if (uVar15 != 0) goto LAB_0001c345;\n          goto LAB_0001c398;\n        }\n        if (uVar15 != 0) goto LAB_0001c100;\n        goto LAB_0001c2f2;\n      }\n    }\nLAB_0001c3a8:\n    uVar15 = 0;\n  }\n  else {\nLAB_0001c2d8:\n    uVar8 = (uint)__preg[1].buffer & 4;\nLAB_0001c2de:\n    if (uVar8 == 0) {\nLAB_0001c2e6:\n      if (param_8 == 0) {\nLAB_0001c398:\n        local_40 = (re_registers *)0x0;\n      }\nLAB_0001c2f2:\n      pcVar16 = (char *)re_search(__preg,param_4,param_5,param_6,param_5 - param_6,local_40);\n    }\n    else {\nLAB_0001c100:\n      cVar4 = DAT_00039240;\n      if (DAT_00039240 == '\n') goto LAB_0001c2e6;\n      __string = param_4;\n      if (param_6 != 0) {\n        pvVar6 = memrchr(param_4,(int)DAT_00039240,param_6);\n        __string = (char *)((int)pvVar6 + 1);\n        if (pvVar6 == (void *)0x0) {\n          __string = param_4;\n        }\n      }\n      pcVar16 = param_4 + param_6;\n      __regs = (re_registers *)0x0;\n      if (param_8 != 0) {\n        __regs = param_7;\n      }\n      pcVar14 = param_4 + param_5;\n      while( true ) {\n        pcVar7 = (char *)FUN_0002b7a0(__string,(int)cVar4,(int)pcVar14 - (int)__string);\n        if (pcVar7 == (char *)0x0) break;\n        pcVar16 = (char *)re_search(__preg,__string,(int)pcVar7 - (int)__string,\n                                    (int)pcVar16 - (int)__string,(int)pcVar7 - (int)pcVar16,__regs);\n        if (-1 < (int)pcVar16) goto LAB_0001c1f7;\n        if (pcVar7 == pcVar14) goto LAB_0001c317;\n        pcVar16 = pcVar7 + 1;\n        __string = pcVar16;\n        cVar4 = DAT_00039240;\n      }\n      pcVar16 = (char *)re_search(__preg,__string,(int)pcVar14 - (int)__string,\n                                  (int)pcVar16 - (int)__string,(int)pcVar14 - (int)pcVar16,__regs);\n      if (-1 < (int)pcVar16) {\nLAB_0001c1f7:\n        pcVar16 = __string + ((int)pcVar16 - (int)param_4);\n        if ((param_8 != 0) && (param_7->num_regs != 0)) {\n          prVar10 = param_7->start;\n          prVar2 = param_7->end;\n          uVar15 = 0;\n          do {\n            while( true ) {\n              iVar5 = prVar10[uVar15];\n              if (-1 < iVar5) {\n                prVar10[uVar15] = (regoff_t)(__string + (iVar5 - (int)param_4));\n              }\n              iVar5 = prVar2[uVar15];\n              if (iVar5 < 0) break;\n              prVar2[uVar15] = (regoff_t)(__string + (iVar5 - (int)param_4));\n              uVar15 = uVar15 + 1;\n              if (param_7->num_regs <= uVar15) goto LAB_0001c317;\n            }\n            uVar15 = uVar15 + 1;\n          } while (uVar15 < param_7->num_regs);\n        }\n      }\n    }\nLAB_0001c317:\n    uVar15 = ~(uint)pcVar16 >> 0x1f;\n  }\nLAB_0001c07a:\n  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    \n    FUN_0002c430();\n  }\n  return uVar15;\n}" ({ "{") (declaration "ulong uVar1;" (type_identifier "ulong") (identifier "uVar1") (; ";")) (declaration "regoff_t *prVar2;" (type_identifier "regoff_t") (pointer_declarator "*prVar2" (* "*") (identifier "prVar2")) (; ";")) (declaration "reg_syntax_t rVar3;" (type_identifier "reg_syntax_t") (identifier "rVar3") (; ";")) (declaration "re_pattern_buffer *__preg;" (type_identifier "re_pattern_buffer") (pointer_declarator "*__preg" (* "*") (identifier "__preg")) (; ";")) (declaration "char cVar4;" (primitive_type "char") (identifier "cVar4") (; ";")) (declaration "int iVar5;" (primitive_type "int") (identifier "iVar5") (; ";")) (declaration "void *pvVar6;" (primitive_type "void") (pointer_declarator "*pvVar6" (* "*") (identifier "pvVar6")) (; ";")) (declaration "re_registers *__regs;" (type_identifier "re_registers") (pointer_declarator "*__regs" (* "*") (identifier "__regs")) (; ";")) (declaration "char *pcVar7;" (primitive_type "char") (pointer_declarator "*pcVar7" (* "*") (identifier "pcVar7")) (; ";")) (declaration "uint uVar8;" (type_identifier "uint") (identifier "uVar8") (; ";")) (declaration "regoff_t *prVar10;" (type_identifier "regoff_t") (pointer_declarator "*prVar10" (* "*") (identifier "prVar10")) (; ";")) (declaration "uint *puVar11;" (type_identifier "uint") (pointer_declarator "*puVar11" (* "*") (identifier "puVar11")) (; ";")) (declaration "undefined4 uVar12;" (type_identifier "undefined4") (identifier "uVar12") (; ";")) (declaration "uint *puVar13;" (type_identifier "uint") (pointer_declarator "*puVar13" (* "*") (identifier "puVar13")) (; ";")) (declaration "char *pcVar14;" (primitive_type "char") (pointer_declarator "*pcVar14" (* "*") (identifier "pcVar14")) (; ";")) (declaration "uint uVar15;" (type_identifier "uint") (identifier "uVar15") (; ";")) (declaration "char *pcVar16;" (primitive_type "char") (pointer_declarator "*pcVar16" (* "*") (identifier "pcVar16")) (; ";")) (declaration "char *__string;" (primitive_type "char") (pointer_declarator "*__string" (* "*") (identifier "__string")) (; ";")) (declaration "int in_GS_OFFSET;" (primitive_type "int") (identifier "in_GS_OFFSET") (; ";")) (declaration "re_registers *local_40;" (type_identifier "re_registers") (pointer_declarator "*local_40" (* "*") (identifier "local_40")) (; ";")) (declaration "char local_21;" (primitive_type "char") (identifier "local_21") (; ";")) (declaration "int local_20;" (primitive_type "int") (identifier "local_20") (; ";")) (declaration "undefined4 uStack_14;" (type_identifier "undefined4") (identifier "uStack_14") (; ";")) (declaration "uchar *puVar9;" (type_identifier "uchar") (pointer_declarator "*puVar9" (* "*") (identifier "puVar9")) (; ";")) (expression_statement "uStack_14 = 0x1bf59;" (assignment_expression "uStack_14 = 0x1bf59" (identifier "uStack_14") (= "=") (number_literal "0x1bf59")) (; ";")) (expression_statement "local_40 = param_7;" (assignment_expression "local_40 = param_7" (identifier "local_40") (= "=") (identifier "param_7")) (; ";")) (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")) () ")"))))) (; ";")) (if_statement "if (param_3 == (re_pattern_buffer *)0x0) {\n    if (DAT_0003940c == (re_pattern_buffer *)0x0) {\n      uVar12 = dcgettext(0,"no previous regular expression",5,param_2);\n                    \n      FUN_000131f0(uVar12);\n    }\n  }\n  else {\n    DAT_0003940c = param_3;\n  }" (if "if") (parenthesized_expression "(param_3 == (re_pattern_buffer *)0x0)" (( "(") (binary_expression "param_3 == (re_pattern_buffer *)0x0" (identifier "param_3") (== "==") (cast_expression "(re_pattern_buffer *)0x0" (( "(") (type_descriptor "re_pattern_buffer *" (type_identifier "re_pattern_buffer") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n    if (DAT_0003940c == (re_pattern_buffer *)0x0) {\n      uVar12 = dcgettext(0,"no previous regular expression",5,param_2);\n                    \n      FUN_000131f0(uVar12);\n    }\n  }" ({ "{") (if_statement "if (DAT_0003940c == (re_pattern_buffer *)0x0) {\n      uVar12 = dcgettext(0,"no previous regular expression",5,param_2);\n                    \n      FUN_000131f0(uVar12);\n    }" (if "if") (parenthesized_expression "(DAT_0003940c == (re_pattern_buffer *)0x0)" (( "(") (binary_expression "DAT_0003940c == (re_pattern_buffer *)0x0" (identifier "DAT_0003940c") (== "==") (cast_expression "(re_pattern_buffer *)0x0" (( "(") (type_descriptor "re_pattern_buffer *" (type_identifier "re_pattern_buffer") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n      uVar12 = dcgettext(0,"no previous regular expression",5,param_2);\n                    \n      FUN_000131f0(uVar12);\n    }" ({ "{") (expression_statement "uVar12 = dcgettext(0,"no previous regular expression",5,param_2);" (assignment_expression "uVar12 = dcgettext(0,"no previous regular expression",5,param_2)" (identifier "uVar12") (= "=") (call_expression "dcgettext(0,"no previous regular expression",5,param_2)" (identifier "dcgettext") (argument_list "(0,"no previous regular expression",5,param_2)" (( "(") (number_literal "0") (, ",") (string_literal ""no previous regular expression"" (" """) (string_content "no previous regular expression") (" """)) (, ",") (number_literal "5") (, ",") (identifier "param_2") () ")")))) (; ";")) (expression_statement "FUN_000131f0(uVar12);" (call_expression "FUN_000131f0(uVar12)" (identifier "FUN_000131f0") (argument_list "(uVar12)" (( "(") (identifier "uVar12") () ")"))) (; ";")) (} "}"))) (} "}")) (else_clause "else {\n    DAT_0003940c = param_3;\n  }" (else "else") (compound_statement "{\n    DAT_0003940c = param_3;\n  }" ({ "{") (expression_statement "DAT_0003940c = param_3;" (assignment_expression "DAT_0003940c = param_3" (identifier "DAT_0003940c") (= "=") (identifier "param_3")) (; ";")) (} "}")))) (expression_statement "__preg = DAT_0003940c;" (assignment_expression "__preg = DAT_0003940c" (identifier "__preg") (= "=") (identifier "DAT_0003940c")) (; ";")) (if_statement "if (0x7ffffffe < param_5) {\n    uVar12 = dcgettext(0,"regex input buffer length larger than INT_MAX",5,0);\n                    \n    FUN_0001c8c0(uVar12);\n  }" (if "if") (parenthesized_expression "(0x7ffffffe < param_5)" (( "(") (binary_expression "0x7ffffffe < param_5" (number_literal "0x7ffffffe") (< "<") (identifier "param_5")) () ")")) (compound_statement "{\n    uVar12 = dcgettext(0,"regex input buffer length larger than INT_MAX",5,0);\n                    \n    FUN_0001c8c0(uVar12);\n  }" ({ "{") (expression_statement "uVar12 = dcgettext(0,"regex input buffer length larger than INT_MAX",5,0);" (assignment_expression "uVar12 = dcgettext(0,"regex input buffer length larger than INT_MAX",5,0)" (identifier "uVar12") (= "=") (call_expression "dcgettext(0,"regex input buffer length larger than INT_MAX",5,0)" (identifier "dcgettext") (argument_list "(0,"regex input buffer length larger than INT_MAX",5,0)" (( "(") (number_literal "0") (, ",") (string_literal ""regex input buffer length larger than INT_MAX"" (" """) (string_content "regex input buffer length larger than INT_MAX") (" """)) (, ",") (number_literal "5") (, ",") (number_literal "0") () ")")))) (; ";")) (expression_statement "FUN_0001c8c0(uVar12);" (call_expression "FUN_0001c8c0(uVar12)" (identifier "FUN_0001c8c0") (argument_list "(uVar12)" (( "(") (identifier "uVar12") () ")"))) (; ";")) (} "}"))) (if_statement "if (((DAT_0003940c->field_0x1c & 0x10) != 0) && (param_8 != 0)) {\n    if (DAT_0003940c[1].used != 0) {\n      FUN_000245c0(DAT_0003940c[1].used);\n      free((void *)__preg[1].used);\n      __preg[1].used = 0;\n    }\n    regfree(__preg);\n    FUN_0001bbc0();\n  }" (if "if") (parenthesized_expression "(((DAT_0003940c->field_0x1c & 0x10) != 0) && (param_8 != 0))" (( "(") (binary_expression "((DAT_0003940c->field_0x1c & 0x10) != 0) && (param_8 != 0)" (parenthesized_expression "((DAT_0003940c->field_0x1c & 0x10) != 0)" (( "(") (binary_expression "(DAT_0003940c->field_0x1c & 0x10) != 0" (parenthesized_expression "(DAT_0003940c->field_0x1c & 0x10)" (( "(") (binary_expression "DAT_0003940c->field_0x1c & 0x10" (field_expression "DAT_0003940c->field_0x1c" (identifier "DAT_0003940c") (-> "->") (field_identifier "field_0x1c")) (& "&") (number_literal "0x10")) () ")")) (!= "!=") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "(param_8 != 0)" (( "(") (binary_expression "param_8 != 0" (identifier "param_8") (!= "!=") (number_literal "0")) () ")"))) () ")")) (compound_statement "{\n    if (DAT_0003940c[1].used != 0) {\n      FUN_000245c0(DAT_0003940c[1].used);\n      free((void *)__preg[1].used);\n      __preg[1].used = 0;\n    }\n    regfree(__preg);\n    FUN_0001bbc0();\n  }" ({ "{") (if_statement "if (DAT_0003940c[1].used != 0) {\n      FUN_000245c0(DAT_0003940c[1].used);\n      free((void *)__preg[1].used);\n      __preg[1].used = 0;\n    }" (if "if") (parenthesized_expression "(DAT_0003940c[1].used != 0)" (( "(") (binary_expression "DAT_0003940c[1].used != 0" (field_expression "DAT_0003940c[1].used" (subscript_expression "DAT_0003940c[1]" (identifier "DAT_0003940c") ([ "[") (number_literal "1") (] "]")) (. ".") (field_identifier "used")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n      FUN_000245c0(DAT_0003940c[1].used);\n      free((void *)__preg[1].used);\n      __preg[1].used = 0;\n    }" ({ "{") (expression_statement "FUN_000245c0(DAT_0003940c[1].used);" (call_expression "FUN_000245c0(DAT_0003940c[1].used)" (identifier "FUN_000245c0") (argument_list "(DAT_0003940c[1].used)" (( "(") (field_expression "DAT_0003940c[1].used" (subscript_expression "DAT_0003940c[1]" (identifier "DAT_0003940c") ([ "[") (number_literal "1") (] "]")) (. ".") (field_identifier "used")) () ")"))) (; ";")) (expression_statement "free((void *)__preg[1].used);" (call_expression "free((void *)__preg[1].used)" (identifier "free") (argument_list "((void *)__preg[1].used)" (( "(") (cast_expression "(void *)__preg[1].used" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (field_expression "__preg[1].used" (subscript_expression "__preg[1]" (identifier "__preg") ([ "[") (number_literal "1") (] "]")) (. ".") (field_identifier "used"))) () ")"))) (; ";")) (expression_statement "__preg[1].used = 0;" (assignment_expression "__preg[1].used = 0" (field_expression "__preg[1].used" (subscript_expression "__preg[1]" (identifier "__preg") ([ "[") (number_literal "1") (] "]")) (. ".") (field_identifier "used")) (= "=") (number_literal "0")) (; ";")) (} "}"))) (expression_statement "regfree(__preg);" (call_expression "regfree(__preg)" (identifier "regfree") (argument_list "(__preg)" (( "(") (identifier "__preg") () ")"))) (; ";")) (expression_statement "FUN_0001bbc0();" (call_expression "FUN_0001bbc0()" (identifier "FUN_0001bbc0") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}"))) (expression_statement "rVar3 = __preg[1].syntax;" (assignment_expression "rVar3 = __preg[1].syntax" (identifier "rVar3") (= "=") (field_expression "__preg[1].syntax" (subscript_expression "__preg[1]" (identifier "__preg") ([ "[") (number_literal "1") (] "]")) (. ".") (field_identifier "syntax"))) (; ";")) (expression_statement "__preg->field_0x1c = __preg->field_0x1c & 0xf9 | 2;" (assignment_expression "__preg->field_0x1c = __preg->field_0x1c & 0xf9 | 2" (field_expression "__preg->field_0x1c" (identifier "__preg") (-> "->") (field_identifier "field_0x1c")) (= "=") (binary_expression "__preg->field_0x1c & 0xf9 | 2" (binary_expression "__preg->field_0x1c & 0xf9" (field_expression "__preg->field_0x1c" (identifier "__preg") (-> "->") (field_identifier "field_0x1c")) (& "&") (number_literal "0xf9")) (| "|") (number_literal "2"))) (; ";")) (if_statement "if ((short)rVar3 != 0) {\n    if (*(char *)((int)&__preg[1].syntax + 1) == '\0') {\n      if (param_6 != 0) {\n        if (((uint)__preg[1].buffer & 4) == 0) goto LAB_0001c3a8;\n        if (param_4[param_6 - 1] != DAT_00039240) {\n          iVar5 = FUN_0002b7a0(param_4 + param_6,(int)DAT_00039240,param_5 - param_6);\n          if (iVar5 == 0) goto LAB_0001c3a8;\n          param_6 = (iVar5 - (int)param_4) + 1;\n        }\n      }\n    }\n    else if (((uint)__preg[1].buffer & 4) == 0) {\n      param_6 = param_5;\n    }\n    else {\n      iVar5 = FUN_0002b7a0(param_4 + param_6,(int)DAT_00039240,param_5 - param_6);\n      param_6 = iVar5 - (int)param_4;\n      if (iVar5 == 0) {\n        param_6 = param_5;\n      }\n    }\n    if (param_8 != 0) {\n      puVar13 = (uint *)param_7->start;\n      if (puVar13 == (uint *)0x0) {\n        prVar10 = (regoff_t *)FUN_00029ec0(1,4);\n        param_7->start = prVar10;\n        puVar11 = (uint *)FUN_00029ec0(1,4);\n        param_7->num_regs = 1;\n        puVar13 = (uint *)param_7->start;\n        param_7->end = (regoff_t *)puVar11;\n      }\n      else {\n        puVar11 = (uint *)param_7->end;\n      }\n      *puVar13 = param_6;\n      *puVar11 = param_6;\n      if (1 < param_7->num_regs) {\n        uVar15 = 1;\n        do {\n          puVar11[uVar15] = 0xffffffff;\n          puVar13[uVar15] = 0xffffffff;\n          uVar15 = uVar15 + 1;\n        } while (uVar15 < param_7->num_regs);\n      }\n    }\n    uVar15 = 1;\n    goto LAB_0001c07a;\n  }" (if "if") (parenthesized_expression "((short)rVar3 != 0)" (( "(") (binary_expression "(short)rVar3 != 0" (cast_expression "(short)rVar3" (( "(") (type_descriptor "short" (sized_type_specifier "short" (short "short"))) () ")") (identifier "rVar3")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n    if (*(char *)((int)&__preg[1].syntax + 1) == '\0') {\n      if (param_6 != 0) {\n        if (((uint)__preg[1].buffer & 4) == 0) goto LAB_0001c3a8;\n        if (param_4[param_6 - 1] != DAT_00039240) {\n          iVar5 = FUN_0002b7a0(param_4 + param_6,(int)DAT_00039240,param_5 - param_6);\n          if (iVar5 == 0) goto LAB_0001c3a8;\n          param_6 = (iVar5 - (int)param_4) + 1;\n        }\n      }\n    }\n    else if (((uint)__preg[1].buffer & 4) == 0) {\n      param_6 = param_5;\n    }\n    else {\n      iVar5 = FUN_0002b7a0(param_4 + param_6,(int)DAT_00039240,param_5 - param_6);\n      param_6 = iVar5 - (int)param_4;\n      if (iVar5 == 0) {\n        param_6 = param_5;\n      }\n    }\n    if (param_8 != 0) {\n      puVar13 = (uint *)param_7->start;\n      if (puVar13 == (uint *)0x0) {\n        prVar10 = (regoff_t *)FUN_00029ec0(1,4);\n        param_7->start = prVar10;\n        puVar11 = (uint *)FUN_00029ec0(1,4);\n        param_7->num_regs = 1;\n        puVar13 = (uint *)param_7->start;\n        param_7->end = (regoff_t *)puVar11;\n      }\n      else {\n        puVar11 = (uint *)param_7->end;\n      }\n      *puVar13 = param_6;\n      *puVar11 = param_6;\n      if (1 < param_7->num_regs) {\n        uVar15 = 1;\n        do {\n          puVar11[uVar15] = 0xffffffff;\n          puVar13[uVar15] = 0xffffffff;\n          uVar15 = uVar15 + 1;\n        } while (uVar15 < param_7->num_regs);\n      }\n    }\n    uVar15 = 1;\n    goto LAB_0001c07a;\n  }" ({ "{") (if_statement "if (*(char *)((int)&__preg[1].syntax + 1) == '\0') {\n      if (param_6 != 0) {\n        if (((uint)__preg[1].buffer & 4) == 0) goto LAB_0001c3a8;\n        if (param_4[param_6 - 1] != DAT_00039240) {\n          iVar5 = FUN_0002b7a0(param_4 + param_6,(int)DAT_00039240,param_5 - param_6);\n          if (iVar5 == 0) goto LAB_0001c3a8;\n          param_6 = (iVar5 - (int)param_4) + 1;\n        }\n      }\n    }\n    else if (((uint)__preg[1].buffer & 4) == 0) {\n      param_6 = param_5;\n    }\n    else {\n      iVar5 = FUN_0002b7a0(param_4 + param_6,(int)DAT_00039240,param_5 - param_6);\n      param_6 = iVar5 - (int)param_4;\n      if (iVar5 == 0) {\n        param_6 = param_5;\n      }\n    }" (if "if") (parenthesized_expression "(*(char *)((int)&__preg[1].syntax + 1) == '\0')" (( "(") (binary_expression "*(char *)((int)&__preg[1].syntax + 1) == '\0'" (pointer_expression "*(char *)((int)&__preg[1].syntax + 1)" (* "*") (cast_expression "(char *)((int)&__preg[1].syntax + 1)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)&__preg[1].syntax + 1)" (( "(") (binary_expression "(int)&__preg[1].syntax + 1" (cast_expression "(int)&__preg[1].syntax" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (pointer_expression "&__preg[1].syntax" (& "&") (field_expression "__preg[1].syntax" (subscript_expression "__preg[1]" (identifier "__preg") ([ "[") (number_literal "1") (] "]")) (. ".") (field_identifier "syntax")))) (+ "+") (number_literal "1")) () ")")))) (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n      if (param_6 != 0) {\n        if (((uint)__preg[1].buffer & 4) == 0) goto LAB_0001c3a8;\n        if (param_4[param_6 - 1] != DAT_00039240) {\n          iVar5 = FUN_0002b7a0(param_4 + param_6,(int)DAT_00039240,param_5 - param_6);\n          if (iVar5 == 0) goto LAB_0001c3a8;\n          param_6 = (iVar5 - (int)param_4) + 1;\n        }\n      }\n    }" ({ "{") (if_statement "if (param_6 != 0) {\n        if (((uint)__preg[1].buffer & 4) == 0) goto LAB_0001c3a8;\n        if (param_4[param_6 - 1] != DAT_00039240) {\n          iVar5 = FUN_0002b7a0(param_4 + param_6,(int)DAT_00039240,param_5 - param_6);\n          if (iVar5 == 0) goto LAB_0001c3a8;\n          param_6 = (iVar5 - (int)param_4) + 1;\n        }\n      }" (if "if") (parenthesized_expression "(param_6 != 0)" (( "(") (binary_expression "param_6 != 0" (identifier "param_6") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n        if (((uint)__preg[1].buffer & 4) == 0) goto LAB_0001c3a8;\n        if (param_4[param_6 - 1] != DAT_00039240) {\n          iVar5 = FUN_0002b7a0(param_4 + param_6,(int)DAT_00039240,param_5 - param_6);\n          if (iVar5 == 0) goto LAB_0001c3a8;\n          param_6 = (iVar5 - (int)param_4) + 1;\n        }\n      }" ({ "{") (if_statement "if (((uint)__preg[1].buffer & 4) == 0) goto LAB_0001c3a8;" (if "if") (parenthesized_expression "(((uint)__preg[1].buffer & 4) == 0)" (( "(") (binary_expression "((uint)__preg[1].buffer & 4) == 0" (parenthesized_expression "((uint)__preg[1].buffer & 4)" (( "(") (binary_expression "(uint)__preg[1].buffer & 4" (cast_expression "(uint)__preg[1].buffer" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (field_expression "__preg[1].buffer" (subscript_expression "__preg[1]" (identifier "__preg") ([ "[") (number_literal "1") (] "]")) (. ".") (field_identifier "buffer"))) (& "&") (number_literal "4")) () ")")) (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_0001c3a8;" (goto "goto") (statement_identifier "LAB_0001c3a8") (; ";"))) (if_statement "if (param_4[param_6 - 1] != DAT_00039240) {\n          iVar5 = FUN_0002b7a0(param_4 + param_6,(int)DAT_00039240,param_5 - param_6);\n          if (iVar5 == 0) goto LAB_0001c3a8;\n          param_6 = (iVar5 - (int)param_4) + 1;\n        }" (if "if") (parenthesized_expression "(param_4[param_6 - 1] != DAT_00039240)" (( "(") (binary_expression "param_4[param_6 - 1] != DAT_00039240" (subscript_expression "param_4[param_6 - 1]" (identifier "param_4") ([ "[") (binary_expression "param_6 - 1" (identifier "param_6") (- "-") (number_literal "1")) (] "]")) (!= "!=") (identifier "DAT_00039240")) () ")")) (compound_statement "{\n          iVar5 = FUN_0002b7a0(param_4 + param_6,(int)DAT_00039240,param_5 - param_6);\n          if (iVar5 == 0) goto LAB_0001c3a8;\n          param_6 = (iVar5 - (int)param_4) + 1;\n        }" ({ "{") (expression_statement "iVar5 = FUN_0002b7a0(param_4 + param_6,(int)DAT_00039240,param_5 - param_6);" (assignment_expression "iVar5 = FUN_0002b7a0(param_4 + param_6,(int)DAT_00039240,param_5 - param_6)" (identifier "iVar5") (= "=") (call_expression "FUN_0002b7a0(param_4 + param_6,(int)DAT_00039240,param_5 - param_6)" (identifier "FUN_0002b7a0") (argument_list "(param_4 + param_6,(int)DAT_00039240,param_5 - param_6)" (( "(") (binary_expression "param_4 + param_6" (identifier "param_4") (+ "+") (identifier "param_6")) (, ",") (cast_expression "(int)DAT_00039240" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "DAT_00039240")) (, ",") (binary_expression "param_5 - param_6" (identifier "param_5") (- "-") (identifier "param_6")) () ")")))) (; ";")) (if_statement "if (iVar5 == 0) goto LAB_0001c3a8;" (if "if") (parenthesized_expression "(iVar5 == 0)" (( "(") (binary_expression "iVar5 == 0" (identifier "iVar5") (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_0001c3a8;" (goto "goto") (statement_identifier "LAB_0001c3a8") (; ";"))) (expression_statement "param_6 = (iVar5 - (int)param_4) + 1;" (assignment_expression "param_6 = (iVar5 - (int)param_4) + 1" (identifier "param_6") (= "=") (binary_expression "(iVar5 - (int)param_4) + 1" (parenthesized_expression "(iVar5 - (int)param_4)" (( "(") (binary_expression "iVar5 - (int)param_4" (identifier "iVar5") (- "-") (cast_expression "(int)param_4" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_4"))) () ")")) (+ "+") (number_literal "1"))) (; ";")) (} "}"))) (} "}"))) (} "}")) (else_clause "else if (((uint)__preg[1].buffer & 4) == 0) {\n      param_6 = param_5;\n    }\n    else {\n      iVar5 = FUN_0002b7a0(param_4 + param_6,(int)DAT_00039240,param_5 - param_6);\n      param_6 = iVar5 - (int)param_4;\n      if (iVar5 == 0) {\n        param_6 = param_5;\n      }\n    }" (else "else") (if_statement "if (((uint)__preg[1].buffer & 4) == 0) {\n      param_6 = param_5;\n    }\n    else {\n      iVar5 = FUN_0002b7a0(param_4 + param_6,(int)DAT_00039240,param_5 - param_6);\n      param_6 = iVar5 - (int)param_4;\n      if (iVar5 == 0) {\n        param_6 = param_5;\n      }\n    }" (if "if") (parenthesized_expression "(((uint)__preg[1].buffer & 4) == 0)" (( "(") (binary_expression "((uint)__preg[1].buffer & 4) == 0" (parenthesized_expression "((uint)__preg[1].buffer & 4)" (( "(") (binary_expression "(uint)__preg[1].buffer & 4" (cast_expression "(uint)__preg[1].buffer" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (field_expression "__preg[1].buffer" (subscript_expression "__preg[1]" (identifier "__preg") ([ "[") (number_literal "1") (] "]")) (. ".") (field_identifier "buffer"))) (& "&") (number_literal "4")) () ")")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n      param_6 = param_5;\n    }" ({ "{") (expression_statement "param_6 = param_5;" (assignment_expression "param_6 = param_5" (identifier "param_6") (= "=") (identifier "param_5")) (; ";")) (} "}")) (else_clause "else {\n      iVar5 = FUN_0002b7a0(param_4 + param_6,(int)DAT_00039240,param_5 - param_6);\n      param_6 = iVar5 - (int)param_4;\n      if (iVar5 == 0) {\n        param_6 = param_5;\n      }\n    }" (else "else") (compound_statement "{\n      iVar5 = FUN_0002b7a0(param_4 + param_6,(int)DAT_00039240,param_5 - param_6);\n      param_6 = iVar5 - (int)param_4;\n      if (iVar5 == 0) {\n        param_6 = param_5;\n      }\n    }" ({ "{") (expression_statement "iVar5 = FUN_0002b7a0(param_4 + param_6,(int)DAT_00039240,param_5 - param_6);" (assignment_expression "iVar5 = FUN_0002b7a0(param_4 + param_6,(int)DAT_00039240,param_5 - param_6)" (identifier "iVar5") (= "=") (call_expression "FUN_0002b7a0(param_4 + param_6,(int)DAT_00039240,param_5 - param_6)" (identifier "FUN_0002b7a0") (argument_list "(param_4 + param_6,(int)DAT_00039240,param_5 - param_6)" (( "(") (binary_expression "param_4 + param_6" (identifier "param_4") (+ "+") (identifier "param_6")) (, ",") (cast_expression "(int)DAT_00039240" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "DAT_00039240")) (, ",") (binary_expression "param_5 - param_6" (identifier "param_5") (- "-") (identifier "param_6")) () ")")))) (; ";")) (expression_statement "param_6 = iVar5 - (int)param_4;" (assignment_expression "param_6 = iVar5 - (int)param_4" (identifier "param_6") (= "=") (binary_expression "iVar5 - (int)param_4" (identifier "iVar5") (- "-") (cast_expression "(int)param_4" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_4")))) (; ";")) (if_statement "if (iVar5 == 0) {\n        param_6 = param_5;\n      }" (if "if") (parenthesized_expression "(iVar5 == 0)" (( "(") (binary_expression "iVar5 == 0" (identifier "iVar5") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n        param_6 = param_5;\n      }" ({ "{") (expression_statement "param_6 = param_5;" (assignment_expression "param_6 = param_5" (identifier "param_6") (= "=") (identifier "param_5")) (; ";")) (} "}"))) (} "}")))))) (if_statement "if (param_8 != 0) {\n      puVar13 = (uint *)param_7->start;\n      if (puVar13 == (uint *)0x0) {\n        prVar10 = (regoff_t *)FUN_00029ec0(1,4);\n        param_7->start = prVar10;\n        puVar11 = (uint *)FUN_00029ec0(1,4);\n        param_7->num_regs = 1;\n        puVar13 = (uint *)param_7->start;\n        param_7->end = (regoff_t *)puVar11;\n      }\n      else {\n        puVar11 = (uint *)param_7->end;\n      }\n      *puVar13 = param_6;\n      *puVar11 = param_6;\n      if (1 < param_7->num_regs) {\n        uVar15 = 1;\n        do {\n          puVar11[uVar15] = 0xffffffff;\n          puVar13[uVar15] = 0xffffffff;\n          uVar15 = uVar15 + 1;\n        } while (uVar15 < param_7->num_regs);\n      }\n    }" (if "if") (parenthesized_expression "(param_8 != 0)" (( "(") (binary_expression "param_8 != 0" (identifier "param_8") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n      puVar13 = (uint *)param_7->start;\n      if (puVar13 == (uint *)0x0) {\n        prVar10 = (regoff_t *)FUN_00029ec0(1,4);\n        param_7->start = prVar10;\n        puVar11 = (uint *)FUN_00029ec0(1,4);\n        param_7->num_regs = 1;\n        puVar13 = (uint *)param_7->start;\n        param_7->end = (regoff_t *)puVar11;\n      }\n      else {\n        puVar11 = (uint *)param_7->end;\n      }\n      *puVar13 = param_6;\n      *puVar11 = param_6;\n      if (1 < param_7->num_regs) {\n        uVar15 = 1;\n        do {\n          puVar11[uVar15] = 0xffffffff;\n          puVar13[uVar15] = 0xffffffff;\n          uVar15 = uVar15 + 1;\n        } while (uVar15 < param_7->num_regs);\n      }\n    }" ({ "{") (expression_statement "puVar13 = (uint *)param_7->start;" (assignment_expression "puVar13 = (uint *)param_7->start" (identifier "puVar13") (= "=") (cast_expression "(uint *)param_7->start" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (field_expression "param_7->start" (identifier "param_7") (-> "->") (field_identifier "start")))) (; ";")) (if_statement "if (puVar13 == (uint *)0x0) {\n        prVar10 = (regoff_t *)FUN_00029ec0(1,4);\n        param_7->start = prVar10;\n        puVar11 = (uint *)FUN_00029ec0(1,4);\n        param_7->num_regs = 1;\n        puVar13 = (uint *)param_7->start;\n        param_7->end = (regoff_t *)puVar11;\n      }\n      else {\n        puVar11 = (uint *)param_7->end;\n      }" (if "if") (parenthesized_expression "(puVar13 == (uint *)0x0)" (( "(") (binary_expression "puVar13 == (uint *)0x0" (identifier "puVar13") (== "==") (cast_expression "(uint *)0x0" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n        prVar10 = (regoff_t *)FUN_00029ec0(1,4);\n        param_7->start = prVar10;\n        puVar11 = (uint *)FUN_00029ec0(1,4);\n        param_7->num_regs = 1;\n        puVar13 = (uint *)param_7->start;\n        param_7->end = (regoff_t *)puVar11;\n      }" ({ "{") (expression_statement "prVar10 = (regoff_t *)FUN_00029ec0(1,4);" (assignment_expression "prVar10 = (regoff_t *)FUN_00029ec0(1,4)" (identifier "prVar10") (= "=") (cast_expression "(regoff_t *)FUN_00029ec0(1,4)" (( "(") (type_descriptor "regoff_t *" (type_identifier "regoff_t") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_00029ec0(1,4)" (identifier "FUN_00029ec0") (argument_list "(1,4)" (( "(") (number_literal "1") (, ",") (number_literal "4") () ")"))))) (; ";")) (expression_statement "param_7->start = prVar10;" (assignment_expression "param_7->start = prVar10" (field_expression "param_7->start" (identifier "param_7") (-> "->") (field_identifier "start")) (= "=") (identifier "prVar10")) (; ";")) (expression_statement "puVar11 = (uint *)FUN_00029ec0(1,4);" (assignment_expression "puVar11 = (uint *)FUN_00029ec0(1,4)" (identifier "puVar11") (= "=") (cast_expression "(uint *)FUN_00029ec0(1,4)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_00029ec0(1,4)" (identifier "FUN_00029ec0") (argument_list "(1,4)" (( "(") (number_literal "1") (, ",") (number_literal "4") () ")"))))) (; ";")) (expression_statement "param_7->num_regs = 1;" (assignment_expression "param_7->num_regs = 1" (field_expression "param_7->num_regs" (identifier "param_7") (-> "->") (field_identifier "num_regs")) (= "=") (number_literal "1")) (; ";")) (expression_statement "puVar13 = (uint *)param_7->start;" (assignment_expression "puVar13 = (uint *)param_7->start" (identifier "puVar13") (= "=") (cast_expression "(uint *)param_7->start" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (field_expression "param_7->start" (identifier "param_7") (-> "->") (field_identifier "start")))) (; ";")) (expression_statement "param_7->end = (regoff_t *)puVar11;" (assignment_expression "param_7->end = (regoff_t *)puVar11" (field_expression "param_7->end" (identifier "param_7") (-> "->") (field_identifier "end")) (= "=") (cast_expression "(regoff_t *)puVar11" (( "(") (type_descriptor "regoff_t *" (type_identifier "regoff_t") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "puVar11"))) (; ";")) (} "}")) (else_clause "else {\n        puVar11 = (uint *)param_7->end;\n      }" (else "else") (compound_statement "{\n        puVar11 = (uint *)param_7->end;\n      }" ({ "{") (expression_statement "puVar11 = (uint *)param_7->end;" (assignment_expression "puVar11 = (uint *)param_7->end" (identifier "puVar11") (= "=") (cast_expression "(uint *)param_7->end" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (field_expression "param_7->end" (identifier "param_7") (-> "->") (field_identifier "end")))) (; ";")) (} "}")))) (expression_statement "*puVar13 = param_6;" (assignment_expression "*puVar13 = param_6" (pointer_expression "*puVar13" (* "*") (identifier "puVar13")) (= "=") (identifier "param_6")) (; ";")) (expression_statement "*puVar11 = param_6;" (assignment_expression "*puVar11 = param_6" (pointer_expression "*puVar11" (* "*") (identifier "puVar11")) (= "=") (identifier "param_6")) (; ";")) (if_statement "if (1 < param_7->num_regs) {\n        uVar15 = 1;\n        do {\n          puVar11[uVar15] = 0xffffffff;\n          puVar13[uVar15] = 0xffffffff;\n          uVar15 = uVar15 + 1;\n        } while (uVar15 < param_7->num_regs);\n      }" (if "if") (parenthesized_expression "(1 < param_7->num_regs)" (( "(") (binary_expression "1 < param_7->num_regs" (number_literal "1") (< "<") (field_expression "param_7->num_regs" (identifier "param_7") (-> "->") (field_identifier "num_regs"))) () ")")) (compound_statement "{\n        uVar15 = 1;\n        do {\n          puVar11[uVar15] = 0xffffffff;\n          puVar13[uVar15] = 0xffffffff;\n          uVar15 = uVar15 + 1;\n        } while (uVar15 < param_7->num_regs);\n      }" ({ "{") (expression_statement "uVar15 = 1;" (assignment_expression "uVar15 = 1" (identifier "uVar15") (= "=") (number_literal "1")) (; ";")) (do_statement "do {\n          puVar11[uVar15] = 0xffffffff;\n          puVar13[uVar15] = 0xffffffff;\n          uVar15 = uVar15 + 1;\n        } while (uVar15 < param_7->num_regs);" (do "do") (compound_statement "{\n          puVar11[uVar15] = 0xffffffff;\n          puVar13[uVar15] = 0xffffffff;\n          uVar15 = uVar15 + 1;\n        }" ({ "{") (expression_statement "puVar11[uVar15] = 0xffffffff;" (assignment_expression "puVar11[uVar15] = 0xffffffff" (subscript_expression "puVar11[uVar15]" (identifier "puVar11") ([ "[") (identifier "uVar15") (] "]")) (= "=") (number_literal "0xffffffff")) (; ";")) (expression_statement "puVar13[uVar15] = 0xffffffff;" (assignment_expression "puVar13[uVar15] = 0xffffffff" (subscript_expression "puVar13[uVar15]" (identifier "puVar13") ([ "[") (identifier "uVar15") (] "]")) (= "=") (number_literal "0xffffffff")) (; ";")) (expression_statement "uVar15 = uVar15 + 1;" (assignment_expression "uVar15 = uVar15 + 1" (identifier "uVar15") (= "=") (binary_expression "uVar15 + 1" (identifier "uVar15") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(uVar15 < param_7->num_regs)" (( "(") (binary_expression "uVar15 < param_7->num_regs" (identifier "uVar15") (< "<") (field_expression "param_7->num_regs" (identifier "param_7") (-> "->") (field_identifier "num_regs"))) () ")")) (; ";")) (} "}"))) (} "}"))) (expression_statement "uVar15 = 1;" (assignment_expression "uVar15 = 1" (identifier "uVar15") (= "=") (number_literal "1")) (; ";")) (goto_statement "goto LAB_0001c07a;" (goto "goto") (statement_identifier "LAB_0001c07a") (; ";")) (} "}"))) (if_statement "if (param_6 == 0) {\n    uVar1 = __preg[1].used;\n    iVar5 = FUN_000245a0(uVar1);\n    if (iVar5 == 0) {\n      if ((param_8 == 0) && (((uint)__preg[1].buffer & 4) != 0)) {\nLAB_0001c345:\n        local_21 = '\0';\n        iVar5 = FUN_00024580(__preg[1].used,param_4,param_4 + param_5,1,0,&local_21);\n        if (iVar5 != 0) {\n          puVar9 = __preg[1].buffer;\nLAB_0001c36d:\n          uVar8 = (uint)puVar9 & 4;\n          if (uVar8 == 0) goto LAB_0001c398;\n          uVar15 = 1;\n          if (local_21 == '\0') goto LAB_0001c07a;\n          goto LAB_0001c2de;\n        }\n      }\n      else {\n        cVar4 = FUN_000245b0(uVar1);\n        if (cVar4 == '\0') goto LAB_0001c2d8;\n        local_21 = '\0';\n        iVar5 = FUN_00024580(uVar1,param_4,param_4 + param_5,1,0,&local_21);\n        if (iVar5 != 0) {\n          puVar9 = __preg[1].buffer;\n          uVar8 = (uint)puVar9 & 4;\n          if (param_8 == 0) goto LAB_0001c36d;\n          goto LAB_0001c2de;\n        }\n      }\n    }\n    else {\n      iVar5 = FUN_00024580(iVar5,param_4,param_4 + param_5,1,0,0);\n      if (iVar5 != 0) {\n        uVar15 = (uint)__preg[1].buffer & 4;\n        if (param_8 == 0) {\n          if (uVar15 != 0) goto LAB_0001c345;\n          goto LAB_0001c398;\n        }\n        if (uVar15 != 0) goto LAB_0001c100;\n        goto LAB_0001c2f2;\n      }\n    }\nLAB_0001c3a8:\n    uVar15 = 0;\n  }\n  else {\nLAB_0001c2d8:\n    uVar8 = (uint)__preg[1].buffer & 4;\nLAB_0001c2de:\n    if (uVar8 == 0) {\nLAB_0001c2e6:\n      if (param_8 == 0) {\nLAB_0001c398:\n        local_40 = (re_registers *)0x0;\n      }\nLAB_0001c2f2:\n      pcVar16 = (char *)re_search(__preg,param_4,param_5,param_6,param_5 - param_6,local_40);\n    }\n    else {\nLAB_0001c100:\n      cVar4 = DAT_00039240;\n      if (DAT_00039240 == '\n') goto LAB_0001c2e6;\n      __string = param_4;\n      if (param_6 != 0) {\n        pvVar6 = memrchr(param_4,(int)DAT_00039240,param_6);\n        __string = (char *)((int)pvVar6 + 1);\n        if (pvVar6 == (void *)0x0) {\n          __string = param_4;\n        }\n      }\n      pcVar16 = param_4 + param_6;\n      __regs = (re_registers *)0x0;\n      if (param_8 != 0) {\n        __regs = param_7;\n      }\n      pcVar14 = param_4 + param_5;\n      while( true ) {\n        pcVar7 = (char *)FUN_0002b7a0(__string,(int)cVar4,(int)pcVar14 - (int)__string);\n        if (pcVar7 == (char *)0x0) break;\n        pcVar16 = (char *)re_search(__preg,__string,(int)pcVar7 - (int)__string,\n                                    (int)pcVar16 - (int)__string,(int)pcVar7 - (int)pcVar16,__regs);\n        if (-1 < (int)pcVar16) goto LAB_0001c1f7;\n        if (pcVar7 == pcVar14) goto LAB_0001c317;\n        pcVar16 = pcVar7 + 1;\n        __string = pcVar16;\n        cVar4 = DAT_00039240;\n      }\n      pcVar16 = (char *)re_search(__preg,__string,(int)pcVar14 - (int)__string,\n                                  (int)pcVar16 - (int)__string,(int)pcVar14 - (int)pcVar16,__regs);\n      if (-1 < (int)pcVar16) {\nLAB_0001c1f7:\n        pcVar16 = __string + ((int)pcVar16 - (int)param_4);\n        if ((param_8 != 0) && (param_7->num_regs != 0)) {\n          prVar10 = param_7->start;\n          prVar2 = param_7->end;\n          uVar15 = 0;\n          do {\n            while( true ) {\n              iVar5 = prVar10[uVar15];\n              if (-1 < iVar5) {\n                prVar10[uVar15] = (regoff_t)(__string + (iVar5 - (int)param_4));\n              }\n              iVar5 = prVar2[uVar15];\n              if (iVar5 < 0) break;\n              prVar2[uVar15] = (regoff_t)(__string + (iVar5 - (int)param_4));\n              uVar15 = uVar15 + 1;\n              if (param_7->num_regs <= uVar15) goto LAB_0001c317;\n            }\n            uVar15 = uVar15 + 1;\n          } while (uVar15 < param_7->num_regs);\n        }\n      }\n    }\nLAB_0001c317:\n    uVar15 = ~(uint)pcVar16 >> 0x1f;\n  }" (if "if") (parenthesized_expression "(param_6 == 0)" (( "(") (binary_expression "param_6 == 0" (identifier "param_6") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n    uVar1 = __preg[1].used;\n    iVar5 = FUN_000245a0(uVar1);\n    if (iVar5 == 0) {\n      if ((param_8 == 0) && (((uint)__preg[1].buffer & 4) != 0)) {\nLAB_0001c345:\n        local_21 = '\0';\n        iVar5 = FUN_00024580(__preg[1].used,param_4,param_4 + param_5,1,0,&local_21);\n        if (iVar5 != 0) {\n          puVar9 = __preg[1].buffer;\nLAB_0001c36d:\n          uVar8 = (uint)puVar9 & 4;\n          if (uVar8 == 0) goto LAB_0001c398;\n          uVar15 = 1;\n          if (local_21 == '\0') goto LAB_0001c07a;\n          goto LAB_0001c2de;\n        }\n      }\n      else {\n        cVar4 = FUN_000245b0(uVar1);\n        if (cVar4 == '\0') goto LAB_0001c2d8;\n        local_21 = '\0';\n        iVar5 = FUN_00024580(uVar1,param_4,param_4 + param_5,1,0,&local_21);\n        if (iVar5 != 0) {\n          puVar9 = __preg[1].buffer;\n          uVar8 = (uint)puVar9 & 4;\n          if (param_8 == 0) goto LAB_0001c36d;\n          goto LAB_0001c2de;\n        }\n      }\n    }\n    else {\n      iVar5 = FUN_00024580(iVar5,param_4,param_4 + param_5,1,0,0);\n      if (iVar5 != 0) {\n        uVar15 = (uint)__preg[1].buffer & 4;\n        if (param_8 == 0) {\n          if (uVar15 != 0) goto LAB_0001c345;\n          goto LAB_0001c398;\n        }\n        if (uVar15 != 0) goto LAB_0001c100;\n        goto LAB_0001c2f2;\n      }\n    }\nLAB_0001c3a8:\n    uVar15 = 0;\n  }" ({ "{") (expression_statement "uVar1 = __preg[1].used;" (assignment_expression "uVar1 = __preg[1].used" (identifier "uVar1") (= "=") (field_expression "__preg[1].used" (subscript_expression "__preg[1]" (identifier "__preg") ([ "[") (number_literal "1") (] "]")) (. ".") (field_identifier "used"))) (; ";")) (expression_statement "iVar5 = FUN_000245a0(uVar1);" (assignment_expression "iVar5 = FUN_000245a0(uVar1)" (identifier "iVar5") (= "=") (call_expression "FUN_000245a0(uVar1)" (identifier "FUN_000245a0") (argument_list "(uVar1)" (( "(") (identifier "uVar1") () ")")))) (; ";")) (if_statement "if (iVar5 == 0) {\n      if ((param_8 == 0) && (((uint)__preg[1].buffer & 4) != 0)) {\nLAB_0001c345:\n        local_21 = '\0';\n        iVar5 = FUN_00024580(__preg[1].used,param_4,param_4 + param_5,1,0,&local_21);\n        if (iVar5 != 0) {\n          puVar9 = __preg[1].buffer;\nLAB_0001c36d:\n          uVar8 = (uint)puVar9 & 4;\n          if (uVar8 == 0) goto LAB_0001c398;\n          uVar15 = 1;\n          if (local_21 == '\0') goto LAB_0001c07a;\n          goto LAB_0001c2de;\n        }\n      }\n      else {\n        cVar4 = FUN_000245b0(uVar1);\n        if (cVar4 == '\0') goto LAB_0001c2d8;\n        local_21 = '\0';\n        iVar5 = FUN_00024580(uVar1,param_4,param_4 + param_5,1,0,&local_21);\n        if (iVar5 != 0) {\n          puVar9 = __preg[1].buffer;\n          uVar8 = (uint)puVar9 & 4;\n          if (param_8 == 0) goto LAB_0001c36d;\n          goto LAB_0001c2de;\n        }\n      }\n    }\n    else {\n      iVar5 = FUN_00024580(iVar5,param_4,param_4 + param_5,1,0,0);\n      if (iVar5 != 0) {\n        uVar15 = (uint)__preg[1].buffer & 4;\n        if (param_8 == 0) {\n          if (uVar15 != 0) goto LAB_0001c345;\n          goto LAB_0001c398;\n        }\n        if (uVar15 != 0) goto LAB_0001c100;\n        goto LAB_0001c2f2;\n      }\n    }" (if "if") (parenthesized_expression "(iVar5 == 0)" (( "(") (binary_expression "iVar5 == 0" (identifier "iVar5") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n      if ((param_8 == 0) && (((uint)__preg[1].buffer & 4) != 0)) {\nLAB_0001c345:\n        local_21 = '\0';\n        iVar5 = FUN_00024580(__preg[1].used,param_4,param_4 + param_5,1,0,&local_21);\n        if (iVar5 != 0) {\n          puVar9 = __preg[1].buffer;\nLAB_0001c36d:\n          uVar8 = (uint)puVar9 & 4;\n          if (uVar8 == 0) goto LAB_0001c398;\n          uVar15 = 1;\n          if (local_21 == '\0') goto LAB_0001c07a;\n          goto LAB_0001c2de;\n        }\n      }\n      else {\n        cVar4 = FUN_000245b0(uVar1);\n        if (cVar4 == '\0') goto LAB_0001c2d8;\n        local_21 = '\0';\n        iVar5 = FUN_00024580(uVar1,param_4,param_4 + param_5,1,0,&local_21);\n        if (iVar5 != 0) {\n          puVar9 = __preg[1].buffer;\n          uVar8 = (uint)puVar9 & 4;\n          if (param_8 == 0) goto LAB_0001c36d;\n          goto LAB_0001c2de;\n        }\n      }\n    }" ({ "{") (if_statement "if ((param_8 == 0) && (((uint)__preg[1].buffer & 4) != 0)) {\nLAB_0001c345:\n        local_21 = '\0';\n        iVar5 = FUN_00024580(__preg[1].used,param_4,param_4 + param_5,1,0,&local_21);\n        if (iVar5 != 0) {\n          puVar9 = __preg[1].buffer;\nLAB_0001c36d:\n          uVar8 = (uint)puVar9 & 4;\n          if (uVar8 == 0) goto LAB_0001c398;\n          uVar15 = 1;\n          if (local_21 == '\0') goto LAB_0001c07a;\n          goto LAB_0001c2de;\n        }\n      }\n      else {\n        cVar4 = FUN_000245b0(uVar1);\n        if (cVar4 == '\0') goto LAB_0001c2d8;\n        local_21 = '\0';\n        iVar5 = FUN_00024580(uVar1,param_4,param_4 + param_5,1,0,&local_21);\n        if (iVar5 != 0) {\n          puVar9 = __preg[1].buffer;\n          uVar8 = (uint)puVar9 & 4;\n          if (param_8 == 0) goto LAB_0001c36d;\n          goto LAB_0001c2de;\n        }\n      }" (if "if") (parenthesized_expression "((param_8 == 0) && (((uint)__preg[1].buffer & 4) != 0))" (( "(") (binary_expression "(param_8 == 0) && (((uint)__preg[1].buffer & 4) != 0)" (parenthesized_expression "(param_8 == 0)" (( "(") (binary_expression "param_8 == 0" (identifier "param_8") (== "==") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "(((uint)__preg[1].buffer & 4) != 0)" (( "(") (binary_expression "((uint)__preg[1].buffer & 4) != 0" (parenthesized_expression "((uint)__preg[1].buffer & 4)" (( "(") (binary_expression "(uint)__preg[1].buffer & 4" (cast_expression "(uint)__preg[1].buffer" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (field_expression "__preg[1].buffer" (subscript_expression "__preg[1]" (identifier "__preg") ([ "[") (number_literal "1") (] "]")) (. ".") (field_identifier "buffer"))) (& "&") (number_literal "4")) () ")")) (!= "!=") (number_literal "0")) () ")"))) () ")")) (compound_statement "{\nLAB_0001c345:\n        local_21 = '\0';\n        iVar5 = FUN_00024580(__preg[1].used,param_4,param_4 + param_5,1,0,&local_21);\n        if (iVar5 != 0) {\n          puVar9 = __preg[1].buffer;\nLAB_0001c36d:\n          uVar8 = (uint)puVar9 & 4;\n          if (uVar8 == 0) goto LAB_0001c398;\n          uVar15 = 1;\n          if (local_21 == '\0') goto LAB_0001c07a;\n          goto LAB_0001c2de;\n        }\n      }" ({ "{") (labeled_statement "LAB_0001c345:\n        local_21 = '\0';" (statement_identifier "LAB_0001c345") (: ":") (expression_statement "local_21 = '\0';" (assignment_expression "local_21 = '\0'" (identifier "local_21") (= "=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) (; ";"))) (expression_statement "iVar5 = FUN_00024580(__preg[1].used,param_4,param_4 + param_5,1,0,&local_21);" (assignment_expression "iVar5 = FUN_00024580(__preg[1].used,param_4,param_4 + param_5,1,0,&local_21)" (identifier "iVar5") (= "=") (call_expression "FUN_00024580(__preg[1].used,param_4,param_4 + param_5,1,0,&local_21)" (identifier "FUN_00024580") (argument_list "(__preg[1].used,param_4,param_4 + param_5,1,0,&local_21)" (( "(") (field_expression "__preg[1].used" (subscript_expression "__preg[1]" (identifier "__preg") ([ "[") (number_literal "1") (] "]")) (. ".") (field_identifier "used")) (, ",") (identifier "param_4") (, ",") (binary_expression "param_4 + param_5" (identifier "param_4") (+ "+") (identifier "param_5")) (, ",") (number_literal "1") (, ",") (number_literal "0") (, ",") (pointer_expression "&local_21" (& "&") (identifier "local_21")) () ")")))) (; ";")) (if_statement "if (iVar5 != 0) {\n          puVar9 = __preg[1].buffer;\nLAB_0001c36d:\n          uVar8 = (uint)puVar9 & 4;\n          if (uVar8 == 0) goto LAB_0001c398;\n          uVar15 = 1;\n          if (local_21 == '\0') goto LAB_0001c07a;\n          goto LAB_0001c2de;\n        }" (if "if") (parenthesized_expression "(iVar5 != 0)" (( "(") (binary_expression "iVar5 != 0" (identifier "iVar5") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n          puVar9 = __preg[1].buffer;\nLAB_0001c36d:\n          uVar8 = (uint)puVar9 & 4;\n          if (uVar8 == 0) goto LAB_0001c398;\n          uVar15 = 1;\n          if (local_21 == '\0') goto LAB_0001c07a;\n          goto LAB_0001c2de;\n        }" ({ "{") (expression_statement "puVar9 = __preg[1].buffer;" (assignment_expression "puVar9 = __preg[1].buffer" (identifier "puVar9") (= "=") (field_expression "__preg[1].buffer" (subscript_expression "__preg[1]" (identifier "__preg") ([ "[") (number_literal "1") (] "]")) (. ".") (field_identifier "buffer"))) (; ";")) (labeled_statement "LAB_0001c36d:\n          uVar8 = (uint)puVar9 & 4;" (statement_identifier "LAB_0001c36d") (: ":") (expression_statement "uVar8 = (uint)puVar9 & 4;" (assignment_expression "uVar8 = (uint)puVar9 & 4" (identifier "uVar8") (= "=") (binary_expression "(uint)puVar9 & 4" (cast_expression "(uint)puVar9" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "puVar9")) (& "&") (number_literal "4"))) (; ";"))) (if_statement "if (uVar8 == 0) goto LAB_0001c398;" (if "if") (parenthesized_expression "(uVar8 == 0)" (( "(") (binary_expression "uVar8 == 0" (identifier "uVar8") (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_0001c398;" (goto "goto") (statement_identifier "LAB_0001c398") (; ";"))) (expression_statement "uVar15 = 1;" (assignment_expression "uVar15 = 1" (identifier "uVar15") (= "=") (number_literal "1")) (; ";")) (if_statement "if (local_21 == '\0') goto LAB_0001c07a;" (if "if") (parenthesized_expression "(local_21 == '\0')" (( "(") (binary_expression "local_21 == '\0'" (identifier "local_21") (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (goto_statement "goto LAB_0001c07a;" (goto "goto") (statement_identifier "LAB_0001c07a") (; ";"))) (goto_statement "goto LAB_0001c2de;" (goto "goto") (statement_identifier "LAB_0001c2de") (; ";")) (} "}"))) (} "}")) (else_clause "else {\n        cVar4 = FUN_000245b0(uVar1);\n        if (cVar4 == '\0') goto LAB_0001c2d8;\n        local_21 = '\0';\n        iVar5 = FUN_00024580(uVar1,param_4,param_4 + param_5,1,0,&local_21);\n        if (iVar5 != 0) {\n          puVar9 = __preg[1].buffer;\n          uVar8 = (uint)puVar9 & 4;\n          if (param_8 == 0) goto LAB_0001c36d;\n          goto LAB_0001c2de;\n        }\n      }" (else "else") (compound_statement "{\n        cVar4 = FUN_000245b0(uVar1);\n        if (cVar4 == '\0') goto LAB_0001c2d8;\n        local_21 = '\0';\n        iVar5 = FUN_00024580(uVar1,param_4,param_4 + param_5,1,0,&local_21);\n        if (iVar5 != 0) {\n          puVar9 = __preg[1].buffer;\n          uVar8 = (uint)puVar9 & 4;\n          if (param_8 == 0) goto LAB_0001c36d;\n          goto LAB_0001c2de;\n        }\n      }" ({ "{") (expression_statement "cVar4 = FUN_000245b0(uVar1);" (assignment_expression "cVar4 = FUN_000245b0(uVar1)" (identifier "cVar4") (= "=") (call_expression "FUN_000245b0(uVar1)" (identifier "FUN_000245b0") (argument_list "(uVar1)" (( "(") (identifier "uVar1") () ")")))) (; ";")) (if_statement "if (cVar4 == '\0') goto LAB_0001c2d8;" (if "if") (parenthesized_expression "(cVar4 == '\0')" (( "(") (binary_expression "cVar4 == '\0'" (identifier "cVar4") (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (goto_statement "goto LAB_0001c2d8;" (goto "goto") (statement_identifier "LAB_0001c2d8") (; ";"))) (expression_statement "local_21 = '\0';" (assignment_expression "local_21 = '\0'" (identifier "local_21") (= "=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) (; ";")) (expression_statement "iVar5 = FUN_00024580(uVar1,param_4,param_4 + param_5,1,0,&local_21);" (assignment_expression "iVar5 = FUN_00024580(uVar1,param_4,param_4 + param_5,1,0,&local_21)" (identifier "iVar5") (= "=") (call_expression "FUN_00024580(uVar1,param_4,param_4 + param_5,1,0,&local_21)" (identifier "FUN_00024580") (argument_list "(uVar1,param_4,param_4 + param_5,1,0,&local_21)" (( "(") (identifier "uVar1") (, ",") (identifier "param_4") (, ",") (binary_expression "param_4 + param_5" (identifier "param_4") (+ "+") (identifier "param_5")) (, ",") (number_literal "1") (, ",") (number_literal "0") (, ",") (pointer_expression "&local_21" (& "&") (identifier "local_21")) () ")")))) (; ";")) (if_statement "if (iVar5 != 0) {\n          puVar9 = __preg[1].buffer;\n          uVar8 = (uint)puVar9 & 4;\n          if (param_8 == 0) goto LAB_0001c36d;\n          goto LAB_0001c2de;\n        }" (if "if") (parenthesized_expression "(iVar5 != 0)" (( "(") (binary_expression "iVar5 != 0" (identifier "iVar5") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n          puVar9 = __preg[1].buffer;\n          uVar8 = (uint)puVar9 & 4;\n          if (param_8 == 0) goto LAB_0001c36d;\n          goto LAB_0001c2de;\n        }" ({ "{") (expression_statement "puVar9 = __preg[1].buffer;" (assignment_expression "puVar9 = __preg[1].buffer" (identifier "puVar9") (= "=") (field_expression "__preg[1].buffer" (subscript_expression "__preg[1]" (identifier "__preg") ([ "[") (number_literal "1") (] "]")) (. ".") (field_identifier "buffer"))) (; ";")) (expression_statement "uVar8 = (uint)puVar9 & 4;" (assignment_expression "uVar8 = (uint)puVar9 & 4" (identifier "uVar8") (= "=") (binary_expression "(uint)puVar9 & 4" (cast_expression "(uint)puVar9" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "puVar9")) (& "&") (number_literal "4"))) (; ";")) (if_statement "if (param_8 == 0) goto LAB_0001c36d;" (if "if") (parenthesized_expression "(param_8 == 0)" (( "(") (binary_expression "param_8 == 0" (identifier "param_8") (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_0001c36d;" (goto "goto") (statement_identifier "LAB_0001c36d") (; ";"))) (goto_statement "goto LAB_0001c2de;" (goto "goto") (statement_identifier "LAB_0001c2de") (; ";")) (} "}"))) (} "}")))) (} "}")) (else_clause "else {\n      iVar5 = FUN_00024580(iVar5,param_4,param_4 + param_5,1,0,0);\n      if (iVar5 != 0) {\n        uVar15 = (uint)__preg[1].buffer & 4;\n        if (param_8 == 0) {\n          if (uVar15 != 0) goto LAB_0001c345;\n          goto LAB_0001c398;\n        }\n        if (uVar15 != 0) goto LAB_0001c100;\n        goto LAB_0001c2f2;\n      }\n    }" (else "else") (compound_statement "{\n      iVar5 = FUN_00024580(iVar5,param_4,param_4 + param_5,1,0,0);\n      if (iVar5 != 0) {\n        uVar15 = (uint)__preg[1].buffer & 4;\n        if (param_8 == 0) {\n          if (uVar15 != 0) goto LAB_0001c345;\n          goto LAB_0001c398;\n        }\n        if (uVar15 != 0) goto LAB_0001c100;\n        goto LAB_0001c2f2;\n      }\n    }" ({ "{") (expression_statement "iVar5 = FUN_00024580(iVar5,param_4,param_4 + param_5,1,0,0);" (assignment_expression "iVar5 = FUN_00024580(iVar5,param_4,param_4 + param_5,1,0,0)" (identifier "iVar5") (= "=") (call_expression "FUN_00024580(iVar5,param_4,param_4 + param_5,1,0,0)" (identifier "FUN_00024580") (argument_list "(iVar5,param_4,param_4 + param_5,1,0,0)" (( "(") (identifier "iVar5") (, ",") (identifier "param_4") (, ",") (binary_expression "param_4 + param_5" (identifier "param_4") (+ "+") (identifier "param_5")) (, ",") (number_literal "1") (, ",") (number_literal "0") (, ",") (number_literal "0") () ")")))) (; ";")) (if_statement "if (iVar5 != 0) {\n        uVar15 = (uint)__preg[1].buffer & 4;\n        if (param_8 == 0) {\n          if (uVar15 != 0) goto LAB_0001c345;\n          goto LAB_0001c398;\n        }\n        if (uVar15 != 0) goto LAB_0001c100;\n        goto LAB_0001c2f2;\n      }" (if "if") (parenthesized_expression "(iVar5 != 0)" (( "(") (binary_expression "iVar5 != 0" (identifier "iVar5") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n        uVar15 = (uint)__preg[1].buffer & 4;\n        if (param_8 == 0) {\n          if (uVar15 != 0) goto LAB_0001c345;\n          goto LAB_0001c398;\n        }\n        if (uVar15 != 0) goto LAB_0001c100;\n        goto LAB_0001c2f2;\n      }" ({ "{") (expression_statement "uVar15 = (uint)__preg[1].buffer & 4;" (assignment_expression "uVar15 = (uint)__preg[1].buffer & 4" (identifier "uVar15") (= "=") (binary_expression "(uint)__preg[1].buffer & 4" (cast_expression "(uint)__preg[1].buffer" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (field_expression "__preg[1].buffer" (subscript_expression "__preg[1]" (identifier "__preg") ([ "[") (number_literal "1") (] "]")) (. ".") (field_identifier "buffer"))) (& "&") (number_literal "4"))) (; ";")) (if_statement "if (param_8 == 0) {\n          if (uVar15 != 0) goto LAB_0001c345;\n          goto LAB_0001c398;\n        }" (if "if") (parenthesized_expression "(param_8 == 0)" (( "(") (binary_expression "param_8 == 0" (identifier "param_8") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n          if (uVar15 != 0) goto LAB_0001c345;\n          goto LAB_0001c398;\n        }" ({ "{") (if_statement "if (uVar15 != 0) goto LAB_0001c345;" (if "if") (parenthesized_expression "(uVar15 != 0)" (( "(") (binary_expression "uVar15 != 0" (identifier "uVar15") (!= "!=") (number_literal "0")) () ")")) (goto_statement "goto LAB_0001c345;" (goto "goto") (statement_identifier "LAB_0001c345") (; ";"))) (goto_statement "goto LAB_0001c398;" (goto "goto") (statement_identifier "LAB_0001c398") (; ";")) (} "}"))) (if_statement "if (uVar15 != 0) goto LAB_0001c100;" (if "if") (parenthesized_expression "(uVar15 != 0)" (( "(") (binary_expression "uVar15 != 0" (identifier "uVar15") (!= "!=") (number_literal "0")) () ")")) (goto_statement "goto LAB_0001c100;" (goto "goto") (statement_identifier "LAB_0001c100") (; ";"))) (goto_statement "goto LAB_0001c2f2;" (goto "goto") (statement_identifier "LAB_0001c2f2") (; ";")) (} "}"))) (} "}")))) (labeled_statement "LAB_0001c3a8:\n    uVar15 = 0;" (statement_identifier "LAB_0001c3a8") (: ":") (expression_statement "uVar15 = 0;" (assignment_expression "uVar15 = 0" (identifier "uVar15") (= "=") (number_literal "0")) (; ";"))) (} "}")) (else_clause "else {\nLAB_0001c2d8:\n    uVar8 = (uint)__preg[1].buffer & 4;\nLAB_0001c2de:\n    if (uVar8 == 0) {\nLAB_0001c2e6:\n      if (param_8 == 0) {\nLAB_0001c398:\n        local_40 = (re_registers *)0x0;\n      }\nLAB_0001c2f2:\n      pcVar16 = (char *)re_search(__preg,param_4,param_5,param_6,param_5 - param_6,local_40);\n    }\n    else {\nLAB_0001c100:\n      cVar4 = DAT_00039240;\n      if (DAT_00039240 == '\n') goto LAB_0001c2e6;\n      __string = param_4;\n      if (param_6 != 0) {\n        pvVar6 = memrchr(param_4,(int)DAT_00039240,param_6);\n        __string = (char *)((int)pvVar6 + 1);\n        if (pvVar6 == (void *)0x0) {\n          __string = param_4;\n        }\n      }\n      pcVar16 = param_4 + param_6;\n      __regs = (re_registers *)0x0;\n      if (param_8 != 0) {\n        __regs = param_7;\n      }\n      pcVar14 = param_4 + param_5;\n      while( true ) {\n        pcVar7 = (char *)FUN_0002b7a0(__string,(int)cVar4,(int)pcVar14 - (int)__string);\n        if (pcVar7 == (char *)0x0) break;\n        pcVar16 = (char *)re_search(__preg,__string,(int)pcVar7 - (int)__string,\n                                    (int)pcVar16 - (int)__string,(int)pcVar7 - (int)pcVar16,__regs);\n        if (-1 < (int)pcVar16) goto LAB_0001c1f7;\n        if (pcVar7 == pcVar14) goto LAB_0001c317;\n        pcVar16 = pcVar7 + 1;\n        __string = pcVar16;\n        cVar4 = DAT_00039240;\n      }\n      pcVar16 = (char *)re_search(__preg,__string,(int)pcVar14 - (int)__string,\n                                  (int)pcVar16 - (int)__string,(int)pcVar14 - (int)pcVar16,__regs);\n      if (-1 < (int)pcVar16) {\nLAB_0001c1f7:\n        pcVar16 = __string + ((int)pcVar16 - (int)param_4);\n        if ((param_8 != 0) && (param_7->num_regs != 0)) {\n          prVar10 = param_7->start;\n          prVar2 = param_7->end;\n          uVar15 = 0;\n          do {\n            while( true ) {\n              iVar5 = prVar10[uVar15];\n              if (-1 < iVar5) {\n                prVar10[uVar15] = (regoff_t)(__string + (iVar5 - (int)param_4));\n              }\n              iVar5 = prVar2[uVar15];\n              if (iVar5 < 0) break;\n              prVar2[uVar15] = (regoff_t)(__string + (iVar5 - (int)param_4));\n              uVar15 = uVar15 + 1;\n              if (param_7->num_regs <= uVar15) goto LAB_0001c317;\n            }\n            uVar15 = uVar15 + 1;\n          } while (uVar15 < param_7->num_regs);\n        }\n      }\n    }\nLAB_0001c317:\n    uVar15 = ~(uint)pcVar16 >> 0x1f;\n  }" (else "else") (compound_statement "{\nLAB_0001c2d8:\n    uVar8 = (uint)__preg[1].buffer & 4;\nLAB_0001c2de:\n    if (uVar8 == 0) {\nLAB_0001c2e6:\n      if (param_8 == 0) {\nLAB_0001c398:\n        local_40 = (re_registers *)0x0;\n      }\nLAB_0001c2f2:\n      pcVar16 = (char *)re_search(__preg,param_4,param_5,param_6,param_5 - param_6,local_40);\n    }\n    else {\nLAB_0001c100:\n      cVar4 = DAT_00039240;\n      if (DAT_00039240 == '\n') goto LAB_0001c2e6;\n      __string = param_4;\n      if (param_6 != 0) {\n        pvVar6 = memrchr(param_4,(int)DAT_00039240,param_6);\n        __string = (char *)((int)pvVar6 + 1);\n        if (pvVar6 == (void *)0x0) {\n          __string = param_4;\n        }\n      }\n      pcVar16 = param_4 + param_6;\n      __regs = (re_registers *)0x0;\n      if (param_8 != 0) {\n        __regs = param_7;\n      }\n      pcVar14 = param_4 + param_5;\n      while( true ) {\n        pcVar7 = (char *)FUN_0002b7a0(__string,(int)cVar4,(int)pcVar14 - (int)__string);\n        if (pcVar7 == (char *)0x0) break;\n        pcVar16 = (char *)re_search(__preg,__string,(int)pcVar7 - (int)__string,\n                                    (int)pcVar16 - (int)__string,(int)pcVar7 - (int)pcVar16,__regs);\n        if (-1 < (int)pcVar16) goto LAB_0001c1f7;\n        if (pcVar7 == pcVar14) goto LAB_0001c317;\n        pcVar16 = pcVar7 + 1;\n        __string = pcVar16;\n        cVar4 = DAT_00039240;\n      }\n      pcVar16 = (char *)re_search(__preg,__string,(int)pcVar14 - (int)__string,\n                                  (int)pcVar16 - (int)__string,(int)pcVar14 - (int)pcVar16,__regs);\n      if (-1 < (int)pcVar16) {\nLAB_0001c1f7:\n        pcVar16 = __string + ((int)pcVar16 - (int)param_4);\n        if ((param_8 != 0) && (param_7->num_regs != 0)) {\n          prVar10 = param_7->start;\n          prVar2 = param_7->end;\n          uVar15 = 0;\n          do {\n            while( true ) {\n              iVar5 = prVar10[uVar15];\n              if (-1 < iVar5) {\n                prVar10[uVar15] = (regoff_t)(__string + (iVar5 - (int)param_4));\n              }\n              iVar5 = prVar2[uVar15];\n              if (iVar5 < 0) break;\n              prVar2[uVar15] = (regoff_t)(__string + (iVar5 - (int)param_4));\n              uVar15 = uVar15 + 1;\n              if (param_7->num_regs <= uVar15) goto LAB_0001c317;\n            }\n            uVar15 = uVar15 + 1;\n          } while (uVar15 < param_7->num_regs);\n        }\n      }\n    }\nLAB_0001c317:\n    uVar15 = ~(uint)pcVar16 >> 0x1f;\n  }" ({ "{") (labeled_statement "LAB_0001c2d8:\n    uVar8 = (uint)__preg[1].buffer & 4;" (statement_identifier "LAB_0001c2d8") (: ":") (expression_statement "uVar8 = (uint)__preg[1].buffer & 4;" (assignment_expression "uVar8 = (uint)__preg[1].buffer & 4" (identifier "uVar8") (= "=") (binary_expression "(uint)__preg[1].buffer & 4" (cast_expression "(uint)__preg[1].buffer" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (field_expression "__preg[1].buffer" (subscript_expression "__preg[1]" (identifier "__preg") ([ "[") (number_literal "1") (] "]")) (. ".") (field_identifier "buffer"))) (& "&") (number_literal "4"))) (; ";"))) (labeled_statement "LAB_0001c2de:\n    if (uVar8 == 0) {\nLAB_0001c2e6:\n      if (param_8 == 0) {\nLAB_0001c398:\n        local_40 = (re_registers *)0x0;\n      }\nLAB_0001c2f2:\n      pcVar16 = (char *)re_search(__preg,param_4,param_5,param_6,param_5 - param_6,local_40);\n    }\n    else {\nLAB_0001c100:\n      cVar4 = DAT_00039240;\n      if (DAT_00039240 == '\n') goto LAB_0001c2e6;\n      __string = param_4;\n      if (param_6 != 0) {\n        pvVar6 = memrchr(param_4,(int)DAT_00039240,param_6);\n        __string = (char *)((int)pvVar6 + 1);\n        if (pvVar6 == (void *)0x0) {\n          __string = param_4;\n        }\n      }\n      pcVar16 = param_4 + param_6;\n      __regs = (re_registers *)0x0;\n      if (param_8 != 0) {\n        __regs = param_7;\n      }\n      pcVar14 = param_4 + param_5;\n      while( true ) {\n        pcVar7 = (char *)FUN_0002b7a0(__string,(int)cVar4,(int)pcVar14 - (int)__string);\n        if (pcVar7 == (char *)0x0) break;\n        pcVar16 = (char *)re_search(__preg,__string,(int)pcVar7 - (int)__string,\n                                    (int)pcVar16 - (int)__string,(int)pcVar7 - (int)pcVar16,__regs);\n        if (-1 < (int)pcVar16) goto LAB_0001c1f7;\n        if (pcVar7 == pcVar14) goto LAB_0001c317;\n        pcVar16 = pcVar7 + 1;\n        __string = pcVar16;\n        cVar4 = DAT_00039240;\n      }\n      pcVar16 = (char *)re_search(__preg,__string,(int)pcVar14 - (int)__string,\n                                  (int)pcVar16 - (int)__string,(int)pcVar14 - (int)pcVar16,__regs);\n      if (-1 < (int)pcVar16) {\nLAB_0001c1f7:\n        pcVar16 = __string + ((int)pcVar16 - (int)param_4);\n        if ((param_8 != 0) && (param_7->num_regs != 0)) {\n          prVar10 = param_7->start;\n          prVar2 = param_7->end;\n          uVar15 = 0;\n          do {\n            while( true ) {\n              iVar5 = prVar10[uVar15];\n              if (-1 < iVar5) {\n                prVar10[uVar15] = (regoff_t)(__string + (iVar5 - (int)param_4));\n              }\n              iVar5 = prVar2[uVar15];\n              if (iVar5 < 0) break;\n              prVar2[uVar15] = (regoff_t)(__string + (iVar5 - (int)param_4));\n              uVar15 = uVar15 + 1;\n              if (param_7->num_regs <= uVar15) goto LAB_0001c317;\n            }\n            uVar15 = uVar15 + 1;\n          } while (uVar15 < param_7->num_regs);\n        }\n      }\n    }" (statement_identifier "LAB_0001c2de") (: ":") (if_statement "if (uVar8 == 0) {\nLAB_0001c2e6:\n      if (param_8 == 0) {\nLAB_0001c398:\n        local_40 = (re_registers *)0x0;\n      }\nLAB_0001c2f2:\n      pcVar16 = (char *)re_search(__preg,param_4,param_5,param_6,param_5 - param_6,local_40);\n    }\n    else {\nLAB_0001c100:\n      cVar4 = DAT_00039240;\n      if (DAT_00039240 == '\n') goto LAB_0001c2e6;\n      __string = param_4;\n      if (param_6 != 0) {\n        pvVar6 = memrchr(param_4,(int)DAT_00039240,param_6);\n        __string = (char *)((int)pvVar6 + 1);\n        if (pvVar6 == (void *)0x0) {\n          __string = param_4;\n        }\n      }\n      pcVar16 = param_4 + param_6;\n      __regs = (re_registers *)0x0;\n      if (param_8 != 0) {\n        __regs = param_7;\n      }\n      pcVar14 = param_4 + param_5;\n      while( true ) {\n        pcVar7 = (char *)FUN_0002b7a0(__string,(int)cVar4,(int)pcVar14 - (int)__string);\n        if (pcVar7 == (char *)0x0) break;\n        pcVar16 = (char *)re_search(__preg,__string,(int)pcVar7 - (int)__string,\n                                    (int)pcVar16 - (int)__string,(int)pcVar7 - (int)pcVar16,__regs);\n        if (-1 < (int)pcVar16) goto LAB_0001c1f7;\n        if (pcVar7 == pcVar14) goto LAB_0001c317;\n        pcVar16 = pcVar7 + 1;\n        __string = pcVar16;\n        cVar4 = DAT_00039240;\n      }\n      pcVar16 = (char *)re_search(__preg,__string,(int)pcVar14 - (int)__string,\n                                  (int)pcVar16 - (int)__string,(int)pcVar14 - (int)pcVar16,__regs);\n      if (-1 < (int)pcVar16) {\nLAB_0001c1f7:\n        pcVar16 = __string + ((int)pcVar16 - (int)param_4);\n        if ((param_8 != 0) && (param_7->num_regs != 0)) {\n          prVar10 = param_7->start;\n          prVar2 = param_7->end;\n          uVar15 = 0;\n          do {\n            while( true ) {\n              iVar5 = prVar10[uVar15];\n              if (-1 < iVar5) {\n                prVar10[uVar15] = (regoff_t)(__string + (iVar5 - (int)param_4));\n              }\n              iVar5 = prVar2[uVar15];\n              if (iVar5 < 0) break;\n              prVar2[uVar15] = (regoff_t)(__string + (iVar5 - (int)param_4));\n              uVar15 = uVar15 + 1;\n              if (param_7->num_regs <= uVar15) goto LAB_0001c317;\n            }\n            uVar15 = uVar15 + 1;\n          } while (uVar15 < param_7->num_regs);\n        }\n      }\n    }" (if "if") (parenthesized_expression "(uVar8 == 0)" (( "(") (binary_expression "uVar8 == 0" (identifier "uVar8") (== "==") (number_literal "0")) () ")")) (compound_statement "{\nLAB_0001c2e6:\n      if (param_8 == 0) {\nLAB_0001c398:\n        local_40 = (re_registers *)0x0;\n      }\nLAB_0001c2f2:\n      pcVar16 = (char *)re_search(__preg,param_4,param_5,param_6,param_5 - param_6,local_40);\n    }" ({ "{") (labeled_statement "LAB_0001c2e6:\n      if (param_8 == 0) {\nLAB_0001c398:\n        local_40 = (re_registers *)0x0;\n      }" (statement_identifier "LAB_0001c2e6") (: ":") (if_statement "if (param_8 == 0) {\nLAB_0001c398:\n        local_40 = (re_registers *)0x0;\n      }" (if "if") (parenthesized_expression "(param_8 == 0)" (( "(") (binary_expression "param_8 == 0" (identifier "param_8") (== "==") (number_literal "0")) () ")")) (compound_statement "{\nLAB_0001c398:\n        local_40 = (re_registers *)0x0;\n      }" ({ "{") (labeled_statement "LAB_0001c398:\n        local_40 = (re_registers *)0x0;" (statement_identifier "LAB_0001c398") (: ":") (expression_statement "local_40 = (re_registers *)0x0;" (assignment_expression "local_40 = (re_registers *)0x0" (identifier "local_40") (= "=") (cast_expression "(re_registers *)0x0" (( "(") (type_descriptor "re_registers *" (type_identifier "re_registers") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";"))) (} "}")))) (labeled_statement "LAB_0001c2f2:\n      pcVar16 = (char *)re_search(__preg,param_4,param_5,param_6,param_5 - param_6,local_40);" (statement_identifier "LAB_0001c2f2") (: ":") (expression_statement "pcVar16 = (char *)re_search(__preg,param_4,param_5,param_6,param_5 - param_6,local_40);" (assignment_expression "pcVar16 = (char *)re_search(__preg,param_4,param_5,param_6,param_5 - param_6,local_40)" (identifier "pcVar16") (= "=") (cast_expression "(char *)re_search(__preg,param_4,param_5,param_6,param_5 - param_6,local_40)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "re_search(__preg,param_4,param_5,param_6,param_5 - param_6,local_40)" (identifier "re_search") (argument_list "(__preg,param_4,param_5,param_6,param_5 - param_6,local_40)" (( "(") (identifier "__preg") (, ",") (identifier "param_4") (, ",") (identifier "param_5") (, ",") (identifier "param_6") (, ",") (binary_expression "param_5 - param_6" (identifier "param_5") (- "-") (identifier "param_6")) (, ",") (identifier "local_40") () ")"))))) (; ";"))) (} "}")) (else_clause "else {\nLAB_0001c100:\n      cVar4 = DAT_00039240;\n      if (DAT_00039240 == '\n') goto LAB_0001c2e6;\n      __string = param_4;\n      if (param_6 != 0) {\n        pvVar6 = memrchr(param_4,(int)DAT_00039240,param_6);\n        __string = (char *)((int)pvVar6 + 1);\n        if (pvVar6 == (void *)0x0) {\n          __string = param_4;\n        }\n      }\n      pcVar16 = param_4 + param_6;\n      __regs = (re_registers *)0x0;\n      if (param_8 != 0) {\n        __regs = param_7;\n      }\n      pcVar14 = param_4 + param_5;\n      while( true ) {\n        pcVar7 = (char *)FUN_0002b7a0(__string,(int)cVar4,(int)pcVar14 - (int)__string);\n        if (pcVar7 == (char *)0x0) break;\n        pcVar16 = (char *)re_search(__preg,__string,(int)pcVar7 - (int)__string,\n                                    (int)pcVar16 - (int)__string,(int)pcVar7 - (int)pcVar16,__regs);\n        if (-1 < (int)pcVar16) goto LAB_0001c1f7;\n        if (pcVar7 == pcVar14) goto LAB_0001c317;\n        pcVar16 = pcVar7 + 1;\n        __string = pcVar16;\n        cVar4 = DAT_00039240;\n      }\n      pcVar16 = (char *)re_search(__preg,__string,(int)pcVar14 - (int)__string,\n                                  (int)pcVar16 - (int)__string,(int)pcVar14 - (int)pcVar16,__regs);\n      if (-1 < (int)pcVar16) {\nLAB_0001c1f7:\n        pcVar16 = __string + ((int)pcVar16 - (int)param_4);\n        if ((param_8 != 0) && (param_7->num_regs != 0)) {\n          prVar10 = param_7->start;\n          prVar2 = param_7->end;\n          uVar15 = 0;\n          do {\n            while( true ) {\n              iVar5 = prVar10[uVar15];\n              if (-1 < iVar5) {\n                prVar10[uVar15] = (regoff_t)(__string + (iVar5 - (int)param_4));\n              }\n              iVar5 = prVar2[uVar15];\n              if (iVar5 < 0) break;\n              prVar2[uVar15] = (regoff_t)(__string + (iVar5 - (int)param_4));\n              uVar15 = uVar15 + 1;\n              if (param_7->num_regs <= uVar15) goto LAB_0001c317;\n            }\n            uVar15 = uVar15 + 1;\n          } while (uVar15 < param_7->num_regs);\n        }\n      }\n    }" (else "else") (compound_statement "{\nLAB_0001c100:\n      cVar4 = DAT_00039240;\n      if (DAT_00039240 == '\n') goto LAB_0001c2e6;\n      __string = param_4;\n      if (param_6 != 0) {\n        pvVar6 = memrchr(param_4,(int)DAT_00039240,param_6);\n        __string = (char *)((int)pvVar6 + 1);\n        if (pvVar6 == (void *)0x0) {\n          __string = param_4;\n        }\n      }\n      pcVar16 = param_4 + param_6;\n      __regs = (re_registers *)0x0;\n      if (param_8 != 0) {\n        __regs = param_7;\n      }\n      pcVar14 = param_4 + param_5;\n      while( true ) {\n        pcVar7 = (char *)FUN_0002b7a0(__string,(int)cVar4,(int)pcVar14 - (int)__string);\n        if (pcVar7 == (char *)0x0) break;\n        pcVar16 = (char *)re_search(__preg,__string,(int)pcVar7 - (int)__string,\n                                    (int)pcVar16 - (int)__string,(int)pcVar7 - (int)pcVar16,__regs);\n        if (-1 < (int)pcVar16) goto LAB_0001c1f7;\n        if (pcVar7 == pcVar14) goto LAB_0001c317;\n        pcVar16 = pcVar7 + 1;\n        __string = pcVar16;\n        cVar4 = DAT_00039240;\n      }\n      pcVar16 = (char *)re_search(__preg,__string,(int)pcVar14 - (int)__string,\n                                  (int)pcVar16 - (int)__string,(int)pcVar14 - (int)pcVar16,__regs);\n      if (-1 < (int)pcVar16) {\nLAB_0001c1f7:\n        pcVar16 = __string + ((int)pcVar16 - (int)param_4);\n        if ((param_8 != 0) && (param_7->num_regs != 0)) {\n          prVar10 = param_7->start;\n          prVar2 = param_7->end;\n          uVar15 = 0;\n          do {\n            while( true ) {\n              iVar5 = prVar10[uVar15];\n              if (-1 < iVar5) {\n                prVar10[uVar15] = (regoff_t)(__string + (iVar5 - (int)param_4));\n              }\n              iVar5 = prVar2[uVar15];\n              if (iVar5 < 0) break;\n              prVar2[uVar15] = (regoff_t)(__string + (iVar5 - (int)param_4));\n              uVar15 = uVar15 + 1;\n              if (param_7->num_regs <= uVar15) goto LAB_0001c317;\n            }\n            uVar15 = uVar15 + 1;\n          } while (uVar15 < param_7->num_regs);\n        }\n      }\n    }" ({ "{") (labeled_statement "LAB_0001c100:\n      cVar4 = DAT_00039240;" (statement_identifier "LAB_0001c100") (: ":") (expression_statement "cVar4 = DAT_00039240;" (assignment_expression "cVar4 = DAT_00039240" (identifier "cVar4") (= "=") (identifier "DAT_00039240")) (; ";"))) (if_statement "if (DAT_00039240 == '\n') goto LAB_0001c2e6;" (if "if") (parenthesized_expression "(DAT_00039240 == '\n')" (( "(") (binary_expression "DAT_00039240 == '\n'" (identifier "DAT_00039240") (== "==") (char_literal "'\n'" (' "'") (escape_sequence "\n") (' "'"))) () ")")) (goto_statement "goto LAB_0001c2e6;" (goto "goto") (statement_identifier "LAB_0001c2e6") (; ";"))) (expression_statement "__string = param_4;" (assignment_expression "__string = param_4" (identifier "__string") (= "=") (identifier "param_4")) (; ";")) (if_statement "if (param_6 != 0) {\n        pvVar6 = memrchr(param_4,(int)DAT_00039240,param_6);\n        __string = (char *)((int)pvVar6 + 1);\n        if (pvVar6 == (void *)0x0) {\n          __string = param_4;\n        }\n      }" (if "if") (parenthesized_expression "(param_6 != 0)" (( "(") (binary_expression "param_6 != 0" (identifier "param_6") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n        pvVar6 = memrchr(param_4,(int)DAT_00039240,param_6);\n        __string = (char *)((int)pvVar6 + 1);\n        if (pvVar6 == (void *)0x0) {\n          __string = param_4;\n        }\n      }" ({ "{") (expression_statement "pvVar6 = memrchr(param_4,(int)DAT_00039240,param_6);" (assignment_expression "pvVar6 = memrchr(param_4,(int)DAT_00039240,param_6)" (identifier "pvVar6") (= "=") (call_expression "memrchr(param_4,(int)DAT_00039240,param_6)" (identifier "memrchr") (argument_list "(param_4,(int)DAT_00039240,param_6)" (( "(") (identifier "param_4") (, ",") (cast_expression "(int)DAT_00039240" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "DAT_00039240")) (, ",") (identifier "param_6") () ")")))) (; ";")) (expression_statement "__string = (char *)((int)pvVar6 + 1);" (assignment_expression "__string = (char *)((int)pvVar6 + 1)" (identifier "__string") (= "=") (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")) () ")")))) (; ";")) (if_statement "if (pvVar6 == (void *)0x0) {\n          __string = param_4;\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          __string = param_4;\n        }" ({ "{") (expression_statement "__string = param_4;" (assignment_expression "__string = param_4" (identifier "__string") (= "=") (identifier "param_4")) (; ";")) (} "}"))) (} "}"))) (expression_statement "pcVar16 = param_4 + param_6;" (assignment_expression "pcVar16 = param_4 + param_6" (identifier "pcVar16") (= "=") (binary_expression "param_4 + param_6" (identifier "param_4") (+ "+") (identifier "param_6"))) (; ";")) (expression_statement "__regs = (re_registers *)0x0;" (assignment_expression "__regs = (re_registers *)0x0" (identifier "__regs") (= "=") (cast_expression "(re_registers *)0x0" (( "(") (type_descriptor "re_registers *" (type_identifier "re_registers") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (if_statement "if (param_8 != 0) {\n        __regs = param_7;\n      }" (if "if") (parenthesized_expression "(param_8 != 0)" (( "(") (binary_expression "param_8 != 0" (identifier "param_8") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n        __regs = param_7;\n      }" ({ "{") (expression_statement "__regs = param_7;" (assignment_expression "__regs = param_7" (identifier "__regs") (= "=") (identifier "param_7")) (; ";")) (} "}"))) (expression_statement "pcVar14 = param_4 + param_5;" (assignment_expression "pcVar14 = param_4 + param_5" (identifier "pcVar14") (= "=") (binary_expression "param_4 + param_5" (identifier "param_4") (+ "+") (identifier "param_5"))) (; ";")) (while_statement "while( true ) {\n        pcVar7 = (char *)FUN_0002b7a0(__string,(int)cVar4,(int)pcVar14 - (int)__string);\n        if (pcVar7 == (char *)0x0) break;\n        pcVar16 = (char *)re_search(__preg,__string,(int)pcVar7 - (int)__string,\n                                    (int)pcVar16 - (int)__string,(int)pcVar7 - (int)pcVar16,__regs);\n        if (-1 < (int)pcVar16) goto LAB_0001c1f7;\n        if (pcVar7 == pcVar14) goto LAB_0001c317;\n        pcVar16 = pcVar7 + 1;\n        __string = pcVar16;\n        cVar4 = DAT_00039240;\n      }" (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (compound_statement "{\n        pcVar7 = (char *)FUN_0002b7a0(__string,(int)cVar4,(int)pcVar14 - (int)__string);\n        if (pcVar7 == (char *)0x0) break;\n        pcVar16 = (char *)re_search(__preg,__string,(int)pcVar7 - (int)__string,\n                                    (int)pcVar16 - (int)__string,(int)pcVar7 - (int)pcVar16,__regs);\n        if (-1 < (int)pcVar16) goto LAB_0001c1f7;\n        if (pcVar7 == pcVar14) goto LAB_0001c317;\n        pcVar16 = pcVar7 + 1;\n        __string = pcVar16;\n        cVar4 = DAT_00039240;\n      }" ({ "{") (expression_statement "pcVar7 = (char *)FUN_0002b7a0(__string,(int)cVar4,(int)pcVar14 - (int)__string);" (assignment_expression "pcVar7 = (char *)FUN_0002b7a0(__string,(int)cVar4,(int)pcVar14 - (int)__string)" (identifier "pcVar7") (= "=") (cast_expression "(char *)FUN_0002b7a0(__string,(int)cVar4,(int)pcVar14 - (int)__string)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_0002b7a0(__string,(int)cVar4,(int)pcVar14 - (int)__string)" (identifier "FUN_0002b7a0") (argument_list "(__string,(int)cVar4,(int)pcVar14 - (int)__string)" (( "(") (identifier "__string") (, ",") (cast_expression "(int)cVar4" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "cVar4")) (, ",") (binary_expression "(int)pcVar14 - (int)__string" (cast_expression "(int)pcVar14" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pcVar14")) (- "-") (cast_expression "(int)__string" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "__string"))) () ")"))))) (; ";")) (if_statement "if (pcVar7 == (char *)0x0) break;" (if "if") (parenthesized_expression "(pcVar7 == (char *)0x0)" (( "(") (binary_expression "pcVar7 == (char *)0x0" (identifier "pcVar7") (== "==") (cast_expression "(char *)0x0" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "pcVar16 = (char *)re_search(__preg,__string,(int)pcVar7 - (int)__string,\n                                    (int)pcVar16 - (int)__string,(int)pcVar7 - (int)pcVar16,__regs);" (assignment_expression "pcVar16 = (char *)re_search(__preg,__string,(int)pcVar7 - (int)__string,\n                                    (int)pcVar16 - (int)__string,(int)pcVar7 - (int)pcVar16,__regs)" (identifier "pcVar16") (= "=") (cast_expression "(char *)re_search(__preg,__string,(int)pcVar7 - (int)__string,\n                                    (int)pcVar16 - (int)__string,(int)pcVar7 - (int)pcVar16,__regs)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "re_search(__preg,__string,(int)pcVar7 - (int)__string,\n                                    (int)pcVar16 - (int)__string,(int)pcVar7 - (int)pcVar16,__regs)" (identifier "re_search") (argument_list "(__preg,__string,(int)pcVar7 - (int)__string,\n                                    (int)pcVar16 - (int)__string,(int)pcVar7 - (int)pcVar16,__regs)" (( "(") (identifier "__preg") (, ",") (identifier "__string") (, ",") (binary_expression "(int)pcVar7 - (int)__string" (cast_expression "(int)pcVar7" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pcVar7")) (- "-") (cast_expression "(int)__string" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "__string"))) (, ",") (binary_expression "(int)pcVar16 - (int)__string" (cast_expression "(int)pcVar16" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pcVar16")) (- "-") (cast_expression "(int)__string" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "__string"))) (, ",") (binary_expression "(int)pcVar7 - (int)pcVar16" (cast_expression "(int)pcVar7" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pcVar7")) (- "-") (cast_expression "(int)pcVar16" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pcVar16"))) (, ",") (identifier "__regs") () ")"))))) (; ";")) (if_statement "if (-1 < (int)pcVar16) goto LAB_0001c1f7;" (if "if") (parenthesized_expression "(-1 < (int)pcVar16)" (( "(") (binary_expression "-1 < (int)pcVar16" (number_literal "-1") (< "<") (cast_expression "(int)pcVar16" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pcVar16"))) () ")")) (goto_statement "goto LAB_0001c1f7;" (goto "goto") (statement_identifier "LAB_0001c1f7") (; ";"))) (if_statement "if (pcVar7 == pcVar14) goto LAB_0001c317;" (if "if") (parenthesized_expression "(pcVar7 == pcVar14)" (( "(") (binary_expression "pcVar7 == pcVar14" (identifier "pcVar7") (== "==") (identifier "pcVar14")) () ")")) (goto_statement "goto LAB_0001c317;" (goto "goto") (statement_identifier "LAB_0001c317") (; ";"))) (expression_statement "pcVar16 = pcVar7 + 1;" (assignment_expression "pcVar16 = pcVar7 + 1" (identifier "pcVar16") (= "=") (binary_expression "pcVar7 + 1" (identifier "pcVar7") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "__string = pcVar16;" (assignment_expression "__string = pcVar16" (identifier "__string") (= "=") (identifier "pcVar16")) (; ";")) (expression_statement "cVar4 = DAT_00039240;" (assignment_expression "cVar4 = DAT_00039240" (identifier "cVar4") (= "=") (identifier "DAT_00039240")) (; ";")) (} "}"))) (expression_statement "pcVar16 = (char *)re_search(__preg,__string,(int)pcVar14 - (int)__string,\n                                  (int)pcVar16 - (int)__string,(int)pcVar14 - (int)pcVar16,__regs);" (assignment_expression "pcVar16 = (char *)re_search(__preg,__string,(int)pcVar14 - (int)__string,\n                                  (int)pcVar16 - (int)__string,(int)pcVar14 - (int)pcVar16,__regs)" (identifier "pcVar16") (= "=") (cast_expression "(char *)re_search(__preg,__string,(int)pcVar14 - (int)__string,\n                                  (int)pcVar16 - (int)__string,(int)pcVar14 - (int)pcVar16,__regs)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "re_search(__preg,__string,(int)pcVar14 - (int)__string,\n                                  (int)pcVar16 - (int)__string,(int)pcVar14 - (int)pcVar16,__regs)" (identifier "re_search") (argument_list "(__preg,__string,(int)pcVar14 - (int)__string,\n                                  (int)pcVar16 - (int)__string,(int)pcVar14 - (int)pcVar16,__regs)" (( "(") (identifier "__preg") (, ",") (identifier "__string") (, ",") (binary_expression "(int)pcVar14 - (int)__string" (cast_expression "(int)pcVar14" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pcVar14")) (- "-") (cast_expression "(int)__string" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "__string"))) (, ",") (binary_expression "(int)pcVar16 - (int)__string" (cast_expression "(int)pcVar16" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pcVar16")) (- "-") (cast_expression "(int)__string" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "__string"))) (, ",") (binary_expression "(int)pcVar14 - (int)pcVar16" (cast_expression "(int)pcVar14" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pcVar14")) (- "-") (cast_expression "(int)pcVar16" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pcVar16"))) (, ",") (identifier "__regs") () ")"))))) (; ";")) (if_statement "if (-1 < (int)pcVar16) {\nLAB_0001c1f7:\n        pcVar16 = __string + ((int)pcVar16 - (int)param_4);\n        if ((param_8 != 0) && (param_7->num_regs != 0)) {\n          prVar10 = param_7->start;\n          prVar2 = param_7->end;\n          uVar15 = 0;\n          do {\n            while( true ) {\n              iVar5 = prVar10[uVar15];\n              if (-1 < iVar5) {\n                prVar10[uVar15] = (regoff_t)(__string + (iVar5 - (int)param_4));\n              }\n              iVar5 = prVar2[uVar15];\n              if (iVar5 < 0) break;\n              prVar2[uVar15] = (regoff_t)(__string + (iVar5 - (int)param_4));\n              uVar15 = uVar15 + 1;\n              if (param_7->num_regs <= uVar15) goto LAB_0001c317;\n            }\n            uVar15 = uVar15 + 1;\n          } while (uVar15 < param_7->num_regs);\n        }\n      }" (if "if") (parenthesized_expression "(-1 < (int)pcVar16)" (( "(") (binary_expression "-1 < (int)pcVar16" (number_literal "-1") (< "<") (cast_expression "(int)pcVar16" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pcVar16"))) () ")")) (compound_statement "{\nLAB_0001c1f7:\n        pcVar16 = __string + ((int)pcVar16 - (int)param_4);\n        if ((param_8 != 0) && (param_7->num_regs != 0)) {\n          prVar10 = param_7->start;\n          prVar2 = param_7->end;\n          uVar15 = 0;\n          do {\n            while( true ) {\n              iVar5 = prVar10[uVar15];\n              if (-1 < iVar5) {\n                prVar10[uVar15] = (regoff_t)(__string + (iVar5 - (int)param_4));\n              }\n              iVar5 = prVar2[uVar15];\n              if (iVar5 < 0) break;\n              prVar2[uVar15] = (regoff_t)(__string + (iVar5 - (int)param_4));\n              uVar15 = uVar15 + 1;\n              if (param_7->num_regs <= uVar15) goto LAB_0001c317;\n            }\n            uVar15 = uVar15 + 1;\n          } while (uVar15 < param_7->num_regs);\n        }\n      }" ({ "{") (labeled_statement "LAB_0001c1f7:\n        pcVar16 = __string + ((int)pcVar16 - (int)param_4);" (statement_identifier "LAB_0001c1f7") (: ":") (expression_statement "pcVar16 = __string + ((int)pcVar16 - (int)param_4);" (assignment_expression "pcVar16 = __string + ((int)pcVar16 - (int)param_4)" (identifier "pcVar16") (= "=") (binary_expression "__string + ((int)pcVar16 - (int)param_4)" (identifier "__string") (+ "+") (parenthesized_expression "((int)pcVar16 - (int)param_4)" (( "(") (binary_expression "(int)pcVar16 - (int)param_4" (cast_expression "(int)pcVar16" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pcVar16")) (- "-") (cast_expression "(int)param_4" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_4"))) () ")")))) (; ";"))) (if_statement "if ((param_8 != 0) && (param_7->num_regs != 0)) {\n          prVar10 = param_7->start;\n          prVar2 = param_7->end;\n          uVar15 = 0;\n          do {\n            while( true ) {\n              iVar5 = prVar10[uVar15];\n              if (-1 < iVar5) {\n                prVar10[uVar15] = (regoff_t)(__string + (iVar5 - (int)param_4));\n              }\n              iVar5 = prVar2[uVar15];\n              if (iVar5 < 0) break;\n              prVar2[uVar15] = (regoff_t)(__string + (iVar5 - (int)param_4));\n              uVar15 = uVar15 + 1;\n              if (param_7->num_regs <= uVar15) goto LAB_0001c317;\n            }\n            uVar15 = uVar15 + 1;\n          } while (uVar15 < param_7->num_regs);\n        }" (if "if") (parenthesized_expression "((param_8 != 0) && (param_7->num_regs != 0))" (( "(") (binary_expression "(param_8 != 0) && (param_7->num_regs != 0)" (parenthesized_expression "(param_8 != 0)" (( "(") (binary_expression "param_8 != 0" (identifier "param_8") (!= "!=") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "(param_7->num_regs != 0)" (( "(") (binary_expression "param_7->num_regs != 0" (field_expression "param_7->num_regs" (identifier "param_7") (-> "->") (field_identifier "num_regs")) (!= "!=") (number_literal "0")) () ")"))) () ")")) (compound_statement "{\n          prVar10 = param_7->start;\n          prVar2 = param_7->end;\n          uVar15 = 0;\n          do {\n            while( true ) {\n              iVar5 = prVar10[uVar15];\n              if (-1 < iVar5) {\n                prVar10[uVar15] = (regoff_t)(__string + (iVar5 - (int)param_4));\n              }\n              iVar5 = prVar2[uVar15];\n              if (iVar5 < 0) break;\n              prVar2[uVar15] = (regoff_t)(__string + (iVar5 - (int)param_4));\n              uVar15 = uVar15 + 1;\n              if (param_7->num_regs <= uVar15) goto LAB_0001c317;\n            }\n            uVar15 = uVar15 + 1;\n          } while (uVar15 < param_7->num_regs);\n        }" ({ "{") (expression_statement "prVar10 = param_7->start;" (assignment_expression "prVar10 = param_7->start" (identifier "prVar10") (= "=") (field_expression "param_7->start" (identifier "param_7") (-> "->") (field_identifier "start"))) (; ";")) (expression_statement "prVar2 = param_7->end;" (assignment_expression "prVar2 = param_7->end" (identifier "prVar2") (= "=") (field_expression "param_7->end" (identifier "param_7") (-> "->") (field_identifier "end"))) (; ";")) (expression_statement "uVar15 = 0;" (assignment_expression "uVar15 = 0" (identifier "uVar15") (= "=") (number_literal "0")) (; ";")) (do_statement "do {\n            while( true ) {\n              iVar5 = prVar10[uVar15];\n              if (-1 < iVar5) {\n                prVar10[uVar15] = (regoff_t)(__string + (iVar5 - (int)param_4));\n              }\n              iVar5 = prVar2[uVar15];\n              if (iVar5 < 0) break;\n              prVar2[uVar15] = (regoff_t)(__string + (iVar5 - (int)param_4));\n              uVar15 = uVar15 + 1;\n              if (param_7->num_regs <= uVar15) goto LAB_0001c317;\n            }\n            uVar15 = uVar15 + 1;\n          } while (uVar15 < param_7->num_regs);" (do "do") (compound_statement "{\n            while( true ) {\n              iVar5 = prVar10[uVar15];\n              if (-1 < iVar5) {\n                prVar10[uVar15] = (regoff_t)(__string + (iVar5 - (int)param_4));\n              }\n              iVar5 = prVar2[uVar15];\n              if (iVar5 < 0) break;\n              prVar2[uVar15] = (regoff_t)(__string + (iVar5 - (int)param_4));\n              uVar15 = uVar15 + 1;\n              if (param_7->num_regs <= uVar15) goto LAB_0001c317;\n            }\n            uVar15 = uVar15 + 1;\n          }" ({ "{") (while_statement "while( true ) {\n              iVar5 = prVar10[uVar15];\n              if (-1 < iVar5) {\n                prVar10[uVar15] = (regoff_t)(__string + (iVar5 - (int)param_4));\n              }\n              iVar5 = prVar2[uVar15];\n              if (iVar5 < 0) break;\n              prVar2[uVar15] = (regoff_t)(__string + (iVar5 - (int)param_4));\n              uVar15 = uVar15 + 1;\n              if (param_7->num_regs <= uVar15) goto LAB_0001c317;\n            }" (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (compound_statement "{\n              iVar5 = prVar10[uVar15];\n              if (-1 < iVar5) {\n                prVar10[uVar15] = (regoff_t)(__string + (iVar5 - (int)param_4));\n              }\n              iVar5 = prVar2[uVar15];\n              if (iVar5 < 0) break;\n              prVar2[uVar15] = (regoff_t)(__string + (iVar5 - (int)param_4));\n              uVar15 = uVar15 + 1;\n              if (param_7->num_regs <= uVar15) goto LAB_0001c317;\n            }" ({ "{") (expression_statement "iVar5 = prVar10[uVar15];" (assignment_expression "iVar5 = prVar10[uVar15]" (identifier "iVar5") (= "=") (subscript_expression "prVar10[uVar15]" (identifier "prVar10") ([ "[") (identifier "uVar15") (] "]"))) (; ";")) (if_statement "if (-1 < iVar5) {\n                prVar10[uVar15] = (regoff_t)(__string + (iVar5 - (int)param_4));\n              }" (if "if") (parenthesized_expression "(-1 < iVar5)" (( "(") (binary_expression "-1 < iVar5" (number_literal "-1") (< "<") (identifier "iVar5")) () ")")) (compound_statement "{\n                prVar10[uVar15] = (regoff_t)(__string + (iVar5 - (int)param_4));\n              }" ({ "{") (expression_statement "prVar10[uVar15] = (regoff_t)(__string + (iVar5 - (int)param_4));" (assignment_expression "prVar10[uVar15] = (regoff_t)(__string + (iVar5 - (int)param_4))" (subscript_expression "prVar10[uVar15]" (identifier "prVar10") ([ "[") (identifier "uVar15") (] "]")) (= "=") (call_expression "(regoff_t)(__string + (iVar5 - (int)param_4))" (parenthesized_expression "(regoff_t)" (( "(") (identifier "regoff_t") () ")")) (argument_list "(__string + (iVar5 - (int)param_4))" (( "(") (binary_expression "__string + (iVar5 - (int)param_4)" (identifier "__string") (+ "+") (parenthesized_expression "(iVar5 - (int)param_4)" (( "(") (binary_expression "iVar5 - (int)param_4" (identifier "iVar5") (- "-") (cast_expression "(int)param_4" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_4"))) () ")"))) () ")")))) (; ";")) (} "}"))) (expression_statement "iVar5 = prVar2[uVar15];" (assignment_expression "iVar5 = prVar2[uVar15]" (identifier "iVar5") (= "=") (subscript_expression "prVar2[uVar15]" (identifier "prVar2") ([ "[") (identifier "uVar15") (] "]"))) (; ";")) (if_statement "if (iVar5 < 0) break;" (if "if") (parenthesized_expression "(iVar5 < 0)" (( "(") (binary_expression "iVar5 < 0" (identifier "iVar5") (< "<") (number_literal "0")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "prVar2[uVar15] = (regoff_t)(__string + (iVar5 - (int)param_4));" (assignment_expression "prVar2[uVar15] = (regoff_t)(__string + (iVar5 - (int)param_4))" (subscript_expression "prVar2[uVar15]" (identifier "prVar2") ([ "[") (identifier "uVar15") (] "]")) (= "=") (call_expression "(regoff_t)(__string + (iVar5 - (int)param_4))" (parenthesized_expression "(regoff_t)" (( "(") (identifier "regoff_t") () ")")) (argument_list "(__string + (iVar5 - (int)param_4))" (( "(") (binary_expression "__string + (iVar5 - (int)param_4)" (identifier "__string") (+ "+") (parenthesized_expression "(iVar5 - (int)param_4)" (( "(") (binary_expression "iVar5 - (int)param_4" (identifier "iVar5") (- "-") (cast_expression "(int)param_4" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_4"))) () ")"))) () ")")))) (; ";")) (expression_statement "uVar15 = uVar15 + 1;" (assignment_expression "uVar15 = uVar15 + 1" (identifier "uVar15") (= "=") (binary_expression "uVar15 + 1" (identifier "uVar15") (+ "+") (number_literal "1"))) (; ";")) (if_statement "if (param_7->num_regs <= uVar15) goto LAB_0001c317;" (if "if") (parenthesized_expression "(param_7->num_regs <= uVar15)" (( "(") (binary_expression "param_7->num_regs <= uVar15" (field_expression "param_7->num_regs" (identifier "param_7") (-> "->") (field_identifier "num_regs")) (<= "<=") (identifier "uVar15")) () ")")) (goto_statement "goto LAB_0001c317;" (goto "goto") (statement_identifier "LAB_0001c317") (; ";"))) (} "}"))) (expression_statement "uVar15 = uVar15 + 1;" (assignment_expression "uVar15 = uVar15 + 1" (identifier "uVar15") (= "=") (binary_expression "uVar15 + 1" (identifier "uVar15") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(uVar15 < param_7->num_regs)" (( "(") (binary_expression "uVar15 < param_7->num_regs" (identifier "uVar15") (< "<") (field_expression "param_7->num_regs" (identifier "param_7") (-> "->") (field_identifier "num_regs"))) () ")")) (; ";")) (} "}"))) (} "}"))) (} "}"))))) (labeled_statement "LAB_0001c317:\n    uVar15 = ~(uint)pcVar16 >> 0x1f;" (statement_identifier "LAB_0001c317") (: ":") (expression_statement "uVar15 = ~(uint)pcVar16 >> 0x1f;" (assignment_expression "uVar15 = ~(uint)pcVar16 >> 0x1f" (identifier "uVar15") (= "=") (binary_expression "~(uint)pcVar16 >> 0x1f" (unary_expression "~(uint)pcVar16" (~ "~") (cast_expression "(uint)pcVar16" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "pcVar16"))) (>> ">>") (number_literal "0x1f"))) (; ";"))) (} "}")))) (labeled_statement "LAB_0001c07a:\n  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    \n    FUN_0002c430();\n  }" (statement_identifier "LAB_0001c07a") (: ":") (if_statement "if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    \n    FUN_0002c430();\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_0002c430();\n  }" ({ "{") (expression_statement "FUN_0002c430();" (call_expression "FUN_0002c430()" (identifier "FUN_0002c430") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}")))) (return_statement "return uVar15;" (return "return") (identifier "uVar15") (; ";")) (} "}")))

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

int __regparm2
function_1(type_1 *type_1,char *buf,size_t var_2,size_t var_13,type_2 *var_5,
           int var_12)

{
  char cVar1;
  short var_11;
  type_3 *d;
  int var_30;
  type_1 *new_regex;
  type_4 _Var4;
  void *var_16;
  type_3 *var_21;
  char *var_23;
  type_2 *__regs;
  void *var_29;
  type_5 var_24;
  type_6 *var_17;
  type_6 *prVar10;
  type_5 var_19;
  char *pcVar12;
  int var_1;
  type_2 *in_stack_00000014;
  int var_7;
  type_2 *local_40;
  type_4 var_25;
  int var_31;
  type_7 uStack_14;
  
  uStack_14 = 0x1bf59;
  local_40 = in_stack_00000014;
  var_31 = *(int *)(var_1 + 0x14);
  if (var_2 == 0) {
    if (function_1::regex_last == (type_1 *)0x0) {
      var_23 = (char *)var_3(0,"no previous regular expression",5,buf);
                    /* WARNING: Subroutine does not return */
      var_4(var_23);
    }
  }
  else {
    match_regex::regex_last = (type_1 *)var_2;
  }
  new_regex = function_1::regex_last;
  if ((type_2 *)0x7ffffffe < var_5) {
    var_23 = (char *)var_3(0,"regex input buffer length larger than INT_MAX",5,0);
                    /* WARNING: Subroutine does not return */
    var_6(var_23);
  }
  if ((((function_1::regex_last->pattern).field_0x1c & 0x10) != 0) && (var_7 != 0)) {
    if (function_1::regex_last->type_3 != (type_3 *)0x0) {
      dfafree(function_1::regex_last->type_3);
      var_8(new_regex->type_3);
      new_regex->type_3 = (type_3 *)0x0;
    }
    var_9((type_8 *)new_regex);
    var_10(new_regex,var_7);
  }
  var_11._0_1_ = new_regex->begline;
  var_11._1_1_ = new_regex->endline;
  (new_regex->pattern).field_0x1c = (new_regex->pattern).field_0x1c & 0xf9 | 2;
  if (var_11 != 0) {
    if (new_regex->endline == false) {
      if (var_12 != 0) {
        if ((new_regex->flags & 4) == 0) goto LAB_0001c3a8;
        if (*(char *)((var_13 - 1) + var_12) != var_14) {
          var_16 = var_15((void *)(var_12 + var_13),(int)var_14,
                              (int)var_5 - var_12);
          if (var_16 == (void *)0x0) goto LAB_0001c3a8;
          var_12 = (int)var_16 + (1 - var_13);
        }
      }
    }
    else if ((new_regex->flags & 4) == 0) {
      var_12 = (int)var_5;
    }
    else {
      var_16 = var_15((void *)(var_12 + var_13),(int)var_14,
                          (int)var_5 - var_12);
      var_12 = (int)var_16 - var_13;
      if (var_16 == (void *)0x0) {
        var_12 = (int)var_5;
      }
    }
    if (var_7 != 0) {
      var_17 = in_stack_00000014->start;
      if (var_17 == (type_6 *)0x0) {
        var_17 = (type_6 *)var_18(1,4);
        in_stack_00000014->start = var_17;
        prVar10 = (type_6 *)var_18(1,4);
        in_stack_00000014->num_regs = 1;
        var_17 = in_stack_00000014->start;
        in_stack_00000014->end = prVar10;
      }
      else {
        prVar10 = in_stack_00000014->end;
      }
      *var_17 = var_12;
      *prVar10 = var_12;
      if (1 < in_stack_00000014->num_regs) {
        var_19 = 1;
        do {
          prVar10[var_19] = -1;
          var_17[var_19] = -1;
          var_19 = var_19 + 1;
        } while (var_19 < in_stack_00000014->num_regs);
      }
    }
    var_19 = 1;
    goto LAB_0001c07a;
  }
  if (var_12 == 0) {
    d = new_regex->type_3;
    var_21 = var_20(d);
    if (var_21 == (type_3 *)0x0) {
      if ((var_7 == 0) && ((new_regex->flags & 4) != 0)) {
LAB_0001c345:
        var_25 = false;
        var_23 = var_22(new_regex->type_3,(char *)var_13,
                         (char *)((int)&var_5->num_regs + var_13),true,(size_t *)0x0,
                         &var_25);
        if (var_23 != (char *)0x0) {
          var_19 = new_regex->flags;
LAB_0001c36d:
          var_24 = var_19 & 4;
          if (var_24 == 0) goto LAB_0001c398;
          var_19 = 1;
          if (var_25 == false) goto LAB_0001c07a;
          goto LAB_0001c2de;
        }
      }
      else {
        _Var4 = var_26(d);
        if (!_Var4) goto LAB_0001c2d8;
        var_25 = false;
        var_23 = var_22(d,(char *)var_13,
                         (char *)((int)&var_5->num_regs + var_13),true,(size_t *)0x0,
                         &var_25);
        if (var_23 != (char *)0x0) {
          var_19 = new_regex->flags;
          var_24 = var_19 & 4;
          if (var_7 == 0) goto LAB_0001c36d;
          goto LAB_0001c2de;
        }
      }
    }
    else {
      var_23 = var_22(var_21,(char *)var_13,
                       (char *)((int)&var_5->num_regs + var_13),true,(size_t *)0x0,
                       (type_4 *)0x0);
      if (var_23 != (char *)0x0) {
        var_19 = new_regex->flags & 4;
        if (var_7 == 0) {
          if (var_19 != 0) goto LAB_0001c345;
          goto LAB_0001c398;
        }
        if (var_19 != 0) goto LAB_0001c100;
        goto LAB_0001c2f2;
      }
    }
LAB_0001c3a8:
    var_19 = 0;
  }
  else {
LAB_0001c2d8:
    var_24 = new_regex->flags & 4;
LAB_0001c2de:
    if (var_24 == 0) {
LAB_0001c2e6:
      if (var_7 == 0) {
LAB_0001c398:
        local_40 = (type_2 *)0x0;
      }
LAB_0001c2f2:
      pcVar12 = (char *)var_27((type_9 *)new_regex,(char *)var_13,
                                  (int)var_5,var_12,(int)var_5 - var_12,local_40);
    }
    else {
LAB_0001c100:
      cVar1 = var_14;
      if (var_14 == '\n') goto LAB_0001c2e6;
      var_23 = (char *)var_13;
      if (var_12 != 0) {
        var_16 = var_28((void *)var_13,(int)var_14,var_12);
        var_23 = (char *)((int)var_16 + 1);
        if (var_16 == (void *)0x0) {
          var_23 = (char *)var_13;
        }
      }
      pcVar12 = (char *)(var_12 + var_13);
      __regs = (type_2 *)0x0;
      if (var_7 != 0) {
        __regs = in_stack_00000014;
      }
      var_16 = (void *)((int)&var_5->num_regs + var_13);
      while( true ) {
        var_29 = var_15(var_23,(int)cVar1,(int)var_16 - (int)var_23);
        if (var_29 == (void *)0x0) break;
        pcVar12 = (char *)var_27((type_9 *)new_regex,var_23,(int)var_29 - (int)var_23,
                                    (int)pcVar12 - (int)var_23,(int)var_29 - (int)pcVar12,__regs);
        if (-1 < (int)pcVar12) goto LAB_0001c1f7;
        if (var_29 == var_16) goto LAB_0001c317;
        pcVar12 = (char *)((int)var_29 + 1);
        var_23 = pcVar12;
        cVar1 = var_14;
      }
      pcVar12 = (char *)var_27((type_9 *)new_regex,var_23,(int)var_16 - (int)var_23,
                                  (int)pcVar12 - (int)var_23,(int)var_16 - (int)pcVar12,__regs);
      if (-1 < (int)pcVar12) {
LAB_0001c1f7:
        pcVar12 = var_23 + ((int)pcVar12 - var_13);
        if ((var_7 != 0) && (in_stack_00000014->num_regs != 0)) {
          var_17 = in_stack_00000014->start;
          prVar10 = in_stack_00000014->end;
          var_19 = 0;
          do {
            while( true ) {
              var_30 = var_17[var_19];
              if (-1 < var_30) {
                var_17[var_19] = (type_6)(var_23 + (var_30 - var_13));
              }
              var_30 = prVar10[var_19];
              if (var_30 < 0) break;
              prVar10[var_19] = (type_6)(var_23 + (var_30 - var_13));
              var_19 = var_19 + 1;
              if (in_stack_00000014->num_regs <= var_19) goto LAB_0001c317;
            }
            var_19 = var_19 + 1;
          } while (var_19 < in_stack_00000014->num_regs);
        }
      }
    }
LAB_0001c317:
    var_19 = ~(type_5)pcVar12 >> 0x1f;
  }
LAB_0001c07a:
  if (var_31 != *(int *)(var_1 + 0x14)) {
                    /* WARNING: Subroutine does not return */
    var_32();
  }
  return var_19;
}


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

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

uint __regparm2
MASKED(undefined4 param_1,undefined4 param_2,re_pattern_buffer *param_3,char *param_4,
            uint param_5,uint param_6,re_registers *param_7,int param_8)

{
  ulong uVar1;
  regoff_t *prVar2;
  reg_syntax_t rVar3;
  re_pattern_buffer *__preg;
  char cVar4;
  int iVar5;
  void *pvVar6;
  re_registers *__regs;
  char *pcVar7;
  uint uVar8;
  regoff_t *prVar10;
  uint *puVar11;
  undefined4 uVar12;
  uint *puVar13;
  char *pcVar14;
  uint uVar15;
  char *pcVar16;
  char *__string;
  int in_GS_OFFSET;
  re_registers *local_40;
  char local_21;
  int local_20;
  undefined4 uStack_14;
  uchar *puVar9;
  
  uStack_14 = 0x1bf59;
  local_40 = param_7;
  local_20 = *(int *)(in_GS_OFFSET + 0x14);
  if (param_3 == (re_pattern_buffer *)0x0) {
    if (DAT_0003940c == (re_pattern_buffer *)0x0) {
      uVar12 = dcgettext(0,"no previous regular expression",5,param_2);
                    /* WARNING: Subroutine does not return */
      FUN_000131f0(uVar12);
    }
  }
  else {
    DAT_0003940c = param_3;
  }
  __preg = DAT_0003940c;
  if (0x7ffffffe < param_5) {
    uVar12 = dcgettext(0,"regex input buffer length larger than INT_MAX",5,0);
                    /* WARNING: Subroutine does not return */
    FUN_0001c8c0(uVar12);
  }
  if (((DAT_0003940c->field_0x1c & 0x10) != 0) && (param_8 != 0)) {
    if (DAT_0003940c[1].used != 0) {
      FUN_000245c0(DAT_0003940c[1].used);
      free((void *)__preg[1].used);
      __preg[1].used = 0;
    }
    regfree(__preg);
    FUN_0001bbc0();
  }
  rVar3 = __preg[1].syntax;
  __preg->field_0x1c = __preg->field_0x1c & 0xf9 | 2;
  if ((short)rVar3 != 0) {
    if (*(char *)((int)&__preg[1].syntax + 1) == '\0') {
      if (param_6 != 0) {
        if (((uint)__preg[1].buffer & 4) == 0) goto LAB_0001c3a8;
        if (param_4[param_6 - 1] != DAT_00039240) {
          iVar5 = FUN_0002b7a0(param_4 + param_6,(int)DAT_00039240,param_5 - param_6);
          if (iVar5 == 0) goto LAB_0001c3a8;
          param_6 = (iVar5 - (int)param_4) + 1;
        }
      }
    }
    else if (((uint)__preg[1].buffer & 4) == 0) {
      param_6 = param_5;
    }
    else {
      iVar5 = FUN_0002b7a0(param_4 + param_6,(int)DAT_00039240,param_5 - param_6);
      param_6 = iVar5 - (int)param_4;
      if (iVar5 == 0) {
        param_6 = param_5;
      }
    }
    if (param_8 != 0) {
      puVar13 = (uint *)param_7->start;
      if (puVar13 == (uint *)0x0) {
        prVar10 = (regoff_t *)FUN_00029ec0(1,4);
        param_7->start = prVar10;
        puVar11 = (uint *)FUN_00029ec0(1,4);
        param_7->num_regs = 1;
        puVar13 = (uint *)param_7->start;
        param_7->end = (regoff_t *)puVar11;
      }
      else {
        puVar11 = (uint *)param_7->end;
      }
      *puVar13 = param_6;
      *puVar11 = param_6;
      if (1 < param_7->num_regs) {
        uVar15 = 1;
        do {
          puVar11[uVar15] = 0xffffffff;
          puVar13[uVar15] = 0xffffffff;
          uVar15 = uVar15 + 1;
        } while (uVar15 < param_7->num_regs);
      }
    }
    uVar15 = 1;
    goto LAB_0001c07a;
  }
  if (param_6 == 0) {
    uVar1 = __preg[1].used;
    iVar5 = FUN_000245a0(uVar1);
    if (iVar5 == 0) {
      if ((param_8 == 0) && (((uint)__preg[1].buffer & 4) != 0)) {
LAB_0001c345:
        local_21 = '\0';
        iVar5 = FUN_00024580(__preg[1].used,param_4,param_4 + param_5,1,0,&local_21);
        if (iVar5 != 0) {
          puVar9 = __preg[1].buffer;
LAB_0001c36d:
          uVar8 = (uint)puVar9 & 4;
          if (uVar8 == 0) goto LAB_0001c398;
          uVar15 = 1;
          if (local_21 == '\0') goto LAB_0001c07a;
          goto LAB_0001c2de;
        }
      }
      else {
        cVar4 = FUN_000245b0(uVar1);
        if (cVar4 == '\0') goto LAB_0001c2d8;
        local_21 = '\0';
        iVar5 = FUN_00024580(uVar1,param_4,param_4 + param_5,1,0,&local_21);
        if (iVar5 != 0) {
          puVar9 = __preg[1].buffer;
          uVar8 = (uint)puVar9 & 4;
          if (param_8 == 0) goto LAB_0001c36d;
          goto LAB_0001c2de;
        }
      }
    }
    else {
      iVar5 = FUN_00024580(iVar5,param_4,param_4 + param_5,1,0,0);
      if (iVar5 != 0) {
        uVar15 = (uint)__preg[1].buffer & 4;
        if (param_8 == 0) {
          if (uVar15 != 0) goto LAB_0001c345;
          goto LAB_0001c398;
        }
        if (uVar15 != 0) goto LAB_0001c100;
        goto LAB_0001c2f2;
      }
    }
LAB_0001c3a8:
    uVar15 = 0;
  }
  else {
LAB_0001c2d8:
    uVar8 = (uint)__preg[1].buffer & 4;
LAB_0001c2de:
    if (uVar8 == 0) {
LAB_0001c2e6:
      if (param_8 == 0) {
LAB_0001c398:
        local_40 = (re_registers *)0x0;
      }
LAB_0001c2f2:
      pcVar16 = (char *)re_search(__preg,param_4,param_5,param_6,param_5 - param_6,local_40);
    }
    else {
LAB_0001c100:
      cVar4 = DAT_00039240;
      if (DAT_00039240 == '\n') goto LAB_0001c2e6;
      __string = param_4;
      if (param_6 != 0) {
        pvVar6 = memrchr(param_4,(int)DAT_00039240,param_6);
        __string = (char *)((int)pvVar6 + 1);
        if (pvVar6 == (void *)0x0) {
          __string = param_4;
        }
      }
      pcVar16 = param_4 + param_6;
      __regs = (re_registers *)0x0;
      if (param_8 != 0) {
        __regs = param_7;
      }
      pcVar14 = param_4 + param_5;
      while( true ) {
        pcVar7 = (char *)FUN_0002b7a0(__string,(int)cVar4,(int)pcVar14 - (int)__string);
        if (pcVar7 == (char *)0x0) break;
        pcVar16 = (char *)re_search(__preg,__string,(int)pcVar7 - (int)__string,
                                    (int)pcVar16 - (int)__string,(int)pcVar7 - (int)pcVar16,__regs);
        if (-1 < (int)pcVar16) goto LAB_0001c1f7;
        if (pcVar7 == pcVar14) goto LAB_0001c317;
        pcVar16 = pcVar7 + 1;
        __string = pcVar16;
        cVar4 = DAT_00039240;
      }
      pcVar16 = (char *)re_search(__preg,__string,(int)pcVar14 - (int)__string,
                                  (int)pcVar16 - (int)__string,(int)pcVar14 - (int)pcVar16,__regs);
      if (-1 < (int)pcVar16) {
LAB_0001c1f7:
        pcVar16 = __string + ((int)pcVar16 - (int)param_4);
        if ((param_8 != 0) && (param_7->num_regs != 0)) {
          prVar10 = param_7->start;
          prVar2 = param_7->end;
          uVar15 = 0;
          do {
            while( true ) {
              iVar5 = prVar10[uVar15];
              if (-1 < iVar5) {
                prVar10[uVar15] = (regoff_t)(__string + (iVar5 - (int)param_4));
              }
              iVar5 = prVar2[uVar15];
              if (iVar5 < 0) break;
              prVar2[uVar15] = (regoff_t)(__string + (iVar5 - (int)param_4));
              uVar15 = uVar15 + 1;
              if (param_7->num_regs <= uVar15) goto LAB_0001c317;
            }
            uVar15 = uVar15 + 1;
          } while (uVar15 < param_7->num_regs);
        }
      }
    }
LAB_0001c317:
    uVar15 = ~(uint)pcVar16 >> 0x1f;
  }
LAB_0001c07a:
  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {
                    /* WARNING: Subroutine does not return */
    FUN_0002c430();
  }
  return uVar15;
}

