
/* std::time_get<char, std::istreambuf_iterator<char, std::char_traits<char> >
   >::get(std::istreambuf_iterator<char, std::char_traits<char> >, std::istreambuf_iterator<char,
   std::char_traits<char> >, std::ios_base&, std::_Ios_Iostate&, tm*, char const*, char const*)
   const */

undefined1  [16]
std::time_get<char,std::istreambuf_iterator<char,std::char_traits<char>>>::get
          (undefined8 param_1,long *param_2,ulong param_3,long *param_4,ulong param_5,long param_6,
          uint *param_7,undefined8 param_8,ctype *param_9,ctype *param_10)

{
  byte bVar1;
  long lVar2;
  char cVar3;
  char cVar4;
  char cVar5;
  ctype cVar6;
  ctype cVar7;
  ctype cVar8;
  int iVar9;
  ctype *pcVar10;
  ctype *pcVar11;
  byte *pbVar12;
  ulong uVar13;
  bool bVar14;
  bool bVar15;
  ulong uVar16;
  bool bVar17;
  ctype *pcVar18;
  bool bVar19;
  bool bVar20;
  undefined1 auVar21 [16];
  undefined1 auVar22 [12];
  ulong local_d0;
  ulong local_c8;
  ctype local_5c;
  ctype local_5b;
  ctype local_5a;
  undefined1 local_59;
  long *local_58;
  ulong local_50;
  long *local_48;
  ulong local_40;
  
  pcVar10 = use_facet<std::ctype<char>>((locale *)(param_6 + 0xd0));
  uVar16 = param_3 & 0xffffffff;
  *param_7 = 0;
  local_d0 = param_3;
  if (param_9 == param_10) {
LAB_002962c3:
    auVar21._8_8_ = uVar16 | local_d0 & 0xffffffff00000000;
    auVar21._0_8_ = param_2;
    return auVar21;
  }
  bVar19 = (int)param_5 == -1;
  local_c8 = param_5;
LAB_00296001:
  bVar20 = (int)uVar16 == -1;
  bVar17 = param_2 != (long *)0x0 && bVar20;
  bVar15 = bVar20;
  if (bVar17) {
    if ((ulong)param_2[2] < (ulong)param_2[3]) {
      bVar15 = false;
    }
    else {
      iVar9 = (**(code **)(*param_2 + 0x48))(param_2);
      bVar15 = iVar9 == -1 && bVar17;
      if (iVar9 == -1) {
        param_2 = (long *)0x0;
      }
    }
  }
  bVar14 = param_4 != (long *)0x0 && bVar19;
  bVar17 = bVar19;
  if (bVar14) {
    if ((ulong)param_4[3] <= (ulong)param_4[2]) {
      iVar9 = (**(code **)(*param_4 + 0x48))(param_4);
      if (iVar9 == -1) {
        param_4 = (long *)0x0;
      }
      bVar17 = iVar9 == -1 && bVar14;
      goto LAB_0029602d;
    }
    if (bVar15 == false) goto LAB_00296469;
  }
  else {
LAB_0029602d:
    if (bVar17 == bVar15) {
LAB_00296469:
      *param_7 = 6;
      goto LAB_002962c3;
    }
  }
  cVar6 = *param_9;
  cVar7 = pcVar10[(ulong)(byte)cVar6 + 0x139];
  if (cVar7 == (ctype)0x0) {
    cVar7 = cVar6;
    if (*(code **)(*(long *)pcVar10 + 0x40) != (code *)PTR_do_narrow_003bdd10) {
      cVar7 = (ctype)(**(code **)(*(long *)pcVar10 + 0x40))(pcVar10,(int)(char)cVar6,0);
    }
    if (cVar7 != (ctype)0x0) {
      pcVar10[(ulong)(byte)cVar6 + 0x139] = cVar7;
      goto LAB_00296071;
    }
LAB_00295f20:
    lVar2 = *(long *)(pcVar10 + 0x30);
    if ((*(byte *)(lVar2 + 1 + (ulong)(byte)*param_9 * 2) & 0x20) != 0) {
      pcVar18 = param_9 + 1;
      pcVar11 = param_10;
      if (param_10 != pcVar18) {
        bVar1 = *(byte *)(lVar2 + 1 + (ulong)(byte)param_9[1] * 2);
        while ((pcVar11 = pcVar18, (bVar1 & 0x20) != 0 &&
               (pcVar18 = pcVar18 + 1, pcVar11 = pcVar18, param_10 != pcVar18))) {
          bVar1 = *(byte *)(lVar2 + 1 + (ulong)(byte)*pcVar18 * 2);
        }
      }
      do {
        param_9 = pcVar11;
        bVar20 = (int)uVar16 == -1;
        bVar15 = bVar20;
        bVar17 = bVar19;
        if (param_2 != (long *)0x0 && bVar20) {
          if ((ulong)param_2[3] <= (ulong)param_2[2]) {
            iVar9 = (**(code **)(*param_2 + 0x48))(param_2);
            bVar15 = iVar9 == -1 && (param_2 != (long *)0x0 && bVar20);
            if (iVar9 == -1) {
              param_2 = (long *)0x0;
            }
            goto LAB_00296353;
          }
          bVar15 = false;
          if (param_4 != (long *)0x0 && bVar19) goto LAB_002963d5;
LAB_00296362:
          if (bVar15 == bVar17) goto LAB_00295fe1;
        }
        else {
LAB_00296353:
          if (param_4 == (long *)0x0 || !bVar19) goto LAB_00296362;
LAB_002963d5:
          bVar17 = param_4 != (long *)0x0;
          if ((ulong)param_4[3] <= (ulong)param_4[2]) {
            iVar9 = (**(code **)(*param_4 + 0x48))(param_4);
            if (iVar9 == -1) {
              param_4 = (long *)0x0;
            }
            bVar17 = iVar9 == -1 && (bVar17 && bVar19);
            goto LAB_00296362;
          }
          if (bVar15 == false) goto LAB_00295fe1;
        }
        uVar13 = uVar16;
        if ((param_2 == (long *)0x0) || (!bVar20)) {
LAB_0029637c:
          if ((*(byte *)(*(long *)(pcVar10 + 0x30) + 1 + (uVar13 & 0xff) * 2) & 0x20) == 0)
          goto LAB_00295fe1;
          pbVar12 = (byte *)param_2[2];
          if (pbVar12 < (byte *)param_2[3]) goto LAB_00296398;
          (**(code **)(*param_2 + 0x50))(param_2);
        }
        else {
          pbVar12 = (byte *)param_2[2];
          if ((byte *)param_2[3] <= pbVar12) {
            uVar13 = (**(code **)(*param_2 + 0x48))(param_2);
            if ((int)uVar13 == -1) {
              param_2 = (long *)0x0;
            }
            goto LAB_0029637c;
          }
          if ((*(byte *)(*(long *)(pcVar10 + 0x30) + 1 + (ulong)*pbVar12 * 2) & 0x20) == 0)
          goto code_r0x00296430;
LAB_00296398:
          param_2[2] = (long)(pbVar12 + 1);
        }
        uVar16 = 0xffffffff;
        pcVar11 = param_9;
      } while( true );
    }
    cVar5 = (char)uVar16;
    cVar3 = cVar5;
    if ((param_2 != (long *)0x0) && (bVar20)) {
      if ((char *)param_2[2] < (char *)param_2[3]) {
        cVar3 = *(char *)param_2[2];
      }
      else {
        iVar9 = (**(code **)(*param_2 + 0x48))(param_2);
        cVar3 = -1;
        if (iVar9 == -1) {
          param_2 = (long *)0x0;
        }
        else {
          cVar3 = (char)iVar9;
        }
      }
    }
    cVar3 = (**(code **)(*(long *)pcVar10 + 0x20))(pcVar10,(int)cVar3);
    cVar4 = (**(code **)(*(long *)pcVar10 + 0x20))(pcVar10,(int)(char)*param_9);
    if (cVar4 != cVar3) {
      if ((param_2 != (long *)0x0) && (bVar20)) {
        if ((char *)param_2[2] < (char *)param_2[3]) {
          cVar5 = *(char *)param_2[2];
        }
        else {
          iVar9 = (**(code **)(*param_2 + 0x48))(param_2);
          cVar5 = -1;
          if (iVar9 == -1) {
            param_2 = (long *)0x0;
          }
          else {
            cVar5 = (char)iVar9;
          }
        }
      }
      cVar5 = (**(code **)(*(long *)pcVar10 + 0x10))(pcVar10,(int)cVar5);
      cVar3 = (**(code **)(*(long *)pcVar10 + 0x10))(pcVar10,(int)(char)*param_9);
      if (cVar3 != cVar5) goto LAB_00296748;
    }
    if ((ulong)param_2[2] < (ulong)param_2[3]) {
      param_2[2] = param_2[2] + 1;
    }
    else {
      (**(code **)(*param_2 + 0x50))(param_2);
    }
    param_9 = param_9 + 1;
    uVar16 = 0xffffffff;
    goto LAB_00295fe1;
  }
LAB_00296071:
  if (cVar7 != (ctype)0x25) goto LAB_00295f20;
  pcVar18 = param_9 + 1;
  if (param_10 == pcVar18) {
LAB_00296748:
    *param_7 = 4;
  }
  else {
    cVar6 = param_9[1];
    cVar7 = pcVar10[(ulong)(byte)cVar6 + 0x139];
    if (cVar7 == (ctype)0x0) {
      cVar7 = cVar6;
      if (*(code **)(*(long *)pcVar10 + 0x40) != (code *)PTR_do_narrow_003bdd10) {
        cVar7 = (ctype)(**(code **)(*(long *)pcVar10 + 0x40))(pcVar10,(int)(char)cVar6,0);
      }
      cVar8 = cVar7;
      if (cVar7 != (ctype)0x0) {
        pcVar10[(ulong)(byte)cVar6 + 0x139] = cVar7;
        goto LAB_002960ca;
      }
LAB_0029655b:
      cVar7 = (ctype)0x0;
    }
    else {
LAB_002960ca:
      if ((cVar7 != (ctype)0x45) && (cVar8 = cVar7, cVar7 != (ctype)0x4f)) goto LAB_0029655b;
      pcVar18 = param_9 + 2;
      if (param_10 == pcVar18) goto LAB_00296748;
      cVar6 = param_9[2];
      cVar8 = pcVar10[(ulong)(byte)cVar6 + 0x139];
      if (cVar8 == (ctype)0x0) {
        cVar8 = cVar6;
        if (*(code **)(*(long *)pcVar10 + 0x40) != (code *)PTR_do_narrow_003bdd10) {
          cVar8 = (ctype)(**(code **)(*(long *)pcVar10 + 0x40))(pcVar10,(int)(char)cVar6,0);
        }
        if (cVar8 != (ctype)0x0) {
          pcVar10[(ulong)(byte)cVar6 + 0x139] = cVar8;
        }
      }
    }
    local_d0 = local_d0 & 0xffffffff00000000;
    local_c8 = local_c8 & 0xffffffff00000000 | param_5 & 0xffffffff;
    local_50 = local_d0 | uVar16;
    local_58 = param_2;
    local_48 = param_4;
    local_40 = local_c8;
    pcVar11 = use_facet<std::ctype<char>>((locale *)(param_6 + 0xd0));
    *param_7 = 0;
    if (pcVar11[0x38] == (ctype)0x0) {
      ctype<char>::_M_widen_init((ctype<char> *)pcVar11);
      cVar6 = (ctype)0x25;
      if (*(code **)(*(long *)pcVar11 + 0x30) != (code *)PTR_do_widen_003bdfd8) {
        cVar6 = (ctype)(**(code **)(*(long *)pcVar11 + 0x30))(pcVar11,0x25);
      }
    }
    else {
      cVar6 = pcVar11[0x5e];
    }
    if (cVar7 == (ctype)0x0) {
      local_5a = (ctype)0x0;
      local_5b = cVar8;
    }
    else {
      local_59 = 0;
      local_5b = cVar7;
      local_5a = cVar8;
    }
    local_5c = cVar6;
    auVar22 = _M_extract_via_format
                        (param_1,local_58,local_50,local_48,local_40,param_6,param_7,param_8,
                         &local_5c);
    local_58 = auVar22._0_8_;
    local_50 = CONCAT44(local_50._4_4_,auVar22._8_4_);
    cVar5 = istreambuf_iterator<char,std::char_traits<char>>::equal
                      ((istreambuf_iterator<char,std::char_traits<char>> *)&local_58,
                       (istreambuf_iterator *)&local_48);
    if (cVar5 != '\0') {
      *param_7 = *param_7 | 2;
    }
    uVar16 = local_50 & 0xffffffff;
    param_9 = pcVar18 + 1;
    param_2 = local_58;
    if (param_10 != param_9) goto LAB_00295fef;
  }
  goto LAB_002962c3;
code_r0x00296430:
  uVar16 = 0xffffffff;
LAB_00295fe1:
  if (param_10 == param_9) goto LAB_002962c3;
LAB_00295fef:
  if (*param_7 != 0) goto LAB_002962c3;
  goto LAB_00296001;
}



undefined1  [16]
FUN_00295e90(undefined8 param_1,long *param_2,ulong param_3,long *param_4,ulong param_5,long param_6
            ,uint *param_7,undefined8 param_8,byte *param_9,byte *param_10)

{
  byte bVar1;
  long lVar2;
  byte *pbVar3;
  char cVar4;
  char cVar5;
  char cVar6;
  undefined1 uVar7;
  byte bVar8;
  byte bVar9;
  int iVar10;
  long *plVar11;
  long *plVar12;
  ulong uVar13;
  bool bVar14;
  bool bVar15;
  ulong uVar16;
  bool bVar17;
  byte *pbVar18;
  bool bVar19;
  bool bVar20;
  undefined1 auVar21 [16];
  undefined1 auVar22 [12];
  ulong local_d0;
  ulong local_c8;
  undefined1 local_5c;
  byte local_5b;
  byte local_5a;
  undefined1 local_59;
  long *local_58;
  ulong local_50;
  long *local_48;
  ulong local_40;
  
  plVar11 = (long *)FUN_00288720(param_6 + 0xd0);
  uVar16 = param_3 & 0xffffffff;
  *param_7 = 0;
  local_d0 = param_3;
  if (param_9 == param_10) {
LAB_002962c3:
    auVar21._8_8_ = uVar16 | local_d0 & 0xffffffff00000000;
    auVar21._0_8_ = param_2;
    return auVar21;
  }
  bVar19 = (int)param_5 == -1;
  local_c8 = param_5;
LAB_00296001:
  bVar20 = (int)uVar16 == -1;
  bVar17 = param_2 != (long *)0x0 && bVar20;
  bVar15 = bVar20;
  if (bVar17) {
    if ((ulong)param_2[2] < (ulong)param_2[3]) {
      bVar15 = false;
    }
    else {
      iVar10 = (**(code **)(*param_2 + 0x48))(param_2);
      bVar15 = iVar10 == -1 && bVar17;
      if (iVar10 == -1) {
        param_2 = (long *)0x0;
      }
    }
  }
  bVar14 = param_4 != (long *)0x0 && bVar19;
  bVar17 = bVar19;
  if (bVar14) {
    if ((ulong)param_4[3] <= (ulong)param_4[2]) {
      iVar10 = (**(code **)(*param_4 + 0x48))(param_4);
      if (iVar10 == -1) {
        param_4 = (long *)0x0;
      }
      bVar17 = iVar10 == -1 && bVar14;
      goto LAB_0029602d;
    }
    if (bVar15 == false) goto LAB_00296469;
  }
  else {
LAB_0029602d:
    if (bVar17 == bVar15) {
LAB_00296469:
      *param_7 = 6;
      goto LAB_002962c3;
    }
  }
  bVar1 = *param_9;
  bVar8 = *(byte *)((long)plVar11 + (ulong)bVar1 + 0x139);
  if (bVar8 == 0) {
    bVar8 = bVar1;
    if (*(code **)(*plVar11 + 0x40) != (code *)PTR_FUN_003bdd10) {
      bVar8 = (**(code **)(*plVar11 + 0x40))(plVar11,(int)(char)bVar1,0);
    }
    if (bVar8 != 0) {
      *(byte *)((long)plVar11 + (ulong)bVar1 + 0x139) = bVar8;
      goto LAB_00296071;
    }
LAB_00295f20:
    lVar2 = plVar11[6];
    if ((*(byte *)(lVar2 + 1 + (ulong)*param_9 * 2) & 0x20) != 0) {
      pbVar18 = param_9 + 1;
      pbVar3 = param_10;
      if (param_10 != pbVar18) {
        bVar1 = *(byte *)(lVar2 + 1 + (ulong)param_9[1] * 2);
        while ((pbVar3 = pbVar18, (bVar1 & 0x20) != 0 &&
               (pbVar18 = pbVar18 + 1, pbVar3 = pbVar18, param_10 != pbVar18))) {
          bVar1 = *(byte *)(lVar2 + 1 + (ulong)*pbVar18 * 2);
        }
      }
      do {
        param_9 = pbVar3;
        bVar20 = (int)uVar16 == -1;
        bVar15 = bVar20;
        bVar17 = bVar19;
        if (param_2 != (long *)0x0 && bVar20) {
          if ((ulong)param_2[3] <= (ulong)param_2[2]) {
            iVar10 = (**(code **)(*param_2 + 0x48))(param_2);
            bVar15 = iVar10 == -1 && (param_2 != (long *)0x0 && bVar20);
            if (iVar10 == -1) {
              param_2 = (long *)0x0;
            }
            goto LAB_00296353;
          }
          bVar15 = false;
          if (param_4 != (long *)0x0 && bVar19) goto LAB_002963d5;
LAB_00296362:
          if (bVar15 == bVar17) goto LAB_00295fe1;
        }
        else {
LAB_00296353:
          if (param_4 == (long *)0x0 || !bVar19) goto LAB_00296362;
LAB_002963d5:
          bVar17 = param_4 != (long *)0x0;
          if ((ulong)param_4[3] <= (ulong)param_4[2]) {
            iVar10 = (**(code **)(*param_4 + 0x48))(param_4);
            if (iVar10 == -1) {
              param_4 = (long *)0x0;
            }
            bVar17 = iVar10 == -1 && (bVar17 && bVar19);
            goto LAB_00296362;
          }
          if (bVar15 == false) goto LAB_00295fe1;
        }
        uVar13 = uVar16;
        if ((param_2 == (long *)0x0) || (!bVar20)) {
LAB_0029637c:
          if ((*(byte *)(plVar11[6] + 1 + (uVar13 & 0xff) * 2) & 0x20) == 0) goto LAB_00295fe1;
          pbVar18 = (byte *)param_2[2];
          if (pbVar18 < (byte *)param_2[3]) goto LAB_00296398;
          (**(code **)(*param_2 + 0x50))(param_2);
        }
        else {
          pbVar18 = (byte *)param_2[2];
          if ((byte *)param_2[3] <= pbVar18) {
            uVar13 = (**(code **)(*param_2 + 0x48))(param_2);
            if ((int)uVar13 == -1) {
              param_2 = (long *)0x0;
            }
            goto LAB_0029637c;
          }
          if ((*(byte *)(plVar11[6] + 1 + (ulong)*pbVar18 * 2) & 0x20) == 0) goto code_r0x00296430;
LAB_00296398:
          param_2[2] = (long)(pbVar18 + 1);
        }
        uVar16 = 0xffffffff;
        pbVar3 = param_9;
      } while( true );
    }
    cVar6 = (char)uVar16;
    cVar4 = cVar6;
    if ((param_2 != (long *)0x0) && (bVar20)) {
      if ((char *)param_2[2] < (char *)param_2[3]) {
        cVar4 = *(char *)param_2[2];
      }
      else {
        iVar10 = (**(code **)(*param_2 + 0x48))(param_2);
        cVar4 = -1;
        if (iVar10 == -1) {
          param_2 = (long *)0x0;
        }
        else {
          cVar4 = (char)iVar10;
        }
      }
    }
    cVar4 = (**(code **)(*plVar11 + 0x20))(plVar11,(int)cVar4);
    cVar5 = (**(code **)(*plVar11 + 0x20))(plVar11,(int)(char)*param_9);
    if (cVar5 != cVar4) {
      if ((param_2 != (long *)0x0) && (bVar20)) {
        if ((char *)param_2[2] < (char *)param_2[3]) {
          cVar6 = *(char *)param_2[2];
        }
        else {
          iVar10 = (**(code **)(*param_2 + 0x48))(param_2);
          cVar6 = -1;
          if (iVar10 == -1) {
            param_2 = (long *)0x0;
          }
          else {
            cVar6 = (char)iVar10;
          }
        }
      }
      cVar6 = (**(code **)(*plVar11 + 0x10))(plVar11,(int)cVar6);
      cVar4 = (**(code **)(*plVar11 + 0x10))(plVar11,(int)(char)*param_9);
      if (cVar4 != cVar6) goto LAB_00296748;
    }
    if ((ulong)param_2[2] < (ulong)param_2[3]) {
      param_2[2] = param_2[2] + 1;
    }
    else {
      (**(code **)(*param_2 + 0x50))(param_2);
    }
    param_9 = param_9 + 1;
    uVar16 = 0xffffffff;
    goto LAB_00295fe1;
  }
LAB_00296071:
  if (bVar8 != 0x25) goto LAB_00295f20;
  pbVar18 = param_9 + 1;
  if (param_10 == pbVar18) {
LAB_00296748:
    *param_7 = 4;
  }
  else {
    bVar1 = param_9[1];
    bVar8 = *(byte *)((long)plVar11 + (ulong)bVar1 + 0x139);
    if (bVar8 == 0) {
      bVar8 = bVar1;
      if (*(code **)(*plVar11 + 0x40) != (code *)PTR_FUN_003bdd10) {
        bVar8 = (**(code **)(*plVar11 + 0x40))(plVar11,(int)(char)bVar1,0);
      }
      bVar9 = bVar8;
      if (bVar8 != 0) {
        *(byte *)((long)plVar11 + (ulong)bVar1 + 0x139) = bVar8;
        goto LAB_002960ca;
      }
LAB_0029655b:
      bVar8 = 0;
    }
    else {
LAB_002960ca:
      if ((bVar8 != 0x45) && (bVar9 = bVar8, bVar8 != 0x4f)) goto LAB_0029655b;
      pbVar18 = param_9 + 2;
      if (param_10 == pbVar18) goto LAB_00296748;
      bVar1 = param_9[2];
      bVar9 = *(byte *)((long)plVar11 + (ulong)bVar1 + 0x139);
      if (bVar9 == 0) {
        bVar9 = bVar1;
        if (*(code **)(*plVar11 + 0x40) != (code *)PTR_FUN_003bdd10) {
          bVar9 = (**(code **)(*plVar11 + 0x40))(plVar11,(int)(char)bVar1,0);
        }
        if (bVar9 != 0) {
          *(byte *)((long)plVar11 + (ulong)bVar1 + 0x139) = bVar9;
        }
      }
    }
    local_d0 = local_d0 & 0xffffffff00000000;
    local_c8 = local_c8 & 0xffffffff00000000 | param_5 & 0xffffffff;
    local_50 = local_d0 | uVar16;
    local_58 = param_2;
    local_48 = param_4;
    local_40 = local_c8;
    plVar12 = (long *)FUN_00288720(param_6 + 0xd0);
    *param_7 = 0;
    if ((char)plVar12[7] == '\0') {
      FUN_002b5b80(plVar12);
      uVar7 = 0x25;
      if (*(code **)(*plVar12 + 0x30) != (code *)PTR_FUN_003bdfd8) {
        uVar7 = (**(code **)(*plVar12 + 0x30))(plVar12,0x25);
      }
    }
    else {
      uVar7 = *(undefined1 *)((long)plVar12 + 0x5e);
    }
    if (bVar8 == 0) {
      local_5a = 0;
      local_5b = bVar9;
    }
    else {
      local_59 = 0;
      local_5b = bVar8;
      local_5a = bVar9;
    }
    local_5c = uVar7;
    auVar22 = FUN_0028dbd0(param_1,local_58,local_50,local_48,local_40,param_6,param_7,param_8,
                           &local_5c);
    local_58 = auVar22._0_8_;
    local_50 = CONCAT44(local_50._4_4_,auVar22._8_4_);
    cVar6 = FUN_0028d360(&local_58,&local_48);
    if (cVar6 != '\0') {
      *param_7 = *param_7 | 2;
    }
    uVar16 = local_50 & 0xffffffff;
    param_9 = pbVar18 + 1;
    param_2 = local_58;
    if (param_10 != param_9) goto LAB_00295fef;
  }
  goto LAB_002962c3;
code_r0x00296430:
  uVar16 = 0xffffffff;
LAB_00295fe1:
  if (param_10 == param_9) goto LAB_002962c3;
LAB_00295fef:
  if (*param_7 != 0) goto LAB_002962c3;
  goto LAB_00296001;
}


PUSH R15
LEA RAX,[R9 + 0xd0]
MOV R15,R8
PUSH R14
PUSH R13
MOV R13,RCX
PUSH R12
PUSH RBP
PUSH RBX
MOV RBX,RSI
SUB RSP,0xa8
MOV qword ptr [RSP + 0x40],RDI
MOV RDI,RAX
MOV R14,qword ptr [RSP + 0xf0]
MOV qword ptr [RSP + 0x10],R8
MOV dword ptr [RSP + 0x3c],R8D
MOV qword ptr [RSP + 0x8],RDX
MOV qword ptr [RSP + 0x48],R9
MOV dword ptr [RSP + 0x20],EDX
MOV qword ptr [RSP + 0x30],RAX
CALL 0x00288720
CMP R14,qword ptr [RSP + 0xf8]
MOV R8D,dword ptr [RSP + 0x20]
MOV R12,RAX
MOV RAX,qword ptr [RSP + 0xe0]
MOV dword ptr [RAX],0x0
JZ 0x002962c3
CMP R15D,-0x1
MOV R15,R13
SETZ BPL
JMP 0x00296001
MOV RDX,qword ptr [R12 + 0x30]
MOVZX EAX,byte ptr [R14]
TEST byte ptr [RDX + RAX*0x2 + 0x1],0x20
JNZ 0x002962f0
TEST RBX,RBX
JZ 0x00295f42
TEST R9B,R9B
JNZ 0x00296568
MOV ESI,R8D
MOV RAX,qword ptr [R12]
MOVSX ESI,SIL
MOV RDI,R12
MOV dword ptr [RSP + 0x20],R8D
MOV byte ptr [RSP + 0x28],R9B
CALL qword ptr [RAX + 0x20]
MOVSX ESI,byte ptr [R14]
MOV RDI,R12
MOV R13D,EAX
MOV RAX,qword ptr [R12]
CALL qword ptr [RAX + 0x20]
CMP AL,R13B
JZ 0x00295fc1
TEST RBX,RBX
MOV R8D,dword ptr [RSP + 0x20]
JZ 0x00295f8c
MOVZX R9D,byte ptr [RSP + 0x28]
TEST R9B,R9B
JNZ 0x00296640
MOV ESI,R8D
MOV RAX,qword ptr [R12]
MOV dword ptr [RSP + 0x20],R8D
MOVSX ESI,SIL
MOV RDI,R12
CALL qword ptr [RAX + 0x10]
MOVSX ESI,byte ptr [R14]
MOV RDI,R12
MOV R13D,EAX
MOV RAX,qword ptr [R12]
CALL qword ptr [RAX + 0x10]
MOV R8D,dword ptr [RSP + 0x20]
CMP AL,R13B
JNZ 0x00296748
MOV RAX,qword ptr [RBX + 0x10]
CMP RAX,qword ptr [RBX + 0x18]
JNC 0x00296690
ADD RAX,0x1
MOV qword ptr [RBX + 0x10],RAX
ADD R14,0x1
MOV R8D,0xffffffff
CMP qword ptr [RSP + 0xf8],R14
JZ 0x002962c3
MOV RAX,qword ptr [RSP + 0xe0]
MOV EAX,dword ptr [RAX]
TEST EAX,EAX
JNZ 0x002962c3
CMP R8D,-0x1
SETZ R9B
TEST RBX,RBX
SETNZ R13B
AND R13B,R9B
JNZ 0x00296480
MOV R13D,R9D
TEST R15,R15
SETNZ DL
AND DL,BPL
JNZ 0x00296450
MOV EDX,EBP
CMP DL,R13B
JZ 0x00296469
MOVZX R13D,byte ptr [R14]
MOVZX ECX,byte ptr [R12 + R13*0x1 + 0x139]
MOV RAX,R13
TEST CL,CL
JNZ 0x00296071
MOV RDX,qword ptr [R12]
MOV RCX,qword ptr [RDX + 0x40]
CMP RCX,qword ptr [0x003bdd10]
JNZ 0x00296530
TEST AL,AL
JZ 0x00295f20
MOV byte ptr [R12 + R13*0x1 + 0x139],AL
MOV ECX,EAX
CMP CL,0x25
JNZ 0x00295f20
LEA R13,[R14 + 0x1]
CMP qword ptr [RSP + 0xf8],R13
JZ 0x00296748
MOVZX R11D,byte ptr [R14 + 0x1]
MOVZX R9D,byte ptr [R12 + R11*0x1 + 0x139]
MOV RDX,R11
TEST R9B,R9B
JNZ 0x002960ca
MOV RAX,qword ptr [R12]
MOV RAX,qword ptr [RAX + 0x40]
CMP RAX,qword ptr [0x003bdd10]
JNZ 0x00296660
TEST DL,DL
JZ 0x0029655b
MOV byte ptr [R12 + R11*0x1 + 0x139],DL
MOV R9D,EDX
CMP R9B,0x45
JZ 0x002960da
CMP R9B,0x4f
JNZ 0x00296558
LEA R13,[R14 + 0x2]
CMP qword ptr [RSP + 0xf8],R13
JZ 0x00296748
MOVZX R14D,byte ptr [R14 + 0x2]
MOVZX EAX,byte ptr [R12 + R14*0x1 + 0x139]
MOV RDX,R14
TEST AL,AL
JNZ 0x00296580
MOV RAX,qword ptr [R12]
MOV RAX,qword ptr [RAX + 0x40]
CMP RAX,qword ptr [0x003bdd10]
JNZ 0x002966a0
TEST DL,DL
JZ 0x00296126
MOV byte ptr [R12 + R14*0x1 + 0x139],DL
MOV EAX,dword ptr [RSP + 0x3c]
MOV RDI,qword ptr [RSP + 0x30]
MOV byte ptr [RSP + 0x38],CL
MOV R14,-0x100000000
MOV RSI,-0x100000000
AND R14,qword ptr [RSP + 0x8]
AND RSI,qword ptr [RSP + 0x10]
MOV byte ptr [RSP + 0x28],R9B
OR RSI,RAX
OR R14,R8
MOV byte ptr [RSP + 0x20],DL
MOV qword ptr [RSP + 0x80],RBX
MOV qword ptr [RSP + 0x88],R14
MOV qword ptr [RSP + 0x10],RSI
MOV qword ptr [RSP + 0x90],R15
MOV qword ptr [RSP + 0x98],RSI
CALL 0x00288720
MOVZX EDX,byte ptr [RSP + 0x20]
MOVZX R9D,byte ptr [RSP + 0x28]
MOV RBX,RAX
MOV RAX,qword ptr [RSP + 0xe0]
MOVZX ECX,byte ptr [RSP + 0x38]
MOV dword ptr [RAX],0x0
CMP byte ptr [RBX + 0x38],0x0
JZ 0x002964d8
MOVZX ECX,byte ptr [RBX + 0x5e]
MOV byte ptr [RSP + 0x7c],CL
TEST R9B,R9B
JNZ 0x002964c0
MOV byte ptr [RSP + 0x7d],DL
MOV byte ptr [RSP + 0x7e],0x0
SUB RSP,0x8
LEA RAX,[RSP + 0x84]
PUSH RAX
PUSH qword ptr [RSP + 0xf8]
PUSH qword ptr [RSP + 0xf8]
MOV RSI,qword ptr [RSP + 0xa0]
MOV RDI,qword ptr [RSP + 0x60]
MOV R9,qword ptr [RSP + 0x68]
MOV RCX,qword ptr [RSP + 0xb0]
MOV R8,qword ptr [RSP + 0xb8]
MOV RDX,qword ptr [RSP + 0xa8]
CALL 0x0028dbd0
MOV qword ptr [RSP + 0x80],RAX
MOV qword ptr [RSP + 0x88],RDX
MOV qword ptr [RSP + 0xa0],RAX
MOV EAX,dword ptr [RSP + 0x88]
MOV dword ptr [RSP + 0xa8],EAX
ADD RSP,0x20
LEA RSI,[RSP + 0x90]
LEA RDI,[RSP + 0x80]
CALL 0x0028d360
TEST AL,AL
JZ 0x00296267
MOV RAX,qword ptr [RSP + 0xe0]
OR dword ptr [RAX],0x2
MOV EAX,dword ptr [RSP + 0x88]
MOV RBX,qword ptr [RSP + 0x80]
MOV RDX,-0x100000000
MOV RDI,-0x100000000
AND RDX,qword ptr [RSP + 0x18]
AND R14,RDI
OR RDX,RAX
MOV qword ptr [RSP + 0x50],RBX
MOV EAX,EDX
MOV qword ptr [RSP + 0x18],RDX
OR R14,RAX
MOV qword ptr [RSP + 0x58],RDX
MOV qword ptr [RSP + 0x8],R14
MOV R8D,R14D
LEA R14,[R13 + 0x1]
CMP qword ptr [RSP + 0xf8],R14
JNZ 0x00295fef
MOV EDX,R8D
MOV RAX,RBX
MOV R8,-0x100000000
AND R8,qword ptr [RSP + 0x8]
ADD RSP,0xa8
OR RDX,R8
POP RBX
POP RBP
POP R12
POP R13
POP R14
POP R15
RET
LEA RAX,[R14 + 0x1]
CMP qword ptr [RSP + 0xf8],RAX
JZ 0x0029675b
MOVZX ECX,byte ptr [R14 + 0x1]
MOV R14,RAX
TEST byte ptr [RDX + RCX*0x2 + 0x1],0x20
JZ 0x00296334
MOV RCX,qword ptr [RSP + 0xf8]
JMP 0x0029632b
MOVZX EAX,byte ptr [R14]
TEST byte ptr [RDX + RAX*0x2 + 0x1],0x20
JZ 0x00296334
ADD R14,0x1
CMP RCX,R14
JNZ 0x00296320
MOV RDX,R15
MOV qword ptr [RSP + 0xf0],R14
MOV R15D,EBP
MOV R14,R12
MOV RBP,RBX
JMP 0x002963a6
MOV EBX,R12D
TEST RDX,RDX
SETNZ R13B
AND R13B,R15B
JNZ 0x002963d5
MOV R13D,R15D
CMP BL,R13B
JZ 0x002963f0
TEST RBP,RBP
JZ 0x00296379
TEST R12B,R12B
JNZ 0x00296410
MOV EAX,R8D
MOV RSI,qword ptr [R14 + 0x30]
MOVZX EAX,AL
TEST byte ptr [RSI + RAX*0x2 + 0x1],0x20
JZ 0x002963f0
MOV RAX,qword ptr [RBP + 0x10]
CMP RAX,qword ptr [RBP + 0x18]
JNC 0x002964a0
ADD RAX,0x1
MOV qword ptr [RBP + 0x10],RAX
MOV R8D,0xffffffff
CMP R8D,-0x1
SETZ R12B
TEST RBP,RBP
SETNZ BL
AND BL,R12B
JZ 0x00296350
MOV RAX,qword ptr [RBP + 0x18]
CMP qword ptr [RBP + 0x10],RAX
JNC 0x002965d0
XOR EBX,EBX
TEST RDX,RDX
SETNZ R13B
AND R13B,R15B
JZ 0x0029635f
MOV RAX,qword ptr [RDX + 0x18]
CMP qword ptr [RDX + 0x10],RAX
JNC 0x00296590
XOR R13D,R13D
CMP BL,R13B
JNZ 0x0029636b
NOP dword ptr [RAX + RAX*0x1]
MOV RBX,RBP
MOV R12,R14
MOV EBP,R15D
MOV R14,qword ptr [RSP + 0xf0]
MOV R15,RDX
JMP 0x00295fe1
MOV RAX,qword ptr [RBP + 0x10]
CMP RAX,qword ptr [RBP + 0x18]
JNC 0x00296610
MOVZX EDI,byte ptr [RAX]
MOV RSI,qword ptr [R14 + 0x30]
TEST byte ptr [RSI + RDI*0x2 + 0x1],0x20
JNZ 0x00296398
MOV RBX,RBP
MOV R12,R14
MOV EBP,R15D
MOV R8D,0xffffffff
MOV R15,RDX
MOV R14,qword ptr [RSP + 0xf0]
JMP 0x00295fe1
MOV RAX,qword ptr [R15 + 0x18]
CMP qword ptr [R15 + 0x10],RAX
JNC 0x00296708
XOR EDX,EDX
CMP DL,R13B
JNZ 0x00296036
MOV RAX,qword ptr [RSP + 0xe0]
MOV dword ptr [RAX],0x6
JMP 0x002962c3
MOV RAX,qword ptr [RBX + 0x18]
CMP qword ptr [RBX + 0x10],RAX
JNC 0x002966d0
XOR R13D,R13D
JMP 0x0029601c
MOV RAX,qword ptr [RBP]
MOV qword ptr [RSP + 0x20],RDX
MOV RDI,RBP
CALL qword ptr [RAX + 0x50]
MOV RDX,qword ptr [RSP + 0x20]
JMP 0x002963a0
MOV byte ptr [RSP + 0x7d],R9B
MOV byte ptr [RSP + 0x7e],DL
MOV byte ptr [RSP + 0x7f],0x0
JMP 0x002961cf
MOV RDI,RBX
MOV byte ptr [RSP + 0x28],CL
MOV byte ptr [RSP + 0x20],R9B
MOV byte ptr [RSP + 0x8],DL
CALL 0x002b5b80
MOV RAX,qword ptr [RBX]
MOVZX EDX,byte ptr [RSP + 0x8]
MOVZX R9D,byte ptr [RSP + 0x20]
MOVZX ECX,byte ptr [RSP + 0x28]
MOV RAX,qword ptr [RAX + 0x30]
CMP RAX,qword ptr [0x003bdfd8]
JZ 0x002961b9
MOV ESI,0x25
MOV RDI,RBX
CALL RAX
MOVZX R9D,byte ptr [RSP + 0x20]
MOVZX EDX,byte ptr [RSP + 0x8]
MOV ECX,EAX
JMP 0x002961b9
MOV dword ptr [RSP + 0x28],R8D
MOVSX ESI,R13B
XOR EDX,EDX
MOV RDI,R12
MOV byte ptr [RSP + 0x20],R9B
CALL RCX
MOV R8D,dword ptr [RSP + 0x28]
MOVZX R9D,byte ptr [RSP + 0x20]
JMP 0x0029605f
MOV EDX,R9D
XOR R9D,R9D
JMP 0x00296126
MOV RAX,qword ptr [RBX + 0x10]
CMP RAX,qword ptr [RBX + 0x18]
JNC 0x00296768
MOVZX ESI,byte ptr [RAX]
JMP 0x00295f45
MOV EDX,EAX
JMP 0x00296126
MOV RAX,qword ptr [RDX]
MOV dword ptr [RSP + 0x28],R8D
MOV RDI,RDX
MOV qword ptr [RSP + 0x20],RDX
CALL qword ptr [RAX + 0x48]
MOV RDX,qword ptr [RSP + 0x20]
MOV ESI,0x0
MOV R8D,dword ptr [RSP + 0x28]
CMP EAX,-0x1
MOV EAX,0x0
CMOVNZ R13D,ESI
CMOVZ RDX,RAX
JMP 0x00296362
MOV RAX,qword ptr [RBP]
MOV qword ptr [RSP + 0x28],RDX
MOV RDI,RBP
MOV dword ptr [RSP + 0x20],R8D
CALL qword ptr [RAX + 0x48]
MOV ESI,0x0
MOV R8D,dword ptr [RSP + 0x20]
MOV RDX,qword ptr [RSP + 0x28]
CMP EAX,-0x1
MOV EAX,0x0
CMOVNZ EBX,ESI
CMOVZ RBP,RAX
JMP 0x00296353
MOV RAX,qword ptr [RBP]
MOV qword ptr [RSP + 0x28],RDX
MOV RDI,RBP
MOV dword ptr [RSP + 0x20],R8D
CALL qword ptr [RAX + 0x48]
MOV ESI,0x0
MOV R8D,dword ptr [RSP + 0x20]
MOV RDX,qword ptr [RSP + 0x28]
CMP EAX,-0x1
CMOVZ RBP,RSI
JMP 0x0029637c
MOV RAX,qword ptr [RBX + 0x10]
CMP RAX,qword ptr [RBX + 0x18]
JNC 0x0029679f
MOVZX ESI,byte ptr [RAX]
JMP 0x00295f8f
MOV dword ptr [RSP + 0x38],R8D
MOVSX ESI,R11B
XOR EDX,EDX
MOV RDI,R12
MOV qword ptr [RSP + 0x28],R11
MOV byte ptr [RSP + 0x20],CL
CALL RAX
MOV R8D,dword ptr [RSP + 0x38]
MOV R11,qword ptr [RSP + 0x28]
MOV EDX,EAX
MOVZX ECX,byte ptr [RSP + 0x20]
JMP 0x002960b7
MOV RAX,qword ptr [RBX]
MOV RDI,RBX
CALL qword ptr [RAX + 0x50]
JMP 0x00295fd7
MOV dword ptr [RSP + 0x38],R8D
XOR EDX,EDX
MOVSX ESI,R14B
MOV RDI,R12
MOV byte ptr [RSP + 0x28],CL
MOV byte ptr [RSP + 0x20],R9B
CALL RAX
MOV R8D,dword ptr [RSP + 0x38]
MOVZX ECX,byte ptr [RSP + 0x28]
MOV EDX,EAX
MOVZX R9D,byte ptr [RSP + 0x20]
JMP 0x0029611a
MOV RAX,qword ptr [RBX]
MOV dword ptr [RSP + 0x28],R8D
MOV RDI,RBX
MOV byte ptr [RSP + 0x20],R9B
CALL qword ptr [RAX + 0x48]
MOV EDX,0x0
MOVZX R9D,byte ptr [RSP + 0x20]
MOV R8D,dword ptr [RSP + 0x28]
CMP EAX,-0x1
MOV EAX,0x0
CMOVNZ R13D,EDX
CMOVZ RBX,RAX
JMP 0x0029601c
MOV RAX,qword ptr [R15]
MOV dword ptr [RSP + 0x38],R8D
MOV RDI,R15
MOV byte ptr [RSP + 0x28],DL
MOV byte ptr [RSP + 0x20],R9B
CALL qword ptr [RAX + 0x48]
MOVZX EDX,byte ptr [RSP + 0x28]
MOV ECX,0x0
MOVZX R9D,byte ptr [RSP + 0x20]
CMP EAX,-0x1
MOV EAX,0x0
MOV R8D,dword ptr [RSP + 0x38]
CMOVNZ EDX,ECX
CMOVZ R15,RAX
JMP 0x0029602d
MOV RAX,qword ptr [RSP + 0xe0]
MOV dword ptr [RAX],0x4
JMP 0x002962c3
MOV R14,qword ptr [RSP + 0xf8]
JMP 0x00296334
MOV RAX,qword ptr [RBX]
MOV dword ptr [RSP + 0x28],R8D
MOV RDI,RBX
MOV byte ptr [RSP + 0x20],R9B
CALL qword ptr [RAX + 0x48]
MOV ESI,0xffffffff
MOV R8D,dword ptr [RSP + 0x28]
MOVZX R9D,byte ptr [RSP + 0x20]
CMP EAX,-0x1
CMOVNZ ESI,EAX
MOV EAX,0x0
CMOVZ RBX,RAX
JMP 0x00295f45
MOV RAX,qword ptr [RBX]
MOV dword ptr [RSP + 0x20],R8D
MOV RDI,RBX
CALL qword ptr [RAX + 0x48]
MOV ESI,0xffffffff
MOV R8D,dword ptr [RSP + 0x20]
CMP EAX,-0x1
CMOVNZ ESI,EAX
MOV EAX,0x0
CMOVZ RBX,RAX
JMP 0x00295f8f
(translation_unit "undefined1  [16]\nFUN_00295e90(undefined8 param_1,long *param_2,ulong param_3,long *param_4,ulong param_5,long param_6\n            ,uint *param_7,undefined8 param_8,byte *param_9,byte *param_10)\n\n{\n  byte bVar1;\n  long lVar2;\n  byte *pbVar3;\n  char cVar4;\n  char cVar5;\n  char cVar6;\n  undefined1 uVar7;\n  byte bVar8;\n  byte bVar9;\n  int iVar10;\n  long *plVar11;\n  long *plVar12;\n  ulong uVar13;\n  bool bVar14;\n  bool bVar15;\n  ulong uVar16;\n  bool bVar17;\n  byte *pbVar18;\n  bool bVar19;\n  bool bVar20;\n  undefined1 auVar21 [16];\n  undefined1 auVar22 [12];\n  ulong local_d0;\n  ulong local_c8;\n  undefined1 local_5c;\n  byte local_5b;\n  byte local_5a;\n  undefined1 local_59;\n  long *local_58;\n  ulong local_50;\n  long *local_48;\n  ulong local_40;\n  \n  plVar11 = (long *)FUN_00288720(param_6 + 0xd0);\n  uVar16 = param_3 & 0xffffffff;\n  *param_7 = 0;\n  local_d0 = param_3;\n  if (param_9 == param_10) {\nLAB_002962c3:\n    auVar21._8_8_ = uVar16 | local_d0 & 0xffffffff00000000;\n    auVar21._0_8_ = param_2;\n    return auVar21;\n  }\n  bVar19 = (int)param_5 == -1;\n  local_c8 = param_5;\nLAB_00296001:\n  bVar20 = (int)uVar16 == -1;\n  bVar17 = param_2 != (long *)0x0 && bVar20;\n  bVar15 = bVar20;\n  if (bVar17) {\n    if ((ulong)param_2[2] < (ulong)param_2[3]) {\n      bVar15 = false;\n    }\n    else {\n      iVar10 = (**(code **)(*param_2 + 0x48))(param_2);\n      bVar15 = iVar10 == -1 && bVar17;\n      if (iVar10 == -1) {\n        param_2 = (long *)0x0;\n      }\n    }\n  }\n  bVar14 = param_4 != (long *)0x0 && bVar19;\n  bVar17 = bVar19;\n  if (bVar14) {\n    if ((ulong)param_4[3] <= (ulong)param_4[2]) {\n      iVar10 = (**(code **)(*param_4 + 0x48))(param_4);\n      if (iVar10 == -1) {\n        param_4 = (long *)0x0;\n      }\n      bVar17 = iVar10 == -1 && bVar14;\n      goto LAB_0029602d;\n    }\n    if (bVar15 == false) goto LAB_00296469;\n  }\n  else {\nLAB_0029602d:\n    if (bVar17 == bVar15) {\nLAB_00296469:\n      *param_7 = 6;\n      goto LAB_002962c3;\n    }\n  }\n  bVar1 = *param_9;\n  bVar8 = *(byte *)((long)plVar11 + (ulong)bVar1 + 0x139);\n  if (bVar8 == 0) {\n    bVar8 = bVar1;\n    if (*(code **)(*plVar11 + 0x40) != (code *)PTR_FUN_003bdd10) {\n      bVar8 = (**(code **)(*plVar11 + 0x40))(plVar11,(int)(char)bVar1,0);\n    }\n    if (bVar8 != 0) {\n      *(byte *)((long)plVar11 + (ulong)bVar1 + 0x139) = bVar8;\n      goto LAB_00296071;\n    }\nLAB_00295f20:\n    lVar2 = plVar11[6];\n    if ((*(byte *)(lVar2 + 1 + (ulong)*param_9 * 2) & 0x20) != 0) {\n      pbVar18 = param_9 + 1;\n      pbVar3 = param_10;\n      if (param_10 != pbVar18) {\n        bVar1 = *(byte *)(lVar2 + 1 + (ulong)param_9[1] * 2);\n        while ((pbVar3 = pbVar18, (bVar1 & 0x20) != 0 &&\n               (pbVar18 = pbVar18 + 1, pbVar3 = pbVar18, param_10 != pbVar18))) {\n          bVar1 = *(byte *)(lVar2 + 1 + (ulong)*pbVar18 * 2);\n        }\n      }\n      do {\n        param_9 = pbVar3;\n        bVar20 = (int)uVar16 == -1;\n        bVar15 = bVar20;\n        bVar17 = bVar19;\n        if (param_2 != (long *)0x0 && bVar20) {\n          if ((ulong)param_2[3] <= (ulong)param_2[2]) {\n            iVar10 = (**(code **)(*param_2 + 0x48))(param_2);\n            bVar15 = iVar10 == -1 && (param_2 != (long *)0x0 && bVar20);\n            if (iVar10 == -1) {\n              param_2 = (long *)0x0;\n            }\n            goto LAB_00296353;\n          }\n          bVar15 = false;\n          if (param_4 != (long *)0x0 && bVar19) goto LAB_002963d5;\nLAB_00296362:\n          if (bVar15 == bVar17) goto LAB_00295fe1;\n        }\n        else {\nLAB_00296353:\n          if (param_4 == (long *)0x0 || !bVar19) goto LAB_00296362;\nLAB_002963d5:\n          bVar17 = param_4 != (long *)0x0;\n          if ((ulong)param_4[3] <= (ulong)param_4[2]) {\n            iVar10 = (**(code **)(*param_4 + 0x48))(param_4);\n            if (iVar10 == -1) {\n              param_4 = (long *)0x0;\n            }\n            bVar17 = iVar10 == -1 && (bVar17 && bVar19);\n            goto LAB_00296362;\n          }\n          if (bVar15 == false) goto LAB_00295fe1;\n        }\n        uVar13 = uVar16;\n        if ((param_2 == (long *)0x0) || (!bVar20)) {\nLAB_0029637c:\n          if ((*(byte *)(plVar11[6] + 1 + (uVar13 & 0xff) * 2) & 0x20) == 0) goto LAB_00295fe1;\n          pbVar18 = (byte *)param_2[2];\n          if (pbVar18 < (byte *)param_2[3]) goto LAB_00296398;\n          (**(code **)(*param_2 + 0x50))(param_2);\n        }\n        else {\n          pbVar18 = (byte *)param_2[2];\n          if ((byte *)param_2[3] <= pbVar18) {\n            uVar13 = (**(code **)(*param_2 + 0x48))(param_2);\n            if ((int)uVar13 == -1) {\n              param_2 = (long *)0x0;\n            }\n            goto LAB_0029637c;\n          }\n          if ((*(byte *)(plVar11[6] + 1 + (ulong)*pbVar18 * 2) & 0x20) == 0) goto code_r0x00296430;\nLAB_00296398:\n          param_2[2] = (long)(pbVar18 + 1);\n        }\n        uVar16 = 0xffffffff;\n        pbVar3 = param_9;\n      } while( true );\n    }\n    cVar6 = (char)uVar16;\n    cVar4 = cVar6;\n    if ((param_2 != (long *)0x0) && (bVar20)) {\n      if ((char *)param_2[2] < (char *)param_2[3]) {\n        cVar4 = *(char *)param_2[2];\n      }\n      else {\n        iVar10 = (**(code **)(*param_2 + 0x48))(param_2);\n        cVar4 = -1;\n        if (iVar10 == -1) {\n          param_2 = (long *)0x0;\n        }\n        else {\n          cVar4 = (char)iVar10;\n        }\n      }\n    }\n    cVar4 = (**(code **)(*plVar11 + 0x20))(plVar11,(int)cVar4);\n    cVar5 = (**(code **)(*plVar11 + 0x20))(plVar11,(int)(char)*param_9);\n    if (cVar5 != cVar4) {\n      if ((param_2 != (long *)0x0) && (bVar20)) {\n        if ((char *)param_2[2] < (char *)param_2[3]) {\n          cVar6 = *(char *)param_2[2];\n        }\n        else {\n          iVar10 = (**(code **)(*param_2 + 0x48))(param_2);\n          cVar6 = -1;\n          if (iVar10 == -1) {\n            param_2 = (long *)0x0;\n          }\n          else {\n            cVar6 = (char)iVar10;\n          }\n        }\n      }\n      cVar6 = (**(code **)(*plVar11 + 0x10))(plVar11,(int)cVar6);\n      cVar4 = (**(code **)(*plVar11 + 0x10))(plVar11,(int)(char)*param_9);\n      if (cVar4 != cVar6) goto LAB_00296748;\n    }\n    if ((ulong)param_2[2] < (ulong)param_2[3]) {\n      param_2[2] = param_2[2] + 1;\n    }\n    else {\n      (**(code **)(*param_2 + 0x50))(param_2);\n    }\n    param_9 = param_9 + 1;\n    uVar16 = 0xffffffff;\n    goto LAB_00295fe1;\n  }\nLAB_00296071:\n  if (bVar8 != 0x25) goto LAB_00295f20;\n  pbVar18 = param_9 + 1;\n  if (param_10 == pbVar18) {\nLAB_00296748:\n    *param_7 = 4;\n  }\n  else {\n    bVar1 = param_9[1];\n    bVar8 = *(byte *)((long)plVar11 + (ulong)bVar1 + 0x139);\n    if (bVar8 == 0) {\n      bVar8 = bVar1;\n      if (*(code **)(*plVar11 + 0x40) != (code *)PTR_FUN_003bdd10) {\n        bVar8 = (**(code **)(*plVar11 + 0x40))(plVar11,(int)(char)bVar1,0);\n      }\n      bVar9 = bVar8;\n      if (bVar8 != 0) {\n        *(byte *)((long)plVar11 + (ulong)bVar1 + 0x139) = bVar8;\n        goto LAB_002960ca;\n      }\nLAB_0029655b:\n      bVar8 = 0;\n    }\n    else {\nLAB_002960ca:\n      if ((bVar8 != 0x45) && (bVar9 = bVar8, bVar8 != 0x4f)) goto LAB_0029655b;\n      pbVar18 = param_9 + 2;\n      if (param_10 == pbVar18) goto LAB_00296748;\n      bVar1 = param_9[2];\n      bVar9 = *(byte *)((long)plVar11 + (ulong)bVar1 + 0x139);\n      if (bVar9 == 0) {\n        bVar9 = bVar1;\n        if (*(code **)(*plVar11 + 0x40) != (code *)PTR_FUN_003bdd10) {\n          bVar9 = (**(code **)(*plVar11 + 0x40))(plVar11,(int)(char)bVar1,0);\n        }\n        if (bVar9 != 0) {\n          *(byte *)((long)plVar11 + (ulong)bVar1 + 0x139) = bVar9;\n        }\n      }\n    }\n    local_d0 = local_d0 & 0xffffffff00000000;\n    local_c8 = local_c8 & 0xffffffff00000000 | param_5 & 0xffffffff;\n    local_50 = local_d0 | uVar16;\n    local_58 = param_2;\n    local_48 = param_4;\n    local_40 = local_c8;\n    plVar12 = (long *)FUN_00288720(param_6 + 0xd0);\n    *param_7 = 0;\n    if ((char)plVar12[7] == '\0') {\n      FUN_002b5b80(plVar12);\n      uVar7 = 0x25;\n      if (*(code **)(*plVar12 + 0x30) != (code *)PTR_FUN_003bdfd8) {\n        uVar7 = (**(code **)(*plVar12 + 0x30))(plVar12,0x25);\n      }\n    }\n    else {\n      uVar7 = *(undefined1 *)((long)plVar12 + 0x5e);\n    }\n    if (bVar8 == 0) {\n      local_5a = 0;\n      local_5b = bVar9;\n    }\n    else {\n      local_59 = 0;\n      local_5b = bVar8;\n      local_5a = bVar9;\n    }\n    local_5c = uVar7;\n    auVar22 = FUN_0028dbd0(param_1,local_58,local_50,local_48,local_40,param_6,param_7,param_8,\n                           &local_5c);\n    local_58 = auVar22._0_8_;\n    local_50 = CONCAT44(local_50._4_4_,auVar22._8_4_);\n    cVar6 = FUN_0028d360(&local_58,&local_48);\n    if (cVar6 != '\0') {\n      *param_7 = *param_7 | 2;\n    }\n    uVar16 = local_50 & 0xffffffff;\n    param_9 = pbVar18 + 1;\n    param_2 = local_58;\n    if (param_10 != param_9) goto LAB_00295fef;\n  }\n  goto LAB_002962c3;\ncode_r0x00296430:\n  uVar16 = 0xffffffff;\nLAB_00295fe1:\n  if (param_10 == param_9) goto LAB_002962c3;\nLAB_00295fef:\n  if (*param_7 != 0) goto LAB_002962c3;\n  goto LAB_00296001;\n}\n\n" (expression_statement "undefined1  [16]" (subscript_expression "undefined1  [16]" identifier [ number_literal ]) ;) (declaration "FUN_00295e90(undefined8 param_1,long *param_2,ulong param_3,long *param_4,ulong param_5,long param_6\n            ,uint *param_7,undefined8 param_8,byte *param_9,byte *param_10)\n\n{\n  byte bVar1;" (macro_type_specifier "FUN_00295e90(undefined8" identifier ( (type_descriptor "undefined8" type_identifier) )) identifier , (ERROR "long" identifier) (pointer_declarator "*param_2" * identifier) , (ERROR "ulong" identifier) identifier , (ERROR "long" identifier) (pointer_declarator "*param_4" * identifier) , (ERROR "ulong" identifier) identifier , (ERROR "long" identifier) identifier , (ERROR "uint" identifier) (pointer_declarator "*param_7" * identifier) , identifier (ERROR "param_8" identifier) , (ERROR "byte" identifier) (pointer_declarator "*param_9" * identifier) , (ERROR "byte *param_10)\n\n{\n  byte" identifier (pointer_declarator "*param_10" * identifier) ) { identifier) identifier ;) (declaration "long lVar2;" (sized_type_specifier "long" long) identifier ;) (declaration "byte *pbVar3;" type_identifier (pointer_declarator "*pbVar3" * identifier) ;) (declaration "char cVar4;" primitive_type identifier ;) (declaration "char cVar5;" primitive_type identifier ;) (declaration "char cVar6;" primitive_type identifier ;) (declaration "undefined1 uVar7;" type_identifier identifier ;) (declaration "byte bVar8;" type_identifier identifier ;) (declaration "byte bVar9;" type_identifier identifier ;) (declaration "int iVar10;" primitive_type identifier ;) (declaration "long *plVar11;" (sized_type_specifier "long" long) (pointer_declarator "*plVar11" * identifier) ;) (declaration "long *plVar12;" (sized_type_specifier "long" long) (pointer_declarator "*plVar12" * identifier) ;) (declaration "ulong uVar13;" type_identifier identifier ;) (declaration "bool bVar14;" primitive_type identifier ;) (declaration "bool bVar15;" primitive_type identifier ;) (declaration "ulong uVar16;" type_identifier identifier ;) (declaration "bool bVar17;" primitive_type identifier ;) (declaration "byte *pbVar18;" type_identifier (pointer_declarator "*pbVar18" * identifier) ;) (declaration "bool bVar19;" primitive_type identifier ;) (declaration "bool bVar20;" primitive_type identifier ;) (declaration "undefined1 auVar21 [16];" type_identifier (array_declarator "auVar21 [16]" identifier [ number_literal ]) ;) (declaration "undefined1 auVar22 [12];" type_identifier (array_declarator "auVar22 [12]" identifier [ number_literal ]) ;) (declaration "ulong local_d0;" type_identifier identifier ;) (declaration "ulong local_c8;" type_identifier identifier ;) (declaration "undefined1 local_5c;" type_identifier identifier ;) (declaration "byte local_5b;" type_identifier identifier ;) (declaration "byte local_5a;" type_identifier identifier ;) (declaration "undefined1 local_59;" type_identifier identifier ;) (declaration "long *local_58;" (sized_type_specifier "long" long) (pointer_declarator "*local_58" * identifier) ;) (declaration "ulong local_50;" type_identifier identifier ;) (declaration "long *local_48;" (sized_type_specifier "long" long) (pointer_declarator "*local_48" * identifier) ;) (declaration "ulong local_40;" type_identifier identifier ;) (expression_statement "plVar11 = (long *)FUN_00288720(param_6 + 0xd0);" (assignment_expression "plVar11 = (long *)FUN_00288720(param_6 + 0xd0)" identifier = (cast_expression "(long *)FUN_00288720(param_6 + 0xd0)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00288720(param_6 + 0xd0)" identifier (argument_list "(param_6 + 0xd0)" ( (binary_expression "param_6 + 0xd0" identifier + number_literal) ))))) ;) (expression_statement "uVar16 = param_3 & 0xffffffff;" (assignment_expression "uVar16 = param_3 & 0xffffffff" identifier = (binary_expression "param_3 & 0xffffffff" identifier & number_literal)) ;) (expression_statement "*param_7 = 0;" (assignment_expression "*param_7 = 0" (pointer_expression "*param_7" * identifier) = number_literal) ;) (expression_statement "local_d0 = param_3;" (assignment_expression "local_d0 = param_3" identifier = identifier) ;) (if_statement "if (param_9 == param_10) {\nLAB_002962c3:\n    auVar21._8_8_ = uVar16 | local_d0 & 0xffffffff00000000;\n    auVar21._0_8_ = param_2;\n    return auVar21;\n  }" if (parenthesized_expression "(param_9 == param_10)" ( (binary_expression "param_9 == param_10" identifier == identifier) )) (compound_statement "{\nLAB_002962c3:\n    auVar21._8_8_ = uVar16 | local_d0 & 0xffffffff00000000;\n    auVar21._0_8_ = param_2;\n    return auVar21;\n  }" { (labeled_statement "LAB_002962c3:\n    auVar21._8_8_ = uVar16 | local_d0 & 0xffffffff00000000;" statement_identifier : (expression_statement "auVar21._8_8_ = uVar16 | local_d0 & 0xffffffff00000000;" (assignment_expression "auVar21._8_8_ = uVar16 | local_d0 & 0xffffffff00000000" (field_expression "auVar21._8_8_" identifier . field_identifier) = (binary_expression "uVar16 | local_d0 & 0xffffffff00000000" identifier | (binary_expression "local_d0 & 0xffffffff00000000" identifier & number_literal))) ;)) (expression_statement "auVar21._0_8_ = param_2;" (assignment_expression "auVar21._0_8_ = param_2" (field_expression "auVar21._0_8_" identifier . field_identifier) = identifier) ;) (return_statement "return auVar21;" return identifier ;) })) (expression_statement "bVar19 = (int)param_5 == -1;" (assignment_expression "bVar19 = (int)param_5 == -1" identifier = (binary_expression "(int)param_5 == -1" (cast_expression "(int)param_5" ( (type_descriptor "int" primitive_type) ) identifier) == number_literal)) ;) (expression_statement "local_c8 = param_5;" (assignment_expression "local_c8 = param_5" identifier = identifier) ;) (labeled_statement "LAB_00296001:\n  bVar20 = (int)uVar16 == -1;" statement_identifier : (expression_statement "bVar20 = (int)uVar16 == -1;" (assignment_expression "bVar20 = (int)uVar16 == -1" identifier = (binary_expression "(int)uVar16 == -1" (cast_expression "(int)uVar16" ( (type_descriptor "int" primitive_type) ) identifier) == number_literal)) ;)) (expression_statement "bVar17 = param_2 != (long *)0x0 && bVar20;" (assignment_expression "bVar17 = param_2 != (long *)0x0 && bVar20" identifier = (binary_expression "param_2 != (long *)0x0 && bVar20" (binary_expression "param_2 != (long *)0x0" identifier != (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) && identifier)) ;) (expression_statement "bVar15 = bVar20;" (assignment_expression "bVar15 = bVar20" identifier = identifier) ;) (if_statement "if (bVar17) {\n    if ((ulong)param_2[2] < (ulong)param_2[3]) {\n      bVar15 = false;\n    }\n    else {\n      iVar10 = (**(code **)(*param_2 + 0x48))(param_2);\n      bVar15 = iVar10 == -1 && bVar17;\n      if (iVar10 == -1) {\n        param_2 = (long *)0x0;\n      }\n    }\n  }" if (parenthesized_expression "(bVar17)" ( identifier )) (compound_statement "{\n    if ((ulong)param_2[2] < (ulong)param_2[3]) {\n      bVar15 = false;\n    }\n    else {\n      iVar10 = (**(code **)(*param_2 + 0x48))(param_2);\n      bVar15 = iVar10 == -1 && bVar17;\n      if (iVar10 == -1) {\n        param_2 = (long *)0x0;\n      }\n    }\n  }" { (if_statement "if ((ulong)param_2[2] < (ulong)param_2[3]) {\n      bVar15 = false;\n    }\n    else {\n      iVar10 = (**(code **)(*param_2 + 0x48))(param_2);\n      bVar15 = iVar10 == -1 && bVar17;\n      if (iVar10 == -1) {\n        param_2 = (long *)0x0;\n      }\n    }" if (parenthesized_expression "((ulong)param_2[2] < (ulong)param_2[3])" ( (binary_expression "(ulong)param_2[2] < (ulong)param_2[3]" (cast_expression "(ulong)param_2[2]" ( (type_descriptor "ulong" type_identifier) ) (subscript_expression "param_2[2]" identifier [ number_literal ])) < (cast_expression "(ulong)param_2[3]" ( (type_descriptor "ulong" type_identifier) ) (subscript_expression "param_2[3]" identifier [ number_literal ]))) )) (compound_statement "{\n      bVar15 = false;\n    }" { (expression_statement "bVar15 = false;" (assignment_expression "bVar15 = false" identifier = false) ;) }) (else_clause "else {\n      iVar10 = (**(code **)(*param_2 + 0x48))(param_2);\n      bVar15 = iVar10 == -1 && bVar17;\n      if (iVar10 == -1) {\n        param_2 = (long *)0x0;\n      }\n    }" else (compound_statement "{\n      iVar10 = (**(code **)(*param_2 + 0x48))(param_2);\n      bVar15 = iVar10 == -1 && bVar17;\n      if (iVar10 == -1) {\n        param_2 = (long *)0x0;\n      }\n    }" { (expression_statement "iVar10 = (**(code **)(*param_2 + 0x48))(param_2);" (assignment_expression "iVar10 = (**(code **)(*param_2 + 0x48))(param_2)" identifier = (call_expression "(**(code **)(*param_2 + 0x48))(param_2)" (parenthesized_expression "(**(code **)(*param_2 + 0x48))" ( (pointer_expression "**(code **)(*param_2 + 0x48)" * (pointer_expression "*(code **)(*param_2 + 0x48)" * (cast_expression "(code **)(*param_2 + 0x48)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*param_2 + 0x48)" ( (binary_expression "*param_2 + 0x48" (pointer_expression "*param_2" * identifier) + number_literal) ))))) )) (argument_list "(param_2)" ( identifier )))) ;) (expression_statement "bVar15 = iVar10 == -1 && bVar17;" (assignment_expression "bVar15 = iVar10 == -1 && bVar17" identifier = (binary_expression "iVar10 == -1 && bVar17" (binary_expression "iVar10 == -1" identifier == number_literal) && identifier)) ;) (if_statement "if (iVar10 == -1) {\n        param_2 = (long *)0x0;\n      }" if (parenthesized_expression "(iVar10 == -1)" ( (binary_expression "iVar10 == -1" identifier == number_literal) )) (compound_statement "{\n        param_2 = (long *)0x0;\n      }" { (expression_statement "param_2 = (long *)0x0;" (assignment_expression "param_2 = (long *)0x0" identifier = (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) ;) })) }))) })) (expression_statement "bVar14 = param_4 != (long *)0x0 && bVar19;" (assignment_expression "bVar14 = param_4 != (long *)0x0 && bVar19" identifier = (binary_expression "param_4 != (long *)0x0 && bVar19" (binary_expression "param_4 != (long *)0x0" identifier != (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) && identifier)) ;) (expression_statement "bVar17 = bVar19;" (assignment_expression "bVar17 = bVar19" identifier = identifier) ;) (if_statement "if (bVar14) {\n    if ((ulong)param_4[3] <= (ulong)param_4[2]) {\n      iVar10 = (**(code **)(*param_4 + 0x48))(param_4);\n      if (iVar10 == -1) {\n        param_4 = (long *)0x0;\n      }\n      bVar17 = iVar10 == -1 && bVar14;\n      goto LAB_0029602d;\n    }\n    if (bVar15 == false) goto LAB_00296469;\n  }\n  else {\nLAB_0029602d:\n    if (bVar17 == bVar15) {\nLAB_00296469:\n      *param_7 = 6;\n      goto LAB_002962c3;\n    }\n  }" if (parenthesized_expression "(bVar14)" ( identifier )) (compound_statement "{\n    if ((ulong)param_4[3] <= (ulong)param_4[2]) {\n      iVar10 = (**(code **)(*param_4 + 0x48))(param_4);\n      if (iVar10 == -1) {\n        param_4 = (long *)0x0;\n      }\n      bVar17 = iVar10 == -1 && bVar14;\n      goto LAB_0029602d;\n    }\n    if (bVar15 == false) goto LAB_00296469;\n  }" { (if_statement "if ((ulong)param_4[3] <= (ulong)param_4[2]) {\n      iVar10 = (**(code **)(*param_4 + 0x48))(param_4);\n      if (iVar10 == -1) {\n        param_4 = (long *)0x0;\n      }\n      bVar17 = iVar10 == -1 && bVar14;\n      goto LAB_0029602d;\n    }" if (parenthesized_expression "((ulong)param_4[3] <= (ulong)param_4[2])" ( (binary_expression "(ulong)param_4[3] <= (ulong)param_4[2]" (cast_expression "(ulong)param_4[3]" ( (type_descriptor "ulong" type_identifier) ) (subscript_expression "param_4[3]" identifier [ number_literal ])) <= (cast_expression "(ulong)param_4[2]" ( (type_descriptor "ulong" type_identifier) ) (subscript_expression "param_4[2]" identifier [ number_literal ]))) )) (compound_statement "{\n      iVar10 = (**(code **)(*param_4 + 0x48))(param_4);\n      if (iVar10 == -1) {\n        param_4 = (long *)0x0;\n      }\n      bVar17 = iVar10 == -1 && bVar14;\n      goto LAB_0029602d;\n    }" { (expression_statement "iVar10 = (**(code **)(*param_4 + 0x48))(param_4);" (assignment_expression "iVar10 = (**(code **)(*param_4 + 0x48))(param_4)" identifier = (call_expression "(**(code **)(*param_4 + 0x48))(param_4)" (parenthesized_expression "(**(code **)(*param_4 + 0x48))" ( (pointer_expression "**(code **)(*param_4 + 0x48)" * (pointer_expression "*(code **)(*param_4 + 0x48)" * (cast_expression "(code **)(*param_4 + 0x48)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*param_4 + 0x48)" ( (binary_expression "*param_4 + 0x48" (pointer_expression "*param_4" * identifier) + number_literal) ))))) )) (argument_list "(param_4)" ( identifier )))) ;) (if_statement "if (iVar10 == -1) {\n        param_4 = (long *)0x0;\n      }" if (parenthesized_expression "(iVar10 == -1)" ( (binary_expression "iVar10 == -1" identifier == number_literal) )) (compound_statement "{\n        param_4 = (long *)0x0;\n      }" { (expression_statement "param_4 = (long *)0x0;" (assignment_expression "param_4 = (long *)0x0" identifier = (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) ;) })) (expression_statement "bVar17 = iVar10 == -1 && bVar14;" (assignment_expression "bVar17 = iVar10 == -1 && bVar14" identifier = (binary_expression "iVar10 == -1 && bVar14" (binary_expression "iVar10 == -1" identifier == number_literal) && identifier)) ;) (goto_statement "goto LAB_0029602d;" goto statement_identifier ;) })) (if_statement "if (bVar15 == false) goto LAB_00296469;" if (parenthesized_expression "(bVar15 == false)" ( (binary_expression "bVar15 == false" identifier == false) )) (goto_statement "goto LAB_00296469;" goto statement_identifier ;)) }) (else_clause "else {\nLAB_0029602d:\n    if (bVar17 == bVar15) {\nLAB_00296469:\n      *param_7 = 6;\n      goto LAB_002962c3;\n    }\n  }" else (compound_statement "{\nLAB_0029602d:\n    if (bVar17 == bVar15) {\nLAB_00296469:\n      *param_7 = 6;\n      goto LAB_002962c3;\n    }\n  }" { (labeled_statement "LAB_0029602d:\n    if (bVar17 == bVar15) {\nLAB_00296469:\n      *param_7 = 6;\n      goto LAB_002962c3;\n    }" statement_identifier : (if_statement "if (bVar17 == bVar15) {\nLAB_00296469:\n      *param_7 = 6;\n      goto LAB_002962c3;\n    }" if (parenthesized_expression "(bVar17 == bVar15)" ( (binary_expression "bVar17 == bVar15" identifier == identifier) )) (compound_statement "{\nLAB_00296469:\n      *param_7 = 6;\n      goto LAB_002962c3;\n    }" { (labeled_statement "LAB_00296469:\n      *param_7 = 6;" statement_identifier : (expression_statement "*param_7 = 6;" (assignment_expression "*param_7 = 6" (pointer_expression "*param_7" * identifier) = number_literal) ;)) (goto_statement "goto LAB_002962c3;" goto statement_identifier ;) }))) }))) (expression_statement "bVar1 = *param_9;" (assignment_expression "bVar1 = *param_9" identifier = (pointer_expression "*param_9" * identifier)) ;) (expression_statement "bVar8 = *(byte *)((long)plVar11 + (ulong)bVar1 + 0x139);" (assignment_expression "bVar8 = *(byte *)((long)plVar11 + (ulong)bVar1 + 0x139)" identifier = (pointer_expression "*(byte *)((long)plVar11 + (ulong)bVar1 + 0x139)" * (cast_expression "(byte *)((long)plVar11 + (ulong)bVar1 + 0x139)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)plVar11 + (ulong)bVar1 + 0x139)" ( (binary_expression "(long)plVar11 + (ulong)bVar1 + 0x139" (binary_expression "(long)plVar11 + (ulong)bVar1" (cast_expression "(long)plVar11" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + (cast_expression "(ulong)bVar1" ( (type_descriptor "ulong" type_identifier) ) identifier)) + number_literal) ))))) ;) (if_statement "if (bVar8 == 0) {\n    bVar8 = bVar1;\n    if (*(code **)(*plVar11 + 0x40) != (code *)PTR_FUN_003bdd10) {\n      bVar8 = (**(code **)(*plVar11 + 0x40))(plVar11,(int)(char)bVar1,0);\n    }\n    if (bVar8 != 0) {\n      *(byte *)((long)plVar11 + (ulong)bVar1 + 0x139) = bVar8;\n      goto LAB_00296071;\n    }\nLAB_00295f20:\n    lVar2 = plVar11[6];\n    if ((*(byte *)(lVar2 + 1 + (ulong)*param_9 * 2) & 0x20) != 0) {\n      pbVar18 = param_9 + 1;\n      pbVar3 = param_10;\n      if (param_10 != pbVar18) {\n        bVar1 = *(byte *)(lVar2 + 1 + (ulong)param_9[1] * 2);\n        while ((pbVar3 = pbVar18, (bVar1 & 0x20) != 0 &&\n               (pbVar18 = pbVar18 + 1, pbVar3 = pbVar18, param_10 != pbVar18))) {\n          bVar1 = *(byte *)(lVar2 + 1 + (ulong)*pbVar18 * 2);\n        }\n      }\n      do {\n        param_9 = pbVar3;\n        bVar20 = (int)uVar16 == -1;\n        bVar15 = bVar20;\n        bVar17 = bVar19;\n        if (param_2 != (long *)0x0 && bVar20) {\n          if ((ulong)param_2[3] <= (ulong)param_2[2]) {\n            iVar10 = (**(code **)(*param_2 + 0x48))(param_2);\n            bVar15 = iVar10 == -1 && (param_2 != (long *)0x0 && bVar20);\n            if (iVar10 == -1) {\n              param_2 = (long *)0x0;\n            }\n            goto LAB_00296353;\n          }\n          bVar15 = false;\n          if (param_4 != (long *)0x0 && bVar19) goto LAB_002963d5;\nLAB_00296362:\n          if (bVar15 == bVar17) goto LAB_00295fe1;\n        }\n        else {\nLAB_00296353:\n          if (param_4 == (long *)0x0 || !bVar19) goto LAB_00296362;\nLAB_002963d5:\n          bVar17 = param_4 != (long *)0x0;\n          if ((ulong)param_4[3] <= (ulong)param_4[2]) {\n            iVar10 = (**(code **)(*param_4 + 0x48))(param_4);\n            if (iVar10 == -1) {\n              param_4 = (long *)0x0;\n            }\n            bVar17 = iVar10 == -1 && (bVar17 && bVar19);\n            goto LAB_00296362;\n          }\n          if (bVar15 == false) goto LAB_00295fe1;\n        }\n        uVar13 = uVar16;\n        if ((param_2 == (long *)0x0) || (!bVar20)) {\nLAB_0029637c:\n          if ((*(byte *)(plVar11[6] + 1 + (uVar13 & 0xff) * 2) & 0x20) == 0) goto LAB_00295fe1;\n          pbVar18 = (byte *)param_2[2];\n          if (pbVar18 < (byte *)param_2[3]) goto LAB_00296398;\n          (**(code **)(*param_2 + 0x50))(param_2);\n        }\n        else {\n          pbVar18 = (byte *)param_2[2];\n          if ((byte *)param_2[3] <= pbVar18) {\n            uVar13 = (**(code **)(*param_2 + 0x48))(param_2);\n            if ((int)uVar13 == -1) {\n              param_2 = (long *)0x0;\n            }\n            goto LAB_0029637c;\n          }\n          if ((*(byte *)(plVar11[6] + 1 + (ulong)*pbVar18 * 2) & 0x20) == 0) goto code_r0x00296430;\nLAB_00296398:\n          param_2[2] = (long)(pbVar18 + 1);\n        }\n        uVar16 = 0xffffffff;\n        pbVar3 = param_9;\n      } while( true );\n    }\n    cVar6 = (char)uVar16;\n    cVar4 = cVar6;\n    if ((param_2 != (long *)0x0) && (bVar20)) {\n      if ((char *)param_2[2] < (char *)param_2[3]) {\n        cVar4 = *(char *)param_2[2];\n      }\n      else {\n        iVar10 = (**(code **)(*param_2 + 0x48))(param_2);\n        cVar4 = -1;\n        if (iVar10 == -1) {\n          param_2 = (long *)0x0;\n        }\n        else {\n          cVar4 = (char)iVar10;\n        }\n      }\n    }\n    cVar4 = (**(code **)(*plVar11 + 0x20))(plVar11,(int)cVar4);\n    cVar5 = (**(code **)(*plVar11 + 0x20))(plVar11,(int)(char)*param_9);\n    if (cVar5 != cVar4) {\n      if ((param_2 != (long *)0x0) && (bVar20)) {\n        if ((char *)param_2[2] < (char *)param_2[3]) {\n          cVar6 = *(char *)param_2[2];\n        }\n        else {\n          iVar10 = (**(code **)(*param_2 + 0x48))(param_2);\n          cVar6 = -1;\n          if (iVar10 == -1) {\n            param_2 = (long *)0x0;\n          }\n          else {\n            cVar6 = (char)iVar10;\n          }\n        }\n      }\n      cVar6 = (**(code **)(*plVar11 + 0x10))(plVar11,(int)cVar6);\n      cVar4 = (**(code **)(*plVar11 + 0x10))(plVar11,(int)(char)*param_9);\n      if (cVar4 != cVar6) goto LAB_00296748;\n    }\n    if ((ulong)param_2[2] < (ulong)param_2[3]) {\n      param_2[2] = param_2[2] + 1;\n    }\n    else {\n      (**(code **)(*param_2 + 0x50))(param_2);\n    }\n    param_9 = param_9 + 1;\n    uVar16 = 0xffffffff;\n    goto LAB_00295fe1;\n  }" if (parenthesized_expression "(bVar8 == 0)" ( (binary_expression "bVar8 == 0" identifier == number_literal) )) (compound_statement "{\n    bVar8 = bVar1;\n    if (*(code **)(*plVar11 + 0x40) != (code *)PTR_FUN_003bdd10) {\n      bVar8 = (**(code **)(*plVar11 + 0x40))(plVar11,(int)(char)bVar1,0);\n    }\n    if (bVar8 != 0) {\n      *(byte *)((long)plVar11 + (ulong)bVar1 + 0x139) = bVar8;\n      goto LAB_00296071;\n    }\nLAB_00295f20:\n    lVar2 = plVar11[6];\n    if ((*(byte *)(lVar2 + 1 + (ulong)*param_9 * 2) & 0x20) != 0) {\n      pbVar18 = param_9 + 1;\n      pbVar3 = param_10;\n      if (param_10 != pbVar18) {\n        bVar1 = *(byte *)(lVar2 + 1 + (ulong)param_9[1] * 2);\n        while ((pbVar3 = pbVar18, (bVar1 & 0x20) != 0 &&\n               (pbVar18 = pbVar18 + 1, pbVar3 = pbVar18, param_10 != pbVar18))) {\n          bVar1 = *(byte *)(lVar2 + 1 + (ulong)*pbVar18 * 2);\n        }\n      }\n      do {\n        param_9 = pbVar3;\n        bVar20 = (int)uVar16 == -1;\n        bVar15 = bVar20;\n        bVar17 = bVar19;\n        if (param_2 != (long *)0x0 && bVar20) {\n          if ((ulong)param_2[3] <= (ulong)param_2[2]) {\n            iVar10 = (**(code **)(*param_2 + 0x48))(param_2);\n            bVar15 = iVar10 == -1 && (param_2 != (long *)0x0 && bVar20);\n            if (iVar10 == -1) {\n              param_2 = (long *)0x0;\n            }\n            goto LAB_00296353;\n          }\n          bVar15 = false;\n          if (param_4 != (long *)0x0 && bVar19) goto LAB_002963d5;\nLAB_00296362:\n          if (bVar15 == bVar17) goto LAB_00295fe1;\n        }\n        else {\nLAB_00296353:\n          if (param_4 == (long *)0x0 || !bVar19) goto LAB_00296362;\nLAB_002963d5:\n          bVar17 = param_4 != (long *)0x0;\n          if ((ulong)param_4[3] <= (ulong)param_4[2]) {\n            iVar10 = (**(code **)(*param_4 + 0x48))(param_4);\n            if (iVar10 == -1) {\n              param_4 = (long *)0x0;\n            }\n            bVar17 = iVar10 == -1 && (bVar17 && bVar19);\n            goto LAB_00296362;\n          }\n          if (bVar15 == false) goto LAB_00295fe1;\n        }\n        uVar13 = uVar16;\n        if ((param_2 == (long *)0x0) || (!bVar20)) {\nLAB_0029637c:\n          if ((*(byte *)(plVar11[6] + 1 + (uVar13 & 0xff) * 2) & 0x20) == 0) goto LAB_00295fe1;\n          pbVar18 = (byte *)param_2[2];\n          if (pbVar18 < (byte *)param_2[3]) goto LAB_00296398;\n          (**(code **)(*param_2 + 0x50))(param_2);\n        }\n        else {\n          pbVar18 = (byte *)param_2[2];\n          if ((byte *)param_2[3] <= pbVar18) {\n            uVar13 = (**(code **)(*param_2 + 0x48))(param_2);\n            if ((int)uVar13 == -1) {\n              param_2 = (long *)0x0;\n            }\n            goto LAB_0029637c;\n          }\n          if ((*(byte *)(plVar11[6] + 1 + (ulong)*pbVar18 * 2) & 0x20) == 0) goto code_r0x00296430;\nLAB_00296398:\n          param_2[2] = (long)(pbVar18 + 1);\n        }\n        uVar16 = 0xffffffff;\n        pbVar3 = param_9;\n      } while( true );\n    }\n    cVar6 = (char)uVar16;\n    cVar4 = cVar6;\n    if ((param_2 != (long *)0x0) && (bVar20)) {\n      if ((char *)param_2[2] < (char *)param_2[3]) {\n        cVar4 = *(char *)param_2[2];\n      }\n      else {\n        iVar10 = (**(code **)(*param_2 + 0x48))(param_2);\n        cVar4 = -1;\n        if (iVar10 == -1) {\n          param_2 = (long *)0x0;\n        }\n        else {\n          cVar4 = (char)iVar10;\n        }\n      }\n    }\n    cVar4 = (**(code **)(*plVar11 + 0x20))(plVar11,(int)cVar4);\n    cVar5 = (**(code **)(*plVar11 + 0x20))(plVar11,(int)(char)*param_9);\n    if (cVar5 != cVar4) {\n      if ((param_2 != (long *)0x0) && (bVar20)) {\n        if ((char *)param_2[2] < (char *)param_2[3]) {\n          cVar6 = *(char *)param_2[2];\n        }\n        else {\n          iVar10 = (**(code **)(*param_2 + 0x48))(param_2);\n          cVar6 = -1;\n          if (iVar10 == -1) {\n            param_2 = (long *)0x0;\n          }\n          else {\n            cVar6 = (char)iVar10;\n          }\n        }\n      }\n      cVar6 = (**(code **)(*plVar11 + 0x10))(plVar11,(int)cVar6);\n      cVar4 = (**(code **)(*plVar11 + 0x10))(plVar11,(int)(char)*param_9);\n      if (cVar4 != cVar6) goto LAB_00296748;\n    }\n    if ((ulong)param_2[2] < (ulong)param_2[3]) {\n      param_2[2] = param_2[2] + 1;\n    }\n    else {\n      (**(code **)(*param_2 + 0x50))(param_2);\n    }\n    param_9 = param_9 + 1;\n    uVar16 = 0xffffffff;\n    goto LAB_00295fe1;\n  }" { (expression_statement "bVar8 = bVar1;" (assignment_expression "bVar8 = bVar1" identifier = identifier) ;) (if_statement "if (*(code **)(*plVar11 + 0x40) != (code *)PTR_FUN_003bdd10) {\n      bVar8 = (**(code **)(*plVar11 + 0x40))(plVar11,(int)(char)bVar1,0);\n    }" if (parenthesized_expression "(*(code **)(*plVar11 + 0x40) != (code *)PTR_FUN_003bdd10)" ( (binary_expression "*(code **)(*plVar11 + 0x40) != (code *)PTR_FUN_003bdd10" (pointer_expression "*(code **)(*plVar11 + 0x40)" * (cast_expression "(code **)(*plVar11 + 0x40)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*plVar11 + 0x40)" ( (binary_expression "*plVar11 + 0x40" (pointer_expression "*plVar11" * identifier) + number_literal) )))) != (cast_expression "(code *)PTR_FUN_003bdd10" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (compound_statement "{\n      bVar8 = (**(code **)(*plVar11 + 0x40))(plVar11,(int)(char)bVar1,0);\n    }" { (expression_statement "bVar8 = (**(code **)(*plVar11 + 0x40))(plVar11,(int)(char)bVar1,0);" (assignment_expression "bVar8 = (**(code **)(*plVar11 + 0x40))(plVar11,(int)(char)bVar1,0)" identifier = (call_expression "(**(code **)(*plVar11 + 0x40))(plVar11,(int)(char)bVar1,0)" (parenthesized_expression "(**(code **)(*plVar11 + 0x40))" ( (pointer_expression "**(code **)(*plVar11 + 0x40)" * (pointer_expression "*(code **)(*plVar11 + 0x40)" * (cast_expression "(code **)(*plVar11 + 0x40)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*plVar11 + 0x40)" ( (binary_expression "*plVar11 + 0x40" (pointer_expression "*plVar11" * identifier) + number_literal) ))))) )) (argument_list "(plVar11,(int)(char)bVar1,0)" ( identifier , (cast_expression "(int)(char)bVar1" ( (type_descriptor "int" primitive_type) ) (cast_expression "(char)bVar1" ( (type_descriptor "char" primitive_type) ) identifier)) , number_literal )))) ;) })) (if_statement "if (bVar8 != 0) {\n      *(byte *)((long)plVar11 + (ulong)bVar1 + 0x139) = bVar8;\n      goto LAB_00296071;\n    }" if (parenthesized_expression "(bVar8 != 0)" ( (binary_expression "bVar8 != 0" identifier != number_literal) )) (compound_statement "{\n      *(byte *)((long)plVar11 + (ulong)bVar1 + 0x139) = bVar8;\n      goto LAB_00296071;\n    }" { (expression_statement "*(byte *)((long)plVar11 + (ulong)bVar1 + 0x139) = bVar8;" (assignment_expression "*(byte *)((long)plVar11 + (ulong)bVar1 + 0x139) = bVar8" (pointer_expression "*(byte *)((long)plVar11 + (ulong)bVar1 + 0x139)" * (cast_expression "(byte *)((long)plVar11 + (ulong)bVar1 + 0x139)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)plVar11 + (ulong)bVar1 + 0x139)" ( (binary_expression "(long)plVar11 + (ulong)bVar1 + 0x139" (binary_expression "(long)plVar11 + (ulong)bVar1" (cast_expression "(long)plVar11" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + (cast_expression "(ulong)bVar1" ( (type_descriptor "ulong" type_identifier) ) identifier)) + number_literal) )))) = identifier) ;) (goto_statement "goto LAB_00296071;" goto statement_identifier ;) })) (labeled_statement "LAB_00295f20:\n    lVar2 = plVar11[6];" statement_identifier : (expression_statement "lVar2 = plVar11[6];" (assignment_expression "lVar2 = plVar11[6]" identifier = (subscript_expression "plVar11[6]" identifier [ number_literal ])) ;)) (if_statement "if ((*(byte *)(lVar2 + 1 + (ulong)*param_9 * 2) & 0x20) != 0) {\n      pbVar18 = param_9 + 1;\n      pbVar3 = param_10;\n      if (param_10 != pbVar18) {\n        bVar1 = *(byte *)(lVar2 + 1 + (ulong)param_9[1] * 2);\n        while ((pbVar3 = pbVar18, (bVar1 & 0x20) != 0 &&\n               (pbVar18 = pbVar18 + 1, pbVar3 = pbVar18, param_10 != pbVar18))) {\n          bVar1 = *(byte *)(lVar2 + 1 + (ulong)*pbVar18 * 2);\n        }\n      }\n      do {\n        param_9 = pbVar3;\n        bVar20 = (int)uVar16 == -1;\n        bVar15 = bVar20;\n        bVar17 = bVar19;\n        if (param_2 != (long *)0x0 && bVar20) {\n          if ((ulong)param_2[3] <= (ulong)param_2[2]) {\n            iVar10 = (**(code **)(*param_2 + 0x48))(param_2);\n            bVar15 = iVar10 == -1 && (param_2 != (long *)0x0 && bVar20);\n            if (iVar10 == -1) {\n              param_2 = (long *)0x0;\n            }\n            goto LAB_00296353;\n          }\n          bVar15 = false;\n          if (param_4 != (long *)0x0 && bVar19) goto LAB_002963d5;\nLAB_00296362:\n          if (bVar15 == bVar17) goto LAB_00295fe1;\n        }\n        else {\nLAB_00296353:\n          if (param_4 == (long *)0x0 || !bVar19) goto LAB_00296362;\nLAB_002963d5:\n          bVar17 = param_4 != (long *)0x0;\n          if ((ulong)param_4[3] <= (ulong)param_4[2]) {\n            iVar10 = (**(code **)(*param_4 + 0x48))(param_4);\n            if (iVar10 == -1) {\n              param_4 = (long *)0x0;\n            }\n            bVar17 = iVar10 == -1 && (bVar17 && bVar19);\n            goto LAB_00296362;\n          }\n          if (bVar15 == false) goto LAB_00295fe1;\n        }\n        uVar13 = uVar16;\n        if ((param_2 == (long *)0x0) || (!bVar20)) {\nLAB_0029637c:\n          if ((*(byte *)(plVar11[6] + 1 + (uVar13 & 0xff) * 2) & 0x20) == 0) goto LAB_00295fe1;\n          pbVar18 = (byte *)param_2[2];\n          if (pbVar18 < (byte *)param_2[3]) goto LAB_00296398;\n          (**(code **)(*param_2 + 0x50))(param_2);\n        }\n        else {\n          pbVar18 = (byte *)param_2[2];\n          if ((byte *)param_2[3] <= pbVar18) {\n            uVar13 = (**(code **)(*param_2 + 0x48))(param_2);\n            if ((int)uVar13 == -1) {\n              param_2 = (long *)0x0;\n            }\n            goto LAB_0029637c;\n          }\n          if ((*(byte *)(plVar11[6] + 1 + (ulong)*pbVar18 * 2) & 0x20) == 0) goto code_r0x00296430;\nLAB_00296398:\n          param_2[2] = (long)(pbVar18 + 1);\n        }\n        uVar16 = 0xffffffff;\n        pbVar3 = param_9;\n      } while( true );\n    }" if (parenthesized_expression "((*(byte *)(lVar2 + 1 + (ulong)*param_9 * 2) & 0x20) != 0)" ( (binary_expression "(*(byte *)(lVar2 + 1 + (ulong)*param_9 * 2) & 0x20) != 0" (parenthesized_expression "(*(byte *)(lVar2 + 1 + (ulong)*param_9 * 2) & 0x20)" ( (binary_expression "*(byte *)(lVar2 + 1 + (ulong)*param_9 * 2) & 0x20" (pointer_expression "*(byte *)(lVar2 + 1 + (ulong)*param_9 * 2)" * (cast_expression "(byte *)(lVar2 + 1 + (ulong)*param_9 * 2)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar2 + 1 + (ulong)*param_9 * 2)" ( (binary_expression "lVar2 + 1 + (ulong)*param_9 * 2" (binary_expression "lVar2 + 1" identifier + number_literal) + (binary_expression "(ulong)*param_9 * 2" (binary_expression "(ulong)*param_9" (parenthesized_expression "(ulong)" ( identifier )) * identifier) * number_literal)) )))) & number_literal) )) != number_literal) )) (compound_statement "{\n      pbVar18 = param_9 + 1;\n      pbVar3 = param_10;\n      if (param_10 != pbVar18) {\n        bVar1 = *(byte *)(lVar2 + 1 + (ulong)param_9[1] * 2);\n        while ((pbVar3 = pbVar18, (bVar1 & 0x20) != 0 &&\n               (pbVar18 = pbVar18 + 1, pbVar3 = pbVar18, param_10 != pbVar18))) {\n          bVar1 = *(byte *)(lVar2 + 1 + (ulong)*pbVar18 * 2);\n        }\n      }\n      do {\n        param_9 = pbVar3;\n        bVar20 = (int)uVar16 == -1;\n        bVar15 = bVar20;\n        bVar17 = bVar19;\n        if (param_2 != (long *)0x0 && bVar20) {\n          if ((ulong)param_2[3] <= (ulong)param_2[2]) {\n            iVar10 = (**(code **)(*param_2 + 0x48))(param_2);\n            bVar15 = iVar10 == -1 && (param_2 != (long *)0x0 && bVar20);\n            if (iVar10 == -1) {\n              param_2 = (long *)0x0;\n            }\n            goto LAB_00296353;\n          }\n          bVar15 = false;\n          if (param_4 != (long *)0x0 && bVar19) goto LAB_002963d5;\nLAB_00296362:\n          if (bVar15 == bVar17) goto LAB_00295fe1;\n        }\n        else {\nLAB_00296353:\n          if (param_4 == (long *)0x0 || !bVar19) goto LAB_00296362;\nLAB_002963d5:\n          bVar17 = param_4 != (long *)0x0;\n          if ((ulong)param_4[3] <= (ulong)param_4[2]) {\n            iVar10 = (**(code **)(*param_4 + 0x48))(param_4);\n            if (iVar10 == -1) {\n              param_4 = (long *)0x0;\n            }\n            bVar17 = iVar10 == -1 && (bVar17 && bVar19);\n            goto LAB_00296362;\n          }\n          if (bVar15 == false) goto LAB_00295fe1;\n        }\n        uVar13 = uVar16;\n        if ((param_2 == (long *)0x0) || (!bVar20)) {\nLAB_0029637c:\n          if ((*(byte *)(plVar11[6] + 1 + (uVar13 & 0xff) * 2) & 0x20) == 0) goto LAB_00295fe1;\n          pbVar18 = (byte *)param_2[2];\n          if (pbVar18 < (byte *)param_2[3]) goto LAB_00296398;\n          (**(code **)(*param_2 + 0x50))(param_2);\n        }\n        else {\n          pbVar18 = (byte *)param_2[2];\n          if ((byte *)param_2[3] <= pbVar18) {\n            uVar13 = (**(code **)(*param_2 + 0x48))(param_2);\n            if ((int)uVar13 == -1) {\n              param_2 = (long *)0x0;\n            }\n            goto LAB_0029637c;\n          }\n          if ((*(byte *)(plVar11[6] + 1 + (ulong)*pbVar18 * 2) & 0x20) == 0) goto code_r0x00296430;\nLAB_00296398:\n          param_2[2] = (long)(pbVar18 + 1);\n        }\n        uVar16 = 0xffffffff;\n        pbVar3 = param_9;\n      } while( true );\n    }" { (expression_statement "pbVar18 = param_9 + 1;" (assignment_expression "pbVar18 = param_9 + 1" identifier = (binary_expression "param_9 + 1" identifier + number_literal)) ;) (expression_statement "pbVar3 = param_10;" (assignment_expression "pbVar3 = param_10" identifier = identifier) ;) (if_statement "if (param_10 != pbVar18) {\n        bVar1 = *(byte *)(lVar2 + 1 + (ulong)param_9[1] * 2);\n        while ((pbVar3 = pbVar18, (bVar1 & 0x20) != 0 &&\n               (pbVar18 = pbVar18 + 1, pbVar3 = pbVar18, param_10 != pbVar18))) {\n          bVar1 = *(byte *)(lVar2 + 1 + (ulong)*pbVar18 * 2);\n        }\n      }" if (parenthesized_expression "(param_10 != pbVar18)" ( (binary_expression "param_10 != pbVar18" identifier != identifier) )) (compound_statement "{\n        bVar1 = *(byte *)(lVar2 + 1 + (ulong)param_9[1] * 2);\n        while ((pbVar3 = pbVar18, (bVar1 & 0x20) != 0 &&\n               (pbVar18 = pbVar18 + 1, pbVar3 = pbVar18, param_10 != pbVar18))) {\n          bVar1 = *(byte *)(lVar2 + 1 + (ulong)*pbVar18 * 2);\n        }\n      }" { (expression_statement "bVar1 = *(byte *)(lVar2 + 1 + (ulong)param_9[1] * 2);" (assignment_expression "bVar1 = *(byte *)(lVar2 + 1 + (ulong)param_9[1] * 2)" identifier = (pointer_expression "*(byte *)(lVar2 + 1 + (ulong)param_9[1] * 2)" * (cast_expression "(byte *)(lVar2 + 1 + (ulong)param_9[1] * 2)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar2 + 1 + (ulong)param_9[1] * 2)" ( (binary_expression "lVar2 + 1 + (ulong)param_9[1] * 2" (binary_expression "lVar2 + 1" identifier + number_literal) + (binary_expression "(ulong)param_9[1] * 2" (cast_expression "(ulong)param_9[1]" ( (type_descriptor "ulong" type_identifier) ) (subscript_expression "param_9[1]" identifier [ number_literal ])) * number_literal)) ))))) ;) (while_statement "while ((pbVar3 = pbVar18, (bVar1 & 0x20) != 0 &&\n               (pbVar18 = pbVar18 + 1, pbVar3 = pbVar18, param_10 != pbVar18))) {\n          bVar1 = *(byte *)(lVar2 + 1 + (ulong)*pbVar18 * 2);\n        }" while (parenthesized_expression "((pbVar3 = pbVar18, (bVar1 & 0x20) != 0 &&\n               (pbVar18 = pbVar18 + 1, pbVar3 = pbVar18, param_10 != pbVar18)))" ( (parenthesized_expression "(pbVar3 = pbVar18, (bVar1 & 0x20) != 0 &&\n               (pbVar18 = pbVar18 + 1, pbVar3 = pbVar18, param_10 != pbVar18))" ( (comma_expression "pbVar3 = pbVar18, (bVar1 & 0x20) != 0 &&\n               (pbVar18 = pbVar18 + 1, pbVar3 = pbVar18, param_10 != pbVar18)" (assignment_expression "pbVar3 = pbVar18" identifier = identifier) , (binary_expression "(bVar1 & 0x20) != 0 &&\n               (pbVar18 = pbVar18 + 1, pbVar3 = pbVar18, param_10 != pbVar18)" (binary_expression "(bVar1 & 0x20) != 0" (parenthesized_expression "(bVar1 & 0x20)" ( (binary_expression "bVar1 & 0x20" identifier & number_literal) )) != number_literal) && (parenthesized_expression "(pbVar18 = pbVar18 + 1, pbVar3 = pbVar18, param_10 != pbVar18)" ( (comma_expression "pbVar18 = pbVar18 + 1, pbVar3 = pbVar18, param_10 != pbVar18" (assignment_expression "pbVar18 = pbVar18 + 1" identifier = (binary_expression "pbVar18 + 1" identifier + number_literal)) , (comma_expression "pbVar3 = pbVar18, param_10 != pbVar18" (assignment_expression "pbVar3 = pbVar18" identifier = identifier) , (binary_expression "param_10 != pbVar18" identifier != identifier))) )))) )) )) (compound_statement "{\n          bVar1 = *(byte *)(lVar2 + 1 + (ulong)*pbVar18 * 2);\n        }" { (expression_statement "bVar1 = *(byte *)(lVar2 + 1 + (ulong)*pbVar18 * 2);" (assignment_expression "bVar1 = *(byte *)(lVar2 + 1 + (ulong)*pbVar18 * 2)" identifier = (pointer_expression "*(byte *)(lVar2 + 1 + (ulong)*pbVar18 * 2)" * (cast_expression "(byte *)(lVar2 + 1 + (ulong)*pbVar18 * 2)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar2 + 1 + (ulong)*pbVar18 * 2)" ( (binary_expression "lVar2 + 1 + (ulong)*pbVar18 * 2" (binary_expression "lVar2 + 1" identifier + number_literal) + (binary_expression "(ulong)*pbVar18 * 2" (binary_expression "(ulong)*pbVar18" (parenthesized_expression "(ulong)" ( identifier )) * identifier) * number_literal)) ))))) ;) })) })) (do_statement "do {\n        param_9 = pbVar3;\n        bVar20 = (int)uVar16 == -1;\n        bVar15 = bVar20;\n        bVar17 = bVar19;\n        if (param_2 != (long *)0x0 && bVar20) {\n          if ((ulong)param_2[3] <= (ulong)param_2[2]) {\n            iVar10 = (**(code **)(*param_2 + 0x48))(param_2);\n            bVar15 = iVar10 == -1 && (param_2 != (long *)0x0 && bVar20);\n            if (iVar10 == -1) {\n              param_2 = (long *)0x0;\n            }\n            goto LAB_00296353;\n          }\n          bVar15 = false;\n          if (param_4 != (long *)0x0 && bVar19) goto LAB_002963d5;\nLAB_00296362:\n          if (bVar15 == bVar17) goto LAB_00295fe1;\n        }\n        else {\nLAB_00296353:\n          if (param_4 == (long *)0x0 || !bVar19) goto LAB_00296362;\nLAB_002963d5:\n          bVar17 = param_4 != (long *)0x0;\n          if ((ulong)param_4[3] <= (ulong)param_4[2]) {\n            iVar10 = (**(code **)(*param_4 + 0x48))(param_4);\n            if (iVar10 == -1) {\n              param_4 = (long *)0x0;\n            }\n            bVar17 = iVar10 == -1 && (bVar17 && bVar19);\n            goto LAB_00296362;\n          }\n          if (bVar15 == false) goto LAB_00295fe1;\n        }\n        uVar13 = uVar16;\n        if ((param_2 == (long *)0x0) || (!bVar20)) {\nLAB_0029637c:\n          if ((*(byte *)(plVar11[6] + 1 + (uVar13 & 0xff) * 2) & 0x20) == 0) goto LAB_00295fe1;\n          pbVar18 = (byte *)param_2[2];\n          if (pbVar18 < (byte *)param_2[3]) goto LAB_00296398;\n          (**(code **)(*param_2 + 0x50))(param_2);\n        }\n        else {\n          pbVar18 = (byte *)param_2[2];\n          if ((byte *)param_2[3] <= pbVar18) {\n            uVar13 = (**(code **)(*param_2 + 0x48))(param_2);\n            if ((int)uVar13 == -1) {\n              param_2 = (long *)0x0;\n            }\n            goto LAB_0029637c;\n          }\n          if ((*(byte *)(plVar11[6] + 1 + (ulong)*pbVar18 * 2) & 0x20) == 0) goto code_r0x00296430;\nLAB_00296398:\n          param_2[2] = (long)(pbVar18 + 1);\n        }\n        uVar16 = 0xffffffff;\n        pbVar3 = param_9;\n      } while( true );" do (compound_statement "{\n        param_9 = pbVar3;\n        bVar20 = (int)uVar16 == -1;\n        bVar15 = bVar20;\n        bVar17 = bVar19;\n        if (param_2 != (long *)0x0 && bVar20) {\n          if ((ulong)param_2[3] <= (ulong)param_2[2]) {\n            iVar10 = (**(code **)(*param_2 + 0x48))(param_2);\n            bVar15 = iVar10 == -1 && (param_2 != (long *)0x0 && bVar20);\n            if (iVar10 == -1) {\n              param_2 = (long *)0x0;\n            }\n            goto LAB_00296353;\n          }\n          bVar15 = false;\n          if (param_4 != (long *)0x0 && bVar19) goto LAB_002963d5;\nLAB_00296362:\n          if (bVar15 == bVar17) goto LAB_00295fe1;\n        }\n        else {\nLAB_00296353:\n          if (param_4 == (long *)0x0 || !bVar19) goto LAB_00296362;\nLAB_002963d5:\n          bVar17 = param_4 != (long *)0x0;\n          if ((ulong)param_4[3] <= (ulong)param_4[2]) {\n            iVar10 = (**(code **)(*param_4 + 0x48))(param_4);\n            if (iVar10 == -1) {\n              param_4 = (long *)0x0;\n            }\n            bVar17 = iVar10 == -1 && (bVar17 && bVar19);\n            goto LAB_00296362;\n          }\n          if (bVar15 == false) goto LAB_00295fe1;\n        }\n        uVar13 = uVar16;\n        if ((param_2 == (long *)0x0) || (!bVar20)) {\nLAB_0029637c:\n          if ((*(byte *)(plVar11[6] + 1 + (uVar13 & 0xff) * 2) & 0x20) == 0) goto LAB_00295fe1;\n          pbVar18 = (byte *)param_2[2];\n          if (pbVar18 < (byte *)param_2[3]) goto LAB_00296398;\n          (**(code **)(*param_2 + 0x50))(param_2);\n        }\n        else {\n          pbVar18 = (byte *)param_2[2];\n          if ((byte *)param_2[3] <= pbVar18) {\n            uVar13 = (**(code **)(*param_2 + 0x48))(param_2);\n            if ((int)uVar13 == -1) {\n              param_2 = (long *)0x0;\n            }\n            goto LAB_0029637c;\n          }\n          if ((*(byte *)(plVar11[6] + 1 + (ulong)*pbVar18 * 2) & 0x20) == 0) goto code_r0x00296430;\nLAB_00296398:\n          param_2[2] = (long)(pbVar18 + 1);\n        }\n        uVar16 = 0xffffffff;\n        pbVar3 = param_9;\n      }" { (expression_statement "param_9 = pbVar3;" (assignment_expression "param_9 = pbVar3" identifier = identifier) ;) (expression_statement "bVar20 = (int)uVar16 == -1;" (assignment_expression "bVar20 = (int)uVar16 == -1" identifier = (binary_expression "(int)uVar16 == -1" (cast_expression "(int)uVar16" ( (type_descriptor "int" primitive_type) ) identifier) == number_literal)) ;) (expression_statement "bVar15 = bVar20;" (assignment_expression "bVar15 = bVar20" identifier = identifier) ;) (expression_statement "bVar17 = bVar19;" (assignment_expression "bVar17 = bVar19" identifier = identifier) ;) (if_statement "if (param_2 != (long *)0x0 && bVar20) {\n          if ((ulong)param_2[3] <= (ulong)param_2[2]) {\n            iVar10 = (**(code **)(*param_2 + 0x48))(param_2);\n            bVar15 = iVar10 == -1 && (param_2 != (long *)0x0 && bVar20);\n            if (iVar10 == -1) {\n              param_2 = (long *)0x0;\n            }\n            goto LAB_00296353;\n          }\n          bVar15 = false;\n          if (param_4 != (long *)0x0 && bVar19) goto LAB_002963d5;\nLAB_00296362:\n          if (bVar15 == bVar17) goto LAB_00295fe1;\n        }\n        else {\nLAB_00296353:\n          if (param_4 == (long *)0x0 || !bVar19) goto LAB_00296362;\nLAB_002963d5:\n          bVar17 = param_4 != (long *)0x0;\n          if ((ulong)param_4[3] <= (ulong)param_4[2]) {\n            iVar10 = (**(code **)(*param_4 + 0x48))(param_4);\n            if (iVar10 == -1) {\n              param_4 = (long *)0x0;\n            }\n            bVar17 = iVar10 == -1 && (bVar17 && bVar19);\n            goto LAB_00296362;\n          }\n          if (bVar15 == false) goto LAB_00295fe1;\n        }" if (parenthesized_expression "(param_2 != (long *)0x0 && bVar20)" ( (binary_expression "param_2 != (long *)0x0 && bVar20" (binary_expression "param_2 != (long *)0x0" identifier != (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) && identifier) )) (compound_statement "{\n          if ((ulong)param_2[3] <= (ulong)param_2[2]) {\n            iVar10 = (**(code **)(*param_2 + 0x48))(param_2);\n            bVar15 = iVar10 == -1 && (param_2 != (long *)0x0 && bVar20);\n            if (iVar10 == -1) {\n              param_2 = (long *)0x0;\n            }\n            goto LAB_00296353;\n          }\n          bVar15 = false;\n          if (param_4 != (long *)0x0 && bVar19) goto LAB_002963d5;\nLAB_00296362:\n          if (bVar15 == bVar17) goto LAB_00295fe1;\n        }" { (if_statement "if ((ulong)param_2[3] <= (ulong)param_2[2]) {\n            iVar10 = (**(code **)(*param_2 + 0x48))(param_2);\n            bVar15 = iVar10 == -1 && (param_2 != (long *)0x0 && bVar20);\n            if (iVar10 == -1) {\n              param_2 = (long *)0x0;\n            }\n            goto LAB_00296353;\n          }" if (parenthesized_expression "((ulong)param_2[3] <= (ulong)param_2[2])" ( (binary_expression "(ulong)param_2[3] <= (ulong)param_2[2]" (cast_expression "(ulong)param_2[3]" ( (type_descriptor "ulong" type_identifier) ) (subscript_expression "param_2[3]" identifier [ number_literal ])) <= (cast_expression "(ulong)param_2[2]" ( (type_descriptor "ulong" type_identifier) ) (subscript_expression "param_2[2]" identifier [ number_literal ]))) )) (compound_statement "{\n            iVar10 = (**(code **)(*param_2 + 0x48))(param_2);\n            bVar15 = iVar10 == -1 && (param_2 != (long *)0x0 && bVar20);\n            if (iVar10 == -1) {\n              param_2 = (long *)0x0;\n            }\n            goto LAB_00296353;\n          }" { (expression_statement "iVar10 = (**(code **)(*param_2 + 0x48))(param_2);" (assignment_expression "iVar10 = (**(code **)(*param_2 + 0x48))(param_2)" identifier = (call_expression "(**(code **)(*param_2 + 0x48))(param_2)" (parenthesized_expression "(**(code **)(*param_2 + 0x48))" ( (pointer_expression "**(code **)(*param_2 + 0x48)" * (pointer_expression "*(code **)(*param_2 + 0x48)" * (cast_expression "(code **)(*param_2 + 0x48)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*param_2 + 0x48)" ( (binary_expression "*param_2 + 0x48" (pointer_expression "*param_2" * identifier) + number_literal) ))))) )) (argument_list "(param_2)" ( identifier )))) ;) (expression_statement "bVar15 = iVar10 == -1 && (param_2 != (long *)0x0 && bVar20);" (assignment_expression "bVar15 = iVar10 == -1 && (param_2 != (long *)0x0 && bVar20)" identifier = (binary_expression "iVar10 == -1 && (param_2 != (long *)0x0 && bVar20)" (binary_expression "iVar10 == -1" identifier == number_literal) && (parenthesized_expression "(param_2 != (long *)0x0 && bVar20)" ( (binary_expression "param_2 != (long *)0x0 && bVar20" (binary_expression "param_2 != (long *)0x0" identifier != (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) && identifier) )))) ;) (if_statement "if (iVar10 == -1) {\n              param_2 = (long *)0x0;\n            }" if (parenthesized_expression "(iVar10 == -1)" ( (binary_expression "iVar10 == -1" identifier == number_literal) )) (compound_statement "{\n              param_2 = (long *)0x0;\n            }" { (expression_statement "param_2 = (long *)0x0;" (assignment_expression "param_2 = (long *)0x0" identifier = (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) ;) })) (goto_statement "goto LAB_00296353;" goto statement_identifier ;) })) (expression_statement "bVar15 = false;" (assignment_expression "bVar15 = false" identifier = false) ;) (if_statement "if (param_4 != (long *)0x0 && bVar19) goto LAB_002963d5;" if (parenthesized_expression "(param_4 != (long *)0x0 && bVar19)" ( (binary_expression "param_4 != (long *)0x0 && bVar19" (binary_expression "param_4 != (long *)0x0" identifier != (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) && identifier) )) (goto_statement "goto LAB_002963d5;" goto statement_identifier ;)) (labeled_statement "LAB_00296362:\n          if (bVar15 == bVar17) goto LAB_00295fe1;" statement_identifier : (if_statement "if (bVar15 == bVar17) goto LAB_00295fe1;" if (parenthesized_expression "(bVar15 == bVar17)" ( (binary_expression "bVar15 == bVar17" identifier == identifier) )) (goto_statement "goto LAB_00295fe1;" goto statement_identifier ;))) }) (else_clause "else {\nLAB_00296353:\n          if (param_4 == (long *)0x0 || !bVar19) goto LAB_00296362;\nLAB_002963d5:\n          bVar17 = param_4 != (long *)0x0;\n          if ((ulong)param_4[3] <= (ulong)param_4[2]) {\n            iVar10 = (**(code **)(*param_4 + 0x48))(param_4);\n            if (iVar10 == -1) {\n              param_4 = (long *)0x0;\n            }\n            bVar17 = iVar10 == -1 && (bVar17 && bVar19);\n            goto LAB_00296362;\n          }\n          if (bVar15 == false) goto LAB_00295fe1;\n        }" else (compound_statement "{\nLAB_00296353:\n          if (param_4 == (long *)0x0 || !bVar19) goto LAB_00296362;\nLAB_002963d5:\n          bVar17 = param_4 != (long *)0x0;\n          if ((ulong)param_4[3] <= (ulong)param_4[2]) {\n            iVar10 = (**(code **)(*param_4 + 0x48))(param_4);\n            if (iVar10 == -1) {\n              param_4 = (long *)0x0;\n            }\n            bVar17 = iVar10 == -1 && (bVar17 && bVar19);\n            goto LAB_00296362;\n          }\n          if (bVar15 == false) goto LAB_00295fe1;\n        }" { (labeled_statement "LAB_00296353:\n          if (param_4 == (long *)0x0 || !bVar19) goto LAB_00296362;" statement_identifier : (if_statement "if (param_4 == (long *)0x0 || !bVar19) goto LAB_00296362;" if (parenthesized_expression "(param_4 == (long *)0x0 || !bVar19)" ( (binary_expression "param_4 == (long *)0x0 || !bVar19" (binary_expression "param_4 == (long *)0x0" identifier == (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) || (unary_expression "!bVar19" ! identifier)) )) (goto_statement "goto LAB_00296362;" goto statement_identifier ;))) (labeled_statement "LAB_002963d5:\n          bVar17 = param_4 != (long *)0x0;" statement_identifier : (expression_statement "bVar17 = param_4 != (long *)0x0;" (assignment_expression "bVar17 = param_4 != (long *)0x0" identifier = (binary_expression "param_4 != (long *)0x0" identifier != (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal))) ;)) (if_statement "if ((ulong)param_4[3] <= (ulong)param_4[2]) {\n            iVar10 = (**(code **)(*param_4 + 0x48))(param_4);\n            if (iVar10 == -1) {\n              param_4 = (long *)0x0;\n            }\n            bVar17 = iVar10 == -1 && (bVar17 && bVar19);\n            goto LAB_00296362;\n          }" if (parenthesized_expression "((ulong)param_4[3] <= (ulong)param_4[2])" ( (binary_expression "(ulong)param_4[3] <= (ulong)param_4[2]" (cast_expression "(ulong)param_4[3]" ( (type_descriptor "ulong" type_identifier) ) (subscript_expression "param_4[3]" identifier [ number_literal ])) <= (cast_expression "(ulong)param_4[2]" ( (type_descriptor "ulong" type_identifier) ) (subscript_expression "param_4[2]" identifier [ number_literal ]))) )) (compound_statement "{\n            iVar10 = (**(code **)(*param_4 + 0x48))(param_4);\n            if (iVar10 == -1) {\n              param_4 = (long *)0x0;\n            }\n            bVar17 = iVar10 == -1 && (bVar17 && bVar19);\n            goto LAB_00296362;\n          }" { (expression_statement "iVar10 = (**(code **)(*param_4 + 0x48))(param_4);" (assignment_expression "iVar10 = (**(code **)(*param_4 + 0x48))(param_4)" identifier = (call_expression "(**(code **)(*param_4 + 0x48))(param_4)" (parenthesized_expression "(**(code **)(*param_4 + 0x48))" ( (pointer_expression "**(code **)(*param_4 + 0x48)" * (pointer_expression "*(code **)(*param_4 + 0x48)" * (cast_expression "(code **)(*param_4 + 0x48)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*param_4 + 0x48)" ( (binary_expression "*param_4 + 0x48" (pointer_expression "*param_4" * identifier) + number_literal) ))))) )) (argument_list "(param_4)" ( identifier )))) ;) (if_statement "if (iVar10 == -1) {\n              param_4 = (long *)0x0;\n            }" if (parenthesized_expression "(iVar10 == -1)" ( (binary_expression "iVar10 == -1" identifier == number_literal) )) (compound_statement "{\n              param_4 = (long *)0x0;\n            }" { (expression_statement "param_4 = (long *)0x0;" (assignment_expression "param_4 = (long *)0x0" identifier = (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) ;) })) (expression_statement "bVar17 = iVar10 == -1 && (bVar17 && bVar19);" (assignment_expression "bVar17 = iVar10 == -1 && (bVar17 && bVar19)" identifier = (binary_expression "iVar10 == -1 && (bVar17 && bVar19)" (binary_expression "iVar10 == -1" identifier == number_literal) && (parenthesized_expression "(bVar17 && bVar19)" ( (binary_expression "bVar17 && bVar19" identifier && identifier) )))) ;) (goto_statement "goto LAB_00296362;" goto statement_identifier ;) })) (if_statement "if (bVar15 == false) goto LAB_00295fe1;" if (parenthesized_expression "(bVar15 == false)" ( (binary_expression "bVar15 == false" identifier == false) )) (goto_statement "goto LAB_00295fe1;" goto statement_identifier ;)) }))) (expression_statement "uVar13 = uVar16;" (assignment_expression "uVar13 = uVar16" identifier = identifier) ;) (if_statement "if ((param_2 == (long *)0x0) || (!bVar20)) {\nLAB_0029637c:\n          if ((*(byte *)(plVar11[6] + 1 + (uVar13 & 0xff) * 2) & 0x20) == 0) goto LAB_00295fe1;\n          pbVar18 = (byte *)param_2[2];\n          if (pbVar18 < (byte *)param_2[3]) goto LAB_00296398;\n          (**(code **)(*param_2 + 0x50))(param_2);\n        }\n        else {\n          pbVar18 = (byte *)param_2[2];\n          if ((byte *)param_2[3] <= pbVar18) {\n            uVar13 = (**(code **)(*param_2 + 0x48))(param_2);\n            if ((int)uVar13 == -1) {\n              param_2 = (long *)0x0;\n            }\n            goto LAB_0029637c;\n          }\n          if ((*(byte *)(plVar11[6] + 1 + (ulong)*pbVar18 * 2) & 0x20) == 0) goto code_r0x00296430;\nLAB_00296398:\n          param_2[2] = (long)(pbVar18 + 1);\n        }" if (parenthesized_expression "((param_2 == (long *)0x0) || (!bVar20))" ( (binary_expression "(param_2 == (long *)0x0) || (!bVar20)" (parenthesized_expression "(param_2 == (long *)0x0)" ( (binary_expression "param_2 == (long *)0x0" identifier == (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) )) || (parenthesized_expression "(!bVar20)" ( (unary_expression "!bVar20" ! identifier) ))) )) (compound_statement "{\nLAB_0029637c:\n          if ((*(byte *)(plVar11[6] + 1 + (uVar13 & 0xff) * 2) & 0x20) == 0) goto LAB_00295fe1;\n          pbVar18 = (byte *)param_2[2];\n          if (pbVar18 < (byte *)param_2[3]) goto LAB_00296398;\n          (**(code **)(*param_2 + 0x50))(param_2);\n        }" { (labeled_statement "LAB_0029637c:\n          if ((*(byte *)(plVar11[6] + 1 + (uVar13 & 0xff) * 2) & 0x20) == 0) goto LAB_00295fe1;" statement_identifier : (if_statement "if ((*(byte *)(plVar11[6] + 1 + (uVar13 & 0xff) * 2) & 0x20) == 0) goto LAB_00295fe1;" if (parenthesized_expression "((*(byte *)(plVar11[6] + 1 + (uVar13 & 0xff) * 2) & 0x20) == 0)" ( (binary_expression "(*(byte *)(plVar11[6] + 1 + (uVar13 & 0xff) * 2) & 0x20) == 0" (parenthesized_expression "(*(byte *)(plVar11[6] + 1 + (uVar13 & 0xff) * 2) & 0x20)" ( (binary_expression "*(byte *)(plVar11[6] + 1 + (uVar13 & 0xff) * 2) & 0x20" (pointer_expression "*(byte *)(plVar11[6] + 1 + (uVar13 & 0xff) * 2)" * (cast_expression "(byte *)(plVar11[6] + 1 + (uVar13 & 0xff) * 2)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(plVar11[6] + 1 + (uVar13 & 0xff) * 2)" ( (binary_expression "plVar11[6] + 1 + (uVar13 & 0xff) * 2" (binary_expression "plVar11[6] + 1" (subscript_expression "plVar11[6]" identifier [ number_literal ]) + number_literal) + (binary_expression "(uVar13 & 0xff) * 2" (parenthesized_expression "(uVar13 & 0xff)" ( (binary_expression "uVar13 & 0xff" identifier & number_literal) )) * number_literal)) )))) & number_literal) )) == number_literal) )) (goto_statement "goto LAB_00295fe1;" goto statement_identifier ;))) (expression_statement "pbVar18 = (byte *)param_2[2];" (assignment_expression "pbVar18 = (byte *)param_2[2]" identifier = (cast_expression "(byte *)param_2[2]" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_2[2]" identifier [ number_literal ]))) ;) (if_statement "if (pbVar18 < (byte *)param_2[3]) goto LAB_00296398;" if (parenthesized_expression "(pbVar18 < (byte *)param_2[3])" ( (binary_expression "pbVar18 < (byte *)param_2[3]" identifier < (cast_expression "(byte *)param_2[3]" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_2[3]" identifier [ number_literal ]))) )) (goto_statement "goto LAB_00296398;" goto statement_identifier ;)) (expression_statement "(**(code **)(*param_2 + 0x50))(param_2);" (call_expression "(**(code **)(*param_2 + 0x50))(param_2)" (parenthesized_expression "(**(code **)(*param_2 + 0x50))" ( (pointer_expression "**(code **)(*param_2 + 0x50)" * (pointer_expression "*(code **)(*param_2 + 0x50)" * (cast_expression "(code **)(*param_2 + 0x50)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*param_2 + 0x50)" ( (binary_expression "*param_2 + 0x50" (pointer_expression "*param_2" * identifier) + number_literal) ))))) )) (argument_list "(param_2)" ( identifier ))) ;) }) (else_clause "else {\n          pbVar18 = (byte *)param_2[2];\n          if ((byte *)param_2[3] <= pbVar18) {\n            uVar13 = (**(code **)(*param_2 + 0x48))(param_2);\n            if ((int)uVar13 == -1) {\n              param_2 = (long *)0x0;\n            }\n            goto LAB_0029637c;\n          }\n          if ((*(byte *)(plVar11[6] + 1 + (ulong)*pbVar18 * 2) & 0x20) == 0) goto code_r0x00296430;\nLAB_00296398:\n          param_2[2] = (long)(pbVar18 + 1);\n        }" else (compound_statement "{\n          pbVar18 = (byte *)param_2[2];\n          if ((byte *)param_2[3] <= pbVar18) {\n            uVar13 = (**(code **)(*param_2 + 0x48))(param_2);\n            if ((int)uVar13 == -1) {\n              param_2 = (long *)0x0;\n            }\n            goto LAB_0029637c;\n          }\n          if ((*(byte *)(plVar11[6] + 1 + (ulong)*pbVar18 * 2) & 0x20) == 0) goto code_r0x00296430;\nLAB_00296398:\n          param_2[2] = (long)(pbVar18 + 1);\n        }" { (expression_statement "pbVar18 = (byte *)param_2[2];" (assignment_expression "pbVar18 = (byte *)param_2[2]" identifier = (cast_expression "(byte *)param_2[2]" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_2[2]" identifier [ number_literal ]))) ;) (if_statement "if ((byte *)param_2[3] <= pbVar18) {\n            uVar13 = (**(code **)(*param_2 + 0x48))(param_2);\n            if ((int)uVar13 == -1) {\n              param_2 = (long *)0x0;\n            }\n            goto LAB_0029637c;\n          }" if (parenthesized_expression "((byte *)param_2[3] <= pbVar18)" ( (binary_expression "(byte *)param_2[3] <= pbVar18" (cast_expression "(byte *)param_2[3]" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_2[3]" identifier [ number_literal ])) <= identifier) )) (compound_statement "{\n            uVar13 = (**(code **)(*param_2 + 0x48))(param_2);\n            if ((int)uVar13 == -1) {\n              param_2 = (long *)0x0;\n            }\n            goto LAB_0029637c;\n          }" { (expression_statement "uVar13 = (**(code **)(*param_2 + 0x48))(param_2);" (assignment_expression "uVar13 = (**(code **)(*param_2 + 0x48))(param_2)" identifier = (call_expression "(**(code **)(*param_2 + 0x48))(param_2)" (parenthesized_expression "(**(code **)(*param_2 + 0x48))" ( (pointer_expression "**(code **)(*param_2 + 0x48)" * (pointer_expression "*(code **)(*param_2 + 0x48)" * (cast_expression "(code **)(*param_2 + 0x48)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*param_2 + 0x48)" ( (binary_expression "*param_2 + 0x48" (pointer_expression "*param_2" * identifier) + number_literal) ))))) )) (argument_list "(param_2)" ( identifier )))) ;) (if_statement "if ((int)uVar13 == -1) {\n              param_2 = (long *)0x0;\n            }" if (parenthesized_expression "((int)uVar13 == -1)" ( (binary_expression "(int)uVar13 == -1" (cast_expression "(int)uVar13" ( (type_descriptor "int" primitive_type) ) identifier) == number_literal) )) (compound_statement "{\n              param_2 = (long *)0x0;\n            }" { (expression_statement "param_2 = (long *)0x0;" (assignment_expression "param_2 = (long *)0x0" identifier = (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) ;) })) (goto_statement "goto LAB_0029637c;" goto statement_identifier ;) })) (if_statement "if ((*(byte *)(plVar11[6] + 1 + (ulong)*pbVar18 * 2) & 0x20) == 0) goto code_r0x00296430;" if (parenthesized_expression "((*(byte *)(plVar11[6] + 1 + (ulong)*pbVar18 * 2) & 0x20) == 0)" ( (binary_expression "(*(byte *)(plVar11[6] + 1 + (ulong)*pbVar18 * 2) & 0x20) == 0" (parenthesized_expression "(*(byte *)(plVar11[6] + 1 + (ulong)*pbVar18 * 2) & 0x20)" ( (binary_expression "*(byte *)(plVar11[6] + 1 + (ulong)*pbVar18 * 2) & 0x20" (pointer_expression "*(byte *)(plVar11[6] + 1 + (ulong)*pbVar18 * 2)" * (cast_expression "(byte *)(plVar11[6] + 1 + (ulong)*pbVar18 * 2)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(plVar11[6] + 1 + (ulong)*pbVar18 * 2)" ( (binary_expression "plVar11[6] + 1 + (ulong)*pbVar18 * 2" (binary_expression "plVar11[6] + 1" (subscript_expression "plVar11[6]" identifier [ number_literal ]) + number_literal) + (binary_expression "(ulong)*pbVar18 * 2" (binary_expression "(ulong)*pbVar18" (parenthesized_expression "(ulong)" ( identifier )) * identifier) * number_literal)) )))) & number_literal) )) == number_literal) )) (goto_statement "goto code_r0x00296430;" goto statement_identifier ;)) (labeled_statement "LAB_00296398:\n          param_2[2] = (long)(pbVar18 + 1);" statement_identifier : (expression_statement "param_2[2] = (long)(pbVar18 + 1);" (assignment_expression "param_2[2] = (long)(pbVar18 + 1)" (subscript_expression "param_2[2]" identifier [ number_literal ]) = (cast_expression "(long)(pbVar18 + 1)" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (parenthesized_expression "(pbVar18 + 1)" ( (binary_expression "pbVar18 + 1" identifier + number_literal) )))) ;)) }))) (expression_statement "uVar16 = 0xffffffff;" (assignment_expression "uVar16 = 0xffffffff" identifier = number_literal) ;) (expression_statement "pbVar3 = param_9;" (assignment_expression "pbVar3 = param_9" identifier = identifier) ;) }) while (parenthesized_expression "( true )" ( true )) ;) })) (expression_statement "cVar6 = (char)uVar16;" (assignment_expression "cVar6 = (char)uVar16" identifier = (cast_expression "(char)uVar16" ( (type_descriptor "char" primitive_type) ) identifier)) ;) (expression_statement "cVar4 = cVar6;" (assignment_expression "cVar4 = cVar6" identifier = identifier) ;) (if_statement "if ((param_2 != (long *)0x0) && (bVar20)) {\n      if ((char *)param_2[2] < (char *)param_2[3]) {\n        cVar4 = *(char *)param_2[2];\n      }\n      else {\n        iVar10 = (**(code **)(*param_2 + 0x48))(param_2);\n        cVar4 = -1;\n        if (iVar10 == -1) {\n          param_2 = (long *)0x0;\n        }\n        else {\n          cVar4 = (char)iVar10;\n        }\n      }\n    }" if (parenthesized_expression "((param_2 != (long *)0x0) && (bVar20))" ( (binary_expression "(param_2 != (long *)0x0) && (bVar20)" (parenthesized_expression "(param_2 != (long *)0x0)" ( (binary_expression "param_2 != (long *)0x0" identifier != (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) )) && (parenthesized_expression "(bVar20)" ( identifier ))) )) (compound_statement "{\n      if ((char *)param_2[2] < (char *)param_2[3]) {\n        cVar4 = *(char *)param_2[2];\n      }\n      else {\n        iVar10 = (**(code **)(*param_2 + 0x48))(param_2);\n        cVar4 = -1;\n        if (iVar10 == -1) {\n          param_2 = (long *)0x0;\n        }\n        else {\n          cVar4 = (char)iVar10;\n        }\n      }\n    }" { (if_statement "if ((char *)param_2[2] < (char *)param_2[3]) {\n        cVar4 = *(char *)param_2[2];\n      }\n      else {\n        iVar10 = (**(code **)(*param_2 + 0x48))(param_2);\n        cVar4 = -1;\n        if (iVar10 == -1) {\n          param_2 = (long *)0x0;\n        }\n        else {\n          cVar4 = (char)iVar10;\n        }\n      }" if (parenthesized_expression "((char *)param_2[2] < (char *)param_2[3])" ( (binary_expression "(char *)param_2[2] < (char *)param_2[3]" (cast_expression "(char *)param_2[2]" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_2[2]" identifier [ number_literal ])) < (cast_expression "(char *)param_2[3]" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_2[3]" identifier [ number_literal ]))) )) (compound_statement "{\n        cVar4 = *(char *)param_2[2];\n      }" { (expression_statement "cVar4 = *(char *)param_2[2];" (assignment_expression "cVar4 = *(char *)param_2[2]" identifier = (pointer_expression "*(char *)param_2[2]" * (cast_expression "(char *)param_2[2]" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_2[2]" identifier [ number_literal ])))) ;) }) (else_clause "else {\n        iVar10 = (**(code **)(*param_2 + 0x48))(param_2);\n        cVar4 = -1;\n        if (iVar10 == -1) {\n          param_2 = (long *)0x0;\n        }\n        else {\n          cVar4 = (char)iVar10;\n        }\n      }" else (compound_statement "{\n        iVar10 = (**(code **)(*param_2 + 0x48))(param_2);\n        cVar4 = -1;\n        if (iVar10 == -1) {\n          param_2 = (long *)0x0;\n        }\n        else {\n          cVar4 = (char)iVar10;\n        }\n      }" { (expression_statement "iVar10 = (**(code **)(*param_2 + 0x48))(param_2);" (assignment_expression "iVar10 = (**(code **)(*param_2 + 0x48))(param_2)" identifier = (call_expression "(**(code **)(*param_2 + 0x48))(param_2)" (parenthesized_expression "(**(code **)(*param_2 + 0x48))" ( (pointer_expression "**(code **)(*param_2 + 0x48)" * (pointer_expression "*(code **)(*param_2 + 0x48)" * (cast_expression "(code **)(*param_2 + 0x48)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*param_2 + 0x48)" ( (binary_expression "*param_2 + 0x48" (pointer_expression "*param_2" * identifier) + number_literal) ))))) )) (argument_list "(param_2)" ( identifier )))) ;) (expression_statement "cVar4 = -1;" (assignment_expression "cVar4 = -1" identifier = number_literal) ;) (if_statement "if (iVar10 == -1) {\n          param_2 = (long *)0x0;\n        }\n        else {\n          cVar4 = (char)iVar10;\n        }" if (parenthesized_expression "(iVar10 == -1)" ( (binary_expression "iVar10 == -1" identifier == number_literal) )) (compound_statement "{\n          param_2 = (long *)0x0;\n        }" { (expression_statement "param_2 = (long *)0x0;" (assignment_expression "param_2 = (long *)0x0" identifier = (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) ;) }) (else_clause "else {\n          cVar4 = (char)iVar10;\n        }" else (compound_statement "{\n          cVar4 = (char)iVar10;\n        }" { (expression_statement "cVar4 = (char)iVar10;" (assignment_expression "cVar4 = (char)iVar10" identifier = (cast_expression "(char)iVar10" ( (type_descriptor "char" primitive_type) ) identifier)) ;) }))) }))) })) (expression_statement "cVar4 = (**(code **)(*plVar11 + 0x20))(plVar11,(int)cVar4);" (assignment_expression "cVar4 = (**(code **)(*plVar11 + 0x20))(plVar11,(int)cVar4)" identifier = (call_expression "(**(code **)(*plVar11 + 0x20))(plVar11,(int)cVar4)" (parenthesized_expression "(**(code **)(*plVar11 + 0x20))" ( (pointer_expression "**(code **)(*plVar11 + 0x20)" * (pointer_expression "*(code **)(*plVar11 + 0x20)" * (cast_expression "(code **)(*plVar11 + 0x20)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*plVar11 + 0x20)" ( (binary_expression "*plVar11 + 0x20" (pointer_expression "*plVar11" * identifier) + number_literal) ))))) )) (argument_list "(plVar11,(int)cVar4)" ( identifier , (cast_expression "(int)cVar4" ( (type_descriptor "int" primitive_type) ) identifier) )))) ;) (expression_statement "cVar5 = (**(code **)(*plVar11 + 0x20))(plVar11,(int)(char)*param_9);" (assignment_expression "cVar5 = (**(code **)(*plVar11 + 0x20))(plVar11,(int)(char)*param_9)" identifier = (call_expression "(**(code **)(*plVar11 + 0x20))(plVar11,(int)(char)*param_9)" (parenthesized_expression "(**(code **)(*plVar11 + 0x20))" ( (pointer_expression "**(code **)(*plVar11 + 0x20)" * (pointer_expression "*(code **)(*plVar11 + 0x20)" * (cast_expression "(code **)(*plVar11 + 0x20)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*plVar11 + 0x20)" ( (binary_expression "*plVar11 + 0x20" (pointer_expression "*plVar11" * identifier) + number_literal) ))))) )) (argument_list "(plVar11,(int)(char)*param_9)" ( identifier , (cast_expression "(int)(char)*param_9" ( (type_descriptor "int" primitive_type) ) (cast_expression "(char)*param_9" ( (type_descriptor "char" primitive_type) ) (pointer_expression "*param_9" * identifier))) )))) ;) (if_statement "if (cVar5 != cVar4) {\n      if ((param_2 != (long *)0x0) && (bVar20)) {\n        if ((char *)param_2[2] < (char *)param_2[3]) {\n          cVar6 = *(char *)param_2[2];\n        }\n        else {\n          iVar10 = (**(code **)(*param_2 + 0x48))(param_2);\n          cVar6 = -1;\n          if (iVar10 == -1) {\n            param_2 = (long *)0x0;\n          }\n          else {\n            cVar6 = (char)iVar10;\n          }\n        }\n      }\n      cVar6 = (**(code **)(*plVar11 + 0x10))(plVar11,(int)cVar6);\n      cVar4 = (**(code **)(*plVar11 + 0x10))(plVar11,(int)(char)*param_9);\n      if (cVar4 != cVar6) goto LAB_00296748;\n    }" if (parenthesized_expression "(cVar5 != cVar4)" ( (binary_expression "cVar5 != cVar4" identifier != identifier) )) (compound_statement "{\n      if ((param_2 != (long *)0x0) && (bVar20)) {\n        if ((char *)param_2[2] < (char *)param_2[3]) {\n          cVar6 = *(char *)param_2[2];\n        }\n        else {\n          iVar10 = (**(code **)(*param_2 + 0x48))(param_2);\n          cVar6 = -1;\n          if (iVar10 == -1) {\n            param_2 = (long *)0x0;\n          }\n          else {\n            cVar6 = (char)iVar10;\n          }\n        }\n      }\n      cVar6 = (**(code **)(*plVar11 + 0x10))(plVar11,(int)cVar6);\n      cVar4 = (**(code **)(*plVar11 + 0x10))(plVar11,(int)(char)*param_9);\n      if (cVar4 != cVar6) goto LAB_00296748;\n    }" { (if_statement "if ((param_2 != (long *)0x0) && (bVar20)) {\n        if ((char *)param_2[2] < (char *)param_2[3]) {\n          cVar6 = *(char *)param_2[2];\n        }\n        else {\n          iVar10 = (**(code **)(*param_2 + 0x48))(param_2);\n          cVar6 = -1;\n          if (iVar10 == -1) {\n            param_2 = (long *)0x0;\n          }\n          else {\n            cVar6 = (char)iVar10;\n          }\n        }\n      }" if (parenthesized_expression "((param_2 != (long *)0x0) && (bVar20))" ( (binary_expression "(param_2 != (long *)0x0) && (bVar20)" (parenthesized_expression "(param_2 != (long *)0x0)" ( (binary_expression "param_2 != (long *)0x0" identifier != (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) )) && (parenthesized_expression "(bVar20)" ( identifier ))) )) (compound_statement "{\n        if ((char *)param_2[2] < (char *)param_2[3]) {\n          cVar6 = *(char *)param_2[2];\n        }\n        else {\n          iVar10 = (**(code **)(*param_2 + 0x48))(param_2);\n          cVar6 = -1;\n          if (iVar10 == -1) {\n            param_2 = (long *)0x0;\n          }\n          else {\n            cVar6 = (char)iVar10;\n          }\n        }\n      }" { (if_statement "if ((char *)param_2[2] < (char *)param_2[3]) {\n          cVar6 = *(char *)param_2[2];\n        }\n        else {\n          iVar10 = (**(code **)(*param_2 + 0x48))(param_2);\n          cVar6 = -1;\n          if (iVar10 == -1) {\n            param_2 = (long *)0x0;\n          }\n          else {\n            cVar6 = (char)iVar10;\n          }\n        }" if (parenthesized_expression "((char *)param_2[2] < (char *)param_2[3])" ( (binary_expression "(char *)param_2[2] < (char *)param_2[3]" (cast_expression "(char *)param_2[2]" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_2[2]" identifier [ number_literal ])) < (cast_expression "(char *)param_2[3]" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_2[3]" identifier [ number_literal ]))) )) (compound_statement "{\n          cVar6 = *(char *)param_2[2];\n        }" { (expression_statement "cVar6 = *(char *)param_2[2];" (assignment_expression "cVar6 = *(char *)param_2[2]" identifier = (pointer_expression "*(char *)param_2[2]" * (cast_expression "(char *)param_2[2]" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_2[2]" identifier [ number_literal ])))) ;) }) (else_clause "else {\n          iVar10 = (**(code **)(*param_2 + 0x48))(param_2);\n          cVar6 = -1;\n          if (iVar10 == -1) {\n            param_2 = (long *)0x0;\n          }\n          else {\n            cVar6 = (char)iVar10;\n          }\n        }" else (compound_statement "{\n          iVar10 = (**(code **)(*param_2 + 0x48))(param_2);\n          cVar6 = -1;\n          if (iVar10 == -1) {\n            param_2 = (long *)0x0;\n          }\n          else {\n            cVar6 = (char)iVar10;\n          }\n        }" { (expression_statement "iVar10 = (**(code **)(*param_2 + 0x48))(param_2);" (assignment_expression "iVar10 = (**(code **)(*param_2 + 0x48))(param_2)" identifier = (call_expression "(**(code **)(*param_2 + 0x48))(param_2)" (parenthesized_expression "(**(code **)(*param_2 + 0x48))" ( (pointer_expression "**(code **)(*param_2 + 0x48)" * (pointer_expression "*(code **)(*param_2 + 0x48)" * (cast_expression "(code **)(*param_2 + 0x48)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*param_2 + 0x48)" ( (binary_expression "*param_2 + 0x48" (pointer_expression "*param_2" * identifier) + number_literal) ))))) )) (argument_list "(param_2)" ( identifier )))) ;) (expression_statement "cVar6 = -1;" (assignment_expression "cVar6 = -1" identifier = number_literal) ;) (if_statement "if (iVar10 == -1) {\n            param_2 = (long *)0x0;\n          }\n          else {\n            cVar6 = (char)iVar10;\n          }" if (parenthesized_expression "(iVar10 == -1)" ( (binary_expression "iVar10 == -1" identifier == number_literal) )) (compound_statement "{\n            param_2 = (long *)0x0;\n          }" { (expression_statement "param_2 = (long *)0x0;" (assignment_expression "param_2 = (long *)0x0" identifier = (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) ;) }) (else_clause "else {\n            cVar6 = (char)iVar10;\n          }" else (compound_statement "{\n            cVar6 = (char)iVar10;\n          }" { (expression_statement "cVar6 = (char)iVar10;" (assignment_expression "cVar6 = (char)iVar10" identifier = (cast_expression "(char)iVar10" ( (type_descriptor "char" primitive_type) ) identifier)) ;) }))) }))) })) (expression_statement "cVar6 = (**(code **)(*plVar11 + 0x10))(plVar11,(int)cVar6);" (assignment_expression "cVar6 = (**(code **)(*plVar11 + 0x10))(plVar11,(int)cVar6)" identifier = (call_expression "(**(code **)(*plVar11 + 0x10))(plVar11,(int)cVar6)" (parenthesized_expression "(**(code **)(*plVar11 + 0x10))" ( (pointer_expression "**(code **)(*plVar11 + 0x10)" * (pointer_expression "*(code **)(*plVar11 + 0x10)" * (cast_expression "(code **)(*plVar11 + 0x10)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*plVar11 + 0x10)" ( (binary_expression "*plVar11 + 0x10" (pointer_expression "*plVar11" * identifier) + number_literal) ))))) )) (argument_list "(plVar11,(int)cVar6)" ( identifier , (cast_expression "(int)cVar6" ( (type_descriptor "int" primitive_type) ) identifier) )))) ;) (expression_statement "cVar4 = (**(code **)(*plVar11 + 0x10))(plVar11,(int)(char)*param_9);" (assignment_expression "cVar4 = (**(code **)(*plVar11 + 0x10))(plVar11,(int)(char)*param_9)" identifier = (call_expression "(**(code **)(*plVar11 + 0x10))(plVar11,(int)(char)*param_9)" (parenthesized_expression "(**(code **)(*plVar11 + 0x10))" ( (pointer_expression "**(code **)(*plVar11 + 0x10)" * (pointer_expression "*(code **)(*plVar11 + 0x10)" * (cast_expression "(code **)(*plVar11 + 0x10)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*plVar11 + 0x10)" ( (binary_expression "*plVar11 + 0x10" (pointer_expression "*plVar11" * identifier) + number_literal) ))))) )) (argument_list "(plVar11,(int)(char)*param_9)" ( identifier , (cast_expression "(int)(char)*param_9" ( (type_descriptor "int" primitive_type) ) (cast_expression "(char)*param_9" ( (type_descriptor "char" primitive_type) ) (pointer_expression "*param_9" * identifier))) )))) ;) (if_statement "if (cVar4 != cVar6) goto LAB_00296748;" if (parenthesized_expression "(cVar4 != cVar6)" ( (binary_expression "cVar4 != cVar6" identifier != identifier) )) (goto_statement "goto LAB_00296748;" goto statement_identifier ;)) })) (if_statement "if ((ulong)param_2[2] < (ulong)param_2[3]) {\n      param_2[2] = param_2[2] + 1;\n    }\n    else {\n      (**(code **)(*param_2 + 0x50))(param_2);\n    }" if (parenthesized_expression "((ulong)param_2[2] < (ulong)param_2[3])" ( (binary_expression "(ulong)param_2[2] < (ulong)param_2[3]" (cast_expression "(ulong)param_2[2]" ( (type_descriptor "ulong" type_identifier) ) (subscript_expression "param_2[2]" identifier [ number_literal ])) < (cast_expression "(ulong)param_2[3]" ( (type_descriptor "ulong" type_identifier) ) (subscript_expression "param_2[3]" identifier [ number_literal ]))) )) (compound_statement "{\n      param_2[2] = param_2[2] + 1;\n    }" { (expression_statement "param_2[2] = param_2[2] + 1;" (assignment_expression "param_2[2] = param_2[2] + 1" (subscript_expression "param_2[2]" identifier [ number_literal ]) = (binary_expression "param_2[2] + 1" (subscript_expression "param_2[2]" identifier [ number_literal ]) + number_literal)) ;) }) (else_clause "else {\n      (**(code **)(*param_2 + 0x50))(param_2);\n    }" else (compound_statement "{\n      (**(code **)(*param_2 + 0x50))(param_2);\n    }" { (expression_statement "(**(code **)(*param_2 + 0x50))(param_2);" (call_expression "(**(code **)(*param_2 + 0x50))(param_2)" (parenthesized_expression "(**(code **)(*param_2 + 0x50))" ( (pointer_expression "**(code **)(*param_2 + 0x50)" * (pointer_expression "*(code **)(*param_2 + 0x50)" * (cast_expression "(code **)(*param_2 + 0x50)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*param_2 + 0x50)" ( (binary_expression "*param_2 + 0x50" (pointer_expression "*param_2" * identifier) + number_literal) ))))) )) (argument_list "(param_2)" ( identifier ))) ;) }))) (expression_statement "param_9 = param_9 + 1;" (assignment_expression "param_9 = param_9 + 1" identifier = (binary_expression "param_9 + 1" identifier + number_literal)) ;) (expression_statement "uVar16 = 0xffffffff;" (assignment_expression "uVar16 = 0xffffffff" identifier = number_literal) ;) (goto_statement "goto LAB_00295fe1;" goto statement_identifier ;) })) (labeled_statement "LAB_00296071:\n  if (bVar8 != 0x25) goto LAB_00295f20;" statement_identifier : (if_statement "if (bVar8 != 0x25) goto LAB_00295f20;" if (parenthesized_expression "(bVar8 != 0x25)" ( (binary_expression "bVar8 != 0x25" identifier != number_literal) )) (goto_statement "goto LAB_00295f20;" goto statement_identifier ;))) (expression_statement "pbVar18 = param_9 + 1;" (assignment_expression "pbVar18 = param_9 + 1" identifier = (binary_expression "param_9 + 1" identifier + number_literal)) ;) (if_statement "if (param_10 == pbVar18) {\nLAB_00296748:\n    *param_7 = 4;\n  }\n  else {\n    bVar1 = param_9[1];\n    bVar8 = *(byte *)((long)plVar11 + (ulong)bVar1 + 0x139);\n    if (bVar8 == 0) {\n      bVar8 = bVar1;\n      if (*(code **)(*plVar11 + 0x40) != (code *)PTR_FUN_003bdd10) {\n        bVar8 = (**(code **)(*plVar11 + 0x40))(plVar11,(int)(char)bVar1,0);\n      }\n      bVar9 = bVar8;\n      if (bVar8 != 0) {\n        *(byte *)((long)plVar11 + (ulong)bVar1 + 0x139) = bVar8;\n        goto LAB_002960ca;\n      }\nLAB_0029655b:\n      bVar8 = 0;\n    }\n    else {\nLAB_002960ca:\n      if ((bVar8 != 0x45) && (bVar9 = bVar8, bVar8 != 0x4f)) goto LAB_0029655b;\n      pbVar18 = param_9 + 2;\n      if (param_10 == pbVar18) goto LAB_00296748;\n      bVar1 = param_9[2];\n      bVar9 = *(byte *)((long)plVar11 + (ulong)bVar1 + 0x139);\n      if (bVar9 == 0) {\n        bVar9 = bVar1;\n        if (*(code **)(*plVar11 + 0x40) != (code *)PTR_FUN_003bdd10) {\n          bVar9 = (**(code **)(*plVar11 + 0x40))(plVar11,(int)(char)bVar1,0);\n        }\n        if (bVar9 != 0) {\n          *(byte *)((long)plVar11 + (ulong)bVar1 + 0x139) = bVar9;\n        }\n      }\n    }\n    local_d0 = local_d0 & 0xffffffff00000000;\n    local_c8 = local_c8 & 0xffffffff00000000 | param_5 & 0xffffffff;\n    local_50 = local_d0 | uVar16;\n    local_58 = param_2;\n    local_48 = param_4;\n    local_40 = local_c8;\n    plVar12 = (long *)FUN_00288720(param_6 + 0xd0);\n    *param_7 = 0;\n    if ((char)plVar12[7] == '\0') {\n      FUN_002b5b80(plVar12);\n      uVar7 = 0x25;\n      if (*(code **)(*plVar12 + 0x30) != (code *)PTR_FUN_003bdfd8) {\n        uVar7 = (**(code **)(*plVar12 + 0x30))(plVar12,0x25);\n      }\n    }\n    else {\n      uVar7 = *(undefined1 *)((long)plVar12 + 0x5e);\n    }\n    if (bVar8 == 0) {\n      local_5a = 0;\n      local_5b = bVar9;\n    }\n    else {\n      local_59 = 0;\n      local_5b = bVar8;\n      local_5a = bVar9;\n    }\n    local_5c = uVar7;\n    auVar22 = FUN_0028dbd0(param_1,local_58,local_50,local_48,local_40,param_6,param_7,param_8,\n                           &local_5c);\n    local_58 = auVar22._0_8_;\n    local_50 = CONCAT44(local_50._4_4_,auVar22._8_4_);\n    cVar6 = FUN_0028d360(&local_58,&local_48);\n    if (cVar6 != '\0') {\n      *param_7 = *param_7 | 2;\n    }\n    uVar16 = local_50 & 0xffffffff;\n    param_9 = pbVar18 + 1;\n    param_2 = local_58;\n    if (param_10 != param_9) goto LAB_00295fef;\n  }" if (parenthesized_expression "(param_10 == pbVar18)" ( (binary_expression "param_10 == pbVar18" identifier == identifier) )) (compound_statement "{\nLAB_00296748:\n    *param_7 = 4;\n  }" { (labeled_statement "LAB_00296748:\n    *param_7 = 4;" statement_identifier : (expression_statement "*param_7 = 4;" (assignment_expression "*param_7 = 4" (pointer_expression "*param_7" * identifier) = number_literal) ;)) }) (else_clause "else {\n    bVar1 = param_9[1];\n    bVar8 = *(byte *)((long)plVar11 + (ulong)bVar1 + 0x139);\n    if (bVar8 == 0) {\n      bVar8 = bVar1;\n      if (*(code **)(*plVar11 + 0x40) != (code *)PTR_FUN_003bdd10) {\n        bVar8 = (**(code **)(*plVar11 + 0x40))(plVar11,(int)(char)bVar1,0);\n      }\n      bVar9 = bVar8;\n      if (bVar8 != 0) {\n        *(byte *)((long)plVar11 + (ulong)bVar1 + 0x139) = bVar8;\n        goto LAB_002960ca;\n      }\nLAB_0029655b:\n      bVar8 = 0;\n    }\n    else {\nLAB_002960ca:\n      if ((bVar8 != 0x45) && (bVar9 = bVar8, bVar8 != 0x4f)) goto LAB_0029655b;\n      pbVar18 = param_9 + 2;\n      if (param_10 == pbVar18) goto LAB_00296748;\n      bVar1 = param_9[2];\n      bVar9 = *(byte *)((long)plVar11 + (ulong)bVar1 + 0x139);\n      if (bVar9 == 0) {\n        bVar9 = bVar1;\n        if (*(code **)(*plVar11 + 0x40) != (code *)PTR_FUN_003bdd10) {\n          bVar9 = (**(code **)(*plVar11 + 0x40))(plVar11,(int)(char)bVar1,0);\n        }\n        if (bVar9 != 0) {\n          *(byte *)((long)plVar11 + (ulong)bVar1 + 0x139) = bVar9;\n        }\n      }\n    }\n    local_d0 = local_d0 & 0xffffffff00000000;\n    local_c8 = local_c8 & 0xffffffff00000000 | param_5 & 0xffffffff;\n    local_50 = local_d0 | uVar16;\n    local_58 = param_2;\n    local_48 = param_4;\n    local_40 = local_c8;\n    plVar12 = (long *)FUN_00288720(param_6 + 0xd0);\n    *param_7 = 0;\n    if ((char)plVar12[7] == '\0') {\n      FUN_002b5b80(plVar12);\n      uVar7 = 0x25;\n      if (*(code **)(*plVar12 + 0x30) != (code *)PTR_FUN_003bdfd8) {\n        uVar7 = (**(code **)(*plVar12 + 0x30))(plVar12,0x25);\n      }\n    }\n    else {\n      uVar7 = *(undefined1 *)((long)plVar12 + 0x5e);\n    }\n    if (bVar8 == 0) {\n      local_5a = 0;\n      local_5b = bVar9;\n    }\n    else {\n      local_59 = 0;\n      local_5b = bVar8;\n      local_5a = bVar9;\n    }\n    local_5c = uVar7;\n    auVar22 = FUN_0028dbd0(param_1,local_58,local_50,local_48,local_40,param_6,param_7,param_8,\n                           &local_5c);\n    local_58 = auVar22._0_8_;\n    local_50 = CONCAT44(local_50._4_4_,auVar22._8_4_);\n    cVar6 = FUN_0028d360(&local_58,&local_48);\n    if (cVar6 != '\0') {\n      *param_7 = *param_7 | 2;\n    }\n    uVar16 = local_50 & 0xffffffff;\n    param_9 = pbVar18 + 1;\n    param_2 = local_58;\n    if (param_10 != param_9) goto LAB_00295fef;\n  }" else (compound_statement "{\n    bVar1 = param_9[1];\n    bVar8 = *(byte *)((long)plVar11 + (ulong)bVar1 + 0x139);\n    if (bVar8 == 0) {\n      bVar8 = bVar1;\n      if (*(code **)(*plVar11 + 0x40) != (code *)PTR_FUN_003bdd10) {\n        bVar8 = (**(code **)(*plVar11 + 0x40))(plVar11,(int)(char)bVar1,0);\n      }\n      bVar9 = bVar8;\n      if (bVar8 != 0) {\n        *(byte *)((long)plVar11 + (ulong)bVar1 + 0x139) = bVar8;\n        goto LAB_002960ca;\n      }\nLAB_0029655b:\n      bVar8 = 0;\n    }\n    else {\nLAB_002960ca:\n      if ((bVar8 != 0x45) && (bVar9 = bVar8, bVar8 != 0x4f)) goto LAB_0029655b;\n      pbVar18 = param_9 + 2;\n      if (param_10 == pbVar18) goto LAB_00296748;\n      bVar1 = param_9[2];\n      bVar9 = *(byte *)((long)plVar11 + (ulong)bVar1 + 0x139);\n      if (bVar9 == 0) {\n        bVar9 = bVar1;\n        if (*(code **)(*plVar11 + 0x40) != (code *)PTR_FUN_003bdd10) {\n          bVar9 = (**(code **)(*plVar11 + 0x40))(plVar11,(int)(char)bVar1,0);\n        }\n        if (bVar9 != 0) {\n          *(byte *)((long)plVar11 + (ulong)bVar1 + 0x139) = bVar9;\n        }\n      }\n    }\n    local_d0 = local_d0 & 0xffffffff00000000;\n    local_c8 = local_c8 & 0xffffffff00000000 | param_5 & 0xffffffff;\n    local_50 = local_d0 | uVar16;\n    local_58 = param_2;\n    local_48 = param_4;\n    local_40 = local_c8;\n    plVar12 = (long *)FUN_00288720(param_6 + 0xd0);\n    *param_7 = 0;\n    if ((char)plVar12[7] == '\0') {\n      FUN_002b5b80(plVar12);\n      uVar7 = 0x25;\n      if (*(code **)(*plVar12 + 0x30) != (code *)PTR_FUN_003bdfd8) {\n        uVar7 = (**(code **)(*plVar12 + 0x30))(plVar12,0x25);\n      }\n    }\n    else {\n      uVar7 = *(undefined1 *)((long)plVar12 + 0x5e);\n    }\n    if (bVar8 == 0) {\n      local_5a = 0;\n      local_5b = bVar9;\n    }\n    else {\n      local_59 = 0;\n      local_5b = bVar8;\n      local_5a = bVar9;\n    }\n    local_5c = uVar7;\n    auVar22 = FUN_0028dbd0(param_1,local_58,local_50,local_48,local_40,param_6,param_7,param_8,\n                           &local_5c);\n    local_58 = auVar22._0_8_;\n    local_50 = CONCAT44(local_50._4_4_,auVar22._8_4_);\n    cVar6 = FUN_0028d360(&local_58,&local_48);\n    if (cVar6 != '\0') {\n      *param_7 = *param_7 | 2;\n    }\n    uVar16 = local_50 & 0xffffffff;\n    param_9 = pbVar18 + 1;\n    param_2 = local_58;\n    if (param_10 != param_9) goto LAB_00295fef;\n  }" { (expression_statement "bVar1 = param_9[1];" (assignment_expression "bVar1 = param_9[1]" identifier = (subscript_expression "param_9[1]" identifier [ number_literal ])) ;) (expression_statement "bVar8 = *(byte *)((long)plVar11 + (ulong)bVar1 + 0x139);" (assignment_expression "bVar8 = *(byte *)((long)plVar11 + (ulong)bVar1 + 0x139)" identifier = (pointer_expression "*(byte *)((long)plVar11 + (ulong)bVar1 + 0x139)" * (cast_expression "(byte *)((long)plVar11 + (ulong)bVar1 + 0x139)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)plVar11 + (ulong)bVar1 + 0x139)" ( (binary_expression "(long)plVar11 + (ulong)bVar1 + 0x139" (binary_expression "(long)plVar11 + (ulong)bVar1" (cast_expression "(long)plVar11" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + (cast_expression "(ulong)bVar1" ( (type_descriptor "ulong" type_identifier) ) identifier)) + number_literal) ))))) ;) (if_statement "if (bVar8 == 0) {\n      bVar8 = bVar1;\n      if (*(code **)(*plVar11 + 0x40) != (code *)PTR_FUN_003bdd10) {\n        bVar8 = (**(code **)(*plVar11 + 0x40))(plVar11,(int)(char)bVar1,0);\n      }\n      bVar9 = bVar8;\n      if (bVar8 != 0) {\n        *(byte *)((long)plVar11 + (ulong)bVar1 + 0x139) = bVar8;\n        goto LAB_002960ca;\n      }\nLAB_0029655b:\n      bVar8 = 0;\n    }\n    else {\nLAB_002960ca:\n      if ((bVar8 != 0x45) && (bVar9 = bVar8, bVar8 != 0x4f)) goto LAB_0029655b;\n      pbVar18 = param_9 + 2;\n      if (param_10 == pbVar18) goto LAB_00296748;\n      bVar1 = param_9[2];\n      bVar9 = *(byte *)((long)plVar11 + (ulong)bVar1 + 0x139);\n      if (bVar9 == 0) {\n        bVar9 = bVar1;\n        if (*(code **)(*plVar11 + 0x40) != (code *)PTR_FUN_003bdd10) {\n          bVar9 = (**(code **)(*plVar11 + 0x40))(plVar11,(int)(char)bVar1,0);\n        }\n        if (bVar9 != 0) {\n          *(byte *)((long)plVar11 + (ulong)bVar1 + 0x139) = bVar9;\n        }\n      }\n    }" if (parenthesized_expression "(bVar8 == 0)" ( (binary_expression "bVar8 == 0" identifier == number_literal) )) (compound_statement "{\n      bVar8 = bVar1;\n      if (*(code **)(*plVar11 + 0x40) != (code *)PTR_FUN_003bdd10) {\n        bVar8 = (**(code **)(*plVar11 + 0x40))(plVar11,(int)(char)bVar1,0);\n      }\n      bVar9 = bVar8;\n      if (bVar8 != 0) {\n        *(byte *)((long)plVar11 + (ulong)bVar1 + 0x139) = bVar8;\n        goto LAB_002960ca;\n      }\nLAB_0029655b:\n      bVar8 = 0;\n    }" { (expression_statement "bVar8 = bVar1;" (assignment_expression "bVar8 = bVar1" identifier = identifier) ;) (if_statement "if (*(code **)(*plVar11 + 0x40) != (code *)PTR_FUN_003bdd10) {\n        bVar8 = (**(code **)(*plVar11 + 0x40))(plVar11,(int)(char)bVar1,0);\n      }" if (parenthesized_expression "(*(code **)(*plVar11 + 0x40) != (code *)PTR_FUN_003bdd10)" ( (binary_expression "*(code **)(*plVar11 + 0x40) != (code *)PTR_FUN_003bdd10" (pointer_expression "*(code **)(*plVar11 + 0x40)" * (cast_expression "(code **)(*plVar11 + 0x40)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*plVar11 + 0x40)" ( (binary_expression "*plVar11 + 0x40" (pointer_expression "*plVar11" * identifier) + number_literal) )))) != (cast_expression "(code *)PTR_FUN_003bdd10" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (compound_statement "{\n        bVar8 = (**(code **)(*plVar11 + 0x40))(plVar11,(int)(char)bVar1,0);\n      }" { (expression_statement "bVar8 = (**(code **)(*plVar11 + 0x40))(plVar11,(int)(char)bVar1,0);" (assignment_expression "bVar8 = (**(code **)(*plVar11 + 0x40))(plVar11,(int)(char)bVar1,0)" identifier = (call_expression "(**(code **)(*plVar11 + 0x40))(plVar11,(int)(char)bVar1,0)" (parenthesized_expression "(**(code **)(*plVar11 + 0x40))" ( (pointer_expression "**(code **)(*plVar11 + 0x40)" * (pointer_expression "*(code **)(*plVar11 + 0x40)" * (cast_expression "(code **)(*plVar11 + 0x40)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*plVar11 + 0x40)" ( (binary_expression "*plVar11 + 0x40" (pointer_expression "*plVar11" * identifier) + number_literal) ))))) )) (argument_list "(plVar11,(int)(char)bVar1,0)" ( identifier , (cast_expression "(int)(char)bVar1" ( (type_descriptor "int" primitive_type) ) (cast_expression "(char)bVar1" ( (type_descriptor "char" primitive_type) ) identifier)) , number_literal )))) ;) })) (expression_statement "bVar9 = bVar8;" (assignment_expression "bVar9 = bVar8" identifier = identifier) ;) (if_statement "if (bVar8 != 0) {\n        *(byte *)((long)plVar11 + (ulong)bVar1 + 0x139) = bVar8;\n        goto LAB_002960ca;\n      }" if (parenthesized_expression "(bVar8 != 0)" ( (binary_expression "bVar8 != 0" identifier != number_literal) )) (compound_statement "{\n        *(byte *)((long)plVar11 + (ulong)bVar1 + 0x139) = bVar8;\n        goto LAB_002960ca;\n      }" { (expression_statement "*(byte *)((long)plVar11 + (ulong)bVar1 + 0x139) = bVar8;" (assignment_expression "*(byte *)((long)plVar11 + (ulong)bVar1 + 0x139) = bVar8" (pointer_expression "*(byte *)((long)plVar11 + (ulong)bVar1 + 0x139)" * (cast_expression "(byte *)((long)plVar11 + (ulong)bVar1 + 0x139)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)plVar11 + (ulong)bVar1 + 0x139)" ( (binary_expression "(long)plVar11 + (ulong)bVar1 + 0x139" (binary_expression "(long)plVar11 + (ulong)bVar1" (cast_expression "(long)plVar11" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + (cast_expression "(ulong)bVar1" ( (type_descriptor "ulong" type_identifier) ) identifier)) + number_literal) )))) = identifier) ;) (goto_statement "goto LAB_002960ca;" goto statement_identifier ;) })) (labeled_statement "LAB_0029655b:\n      bVar8 = 0;" statement_identifier : (expression_statement "bVar8 = 0;" (assignment_expression "bVar8 = 0" identifier = number_literal) ;)) }) (else_clause "else {\nLAB_002960ca:\n      if ((bVar8 != 0x45) && (bVar9 = bVar8, bVar8 != 0x4f)) goto LAB_0029655b;\n      pbVar18 = param_9 + 2;\n      if (param_10 == pbVar18) goto LAB_00296748;\n      bVar1 = param_9[2];\n      bVar9 = *(byte *)((long)plVar11 + (ulong)bVar1 + 0x139);\n      if (bVar9 == 0) {\n        bVar9 = bVar1;\n        if (*(code **)(*plVar11 + 0x40) != (code *)PTR_FUN_003bdd10) {\n          bVar9 = (**(code **)(*plVar11 + 0x40))(plVar11,(int)(char)bVar1,0);\n        }\n        if (bVar9 != 0) {\n          *(byte *)((long)plVar11 + (ulong)bVar1 + 0x139) = bVar9;\n        }\n      }\n    }" else (compound_statement "{\nLAB_002960ca:\n      if ((bVar8 != 0x45) && (bVar9 = bVar8, bVar8 != 0x4f)) goto LAB_0029655b;\n      pbVar18 = param_9 + 2;\n      if (param_10 == pbVar18) goto LAB_00296748;\n      bVar1 = param_9[2];\n      bVar9 = *(byte *)((long)plVar11 + (ulong)bVar1 + 0x139);\n      if (bVar9 == 0) {\n        bVar9 = bVar1;\n        if (*(code **)(*plVar11 + 0x40) != (code *)PTR_FUN_003bdd10) {\n          bVar9 = (**(code **)(*plVar11 + 0x40))(plVar11,(int)(char)bVar1,0);\n        }\n        if (bVar9 != 0) {\n          *(byte *)((long)plVar11 + (ulong)bVar1 + 0x139) = bVar9;\n        }\n      }\n    }" { (labeled_statement "LAB_002960ca:\n      if ((bVar8 != 0x45) && (bVar9 = bVar8, bVar8 != 0x4f)) goto LAB_0029655b;" statement_identifier : (if_statement "if ((bVar8 != 0x45) && (bVar9 = bVar8, bVar8 != 0x4f)) goto LAB_0029655b;" if (parenthesized_expression "((bVar8 != 0x45) && (bVar9 = bVar8, bVar8 != 0x4f))" ( (binary_expression "(bVar8 != 0x45) && (bVar9 = bVar8, bVar8 != 0x4f)" (parenthesized_expression "(bVar8 != 0x45)" ( (binary_expression "bVar8 != 0x45" identifier != number_literal) )) && (parenthesized_expression "(bVar9 = bVar8, bVar8 != 0x4f)" ( (comma_expression "bVar9 = bVar8, bVar8 != 0x4f" (assignment_expression "bVar9 = bVar8" identifier = identifier) , (binary_expression "bVar8 != 0x4f" identifier != number_literal)) ))) )) (goto_statement "goto LAB_0029655b;" goto statement_identifier ;))) (expression_statement "pbVar18 = param_9 + 2;" (assignment_expression "pbVar18 = param_9 + 2" identifier = (binary_expression "param_9 + 2" identifier + number_literal)) ;) (if_statement "if (param_10 == pbVar18) goto LAB_00296748;" if (parenthesized_expression "(param_10 == pbVar18)" ( (binary_expression "param_10 == pbVar18" identifier == identifier) )) (goto_statement "goto LAB_00296748;" goto statement_identifier ;)) (expression_statement "bVar1 = param_9[2];" (assignment_expression "bVar1 = param_9[2]" identifier = (subscript_expression "param_9[2]" identifier [ number_literal ])) ;) (expression_statement "bVar9 = *(byte *)((long)plVar11 + (ulong)bVar1 + 0x139);" (assignment_expression "bVar9 = *(byte *)((long)plVar11 + (ulong)bVar1 + 0x139)" identifier = (pointer_expression "*(byte *)((long)plVar11 + (ulong)bVar1 + 0x139)" * (cast_expression "(byte *)((long)plVar11 + (ulong)bVar1 + 0x139)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)plVar11 + (ulong)bVar1 + 0x139)" ( (binary_expression "(long)plVar11 + (ulong)bVar1 + 0x139" (binary_expression "(long)plVar11 + (ulong)bVar1" (cast_expression "(long)plVar11" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + (cast_expression "(ulong)bVar1" ( (type_descriptor "ulong" type_identifier) ) identifier)) + number_literal) ))))) ;) (if_statement "if (bVar9 == 0) {\n        bVar9 = bVar1;\n        if (*(code **)(*plVar11 + 0x40) != (code *)PTR_FUN_003bdd10) {\n          bVar9 = (**(code **)(*plVar11 + 0x40))(plVar11,(int)(char)bVar1,0);\n        }\n        if (bVar9 != 0) {\n          *(byte *)((long)plVar11 + (ulong)bVar1 + 0x139) = bVar9;\n        }\n      }" if (parenthesized_expression "(bVar9 == 0)" ( (binary_expression "bVar9 == 0" identifier == number_literal) )) (compound_statement "{\n        bVar9 = bVar1;\n        if (*(code **)(*plVar11 + 0x40) != (code *)PTR_FUN_003bdd10) {\n          bVar9 = (**(code **)(*plVar11 + 0x40))(plVar11,(int)(char)bVar1,0);\n        }\n        if (bVar9 != 0) {\n          *(byte *)((long)plVar11 + (ulong)bVar1 + 0x139) = bVar9;\n        }\n      }" { (expression_statement "bVar9 = bVar1;" (assignment_expression "bVar9 = bVar1" identifier = identifier) ;) (if_statement "if (*(code **)(*plVar11 + 0x40) != (code *)PTR_FUN_003bdd10) {\n          bVar9 = (**(code **)(*plVar11 + 0x40))(plVar11,(int)(char)bVar1,0);\n        }" if (parenthesized_expression "(*(code **)(*plVar11 + 0x40) != (code *)PTR_FUN_003bdd10)" ( (binary_expression "*(code **)(*plVar11 + 0x40) != (code *)PTR_FUN_003bdd10" (pointer_expression "*(code **)(*plVar11 + 0x40)" * (cast_expression "(code **)(*plVar11 + 0x40)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*plVar11 + 0x40)" ( (binary_expression "*plVar11 + 0x40" (pointer_expression "*plVar11" * identifier) + number_literal) )))) != (cast_expression "(code *)PTR_FUN_003bdd10" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (compound_statement "{\n          bVar9 = (**(code **)(*plVar11 + 0x40))(plVar11,(int)(char)bVar1,0);\n        }" { (expression_statement "bVar9 = (**(code **)(*plVar11 + 0x40))(plVar11,(int)(char)bVar1,0);" (assignment_expression "bVar9 = (**(code **)(*plVar11 + 0x40))(plVar11,(int)(char)bVar1,0)" identifier = (call_expression "(**(code **)(*plVar11 + 0x40))(plVar11,(int)(char)bVar1,0)" (parenthesized_expression "(**(code **)(*plVar11 + 0x40))" ( (pointer_expression "**(code **)(*plVar11 + 0x40)" * (pointer_expression "*(code **)(*plVar11 + 0x40)" * (cast_expression "(code **)(*plVar11 + 0x40)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*plVar11 + 0x40)" ( (binary_expression "*plVar11 + 0x40" (pointer_expression "*plVar11" * identifier) + number_literal) ))))) )) (argument_list "(plVar11,(int)(char)bVar1,0)" ( identifier , (cast_expression "(int)(char)bVar1" ( (type_descriptor "int" primitive_type) ) (cast_expression "(char)bVar1" ( (type_descriptor "char" primitive_type) ) identifier)) , number_literal )))) ;) })) (if_statement "if (bVar9 != 0) {\n          *(byte *)((long)plVar11 + (ulong)bVar1 + 0x139) = bVar9;\n        }" if (parenthesized_expression "(bVar9 != 0)" ( (binary_expression "bVar9 != 0" identifier != number_literal) )) (compound_statement "{\n          *(byte *)((long)plVar11 + (ulong)bVar1 + 0x139) = bVar9;\n        }" { (expression_statement "*(byte *)((long)plVar11 + (ulong)bVar1 + 0x139) = bVar9;" (assignment_expression "*(byte *)((long)plVar11 + (ulong)bVar1 + 0x139) = bVar9" (pointer_expression "*(byte *)((long)plVar11 + (ulong)bVar1 + 0x139)" * (cast_expression "(byte *)((long)plVar11 + (ulong)bVar1 + 0x139)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)plVar11 + (ulong)bVar1 + 0x139)" ( (binary_expression "(long)plVar11 + (ulong)bVar1 + 0x139" (binary_expression "(long)plVar11 + (ulong)bVar1" (cast_expression "(long)plVar11" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + (cast_expression "(ulong)bVar1" ( (type_descriptor "ulong" type_identifier) ) identifier)) + number_literal) )))) = identifier) ;) })) })) }))) (expression_statement "local_d0 = local_d0 & 0xffffffff00000000;" (assignment_expression "local_d0 = local_d0 & 0xffffffff00000000" identifier = (binary_expression "local_d0 & 0xffffffff00000000" identifier & number_literal)) ;) (expression_statement "local_c8 = local_c8 & 0xffffffff00000000 | param_5 & 0xffffffff;" (assignment_expression "local_c8 = local_c8 & 0xffffffff00000000 | param_5 & 0xffffffff" identifier = (binary_expression "local_c8 & 0xffffffff00000000 | param_5 & 0xffffffff" (binary_expression "local_c8 & 0xffffffff00000000" identifier & number_literal) | (binary_expression "param_5 & 0xffffffff" identifier & number_literal))) ;) (expression_statement "local_50 = local_d0 | uVar16;" (assignment_expression "local_50 = local_d0 | uVar16" identifier = (binary_expression "local_d0 | uVar16" identifier | identifier)) ;) (expression_statement "local_58 = param_2;" (assignment_expression "local_58 = param_2" identifier = identifier) ;) (expression_statement "local_48 = param_4;" (assignment_expression "local_48 = param_4" identifier = identifier) ;) (expression_statement "local_40 = local_c8;" (assignment_expression "local_40 = local_c8" identifier = identifier) ;) (expression_statement "plVar12 = (long *)FUN_00288720(param_6 + 0xd0);" (assignment_expression "plVar12 = (long *)FUN_00288720(param_6 + 0xd0)" identifier = (cast_expression "(long *)FUN_00288720(param_6 + 0xd0)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00288720(param_6 + 0xd0)" identifier (argument_list "(param_6 + 0xd0)" ( (binary_expression "param_6 + 0xd0" identifier + number_literal) ))))) ;) (expression_statement "*param_7 = 0;" (assignment_expression "*param_7 = 0" (pointer_expression "*param_7" * identifier) = number_literal) ;) (if_statement "if ((char)plVar12[7] == '\0') {\n      FUN_002b5b80(plVar12);\n      uVar7 = 0x25;\n      if (*(code **)(*plVar12 + 0x30) != (code *)PTR_FUN_003bdfd8) {\n        uVar7 = (**(code **)(*plVar12 + 0x30))(plVar12,0x25);\n      }\n    }\n    else {\n      uVar7 = *(undefined1 *)((long)plVar12 + 0x5e);\n    }" if (parenthesized_expression "((char)plVar12[7] == '\0')" ( (binary_expression "(char)plVar12[7] == '\0'" (cast_expression "(char)plVar12[7]" ( (type_descriptor "char" primitive_type) ) (subscript_expression "plVar12[7]" identifier [ number_literal ])) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n      FUN_002b5b80(plVar12);\n      uVar7 = 0x25;\n      if (*(code **)(*plVar12 + 0x30) != (code *)PTR_FUN_003bdfd8) {\n        uVar7 = (**(code **)(*plVar12 + 0x30))(plVar12,0x25);\n      }\n    }" { (expression_statement "FUN_002b5b80(plVar12);" (call_expression "FUN_002b5b80(plVar12)" identifier (argument_list "(plVar12)" ( identifier ))) ;) (expression_statement "uVar7 = 0x25;" (assignment_expression "uVar7 = 0x25" identifier = number_literal) ;) (if_statement "if (*(code **)(*plVar12 + 0x30) != (code *)PTR_FUN_003bdfd8) {\n        uVar7 = (**(code **)(*plVar12 + 0x30))(plVar12,0x25);\n      }" if (parenthesized_expression "(*(code **)(*plVar12 + 0x30) != (code *)PTR_FUN_003bdfd8)" ( (binary_expression "*(code **)(*plVar12 + 0x30) != (code *)PTR_FUN_003bdfd8" (pointer_expression "*(code **)(*plVar12 + 0x30)" * (cast_expression "(code **)(*plVar12 + 0x30)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*plVar12 + 0x30)" ( (binary_expression "*plVar12 + 0x30" (pointer_expression "*plVar12" * identifier) + number_literal) )))) != (cast_expression "(code *)PTR_FUN_003bdfd8" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (compound_statement "{\n        uVar7 = (**(code **)(*plVar12 + 0x30))(plVar12,0x25);\n      }" { (expression_statement "uVar7 = (**(code **)(*plVar12 + 0x30))(plVar12,0x25);" (assignment_expression "uVar7 = (**(code **)(*plVar12 + 0x30))(plVar12,0x25)" identifier = (call_expression "(**(code **)(*plVar12 + 0x30))(plVar12,0x25)" (parenthesized_expression "(**(code **)(*plVar12 + 0x30))" ( (pointer_expression "**(code **)(*plVar12 + 0x30)" * (pointer_expression "*(code **)(*plVar12 + 0x30)" * (cast_expression "(code **)(*plVar12 + 0x30)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*plVar12 + 0x30)" ( (binary_expression "*plVar12 + 0x30" (pointer_expression "*plVar12" * identifier) + number_literal) ))))) )) (argument_list "(plVar12,0x25)" ( identifier , number_literal )))) ;) })) }) (else_clause "else {\n      uVar7 = *(undefined1 *)((long)plVar12 + 0x5e);\n    }" else (compound_statement "{\n      uVar7 = *(undefined1 *)((long)plVar12 + 0x5e);\n    }" { (expression_statement "uVar7 = *(undefined1 *)((long)plVar12 + 0x5e);" (assignment_expression "uVar7 = *(undefined1 *)((long)plVar12 + 0x5e)" identifier = (pointer_expression "*(undefined1 *)((long)plVar12 + 0x5e)" * (cast_expression "(undefined1 *)((long)plVar12 + 0x5e)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)plVar12 + 0x5e)" ( (binary_expression "(long)plVar12 + 0x5e" (cast_expression "(long)plVar12" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) ))))) ;) }))) (if_statement "if (bVar8 == 0) {\n      local_5a = 0;\n      local_5b = bVar9;\n    }\n    else {\n      local_59 = 0;\n      local_5b = bVar8;\n      local_5a = bVar9;\n    }" if (parenthesized_expression "(bVar8 == 0)" ( (binary_expression "bVar8 == 0" identifier == number_literal) )) (compound_statement "{\n      local_5a = 0;\n      local_5b = bVar9;\n    }" { (expression_statement "local_5a = 0;" (assignment_expression "local_5a = 0" identifier = number_literal) ;) (expression_statement "local_5b = bVar9;" (assignment_expression "local_5b = bVar9" identifier = identifier) ;) }) (else_clause "else {\n      local_59 = 0;\n      local_5b = bVar8;\n      local_5a = bVar9;\n    }" else (compound_statement "{\n      local_59 = 0;\n      local_5b = bVar8;\n      local_5a = bVar9;\n    }" { (expression_statement "local_59 = 0;" (assignment_expression "local_59 = 0" identifier = number_literal) ;) (expression_statement "local_5b = bVar8;" (assignment_expression "local_5b = bVar8" identifier = identifier) ;) (expression_statement "local_5a = bVar9;" (assignment_expression "local_5a = bVar9" identifier = identifier) ;) }))) (expression_statement "local_5c = uVar7;" (assignment_expression "local_5c = uVar7" identifier = identifier) ;) (expression_statement "auVar22 = FUN_0028dbd0(param_1,local_58,local_50,local_48,local_40,param_6,param_7,param_8,\n                           &local_5c);" (assignment_expression "auVar22 = FUN_0028dbd0(param_1,local_58,local_50,local_48,local_40,param_6,param_7,param_8,\n                           &local_5c)" identifier = (call_expression "FUN_0028dbd0(param_1,local_58,local_50,local_48,local_40,param_6,param_7,param_8,\n                           &local_5c)" identifier (argument_list "(param_1,local_58,local_50,local_48,local_40,param_6,param_7,param_8,\n                           &local_5c)" ( identifier , identifier , identifier , identifier , identifier , identifier , identifier , identifier , (pointer_expression "&local_5c" & identifier) )))) ;) (expression_statement "local_58 = auVar22._0_8_;" (assignment_expression "local_58 = auVar22._0_8_" identifier = (field_expression "auVar22._0_8_" identifier . field_identifier)) ;) (expression_statement "local_50 = CONCAT44(local_50._4_4_,auVar22._8_4_);" (assignment_expression "local_50 = CONCAT44(local_50._4_4_,auVar22._8_4_)" identifier = (call_expression "CONCAT44(local_50._4_4_,auVar22._8_4_)" identifier (argument_list "(local_50._4_4_,auVar22._8_4_)" ( (field_expression "local_50._4_4_" identifier . field_identifier) , (field_expression "auVar22._8_4_" identifier . field_identifier) )))) ;) (expression_statement "cVar6 = FUN_0028d360(&local_58,&local_48);" (assignment_expression "cVar6 = FUN_0028d360(&local_58,&local_48)" identifier = (call_expression "FUN_0028d360(&local_58,&local_48)" identifier (argument_list "(&local_58,&local_48)" ( (pointer_expression "&local_58" & identifier) , (pointer_expression "&local_48" & identifier) )))) ;) (if_statement "if (cVar6 != '\0') {\n      *param_7 = *param_7 | 2;\n    }" if (parenthesized_expression "(cVar6 != '\0')" ( (binary_expression "cVar6 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n      *param_7 = *param_7 | 2;\n    }" { (expression_statement "*param_7 = *param_7 | 2;" (assignment_expression "*param_7 = *param_7 | 2" (pointer_expression "*param_7" * identifier) = (binary_expression "*param_7 | 2" (pointer_expression "*param_7" * identifier) | number_literal)) ;) })) (expression_statement "uVar16 = local_50 & 0xffffffff;" (assignment_expression "uVar16 = local_50 & 0xffffffff" identifier = (binary_expression "local_50 & 0xffffffff" identifier & number_literal)) ;) (expression_statement "param_9 = pbVar18 + 1;" (assignment_expression "param_9 = pbVar18 + 1" identifier = (binary_expression "pbVar18 + 1" identifier + number_literal)) ;) (expression_statement "param_2 = local_58;" (assignment_expression "param_2 = local_58" identifier = identifier) ;) (if_statement "if (param_10 != param_9) goto LAB_00295fef;" if (parenthesized_expression "(param_10 != param_9)" ( (binary_expression "param_10 != param_9" identifier != identifier) )) (goto_statement "goto LAB_00295fef;" goto statement_identifier ;)) }))) (goto_statement "goto LAB_002962c3;" goto statement_identifier ;) (labeled_statement "code_r0x00296430:\n  uVar16 = 0xffffffff;" statement_identifier : (expression_statement "uVar16 = 0xffffffff;" (assignment_expression "uVar16 = 0xffffffff" identifier = number_literal) ;)) (labeled_statement "LAB_00295fe1:\n  if (param_10 == param_9) goto LAB_002962c3;" statement_identifier : (if_statement "if (param_10 == param_9) goto LAB_002962c3;" if (parenthesized_expression "(param_10 == param_9)" ( (binary_expression "param_10 == param_9" identifier == identifier) )) (goto_statement "goto LAB_002962c3;" goto statement_identifier ;))) (labeled_statement "LAB_00295fef:\n  if (*param_7 != 0) goto LAB_002962c3;" statement_identifier : (if_statement "if (*param_7 != 0) goto LAB_002962c3;" if (parenthesized_expression "(*param_7 != 0)" ( (binary_expression "*param_7 != 0" (pointer_expression "*param_7" * identifier) != number_literal) )) (goto_statement "goto LAB_002962c3;" goto statement_identifier ;))) (goto_statement "goto LAB_00296001;" goto statement_identifier ;) (ERROR "}" }))
(translation_unit "/* std::time_get<char, std::istreambuf_iterator<char, std::char_traits<char> >\n   >::get(std::istreambuf_iterator<char, std::char_traits<char> >, std::istreambuf_iterator<char,\n   std::char_traits<char> >, std::ios_base&, std::_Ios_Iostate&, tm*, char const*, char const*)\n   const */\n\nundefined1  [16]\nstd::time_get<char,std::istreambuf_iterator<char,std::char_traits<char>>>::get\n          (undefined8 param_1,long *param_2,ulong param_3,long *param_4,ulong param_5,long param_6,\n          uint *param_7,undefined8 param_8,ctype *param_9,ctype *param_10)\n\n{\n  byte bVar1;\n  long lVar2;\n  char cVar3;\n  char cVar4;\n  char cVar5;\n  ctype cVar6;\n  ctype cVar7;\n  ctype cVar8;\n  int iVar9;\n  ctype *pcVar10;\n  ctype *pcVar11;\n  byte *pbVar12;\n  ulong uVar13;\n  bool bVar14;\n  bool bVar15;\n  ulong uVar16;\n  bool bVar17;\n  ctype *pcVar18;\n  bool bVar19;\n  bool bVar20;\n  undefined1 auVar21 [16];\n  undefined1 auVar22 [12];\n  ulong local_d0;\n  ulong local_c8;\n  ctype local_5c;\n  ctype local_5b;\n  ctype local_5a;\n  undefined1 local_59;\n  long *local_58;\n  ulong local_50;\n  long *local_48;\n  ulong local_40;\n  \n  pcVar10 = use_facet<std::ctype<char>>((locale *)(param_6 + 0xd0));\n  uVar16 = param_3 & 0xffffffff;\n  *param_7 = 0;\n  local_d0 = param_3;\n  if (param_9 == param_10) {\nLAB_002962c3:\n    auVar21._8_8_ = uVar16 | local_d0 & 0xffffffff00000000;\n    auVar21._0_8_ = param_2;\n    return auVar21;\n  }\n  bVar19 = (int)param_5 == -1;\n  local_c8 = param_5;\nLAB_00296001:\n  bVar20 = (int)uVar16 == -1;\n  bVar17 = param_2 != (long *)0x0 && bVar20;\n  bVar15 = bVar20;\n  if (bVar17) {\n    if ((ulong)param_2[2] < (ulong)param_2[3]) {\n      bVar15 = false;\n    }\n    else {\n      iVar9 = (**(code **)(*param_2 + 0x48))(param_2);\n      bVar15 = iVar9 == -1 && bVar17;\n      if (iVar9 == -1) {\n        param_2 = (long *)0x0;\n      }\n    }\n  }\n  bVar14 = param_4 != (long *)0x0 && bVar19;\n  bVar17 = bVar19;\n  if (bVar14) {\n    if ((ulong)param_4[3] <= (ulong)param_4[2]) {\n      iVar9 = (**(code **)(*param_4 + 0x48))(param_4);\n      if (iVar9 == -1) {\n        param_4 = (long *)0x0;\n      }\n      bVar17 = iVar9 == -1 && bVar14;\n      goto LAB_0029602d;\n    }\n    if (bVar15 == false) goto LAB_00296469;\n  }\n  else {\nLAB_0029602d:\n    if (bVar17 == bVar15) {\nLAB_00296469:\n      *param_7 = 6;\n      goto LAB_002962c3;\n    }\n  }\n  cVar6 = *param_9;\n  cVar7 = pcVar10[(ulong)(byte)cVar6 + 0x139];\n  if (cVar7 == (ctype)0x0) {\n    cVar7 = cVar6;\n    if (*(code **)(*(long *)pcVar10 + 0x40) != (code *)PTR_do_narrow_003bdd10) {\n      cVar7 = (ctype)(**(code **)(*(long *)pcVar10 + 0x40))(pcVar10,(int)(char)cVar6,0);\n    }\n    if (cVar7 != (ctype)0x0) {\n      pcVar10[(ulong)(byte)cVar6 + 0x139] = cVar7;\n      goto LAB_00296071;\n    }\nLAB_00295f20:\n    lVar2 = *(long *)(pcVar10 + 0x30);\n    if ((*(byte *)(lVar2 + 1 + (ulong)(byte)*param_9 * 2) & 0x20) != 0) {\n      pcVar18 = param_9 + 1;\n      pcVar11 = param_10;\n      if (param_10 != pcVar18) {\n        bVar1 = *(byte *)(lVar2 + 1 + (ulong)(byte)param_9[1] * 2);\n        while ((pcVar11 = pcVar18, (bVar1 & 0x20) != 0 &&\n               (pcVar18 = pcVar18 + 1, pcVar11 = pcVar18, param_10 != pcVar18))) {\n          bVar1 = *(byte *)(lVar2 + 1 + (ulong)(byte)*pcVar18 * 2);\n        }\n      }\n      do {\n        param_9 = pcVar11;\n        bVar20 = (int)uVar16 == -1;\n        bVar15 = bVar20;\n        bVar17 = bVar19;\n        if (param_2 != (long *)0x0 && bVar20) {\n          if ((ulong)param_2[3] <= (ulong)param_2[2]) {\n            iVar9 = (**(code **)(*param_2 + 0x48))(param_2);\n            bVar15 = iVar9 == -1 && (param_2 != (long *)0x0 && bVar20);\n            if (iVar9 == -1) {\n              param_2 = (long *)0x0;\n            }\n            goto LAB_00296353;\n          }\n          bVar15 = false;\n          if (param_4 != (long *)0x0 && bVar19) goto LAB_002963d5;\nLAB_00296362:\n          if (bVar15 == bVar17) goto LAB_00295fe1;\n        }\n        else {\nLAB_00296353:\n          if (param_4 == (long *)0x0 || !bVar19) goto LAB_00296362;\nLAB_002963d5:\n          bVar17 = param_4 != (long *)0x0;\n          if ((ulong)param_4[3] <= (ulong)param_4[2]) {\n            iVar9 = (**(code **)(*param_4 + 0x48))(param_4);\n            if (iVar9 == -1) {\n              param_4 = (long *)0x0;\n            }\n            bVar17 = iVar9 == -1 && (bVar17 && bVar19);\n            goto LAB_00296362;\n          }\n          if (bVar15 == false) goto LAB_00295fe1;\n        }\n        uVar13 = uVar16;\n        if ((param_2 == (long *)0x0) || (!bVar20)) {\nLAB_0029637c:\n          if ((*(byte *)(*(long *)(pcVar10 + 0x30) + 1 + (uVar13 & 0xff) * 2) & 0x20) == 0)\n          goto LAB_00295fe1;\n          pbVar12 = (byte *)param_2[2];\n          if (pbVar12 < (byte *)param_2[3]) goto LAB_00296398;\n          (**(code **)(*param_2 + 0x50))(param_2);\n        }\n        else {\n          pbVar12 = (byte *)param_2[2];\n          if ((byte *)param_2[3] <= pbVar12) {\n            uVar13 = (**(code **)(*param_2 + 0x48))(param_2);\n            if ((int)uVar13 == -1) {\n              param_2 = (long *)0x0;\n            }\n            goto LAB_0029637c;\n          }\n          if ((*(byte *)(*(long *)(pcVar10 + 0x30) + 1 + (ulong)*pbVar12 * 2) & 0x20) == 0)\n          goto code_r0x00296430;\nLAB_00296398:\n          param_2[2] = (long)(pbVar12 + 1);\n        }\n        uVar16 = 0xffffffff;\n        pcVar11 = param_9;\n      } while( true );\n    }\n    cVar5 = (char)uVar16;\n    cVar3 = cVar5;\n    if ((param_2 != (long *)0x0) && (bVar20)) {\n      if ((char *)param_2[2] < (char *)param_2[3]) {\n        cVar3 = *(char *)param_2[2];\n      }\n      else {\n        iVar9 = (**(code **)(*param_2 + 0x48))(param_2);\n        cVar3 = -1;\n        if (iVar9 == -1) {\n          param_2 = (long *)0x0;\n        }\n        else {\n          cVar3 = (char)iVar9;\n        }\n      }\n    }\n    cVar3 = (**(code **)(*(long *)pcVar10 + 0x20))(pcVar10,(int)cVar3);\n    cVar4 = (**(code **)(*(long *)pcVar10 + 0x20))(pcVar10,(int)(char)*param_9);\n    if (cVar4 != cVar3) {\n      if ((param_2 != (long *)0x0) && (bVar20)) {\n        if ((char *)param_2[2] < (char *)param_2[3]) {\n          cVar5 = *(char *)param_2[2];\n        }\n        else {\n          iVar9 = (**(code **)(*param_2 + 0x48))(param_2);\n          cVar5 = -1;\n          if (iVar9 == -1) {\n            param_2 = (long *)0x0;\n          }\n          else {\n            cVar5 = (char)iVar9;\n          }\n        }\n      }\n      cVar5 = (**(code **)(*(long *)pcVar10 + 0x10))(pcVar10,(int)cVar5);\n      cVar3 = (**(code **)(*(long *)pcVar10 + 0x10))(pcVar10,(int)(char)*param_9);\n      if (cVar3 != cVar5) goto LAB_00296748;\n    }\n    if ((ulong)param_2[2] < (ulong)param_2[3]) {\n      param_2[2] = param_2[2] + 1;\n    }\n    else {\n      (**(code **)(*param_2 + 0x50))(param_2);\n    }\n    param_9 = param_9 + 1;\n    uVar16 = 0xffffffff;\n    goto LAB_00295fe1;\n  }\nLAB_00296071:\n  if (cVar7 != (ctype)0x25) goto LAB_00295f20;\n  pcVar18 = param_9 + 1;\n  if (param_10 == pcVar18) {\nLAB_00296748:\n    *param_7 = 4;\n  }\n  else {\n    cVar6 = param_9[1];\n    cVar7 = pcVar10[(ulong)(byte)cVar6 + 0x139];\n    if (cVar7 == (ctype)0x0) {\n      cVar7 = cVar6;\n      if (*(code **)(*(long *)pcVar10 + 0x40) != (code *)PTR_do_narrow_003bdd10) {\n        cVar7 = (ctype)(**(code **)(*(long *)pcVar10 + 0x40))(pcVar10,(int)(char)cVar6,0);\n      }\n      cVar8 = cVar7;\n      if (cVar7 != (ctype)0x0) {\n        pcVar10[(ulong)(byte)cVar6 + 0x139] = cVar7;\n        goto LAB_002960ca;\n      }\nLAB_0029655b:\n      cVar7 = (ctype)0x0;\n    }\n    else {\nLAB_002960ca:\n      if ((cVar7 != (ctype)0x45) && (cVar8 = cVar7, cVar7 != (ctype)0x4f)) goto LAB_0029655b;\n      pcVar18 = param_9 + 2;\n      if (param_10 == pcVar18) goto LAB_00296748;\n      cVar6 = param_9[2];\n      cVar8 = pcVar10[(ulong)(byte)cVar6 + 0x139];\n      if (cVar8 == (ctype)0x0) {\n        cVar8 = cVar6;\n        if (*(code **)(*(long *)pcVar10 + 0x40) != (code *)PTR_do_narrow_003bdd10) {\n          cVar8 = (ctype)(**(code **)(*(long *)pcVar10 + 0x40))(pcVar10,(int)(char)cVar6,0);\n        }\n        if (cVar8 != (ctype)0x0) {\n          pcVar10[(ulong)(byte)cVar6 + 0x139] = cVar8;\n        }\n      }\n    }\n    local_d0 = local_d0 & 0xffffffff00000000;\n    local_c8 = local_c8 & 0xffffffff00000000 | param_5 & 0xffffffff;\n    local_50 = local_d0 | uVar16;\n    local_58 = param_2;\n    local_48 = param_4;\n    local_40 = local_c8;\n    pcVar11 = use_facet<std::ctype<char>>((locale *)(param_6 + 0xd0));\n    *param_7 = 0;\n    if (pcVar11[0x38] == (ctype)0x0) {\n      ctype<char>::_M_widen_init((ctype<char> *)pcVar11);\n      cVar6 = (ctype)0x25;\n      if (*(code **)(*(long *)pcVar11 + 0x30) != (code *)PTR_do_widen_003bdfd8) {\n        cVar6 = (ctype)(**(code **)(*(long *)pcVar11 + 0x30))(pcVar11,0x25);\n      }\n    }\n    else {\n      cVar6 = pcVar11[0x5e];\n    }\n    if (cVar7 == (ctype)0x0) {\n      local_5a = (ctype)0x0;\n      local_5b = cVar8;\n    }\n    else {\n      local_59 = 0;\n      local_5b = cVar7;\n      local_5a = cVar8;\n    }\n    local_5c = cVar6;\n    auVar22 = _M_extract_via_format\n                        (param_1,local_58,local_50,local_48,local_40,param_6,param_7,param_8,\n                         &local_5c);\n    local_58 = auVar22._0_8_;\n    local_50 = CONCAT44(local_50._4_4_,auVar22._8_4_);\n    cVar5 = istreambuf_iterator<char,std::char_traits<char>>::equal\n                      ((istreambuf_iterator<char,std::char_traits<char>> *)&local_58,\n                       (istreambuf_iterator *)&local_48);\n    if (cVar5 != '\0') {\n      *param_7 = *param_7 | 2;\n    }\n    uVar16 = local_50 & 0xffffffff;\n    param_9 = pcVar18 + 1;\n    param_2 = local_58;\n    if (param_10 != param_9) goto LAB_00295fef;\n  }\n  goto LAB_002962c3;\ncode_r0x00296430:\n  uVar16 = 0xffffffff;\nLAB_00295fe1:\n  if (param_10 == param_9) goto LAB_002962c3;\nLAB_00295fef:\n  if (*param_7 != 0) goto LAB_002962c3;\n  goto LAB_00296001;\n}\n\n" comment (expression_statement "undefined1  [16]" (subscript_expression "undefined1  [16]" identifier [ number_literal ]) ;) (labeled_statement "std::time_get<char,std::istreambuf_iterator<char,std::char_traits<char>>>::get\n          (undefined8 param_1,long *param_2,ulong param_3,long *param_4,ulong param_5,long param_6,\n          uint *param_7,undefined8 param_8,ctype *param_9,ctype *param_10)" statement_identifier (ERROR "::time_get<char,std::istreambuf_iterator<char,std:" : : (comma_expression "time_get<char,std" (binary_expression "time_get<char" identifier < identifier) , identifier) : : (comma_expression "istreambuf_iterator<char,std" (binary_expression "istreambuf_iterator<char" identifier < identifier) , identifier) :) : (expression_statement "char_traits<char>>>::get\n          (undefined8 param_1,long *param_2,ulong param_3,long *param_4,ulong param_5,long param_6,\n          uint *param_7,undefined8 param_8,ctype *param_9,ctype *param_10)" (binary_expression "char_traits<char>>>::get\n          (undefined8 param_1,long *param_2,ulong param_3,long *param_4,ulong param_5,long param_6,\n          uint *param_7,undefined8 param_8,ctype *param_9,ctype *param_10)" identifier < (binary_expression "char>>>::get\n          (undefined8 param_1,long *param_2,ulong param_3,long *param_4,ulong param_5,long param_6,\n          uint *param_7,undefined8 param_8,ctype *param_9,ctype *param_10)" identifier >> (ERROR ">::" > : :) (call_expression "get\n          (undefined8 param_1,long *param_2,ulong param_3,long *param_4,ulong param_5,long param_6,\n          uint *param_7,undefined8 param_8,ctype *param_9,ctype *param_10)" identifier (argument_list "(undefined8 param_1,long *param_2,ulong param_3,long *param_4,ulong param_5,long param_6,\n          uint *param_7,undefined8 param_8,ctype *param_9,ctype *param_10)" ( identifier (ERROR "param_1" identifier) , (binary_expression "long *param_2" identifier * identifier) , (ERROR "ulong" identifier) identifier , (binary_expression "long *param_4" identifier * identifier) , (ERROR "ulong" identifier) identifier , (ERROR "long" identifier) identifier , (binary_expression "uint *param_7" identifier * identifier) , identifier (ERROR "param_8" identifier) , (binary_expression "ctype *param_9" identifier * identifier) , (binary_expression "ctype *param_10" identifier * identifier) ))))) ;)) (compound_statement "{\n  byte bVar1;\n  long lVar2;\n  char cVar3;\n  char cVar4;\n  char cVar5;\n  ctype cVar6;\n  ctype cVar7;\n  ctype cVar8;\n  int iVar9;\n  ctype *pcVar10;\n  ctype *pcVar11;\n  byte *pbVar12;\n  ulong uVar13;\n  bool bVar14;\n  bool bVar15;\n  ulong uVar16;\n  bool bVar17;\n  ctype *pcVar18;\n  bool bVar19;\n  bool bVar20;\n  undefined1 auVar21 [16];\n  undefined1 auVar22 [12];\n  ulong local_d0;\n  ulong local_c8;\n  ctype local_5c;\n  ctype local_5b;\n  ctype local_5a;\n  undefined1 local_59;\n  long *local_58;\n  ulong local_50;\n  long *local_48;\n  ulong local_40;\n  \n  pcVar10 = use_facet<std::ctype<char>>((locale *)(param_6 + 0xd0));\n  uVar16 = param_3 & 0xffffffff;\n  *param_7 = 0;\n  local_d0 = param_3;\n  if (param_9 == param_10) {\nLAB_002962c3:\n    auVar21._8_8_ = uVar16 | local_d0 & 0xffffffff00000000;\n    auVar21._0_8_ = param_2;\n    return auVar21;\n  }\n  bVar19 = (int)param_5 == -1;\n  local_c8 = param_5;\nLAB_00296001:\n  bVar20 = (int)uVar16 == -1;\n  bVar17 = param_2 != (long *)0x0 && bVar20;\n  bVar15 = bVar20;\n  if (bVar17) {\n    if ((ulong)param_2[2] < (ulong)param_2[3]) {\n      bVar15 = false;\n    }\n    else {\n      iVar9 = (**(code **)(*param_2 + 0x48))(param_2);\n      bVar15 = iVar9 == -1 && bVar17;\n      if (iVar9 == -1) {\n        param_2 = (long *)0x0;\n      }\n    }\n  }\n  bVar14 = param_4 != (long *)0x0 && bVar19;\n  bVar17 = bVar19;\n  if (bVar14) {\n    if ((ulong)param_4[3] <= (ulong)param_4[2]) {\n      iVar9 = (**(code **)(*param_4 + 0x48))(param_4);\n      if (iVar9 == -1) {\n        param_4 = (long *)0x0;\n      }\n      bVar17 = iVar9 == -1 && bVar14;\n      goto LAB_0029602d;\n    }\n    if (bVar15 == false) goto LAB_00296469;\n  }\n  else {\nLAB_0029602d:\n    if (bVar17 == bVar15) {\nLAB_00296469:\n      *param_7 = 6;\n      goto LAB_002962c3;\n    }\n  }\n  cVar6 = *param_9;\n  cVar7 = pcVar10[(ulong)(byte)cVar6 + 0x139];\n  if (cVar7 == (ctype)0x0) {\n    cVar7 = cVar6;\n    if (*(code **)(*(long *)pcVar10 + 0x40) != (code *)PTR_do_narrow_003bdd10) {\n      cVar7 = (ctype)(**(code **)(*(long *)pcVar10 + 0x40))(pcVar10,(int)(char)cVar6,0);\n    }\n    if (cVar7 != (ctype)0x0) {\n      pcVar10[(ulong)(byte)cVar6 + 0x139] = cVar7;\n      goto LAB_00296071;\n    }\nLAB_00295f20:\n    lVar2 = *(long *)(pcVar10 + 0x30);\n    if ((*(byte *)(lVar2 + 1 + (ulong)(byte)*param_9 * 2) & 0x20) != 0) {\n      pcVar18 = param_9 + 1;\n      pcVar11 = param_10;\n      if (param_10 != pcVar18) {\n        bVar1 = *(byte *)(lVar2 + 1 + (ulong)(byte)param_9[1] * 2);\n        while ((pcVar11 = pcVar18, (bVar1 & 0x20) != 0 &&\n               (pcVar18 = pcVar18 + 1, pcVar11 = pcVar18, param_10 != pcVar18))) {\n          bVar1 = *(byte *)(lVar2 + 1 + (ulong)(byte)*pcVar18 * 2);\n        }\n      }\n      do {\n        param_9 = pcVar11;\n        bVar20 = (int)uVar16 == -1;\n        bVar15 = bVar20;\n        bVar17 = bVar19;\n        if (param_2 != (long *)0x0 && bVar20) {\n          if ((ulong)param_2[3] <= (ulong)param_2[2]) {\n            iVar9 = (**(code **)(*param_2 + 0x48))(param_2);\n            bVar15 = iVar9 == -1 && (param_2 != (long *)0x0 && bVar20);\n            if (iVar9 == -1) {\n              param_2 = (long *)0x0;\n            }\n            goto LAB_00296353;\n          }\n          bVar15 = false;\n          if (param_4 != (long *)0x0 && bVar19) goto LAB_002963d5;\nLAB_00296362:\n          if (bVar15 == bVar17) goto LAB_00295fe1;\n        }\n        else {\nLAB_00296353:\n          if (param_4 == (long *)0x0 || !bVar19) goto LAB_00296362;\nLAB_002963d5:\n          bVar17 = param_4 != (long *)0x0;\n          if ((ulong)param_4[3] <= (ulong)param_4[2]) {\n            iVar9 = (**(code **)(*param_4 + 0x48))(param_4);\n            if (iVar9 == -1) {\n              param_4 = (long *)0x0;\n            }\n            bVar17 = iVar9 == -1 && (bVar17 && bVar19);\n            goto LAB_00296362;\n          }\n          if (bVar15 == false) goto LAB_00295fe1;\n        }\n        uVar13 = uVar16;\n        if ((param_2 == (long *)0x0) || (!bVar20)) {\nLAB_0029637c:\n          if ((*(byte *)(*(long *)(pcVar10 + 0x30) + 1 + (uVar13 & 0xff) * 2) & 0x20) == 0)\n          goto LAB_00295fe1;\n          pbVar12 = (byte *)param_2[2];\n          if (pbVar12 < (byte *)param_2[3]) goto LAB_00296398;\n          (**(code **)(*param_2 + 0x50))(param_2);\n        }\n        else {\n          pbVar12 = (byte *)param_2[2];\n          if ((byte *)param_2[3] <= pbVar12) {\n            uVar13 = (**(code **)(*param_2 + 0x48))(param_2);\n            if ((int)uVar13 == -1) {\n              param_2 = (long *)0x0;\n            }\n            goto LAB_0029637c;\n          }\n          if ((*(byte *)(*(long *)(pcVar10 + 0x30) + 1 + (ulong)*pbVar12 * 2) & 0x20) == 0)\n          goto code_r0x00296430;\nLAB_00296398:\n          param_2[2] = (long)(pbVar12 + 1);\n        }\n        uVar16 = 0xffffffff;\n        pcVar11 = param_9;\n      } while( true );\n    }\n    cVar5 = (char)uVar16;\n    cVar3 = cVar5;\n    if ((param_2 != (long *)0x0) && (bVar20)) {\n      if ((char *)param_2[2] < (char *)param_2[3]) {\n        cVar3 = *(char *)param_2[2];\n      }\n      else {\n        iVar9 = (**(code **)(*param_2 + 0x48))(param_2);\n        cVar3 = -1;\n        if (iVar9 == -1) {\n          param_2 = (long *)0x0;\n        }\n        else {\n          cVar3 = (char)iVar9;\n        }\n      }\n    }\n    cVar3 = (**(code **)(*(long *)pcVar10 + 0x20))(pcVar10,(int)cVar3);\n    cVar4 = (**(code **)(*(long *)pcVar10 + 0x20))(pcVar10,(int)(char)*param_9);\n    if (cVar4 != cVar3) {\n      if ((param_2 != (long *)0x0) && (bVar20)) {\n        if ((char *)param_2[2] < (char *)param_2[3]) {\n          cVar5 = *(char *)param_2[2];\n        }\n        else {\n          iVar9 = (**(code **)(*param_2 + 0x48))(param_2);\n          cVar5 = -1;\n          if (iVar9 == -1) {\n            param_2 = (long *)0x0;\n          }\n          else {\n            cVar5 = (char)iVar9;\n          }\n        }\n      }\n      cVar5 = (**(code **)(*(long *)pcVar10 + 0x10))(pcVar10,(int)cVar5);\n      cVar3 = (**(code **)(*(long *)pcVar10 + 0x10))(pcVar10,(int)(char)*param_9);\n      if (cVar3 != cVar5) goto LAB_00296748;\n    }\n    if ((ulong)param_2[2] < (ulong)param_2[3]) {\n      param_2[2] = param_2[2] + 1;\n    }\n    else {\n      (**(code **)(*param_2 + 0x50))(param_2);\n    }\n    param_9 = param_9 + 1;\n    uVar16 = 0xffffffff;\n    goto LAB_00295fe1;\n  }\nLAB_00296071:\n  if (cVar7 != (ctype)0x25) goto LAB_00295f20;\n  pcVar18 = param_9 + 1;\n  if (param_10 == pcVar18) {\nLAB_00296748:\n    *param_7 = 4;\n  }\n  else {\n    cVar6 = param_9[1];\n    cVar7 = pcVar10[(ulong)(byte)cVar6 + 0x139];\n    if (cVar7 == (ctype)0x0) {\n      cVar7 = cVar6;\n      if (*(code **)(*(long *)pcVar10 + 0x40) != (code *)PTR_do_narrow_003bdd10) {\n        cVar7 = (ctype)(**(code **)(*(long *)pcVar10 + 0x40))(pcVar10,(int)(char)cVar6,0);\n      }\n      cVar8 = cVar7;\n      if (cVar7 != (ctype)0x0) {\n        pcVar10[(ulong)(byte)cVar6 + 0x139] = cVar7;\n        goto LAB_002960ca;\n      }\nLAB_0029655b:\n      cVar7 = (ctype)0x0;\n    }\n    else {\nLAB_002960ca:\n      if ((cVar7 != (ctype)0x45) && (cVar8 = cVar7, cVar7 != (ctype)0x4f)) goto LAB_0029655b;\n      pcVar18 = param_9 + 2;\n      if (param_10 == pcVar18) goto LAB_00296748;\n      cVar6 = param_9[2];\n      cVar8 = pcVar10[(ulong)(byte)cVar6 + 0x139];\n      if (cVar8 == (ctype)0x0) {\n        cVar8 = cVar6;\n        if (*(code **)(*(long *)pcVar10 + 0x40) != (code *)PTR_do_narrow_003bdd10) {\n          cVar8 = (ctype)(**(code **)(*(long *)pcVar10 + 0x40))(pcVar10,(int)(char)cVar6,0);\n        }\n        if (cVar8 != (ctype)0x0) {\n          pcVar10[(ulong)(byte)cVar6 + 0x139] = cVar8;\n        }\n      }\n    }\n    local_d0 = local_d0 & 0xffffffff00000000;\n    local_c8 = local_c8 & 0xffffffff00000000 | param_5 & 0xffffffff;\n    local_50 = local_d0 | uVar16;\n    local_58 = param_2;\n    local_48 = param_4;\n    local_40 = local_c8;\n    pcVar11 = use_facet<std::ctype<char>>((locale *)(param_6 + 0xd0));\n    *param_7 = 0;\n    if (pcVar11[0x38] == (ctype)0x0) {\n      ctype<char>::_M_widen_init((ctype<char> *)pcVar11);\n      cVar6 = (ctype)0x25;\n      if (*(code **)(*(long *)pcVar11 + 0x30) != (code *)PTR_do_widen_003bdfd8) {\n        cVar6 = (ctype)(**(code **)(*(long *)pcVar11 + 0x30))(pcVar11,0x25);\n      }\n    }\n    else {\n      cVar6 = pcVar11[0x5e];\n    }\n    if (cVar7 == (ctype)0x0) {\n      local_5a = (ctype)0x0;\n      local_5b = cVar8;\n    }\n    else {\n      local_59 = 0;\n      local_5b = cVar7;\n      local_5a = cVar8;\n    }\n    local_5c = cVar6;\n    auVar22 = _M_extract_via_format\n                        (param_1,local_58,local_50,local_48,local_40,param_6,param_7,param_8,\n                         &local_5c);\n    local_58 = auVar22._0_8_;\n    local_50 = CONCAT44(local_50._4_4_,auVar22._8_4_);\n    cVar5 = istreambuf_iterator<char,std::char_traits<char>>::equal\n                      ((istreambuf_iterator<char,std::char_traits<char>> *)&local_58,\n                       (istreambuf_iterator *)&local_48);\n    if (cVar5 != '\0') {\n      *param_7 = *param_7 | 2;\n    }\n    uVar16 = local_50 & 0xffffffff;\n    param_9 = pcVar18 + 1;\n    param_2 = local_58;\n    if (param_10 != param_9) goto LAB_00295fef;\n  }\n  goto LAB_002962c3;\ncode_r0x00296430:\n  uVar16 = 0xffffffff;\nLAB_00295fe1:\n  if (param_10 == param_9) goto LAB_002962c3;\nLAB_00295fef:\n  if (*param_7 != 0) goto LAB_002962c3;\n  goto LAB_00296001;\n}" { (declaration "byte bVar1;" type_identifier identifier ;) (declaration "long lVar2;" (sized_type_specifier "long" long) identifier ;) (declaration "char cVar3;" primitive_type identifier ;) (declaration "char cVar4;" primitive_type identifier ;) (declaration "char cVar5;" primitive_type identifier ;) (declaration "ctype cVar6;" type_identifier identifier ;) (declaration "ctype cVar7;" type_identifier identifier ;) (declaration "ctype cVar8;" type_identifier identifier ;) (declaration "int iVar9;" primitive_type identifier ;) (declaration "ctype *pcVar10;" type_identifier (pointer_declarator "*pcVar10" * identifier) ;) (declaration "ctype *pcVar11;" type_identifier (pointer_declarator "*pcVar11" * identifier) ;) (declaration "byte *pbVar12;" type_identifier (pointer_declarator "*pbVar12" * identifier) ;) (declaration "ulong uVar13;" type_identifier identifier ;) (declaration "bool bVar14;" primitive_type identifier ;) (declaration "bool bVar15;" primitive_type identifier ;) (declaration "ulong uVar16;" type_identifier identifier ;) (declaration "bool bVar17;" primitive_type identifier ;) (declaration "ctype *pcVar18;" type_identifier (pointer_declarator "*pcVar18" * identifier) ;) (declaration "bool bVar19;" primitive_type identifier ;) (declaration "bool bVar20;" primitive_type identifier ;) (declaration "undefined1 auVar21 [16];" type_identifier (array_declarator "auVar21 [16]" identifier [ number_literal ]) ;) (declaration "undefined1 auVar22 [12];" type_identifier (array_declarator "auVar22 [12]" identifier [ number_literal ]) ;) (declaration "ulong local_d0;" type_identifier identifier ;) (declaration "ulong local_c8;" type_identifier identifier ;) (declaration "ctype local_5c;" type_identifier identifier ;) (declaration "ctype local_5b;" type_identifier identifier ;) (declaration "ctype local_5a;" type_identifier identifier ;) (declaration "undefined1 local_59;" type_identifier identifier ;) (declaration "long *local_58;" (sized_type_specifier "long" long) (pointer_declarator "*local_58" * identifier) ;) (declaration "ulong local_50;" type_identifier identifier ;) (declaration "long *local_48;" (sized_type_specifier "long" long) (pointer_declarator "*local_48" * identifier) ;) (declaration "ulong local_40;" type_identifier identifier ;) (expression_statement "pcVar10 = use_facet<std::ctype<char>>((locale *)(param_6 + 0xd0));" (binary_expression "pcVar10 = use_facet<std::ctype<char>>((locale *)(param_6 + 0xd0))" (assignment_expression "pcVar10 = use_facet<std" identifier = (binary_expression "use_facet<std" identifier < identifier)) (ERROR "::ctype" : : identifier) < (binary_expression "char>>((locale *)(param_6 + 0xd0))" identifier >> (parenthesized_expression "((locale *)(param_6 + 0xd0))" ( (cast_expression "(locale *)(param_6 + 0xd0)" ( (type_descriptor "locale *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_6 + 0xd0)" ( (binary_expression "param_6 + 0xd0" identifier + number_literal) ))) )))) ;) (expression_statement "uVar16 = param_3 & 0xffffffff;" (assignment_expression "uVar16 = param_3 & 0xffffffff" identifier = (binary_expression "param_3 & 0xffffffff" identifier & number_literal)) ;) (expression_statement "*param_7 = 0;" (assignment_expression "*param_7 = 0" (pointer_expression "*param_7" * identifier) = number_literal) ;) (expression_statement "local_d0 = param_3;" (assignment_expression "local_d0 = param_3" identifier = identifier) ;) (if_statement "if (param_9 == param_10) {\nLAB_002962c3:\n    auVar21._8_8_ = uVar16 | local_d0 & 0xffffffff00000000;\n    auVar21._0_8_ = param_2;\n    return auVar21;\n  }" if (parenthesized_expression "(param_9 == param_10)" ( (binary_expression "param_9 == param_10" identifier == identifier) )) (compound_statement "{\nLAB_002962c3:\n    auVar21._8_8_ = uVar16 | local_d0 & 0xffffffff00000000;\n    auVar21._0_8_ = param_2;\n    return auVar21;\n  }" { (labeled_statement "LAB_002962c3:\n    auVar21._8_8_ = uVar16 | local_d0 & 0xffffffff00000000;" statement_identifier : (expression_statement "auVar21._8_8_ = uVar16 | local_d0 & 0xffffffff00000000;" (assignment_expression "auVar21._8_8_ = uVar16 | local_d0 & 0xffffffff00000000" (field_expression "auVar21._8_8_" identifier . field_identifier) = (binary_expression "uVar16 | local_d0 & 0xffffffff00000000" identifier | (binary_expression "local_d0 & 0xffffffff00000000" identifier & number_literal))) ;)) (expression_statement "auVar21._0_8_ = param_2;" (assignment_expression "auVar21._0_8_ = param_2" (field_expression "auVar21._0_8_" identifier . field_identifier) = identifier) ;) (return_statement "return auVar21;" return identifier ;) })) (expression_statement "bVar19 = (int)param_5 == -1;" (assignment_expression "bVar19 = (int)param_5 == -1" identifier = (binary_expression "(int)param_5 == -1" (cast_expression "(int)param_5" ( (type_descriptor "int" primitive_type) ) identifier) == number_literal)) ;) (expression_statement "local_c8 = param_5;" (assignment_expression "local_c8 = param_5" identifier = identifier) ;) (labeled_statement "LAB_00296001:\n  bVar20 = (int)uVar16 == -1;" statement_identifier : (expression_statement "bVar20 = (int)uVar16 == -1;" (assignment_expression "bVar20 = (int)uVar16 == -1" identifier = (binary_expression "(int)uVar16 == -1" (cast_expression "(int)uVar16" ( (type_descriptor "int" primitive_type) ) identifier) == number_literal)) ;)) (expression_statement "bVar17 = param_2 != (long *)0x0 && bVar20;" (assignment_expression "bVar17 = param_2 != (long *)0x0 && bVar20" identifier = (binary_expression "param_2 != (long *)0x0 && bVar20" (binary_expression "param_2 != (long *)0x0" identifier != (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) && identifier)) ;) (expression_statement "bVar15 = bVar20;" (assignment_expression "bVar15 = bVar20" identifier = identifier) ;) (if_statement "if (bVar17) {\n    if ((ulong)param_2[2] < (ulong)param_2[3]) {\n      bVar15 = false;\n    }\n    else {\n      iVar9 = (**(code **)(*param_2 + 0x48))(param_2);\n      bVar15 = iVar9 == -1 && bVar17;\n      if (iVar9 == -1) {\n        param_2 = (long *)0x0;\n      }\n    }\n  }" if (parenthesized_expression "(bVar17)" ( identifier )) (compound_statement "{\n    if ((ulong)param_2[2] < (ulong)param_2[3]) {\n      bVar15 = false;\n    }\n    else {\n      iVar9 = (**(code **)(*param_2 + 0x48))(param_2);\n      bVar15 = iVar9 == -1 && bVar17;\n      if (iVar9 == -1) {\n        param_2 = (long *)0x0;\n      }\n    }\n  }" { (if_statement "if ((ulong)param_2[2] < (ulong)param_2[3]) {\n      bVar15 = false;\n    }\n    else {\n      iVar9 = (**(code **)(*param_2 + 0x48))(param_2);\n      bVar15 = iVar9 == -1 && bVar17;\n      if (iVar9 == -1) {\n        param_2 = (long *)0x0;\n      }\n    }" if (parenthesized_expression "((ulong)param_2[2] < (ulong)param_2[3])" ( (binary_expression "(ulong)param_2[2] < (ulong)param_2[3]" (cast_expression "(ulong)param_2[2]" ( (type_descriptor "ulong" type_identifier) ) (subscript_expression "param_2[2]" identifier [ number_literal ])) < (cast_expression "(ulong)param_2[3]" ( (type_descriptor "ulong" type_identifier) ) (subscript_expression "param_2[3]" identifier [ number_literal ]))) )) (compound_statement "{\n      bVar15 = false;\n    }" { (expression_statement "bVar15 = false;" (assignment_expression "bVar15 = false" identifier = false) ;) }) (else_clause "else {\n      iVar9 = (**(code **)(*param_2 + 0x48))(param_2);\n      bVar15 = iVar9 == -1 && bVar17;\n      if (iVar9 == -1) {\n        param_2 = (long *)0x0;\n      }\n    }" else (compound_statement "{\n      iVar9 = (**(code **)(*param_2 + 0x48))(param_2);\n      bVar15 = iVar9 == -1 && bVar17;\n      if (iVar9 == -1) {\n        param_2 = (long *)0x0;\n      }\n    }" { (expression_statement "iVar9 = (**(code **)(*param_2 + 0x48))(param_2);" (assignment_expression "iVar9 = (**(code **)(*param_2 + 0x48))(param_2)" identifier = (call_expression "(**(code **)(*param_2 + 0x48))(param_2)" (parenthesized_expression "(**(code **)(*param_2 + 0x48))" ( (pointer_expression "**(code **)(*param_2 + 0x48)" * (pointer_expression "*(code **)(*param_2 + 0x48)" * (cast_expression "(code **)(*param_2 + 0x48)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*param_2 + 0x48)" ( (binary_expression "*param_2 + 0x48" (pointer_expression "*param_2" * identifier) + number_literal) ))))) )) (argument_list "(param_2)" ( identifier )))) ;) (expression_statement "bVar15 = iVar9 == -1 && bVar17;" (assignment_expression "bVar15 = iVar9 == -1 && bVar17" identifier = (binary_expression "iVar9 == -1 && bVar17" (binary_expression "iVar9 == -1" identifier == number_literal) && identifier)) ;) (if_statement "if (iVar9 == -1) {\n        param_2 = (long *)0x0;\n      }" if (parenthesized_expression "(iVar9 == -1)" ( (binary_expression "iVar9 == -1" identifier == number_literal) )) (compound_statement "{\n        param_2 = (long *)0x0;\n      }" { (expression_statement "param_2 = (long *)0x0;" (assignment_expression "param_2 = (long *)0x0" identifier = (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) ;) })) }))) })) (expression_statement "bVar14 = param_4 != (long *)0x0 && bVar19;" (assignment_expression "bVar14 = param_4 != (long *)0x0 && bVar19" identifier = (binary_expression "param_4 != (long *)0x0 && bVar19" (binary_expression "param_4 != (long *)0x0" identifier != (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) && identifier)) ;) (expression_statement "bVar17 = bVar19;" (assignment_expression "bVar17 = bVar19" identifier = identifier) ;) (if_statement "if (bVar14) {\n    if ((ulong)param_4[3] <= (ulong)param_4[2]) {\n      iVar9 = (**(code **)(*param_4 + 0x48))(param_4);\n      if (iVar9 == -1) {\n        param_4 = (long *)0x0;\n      }\n      bVar17 = iVar9 == -1 && bVar14;\n      goto LAB_0029602d;\n    }\n    if (bVar15 == false) goto LAB_00296469;\n  }\n  else {\nLAB_0029602d:\n    if (bVar17 == bVar15) {\nLAB_00296469:\n      *param_7 = 6;\n      goto LAB_002962c3;\n    }\n  }" if (parenthesized_expression "(bVar14)" ( identifier )) (compound_statement "{\n    if ((ulong)param_4[3] <= (ulong)param_4[2]) {\n      iVar9 = (**(code **)(*param_4 + 0x48))(param_4);\n      if (iVar9 == -1) {\n        param_4 = (long *)0x0;\n      }\n      bVar17 = iVar9 == -1 && bVar14;\n      goto LAB_0029602d;\n    }\n    if (bVar15 == false) goto LAB_00296469;\n  }" { (if_statement "if ((ulong)param_4[3] <= (ulong)param_4[2]) {\n      iVar9 = (**(code **)(*param_4 + 0x48))(param_4);\n      if (iVar9 == -1) {\n        param_4 = (long *)0x0;\n      }\n      bVar17 = iVar9 == -1 && bVar14;\n      goto LAB_0029602d;\n    }" if (parenthesized_expression "((ulong)param_4[3] <= (ulong)param_4[2])" ( (binary_expression "(ulong)param_4[3] <= (ulong)param_4[2]" (cast_expression "(ulong)param_4[3]" ( (type_descriptor "ulong" type_identifier) ) (subscript_expression "param_4[3]" identifier [ number_literal ])) <= (cast_expression "(ulong)param_4[2]" ( (type_descriptor "ulong" type_identifier) ) (subscript_expression "param_4[2]" identifier [ number_literal ]))) )) (compound_statement "{\n      iVar9 = (**(code **)(*param_4 + 0x48))(param_4);\n      if (iVar9 == -1) {\n        param_4 = (long *)0x0;\n      }\n      bVar17 = iVar9 == -1 && bVar14;\n      goto LAB_0029602d;\n    }" { (expression_statement "iVar9 = (**(code **)(*param_4 + 0x48))(param_4);" (assignment_expression "iVar9 = (**(code **)(*param_4 + 0x48))(param_4)" identifier = (call_expression "(**(code **)(*param_4 + 0x48))(param_4)" (parenthesized_expression "(**(code **)(*param_4 + 0x48))" ( (pointer_expression "**(code **)(*param_4 + 0x48)" * (pointer_expression "*(code **)(*param_4 + 0x48)" * (cast_expression "(code **)(*param_4 + 0x48)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*param_4 + 0x48)" ( (binary_expression "*param_4 + 0x48" (pointer_expression "*param_4" * identifier) + number_literal) ))))) )) (argument_list "(param_4)" ( identifier )))) ;) (if_statement "if (iVar9 == -1) {\n        param_4 = (long *)0x0;\n      }" if (parenthesized_expression "(iVar9 == -1)" ( (binary_expression "iVar9 == -1" identifier == number_literal) )) (compound_statement "{\n        param_4 = (long *)0x0;\n      }" { (expression_statement "param_4 = (long *)0x0;" (assignment_expression "param_4 = (long *)0x0" identifier = (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) ;) })) (expression_statement "bVar17 = iVar9 == -1 && bVar14;" (assignment_expression "bVar17 = iVar9 == -1 && bVar14" identifier = (binary_expression "iVar9 == -1 && bVar14" (binary_expression "iVar9 == -1" identifier == number_literal) && identifier)) ;) (goto_statement "goto LAB_0029602d;" goto statement_identifier ;) })) (if_statement "if (bVar15 == false) goto LAB_00296469;" if (parenthesized_expression "(bVar15 == false)" ( (binary_expression "bVar15 == false" identifier == false) )) (goto_statement "goto LAB_00296469;" goto statement_identifier ;)) }) (else_clause "else {\nLAB_0029602d:\n    if (bVar17 == bVar15) {\nLAB_00296469:\n      *param_7 = 6;\n      goto LAB_002962c3;\n    }\n  }" else (compound_statement "{\nLAB_0029602d:\n    if (bVar17 == bVar15) {\nLAB_00296469:\n      *param_7 = 6;\n      goto LAB_002962c3;\n    }\n  }" { (labeled_statement "LAB_0029602d:\n    if (bVar17 == bVar15) {\nLAB_00296469:\n      *param_7 = 6;\n      goto LAB_002962c3;\n    }" statement_identifier : (if_statement "if (bVar17 == bVar15) {\nLAB_00296469:\n      *param_7 = 6;\n      goto LAB_002962c3;\n    }" if (parenthesized_expression "(bVar17 == bVar15)" ( (binary_expression "bVar17 == bVar15" identifier == identifier) )) (compound_statement "{\nLAB_00296469:\n      *param_7 = 6;\n      goto LAB_002962c3;\n    }" { (labeled_statement "LAB_00296469:\n      *param_7 = 6;" statement_identifier : (expression_statement "*param_7 = 6;" (assignment_expression "*param_7 = 6" (pointer_expression "*param_7" * identifier) = number_literal) ;)) (goto_statement "goto LAB_002962c3;" goto statement_identifier ;) }))) }))) (expression_statement "cVar6 = *param_9;" (assignment_expression "cVar6 = *param_9" identifier = (pointer_expression "*param_9" * identifier)) ;) (expression_statement "cVar7 = pcVar10[(ulong)(byte)cVar6 + 0x139];" (assignment_expression "cVar7 = pcVar10[(ulong)(byte)cVar6 + 0x139]" identifier = (subscript_expression "pcVar10[(ulong)(byte)cVar6 + 0x139]" identifier [ (binary_expression "(ulong)(byte)cVar6 + 0x139" (cast_expression "(ulong)(byte)cVar6" ( (type_descriptor "ulong" type_identifier) ) (cast_expression "(byte)cVar6" ( (type_descriptor "byte" type_identifier) ) identifier)) + number_literal) ])) ;) (if_statement "if (cVar7 == (ctype)0x0) {\n    cVar7 = cVar6;\n    if (*(code **)(*(long *)pcVar10 + 0x40) != (code *)PTR_do_narrow_003bdd10) {\n      cVar7 = (ctype)(**(code **)(*(long *)pcVar10 + 0x40))(pcVar10,(int)(char)cVar6,0);\n    }\n    if (cVar7 != (ctype)0x0) {\n      pcVar10[(ulong)(byte)cVar6 + 0x139] = cVar7;\n      goto LAB_00296071;\n    }\nLAB_00295f20:\n    lVar2 = *(long *)(pcVar10 + 0x30);\n    if ((*(byte *)(lVar2 + 1 + (ulong)(byte)*param_9 * 2) & 0x20) != 0) {\n      pcVar18 = param_9 + 1;\n      pcVar11 = param_10;\n      if (param_10 != pcVar18) {\n        bVar1 = *(byte *)(lVar2 + 1 + (ulong)(byte)param_9[1] * 2);\n        while ((pcVar11 = pcVar18, (bVar1 & 0x20) != 0 &&\n               (pcVar18 = pcVar18 + 1, pcVar11 = pcVar18, param_10 != pcVar18))) {\n          bVar1 = *(byte *)(lVar2 + 1 + (ulong)(byte)*pcVar18 * 2);\n        }\n      }\n      do {\n        param_9 = pcVar11;\n        bVar20 = (int)uVar16 == -1;\n        bVar15 = bVar20;\n        bVar17 = bVar19;\n        if (param_2 != (long *)0x0 && bVar20) {\n          if ((ulong)param_2[3] <= (ulong)param_2[2]) {\n            iVar9 = (**(code **)(*param_2 + 0x48))(param_2);\n            bVar15 = iVar9 == -1 && (param_2 != (long *)0x0 && bVar20);\n            if (iVar9 == -1) {\n              param_2 = (long *)0x0;\n            }\n            goto LAB_00296353;\n          }\n          bVar15 = false;\n          if (param_4 != (long *)0x0 && bVar19) goto LAB_002963d5;\nLAB_00296362:\n          if (bVar15 == bVar17) goto LAB_00295fe1;\n        }\n        else {\nLAB_00296353:\n          if (param_4 == (long *)0x0 || !bVar19) goto LAB_00296362;\nLAB_002963d5:\n          bVar17 = param_4 != (long *)0x0;\n          if ((ulong)param_4[3] <= (ulong)param_4[2]) {\n            iVar9 = (**(code **)(*param_4 + 0x48))(param_4);\n            if (iVar9 == -1) {\n              param_4 = (long *)0x0;\n            }\n            bVar17 = iVar9 == -1 && (bVar17 && bVar19);\n            goto LAB_00296362;\n          }\n          if (bVar15 == false) goto LAB_00295fe1;\n        }\n        uVar13 = uVar16;\n        if ((param_2 == (long *)0x0) || (!bVar20)) {\nLAB_0029637c:\n          if ((*(byte *)(*(long *)(pcVar10 + 0x30) + 1 + (uVar13 & 0xff) * 2) & 0x20) == 0)\n          goto LAB_00295fe1;\n          pbVar12 = (byte *)param_2[2];\n          if (pbVar12 < (byte *)param_2[3]) goto LAB_00296398;\n          (**(code **)(*param_2 + 0x50))(param_2);\n        }\n        else {\n          pbVar12 = (byte *)param_2[2];\n          if ((byte *)param_2[3] <= pbVar12) {\n            uVar13 = (**(code **)(*param_2 + 0x48))(param_2);\n            if ((int)uVar13 == -1) {\n              param_2 = (long *)0x0;\n            }\n            goto LAB_0029637c;\n          }\n          if ((*(byte *)(*(long *)(pcVar10 + 0x30) + 1 + (ulong)*pbVar12 * 2) & 0x20) == 0)\n          goto code_r0x00296430;\nLAB_00296398:\n          param_2[2] = (long)(pbVar12 + 1);\n        }\n        uVar16 = 0xffffffff;\n        pcVar11 = param_9;\n      } while( true );\n    }\n    cVar5 = (char)uVar16;\n    cVar3 = cVar5;\n    if ((param_2 != (long *)0x0) && (bVar20)) {\n      if ((char *)param_2[2] < (char *)param_2[3]) {\n        cVar3 = *(char *)param_2[2];\n      }\n      else {\n        iVar9 = (**(code **)(*param_2 + 0x48))(param_2);\n        cVar3 = -1;\n        if (iVar9 == -1) {\n          param_2 = (long *)0x0;\n        }\n        else {\n          cVar3 = (char)iVar9;\n        }\n      }\n    }\n    cVar3 = (**(code **)(*(long *)pcVar10 + 0x20))(pcVar10,(int)cVar3);\n    cVar4 = (**(code **)(*(long *)pcVar10 + 0x20))(pcVar10,(int)(char)*param_9);\n    if (cVar4 != cVar3) {\n      if ((param_2 != (long *)0x0) && (bVar20)) {\n        if ((char *)param_2[2] < (char *)param_2[3]) {\n          cVar5 = *(char *)param_2[2];\n        }\n        else {\n          iVar9 = (**(code **)(*param_2 + 0x48))(param_2);\n          cVar5 = -1;\n          if (iVar9 == -1) {\n            param_2 = (long *)0x0;\n          }\n          else {\n            cVar5 = (char)iVar9;\n          }\n        }\n      }\n      cVar5 = (**(code **)(*(long *)pcVar10 + 0x10))(pcVar10,(int)cVar5);\n      cVar3 = (**(code **)(*(long *)pcVar10 + 0x10))(pcVar10,(int)(char)*param_9);\n      if (cVar3 != cVar5) goto LAB_00296748;\n    }\n    if ((ulong)param_2[2] < (ulong)param_2[3]) {\n      param_2[2] = param_2[2] + 1;\n    }\n    else {\n      (**(code **)(*param_2 + 0x50))(param_2);\n    }\n    param_9 = param_9 + 1;\n    uVar16 = 0xffffffff;\n    goto LAB_00295fe1;\n  }" if (parenthesized_expression "(cVar7 == (ctype)0x0)" ( (binary_expression "cVar7 == (ctype)0x0" identifier == (cast_expression "(ctype)0x0" ( (type_descriptor "ctype" type_identifier) ) number_literal)) )) (compound_statement "{\n    cVar7 = cVar6;\n    if (*(code **)(*(long *)pcVar10 + 0x40) != (code *)PTR_do_narrow_003bdd10) {\n      cVar7 = (ctype)(**(code **)(*(long *)pcVar10 + 0x40))(pcVar10,(int)(char)cVar6,0);\n    }\n    if (cVar7 != (ctype)0x0) {\n      pcVar10[(ulong)(byte)cVar6 + 0x139] = cVar7;\n      goto LAB_00296071;\n    }\nLAB_00295f20:\n    lVar2 = *(long *)(pcVar10 + 0x30);\n    if ((*(byte *)(lVar2 + 1 + (ulong)(byte)*param_9 * 2) & 0x20) != 0) {\n      pcVar18 = param_9 + 1;\n      pcVar11 = param_10;\n      if (param_10 != pcVar18) {\n        bVar1 = *(byte *)(lVar2 + 1 + (ulong)(byte)param_9[1] * 2);\n        while ((pcVar11 = pcVar18, (bVar1 & 0x20) != 0 &&\n               (pcVar18 = pcVar18 + 1, pcVar11 = pcVar18, param_10 != pcVar18))) {\n          bVar1 = *(byte *)(lVar2 + 1 + (ulong)(byte)*pcVar18 * 2);\n        }\n      }\n      do {\n        param_9 = pcVar11;\n        bVar20 = (int)uVar16 == -1;\n        bVar15 = bVar20;\n        bVar17 = bVar19;\n        if (param_2 != (long *)0x0 && bVar20) {\n          if ((ulong)param_2[3] <= (ulong)param_2[2]) {\n            iVar9 = (**(code **)(*param_2 + 0x48))(param_2);\n            bVar15 = iVar9 == -1 && (param_2 != (long *)0x0 && bVar20);\n            if (iVar9 == -1) {\n              param_2 = (long *)0x0;\n            }\n            goto LAB_00296353;\n          }\n          bVar15 = false;\n          if (param_4 != (long *)0x0 && bVar19) goto LAB_002963d5;\nLAB_00296362:\n          if (bVar15 == bVar17) goto LAB_00295fe1;\n        }\n        else {\nLAB_00296353:\n          if (param_4 == (long *)0x0 || !bVar19) goto LAB_00296362;\nLAB_002963d5:\n          bVar17 = param_4 != (long *)0x0;\n          if ((ulong)param_4[3] <= (ulong)param_4[2]) {\n            iVar9 = (**(code **)(*param_4 + 0x48))(param_4);\n            if (iVar9 == -1) {\n              param_4 = (long *)0x0;\n            }\n            bVar17 = iVar9 == -1 && (bVar17 && bVar19);\n            goto LAB_00296362;\n          }\n          if (bVar15 == false) goto LAB_00295fe1;\n        }\n        uVar13 = uVar16;\n        if ((param_2 == (long *)0x0) || (!bVar20)) {\nLAB_0029637c:\n          if ((*(byte *)(*(long *)(pcVar10 + 0x30) + 1 + (uVar13 & 0xff) * 2) & 0x20) == 0)\n          goto LAB_00295fe1;\n          pbVar12 = (byte *)param_2[2];\n          if (pbVar12 < (byte *)param_2[3]) goto LAB_00296398;\n          (**(code **)(*param_2 + 0x50))(param_2);\n        }\n        else {\n          pbVar12 = (byte *)param_2[2];\n          if ((byte *)param_2[3] <= pbVar12) {\n            uVar13 = (**(code **)(*param_2 + 0x48))(param_2);\n            if ((int)uVar13 == -1) {\n              param_2 = (long *)0x0;\n            }\n            goto LAB_0029637c;\n          }\n          if ((*(byte *)(*(long *)(pcVar10 + 0x30) + 1 + (ulong)*pbVar12 * 2) & 0x20) == 0)\n          goto code_r0x00296430;\nLAB_00296398:\n          param_2[2] = (long)(pbVar12 + 1);\n        }\n        uVar16 = 0xffffffff;\n        pcVar11 = param_9;\n      } while( true );\n    }\n    cVar5 = (char)uVar16;\n    cVar3 = cVar5;\n    if ((param_2 != (long *)0x0) && (bVar20)) {\n      if ((char *)param_2[2] < (char *)param_2[3]) {\n        cVar3 = *(char *)param_2[2];\n      }\n      else {\n        iVar9 = (**(code **)(*param_2 + 0x48))(param_2);\n        cVar3 = -1;\n        if (iVar9 == -1) {\n          param_2 = (long *)0x0;\n        }\n        else {\n          cVar3 = (char)iVar9;\n        }\n      }\n    }\n    cVar3 = (**(code **)(*(long *)pcVar10 + 0x20))(pcVar10,(int)cVar3);\n    cVar4 = (**(code **)(*(long *)pcVar10 + 0x20))(pcVar10,(int)(char)*param_9);\n    if (cVar4 != cVar3) {\n      if ((param_2 != (long *)0x0) && (bVar20)) {\n        if ((char *)param_2[2] < (char *)param_2[3]) {\n          cVar5 = *(char *)param_2[2];\n        }\n        else {\n          iVar9 = (**(code **)(*param_2 + 0x48))(param_2);\n          cVar5 = -1;\n          if (iVar9 == -1) {\n            param_2 = (long *)0x0;\n          }\n          else {\n            cVar5 = (char)iVar9;\n          }\n        }\n      }\n      cVar5 = (**(code **)(*(long *)pcVar10 + 0x10))(pcVar10,(int)cVar5);\n      cVar3 = (**(code **)(*(long *)pcVar10 + 0x10))(pcVar10,(int)(char)*param_9);\n      if (cVar3 != cVar5) goto LAB_00296748;\n    }\n    if ((ulong)param_2[2] < (ulong)param_2[3]) {\n      param_2[2] = param_2[2] + 1;\n    }\n    else {\n      (**(code **)(*param_2 + 0x50))(param_2);\n    }\n    param_9 = param_9 + 1;\n    uVar16 = 0xffffffff;\n    goto LAB_00295fe1;\n  }" { (expression_statement "cVar7 = cVar6;" (assignment_expression "cVar7 = cVar6" identifier = identifier) ;) (if_statement "if (*(code **)(*(long *)pcVar10 + 0x40) != (code *)PTR_do_narrow_003bdd10) {\n      cVar7 = (ctype)(**(code **)(*(long *)pcVar10 + 0x40))(pcVar10,(int)(char)cVar6,0);\n    }" if (parenthesized_expression "(*(code **)(*(long *)pcVar10 + 0x40) != (code *)PTR_do_narrow_003bdd10)" ( (binary_expression "*(code **)(*(long *)pcVar10 + 0x40) != (code *)PTR_do_narrow_003bdd10" (pointer_expression "*(code **)(*(long *)pcVar10 + 0x40)" * (cast_expression "(code **)(*(long *)pcVar10 + 0x40)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(long *)pcVar10 + 0x40)" ( (binary_expression "*(long *)pcVar10 + 0x40" (pointer_expression "*(long *)pcVar10" * (cast_expression "(long *)pcVar10" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) identifier)) + number_literal) )))) != (cast_expression "(code *)PTR_do_narrow_003bdd10" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (compound_statement "{\n      cVar7 = (ctype)(**(code **)(*(long *)pcVar10 + 0x40))(pcVar10,(int)(char)cVar6,0);\n    }" { (expression_statement "cVar7 = (ctype)(**(code **)(*(long *)pcVar10 + 0x40))(pcVar10,(int)(char)cVar6,0);" (assignment_expression "cVar7 = (ctype)(**(code **)(*(long *)pcVar10 + 0x40))(pcVar10,(int)(char)cVar6,0)" identifier = (call_expression "(ctype)(**(code **)(*(long *)pcVar10 + 0x40))(pcVar10,(int)(char)cVar6,0)" (call_expression "(ctype)(**(code **)(*(long *)pcVar10 + 0x40))" (parenthesized_expression "(ctype)" ( identifier )) (argument_list "(**(code **)(*(long *)pcVar10 + 0x40))" ( (pointer_expression "**(code **)(*(long *)pcVar10 + 0x40)" * (pointer_expression "*(code **)(*(long *)pcVar10 + 0x40)" * (cast_expression "(code **)(*(long *)pcVar10 + 0x40)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(long *)pcVar10 + 0x40)" ( (binary_expression "*(long *)pcVar10 + 0x40" (pointer_expression "*(long *)pcVar10" * (cast_expression "(long *)pcVar10" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) identifier)) + number_literal) ))))) ))) (argument_list "(pcVar10,(int)(char)cVar6,0)" ( identifier , (cast_expression "(int)(char)cVar6" ( (type_descriptor "int" primitive_type) ) (cast_expression "(char)cVar6" ( (type_descriptor "char" primitive_type) ) identifier)) , number_literal )))) ;) })) (if_statement "if (cVar7 != (ctype)0x0) {\n      pcVar10[(ulong)(byte)cVar6 + 0x139] = cVar7;\n      goto LAB_00296071;\n    }" if (parenthesized_expression "(cVar7 != (ctype)0x0)" ( (binary_expression "cVar7 != (ctype)0x0" identifier != (cast_expression "(ctype)0x0" ( (type_descriptor "ctype" type_identifier) ) number_literal)) )) (compound_statement "{\n      pcVar10[(ulong)(byte)cVar6 + 0x139] = cVar7;\n      goto LAB_00296071;\n    }" { (expression_statement "pcVar10[(ulong)(byte)cVar6 + 0x139] = cVar7;" (assignment_expression "pcVar10[(ulong)(byte)cVar6 + 0x139] = cVar7" (subscript_expression "pcVar10[(ulong)(byte)cVar6 + 0x139]" identifier [ (binary_expression "(ulong)(byte)cVar6 + 0x139" (cast_expression "(ulong)(byte)cVar6" ( (type_descriptor "ulong" type_identifier) ) (cast_expression "(byte)cVar6" ( (type_descriptor "byte" type_identifier) ) identifier)) + number_literal) ]) = identifier) ;) (goto_statement "goto LAB_00296071;" goto statement_identifier ;) })) (labeled_statement "LAB_00295f20:\n    lVar2 = *(long *)(pcVar10 + 0x30);" statement_identifier : (expression_statement "lVar2 = *(long *)(pcVar10 + 0x30);" (assignment_expression "lVar2 = *(long *)(pcVar10 + 0x30)" identifier = (pointer_expression "*(long *)(pcVar10 + 0x30)" * (cast_expression "(long *)(pcVar10 + 0x30)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar10 + 0x30)" ( (binary_expression "pcVar10 + 0x30" identifier + number_literal) ))))) ;)) (if_statement "if ((*(byte *)(lVar2 + 1 + (ulong)(byte)*param_9 * 2) & 0x20) != 0) {\n      pcVar18 = param_9 + 1;\n      pcVar11 = param_10;\n      if (param_10 != pcVar18) {\n        bVar1 = *(byte *)(lVar2 + 1 + (ulong)(byte)param_9[1] * 2);\n        while ((pcVar11 = pcVar18, (bVar1 & 0x20) != 0 &&\n               (pcVar18 = pcVar18 + 1, pcVar11 = pcVar18, param_10 != pcVar18))) {\n          bVar1 = *(byte *)(lVar2 + 1 + (ulong)(byte)*pcVar18 * 2);\n        }\n      }\n      do {\n        param_9 = pcVar11;\n        bVar20 = (int)uVar16 == -1;\n        bVar15 = bVar20;\n        bVar17 = bVar19;\n        if (param_2 != (long *)0x0 && bVar20) {\n          if ((ulong)param_2[3] <= (ulong)param_2[2]) {\n            iVar9 = (**(code **)(*param_2 + 0x48))(param_2);\n            bVar15 = iVar9 == -1 && (param_2 != (long *)0x0 && bVar20);\n            if (iVar9 == -1) {\n              param_2 = (long *)0x0;\n            }\n            goto LAB_00296353;\n          }\n          bVar15 = false;\n          if (param_4 != (long *)0x0 && bVar19) goto LAB_002963d5;\nLAB_00296362:\n          if (bVar15 == bVar17) goto LAB_00295fe1;\n        }\n        else {\nLAB_00296353:\n          if (param_4 == (long *)0x0 || !bVar19) goto LAB_00296362;\nLAB_002963d5:\n          bVar17 = param_4 != (long *)0x0;\n          if ((ulong)param_4[3] <= (ulong)param_4[2]) {\n            iVar9 = (**(code **)(*param_4 + 0x48))(param_4);\n            if (iVar9 == -1) {\n              param_4 = (long *)0x0;\n            }\n            bVar17 = iVar9 == -1 && (bVar17 && bVar19);\n            goto LAB_00296362;\n          }\n          if (bVar15 == false) goto LAB_00295fe1;\n        }\n        uVar13 = uVar16;\n        if ((param_2 == (long *)0x0) || (!bVar20)) {\nLAB_0029637c:\n          if ((*(byte *)(*(long *)(pcVar10 + 0x30) + 1 + (uVar13 & 0xff) * 2) & 0x20) == 0)\n          goto LAB_00295fe1;\n          pbVar12 = (byte *)param_2[2];\n          if (pbVar12 < (byte *)param_2[3]) goto LAB_00296398;\n          (**(code **)(*param_2 + 0x50))(param_2);\n        }\n        else {\n          pbVar12 = (byte *)param_2[2];\n          if ((byte *)param_2[3] <= pbVar12) {\n            uVar13 = (**(code **)(*param_2 + 0x48))(param_2);\n            if ((int)uVar13 == -1) {\n              param_2 = (long *)0x0;\n            }\n            goto LAB_0029637c;\n          }\n          if ((*(byte *)(*(long *)(pcVar10 + 0x30) + 1 + (ulong)*pbVar12 * 2) & 0x20) == 0)\n          goto code_r0x00296430;\nLAB_00296398:\n          param_2[2] = (long)(pbVar12 + 1);\n        }\n        uVar16 = 0xffffffff;\n        pcVar11 = param_9;\n      } while( true );\n    }" if (parenthesized_expression "((*(byte *)(lVar2 + 1 + (ulong)(byte)*param_9 * 2) & 0x20) != 0)" ( (binary_expression "(*(byte *)(lVar2 + 1 + (ulong)(byte)*param_9 * 2) & 0x20) != 0" (parenthesized_expression "(*(byte *)(lVar2 + 1 + (ulong)(byte)*param_9 * 2) & 0x20)" ( (binary_expression "*(byte *)(lVar2 + 1 + (ulong)(byte)*param_9 * 2) & 0x20" (pointer_expression "*(byte *)(lVar2 + 1 + (ulong)(byte)*param_9 * 2)" * (cast_expression "(byte *)(lVar2 + 1 + (ulong)(byte)*param_9 * 2)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar2 + 1 + (ulong)(byte)*param_9 * 2)" ( (binary_expression "lVar2 + 1 + (ulong)(byte)*param_9 * 2" (binary_expression "lVar2 + 1" identifier + number_literal) + (binary_expression "(ulong)(byte)*param_9 * 2" (binary_expression "(ulong)(byte)*param_9" (call_expression "(ulong)(byte)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(byte)" ( identifier ))) * identifier) * number_literal)) )))) & number_literal) )) != number_literal) )) (compound_statement "{\n      pcVar18 = param_9 + 1;\n      pcVar11 = param_10;\n      if (param_10 != pcVar18) {\n        bVar1 = *(byte *)(lVar2 + 1 + (ulong)(byte)param_9[1] * 2);\n        while ((pcVar11 = pcVar18, (bVar1 & 0x20) != 0 &&\n               (pcVar18 = pcVar18 + 1, pcVar11 = pcVar18, param_10 != pcVar18))) {\n          bVar1 = *(byte *)(lVar2 + 1 + (ulong)(byte)*pcVar18 * 2);\n        }\n      }\n      do {\n        param_9 = pcVar11;\n        bVar20 = (int)uVar16 == -1;\n        bVar15 = bVar20;\n        bVar17 = bVar19;\n        if (param_2 != (long *)0x0 && bVar20) {\n          if ((ulong)param_2[3] <= (ulong)param_2[2]) {\n            iVar9 = (**(code **)(*param_2 + 0x48))(param_2);\n            bVar15 = iVar9 == -1 && (param_2 != (long *)0x0 && bVar20);\n            if (iVar9 == -1) {\n              param_2 = (long *)0x0;\n            }\n            goto LAB_00296353;\n          }\n          bVar15 = false;\n          if (param_4 != (long *)0x0 && bVar19) goto LAB_002963d5;\nLAB_00296362:\n          if (bVar15 == bVar17) goto LAB_00295fe1;\n        }\n        else {\nLAB_00296353:\n          if (param_4 == (long *)0x0 || !bVar19) goto LAB_00296362;\nLAB_002963d5:\n          bVar17 = param_4 != (long *)0x0;\n          if ((ulong)param_4[3] <= (ulong)param_4[2]) {\n            iVar9 = (**(code **)(*param_4 + 0x48))(param_4);\n            if (iVar9 == -1) {\n              param_4 = (long *)0x0;\n            }\n            bVar17 = iVar9 == -1 && (bVar17 && bVar19);\n            goto LAB_00296362;\n          }\n          if (bVar15 == false) goto LAB_00295fe1;\n        }\n        uVar13 = uVar16;\n        if ((param_2 == (long *)0x0) || (!bVar20)) {\nLAB_0029637c:\n          if ((*(byte *)(*(long *)(pcVar10 + 0x30) + 1 + (uVar13 & 0xff) * 2) & 0x20) == 0)\n          goto LAB_00295fe1;\n          pbVar12 = (byte *)param_2[2];\n          if (pbVar12 < (byte *)param_2[3]) goto LAB_00296398;\n          (**(code **)(*param_2 + 0x50))(param_2);\n        }\n        else {\n          pbVar12 = (byte *)param_2[2];\n          if ((byte *)param_2[3] <= pbVar12) {\n            uVar13 = (**(code **)(*param_2 + 0x48))(param_2);\n            if ((int)uVar13 == -1) {\n              param_2 = (long *)0x0;\n            }\n            goto LAB_0029637c;\n          }\n          if ((*(byte *)(*(long *)(pcVar10 + 0x30) + 1 + (ulong)*pbVar12 * 2) & 0x20) == 0)\n          goto code_r0x00296430;\nLAB_00296398:\n          param_2[2] = (long)(pbVar12 + 1);\n        }\n        uVar16 = 0xffffffff;\n        pcVar11 = param_9;\n      } while( true );\n    }" { (expression_statement "pcVar18 = param_9 + 1;" (assignment_expression "pcVar18 = param_9 + 1" identifier = (binary_expression "param_9 + 1" identifier + number_literal)) ;) (expression_statement "pcVar11 = param_10;" (assignment_expression "pcVar11 = param_10" identifier = identifier) ;) (if_statement "if (param_10 != pcVar18) {\n        bVar1 = *(byte *)(lVar2 + 1 + (ulong)(byte)param_9[1] * 2);\n        while ((pcVar11 = pcVar18, (bVar1 & 0x20) != 0 &&\n               (pcVar18 = pcVar18 + 1, pcVar11 = pcVar18, param_10 != pcVar18))) {\n          bVar1 = *(byte *)(lVar2 + 1 + (ulong)(byte)*pcVar18 * 2);\n        }\n      }" if (parenthesized_expression "(param_10 != pcVar18)" ( (binary_expression "param_10 != pcVar18" identifier != identifier) )) (compound_statement "{\n        bVar1 = *(byte *)(lVar2 + 1 + (ulong)(byte)param_9[1] * 2);\n        while ((pcVar11 = pcVar18, (bVar1 & 0x20) != 0 &&\n               (pcVar18 = pcVar18 + 1, pcVar11 = pcVar18, param_10 != pcVar18))) {\n          bVar1 = *(byte *)(lVar2 + 1 + (ulong)(byte)*pcVar18 * 2);\n        }\n      }" { (expression_statement "bVar1 = *(byte *)(lVar2 + 1 + (ulong)(byte)param_9[1] * 2);" (assignment_expression "bVar1 = *(byte *)(lVar2 + 1 + (ulong)(byte)param_9[1] * 2)" identifier = (pointer_expression "*(byte *)(lVar2 + 1 + (ulong)(byte)param_9[1] * 2)" * (cast_expression "(byte *)(lVar2 + 1 + (ulong)(byte)param_9[1] * 2)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar2 + 1 + (ulong)(byte)param_9[1] * 2)" ( (binary_expression "lVar2 + 1 + (ulong)(byte)param_9[1] * 2" (binary_expression "lVar2 + 1" identifier + number_literal) + (binary_expression "(ulong)(byte)param_9[1] * 2" (cast_expression "(ulong)(byte)param_9[1]" ( (type_descriptor "ulong" type_identifier) ) (cast_expression "(byte)param_9[1]" ( (type_descriptor "byte" type_identifier) ) (subscript_expression "param_9[1]" identifier [ number_literal ]))) * number_literal)) ))))) ;) (while_statement "while ((pcVar11 = pcVar18, (bVar1 & 0x20) != 0 &&\n               (pcVar18 = pcVar18 + 1, pcVar11 = pcVar18, param_10 != pcVar18))) {\n          bVar1 = *(byte *)(lVar2 + 1 + (ulong)(byte)*pcVar18 * 2);\n        }" while (parenthesized_expression "((pcVar11 = pcVar18, (bVar1 & 0x20) != 0 &&\n               (pcVar18 = pcVar18 + 1, pcVar11 = pcVar18, param_10 != pcVar18)))" ( (parenthesized_expression "(pcVar11 = pcVar18, (bVar1 & 0x20) != 0 &&\n               (pcVar18 = pcVar18 + 1, pcVar11 = pcVar18, param_10 != pcVar18))" ( (comma_expression "pcVar11 = pcVar18, (bVar1 & 0x20) != 0 &&\n               (pcVar18 = pcVar18 + 1, pcVar11 = pcVar18, param_10 != pcVar18)" (assignment_expression "pcVar11 = pcVar18" identifier = identifier) , (binary_expression "(bVar1 & 0x20) != 0 &&\n               (pcVar18 = pcVar18 + 1, pcVar11 = pcVar18, param_10 != pcVar18)" (binary_expression "(bVar1 & 0x20) != 0" (parenthesized_expression "(bVar1 & 0x20)" ( (binary_expression "bVar1 & 0x20" identifier & number_literal) )) != number_literal) && (parenthesized_expression "(pcVar18 = pcVar18 + 1, pcVar11 = pcVar18, param_10 != pcVar18)" ( (comma_expression "pcVar18 = pcVar18 + 1, pcVar11 = pcVar18, param_10 != pcVar18" (assignment_expression "pcVar18 = pcVar18 + 1" identifier = (binary_expression "pcVar18 + 1" identifier + number_literal)) , (comma_expression "pcVar11 = pcVar18, param_10 != pcVar18" (assignment_expression "pcVar11 = pcVar18" identifier = identifier) , (binary_expression "param_10 != pcVar18" identifier != identifier))) )))) )) )) (compound_statement "{\n          bVar1 = *(byte *)(lVar2 + 1 + (ulong)(byte)*pcVar18 * 2);\n        }" { (expression_statement "bVar1 = *(byte *)(lVar2 + 1 + (ulong)(byte)*pcVar18 * 2);" (assignment_expression "bVar1 = *(byte *)(lVar2 + 1 + (ulong)(byte)*pcVar18 * 2)" identifier = (pointer_expression "*(byte *)(lVar2 + 1 + (ulong)(byte)*pcVar18 * 2)" * (cast_expression "(byte *)(lVar2 + 1 + (ulong)(byte)*pcVar18 * 2)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar2 + 1 + (ulong)(byte)*pcVar18 * 2)" ( (binary_expression "lVar2 + 1 + (ulong)(byte)*pcVar18 * 2" (binary_expression "lVar2 + 1" identifier + number_literal) + (binary_expression "(ulong)(byte)*pcVar18 * 2" (binary_expression "(ulong)(byte)*pcVar18" (call_expression "(ulong)(byte)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(byte)" ( identifier ))) * identifier) * number_literal)) ))))) ;) })) })) (do_statement "do {\n        param_9 = pcVar11;\n        bVar20 = (int)uVar16 == -1;\n        bVar15 = bVar20;\n        bVar17 = bVar19;\n        if (param_2 != (long *)0x0 && bVar20) {\n          if ((ulong)param_2[3] <= (ulong)param_2[2]) {\n            iVar9 = (**(code **)(*param_2 + 0x48))(param_2);\n            bVar15 = iVar9 == -1 && (param_2 != (long *)0x0 && bVar20);\n            if (iVar9 == -1) {\n              param_2 = (long *)0x0;\n            }\n            goto LAB_00296353;\n          }\n          bVar15 = false;\n          if (param_4 != (long *)0x0 && bVar19) goto LAB_002963d5;\nLAB_00296362:\n          if (bVar15 == bVar17) goto LAB_00295fe1;\n        }\n        else {\nLAB_00296353:\n          if (param_4 == (long *)0x0 || !bVar19) goto LAB_00296362;\nLAB_002963d5:\n          bVar17 = param_4 != (long *)0x0;\n          if ((ulong)param_4[3] <= (ulong)param_4[2]) {\n            iVar9 = (**(code **)(*param_4 + 0x48))(param_4);\n            if (iVar9 == -1) {\n              param_4 = (long *)0x0;\n            }\n            bVar17 = iVar9 == -1 && (bVar17 && bVar19);\n            goto LAB_00296362;\n          }\n          if (bVar15 == false) goto LAB_00295fe1;\n        }\n        uVar13 = uVar16;\n        if ((param_2 == (long *)0x0) || (!bVar20)) {\nLAB_0029637c:\n          if ((*(byte *)(*(long *)(pcVar10 + 0x30) + 1 + (uVar13 & 0xff) * 2) & 0x20) == 0)\n          goto LAB_00295fe1;\n          pbVar12 = (byte *)param_2[2];\n          if (pbVar12 < (byte *)param_2[3]) goto LAB_00296398;\n          (**(code **)(*param_2 + 0x50))(param_2);\n        }\n        else {\n          pbVar12 = (byte *)param_2[2];\n          if ((byte *)param_2[3] <= pbVar12) {\n            uVar13 = (**(code **)(*param_2 + 0x48))(param_2);\n            if ((int)uVar13 == -1) {\n              param_2 = (long *)0x0;\n            }\n            goto LAB_0029637c;\n          }\n          if ((*(byte *)(*(long *)(pcVar10 + 0x30) + 1 + (ulong)*pbVar12 * 2) & 0x20) == 0)\n          goto code_r0x00296430;\nLAB_00296398:\n          param_2[2] = (long)(pbVar12 + 1);\n        }\n        uVar16 = 0xffffffff;\n        pcVar11 = param_9;\n      } while( true );" do (compound_statement "{\n        param_9 = pcVar11;\n        bVar20 = (int)uVar16 == -1;\n        bVar15 = bVar20;\n        bVar17 = bVar19;\n        if (param_2 != (long *)0x0 && bVar20) {\n          if ((ulong)param_2[3] <= (ulong)param_2[2]) {\n            iVar9 = (**(code **)(*param_2 + 0x48))(param_2);\n            bVar15 = iVar9 == -1 && (param_2 != (long *)0x0 && bVar20);\n            if (iVar9 == -1) {\n              param_2 = (long *)0x0;\n            }\n            goto LAB_00296353;\n          }\n          bVar15 = false;\n          if (param_4 != (long *)0x0 && bVar19) goto LAB_002963d5;\nLAB_00296362:\n          if (bVar15 == bVar17) goto LAB_00295fe1;\n        }\n        else {\nLAB_00296353:\n          if (param_4 == (long *)0x0 || !bVar19) goto LAB_00296362;\nLAB_002963d5:\n          bVar17 = param_4 != (long *)0x0;\n          if ((ulong)param_4[3] <= (ulong)param_4[2]) {\n            iVar9 = (**(code **)(*param_4 + 0x48))(param_4);\n            if (iVar9 == -1) {\n              param_4 = (long *)0x0;\n            }\n            bVar17 = iVar9 == -1 && (bVar17 && bVar19);\n            goto LAB_00296362;\n          }\n          if (bVar15 == false) goto LAB_00295fe1;\n        }\n        uVar13 = uVar16;\n        if ((param_2 == (long *)0x0) || (!bVar20)) {\nLAB_0029637c:\n          if ((*(byte *)(*(long *)(pcVar10 + 0x30) + 1 + (uVar13 & 0xff) * 2) & 0x20) == 0)\n          goto LAB_00295fe1;\n          pbVar12 = (byte *)param_2[2];\n          if (pbVar12 < (byte *)param_2[3]) goto LAB_00296398;\n          (**(code **)(*param_2 + 0x50))(param_2);\n        }\n        else {\n          pbVar12 = (byte *)param_2[2];\n          if ((byte *)param_2[3] <= pbVar12) {\n            uVar13 = (**(code **)(*param_2 + 0x48))(param_2);\n            if ((int)uVar13 == -1) {\n              param_2 = (long *)0x0;\n            }\n            goto LAB_0029637c;\n          }\n          if ((*(byte *)(*(long *)(pcVar10 + 0x30) + 1 + (ulong)*pbVar12 * 2) & 0x20) == 0)\n          goto code_r0x00296430;\nLAB_00296398:\n          param_2[2] = (long)(pbVar12 + 1);\n        }\n        uVar16 = 0xffffffff;\n        pcVar11 = param_9;\n      }" { (expression_statement "param_9 = pcVar11;" (assignment_expression "param_9 = pcVar11" identifier = identifier) ;) (expression_statement "bVar20 = (int)uVar16 == -1;" (assignment_expression "bVar20 = (int)uVar16 == -1" identifier = (binary_expression "(int)uVar16 == -1" (cast_expression "(int)uVar16" ( (type_descriptor "int" primitive_type) ) identifier) == number_literal)) ;) (expression_statement "bVar15 = bVar20;" (assignment_expression "bVar15 = bVar20" identifier = identifier) ;) (expression_statement "bVar17 = bVar19;" (assignment_expression "bVar17 = bVar19" identifier = identifier) ;) (if_statement "if (param_2 != (long *)0x0 && bVar20) {\n          if ((ulong)param_2[3] <= (ulong)param_2[2]) {\n            iVar9 = (**(code **)(*param_2 + 0x48))(param_2);\n            bVar15 = iVar9 == -1 && (param_2 != (long *)0x0 && bVar20);\n            if (iVar9 == -1) {\n              param_2 = (long *)0x0;\n            }\n            goto LAB_00296353;\n          }\n          bVar15 = false;\n          if (param_4 != (long *)0x0 && bVar19) goto LAB_002963d5;\nLAB_00296362:\n          if (bVar15 == bVar17) goto LAB_00295fe1;\n        }\n        else {\nLAB_00296353:\n          if (param_4 == (long *)0x0 || !bVar19) goto LAB_00296362;\nLAB_002963d5:\n          bVar17 = param_4 != (long *)0x0;\n          if ((ulong)param_4[3] <= (ulong)param_4[2]) {\n            iVar9 = (**(code **)(*param_4 + 0x48))(param_4);\n            if (iVar9 == -1) {\n              param_4 = (long *)0x0;\n            }\n            bVar17 = iVar9 == -1 && (bVar17 && bVar19);\n            goto LAB_00296362;\n          }\n          if (bVar15 == false) goto LAB_00295fe1;\n        }" if (parenthesized_expression "(param_2 != (long *)0x0 && bVar20)" ( (binary_expression "param_2 != (long *)0x0 && bVar20" (binary_expression "param_2 != (long *)0x0" identifier != (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) && identifier) )) (compound_statement "{\n          if ((ulong)param_2[3] <= (ulong)param_2[2]) {\n            iVar9 = (**(code **)(*param_2 + 0x48))(param_2);\n            bVar15 = iVar9 == -1 && (param_2 != (long *)0x0 && bVar20);\n            if (iVar9 == -1) {\n              param_2 = (long *)0x0;\n            }\n            goto LAB_00296353;\n          }\n          bVar15 = false;\n          if (param_4 != (long *)0x0 && bVar19) goto LAB_002963d5;\nLAB_00296362:\n          if (bVar15 == bVar17) goto LAB_00295fe1;\n        }" { (if_statement "if ((ulong)param_2[3] <= (ulong)param_2[2]) {\n            iVar9 = (**(code **)(*param_2 + 0x48))(param_2);\n            bVar15 = iVar9 == -1 && (param_2 != (long *)0x0 && bVar20);\n            if (iVar9 == -1) {\n              param_2 = (long *)0x0;\n            }\n            goto LAB_00296353;\n          }" if (parenthesized_expression "((ulong)param_2[3] <= (ulong)param_2[2])" ( (binary_expression "(ulong)param_2[3] <= (ulong)param_2[2]" (cast_expression "(ulong)param_2[3]" ( (type_descriptor "ulong" type_identifier) ) (subscript_expression "param_2[3]" identifier [ number_literal ])) <= (cast_expression "(ulong)param_2[2]" ( (type_descriptor "ulong" type_identifier) ) (subscript_expression "param_2[2]" identifier [ number_literal ]))) )) (compound_statement "{\n            iVar9 = (**(code **)(*param_2 + 0x48))(param_2);\n            bVar15 = iVar9 == -1 && (param_2 != (long *)0x0 && bVar20);\n            if (iVar9 == -1) {\n              param_2 = (long *)0x0;\n            }\n            goto LAB_00296353;\n          }" { (expression_statement "iVar9 = (**(code **)(*param_2 + 0x48))(param_2);" (assignment_expression "iVar9 = (**(code **)(*param_2 + 0x48))(param_2)" identifier = (call_expression "(**(code **)(*param_2 + 0x48))(param_2)" (parenthesized_expression "(**(code **)(*param_2 + 0x48))" ( (pointer_expression "**(code **)(*param_2 + 0x48)" * (pointer_expression "*(code **)(*param_2 + 0x48)" * (cast_expression "(code **)(*param_2 + 0x48)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*param_2 + 0x48)" ( (binary_expression "*param_2 + 0x48" (pointer_expression "*param_2" * identifier) + number_literal) ))))) )) (argument_list "(param_2)" ( identifier )))) ;) (expression_statement "bVar15 = iVar9 == -1 && (param_2 != (long *)0x0 && bVar20);" (assignment_expression "bVar15 = iVar9 == -1 && (param_2 != (long *)0x0 && bVar20)" identifier = (binary_expression "iVar9 == -1 && (param_2 != (long *)0x0 && bVar20)" (binary_expression "iVar9 == -1" identifier == number_literal) && (parenthesized_expression "(param_2 != (long *)0x0 && bVar20)" ( (binary_expression "param_2 != (long *)0x0 && bVar20" (binary_expression "param_2 != (long *)0x0" identifier != (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) && identifier) )))) ;) (if_statement "if (iVar9 == -1) {\n              param_2 = (long *)0x0;\n            }" if (parenthesized_expression "(iVar9 == -1)" ( (binary_expression "iVar9 == -1" identifier == number_literal) )) (compound_statement "{\n              param_2 = (long *)0x0;\n            }" { (expression_statement "param_2 = (long *)0x0;" (assignment_expression "param_2 = (long *)0x0" identifier = (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) ;) })) (goto_statement "goto LAB_00296353;" goto statement_identifier ;) })) (expression_statement "bVar15 = false;" (assignment_expression "bVar15 = false" identifier = false) ;) (if_statement "if (param_4 != (long *)0x0 && bVar19) goto LAB_002963d5;" if (parenthesized_expression "(param_4 != (long *)0x0 && bVar19)" ( (binary_expression "param_4 != (long *)0x0 && bVar19" (binary_expression "param_4 != (long *)0x0" identifier != (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) && identifier) )) (goto_statement "goto LAB_002963d5;" goto statement_identifier ;)) (labeled_statement "LAB_00296362:\n          if (bVar15 == bVar17) goto LAB_00295fe1;" statement_identifier : (if_statement "if (bVar15 == bVar17) goto LAB_00295fe1;" if (parenthesized_expression "(bVar15 == bVar17)" ( (binary_expression "bVar15 == bVar17" identifier == identifier) )) (goto_statement "goto LAB_00295fe1;" goto statement_identifier ;))) }) (else_clause "else {\nLAB_00296353:\n          if (param_4 == (long *)0x0 || !bVar19) goto LAB_00296362;\nLAB_002963d5:\n          bVar17 = param_4 != (long *)0x0;\n          if ((ulong)param_4[3] <= (ulong)param_4[2]) {\n            iVar9 = (**(code **)(*param_4 + 0x48))(param_4);\n            if (iVar9 == -1) {\n              param_4 = (long *)0x0;\n            }\n            bVar17 = iVar9 == -1 && (bVar17 && bVar19);\n            goto LAB_00296362;\n          }\n          if (bVar15 == false) goto LAB_00295fe1;\n        }" else (compound_statement "{\nLAB_00296353:\n          if (param_4 == (long *)0x0 || !bVar19) goto LAB_00296362;\nLAB_002963d5:\n          bVar17 = param_4 != (long *)0x0;\n          if ((ulong)param_4[3] <= (ulong)param_4[2]) {\n            iVar9 = (**(code **)(*param_4 + 0x48))(param_4);\n            if (iVar9 == -1) {\n              param_4 = (long *)0x0;\n            }\n            bVar17 = iVar9 == -1 && (bVar17 && bVar19);\n            goto LAB_00296362;\n          }\n          if (bVar15 == false) goto LAB_00295fe1;\n        }" { (labeled_statement "LAB_00296353:\n          if (param_4 == (long *)0x0 || !bVar19) goto LAB_00296362;" statement_identifier : (if_statement "if (param_4 == (long *)0x0 || !bVar19) goto LAB_00296362;" if (parenthesized_expression "(param_4 == (long *)0x0 || !bVar19)" ( (binary_expression "param_4 == (long *)0x0 || !bVar19" (binary_expression "param_4 == (long *)0x0" identifier == (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) || (unary_expression "!bVar19" ! identifier)) )) (goto_statement "goto LAB_00296362;" goto statement_identifier ;))) (labeled_statement "LAB_002963d5:\n          bVar17 = param_4 != (long *)0x0;" statement_identifier : (expression_statement "bVar17 = param_4 != (long *)0x0;" (assignment_expression "bVar17 = param_4 != (long *)0x0" identifier = (binary_expression "param_4 != (long *)0x0" identifier != (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal))) ;)) (if_statement "if ((ulong)param_4[3] <= (ulong)param_4[2]) {\n            iVar9 = (**(code **)(*param_4 + 0x48))(param_4);\n            if (iVar9 == -1) {\n              param_4 = (long *)0x0;\n            }\n            bVar17 = iVar9 == -1 && (bVar17 && bVar19);\n            goto LAB_00296362;\n          }" if (parenthesized_expression "((ulong)param_4[3] <= (ulong)param_4[2])" ( (binary_expression "(ulong)param_4[3] <= (ulong)param_4[2]" (cast_expression "(ulong)param_4[3]" ( (type_descriptor "ulong" type_identifier) ) (subscript_expression "param_4[3]" identifier [ number_literal ])) <= (cast_expression "(ulong)param_4[2]" ( (type_descriptor "ulong" type_identifier) ) (subscript_expression "param_4[2]" identifier [ number_literal ]))) )) (compound_statement "{\n            iVar9 = (**(code **)(*param_4 + 0x48))(param_4);\n            if (iVar9 == -1) {\n              param_4 = (long *)0x0;\n            }\n            bVar17 = iVar9 == -1 && (bVar17 && bVar19);\n            goto LAB_00296362;\n          }" { (expression_statement "iVar9 = (**(code **)(*param_4 + 0x48))(param_4);" (assignment_expression "iVar9 = (**(code **)(*param_4 + 0x48))(param_4)" identifier = (call_expression "(**(code **)(*param_4 + 0x48))(param_4)" (parenthesized_expression "(**(code **)(*param_4 + 0x48))" ( (pointer_expression "**(code **)(*param_4 + 0x48)" * (pointer_expression "*(code **)(*param_4 + 0x48)" * (cast_expression "(code **)(*param_4 + 0x48)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*param_4 + 0x48)" ( (binary_expression "*param_4 + 0x48" (pointer_expression "*param_4" * identifier) + number_literal) ))))) )) (argument_list "(param_4)" ( identifier )))) ;) (if_statement "if (iVar9 == -1) {\n              param_4 = (long *)0x0;\n            }" if (parenthesized_expression "(iVar9 == -1)" ( (binary_expression "iVar9 == -1" identifier == number_literal) )) (compound_statement "{\n              param_4 = (long *)0x0;\n            }" { (expression_statement "param_4 = (long *)0x0;" (assignment_expression "param_4 = (long *)0x0" identifier = (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) ;) })) (expression_statement "bVar17 = iVar9 == -1 && (bVar17 && bVar19);" (assignment_expression "bVar17 = iVar9 == -1 && (bVar17 && bVar19)" identifier = (binary_expression "iVar9 == -1 && (bVar17 && bVar19)" (binary_expression "iVar9 == -1" identifier == number_literal) && (parenthesized_expression "(bVar17 && bVar19)" ( (binary_expression "bVar17 && bVar19" identifier && identifier) )))) ;) (goto_statement "goto LAB_00296362;" goto statement_identifier ;) })) (if_statement "if (bVar15 == false) goto LAB_00295fe1;" if (parenthesized_expression "(bVar15 == false)" ( (binary_expression "bVar15 == false" identifier == false) )) (goto_statement "goto LAB_00295fe1;" goto statement_identifier ;)) }))) (expression_statement "uVar13 = uVar16;" (assignment_expression "uVar13 = uVar16" identifier = identifier) ;) (if_statement "if ((param_2 == (long *)0x0) || (!bVar20)) {\nLAB_0029637c:\n          if ((*(byte *)(*(long *)(pcVar10 + 0x30) + 1 + (uVar13 & 0xff) * 2) & 0x20) == 0)\n          goto LAB_00295fe1;\n          pbVar12 = (byte *)param_2[2];\n          if (pbVar12 < (byte *)param_2[3]) goto LAB_00296398;\n          (**(code **)(*param_2 + 0x50))(param_2);\n        }\n        else {\n          pbVar12 = (byte *)param_2[2];\n          if ((byte *)param_2[3] <= pbVar12) {\n            uVar13 = (**(code **)(*param_2 + 0x48))(param_2);\n            if ((int)uVar13 == -1) {\n              param_2 = (long *)0x0;\n            }\n            goto LAB_0029637c;\n          }\n          if ((*(byte *)(*(long *)(pcVar10 + 0x30) + 1 + (ulong)*pbVar12 * 2) & 0x20) == 0)\n          goto code_r0x00296430;\nLAB_00296398:\n          param_2[2] = (long)(pbVar12 + 1);\n        }" if (parenthesized_expression "((param_2 == (long *)0x0) || (!bVar20))" ( (binary_expression "(param_2 == (long *)0x0) || (!bVar20)" (parenthesized_expression "(param_2 == (long *)0x0)" ( (binary_expression "param_2 == (long *)0x0" identifier == (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) )) || (parenthesized_expression "(!bVar20)" ( (unary_expression "!bVar20" ! identifier) ))) )) (compound_statement "{\nLAB_0029637c:\n          if ((*(byte *)(*(long *)(pcVar10 + 0x30) + 1 + (uVar13 & 0xff) * 2) & 0x20) == 0)\n          goto LAB_00295fe1;\n          pbVar12 = (byte *)param_2[2];\n          if (pbVar12 < (byte *)param_2[3]) goto LAB_00296398;\n          (**(code **)(*param_2 + 0x50))(param_2);\n        }" { (labeled_statement "LAB_0029637c:\n          if ((*(byte *)(*(long *)(pcVar10 + 0x30) + 1 + (uVar13 & 0xff) * 2) & 0x20) == 0)\n          goto LAB_00295fe1;" statement_identifier : (if_statement "if ((*(byte *)(*(long *)(pcVar10 + 0x30) + 1 + (uVar13 & 0xff) * 2) & 0x20) == 0)\n          goto LAB_00295fe1;" if (parenthesized_expression "((*(byte *)(*(long *)(pcVar10 + 0x30) + 1 + (uVar13 & 0xff) * 2) & 0x20) == 0)" ( (binary_expression "(*(byte *)(*(long *)(pcVar10 + 0x30) + 1 + (uVar13 & 0xff) * 2) & 0x20) == 0" (parenthesized_expression "(*(byte *)(*(long *)(pcVar10 + 0x30) + 1 + (uVar13 & 0xff) * 2) & 0x20)" ( (binary_expression "*(byte *)(*(long *)(pcVar10 + 0x30) + 1 + (uVar13 & 0xff) * 2) & 0x20" (pointer_expression "*(byte *)(*(long *)(pcVar10 + 0x30) + 1 + (uVar13 & 0xff) * 2)" * (cast_expression "(byte *)(*(long *)(pcVar10 + 0x30) + 1 + (uVar13 & 0xff) * 2)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(pcVar10 + 0x30) + 1 + (uVar13 & 0xff) * 2)" ( (binary_expression "*(long *)(pcVar10 + 0x30) + 1 + (uVar13 & 0xff) * 2" (binary_expression "*(long *)(pcVar10 + 0x30) + 1" (pointer_expression "*(long *)(pcVar10 + 0x30)" * (cast_expression "(long *)(pcVar10 + 0x30)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar10 + 0x30)" ( (binary_expression "pcVar10 + 0x30" identifier + number_literal) )))) + number_literal) + (binary_expression "(uVar13 & 0xff) * 2" (parenthesized_expression "(uVar13 & 0xff)" ( (binary_expression "uVar13 & 0xff" identifier & number_literal) )) * number_literal)) )))) & number_literal) )) == number_literal) )) (goto_statement "goto LAB_00295fe1;" goto statement_identifier ;))) (expression_statement "pbVar12 = (byte *)param_2[2];" (assignment_expression "pbVar12 = (byte *)param_2[2]" identifier = (cast_expression "(byte *)param_2[2]" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_2[2]" identifier [ number_literal ]))) ;) (if_statement "if (pbVar12 < (byte *)param_2[3]) goto LAB_00296398;" if (parenthesized_expression "(pbVar12 < (byte *)param_2[3])" ( (binary_expression "pbVar12 < (byte *)param_2[3]" identifier < (cast_expression "(byte *)param_2[3]" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_2[3]" identifier [ number_literal ]))) )) (goto_statement "goto LAB_00296398;" goto statement_identifier ;)) (expression_statement "(**(code **)(*param_2 + 0x50))(param_2);" (call_expression "(**(code **)(*param_2 + 0x50))(param_2)" (parenthesized_expression "(**(code **)(*param_2 + 0x50))" ( (pointer_expression "**(code **)(*param_2 + 0x50)" * (pointer_expression "*(code **)(*param_2 + 0x50)" * (cast_expression "(code **)(*param_2 + 0x50)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*param_2 + 0x50)" ( (binary_expression "*param_2 + 0x50" (pointer_expression "*param_2" * identifier) + number_literal) ))))) )) (argument_list "(param_2)" ( identifier ))) ;) }) (else_clause "else {\n          pbVar12 = (byte *)param_2[2];\n          if ((byte *)param_2[3] <= pbVar12) {\n            uVar13 = (**(code **)(*param_2 + 0x48))(param_2);\n            if ((int)uVar13 == -1) {\n              param_2 = (long *)0x0;\n            }\n            goto LAB_0029637c;\n          }\n          if ((*(byte *)(*(long *)(pcVar10 + 0x30) + 1 + (ulong)*pbVar12 * 2) & 0x20) == 0)\n          goto code_r0x00296430;\nLAB_00296398:\n          param_2[2] = (long)(pbVar12 + 1);\n        }" else (compound_statement "{\n          pbVar12 = (byte *)param_2[2];\n          if ((byte *)param_2[3] <= pbVar12) {\n            uVar13 = (**(code **)(*param_2 + 0x48))(param_2);\n            if ((int)uVar13 == -1) {\n              param_2 = (long *)0x0;\n            }\n            goto LAB_0029637c;\n          }\n          if ((*(byte *)(*(long *)(pcVar10 + 0x30) + 1 + (ulong)*pbVar12 * 2) & 0x20) == 0)\n          goto code_r0x00296430;\nLAB_00296398:\n          param_2[2] = (long)(pbVar12 + 1);\n        }" { (expression_statement "pbVar12 = (byte *)param_2[2];" (assignment_expression "pbVar12 = (byte *)param_2[2]" identifier = (cast_expression "(byte *)param_2[2]" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_2[2]" identifier [ number_literal ]))) ;) (if_statement "if ((byte *)param_2[3] <= pbVar12) {\n            uVar13 = (**(code **)(*param_2 + 0x48))(param_2);\n            if ((int)uVar13 == -1) {\n              param_2 = (long *)0x0;\n            }\n            goto LAB_0029637c;\n          }" if (parenthesized_expression "((byte *)param_2[3] <= pbVar12)" ( (binary_expression "(byte *)param_2[3] <= pbVar12" (cast_expression "(byte *)param_2[3]" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_2[3]" identifier [ number_literal ])) <= identifier) )) (compound_statement "{\n            uVar13 = (**(code **)(*param_2 + 0x48))(param_2);\n            if ((int)uVar13 == -1) {\n              param_2 = (long *)0x0;\n            }\n            goto LAB_0029637c;\n          }" { (expression_statement "uVar13 = (**(code **)(*param_2 + 0x48))(param_2);" (assignment_expression "uVar13 = (**(code **)(*param_2 + 0x48))(param_2)" identifier = (call_expression "(**(code **)(*param_2 + 0x48))(param_2)" (parenthesized_expression "(**(code **)(*param_2 + 0x48))" ( (pointer_expression "**(code **)(*param_2 + 0x48)" * (pointer_expression "*(code **)(*param_2 + 0x48)" * (cast_expression "(code **)(*param_2 + 0x48)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*param_2 + 0x48)" ( (binary_expression "*param_2 + 0x48" (pointer_expression "*param_2" * identifier) + number_literal) ))))) )) (argument_list "(param_2)" ( identifier )))) ;) (if_statement "if ((int)uVar13 == -1) {\n              param_2 = (long *)0x0;\n            }" if (parenthesized_expression "((int)uVar13 == -1)" ( (binary_expression "(int)uVar13 == -1" (cast_expression "(int)uVar13" ( (type_descriptor "int" primitive_type) ) identifier) == number_literal) )) (compound_statement "{\n              param_2 = (long *)0x0;\n            }" { (expression_statement "param_2 = (long *)0x0;" (assignment_expression "param_2 = (long *)0x0" identifier = (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) ;) })) (goto_statement "goto LAB_0029637c;" goto statement_identifier ;) })) (if_statement "if ((*(byte *)(*(long *)(pcVar10 + 0x30) + 1 + (ulong)*pbVar12 * 2) & 0x20) == 0)\n          goto code_r0x00296430;" if (parenthesized_expression "((*(byte *)(*(long *)(pcVar10 + 0x30) + 1 + (ulong)*pbVar12 * 2) & 0x20) == 0)" ( (binary_expression "(*(byte *)(*(long *)(pcVar10 + 0x30) + 1 + (ulong)*pbVar12 * 2) & 0x20) == 0" (parenthesized_expression "(*(byte *)(*(long *)(pcVar10 + 0x30) + 1 + (ulong)*pbVar12 * 2) & 0x20)" ( (binary_expression "*(byte *)(*(long *)(pcVar10 + 0x30) + 1 + (ulong)*pbVar12 * 2) & 0x20" (pointer_expression "*(byte *)(*(long *)(pcVar10 + 0x30) + 1 + (ulong)*pbVar12 * 2)" * (cast_expression "(byte *)(*(long *)(pcVar10 + 0x30) + 1 + (ulong)*pbVar12 * 2)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(pcVar10 + 0x30) + 1 + (ulong)*pbVar12 * 2)" ( (binary_expression "*(long *)(pcVar10 + 0x30) + 1 + (ulong)*pbVar12 * 2" (binary_expression "*(long *)(pcVar10 + 0x30) + 1" (pointer_expression "*(long *)(pcVar10 + 0x30)" * (cast_expression "(long *)(pcVar10 + 0x30)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar10 + 0x30)" ( (binary_expression "pcVar10 + 0x30" identifier + number_literal) )))) + number_literal) + (binary_expression "(ulong)*pbVar12 * 2" (binary_expression "(ulong)*pbVar12" (parenthesized_expression "(ulong)" ( identifier )) * identifier) * number_literal)) )))) & number_literal) )) == number_literal) )) (goto_statement "goto code_r0x00296430;" goto statement_identifier ;)) (labeled_statement "LAB_00296398:\n          param_2[2] = (long)(pbVar12 + 1);" statement_identifier : (expression_statement "param_2[2] = (long)(pbVar12 + 1);" (assignment_expression "param_2[2] = (long)(pbVar12 + 1)" (subscript_expression "param_2[2]" identifier [ number_literal ]) = (cast_expression "(long)(pbVar12 + 1)" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (parenthesized_expression "(pbVar12 + 1)" ( (binary_expression "pbVar12 + 1" identifier + number_literal) )))) ;)) }))) (expression_statement "uVar16 = 0xffffffff;" (assignment_expression "uVar16 = 0xffffffff" identifier = number_literal) ;) (expression_statement "pcVar11 = param_9;" (assignment_expression "pcVar11 = param_9" identifier = identifier) ;) }) while (parenthesized_expression "( true )" ( true )) ;) })) (expression_statement "cVar5 = (char)uVar16;" (assignment_expression "cVar5 = (char)uVar16" identifier = (cast_expression "(char)uVar16" ( (type_descriptor "char" primitive_type) ) identifier)) ;) (expression_statement "cVar3 = cVar5;" (assignment_expression "cVar3 = cVar5" identifier = identifier) ;) (if_statement "if ((param_2 != (long *)0x0) && (bVar20)) {\n      if ((char *)param_2[2] < (char *)param_2[3]) {\n        cVar3 = *(char *)param_2[2];\n      }\n      else {\n        iVar9 = (**(code **)(*param_2 + 0x48))(param_2);\n        cVar3 = -1;\n        if (iVar9 == -1) {\n          param_2 = (long *)0x0;\n        }\n        else {\n          cVar3 = (char)iVar9;\n        }\n      }\n    }" if (parenthesized_expression "((param_2 != (long *)0x0) && (bVar20))" ( (binary_expression "(param_2 != (long *)0x0) && (bVar20)" (parenthesized_expression "(param_2 != (long *)0x0)" ( (binary_expression "param_2 != (long *)0x0" identifier != (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) )) && (parenthesized_expression "(bVar20)" ( identifier ))) )) (compound_statement "{\n      if ((char *)param_2[2] < (char *)param_2[3]) {\n        cVar3 = *(char *)param_2[2];\n      }\n      else {\n        iVar9 = (**(code **)(*param_2 + 0x48))(param_2);\n        cVar3 = -1;\n        if (iVar9 == -1) {\n          param_2 = (long *)0x0;\n        }\n        else {\n          cVar3 = (char)iVar9;\n        }\n      }\n    }" { (if_statement "if ((char *)param_2[2] < (char *)param_2[3]) {\n        cVar3 = *(char *)param_2[2];\n      }\n      else {\n        iVar9 = (**(code **)(*param_2 + 0x48))(param_2);\n        cVar3 = -1;\n        if (iVar9 == -1) {\n          param_2 = (long *)0x0;\n        }\n        else {\n          cVar3 = (char)iVar9;\n        }\n      }" if (parenthesized_expression "((char *)param_2[2] < (char *)param_2[3])" ( (binary_expression "(char *)param_2[2] < (char *)param_2[3]" (cast_expression "(char *)param_2[2]" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_2[2]" identifier [ number_literal ])) < (cast_expression "(char *)param_2[3]" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_2[3]" identifier [ number_literal ]))) )) (compound_statement "{\n        cVar3 = *(char *)param_2[2];\n      }" { (expression_statement "cVar3 = *(char *)param_2[2];" (assignment_expression "cVar3 = *(char *)param_2[2]" identifier = (pointer_expression "*(char *)param_2[2]" * (cast_expression "(char *)param_2[2]" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_2[2]" identifier [ number_literal ])))) ;) }) (else_clause "else {\n        iVar9 = (**(code **)(*param_2 + 0x48))(param_2);\n        cVar3 = -1;\n        if (iVar9 == -1) {\n          param_2 = (long *)0x0;\n        }\n        else {\n          cVar3 = (char)iVar9;\n        }\n      }" else (compound_statement "{\n        iVar9 = (**(code **)(*param_2 + 0x48))(param_2);\n        cVar3 = -1;\n        if (iVar9 == -1) {\n          param_2 = (long *)0x0;\n        }\n        else {\n          cVar3 = (char)iVar9;\n        }\n      }" { (expression_statement "iVar9 = (**(code **)(*param_2 + 0x48))(param_2);" (assignment_expression "iVar9 = (**(code **)(*param_2 + 0x48))(param_2)" identifier = (call_expression "(**(code **)(*param_2 + 0x48))(param_2)" (parenthesized_expression "(**(code **)(*param_2 + 0x48))" ( (pointer_expression "**(code **)(*param_2 + 0x48)" * (pointer_expression "*(code **)(*param_2 + 0x48)" * (cast_expression "(code **)(*param_2 + 0x48)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*param_2 + 0x48)" ( (binary_expression "*param_2 + 0x48" (pointer_expression "*param_2" * identifier) + number_literal) ))))) )) (argument_list "(param_2)" ( identifier )))) ;) (expression_statement "cVar3 = -1;" (assignment_expression "cVar3 = -1" identifier = number_literal) ;) (if_statement "if (iVar9 == -1) {\n          param_2 = (long *)0x0;\n        }\n        else {\n          cVar3 = (char)iVar9;\n        }" if (parenthesized_expression "(iVar9 == -1)" ( (binary_expression "iVar9 == -1" identifier == number_literal) )) (compound_statement "{\n          param_2 = (long *)0x0;\n        }" { (expression_statement "param_2 = (long *)0x0;" (assignment_expression "param_2 = (long *)0x0" identifier = (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) ;) }) (else_clause "else {\n          cVar3 = (char)iVar9;\n        }" else (compound_statement "{\n          cVar3 = (char)iVar9;\n        }" { (expression_statement "cVar3 = (char)iVar9;" (assignment_expression "cVar3 = (char)iVar9" identifier = (cast_expression "(char)iVar9" ( (type_descriptor "char" primitive_type) ) identifier)) ;) }))) }))) })) (expression_statement "cVar3 = (**(code **)(*(long *)pcVar10 + 0x20))(pcVar10,(int)cVar3);" (assignment_expression "cVar3 = (**(code **)(*(long *)pcVar10 + 0x20))(pcVar10,(int)cVar3)" identifier = (call_expression "(**(code **)(*(long *)pcVar10 + 0x20))(pcVar10,(int)cVar3)" (parenthesized_expression "(**(code **)(*(long *)pcVar10 + 0x20))" ( (pointer_expression "**(code **)(*(long *)pcVar10 + 0x20)" * (pointer_expression "*(code **)(*(long *)pcVar10 + 0x20)" * (cast_expression "(code **)(*(long *)pcVar10 + 0x20)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(long *)pcVar10 + 0x20)" ( (binary_expression "*(long *)pcVar10 + 0x20" (pointer_expression "*(long *)pcVar10" * (cast_expression "(long *)pcVar10" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) identifier)) + number_literal) ))))) )) (argument_list "(pcVar10,(int)cVar3)" ( identifier , (cast_expression "(int)cVar3" ( (type_descriptor "int" primitive_type) ) identifier) )))) ;) (expression_statement "cVar4 = (**(code **)(*(long *)pcVar10 + 0x20))(pcVar10,(int)(char)*param_9);" (assignment_expression "cVar4 = (**(code **)(*(long *)pcVar10 + 0x20))(pcVar10,(int)(char)*param_9)" identifier = (call_expression "(**(code **)(*(long *)pcVar10 + 0x20))(pcVar10,(int)(char)*param_9)" (parenthesized_expression "(**(code **)(*(long *)pcVar10 + 0x20))" ( (pointer_expression "**(code **)(*(long *)pcVar10 + 0x20)" * (pointer_expression "*(code **)(*(long *)pcVar10 + 0x20)" * (cast_expression "(code **)(*(long *)pcVar10 + 0x20)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(long *)pcVar10 + 0x20)" ( (binary_expression "*(long *)pcVar10 + 0x20" (pointer_expression "*(long *)pcVar10" * (cast_expression "(long *)pcVar10" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) identifier)) + number_literal) ))))) )) (argument_list "(pcVar10,(int)(char)*param_9)" ( identifier , (cast_expression "(int)(char)*param_9" ( (type_descriptor "int" primitive_type) ) (cast_expression "(char)*param_9" ( (type_descriptor "char" primitive_type) ) (pointer_expression "*param_9" * identifier))) )))) ;) (if_statement "if (cVar4 != cVar3) {\n      if ((param_2 != (long *)0x0) && (bVar20)) {\n        if ((char *)param_2[2] < (char *)param_2[3]) {\n          cVar5 = *(char *)param_2[2];\n        }\n        else {\n          iVar9 = (**(code **)(*param_2 + 0x48))(param_2);\n          cVar5 = -1;\n          if (iVar9 == -1) {\n            param_2 = (long *)0x0;\n          }\n          else {\n            cVar5 = (char)iVar9;\n          }\n        }\n      }\n      cVar5 = (**(code **)(*(long *)pcVar10 + 0x10))(pcVar10,(int)cVar5);\n      cVar3 = (**(code **)(*(long *)pcVar10 + 0x10))(pcVar10,(int)(char)*param_9);\n      if (cVar3 != cVar5) goto LAB_00296748;\n    }" if (parenthesized_expression "(cVar4 != cVar3)" ( (binary_expression "cVar4 != cVar3" identifier != identifier) )) (compound_statement "{\n      if ((param_2 != (long *)0x0) && (bVar20)) {\n        if ((char *)param_2[2] < (char *)param_2[3]) {\n          cVar5 = *(char *)param_2[2];\n        }\n        else {\n          iVar9 = (**(code **)(*param_2 + 0x48))(param_2);\n          cVar5 = -1;\n          if (iVar9 == -1) {\n            param_2 = (long *)0x0;\n          }\n          else {\n            cVar5 = (char)iVar9;\n          }\n        }\n      }\n      cVar5 = (**(code **)(*(long *)pcVar10 + 0x10))(pcVar10,(int)cVar5);\n      cVar3 = (**(code **)(*(long *)pcVar10 + 0x10))(pcVar10,(int)(char)*param_9);\n      if (cVar3 != cVar5) goto LAB_00296748;\n    }" { (if_statement "if ((param_2 != (long *)0x0) && (bVar20)) {\n        if ((char *)param_2[2] < (char *)param_2[3]) {\n          cVar5 = *(char *)param_2[2];\n        }\n        else {\n          iVar9 = (**(code **)(*param_2 + 0x48))(param_2);\n          cVar5 = -1;\n          if (iVar9 == -1) {\n            param_2 = (long *)0x0;\n          }\n          else {\n            cVar5 = (char)iVar9;\n          }\n        }\n      }" if (parenthesized_expression "((param_2 != (long *)0x0) && (bVar20))" ( (binary_expression "(param_2 != (long *)0x0) && (bVar20)" (parenthesized_expression "(param_2 != (long *)0x0)" ( (binary_expression "param_2 != (long *)0x0" identifier != (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) )) && (parenthesized_expression "(bVar20)" ( identifier ))) )) (compound_statement "{\n        if ((char *)param_2[2] < (char *)param_2[3]) {\n          cVar5 = *(char *)param_2[2];\n        }\n        else {\n          iVar9 = (**(code **)(*param_2 + 0x48))(param_2);\n          cVar5 = -1;\n          if (iVar9 == -1) {\n            param_2 = (long *)0x0;\n          }\n          else {\n            cVar5 = (char)iVar9;\n          }\n        }\n      }" { (if_statement "if ((char *)param_2[2] < (char *)param_2[3]) {\n          cVar5 = *(char *)param_2[2];\n        }\n        else {\n          iVar9 = (**(code **)(*param_2 + 0x48))(param_2);\n          cVar5 = -1;\n          if (iVar9 == -1) {\n            param_2 = (long *)0x0;\n          }\n          else {\n            cVar5 = (char)iVar9;\n          }\n        }" if (parenthesized_expression "((char *)param_2[2] < (char *)param_2[3])" ( (binary_expression "(char *)param_2[2] < (char *)param_2[3]" (cast_expression "(char *)param_2[2]" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_2[2]" identifier [ number_literal ])) < (cast_expression "(char *)param_2[3]" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_2[3]" identifier [ number_literal ]))) )) (compound_statement "{\n          cVar5 = *(char *)param_2[2];\n        }" { (expression_statement "cVar5 = *(char *)param_2[2];" (assignment_expression "cVar5 = *(char *)param_2[2]" identifier = (pointer_expression "*(char *)param_2[2]" * (cast_expression "(char *)param_2[2]" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_2[2]" identifier [ number_literal ])))) ;) }) (else_clause "else {\n          iVar9 = (**(code **)(*param_2 + 0x48))(param_2);\n          cVar5 = -1;\n          if (iVar9 == -1) {\n            param_2 = (long *)0x0;\n          }\n          else {\n            cVar5 = (char)iVar9;\n          }\n        }" else (compound_statement "{\n          iVar9 = (**(code **)(*param_2 + 0x48))(param_2);\n          cVar5 = -1;\n          if (iVar9 == -1) {\n            param_2 = (long *)0x0;\n          }\n          else {\n            cVar5 = (char)iVar9;\n          }\n        }" { (expression_statement "iVar9 = (**(code **)(*param_2 + 0x48))(param_2);" (assignment_expression "iVar9 = (**(code **)(*param_2 + 0x48))(param_2)" identifier = (call_expression "(**(code **)(*param_2 + 0x48))(param_2)" (parenthesized_expression "(**(code **)(*param_2 + 0x48))" ( (pointer_expression "**(code **)(*param_2 + 0x48)" * (pointer_expression "*(code **)(*param_2 + 0x48)" * (cast_expression "(code **)(*param_2 + 0x48)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*param_2 + 0x48)" ( (binary_expression "*param_2 + 0x48" (pointer_expression "*param_2" * identifier) + number_literal) ))))) )) (argument_list "(param_2)" ( identifier )))) ;) (expression_statement "cVar5 = -1;" (assignment_expression "cVar5 = -1" identifier = number_literal) ;) (if_statement "if (iVar9 == -1) {\n            param_2 = (long *)0x0;\n          }\n          else {\n            cVar5 = (char)iVar9;\n          }" if (parenthesized_expression "(iVar9 == -1)" ( (binary_expression "iVar9 == -1" identifier == number_literal) )) (compound_statement "{\n            param_2 = (long *)0x0;\n          }" { (expression_statement "param_2 = (long *)0x0;" (assignment_expression "param_2 = (long *)0x0" identifier = (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) ;) }) (else_clause "else {\n            cVar5 = (char)iVar9;\n          }" else (compound_statement "{\n            cVar5 = (char)iVar9;\n          }" { (expression_statement "cVar5 = (char)iVar9;" (assignment_expression "cVar5 = (char)iVar9" identifier = (cast_expression "(char)iVar9" ( (type_descriptor "char" primitive_type) ) identifier)) ;) }))) }))) })) (expression_statement "cVar5 = (**(code **)(*(long *)pcVar10 + 0x10))(pcVar10,(int)cVar5);" (assignment_expression "cVar5 = (**(code **)(*(long *)pcVar10 + 0x10))(pcVar10,(int)cVar5)" identifier = (call_expression "(**(code **)(*(long *)pcVar10 + 0x10))(pcVar10,(int)cVar5)" (parenthesized_expression "(**(code **)(*(long *)pcVar10 + 0x10))" ( (pointer_expression "**(code **)(*(long *)pcVar10 + 0x10)" * (pointer_expression "*(code **)(*(long *)pcVar10 + 0x10)" * (cast_expression "(code **)(*(long *)pcVar10 + 0x10)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(long *)pcVar10 + 0x10)" ( (binary_expression "*(long *)pcVar10 + 0x10" (pointer_expression "*(long *)pcVar10" * (cast_expression "(long *)pcVar10" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) identifier)) + number_literal) ))))) )) (argument_list "(pcVar10,(int)cVar5)" ( identifier , (cast_expression "(int)cVar5" ( (type_descriptor "int" primitive_type) ) identifier) )))) ;) (expression_statement "cVar3 = (**(code **)(*(long *)pcVar10 + 0x10))(pcVar10,(int)(char)*param_9);" (assignment_expression "cVar3 = (**(code **)(*(long *)pcVar10 + 0x10))(pcVar10,(int)(char)*param_9)" identifier = (call_expression "(**(code **)(*(long *)pcVar10 + 0x10))(pcVar10,(int)(char)*param_9)" (parenthesized_expression "(**(code **)(*(long *)pcVar10 + 0x10))" ( (pointer_expression "**(code **)(*(long *)pcVar10 + 0x10)" * (pointer_expression "*(code **)(*(long *)pcVar10 + 0x10)" * (cast_expression "(code **)(*(long *)pcVar10 + 0x10)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(long *)pcVar10 + 0x10)" ( (binary_expression "*(long *)pcVar10 + 0x10" (pointer_expression "*(long *)pcVar10" * (cast_expression "(long *)pcVar10" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) identifier)) + number_literal) ))))) )) (argument_list "(pcVar10,(int)(char)*param_9)" ( identifier , (cast_expression "(int)(char)*param_9" ( (type_descriptor "int" primitive_type) ) (cast_expression "(char)*param_9" ( (type_descriptor "char" primitive_type) ) (pointer_expression "*param_9" * identifier))) )))) ;) (if_statement "if (cVar3 != cVar5) goto LAB_00296748;" if (parenthesized_expression "(cVar3 != cVar5)" ( (binary_expression "cVar3 != cVar5" identifier != identifier) )) (goto_statement "goto LAB_00296748;" goto statement_identifier ;)) })) (if_statement "if ((ulong)param_2[2] < (ulong)param_2[3]) {\n      param_2[2] = param_2[2] + 1;\n    }\n    else {\n      (**(code **)(*param_2 + 0x50))(param_2);\n    }" if (parenthesized_expression "((ulong)param_2[2] < (ulong)param_2[3])" ( (binary_expression "(ulong)param_2[2] < (ulong)param_2[3]" (cast_expression "(ulong)param_2[2]" ( (type_descriptor "ulong" type_identifier) ) (subscript_expression "param_2[2]" identifier [ number_literal ])) < (cast_expression "(ulong)param_2[3]" ( (type_descriptor "ulong" type_identifier) ) (subscript_expression "param_2[3]" identifier [ number_literal ]))) )) (compound_statement "{\n      param_2[2] = param_2[2] + 1;\n    }" { (expression_statement "param_2[2] = param_2[2] + 1;" (assignment_expression "param_2[2] = param_2[2] + 1" (subscript_expression "param_2[2]" identifier [ number_literal ]) = (binary_expression "param_2[2] + 1" (subscript_expression "param_2[2]" identifier [ number_literal ]) + number_literal)) ;) }) (else_clause "else {\n      (**(code **)(*param_2 + 0x50))(param_2);\n    }" else (compound_statement "{\n      (**(code **)(*param_2 + 0x50))(param_2);\n    }" { (expression_statement "(**(code **)(*param_2 + 0x50))(param_2);" (call_expression "(**(code **)(*param_2 + 0x50))(param_2)" (parenthesized_expression "(**(code **)(*param_2 + 0x50))" ( (pointer_expression "**(code **)(*param_2 + 0x50)" * (pointer_expression "*(code **)(*param_2 + 0x50)" * (cast_expression "(code **)(*param_2 + 0x50)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*param_2 + 0x50)" ( (binary_expression "*param_2 + 0x50" (pointer_expression "*param_2" * identifier) + number_literal) ))))) )) (argument_list "(param_2)" ( identifier ))) ;) }))) (expression_statement "param_9 = param_9 + 1;" (assignment_expression "param_9 = param_9 + 1" identifier = (binary_expression "param_9 + 1" identifier + number_literal)) ;) (expression_statement "uVar16 = 0xffffffff;" (assignment_expression "uVar16 = 0xffffffff" identifier = number_literal) ;) (goto_statement "goto LAB_00295fe1;" goto statement_identifier ;) })) (labeled_statement "LAB_00296071:\n  if (cVar7 != (ctype)0x25) goto LAB_00295f20;" statement_identifier : (if_statement "if (cVar7 != (ctype)0x25) goto LAB_00295f20;" if (parenthesized_expression "(cVar7 != (ctype)0x25)" ( (binary_expression "cVar7 != (ctype)0x25" identifier != (cast_expression "(ctype)0x25" ( (type_descriptor "ctype" type_identifier) ) number_literal)) )) (goto_statement "goto LAB_00295f20;" goto statement_identifier ;))) (expression_statement "pcVar18 = param_9 + 1;" (assignment_expression "pcVar18 = param_9 + 1" identifier = (binary_expression "param_9 + 1" identifier + number_literal)) ;) (if_statement "if (param_10 == pcVar18) {\nLAB_00296748:\n    *param_7 = 4;\n  }\n  else {\n    cVar6 = param_9[1];\n    cVar7 = pcVar10[(ulong)(byte)cVar6 + 0x139];\n    if (cVar7 == (ctype)0x0) {\n      cVar7 = cVar6;\n      if (*(code **)(*(long *)pcVar10 + 0x40) != (code *)PTR_do_narrow_003bdd10) {\n        cVar7 = (ctype)(**(code **)(*(long *)pcVar10 + 0x40))(pcVar10,(int)(char)cVar6,0);\n      }\n      cVar8 = cVar7;\n      if (cVar7 != (ctype)0x0) {\n        pcVar10[(ulong)(byte)cVar6 + 0x139] = cVar7;\n        goto LAB_002960ca;\n      }\nLAB_0029655b:\n      cVar7 = (ctype)0x0;\n    }\n    else {\nLAB_002960ca:\n      if ((cVar7 != (ctype)0x45) && (cVar8 = cVar7, cVar7 != (ctype)0x4f)) goto LAB_0029655b;\n      pcVar18 = param_9 + 2;\n      if (param_10 == pcVar18) goto LAB_00296748;\n      cVar6 = param_9[2];\n      cVar8 = pcVar10[(ulong)(byte)cVar6 + 0x139];\n      if (cVar8 == (ctype)0x0) {\n        cVar8 = cVar6;\n        if (*(code **)(*(long *)pcVar10 + 0x40) != (code *)PTR_do_narrow_003bdd10) {\n          cVar8 = (ctype)(**(code **)(*(long *)pcVar10 + 0x40))(pcVar10,(int)(char)cVar6,0);\n        }\n        if (cVar8 != (ctype)0x0) {\n          pcVar10[(ulong)(byte)cVar6 + 0x139] = cVar8;\n        }\n      }\n    }\n    local_d0 = local_d0 & 0xffffffff00000000;\n    local_c8 = local_c8 & 0xffffffff00000000 | param_5 & 0xffffffff;\n    local_50 = local_d0 | uVar16;\n    local_58 = param_2;\n    local_48 = param_4;\n    local_40 = local_c8;\n    pcVar11 = use_facet<std::ctype<char>>((locale *)(param_6 + 0xd0));\n    *param_7 = 0;\n    if (pcVar11[0x38] == (ctype)0x0) {\n      ctype<char>::_M_widen_init((ctype<char> *)pcVar11);\n      cVar6 = (ctype)0x25;\n      if (*(code **)(*(long *)pcVar11 + 0x30) != (code *)PTR_do_widen_003bdfd8) {\n        cVar6 = (ctype)(**(code **)(*(long *)pcVar11 + 0x30))(pcVar11,0x25);\n      }\n    }\n    else {\n      cVar6 = pcVar11[0x5e];\n    }\n    if (cVar7 == (ctype)0x0) {\n      local_5a = (ctype)0x0;\n      local_5b = cVar8;\n    }\n    else {\n      local_59 = 0;\n      local_5b = cVar7;\n      local_5a = cVar8;\n    }\n    local_5c = cVar6;\n    auVar22 = _M_extract_via_format\n                        (param_1,local_58,local_50,local_48,local_40,param_6,param_7,param_8,\n                         &local_5c);\n    local_58 = auVar22._0_8_;\n    local_50 = CONCAT44(local_50._4_4_,auVar22._8_4_);\n    cVar5 = istreambuf_iterator<char,std::char_traits<char>>::equal\n                      ((istreambuf_iterator<char,std::char_traits<char>> *)&local_58,\n                       (istreambuf_iterator *)&local_48);\n    if (cVar5 != '\0') {\n      *param_7 = *param_7 | 2;\n    }\n    uVar16 = local_50 & 0xffffffff;\n    param_9 = pcVar18 + 1;\n    param_2 = local_58;\n    if (param_10 != param_9) goto LAB_00295fef;\n  }" if (parenthesized_expression "(param_10 == pcVar18)" ( (binary_expression "param_10 == pcVar18" identifier == identifier) )) (compound_statement "{\nLAB_00296748:\n    *param_7 = 4;\n  }" { (labeled_statement "LAB_00296748:\n    *param_7 = 4;" statement_identifier : (expression_statement "*param_7 = 4;" (assignment_expression "*param_7 = 4" (pointer_expression "*param_7" * identifier) = number_literal) ;)) }) (else_clause "else {\n    cVar6 = param_9[1];\n    cVar7 = pcVar10[(ulong)(byte)cVar6 + 0x139];\n    if (cVar7 == (ctype)0x0) {\n      cVar7 = cVar6;\n      if (*(code **)(*(long *)pcVar10 + 0x40) != (code *)PTR_do_narrow_003bdd10) {\n        cVar7 = (ctype)(**(code **)(*(long *)pcVar10 + 0x40))(pcVar10,(int)(char)cVar6,0);\n      }\n      cVar8 = cVar7;\n      if (cVar7 != (ctype)0x0) {\n        pcVar10[(ulong)(byte)cVar6 + 0x139] = cVar7;\n        goto LAB_002960ca;\n      }\nLAB_0029655b:\n      cVar7 = (ctype)0x0;\n    }\n    else {\nLAB_002960ca:\n      if ((cVar7 != (ctype)0x45) && (cVar8 = cVar7, cVar7 != (ctype)0x4f)) goto LAB_0029655b;\n      pcVar18 = param_9 + 2;\n      if (param_10 == pcVar18) goto LAB_00296748;\n      cVar6 = param_9[2];\n      cVar8 = pcVar10[(ulong)(byte)cVar6 + 0x139];\n      if (cVar8 == (ctype)0x0) {\n        cVar8 = cVar6;\n        if (*(code **)(*(long *)pcVar10 + 0x40) != (code *)PTR_do_narrow_003bdd10) {\n          cVar8 = (ctype)(**(code **)(*(long *)pcVar10 + 0x40))(pcVar10,(int)(char)cVar6,0);\n        }\n        if (cVar8 != (ctype)0x0) {\n          pcVar10[(ulong)(byte)cVar6 + 0x139] = cVar8;\n        }\n      }\n    }\n    local_d0 = local_d0 & 0xffffffff00000000;\n    local_c8 = local_c8 & 0xffffffff00000000 | param_5 & 0xffffffff;\n    local_50 = local_d0 | uVar16;\n    local_58 = param_2;\n    local_48 = param_4;\n    local_40 = local_c8;\n    pcVar11 = use_facet<std::ctype<char>>((locale *)(param_6 + 0xd0));\n    *param_7 = 0;\n    if (pcVar11[0x38] == (ctype)0x0) {\n      ctype<char>::_M_widen_init((ctype<char> *)pcVar11);\n      cVar6 = (ctype)0x25;\n      if (*(code **)(*(long *)pcVar11 + 0x30) != (code *)PTR_do_widen_003bdfd8) {\n        cVar6 = (ctype)(**(code **)(*(long *)pcVar11 + 0x30))(pcVar11,0x25);\n      }\n    }\n    else {\n      cVar6 = pcVar11[0x5e];\n    }\n    if (cVar7 == (ctype)0x0) {\n      local_5a = (ctype)0x0;\n      local_5b = cVar8;\n    }\n    else {\n      local_59 = 0;\n      local_5b = cVar7;\n      local_5a = cVar8;\n    }\n    local_5c = cVar6;\n    auVar22 = _M_extract_via_format\n                        (param_1,local_58,local_50,local_48,local_40,param_6,param_7,param_8,\n                         &local_5c);\n    local_58 = auVar22._0_8_;\n    local_50 = CONCAT44(local_50._4_4_,auVar22._8_4_);\n    cVar5 = istreambuf_iterator<char,std::char_traits<char>>::equal\n                      ((istreambuf_iterator<char,std::char_traits<char>> *)&local_58,\n                       (istreambuf_iterator *)&local_48);\n    if (cVar5 != '\0') {\n      *param_7 = *param_7 | 2;\n    }\n    uVar16 = local_50 & 0xffffffff;\n    param_9 = pcVar18 + 1;\n    param_2 = local_58;\n    if (param_10 != param_9) goto LAB_00295fef;\n  }" else (compound_statement "{\n    cVar6 = param_9[1];\n    cVar7 = pcVar10[(ulong)(byte)cVar6 + 0x139];\n    if (cVar7 == (ctype)0x0) {\n      cVar7 = cVar6;\n      if (*(code **)(*(long *)pcVar10 + 0x40) != (code *)PTR_do_narrow_003bdd10) {\n        cVar7 = (ctype)(**(code **)(*(long *)pcVar10 + 0x40))(pcVar10,(int)(char)cVar6,0);\n      }\n      cVar8 = cVar7;\n      if (cVar7 != (ctype)0x0) {\n        pcVar10[(ulong)(byte)cVar6 + 0x139] = cVar7;\n        goto LAB_002960ca;\n      }\nLAB_0029655b:\n      cVar7 = (ctype)0x0;\n    }\n    else {\nLAB_002960ca:\n      if ((cVar7 != (ctype)0x45) && (cVar8 = cVar7, cVar7 != (ctype)0x4f)) goto LAB_0029655b;\n      pcVar18 = param_9 + 2;\n      if (param_10 == pcVar18) goto LAB_00296748;\n      cVar6 = param_9[2];\n      cVar8 = pcVar10[(ulong)(byte)cVar6 + 0x139];\n      if (cVar8 == (ctype)0x0) {\n        cVar8 = cVar6;\n        if (*(code **)(*(long *)pcVar10 + 0x40) != (code *)PTR_do_narrow_003bdd10) {\n          cVar8 = (ctype)(**(code **)(*(long *)pcVar10 + 0x40))(pcVar10,(int)(char)cVar6,0);\n        }\n        if (cVar8 != (ctype)0x0) {\n          pcVar10[(ulong)(byte)cVar6 + 0x139] = cVar8;\n        }\n      }\n    }\n    local_d0 = local_d0 & 0xffffffff00000000;\n    local_c8 = local_c8 & 0xffffffff00000000 | param_5 & 0xffffffff;\n    local_50 = local_d0 | uVar16;\n    local_58 = param_2;\n    local_48 = param_4;\n    local_40 = local_c8;\n    pcVar11 = use_facet<std::ctype<char>>((locale *)(param_6 + 0xd0));\n    *param_7 = 0;\n    if (pcVar11[0x38] == (ctype)0x0) {\n      ctype<char>::_M_widen_init((ctype<char> *)pcVar11);\n      cVar6 = (ctype)0x25;\n      if (*(code **)(*(long *)pcVar11 + 0x30) != (code *)PTR_do_widen_003bdfd8) {\n        cVar6 = (ctype)(**(code **)(*(long *)pcVar11 + 0x30))(pcVar11,0x25);\n      }\n    }\n    else {\n      cVar6 = pcVar11[0x5e];\n    }\n    if (cVar7 == (ctype)0x0) {\n      local_5a = (ctype)0x0;\n      local_5b = cVar8;\n    }\n    else {\n      local_59 = 0;\n      local_5b = cVar7;\n      local_5a = cVar8;\n    }\n    local_5c = cVar6;\n    auVar22 = _M_extract_via_format\n                        (param_1,local_58,local_50,local_48,local_40,param_6,param_7,param_8,\n                         &local_5c);\n    local_58 = auVar22._0_8_;\n    local_50 = CONCAT44(local_50._4_4_,auVar22._8_4_);\n    cVar5 = istreambuf_iterator<char,std::char_traits<char>>::equal\n                      ((istreambuf_iterator<char,std::char_traits<char>> *)&local_58,\n                       (istreambuf_iterator *)&local_48);\n    if (cVar5 != '\0') {\n      *param_7 = *param_7 | 2;\n    }\n    uVar16 = local_50 & 0xffffffff;\n    param_9 = pcVar18 + 1;\n    param_2 = local_58;\n    if (param_10 != param_9) goto LAB_00295fef;\n  }" { (expression_statement "cVar6 = param_9[1];" (assignment_expression "cVar6 = param_9[1]" identifier = (subscript_expression "param_9[1]" identifier [ number_literal ])) ;) (expression_statement "cVar7 = pcVar10[(ulong)(byte)cVar6 + 0x139];" (assignment_expression "cVar7 = pcVar10[(ulong)(byte)cVar6 + 0x139]" identifier = (subscript_expression "pcVar10[(ulong)(byte)cVar6 + 0x139]" identifier [ (binary_expression "(ulong)(byte)cVar6 + 0x139" (cast_expression "(ulong)(byte)cVar6" ( (type_descriptor "ulong" type_identifier) ) (cast_expression "(byte)cVar6" ( (type_descriptor "byte" type_identifier) ) identifier)) + number_literal) ])) ;) (if_statement "if (cVar7 == (ctype)0x0) {\n      cVar7 = cVar6;\n      if (*(code **)(*(long *)pcVar10 + 0x40) != (code *)PTR_do_narrow_003bdd10) {\n        cVar7 = (ctype)(**(code **)(*(long *)pcVar10 + 0x40))(pcVar10,(int)(char)cVar6,0);\n      }\n      cVar8 = cVar7;\n      if (cVar7 != (ctype)0x0) {\n        pcVar10[(ulong)(byte)cVar6 + 0x139] = cVar7;\n        goto LAB_002960ca;\n      }\nLAB_0029655b:\n      cVar7 = (ctype)0x0;\n    }\n    else {\nLAB_002960ca:\n      if ((cVar7 != (ctype)0x45) && (cVar8 = cVar7, cVar7 != (ctype)0x4f)) goto LAB_0029655b;\n      pcVar18 = param_9 + 2;\n      if (param_10 == pcVar18) goto LAB_00296748;\n      cVar6 = param_9[2];\n      cVar8 = pcVar10[(ulong)(byte)cVar6 + 0x139];\n      if (cVar8 == (ctype)0x0) {\n        cVar8 = cVar6;\n        if (*(code **)(*(long *)pcVar10 + 0x40) != (code *)PTR_do_narrow_003bdd10) {\n          cVar8 = (ctype)(**(code **)(*(long *)pcVar10 + 0x40))(pcVar10,(int)(char)cVar6,0);\n        }\n        if (cVar8 != (ctype)0x0) {\n          pcVar10[(ulong)(byte)cVar6 + 0x139] = cVar8;\n        }\n      }\n    }" if (parenthesized_expression "(cVar7 == (ctype)0x0)" ( (binary_expression "cVar7 == (ctype)0x0" identifier == (cast_expression "(ctype)0x0" ( (type_descriptor "ctype" type_identifier) ) number_literal)) )) (compound_statement "{\n      cVar7 = cVar6;\n      if (*(code **)(*(long *)pcVar10 + 0x40) != (code *)PTR_do_narrow_003bdd10) {\n        cVar7 = (ctype)(**(code **)(*(long *)pcVar10 + 0x40))(pcVar10,(int)(char)cVar6,0);\n      }\n      cVar8 = cVar7;\n      if (cVar7 != (ctype)0x0) {\n        pcVar10[(ulong)(byte)cVar6 + 0x139] = cVar7;\n        goto LAB_002960ca;\n      }\nLAB_0029655b:\n      cVar7 = (ctype)0x0;\n    }" { (expression_statement "cVar7 = cVar6;" (assignment_expression "cVar7 = cVar6" identifier = identifier) ;) (if_statement "if (*(code **)(*(long *)pcVar10 + 0x40) != (code *)PTR_do_narrow_003bdd10) {\n        cVar7 = (ctype)(**(code **)(*(long *)pcVar10 + 0x40))(pcVar10,(int)(char)cVar6,0);\n      }" if (parenthesized_expression "(*(code **)(*(long *)pcVar10 + 0x40) != (code *)PTR_do_narrow_003bdd10)" ( (binary_expression "*(code **)(*(long *)pcVar10 + 0x40) != (code *)PTR_do_narrow_003bdd10" (pointer_expression "*(code **)(*(long *)pcVar10 + 0x40)" * (cast_expression "(code **)(*(long *)pcVar10 + 0x40)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(long *)pcVar10 + 0x40)" ( (binary_expression "*(long *)pcVar10 + 0x40" (pointer_expression "*(long *)pcVar10" * (cast_expression "(long *)pcVar10" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) identifier)) + number_literal) )))) != (cast_expression "(code *)PTR_do_narrow_003bdd10" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (compound_statement "{\n        cVar7 = (ctype)(**(code **)(*(long *)pcVar10 + 0x40))(pcVar10,(int)(char)cVar6,0);\n      }" { (expression_statement "cVar7 = (ctype)(**(code **)(*(long *)pcVar10 + 0x40))(pcVar10,(int)(char)cVar6,0);" (assignment_expression "cVar7 = (ctype)(**(code **)(*(long *)pcVar10 + 0x40))(pcVar10,(int)(char)cVar6,0)" identifier = (call_expression "(ctype)(**(code **)(*(long *)pcVar10 + 0x40))(pcVar10,(int)(char)cVar6,0)" (call_expression "(ctype)(**(code **)(*(long *)pcVar10 + 0x40))" (parenthesized_expression "(ctype)" ( identifier )) (argument_list "(**(code **)(*(long *)pcVar10 + 0x40))" ( (pointer_expression "**(code **)(*(long *)pcVar10 + 0x40)" * (pointer_expression "*(code **)(*(long *)pcVar10 + 0x40)" * (cast_expression "(code **)(*(long *)pcVar10 + 0x40)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(long *)pcVar10 + 0x40)" ( (binary_expression "*(long *)pcVar10 + 0x40" (pointer_expression "*(long *)pcVar10" * (cast_expression "(long *)pcVar10" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) identifier)) + number_literal) ))))) ))) (argument_list "(pcVar10,(int)(char)cVar6,0)" ( identifier , (cast_expression "(int)(char)cVar6" ( (type_descriptor "int" primitive_type) ) (cast_expression "(char)cVar6" ( (type_descriptor "char" primitive_type) ) identifier)) , number_literal )))) ;) })) (expression_statement "cVar8 = cVar7;" (assignment_expression "cVar8 = cVar7" identifier = identifier) ;) (if_statement "if (cVar7 != (ctype)0x0) {\n        pcVar10[(ulong)(byte)cVar6 + 0x139] = cVar7;\n        goto LAB_002960ca;\n      }" if (parenthesized_expression "(cVar7 != (ctype)0x0)" ( (binary_expression "cVar7 != (ctype)0x0" identifier != (cast_expression "(ctype)0x0" ( (type_descriptor "ctype" type_identifier) ) number_literal)) )) (compound_statement "{\n        pcVar10[(ulong)(byte)cVar6 + 0x139] = cVar7;\n        goto LAB_002960ca;\n      }" { (expression_statement "pcVar10[(ulong)(byte)cVar6 + 0x139] = cVar7;" (assignment_expression "pcVar10[(ulong)(byte)cVar6 + 0x139] = cVar7" (subscript_expression "pcVar10[(ulong)(byte)cVar6 + 0x139]" identifier [ (binary_expression "(ulong)(byte)cVar6 + 0x139" (cast_expression "(ulong)(byte)cVar6" ( (type_descriptor "ulong" type_identifier) ) (cast_expression "(byte)cVar6" ( (type_descriptor "byte" type_identifier) ) identifier)) + number_literal) ]) = identifier) ;) (goto_statement "goto LAB_002960ca;" goto statement_identifier ;) })) (labeled_statement "LAB_0029655b:\n      cVar7 = (ctype)0x0;" statement_identifier : (expression_statement "cVar7 = (ctype)0x0;" (assignment_expression "cVar7 = (ctype)0x0" identifier = (cast_expression "(ctype)0x0" ( (type_descriptor "ctype" type_identifier) ) number_literal)) ;)) }) (else_clause "else {\nLAB_002960ca:\n      if ((cVar7 != (ctype)0x45) && (cVar8 = cVar7, cVar7 != (ctype)0x4f)) goto LAB_0029655b;\n      pcVar18 = param_9 + 2;\n      if (param_10 == pcVar18) goto LAB_00296748;\n      cVar6 = param_9[2];\n      cVar8 = pcVar10[(ulong)(byte)cVar6 + 0x139];\n      if (cVar8 == (ctype)0x0) {\n        cVar8 = cVar6;\n        if (*(code **)(*(long *)pcVar10 + 0x40) != (code *)PTR_do_narrow_003bdd10) {\n          cVar8 = (ctype)(**(code **)(*(long *)pcVar10 + 0x40))(pcVar10,(int)(char)cVar6,0);\n        }\n        if (cVar8 != (ctype)0x0) {\n          pcVar10[(ulong)(byte)cVar6 + 0x139] = cVar8;\n        }\n      }\n    }" else (compound_statement "{\nLAB_002960ca:\n      if ((cVar7 != (ctype)0x45) && (cVar8 = cVar7, cVar7 != (ctype)0x4f)) goto LAB_0029655b;\n      pcVar18 = param_9 + 2;\n      if (param_10 == pcVar18) goto LAB_00296748;\n      cVar6 = param_9[2];\n      cVar8 = pcVar10[(ulong)(byte)cVar6 + 0x139];\n      if (cVar8 == (ctype)0x0) {\n        cVar8 = cVar6;\n        if (*(code **)(*(long *)pcVar10 + 0x40) != (code *)PTR_do_narrow_003bdd10) {\n          cVar8 = (ctype)(**(code **)(*(long *)pcVar10 + 0x40))(pcVar10,(int)(char)cVar6,0);\n        }\n        if (cVar8 != (ctype)0x0) {\n          pcVar10[(ulong)(byte)cVar6 + 0x139] = cVar8;\n        }\n      }\n    }" { (labeled_statement "LAB_002960ca:\n      if ((cVar7 != (ctype)0x45) && (cVar8 = cVar7, cVar7 != (ctype)0x4f)) goto LAB_0029655b;" statement_identifier : (if_statement "if ((cVar7 != (ctype)0x45) && (cVar8 = cVar7, cVar7 != (ctype)0x4f)) goto LAB_0029655b;" if (parenthesized_expression "((cVar7 != (ctype)0x45) && (cVar8 = cVar7, cVar7 != (ctype)0x4f))" ( (binary_expression "(cVar7 != (ctype)0x45) && (cVar8 = cVar7, cVar7 != (ctype)0x4f)" (parenthesized_expression "(cVar7 != (ctype)0x45)" ( (binary_expression "cVar7 != (ctype)0x45" identifier != (cast_expression "(ctype)0x45" ( (type_descriptor "ctype" type_identifier) ) number_literal)) )) && (parenthesized_expression "(cVar8 = cVar7, cVar7 != (ctype)0x4f)" ( (comma_expression "cVar8 = cVar7, cVar7 != (ctype)0x4f" (assignment_expression "cVar8 = cVar7" identifier = identifier) , (binary_expression "cVar7 != (ctype)0x4f" identifier != (cast_expression "(ctype)0x4f" ( (type_descriptor "ctype" type_identifier) ) number_literal))) ))) )) (goto_statement "goto LAB_0029655b;" goto statement_identifier ;))) (expression_statement "pcVar18 = param_9 + 2;" (assignment_expression "pcVar18 = param_9 + 2" identifier = (binary_expression "param_9 + 2" identifier + number_literal)) ;) (if_statement "if (param_10 == pcVar18) goto LAB_00296748;" if (parenthesized_expression "(param_10 == pcVar18)" ( (binary_expression "param_10 == pcVar18" identifier == identifier) )) (goto_statement "goto LAB_00296748;" goto statement_identifier ;)) (expression_statement "cVar6 = param_9[2];" (assignment_expression "cVar6 = param_9[2]" identifier = (subscript_expression "param_9[2]" identifier [ number_literal ])) ;) (expression_statement "cVar8 = pcVar10[(ulong)(byte)cVar6 + 0x139];" (assignment_expression "cVar8 = pcVar10[(ulong)(byte)cVar6 + 0x139]" identifier = (subscript_expression "pcVar10[(ulong)(byte)cVar6 + 0x139]" identifier [ (binary_expression "(ulong)(byte)cVar6 + 0x139" (cast_expression "(ulong)(byte)cVar6" ( (type_descriptor "ulong" type_identifier) ) (cast_expression "(byte)cVar6" ( (type_descriptor "byte" type_identifier) ) identifier)) + number_literal) ])) ;) (if_statement "if (cVar8 == (ctype)0x0) {\n        cVar8 = cVar6;\n        if (*(code **)(*(long *)pcVar10 + 0x40) != (code *)PTR_do_narrow_003bdd10) {\n          cVar8 = (ctype)(**(code **)(*(long *)pcVar10 + 0x40))(pcVar10,(int)(char)cVar6,0);\n        }\n        if (cVar8 != (ctype)0x0) {\n          pcVar10[(ulong)(byte)cVar6 + 0x139] = cVar8;\n        }\n      }" if (parenthesized_expression "(cVar8 == (ctype)0x0)" ( (binary_expression "cVar8 == (ctype)0x0" identifier == (cast_expression "(ctype)0x0" ( (type_descriptor "ctype" type_identifier) ) number_literal)) )) (compound_statement "{\n        cVar8 = cVar6;\n        if (*(code **)(*(long *)pcVar10 + 0x40) != (code *)PTR_do_narrow_003bdd10) {\n          cVar8 = (ctype)(**(code **)(*(long *)pcVar10 + 0x40))(pcVar10,(int)(char)cVar6,0);\n        }\n        if (cVar8 != (ctype)0x0) {\n          pcVar10[(ulong)(byte)cVar6 + 0x139] = cVar8;\n        }\n      }" { (expression_statement "cVar8 = cVar6;" (assignment_expression "cVar8 = cVar6" identifier = identifier) ;) (if_statement "if (*(code **)(*(long *)pcVar10 + 0x40) != (code *)PTR_do_narrow_003bdd10) {\n          cVar8 = (ctype)(**(code **)(*(long *)pcVar10 + 0x40))(pcVar10,(int)(char)cVar6,0);\n        }" if (parenthesized_expression "(*(code **)(*(long *)pcVar10 + 0x40) != (code *)PTR_do_narrow_003bdd10)" ( (binary_expression "*(code **)(*(long *)pcVar10 + 0x40) != (code *)PTR_do_narrow_003bdd10" (pointer_expression "*(code **)(*(long *)pcVar10 + 0x40)" * (cast_expression "(code **)(*(long *)pcVar10 + 0x40)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(long *)pcVar10 + 0x40)" ( (binary_expression "*(long *)pcVar10 + 0x40" (pointer_expression "*(long *)pcVar10" * (cast_expression "(long *)pcVar10" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) identifier)) + number_literal) )))) != (cast_expression "(code *)PTR_do_narrow_003bdd10" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (compound_statement "{\n          cVar8 = (ctype)(**(code **)(*(long *)pcVar10 + 0x40))(pcVar10,(int)(char)cVar6,0);\n        }" { (expression_statement "cVar8 = (ctype)(**(code **)(*(long *)pcVar10 + 0x40))(pcVar10,(int)(char)cVar6,0);" (assignment_expression "cVar8 = (ctype)(**(code **)(*(long *)pcVar10 + 0x40))(pcVar10,(int)(char)cVar6,0)" identifier = (call_expression "(ctype)(**(code **)(*(long *)pcVar10 + 0x40))(pcVar10,(int)(char)cVar6,0)" (call_expression "(ctype)(**(code **)(*(long *)pcVar10 + 0x40))" (parenthesized_expression "(ctype)" ( identifier )) (argument_list "(**(code **)(*(long *)pcVar10 + 0x40))" ( (pointer_expression "**(code **)(*(long *)pcVar10 + 0x40)" * (pointer_expression "*(code **)(*(long *)pcVar10 + 0x40)" * (cast_expression "(code **)(*(long *)pcVar10 + 0x40)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(long *)pcVar10 + 0x40)" ( (binary_expression "*(long *)pcVar10 + 0x40" (pointer_expression "*(long *)pcVar10" * (cast_expression "(long *)pcVar10" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) identifier)) + number_literal) ))))) ))) (argument_list "(pcVar10,(int)(char)cVar6,0)" ( identifier , (cast_expression "(int)(char)cVar6" ( (type_descriptor "int" primitive_type) ) (cast_expression "(char)cVar6" ( (type_descriptor "char" primitive_type) ) identifier)) , number_literal )))) ;) })) (if_statement "if (cVar8 != (ctype)0x0) {\n          pcVar10[(ulong)(byte)cVar6 + 0x139] = cVar8;\n        }" if (parenthesized_expression "(cVar8 != (ctype)0x0)" ( (binary_expression "cVar8 != (ctype)0x0" identifier != (cast_expression "(ctype)0x0" ( (type_descriptor "ctype" type_identifier) ) number_literal)) )) (compound_statement "{\n          pcVar10[(ulong)(byte)cVar6 + 0x139] = cVar8;\n        }" { (expression_statement "pcVar10[(ulong)(byte)cVar6 + 0x139] = cVar8;" (assignment_expression "pcVar10[(ulong)(byte)cVar6 + 0x139] = cVar8" (subscript_expression "pcVar10[(ulong)(byte)cVar6 + 0x139]" identifier [ (binary_expression "(ulong)(byte)cVar6 + 0x139" (cast_expression "(ulong)(byte)cVar6" ( (type_descriptor "ulong" type_identifier) ) (cast_expression "(byte)cVar6" ( (type_descriptor "byte" type_identifier) ) identifier)) + number_literal) ]) = identifier) ;) })) })) }))) (expression_statement "local_d0 = local_d0 & 0xffffffff00000000;" (assignment_expression "local_d0 = local_d0 & 0xffffffff00000000" identifier = (binary_expression "local_d0 & 0xffffffff00000000" identifier & number_literal)) ;) (expression_statement "local_c8 = local_c8 & 0xffffffff00000000 | param_5 & 0xffffffff;" (assignment_expression "local_c8 = local_c8 & 0xffffffff00000000 | param_5 & 0xffffffff" identifier = (binary_expression "local_c8 & 0xffffffff00000000 | param_5 & 0xffffffff" (binary_expression "local_c8 & 0xffffffff00000000" identifier & number_literal) | (binary_expression "param_5 & 0xffffffff" identifier & number_literal))) ;) (expression_statement "local_50 = local_d0 | uVar16;" (assignment_expression "local_50 = local_d0 | uVar16" identifier = (binary_expression "local_d0 | uVar16" identifier | identifier)) ;) (expression_statement "local_58 = param_2;" (assignment_expression "local_58 = param_2" identifier = identifier) ;) (expression_statement "local_48 = param_4;" (assignment_expression "local_48 = param_4" identifier = identifier) ;) (expression_statement "local_40 = local_c8;" (assignment_expression "local_40 = local_c8" identifier = identifier) ;) (expression_statement "pcVar11 = use_facet<std::ctype<char>>((locale *)(param_6 + 0xd0));" (binary_expression "pcVar11 = use_facet<std::ctype<char>>((locale *)(param_6 + 0xd0))" (assignment_expression "pcVar11 = use_facet<std" identifier = (binary_expression "use_facet<std" identifier < identifier)) (ERROR "::ctype" : : identifier) < (binary_expression "char>>((locale *)(param_6 + 0xd0))" identifier >> (parenthesized_expression "((locale *)(param_6 + 0xd0))" ( (cast_expression "(locale *)(param_6 + 0xd0)" ( (type_descriptor "locale *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_6 + 0xd0)" ( (binary_expression "param_6 + 0xd0" identifier + number_literal) ))) )))) ;) (expression_statement "*param_7 = 0;" (assignment_expression "*param_7 = 0" (pointer_expression "*param_7" * identifier) = number_literal) ;) (if_statement "if (pcVar11[0x38] == (ctype)0x0) {\n      ctype<char>::_M_widen_init((ctype<char> *)pcVar11);\n      cVar6 = (ctype)0x25;\n      if (*(code **)(*(long *)pcVar11 + 0x30) != (code *)PTR_do_widen_003bdfd8) {\n        cVar6 = (ctype)(**(code **)(*(long *)pcVar11 + 0x30))(pcVar11,0x25);\n      }\n    }\n    else {\n      cVar6 = pcVar11[0x5e];\n    }" if (parenthesized_expression "(pcVar11[0x38] == (ctype)0x0)" ( (binary_expression "pcVar11[0x38] == (ctype)0x0" (subscript_expression "pcVar11[0x38]" identifier [ number_literal ]) == (cast_expression "(ctype)0x0" ( (type_descriptor "ctype" type_identifier) ) number_literal)) )) (compound_statement "{\n      ctype<char>::_M_widen_init((ctype<char> *)pcVar11);\n      cVar6 = (ctype)0x25;\n      if (*(code **)(*(long *)pcVar11 + 0x30) != (code *)PTR_do_widen_003bdfd8) {\n        cVar6 = (ctype)(**(code **)(*(long *)pcVar11 + 0x30))(pcVar11,0x25);\n      }\n    }" { (expression_statement "ctype<char>::_M_widen_init((ctype<char> *)pcVar11);" (binary_expression "ctype<char>::_M_widen_init((ctype<char> *)pcVar11)" (binary_expression "ctype<char" identifier < identifier) > (ERROR "::" : :) (call_expression "_M_widen_init((ctype<char> *)pcVar11)" identifier (argument_list "((ctype<char> *)pcVar11)" ( (parenthesized_expression "(ctype<char> *)pcVar11)" ( (binary_expression "ctype<char> *)pcVar11" (binary_expression "ctype<char" identifier < identifier) > (pointer_expression "*)pcVar11" * (ERROR ")" )) identifier)) )) )))) ;) (expression_statement "cVar6 = (ctype)0x25;" (assignment_expression "cVar6 = (ctype)0x25" identifier = (cast_expression "(ctype)0x25" ( (type_descriptor "ctype" type_identifier) ) number_literal)) ;) (if_statement "if (*(code **)(*(long *)pcVar11 + 0x30) != (code *)PTR_do_widen_003bdfd8) {\n        cVar6 = (ctype)(**(code **)(*(long *)pcVar11 + 0x30))(pcVar11,0x25);\n      }" if (parenthesized_expression "(*(code **)(*(long *)pcVar11 + 0x30) != (code *)PTR_do_widen_003bdfd8)" ( (binary_expression "*(code **)(*(long *)pcVar11 + 0x30) != (code *)PTR_do_widen_003bdfd8" (pointer_expression "*(code **)(*(long *)pcVar11 + 0x30)" * (cast_expression "(code **)(*(long *)pcVar11 + 0x30)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(long *)pcVar11 + 0x30)" ( (binary_expression "*(long *)pcVar11 + 0x30" (pointer_expression "*(long *)pcVar11" * (cast_expression "(long *)pcVar11" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) identifier)) + number_literal) )))) != (cast_expression "(code *)PTR_do_widen_003bdfd8" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (compound_statement "{\n        cVar6 = (ctype)(**(code **)(*(long *)pcVar11 + 0x30))(pcVar11,0x25);\n      }" { (expression_statement "cVar6 = (ctype)(**(code **)(*(long *)pcVar11 + 0x30))(pcVar11,0x25);" (assignment_expression "cVar6 = (ctype)(**(code **)(*(long *)pcVar11 + 0x30))(pcVar11,0x25)" identifier = (call_expression "(ctype)(**(code **)(*(long *)pcVar11 + 0x30))(pcVar11,0x25)" (call_expression "(ctype)(**(code **)(*(long *)pcVar11 + 0x30))" (parenthesized_expression "(ctype)" ( identifier )) (argument_list "(**(code **)(*(long *)pcVar11 + 0x30))" ( (pointer_expression "**(code **)(*(long *)pcVar11 + 0x30)" * (pointer_expression "*(code **)(*(long *)pcVar11 + 0x30)" * (cast_expression "(code **)(*(long *)pcVar11 + 0x30)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(long *)pcVar11 + 0x30)" ( (binary_expression "*(long *)pcVar11 + 0x30" (pointer_expression "*(long *)pcVar11" * (cast_expression "(long *)pcVar11" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) identifier)) + number_literal) ))))) ))) (argument_list "(pcVar11,0x25)" ( identifier , number_literal )))) ;) })) }) (else_clause "else {\n      cVar6 = pcVar11[0x5e];\n    }" else (compound_statement "{\n      cVar6 = pcVar11[0x5e];\n    }" { (expression_statement "cVar6 = pcVar11[0x5e];" (assignment_expression "cVar6 = pcVar11[0x5e]" identifier = (subscript_expression "pcVar11[0x5e]" identifier [ number_literal ])) ;) }))) (if_statement "if (cVar7 == (ctype)0x0) {\n      local_5a = (ctype)0x0;\n      local_5b = cVar8;\n    }\n    else {\n      local_59 = 0;\n      local_5b = cVar7;\n      local_5a = cVar8;\n    }" if (parenthesized_expression "(cVar7 == (ctype)0x0)" ( (binary_expression "cVar7 == (ctype)0x0" identifier == (cast_expression "(ctype)0x0" ( (type_descriptor "ctype" type_identifier) ) number_literal)) )) (compound_statement "{\n      local_5a = (ctype)0x0;\n      local_5b = cVar8;\n    }" { (expression_statement "local_5a = (ctype)0x0;" (assignment_expression "local_5a = (ctype)0x0" identifier = (cast_expression "(ctype)0x0" ( (type_descriptor "ctype" type_identifier) ) number_literal)) ;) (expression_statement "local_5b = cVar8;" (assignment_expression "local_5b = cVar8" identifier = identifier) ;) }) (else_clause "else {\n      local_59 = 0;\n      local_5b = cVar7;\n      local_5a = cVar8;\n    }" else (compound_statement "{\n      local_59 = 0;\n      local_5b = cVar7;\n      local_5a = cVar8;\n    }" { (expression_statement "local_59 = 0;" (assignment_expression "local_59 = 0" identifier = number_literal) ;) (expression_statement "local_5b = cVar7;" (assignment_expression "local_5b = cVar7" identifier = identifier) ;) (expression_statement "local_5a = cVar8;" (assignment_expression "local_5a = cVar8" identifier = identifier) ;) }))) (expression_statement "local_5c = cVar6;" (assignment_expression "local_5c = cVar6" identifier = identifier) ;) (expression_statement "auVar22 = _M_extract_via_format\n                        (param_1,local_58,local_50,local_48,local_40,param_6,param_7,param_8,\n                         &local_5c);" (assignment_expression "auVar22 = _M_extract_via_format\n                        (param_1,local_58,local_50,local_48,local_40,param_6,param_7,param_8,\n                         &local_5c)" identifier = (call_expression "_M_extract_via_format\n                        (param_1,local_58,local_50,local_48,local_40,param_6,param_7,param_8,\n                         &local_5c)" identifier (argument_list "(param_1,local_58,local_50,local_48,local_40,param_6,param_7,param_8,\n                         &local_5c)" ( identifier , identifier , identifier , identifier , identifier , identifier , identifier , identifier , (pointer_expression "&local_5c" & identifier) )))) ;) (expression_statement "local_58 = auVar22._0_8_;" (assignment_expression "local_58 = auVar22._0_8_" identifier = (field_expression "auVar22._0_8_" identifier . field_identifier)) ;) (expression_statement "local_50 = CONCAT44(local_50._4_4_,auVar22._8_4_);" (assignment_expression "local_50 = CONCAT44(local_50._4_4_,auVar22._8_4_)" identifier = (call_expression "CONCAT44(local_50._4_4_,auVar22._8_4_)" identifier (argument_list "(local_50._4_4_,auVar22._8_4_)" ( (field_expression "local_50._4_4_" identifier . field_identifier) , (field_expression "auVar22._8_4_" identifier . field_identifier) )))) ;) (ERROR "cVar5 = istreambuf_iterator<char,std::" (comma_expression "cVar5 = istreambuf_iterator<char,std" (assignment_expression "cVar5 = istreambuf_iterator<char" identifier = (binary_expression "istreambuf_iterator<char" identifier < identifier)) , identifier) : :) (expression_statement "char_traits<char>>::equal\n                      ((istreambuf_iterator<char,std::char_traits<char>> *)&local_58,\n                       (istreambuf_iterator *)&local_48);" (binary_expression "char_traits<char>>::equal\n                      ((istreambuf_iterator<char,std::char_traits<char>> *)&local_58,\n                       (istreambuf_iterator *)&local_48)" identifier < (binary_expression "char>>::equal\n                      ((istreambuf_iterator<char,std::char_traits<char>> *)&local_58,\n                       (istreambuf_iterator *)&local_48)" identifier >> (ERROR "::" : :) (call_expression "equal\n                      ((istreambuf_iterator<char,std::char_traits<char>> *)&local_58,\n                       (istreambuf_iterator *)&local_48)" identifier (argument_list "((istreambuf_iterator<char,std::char_traits<char>> *)&local_58,\n                       (istreambuf_iterator *)&local_48)" ( (binary_expression "(istreambuf_iterator<char,std::char_traits<char>> *)&local_58" (parenthesized_expression "(istreambuf_iterator<char,std::char_traits<char>> *)" ( (ERROR "istreambuf_iterator<char,std::" (comma_expression "istreambuf_iterator<char,std" (binary_expression "istreambuf_iterator<char" identifier < identifier) , identifier) : :) (binary_expression "char_traits<char>> *" identifier < (binary_expression "char>> *" identifier >> (pointer_expression "*" * identifier))) )) & identifier) , (cast_expression "(istreambuf_iterator *)&local_48" ( (type_descriptor "istreambuf_iterator *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&local_48" & identifier)) ))))) ;) (if_statement "if (cVar5 != '\0') {\n      *param_7 = *param_7 | 2;\n    }" if (parenthesized_expression "(cVar5 != '\0')" ( (binary_expression "cVar5 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n      *param_7 = *param_7 | 2;\n    }" { (expression_statement "*param_7 = *param_7 | 2;" (assignment_expression "*param_7 = *param_7 | 2" (pointer_expression "*param_7" * identifier) = (binary_expression "*param_7 | 2" (pointer_expression "*param_7" * identifier) | number_literal)) ;) })) (expression_statement "uVar16 = local_50 & 0xffffffff;" (assignment_expression "uVar16 = local_50 & 0xffffffff" identifier = (binary_expression "local_50 & 0xffffffff" identifier & number_literal)) ;) (expression_statement "param_9 = pcVar18 + 1;" (assignment_expression "param_9 = pcVar18 + 1" identifier = (binary_expression "pcVar18 + 1" identifier + number_literal)) ;) (expression_statement "param_2 = local_58;" (assignment_expression "param_2 = local_58" identifier = identifier) ;) (if_statement "if (param_10 != param_9) goto LAB_00295fef;" if (parenthesized_expression "(param_10 != param_9)" ( (binary_expression "param_10 != param_9" identifier != identifier) )) (goto_statement "goto LAB_00295fef;" goto statement_identifier ;)) }))) (goto_statement "goto LAB_002962c3;" goto statement_identifier ;) (labeled_statement "code_r0x00296430:\n  uVar16 = 0xffffffff;" statement_identifier : (expression_statement "uVar16 = 0xffffffff;" (assignment_expression "uVar16 = 0xffffffff" identifier = number_literal) ;)) (labeled_statement "LAB_00295fe1:\n  if (param_10 == param_9) goto LAB_002962c3;" statement_identifier : (if_statement "if (param_10 == param_9) goto LAB_002962c3;" if (parenthesized_expression "(param_10 == param_9)" ( (binary_expression "param_10 == param_9" identifier == identifier) )) (goto_statement "goto LAB_002962c3;" goto statement_identifier ;))) (labeled_statement "LAB_00295fef:\n  if (*param_7 != 0) goto LAB_002962c3;" statement_identifier : (if_statement "if (*param_7 != 0) goto LAB_002962c3;" if (parenthesized_expression "(*param_7 != 0)" ( (binary_expression "*param_7 != 0" (pointer_expression "*param_7" * identifier) != number_literal) )) (goto_statement "goto LAB_002962c3;" goto statement_identifier ;))) (goto_statement "goto LAB_00296001;" goto statement_identifier ;) }))
(translation_unit "undefined1  [16]\nFUN_00295e90(undefined8 param_1,long *param_2,ulong param_3,long *param_4,ulong param_5,long param_6\n            ,uint *param_7,undefined8 param_8,byte *param_9,byte *param_10)\n\n{\n  byte bVar1;\n  long lVar2;\n  byte *pbVar3;\n  char cVar4;\n  char cVar5;\n  char cVar6;\n  undefined1 uVar7;\n  byte bVar8;\n  byte bVar9;\n  int iVar10;\n  long *plVar11;\n  long *plVar12;\n  ulong uVar13;\n  bool bVar14;\n  bool bVar15;\n  ulong uVar16;\n  bool bVar17;\n  byte *pbVar18;\n  bool bVar19;\n  bool bVar20;\n  undefined1 auVar21 [16];\n  undefined1 auVar22 [12];\n  ulong local_d0;\n  ulong local_c8;\n  undefined1 local_5c;\n  byte local_5b;\n  byte local_5a;\n  undefined1 local_59;\n  long *local_58;\n  ulong local_50;\n  long *local_48;\n  ulong local_40;\n  \n  plVar11 = (long *)FUN_00288720(param_6 + 0xd0);\n  uVar16 = param_3 & 0xffffffff;\n  *param_7 = 0;\n  local_d0 = param_3;\n  if (param_9 == param_10) {\nLAB_002962c3:\n    auVar21._8_8_ = uVar16 | local_d0 & 0xffffffff00000000;\n    auVar21._0_8_ = param_2;\n    return auVar21;\n  }\n  bVar19 = (int)param_5 == -1;\n  local_c8 = param_5;\nLAB_00296001:\n  bVar20 = (int)uVar16 == -1;\n  bVar17 = param_2 != (long *)0x0 && bVar20;\n  bVar15 = bVar20;\n  if (bVar17) {\n    if ((ulong)param_2[2] < (ulong)param_2[3]) {\n      bVar15 = false;\n    }\n    else {\n      iVar10 = (**(code **)(*param_2 + 0x48))(param_2);\n      bVar15 = iVar10 == -1 && bVar17;\n      if (iVar10 == -1) {\n        param_2 = (long *)0x0;\n      }\n    }\n  }\n  bVar14 = param_4 != (long *)0x0 && bVar19;\n  bVar17 = bVar19;\n  if (bVar14) {\n    if ((ulong)param_4[3] <= (ulong)param_4[2]) {\n      iVar10 = (**(code **)(*param_4 + 0x48))(param_4);\n      if (iVar10 == -1) {\n        param_4 = (long *)0x0;\n      }\n      bVar17 = iVar10 == -1 && bVar14;\n      goto LAB_0029602d;\n    }\n    if (bVar15 == false) goto LAB_00296469;\n  }\n  else {\nLAB_0029602d:\n    if (bVar17 == bVar15) {\nLAB_00296469:\n      *param_7 = 6;\n      goto LAB_002962c3;\n    }\n  }\n  bVar1 = *param_9;\n  bVar8 = *(byte *)((long)plVar11 + (ulong)bVar1 + 0x139);\n  if (bVar8 == 0) {\n    bVar8 = bVar1;\n    if (*(code **)(*plVar11 + 0x40) != (code *)PTR_FUN_003bdd10) {\n      bVar8 = (**(code **)(*plVar11 + 0x40))(plVar11,(int)(char)bVar1,0);\n    }\n    if (bVar8 != 0) {\n      *(byte *)((long)plVar11 + (ulong)bVar1 + 0x139) = bVar8;\n      goto LAB_00296071;\n    }\nLAB_00295f20:\n    lVar2 = plVar11[6];\n    if ((*(byte *)(lVar2 + 1 + (ulong)*param_9 * 2) & 0x20) != 0) {\n      pbVar18 = param_9 + 1;\n      pbVar3 = param_10;\n      if (param_10 != pbVar18) {\n        bVar1 = *(byte *)(lVar2 + 1 + (ulong)param_9[1] * 2);\n        while ((pbVar3 = pbVar18, (bVar1 & 0x20) != 0 &&\n               (pbVar18 = pbVar18 + 1, pbVar3 = pbVar18, param_10 != pbVar18))) {\n          bVar1 = *(byte *)(lVar2 + 1 + (ulong)*pbVar18 * 2);\n        }\n      }\n      do {\n        param_9 = pbVar3;\n        bVar20 = (int)uVar16 == -1;\n        bVar15 = bVar20;\n        bVar17 = bVar19;\n        if (param_2 != (long *)0x0 && bVar20) {\n          if ((ulong)param_2[3] <= (ulong)param_2[2]) {\n            iVar10 = (**(code **)(*param_2 + 0x48))(param_2);\n            bVar15 = iVar10 == -1 && (param_2 != (long *)0x0 && bVar20);\n            if (iVar10 == -1) {\n              param_2 = (long *)0x0;\n            }\n            goto LAB_00296353;\n          }\n          bVar15 = false;\n          if (param_4 != (long *)0x0 && bVar19) goto LAB_002963d5;\nLAB_00296362:\n          if (bVar15 == bVar17) goto LAB_00295fe1;\n        }\n        else {\nLAB_00296353:\n          if (param_4 == (long *)0x0 || !bVar19) goto LAB_00296362;\nLAB_002963d5:\n          bVar17 = param_4 != (long *)0x0;\n          if ((ulong)param_4[3] <= (ulong)param_4[2]) {\n            iVar10 = (**(code **)(*param_4 + 0x48))(param_4);\n            if (iVar10 == -1) {\n              param_4 = (long *)0x0;\n            }\n            bVar17 = iVar10 == -1 && (bVar17 && bVar19);\n            goto LAB_00296362;\n          }\n          if (bVar15 == false) goto LAB_00295fe1;\n        }\n        uVar13 = uVar16;\n        if ((param_2 == (long *)0x0) || (!bVar20)) {\nLAB_0029637c:\n          if ((*(byte *)(plVar11[6] + 1 + (uVar13 & 0xff) * 2) & 0x20) == 0) goto LAB_00295fe1;\n          pbVar18 = (byte *)param_2[2];\n          if (pbVar18 < (byte *)param_2[3]) goto LAB_00296398;\n          (**(code **)(*param_2 + 0x50))(param_2);\n        }\n        else {\n          pbVar18 = (byte *)param_2[2];\n          if ((byte *)param_2[3] <= pbVar18) {\n            uVar13 = (**(code **)(*param_2 + 0x48))(param_2);\n            if ((int)uVar13 == -1) {\n              param_2 = (long *)0x0;\n            }\n            goto LAB_0029637c;\n          }\n          if ((*(byte *)(plVar11[6] + 1 + (ulong)*pbVar18 * 2) & 0x20) == 0) goto code_r0x00296430;\nLAB_00296398:\n          param_2[2] = (long)(pbVar18 + 1);\n        }\n        uVar16 = 0xffffffff;\n        pbVar3 = param_9;\n      } while( true );\n    }\n    cVar6 = (char)uVar16;\n    cVar4 = cVar6;\n    if ((param_2 != (long *)0x0) && (bVar20)) {\n      if ((char *)param_2[2] < (char *)param_2[3]) {\n        cVar4 = *(char *)param_2[2];\n      }\n      else {\n        iVar10 = (**(code **)(*param_2 + 0x48))(param_2);\n        cVar4 = -1;\n        if (iVar10 == -1) {\n          param_2 = (long *)0x0;\n        }\n        else {\n          cVar4 = (char)iVar10;\n        }\n      }\n    }\n    cVar4 = (**(code **)(*plVar11 + 0x20))(plVar11,(int)cVar4);\n    cVar5 = (**(code **)(*plVar11 + 0x20))(plVar11,(int)(char)*param_9);\n    if (cVar5 != cVar4) {\n      if ((param_2 != (long *)0x0) && (bVar20)) {\n        if ((char *)param_2[2] < (char *)param_2[3]) {\n          cVar6 = *(char *)param_2[2];\n        }\n        else {\n          iVar10 = (**(code **)(*param_2 + 0x48))(param_2);\n          cVar6 = -1;\n          if (iVar10 == -1) {\n            param_2 = (long *)0x0;\n          }\n          else {\n            cVar6 = (char)iVar10;\n          }\n        }\n      }\n      cVar6 = (**(code **)(*plVar11 + 0x10))(plVar11,(int)cVar6);\n      cVar4 = (**(code **)(*plVar11 + 0x10))(plVar11,(int)(char)*param_9);\n      if (cVar4 != cVar6) goto LAB_00296748;\n    }\n    if ((ulong)param_2[2] < (ulong)param_2[3]) {\n      param_2[2] = param_2[2] + 1;\n    }\n    else {\n      (**(code **)(*param_2 + 0x50))(param_2);\n    }\n    param_9 = param_9 + 1;\n    uVar16 = 0xffffffff;\n    goto LAB_00295fe1;\n  }\nLAB_00296071:\n  if (bVar8 != 0x25) goto LAB_00295f20;\n  pbVar18 = param_9 + 1;\n  if (param_10 == pbVar18) {\nLAB_00296748:\n    *param_7 = 4;\n  }\n  else {\n    bVar1 = param_9[1];\n    bVar8 = *(byte *)((long)plVar11 + (ulong)bVar1 + 0x139);\n    if (bVar8 == 0) {\n      bVar8 = bVar1;\n      if (*(code **)(*plVar11 + 0x40) != (code *)PTR_FUN_003bdd10) {\n        bVar8 = (**(code **)(*plVar11 + 0x40))(plVar11,(int)(char)bVar1,0);\n      }\n      bVar9 = bVar8;\n      if (bVar8 != 0) {\n        *(byte *)((long)plVar11 + (ulong)bVar1 + 0x139) = bVar8;\n        goto LAB_002960ca;\n      }\nLAB_0029655b:\n      bVar8 = 0;\n    }\n    else {\nLAB_002960ca:\n      if ((bVar8 != 0x45) && (bVar9 = bVar8, bVar8 != 0x4f)) goto LAB_0029655b;\n      pbVar18 = param_9 + 2;\n      if (param_10 == pbVar18) goto LAB_00296748;\n      bVar1 = param_9[2];\n      bVar9 = *(byte *)((long)plVar11 + (ulong)bVar1 + 0x139);\n      if (bVar9 == 0) {\n        bVar9 = bVar1;\n        if (*(code **)(*plVar11 + 0x40) != (code *)PTR_FUN_003bdd10) {\n          bVar9 = (**(code **)(*plVar11 + 0x40))(plVar11,(int)(char)bVar1,0);\n        }\n        if (bVar9 != 0) {\n          *(byte *)((long)plVar11 + (ulong)bVar1 + 0x139) = bVar9;\n        }\n      }\n    }\n    local_d0 = local_d0 & 0xffffffff00000000;\n    local_c8 = local_c8 & 0xffffffff00000000 | param_5 & 0xffffffff;\n    local_50 = local_d0 | uVar16;\n    local_58 = param_2;\n    local_48 = param_4;\n    local_40 = local_c8;\n    plVar12 = (long *)FUN_00288720(param_6 + 0xd0);\n    *param_7 = 0;\n    if ((char)plVar12[7] == '\0') {\n      FUN_002b5b80(plVar12);\n      uVar7 = 0x25;\n      if (*(code **)(*plVar12 + 0x30) != (code *)PTR_FUN_003bdfd8) {\n        uVar7 = (**(code **)(*plVar12 + 0x30))(plVar12,0x25);\n      }\n    }\n    else {\n      uVar7 = *(undefined1 *)((long)plVar12 + 0x5e);\n    }\n    if (bVar8 == 0) {\n      local_5a = 0;\n      local_5b = bVar9;\n    }\n    else {\n      local_59 = 0;\n      local_5b = bVar8;\n      local_5a = bVar9;\n    }\n    local_5c = uVar7;\n    auVar22 = FUN_0028dbd0(param_1,local_58,local_50,local_48,local_40,param_6,param_7,param_8,\n                           &local_5c);\n    local_58 = auVar22._0_8_;\n    local_50 = CONCAT44(local_50._4_4_,auVar22._8_4_);\n    cVar6 = FUN_0028d360(&local_58,&local_48);\n    if (cVar6 != '\0') {\n      *param_7 = *param_7 | 2;\n    }\n    uVar16 = local_50 & 0xffffffff;\n    param_9 = pbVar18 + 1;\n    param_2 = local_58;\n    if (param_10 != param_9) goto LAB_00295fef;\n  }\n  goto LAB_002962c3;\ncode_r0x00296430:\n  uVar16 = 0xffffffff;\nLAB_00295fe1:\n  if (param_10 == param_9) goto LAB_002962c3;\nLAB_00295fef:\n  if (*param_7 != 0) goto LAB_002962c3;\n  goto LAB_00296001;\n}\n\n" (expression_statement "undefined1  [16]" (subscript_expression "undefined1  [16]" identifier [ number_literal ]) ;) (declaration "FUN_00295e90(undefined8 param_1,long *param_2,ulong param_3,long *param_4,ulong param_5,long param_6\n            ,uint *param_7,undefined8 param_8,byte *param_9,byte *param_10)\n\n{\n  byte bVar1;" (macro_type_specifier "FUN_00295e90(undefined8" identifier ( (type_descriptor "undefined8" type_identifier) )) identifier , (ERROR "long" identifier) (pointer_declarator "*param_2" * identifier) , (ERROR "ulong" identifier) identifier , (ERROR "long" identifier) (pointer_declarator "*param_4" * identifier) , (ERROR "ulong" identifier) identifier , (ERROR "long" identifier) identifier , (ERROR "uint" identifier) (pointer_declarator "*param_7" * identifier) , identifier (ERROR "param_8" identifier) , (ERROR "byte" identifier) (pointer_declarator "*param_9" * identifier) , (ERROR "byte *param_10)\n\n{\n  byte" identifier (pointer_declarator "*param_10" * identifier) ) { identifier) identifier ;) (declaration "long lVar2;" (sized_type_specifier "long" long) identifier ;) (declaration "byte *pbVar3;" type_identifier (pointer_declarator "*pbVar3" * identifier) ;) (declaration "char cVar4;" primitive_type identifier ;) (declaration "char cVar5;" primitive_type identifier ;) (declaration "char cVar6;" primitive_type identifier ;) (declaration "undefined1 uVar7;" type_identifier identifier ;) (declaration "byte bVar8;" type_identifier identifier ;) (declaration "byte bVar9;" type_identifier identifier ;) (declaration "int iVar10;" primitive_type identifier ;) (declaration "long *plVar11;" (sized_type_specifier "long" long) (pointer_declarator "*plVar11" * identifier) ;) (declaration "long *plVar12;" (sized_type_specifier "long" long) (pointer_declarator "*plVar12" * identifier) ;) (declaration "ulong uVar13;" type_identifier identifier ;) (declaration "bool bVar14;" primitive_type identifier ;) (declaration "bool bVar15;" primitive_type identifier ;) (declaration "ulong uVar16;" type_identifier identifier ;) (declaration "bool bVar17;" primitive_type identifier ;) (declaration "byte *pbVar18;" type_identifier (pointer_declarator "*pbVar18" * identifier) ;) (declaration "bool bVar19;" primitive_type identifier ;) (declaration "bool bVar20;" primitive_type identifier ;) (declaration "undefined1 auVar21 [16];" type_identifier (array_declarator "auVar21 [16]" identifier [ number_literal ]) ;) (declaration "undefined1 auVar22 [12];" type_identifier (array_declarator "auVar22 [12]" identifier [ number_literal ]) ;) (declaration "ulong local_d0;" type_identifier identifier ;) (declaration "ulong local_c8;" type_identifier identifier ;) (declaration "undefined1 local_5c;" type_identifier identifier ;) (declaration "byte local_5b;" type_identifier identifier ;) (declaration "byte local_5a;" type_identifier identifier ;) (declaration "undefined1 local_59;" type_identifier identifier ;) (declaration "long *local_58;" (sized_type_specifier "long" long) (pointer_declarator "*local_58" * identifier) ;) (declaration "ulong local_50;" type_identifier identifier ;) (declaration "long *local_48;" (sized_type_specifier "long" long) (pointer_declarator "*local_48" * identifier) ;) (declaration "ulong local_40;" type_identifier identifier ;) (expression_statement "plVar11 = (long *)FUN_00288720(param_6 + 0xd0);" (assignment_expression "plVar11 = (long *)FUN_00288720(param_6 + 0xd0)" identifier = (cast_expression "(long *)FUN_00288720(param_6 + 0xd0)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00288720(param_6 + 0xd0)" identifier (argument_list "(param_6 + 0xd0)" ( (binary_expression "param_6 + 0xd0" identifier + number_literal) ))))) ;) (expression_statement "uVar16 = param_3 & 0xffffffff;" (assignment_expression "uVar16 = param_3 & 0xffffffff" identifier = (binary_expression "param_3 & 0xffffffff" identifier & number_literal)) ;) (expression_statement "*param_7 = 0;" (assignment_expression "*param_7 = 0" (pointer_expression "*param_7" * identifier) = number_literal) ;) (expression_statement "local_d0 = param_3;" (assignment_expression "local_d0 = param_3" identifier = identifier) ;) (if_statement "if (param_9 == param_10) {\nLAB_002962c3:\n    auVar21._8_8_ = uVar16 | local_d0 & 0xffffffff00000000;\n    auVar21._0_8_ = param_2;\n    return auVar21;\n  }" if (parenthesized_expression "(param_9 == param_10)" ( (binary_expression "param_9 == param_10" identifier == identifier) )) (compound_statement "{\nLAB_002962c3:\n    auVar21._8_8_ = uVar16 | local_d0 & 0xffffffff00000000;\n    auVar21._0_8_ = param_2;\n    return auVar21;\n  }" { (labeled_statement "LAB_002962c3:\n    auVar21._8_8_ = uVar16 | local_d0 & 0xffffffff00000000;" statement_identifier : (expression_statement "auVar21._8_8_ = uVar16 | local_d0 & 0xffffffff00000000;" (assignment_expression "auVar21._8_8_ = uVar16 | local_d0 & 0xffffffff00000000" (field_expression "auVar21._8_8_" identifier . field_identifier) = (binary_expression "uVar16 | local_d0 & 0xffffffff00000000" identifier | (binary_expression "local_d0 & 0xffffffff00000000" identifier & number_literal))) ;)) (expression_statement "auVar21._0_8_ = param_2;" (assignment_expression "auVar21._0_8_ = param_2" (field_expression "auVar21._0_8_" identifier . field_identifier) = identifier) ;) (return_statement "return auVar21;" return identifier ;) })) (expression_statement "bVar19 = (int)param_5 == -1;" (assignment_expression "bVar19 = (int)param_5 == -1" identifier = (binary_expression "(int)param_5 == -1" (cast_expression "(int)param_5" ( (type_descriptor "int" primitive_type) ) identifier) == number_literal)) ;) (expression_statement "local_c8 = param_5;" (assignment_expression "local_c8 = param_5" identifier = identifier) ;) (labeled_statement "LAB_00296001:\n  bVar20 = (int)uVar16 == -1;" statement_identifier : (expression_statement "bVar20 = (int)uVar16 == -1;" (assignment_expression "bVar20 = (int)uVar16 == -1" identifier = (binary_expression "(int)uVar16 == -1" (cast_expression "(int)uVar16" ( (type_descriptor "int" primitive_type) ) identifier) == number_literal)) ;)) (expression_statement "bVar17 = param_2 != (long *)0x0 && bVar20;" (assignment_expression "bVar17 = param_2 != (long *)0x0 && bVar20" identifier = (binary_expression "param_2 != (long *)0x0 && bVar20" (binary_expression "param_2 != (long *)0x0" identifier != (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) && identifier)) ;) (expression_statement "bVar15 = bVar20;" (assignment_expression "bVar15 = bVar20" identifier = identifier) ;) (if_statement "if (bVar17) {\n    if ((ulong)param_2[2] < (ulong)param_2[3]) {\n      bVar15 = false;\n    }\n    else {\n      iVar10 = (**(code **)(*param_2 + 0x48))(param_2);\n      bVar15 = iVar10 == -1 && bVar17;\n      if (iVar10 == -1) {\n        param_2 = (long *)0x0;\n      }\n    }\n  }" if (parenthesized_expression "(bVar17)" ( identifier )) (compound_statement "{\n    if ((ulong)param_2[2] < (ulong)param_2[3]) {\n      bVar15 = false;\n    }\n    else {\n      iVar10 = (**(code **)(*param_2 + 0x48))(param_2);\n      bVar15 = iVar10 == -1 && bVar17;\n      if (iVar10 == -1) {\n        param_2 = (long *)0x0;\n      }\n    }\n  }" { (if_statement "if ((ulong)param_2[2] < (ulong)param_2[3]) {\n      bVar15 = false;\n    }\n    else {\n      iVar10 = (**(code **)(*param_2 + 0x48))(param_2);\n      bVar15 = iVar10 == -1 && bVar17;\n      if (iVar10 == -1) {\n        param_2 = (long *)0x0;\n      }\n    }" if (parenthesized_expression "((ulong)param_2[2] < (ulong)param_2[3])" ( (binary_expression "(ulong)param_2[2] < (ulong)param_2[3]" (cast_expression "(ulong)param_2[2]" ( (type_descriptor "ulong" type_identifier) ) (subscript_expression "param_2[2]" identifier [ number_literal ])) < (cast_expression "(ulong)param_2[3]" ( (type_descriptor "ulong" type_identifier) ) (subscript_expression "param_2[3]" identifier [ number_literal ]))) )) (compound_statement "{\n      bVar15 = false;\n    }" { (expression_statement "bVar15 = false;" (assignment_expression "bVar15 = false" identifier = false) ;) }) (else_clause "else {\n      iVar10 = (**(code **)(*param_2 + 0x48))(param_2);\n      bVar15 = iVar10 == -1 && bVar17;\n      if (iVar10 == -1) {\n        param_2 = (long *)0x0;\n      }\n    }" else (compound_statement "{\n      iVar10 = (**(code **)(*param_2 + 0x48))(param_2);\n      bVar15 = iVar10 == -1 && bVar17;\n      if (iVar10 == -1) {\n        param_2 = (long *)0x0;\n      }\n    }" { (expression_statement "iVar10 = (**(code **)(*param_2 + 0x48))(param_2);" (assignment_expression "iVar10 = (**(code **)(*param_2 + 0x48))(param_2)" identifier = (call_expression "(**(code **)(*param_2 + 0x48))(param_2)" (parenthesized_expression "(**(code **)(*param_2 + 0x48))" ( (pointer_expression "**(code **)(*param_2 + 0x48)" * (pointer_expression "*(code **)(*param_2 + 0x48)" * (cast_expression "(code **)(*param_2 + 0x48)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*param_2 + 0x48)" ( (binary_expression "*param_2 + 0x48" (pointer_expression "*param_2" * identifier) + number_literal) ))))) )) (argument_list "(param_2)" ( identifier )))) ;) (expression_statement "bVar15 = iVar10 == -1 && bVar17;" (assignment_expression "bVar15 = iVar10 == -1 && bVar17" identifier = (binary_expression "iVar10 == -1 && bVar17" (binary_expression "iVar10 == -1" identifier == number_literal) && identifier)) ;) (if_statement "if (iVar10 == -1) {\n        param_2 = (long *)0x0;\n      }" if (parenthesized_expression "(iVar10 == -1)" ( (binary_expression "iVar10 == -1" identifier == number_literal) )) (compound_statement "{\n        param_2 = (long *)0x0;\n      }" { (expression_statement "param_2 = (long *)0x0;" (assignment_expression "param_2 = (long *)0x0" identifier = (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) ;) })) }))) })) (expression_statement "bVar14 = param_4 != (long *)0x0 && bVar19;" (assignment_expression "bVar14 = param_4 != (long *)0x0 && bVar19" identifier = (binary_expression "param_4 != (long *)0x0 && bVar19" (binary_expression "param_4 != (long *)0x0" identifier != (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) && identifier)) ;) (expression_statement "bVar17 = bVar19;" (assignment_expression "bVar17 = bVar19" identifier = identifier) ;) (if_statement "if (bVar14) {\n    if ((ulong)param_4[3] <= (ulong)param_4[2]) {\n      iVar10 = (**(code **)(*param_4 + 0x48))(param_4);\n      if (iVar10 == -1) {\n        param_4 = (long *)0x0;\n      }\n      bVar17 = iVar10 == -1 && bVar14;\n      goto LAB_0029602d;\n    }\n    if (bVar15 == false) goto LAB_00296469;\n  }\n  else {\nLAB_0029602d:\n    if (bVar17 == bVar15) {\nLAB_00296469:\n      *param_7 = 6;\n      goto LAB_002962c3;\n    }\n  }" if (parenthesized_expression "(bVar14)" ( identifier )) (compound_statement "{\n    if ((ulong)param_4[3] <= (ulong)param_4[2]) {\n      iVar10 = (**(code **)(*param_4 + 0x48))(param_4);\n      if (iVar10 == -1) {\n        param_4 = (long *)0x0;\n      }\n      bVar17 = iVar10 == -1 && bVar14;\n      goto LAB_0029602d;\n    }\n    if (bVar15 == false) goto LAB_00296469;\n  }" { (if_statement "if ((ulong)param_4[3] <= (ulong)param_4[2]) {\n      iVar10 = (**(code **)(*param_4 + 0x48))(param_4);\n      if (iVar10 == -1) {\n        param_4 = (long *)0x0;\n      }\n      bVar17 = iVar10 == -1 && bVar14;\n      goto LAB_0029602d;\n    }" if (parenthesized_expression "((ulong)param_4[3] <= (ulong)param_4[2])" ( (binary_expression "(ulong)param_4[3] <= (ulong)param_4[2]" (cast_expression "(ulong)param_4[3]" ( (type_descriptor "ulong" type_identifier) ) (subscript_expression "param_4[3]" identifier [ number_literal ])) <= (cast_expression "(ulong)param_4[2]" ( (type_descriptor "ulong" type_identifier) ) (subscript_expression "param_4[2]" identifier [ number_literal ]))) )) (compound_statement "{\n      iVar10 = (**(code **)(*param_4 + 0x48))(param_4);\n      if (iVar10 == -1) {\n        param_4 = (long *)0x0;\n      }\n      bVar17 = iVar10 == -1 && bVar14;\n      goto LAB_0029602d;\n    }" { (expression_statement "iVar10 = (**(code **)(*param_4 + 0x48))(param_4);" (assignment_expression "iVar10 = (**(code **)(*param_4 + 0x48))(param_4)" identifier = (call_expression "(**(code **)(*param_4 + 0x48))(param_4)" (parenthesized_expression "(**(code **)(*param_4 + 0x48))" ( (pointer_expression "**(code **)(*param_4 + 0x48)" * (pointer_expression "*(code **)(*param_4 + 0x48)" * (cast_expression "(code **)(*param_4 + 0x48)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*param_4 + 0x48)" ( (binary_expression "*param_4 + 0x48" (pointer_expression "*param_4" * identifier) + number_literal) ))))) )) (argument_list "(param_4)" ( identifier )))) ;) (if_statement "if (iVar10 == -1) {\n        param_4 = (long *)0x0;\n      }" if (parenthesized_expression "(iVar10 == -1)" ( (binary_expression "iVar10 == -1" identifier == number_literal) )) (compound_statement "{\n        param_4 = (long *)0x0;\n      }" { (expression_statement "param_4 = (long *)0x0;" (assignment_expression "param_4 = (long *)0x0" identifier = (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) ;) })) (expression_statement "bVar17 = iVar10 == -1 && bVar14;" (assignment_expression "bVar17 = iVar10 == -1 && bVar14" identifier = (binary_expression "iVar10 == -1 && bVar14" (binary_expression "iVar10 == -1" identifier == number_literal) && identifier)) ;) (goto_statement "goto LAB_0029602d;" goto statement_identifier ;) })) (if_statement "if (bVar15 == false) goto LAB_00296469;" if (parenthesized_expression "(bVar15 == false)" ( (binary_expression "bVar15 == false" identifier == false) )) (goto_statement "goto LAB_00296469;" goto statement_identifier ;)) }) (else_clause "else {\nLAB_0029602d:\n    if (bVar17 == bVar15) {\nLAB_00296469:\n      *param_7 = 6;\n      goto LAB_002962c3;\n    }\n  }" else (compound_statement "{\nLAB_0029602d:\n    if (bVar17 == bVar15) {\nLAB_00296469:\n      *param_7 = 6;\n      goto LAB_002962c3;\n    }\n  }" { (labeled_statement "LAB_0029602d:\n    if (bVar17 == bVar15) {\nLAB_00296469:\n      *param_7 = 6;\n      goto LAB_002962c3;\n    }" statement_identifier : (if_statement "if (bVar17 == bVar15) {\nLAB_00296469:\n      *param_7 = 6;\n      goto LAB_002962c3;\n    }" if (parenthesized_expression "(bVar17 == bVar15)" ( (binary_expression "bVar17 == bVar15" identifier == identifier) )) (compound_statement "{\nLAB_00296469:\n      *param_7 = 6;\n      goto LAB_002962c3;\n    }" { (labeled_statement "LAB_00296469:\n      *param_7 = 6;" statement_identifier : (expression_statement "*param_7 = 6;" (assignment_expression "*param_7 = 6" (pointer_expression "*param_7" * identifier) = number_literal) ;)) (goto_statement "goto LAB_002962c3;" goto statement_identifier ;) }))) }))) (expression_statement "bVar1 = *param_9;" (assignment_expression "bVar1 = *param_9" identifier = (pointer_expression "*param_9" * identifier)) ;) (expression_statement "bVar8 = *(byte *)((long)plVar11 + (ulong)bVar1 + 0x139);" (assignment_expression "bVar8 = *(byte *)((long)plVar11 + (ulong)bVar1 + 0x139)" identifier = (pointer_expression "*(byte *)((long)plVar11 + (ulong)bVar1 + 0x139)" * (cast_expression "(byte *)((long)plVar11 + (ulong)bVar1 + 0x139)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)plVar11 + (ulong)bVar1 + 0x139)" ( (binary_expression "(long)plVar11 + (ulong)bVar1 + 0x139" (binary_expression "(long)plVar11 + (ulong)bVar1" (cast_expression "(long)plVar11" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + (cast_expression "(ulong)bVar1" ( (type_descriptor "ulong" type_identifier) ) identifier)) + number_literal) ))))) ;) (if_statement "if (bVar8 == 0) {\n    bVar8 = bVar1;\n    if (*(code **)(*plVar11 + 0x40) != (code *)PTR_FUN_003bdd10) {\n      bVar8 = (**(code **)(*plVar11 + 0x40))(plVar11,(int)(char)bVar1,0);\n    }\n    if (bVar8 != 0) {\n      *(byte *)((long)plVar11 + (ulong)bVar1 + 0x139) = bVar8;\n      goto LAB_00296071;\n    }\nLAB_00295f20:\n    lVar2 = plVar11[6];\n    if ((*(byte *)(lVar2 + 1 + (ulong)*param_9 * 2) & 0x20) != 0) {\n      pbVar18 = param_9 + 1;\n      pbVar3 = param_10;\n      if (param_10 != pbVar18) {\n        bVar1 = *(byte *)(lVar2 + 1 + (ulong)param_9[1] * 2);\n        while ((pbVar3 = pbVar18, (bVar1 & 0x20) != 0 &&\n               (pbVar18 = pbVar18 + 1, pbVar3 = pbVar18, param_10 != pbVar18))) {\n          bVar1 = *(byte *)(lVar2 + 1 + (ulong)*pbVar18 * 2);\n        }\n      }\n      do {\n        param_9 = pbVar3;\n        bVar20 = (int)uVar16 == -1;\n        bVar15 = bVar20;\n        bVar17 = bVar19;\n        if (param_2 != (long *)0x0 && bVar20) {\n          if ((ulong)param_2[3] <= (ulong)param_2[2]) {\n            iVar10 = (**(code **)(*param_2 + 0x48))(param_2);\n            bVar15 = iVar10 == -1 && (param_2 != (long *)0x0 && bVar20);\n            if (iVar10 == -1) {\n              param_2 = (long *)0x0;\n            }\n            goto LAB_00296353;\n          }\n          bVar15 = false;\n          if (param_4 != (long *)0x0 && bVar19) goto LAB_002963d5;\nLAB_00296362:\n          if (bVar15 == bVar17) goto LAB_00295fe1;\n        }\n        else {\nLAB_00296353:\n          if (param_4 == (long *)0x0 || !bVar19) goto LAB_00296362;\nLAB_002963d5:\n          bVar17 = param_4 != (long *)0x0;\n          if ((ulong)param_4[3] <= (ulong)param_4[2]) {\n            iVar10 = (**(code **)(*param_4 + 0x48))(param_4);\n            if (iVar10 == -1) {\n              param_4 = (long *)0x0;\n            }\n            bVar17 = iVar10 == -1 && (bVar17 && bVar19);\n            goto LAB_00296362;\n          }\n          if (bVar15 == false) goto LAB_00295fe1;\n        }\n        uVar13 = uVar16;\n        if ((param_2 == (long *)0x0) || (!bVar20)) {\nLAB_0029637c:\n          if ((*(byte *)(plVar11[6] + 1 + (uVar13 & 0xff) * 2) & 0x20) == 0) goto LAB_00295fe1;\n          pbVar18 = (byte *)param_2[2];\n          if (pbVar18 < (byte *)param_2[3]) goto LAB_00296398;\n          (**(code **)(*param_2 + 0x50))(param_2);\n        }\n        else {\n          pbVar18 = (byte *)param_2[2];\n          if ((byte *)param_2[3] <= pbVar18) {\n            uVar13 = (**(code **)(*param_2 + 0x48))(param_2);\n            if ((int)uVar13 == -1) {\n              param_2 = (long *)0x0;\n            }\n            goto LAB_0029637c;\n          }\n          if ((*(byte *)(plVar11[6] + 1 + (ulong)*pbVar18 * 2) & 0x20) == 0) goto code_r0x00296430;\nLAB_00296398:\n          param_2[2] = (long)(pbVar18 + 1);\n        }\n        uVar16 = 0xffffffff;\n        pbVar3 = param_9;\n      } while( true );\n    }\n    cVar6 = (char)uVar16;\n    cVar4 = cVar6;\n    if ((param_2 != (long *)0x0) && (bVar20)) {\n      if ((char *)param_2[2] < (char *)param_2[3]) {\n        cVar4 = *(char *)param_2[2];\n      }\n      else {\n        iVar10 = (**(code **)(*param_2 + 0x48))(param_2);\n        cVar4 = -1;\n        if (iVar10 == -1) {\n          param_2 = (long *)0x0;\n        }\n        else {\n          cVar4 = (char)iVar10;\n        }\n      }\n    }\n    cVar4 = (**(code **)(*plVar11 + 0x20))(plVar11,(int)cVar4);\n    cVar5 = (**(code **)(*plVar11 + 0x20))(plVar11,(int)(char)*param_9);\n    if (cVar5 != cVar4) {\n      if ((param_2 != (long *)0x0) && (bVar20)) {\n        if ((char *)param_2[2] < (char *)param_2[3]) {\n          cVar6 = *(char *)param_2[2];\n        }\n        else {\n          iVar10 = (**(code **)(*param_2 + 0x48))(param_2);\n          cVar6 = -1;\n          if (iVar10 == -1) {\n            param_2 = (long *)0x0;\n          }\n          else {\n            cVar6 = (char)iVar10;\n          }\n        }\n      }\n      cVar6 = (**(code **)(*plVar11 + 0x10))(plVar11,(int)cVar6);\n      cVar4 = (**(code **)(*plVar11 + 0x10))(plVar11,(int)(char)*param_9);\n      if (cVar4 != cVar6) goto LAB_00296748;\n    }\n    if ((ulong)param_2[2] < (ulong)param_2[3]) {\n      param_2[2] = param_2[2] + 1;\n    }\n    else {\n      (**(code **)(*param_2 + 0x50))(param_2);\n    }\n    param_9 = param_9 + 1;\n    uVar16 = 0xffffffff;\n    goto LAB_00295fe1;\n  }" if (parenthesized_expression "(bVar8 == 0)" ( (binary_expression "bVar8 == 0" identifier == number_literal) )) (compound_statement "{\n    bVar8 = bVar1;\n    if (*(code **)(*plVar11 + 0x40) != (code *)PTR_FUN_003bdd10) {\n      bVar8 = (**(code **)(*plVar11 + 0x40))(plVar11,(int)(char)bVar1,0);\n    }\n    if (bVar8 != 0) {\n      *(byte *)((long)plVar11 + (ulong)bVar1 + 0x139) = bVar8;\n      goto LAB_00296071;\n    }\nLAB_00295f20:\n    lVar2 = plVar11[6];\n    if ((*(byte *)(lVar2 + 1 + (ulong)*param_9 * 2) & 0x20) != 0) {\n      pbVar18 = param_9 + 1;\n      pbVar3 = param_10;\n      if (param_10 != pbVar18) {\n        bVar1 = *(byte *)(lVar2 + 1 + (ulong)param_9[1] * 2);\n        while ((pbVar3 = pbVar18, (bVar1 & 0x20) != 0 &&\n               (pbVar18 = pbVar18 + 1, pbVar3 = pbVar18, param_10 != pbVar18))) {\n          bVar1 = *(byte *)(lVar2 + 1 + (ulong)*pbVar18 * 2);\n        }\n      }\n      do {\n        param_9 = pbVar3;\n        bVar20 = (int)uVar16 == -1;\n        bVar15 = bVar20;\n        bVar17 = bVar19;\n        if (param_2 != (long *)0x0 && bVar20) {\n          if ((ulong)param_2[3] <= (ulong)param_2[2]) {\n            iVar10 = (**(code **)(*param_2 + 0x48))(param_2);\n            bVar15 = iVar10 == -1 && (param_2 != (long *)0x0 && bVar20);\n            if (iVar10 == -1) {\n              param_2 = (long *)0x0;\n            }\n            goto LAB_00296353;\n          }\n          bVar15 = false;\n          if (param_4 != (long *)0x0 && bVar19) goto LAB_002963d5;\nLAB_00296362:\n          if (bVar15 == bVar17) goto LAB_00295fe1;\n        }\n        else {\nLAB_00296353:\n          if (param_4 == (long *)0x0 || !bVar19) goto LAB_00296362;\nLAB_002963d5:\n          bVar17 = param_4 != (long *)0x0;\n          if ((ulong)param_4[3] <= (ulong)param_4[2]) {\n            iVar10 = (**(code **)(*param_4 + 0x48))(param_4);\n            if (iVar10 == -1) {\n              param_4 = (long *)0x0;\n            }\n            bVar17 = iVar10 == -1 && (bVar17 && bVar19);\n            goto LAB_00296362;\n          }\n          if (bVar15 == false) goto LAB_00295fe1;\n        }\n        uVar13 = uVar16;\n        if ((param_2 == (long *)0x0) || (!bVar20)) {\nLAB_0029637c:\n          if ((*(byte *)(plVar11[6] + 1 + (uVar13 & 0xff) * 2) & 0x20) == 0) goto LAB_00295fe1;\n          pbVar18 = (byte *)param_2[2];\n          if (pbVar18 < (byte *)param_2[3]) goto LAB_00296398;\n          (**(code **)(*param_2 + 0x50))(param_2);\n        }\n        else {\n          pbVar18 = (byte *)param_2[2];\n          if ((byte *)param_2[3] <= pbVar18) {\n            uVar13 = (**(code **)(*param_2 + 0x48))(param_2);\n            if ((int)uVar13 == -1) {\n              param_2 = (long *)0x0;\n            }\n            goto LAB_0029637c;\n          }\n          if ((*(byte *)(plVar11[6] + 1 + (ulong)*pbVar18 * 2) & 0x20) == 0) goto code_r0x00296430;\nLAB_00296398:\n          param_2[2] = (long)(pbVar18 + 1);\n        }\n        uVar16 = 0xffffffff;\n        pbVar3 = param_9;\n      } while( true );\n    }\n    cVar6 = (char)uVar16;\n    cVar4 = cVar6;\n    if ((param_2 != (long *)0x0) && (bVar20)) {\n      if ((char *)param_2[2] < (char *)param_2[3]) {\n        cVar4 = *(char *)param_2[2];\n      }\n      else {\n        iVar10 = (**(code **)(*param_2 + 0x48))(param_2);\n        cVar4 = -1;\n        if (iVar10 == -1) {\n          param_2 = (long *)0x0;\n        }\n        else {\n          cVar4 = (char)iVar10;\n        }\n      }\n    }\n    cVar4 = (**(code **)(*plVar11 + 0x20))(plVar11,(int)cVar4);\n    cVar5 = (**(code **)(*plVar11 + 0x20))(plVar11,(int)(char)*param_9);\n    if (cVar5 != cVar4) {\n      if ((param_2 != (long *)0x0) && (bVar20)) {\n        if ((char *)param_2[2] < (char *)param_2[3]) {\n          cVar6 = *(char *)param_2[2];\n        }\n        else {\n          iVar10 = (**(code **)(*param_2 + 0x48))(param_2);\n          cVar6 = -1;\n          if (iVar10 == -1) {\n            param_2 = (long *)0x0;\n          }\n          else {\n            cVar6 = (char)iVar10;\n          }\n        }\n      }\n      cVar6 = (**(code **)(*plVar11 + 0x10))(plVar11,(int)cVar6);\n      cVar4 = (**(code **)(*plVar11 + 0x10))(plVar11,(int)(char)*param_9);\n      if (cVar4 != cVar6) goto LAB_00296748;\n    }\n    if ((ulong)param_2[2] < (ulong)param_2[3]) {\n      param_2[2] = param_2[2] + 1;\n    }\n    else {\n      (**(code **)(*param_2 + 0x50))(param_2);\n    }\n    param_9 = param_9 + 1;\n    uVar16 = 0xffffffff;\n    goto LAB_00295fe1;\n  }" { (expression_statement "bVar8 = bVar1;" (assignment_expression "bVar8 = bVar1" identifier = identifier) ;) (if_statement "if (*(code **)(*plVar11 + 0x40) != (code *)PTR_FUN_003bdd10) {\n      bVar8 = (**(code **)(*plVar11 + 0x40))(plVar11,(int)(char)bVar1,0);\n    }" if (parenthesized_expression "(*(code **)(*plVar11 + 0x40) != (code *)PTR_FUN_003bdd10)" ( (binary_expression "*(code **)(*plVar11 + 0x40) != (code *)PTR_FUN_003bdd10" (pointer_expression "*(code **)(*plVar11 + 0x40)" * (cast_expression "(code **)(*plVar11 + 0x40)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*plVar11 + 0x40)" ( (binary_expression "*plVar11 + 0x40" (pointer_expression "*plVar11" * identifier) + number_literal) )))) != (cast_expression "(code *)PTR_FUN_003bdd10" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (compound_statement "{\n      bVar8 = (**(code **)(*plVar11 + 0x40))(plVar11,(int)(char)bVar1,0);\n    }" { (expression_statement "bVar8 = (**(code **)(*plVar11 + 0x40))(plVar11,(int)(char)bVar1,0);" (assignment_expression "bVar8 = (**(code **)(*plVar11 + 0x40))(plVar11,(int)(char)bVar1,0)" identifier = (call_expression "(**(code **)(*plVar11 + 0x40))(plVar11,(int)(char)bVar1,0)" (parenthesized_expression "(**(code **)(*plVar11 + 0x40))" ( (pointer_expression "**(code **)(*plVar11 + 0x40)" * (pointer_expression "*(code **)(*plVar11 + 0x40)" * (cast_expression "(code **)(*plVar11 + 0x40)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*plVar11 + 0x40)" ( (binary_expression "*plVar11 + 0x40" (pointer_expression "*plVar11" * identifier) + number_literal) ))))) )) (argument_list "(plVar11,(int)(char)bVar1,0)" ( identifier , (cast_expression "(int)(char)bVar1" ( (type_descriptor "int" primitive_type) ) (cast_expression "(char)bVar1" ( (type_descriptor "char" primitive_type) ) identifier)) , number_literal )))) ;) })) (if_statement "if (bVar8 != 0) {\n      *(byte *)((long)plVar11 + (ulong)bVar1 + 0x139) = bVar8;\n      goto LAB_00296071;\n    }" if (parenthesized_expression "(bVar8 != 0)" ( (binary_expression "bVar8 != 0" identifier != number_literal) )) (compound_statement "{\n      *(byte *)((long)plVar11 + (ulong)bVar1 + 0x139) = bVar8;\n      goto LAB_00296071;\n    }" { (expression_statement "*(byte *)((long)plVar11 + (ulong)bVar1 + 0x139) = bVar8;" (assignment_expression "*(byte *)((long)plVar11 + (ulong)bVar1 + 0x139) = bVar8" (pointer_expression "*(byte *)((long)plVar11 + (ulong)bVar1 + 0x139)" * (cast_expression "(byte *)((long)plVar11 + (ulong)bVar1 + 0x139)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)plVar11 + (ulong)bVar1 + 0x139)" ( (binary_expression "(long)plVar11 + (ulong)bVar1 + 0x139" (binary_expression "(long)plVar11 + (ulong)bVar1" (cast_expression "(long)plVar11" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + (cast_expression "(ulong)bVar1" ( (type_descriptor "ulong" type_identifier) ) identifier)) + number_literal) )))) = identifier) ;) (goto_statement "goto LAB_00296071;" goto statement_identifier ;) })) (labeled_statement "LAB_00295f20:\n    lVar2 = plVar11[6];" statement_identifier : (expression_statement "lVar2 = plVar11[6];" (assignment_expression "lVar2 = plVar11[6]" identifier = (subscript_expression "plVar11[6]" identifier [ number_literal ])) ;)) (if_statement "if ((*(byte *)(lVar2 + 1 + (ulong)*param_9 * 2) & 0x20) != 0) {\n      pbVar18 = param_9 + 1;\n      pbVar3 = param_10;\n      if (param_10 != pbVar18) {\n        bVar1 = *(byte *)(lVar2 + 1 + (ulong)param_9[1] * 2);\n        while ((pbVar3 = pbVar18, (bVar1 & 0x20) != 0 &&\n               (pbVar18 = pbVar18 + 1, pbVar3 = pbVar18, param_10 != pbVar18))) {\n          bVar1 = *(byte *)(lVar2 + 1 + (ulong)*pbVar18 * 2);\n        }\n      }\n      do {\n        param_9 = pbVar3;\n        bVar20 = (int)uVar16 == -1;\n        bVar15 = bVar20;\n        bVar17 = bVar19;\n        if (param_2 != (long *)0x0 && bVar20) {\n          if ((ulong)param_2[3] <= (ulong)param_2[2]) {\n            iVar10 = (**(code **)(*param_2 + 0x48))(param_2);\n            bVar15 = iVar10 == -1 && (param_2 != (long *)0x0 && bVar20);\n            if (iVar10 == -1) {\n              param_2 = (long *)0x0;\n            }\n            goto LAB_00296353;\n          }\n          bVar15 = false;\n          if (param_4 != (long *)0x0 && bVar19) goto LAB_002963d5;\nLAB_00296362:\n          if (bVar15 == bVar17) goto LAB_00295fe1;\n        }\n        else {\nLAB_00296353:\n          if (param_4 == (long *)0x0 || !bVar19) goto LAB_00296362;\nLAB_002963d5:\n          bVar17 = param_4 != (long *)0x0;\n          if ((ulong)param_4[3] <= (ulong)param_4[2]) {\n            iVar10 = (**(code **)(*param_4 + 0x48))(param_4);\n            if (iVar10 == -1) {\n              param_4 = (long *)0x0;\n            }\n            bVar17 = iVar10 == -1 && (bVar17 && bVar19);\n            goto LAB_00296362;\n          }\n          if (bVar15 == false) goto LAB_00295fe1;\n        }\n        uVar13 = uVar16;\n        if ((param_2 == (long *)0x0) || (!bVar20)) {\nLAB_0029637c:\n          if ((*(byte *)(plVar11[6] + 1 + (uVar13 & 0xff) * 2) & 0x20) == 0) goto LAB_00295fe1;\n          pbVar18 = (byte *)param_2[2];\n          if (pbVar18 < (byte *)param_2[3]) goto LAB_00296398;\n          (**(code **)(*param_2 + 0x50))(param_2);\n        }\n        else {\n          pbVar18 = (byte *)param_2[2];\n          if ((byte *)param_2[3] <= pbVar18) {\n            uVar13 = (**(code **)(*param_2 + 0x48))(param_2);\n            if ((int)uVar13 == -1) {\n              param_2 = (long *)0x0;\n            }\n            goto LAB_0029637c;\n          }\n          if ((*(byte *)(plVar11[6] + 1 + (ulong)*pbVar18 * 2) & 0x20) == 0) goto code_r0x00296430;\nLAB_00296398:\n          param_2[2] = (long)(pbVar18 + 1);\n        }\n        uVar16 = 0xffffffff;\n        pbVar3 = param_9;\n      } while( true );\n    }" if (parenthesized_expression "((*(byte *)(lVar2 + 1 + (ulong)*param_9 * 2) & 0x20) != 0)" ( (binary_expression "(*(byte *)(lVar2 + 1 + (ulong)*param_9 * 2) & 0x20) != 0" (parenthesized_expression "(*(byte *)(lVar2 + 1 + (ulong)*param_9 * 2) & 0x20)" ( (binary_expression "*(byte *)(lVar2 + 1 + (ulong)*param_9 * 2) & 0x20" (pointer_expression "*(byte *)(lVar2 + 1 + (ulong)*param_9 * 2)" * (cast_expression "(byte *)(lVar2 + 1 + (ulong)*param_9 * 2)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar2 + 1 + (ulong)*param_9 * 2)" ( (binary_expression "lVar2 + 1 + (ulong)*param_9 * 2" (binary_expression "lVar2 + 1" identifier + number_literal) + (binary_expression "(ulong)*param_9 * 2" (binary_expression "(ulong)*param_9" (parenthesized_expression "(ulong)" ( identifier )) * identifier) * number_literal)) )))) & number_literal) )) != number_literal) )) (compound_statement "{\n      pbVar18 = param_9 + 1;\n      pbVar3 = param_10;\n      if (param_10 != pbVar18) {\n        bVar1 = *(byte *)(lVar2 + 1 + (ulong)param_9[1] * 2);\n        while ((pbVar3 = pbVar18, (bVar1 & 0x20) != 0 &&\n               (pbVar18 = pbVar18 + 1, pbVar3 = pbVar18, param_10 != pbVar18))) {\n          bVar1 = *(byte *)(lVar2 + 1 + (ulong)*pbVar18 * 2);\n        }\n      }\n      do {\n        param_9 = pbVar3;\n        bVar20 = (int)uVar16 == -1;\n        bVar15 = bVar20;\n        bVar17 = bVar19;\n        if (param_2 != (long *)0x0 && bVar20) {\n          if ((ulong)param_2[3] <= (ulong)param_2[2]) {\n            iVar10 = (**(code **)(*param_2 + 0x48))(param_2);\n            bVar15 = iVar10 == -1 && (param_2 != (long *)0x0 && bVar20);\n            if (iVar10 == -1) {\n              param_2 = (long *)0x0;\n            }\n            goto LAB_00296353;\n          }\n          bVar15 = false;\n          if (param_4 != (long *)0x0 && bVar19) goto LAB_002963d5;\nLAB_00296362:\n          if (bVar15 == bVar17) goto LAB_00295fe1;\n        }\n        else {\nLAB_00296353:\n          if (param_4 == (long *)0x0 || !bVar19) goto LAB_00296362;\nLAB_002963d5:\n          bVar17 = param_4 != (long *)0x0;\n          if ((ulong)param_4[3] <= (ulong)param_4[2]) {\n            iVar10 = (**(code **)(*param_4 + 0x48))(param_4);\n            if (iVar10 == -1) {\n              param_4 = (long *)0x0;\n            }\n            bVar17 = iVar10 == -1 && (bVar17 && bVar19);\n            goto LAB_00296362;\n          }\n          if (bVar15 == false) goto LAB_00295fe1;\n        }\n        uVar13 = uVar16;\n        if ((param_2 == (long *)0x0) || (!bVar20)) {\nLAB_0029637c:\n          if ((*(byte *)(plVar11[6] + 1 + (uVar13 & 0xff) * 2) & 0x20) == 0) goto LAB_00295fe1;\n          pbVar18 = (byte *)param_2[2];\n          if (pbVar18 < (byte *)param_2[3]) goto LAB_00296398;\n          (**(code **)(*param_2 + 0x50))(param_2);\n        }\n        else {\n          pbVar18 = (byte *)param_2[2];\n          if ((byte *)param_2[3] <= pbVar18) {\n            uVar13 = (**(code **)(*param_2 + 0x48))(param_2);\n            if ((int)uVar13 == -1) {\n              param_2 = (long *)0x0;\n            }\n            goto LAB_0029637c;\n          }\n          if ((*(byte *)(plVar11[6] + 1 + (ulong)*pbVar18 * 2) & 0x20) == 0) goto code_r0x00296430;\nLAB_00296398:\n          param_2[2] = (long)(pbVar18 + 1);\n        }\n        uVar16 = 0xffffffff;\n        pbVar3 = param_9;\n      } while( true );\n    }" { (expression_statement "pbVar18 = param_9 + 1;" (assignment_expression "pbVar18 = param_9 + 1" identifier = (binary_expression "param_9 + 1" identifier + number_literal)) ;) (expression_statement "pbVar3 = param_10;" (assignment_expression "pbVar3 = param_10" identifier = identifier) ;) (if_statement "if (param_10 != pbVar18) {\n        bVar1 = *(byte *)(lVar2 + 1 + (ulong)param_9[1] * 2);\n        while ((pbVar3 = pbVar18, (bVar1 & 0x20) != 0 &&\n               (pbVar18 = pbVar18 + 1, pbVar3 = pbVar18, param_10 != pbVar18))) {\n          bVar1 = *(byte *)(lVar2 + 1 + (ulong)*pbVar18 * 2);\n        }\n      }" if (parenthesized_expression "(param_10 != pbVar18)" ( (binary_expression "param_10 != pbVar18" identifier != identifier) )) (compound_statement "{\n        bVar1 = *(byte *)(lVar2 + 1 + (ulong)param_9[1] * 2);\n        while ((pbVar3 = pbVar18, (bVar1 & 0x20) != 0 &&\n               (pbVar18 = pbVar18 + 1, pbVar3 = pbVar18, param_10 != pbVar18))) {\n          bVar1 = *(byte *)(lVar2 + 1 + (ulong)*pbVar18 * 2);\n        }\n      }" { (expression_statement "bVar1 = *(byte *)(lVar2 + 1 + (ulong)param_9[1] * 2);" (assignment_expression "bVar1 = *(byte *)(lVar2 + 1 + (ulong)param_9[1] * 2)" identifier = (pointer_expression "*(byte *)(lVar2 + 1 + (ulong)param_9[1] * 2)" * (cast_expression "(byte *)(lVar2 + 1 + (ulong)param_9[1] * 2)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar2 + 1 + (ulong)param_9[1] * 2)" ( (binary_expression "lVar2 + 1 + (ulong)param_9[1] * 2" (binary_expression "lVar2 + 1" identifier + number_literal) + (binary_expression "(ulong)param_9[1] * 2" (cast_expression "(ulong)param_9[1]" ( (type_descriptor "ulong" type_identifier) ) (subscript_expression "param_9[1]" identifier [ number_literal ])) * number_literal)) ))))) ;) (while_statement "while ((pbVar3 = pbVar18, (bVar1 & 0x20) != 0 &&\n               (pbVar18 = pbVar18 + 1, pbVar3 = pbVar18, param_10 != pbVar18))) {\n          bVar1 = *(byte *)(lVar2 + 1 + (ulong)*pbVar18 * 2);\n        }" while (parenthesized_expression "((pbVar3 = pbVar18, (bVar1 & 0x20) != 0 &&\n               (pbVar18 = pbVar18 + 1, pbVar3 = pbVar18, param_10 != pbVar18)))" ( (parenthesized_expression "(pbVar3 = pbVar18, (bVar1 & 0x20) != 0 &&\n               (pbVar18 = pbVar18 + 1, pbVar3 = pbVar18, param_10 != pbVar18))" ( (comma_expression "pbVar3 = pbVar18, (bVar1 & 0x20) != 0 &&\n               (pbVar18 = pbVar18 + 1, pbVar3 = pbVar18, param_10 != pbVar18)" (assignment_expression "pbVar3 = pbVar18" identifier = identifier) , (binary_expression "(bVar1 & 0x20) != 0 &&\n               (pbVar18 = pbVar18 + 1, pbVar3 = pbVar18, param_10 != pbVar18)" (binary_expression "(bVar1 & 0x20) != 0" (parenthesized_expression "(bVar1 & 0x20)" ( (binary_expression "bVar1 & 0x20" identifier & number_literal) )) != number_literal) && (parenthesized_expression "(pbVar18 = pbVar18 + 1, pbVar3 = pbVar18, param_10 != pbVar18)" ( (comma_expression "pbVar18 = pbVar18 + 1, pbVar3 = pbVar18, param_10 != pbVar18" (assignment_expression "pbVar18 = pbVar18 + 1" identifier = (binary_expression "pbVar18 + 1" identifier + number_literal)) , (comma_expression "pbVar3 = pbVar18, param_10 != pbVar18" (assignment_expression "pbVar3 = pbVar18" identifier = identifier) , (binary_expression "param_10 != pbVar18" identifier != identifier))) )))) )) )) (compound_statement "{\n          bVar1 = *(byte *)(lVar2 + 1 + (ulong)*pbVar18 * 2);\n        }" { (expression_statement "bVar1 = *(byte *)(lVar2 + 1 + (ulong)*pbVar18 * 2);" (assignment_expression "bVar1 = *(byte *)(lVar2 + 1 + (ulong)*pbVar18 * 2)" identifier = (pointer_expression "*(byte *)(lVar2 + 1 + (ulong)*pbVar18 * 2)" * (cast_expression "(byte *)(lVar2 + 1 + (ulong)*pbVar18 * 2)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar2 + 1 + (ulong)*pbVar18 * 2)" ( (binary_expression "lVar2 + 1 + (ulong)*pbVar18 * 2" (binary_expression "lVar2 + 1" identifier + number_literal) + (binary_expression "(ulong)*pbVar18 * 2" (binary_expression "(ulong)*pbVar18" (parenthesized_expression "(ulong)" ( identifier )) * identifier) * number_literal)) ))))) ;) })) })) (do_statement "do {\n        param_9 = pbVar3;\n        bVar20 = (int)uVar16 == -1;\n        bVar15 = bVar20;\n        bVar17 = bVar19;\n        if (param_2 != (long *)0x0 && bVar20) {\n          if ((ulong)param_2[3] <= (ulong)param_2[2]) {\n            iVar10 = (**(code **)(*param_2 + 0x48))(param_2);\n            bVar15 = iVar10 == -1 && (param_2 != (long *)0x0 && bVar20);\n            if (iVar10 == -1) {\n              param_2 = (long *)0x0;\n            }\n            goto LAB_00296353;\n          }\n          bVar15 = false;\n          if (param_4 != (long *)0x0 && bVar19) goto LAB_002963d5;\nLAB_00296362:\n          if (bVar15 == bVar17) goto LAB_00295fe1;\n        }\n        else {\nLAB_00296353:\n          if (param_4 == (long *)0x0 || !bVar19) goto LAB_00296362;\nLAB_002963d5:\n          bVar17 = param_4 != (long *)0x0;\n          if ((ulong)param_4[3] <= (ulong)param_4[2]) {\n            iVar10 = (**(code **)(*param_4 + 0x48))(param_4);\n            if (iVar10 == -1) {\n              param_4 = (long *)0x0;\n            }\n            bVar17 = iVar10 == -1 && (bVar17 && bVar19);\n            goto LAB_00296362;\n          }\n          if (bVar15 == false) goto LAB_00295fe1;\n        }\n        uVar13 = uVar16;\n        if ((param_2 == (long *)0x0) || (!bVar20)) {\nLAB_0029637c:\n          if ((*(byte *)(plVar11[6] + 1 + (uVar13 & 0xff) * 2) & 0x20) == 0) goto LAB_00295fe1;\n          pbVar18 = (byte *)param_2[2];\n          if (pbVar18 < (byte *)param_2[3]) goto LAB_00296398;\n          (**(code **)(*param_2 + 0x50))(param_2);\n        }\n        else {\n          pbVar18 = (byte *)param_2[2];\n          if ((byte *)param_2[3] <= pbVar18) {\n            uVar13 = (**(code **)(*param_2 + 0x48))(param_2);\n            if ((int)uVar13 == -1) {\n              param_2 = (long *)0x0;\n            }\n            goto LAB_0029637c;\n          }\n          if ((*(byte *)(plVar11[6] + 1 + (ulong)*pbVar18 * 2) & 0x20) == 0) goto code_r0x00296430;\nLAB_00296398:\n          param_2[2] = (long)(pbVar18 + 1);\n        }\n        uVar16 = 0xffffffff;\n        pbVar3 = param_9;\n      } while( true );" do (compound_statement "{\n        param_9 = pbVar3;\n        bVar20 = (int)uVar16 == -1;\n        bVar15 = bVar20;\n        bVar17 = bVar19;\n        if (param_2 != (long *)0x0 && bVar20) {\n          if ((ulong)param_2[3] <= (ulong)param_2[2]) {\n            iVar10 = (**(code **)(*param_2 + 0x48))(param_2);\n            bVar15 = iVar10 == -1 && (param_2 != (long *)0x0 && bVar20);\n            if (iVar10 == -1) {\n              param_2 = (long *)0x0;\n            }\n            goto LAB_00296353;\n          }\n          bVar15 = false;\n          if (param_4 != (long *)0x0 && bVar19) goto LAB_002963d5;\nLAB_00296362:\n          if (bVar15 == bVar17) goto LAB_00295fe1;\n        }\n        else {\nLAB_00296353:\n          if (param_4 == (long *)0x0 || !bVar19) goto LAB_00296362;\nLAB_002963d5:\n          bVar17 = param_4 != (long *)0x0;\n          if ((ulong)param_4[3] <= (ulong)param_4[2]) {\n            iVar10 = (**(code **)(*param_4 + 0x48))(param_4);\n            if (iVar10 == -1) {\n              param_4 = (long *)0x0;\n            }\n            bVar17 = iVar10 == -1 && (bVar17 && bVar19);\n            goto LAB_00296362;\n          }\n          if (bVar15 == false) goto LAB_00295fe1;\n        }\n        uVar13 = uVar16;\n        if ((param_2 == (long *)0x0) || (!bVar20)) {\nLAB_0029637c:\n          if ((*(byte *)(plVar11[6] + 1 + (uVar13 & 0xff) * 2) & 0x20) == 0) goto LAB_00295fe1;\n          pbVar18 = (byte *)param_2[2];\n          if (pbVar18 < (byte *)param_2[3]) goto LAB_00296398;\n          (**(code **)(*param_2 + 0x50))(param_2);\n        }\n        else {\n          pbVar18 = (byte *)param_2[2];\n          if ((byte *)param_2[3] <= pbVar18) {\n            uVar13 = (**(code **)(*param_2 + 0x48))(param_2);\n            if ((int)uVar13 == -1) {\n              param_2 = (long *)0x0;\n            }\n            goto LAB_0029637c;\n          }\n          if ((*(byte *)(plVar11[6] + 1 + (ulong)*pbVar18 * 2) & 0x20) == 0) goto code_r0x00296430;\nLAB_00296398:\n          param_2[2] = (long)(pbVar18 + 1);\n        }\n        uVar16 = 0xffffffff;\n        pbVar3 = param_9;\n      }" { (expression_statement "param_9 = pbVar3;" (assignment_expression "param_9 = pbVar3" identifier = identifier) ;) (expression_statement "bVar20 = (int)uVar16 == -1;" (assignment_expression "bVar20 = (int)uVar16 == -1" identifier = (binary_expression "(int)uVar16 == -1" (cast_expression "(int)uVar16" ( (type_descriptor "int" primitive_type) ) identifier) == number_literal)) ;) (expression_statement "bVar15 = bVar20;" (assignment_expression "bVar15 = bVar20" identifier = identifier) ;) (expression_statement "bVar17 = bVar19;" (assignment_expression "bVar17 = bVar19" identifier = identifier) ;) (if_statement "if (param_2 != (long *)0x0 && bVar20) {\n          if ((ulong)param_2[3] <= (ulong)param_2[2]) {\n            iVar10 = (**(code **)(*param_2 + 0x48))(param_2);\n            bVar15 = iVar10 == -1 && (param_2 != (long *)0x0 && bVar20);\n            if (iVar10 == -1) {\n              param_2 = (long *)0x0;\n            }\n            goto LAB_00296353;\n          }\n          bVar15 = false;\n          if (param_4 != (long *)0x0 && bVar19) goto LAB_002963d5;\nLAB_00296362:\n          if (bVar15 == bVar17) goto LAB_00295fe1;\n        }\n        else {\nLAB_00296353:\n          if (param_4 == (long *)0x0 || !bVar19) goto LAB_00296362;\nLAB_002963d5:\n          bVar17 = param_4 != (long *)0x0;\n          if ((ulong)param_4[3] <= (ulong)param_4[2]) {\n            iVar10 = (**(code **)(*param_4 + 0x48))(param_4);\n            if (iVar10 == -1) {\n              param_4 = (long *)0x0;\n            }\n            bVar17 = iVar10 == -1 && (bVar17 && bVar19);\n            goto LAB_00296362;\n          }\n          if (bVar15 == false) goto LAB_00295fe1;\n        }" if (parenthesized_expression "(param_2 != (long *)0x0 && bVar20)" ( (binary_expression "param_2 != (long *)0x0 && bVar20" (binary_expression "param_2 != (long *)0x0" identifier != (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) && identifier) )) (compound_statement "{\n          if ((ulong)param_2[3] <= (ulong)param_2[2]) {\n            iVar10 = (**(code **)(*param_2 + 0x48))(param_2);\n            bVar15 = iVar10 == -1 && (param_2 != (long *)0x0 && bVar20);\n            if (iVar10 == -1) {\n              param_2 = (long *)0x0;\n            }\n            goto LAB_00296353;\n          }\n          bVar15 = false;\n          if (param_4 != (long *)0x0 && bVar19) goto LAB_002963d5;\nLAB_00296362:\n          if (bVar15 == bVar17) goto LAB_00295fe1;\n        }" { (if_statement "if ((ulong)param_2[3] <= (ulong)param_2[2]) {\n            iVar10 = (**(code **)(*param_2 + 0x48))(param_2);\n            bVar15 = iVar10 == -1 && (param_2 != (long *)0x0 && bVar20);\n            if (iVar10 == -1) {\n              param_2 = (long *)0x0;\n            }\n            goto LAB_00296353;\n          }" if (parenthesized_expression "((ulong)param_2[3] <= (ulong)param_2[2])" ( (binary_expression "(ulong)param_2[3] <= (ulong)param_2[2]" (cast_expression "(ulong)param_2[3]" ( (type_descriptor "ulong" type_identifier) ) (subscript_expression "param_2[3]" identifier [ number_literal ])) <= (cast_expression "(ulong)param_2[2]" ( (type_descriptor "ulong" type_identifier) ) (subscript_expression "param_2[2]" identifier [ number_literal ]))) )) (compound_statement "{\n            iVar10 = (**(code **)(*param_2 + 0x48))(param_2);\n            bVar15 = iVar10 == -1 && (param_2 != (long *)0x0 && bVar20);\n            if (iVar10 == -1) {\n              param_2 = (long *)0x0;\n            }\n            goto LAB_00296353;\n          }" { (expression_statement "iVar10 = (**(code **)(*param_2 + 0x48))(param_2);" (assignment_expression "iVar10 = (**(code **)(*param_2 + 0x48))(param_2)" identifier = (call_expression "(**(code **)(*param_2 + 0x48))(param_2)" (parenthesized_expression "(**(code **)(*param_2 + 0x48))" ( (pointer_expression "**(code **)(*param_2 + 0x48)" * (pointer_expression "*(code **)(*param_2 + 0x48)" * (cast_expression "(code **)(*param_2 + 0x48)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*param_2 + 0x48)" ( (binary_expression "*param_2 + 0x48" (pointer_expression "*param_2" * identifier) + number_literal) ))))) )) (argument_list "(param_2)" ( identifier )))) ;) (expression_statement "bVar15 = iVar10 == -1 && (param_2 != (long *)0x0 && bVar20);" (assignment_expression "bVar15 = iVar10 == -1 && (param_2 != (long *)0x0 && bVar20)" identifier = (binary_expression "iVar10 == -1 && (param_2 != (long *)0x0 && bVar20)" (binary_expression "iVar10 == -1" identifier == number_literal) && (parenthesized_expression "(param_2 != (long *)0x0 && bVar20)" ( (binary_expression "param_2 != (long *)0x0 && bVar20" (binary_expression "param_2 != (long *)0x0" identifier != (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) && identifier) )))) ;) (if_statement "if (iVar10 == -1) {\n              param_2 = (long *)0x0;\n            }" if (parenthesized_expression "(iVar10 == -1)" ( (binary_expression "iVar10 == -1" identifier == number_literal) )) (compound_statement "{\n              param_2 = (long *)0x0;\n            }" { (expression_statement "param_2 = (long *)0x0;" (assignment_expression "param_2 = (long *)0x0" identifier = (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) ;) })) (goto_statement "goto LAB_00296353;" goto statement_identifier ;) })) (expression_statement "bVar15 = false;" (assignment_expression "bVar15 = false" identifier = false) ;) (if_statement "if (param_4 != (long *)0x0 && bVar19) goto LAB_002963d5;" if (parenthesized_expression "(param_4 != (long *)0x0 && bVar19)" ( (binary_expression "param_4 != (long *)0x0 && bVar19" (binary_expression "param_4 != (long *)0x0" identifier != (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) && identifier) )) (goto_statement "goto LAB_002963d5;" goto statement_identifier ;)) (labeled_statement "LAB_00296362:\n          if (bVar15 == bVar17) goto LAB_00295fe1;" statement_identifier : (if_statement "if (bVar15 == bVar17) goto LAB_00295fe1;" if (parenthesized_expression "(bVar15 == bVar17)" ( (binary_expression "bVar15 == bVar17" identifier == identifier) )) (goto_statement "goto LAB_00295fe1;" goto statement_identifier ;))) }) (else_clause "else {\nLAB_00296353:\n          if (param_4 == (long *)0x0 || !bVar19) goto LAB_00296362;\nLAB_002963d5:\n          bVar17 = param_4 != (long *)0x0;\n          if ((ulong)param_4[3] <= (ulong)param_4[2]) {\n            iVar10 = (**(code **)(*param_4 + 0x48))(param_4);\n            if (iVar10 == -1) {\n              param_4 = (long *)0x0;\n            }\n            bVar17 = iVar10 == -1 && (bVar17 && bVar19);\n            goto LAB_00296362;\n          }\n          if (bVar15 == false) goto LAB_00295fe1;\n        }" else (compound_statement "{\nLAB_00296353:\n          if (param_4 == (long *)0x0 || !bVar19) goto LAB_00296362;\nLAB_002963d5:\n          bVar17 = param_4 != (long *)0x0;\n          if ((ulong)param_4[3] <= (ulong)param_4[2]) {\n            iVar10 = (**(code **)(*param_4 + 0x48))(param_4);\n            if (iVar10 == -1) {\n              param_4 = (long *)0x0;\n            }\n            bVar17 = iVar10 == -1 && (bVar17 && bVar19);\n            goto LAB_00296362;\n          }\n          if (bVar15 == false) goto LAB_00295fe1;\n        }" { (labeled_statement "LAB_00296353:\n          if (param_4 == (long *)0x0 || !bVar19) goto LAB_00296362;" statement_identifier : (if_statement "if (param_4 == (long *)0x0 || !bVar19) goto LAB_00296362;" if (parenthesized_expression "(param_4 == (long *)0x0 || !bVar19)" ( (binary_expression "param_4 == (long *)0x0 || !bVar19" (binary_expression "param_4 == (long *)0x0" identifier == (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) || (unary_expression "!bVar19" ! identifier)) )) (goto_statement "goto LAB_00296362;" goto statement_identifier ;))) (labeled_statement "LAB_002963d5:\n          bVar17 = param_4 != (long *)0x0;" statement_identifier : (expression_statement "bVar17 = param_4 != (long *)0x0;" (assignment_expression "bVar17 = param_4 != (long *)0x0" identifier = (binary_expression "param_4 != (long *)0x0" identifier != (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal))) ;)) (if_statement "if ((ulong)param_4[3] <= (ulong)param_4[2]) {\n            iVar10 = (**(code **)(*param_4 + 0x48))(param_4);\n            if (iVar10 == -1) {\n              param_4 = (long *)0x0;\n            }\n            bVar17 = iVar10 == -1 && (bVar17 && bVar19);\n            goto LAB_00296362;\n          }" if (parenthesized_expression "((ulong)param_4[3] <= (ulong)param_4[2])" ( (binary_expression "(ulong)param_4[3] <= (ulong)param_4[2]" (cast_expression "(ulong)param_4[3]" ( (type_descriptor "ulong" type_identifier) ) (subscript_expression "param_4[3]" identifier [ number_literal ])) <= (cast_expression "(ulong)param_4[2]" ( (type_descriptor "ulong" type_identifier) ) (subscript_expression "param_4[2]" identifier [ number_literal ]))) )) (compound_statement "{\n            iVar10 = (**(code **)(*param_4 + 0x48))(param_4);\n            if (iVar10 == -1) {\n              param_4 = (long *)0x0;\n            }\n            bVar17 = iVar10 == -1 && (bVar17 && bVar19);\n            goto LAB_00296362;\n          }" { (expression_statement "iVar10 = (**(code **)(*param_4 + 0x48))(param_4);" (assignment_expression "iVar10 = (**(code **)(*param_4 + 0x48))(param_4)" identifier = (call_expression "(**(code **)(*param_4 + 0x48))(param_4)" (parenthesized_expression "(**(code **)(*param_4 + 0x48))" ( (pointer_expression "**(code **)(*param_4 + 0x48)" * (pointer_expression "*(code **)(*param_4 + 0x48)" * (cast_expression "(code **)(*param_4 + 0x48)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*param_4 + 0x48)" ( (binary_expression "*param_4 + 0x48" (pointer_expression "*param_4" * identifier) + number_literal) ))))) )) (argument_list "(param_4)" ( identifier )))) ;) (if_statement "if (iVar10 == -1) {\n              param_4 = (long *)0x0;\n            }" if (parenthesized_expression "(iVar10 == -1)" ( (binary_expression "iVar10 == -1" identifier == number_literal) )) (compound_statement "{\n              param_4 = (long *)0x0;\n            }" { (expression_statement "param_4 = (long *)0x0;" (assignment_expression "param_4 = (long *)0x0" identifier = (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) ;) })) (expression_statement "bVar17 = iVar10 == -1 && (bVar17 && bVar19);" (assignment_expression "bVar17 = iVar10 == -1 && (bVar17 && bVar19)" identifier = (binary_expression "iVar10 == -1 && (bVar17 && bVar19)" (binary_expression "iVar10 == -1" identifier == number_literal) && (parenthesized_expression "(bVar17 && bVar19)" ( (binary_expression "bVar17 && bVar19" identifier && identifier) )))) ;) (goto_statement "goto LAB_00296362;" goto statement_identifier ;) })) (if_statement "if (bVar15 == false) goto LAB_00295fe1;" if (parenthesized_expression "(bVar15 == false)" ( (binary_expression "bVar15 == false" identifier == false) )) (goto_statement "goto LAB_00295fe1;" goto statement_identifier ;)) }))) (expression_statement "uVar13 = uVar16;" (assignment_expression "uVar13 = uVar16" identifier = identifier) ;) (if_statement "if ((param_2 == (long *)0x0) || (!bVar20)) {\nLAB_0029637c:\n          if ((*(byte *)(plVar11[6] + 1 + (uVar13 & 0xff) * 2) & 0x20) == 0) goto LAB_00295fe1;\n          pbVar18 = (byte *)param_2[2];\n          if (pbVar18 < (byte *)param_2[3]) goto LAB_00296398;\n          (**(code **)(*param_2 + 0x50))(param_2);\n        }\n        else {\n          pbVar18 = (byte *)param_2[2];\n          if ((byte *)param_2[3] <= pbVar18) {\n            uVar13 = (**(code **)(*param_2 + 0x48))(param_2);\n            if ((int)uVar13 == -1) {\n              param_2 = (long *)0x0;\n            }\n            goto LAB_0029637c;\n          }\n          if ((*(byte *)(plVar11[6] + 1 + (ulong)*pbVar18 * 2) & 0x20) == 0) goto code_r0x00296430;\nLAB_00296398:\n          param_2[2] = (long)(pbVar18 + 1);\n        }" if (parenthesized_expression "((param_2 == (long *)0x0) || (!bVar20))" ( (binary_expression "(param_2 == (long *)0x0) || (!bVar20)" (parenthesized_expression "(param_2 == (long *)0x0)" ( (binary_expression "param_2 == (long *)0x0" identifier == (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) )) || (parenthesized_expression "(!bVar20)" ( (unary_expression "!bVar20" ! identifier) ))) )) (compound_statement "{\nLAB_0029637c:\n          if ((*(byte *)(plVar11[6] + 1 + (uVar13 & 0xff) * 2) & 0x20) == 0) goto LAB_00295fe1;\n          pbVar18 = (byte *)param_2[2];\n          if (pbVar18 < (byte *)param_2[3]) goto LAB_00296398;\n          (**(code **)(*param_2 + 0x50))(param_2);\n        }" { (labeled_statement "LAB_0029637c:\n          if ((*(byte *)(plVar11[6] + 1 + (uVar13 & 0xff) * 2) & 0x20) == 0) goto LAB_00295fe1;" statement_identifier : (if_statement "if ((*(byte *)(plVar11[6] + 1 + (uVar13 & 0xff) * 2) & 0x20) == 0) goto LAB_00295fe1;" if (parenthesized_expression "((*(byte *)(plVar11[6] + 1 + (uVar13 & 0xff) * 2) & 0x20) == 0)" ( (binary_expression "(*(byte *)(plVar11[6] + 1 + (uVar13 & 0xff) * 2) & 0x20) == 0" (parenthesized_expression "(*(byte *)(plVar11[6] + 1 + (uVar13 & 0xff) * 2) & 0x20)" ( (binary_expression "*(byte *)(plVar11[6] + 1 + (uVar13 & 0xff) * 2) & 0x20" (pointer_expression "*(byte *)(plVar11[6] + 1 + (uVar13 & 0xff) * 2)" * (cast_expression "(byte *)(plVar11[6] + 1 + (uVar13 & 0xff) * 2)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(plVar11[6] + 1 + (uVar13 & 0xff) * 2)" ( (binary_expression "plVar11[6] + 1 + (uVar13 & 0xff) * 2" (binary_expression "plVar11[6] + 1" (subscript_expression "plVar11[6]" identifier [ number_literal ]) + number_literal) + (binary_expression "(uVar13 & 0xff) * 2" (parenthesized_expression "(uVar13 & 0xff)" ( (binary_expression "uVar13 & 0xff" identifier & number_literal) )) * number_literal)) )))) & number_literal) )) == number_literal) )) (goto_statement "goto LAB_00295fe1;" goto statement_identifier ;))) (expression_statement "pbVar18 = (byte *)param_2[2];" (assignment_expression "pbVar18 = (byte *)param_2[2]" identifier = (cast_expression "(byte *)param_2[2]" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_2[2]" identifier [ number_literal ]))) ;) (if_statement "if (pbVar18 < (byte *)param_2[3]) goto LAB_00296398;" if (parenthesized_expression "(pbVar18 < (byte *)param_2[3])" ( (binary_expression "pbVar18 < (byte *)param_2[3]" identifier < (cast_expression "(byte *)param_2[3]" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_2[3]" identifier [ number_literal ]))) )) (goto_statement "goto LAB_00296398;" goto statement_identifier ;)) (expression_statement "(**(code **)(*param_2 + 0x50))(param_2);" (call_expression "(**(code **)(*param_2 + 0x50))(param_2)" (parenthesized_expression "(**(code **)(*param_2 + 0x50))" ( (pointer_expression "**(code **)(*param_2 + 0x50)" * (pointer_expression "*(code **)(*param_2 + 0x50)" * (cast_expression "(code **)(*param_2 + 0x50)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*param_2 + 0x50)" ( (binary_expression "*param_2 + 0x50" (pointer_expression "*param_2" * identifier) + number_literal) ))))) )) (argument_list "(param_2)" ( identifier ))) ;) }) (else_clause "else {\n          pbVar18 = (byte *)param_2[2];\n          if ((byte *)param_2[3] <= pbVar18) {\n            uVar13 = (**(code **)(*param_2 + 0x48))(param_2);\n            if ((int)uVar13 == -1) {\n              param_2 = (long *)0x0;\n            }\n            goto LAB_0029637c;\n          }\n          if ((*(byte *)(plVar11[6] + 1 + (ulong)*pbVar18 * 2) & 0x20) == 0) goto code_r0x00296430;\nLAB_00296398:\n          param_2[2] = (long)(pbVar18 + 1);\n        }" else (compound_statement "{\n          pbVar18 = (byte *)param_2[2];\n          if ((byte *)param_2[3] <= pbVar18) {\n            uVar13 = (**(code **)(*param_2 + 0x48))(param_2);\n            if ((int)uVar13 == -1) {\n              param_2 = (long *)0x0;\n            }\n            goto LAB_0029637c;\n          }\n          if ((*(byte *)(plVar11[6] + 1 + (ulong)*pbVar18 * 2) & 0x20) == 0) goto code_r0x00296430;\nLAB_00296398:\n          param_2[2] = (long)(pbVar18 + 1);\n        }" { (expression_statement "pbVar18 = (byte *)param_2[2];" (assignment_expression "pbVar18 = (byte *)param_2[2]" identifier = (cast_expression "(byte *)param_2[2]" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_2[2]" identifier [ number_literal ]))) ;) (if_statement "if ((byte *)param_2[3] <= pbVar18) {\n            uVar13 = (**(code **)(*param_2 + 0x48))(param_2);\n            if ((int)uVar13 == -1) {\n              param_2 = (long *)0x0;\n            }\n            goto LAB_0029637c;\n          }" if (parenthesized_expression "((byte *)param_2[3] <= pbVar18)" ( (binary_expression "(byte *)param_2[3] <= pbVar18" (cast_expression "(byte *)param_2[3]" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_2[3]" identifier [ number_literal ])) <= identifier) )) (compound_statement "{\n            uVar13 = (**(code **)(*param_2 + 0x48))(param_2);\n            if ((int)uVar13 == -1) {\n              param_2 = (long *)0x0;\n            }\n            goto LAB_0029637c;\n          }" { (expression_statement "uVar13 = (**(code **)(*param_2 + 0x48))(param_2);" (assignment_expression "uVar13 = (**(code **)(*param_2 + 0x48))(param_2)" identifier = (call_expression "(**(code **)(*param_2 + 0x48))(param_2)" (parenthesized_expression "(**(code **)(*param_2 + 0x48))" ( (pointer_expression "**(code **)(*param_2 + 0x48)" * (pointer_expression "*(code **)(*param_2 + 0x48)" * (cast_expression "(code **)(*param_2 + 0x48)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*param_2 + 0x48)" ( (binary_expression "*param_2 + 0x48" (pointer_expression "*param_2" * identifier) + number_literal) ))))) )) (argument_list "(param_2)" ( identifier )))) ;) (if_statement "if ((int)uVar13 == -1) {\n              param_2 = (long *)0x0;\n            }" if (parenthesized_expression "((int)uVar13 == -1)" ( (binary_expression "(int)uVar13 == -1" (cast_expression "(int)uVar13" ( (type_descriptor "int" primitive_type) ) identifier) == number_literal) )) (compound_statement "{\n              param_2 = (long *)0x0;\n            }" { (expression_statement "param_2 = (long *)0x0;" (assignment_expression "param_2 = (long *)0x0" identifier = (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) ;) })) (goto_statement "goto LAB_0029637c;" goto statement_identifier ;) })) (if_statement "if ((*(byte *)(plVar11[6] + 1 + (ulong)*pbVar18 * 2) & 0x20) == 0) goto code_r0x00296430;" if (parenthesized_expression "((*(byte *)(plVar11[6] + 1 + (ulong)*pbVar18 * 2) & 0x20) == 0)" ( (binary_expression "(*(byte *)(plVar11[6] + 1 + (ulong)*pbVar18 * 2) & 0x20) == 0" (parenthesized_expression "(*(byte *)(plVar11[6] + 1 + (ulong)*pbVar18 * 2) & 0x20)" ( (binary_expression "*(byte *)(plVar11[6] + 1 + (ulong)*pbVar18 * 2) & 0x20" (pointer_expression "*(byte *)(plVar11[6] + 1 + (ulong)*pbVar18 * 2)" * (cast_expression "(byte *)(plVar11[6] + 1 + (ulong)*pbVar18 * 2)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(plVar11[6] + 1 + (ulong)*pbVar18 * 2)" ( (binary_expression "plVar11[6] + 1 + (ulong)*pbVar18 * 2" (binary_expression "plVar11[6] + 1" (subscript_expression "plVar11[6]" identifier [ number_literal ]) + number_literal) + (binary_expression "(ulong)*pbVar18 * 2" (binary_expression "(ulong)*pbVar18" (parenthesized_expression "(ulong)" ( identifier )) * identifier) * number_literal)) )))) & number_literal) )) == number_literal) )) (goto_statement "goto code_r0x00296430;" goto statement_identifier ;)) (labeled_statement "LAB_00296398:\n          param_2[2] = (long)(pbVar18 + 1);" statement_identifier : (expression_statement "param_2[2] = (long)(pbVar18 + 1);" (assignment_expression "param_2[2] = (long)(pbVar18 + 1)" (subscript_expression "param_2[2]" identifier [ number_literal ]) = (cast_expression "(long)(pbVar18 + 1)" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (parenthesized_expression "(pbVar18 + 1)" ( (binary_expression "pbVar18 + 1" identifier + number_literal) )))) ;)) }))) (expression_statement "uVar16 = 0xffffffff;" (assignment_expression "uVar16 = 0xffffffff" identifier = number_literal) ;) (expression_statement "pbVar3 = param_9;" (assignment_expression "pbVar3 = param_9" identifier = identifier) ;) }) while (parenthesized_expression "( true )" ( true )) ;) })) (expression_statement "cVar6 = (char)uVar16;" (assignment_expression "cVar6 = (char)uVar16" identifier = (cast_expression "(char)uVar16" ( (type_descriptor "char" primitive_type) ) identifier)) ;) (expression_statement "cVar4 = cVar6;" (assignment_expression "cVar4 = cVar6" identifier = identifier) ;) (if_statement "if ((param_2 != (long *)0x0) && (bVar20)) {\n      if ((char *)param_2[2] < (char *)param_2[3]) {\n        cVar4 = *(char *)param_2[2];\n      }\n      else {\n        iVar10 = (**(code **)(*param_2 + 0x48))(param_2);\n        cVar4 = -1;\n        if (iVar10 == -1) {\n          param_2 = (long *)0x0;\n        }\n        else {\n          cVar4 = (char)iVar10;\n        }\n      }\n    }" if (parenthesized_expression "((param_2 != (long *)0x0) && (bVar20))" ( (binary_expression "(param_2 != (long *)0x0) && (bVar20)" (parenthesized_expression "(param_2 != (long *)0x0)" ( (binary_expression "param_2 != (long *)0x0" identifier != (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) )) && (parenthesized_expression "(bVar20)" ( identifier ))) )) (compound_statement "{\n      if ((char *)param_2[2] < (char *)param_2[3]) {\n        cVar4 = *(char *)param_2[2];\n      }\n      else {\n        iVar10 = (**(code **)(*param_2 + 0x48))(param_2);\n        cVar4 = -1;\n        if (iVar10 == -1) {\n          param_2 = (long *)0x0;\n        }\n        else {\n          cVar4 = (char)iVar10;\n        }\n      }\n    }" { (if_statement "if ((char *)param_2[2] < (char *)param_2[3]) {\n        cVar4 = *(char *)param_2[2];\n      }\n      else {\n        iVar10 = (**(code **)(*param_2 + 0x48))(param_2);\n        cVar4 = -1;\n        if (iVar10 == -1) {\n          param_2 = (long *)0x0;\n        }\n        else {\n          cVar4 = (char)iVar10;\n        }\n      }" if (parenthesized_expression "((char *)param_2[2] < (char *)param_2[3])" ( (binary_expression "(char *)param_2[2] < (char *)param_2[3]" (cast_expression "(char *)param_2[2]" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_2[2]" identifier [ number_literal ])) < (cast_expression "(char *)param_2[3]" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_2[3]" identifier [ number_literal ]))) )) (compound_statement "{\n        cVar4 = *(char *)param_2[2];\n      }" { (expression_statement "cVar4 = *(char *)param_2[2];" (assignment_expression "cVar4 = *(char *)param_2[2]" identifier = (pointer_expression "*(char *)param_2[2]" * (cast_expression "(char *)param_2[2]" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_2[2]" identifier [ number_literal ])))) ;) }) (else_clause "else {\n        iVar10 = (**(code **)(*param_2 + 0x48))(param_2);\n        cVar4 = -1;\n        if (iVar10 == -1) {\n          param_2 = (long *)0x0;\n        }\n        else {\n          cVar4 = (char)iVar10;\n        }\n      }" else (compound_statement "{\n        iVar10 = (**(code **)(*param_2 + 0x48))(param_2);\n        cVar4 = -1;\n        if (iVar10 == -1) {\n          param_2 = (long *)0x0;\n        }\n        else {\n          cVar4 = (char)iVar10;\n        }\n      }" { (expression_statement "iVar10 = (**(code **)(*param_2 + 0x48))(param_2);" (assignment_expression "iVar10 = (**(code **)(*param_2 + 0x48))(param_2)" identifier = (call_expression "(**(code **)(*param_2 + 0x48))(param_2)" (parenthesized_expression "(**(code **)(*param_2 + 0x48))" ( (pointer_expression "**(code **)(*param_2 + 0x48)" * (pointer_expression "*(code **)(*param_2 + 0x48)" * (cast_expression "(code **)(*param_2 + 0x48)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*param_2 + 0x48)" ( (binary_expression "*param_2 + 0x48" (pointer_expression "*param_2" * identifier) + number_literal) ))))) )) (argument_list "(param_2)" ( identifier )))) ;) (expression_statement "cVar4 = -1;" (assignment_expression "cVar4 = -1" identifier = number_literal) ;) (if_statement "if (iVar10 == -1) {\n          param_2 = (long *)0x0;\n        }\n        else {\n          cVar4 = (char)iVar10;\n        }" if (parenthesized_expression "(iVar10 == -1)" ( (binary_expression "iVar10 == -1" identifier == number_literal) )) (compound_statement "{\n          param_2 = (long *)0x0;\n        }" { (expression_statement "param_2 = (long *)0x0;" (assignment_expression "param_2 = (long *)0x0" identifier = (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) ;) }) (else_clause "else {\n          cVar4 = (char)iVar10;\n        }" else (compound_statement "{\n          cVar4 = (char)iVar10;\n        }" { (expression_statement "cVar4 = (char)iVar10;" (assignment_expression "cVar4 = (char)iVar10" identifier = (cast_expression "(char)iVar10" ( (type_descriptor "char" primitive_type) ) identifier)) ;) }))) }))) })) (expression_statement "cVar4 = (**(code **)(*plVar11 + 0x20))(plVar11,(int)cVar4);" (assignment_expression "cVar4 = (**(code **)(*plVar11 + 0x20))(plVar11,(int)cVar4)" identifier = (call_expression "(**(code **)(*plVar11 + 0x20))(plVar11,(int)cVar4)" (parenthesized_expression "(**(code **)(*plVar11 + 0x20))" ( (pointer_expression "**(code **)(*plVar11 + 0x20)" * (pointer_expression "*(code **)(*plVar11 + 0x20)" * (cast_expression "(code **)(*plVar11 + 0x20)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*plVar11 + 0x20)" ( (binary_expression "*plVar11 + 0x20" (pointer_expression "*plVar11" * identifier) + number_literal) ))))) )) (argument_list "(plVar11,(int)cVar4)" ( identifier , (cast_expression "(int)cVar4" ( (type_descriptor "int" primitive_type) ) identifier) )))) ;) (expression_statement "cVar5 = (**(code **)(*plVar11 + 0x20))(plVar11,(int)(char)*param_9);" (assignment_expression "cVar5 = (**(code **)(*plVar11 + 0x20))(plVar11,(int)(char)*param_9)" identifier = (call_expression "(**(code **)(*plVar11 + 0x20))(plVar11,(int)(char)*param_9)" (parenthesized_expression "(**(code **)(*plVar11 + 0x20))" ( (pointer_expression "**(code **)(*plVar11 + 0x20)" * (pointer_expression "*(code **)(*plVar11 + 0x20)" * (cast_expression "(code **)(*plVar11 + 0x20)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*plVar11 + 0x20)" ( (binary_expression "*plVar11 + 0x20" (pointer_expression "*plVar11" * identifier) + number_literal) ))))) )) (argument_list "(plVar11,(int)(char)*param_9)" ( identifier , (cast_expression "(int)(char)*param_9" ( (type_descriptor "int" primitive_type) ) (cast_expression "(char)*param_9" ( (type_descriptor "char" primitive_type) ) (pointer_expression "*param_9" * identifier))) )))) ;) (if_statement "if (cVar5 != cVar4) {\n      if ((param_2 != (long *)0x0) && (bVar20)) {\n        if ((char *)param_2[2] < (char *)param_2[3]) {\n          cVar6 = *(char *)param_2[2];\n        }\n        else {\n          iVar10 = (**(code **)(*param_2 + 0x48))(param_2);\n          cVar6 = -1;\n          if (iVar10 == -1) {\n            param_2 = (long *)0x0;\n          }\n          else {\n            cVar6 = (char)iVar10;\n          }\n        }\n      }\n      cVar6 = (**(code **)(*plVar11 + 0x10))(plVar11,(int)cVar6);\n      cVar4 = (**(code **)(*plVar11 + 0x10))(plVar11,(int)(char)*param_9);\n      if (cVar4 != cVar6) goto LAB_00296748;\n    }" if (parenthesized_expression "(cVar5 != cVar4)" ( (binary_expression "cVar5 != cVar4" identifier != identifier) )) (compound_statement "{\n      if ((param_2 != (long *)0x0) && (bVar20)) {\n        if ((char *)param_2[2] < (char *)param_2[3]) {\n          cVar6 = *(char *)param_2[2];\n        }\n        else {\n          iVar10 = (**(code **)(*param_2 + 0x48))(param_2);\n          cVar6 = -1;\n          if (iVar10 == -1) {\n            param_2 = (long *)0x0;\n          }\n          else {\n            cVar6 = (char)iVar10;\n          }\n        }\n      }\n      cVar6 = (**(code **)(*plVar11 + 0x10))(plVar11,(int)cVar6);\n      cVar4 = (**(code **)(*plVar11 + 0x10))(plVar11,(int)(char)*param_9);\n      if (cVar4 != cVar6) goto LAB_00296748;\n    }" { (if_statement "if ((param_2 != (long *)0x0) && (bVar20)) {\n        if ((char *)param_2[2] < (char *)param_2[3]) {\n          cVar6 = *(char *)param_2[2];\n        }\n        else {\n          iVar10 = (**(code **)(*param_2 + 0x48))(param_2);\n          cVar6 = -1;\n          if (iVar10 == -1) {\n            param_2 = (long *)0x0;\n          }\n          else {\n            cVar6 = (char)iVar10;\n          }\n        }\n      }" if (parenthesized_expression "((param_2 != (long *)0x0) && (bVar20))" ( (binary_expression "(param_2 != (long *)0x0) && (bVar20)" (parenthesized_expression "(param_2 != (long *)0x0)" ( (binary_expression "param_2 != (long *)0x0" identifier != (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) )) && (parenthesized_expression "(bVar20)" ( identifier ))) )) (compound_statement "{\n        if ((char *)param_2[2] < (char *)param_2[3]) {\n          cVar6 = *(char *)param_2[2];\n        }\n        else {\n          iVar10 = (**(code **)(*param_2 + 0x48))(param_2);\n          cVar6 = -1;\n          if (iVar10 == -1) {\n            param_2 = (long *)0x0;\n          }\n          else {\n            cVar6 = (char)iVar10;\n          }\n        }\n      }" { (if_statement "if ((char *)param_2[2] < (char *)param_2[3]) {\n          cVar6 = *(char *)param_2[2];\n        }\n        else {\n          iVar10 = (**(code **)(*param_2 + 0x48))(param_2);\n          cVar6 = -1;\n          if (iVar10 == -1) {\n            param_2 = (long *)0x0;\n          }\n          else {\n            cVar6 = (char)iVar10;\n          }\n        }" if (parenthesized_expression "((char *)param_2[2] < (char *)param_2[3])" ( (binary_expression "(char *)param_2[2] < (char *)param_2[3]" (cast_expression "(char *)param_2[2]" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_2[2]" identifier [ number_literal ])) < (cast_expression "(char *)param_2[3]" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_2[3]" identifier [ number_literal ]))) )) (compound_statement "{\n          cVar6 = *(char *)param_2[2];\n        }" { (expression_statement "cVar6 = *(char *)param_2[2];" (assignment_expression "cVar6 = *(char *)param_2[2]" identifier = (pointer_expression "*(char *)param_2[2]" * (cast_expression "(char *)param_2[2]" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_2[2]" identifier [ number_literal ])))) ;) }) (else_clause "else {\n          iVar10 = (**(code **)(*param_2 + 0x48))(param_2);\n          cVar6 = -1;\n          if (iVar10 == -1) {\n            param_2 = (long *)0x0;\n          }\n          else {\n            cVar6 = (char)iVar10;\n          }\n        }" else (compound_statement "{\n          iVar10 = (**(code **)(*param_2 + 0x48))(param_2);\n          cVar6 = -1;\n          if (iVar10 == -1) {\n            param_2 = (long *)0x0;\n          }\n          else {\n            cVar6 = (char)iVar10;\n          }\n        }" { (expression_statement "iVar10 = (**(code **)(*param_2 + 0x48))(param_2);" (assignment_expression "iVar10 = (**(code **)(*param_2 + 0x48))(param_2)" identifier = (call_expression "(**(code **)(*param_2 + 0x48))(param_2)" (parenthesized_expression "(**(code **)(*param_2 + 0x48))" ( (pointer_expression "**(code **)(*param_2 + 0x48)" * (pointer_expression "*(code **)(*param_2 + 0x48)" * (cast_expression "(code **)(*param_2 + 0x48)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*param_2 + 0x48)" ( (binary_expression "*param_2 + 0x48" (pointer_expression "*param_2" * identifier) + number_literal) ))))) )) (argument_list "(param_2)" ( identifier )))) ;) (expression_statement "cVar6 = -1;" (assignment_expression "cVar6 = -1" identifier = number_literal) ;) (if_statement "if (iVar10 == -1) {\n            param_2 = (long *)0x0;\n          }\n          else {\n            cVar6 = (char)iVar10;\n          }" if (parenthesized_expression "(iVar10 == -1)" ( (binary_expression "iVar10 == -1" identifier == number_literal) )) (compound_statement "{\n            param_2 = (long *)0x0;\n          }" { (expression_statement "param_2 = (long *)0x0;" (assignment_expression "param_2 = (long *)0x0" identifier = (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) ;) }) (else_clause "else {\n            cVar6 = (char)iVar10;\n          }" else (compound_statement "{\n            cVar6 = (char)iVar10;\n          }" { (expression_statement "cVar6 = (char)iVar10;" (assignment_expression "cVar6 = (char)iVar10" identifier = (cast_expression "(char)iVar10" ( (type_descriptor "char" primitive_type) ) identifier)) ;) }))) }))) })) (expression_statement "cVar6 = (**(code **)(*plVar11 + 0x10))(plVar11,(int)cVar6);" (assignment_expression "cVar6 = (**(code **)(*plVar11 + 0x10))(plVar11,(int)cVar6)" identifier = (call_expression "(**(code **)(*plVar11 + 0x10))(plVar11,(int)cVar6)" (parenthesized_expression "(**(code **)(*plVar11 + 0x10))" ( (pointer_expression "**(code **)(*plVar11 + 0x10)" * (pointer_expression "*(code **)(*plVar11 + 0x10)" * (cast_expression "(code **)(*plVar11 + 0x10)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*plVar11 + 0x10)" ( (binary_expression "*plVar11 + 0x10" (pointer_expression "*plVar11" * identifier) + number_literal) ))))) )) (argument_list "(plVar11,(int)cVar6)" ( identifier , (cast_expression "(int)cVar6" ( (type_descriptor "int" primitive_type) ) identifier) )))) ;) (expression_statement "cVar4 = (**(code **)(*plVar11 + 0x10))(plVar11,(int)(char)*param_9);" (assignment_expression "cVar4 = (**(code **)(*plVar11 + 0x10))(plVar11,(int)(char)*param_9)" identifier = (call_expression "(**(code **)(*plVar11 + 0x10))(plVar11,(int)(char)*param_9)" (parenthesized_expression "(**(code **)(*plVar11 + 0x10))" ( (pointer_expression "**(code **)(*plVar11 + 0x10)" * (pointer_expression "*(code **)(*plVar11 + 0x10)" * (cast_expression "(code **)(*plVar11 + 0x10)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*plVar11 + 0x10)" ( (binary_expression "*plVar11 + 0x10" (pointer_expression "*plVar11" * identifier) + number_literal) ))))) )) (argument_list "(plVar11,(int)(char)*param_9)" ( identifier , (cast_expression "(int)(char)*param_9" ( (type_descriptor "int" primitive_type) ) (cast_expression "(char)*param_9" ( (type_descriptor "char" primitive_type) ) (pointer_expression "*param_9" * identifier))) )))) ;) (if_statement "if (cVar4 != cVar6) goto LAB_00296748;" if (parenthesized_expression "(cVar4 != cVar6)" ( (binary_expression "cVar4 != cVar6" identifier != identifier) )) (goto_statement "goto LAB_00296748;" goto statement_identifier ;)) })) (if_statement "if ((ulong)param_2[2] < (ulong)param_2[3]) {\n      param_2[2] = param_2[2] + 1;\n    }\n    else {\n      (**(code **)(*param_2 + 0x50))(param_2);\n    }" if (parenthesized_expression "((ulong)param_2[2] < (ulong)param_2[3])" ( (binary_expression "(ulong)param_2[2] < (ulong)param_2[3]" (cast_expression "(ulong)param_2[2]" ( (type_descriptor "ulong" type_identifier) ) (subscript_expression "param_2[2]" identifier [ number_literal ])) < (cast_expression "(ulong)param_2[3]" ( (type_descriptor "ulong" type_identifier) ) (subscript_expression "param_2[3]" identifier [ number_literal ]))) )) (compound_statement "{\n      param_2[2] = param_2[2] + 1;\n    }" { (expression_statement "param_2[2] = param_2[2] + 1;" (assignment_expression "param_2[2] = param_2[2] + 1" (subscript_expression "param_2[2]" identifier [ number_literal ]) = (binary_expression "param_2[2] + 1" (subscript_expression "param_2[2]" identifier [ number_literal ]) + number_literal)) ;) }) (else_clause "else {\n      (**(code **)(*param_2 + 0x50))(param_2);\n    }" else (compound_statement "{\n      (**(code **)(*param_2 + 0x50))(param_2);\n    }" { (expression_statement "(**(code **)(*param_2 + 0x50))(param_2);" (call_expression "(**(code **)(*param_2 + 0x50))(param_2)" (parenthesized_expression "(**(code **)(*param_2 + 0x50))" ( (pointer_expression "**(code **)(*param_2 + 0x50)" * (pointer_expression "*(code **)(*param_2 + 0x50)" * (cast_expression "(code **)(*param_2 + 0x50)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*param_2 + 0x50)" ( (binary_expression "*param_2 + 0x50" (pointer_expression "*param_2" * identifier) + number_literal) ))))) )) (argument_list "(param_2)" ( identifier ))) ;) }))) (expression_statement "param_9 = param_9 + 1;" (assignment_expression "param_9 = param_9 + 1" identifier = (binary_expression "param_9 + 1" identifier + number_literal)) ;) (expression_statement "uVar16 = 0xffffffff;" (assignment_expression "uVar16 = 0xffffffff" identifier = number_literal) ;) (goto_statement "goto LAB_00295fe1;" goto statement_identifier ;) })) (labeled_statement "LAB_00296071:\n  if (bVar8 != 0x25) goto LAB_00295f20;" statement_identifier : (if_statement "if (bVar8 != 0x25) goto LAB_00295f20;" if (parenthesized_expression "(bVar8 != 0x25)" ( (binary_expression "bVar8 != 0x25" identifier != number_literal) )) (goto_statement "goto LAB_00295f20;" goto statement_identifier ;))) (expression_statement "pbVar18 = param_9 + 1;" (assignment_expression "pbVar18 = param_9 + 1" identifier = (binary_expression "param_9 + 1" identifier + number_literal)) ;) (if_statement "if (param_10 == pbVar18) {\nLAB_00296748:\n    *param_7 = 4;\n  }\n  else {\n    bVar1 = param_9[1];\n    bVar8 = *(byte *)((long)plVar11 + (ulong)bVar1 + 0x139);\n    if (bVar8 == 0) {\n      bVar8 = bVar1;\n      if (*(code **)(*plVar11 + 0x40) != (code *)PTR_FUN_003bdd10) {\n        bVar8 = (**(code **)(*plVar11 + 0x40))(plVar11,(int)(char)bVar1,0);\n      }\n      bVar9 = bVar8;\n      if (bVar8 != 0) {\n        *(byte *)((long)plVar11 + (ulong)bVar1 + 0x139) = bVar8;\n        goto LAB_002960ca;\n      }\nLAB_0029655b:\n      bVar8 = 0;\n    }\n    else {\nLAB_002960ca:\n      if ((bVar8 != 0x45) && (bVar9 = bVar8, bVar8 != 0x4f)) goto LAB_0029655b;\n      pbVar18 = param_9 + 2;\n      if (param_10 == pbVar18) goto LAB_00296748;\n      bVar1 = param_9[2];\n      bVar9 = *(byte *)((long)plVar11 + (ulong)bVar1 + 0x139);\n      if (bVar9 == 0) {\n        bVar9 = bVar1;\n        if (*(code **)(*plVar11 + 0x40) != (code *)PTR_FUN_003bdd10) {\n          bVar9 = (**(code **)(*plVar11 + 0x40))(plVar11,(int)(char)bVar1,0);\n        }\n        if (bVar9 != 0) {\n          *(byte *)((long)plVar11 + (ulong)bVar1 + 0x139) = bVar9;\n        }\n      }\n    }\n    local_d0 = local_d0 & 0xffffffff00000000;\n    local_c8 = local_c8 & 0xffffffff00000000 | param_5 & 0xffffffff;\n    local_50 = local_d0 | uVar16;\n    local_58 = param_2;\n    local_48 = param_4;\n    local_40 = local_c8;\n    plVar12 = (long *)FUN_00288720(param_6 + 0xd0);\n    *param_7 = 0;\n    if ((char)plVar12[7] == '\0') {\n      FUN_002b5b80(plVar12);\n      uVar7 = 0x25;\n      if (*(code **)(*plVar12 + 0x30) != (code *)PTR_FUN_003bdfd8) {\n        uVar7 = (**(code **)(*plVar12 + 0x30))(plVar12,0x25);\n      }\n    }\n    else {\n      uVar7 = *(undefined1 *)((long)plVar12 + 0x5e);\n    }\n    if (bVar8 == 0) {\n      local_5a = 0;\n      local_5b = bVar9;\n    }\n    else {\n      local_59 = 0;\n      local_5b = bVar8;\n      local_5a = bVar9;\n    }\n    local_5c = uVar7;\n    auVar22 = FUN_0028dbd0(param_1,local_58,local_50,local_48,local_40,param_6,param_7,param_8,\n                           &local_5c);\n    local_58 = auVar22._0_8_;\n    local_50 = CONCAT44(local_50._4_4_,auVar22._8_4_);\n    cVar6 = FUN_0028d360(&local_58,&local_48);\n    if (cVar6 != '\0') {\n      *param_7 = *param_7 | 2;\n    }\n    uVar16 = local_50 & 0xffffffff;\n    param_9 = pbVar18 + 1;\n    param_2 = local_58;\n    if (param_10 != param_9) goto LAB_00295fef;\n  }" if (parenthesized_expression "(param_10 == pbVar18)" ( (binary_expression "param_10 == pbVar18" identifier == identifier) )) (compound_statement "{\nLAB_00296748:\n    *param_7 = 4;\n  }" { (labeled_statement "LAB_00296748:\n    *param_7 = 4;" statement_identifier : (expression_statement "*param_7 = 4;" (assignment_expression "*param_7 = 4" (pointer_expression "*param_7" * identifier) = number_literal) ;)) }) (else_clause "else {\n    bVar1 = param_9[1];\n    bVar8 = *(byte *)((long)plVar11 + (ulong)bVar1 + 0x139);\n    if (bVar8 == 0) {\n      bVar8 = bVar1;\n      if (*(code **)(*plVar11 + 0x40) != (code *)PTR_FUN_003bdd10) {\n        bVar8 = (**(code **)(*plVar11 + 0x40))(plVar11,(int)(char)bVar1,0);\n      }\n      bVar9 = bVar8;\n      if (bVar8 != 0) {\n        *(byte *)((long)plVar11 + (ulong)bVar1 + 0x139) = bVar8;\n        goto LAB_002960ca;\n      }\nLAB_0029655b:\n      bVar8 = 0;\n    }\n    else {\nLAB_002960ca:\n      if ((bVar8 != 0x45) && (bVar9 = bVar8, bVar8 != 0x4f)) goto LAB_0029655b;\n      pbVar18 = param_9 + 2;\n      if (param_10 == pbVar18) goto LAB_00296748;\n      bVar1 = param_9[2];\n      bVar9 = *(byte *)((long)plVar11 + (ulong)bVar1 + 0x139);\n      if (bVar9 == 0) {\n        bVar9 = bVar1;\n        if (*(code **)(*plVar11 + 0x40) != (code *)PTR_FUN_003bdd10) {\n          bVar9 = (**(code **)(*plVar11 + 0x40))(plVar11,(int)(char)bVar1,0);\n        }\n        if (bVar9 != 0) {\n          *(byte *)((long)plVar11 + (ulong)bVar1 + 0x139) = bVar9;\n        }\n      }\n    }\n    local_d0 = local_d0 & 0xffffffff00000000;\n    local_c8 = local_c8 & 0xffffffff00000000 | param_5 & 0xffffffff;\n    local_50 = local_d0 | uVar16;\n    local_58 = param_2;\n    local_48 = param_4;\n    local_40 = local_c8;\n    plVar12 = (long *)FUN_00288720(param_6 + 0xd0);\n    *param_7 = 0;\n    if ((char)plVar12[7] == '\0') {\n      FUN_002b5b80(plVar12);\n      uVar7 = 0x25;\n      if (*(code **)(*plVar12 + 0x30) != (code *)PTR_FUN_003bdfd8) {\n        uVar7 = (**(code **)(*plVar12 + 0x30))(plVar12,0x25);\n      }\n    }\n    else {\n      uVar7 = *(undefined1 *)((long)plVar12 + 0x5e);\n    }\n    if (bVar8 == 0) {\n      local_5a = 0;\n      local_5b = bVar9;\n    }\n    else {\n      local_59 = 0;\n      local_5b = bVar8;\n      local_5a = bVar9;\n    }\n    local_5c = uVar7;\n    auVar22 = FUN_0028dbd0(param_1,local_58,local_50,local_48,local_40,param_6,param_7,param_8,\n                           &local_5c);\n    local_58 = auVar22._0_8_;\n    local_50 = CONCAT44(local_50._4_4_,auVar22._8_4_);\n    cVar6 = FUN_0028d360(&local_58,&local_48);\n    if (cVar6 != '\0') {\n      *param_7 = *param_7 | 2;\n    }\n    uVar16 = local_50 & 0xffffffff;\n    param_9 = pbVar18 + 1;\n    param_2 = local_58;\n    if (param_10 != param_9) goto LAB_00295fef;\n  }" else (compound_statement "{\n    bVar1 = param_9[1];\n    bVar8 = *(byte *)((long)plVar11 + (ulong)bVar1 + 0x139);\n    if (bVar8 == 0) {\n      bVar8 = bVar1;\n      if (*(code **)(*plVar11 + 0x40) != (code *)PTR_FUN_003bdd10) {\n        bVar8 = (**(code **)(*plVar11 + 0x40))(plVar11,(int)(char)bVar1,0);\n      }\n      bVar9 = bVar8;\n      if (bVar8 != 0) {\n        *(byte *)((long)plVar11 + (ulong)bVar1 + 0x139) = bVar8;\n        goto LAB_002960ca;\n      }\nLAB_0029655b:\n      bVar8 = 0;\n    }\n    else {\nLAB_002960ca:\n      if ((bVar8 != 0x45) && (bVar9 = bVar8, bVar8 != 0x4f)) goto LAB_0029655b;\n      pbVar18 = param_9 + 2;\n      if (param_10 == pbVar18) goto LAB_00296748;\n      bVar1 = param_9[2];\n      bVar9 = *(byte *)((long)plVar11 + (ulong)bVar1 + 0x139);\n      if (bVar9 == 0) {\n        bVar9 = bVar1;\n        if (*(code **)(*plVar11 + 0x40) != (code *)PTR_FUN_003bdd10) {\n          bVar9 = (**(code **)(*plVar11 + 0x40))(plVar11,(int)(char)bVar1,0);\n        }\n        if (bVar9 != 0) {\n          *(byte *)((long)plVar11 + (ulong)bVar1 + 0x139) = bVar9;\n        }\n      }\n    }\n    local_d0 = local_d0 & 0xffffffff00000000;\n    local_c8 = local_c8 & 0xffffffff00000000 | param_5 & 0xffffffff;\n    local_50 = local_d0 | uVar16;\n    local_58 = param_2;\n    local_48 = param_4;\n    local_40 = local_c8;\n    plVar12 = (long *)FUN_00288720(param_6 + 0xd0);\n    *param_7 = 0;\n    if ((char)plVar12[7] == '\0') {\n      FUN_002b5b80(plVar12);\n      uVar7 = 0x25;\n      if (*(code **)(*plVar12 + 0x30) != (code *)PTR_FUN_003bdfd8) {\n        uVar7 = (**(code **)(*plVar12 + 0x30))(plVar12,0x25);\n      }\n    }\n    else {\n      uVar7 = *(undefined1 *)((long)plVar12 + 0x5e);\n    }\n    if (bVar8 == 0) {\n      local_5a = 0;\n      local_5b = bVar9;\n    }\n    else {\n      local_59 = 0;\n      local_5b = bVar8;\n      local_5a = bVar9;\n    }\n    local_5c = uVar7;\n    auVar22 = FUN_0028dbd0(param_1,local_58,local_50,local_48,local_40,param_6,param_7,param_8,\n                           &local_5c);\n    local_58 = auVar22._0_8_;\n    local_50 = CONCAT44(local_50._4_4_,auVar22._8_4_);\n    cVar6 = FUN_0028d360(&local_58,&local_48);\n    if (cVar6 != '\0') {\n      *param_7 = *param_7 | 2;\n    }\n    uVar16 = local_50 & 0xffffffff;\n    param_9 = pbVar18 + 1;\n    param_2 = local_58;\n    if (param_10 != param_9) goto LAB_00295fef;\n  }" { (expression_statement "bVar1 = param_9[1];" (assignment_expression "bVar1 = param_9[1]" identifier = (subscript_expression "param_9[1]" identifier [ number_literal ])) ;) (expression_statement "bVar8 = *(byte *)((long)plVar11 + (ulong)bVar1 + 0x139);" (assignment_expression "bVar8 = *(byte *)((long)plVar11 + (ulong)bVar1 + 0x139)" identifier = (pointer_expression "*(byte *)((long)plVar11 + (ulong)bVar1 + 0x139)" * (cast_expression "(byte *)((long)plVar11 + (ulong)bVar1 + 0x139)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)plVar11 + (ulong)bVar1 + 0x139)" ( (binary_expression "(long)plVar11 + (ulong)bVar1 + 0x139" (binary_expression "(long)plVar11 + (ulong)bVar1" (cast_expression "(long)plVar11" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + (cast_expression "(ulong)bVar1" ( (type_descriptor "ulong" type_identifier) ) identifier)) + number_literal) ))))) ;) (if_statement "if (bVar8 == 0) {\n      bVar8 = bVar1;\n      if (*(code **)(*plVar11 + 0x40) != (code *)PTR_FUN_003bdd10) {\n        bVar8 = (**(code **)(*plVar11 + 0x40))(plVar11,(int)(char)bVar1,0);\n      }\n      bVar9 = bVar8;\n      if (bVar8 != 0) {\n        *(byte *)((long)plVar11 + (ulong)bVar1 + 0x139) = bVar8;\n        goto LAB_002960ca;\n      }\nLAB_0029655b:\n      bVar8 = 0;\n    }\n    else {\nLAB_002960ca:\n      if ((bVar8 != 0x45) && (bVar9 = bVar8, bVar8 != 0x4f)) goto LAB_0029655b;\n      pbVar18 = param_9 + 2;\n      if (param_10 == pbVar18) goto LAB_00296748;\n      bVar1 = param_9[2];\n      bVar9 = *(byte *)((long)plVar11 + (ulong)bVar1 + 0x139);\n      if (bVar9 == 0) {\n        bVar9 = bVar1;\n        if (*(code **)(*plVar11 + 0x40) != (code *)PTR_FUN_003bdd10) {\n          bVar9 = (**(code **)(*plVar11 + 0x40))(plVar11,(int)(char)bVar1,0);\n        }\n        if (bVar9 != 0) {\n          *(byte *)((long)plVar11 + (ulong)bVar1 + 0x139) = bVar9;\n        }\n      }\n    }" if (parenthesized_expression "(bVar8 == 0)" ( (binary_expression "bVar8 == 0" identifier == number_literal) )) (compound_statement "{\n      bVar8 = bVar1;\n      if (*(code **)(*plVar11 + 0x40) != (code *)PTR_FUN_003bdd10) {\n        bVar8 = (**(code **)(*plVar11 + 0x40))(plVar11,(int)(char)bVar1,0);\n      }\n      bVar9 = bVar8;\n      if (bVar8 != 0) {\n        *(byte *)((long)plVar11 + (ulong)bVar1 + 0x139) = bVar8;\n        goto LAB_002960ca;\n      }\nLAB_0029655b:\n      bVar8 = 0;\n    }" { (expression_statement "bVar8 = bVar1;" (assignment_expression "bVar8 = bVar1" identifier = identifier) ;) (if_statement "if (*(code **)(*plVar11 + 0x40) != (code *)PTR_FUN_003bdd10) {\n        bVar8 = (**(code **)(*plVar11 + 0x40))(plVar11,(int)(char)bVar1,0);\n      }" if (parenthesized_expression "(*(code **)(*plVar11 + 0x40) != (code *)PTR_FUN_003bdd10)" ( (binary_expression "*(code **)(*plVar11 + 0x40) != (code *)PTR_FUN_003bdd10" (pointer_expression "*(code **)(*plVar11 + 0x40)" * (cast_expression "(code **)(*plVar11 + 0x40)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*plVar11 + 0x40)" ( (binary_expression "*plVar11 + 0x40" (pointer_expression "*plVar11" * identifier) + number_literal) )))) != (cast_expression "(code *)PTR_FUN_003bdd10" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (compound_statement "{\n        bVar8 = (**(code **)(*plVar11 + 0x40))(plVar11,(int)(char)bVar1,0);\n      }" { (expression_statement "bVar8 = (**(code **)(*plVar11 + 0x40))(plVar11,(int)(char)bVar1,0);" (assignment_expression "bVar8 = (**(code **)(*plVar11 + 0x40))(plVar11,(int)(char)bVar1,0)" identifier = (call_expression "(**(code **)(*plVar11 + 0x40))(plVar11,(int)(char)bVar1,0)" (parenthesized_expression "(**(code **)(*plVar11 + 0x40))" ( (pointer_expression "**(code **)(*plVar11 + 0x40)" * (pointer_expression "*(code **)(*plVar11 + 0x40)" * (cast_expression "(code **)(*plVar11 + 0x40)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*plVar11 + 0x40)" ( (binary_expression "*plVar11 + 0x40" (pointer_expression "*plVar11" * identifier) + number_literal) ))))) )) (argument_list "(plVar11,(int)(char)bVar1,0)" ( identifier , (cast_expression "(int)(char)bVar1" ( (type_descriptor "int" primitive_type) ) (cast_expression "(char)bVar1" ( (type_descriptor "char" primitive_type) ) identifier)) , number_literal )))) ;) })) (expression_statement "bVar9 = bVar8;" (assignment_expression "bVar9 = bVar8" identifier = identifier) ;) (if_statement "if (bVar8 != 0) {\n        *(byte *)((long)plVar11 + (ulong)bVar1 + 0x139) = bVar8;\n        goto LAB_002960ca;\n      }" if (parenthesized_expression "(bVar8 != 0)" ( (binary_expression "bVar8 != 0" identifier != number_literal) )) (compound_statement "{\n        *(byte *)((long)plVar11 + (ulong)bVar1 + 0x139) = bVar8;\n        goto LAB_002960ca;\n      }" { (expression_statement "*(byte *)((long)plVar11 + (ulong)bVar1 + 0x139) = bVar8;" (assignment_expression "*(byte *)((long)plVar11 + (ulong)bVar1 + 0x139) = bVar8" (pointer_expression "*(byte *)((long)plVar11 + (ulong)bVar1 + 0x139)" * (cast_expression "(byte *)((long)plVar11 + (ulong)bVar1 + 0x139)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)plVar11 + (ulong)bVar1 + 0x139)" ( (binary_expression "(long)plVar11 + (ulong)bVar1 + 0x139" (binary_expression "(long)plVar11 + (ulong)bVar1" (cast_expression "(long)plVar11" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + (cast_expression "(ulong)bVar1" ( (type_descriptor "ulong" type_identifier) ) identifier)) + number_literal) )))) = identifier) ;) (goto_statement "goto LAB_002960ca;" goto statement_identifier ;) })) (labeled_statement "LAB_0029655b:\n      bVar8 = 0;" statement_identifier : (expression_statement "bVar8 = 0;" (assignment_expression "bVar8 = 0" identifier = number_literal) ;)) }) (else_clause "else {\nLAB_002960ca:\n      if ((bVar8 != 0x45) && (bVar9 = bVar8, bVar8 != 0x4f)) goto LAB_0029655b;\n      pbVar18 = param_9 + 2;\n      if (param_10 == pbVar18) goto LAB_00296748;\n      bVar1 = param_9[2];\n      bVar9 = *(byte *)((long)plVar11 + (ulong)bVar1 + 0x139);\n      if (bVar9 == 0) {\n        bVar9 = bVar1;\n        if (*(code **)(*plVar11 + 0x40) != (code *)PTR_FUN_003bdd10) {\n          bVar9 = (**(code **)(*plVar11 + 0x40))(plVar11,(int)(char)bVar1,0);\n        }\n        if (bVar9 != 0) {\n          *(byte *)((long)plVar11 + (ulong)bVar1 + 0x139) = bVar9;\n        }\n      }\n    }" else (compound_statement "{\nLAB_002960ca:\n      if ((bVar8 != 0x45) && (bVar9 = bVar8, bVar8 != 0x4f)) goto LAB_0029655b;\n      pbVar18 = param_9 + 2;\n      if (param_10 == pbVar18) goto LAB_00296748;\n      bVar1 = param_9[2];\n      bVar9 = *(byte *)((long)plVar11 + (ulong)bVar1 + 0x139);\n      if (bVar9 == 0) {\n        bVar9 = bVar1;\n        if (*(code **)(*plVar11 + 0x40) != (code *)PTR_FUN_003bdd10) {\n          bVar9 = (**(code **)(*plVar11 + 0x40))(plVar11,(int)(char)bVar1,0);\n        }\n        if (bVar9 != 0) {\n          *(byte *)((long)plVar11 + (ulong)bVar1 + 0x139) = bVar9;\n        }\n      }\n    }" { (labeled_statement "LAB_002960ca:\n      if ((bVar8 != 0x45) && (bVar9 = bVar8, bVar8 != 0x4f)) goto LAB_0029655b;" statement_identifier : (if_statement "if ((bVar8 != 0x45) && (bVar9 = bVar8, bVar8 != 0x4f)) goto LAB_0029655b;" if (parenthesized_expression "((bVar8 != 0x45) && (bVar9 = bVar8, bVar8 != 0x4f))" ( (binary_expression "(bVar8 != 0x45) && (bVar9 = bVar8, bVar8 != 0x4f)" (parenthesized_expression "(bVar8 != 0x45)" ( (binary_expression "bVar8 != 0x45" identifier != number_literal) )) && (parenthesized_expression "(bVar9 = bVar8, bVar8 != 0x4f)" ( (comma_expression "bVar9 = bVar8, bVar8 != 0x4f" (assignment_expression "bVar9 = bVar8" identifier = identifier) , (binary_expression "bVar8 != 0x4f" identifier != number_literal)) ))) )) (goto_statement "goto LAB_0029655b;" goto statement_identifier ;))) (expression_statement "pbVar18 = param_9 + 2;" (assignment_expression "pbVar18 = param_9 + 2" identifier = (binary_expression "param_9 + 2" identifier + number_literal)) ;) (if_statement "if (param_10 == pbVar18) goto LAB_00296748;" if (parenthesized_expression "(param_10 == pbVar18)" ( (binary_expression "param_10 == pbVar18" identifier == identifier) )) (goto_statement "goto LAB_00296748;" goto statement_identifier ;)) (expression_statement "bVar1 = param_9[2];" (assignment_expression "bVar1 = param_9[2]" identifier = (subscript_expression "param_9[2]" identifier [ number_literal ])) ;) (expression_statement "bVar9 = *(byte *)((long)plVar11 + (ulong)bVar1 + 0x139);" (assignment_expression "bVar9 = *(byte *)((long)plVar11 + (ulong)bVar1 + 0x139)" identifier = (pointer_expression "*(byte *)((long)plVar11 + (ulong)bVar1 + 0x139)" * (cast_expression "(byte *)((long)plVar11 + (ulong)bVar1 + 0x139)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)plVar11 + (ulong)bVar1 + 0x139)" ( (binary_expression "(long)plVar11 + (ulong)bVar1 + 0x139" (binary_expression "(long)plVar11 + (ulong)bVar1" (cast_expression "(long)plVar11" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + (cast_expression "(ulong)bVar1" ( (type_descriptor "ulong" type_identifier) ) identifier)) + number_literal) ))))) ;) (if_statement "if (bVar9 == 0) {\n        bVar9 = bVar1;\n        if (*(code **)(*plVar11 + 0x40) != (code *)PTR_FUN_003bdd10) {\n          bVar9 = (**(code **)(*plVar11 + 0x40))(plVar11,(int)(char)bVar1,0);\n        }\n        if (bVar9 != 0) {\n          *(byte *)((long)plVar11 + (ulong)bVar1 + 0x139) = bVar9;\n        }\n      }" if (parenthesized_expression "(bVar9 == 0)" ( (binary_expression "bVar9 == 0" identifier == number_literal) )) (compound_statement "{\n        bVar9 = bVar1;\n        if (*(code **)(*plVar11 + 0x40) != (code *)PTR_FUN_003bdd10) {\n          bVar9 = (**(code **)(*plVar11 + 0x40))(plVar11,(int)(char)bVar1,0);\n        }\n        if (bVar9 != 0) {\n          *(byte *)((long)plVar11 + (ulong)bVar1 + 0x139) = bVar9;\n        }\n      }" { (expression_statement "bVar9 = bVar1;" (assignment_expression "bVar9 = bVar1" identifier = identifier) ;) (if_statement "if (*(code **)(*plVar11 + 0x40) != (code *)PTR_FUN_003bdd10) {\n          bVar9 = (**(code **)(*plVar11 + 0x40))(plVar11,(int)(char)bVar1,0);\n        }" if (parenthesized_expression "(*(code **)(*plVar11 + 0x40) != (code *)PTR_FUN_003bdd10)" ( (binary_expression "*(code **)(*plVar11 + 0x40) != (code *)PTR_FUN_003bdd10" (pointer_expression "*(code **)(*plVar11 + 0x40)" * (cast_expression "(code **)(*plVar11 + 0x40)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*plVar11 + 0x40)" ( (binary_expression "*plVar11 + 0x40" (pointer_expression "*plVar11" * identifier) + number_literal) )))) != (cast_expression "(code *)PTR_FUN_003bdd10" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (compound_statement "{\n          bVar9 = (**(code **)(*plVar11 + 0x40))(plVar11,(int)(char)bVar1,0);\n        }" { (expression_statement "bVar9 = (**(code **)(*plVar11 + 0x40))(plVar11,(int)(char)bVar1,0);" (assignment_expression "bVar9 = (**(code **)(*plVar11 + 0x40))(plVar11,(int)(char)bVar1,0)" identifier = (call_expression "(**(code **)(*plVar11 + 0x40))(plVar11,(int)(char)bVar1,0)" (parenthesized_expression "(**(code **)(*plVar11 + 0x40))" ( (pointer_expression "**(code **)(*plVar11 + 0x40)" * (pointer_expression "*(code **)(*plVar11 + 0x40)" * (cast_expression "(code **)(*plVar11 + 0x40)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*plVar11 + 0x40)" ( (binary_expression "*plVar11 + 0x40" (pointer_expression "*plVar11" * identifier) + number_literal) ))))) )) (argument_list "(plVar11,(int)(char)bVar1,0)" ( identifier , (cast_expression "(int)(char)bVar1" ( (type_descriptor "int" primitive_type) ) (cast_expression "(char)bVar1" ( (type_descriptor "char" primitive_type) ) identifier)) , number_literal )))) ;) })) (if_statement "if (bVar9 != 0) {\n          *(byte *)((long)plVar11 + (ulong)bVar1 + 0x139) = bVar9;\n        }" if (parenthesized_expression "(bVar9 != 0)" ( (binary_expression "bVar9 != 0" identifier != number_literal) )) (compound_statement "{\n          *(byte *)((long)plVar11 + (ulong)bVar1 + 0x139) = bVar9;\n        }" { (expression_statement "*(byte *)((long)plVar11 + (ulong)bVar1 + 0x139) = bVar9;" (assignment_expression "*(byte *)((long)plVar11 + (ulong)bVar1 + 0x139) = bVar9" (pointer_expression "*(byte *)((long)plVar11 + (ulong)bVar1 + 0x139)" * (cast_expression "(byte *)((long)plVar11 + (ulong)bVar1 + 0x139)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)plVar11 + (ulong)bVar1 + 0x139)" ( (binary_expression "(long)plVar11 + (ulong)bVar1 + 0x139" (binary_expression "(long)plVar11 + (ulong)bVar1" (cast_expression "(long)plVar11" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + (cast_expression "(ulong)bVar1" ( (type_descriptor "ulong" type_identifier) ) identifier)) + number_literal) )))) = identifier) ;) })) })) }))) (expression_statement "local_d0 = local_d0 & 0xffffffff00000000;" (assignment_expression "local_d0 = local_d0 & 0xffffffff00000000" identifier = (binary_expression "local_d0 & 0xffffffff00000000" identifier & number_literal)) ;) (expression_statement "local_c8 = local_c8 & 0xffffffff00000000 | param_5 & 0xffffffff;" (assignment_expression "local_c8 = local_c8 & 0xffffffff00000000 | param_5 & 0xffffffff" identifier = (binary_expression "local_c8 & 0xffffffff00000000 | param_5 & 0xffffffff" (binary_expression "local_c8 & 0xffffffff00000000" identifier & number_literal) | (binary_expression "param_5 & 0xffffffff" identifier & number_literal))) ;) (expression_statement "local_50 = local_d0 | uVar16;" (assignment_expression "local_50 = local_d0 | uVar16" identifier = (binary_expression "local_d0 | uVar16" identifier | identifier)) ;) (expression_statement "local_58 = param_2;" (assignment_expression "local_58 = param_2" identifier = identifier) ;) (expression_statement "local_48 = param_4;" (assignment_expression "local_48 = param_4" identifier = identifier) ;) (expression_statement "local_40 = local_c8;" (assignment_expression "local_40 = local_c8" identifier = identifier) ;) (expression_statement "plVar12 = (long *)FUN_00288720(param_6 + 0xd0);" (assignment_expression "plVar12 = (long *)FUN_00288720(param_6 + 0xd0)" identifier = (cast_expression "(long *)FUN_00288720(param_6 + 0xd0)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00288720(param_6 + 0xd0)" identifier (argument_list "(param_6 + 0xd0)" ( (binary_expression "param_6 + 0xd0" identifier + number_literal) ))))) ;) (expression_statement "*param_7 = 0;" (assignment_expression "*param_7 = 0" (pointer_expression "*param_7" * identifier) = number_literal) ;) (if_statement "if ((char)plVar12[7] == '\0') {\n      FUN_002b5b80(plVar12);\n      uVar7 = 0x25;\n      if (*(code **)(*plVar12 + 0x30) != (code *)PTR_FUN_003bdfd8) {\n        uVar7 = (**(code **)(*plVar12 + 0x30))(plVar12,0x25);\n      }\n    }\n    else {\n      uVar7 = *(undefined1 *)((long)plVar12 + 0x5e);\n    }" if (parenthesized_expression "((char)plVar12[7] == '\0')" ( (binary_expression "(char)plVar12[7] == '\0'" (cast_expression "(char)plVar12[7]" ( (type_descriptor "char" primitive_type) ) (subscript_expression "plVar12[7]" identifier [ number_literal ])) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n      FUN_002b5b80(plVar12);\n      uVar7 = 0x25;\n      if (*(code **)(*plVar12 + 0x30) != (code *)PTR_FUN_003bdfd8) {\n        uVar7 = (**(code **)(*plVar12 + 0x30))(plVar12,0x25);\n      }\n    }" { (expression_statement "FUN_002b5b80(plVar12);" (call_expression "FUN_002b5b80(plVar12)" identifier (argument_list "(plVar12)" ( identifier ))) ;) (expression_statement "uVar7 = 0x25;" (assignment_expression "uVar7 = 0x25" identifier = number_literal) ;) (if_statement "if (*(code **)(*plVar12 + 0x30) != (code *)PTR_FUN_003bdfd8) {\n        uVar7 = (**(code **)(*plVar12 + 0x30))(plVar12,0x25);\n      }" if (parenthesized_expression "(*(code **)(*plVar12 + 0x30) != (code *)PTR_FUN_003bdfd8)" ( (binary_expression "*(code **)(*plVar12 + 0x30) != (code *)PTR_FUN_003bdfd8" (pointer_expression "*(code **)(*plVar12 + 0x30)" * (cast_expression "(code **)(*plVar12 + 0x30)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*plVar12 + 0x30)" ( (binary_expression "*plVar12 + 0x30" (pointer_expression "*plVar12" * identifier) + number_literal) )))) != (cast_expression "(code *)PTR_FUN_003bdfd8" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (compound_statement "{\n        uVar7 = (**(code **)(*plVar12 + 0x30))(plVar12,0x25);\n      }" { (expression_statement "uVar7 = (**(code **)(*plVar12 + 0x30))(plVar12,0x25);" (assignment_expression "uVar7 = (**(code **)(*plVar12 + 0x30))(plVar12,0x25)" identifier = (call_expression "(**(code **)(*plVar12 + 0x30))(plVar12,0x25)" (parenthesized_expression "(**(code **)(*plVar12 + 0x30))" ( (pointer_expression "**(code **)(*plVar12 + 0x30)" * (pointer_expression "*(code **)(*plVar12 + 0x30)" * (cast_expression "(code **)(*plVar12 + 0x30)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*plVar12 + 0x30)" ( (binary_expression "*plVar12 + 0x30" (pointer_expression "*plVar12" * identifier) + number_literal) ))))) )) (argument_list "(plVar12,0x25)" ( identifier , number_literal )))) ;) })) }) (else_clause "else {\n      uVar7 = *(undefined1 *)((long)plVar12 + 0x5e);\n    }" else (compound_statement "{\n      uVar7 = *(undefined1 *)((long)plVar12 + 0x5e);\n    }" { (expression_statement "uVar7 = *(undefined1 *)((long)plVar12 + 0x5e);" (assignment_expression "uVar7 = *(undefined1 *)((long)plVar12 + 0x5e)" identifier = (pointer_expression "*(undefined1 *)((long)plVar12 + 0x5e)" * (cast_expression "(undefined1 *)((long)plVar12 + 0x5e)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)plVar12 + 0x5e)" ( (binary_expression "(long)plVar12 + 0x5e" (cast_expression "(long)plVar12" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) ))))) ;) }))) (if_statement "if (bVar8 == 0) {\n      local_5a = 0;\n      local_5b = bVar9;\n    }\n    else {\n      local_59 = 0;\n      local_5b = bVar8;\n      local_5a = bVar9;\n    }" if (parenthesized_expression "(bVar8 == 0)" ( (binary_expression "bVar8 == 0" identifier == number_literal) )) (compound_statement "{\n      local_5a = 0;\n      local_5b = bVar9;\n    }" { (expression_statement "local_5a = 0;" (assignment_expression "local_5a = 0" identifier = number_literal) ;) (expression_statement "local_5b = bVar9;" (assignment_expression "local_5b = bVar9" identifier = identifier) ;) }) (else_clause "else {\n      local_59 = 0;\n      local_5b = bVar8;\n      local_5a = bVar9;\n    }" else (compound_statement "{\n      local_59 = 0;\n      local_5b = bVar8;\n      local_5a = bVar9;\n    }" { (expression_statement "local_59 = 0;" (assignment_expression "local_59 = 0" identifier = number_literal) ;) (expression_statement "local_5b = bVar8;" (assignment_expression "local_5b = bVar8" identifier = identifier) ;) (expression_statement "local_5a = bVar9;" (assignment_expression "local_5a = bVar9" identifier = identifier) ;) }))) (expression_statement "local_5c = uVar7;" (assignment_expression "local_5c = uVar7" identifier = identifier) ;) (expression_statement "auVar22 = FUN_0028dbd0(param_1,local_58,local_50,local_48,local_40,param_6,param_7,param_8,\n                           &local_5c);" (assignment_expression "auVar22 = FUN_0028dbd0(param_1,local_58,local_50,local_48,local_40,param_6,param_7,param_8,\n                           &local_5c)" identifier = (call_expression "FUN_0028dbd0(param_1,local_58,local_50,local_48,local_40,param_6,param_7,param_8,\n                           &local_5c)" identifier (argument_list "(param_1,local_58,local_50,local_48,local_40,param_6,param_7,param_8,\n                           &local_5c)" ( identifier , identifier , identifier , identifier , identifier , identifier , identifier , identifier , (pointer_expression "&local_5c" & identifier) )))) ;) (expression_statement "local_58 = auVar22._0_8_;" (assignment_expression "local_58 = auVar22._0_8_" identifier = (field_expression "auVar22._0_8_" identifier . field_identifier)) ;) (expression_statement "local_50 = CONCAT44(local_50._4_4_,auVar22._8_4_);" (assignment_expression "local_50 = CONCAT44(local_50._4_4_,auVar22._8_4_)" identifier = (call_expression "CONCAT44(local_50._4_4_,auVar22._8_4_)" identifier (argument_list "(local_50._4_4_,auVar22._8_4_)" ( (field_expression "local_50._4_4_" identifier . field_identifier) , (field_expression "auVar22._8_4_" identifier . field_identifier) )))) ;) (expression_statement "cVar6 = FUN_0028d360(&local_58,&local_48);" (assignment_expression "cVar6 = FUN_0028d360(&local_58,&local_48)" identifier = (call_expression "FUN_0028d360(&local_58,&local_48)" identifier (argument_list "(&local_58,&local_48)" ( (pointer_expression "&local_58" & identifier) , (pointer_expression "&local_48" & identifier) )))) ;) (if_statement "if (cVar6 != '\0') {\n      *param_7 = *param_7 | 2;\n    }" if (parenthesized_expression "(cVar6 != '\0')" ( (binary_expression "cVar6 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n      *param_7 = *param_7 | 2;\n    }" { (expression_statement "*param_7 = *param_7 | 2;" (assignment_expression "*param_7 = *param_7 | 2" (pointer_expression "*param_7" * identifier) = (binary_expression "*param_7 | 2" (pointer_expression "*param_7" * identifier) | number_literal)) ;) })) (expression_statement "uVar16 = local_50 & 0xffffffff;" (assignment_expression "uVar16 = local_50 & 0xffffffff" identifier = (binary_expression "local_50 & 0xffffffff" identifier & number_literal)) ;) (expression_statement "param_9 = pbVar18 + 1;" (assignment_expression "param_9 = pbVar18 + 1" identifier = (binary_expression "pbVar18 + 1" identifier + number_literal)) ;) (expression_statement "param_2 = local_58;" (assignment_expression "param_2 = local_58" identifier = identifier) ;) (if_statement "if (param_10 != param_9) goto LAB_00295fef;" if (parenthesized_expression "(param_10 != param_9)" ( (binary_expression "param_10 != param_9" identifier != identifier) )) (goto_statement "goto LAB_00295fef;" goto statement_identifier ;)) }))) (goto_statement "goto LAB_002962c3;" goto statement_identifier ;) (labeled_statement "code_r0x00296430:\n  uVar16 = 0xffffffff;" statement_identifier : (expression_statement "uVar16 = 0xffffffff;" (assignment_expression "uVar16 = 0xffffffff" identifier = number_literal) ;)) (labeled_statement "LAB_00295fe1:\n  if (param_10 == param_9) goto LAB_002962c3;" statement_identifier : (if_statement "if (param_10 == param_9) goto LAB_002962c3;" if (parenthesized_expression "(param_10 == param_9)" ( (binary_expression "param_10 == param_9" identifier == identifier) )) (goto_statement "goto LAB_002962c3;" goto statement_identifier ;))) (labeled_statement "LAB_00295fef:\n  if (*param_7 != 0) goto LAB_002962c3;" statement_identifier : (if_statement "if (*param_7 != 0) goto LAB_002962c3;" if (parenthesized_expression "(*param_7 != 0)" ( (binary_expression "*param_7 != 0" (pointer_expression "*param_7" * identifier) != number_literal) )) (goto_statement "goto LAB_002962c3;" goto statement_identifier ;))) (goto_statement "goto LAB_00296001;" goto statement_identifier ;) (ERROR "}" }))
(translation_unit (expression_statement (subscript_expression IDENT [ LIT ]) ;) (declaration (macro_type_specifier IDENT ( (type_descriptor TYPE) )) IDENT , (ERROR IDENT) (pointer_declarator * IDENT) , (ERROR IDENT) IDENT , (ERROR IDENT) (pointer_declarator * IDENT) , (ERROR IDENT) IDENT , (ERROR IDENT) IDENT , (ERROR IDENT) (pointer_declarator * IDENT) , IDENT (ERROR IDENT) , (ERROR IDENT) (pointer_declarator * IDENT) , (ERROR IDENT (pointer_declarator * IDENT) ) { IDENT) IDENT ;) (declaration (sized_type_specifier long) IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration (sized_type_specifier long) (pointer_declarator * IDENT) ;) (declaration (sized_type_specifier long) (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration (sized_type_specifier long) (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration (sized_type_specifier long) (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT & LIT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == IDENT) )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression (field_expression IDENT . field_identifier) = (binary_expression IDENT | (binary_expression IDENT & LIT))) ;)) (expression_statement (assignment_expression (field_expression IDENT . field_identifier) = IDENT) ;) (return_statement return IDENT ;) })) (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) == LIT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) == LIT)) ;)) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT != (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) LIT)) && IDENT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( IDENT )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ])) < (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ]))) )) (compound_statement { (expression_statement (assignment_expression IDENT = BOOL) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + LIT) ))))) )) (argument_list ( IDENT )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT == LIT) && IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) LIT)) ;) })) }))) })) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT != (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) LIT)) && IDENT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( IDENT )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ])) <= (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ]))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + LIT) ))))) )) (argument_list ( IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) LIT)) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT == LIT) && IDENT)) ;) (goto_statement goto statement_identifier ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT == BOOL) )) (goto_statement goto statement_identifier ;)) }) (else_clause else (compound_statement { (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression IDENT == IDENT) )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;)) (goto_statement goto statement_identifier ;) }))) }))) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + (cast_expression ( (type_descriptor TYPE) ) IDENT)) + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + LIT) )))) != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + LIT) ))))) )) (argument_list ( IDENT , (cast_expression ( (type_descriptor TYPE) ) (cast_expression ( (type_descriptor TYPE) ) IDENT)) , LIT )))) ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + (cast_expression ( (type_descriptor TYPE) ) IDENT)) + LIT) )))) = IDENT) ;) (goto_statement goto statement_identifier ;) })) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;)) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) + (binary_expression (binary_expression (parenthesized_expression ( IDENT )) * IDENT) * LIT)) )))) & LIT) )) != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) + (binary_expression (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ])) * LIT)) ))))) ;) (while_statement while (parenthesized_expression ( (parenthesized_expression ( (comma_expression (assignment_expression IDENT = IDENT) , (binary_expression (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) != LIT) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (binary_expression IDENT + LIT)) , (comma_expression (assignment_expression IDENT = IDENT) , (binary_expression IDENT != IDENT))) )))) )) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) + (binary_expression (binary_expression (parenthesized_expression ( IDENT )) * IDENT) * LIT)) ))))) ;) })) })) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) == LIT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression IDENT != (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) LIT)) && IDENT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ])) <= (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ]))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + LIT) ))))) )) (argument_list ( IDENT )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT == LIT) && (parenthesized_expression ( (binary_expression (binary_expression IDENT != (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) LIT)) && IDENT) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) LIT)) ;) })) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = BOOL) ;) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression IDENT != (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) LIT)) && IDENT) )) (goto_statement goto statement_identifier ;)) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression IDENT == IDENT) )) (goto_statement goto statement_identifier ;))) }) (else_clause else (compound_statement { (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression (binary_expression IDENT == (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) LIT)) || (unary_expression ! IDENT)) )) (goto_statement goto statement_identifier ;))) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (binary_expression IDENT != (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) LIT))) ;)) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ])) <= (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ]))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + LIT) ))))) )) (argument_list ( IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) LIT)) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT == LIT) && (parenthesized_expression ( (binary_expression IDENT && IDENT) )))) ;) (goto_statement goto statement_identifier ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT == BOOL) )) (goto_statement goto statement_identifier ;)) }))) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) LIT)) )) || (parenthesized_expression ( (unary_expression ! IDENT) ))) )) (compound_statement { (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression (subscript_expression IDENT [ LIT ]) + LIT) + (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) * LIT)) )))) & LIT) )) == LIT) )) (goto_statement goto statement_identifier ;))) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) )) (goto_statement goto statement_identifier ;)) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + LIT) ))))) )) (argument_list ( IDENT ))) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ])) <= IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + LIT) ))))) )) (argument_list ( IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) LIT)) ;) })) (goto_statement goto statement_identifier ;) })) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression (subscript_expression IDENT [ LIT ]) + LIT) + (binary_expression (binary_expression (parenthesized_expression ( IDENT )) * IDENT) * LIT)) )))) & LIT) )) == LIT) )) (goto_statement goto statement_identifier ;)) (labeled_statement statement_identifier : (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (cast_expression ( (type_descriptor (sized_type_specifier long)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ;)) }))) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }) while (parenthesized_expression ( BOOL )) ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) LIT)) )) && (parenthesized_expression ( IDENT ))) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ])) < (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ])))) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + LIT) ))))) )) (argument_list ( IDENT )))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) LIT)) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) }))) }))) })) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + LIT) ))))) )) (argument_list ( IDENT , (cast_expression ( (type_descriptor TYPE) ) IDENT) )))) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + LIT) ))))) )) (argument_list ( IDENT , (cast_expression ( (type_descriptor TYPE) ) (cast_expression ( (type_descriptor TYPE) ) (pointer_expression * IDENT))) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != IDENT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) LIT)) )) && (parenthesized_expression ( IDENT ))) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ])) < (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ])))) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + LIT) ))))) )) (argument_list ( IDENT )))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) LIT)) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) }))) }))) })) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + LIT) ))))) )) (argument_list ( IDENT , (cast_expression ( (type_descriptor TYPE) ) IDENT) )))) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + LIT) ))))) )) (argument_list ( IDENT , (cast_expression ( (type_descriptor TYPE) ) (cast_expression ( (type_descriptor TYPE) ) (pointer_expression * IDENT))) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != IDENT) )) (goto_statement goto statement_identifier ;)) })) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ])) < (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ]))) )) (compound_statement { (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression (subscript_expression IDENT [ LIT ]) + LIT)) ;) }) (else_clause else (compound_statement { (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + LIT) ))))) )) (argument_list ( IDENT ))) ;) }))) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (goto_statement goto statement_identifier ;) })) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (goto_statement goto statement_identifier ;))) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == IDENT) )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;)) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + (cast_expression ( (type_descriptor TYPE) ) IDENT)) + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + LIT) )))) != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + LIT) ))))) )) (argument_list ( IDENT , (cast_expression ( (type_descriptor TYPE) ) (cast_expression ( (type_descriptor TYPE) ) IDENT)) , LIT )))) ;) })) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + (cast_expression ( (type_descriptor TYPE) ) IDENT)) + LIT) )))) = IDENT) ;) (goto_statement goto statement_identifier ;) })) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = LIT) ;)) }) (else_clause else (compound_statement { (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT != LIT) )) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = IDENT) , (binary_expression IDENT != LIT)) ))) )) (goto_statement goto statement_identifier ;))) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == IDENT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + (cast_expression ( (type_descriptor TYPE) ) IDENT)) + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + LIT) )))) != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + LIT) ))))) )) (argument_list ( IDENT , (cast_expression ( (type_descriptor TYPE) ) (cast_expression ( (type_descriptor TYPE) ) IDENT)) , LIT )))) ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + (cast_expression ( (type_descriptor TYPE) ) IDENT)) + LIT) )))) = IDENT) ;) })) })) }))) (expression_statement (assignment_expression IDENT = (binary_expression IDENT & LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT & LIT) | (binary_expression IDENT & LIT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT | IDENT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ])) == (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + LIT) )))) != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + LIT) ))))) )) (argument_list ( IDENT , LIT )))) ;) })) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + LIT) ))))) ;) }))) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }))) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT , IDENT , IDENT , IDENT , IDENT , IDENT , (pointer_expression & IDENT) )))) ;) (expression_statement (assignment_expression IDENT = (field_expression IDENT . field_identifier)) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (field_expression IDENT . field_identifier) , (field_expression IDENT . field_identifier) )))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (pointer_expression & IDENT) , (pointer_expression & IDENT) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression (pointer_expression * IDENT) | LIT)) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT & LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != IDENT) )) (goto_statement goto statement_identifier ;)) }))) (goto_statement goto statement_identifier ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = LIT) ;)) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression IDENT == IDENT) )) (goto_statement goto statement_identifier ;))) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) != LIT) )) (goto_statement goto statement_identifier ;))) (goto_statement goto statement_identifier ;) (ERROR }))
(expression_statement "undefined1  [16]" (subscript_expression "undefined1  [16]" (identifier "undefined1") ([ "[") (number_literal "16") (] "]")) (; "")) (declaration "FUN_00295e90(undefined8 param_1,long *param_2,ulong param_3,long *param_4,ulong param_5,long param_6\n            ,uint *param_7,undefined8 param_8,byte *param_9,byte *param_10)\n\n{\n  byte bVar1;" (macro_type_specifier "FUN_00295e90(undefined8" (identifier "FUN_00295e90") (( "(") (type_descriptor "undefined8" (type_identifier "undefined8")) () "")) (identifier "param_1") (, ",") (ERROR "long" (identifier "long")) (pointer_declarator "*param_2" (* "*") (identifier "param_2")) (, ",") (ERROR "ulong" (identifier "ulong")) (identifier "param_3") (, ",") (ERROR "long" (identifier "long")) (pointer_declarator "*param_4" (* "*") (identifier "param_4")) (, ",") (ERROR "ulong" (identifier "ulong")) (identifier "param_5") (, ",") (ERROR "long" (identifier "long")) (identifier "param_6") (, ",") (ERROR "uint" (identifier "uint")) (pointer_declarator "*param_7" (* "*") (identifier "param_7")) (, ",") (identifier "undefined8") (ERROR "param_8" (identifier "param_8")) (, ",") (ERROR "byte" (identifier "byte")) (pointer_declarator "*param_9" (* "*") (identifier "param_9")) (, ",") (ERROR "byte *param_10)\n\n{\n  byte" (identifier "byte") (pointer_declarator "*param_10" (* "*") (identifier "param_10")) () ")") ({ "{") (identifier "byte")) (identifier "bVar1") (; ";")) (declaration "long lVar2;" (sized_type_specifier "long" (long "long")) (identifier "lVar2") (; ";")) (declaration "byte *pbVar3;" (type_identifier "byte") (pointer_declarator "*pbVar3" (* "*") (identifier "pbVar3")) (; ";")) (declaration "char cVar4;" (primitive_type "char") (identifier "cVar4") (; ";")) (declaration "char cVar5;" (primitive_type "char") (identifier "cVar5") (; ";")) (declaration "char cVar6;" (primitive_type "char") (identifier "cVar6") (; ";")) (declaration "undefined1 uVar7;" (type_identifier "undefined1") (identifier "uVar7") (; ";")) (declaration "byte bVar8;" (type_identifier "byte") (identifier "bVar8") (; ";")) (declaration "byte bVar9;" (type_identifier "byte") (identifier "bVar9") (; ";")) (declaration "int iVar10;" (primitive_type "int") (identifier "iVar10") (; ";")) (declaration "long *plVar11;" (sized_type_specifier "long" (long "long")) (pointer_declarator "*plVar11" (* "*") (identifier "plVar11")) (; ";")) (declaration "long *plVar12;" (sized_type_specifier "long" (long "long")) (pointer_declarator "*plVar12" (* "*") (identifier "plVar12")) (; ";")) (declaration "ulong uVar13;" (type_identifier "ulong") (identifier "uVar13") (; ";")) (declaration "bool bVar14;" (primitive_type "bool") (identifier "bVar14") (; ";")) (declaration "bool bVar15;" (primitive_type "bool") (identifier "bVar15") (; ";")) (declaration "ulong uVar16;" (type_identifier "ulong") (identifier "uVar16") (; ";")) (declaration "bool bVar17;" (primitive_type "bool") (identifier "bVar17") (; ";")) (declaration "byte *pbVar18;" (type_identifier "byte") (pointer_declarator "*pbVar18" (* "*") (identifier "pbVar18")) (; ";")) (declaration "bool bVar19;" (primitive_type "bool") (identifier "bVar19") (; ";")) (declaration "bool bVar20;" (primitive_type "bool") (identifier "bVar20") (; ";")) (declaration "undefined1 auVar21 [16];" (type_identifier "undefined1") (array_declarator "auVar21 [16]" (identifier "auVar21") ([ "[") (number_literal "16") (] "]")) (; ";")) (declaration "undefined1 auVar22 [12];" (type_identifier "undefined1") (array_declarator "auVar22 [12]" (identifier "auVar22") ([ "[") (number_literal "12") (] "]")) (; ";")) (declaration "ulong local_d0;" (type_identifier "ulong") (identifier "local_d0") (; ";")) (declaration "ulong local_c8;" (type_identifier "ulong") (identifier "local_c8") (; ";")) (declaration "undefined1 local_5c;" (type_identifier "undefined1") (identifier "local_5c") (; ";")) (declaration "byte local_5b;" (type_identifier "byte") (identifier "local_5b") (; ";")) (declaration "byte local_5a;" (type_identifier "byte") (identifier "local_5a") (; ";")) (declaration "undefined1 local_59;" (type_identifier "undefined1") (identifier "local_59") (; ";")) (declaration "long *local_58;" (sized_type_specifier "long" (long "long")) (pointer_declarator "*local_58" (* "*") (identifier "local_58")) (; ";")) (declaration "ulong local_50;" (type_identifier "ulong") (identifier "local_50") (; ";")) (declaration "long *local_48;" (sized_type_specifier "long" (long "long")) (pointer_declarator "*local_48" (* "*") (identifier "local_48")) (; ";")) (declaration "ulong local_40;" (type_identifier "ulong") (identifier "local_40") (; ";")) (expression_statement "plVar11 = (long *)FUN_00288720(param_6 + 0xd0);" (assignment_expression "plVar11 = (long *)FUN_00288720(param_6 + 0xd0)" (identifier "plVar11") (= "=") (cast_expression "(long *)FUN_00288720(param_6 + 0xd0)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_00288720(param_6 + 0xd0)" (identifier "FUN_00288720") (argument_list "(param_6 + 0xd0)" (( "(") (binary_expression "param_6 + 0xd0" (identifier "param_6") (+ "+") (number_literal "0xd0")) () ")"))))) (; ";")) (expression_statement "uVar16 = param_3 & 0xffffffff;" (assignment_expression "uVar16 = param_3 & 0xffffffff" (identifier "uVar16") (= "=") (binary_expression "param_3 & 0xffffffff" (identifier "param_3") (& "&") (number_literal "0xffffffff"))) (; ";")) (expression_statement "*param_7 = 0;" (assignment_expression "*param_7 = 0" (pointer_expression "*param_7" (* "*") (identifier "param_7")) (= "=") (number_literal "0")) (; ";")) (expression_statement "local_d0 = param_3;" (assignment_expression "local_d0 = param_3" (identifier "local_d0") (= "=") (identifier "param_3")) (; ";")) (if_statement "if (param_9 == param_10) {\nLAB_002962c3:\n    auVar21._8_8_ = uVar16 | local_d0 & 0xffffffff00000000;\n    auVar21._0_8_ = param_2;\n    return auVar21;\n  }" (if "if") (parenthesized_expression "(param_9 == param_10)" (( "(") (binary_expression "param_9 == param_10" (identifier "param_9") (== "==") (identifier "param_10")) () ")")) (compound_statement "{\nLAB_002962c3:\n    auVar21._8_8_ = uVar16 | local_d0 & 0xffffffff00000000;\n    auVar21._0_8_ = param_2;\n    return auVar21;\n  }" ({ "{") (labeled_statement "LAB_002962c3:\n    auVar21._8_8_ = uVar16 | local_d0 & 0xffffffff00000000;" (statement_identifier "LAB_002962c3") (: ":") (expression_statement "auVar21._8_8_ = uVar16 | local_d0 & 0xffffffff00000000;" (assignment_expression "auVar21._8_8_ = uVar16 | local_d0 & 0xffffffff00000000" (field_expression "auVar21._8_8_" (identifier "auVar21") (. ".") (field_identifier "_8_8_")) (= "=") (binary_expression "uVar16 | local_d0 & 0xffffffff00000000" (identifier "uVar16") (| "|") (binary_expression "local_d0 & 0xffffffff00000000" (identifier "local_d0") (& "&") (number_literal "0xffffffff00000000")))) (; ";"))) (expression_statement "auVar21._0_8_ = param_2;" (assignment_expression "auVar21._0_8_ = param_2" (field_expression "auVar21._0_8_" (identifier "auVar21") (. ".") (field_identifier "_0_8_")) (= "=") (identifier "param_2")) (; ";")) (return_statement "return auVar21;" (return "return") (identifier "auVar21") (; ";")) (} "}"))) (expression_statement "bVar19 = (int)param_5 == -1;" (assignment_expression "bVar19 = (int)param_5 == -1" (identifier "bVar19") (= "=") (binary_expression "(int)param_5 == -1" (cast_expression "(int)param_5" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_5")) (== "==") (number_literal "-1"))) (; ";")) (expression_statement "local_c8 = param_5;" (assignment_expression "local_c8 = param_5" (identifier "local_c8") (= "=") (identifier "param_5")) (; ";")) (labeled_statement "LAB_00296001:\n  bVar20 = (int)uVar16 == -1;" (statement_identifier "LAB_00296001") (: ":") (expression_statement "bVar20 = (int)uVar16 == -1;" (assignment_expression "bVar20 = (int)uVar16 == -1" (identifier "bVar20") (= "=") (binary_expression "(int)uVar16 == -1" (cast_expression "(int)uVar16" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar16")) (== "==") (number_literal "-1"))) (; ";"))) (expression_statement "bVar17 = param_2 != (long *)0x0 && bVar20;" (assignment_expression "bVar17 = param_2 != (long *)0x0 && bVar20" (identifier "bVar17") (= "=") (binary_expression "param_2 != (long *)0x0 && bVar20" (binary_expression "param_2 != (long *)0x0" (identifier "param_2") (!= "!=") (cast_expression "(long *)0x0" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (&& "&&") (identifier "bVar20"))) (; ";")) (expression_statement "bVar15 = bVar20;" (assignment_expression "bVar15 = bVar20" (identifier "bVar15") (= "=") (identifier "bVar20")) (; ";")) (if_statement "if (bVar17) {\n    if ((ulong)param_2[2] < (ulong)param_2[3]) {\n      bVar15 = false;\n    }\n    else {\n      iVar10 = (**(code **)(*param_2 + 0x48))(param_2);\n      bVar15 = iVar10 == -1 && bVar17;\n      if (iVar10 == -1) {\n        param_2 = (long *)0x0;\n      }\n    }\n  }" (if "if") (parenthesized_expression "(bVar17)" (( "(") (identifier "bVar17") () ")")) (compound_statement "{\n    if ((ulong)param_2[2] < (ulong)param_2[3]) {\n      bVar15 = false;\n    }\n    else {\n      iVar10 = (**(code **)(*param_2 + 0x48))(param_2);\n      bVar15 = iVar10 == -1 && bVar17;\n      if (iVar10 == -1) {\n        param_2 = (long *)0x0;\n      }\n    }\n  }" ({ "{") (if_statement "if ((ulong)param_2[2] < (ulong)param_2[3]) {\n      bVar15 = false;\n    }\n    else {\n      iVar10 = (**(code **)(*param_2 + 0x48))(param_2);\n      bVar15 = iVar10 == -1 && bVar17;\n      if (iVar10 == -1) {\n        param_2 = (long *)0x0;\n      }\n    }" (if "if") (parenthesized_expression "((ulong)param_2[2] < (ulong)param_2[3])" (( "(") (binary_expression "(ulong)param_2[2] < (ulong)param_2[3]" (cast_expression "(ulong)param_2[2]" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (subscript_expression "param_2[2]" (identifier "param_2") ([ "[") (number_literal "2") (] "]"))) (< "<") (cast_expression "(ulong)param_2[3]" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (subscript_expression "param_2[3]" (identifier "param_2") ([ "[") (number_literal "3") (] "]")))) () ")")) (compound_statement "{\n      bVar15 = false;\n    }" ({ "{") (expression_statement "bVar15 = false;" (assignment_expression "bVar15 = false" (identifier "bVar15") (= "=") (false "false")) (; ";")) (} "}")) (else_clause "else {\n      iVar10 = (**(code **)(*param_2 + 0x48))(param_2);\n      bVar15 = iVar10 == -1 && bVar17;\n      if (iVar10 == -1) {\n        param_2 = (long *)0x0;\n      }\n    }" (else "else") (compound_statement "{\n      iVar10 = (**(code **)(*param_2 + 0x48))(param_2);\n      bVar15 = iVar10 == -1 && bVar17;\n      if (iVar10 == -1) {\n        param_2 = (long *)0x0;\n      }\n    }" ({ "{") (expression_statement "iVar10 = (**(code **)(*param_2 + 0x48))(param_2);" (assignment_expression "iVar10 = (**(code **)(*param_2 + 0x48))(param_2)" (identifier "iVar10") (= "=") (call_expression "(**(code **)(*param_2 + 0x48))(param_2)" (parenthesized_expression "(**(code **)(*param_2 + 0x48))" (( "(") (pointer_expression "**(code **)(*param_2 + 0x48)" (* "*") (pointer_expression "*(code **)(*param_2 + 0x48)" (* "*") (cast_expression "(code **)(*param_2 + 0x48)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*param_2 + 0x48)" (( "(") (binary_expression "*param_2 + 0x48" (pointer_expression "*param_2" (* "*") (identifier "param_2")) (+ "+") (number_literal "0x48")) () ")"))))) () ")")) (argument_list "(param_2)" (( "(") (identifier "param_2") () ")")))) (; ";")) (expression_statement "bVar15 = iVar10 == -1 && bVar17;" (assignment_expression "bVar15 = iVar10 == -1 && bVar17" (identifier "bVar15") (= "=") (binary_expression "iVar10 == -1 && bVar17" (binary_expression "iVar10 == -1" (identifier "iVar10") (== "==") (number_literal "-1")) (&& "&&") (identifier "bVar17"))) (; ";")) (if_statement "if (iVar10 == -1) {\n        param_2 = (long *)0x0;\n      }" (if "if") (parenthesized_expression "(iVar10 == -1)" (( "(") (binary_expression "iVar10 == -1" (identifier "iVar10") (== "==") (number_literal "-1")) () ")")) (compound_statement "{\n        param_2 = (long *)0x0;\n      }" ({ "{") (expression_statement "param_2 = (long *)0x0;" (assignment_expression "param_2 = (long *)0x0" (identifier "param_2") (= "=") (cast_expression "(long *)0x0" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (} "}"))) (} "}")))) (} "}"))) (expression_statement "bVar14 = param_4 != (long *)0x0 && bVar19;" (assignment_expression "bVar14 = param_4 != (long *)0x0 && bVar19" (identifier "bVar14") (= "=") (binary_expression "param_4 != (long *)0x0 && bVar19" (binary_expression "param_4 != (long *)0x0" (identifier "param_4") (!= "!=") (cast_expression "(long *)0x0" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (&& "&&") (identifier "bVar19"))) (; ";")) (expression_statement "bVar17 = bVar19;" (assignment_expression "bVar17 = bVar19" (identifier "bVar17") (= "=") (identifier "bVar19")) (; ";")) (if_statement "if (bVar14) {\n    if ((ulong)param_4[3] <= (ulong)param_4[2]) {\n      iVar10 = (**(code **)(*param_4 + 0x48))(param_4);\n      if (iVar10 == -1) {\n        param_4 = (long *)0x0;\n      }\n      bVar17 = iVar10 == -1 && bVar14;\n      goto LAB_0029602d;\n    }\n    if (bVar15 == false) goto LAB_00296469;\n  }\n  else {\nLAB_0029602d:\n    if (bVar17 == bVar15) {\nLAB_00296469:\n      *param_7 = 6;\n      goto LAB_002962c3;\n    }\n  }" (if "if") (parenthesized_expression "(bVar14)" (( "(") (identifier "bVar14") () ")")) (compound_statement "{\n    if ((ulong)param_4[3] <= (ulong)param_4[2]) {\n      iVar10 = (**(code **)(*param_4 + 0x48))(param_4);\n      if (iVar10 == -1) {\n        param_4 = (long *)0x0;\n      }\n      bVar17 = iVar10 == -1 && bVar14;\n      goto LAB_0029602d;\n    }\n    if (bVar15 == false) goto LAB_00296469;\n  }" ({ "{") (if_statement "if ((ulong)param_4[3] <= (ulong)param_4[2]) {\n      iVar10 = (**(code **)(*param_4 + 0x48))(param_4);\n      if (iVar10 == -1) {\n        param_4 = (long *)0x0;\n      }\n      bVar17 = iVar10 == -1 && bVar14;\n      goto LAB_0029602d;\n    }" (if "if") (parenthesized_expression "((ulong)param_4[3] <= (ulong)param_4[2])" (( "(") (binary_expression "(ulong)param_4[3] <= (ulong)param_4[2]" (cast_expression "(ulong)param_4[3]" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (subscript_expression "param_4[3]" (identifier "param_4") ([ "[") (number_literal "3") (] "]"))) (<= "<=") (cast_expression "(ulong)param_4[2]" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (subscript_expression "param_4[2]" (identifier "param_4") ([ "[") (number_literal "2") (] "]")))) () ")")) (compound_statement "{\n      iVar10 = (**(code **)(*param_4 + 0x48))(param_4);\n      if (iVar10 == -1) {\n        param_4 = (long *)0x0;\n      }\n      bVar17 = iVar10 == -1 && bVar14;\n      goto LAB_0029602d;\n    }" ({ "{") (expression_statement "iVar10 = (**(code **)(*param_4 + 0x48))(param_4);" (assignment_expression "iVar10 = (**(code **)(*param_4 + 0x48))(param_4)" (identifier "iVar10") (= "=") (call_expression "(**(code **)(*param_4 + 0x48))(param_4)" (parenthesized_expression "(**(code **)(*param_4 + 0x48))" (( "(") (pointer_expression "**(code **)(*param_4 + 0x48)" (* "*") (pointer_expression "*(code **)(*param_4 + 0x48)" (* "*") (cast_expression "(code **)(*param_4 + 0x48)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*param_4 + 0x48)" (( "(") (binary_expression "*param_4 + 0x48" (pointer_expression "*param_4" (* "*") (identifier "param_4")) (+ "+") (number_literal "0x48")) () ")"))))) () ")")) (argument_list "(param_4)" (( "(") (identifier "param_4") () ")")))) (; ";")) (if_statement "if (iVar10 == -1) {\n        param_4 = (long *)0x0;\n      }" (if "if") (parenthesized_expression "(iVar10 == -1)" (( "(") (binary_expression "iVar10 == -1" (identifier "iVar10") (== "==") (number_literal "-1")) () ")")) (compound_statement "{\n        param_4 = (long *)0x0;\n      }" ({ "{") (expression_statement "param_4 = (long *)0x0;" (assignment_expression "param_4 = (long *)0x0" (identifier "param_4") (= "=") (cast_expression "(long *)0x0" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (} "}"))) (expression_statement "bVar17 = iVar10 == -1 && bVar14;" (assignment_expression "bVar17 = iVar10 == -1 && bVar14" (identifier "bVar17") (= "=") (binary_expression "iVar10 == -1 && bVar14" (binary_expression "iVar10 == -1" (identifier "iVar10") (== "==") (number_literal "-1")) (&& "&&") (identifier "bVar14"))) (; ";")) (goto_statement "goto LAB_0029602d;" (goto "goto") (statement_identifier "LAB_0029602d") (; ";")) (} "}"))) (if_statement "if (bVar15 == false) goto LAB_00296469;" (if "if") (parenthesized_expression "(bVar15 == false)" (( "(") (binary_expression "bVar15 == false" (identifier "bVar15") (== "==") (false "false")) () ")")) (goto_statement "goto LAB_00296469;" (goto "goto") (statement_identifier "LAB_00296469") (; ";"))) (} "}")) (else_clause "else {\nLAB_0029602d:\n    if (bVar17 == bVar15) {\nLAB_00296469:\n      *param_7 = 6;\n      goto LAB_002962c3;\n    }\n  }" (else "else") (compound_statement "{\nLAB_0029602d:\n    if (bVar17 == bVar15) {\nLAB_00296469:\n      *param_7 = 6;\n      goto LAB_002962c3;\n    }\n  }" ({ "{") (labeled_statement "LAB_0029602d:\n    if (bVar17 == bVar15) {\nLAB_00296469:\n      *param_7 = 6;\n      goto LAB_002962c3;\n    }" (statement_identifier "LAB_0029602d") (: ":") (if_statement "if (bVar17 == bVar15) {\nLAB_00296469:\n      *param_7 = 6;\n      goto LAB_002962c3;\n    }" (if "if") (parenthesized_expression "(bVar17 == bVar15)" (( "(") (binary_expression "bVar17 == bVar15" (identifier "bVar17") (== "==") (identifier "bVar15")) () ")")) (compound_statement "{\nLAB_00296469:\n      *param_7 = 6;\n      goto LAB_002962c3;\n    }" ({ "{") (labeled_statement "LAB_00296469:\n      *param_7 = 6;" (statement_identifier "LAB_00296469") (: ":") (expression_statement "*param_7 = 6;" (assignment_expression "*param_7 = 6" (pointer_expression "*param_7" (* "*") (identifier "param_7")) (= "=") (number_literal "6")) (; ";"))) (goto_statement "goto LAB_002962c3;" (goto "goto") (statement_identifier "LAB_002962c3") (; ";")) (} "}")))) (} "}")))) (expression_statement "bVar1 = *param_9;" (assignment_expression "bVar1 = *param_9" (identifier "bVar1") (= "=") (pointer_expression "*param_9" (* "*") (identifier "param_9"))) (; ";")) (expression_statement "bVar8 = *(byte *)((long)plVar11 + (ulong)bVar1 + 0x139);" (assignment_expression "bVar8 = *(byte *)((long)plVar11 + (ulong)bVar1 + 0x139)" (identifier "bVar8") (= "=") (pointer_expression "*(byte *)((long)plVar11 + (ulong)bVar1 + 0x139)" (* "*") (cast_expression "(byte *)((long)plVar11 + (ulong)bVar1 + 0x139)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)plVar11 + (ulong)bVar1 + 0x139)" (( "(") (binary_expression "(long)plVar11 + (ulong)bVar1 + 0x139" (binary_expression "(long)plVar11 + (ulong)bVar1" (cast_expression "(long)plVar11" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "plVar11")) (+ "+") (cast_expression "(ulong)bVar1" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (identifier "bVar1"))) (+ "+") (number_literal "0x139")) () ")"))))) (; ";")) (if_statement "if (bVar8 == 0) {\n    bVar8 = bVar1;\n    if (*(code **)(*plVar11 + 0x40) != (code *)PTR_FUN_003bdd10) {\n      bVar8 = (**(code **)(*plVar11 + 0x40))(plVar11,(int)(char)bVar1,0);\n    }\n    if (bVar8 != 0) {\n      *(byte *)((long)plVar11 + (ulong)bVar1 + 0x139) = bVar8;\n      goto LAB_00296071;\n    }\nLAB_00295f20:\n    lVar2 = plVar11[6];\n    if ((*(byte *)(lVar2 + 1 + (ulong)*param_9 * 2) & 0x20) != 0) {\n      pbVar18 = param_9 + 1;\n      pbVar3 = param_10;\n      if (param_10 != pbVar18) {\n        bVar1 = *(byte *)(lVar2 + 1 + (ulong)param_9[1] * 2);\n        while ((pbVar3 = pbVar18, (bVar1 & 0x20) != 0 &&\n               (pbVar18 = pbVar18 + 1, pbVar3 = pbVar18, param_10 != pbVar18))) {\n          bVar1 = *(byte *)(lVar2 + 1 + (ulong)*pbVar18 * 2);\n        }\n      }\n      do {\n        param_9 = pbVar3;\n        bVar20 = (int)uVar16 == -1;\n        bVar15 = bVar20;\n        bVar17 = bVar19;\n        if (param_2 != (long *)0x0 && bVar20) {\n          if ((ulong)param_2[3] <= (ulong)param_2[2]) {\n            iVar10 = (**(code **)(*param_2 + 0x48))(param_2);\n            bVar15 = iVar10 == -1 && (param_2 != (long *)0x0 && bVar20);\n            if (iVar10 == -1) {\n              param_2 = (long *)0x0;\n            }\n            goto LAB_00296353;\n          }\n          bVar15 = false;\n          if (param_4 != (long *)0x0 && bVar19) goto LAB_002963d5;\nLAB_00296362:\n          if (bVar15 == bVar17) goto LAB_00295fe1;\n        }\n        else {\nLAB_00296353:\n          if (param_4 == (long *)0x0 || !bVar19) goto LAB_00296362;\nLAB_002963d5:\n          bVar17 = param_4 != (long *)0x0;\n          if ((ulong)param_4[3] <= (ulong)param_4[2]) {\n            iVar10 = (**(code **)(*param_4 + 0x48))(param_4);\n            if (iVar10 == -1) {\n              param_4 = (long *)0x0;\n            }\n            bVar17 = iVar10 == -1 && (bVar17 && bVar19);\n            goto LAB_00296362;\n          }\n          if (bVar15 == false) goto LAB_00295fe1;\n        }\n        uVar13 = uVar16;\n        if ((param_2 == (long *)0x0) || (!bVar20)) {\nLAB_0029637c:\n          if ((*(byte *)(plVar11[6] + 1 + (uVar13 & 0xff) * 2) & 0x20) == 0) goto LAB_00295fe1;\n          pbVar18 = (byte *)param_2[2];\n          if (pbVar18 < (byte *)param_2[3]) goto LAB_00296398;\n          (**(code **)(*param_2 + 0x50))(param_2);\n        }\n        else {\n          pbVar18 = (byte *)param_2[2];\n          if ((byte *)param_2[3] <= pbVar18) {\n            uVar13 = (**(code **)(*param_2 + 0x48))(param_2);\n            if ((int)uVar13 == -1) {\n              param_2 = (long *)0x0;\n            }\n            goto LAB_0029637c;\n          }\n          if ((*(byte *)(plVar11[6] + 1 + (ulong)*pbVar18 * 2) & 0x20) == 0) goto code_r0x00296430;\nLAB_00296398:\n          param_2[2] = (long)(pbVar18 + 1);\n        }\n        uVar16 = 0xffffffff;\n        pbVar3 = param_9;\n      } while( true );\n    }\n    cVar6 = (char)uVar16;\n    cVar4 = cVar6;\n    if ((param_2 != (long *)0x0) && (bVar20)) {\n      if ((char *)param_2[2] < (char *)param_2[3]) {\n        cVar4 = *(char *)param_2[2];\n      }\n      else {\n        iVar10 = (**(code **)(*param_2 + 0x48))(param_2);\n        cVar4 = -1;\n        if (iVar10 == -1) {\n          param_2 = (long *)0x0;\n        }\n        else {\n          cVar4 = (char)iVar10;\n        }\n      }\n    }\n    cVar4 = (**(code **)(*plVar11 + 0x20))(plVar11,(int)cVar4);\n    cVar5 = (**(code **)(*plVar11 + 0x20))(plVar11,(int)(char)*param_9);\n    if (cVar5 != cVar4) {\n      if ((param_2 != (long *)0x0) && (bVar20)) {\n        if ((char *)param_2[2] < (char *)param_2[3]) {\n          cVar6 = *(char *)param_2[2];\n        }\n        else {\n          iVar10 = (**(code **)(*param_2 + 0x48))(param_2);\n          cVar6 = -1;\n          if (iVar10 == -1) {\n            param_2 = (long *)0x0;\n          }\n          else {\n            cVar6 = (char)iVar10;\n          }\n        }\n      }\n      cVar6 = (**(code **)(*plVar11 + 0x10))(plVar11,(int)cVar6);\n      cVar4 = (**(code **)(*plVar11 + 0x10))(plVar11,(int)(char)*param_9);\n      if (cVar4 != cVar6) goto LAB_00296748;\n    }\n    if ((ulong)param_2[2] < (ulong)param_2[3]) {\n      param_2[2] = param_2[2] + 1;\n    }\n    else {\n      (**(code **)(*param_2 + 0x50))(param_2);\n    }\n    param_9 = param_9 + 1;\n    uVar16 = 0xffffffff;\n    goto LAB_00295fe1;\n  }" (if "if") (parenthesized_expression "(bVar8 == 0)" (( "(") (binary_expression "bVar8 == 0" (identifier "bVar8") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n    bVar8 = bVar1;\n    if (*(code **)(*plVar11 + 0x40) != (code *)PTR_FUN_003bdd10) {\n      bVar8 = (**(code **)(*plVar11 + 0x40))(plVar11,(int)(char)bVar1,0);\n    }\n    if (bVar8 != 0) {\n      *(byte *)((long)plVar11 + (ulong)bVar1 + 0x139) = bVar8;\n      goto LAB_00296071;\n    }\nLAB_00295f20:\n    lVar2 = plVar11[6];\n    if ((*(byte *)(lVar2 + 1 + (ulong)*param_9 * 2) & 0x20) != 0) {\n      pbVar18 = param_9 + 1;\n      pbVar3 = param_10;\n      if (param_10 != pbVar18) {\n        bVar1 = *(byte *)(lVar2 + 1 + (ulong)param_9[1] * 2);\n        while ((pbVar3 = pbVar18, (bVar1 & 0x20) != 0 &&\n               (pbVar18 = pbVar18 + 1, pbVar3 = pbVar18, param_10 != pbVar18))) {\n          bVar1 = *(byte *)(lVar2 + 1 + (ulong)*pbVar18 * 2);\n        }\n      }\n      do {\n        param_9 = pbVar3;\n        bVar20 = (int)uVar16 == -1;\n        bVar15 = bVar20;\n        bVar17 = bVar19;\n        if (param_2 != (long *)0x0 && bVar20) {\n          if ((ulong)param_2[3] <= (ulong)param_2[2]) {\n            iVar10 = (**(code **)(*param_2 + 0x48))(param_2);\n            bVar15 = iVar10 == -1 && (param_2 != (long *)0x0 && bVar20);\n            if (iVar10 == -1) {\n              param_2 = (long *)0x0;\n            }\n            goto LAB_00296353;\n          }\n          bVar15 = false;\n          if (param_4 != (long *)0x0 && bVar19) goto LAB_002963d5;\nLAB_00296362:\n          if (bVar15 == bVar17) goto LAB_00295fe1;\n        }\n        else {\nLAB_00296353:\n          if (param_4 == (long *)0x0 || !bVar19) goto LAB_00296362;\nLAB_002963d5:\n          bVar17 = param_4 != (long *)0x0;\n          if ((ulong)param_4[3] <= (ulong)param_4[2]) {\n            iVar10 = (**(code **)(*param_4 + 0x48))(param_4);\n            if (iVar10 == -1) {\n              param_4 = (long *)0x0;\n            }\n            bVar17 = iVar10 == -1 && (bVar17 && bVar19);\n            goto LAB_00296362;\n          }\n          if (bVar15 == false) goto LAB_00295fe1;\n        }\n        uVar13 = uVar16;\n        if ((param_2 == (long *)0x0) || (!bVar20)) {\nLAB_0029637c:\n          if ((*(byte *)(plVar11[6] + 1 + (uVar13 & 0xff) * 2) & 0x20) == 0) goto LAB_00295fe1;\n          pbVar18 = (byte *)param_2[2];\n          if (pbVar18 < (byte *)param_2[3]) goto LAB_00296398;\n          (**(code **)(*param_2 + 0x50))(param_2);\n        }\n        else {\n          pbVar18 = (byte *)param_2[2];\n          if ((byte *)param_2[3] <= pbVar18) {\n            uVar13 = (**(code **)(*param_2 + 0x48))(param_2);\n            if ((int)uVar13 == -1) {\n              param_2 = (long *)0x0;\n            }\n            goto LAB_0029637c;\n          }\n          if ((*(byte *)(plVar11[6] + 1 + (ulong)*pbVar18 * 2) & 0x20) == 0) goto code_r0x00296430;\nLAB_00296398:\n          param_2[2] = (long)(pbVar18 + 1);\n        }\n        uVar16 = 0xffffffff;\n        pbVar3 = param_9;\n      } while( true );\n    }\n    cVar6 = (char)uVar16;\n    cVar4 = cVar6;\n    if ((param_2 != (long *)0x0) && (bVar20)) {\n      if ((char *)param_2[2] < (char *)param_2[3]) {\n        cVar4 = *(char *)param_2[2];\n      }\n      else {\n        iVar10 = (**(code **)(*param_2 + 0x48))(param_2);\n        cVar4 = -1;\n        if (iVar10 == -1) {\n          param_2 = (long *)0x0;\n        }\n        else {\n          cVar4 = (char)iVar10;\n        }\n      }\n    }\n    cVar4 = (**(code **)(*plVar11 + 0x20))(plVar11,(int)cVar4);\n    cVar5 = (**(code **)(*plVar11 + 0x20))(plVar11,(int)(char)*param_9);\n    if (cVar5 != cVar4) {\n      if ((param_2 != (long *)0x0) && (bVar20)) {\n        if ((char *)param_2[2] < (char *)param_2[3]) {\n          cVar6 = *(char *)param_2[2];\n        }\n        else {\n          iVar10 = (**(code **)(*param_2 + 0x48))(param_2);\n          cVar6 = -1;\n          if (iVar10 == -1) {\n            param_2 = (long *)0x0;\n          }\n          else {\n            cVar6 = (char)iVar10;\n          }\n        }\n      }\n      cVar6 = (**(code **)(*plVar11 + 0x10))(plVar11,(int)cVar6);\n      cVar4 = (**(code **)(*plVar11 + 0x10))(plVar11,(int)(char)*param_9);\n      if (cVar4 != cVar6) goto LAB_00296748;\n    }\n    if ((ulong)param_2[2] < (ulong)param_2[3]) {\n      param_2[2] = param_2[2] + 1;\n    }\n    else {\n      (**(code **)(*param_2 + 0x50))(param_2);\n    }\n    param_9 = param_9 + 1;\n    uVar16 = 0xffffffff;\n    goto LAB_00295fe1;\n  }" ({ "{") (expression_statement "bVar8 = bVar1;" (assignment_expression "bVar8 = bVar1" (identifier "bVar8") (= "=") (identifier "bVar1")) (; ";")) (if_statement "if (*(code **)(*plVar11 + 0x40) != (code *)PTR_FUN_003bdd10) {\n      bVar8 = (**(code **)(*plVar11 + 0x40))(plVar11,(int)(char)bVar1,0);\n    }" (if "if") (parenthesized_expression "(*(code **)(*plVar11 + 0x40) != (code *)PTR_FUN_003bdd10)" (( "(") (binary_expression "*(code **)(*plVar11 + 0x40) != (code *)PTR_FUN_003bdd10" (pointer_expression "*(code **)(*plVar11 + 0x40)" (* "*") (cast_expression "(code **)(*plVar11 + 0x40)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*plVar11 + 0x40)" (( "(") (binary_expression "*plVar11 + 0x40" (pointer_expression "*plVar11" (* "*") (identifier "plVar11")) (+ "+") (number_literal "0x40")) () ")")))) (!= "!=") (cast_expression "(code *)PTR_FUN_003bdd10" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_FUN_003bdd10"))) () ")")) (compound_statement "{\n      bVar8 = (**(code **)(*plVar11 + 0x40))(plVar11,(int)(char)bVar1,0);\n    }" ({ "{") (expression_statement "bVar8 = (**(code **)(*plVar11 + 0x40))(plVar11,(int)(char)bVar1,0);" (assignment_expression "bVar8 = (**(code **)(*plVar11 + 0x40))(plVar11,(int)(char)bVar1,0)" (identifier "bVar8") (= "=") (call_expression "(**(code **)(*plVar11 + 0x40))(plVar11,(int)(char)bVar1,0)" (parenthesized_expression "(**(code **)(*plVar11 + 0x40))" (( "(") (pointer_expression "**(code **)(*plVar11 + 0x40)" (* "*") (pointer_expression "*(code **)(*plVar11 + 0x40)" (* "*") (cast_expression "(code **)(*plVar11 + 0x40)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*plVar11 + 0x40)" (( "(") (binary_expression "*plVar11 + 0x40" (pointer_expression "*plVar11" (* "*") (identifier "plVar11")) (+ "+") (number_literal "0x40")) () ")"))))) () ")")) (argument_list "(plVar11,(int)(char)bVar1,0)" (( "(") (identifier "plVar11") (, ",") (cast_expression "(int)(char)bVar1" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (cast_expression "(char)bVar1" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (identifier "bVar1"))) (, ",") (number_literal "0") () ")")))) (; ";")) (} "}"))) (if_statement "if (bVar8 != 0) {\n      *(byte *)((long)plVar11 + (ulong)bVar1 + 0x139) = bVar8;\n      goto LAB_00296071;\n    }" (if "if") (parenthesized_expression "(bVar8 != 0)" (( "(") (binary_expression "bVar8 != 0" (identifier "bVar8") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n      *(byte *)((long)plVar11 + (ulong)bVar1 + 0x139) = bVar8;\n      goto LAB_00296071;\n    }" ({ "{") (expression_statement "*(byte *)((long)plVar11 + (ulong)bVar1 + 0x139) = bVar8;" (assignment_expression "*(byte *)((long)plVar11 + (ulong)bVar1 + 0x139) = bVar8" (pointer_expression "*(byte *)((long)plVar11 + (ulong)bVar1 + 0x139)" (* "*") (cast_expression "(byte *)((long)plVar11 + (ulong)bVar1 + 0x139)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)plVar11 + (ulong)bVar1 + 0x139)" (( "(") (binary_expression "(long)plVar11 + (ulong)bVar1 + 0x139" (binary_expression "(long)plVar11 + (ulong)bVar1" (cast_expression "(long)plVar11" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "plVar11")) (+ "+") (cast_expression "(ulong)bVar1" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (identifier "bVar1"))) (+ "+") (number_literal "0x139")) () ")")))) (= "=") (identifier "bVar8")) (; ";")) (goto_statement "goto LAB_00296071;" (goto "goto") (statement_identifier "LAB_00296071") (; ";")) (} "}"))) (labeled_statement "LAB_00295f20:\n    lVar2 = plVar11[6];" (statement_identifier "LAB_00295f20") (: ":") (expression_statement "lVar2 = plVar11[6];" (assignment_expression "lVar2 = plVar11[6]" (identifier "lVar2") (= "=") (subscript_expression "plVar11[6]" (identifier "plVar11") ([ "[") (number_literal "6") (] "]"))) (; ";"))) (if_statement "if ((*(byte *)(lVar2 + 1 + (ulong)*param_9 * 2) & 0x20) != 0) {\n      pbVar18 = param_9 + 1;\n      pbVar3 = param_10;\n      if (param_10 != pbVar18) {\n        bVar1 = *(byte *)(lVar2 + 1 + (ulong)param_9[1] * 2);\n        while ((pbVar3 = pbVar18, (bVar1 & 0x20) != 0 &&\n               (pbVar18 = pbVar18 + 1, pbVar3 = pbVar18, param_10 != pbVar18))) {\n          bVar1 = *(byte *)(lVar2 + 1 + (ulong)*pbVar18 * 2);\n        }\n      }\n      do {\n        param_9 = pbVar3;\n        bVar20 = (int)uVar16 == -1;\n        bVar15 = bVar20;\n        bVar17 = bVar19;\n        if (param_2 != (long *)0x0 && bVar20) {\n          if ((ulong)param_2[3] <= (ulong)param_2[2]) {\n            iVar10 = (**(code **)(*param_2 + 0x48))(param_2);\n            bVar15 = iVar10 == -1 && (param_2 != (long *)0x0 && bVar20);\n            if (iVar10 == -1) {\n              param_2 = (long *)0x0;\n            }\n            goto LAB_00296353;\n          }\n          bVar15 = false;\n          if (param_4 != (long *)0x0 && bVar19) goto LAB_002963d5;\nLAB_00296362:\n          if (bVar15 == bVar17) goto LAB_00295fe1;\n        }\n        else {\nLAB_00296353:\n          if (param_4 == (long *)0x0 || !bVar19) goto LAB_00296362;\nLAB_002963d5:\n          bVar17 = param_4 != (long *)0x0;\n          if ((ulong)param_4[3] <= (ulong)param_4[2]) {\n            iVar10 = (**(code **)(*param_4 + 0x48))(param_4);\n            if (iVar10 == -1) {\n              param_4 = (long *)0x0;\n            }\n            bVar17 = iVar10 == -1 && (bVar17 && bVar19);\n            goto LAB_00296362;\n          }\n          if (bVar15 == false) goto LAB_00295fe1;\n        }\n        uVar13 = uVar16;\n        if ((param_2 == (long *)0x0) || (!bVar20)) {\nLAB_0029637c:\n          if ((*(byte *)(plVar11[6] + 1 + (uVar13 & 0xff) * 2) & 0x20) == 0) goto LAB_00295fe1;\n          pbVar18 = (byte *)param_2[2];\n          if (pbVar18 < (byte *)param_2[3]) goto LAB_00296398;\n          (**(code **)(*param_2 + 0x50))(param_2);\n        }\n        else {\n          pbVar18 = (byte *)param_2[2];\n          if ((byte *)param_2[3] <= pbVar18) {\n            uVar13 = (**(code **)(*param_2 + 0x48))(param_2);\n            if ((int)uVar13 == -1) {\n              param_2 = (long *)0x0;\n            }\n            goto LAB_0029637c;\n          }\n          if ((*(byte *)(plVar11[6] + 1 + (ulong)*pbVar18 * 2) & 0x20) == 0) goto code_r0x00296430;\nLAB_00296398:\n          param_2[2] = (long)(pbVar18 + 1);\n        }\n        uVar16 = 0xffffffff;\n        pbVar3 = param_9;\n      } while( true );\n    }" (if "if") (parenthesized_expression "((*(byte *)(lVar2 + 1 + (ulong)*param_9 * 2) & 0x20) != 0)" (( "(") (binary_expression "(*(byte *)(lVar2 + 1 + (ulong)*param_9 * 2) & 0x20) != 0" (parenthesized_expression "(*(byte *)(lVar2 + 1 + (ulong)*param_9 * 2) & 0x20)" (( "(") (binary_expression "*(byte *)(lVar2 + 1 + (ulong)*param_9 * 2) & 0x20" (pointer_expression "*(byte *)(lVar2 + 1 + (ulong)*param_9 * 2)" (* "*") (cast_expression "(byte *)(lVar2 + 1 + (ulong)*param_9 * 2)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar2 + 1 + (ulong)*param_9 * 2)" (( "(") (binary_expression "lVar2 + 1 + (ulong)*param_9 * 2" (binary_expression "lVar2 + 1" (identifier "lVar2") (+ "+") (number_literal "1")) (+ "+") (binary_expression "(ulong)*param_9 * 2" (binary_expression "(ulong)*param_9" (parenthesized_expression "(ulong)" (( "(") (identifier "ulong") () ")")) (* "*") (identifier "param_9")) (* "*") (number_literal "2"))) () ")")))) (& "&") (number_literal "0x20")) () ")")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n      pbVar18 = param_9 + 1;\n      pbVar3 = param_10;\n      if (param_10 != pbVar18) {\n        bVar1 = *(byte *)(lVar2 + 1 + (ulong)param_9[1] * 2);\n        while ((pbVar3 = pbVar18, (bVar1 & 0x20) != 0 &&\n               (pbVar18 = pbVar18 + 1, pbVar3 = pbVar18, param_10 != pbVar18))) {\n          bVar1 = *(byte *)(lVar2 + 1 + (ulong)*pbVar18 * 2);\n        }\n      }\n      do {\n        param_9 = pbVar3;\n        bVar20 = (int)uVar16 == -1;\n        bVar15 = bVar20;\n        bVar17 = bVar19;\n        if (param_2 != (long *)0x0 && bVar20) {\n          if ((ulong)param_2[3] <= (ulong)param_2[2]) {\n            iVar10 = (**(code **)(*param_2 + 0x48))(param_2);\n            bVar15 = iVar10 == -1 && (param_2 != (long *)0x0 && bVar20);\n            if (iVar10 == -1) {\n              param_2 = (long *)0x0;\n            }\n            goto LAB_00296353;\n          }\n          bVar15 = false;\n          if (param_4 != (long *)0x0 && bVar19) goto LAB_002963d5;\nLAB_00296362:\n          if (bVar15 == bVar17) goto LAB_00295fe1;\n        }\n        else {\nLAB_00296353:\n          if (param_4 == (long *)0x0 || !bVar19) goto LAB_00296362;\nLAB_002963d5:\n          bVar17 = param_4 != (long *)0x0;\n          if ((ulong)param_4[3] <= (ulong)param_4[2]) {\n            iVar10 = (**(code **)(*param_4 + 0x48))(param_4);\n            if (iVar10 == -1) {\n              param_4 = (long *)0x0;\n            }\n            bVar17 = iVar10 == -1 && (bVar17 && bVar19);\n            goto LAB_00296362;\n          }\n          if (bVar15 == false) goto LAB_00295fe1;\n        }\n        uVar13 = uVar16;\n        if ((param_2 == (long *)0x0) || (!bVar20)) {\nLAB_0029637c:\n          if ((*(byte *)(plVar11[6] + 1 + (uVar13 & 0xff) * 2) & 0x20) == 0) goto LAB_00295fe1;\n          pbVar18 = (byte *)param_2[2];\n          if (pbVar18 < (byte *)param_2[3]) goto LAB_00296398;\n          (**(code **)(*param_2 + 0x50))(param_2);\n        }\n        else {\n          pbVar18 = (byte *)param_2[2];\n          if ((byte *)param_2[3] <= pbVar18) {\n            uVar13 = (**(code **)(*param_2 + 0x48))(param_2);\n            if ((int)uVar13 == -1) {\n              param_2 = (long *)0x0;\n            }\n            goto LAB_0029637c;\n          }\n          if ((*(byte *)(plVar11[6] + 1 + (ulong)*pbVar18 * 2) & 0x20) == 0) goto code_r0x00296430;\nLAB_00296398:\n          param_2[2] = (long)(pbVar18 + 1);\n        }\n        uVar16 = 0xffffffff;\n        pbVar3 = param_9;\n      } while( true );\n    }" ({ "{") (expression_statement "pbVar18 = param_9 + 1;" (assignment_expression "pbVar18 = param_9 + 1" (identifier "pbVar18") (= "=") (binary_expression "param_9 + 1" (identifier "param_9") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "pbVar3 = param_10;" (assignment_expression "pbVar3 = param_10" (identifier "pbVar3") (= "=") (identifier "param_10")) (; ";")) (if_statement "if (param_10 != pbVar18) {\n        bVar1 = *(byte *)(lVar2 + 1 + (ulong)param_9[1] * 2);\n        while ((pbVar3 = pbVar18, (bVar1 & 0x20) != 0 &&\n               (pbVar18 = pbVar18 + 1, pbVar3 = pbVar18, param_10 != pbVar18))) {\n          bVar1 = *(byte *)(lVar2 + 1 + (ulong)*pbVar18 * 2);\n        }\n      }" (if "if") (parenthesized_expression "(param_10 != pbVar18)" (( "(") (binary_expression "param_10 != pbVar18" (identifier "param_10") (!= "!=") (identifier "pbVar18")) () ")")) (compound_statement "{\n        bVar1 = *(byte *)(lVar2 + 1 + (ulong)param_9[1] * 2);\n        while ((pbVar3 = pbVar18, (bVar1 & 0x20) != 0 &&\n               (pbVar18 = pbVar18 + 1, pbVar3 = pbVar18, param_10 != pbVar18))) {\n          bVar1 = *(byte *)(lVar2 + 1 + (ulong)*pbVar18 * 2);\n        }\n      }" ({ "{") (expression_statement "bVar1 = *(byte *)(lVar2 + 1 + (ulong)param_9[1] * 2);" (assignment_expression "bVar1 = *(byte *)(lVar2 + 1 + (ulong)param_9[1] * 2)" (identifier "bVar1") (= "=") (pointer_expression "*(byte *)(lVar2 + 1 + (ulong)param_9[1] * 2)" (* "*") (cast_expression "(byte *)(lVar2 + 1 + (ulong)param_9[1] * 2)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar2 + 1 + (ulong)param_9[1] * 2)" (( "(") (binary_expression "lVar2 + 1 + (ulong)param_9[1] * 2" (binary_expression "lVar2 + 1" (identifier "lVar2") (+ "+") (number_literal "1")) (+ "+") (binary_expression "(ulong)param_9[1] * 2" (cast_expression "(ulong)param_9[1]" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (subscript_expression "param_9[1]" (identifier "param_9") ([ "[") (number_literal "1") (] "]"))) (* "*") (number_literal "2"))) () ")"))))) (; ";")) (while_statement "while ((pbVar3 = pbVar18, (bVar1 & 0x20) != 0 &&\n               (pbVar18 = pbVar18 + 1, pbVar3 = pbVar18, param_10 != pbVar18))) {\n          bVar1 = *(byte *)(lVar2 + 1 + (ulong)*pbVar18 * 2);\n        }" (while "while") (parenthesized_expression "((pbVar3 = pbVar18, (bVar1 & 0x20) != 0 &&\n               (pbVar18 = pbVar18 + 1, pbVar3 = pbVar18, param_10 != pbVar18)))" (( "(") (parenthesized_expression "(pbVar3 = pbVar18, (bVar1 & 0x20) != 0 &&\n               (pbVar18 = pbVar18 + 1, pbVar3 = pbVar18, param_10 != pbVar18))" (( "(") (comma_expression "pbVar3 = pbVar18, (bVar1 & 0x20) != 0 &&\n               (pbVar18 = pbVar18 + 1, pbVar3 = pbVar18, param_10 != pbVar18)" (assignment_expression "pbVar3 = pbVar18" (identifier "pbVar3") (= "=") (identifier "pbVar18")) (, ",") (binary_expression "(bVar1 & 0x20) != 0 &&\n               (pbVar18 = pbVar18 + 1, pbVar3 = pbVar18, param_10 != pbVar18)" (binary_expression "(bVar1 & 0x20) != 0" (parenthesized_expression "(bVar1 & 0x20)" (( "(") (binary_expression "bVar1 & 0x20" (identifier "bVar1") (& "&") (number_literal "0x20")) () ")")) (!= "!=") (number_literal "0")) (&& "&&") (parenthesized_expression "(pbVar18 = pbVar18 + 1, pbVar3 = pbVar18, param_10 != pbVar18)" (( "(") (comma_expression "pbVar18 = pbVar18 + 1, pbVar3 = pbVar18, param_10 != pbVar18" (assignment_expression "pbVar18 = pbVar18 + 1" (identifier "pbVar18") (= "=") (binary_expression "pbVar18 + 1" (identifier "pbVar18") (+ "+") (number_literal "1"))) (, ",") (comma_expression "pbVar3 = pbVar18, param_10 != pbVar18" (assignment_expression "pbVar3 = pbVar18" (identifier "pbVar3") (= "=") (identifier "pbVar18")) (, ",") (binary_expression "param_10 != pbVar18" (identifier "param_10") (!= "!=") (identifier "pbVar18")))) () ")")))) () ")")) () ")")) (compound_statement "{\n          bVar1 = *(byte *)(lVar2 + 1 + (ulong)*pbVar18 * 2);\n        }" ({ "{") (expression_statement "bVar1 = *(byte *)(lVar2 + 1 + (ulong)*pbVar18 * 2);" (assignment_expression "bVar1 = *(byte *)(lVar2 + 1 + (ulong)*pbVar18 * 2)" (identifier "bVar1") (= "=") (pointer_expression "*(byte *)(lVar2 + 1 + (ulong)*pbVar18 * 2)" (* "*") (cast_expression "(byte *)(lVar2 + 1 + (ulong)*pbVar18 * 2)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar2 + 1 + (ulong)*pbVar18 * 2)" (( "(") (binary_expression "lVar2 + 1 + (ulong)*pbVar18 * 2" (binary_expression "lVar2 + 1" (identifier "lVar2") (+ "+") (number_literal "1")) (+ "+") (binary_expression "(ulong)*pbVar18 * 2" (binary_expression "(ulong)*pbVar18" (parenthesized_expression "(ulong)" (( "(") (identifier "ulong") () ")")) (* "*") (identifier "pbVar18")) (* "*") (number_literal "2"))) () ")"))))) (; ";")) (} "}"))) (} "}"))) (do_statement "do {\n        param_9 = pbVar3;\n        bVar20 = (int)uVar16 == -1;\n        bVar15 = bVar20;\n        bVar17 = bVar19;\n        if (param_2 != (long *)0x0 && bVar20) {\n          if ((ulong)param_2[3] <= (ulong)param_2[2]) {\n            iVar10 = (**(code **)(*param_2 + 0x48))(param_2);\n            bVar15 = iVar10 == -1 && (param_2 != (long *)0x0 && bVar20);\n            if (iVar10 == -1) {\n              param_2 = (long *)0x0;\n            }\n            goto LAB_00296353;\n          }\n          bVar15 = false;\n          if (param_4 != (long *)0x0 && bVar19) goto LAB_002963d5;\nLAB_00296362:\n          if (bVar15 == bVar17) goto LAB_00295fe1;\n        }\n        else {\nLAB_00296353:\n          if (param_4 == (long *)0x0 || !bVar19) goto LAB_00296362;\nLAB_002963d5:\n          bVar17 = param_4 != (long *)0x0;\n          if ((ulong)param_4[3] <= (ulong)param_4[2]) {\n            iVar10 = (**(code **)(*param_4 + 0x48))(param_4);\n            if (iVar10 == -1) {\n              param_4 = (long *)0x0;\n            }\n            bVar17 = iVar10 == -1 && (bVar17 && bVar19);\n            goto LAB_00296362;\n          }\n          if (bVar15 == false) goto LAB_00295fe1;\n        }\n        uVar13 = uVar16;\n        if ((param_2 == (long *)0x0) || (!bVar20)) {\nLAB_0029637c:\n          if ((*(byte *)(plVar11[6] + 1 + (uVar13 & 0xff) * 2) & 0x20) == 0) goto LAB_00295fe1;\n          pbVar18 = (byte *)param_2[2];\n          if (pbVar18 < (byte *)param_2[3]) goto LAB_00296398;\n          (**(code **)(*param_2 + 0x50))(param_2);\n        }\n        else {\n          pbVar18 = (byte *)param_2[2];\n          if ((byte *)param_2[3] <= pbVar18) {\n            uVar13 = (**(code **)(*param_2 + 0x48))(param_2);\n            if ((int)uVar13 == -1) {\n              param_2 = (long *)0x0;\n            }\n            goto LAB_0029637c;\n          }\n          if ((*(byte *)(plVar11[6] + 1 + (ulong)*pbVar18 * 2) & 0x20) == 0) goto code_r0x00296430;\nLAB_00296398:\n          param_2[2] = (long)(pbVar18 + 1);\n        }\n        uVar16 = 0xffffffff;\n        pbVar3 = param_9;\n      } while( true );" (do "do") (compound_statement "{\n        param_9 = pbVar3;\n        bVar20 = (int)uVar16 == -1;\n        bVar15 = bVar20;\n        bVar17 = bVar19;\n        if (param_2 != (long *)0x0 && bVar20) {\n          if ((ulong)param_2[3] <= (ulong)param_2[2]) {\n            iVar10 = (**(code **)(*param_2 + 0x48))(param_2);\n            bVar15 = iVar10 == -1 && (param_2 != (long *)0x0 && bVar20);\n            if (iVar10 == -1) {\n              param_2 = (long *)0x0;\n            }\n            goto LAB_00296353;\n          }\n          bVar15 = false;\n          if (param_4 != (long *)0x0 && bVar19) goto LAB_002963d5;\nLAB_00296362:\n          if (bVar15 == bVar17) goto LAB_00295fe1;\n        }\n        else {\nLAB_00296353:\n          if (param_4 == (long *)0x0 || !bVar19) goto LAB_00296362;\nLAB_002963d5:\n          bVar17 = param_4 != (long *)0x0;\n          if ((ulong)param_4[3] <= (ulong)param_4[2]) {\n            iVar10 = (**(code **)(*param_4 + 0x48))(param_4);\n            if (iVar10 == -1) {\n              param_4 = (long *)0x0;\n            }\n            bVar17 = iVar10 == -1 && (bVar17 && bVar19);\n            goto LAB_00296362;\n          }\n          if (bVar15 == false) goto LAB_00295fe1;\n        }\n        uVar13 = uVar16;\n        if ((param_2 == (long *)0x0) || (!bVar20)) {\nLAB_0029637c:\n          if ((*(byte *)(plVar11[6] + 1 + (uVar13 & 0xff) * 2) & 0x20) == 0) goto LAB_00295fe1;\n          pbVar18 = (byte *)param_2[2];\n          if (pbVar18 < (byte *)param_2[3]) goto LAB_00296398;\n          (**(code **)(*param_2 + 0x50))(param_2);\n        }\n        else {\n          pbVar18 = (byte *)param_2[2];\n          if ((byte *)param_2[3] <= pbVar18) {\n            uVar13 = (**(code **)(*param_2 + 0x48))(param_2);\n            if ((int)uVar13 == -1) {\n              param_2 = (long *)0x0;\n            }\n            goto LAB_0029637c;\n          }\n          if ((*(byte *)(plVar11[6] + 1 + (ulong)*pbVar18 * 2) & 0x20) == 0) goto code_r0x00296430;\nLAB_00296398:\n          param_2[2] = (long)(pbVar18 + 1);\n        }\n        uVar16 = 0xffffffff;\n        pbVar3 = param_9;\n      }" ({ "{") (expression_statement "param_9 = pbVar3;" (assignment_expression "param_9 = pbVar3" (identifier "param_9") (= "=") (identifier "pbVar3")) (; ";")) (expression_statement "bVar20 = (int)uVar16 == -1;" (assignment_expression "bVar20 = (int)uVar16 == -1" (identifier "bVar20") (= "=") (binary_expression "(int)uVar16 == -1" (cast_expression "(int)uVar16" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar16")) (== "==") (number_literal "-1"))) (; ";")) (expression_statement "bVar15 = bVar20;" (assignment_expression "bVar15 = bVar20" (identifier "bVar15") (= "=") (identifier "bVar20")) (; ";")) (expression_statement "bVar17 = bVar19;" (assignment_expression "bVar17 = bVar19" (identifier "bVar17") (= "=") (identifier "bVar19")) (; ";")) (if_statement "if (param_2 != (long *)0x0 && bVar20) {\n          if ((ulong)param_2[3] <= (ulong)param_2[2]) {\n            iVar10 = (**(code **)(*param_2 + 0x48))(param_2);\n            bVar15 = iVar10 == -1 && (param_2 != (long *)0x0 && bVar20);\n            if (iVar10 == -1) {\n              param_2 = (long *)0x0;\n            }\n            goto LAB_00296353;\n          }\n          bVar15 = false;\n          if (param_4 != (long *)0x0 && bVar19) goto LAB_002963d5;\nLAB_00296362:\n          if (bVar15 == bVar17) goto LAB_00295fe1;\n        }\n        else {\nLAB_00296353:\n          if (param_4 == (long *)0x0 || !bVar19) goto LAB_00296362;\nLAB_002963d5:\n          bVar17 = param_4 != (long *)0x0;\n          if ((ulong)param_4[3] <= (ulong)param_4[2]) {\n            iVar10 = (**(code **)(*param_4 + 0x48))(param_4);\n            if (iVar10 == -1) {\n              param_4 = (long *)0x0;\n            }\n            bVar17 = iVar10 == -1 && (bVar17 && bVar19);\n            goto LAB_00296362;\n          }\n          if (bVar15 == false) goto LAB_00295fe1;\n        }" (if "if") (parenthesized_expression "(param_2 != (long *)0x0 && bVar20)" (( "(") (binary_expression "param_2 != (long *)0x0 && bVar20" (binary_expression "param_2 != (long *)0x0" (identifier "param_2") (!= "!=") (cast_expression "(long *)0x0" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (&& "&&") (identifier "bVar20")) () ")")) (compound_statement "{\n          if ((ulong)param_2[3] <= (ulong)param_2[2]) {\n            iVar10 = (**(code **)(*param_2 + 0x48))(param_2);\n            bVar15 = iVar10 == -1 && (param_2 != (long *)0x0 && bVar20);\n            if (iVar10 == -1) {\n              param_2 = (long *)0x0;\n            }\n            goto LAB_00296353;\n          }\n          bVar15 = false;\n          if (param_4 != (long *)0x0 && bVar19) goto LAB_002963d5;\nLAB_00296362:\n          if (bVar15 == bVar17) goto LAB_00295fe1;\n        }" ({ "{") (if_statement "if ((ulong)param_2[3] <= (ulong)param_2[2]) {\n            iVar10 = (**(code **)(*param_2 + 0x48))(param_2);\n            bVar15 = iVar10 == -1 && (param_2 != (long *)0x0 && bVar20);\n            if (iVar10 == -1) {\n              param_2 = (long *)0x0;\n            }\n            goto LAB_00296353;\n          }" (if "if") (parenthesized_expression "((ulong)param_2[3] <= (ulong)param_2[2])" (( "(") (binary_expression "(ulong)param_2[3] <= (ulong)param_2[2]" (cast_expression "(ulong)param_2[3]" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (subscript_expression "param_2[3]" (identifier "param_2") ([ "[") (number_literal "3") (] "]"))) (<= "<=") (cast_expression "(ulong)param_2[2]" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (subscript_expression "param_2[2]" (identifier "param_2") ([ "[") (number_literal "2") (] "]")))) () ")")) (compound_statement "{\n            iVar10 = (**(code **)(*param_2 + 0x48))(param_2);\n            bVar15 = iVar10 == -1 && (param_2 != (long *)0x0 && bVar20);\n            if (iVar10 == -1) {\n              param_2 = (long *)0x0;\n            }\n            goto LAB_00296353;\n          }" ({ "{") (expression_statement "iVar10 = (**(code **)(*param_2 + 0x48))(param_2);" (assignment_expression "iVar10 = (**(code **)(*param_2 + 0x48))(param_2)" (identifier "iVar10") (= "=") (call_expression "(**(code **)(*param_2 + 0x48))(param_2)" (parenthesized_expression "(**(code **)(*param_2 + 0x48))" (( "(") (pointer_expression "**(code **)(*param_2 + 0x48)" (* "*") (pointer_expression "*(code **)(*param_2 + 0x48)" (* "*") (cast_expression "(code **)(*param_2 + 0x48)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*param_2 + 0x48)" (( "(") (binary_expression "*param_2 + 0x48" (pointer_expression "*param_2" (* "*") (identifier "param_2")) (+ "+") (number_literal "0x48")) () ")"))))) () ")")) (argument_list "(param_2)" (( "(") (identifier "param_2") () ")")))) (; ";")) (expression_statement "bVar15 = iVar10 == -1 && (param_2 != (long *)0x0 && bVar20);" (assignment_expression "bVar15 = iVar10 == -1 && (param_2 != (long *)0x0 && bVar20)" (identifier "bVar15") (= "=") (binary_expression "iVar10 == -1 && (param_2 != (long *)0x0 && bVar20)" (binary_expression "iVar10 == -1" (identifier "iVar10") (== "==") (number_literal "-1")) (&& "&&") (parenthesized_expression "(param_2 != (long *)0x0 && bVar20)" (( "(") (binary_expression "param_2 != (long *)0x0 && bVar20" (binary_expression "param_2 != (long *)0x0" (identifier "param_2") (!= "!=") (cast_expression "(long *)0x0" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (&& "&&") (identifier "bVar20")) () ")")))) (; ";")) (if_statement "if (iVar10 == -1) {\n              param_2 = (long *)0x0;\n            }" (if "if") (parenthesized_expression "(iVar10 == -1)" (( "(") (binary_expression "iVar10 == -1" (identifier "iVar10") (== "==") (number_literal "-1")) () ")")) (compound_statement "{\n              param_2 = (long *)0x0;\n            }" ({ "{") (expression_statement "param_2 = (long *)0x0;" (assignment_expression "param_2 = (long *)0x0" (identifier "param_2") (= "=") (cast_expression "(long *)0x0" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (} "}"))) (goto_statement "goto LAB_00296353;" (goto "goto") (statement_identifier "LAB_00296353") (; ";")) (} "}"))) (expression_statement "bVar15 = false;" (assignment_expression "bVar15 = false" (identifier "bVar15") (= "=") (false "false")) (; ";")) (if_statement "if (param_4 != (long *)0x0 && bVar19) goto LAB_002963d5;" (if "if") (parenthesized_expression "(param_4 != (long *)0x0 && bVar19)" (( "(") (binary_expression "param_4 != (long *)0x0 && bVar19" (binary_expression "param_4 != (long *)0x0" (identifier "param_4") (!= "!=") (cast_expression "(long *)0x0" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (&& "&&") (identifier "bVar19")) () ")")) (goto_statement "goto LAB_002963d5;" (goto "goto") (statement_identifier "LAB_002963d5") (; ";"))) (labeled_statement "LAB_00296362:\n          if (bVar15 == bVar17) goto LAB_00295fe1;" (statement_identifier "LAB_00296362") (: ":") (if_statement "if (bVar15 == bVar17) goto LAB_00295fe1;" (if "if") (parenthesized_expression "(bVar15 == bVar17)" (( "(") (binary_expression "bVar15 == bVar17" (identifier "bVar15") (== "==") (identifier "bVar17")) () ")")) (goto_statement "goto LAB_00295fe1;" (goto "goto") (statement_identifier "LAB_00295fe1") (; ";")))) (} "}")) (else_clause "else {\nLAB_00296353:\n          if (param_4 == (long *)0x0 || !bVar19) goto LAB_00296362;\nLAB_002963d5:\n          bVar17 = param_4 != (long *)0x0;\n          if ((ulong)param_4[3] <= (ulong)param_4[2]) {\n            iVar10 = (**(code **)(*param_4 + 0x48))(param_4);\n            if (iVar10 == -1) {\n              param_4 = (long *)0x0;\n            }\n            bVar17 = iVar10 == -1 && (bVar17 && bVar19);\n            goto LAB_00296362;\n          }\n          if (bVar15 == false) goto LAB_00295fe1;\n        }" (else "else") (compound_statement "{\nLAB_00296353:\n          if (param_4 == (long *)0x0 || !bVar19) goto LAB_00296362;\nLAB_002963d5:\n          bVar17 = param_4 != (long *)0x0;\n          if ((ulong)param_4[3] <= (ulong)param_4[2]) {\n            iVar10 = (**(code **)(*param_4 + 0x48))(param_4);\n            if (iVar10 == -1) {\n              param_4 = (long *)0x0;\n            }\n            bVar17 = iVar10 == -1 && (bVar17 && bVar19);\n            goto LAB_00296362;\n          }\n          if (bVar15 == false) goto LAB_00295fe1;\n        }" ({ "{") (labeled_statement "LAB_00296353:\n          if (param_4 == (long *)0x0 || !bVar19) goto LAB_00296362;" (statement_identifier "LAB_00296353") (: ":") (if_statement "if (param_4 == (long *)0x0 || !bVar19) goto LAB_00296362;" (if "if") (parenthesized_expression "(param_4 == (long *)0x0 || !bVar19)" (( "(") (binary_expression "param_4 == (long *)0x0 || !bVar19" (binary_expression "param_4 == (long *)0x0" (identifier "param_4") (== "==") (cast_expression "(long *)0x0" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (|| "||") (unary_expression "!bVar19" (! "!") (identifier "bVar19"))) () ")")) (goto_statement "goto LAB_00296362;" (goto "goto") (statement_identifier "LAB_00296362") (; ";")))) (labeled_statement "LAB_002963d5:\n          bVar17 = param_4 != (long *)0x0;" (statement_identifier "LAB_002963d5") (: ":") (expression_statement "bVar17 = param_4 != (long *)0x0;" (assignment_expression "bVar17 = param_4 != (long *)0x0" (identifier "bVar17") (= "=") (binary_expression "param_4 != (long *)0x0" (identifier "param_4") (!= "!=") (cast_expression "(long *)0x0" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0")))) (; ";"))) (if_statement "if ((ulong)param_4[3] <= (ulong)param_4[2]) {\n            iVar10 = (**(code **)(*param_4 + 0x48))(param_4);\n            if (iVar10 == -1) {\n              param_4 = (long *)0x0;\n            }\n            bVar17 = iVar10 == -1 && (bVar17 && bVar19);\n            goto LAB_00296362;\n          }" (if "if") (parenthesized_expression "((ulong)param_4[3] <= (ulong)param_4[2])" (( "(") (binary_expression "(ulong)param_4[3] <= (ulong)param_4[2]" (cast_expression "(ulong)param_4[3]" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (subscript_expression "param_4[3]" (identifier "param_4") ([ "[") (number_literal "3") (] "]"))) (<= "<=") (cast_expression "(ulong)param_4[2]" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (subscript_expression "param_4[2]" (identifier "param_4") ([ "[") (number_literal "2") (] "]")))) () ")")) (compound_statement "{\n            iVar10 = (**(code **)(*param_4 + 0x48))(param_4);\n            if (iVar10 == -1) {\n              param_4 = (long *)0x0;\n            }\n            bVar17 = iVar10 == -1 && (bVar17 && bVar19);\n            goto LAB_00296362;\n          }" ({ "{") (expression_statement "iVar10 = (**(code **)(*param_4 + 0x48))(param_4);" (assignment_expression "iVar10 = (**(code **)(*param_4 + 0x48))(param_4)" (identifier "iVar10") (= "=") (call_expression "(**(code **)(*param_4 + 0x48))(param_4)" (parenthesized_expression "(**(code **)(*param_4 + 0x48))" (( "(") (pointer_expression "**(code **)(*param_4 + 0x48)" (* "*") (pointer_expression "*(code **)(*param_4 + 0x48)" (* "*") (cast_expression "(code **)(*param_4 + 0x48)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*param_4 + 0x48)" (( "(") (binary_expression "*param_4 + 0x48" (pointer_expression "*param_4" (* "*") (identifier "param_4")) (+ "+") (number_literal "0x48")) () ")"))))) () ")")) (argument_list "(param_4)" (( "(") (identifier "param_4") () ")")))) (; ";")) (if_statement "if (iVar10 == -1) {\n              param_4 = (long *)0x0;\n            }" (if "if") (parenthesized_expression "(iVar10 == -1)" (( "(") (binary_expression "iVar10 == -1" (identifier "iVar10") (== "==") (number_literal "-1")) () ")")) (compound_statement "{\n              param_4 = (long *)0x0;\n            }" ({ "{") (expression_statement "param_4 = (long *)0x0;" (assignment_expression "param_4 = (long *)0x0" (identifier "param_4") (= "=") (cast_expression "(long *)0x0" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (} "}"))) (expression_statement "bVar17 = iVar10 == -1 && (bVar17 && bVar19);" (assignment_expression "bVar17 = iVar10 == -1 && (bVar17 && bVar19)" (identifier "bVar17") (= "=") (binary_expression "iVar10 == -1 && (bVar17 && bVar19)" (binary_expression "iVar10 == -1" (identifier "iVar10") (== "==") (number_literal "-1")) (&& "&&") (parenthesized_expression "(bVar17 && bVar19)" (( "(") (binary_expression "bVar17 && bVar19" (identifier "bVar17") (&& "&&") (identifier "bVar19")) () ")")))) (; ";")) (goto_statement "goto LAB_00296362;" (goto "goto") (statement_identifier "LAB_00296362") (; ";")) (} "}"))) (if_statement "if (bVar15 == false) goto LAB_00295fe1;" (if "if") (parenthesized_expression "(bVar15 == false)" (( "(") (binary_expression "bVar15 == false" (identifier "bVar15") (== "==") (false "false")) () ")")) (goto_statement "goto LAB_00295fe1;" (goto "goto") (statement_identifier "LAB_00295fe1") (; ";"))) (} "}")))) (expression_statement "uVar13 = uVar16;" (assignment_expression "uVar13 = uVar16" (identifier "uVar13") (= "=") (identifier "uVar16")) (; ";")) (if_statement "if ((param_2 == (long *)0x0) || (!bVar20)) {\nLAB_0029637c:\n          if ((*(byte *)(plVar11[6] + 1 + (uVar13 & 0xff) * 2) & 0x20) == 0) goto LAB_00295fe1;\n          pbVar18 = (byte *)param_2[2];\n          if (pbVar18 < (byte *)param_2[3]) goto LAB_00296398;\n          (**(code **)(*param_2 + 0x50))(param_2);\n        }\n        else {\n          pbVar18 = (byte *)param_2[2];\n          if ((byte *)param_2[3] <= pbVar18) {\n            uVar13 = (**(code **)(*param_2 + 0x48))(param_2);\n            if ((int)uVar13 == -1) {\n              param_2 = (long *)0x0;\n            }\n            goto LAB_0029637c;\n          }\n          if ((*(byte *)(plVar11[6] + 1 + (ulong)*pbVar18 * 2) & 0x20) == 0) goto code_r0x00296430;\nLAB_00296398:\n          param_2[2] = (long)(pbVar18 + 1);\n        }" (if "if") (parenthesized_expression "((param_2 == (long *)0x0) || (!bVar20))" (( "(") (binary_expression "(param_2 == (long *)0x0) || (!bVar20)" (parenthesized_expression "(param_2 == (long *)0x0)" (( "(") (binary_expression "param_2 == (long *)0x0" (identifier "param_2") (== "==") (cast_expression "(long *)0x0" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (|| "||") (parenthesized_expression "(!bVar20)" (( "(") (unary_expression "!bVar20" (! "!") (identifier "bVar20")) () ")"))) () ")")) (compound_statement "{\nLAB_0029637c:\n          if ((*(byte *)(plVar11[6] + 1 + (uVar13 & 0xff) * 2) & 0x20) == 0) goto LAB_00295fe1;\n          pbVar18 = (byte *)param_2[2];\n          if (pbVar18 < (byte *)param_2[3]) goto LAB_00296398;\n          (**(code **)(*param_2 + 0x50))(param_2);\n        }" ({ "{") (labeled_statement "LAB_0029637c:\n          if ((*(byte *)(plVar11[6] + 1 + (uVar13 & 0xff) * 2) & 0x20) == 0) goto LAB_00295fe1;" (statement_identifier "LAB_0029637c") (: ":") (if_statement "if ((*(byte *)(plVar11[6] + 1 + (uVar13 & 0xff) * 2) & 0x20) == 0) goto LAB_00295fe1;" (if "if") (parenthesized_expression "((*(byte *)(plVar11[6] + 1 + (uVar13 & 0xff) * 2) & 0x20) == 0)" (( "(") (binary_expression "(*(byte *)(plVar11[6] + 1 + (uVar13 & 0xff) * 2) & 0x20) == 0" (parenthesized_expression "(*(byte *)(plVar11[6] + 1 + (uVar13 & 0xff) * 2) & 0x20)" (( "(") (binary_expression "*(byte *)(plVar11[6] + 1 + (uVar13 & 0xff) * 2) & 0x20" (pointer_expression "*(byte *)(plVar11[6] + 1 + (uVar13 & 0xff) * 2)" (* "*") (cast_expression "(byte *)(plVar11[6] + 1 + (uVar13 & 0xff) * 2)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(plVar11[6] + 1 + (uVar13 & 0xff) * 2)" (( "(") (binary_expression "plVar11[6] + 1 + (uVar13 & 0xff) * 2" (binary_expression "plVar11[6] + 1" (subscript_expression "plVar11[6]" (identifier "plVar11") ([ "[") (number_literal "6") (] "]")) (+ "+") (number_literal "1")) (+ "+") (binary_expression "(uVar13 & 0xff) * 2" (parenthesized_expression "(uVar13 & 0xff)" (( "(") (binary_expression "uVar13 & 0xff" (identifier "uVar13") (& "&") (number_literal "0xff")) () ")")) (* "*") (number_literal "2"))) () ")")))) (& "&") (number_literal "0x20")) () ")")) (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_00295fe1;" (goto "goto") (statement_identifier "LAB_00295fe1") (; ";")))) (expression_statement "pbVar18 = (byte *)param_2[2];" (assignment_expression "pbVar18 = (byte *)param_2[2]" (identifier "pbVar18") (= "=") (cast_expression "(byte *)param_2[2]" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_2[2]" (identifier "param_2") ([ "[") (number_literal "2") (] "]")))) (; ";")) (if_statement "if (pbVar18 < (byte *)param_2[3]) goto LAB_00296398;" (if "if") (parenthesized_expression "(pbVar18 < (byte *)param_2[3])" (( "(") (binary_expression "pbVar18 < (byte *)param_2[3]" (identifier "pbVar18") (< "<") (cast_expression "(byte *)param_2[3]" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_2[3]" (identifier "param_2") ([ "[") (number_literal "3") (] "]")))) () ")")) (goto_statement "goto LAB_00296398;" (goto "goto") (statement_identifier "LAB_00296398") (; ";"))) (expression_statement "(**(code **)(*param_2 + 0x50))(param_2);" (call_expression "(**(code **)(*param_2 + 0x50))(param_2)" (parenthesized_expression "(**(code **)(*param_2 + 0x50))" (( "(") (pointer_expression "**(code **)(*param_2 + 0x50)" (* "*") (pointer_expression "*(code **)(*param_2 + 0x50)" (* "*") (cast_expression "(code **)(*param_2 + 0x50)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*param_2 + 0x50)" (( "(") (binary_expression "*param_2 + 0x50" (pointer_expression "*param_2" (* "*") (identifier "param_2")) (+ "+") (number_literal "0x50")) () ")"))))) () ")")) (argument_list "(param_2)" (( "(") (identifier "param_2") () ")"))) (; ";")) (} "}")) (else_clause "else {\n          pbVar18 = (byte *)param_2[2];\n          if ((byte *)param_2[3] <= pbVar18) {\n            uVar13 = (**(code **)(*param_2 + 0x48))(param_2);\n            if ((int)uVar13 == -1) {\n              param_2 = (long *)0x0;\n            }\n            goto LAB_0029637c;\n          }\n          if ((*(byte *)(plVar11[6] + 1 + (ulong)*pbVar18 * 2) & 0x20) == 0) goto code_r0x00296430;\nLAB_00296398:\n          param_2[2] = (long)(pbVar18 + 1);\n        }" (else "else") (compound_statement "{\n          pbVar18 = (byte *)param_2[2];\n          if ((byte *)param_2[3] <= pbVar18) {\n            uVar13 = (**(code **)(*param_2 + 0x48))(param_2);\n            if ((int)uVar13 == -1) {\n              param_2 = (long *)0x0;\n            }\n            goto LAB_0029637c;\n          }\n          if ((*(byte *)(plVar11[6] + 1 + (ulong)*pbVar18 * 2) & 0x20) == 0) goto code_r0x00296430;\nLAB_00296398:\n          param_2[2] = (long)(pbVar18 + 1);\n        }" ({ "{") (expression_statement "pbVar18 = (byte *)param_2[2];" (assignment_expression "pbVar18 = (byte *)param_2[2]" (identifier "pbVar18") (= "=") (cast_expression "(byte *)param_2[2]" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_2[2]" (identifier "param_2") ([ "[") (number_literal "2") (] "]")))) (; ";")) (if_statement "if ((byte *)param_2[3] <= pbVar18) {\n            uVar13 = (**(code **)(*param_2 + 0x48))(param_2);\n            if ((int)uVar13 == -1) {\n              param_2 = (long *)0x0;\n            }\n            goto LAB_0029637c;\n          }" (if "if") (parenthesized_expression "((byte *)param_2[3] <= pbVar18)" (( "(") (binary_expression "(byte *)param_2[3] <= pbVar18" (cast_expression "(byte *)param_2[3]" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_2[3]" (identifier "param_2") ([ "[") (number_literal "3") (] "]"))) (<= "<=") (identifier "pbVar18")) () ")")) (compound_statement "{\n            uVar13 = (**(code **)(*param_2 + 0x48))(param_2);\n            if ((int)uVar13 == -1) {\n              param_2 = (long *)0x0;\n            }\n            goto LAB_0029637c;\n          }" ({ "{") (expression_statement "uVar13 = (**(code **)(*param_2 + 0x48))(param_2);" (assignment_expression "uVar13 = (**(code **)(*param_2 + 0x48))(param_2)" (identifier "uVar13") (= "=") (call_expression "(**(code **)(*param_2 + 0x48))(param_2)" (parenthesized_expression "(**(code **)(*param_2 + 0x48))" (( "(") (pointer_expression "**(code **)(*param_2 + 0x48)" (* "*") (pointer_expression "*(code **)(*param_2 + 0x48)" (* "*") (cast_expression "(code **)(*param_2 + 0x48)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*param_2 + 0x48)" (( "(") (binary_expression "*param_2 + 0x48" (pointer_expression "*param_2" (* "*") (identifier "param_2")) (+ "+") (number_literal "0x48")) () ")"))))) () ")")) (argument_list "(param_2)" (( "(") (identifier "param_2") () ")")))) (; ";")) (if_statement "if ((int)uVar13 == -1) {\n              param_2 = (long *)0x0;\n            }" (if "if") (parenthesized_expression "((int)uVar13 == -1)" (( "(") (binary_expression "(int)uVar13 == -1" (cast_expression "(int)uVar13" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar13")) (== "==") (number_literal "-1")) () ")")) (compound_statement "{\n              param_2 = (long *)0x0;\n            }" ({ "{") (expression_statement "param_2 = (long *)0x0;" (assignment_expression "param_2 = (long *)0x0" (identifier "param_2") (= "=") (cast_expression "(long *)0x0" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (} "}"))) (goto_statement "goto LAB_0029637c;" (goto "goto") (statement_identifier "LAB_0029637c") (; ";")) (} "}"))) (if_statement "if ((*(byte *)(plVar11[6] + 1 + (ulong)*pbVar18 * 2) & 0x20) == 0) goto code_r0x00296430;" (if "if") (parenthesized_expression "((*(byte *)(plVar11[6] + 1 + (ulong)*pbVar18 * 2) & 0x20) == 0)" (( "(") (binary_expression "(*(byte *)(plVar11[6] + 1 + (ulong)*pbVar18 * 2) & 0x20) == 0" (parenthesized_expression "(*(byte *)(plVar11[6] + 1 + (ulong)*pbVar18 * 2) & 0x20)" (( "(") (binary_expression "*(byte *)(plVar11[6] + 1 + (ulong)*pbVar18 * 2) & 0x20" (pointer_expression "*(byte *)(plVar11[6] + 1 + (ulong)*pbVar18 * 2)" (* "*") (cast_expression "(byte *)(plVar11[6] + 1 + (ulong)*pbVar18 * 2)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(plVar11[6] + 1 + (ulong)*pbVar18 * 2)" (( "(") (binary_expression "plVar11[6] + 1 + (ulong)*pbVar18 * 2" (binary_expression "plVar11[6] + 1" (subscript_expression "plVar11[6]" (identifier "plVar11") ([ "[") (number_literal "6") (] "]")) (+ "+") (number_literal "1")) (+ "+") (binary_expression "(ulong)*pbVar18 * 2" (binary_expression "(ulong)*pbVar18" (parenthesized_expression "(ulong)" (( "(") (identifier "ulong") () ")")) (* "*") (identifier "pbVar18")) (* "*") (number_literal "2"))) () ")")))) (& "&") (number_literal "0x20")) () ")")) (== "==") (number_literal "0")) () ")")) (goto_statement "goto code_r0x00296430;" (goto "goto") (statement_identifier "code_r0x00296430") (; ";"))) (labeled_statement "LAB_00296398:\n          param_2[2] = (long)(pbVar18 + 1);" (statement_identifier "LAB_00296398") (: ":") (expression_statement "param_2[2] = (long)(pbVar18 + 1);" (assignment_expression "param_2[2] = (long)(pbVar18 + 1)" (subscript_expression "param_2[2]" (identifier "param_2") ([ "[") (number_literal "2") (] "]")) (= "=") (cast_expression "(long)(pbVar18 + 1)" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (parenthesized_expression "(pbVar18 + 1)" (( "(") (binary_expression "pbVar18 + 1" (identifier "pbVar18") (+ "+") (number_literal "1")) () ")")))) (; ";"))) (} "}")))) (expression_statement "uVar16 = 0xffffffff;" (assignment_expression "uVar16 = 0xffffffff" (identifier "uVar16") (= "=") (number_literal "0xffffffff")) (; ";")) (expression_statement "pbVar3 = param_9;" (assignment_expression "pbVar3 = param_9" (identifier "pbVar3") (= "=") (identifier "param_9")) (; ";")) (} "}")) (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (; ";")) (} "}"))) (expression_statement "cVar6 = (char)uVar16;" (assignment_expression "cVar6 = (char)uVar16" (identifier "cVar6") (= "=") (cast_expression "(char)uVar16" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (identifier "uVar16"))) (; ";")) (expression_statement "cVar4 = cVar6;" (assignment_expression "cVar4 = cVar6" (identifier "cVar4") (= "=") (identifier "cVar6")) (; ";")) (if_statement "if ((param_2 != (long *)0x0) && (bVar20)) {\n      if ((char *)param_2[2] < (char *)param_2[3]) {\n        cVar4 = *(char *)param_2[2];\n      }\n      else {\n        iVar10 = (**(code **)(*param_2 + 0x48))(param_2);\n        cVar4 = -1;\n        if (iVar10 == -1) {\n          param_2 = (long *)0x0;\n        }\n        else {\n          cVar4 = (char)iVar10;\n        }\n      }\n    }" (if "if") (parenthesized_expression "((param_2 != (long *)0x0) && (bVar20))" (( "(") (binary_expression "(param_2 != (long *)0x0) && (bVar20)" (parenthesized_expression "(param_2 != (long *)0x0)" (( "(") (binary_expression "param_2 != (long *)0x0" (identifier "param_2") (!= "!=") (cast_expression "(long *)0x0" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (&& "&&") (parenthesized_expression "(bVar20)" (( "(") (identifier "bVar20") () ")"))) () ")")) (compound_statement "{\n      if ((char *)param_2[2] < (char *)param_2[3]) {\n        cVar4 = *(char *)param_2[2];\n      }\n      else {\n        iVar10 = (**(code **)(*param_2 + 0x48))(param_2);\n        cVar4 = -1;\n        if (iVar10 == -1) {\n          param_2 = (long *)0x0;\n        }\n        else {\n          cVar4 = (char)iVar10;\n        }\n      }\n    }" ({ "{") (if_statement "if ((char *)param_2[2] < (char *)param_2[3]) {\n        cVar4 = *(char *)param_2[2];\n      }\n      else {\n        iVar10 = (**(code **)(*param_2 + 0x48))(param_2);\n        cVar4 = -1;\n        if (iVar10 == -1) {\n          param_2 = (long *)0x0;\n        }\n        else {\n          cVar4 = (char)iVar10;\n        }\n      }" (if "if") (parenthesized_expression "((char *)param_2[2] < (char *)param_2[3])" (( "(") (binary_expression "(char *)param_2[2] < (char *)param_2[3]" (cast_expression "(char *)param_2[2]" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_2[2]" (identifier "param_2") ([ "[") (number_literal "2") (] "]"))) (< "<") (cast_expression "(char *)param_2[3]" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_2[3]" (identifier "param_2") ([ "[") (number_literal "3") (] "]")))) () ")")) (compound_statement "{\n        cVar4 = *(char *)param_2[2];\n      }" ({ "{") (expression_statement "cVar4 = *(char *)param_2[2];" (assignment_expression "cVar4 = *(char *)param_2[2]" (identifier "cVar4") (= "=") (pointer_expression "*(char *)param_2[2]" (* "*") (cast_expression "(char *)param_2[2]" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_2[2]" (identifier "param_2") ([ "[") (number_literal "2") (] "]"))))) (; ";")) (} "}")) (else_clause "else {\n        iVar10 = (**(code **)(*param_2 + 0x48))(param_2);\n        cVar4 = -1;\n        if (iVar10 == -1) {\n          param_2 = (long *)0x0;\n        }\n        else {\n          cVar4 = (char)iVar10;\n        }\n      }" (else "else") (compound_statement "{\n        iVar10 = (**(code **)(*param_2 + 0x48))(param_2);\n        cVar4 = -1;\n        if (iVar10 == -1) {\n          param_2 = (long *)0x0;\n        }\n        else {\n          cVar4 = (char)iVar10;\n        }\n      }" ({ "{") (expression_statement "iVar10 = (**(code **)(*param_2 + 0x48))(param_2);" (assignment_expression "iVar10 = (**(code **)(*param_2 + 0x48))(param_2)" (identifier "iVar10") (= "=") (call_expression "(**(code **)(*param_2 + 0x48))(param_2)" (parenthesized_expression "(**(code **)(*param_2 + 0x48))" (( "(") (pointer_expression "**(code **)(*param_2 + 0x48)" (* "*") (pointer_expression "*(code **)(*param_2 + 0x48)" (* "*") (cast_expression "(code **)(*param_2 + 0x48)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*param_2 + 0x48)" (( "(") (binary_expression "*param_2 + 0x48" (pointer_expression "*param_2" (* "*") (identifier "param_2")) (+ "+") (number_literal "0x48")) () ")"))))) () ")")) (argument_list "(param_2)" (( "(") (identifier "param_2") () ")")))) (; ";")) (expression_statement "cVar4 = -1;" (assignment_expression "cVar4 = -1" (identifier "cVar4") (= "=") (number_literal "-1")) (; ";")) (if_statement "if (iVar10 == -1) {\n          param_2 = (long *)0x0;\n        }\n        else {\n          cVar4 = (char)iVar10;\n        }" (if "if") (parenthesized_expression "(iVar10 == -1)" (( "(") (binary_expression "iVar10 == -1" (identifier "iVar10") (== "==") (number_literal "-1")) () ")")) (compound_statement "{\n          param_2 = (long *)0x0;\n        }" ({ "{") (expression_statement "param_2 = (long *)0x0;" (assignment_expression "param_2 = (long *)0x0" (identifier "param_2") (= "=") (cast_expression "(long *)0x0" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (} "}")) (else_clause "else {\n          cVar4 = (char)iVar10;\n        }" (else "else") (compound_statement "{\n          cVar4 = (char)iVar10;\n        }" ({ "{") (expression_statement "cVar4 = (char)iVar10;" (assignment_expression "cVar4 = (char)iVar10" (identifier "cVar4") (= "=") (cast_expression "(char)iVar10" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (identifier "iVar10"))) (; ";")) (} "}")))) (} "}")))) (} "}"))) (expression_statement "cVar4 = (**(code **)(*plVar11 + 0x20))(plVar11,(int)cVar4);" (assignment_expression "cVar4 = (**(code **)(*plVar11 + 0x20))(plVar11,(int)cVar4)" (identifier "cVar4") (= "=") (call_expression "(**(code **)(*plVar11 + 0x20))(plVar11,(int)cVar4)" (parenthesized_expression "(**(code **)(*plVar11 + 0x20))" (( "(") (pointer_expression "**(code **)(*plVar11 + 0x20)" (* "*") (pointer_expression "*(code **)(*plVar11 + 0x20)" (* "*") (cast_expression "(code **)(*plVar11 + 0x20)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*plVar11 + 0x20)" (( "(") (binary_expression "*plVar11 + 0x20" (pointer_expression "*plVar11" (* "*") (identifier "plVar11")) (+ "+") (number_literal "0x20")) () ")"))))) () ")")) (argument_list "(plVar11,(int)cVar4)" (( "(") (identifier "plVar11") (, ",") (cast_expression "(int)cVar4" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "cVar4")) () ")")))) (; ";")) (expression_statement "cVar5 = (**(code **)(*plVar11 + 0x20))(plVar11,(int)(char)*param_9);" (assignment_expression "cVar5 = (**(code **)(*plVar11 + 0x20))(plVar11,(int)(char)*param_9)" (identifier "cVar5") (= "=") (call_expression "(**(code **)(*plVar11 + 0x20))(plVar11,(int)(char)*param_9)" (parenthesized_expression "(**(code **)(*plVar11 + 0x20))" (( "(") (pointer_expression "**(code **)(*plVar11 + 0x20)" (* "*") (pointer_expression "*(code **)(*plVar11 + 0x20)" (* "*") (cast_expression "(code **)(*plVar11 + 0x20)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*plVar11 + 0x20)" (( "(") (binary_expression "*plVar11 + 0x20" (pointer_expression "*plVar11" (* "*") (identifier "plVar11")) (+ "+") (number_literal "0x20")) () ")"))))) () ")")) (argument_list "(plVar11,(int)(char)*param_9)" (( "(") (identifier "plVar11") (, ",") (cast_expression "(int)(char)*param_9" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (cast_expression "(char)*param_9" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (pointer_expression "*param_9" (* "*") (identifier "param_9")))) () ")")))) (; ";")) (if_statement "if (cVar5 != cVar4) {\n      if ((param_2 != (long *)0x0) && (bVar20)) {\n        if ((char *)param_2[2] < (char *)param_2[3]) {\n          cVar6 = *(char *)param_2[2];\n        }\n        else {\n          iVar10 = (**(code **)(*param_2 + 0x48))(param_2);\n          cVar6 = -1;\n          if (iVar10 == -1) {\n            param_2 = (long *)0x0;\n          }\n          else {\n            cVar6 = (char)iVar10;\n          }\n        }\n      }\n      cVar6 = (**(code **)(*plVar11 + 0x10))(plVar11,(int)cVar6);\n      cVar4 = (**(code **)(*plVar11 + 0x10))(plVar11,(int)(char)*param_9);\n      if (cVar4 != cVar6) goto LAB_00296748;\n    }" (if "if") (parenthesized_expression "(cVar5 != cVar4)" (( "(") (binary_expression "cVar5 != cVar4" (identifier "cVar5") (!= "!=") (identifier "cVar4")) () ")")) (compound_statement "{\n      if ((param_2 != (long *)0x0) && (bVar20)) {\n        if ((char *)param_2[2] < (char *)param_2[3]) {\n          cVar6 = *(char *)param_2[2];\n        }\n        else {\n          iVar10 = (**(code **)(*param_2 + 0x48))(param_2);\n          cVar6 = -1;\n          if (iVar10 == -1) {\n            param_2 = (long *)0x0;\n          }\n          else {\n            cVar6 = (char)iVar10;\n          }\n        }\n      }\n      cVar6 = (**(code **)(*plVar11 + 0x10))(plVar11,(int)cVar6);\n      cVar4 = (**(code **)(*plVar11 + 0x10))(plVar11,(int)(char)*param_9);\n      if (cVar4 != cVar6) goto LAB_00296748;\n    }" ({ "{") (if_statement "if ((param_2 != (long *)0x0) && (bVar20)) {\n        if ((char *)param_2[2] < (char *)param_2[3]) {\n          cVar6 = *(char *)param_2[2];\n        }\n        else {\n          iVar10 = (**(code **)(*param_2 + 0x48))(param_2);\n          cVar6 = -1;\n          if (iVar10 == -1) {\n            param_2 = (long *)0x0;\n          }\n          else {\n            cVar6 = (char)iVar10;\n          }\n        }\n      }" (if "if") (parenthesized_expression "((param_2 != (long *)0x0) && (bVar20))" (( "(") (binary_expression "(param_2 != (long *)0x0) && (bVar20)" (parenthesized_expression "(param_2 != (long *)0x0)" (( "(") (binary_expression "param_2 != (long *)0x0" (identifier "param_2") (!= "!=") (cast_expression "(long *)0x0" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (&& "&&") (parenthesized_expression "(bVar20)" (( "(") (identifier "bVar20") () ")"))) () ")")) (compound_statement "{\n        if ((char *)param_2[2] < (char *)param_2[3]) {\n          cVar6 = *(char *)param_2[2];\n        }\n        else {\n          iVar10 = (**(code **)(*param_2 + 0x48))(param_2);\n          cVar6 = -1;\n          if (iVar10 == -1) {\n            param_2 = (long *)0x0;\n          }\n          else {\n            cVar6 = (char)iVar10;\n          }\n        }\n      }" ({ "{") (if_statement "if ((char *)param_2[2] < (char *)param_2[3]) {\n          cVar6 = *(char *)param_2[2];\n        }\n        else {\n          iVar10 = (**(code **)(*param_2 + 0x48))(param_2);\n          cVar6 = -1;\n          if (iVar10 == -1) {\n            param_2 = (long *)0x0;\n          }\n          else {\n            cVar6 = (char)iVar10;\n          }\n        }" (if "if") (parenthesized_expression "((char *)param_2[2] < (char *)param_2[3])" (( "(") (binary_expression "(char *)param_2[2] < (char *)param_2[3]" (cast_expression "(char *)param_2[2]" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_2[2]" (identifier "param_2") ([ "[") (number_literal "2") (] "]"))) (< "<") (cast_expression "(char *)param_2[3]" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_2[3]" (identifier "param_2") ([ "[") (number_literal "3") (] "]")))) () ")")) (compound_statement "{\n          cVar6 = *(char *)param_2[2];\n        }" ({ "{") (expression_statement "cVar6 = *(char *)param_2[2];" (assignment_expression "cVar6 = *(char *)param_2[2]" (identifier "cVar6") (= "=") (pointer_expression "*(char *)param_2[2]" (* "*") (cast_expression "(char *)param_2[2]" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_2[2]" (identifier "param_2") ([ "[") (number_literal "2") (] "]"))))) (; ";")) (} "}")) (else_clause "else {\n          iVar10 = (**(code **)(*param_2 + 0x48))(param_2);\n          cVar6 = -1;\n          if (iVar10 == -1) {\n            param_2 = (long *)0x0;\n          }\n          else {\n            cVar6 = (char)iVar10;\n          }\n        }" (else "else") (compound_statement "{\n          iVar10 = (**(code **)(*param_2 + 0x48))(param_2);\n          cVar6 = -1;\n          if (iVar10 == -1) {\n            param_2 = (long *)0x0;\n          }\n          else {\n            cVar6 = (char)iVar10;\n          }\n        }" ({ "{") (expression_statement "iVar10 = (**(code **)(*param_2 + 0x48))(param_2);" (assignment_expression "iVar10 = (**(code **)(*param_2 + 0x48))(param_2)" (identifier "iVar10") (= "=") (call_expression "(**(code **)(*param_2 + 0x48))(param_2)" (parenthesized_expression "(**(code **)(*param_2 + 0x48))" (( "(") (pointer_expression "**(code **)(*param_2 + 0x48)" (* "*") (pointer_expression "*(code **)(*param_2 + 0x48)" (* "*") (cast_expression "(code **)(*param_2 + 0x48)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*param_2 + 0x48)" (( "(") (binary_expression "*param_2 + 0x48" (pointer_expression "*param_2" (* "*") (identifier "param_2")) (+ "+") (number_literal "0x48")) () ")"))))) () ")")) (argument_list "(param_2)" (( "(") (identifier "param_2") () ")")))) (; ";")) (expression_statement "cVar6 = -1;" (assignment_expression "cVar6 = -1" (identifier "cVar6") (= "=") (number_literal "-1")) (; ";")) (if_statement "if (iVar10 == -1) {\n            param_2 = (long *)0x0;\n          }\n          else {\n            cVar6 = (char)iVar10;\n          }" (if "if") (parenthesized_expression "(iVar10 == -1)" (( "(") (binary_expression "iVar10 == -1" (identifier "iVar10") (== "==") (number_literal "-1")) () ")")) (compound_statement "{\n            param_2 = (long *)0x0;\n          }" ({ "{") (expression_statement "param_2 = (long *)0x0;" (assignment_expression "param_2 = (long *)0x0" (identifier "param_2") (= "=") (cast_expression "(long *)0x0" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (} "}")) (else_clause "else {\n            cVar6 = (char)iVar10;\n          }" (else "else") (compound_statement "{\n            cVar6 = (char)iVar10;\n          }" ({ "{") (expression_statement "cVar6 = (char)iVar10;" (assignment_expression "cVar6 = (char)iVar10" (identifier "cVar6") (= "=") (cast_expression "(char)iVar10" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (identifier "iVar10"))) (; ";")) (} "}")))) (} "}")))) (} "}"))) (expression_statement "cVar6 = (**(code **)(*plVar11 + 0x10))(plVar11,(int)cVar6);" (assignment_expression "cVar6 = (**(code **)(*plVar11 + 0x10))(plVar11,(int)cVar6)" (identifier "cVar6") (= "=") (call_expression "(**(code **)(*plVar11 + 0x10))(plVar11,(int)cVar6)" (parenthesized_expression "(**(code **)(*plVar11 + 0x10))" (( "(") (pointer_expression "**(code **)(*plVar11 + 0x10)" (* "*") (pointer_expression "*(code **)(*plVar11 + 0x10)" (* "*") (cast_expression "(code **)(*plVar11 + 0x10)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*plVar11 + 0x10)" (( "(") (binary_expression "*plVar11 + 0x10" (pointer_expression "*plVar11" (* "*") (identifier "plVar11")) (+ "+") (number_literal "0x10")) () ")"))))) () ")")) (argument_list "(plVar11,(int)cVar6)" (( "(") (identifier "plVar11") (, ",") (cast_expression "(int)cVar6" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "cVar6")) () ")")))) (; ";")) (expression_statement "cVar4 = (**(code **)(*plVar11 + 0x10))(plVar11,(int)(char)*param_9);" (assignment_expression "cVar4 = (**(code **)(*plVar11 + 0x10))(plVar11,(int)(char)*param_9)" (identifier "cVar4") (= "=") (call_expression "(**(code **)(*plVar11 + 0x10))(plVar11,(int)(char)*param_9)" (parenthesized_expression "(**(code **)(*plVar11 + 0x10))" (( "(") (pointer_expression "**(code **)(*plVar11 + 0x10)" (* "*") (pointer_expression "*(code **)(*plVar11 + 0x10)" (* "*") (cast_expression "(code **)(*plVar11 + 0x10)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*plVar11 + 0x10)" (( "(") (binary_expression "*plVar11 + 0x10" (pointer_expression "*plVar11" (* "*") (identifier "plVar11")) (+ "+") (number_literal "0x10")) () ")"))))) () ")")) (argument_list "(plVar11,(int)(char)*param_9)" (( "(") (identifier "plVar11") (, ",") (cast_expression "(int)(char)*param_9" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (cast_expression "(char)*param_9" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (pointer_expression "*param_9" (* "*") (identifier "param_9")))) () ")")))) (; ";")) (if_statement "if (cVar4 != cVar6) goto LAB_00296748;" (if "if") (parenthesized_expression "(cVar4 != cVar6)" (( "(") (binary_expression "cVar4 != cVar6" (identifier "cVar4") (!= "!=") (identifier "cVar6")) () ")")) (goto_statement "goto LAB_00296748;" (goto "goto") (statement_identifier "LAB_00296748") (; ";"))) (} "}"))) (if_statement "if ((ulong)param_2[2] < (ulong)param_2[3]) {\n      param_2[2] = param_2[2] + 1;\n    }\n    else {\n      (**(code **)(*param_2 + 0x50))(param_2);\n    }" (if "if") (parenthesized_expression "((ulong)param_2[2] < (ulong)param_2[3])" (( "(") (binary_expression "(ulong)param_2[2] < (ulong)param_2[3]" (cast_expression "(ulong)param_2[2]" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (subscript_expression "param_2[2]" (identifier "param_2") ([ "[") (number_literal "2") (] "]"))) (< "<") (cast_expression "(ulong)param_2[3]" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (subscript_expression "param_2[3]" (identifier "param_2") ([ "[") (number_literal "3") (] "]")))) () ")")) (compound_statement "{\n      param_2[2] = param_2[2] + 1;\n    }" ({ "{") (expression_statement "param_2[2] = param_2[2] + 1;" (assignment_expression "param_2[2] = param_2[2] + 1" (subscript_expression "param_2[2]" (identifier "param_2") ([ "[") (number_literal "2") (] "]")) (= "=") (binary_expression "param_2[2] + 1" (subscript_expression "param_2[2]" (identifier "param_2") ([ "[") (number_literal "2") (] "]")) (+ "+") (number_literal "1"))) (; ";")) (} "}")) (else_clause "else {\n      (**(code **)(*param_2 + 0x50))(param_2);\n    }" (else "else") (compound_statement "{\n      (**(code **)(*param_2 + 0x50))(param_2);\n    }" ({ "{") (expression_statement "(**(code **)(*param_2 + 0x50))(param_2);" (call_expression "(**(code **)(*param_2 + 0x50))(param_2)" (parenthesized_expression "(**(code **)(*param_2 + 0x50))" (( "(") (pointer_expression "**(code **)(*param_2 + 0x50)" (* "*") (pointer_expression "*(code **)(*param_2 + 0x50)" (* "*") (cast_expression "(code **)(*param_2 + 0x50)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*param_2 + 0x50)" (( "(") (binary_expression "*param_2 + 0x50" (pointer_expression "*param_2" (* "*") (identifier "param_2")) (+ "+") (number_literal "0x50")) () ")"))))) () ")")) (argument_list "(param_2)" (( "(") (identifier "param_2") () ")"))) (; ";")) (} "}")))) (expression_statement "param_9 = param_9 + 1;" (assignment_expression "param_9 = param_9 + 1" (identifier "param_9") (= "=") (binary_expression "param_9 + 1" (identifier "param_9") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "uVar16 = 0xffffffff;" (assignment_expression "uVar16 = 0xffffffff" (identifier "uVar16") (= "=") (number_literal "0xffffffff")) (; ";")) (goto_statement "goto LAB_00295fe1;" (goto "goto") (statement_identifier "LAB_00295fe1") (; ";")) (} "}"))) (labeled_statement "LAB_00296071:\n  if (bVar8 != 0x25) goto LAB_00295f20;" (statement_identifier "LAB_00296071") (: ":") (if_statement "if (bVar8 != 0x25) goto LAB_00295f20;" (if "if") (parenthesized_expression "(bVar8 != 0x25)" (( "(") (binary_expression "bVar8 != 0x25" (identifier "bVar8") (!= "!=") (number_literal "0x25")) () ")")) (goto_statement "goto LAB_00295f20;" (goto "goto") (statement_identifier "LAB_00295f20") (; ";")))) (expression_statement "pbVar18 = param_9 + 1;" (assignment_expression "pbVar18 = param_9 + 1" (identifier "pbVar18") (= "=") (binary_expression "param_9 + 1" (identifier "param_9") (+ "+") (number_literal "1"))) (; ";")) (if_statement "if (param_10 == pbVar18) {\nLAB_00296748:\n    *param_7 = 4;\n  }\n  else {\n    bVar1 = param_9[1];\n    bVar8 = *(byte *)((long)plVar11 + (ulong)bVar1 + 0x139);\n    if (bVar8 == 0) {\n      bVar8 = bVar1;\n      if (*(code **)(*plVar11 + 0x40) != (code *)PTR_FUN_003bdd10) {\n        bVar8 = (**(code **)(*plVar11 + 0x40))(plVar11,(int)(char)bVar1,0);\n      }\n      bVar9 = bVar8;\n      if (bVar8 != 0) {\n        *(byte *)((long)plVar11 + (ulong)bVar1 + 0x139) = bVar8;\n        goto LAB_002960ca;\n      }\nLAB_0029655b:\n      bVar8 = 0;\n    }\n    else {\nLAB_002960ca:\n      if ((bVar8 != 0x45) && (bVar9 = bVar8, bVar8 != 0x4f)) goto LAB_0029655b;\n      pbVar18 = param_9 + 2;\n      if (param_10 == pbVar18) goto LAB_00296748;\n      bVar1 = param_9[2];\n      bVar9 = *(byte *)((long)plVar11 + (ulong)bVar1 + 0x139);\n      if (bVar9 == 0) {\n        bVar9 = bVar1;\n        if (*(code **)(*plVar11 + 0x40) != (code *)PTR_FUN_003bdd10) {\n          bVar9 = (**(code **)(*plVar11 + 0x40))(plVar11,(int)(char)bVar1,0);\n        }\n        if (bVar9 != 0) {\n          *(byte *)((long)plVar11 + (ulong)bVar1 + 0x139) = bVar9;\n        }\n      }\n    }\n    local_d0 = local_d0 & 0xffffffff00000000;\n    local_c8 = local_c8 & 0xffffffff00000000 | param_5 & 0xffffffff;\n    local_50 = local_d0 | uVar16;\n    local_58 = param_2;\n    local_48 = param_4;\n    local_40 = local_c8;\n    plVar12 = (long *)FUN_00288720(param_6 + 0xd0);\n    *param_7 = 0;\n    if ((char)plVar12[7] == '\0') {\n      FUN_002b5b80(plVar12);\n      uVar7 = 0x25;\n      if (*(code **)(*plVar12 + 0x30) != (code *)PTR_FUN_003bdfd8) {\n        uVar7 = (**(code **)(*plVar12 + 0x30))(plVar12,0x25);\n      }\n    }\n    else {\n      uVar7 = *(undefined1 *)((long)plVar12 + 0x5e);\n    }\n    if (bVar8 == 0) {\n      local_5a = 0;\n      local_5b = bVar9;\n    }\n    else {\n      local_59 = 0;\n      local_5b = bVar8;\n      local_5a = bVar9;\n    }\n    local_5c = uVar7;\n    auVar22 = FUN_0028dbd0(param_1,local_58,local_50,local_48,local_40,param_6,param_7,param_8,\n                           &local_5c);\n    local_58 = auVar22._0_8_;\n    local_50 = CONCAT44(local_50._4_4_,auVar22._8_4_);\n    cVar6 = FUN_0028d360(&local_58,&local_48);\n    if (cVar6 != '\0') {\n      *param_7 = *param_7 | 2;\n    }\n    uVar16 = local_50 & 0xffffffff;\n    param_9 = pbVar18 + 1;\n    param_2 = local_58;\n    if (param_10 != param_9) goto LAB_00295fef;\n  }" (if "if") (parenthesized_expression "(param_10 == pbVar18)" (( "(") (binary_expression "param_10 == pbVar18" (identifier "param_10") (== "==") (identifier "pbVar18")) () ")")) (compound_statement "{\nLAB_00296748:\n    *param_7 = 4;\n  }" ({ "{") (labeled_statement "LAB_00296748:\n    *param_7 = 4;" (statement_identifier "LAB_00296748") (: ":") (expression_statement "*param_7 = 4;" (assignment_expression "*param_7 = 4" (pointer_expression "*param_7" (* "*") (identifier "param_7")) (= "=") (number_literal "4")) (; ";"))) (} "}")) (else_clause "else {\n    bVar1 = param_9[1];\n    bVar8 = *(byte *)((long)plVar11 + (ulong)bVar1 + 0x139);\n    if (bVar8 == 0) {\n      bVar8 = bVar1;\n      if (*(code **)(*plVar11 + 0x40) != (code *)PTR_FUN_003bdd10) {\n        bVar8 = (**(code **)(*plVar11 + 0x40))(plVar11,(int)(char)bVar1,0);\n      }\n      bVar9 = bVar8;\n      if (bVar8 != 0) {\n        *(byte *)((long)plVar11 + (ulong)bVar1 + 0x139) = bVar8;\n        goto LAB_002960ca;\n      }\nLAB_0029655b:\n      bVar8 = 0;\n    }\n    else {\nLAB_002960ca:\n      if ((bVar8 != 0x45) && (bVar9 = bVar8, bVar8 != 0x4f)) goto LAB_0029655b;\n      pbVar18 = param_9 + 2;\n      if (param_10 == pbVar18) goto LAB_00296748;\n      bVar1 = param_9[2];\n      bVar9 = *(byte *)((long)plVar11 + (ulong)bVar1 + 0x139);\n      if (bVar9 == 0) {\n        bVar9 = bVar1;\n        if (*(code **)(*plVar11 + 0x40) != (code *)PTR_FUN_003bdd10) {\n          bVar9 = (**(code **)(*plVar11 + 0x40))(plVar11,(int)(char)bVar1,0);\n        }\n        if (bVar9 != 0) {\n          *(byte *)((long)plVar11 + (ulong)bVar1 + 0x139) = bVar9;\n        }\n      }\n    }\n    local_d0 = local_d0 & 0xffffffff00000000;\n    local_c8 = local_c8 & 0xffffffff00000000 | param_5 & 0xffffffff;\n    local_50 = local_d0 | uVar16;\n    local_58 = param_2;\n    local_48 = param_4;\n    local_40 = local_c8;\n    plVar12 = (long *)FUN_00288720(param_6 + 0xd0);\n    *param_7 = 0;\n    if ((char)plVar12[7] == '\0') {\n      FUN_002b5b80(plVar12);\n      uVar7 = 0x25;\n      if (*(code **)(*plVar12 + 0x30) != (code *)PTR_FUN_003bdfd8) {\n        uVar7 = (**(code **)(*plVar12 + 0x30))(plVar12,0x25);\n      }\n    }\n    else {\n      uVar7 = *(undefined1 *)((long)plVar12 + 0x5e);\n    }\n    if (bVar8 == 0) {\n      local_5a = 0;\n      local_5b = bVar9;\n    }\n    else {\n      local_59 = 0;\n      local_5b = bVar8;\n      local_5a = bVar9;\n    }\n    local_5c = uVar7;\n    auVar22 = FUN_0028dbd0(param_1,local_58,local_50,local_48,local_40,param_6,param_7,param_8,\n                           &local_5c);\n    local_58 = auVar22._0_8_;\n    local_50 = CONCAT44(local_50._4_4_,auVar22._8_4_);\n    cVar6 = FUN_0028d360(&local_58,&local_48);\n    if (cVar6 != '\0') {\n      *param_7 = *param_7 | 2;\n    }\n    uVar16 = local_50 & 0xffffffff;\n    param_9 = pbVar18 + 1;\n    param_2 = local_58;\n    if (param_10 != param_9) goto LAB_00295fef;\n  }" (else "else") (compound_statement "{\n    bVar1 = param_9[1];\n    bVar8 = *(byte *)((long)plVar11 + (ulong)bVar1 + 0x139);\n    if (bVar8 == 0) {\n      bVar8 = bVar1;\n      if (*(code **)(*plVar11 + 0x40) != (code *)PTR_FUN_003bdd10) {\n        bVar8 = (**(code **)(*plVar11 + 0x40))(plVar11,(int)(char)bVar1,0);\n      }\n      bVar9 = bVar8;\n      if (bVar8 != 0) {\n        *(byte *)((long)plVar11 + (ulong)bVar1 + 0x139) = bVar8;\n        goto LAB_002960ca;\n      }\nLAB_0029655b:\n      bVar8 = 0;\n    }\n    else {\nLAB_002960ca:\n      if ((bVar8 != 0x45) && (bVar9 = bVar8, bVar8 != 0x4f)) goto LAB_0029655b;\n      pbVar18 = param_9 + 2;\n      if (param_10 == pbVar18) goto LAB_00296748;\n      bVar1 = param_9[2];\n      bVar9 = *(byte *)((long)plVar11 + (ulong)bVar1 + 0x139);\n      if (bVar9 == 0) {\n        bVar9 = bVar1;\n        if (*(code **)(*plVar11 + 0x40) != (code *)PTR_FUN_003bdd10) {\n          bVar9 = (**(code **)(*plVar11 + 0x40))(plVar11,(int)(char)bVar1,0);\n        }\n        if (bVar9 != 0) {\n          *(byte *)((long)plVar11 + (ulong)bVar1 + 0x139) = bVar9;\n        }\n      }\n    }\n    local_d0 = local_d0 & 0xffffffff00000000;\n    local_c8 = local_c8 & 0xffffffff00000000 | param_5 & 0xffffffff;\n    local_50 = local_d0 | uVar16;\n    local_58 = param_2;\n    local_48 = param_4;\n    local_40 = local_c8;\n    plVar12 = (long *)FUN_00288720(param_6 + 0xd0);\n    *param_7 = 0;\n    if ((char)plVar12[7] == '\0') {\n      FUN_002b5b80(plVar12);\n      uVar7 = 0x25;\n      if (*(code **)(*plVar12 + 0x30) != (code *)PTR_FUN_003bdfd8) {\n        uVar7 = (**(code **)(*plVar12 + 0x30))(plVar12,0x25);\n      }\n    }\n    else {\n      uVar7 = *(undefined1 *)((long)plVar12 + 0x5e);\n    }\n    if (bVar8 == 0) {\n      local_5a = 0;\n      local_5b = bVar9;\n    }\n    else {\n      local_59 = 0;\n      local_5b = bVar8;\n      local_5a = bVar9;\n    }\n    local_5c = uVar7;\n    auVar22 = FUN_0028dbd0(param_1,local_58,local_50,local_48,local_40,param_6,param_7,param_8,\n                           &local_5c);\n    local_58 = auVar22._0_8_;\n    local_50 = CONCAT44(local_50._4_4_,auVar22._8_4_);\n    cVar6 = FUN_0028d360(&local_58,&local_48);\n    if (cVar6 != '\0') {\n      *param_7 = *param_7 | 2;\n    }\n    uVar16 = local_50 & 0xffffffff;\n    param_9 = pbVar18 + 1;\n    param_2 = local_58;\n    if (param_10 != param_9) goto LAB_00295fef;\n  }" ({ "{") (expression_statement "bVar1 = param_9[1];" (assignment_expression "bVar1 = param_9[1]" (identifier "bVar1") (= "=") (subscript_expression "param_9[1]" (identifier "param_9") ([ "[") (number_literal "1") (] "]"))) (; ";")) (expression_statement "bVar8 = *(byte *)((long)plVar11 + (ulong)bVar1 + 0x139);" (assignment_expression "bVar8 = *(byte *)((long)plVar11 + (ulong)bVar1 + 0x139)" (identifier "bVar8") (= "=") (pointer_expression "*(byte *)((long)plVar11 + (ulong)bVar1 + 0x139)" (* "*") (cast_expression "(byte *)((long)plVar11 + (ulong)bVar1 + 0x139)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)plVar11 + (ulong)bVar1 + 0x139)" (( "(") (binary_expression "(long)plVar11 + (ulong)bVar1 + 0x139" (binary_expression "(long)plVar11 + (ulong)bVar1" (cast_expression "(long)plVar11" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "plVar11")) (+ "+") (cast_expression "(ulong)bVar1" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (identifier "bVar1"))) (+ "+") (number_literal "0x139")) () ")"))))) (; ";")) (if_statement "if (bVar8 == 0) {\n      bVar8 = bVar1;\n      if (*(code **)(*plVar11 + 0x40) != (code *)PTR_FUN_003bdd10) {\n        bVar8 = (**(code **)(*plVar11 + 0x40))(plVar11,(int)(char)bVar1,0);\n      }\n      bVar9 = bVar8;\n      if (bVar8 != 0) {\n        *(byte *)((long)plVar11 + (ulong)bVar1 + 0x139) = bVar8;\n        goto LAB_002960ca;\n      }\nLAB_0029655b:\n      bVar8 = 0;\n    }\n    else {\nLAB_002960ca:\n      if ((bVar8 != 0x45) && (bVar9 = bVar8, bVar8 != 0x4f)) goto LAB_0029655b;\n      pbVar18 = param_9 + 2;\n      if (param_10 == pbVar18) goto LAB_00296748;\n      bVar1 = param_9[2];\n      bVar9 = *(byte *)((long)plVar11 + (ulong)bVar1 + 0x139);\n      if (bVar9 == 0) {\n        bVar9 = bVar1;\n        if (*(code **)(*plVar11 + 0x40) != (code *)PTR_FUN_003bdd10) {\n          bVar9 = (**(code **)(*plVar11 + 0x40))(plVar11,(int)(char)bVar1,0);\n        }\n        if (bVar9 != 0) {\n          *(byte *)((long)plVar11 + (ulong)bVar1 + 0x139) = bVar9;\n        }\n      }\n    }" (if "if") (parenthesized_expression "(bVar8 == 0)" (( "(") (binary_expression "bVar8 == 0" (identifier "bVar8") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n      bVar8 = bVar1;\n      if (*(code **)(*plVar11 + 0x40) != (code *)PTR_FUN_003bdd10) {\n        bVar8 = (**(code **)(*plVar11 + 0x40))(plVar11,(int)(char)bVar1,0);\n      }\n      bVar9 = bVar8;\n      if (bVar8 != 0) {\n        *(byte *)((long)plVar11 + (ulong)bVar1 + 0x139) = bVar8;\n        goto LAB_002960ca;\n      }\nLAB_0029655b:\n      bVar8 = 0;\n    }" ({ "{") (expression_statement "bVar8 = bVar1;" (assignment_expression "bVar8 = bVar1" (identifier "bVar8") (= "=") (identifier "bVar1")) (; ";")) (if_statement "if (*(code **)(*plVar11 + 0x40) != (code *)PTR_FUN_003bdd10) {\n        bVar8 = (**(code **)(*plVar11 + 0x40))(plVar11,(int)(char)bVar1,0);\n      }" (if "if") (parenthesized_expression "(*(code **)(*plVar11 + 0x40) != (code *)PTR_FUN_003bdd10)" (( "(") (binary_expression "*(code **)(*plVar11 + 0x40) != (code *)PTR_FUN_003bdd10" (pointer_expression "*(code **)(*plVar11 + 0x40)" (* "*") (cast_expression "(code **)(*plVar11 + 0x40)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*plVar11 + 0x40)" (( "(") (binary_expression "*plVar11 + 0x40" (pointer_expression "*plVar11" (* "*") (identifier "plVar11")) (+ "+") (number_literal "0x40")) () ")")))) (!= "!=") (cast_expression "(code *)PTR_FUN_003bdd10" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_FUN_003bdd10"))) () ")")) (compound_statement "{\n        bVar8 = (**(code **)(*plVar11 + 0x40))(plVar11,(int)(char)bVar1,0);\n      }" ({ "{") (expression_statement "bVar8 = (**(code **)(*plVar11 + 0x40))(plVar11,(int)(char)bVar1,0);" (assignment_expression "bVar8 = (**(code **)(*plVar11 + 0x40))(plVar11,(int)(char)bVar1,0)" (identifier "bVar8") (= "=") (call_expression "(**(code **)(*plVar11 + 0x40))(plVar11,(int)(char)bVar1,0)" (parenthesized_expression "(**(code **)(*plVar11 + 0x40))" (( "(") (pointer_expression "**(code **)(*plVar11 + 0x40)" (* "*") (pointer_expression "*(code **)(*plVar11 + 0x40)" (* "*") (cast_expression "(code **)(*plVar11 + 0x40)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*plVar11 + 0x40)" (( "(") (binary_expression "*plVar11 + 0x40" (pointer_expression "*plVar11" (* "*") (identifier "plVar11")) (+ "+") (number_literal "0x40")) () ")"))))) () ")")) (argument_list "(plVar11,(int)(char)bVar1,0)" (( "(") (identifier "plVar11") (, ",") (cast_expression "(int)(char)bVar1" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (cast_expression "(char)bVar1" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (identifier "bVar1"))) (, ",") (number_literal "0") () ")")))) (; ";")) (} "}"))) (expression_statement "bVar9 = bVar8;" (assignment_expression "bVar9 = bVar8" (identifier "bVar9") (= "=") (identifier "bVar8")) (; ";")) (if_statement "if (bVar8 != 0) {\n        *(byte *)((long)plVar11 + (ulong)bVar1 + 0x139) = bVar8;\n        goto LAB_002960ca;\n      }" (if "if") (parenthesized_expression "(bVar8 != 0)" (( "(") (binary_expression "bVar8 != 0" (identifier "bVar8") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n        *(byte *)((long)plVar11 + (ulong)bVar1 + 0x139) = bVar8;\n        goto LAB_002960ca;\n      }" ({ "{") (expression_statement "*(byte *)((long)plVar11 + (ulong)bVar1 + 0x139) = bVar8;" (assignment_expression "*(byte *)((long)plVar11 + (ulong)bVar1 + 0x139) = bVar8" (pointer_expression "*(byte *)((long)plVar11 + (ulong)bVar1 + 0x139)" (* "*") (cast_expression "(byte *)((long)plVar11 + (ulong)bVar1 + 0x139)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)plVar11 + (ulong)bVar1 + 0x139)" (( "(") (binary_expression "(long)plVar11 + (ulong)bVar1 + 0x139" (binary_expression "(long)plVar11 + (ulong)bVar1" (cast_expression "(long)plVar11" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "plVar11")) (+ "+") (cast_expression "(ulong)bVar1" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (identifier "bVar1"))) (+ "+") (number_literal "0x139")) () ")")))) (= "=") (identifier "bVar8")) (; ";")) (goto_statement "goto LAB_002960ca;" (goto "goto") (statement_identifier "LAB_002960ca") (; ";")) (} "}"))) (labeled_statement "LAB_0029655b:\n      bVar8 = 0;" (statement_identifier "LAB_0029655b") (: ":") (expression_statement "bVar8 = 0;" (assignment_expression "bVar8 = 0" (identifier "bVar8") (= "=") (number_literal "0")) (; ";"))) (} "}")) (else_clause "else {\nLAB_002960ca:\n      if ((bVar8 != 0x45) && (bVar9 = bVar8, bVar8 != 0x4f)) goto LAB_0029655b;\n      pbVar18 = param_9 + 2;\n      if (param_10 == pbVar18) goto LAB_00296748;\n      bVar1 = param_9[2];\n      bVar9 = *(byte *)((long)plVar11 + (ulong)bVar1 + 0x139);\n      if (bVar9 == 0) {\n        bVar9 = bVar1;\n        if (*(code **)(*plVar11 + 0x40) != (code *)PTR_FUN_003bdd10) {\n          bVar9 = (**(code **)(*plVar11 + 0x40))(plVar11,(int)(char)bVar1,0);\n        }\n        if (bVar9 != 0) {\n          *(byte *)((long)plVar11 + (ulong)bVar1 + 0x139) = bVar9;\n        }\n      }\n    }" (else "else") (compound_statement "{\nLAB_002960ca:\n      if ((bVar8 != 0x45) && (bVar9 = bVar8, bVar8 != 0x4f)) goto LAB_0029655b;\n      pbVar18 = param_9 + 2;\n      if (param_10 == pbVar18) goto LAB_00296748;\n      bVar1 = param_9[2];\n      bVar9 = *(byte *)((long)plVar11 + (ulong)bVar1 + 0x139);\n      if (bVar9 == 0) {\n        bVar9 = bVar1;\n        if (*(code **)(*plVar11 + 0x40) != (code *)PTR_FUN_003bdd10) {\n          bVar9 = (**(code **)(*plVar11 + 0x40))(plVar11,(int)(char)bVar1,0);\n        }\n        if (bVar9 != 0) {\n          *(byte *)((long)plVar11 + (ulong)bVar1 + 0x139) = bVar9;\n        }\n      }\n    }" ({ "{") (labeled_statement "LAB_002960ca:\n      if ((bVar8 != 0x45) && (bVar9 = bVar8, bVar8 != 0x4f)) goto LAB_0029655b;" (statement_identifier "LAB_002960ca") (: ":") (if_statement "if ((bVar8 != 0x45) && (bVar9 = bVar8, bVar8 != 0x4f)) goto LAB_0029655b;" (if "if") (parenthesized_expression "((bVar8 != 0x45) && (bVar9 = bVar8, bVar8 != 0x4f))" (( "(") (binary_expression "(bVar8 != 0x45) && (bVar9 = bVar8, bVar8 != 0x4f)" (parenthesized_expression "(bVar8 != 0x45)" (( "(") (binary_expression "bVar8 != 0x45" (identifier "bVar8") (!= "!=") (number_literal "0x45")) () ")")) (&& "&&") (parenthesized_expression "(bVar9 = bVar8, bVar8 != 0x4f)" (( "(") (comma_expression "bVar9 = bVar8, bVar8 != 0x4f" (assignment_expression "bVar9 = bVar8" (identifier "bVar9") (= "=") (identifier "bVar8")) (, ",") (binary_expression "bVar8 != 0x4f" (identifier "bVar8") (!= "!=") (number_literal "0x4f"))) () ")"))) () ")")) (goto_statement "goto LAB_0029655b;" (goto "goto") (statement_identifier "LAB_0029655b") (; ";")))) (expression_statement "pbVar18 = param_9 + 2;" (assignment_expression "pbVar18 = param_9 + 2" (identifier "pbVar18") (= "=") (binary_expression "param_9 + 2" (identifier "param_9") (+ "+") (number_literal "2"))) (; ";")) (if_statement "if (param_10 == pbVar18) goto LAB_00296748;" (if "if") (parenthesized_expression "(param_10 == pbVar18)" (( "(") (binary_expression "param_10 == pbVar18" (identifier "param_10") (== "==") (identifier "pbVar18")) () ")")) (goto_statement "goto LAB_00296748;" (goto "goto") (statement_identifier "LAB_00296748") (; ";"))) (expression_statement "bVar1 = param_9[2];" (assignment_expression "bVar1 = param_9[2]" (identifier "bVar1") (= "=") (subscript_expression "param_9[2]" (identifier "param_9") ([ "[") (number_literal "2") (] "]"))) (; ";")) (expression_statement "bVar9 = *(byte *)((long)plVar11 + (ulong)bVar1 + 0x139);" (assignment_expression "bVar9 = *(byte *)((long)plVar11 + (ulong)bVar1 + 0x139)" (identifier "bVar9") (= "=") (pointer_expression "*(byte *)((long)plVar11 + (ulong)bVar1 + 0x139)" (* "*") (cast_expression "(byte *)((long)plVar11 + (ulong)bVar1 + 0x139)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)plVar11 + (ulong)bVar1 + 0x139)" (( "(") (binary_expression "(long)plVar11 + (ulong)bVar1 + 0x139" (binary_expression "(long)plVar11 + (ulong)bVar1" (cast_expression "(long)plVar11" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "plVar11")) (+ "+") (cast_expression "(ulong)bVar1" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (identifier "bVar1"))) (+ "+") (number_literal "0x139")) () ")"))))) (; ";")) (if_statement "if (bVar9 == 0) {\n        bVar9 = bVar1;\n        if (*(code **)(*plVar11 + 0x40) != (code *)PTR_FUN_003bdd10) {\n          bVar9 = (**(code **)(*plVar11 + 0x40))(plVar11,(int)(char)bVar1,0);\n        }\n        if (bVar9 != 0) {\n          *(byte *)((long)plVar11 + (ulong)bVar1 + 0x139) = bVar9;\n        }\n      }" (if "if") (parenthesized_expression "(bVar9 == 0)" (( "(") (binary_expression "bVar9 == 0" (identifier "bVar9") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n        bVar9 = bVar1;\n        if (*(code **)(*plVar11 + 0x40) != (code *)PTR_FUN_003bdd10) {\n          bVar9 = (**(code **)(*plVar11 + 0x40))(plVar11,(int)(char)bVar1,0);\n        }\n        if (bVar9 != 0) {\n          *(byte *)((long)plVar11 + (ulong)bVar1 + 0x139) = bVar9;\n        }\n      }" ({ "{") (expression_statement "bVar9 = bVar1;" (assignment_expression "bVar9 = bVar1" (identifier "bVar9") (= "=") (identifier "bVar1")) (; ";")) (if_statement "if (*(code **)(*plVar11 + 0x40) != (code *)PTR_FUN_003bdd10) {\n          bVar9 = (**(code **)(*plVar11 + 0x40))(plVar11,(int)(char)bVar1,0);\n        }" (if "if") (parenthesized_expression "(*(code **)(*plVar11 + 0x40) != (code *)PTR_FUN_003bdd10)" (( "(") (binary_expression "*(code **)(*plVar11 + 0x40) != (code *)PTR_FUN_003bdd10" (pointer_expression "*(code **)(*plVar11 + 0x40)" (* "*") (cast_expression "(code **)(*plVar11 + 0x40)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*plVar11 + 0x40)" (( "(") (binary_expression "*plVar11 + 0x40" (pointer_expression "*plVar11" (* "*") (identifier "plVar11")) (+ "+") (number_literal "0x40")) () ")")))) (!= "!=") (cast_expression "(code *)PTR_FUN_003bdd10" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_FUN_003bdd10"))) () ")")) (compound_statement "{\n          bVar9 = (**(code **)(*plVar11 + 0x40))(plVar11,(int)(char)bVar1,0);\n        }" ({ "{") (expression_statement "bVar9 = (**(code **)(*plVar11 + 0x40))(plVar11,(int)(char)bVar1,0);" (assignment_expression "bVar9 = (**(code **)(*plVar11 + 0x40))(plVar11,(int)(char)bVar1,0)" (identifier "bVar9") (= "=") (call_expression "(**(code **)(*plVar11 + 0x40))(plVar11,(int)(char)bVar1,0)" (parenthesized_expression "(**(code **)(*plVar11 + 0x40))" (( "(") (pointer_expression "**(code **)(*plVar11 + 0x40)" (* "*") (pointer_expression "*(code **)(*plVar11 + 0x40)" (* "*") (cast_expression "(code **)(*plVar11 + 0x40)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*plVar11 + 0x40)" (( "(") (binary_expression "*plVar11 + 0x40" (pointer_expression "*plVar11" (* "*") (identifier "plVar11")) (+ "+") (number_literal "0x40")) () ")"))))) () ")")) (argument_list "(plVar11,(int)(char)bVar1,0)" (( "(") (identifier "plVar11") (, ",") (cast_expression "(int)(char)bVar1" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (cast_expression "(char)bVar1" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (identifier "bVar1"))) (, ",") (number_literal "0") () ")")))) (; ";")) (} "}"))) (if_statement "if (bVar9 != 0) {\n          *(byte *)((long)plVar11 + (ulong)bVar1 + 0x139) = bVar9;\n        }" (if "if") (parenthesized_expression "(bVar9 != 0)" (( "(") (binary_expression "bVar9 != 0" (identifier "bVar9") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n          *(byte *)((long)plVar11 + (ulong)bVar1 + 0x139) = bVar9;\n        }" ({ "{") (expression_statement "*(byte *)((long)plVar11 + (ulong)bVar1 + 0x139) = bVar9;" (assignment_expression "*(byte *)((long)plVar11 + (ulong)bVar1 + 0x139) = bVar9" (pointer_expression "*(byte *)((long)plVar11 + (ulong)bVar1 + 0x139)" (* "*") (cast_expression "(byte *)((long)plVar11 + (ulong)bVar1 + 0x139)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)plVar11 + (ulong)bVar1 + 0x139)" (( "(") (binary_expression "(long)plVar11 + (ulong)bVar1 + 0x139" (binary_expression "(long)plVar11 + (ulong)bVar1" (cast_expression "(long)plVar11" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "plVar11")) (+ "+") (cast_expression "(ulong)bVar1" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (identifier "bVar1"))) (+ "+") (number_literal "0x139")) () ")")))) (= "=") (identifier "bVar9")) (; ";")) (} "}"))) (} "}"))) (} "}")))) (expression_statement "local_d0 = local_d0 & 0xffffffff00000000;" (assignment_expression "local_d0 = local_d0 & 0xffffffff00000000" (identifier "local_d0") (= "=") (binary_expression "local_d0 & 0xffffffff00000000" (identifier "local_d0") (& "&") (number_literal "0xffffffff00000000"))) (; ";")) (expression_statement "local_c8 = local_c8 & 0xffffffff00000000 | param_5 & 0xffffffff;" (assignment_expression "local_c8 = local_c8 & 0xffffffff00000000 | param_5 & 0xffffffff" (identifier "local_c8") (= "=") (binary_expression "local_c8 & 0xffffffff00000000 | param_5 & 0xffffffff" (binary_expression "local_c8 & 0xffffffff00000000" (identifier "local_c8") (& "&") (number_literal "0xffffffff00000000")) (| "|") (binary_expression "param_5 & 0xffffffff" (identifier "param_5") (& "&") (number_literal "0xffffffff")))) (; ";")) (expression_statement "local_50 = local_d0 | uVar16;" (assignment_expression "local_50 = local_d0 | uVar16" (identifier "local_50") (= "=") (binary_expression "local_d0 | uVar16" (identifier "local_d0") (| "|") (identifier "uVar16"))) (; ";")) (expression_statement "local_58 = param_2;" (assignment_expression "local_58 = param_2" (identifier "local_58") (= "=") (identifier "param_2")) (; ";")) (expression_statement "local_48 = param_4;" (assignment_expression "local_48 = param_4" (identifier "local_48") (= "=") (identifier "param_4")) (; ";")) (expression_statement "local_40 = local_c8;" (assignment_expression "local_40 = local_c8" (identifier "local_40") (= "=") (identifier "local_c8")) (; ";")) (expression_statement "plVar12 = (long *)FUN_00288720(param_6 + 0xd0);" (assignment_expression "plVar12 = (long *)FUN_00288720(param_6 + 0xd0)" (identifier "plVar12") (= "=") (cast_expression "(long *)FUN_00288720(param_6 + 0xd0)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_00288720(param_6 + 0xd0)" (identifier "FUN_00288720") (argument_list "(param_6 + 0xd0)" (( "(") (binary_expression "param_6 + 0xd0" (identifier "param_6") (+ "+") (number_literal "0xd0")) () ")"))))) (; ";")) (expression_statement "*param_7 = 0;" (assignment_expression "*param_7 = 0" (pointer_expression "*param_7" (* "*") (identifier "param_7")) (= "=") (number_literal "0")) (; ";")) (if_statement "if ((char)plVar12[7] == '\0') {\n      FUN_002b5b80(plVar12);\n      uVar7 = 0x25;\n      if (*(code **)(*plVar12 + 0x30) != (code *)PTR_FUN_003bdfd8) {\n        uVar7 = (**(code **)(*plVar12 + 0x30))(plVar12,0x25);\n      }\n    }\n    else {\n      uVar7 = *(undefined1 *)((long)plVar12 + 0x5e);\n    }" (if "if") (parenthesized_expression "((char)plVar12[7] == '\0')" (( "(") (binary_expression "(char)plVar12[7] == '\0'" (cast_expression "(char)plVar12[7]" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (subscript_expression "plVar12[7]" (identifier "plVar12") ([ "[") (number_literal "7") (] "]"))) (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n      FUN_002b5b80(plVar12);\n      uVar7 = 0x25;\n      if (*(code **)(*plVar12 + 0x30) != (code *)PTR_FUN_003bdfd8) {\n        uVar7 = (**(code **)(*plVar12 + 0x30))(plVar12,0x25);\n      }\n    }" ({ "{") (expression_statement "FUN_002b5b80(plVar12);" (call_expression "FUN_002b5b80(plVar12)" (identifier "FUN_002b5b80") (argument_list "(plVar12)" (( "(") (identifier "plVar12") () ")"))) (; ";")) (expression_statement "uVar7 = 0x25;" (assignment_expression "uVar7 = 0x25" (identifier "uVar7") (= "=") (number_literal "0x25")) (; ";")) (if_statement "if (*(code **)(*plVar12 + 0x30) != (code *)PTR_FUN_003bdfd8) {\n        uVar7 = (**(code **)(*plVar12 + 0x30))(plVar12,0x25);\n      }" (if "if") (parenthesized_expression "(*(code **)(*plVar12 + 0x30) != (code *)PTR_FUN_003bdfd8)" (( "(") (binary_expression "*(code **)(*plVar12 + 0x30) != (code *)PTR_FUN_003bdfd8" (pointer_expression "*(code **)(*plVar12 + 0x30)" (* "*") (cast_expression "(code **)(*plVar12 + 0x30)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*plVar12 + 0x30)" (( "(") (binary_expression "*plVar12 + 0x30" (pointer_expression "*plVar12" (* "*") (identifier "plVar12")) (+ "+") (number_literal "0x30")) () ")")))) (!= "!=") (cast_expression "(code *)PTR_FUN_003bdfd8" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_FUN_003bdfd8"))) () ")")) (compound_statement "{\n        uVar7 = (**(code **)(*plVar12 + 0x30))(plVar12,0x25);\n      }" ({ "{") (expression_statement "uVar7 = (**(code **)(*plVar12 + 0x30))(plVar12,0x25);" (assignment_expression "uVar7 = (**(code **)(*plVar12 + 0x30))(plVar12,0x25)" (identifier "uVar7") (= "=") (call_expression "(**(code **)(*plVar12 + 0x30))(plVar12,0x25)" (parenthesized_expression "(**(code **)(*plVar12 + 0x30))" (( "(") (pointer_expression "**(code **)(*plVar12 + 0x30)" (* "*") (pointer_expression "*(code **)(*plVar12 + 0x30)" (* "*") (cast_expression "(code **)(*plVar12 + 0x30)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*plVar12 + 0x30)" (( "(") (binary_expression "*plVar12 + 0x30" (pointer_expression "*plVar12" (* "*") (identifier "plVar12")) (+ "+") (number_literal "0x30")) () ")"))))) () ")")) (argument_list "(plVar12,0x25)" (( "(") (identifier "plVar12") (, ",") (number_literal "0x25") () ")")))) (; ";")) (} "}"))) (} "}")) (else_clause "else {\n      uVar7 = *(undefined1 *)((long)plVar12 + 0x5e);\n    }" (else "else") (compound_statement "{\n      uVar7 = *(undefined1 *)((long)plVar12 + 0x5e);\n    }" ({ "{") (expression_statement "uVar7 = *(undefined1 *)((long)plVar12 + 0x5e);" (assignment_expression "uVar7 = *(undefined1 *)((long)plVar12 + 0x5e)" (identifier "uVar7") (= "=") (pointer_expression "*(undefined1 *)((long)plVar12 + 0x5e)" (* "*") (cast_expression "(undefined1 *)((long)plVar12 + 0x5e)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)plVar12 + 0x5e)" (( "(") (binary_expression "(long)plVar12 + 0x5e" (cast_expression "(long)plVar12" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "plVar12")) (+ "+") (number_literal "0x5e")) () ")"))))) (; ";")) (} "}")))) (if_statement "if (bVar8 == 0) {\n      local_5a = 0;\n      local_5b = bVar9;\n    }\n    else {\n      local_59 = 0;\n      local_5b = bVar8;\n      local_5a = bVar9;\n    }" (if "if") (parenthesized_expression "(bVar8 == 0)" (( "(") (binary_expression "bVar8 == 0" (identifier "bVar8") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n      local_5a = 0;\n      local_5b = bVar9;\n    }" ({ "{") (expression_statement "local_5a = 0;" (assignment_expression "local_5a = 0" (identifier "local_5a") (= "=") (number_literal "0")) (; ";")) (expression_statement "local_5b = bVar9;" (assignment_expression "local_5b = bVar9" (identifier "local_5b") (= "=") (identifier "bVar9")) (; ";")) (} "}")) (else_clause "else {\n      local_59 = 0;\n      local_5b = bVar8;\n      local_5a = bVar9;\n    }" (else "else") (compound_statement "{\n      local_59 = 0;\n      local_5b = bVar8;\n      local_5a = bVar9;\n    }" ({ "{") (expression_statement "local_59 = 0;" (assignment_expression "local_59 = 0" (identifier "local_59") (= "=") (number_literal "0")) (; ";")) (expression_statement "local_5b = bVar8;" (assignment_expression "local_5b = bVar8" (identifier "local_5b") (= "=") (identifier "bVar8")) (; ";")) (expression_statement "local_5a = bVar9;" (assignment_expression "local_5a = bVar9" (identifier "local_5a") (= "=") (identifier "bVar9")) (; ";")) (} "}")))) (expression_statement "local_5c = uVar7;" (assignment_expression "local_5c = uVar7" (identifier "local_5c") (= "=") (identifier "uVar7")) (; ";")) (expression_statement "auVar22 = FUN_0028dbd0(param_1,local_58,local_50,local_48,local_40,param_6,param_7,param_8,\n                           &local_5c);" (assignment_expression "auVar22 = FUN_0028dbd0(param_1,local_58,local_50,local_48,local_40,param_6,param_7,param_8,\n                           &local_5c)" (identifier "auVar22") (= "=") (call_expression "FUN_0028dbd0(param_1,local_58,local_50,local_48,local_40,param_6,param_7,param_8,\n                           &local_5c)" (identifier "FUN_0028dbd0") (argument_list "(param_1,local_58,local_50,local_48,local_40,param_6,param_7,param_8,\n                           &local_5c)" (( "(") (identifier "param_1") (, ",") (identifier "local_58") (, ",") (identifier "local_50") (, ",") (identifier "local_48") (, ",") (identifier "local_40") (, ",") (identifier "param_6") (, ",") (identifier "param_7") (, ",") (identifier "param_8") (, ",") (pointer_expression "&local_5c" (& "&") (identifier "local_5c")) () ")")))) (; ";")) (expression_statement "local_58 = auVar22._0_8_;" (assignment_expression "local_58 = auVar22._0_8_" (identifier "local_58") (= "=") (field_expression "auVar22._0_8_" (identifier "auVar22") (. ".") (field_identifier "_0_8_"))) (; ";")) (expression_statement "local_50 = CONCAT44(local_50._4_4_,auVar22._8_4_);" (assignment_expression "local_50 = CONCAT44(local_50._4_4_,auVar22._8_4_)" (identifier "local_50") (= "=") (call_expression "CONCAT44(local_50._4_4_,auVar22._8_4_)" (identifier "CONCAT44") (argument_list "(local_50._4_4_,auVar22._8_4_)" (( "(") (field_expression "local_50._4_4_" (identifier "local_50") (. ".") (field_identifier "_4_4_")) (, ",") (field_expression "auVar22._8_4_" (identifier "auVar22") (. ".") (field_identifier "_8_4_")) () ")")))) (; ";")) (expression_statement "cVar6 = FUN_0028d360(&local_58,&local_48);" (assignment_expression "cVar6 = FUN_0028d360(&local_58,&local_48)" (identifier "cVar6") (= "=") (call_expression "FUN_0028d360(&local_58,&local_48)" (identifier "FUN_0028d360") (argument_list "(&local_58,&local_48)" (( "(") (pointer_expression "&local_58" (& "&") (identifier "local_58")) (, ",") (pointer_expression "&local_48" (& "&") (identifier "local_48")) () ")")))) (; ";")) (if_statement "if (cVar6 != '\0') {\n      *param_7 = *param_7 | 2;\n    }" (if "if") (parenthesized_expression "(cVar6 != '\0')" (( "(") (binary_expression "cVar6 != '\0'" (identifier "cVar6") (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n      *param_7 = *param_7 | 2;\n    }" ({ "{") (expression_statement "*param_7 = *param_7 | 2;" (assignment_expression "*param_7 = *param_7 | 2" (pointer_expression "*param_7" (* "*") (identifier "param_7")) (= "=") (binary_expression "*param_7 | 2" (pointer_expression "*param_7" (* "*") (identifier "param_7")) (| "|") (number_literal "2"))) (; ";")) (} "}"))) (expression_statement "uVar16 = local_50 & 0xffffffff;" (assignment_expression "uVar16 = local_50 & 0xffffffff" (identifier "uVar16") (= "=") (binary_expression "local_50 & 0xffffffff" (identifier "local_50") (& "&") (number_literal "0xffffffff"))) (; ";")) (expression_statement "param_9 = pbVar18 + 1;" (assignment_expression "param_9 = pbVar18 + 1" (identifier "param_9") (= "=") (binary_expression "pbVar18 + 1" (identifier "pbVar18") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "param_2 = local_58;" (assignment_expression "param_2 = local_58" (identifier "param_2") (= "=") (identifier "local_58")) (; ";")) (if_statement "if (param_10 != param_9) goto LAB_00295fef;" (if "if") (parenthesized_expression "(param_10 != param_9)" (( "(") (binary_expression "param_10 != param_9" (identifier "param_10") (!= "!=") (identifier "param_9")) () ")")) (goto_statement "goto LAB_00295fef;" (goto "goto") (statement_identifier "LAB_00295fef") (; ";"))) (} "}")))) (goto_statement "goto LAB_002962c3;" (goto "goto") (statement_identifier "LAB_002962c3") (; ";")) (labeled_statement "code_r0x00296430:\n  uVar16 = 0xffffffff;" (statement_identifier "code_r0x00296430") (: ":") (expression_statement "uVar16 = 0xffffffff;" (assignment_expression "uVar16 = 0xffffffff" (identifier "uVar16") (= "=") (number_literal "0xffffffff")) (; ";"))) (labeled_statement "LAB_00295fe1:\n  if (param_10 == param_9) goto LAB_002962c3;" (statement_identifier "LAB_00295fe1") (: ":") (if_statement "if (param_10 == param_9) goto LAB_002962c3;" (if "if") (parenthesized_expression "(param_10 == param_9)" (( "(") (binary_expression "param_10 == param_9" (identifier "param_10") (== "==") (identifier "param_9")) () ")")) (goto_statement "goto LAB_002962c3;" (goto "goto") (statement_identifier "LAB_002962c3") (; ";")))) (labeled_statement "LAB_00295fef:\n  if (*param_7 != 0) goto LAB_002962c3;" (statement_identifier "LAB_00295fef") (: ":") (if_statement "if (*param_7 != 0) goto LAB_002962c3;" (if "if") (parenthesized_expression "(*param_7 != 0)" (( "(") (binary_expression "*param_7 != 0" (pointer_expression "*param_7" (* "*") (identifier "param_7")) (!= "!=") (number_literal "0")) () ")")) (goto_statement "goto LAB_002962c3;" (goto "goto") (statement_identifier "LAB_002962c3") (; ";")))) (goto_statement "goto LAB_00296001;" (goto "goto") (statement_identifier "LAB_00296001") (; ";")) (ERROR "}" (} "}"))

/* std::time_get<char, std::istreambuf_iterator<char, std::char_traits<char> >
   >::get(std::istreambuf_iterator<char, std::char_traits<char> >, std::istreambuf_iterator<char,
   std::char_traits<char> >, std::ios_base&, std::_Ios_Iostate&, tm*, char const*, char const*)
   const */

type_3  [16]
std::time_get<var_2,var_13::type_6<var_2,var_13::var_1<var_2>>>::var_3
          (undefined8 param_1,var_4 *var_5,type_2 var_15,var_4 *var_6,type_2 var_36,var_4 var_14,
          var_7 *var_8,undefined8 param_8,var_9 *var_10,var_9 *var_11)

{
  type_1 var_28;
  long var_26;
  char var_32;
  char var_31;
  char var_33;
  var_9 cVar6;
  var_9 var_24;
  var_9 var_34;
  int var_19;
  var_9 *var_25;
  var_9 *pcVar11;
  type_1 *var_30;
  type_2 var_29;
  bool var_22;
  bool var_23;
  type_2 var_16;
  bool var_20;
  var_9 *var_27;
  bool var_21;
  bool var_18;
  type_3 auVar21 [16];
  type_3 auVar22 [12];
  type_2 var_17;
  type_2 var_35;
  var_9 local_5c;
  var_9 local_5b;
  var_9 local_5a;
  type_3 local_59;
  long *var_41;
  type_2 var_42;
  long *local_48;
  type_2 local_40;
  
  var_25 = var_12<var_13::var_9<var_2>>((type_4 *)(var_14 + 0xd0));
  var_16 = var_15 & 0xffffffff;
  *var_8 = 0;
  var_17 = var_15;
  if (var_10 == var_11) {
LAB_002962c3:
    auVar21._8_8_ = var_16 | var_17 & 0xffffffff00000000;
    auVar21._0_8_ = var_5;
    return auVar21;
  }
  var_21 = (int)var_36 == -1;
  var_35 = var_36;
LAB_00296001:
  var_18 = (int)var_16 == -1;
  var_20 = var_5 != (long *)0x0 && var_18;
  var_23 = var_18;
  if (var_20) {
    if ((type_2)var_5[2] < (type_2)var_5[3]) {
      var_23 = false;
    }
    else {
      var_19 = (**(type_5 **)(*var_5 + 0x48))(var_5);
      var_23 = var_19 == -1 && var_20;
      if (var_19 == -1) {
        var_5 = (long *)0x0;
      }
    }
  }
  var_22 = var_6 != (long *)0x0 && var_21;
  var_20 = var_21;
  if (var_22) {
    if ((type_2)var_6[3] <= (type_2)var_6[2]) {
      var_19 = (**(type_5 **)(*var_6 + 0x48))(var_6);
      if (var_19 == -1) {
        var_6 = (long *)0x0;
      }
      var_20 = var_19 == -1 && var_22;
      goto LAB_0029602d;
    }
    if (var_23 == false) goto LAB_00296469;
  }
  else {
LAB_0029602d:
    if (var_20 == var_23) {
LAB_00296469:
      *var_8 = 6;
      goto LAB_002962c3;
    }
  }
  cVar6 = *var_10;
  var_24 = var_25[(type_2)(type_1)cVar6 + 0x139];
  if (var_24 == (var_9)0x0) {
    var_24 = cVar6;
    if (*(type_5 **)(*(long *)var_25 + 0x40) != (type_5 *)PTR_do_narrow_003bdd10) {
      var_24 = (var_9)(**(type_5 **)(*(long *)var_25 + 0x40))(var_25,(int)(char)cVar6,0);
    }
    if (var_24 != (var_9)0x0) {
      var_25[(type_2)(type_1)cVar6 + 0x139] = var_24;
      goto LAB_00296071;
    }
LAB_00295f20:
    var_26 = *(long *)(var_25 + 0x30);
    if ((*(type_1 *)(var_26 + 1 + (type_2)(type_1)*var_10 * 2) & 0x20) != 0) {
      var_27 = var_10 + 1;
      pcVar11 = var_11;
      if (var_11 != var_27) {
        var_28 = *(type_1 *)(var_26 + 1 + (type_2)(type_1)var_10[1] * 2);
        while ((pcVar11 = var_27, (var_28 & 0x20) != 0 &&
               (var_27 = var_27 + 1, pcVar11 = var_27, var_11 != var_27))) {
          var_28 = *(type_1 *)(var_26 + 1 + (type_2)(type_1)*var_27 * 2);
        }
      }
      do {
        var_10 = pcVar11;
        var_18 = (int)var_16 == -1;
        var_23 = var_18;
        var_20 = var_21;
        if (var_5 != (long *)0x0 && var_18) {
          if ((type_2)var_5[3] <= (type_2)var_5[2]) {
            var_19 = (**(type_5 **)(*var_5 + 0x48))(var_5);
            var_23 = var_19 == -1 && (var_5 != (long *)0x0 && var_18);
            if (var_19 == -1) {
              var_5 = (long *)0x0;
            }
            goto LAB_00296353;
          }
          var_23 = false;
          if (var_6 != (long *)0x0 && var_21) goto LAB_002963d5;
LAB_00296362:
          if (var_23 == var_20) goto LAB_00295fe1;
        }
        else {
LAB_00296353:
          if (var_6 == (long *)0x0 || !var_21) goto LAB_00296362;
LAB_002963d5:
          var_20 = var_6 != (long *)0x0;
          if ((type_2)var_6[3] <= (type_2)var_6[2]) {
            var_19 = (**(type_5 **)(*var_6 + 0x48))(var_6);
            if (var_19 == -1) {
              var_6 = (long *)0x0;
            }
            var_20 = var_19 == -1 && (var_20 && var_21);
            goto LAB_00296362;
          }
          if (var_23 == false) goto LAB_00295fe1;
        }
        var_29 = var_16;
        if ((var_5 == (long *)0x0) || (!var_18)) {
LAB_0029637c:
          if ((*(type_1 *)(*(long *)(var_25 + 0x30) + 1 + (var_29 & 0xff) * 2) & 0x20) == 0)
          goto LAB_00295fe1;
          var_30 = (type_1 *)var_5[2];
          if (var_30 < (type_1 *)var_5[3]) goto LAB_00296398;
          (**(type_5 **)(*var_5 + 0x50))(var_5);
        }
        else {
          var_30 = (type_1 *)var_5[2];
          if ((type_1 *)var_5[3] <= var_30) {
            var_29 = (**(type_5 **)(*var_5 + 0x48))(var_5);
            if ((int)var_29 == -1) {
              var_5 = (long *)0x0;
            }
            goto LAB_0029637c;
          }
          if ((*(type_1 *)(*(long *)(var_25 + 0x30) + 1 + (type_2)*var_30 * 2) & 0x20) == 0)
          goto code_r0x00296430;
LAB_00296398:
          var_5[2] = (long)(var_30 + 1);
        }
        var_16 = 0xffffffff;
        pcVar11 = var_10;
      } while( true );
    }
    var_33 = (char)var_16;
    var_32 = var_33;
    if ((var_5 != (long *)0x0) && (var_18)) {
      if ((char *)var_5[2] < (char *)var_5[3]) {
        var_32 = *(char *)var_5[2];
      }
      else {
        var_19 = (**(type_5 **)(*var_5 + 0x48))(var_5);
        var_32 = -1;
        if (var_19 == -1) {
          var_5 = (long *)0x0;
        }
        else {
          var_32 = (char)var_19;
        }
      }
    }
    var_32 = (**(type_5 **)(*(long *)var_25 + 0x20))(var_25,(int)var_32);
    var_31 = (**(type_5 **)(*(long *)var_25 + 0x20))(var_25,(int)(char)*var_10);
    if (var_31 != var_32) {
      if ((var_5 != (long *)0x0) && (var_18)) {
        if ((char *)var_5[2] < (char *)var_5[3]) {
          var_33 = *(char *)var_5[2];
        }
        else {
          var_19 = (**(type_5 **)(*var_5 + 0x48))(var_5);
          var_33 = -1;
          if (var_19 == -1) {
            var_5 = (long *)0x0;
          }
          else {
            var_33 = (char)var_19;
          }
        }
      }
      var_33 = (**(type_5 **)(*(long *)var_25 + 0x10))(var_25,(int)var_33);
      var_32 = (**(type_5 **)(*(long *)var_25 + 0x10))(var_25,(int)(char)*var_10);
      if (var_32 != var_33) goto LAB_00296748;
    }
    if ((type_2)var_5[2] < (type_2)var_5[3]) {
      var_5[2] = var_5[2] + 1;
    }
    else {
      (**(type_5 **)(*var_5 + 0x50))(var_5);
    }
    var_10 = var_10 + 1;
    var_16 = 0xffffffff;
    goto LAB_00295fe1;
  }
LAB_00296071:
  if (var_24 != (var_9)0x25) goto LAB_00295f20;
  var_27 = var_10 + 1;
  if (var_11 == var_27) {
LAB_00296748:
    *var_8 = 4;
  }
  else {
    cVar6 = var_10[1];
    var_24 = var_25[(type_2)(type_1)cVar6 + 0x139];
    if (var_24 == (var_9)0x0) {
      var_24 = cVar6;
      if (*(type_5 **)(*(long *)var_25 + 0x40) != (type_5 *)PTR_do_narrow_003bdd10) {
        var_24 = (var_9)(**(type_5 **)(*(long *)var_25 + 0x40))(var_25,(int)(char)cVar6,0);
      }
      var_34 = var_24;
      if (var_24 != (var_9)0x0) {
        var_25[(type_2)(type_1)cVar6 + 0x139] = var_24;
        goto LAB_002960ca;
      }
LAB_0029655b:
      var_24 = (var_9)0x0;
    }
    else {
LAB_002960ca:
      if ((var_24 != (var_9)0x45) && (var_34 = var_24, var_24 != (var_9)0x4f)) goto LAB_0029655b;
      var_27 = var_10 + 2;
      if (var_11 == var_27) goto LAB_00296748;
      cVar6 = var_10[2];
      var_34 = var_25[(type_2)(type_1)cVar6 + 0x139];
      if (var_34 == (var_9)0x0) {
        var_34 = cVar6;
        if (*(type_5 **)(*(long *)var_25 + 0x40) != (type_5 *)PTR_do_narrow_003bdd10) {
          var_34 = (var_9)(**(type_5 **)(*(long *)var_25 + 0x40))(var_25,(int)(char)cVar6,0);
        }
        if (var_34 != (var_9)0x0) {
          var_25[(type_2)(type_1)cVar6 + 0x139] = var_34;
        }
      }
    }
    var_17 = var_17 & 0xffffffff00000000;
    var_35 = var_35 & 0xffffffff00000000 | var_36 & 0xffffffff;
    var_42 = var_17 | var_16;
    var_41 = var_5;
    local_48 = var_6;
    local_40 = var_35;
    pcVar11 = var_12<var_13::var_9<var_2>>((type_4 *)(var_14 + 0xd0));
    *var_8 = 0;
    if (pcVar11[0x38] == (var_9)0x0) {
      var_9<var_2>::var_37((var_9<var_2> *)pcVar11);
      cVar6 = (var_9)0x25;
      if (*(type_5 **)(*(long *)pcVar11 + 0x30) != (type_5 *)PTR_do_widen_003bdfd8) {
        cVar6 = (var_9)(**(type_5 **)(*(long *)pcVar11 + 0x30))(pcVar11,0x25);
      }
    }
    else {
      cVar6 = pcVar11[0x5e];
    }
    if (var_24 == (var_9)0x0) {
      local_5a = (var_9)0x0;
      local_5b = var_34;
    }
    else {
      local_59 = 0;
      local_5b = var_24;
      local_5a = var_34;
    }
    local_5c = cVar6;
    auVar22 = var_38
                        (param_1,var_41,var_42,local_48,local_40,var_14,var_8,param_8,
                         &local_5c);
    var_41 = auVar22._0_8_;
    var_42 = var_39(var_42._4_4_,auVar22._8_4_);
    var_33 = type_6<var_2,var_13::var_1<var_2>>::var_40
                      ((type_6<var_2,var_13::var_1<var_2>> *)&var_41,
                       (type_6 *)&local_48);
    if (var_33 != '\0') {
      *var_8 = *var_8 | 2;
    }
    var_16 = var_42 & 0xffffffff;
    var_10 = var_27 + 1;
    var_5 = var_41;
    if (var_11 != var_10) goto LAB_00295fef;
  }
  goto LAB_002962c3;
code_r0x00296430:
  var_16 = 0xffffffff;
LAB_00295fe1:
  if (var_11 == var_10) goto LAB_002962c3;
LAB_00295fef:
  if (*var_8 != 0) goto LAB_002962c3;
  goto LAB_00296001;
}


(translation_unit (expression_statement (subscript_expression argument: (identifier) index: (number_literal)) (MISSING ";")) (declaration type: (macro_type_specifier name: (identifier) type: (type_descriptor type: (type_identifier)) (MISSING ")")) declarator: (identifier) (ERROR (identifier)) declarator: (pointer_declarator declarator: (identifier)) (ERROR (identifier)) declarator: (identifier) (ERROR (identifier)) declarator: (pointer_declarator declarator: (identifier)) (ERROR (identifier)) declarator: (identifier) (ERROR (identifier)) declarator: (identifier) (ERROR (identifier)) declarator: (pointer_declarator declarator: (identifier)) declarator: (identifier) (ERROR (identifier)) (ERROR (identifier)) declarator: (pointer_declarator declarator: (identifier)) (ERROR (identifier) (pointer_declarator declarator: (identifier)) (identifier)) declarator: (identifier)) (declaration type: (sized_type_specifier) 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: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (sized_type_specifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (sized_type_specifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (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: (array_declarator declarator: (identifier) size: (number_literal))) (declaration type: (type_identifier) declarator: (array_declarator declarator: (identifier) size: (number_literal))) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (sized_type_specifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (sized_type_specifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (identifier)) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (sized_type_specifier) declarator: (abstract_pointer_declarator)) value: (call_expression function: (identifier) arguments: (argument_list (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (compound_statement (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (field_expression argument: (identifier) field: (field_identifier)) right: (binary_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))))) (expression_statement (assignment_expression left: (field_expression argument: (identifier) field: (field_identifier)) right: (identifier))) (return_statement (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (sized_type_specifier) declarator: (abstract_pointer_declarator)) value: (number_literal))) right: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (identifier)) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (subscript_expression argument: (identifier) index: (number_literal))) right: (cast_expression type: (type_descriptor type: (type_identifier)) value: (subscript_expression argument: (identifier) index: (number_literal))))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (false)))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (number_literal))))))) arguments: (argument_list (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) 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: (sized_type_specifier) declarator: (abstract_pointer_declarator)) value: (number_literal))))))))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (sized_type_specifier) declarator: (abstract_pointer_declarator)) value: (number_literal))) right: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (identifier)) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (subscript_expression argument: (identifier) index: (number_literal))) right: (cast_expression type: (type_descriptor type: (type_identifier)) value: (subscript_expression argument: (identifier) index: (number_literal))))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (number_literal))))))) arguments: (argument_list (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: (sized_type_specifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (identifier)))) (goto_statement label: (statement_identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (false))) consequence: (goto_statement label: (statement_identifier)))) alternative: (else_clause (compound_statement (labeled_statement label: (statement_identifier) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (compound_statement (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (number_literal)))) (goto_statement label: (statement_identifier)))))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (binary_expression left: (cast_expression type: (type_descriptor type: (sized_type_specifier)) value: (identifier)) right: (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: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (number_literal))))) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (number_literal))))))) arguments: (argument_list (identifier) (cast_expression type: (type_descriptor type: (primitive_type)) value: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier))) (number_literal))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (binary_expression left: (cast_expression type: (type_descriptor type: (sized_type_specifier)) value: (identifier)) right: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier))) right: (number_literal))))) right: (identifier))) (goto_statement label: (statement_identifier)))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal))))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (binary_expression left: (binary_expression left: (parenthesized_expression (identifier)) right: (identifier)) right: (number_literal)))))) right: (number_literal))) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (subscript_expression argument: (identifier) index: (number_literal))) right: (number_literal)))))))) (while_statement condition: (parenthesized_expression (parenthesized_expression (comma_expression left: (assignment_expression left: (identifier) right: (identifier)) right: (binary_expression left: (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (number_literal)) right: (parenthesized_expression (comma_expression left: (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))) right: (comma_expression left: (assignment_expression left: (identifier) right: (identifier)) right: (binary_expression left: (identifier) right: (identifier))))))))) body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (binary_expression left: (binary_expression left: (parenthesized_expression (identifier)) right: (identifier)) right: (number_literal)))))))))))) (do_statement body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (sized_type_specifier) declarator: (abstract_pointer_declarator)) value: (number_literal))) right: (identifier))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (subscript_expression argument: (identifier) index: (number_literal))) right: (cast_expression type: (type_descriptor type: (type_identifier)) value: (subscript_expression argument: (identifier) index: (number_literal))))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (number_literal))))))) arguments: (argument_list (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (sized_type_specifier) declarator: (abstract_pointer_declarator)) value: (number_literal))) 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: (sized_type_specifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))))) (goto_statement label: (statement_identifier)))) (expression_statement (assignment_expression left: (identifier) right: (false))) (if_statement condition: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (sized_type_specifier) declarator: (abstract_pointer_declarator)) value: (number_literal))) right: (identifier))) consequence: (goto_statement label: (statement_identifier))) (labeled_statement label: (statement_identifier) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (goto_statement label: (statement_identifier))))) alternative: (else_clause (compound_statement (labeled_statement label: (statement_identifier) (if_statement condition: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (sized_type_specifier) declarator: (abstract_pointer_declarator)) value: (number_literal))) right: (unary_expression argument: (identifier)))) consequence: (goto_statement label: (statement_identifier)))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (sized_type_specifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))))) (if_statement condition: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (subscript_expression argument: (identifier) index: (number_literal))) right: (cast_expression type: (type_descriptor type: (type_identifier)) value: (subscript_expression argument: (identifier) index: (number_literal))))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (number_literal))))))) arguments: (argument_list (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: (sized_type_specifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (parenthesized_expression (binary_expression left: (identifier) right: (identifier)))))) (goto_statement label: (statement_identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (false))) consequence: (goto_statement label: (statement_identifier)))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (sized_type_specifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) right: (parenthesized_expression (unary_expression argument: (identifier))))) consequence: (compound_statement (labeled_statement label: (statement_identifier) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal)) right: (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (number_literal)))))) right: (number_literal))) right: (number_literal))) consequence: (goto_statement label: (statement_identifier)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (subscript_expression argument: (identifier) index: (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: (subscript_expression argument: (identifier) index: (number_literal))))) consequence: (goto_statement label: (statement_identifier))) (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (number_literal))))))) arguments: (argument_list (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: (subscript_expression argument: (identifier) index: (number_literal))))) (if_statement condition: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (subscript_expression argument: (identifier) index: (number_literal))) right: (identifier))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (number_literal))))))) arguments: (argument_list (identifier))))) (if_statement condition: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (sized_type_specifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))))) (goto_statement label: (statement_identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal)) right: (binary_expression left: (binary_expression left: (parenthesized_expression (identifier)) right: (identifier)) right: (number_literal)))))) right: (number_literal))) right: (number_literal))) consequence: (goto_statement label: (statement_identifier))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (cast_expression type: (type_descriptor type: (sized_type_specifier)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))))))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (identifier)))) condition: (parenthesized_expression (true))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (sized_type_specifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) right: (parenthesized_expression (identifier)))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (subscript_expression argument: (identifier) index: (number_literal))) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (subscript_expression argument: (identifier) index: (number_literal))))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (subscript_expression argument: (identifier) index: (number_literal))))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (number_literal))))))) arguments: (argument_list (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (sized_type_specifier) declarator: (abstract_pointer_declarator)) value: (number_literal))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)))))))))))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (number_literal))))))) arguments: (argument_list (identifier) (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)))))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (number_literal))))))) arguments: (argument_list (identifier) (cast_expression type: (type_descriptor type: (primitive_type)) value: (cast_expression type: (type_descriptor type: (primitive_type)) value: (pointer_expression argument: (identifier)))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (sized_type_specifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) right: (parenthesized_expression (identifier)))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (subscript_expression argument: (identifier) index: (number_literal))) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (subscript_expression argument: (identifier) index: (number_literal))))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (subscript_expression argument: (identifier) index: (number_literal))))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (number_literal))))))) arguments: (argument_list (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (sized_type_specifier) declarator: (abstract_pointer_declarator)) value: (number_literal))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)))))))))))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (number_literal))))))) arguments: (argument_list (identifier) (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)))))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (number_literal))))))) arguments: (argument_list (identifier) (cast_expression type: (type_descriptor type: (primitive_type)) value: (cast_expression type: (type_descriptor type: (primitive_type)) value: (pointer_expression argument: (identifier)))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (goto_statement label: (statement_identifier))))) (if_statement condition: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (subscript_expression argument: (identifier) index: (number_literal))) right: (cast_expression type: (type_descriptor type: (type_identifier)) value: (subscript_expression argument: (identifier) index: (number_literal))))) consequence: (compound_statement (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))))) alternative: (else_clause (compound_statement (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (number_literal))))))) arguments: (argument_list (identifier))))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (goto_statement label: (statement_identifier)))) (labeled_statement label: (statement_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: (identifier) right: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (compound_statement (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (number_literal))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (binary_expression left: (cast_expression type: (type_descriptor type: (sized_type_specifier)) value: (identifier)) right: (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: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (number_literal))))) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (number_literal))))))) arguments: (argument_list (identifier) (cast_expression type: (type_descriptor type: (primitive_type)) value: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier))) (number_literal))))))) (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: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (binary_expression left: (cast_expression type: (type_descriptor type: (sized_type_specifier)) value: (identifier)) right: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier))) right: (number_literal))))) right: (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) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (parenthesized_expression (comma_expression left: (assignment_expression left: (identifier) right: (identifier)) right: (binary_expression left: (identifier) right: (number_literal)))))) consequence: (goto_statement label: (statement_identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (goto_statement label: (statement_identifier))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (binary_expression left: (cast_expression type: (type_descriptor type: (sized_type_specifier)) value: (identifier)) right: (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: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (number_literal))))) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (number_literal))))))) arguments: (argument_list (identifier) (cast_expression type: (type_descriptor type: (primitive_type)) value: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier))) (number_literal))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (binary_expression left: (cast_expression type: (type_descriptor type: (sized_type_specifier)) value: (identifier)) right: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier))) right: (number_literal))))) right: (identifier)))))))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (binary_expression left: (identifier) right: (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (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: (sized_type_specifier) declarator: (abstract_pointer_declarator)) value: (call_expression function: (identifier) arguments: (argument_list (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (number_literal))) (if_statement condition: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (subscript_expression argument: (identifier) index: (number_literal))) right: (char_literal (escape_sequence)))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (number_literal))))) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (number_literal))))))) arguments: (argument_list (identifier) (number_literal)))))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (sized_type_specifier)) value: (identifier)) right: (number_literal)))))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (identifier)))) alternative: (else_clause (compound_statement (expression_statement (assignment_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: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier) (identifier) (identifier) (identifier) (identifier) (identifier) (identifier) (pointer_expression argument: (identifier)))))) (expression_statement (assignment_expression left: (identifier) right: (field_expression argument: (identifier) field: (field_identifier)))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (field_expression argument: (identifier) field: (field_identifier)) (field_expression argument: (identifier) field: (field_identifier)))))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (pointer_expression argument: (identifier)) (pointer_expression argument: (identifier)))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (char_literal (escape_sequence)))) consequence: (compound_statement (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (binary_expression left: (pointer_expression argument: (identifier)) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) 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)))) (labeled_statement label: (statement_identifier) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (goto_statement label: (statement_identifier)))) (labeled_statement label: (statement_identifier) (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (number_literal))) consequence: (goto_statement label: (statement_identifier)))) (goto_statement label: (statement_identifier)) (ERROR))

undefined1  [16]
MASKED(undefined8 param_1,long *param_2,ulong param_3,long *param_4,ulong param_5,long param_6
            ,uint *param_7,undefined8 param_8,byte *param_9,byte *param_10)

{
  byte bVar1;
  long lVar2;
  byte *pbVar3;
  char cVar4;
  char cVar5;
  char cVar6;
  undefined1 uVar7;
  byte bVar8;
  byte bVar9;
  int iVar10;
  long *plVar11;
  long *plVar12;
  ulong uVar13;
  bool bVar14;
  bool bVar15;
  ulong uVar16;
  bool bVar17;
  byte *pbVar18;
  bool bVar19;
  bool bVar20;
  undefined1 auVar21 [16];
  undefined1 auVar22 [12];
  ulong local_d0;
  ulong local_c8;
  undefined1 local_5c;
  byte local_5b;
  byte local_5a;
  undefined1 local_59;
  long *local_58;
  ulong local_50;
  long *local_48;
  ulong local_40;
  
  plVar11 = (long *)FUN_00288720(param_6 + 0xd0);
  uVar16 = param_3 & 0xffffffff;
  *param_7 = 0;
  local_d0 = param_3;
  if (param_9 == param_10) {
LAB_002962c3:
    auVar21._8_8_ = uVar16 | local_d0 & 0xffffffff00000000;
    auVar21._0_8_ = param_2;
    return auVar21;
  }
  bVar19 = (int)param_5 == -1;
  local_c8 = param_5;
LAB_00296001:
  bVar20 = (int)uVar16 == -1;
  bVar17 = param_2 != (long *)0x0 && bVar20;
  bVar15 = bVar20;
  if (bVar17) {
    if ((ulong)param_2[2] < (ulong)param_2[3]) {
      bVar15 = false;
    }
    else {
      iVar10 = (**(code **)(*param_2 + 0x48))(param_2);
      bVar15 = iVar10 == -1 && bVar17;
      if (iVar10 == -1) {
        param_2 = (long *)0x0;
      }
    }
  }
  bVar14 = param_4 != (long *)0x0 && bVar19;
  bVar17 = bVar19;
  if (bVar14) {
    if ((ulong)param_4[3] <= (ulong)param_4[2]) {
      iVar10 = (**(code **)(*param_4 + 0x48))(param_4);
      if (iVar10 == -1) {
        param_4 = (long *)0x0;
      }
      bVar17 = iVar10 == -1 && bVar14;
      goto LAB_0029602d;
    }
    if (bVar15 == false) goto LAB_00296469;
  }
  else {
LAB_0029602d:
    if (bVar17 == bVar15) {
LAB_00296469:
      *param_7 = 6;
      goto LAB_002962c3;
    }
  }
  bVar1 = *param_9;
  bVar8 = *(byte *)((long)plVar11 + (ulong)bVar1 + 0x139);
  if (bVar8 == 0) {
    bVar8 = bVar1;
    if (*(code **)(*plVar11 + 0x40) != (code *)PTR_FUN_003bdd10) {
      bVar8 = (**(code **)(*plVar11 + 0x40))(plVar11,(int)(char)bVar1,0);
    }
    if (bVar8 != 0) {
      *(byte *)((long)plVar11 + (ulong)bVar1 + 0x139) = bVar8;
      goto LAB_00296071;
    }
LAB_00295f20:
    lVar2 = plVar11[6];
    if ((*(byte *)(lVar2 + 1 + (ulong)*param_9 * 2) & 0x20) != 0) {
      pbVar18 = param_9 + 1;
      pbVar3 = param_10;
      if (param_10 != pbVar18) {
        bVar1 = *(byte *)(lVar2 + 1 + (ulong)param_9[1] * 2);
        while ((pbVar3 = pbVar18, (bVar1 & 0x20) != 0 &&
               (pbVar18 = pbVar18 + 1, pbVar3 = pbVar18, param_10 != pbVar18))) {
          bVar1 = *(byte *)(lVar2 + 1 + (ulong)*pbVar18 * 2);
        }
      }
      do {
        param_9 = pbVar3;
        bVar20 = (int)uVar16 == -1;
        bVar15 = bVar20;
        bVar17 = bVar19;
        if (param_2 != (long *)0x0 && bVar20) {
          if ((ulong)param_2[3] <= (ulong)param_2[2]) {
            iVar10 = (**(code **)(*param_2 + 0x48))(param_2);
            bVar15 = iVar10 == -1 && (param_2 != (long *)0x0 && bVar20);
            if (iVar10 == -1) {
              param_2 = (long *)0x0;
            }
            goto LAB_00296353;
          }
          bVar15 = false;
          if (param_4 != (long *)0x0 && bVar19) goto LAB_002963d5;
LAB_00296362:
          if (bVar15 == bVar17) goto LAB_00295fe1;
        }
        else {
LAB_00296353:
          if (param_4 == (long *)0x0 || !bVar19) goto LAB_00296362;
LAB_002963d5:
          bVar17 = param_4 != (long *)0x0;
          if ((ulong)param_4[3] <= (ulong)param_4[2]) {
            iVar10 = (**(code **)(*param_4 + 0x48))(param_4);
            if (iVar10 == -1) {
              param_4 = (long *)0x0;
            }
            bVar17 = iVar10 == -1 && (bVar17 && bVar19);
            goto LAB_00296362;
          }
          if (bVar15 == false) goto LAB_00295fe1;
        }
        uVar13 = uVar16;
        if ((param_2 == (long *)0x0) || (!bVar20)) {
LAB_0029637c:
          if ((*(byte *)(plVar11[6] + 1 + (uVar13 & 0xff) * 2) & 0x20) == 0) goto LAB_00295fe1;
          pbVar18 = (byte *)param_2[2];
          if (pbVar18 < (byte *)param_2[3]) goto LAB_00296398;
          (**(code **)(*param_2 + 0x50))(param_2);
        }
        else {
          pbVar18 = (byte *)param_2[2];
          if ((byte *)param_2[3] <= pbVar18) {
            uVar13 = (**(code **)(*param_2 + 0x48))(param_2);
            if ((int)uVar13 == -1) {
              param_2 = (long *)0x0;
            }
            goto LAB_0029637c;
          }
          if ((*(byte *)(plVar11[6] + 1 + (ulong)*pbVar18 * 2) & 0x20) == 0) goto code_r0x00296430;
LAB_00296398:
          param_2[2] = (long)(pbVar18 + 1);
        }
        uVar16 = 0xffffffff;
        pbVar3 = param_9;
      } while( true );
    }
    cVar6 = (char)uVar16;
    cVar4 = cVar6;
    if ((param_2 != (long *)0x0) && (bVar20)) {
      if ((char *)param_2[2] < (char *)param_2[3]) {
        cVar4 = *(char *)param_2[2];
      }
      else {
        iVar10 = (**(code **)(*param_2 + 0x48))(param_2);
        cVar4 = -1;
        if (iVar10 == -1) {
          param_2 = (long *)0x0;
        }
        else {
          cVar4 = (char)iVar10;
        }
      }
    }
    cVar4 = (**(code **)(*plVar11 + 0x20))(plVar11,(int)cVar4);
    cVar5 = (**(code **)(*plVar11 + 0x20))(plVar11,(int)(char)*param_9);
    if (cVar5 != cVar4) {
      if ((param_2 != (long *)0x0) && (bVar20)) {
        if ((char *)param_2[2] < (char *)param_2[3]) {
          cVar6 = *(char *)param_2[2];
        }
        else {
          iVar10 = (**(code **)(*param_2 + 0x48))(param_2);
          cVar6 = -1;
          if (iVar10 == -1) {
            param_2 = (long *)0x0;
          }
          else {
            cVar6 = (char)iVar10;
          }
        }
      }
      cVar6 = (**(code **)(*plVar11 + 0x10))(plVar11,(int)cVar6);
      cVar4 = (**(code **)(*plVar11 + 0x10))(plVar11,(int)(char)*param_9);
      if (cVar4 != cVar6) goto LAB_00296748;
    }
    if ((ulong)param_2[2] < (ulong)param_2[3]) {
      param_2[2] = param_2[2] + 1;
    }
    else {
      (**(code **)(*param_2 + 0x50))(param_2);
    }
    param_9 = param_9 + 1;
    uVar16 = 0xffffffff;
    goto LAB_00295fe1;
  }
LAB_00296071:
  if (bVar8 != 0x25) goto LAB_00295f20;
  pbVar18 = param_9 + 1;
  if (param_10 == pbVar18) {
LAB_00296748:
    *param_7 = 4;
  }
  else {
    bVar1 = param_9[1];
    bVar8 = *(byte *)((long)plVar11 + (ulong)bVar1 + 0x139);
    if (bVar8 == 0) {
      bVar8 = bVar1;
      if (*(code **)(*plVar11 + 0x40) != (code *)PTR_FUN_003bdd10) {
        bVar8 = (**(code **)(*plVar11 + 0x40))(plVar11,(int)(char)bVar1,0);
      }
      bVar9 = bVar8;
      if (bVar8 != 0) {
        *(byte *)((long)plVar11 + (ulong)bVar1 + 0x139) = bVar8;
        goto LAB_002960ca;
      }
LAB_0029655b:
      bVar8 = 0;
    }
    else {
LAB_002960ca:
      if ((bVar8 != 0x45) && (bVar9 = bVar8, bVar8 != 0x4f)) goto LAB_0029655b;
      pbVar18 = param_9 + 2;
      if (param_10 == pbVar18) goto LAB_00296748;
      bVar1 = param_9[2];
      bVar9 = *(byte *)((long)plVar11 + (ulong)bVar1 + 0x139);
      if (bVar9 == 0) {
        bVar9 = bVar1;
        if (*(code **)(*plVar11 + 0x40) != (code *)PTR_FUN_003bdd10) {
          bVar9 = (**(code **)(*plVar11 + 0x40))(plVar11,(int)(char)bVar1,0);
        }
        if (bVar9 != 0) {
          *(byte *)((long)plVar11 + (ulong)bVar1 + 0x139) = bVar9;
        }
      }
    }
    local_d0 = local_d0 & 0xffffffff00000000;
    local_c8 = local_c8 & 0xffffffff00000000 | param_5 & 0xffffffff;
    local_50 = local_d0 | uVar16;
    local_58 = param_2;
    local_48 = param_4;
    local_40 = local_c8;
    plVar12 = (long *)FUN_00288720(param_6 + 0xd0);
    *param_7 = 0;
    if ((char)plVar12[7] == '\0') {
      FUN_002b5b80(plVar12);
      uVar7 = 0x25;
      if (*(code **)(*plVar12 + 0x30) != (code *)PTR_FUN_003bdfd8) {
        uVar7 = (**(code **)(*plVar12 + 0x30))(plVar12,0x25);
      }
    }
    else {
      uVar7 = *(undefined1 *)((long)plVar12 + 0x5e);
    }
    if (bVar8 == 0) {
      local_5a = 0;
      local_5b = bVar9;
    }
    else {
      local_59 = 0;
      local_5b = bVar8;
      local_5a = bVar9;
    }
    local_5c = uVar7;
    auVar22 = FUN_0028dbd0(param_1,local_58,local_50,local_48,local_40,param_6,param_7,param_8,
                           &local_5c);
    local_58 = auVar22._0_8_;
    local_50 = CONCAT44(local_50._4_4_,auVar22._8_4_);
    cVar6 = FUN_0028d360(&local_58,&local_48);
    if (cVar6 != '\0') {
      *param_7 = *param_7 | 2;
    }
    uVar16 = local_50 & 0xffffffff;
    param_9 = pbVar18 + 1;
    param_2 = local_58;
    if (param_10 != param_9) goto LAB_00295fef;
  }
  goto LAB_002962c3;
code_r0x00296430:
  uVar16 = 0xffffffff;
LAB_00295fe1:
  if (param_10 == param_9) goto LAB_002962c3;
LAB_00295fef:
  if (*param_7 != 0) goto LAB_002962c3;
  goto LAB_00296001;
}

