uint FUN_0041ecbc(undefined4 param_1,int param_2,char *param_3,uint *param_4,char param_5)

{
  char cVar1;
  bool bVar2;
  bool bVar3;
  uint uVar4;
  char *pcVar5;
  int iVar6;
  uint uVar7;
  char cVar8;
  uint uVar9;
  
  bVar2 = false;
  uVar9 = 0xffffffff;
LAB_0041eec0:
  do {
    while( true ) {
      uVar7 = xs_getc(param_1)   //possible issue identified - semgrep
      if (uVar7 == 0xffffffff) {
        bVar3 = false;
        goto LAB_0041eeec;
      }
      bVar3 = true;
      if (uVar7 == 0) goto LAB_0041eeec;
      if ((int)uVar9 < 0) break;
      if (uVar9 == 0) {
        if ((uVar7 != 0x22) && (uVar7 != 0x27)) goto LAB_0041ee30;
        xs_ungetc(uVar7,param_1)   //possible issue identified - semgrep
        uVar4 = *(uint *)(param_2 + 8) & 0xfffffffe;
LAB_0041ee20:
        *(uint *)(param_2 + 8) = uVar4;
        bVar3 = false;
        goto LAB_0041eeec;
      }
      if (bVar2) {
        if (uVar7 == 0x72) {
          uVar7 = 0xd;
        }
        else if (uVar7 == 0x74) {
          uVar7 = 9;
        }
        else if (uVar7 == 0x6e) {
          uVar7 = 10;
        }
        iVar6 = sobj_add_char(param_2,uVar7);
        bVar2 = false;
        if (iVar6 < 0) {
          bVar3 = true;
          goto LAB_0041eeec;
        }
      }
      else if (((int)param_5 == 0) || (uVar7 != (int)param_5)) {
        if (uVar7 == uVar9) {
          uVar4 = *(uint *)(param_2 + 8) | 1;
          uVar9 = uVar7;
          goto LAB_0041ee20;
        }
        iVar6 = sobj_add_char(param_2,uVar7);
        bVar3 = true;
        if (iVar6 < 0) {
LAB_0041eeec:
          if (param_4 != (uint *)0x0) {
            *param_4 = uVar9;
          }
          return uVar7 & -(uint)!bVar3;
        }
      }
      else {
        bVar2 = true;
      }
    }
    uVar9 = 0x22;
  } while ((uVar7 == 0x22) || (uVar9 = 0x27, uVar7 == 0x27));
LAB_0041ee30:
  cVar8 = (char)uVar7;
  if ((cVar8 == ' ') || (((cVar8 == '\t' || (cVar8 == '\n')) || (cVar8 == '\r')))) {
LAB_0041ee84:
    *(uint *)(param_2 + 8) = *(uint *)(param_2 + 8) & 0xfffffffe;
    bVar3 = false;
  }
  else {
    pcVar5 = param_3;
    if (param_3 != (char *)0x0) {
      while( true ) {
        cVar1 = *pcVar5;
        pcVar5 = pcVar5 + 1;
        if (cVar1 == '\0') break;
        if (cVar1 == cVar8) goto LAB_0041ee84;
      }
    }
    iVar6 = sobj_add_char(param_2,uVar7);
    bVar3 = true;
    if (-1 < iVar6) {
      uVar9 = 0;
      goto LAB_0041eec0;
    }
  }
  uVar9 = 0;
  goto LAB_0041eeec;
}