
/* std::time_get<char, std::istreambuf_iterator<char, std::char_traits<char> >
   >::_M_extract_name(std::istreambuf_iterator<char, std::char_traits<char> >,
   std::istreambuf_iterator<char, std::char_traits<char> >, int&, char const**, unsigned long,
   std::ios_base&, std::_Ios_Iostate&) const */

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

{
  int *piVar1;
  char *pcVar2;
  code *pcVar3;
  long lVar4;
  undefined1 auVar5 [16];
  long **pplVar6;
  istreambuf_iterator<char,std::char_traits<char>> *this;
  char cVar7;
  char cVar8;
  bool bVar9;
  int iVar10;
  uint uVar11;
  ctype *pcVar12;
  ulong uVar13;
  size_t sVar14;
  char *pcVar15;
  long lVar16;
  ulong uVar17;
  size_t sVar18;
  ulong uVar19;
  undefined8 auStack_90 [2];
  undefined4 *local_80;
  long **local_78;
  char local_6a;
  char local_69;
  istreambuf_iterator<char,std::char_traits<char>> *local_68;
  ulong local_60;
  long *local_58;
  undefined8 local_50;
  long *local_48;
  uint local_40;
  undefined4 uStack_3c;
  
  local_40 = (uint)param_3;
  uStack_3c = (undefined4)((ulong)param_3 >> 0x20);
  auStack_90[0] = 0x28d449;
  local_80 = param_6;
  local_58 = param_4;
  local_50 = param_5;
  local_48 = param_2;
  pcVar12 = use_facet<std::ctype<char>>((locale *)(param_9 + 0xd0));
  lVar4 = -(param_8 * 4 + 0x17U & 0xfffffffffffffff0);
  piVar1 = (int *)((long)&local_80 + lVar4);
  local_78 = &local_58;
  local_68 = (istreambuf_iterator<char,std::char_traits<char>> *)&local_48;
  *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d483;
  cVar7 = istreambuf_iterator<char,std::char_traits<char>>::equal
                    ((istreambuf_iterator<char,std::char_traits<char>> *)&local_48,
                     (istreambuf_iterator *)&local_58);
  if (cVar7 == '\0') {
    *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d4b1;
    cVar7 = istreambuf_iterator<char,std::char_traits<char>>::_M_get();
    if (param_8 != 0) {
      lVar16 = 0;
      uVar19 = 0;
      do {
        while (**(char **)(param_7 + lVar16 * 8) == cVar7) {
LAB_0028d4f6:
          piVar1[uVar19] = (int)lVar16;
          uVar19 = uVar19 + 1;
          lVar16 = lVar16 + 1;
          if (param_8 == lVar16) goto LAB_0028d508;
        }
        local_60 = CONCAT71(local_60._1_7_,cVar7);
        pcVar3 = *(code **)(*(long *)pcVar12 + 0x10);
        *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d4d6;
        cVar8 = (*pcVar3)(pcVar12);
        cVar7 = (char)local_60;
        if ((char)local_60 == cVar8) goto LAB_0028d4f6;
        lVar16 = lVar16 + 1;
      } while (param_8 != lVar16);
LAB_0028d508:
      local_60 = 0;
joined_r0x0028d514:
      if (1 < uVar19) {
        uVar17 = 1;
        pcVar2 = *(char **)(param_7 + (long)*piVar1 * 8);
        *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d532;
        uVar13 = strlen(pcVar2);
        do {
          pcVar2 = *(char **)(param_7 + (long)piVar1[uVar17] * 8);
          *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d545;
          sVar14 = strlen(pcVar2);
          if (sVar14 < uVar13) {
            uVar13 = sVar14;
          }
          uVar17 = uVar17 + 1;
        } while (uVar17 < uVar19);
        if ((ulong)local_48[2] < (ulong)local_48[3]) {
          local_48[2] = local_48[2] + 1;
        }
        else {
          pcVar3 = *(code **)(*local_48 + 0x50);
          *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d796;
          (*pcVar3)();
        }
        local_60 = local_60 + 1;
        local_40 = 0xffffffff;
        if (uVar13 <= local_60) goto LAB_0028d487;
        cVar7 = '\x01';
        if (local_48 != (long *)0x0) {
          cVar7 = '\0';
          if ((ulong)local_48[3] <= (ulong)local_48[2]) {
            pcVar3 = *(code **)(*local_48 + 0x48);
            *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d7a1;
            iVar10 = (*pcVar3)();
            cVar7 = '\0';
            if (iVar10 == -1) {
              local_48 = (long *)0x0;
              cVar7 = '\x01';
            }
          }
        }
        bVar9 = local_58 != (long *)0x0 && (int)local_50 == -1;
        cVar8 = (int)local_50 == -1;
        if ((bVar9) && (cVar8 = '\0', (ulong)local_58[3] <= (ulong)local_58[2])) {
          local_69 = '\0';
          pcVar3 = *(code **)(*local_58 + 0x48);
          local_6a = bVar9;
          *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d736;
          iVar10 = (*pcVar3)();
          cVar8 = local_69;
          if (iVar10 == -1) {
            local_58 = (long *)0x0;
            cVar8 = local_6a;
          }
        }
        if (cVar8 == cVar7) goto LAB_0028d487;
        uVar13 = 0;
        do {
          while( true ) {
            cVar7 = *(char *)(*(long *)(param_7 + (long)piVar1[uVar13] * 8) + local_60);
            uVar11 = local_40;
            if ((local_48 != (long *)0x0) && (local_40 == 0xffffffff)) {
              if ((byte *)local_48[2] < (byte *)local_48[3]) {
                uVar11 = (uint)*(byte *)local_48[2];
              }
              else {
                pcVar3 = *(code **)(*local_48 + 0x48);
                local_69 = cVar7;
                *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d76a;
                uVar11 = (*pcVar3)();
                cVar7 = local_69;
                if (uVar11 == 0xffffffff) {
                  local_48 = (long *)0x0;
                  uVar11 = 0xffffffff;
                }
              }
            }
            if (cVar7 != (char)uVar11) break;
            uVar13 = uVar13 + 1;
            if (uVar19 <= uVar13) goto joined_r0x0028d514;
          }
          uVar19 = uVar19 - 1;
          piVar1[uVar13] = piVar1[uVar19];
        } while (uVar13 < uVar19);
        goto joined_r0x0028d514;
      }
      if (uVar19 == 1) {
        if ((ulong)local_48[2] < (ulong)local_48[3]) {
          local_48[2] = local_48[2] + 1;
        }
        else {
          pcVar3 = *(code **)(*local_48 + 0x50);
          *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d7fe;
          (*pcVar3)();
        }
        uVar19 = local_60;
        local_40 = 0xffffffff;
        pcVar2 = *(char **)(param_7 + (long)*piVar1 * 8);
        local_60 = CONCAT44(local_60._4_4_,*piVar1);
        sVar18 = uVar19 + 1;
        *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d670;
        sVar14 = strlen(pcVar2);
        if (sVar18 < sVar14) {
          do {
            this = local_68;
            pplVar6 = local_78;
            *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d6c9;
            cVar7 = istreambuf_iterator<char,std::char_traits<char>>::equal
                              (this,(istreambuf_iterator *)pplVar6);
            if (cVar7 != '\0') goto LAB_0028d487;
            cVar7 = pcVar2[sVar18];
            uVar11 = local_40;
            if ((local_48 == (long *)0x0) || (local_40 != 0xffffffff)) {
LAB_0028d688:
              if (cVar7 != (char)uVar11) goto LAB_0028d487;
              pcVar15 = (char *)local_48[2];
              if (pcVar15 < (char *)local_48[3]) goto LAB_0028d6a3;
              pcVar3 = *(code **)(*local_48 + 0x50);
              *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d7c3;
              (*pcVar3)();
            }
            else {
              pcVar15 = (char *)local_48[2];
              if ((char *)local_48[3] <= pcVar15) {
                pcVar3 = *(code **)(*local_48 + 0x48);
                *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d7e2;
                uVar11 = (*pcVar3)();
                if (uVar11 == 0xffffffff) {
                  local_48 = (long *)0x0;
                }
                goto LAB_0028d688;
              }
              if (cVar7 != *pcVar15) goto LAB_0028d487;
LAB_0028d6a3:
              local_48[2] = (long)(pcVar15 + 1);
            }
            sVar18 = sVar18 + 1;
            local_40 = 0xffffffff;
          } while (sVar18 != sVar14);
        }
        else if (sVar18 != sVar14) goto LAB_0028d487;
        *local_80 = (undefined4)local_60;
        goto LAB_0028d48e;
      }
    }
  }
LAB_0028d487:
  *param_10 = *param_10 | 4;
LAB_0028d48e:
  auVar5._8_4_ = local_40;
  auVar5._0_8_ = local_48;
  auVar5._12_4_ = uStack_3c;
  return auVar5;
}



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

{
  int *piVar1;
  char *pcVar2;
  code *pcVar3;
  long lVar4;
  undefined1 auVar5 [16];
  long **pplVar6;
  long **pplVar7;
  char cVar8;
  char cVar9;
  bool bVar10;
  int iVar11;
  uint uVar12;
  long *plVar13;
  ulong uVar14;
  size_t sVar15;
  char *pcVar16;
  long lVar17;
  ulong uVar18;
  size_t sVar19;
  ulong uVar20;
  undefined8 auStack_90 [2];
  undefined4 *local_80;
  long **local_78;
  char local_6a;
  char local_69;
  long **local_68;
  ulong local_60;
  long *local_58;
  undefined8 local_50;
  long *local_48;
  uint local_40;
  undefined4 uStack_3c;
  
  local_40 = (uint)param_3;
  uStack_3c = (undefined4)((ulong)param_3 >> 0x20);
  auStack_90[0] = 0x28d449;
  local_80 = param_6;
  local_58 = param_4;
  local_50 = param_5;
  local_48 = param_2;
  plVar13 = (long *)FUN_00288720(param_9 + 0xd0);
  local_78 = &local_58;
  lVar4 = -(param_8 * 4 + 0x17U & 0xfffffffffffffff0);
  piVar1 = (int *)((long)&local_80 + lVar4);
  local_68 = &local_48;
  *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d483;
  cVar8 = FUN_0028d360(&local_48);
  uVar12 = local_40;
  pplVar6 = local_68;
  if (cVar8 == '\0') {
    *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d4b1;
    cVar8 = FUN_002864b0(pplVar6,uVar12);
    if (param_8 != 0) {
      lVar17 = 0;
      uVar20 = 0;
      do {
        while (**(char **)(param_7 + lVar17 * 8) == cVar8) {
LAB_0028d4f6:
          piVar1[uVar20] = (int)lVar17;
          uVar20 = uVar20 + 1;
          lVar17 = lVar17 + 1;
          if (param_8 == lVar17) goto LAB_0028d508;
        }
        local_60 = CONCAT71(local_60._1_7_,cVar8);
        pcVar3 = *(code **)(*plVar13 + 0x10);
        *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d4d6;
        cVar9 = (*pcVar3)(plVar13);
        cVar8 = (char)local_60;
        if ((char)local_60 == cVar9) goto LAB_0028d4f6;
        lVar17 = lVar17 + 1;
      } while (param_8 != lVar17);
LAB_0028d508:
      local_60 = 0;
joined_r0x0028d514:
      if (1 < uVar20) {
        uVar18 = 1;
        pcVar2 = *(char **)(param_7 + (long)*piVar1 * 8);
        *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d532;
        uVar14 = strlen(pcVar2);
        do {
          pcVar2 = *(char **)(param_7 + (long)piVar1[uVar18] * 8);
          *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d545;
          sVar15 = strlen(pcVar2);
          if (sVar15 < uVar14) {
            uVar14 = sVar15;
          }
          uVar18 = uVar18 + 1;
        } while (uVar18 < uVar20);
        if ((ulong)local_48[2] < (ulong)local_48[3]) {
          local_48[2] = local_48[2] + 1;
        }
        else {
          pcVar3 = *(code **)(*local_48 + 0x50);
          *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d796;
          (*pcVar3)();
        }
        local_60 = local_60 + 1;
        local_40 = 0xffffffff;
        if (uVar14 <= local_60) goto LAB_0028d487;
        cVar8 = '\x01';
        if (local_48 != (long *)0x0) {
          cVar8 = '\0';
          if ((ulong)local_48[3] <= (ulong)local_48[2]) {
            pcVar3 = *(code **)(*local_48 + 0x48);
            *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d7a1;
            iVar11 = (*pcVar3)();
            cVar8 = '\0';
            if (iVar11 == -1) {
              local_48 = (long *)0x0;
              cVar8 = '\x01';
            }
          }
        }
        bVar10 = local_58 != (long *)0x0 && (int)local_50 == -1;
        cVar9 = (int)local_50 == -1;
        if ((bVar10) && (cVar9 = '\0', (ulong)local_58[3] <= (ulong)local_58[2])) {
          local_69 = '\0';
          pcVar3 = *(code **)(*local_58 + 0x48);
          local_6a = bVar10;
          *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d736;
          iVar11 = (*pcVar3)();
          cVar9 = local_69;
          if (iVar11 == -1) {
            local_58 = (long *)0x0;
            cVar9 = local_6a;
          }
        }
        if (cVar9 == cVar8) goto LAB_0028d487;
        uVar14 = 0;
        do {
          while( true ) {
            cVar8 = *(char *)(*(long *)(param_7 + (long)piVar1[uVar14] * 8) + local_60);
            uVar12 = local_40;
            if ((local_48 != (long *)0x0) && (local_40 == 0xffffffff)) {
              if ((byte *)local_48[2] < (byte *)local_48[3]) {
                uVar12 = (uint)*(byte *)local_48[2];
              }
              else {
                pcVar3 = *(code **)(*local_48 + 0x48);
                local_69 = cVar8;
                *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d76a;
                uVar12 = (*pcVar3)();
                cVar8 = local_69;
                if (uVar12 == 0xffffffff) {
                  local_48 = (long *)0x0;
                  uVar12 = 0xffffffff;
                }
              }
            }
            if (cVar8 != (char)uVar12) break;
            uVar14 = uVar14 + 1;
            if (uVar20 <= uVar14) goto joined_r0x0028d514;
          }
          uVar20 = uVar20 - 1;
          piVar1[uVar14] = piVar1[uVar20];
        } while (uVar14 < uVar20);
        goto joined_r0x0028d514;
      }
      if (uVar20 == 1) {
        if ((ulong)local_48[2] < (ulong)local_48[3]) {
          local_48[2] = local_48[2] + 1;
        }
        else {
          pcVar3 = *(code **)(*local_48 + 0x50);
          *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d7fe;
          (*pcVar3)();
        }
        uVar20 = local_60;
        local_40 = 0xffffffff;
        pcVar2 = *(char **)(param_7 + (long)*piVar1 * 8);
        local_60 = CONCAT44(local_60._4_4_,*piVar1);
        sVar19 = uVar20 + 1;
        *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d670;
        sVar15 = strlen(pcVar2);
        if (sVar19 < sVar15) {
          do {
            pplVar7 = local_68;
            pplVar6 = local_78;
            *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d6c9;
            cVar8 = FUN_0028d360(pplVar7,pplVar6);
            if (cVar8 != '\0') goto LAB_0028d487;
            cVar8 = pcVar2[sVar19];
            uVar12 = local_40;
            if ((local_48 == (long *)0x0) || (local_40 != 0xffffffff)) {
LAB_0028d688:
              if (cVar8 != (char)uVar12) goto LAB_0028d487;
              pcVar16 = (char *)local_48[2];
              if (pcVar16 < (char *)local_48[3]) goto LAB_0028d6a3;
              pcVar3 = *(code **)(*local_48 + 0x50);
              *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d7c3;
              (*pcVar3)();
            }
            else {
              pcVar16 = (char *)local_48[2];
              if ((char *)local_48[3] <= pcVar16) {
                pcVar3 = *(code **)(*local_48 + 0x48);
                *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d7e2;
                uVar12 = (*pcVar3)();
                if (uVar12 == 0xffffffff) {
                  local_48 = (long *)0x0;
                }
                goto LAB_0028d688;
              }
              if (cVar8 != *pcVar16) goto LAB_0028d487;
LAB_0028d6a3:
              local_48[2] = (long)(pcVar16 + 1);
            }
            sVar19 = sVar19 + 1;
            local_40 = 0xffffffff;
          } while (sVar19 != sVar15);
        }
        else if (sVar19 != sVar15) goto LAB_0028d487;
        *local_80 = (undefined4)local_60;
        goto LAB_0028d48e;
      }
    }
  }
LAB_0028d487:
  *param_10 = *param_10 | 4;
LAB_0028d48e:
  auVar5._8_4_ = local_40;
  auVar5._0_8_ = local_48;
  auVar5._12_4_ = uStack_3c;
  return auVar5;
}


PUSH RBP
MOV RBP,RSP
PUSH R15
PUSH R14
PUSH R13
PUSH R12
PUSH RBX
SUB RSP,0x58
MOV RAX,qword ptr [RBP + 0x20]
MOV qword ptr [RBP + -0x40],RSI
MOV qword ptr [RBP + -0x50],RCX
MOV RBX,qword ptr [RBP + 0x10]
LEA RDI,[RAX + 0xd0]
MOV qword ptr [RBP + -0x38],RDX
MOV qword ptr [RBP + -0x48],R8
MOV qword ptr [RBP + -0x78],R9
CALL 0x00288720
LEA RSI,[RBP + -0x50]
MOV R13,RAX
MOV RAX,qword ptr [RBP + 0x18]
MOV qword ptr [RBP + -0x70],RSI
LEA RAX,[0x17 + RAX*0x4]
AND RAX,-0x10
SUB RSP,RAX
LEA RAX,[RBP + -0x40]
LEA RCX,[RSP + 0xf]
MOV RDI,RAX
MOV qword ptr [RBP + -0x60],RAX
AND RCX,-0x10
MOV R15,RCX
CALL 0x0028d360
TEST AL,AL
JZ 0x0028d4a5
MOV RAX,qword ptr [RBP + 0x28]
OR dword ptr [RAX],0x4
MOV RAX,qword ptr [RBP + -0x40]
MOV RDX,qword ptr [RBP + -0x38]
LEA RSP,[RBP + -0x28]
POP RBX
POP R12
POP R13
POP R14
POP R15
POP RBP
RET
MOV ESI,dword ptr [RBP + -0x38]
MOV RDI,qword ptr [RBP + -0x60]
CALL 0x002864b0
CMP qword ptr [RBP + 0x18],0x0
MOV R9D,EAX
JZ 0x0028d487
XOR R12D,R12D
XOR R14D,R14D
JMP 0x0028d4ea
MOV RAX,qword ptr [R13]
MOV byte ptr [RBP + -0x58],R9B
MOV RDI,R13
CALL qword ptr [RAX + 0x10]
MOVZX R9D,byte ptr [RBP + -0x58]
CMP R9B,AL
JZ 0x0028d4f6
ADD R12,0x1
CMP qword ptr [RBP + 0x18],R12
JZ 0x0028d508
MOV RAX,qword ptr [RBX + R12*0x8]
MOVSX ESI,byte ptr [RAX]
CMP SIL,R9B
JNZ 0x0028d4c8
MOV dword ptr [R15 + R14*0x4],R12D
ADD R14,0x1
ADD R12,0x1
CMP qword ptr [RBP + 0x18],R12
JNZ 0x0028d4ea
MOV qword ptr [RBP + -0x58],0x0
CMP R14,0x1
JBE 0x0028d62b
NOP word ptr [RAX + RAX*0x1]
MOVSXD RAX,dword ptr [R15]
MOV R12D,0x1
MOV RDI,qword ptr [RBX + RAX*0x8]
CALL 0x0013e490
MOV R13,RAX
NOP dword ptr [RAX]
MOVSXD RAX,dword ptr [R15 + R12*0x4]
MOV RDI,qword ptr [RBX + RAX*0x8]
CALL 0x0013e490
CMP R13,RAX
CMOVA R13,RAX
ADD R12,0x1
CMP R14,R12
JA 0x0028d538
MOV RDI,qword ptr [RBP + -0x40]
MOV RAX,qword ptr [RDI + 0x10]
CMP RAX,qword ptr [RDI + 0x18]
JNC 0x0028d790
ADD RAX,0x1
MOV qword ptr [RDI + 0x10],RAX
ADD qword ptr [RBP + -0x58],0x1
MOV RAX,qword ptr [RBP + -0x58]
MOV dword ptr [RBP + -0x38],0xffffffff
CMP RAX,R13
JNC 0x0028d487
MOV RDI,qword ptr [RBP + -0x40]
MOV R13D,0x1
TEST RDI,RDI
JZ 0x0028d5a8
XOR R13D,R13D
MOV RAX,qword ptr [RDI + 0x18]
CMP qword ptr [RDI + 0x10],RAX
JNC 0x0028d79b
MOV RDI,qword ptr [RBP + -0x50]
CMP dword ptr [RBP + -0x48],-0x1
SETZ SIL
TEST RDI,RDI
SETNZ AL
AND AL,SIL
MOV R8D,EAX
JNZ 0x0028d718
CMP SIL,R13B
JZ 0x0028d487
XOR R13D,R13D
JMP 0x0028d5e9
SUB R14,0x1
MOV EAX,dword ptr [R15 + R14*0x4]
MOV dword ptr [R12],EAX
CMP R14,R13
JBE 0x0028d621
LEA R12,[R15 + R13*0x4]
MOV RDX,qword ptr [RBP + -0x58]
MOV RDI,qword ptr [RBP + -0x40]
MOVSXD RAX,dword ptr [R12]
MOV RAX,qword ptr [RBX + RAX*0x8]
MOVZX R9D,byte ptr [RAX + RDX*0x1]
MOV EAX,dword ptr [RBP + -0x38]
TEST RDI,RDI
JZ 0x0028d613
CMP EAX,-0x1
JZ 0x0028d700
CMP R9B,AL
JNZ 0x0028d5d8
ADD R13,0x1
CMP R14,R13
JA 0x0028d5e9
CMP R14,0x1
JA 0x0028d520
SUB R14,0x1
JNZ 0x0028d487
MOV RDI,qword ptr [RBP + -0x40]
MOV RAX,qword ptr [RDI + 0x10]
CMP RAX,qword ptr [RDI + 0x18]
JNC 0x0028d7f8
ADD RAX,0x1
MOV qword ptr [RDI + 0x10],RAX
MOVSXD RAX,dword ptr [R15]
MOV R13,qword ptr [RBP + -0x58]
MOV dword ptr [RBP + -0x38],0xffffffff
MOV RBX,qword ptr [RBX + RAX*0x8]
MOV dword ptr [RBP + -0x58],EAX
ADD R13,0x1
MOV RDI,RBX
CALL 0x0013e490
MOV R15,RAX
CMP R13,RAX
JNC 0x0028d7c8
MOV R12D,0xffffffff
JMP 0x0028d6bc
CMP R14B,AL
JNZ 0x0028d487
MOV RDI,qword ptr [RBP + -0x40]
MOV RAX,qword ptr [RDI + 0x10]
CMP RAX,qword ptr [RDI + 0x18]
JNC 0x0028d7bd
ADD RAX,0x1
MOV qword ptr [RDI + 0x10],RAX
ADD R13,0x1
MOV dword ptr [RBP + -0x38],R12D
CMP R13,R15
JZ 0x0028d7ce
MOV RSI,qword ptr [RBP + -0x70]
MOV RDI,qword ptr [RBP + -0x60]
CALL 0x0028d360
TEST AL,AL
JNZ 0x0028d487
MOV RDI,qword ptr [RBP + -0x40]
MOVZX R14D,byte ptr [RBX + R13*0x1]
MOV EAX,dword ptr [RBP + -0x38]
TEST RDI,RDI
JZ 0x0028d688
CMP EAX,-0x1
JNZ 0x0028d688
MOV RAX,qword ptr [RDI + 0x10]
CMP RAX,qword ptr [RDI + 0x18]
JNC 0x0028d7dc
CMP R14B,byte ptr [RAX]
JZ 0x0028d6a3
JMP 0x0028d487
MOV RAX,qword ptr [RDI + 0x10]
CMP RAX,qword ptr [RDI + 0x18]
JNC 0x0028d760
MOVZX EAX,byte ptr [RAX]
JMP 0x0028d613
XOR ESI,ESI
MOV RAX,qword ptr [RDI + 0x18]
CMP qword ptr [RDI + 0x10],RAX
JC 0x0028d5c6
MOV RAX,qword ptr [RDI]
MOV byte ptr [RBP + -0x62],R8B
MOV byte ptr [RBP + -0x61],SIL
CALL qword ptr [RAX + 0x48]
MOVZX ESI,byte ptr [RBP + -0x61]
MOVZX R8D,byte ptr [RBP + -0x62]
CMP EAX,-0x1
JNZ 0x0028d5c6
MOV qword ptr [RBP + -0x50],0x0
MOV ESI,R8D
JMP 0x0028d5c6
MOV RAX,qword ptr [RDI]
MOV byte ptr [RBP + -0x61],R9B
CALL qword ptr [RAX + 0x48]
MOVZX R9D,byte ptr [RBP + -0x61]
CMP EAX,-0x1
JNZ 0x0028d613
MOV qword ptr [RBP + -0x40],0x0
MOV EAX,0xffffffff
JMP 0x0028d613
MOV RAX,qword ptr [RDI]
CALL qword ptr [RAX + 0x50]
JMP 0x0028d56f
MOV RAX,qword ptr [RDI]
CALL qword ptr [RAX + 0x48]
CMP EAX,-0x1
JNZ 0x0028d5a8
MOV qword ptr [RBP + -0x40],0x0
MOV R13D,0x1
JMP 0x0028d5a8
MOV RAX,qword ptr [RDI]
CALL qword ptr [RAX + 0x50]
JMP 0x0028d6ab
JNZ 0x0028d487
MOV RAX,qword ptr [RBP + -0x78]
MOV ECX,dword ptr [RBP + -0x58]
MOV dword ptr [RAX],ECX
JMP 0x0028d48e
MOV RAX,qword ptr [RDI]
CALL qword ptr [RAX + 0x48]
CMP EAX,-0x1
JNZ 0x0028d688
MOV qword ptr [RBP + -0x40],0x0
JMP 0x0028d688
MOV RAX,qword ptr [RDI]
CALL qword ptr [RAX + 0x50]
JMP 0x0028d64f
(translation_unit "undefined1  [16]\nFUN_0028d410(undefined8 param_1,long *param_2,undefined8 param_3,long *param_4,undefined8 param_5,\n            undefined4 *param_6,long param_7,long param_8,long param_9,uint *param_10)\n\n{\n  int *piVar1;\n  char *pcVar2;\n  code *pcVar3;\n  long lVar4;\n  undefined1 auVar5 [16];\n  long **pplVar6;\n  long **pplVar7;\n  char cVar8;\n  char cVar9;\n  bool bVar10;\n  int iVar11;\n  uint uVar12;\n  long *plVar13;\n  ulong uVar14;\n  size_t sVar15;\n  char *pcVar16;\n  long lVar17;\n  ulong uVar18;\n  size_t sVar19;\n  ulong uVar20;\n  undefined8 auStack_90 [2];\n  undefined4 *local_80;\n  long **local_78;\n  char local_6a;\n  char local_69;\n  long **local_68;\n  ulong local_60;\n  long *local_58;\n  undefined8 local_50;\n  long *local_48;\n  uint local_40;\n  undefined4 uStack_3c;\n  \n  local_40 = (uint)param_3;\n  uStack_3c = (undefined4)((ulong)param_3 >> 0x20);\n  auStack_90[0] = 0x28d449;\n  local_80 = param_6;\n  local_58 = param_4;\n  local_50 = param_5;\n  local_48 = param_2;\n  plVar13 = (long *)FUN_00288720(param_9 + 0xd0);\n  local_78 = &local_58;\n  lVar4 = -(param_8 * 4 + 0x17U & 0xfffffffffffffff0);\n  piVar1 = (int *)((long)&local_80 + lVar4);\n  local_68 = &local_48;\n  *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d483;\n  cVar8 = FUN_0028d360(&local_48);\n  uVar12 = local_40;\n  pplVar6 = local_68;\n  if (cVar8 == '\0') {\n    *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d4b1;\n    cVar8 = FUN_002864b0(pplVar6,uVar12);\n    if (param_8 != 0) {\n      lVar17 = 0;\n      uVar20 = 0;\n      do {\n        while (**(char **)(param_7 + lVar17 * 8) == cVar8) {\nLAB_0028d4f6:\n          piVar1[uVar20] = (int)lVar17;\n          uVar20 = uVar20 + 1;\n          lVar17 = lVar17 + 1;\n          if (param_8 == lVar17) goto LAB_0028d508;\n        }\n        local_60 = CONCAT71(local_60._1_7_,cVar8);\n        pcVar3 = *(code **)(*plVar13 + 0x10);\n        *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d4d6;\n        cVar9 = (*pcVar3)(plVar13);\n        cVar8 = (char)local_60;\n        if ((char)local_60 == cVar9) goto LAB_0028d4f6;\n        lVar17 = lVar17 + 1;\n      } while (param_8 != lVar17);\nLAB_0028d508:\n      local_60 = 0;\njoined_r0x0028d514:\n      if (1 < uVar20) {\n        uVar18 = 1;\n        pcVar2 = *(char **)(param_7 + (long)*piVar1 * 8);\n        *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d532;\n        uVar14 = strlen(pcVar2);\n        do {\n          pcVar2 = *(char **)(param_7 + (long)piVar1[uVar18] * 8);\n          *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d545;\n          sVar15 = strlen(pcVar2);\n          if (sVar15 < uVar14) {\n            uVar14 = sVar15;\n          }\n          uVar18 = uVar18 + 1;\n        } while (uVar18 < uVar20);\n        if ((ulong)local_48[2] < (ulong)local_48[3]) {\n          local_48[2] = local_48[2] + 1;\n        }\n        else {\n          pcVar3 = *(code **)(*local_48 + 0x50);\n          *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d796;\n          (*pcVar3)();\n        }\n        local_60 = local_60 + 1;\n        local_40 = 0xffffffff;\n        if (uVar14 <= local_60) goto LAB_0028d487;\n        cVar8 = '\x01';\n        if (local_48 != (long *)0x0) {\n          cVar8 = '\0';\n          if ((ulong)local_48[3] <= (ulong)local_48[2]) {\n            pcVar3 = *(code **)(*local_48 + 0x48);\n            *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d7a1;\n            iVar11 = (*pcVar3)();\n            cVar8 = '\0';\n            if (iVar11 == -1) {\n              local_48 = (long *)0x0;\n              cVar8 = '\x01';\n            }\n          }\n        }\n        bVar10 = local_58 != (long *)0x0 && (int)local_50 == -1;\n        cVar9 = (int)local_50 == -1;\n        if ((bVar10) && (cVar9 = '\0', (ulong)local_58[3] <= (ulong)local_58[2])) {\n          local_69 = '\0';\n          pcVar3 = *(code **)(*local_58 + 0x48);\n          local_6a = bVar10;\n          *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d736;\n          iVar11 = (*pcVar3)();\n          cVar9 = local_69;\n          if (iVar11 == -1) {\n            local_58 = (long *)0x0;\n            cVar9 = local_6a;\n          }\n        }\n        if (cVar9 == cVar8) goto LAB_0028d487;\n        uVar14 = 0;\n        do {\n          while( true ) {\n            cVar8 = *(char *)(*(long *)(param_7 + (long)piVar1[uVar14] * 8) + local_60);\n            uVar12 = local_40;\n            if ((local_48 != (long *)0x0) && (local_40 == 0xffffffff)) {\n              if ((byte *)local_48[2] < (byte *)local_48[3]) {\n                uVar12 = (uint)*(byte *)local_48[2];\n              }\n              else {\n                pcVar3 = *(code **)(*local_48 + 0x48);\n                local_69 = cVar8;\n                *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d76a;\n                uVar12 = (*pcVar3)();\n                cVar8 = local_69;\n                if (uVar12 == 0xffffffff) {\n                  local_48 = (long *)0x0;\n                  uVar12 = 0xffffffff;\n                }\n              }\n            }\n            if (cVar8 != (char)uVar12) break;\n            uVar14 = uVar14 + 1;\n            if (uVar20 <= uVar14) goto joined_r0x0028d514;\n          }\n          uVar20 = uVar20 - 1;\n          piVar1[uVar14] = piVar1[uVar20];\n        } while (uVar14 < uVar20);\n        goto joined_r0x0028d514;\n      }\n      if (uVar20 == 1) {\n        if ((ulong)local_48[2] < (ulong)local_48[3]) {\n          local_48[2] = local_48[2] + 1;\n        }\n        else {\n          pcVar3 = *(code **)(*local_48 + 0x50);\n          *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d7fe;\n          (*pcVar3)();\n        }\n        uVar20 = local_60;\n        local_40 = 0xffffffff;\n        pcVar2 = *(char **)(param_7 + (long)*piVar1 * 8);\n        local_60 = CONCAT44(local_60._4_4_,*piVar1);\n        sVar19 = uVar20 + 1;\n        *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d670;\n        sVar15 = strlen(pcVar2);\n        if (sVar19 < sVar15) {\n          do {\n            pplVar7 = local_68;\n            pplVar6 = local_78;\n            *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d6c9;\n            cVar8 = FUN_0028d360(pplVar7,pplVar6);\n            if (cVar8 != '\0') goto LAB_0028d487;\n            cVar8 = pcVar2[sVar19];\n            uVar12 = local_40;\n            if ((local_48 == (long *)0x0) || (local_40 != 0xffffffff)) {\nLAB_0028d688:\n              if (cVar8 != (char)uVar12) goto LAB_0028d487;\n              pcVar16 = (char *)local_48[2];\n              if (pcVar16 < (char *)local_48[3]) goto LAB_0028d6a3;\n              pcVar3 = *(code **)(*local_48 + 0x50);\n              *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d7c3;\n              (*pcVar3)();\n            }\n            else {\n              pcVar16 = (char *)local_48[2];\n              if ((char *)local_48[3] <= pcVar16) {\n                pcVar3 = *(code **)(*local_48 + 0x48);\n                *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d7e2;\n                uVar12 = (*pcVar3)();\n                if (uVar12 == 0xffffffff) {\n                  local_48 = (long *)0x0;\n                }\n                goto LAB_0028d688;\n              }\n              if (cVar8 != *pcVar16) goto LAB_0028d487;\nLAB_0028d6a3:\n              local_48[2] = (long)(pcVar16 + 1);\n            }\n            sVar19 = sVar19 + 1;\n            local_40 = 0xffffffff;\n          } while (sVar19 != sVar15);\n        }\n        else if (sVar19 != sVar15) goto LAB_0028d487;\n        *local_80 = (undefined4)local_60;\n        goto LAB_0028d48e;\n      }\n    }\n  }\nLAB_0028d487:\n  *param_10 = *param_10 | 4;\nLAB_0028d48e:\n  auVar5._8_4_ = local_40;\n  auVar5._0_8_ = local_48;\n  auVar5._12_4_ = uStack_3c;\n  return auVar5;\n}\n\n" (expression_statement "undefined1  [16]" (subscript_expression "undefined1  [16]" identifier [ number_literal ]) ;) (declaration "FUN_0028d410(undefined8 param_1,long *param_2,undefined8 param_3,long *param_4,undefined8 param_5,\n            undefined4 *param_6,long param_7,long param_8,long param_9,uint *param_10)\n\n{\n  int *piVar1;" (macro_type_specifier "FUN_0028d410(undefined8" identifier ( (type_descriptor "undefined8" type_identifier) )) identifier , (ERROR "long" identifier) (pointer_declarator "*param_2" * identifier) , identifier (ERROR "param_3" identifier) , (ERROR "long" identifier) (pointer_declarator "*param_4" * identifier) , identifier (ERROR "param_5" identifier) , (ERROR "undefined4" identifier) (pointer_declarator "*param_6" * identifier) , (ERROR "long" identifier) identifier , (ERROR "long" identifier) identifier , (ERROR "long" identifier) identifier , (ERROR "uint *param_10)\n\n{\n  int" identifier (pointer_declarator "*param_10" * identifier) ) { primitive_type) (pointer_declarator "*piVar1" * identifier) ;) (declaration "char *pcVar2;" primitive_type (pointer_declarator "*pcVar2" * identifier) ;) (declaration "code *pcVar3;" type_identifier (pointer_declarator "*pcVar3" * identifier) ;) (declaration "long lVar4;" (sized_type_specifier "long" long) identifier ;) (declaration "undefined1 auVar5 [16];" type_identifier (array_declarator "auVar5 [16]" identifier [ number_literal ]) ;) (declaration "long **pplVar6;" (sized_type_specifier "long" long) (pointer_declarator "**pplVar6" * (pointer_declarator "*pplVar6" * identifier)) ;) (declaration "long **pplVar7;" (sized_type_specifier "long" long) (pointer_declarator "**pplVar7" * (pointer_declarator "*pplVar7" * identifier)) ;) (declaration "char cVar8;" primitive_type identifier ;) (declaration "char cVar9;" primitive_type identifier ;) (declaration "bool bVar10;" primitive_type identifier ;) (declaration "int iVar11;" primitive_type identifier ;) (declaration "uint uVar12;" type_identifier identifier ;) (declaration "long *plVar13;" (sized_type_specifier "long" long) (pointer_declarator "*plVar13" * identifier) ;) (declaration "ulong uVar14;" type_identifier identifier ;) (declaration "size_t sVar15;" primitive_type identifier ;) (declaration "char *pcVar16;" primitive_type (pointer_declarator "*pcVar16" * identifier) ;) (declaration "long lVar17;" (sized_type_specifier "long" long) identifier ;) (declaration "ulong uVar18;" type_identifier identifier ;) (declaration "size_t sVar19;" primitive_type identifier ;) (declaration "ulong uVar20;" type_identifier identifier ;) (declaration "undefined8 auStack_90 [2];" type_identifier (array_declarator "auStack_90 [2]" identifier [ number_literal ]) ;) (declaration "undefined4 *local_80;" type_identifier (pointer_declarator "*local_80" * identifier) ;) (declaration "long **local_78;" (sized_type_specifier "long" long) (pointer_declarator "**local_78" * (pointer_declarator "*local_78" * identifier)) ;) (declaration "char local_6a;" primitive_type identifier ;) (declaration "char local_69;" primitive_type identifier ;) (declaration "long **local_68;" (sized_type_specifier "long" long) (pointer_declarator "**local_68" * (pointer_declarator "*local_68" * identifier)) ;) (declaration "ulong local_60;" type_identifier identifier ;) (declaration "long *local_58;" (sized_type_specifier "long" long) (pointer_declarator "*local_58" * identifier) ;) (declaration "undefined8 local_50;" type_identifier identifier ;) (declaration "long *local_48;" (sized_type_specifier "long" long) (pointer_declarator "*local_48" * identifier) ;) (declaration "uint local_40;" type_identifier identifier ;) (declaration "undefined4 uStack_3c;" type_identifier identifier ;) (expression_statement "local_40 = (uint)param_3;" (assignment_expression "local_40 = (uint)param_3" identifier = (cast_expression "(uint)param_3" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (expression_statement "uStack_3c = (undefined4)((ulong)param_3 >> 0x20);" (assignment_expression "uStack_3c = (undefined4)((ulong)param_3 >> 0x20)" identifier = (call_expression "(undefined4)((ulong)param_3 >> 0x20)" (parenthesized_expression "(undefined4)" ( identifier )) (argument_list "((ulong)param_3 >> 0x20)" ( (binary_expression "(ulong)param_3 >> 0x20" (cast_expression "(ulong)param_3" ( (type_descriptor "ulong" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "auStack_90[0] = 0x28d449;" (assignment_expression "auStack_90[0] = 0x28d449" (subscript_expression "auStack_90[0]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "local_80 = param_6;" (assignment_expression "local_80 = param_6" identifier = identifier) ;) (expression_statement "local_58 = param_4;" (assignment_expression "local_58 = param_4" identifier = identifier) ;) (expression_statement "local_50 = param_5;" (assignment_expression "local_50 = param_5" identifier = identifier) ;) (expression_statement "local_48 = param_2;" (assignment_expression "local_48 = param_2" identifier = identifier) ;) (expression_statement "plVar13 = (long *)FUN_00288720(param_9 + 0xd0);" (assignment_expression "plVar13 = (long *)FUN_00288720(param_9 + 0xd0)" identifier = (cast_expression "(long *)FUN_00288720(param_9 + 0xd0)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00288720(param_9 + 0xd0)" identifier (argument_list "(param_9 + 0xd0)" ( (binary_expression "param_9 + 0xd0" identifier + number_literal) ))))) ;) (expression_statement "local_78 = &local_58;" (assignment_expression "local_78 = &local_58" identifier = (pointer_expression "&local_58" & identifier)) ;) (expression_statement "lVar4 = -(param_8 * 4 + 0x17U & 0xfffffffffffffff0);" (assignment_expression "lVar4 = -(param_8 * 4 + 0x17U & 0xfffffffffffffff0)" identifier = (unary_expression "-(param_8 * 4 + 0x17U & 0xfffffffffffffff0)" - (parenthesized_expression "(param_8 * 4 + 0x17U & 0xfffffffffffffff0)" ( (binary_expression "param_8 * 4 + 0x17U & 0xfffffffffffffff0" (binary_expression "param_8 * 4 + 0x17U" (binary_expression "param_8 * 4" identifier * number_literal) + number_literal) & number_literal) )))) ;) (expression_statement "piVar1 = (int *)((long)&local_80 + lVar4);" (assignment_expression "piVar1 = (int *)((long)&local_80 + lVar4)" identifier = (cast_expression "(int *)((long)&local_80 + lVar4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)&local_80 + lVar4)" ( (binary_expression "(long)&local_80 + lVar4" (cast_expression "(long)&local_80" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (pointer_expression "&local_80" & identifier)) + identifier) )))) ;) (expression_statement "local_68 = &local_48;" (assignment_expression "local_68 = &local_48" identifier = (pointer_expression "&local_48" & identifier)) ;) (expression_statement "*(undefined8 *)((long)auStack_90 + lVar4) = 0x28d483;" (assignment_expression "*(undefined8 *)((long)auStack_90 + lVar4) = 0x28d483" (pointer_expression "*(undefined8 *)((long)auStack_90 + lVar4)" * (cast_expression "(undefined8 *)((long)auStack_90 + lVar4)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)auStack_90 + lVar4)" ( (binary_expression "(long)auStack_90 + lVar4" (cast_expression "(long)auStack_90" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + identifier) )))) = number_literal) ;) (expression_statement "cVar8 = FUN_0028d360(&local_48);" (assignment_expression "cVar8 = FUN_0028d360(&local_48)" identifier = (call_expression "FUN_0028d360(&local_48)" identifier (argument_list "(&local_48)" ( (pointer_expression "&local_48" & identifier) )))) ;) (expression_statement "uVar12 = local_40;" (assignment_expression "uVar12 = local_40" identifier = identifier) ;) (expression_statement "pplVar6 = local_68;" (assignment_expression "pplVar6 = local_68" identifier = identifier) ;) (if_statement "if (cVar8 == '\0') {\n    *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d4b1;\n    cVar8 = FUN_002864b0(pplVar6,uVar12);\n    if (param_8 != 0) {\n      lVar17 = 0;\n      uVar20 = 0;\n      do {\n        while (**(char **)(param_7 + lVar17 * 8) == cVar8) {\nLAB_0028d4f6:\n          piVar1[uVar20] = (int)lVar17;\n          uVar20 = uVar20 + 1;\n          lVar17 = lVar17 + 1;\n          if (param_8 == lVar17) goto LAB_0028d508;\n        }\n        local_60 = CONCAT71(local_60._1_7_,cVar8);\n        pcVar3 = *(code **)(*plVar13 + 0x10);\n        *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d4d6;\n        cVar9 = (*pcVar3)(plVar13);\n        cVar8 = (char)local_60;\n        if ((char)local_60 == cVar9) goto LAB_0028d4f6;\n        lVar17 = lVar17 + 1;\n      } while (param_8 != lVar17);\nLAB_0028d508:\n      local_60 = 0;\njoined_r0x0028d514:\n      if (1 < uVar20) {\n        uVar18 = 1;\n        pcVar2 = *(char **)(param_7 + (long)*piVar1 * 8);\n        *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d532;\n        uVar14 = strlen(pcVar2);\n        do {\n          pcVar2 = *(char **)(param_7 + (long)piVar1[uVar18] * 8);\n          *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d545;\n          sVar15 = strlen(pcVar2);\n          if (sVar15 < uVar14) {\n            uVar14 = sVar15;\n          }\n          uVar18 = uVar18 + 1;\n        } while (uVar18 < uVar20);\n        if ((ulong)local_48[2] < (ulong)local_48[3]) {\n          local_48[2] = local_48[2] + 1;\n        }\n        else {\n          pcVar3 = *(code **)(*local_48 + 0x50);\n          *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d796;\n          (*pcVar3)();\n        }\n        local_60 = local_60 + 1;\n        local_40 = 0xffffffff;\n        if (uVar14 <= local_60) goto LAB_0028d487;\n        cVar8 = '\x01';\n        if (local_48 != (long *)0x0) {\n          cVar8 = '\0';\n          if ((ulong)local_48[3] <= (ulong)local_48[2]) {\n            pcVar3 = *(code **)(*local_48 + 0x48);\n            *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d7a1;\n            iVar11 = (*pcVar3)();\n            cVar8 = '\0';\n            if (iVar11 == -1) {\n              local_48 = (long *)0x0;\n              cVar8 = '\x01';\n            }\n          }\n        }\n        bVar10 = local_58 != (long *)0x0 && (int)local_50 == -1;\n        cVar9 = (int)local_50 == -1;\n        if ((bVar10) && (cVar9 = '\0', (ulong)local_58[3] <= (ulong)local_58[2])) {\n          local_69 = '\0';\n          pcVar3 = *(code **)(*local_58 + 0x48);\n          local_6a = bVar10;\n          *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d736;\n          iVar11 = (*pcVar3)();\n          cVar9 = local_69;\n          if (iVar11 == -1) {\n            local_58 = (long *)0x0;\n            cVar9 = local_6a;\n          }\n        }\n        if (cVar9 == cVar8) goto LAB_0028d487;\n        uVar14 = 0;\n        do {\n          while( true ) {\n            cVar8 = *(char *)(*(long *)(param_7 + (long)piVar1[uVar14] * 8) + local_60);\n            uVar12 = local_40;\n            if ((local_48 != (long *)0x0) && (local_40 == 0xffffffff)) {\n              if ((byte *)local_48[2] < (byte *)local_48[3]) {\n                uVar12 = (uint)*(byte *)local_48[2];\n              }\n              else {\n                pcVar3 = *(code **)(*local_48 + 0x48);\n                local_69 = cVar8;\n                *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d76a;\n                uVar12 = (*pcVar3)();\n                cVar8 = local_69;\n                if (uVar12 == 0xffffffff) {\n                  local_48 = (long *)0x0;\n                  uVar12 = 0xffffffff;\n                }\n              }\n            }\n            if (cVar8 != (char)uVar12) break;\n            uVar14 = uVar14 + 1;\n            if (uVar20 <= uVar14) goto joined_r0x0028d514;\n          }\n          uVar20 = uVar20 - 1;\n          piVar1[uVar14] = piVar1[uVar20];\n        } while (uVar14 < uVar20);\n        goto joined_r0x0028d514;\n      }\n      if (uVar20 == 1) {\n        if ((ulong)local_48[2] < (ulong)local_48[3]) {\n          local_48[2] = local_48[2] + 1;\n        }\n        else {\n          pcVar3 = *(code **)(*local_48 + 0x50);\n          *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d7fe;\n          (*pcVar3)();\n        }\n        uVar20 = local_60;\n        local_40 = 0xffffffff;\n        pcVar2 = *(char **)(param_7 + (long)*piVar1 * 8);\n        local_60 = CONCAT44(local_60._4_4_,*piVar1);\n        sVar19 = uVar20 + 1;\n        *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d670;\n        sVar15 = strlen(pcVar2);\n        if (sVar19 < sVar15) {\n          do {\n            pplVar7 = local_68;\n            pplVar6 = local_78;\n            *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d6c9;\n            cVar8 = FUN_0028d360(pplVar7,pplVar6);\n            if (cVar8 != '\0') goto LAB_0028d487;\n            cVar8 = pcVar2[sVar19];\n            uVar12 = local_40;\n            if ((local_48 == (long *)0x0) || (local_40 != 0xffffffff)) {\nLAB_0028d688:\n              if (cVar8 != (char)uVar12) goto LAB_0028d487;\n              pcVar16 = (char *)local_48[2];\n              if (pcVar16 < (char *)local_48[3]) goto LAB_0028d6a3;\n              pcVar3 = *(code **)(*local_48 + 0x50);\n              *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d7c3;\n              (*pcVar3)();\n            }\n            else {\n              pcVar16 = (char *)local_48[2];\n              if ((char *)local_48[3] <= pcVar16) {\n                pcVar3 = *(code **)(*local_48 + 0x48);\n                *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d7e2;\n                uVar12 = (*pcVar3)();\n                if (uVar12 == 0xffffffff) {\n                  local_48 = (long *)0x0;\n                }\n                goto LAB_0028d688;\n              }\n              if (cVar8 != *pcVar16) goto LAB_0028d487;\nLAB_0028d6a3:\n              local_48[2] = (long)(pcVar16 + 1);\n            }\n            sVar19 = sVar19 + 1;\n            local_40 = 0xffffffff;\n          } while (sVar19 != sVar15);\n        }\n        else if (sVar19 != sVar15) goto LAB_0028d487;\n        *local_80 = (undefined4)local_60;\n        goto LAB_0028d48e;\n      }\n    }\n  }" if (parenthesized_expression "(cVar8 == '\0')" ( (binary_expression "cVar8 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d4b1;\n    cVar8 = FUN_002864b0(pplVar6,uVar12);\n    if (param_8 != 0) {\n      lVar17 = 0;\n      uVar20 = 0;\n      do {\n        while (**(char **)(param_7 + lVar17 * 8) == cVar8) {\nLAB_0028d4f6:\n          piVar1[uVar20] = (int)lVar17;\n          uVar20 = uVar20 + 1;\n          lVar17 = lVar17 + 1;\n          if (param_8 == lVar17) goto LAB_0028d508;\n        }\n        local_60 = CONCAT71(local_60._1_7_,cVar8);\n        pcVar3 = *(code **)(*plVar13 + 0x10);\n        *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d4d6;\n        cVar9 = (*pcVar3)(plVar13);\n        cVar8 = (char)local_60;\n        if ((char)local_60 == cVar9) goto LAB_0028d4f6;\n        lVar17 = lVar17 + 1;\n      } while (param_8 != lVar17);\nLAB_0028d508:\n      local_60 = 0;\njoined_r0x0028d514:\n      if (1 < uVar20) {\n        uVar18 = 1;\n        pcVar2 = *(char **)(param_7 + (long)*piVar1 * 8);\n        *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d532;\n        uVar14 = strlen(pcVar2);\n        do {\n          pcVar2 = *(char **)(param_7 + (long)piVar1[uVar18] * 8);\n          *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d545;\n          sVar15 = strlen(pcVar2);\n          if (sVar15 < uVar14) {\n            uVar14 = sVar15;\n          }\n          uVar18 = uVar18 + 1;\n        } while (uVar18 < uVar20);\n        if ((ulong)local_48[2] < (ulong)local_48[3]) {\n          local_48[2] = local_48[2] + 1;\n        }\n        else {\n          pcVar3 = *(code **)(*local_48 + 0x50);\n          *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d796;\n          (*pcVar3)();\n        }\n        local_60 = local_60 + 1;\n        local_40 = 0xffffffff;\n        if (uVar14 <= local_60) goto LAB_0028d487;\n        cVar8 = '\x01';\n        if (local_48 != (long *)0x0) {\n          cVar8 = '\0';\n          if ((ulong)local_48[3] <= (ulong)local_48[2]) {\n            pcVar3 = *(code **)(*local_48 + 0x48);\n            *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d7a1;\n            iVar11 = (*pcVar3)();\n            cVar8 = '\0';\n            if (iVar11 == -1) {\n              local_48 = (long *)0x0;\n              cVar8 = '\x01';\n            }\n          }\n        }\n        bVar10 = local_58 != (long *)0x0 && (int)local_50 == -1;\n        cVar9 = (int)local_50 == -1;\n        if ((bVar10) && (cVar9 = '\0', (ulong)local_58[3] <= (ulong)local_58[2])) {\n          local_69 = '\0';\n          pcVar3 = *(code **)(*local_58 + 0x48);\n          local_6a = bVar10;\n          *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d736;\n          iVar11 = (*pcVar3)();\n          cVar9 = local_69;\n          if (iVar11 == -1) {\n            local_58 = (long *)0x0;\n            cVar9 = local_6a;\n          }\n        }\n        if (cVar9 == cVar8) goto LAB_0028d487;\n        uVar14 = 0;\n        do {\n          while( true ) {\n            cVar8 = *(char *)(*(long *)(param_7 + (long)piVar1[uVar14] * 8) + local_60);\n            uVar12 = local_40;\n            if ((local_48 != (long *)0x0) && (local_40 == 0xffffffff)) {\n              if ((byte *)local_48[2] < (byte *)local_48[3]) {\n                uVar12 = (uint)*(byte *)local_48[2];\n              }\n              else {\n                pcVar3 = *(code **)(*local_48 + 0x48);\n                local_69 = cVar8;\n                *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d76a;\n                uVar12 = (*pcVar3)();\n                cVar8 = local_69;\n                if (uVar12 == 0xffffffff) {\n                  local_48 = (long *)0x0;\n                  uVar12 = 0xffffffff;\n                }\n              }\n            }\n            if (cVar8 != (char)uVar12) break;\n            uVar14 = uVar14 + 1;\n            if (uVar20 <= uVar14) goto joined_r0x0028d514;\n          }\n          uVar20 = uVar20 - 1;\n          piVar1[uVar14] = piVar1[uVar20];\n        } while (uVar14 < uVar20);\n        goto joined_r0x0028d514;\n      }\n      if (uVar20 == 1) {\n        if ((ulong)local_48[2] < (ulong)local_48[3]) {\n          local_48[2] = local_48[2] + 1;\n        }\n        else {\n          pcVar3 = *(code **)(*local_48 + 0x50);\n          *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d7fe;\n          (*pcVar3)();\n        }\n        uVar20 = local_60;\n        local_40 = 0xffffffff;\n        pcVar2 = *(char **)(param_7 + (long)*piVar1 * 8);\n        local_60 = CONCAT44(local_60._4_4_,*piVar1);\n        sVar19 = uVar20 + 1;\n        *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d670;\n        sVar15 = strlen(pcVar2);\n        if (sVar19 < sVar15) {\n          do {\n            pplVar7 = local_68;\n            pplVar6 = local_78;\n            *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d6c9;\n            cVar8 = FUN_0028d360(pplVar7,pplVar6);\n            if (cVar8 != '\0') goto LAB_0028d487;\n            cVar8 = pcVar2[sVar19];\n            uVar12 = local_40;\n            if ((local_48 == (long *)0x0) || (local_40 != 0xffffffff)) {\nLAB_0028d688:\n              if (cVar8 != (char)uVar12) goto LAB_0028d487;\n              pcVar16 = (char *)local_48[2];\n              if (pcVar16 < (char *)local_48[3]) goto LAB_0028d6a3;\n              pcVar3 = *(code **)(*local_48 + 0x50);\n              *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d7c3;\n              (*pcVar3)();\n            }\n            else {\n              pcVar16 = (char *)local_48[2];\n              if ((char *)local_48[3] <= pcVar16) {\n                pcVar3 = *(code **)(*local_48 + 0x48);\n                *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d7e2;\n                uVar12 = (*pcVar3)();\n                if (uVar12 == 0xffffffff) {\n                  local_48 = (long *)0x0;\n                }\n                goto LAB_0028d688;\n              }\n              if (cVar8 != *pcVar16) goto LAB_0028d487;\nLAB_0028d6a3:\n              local_48[2] = (long)(pcVar16 + 1);\n            }\n            sVar19 = sVar19 + 1;\n            local_40 = 0xffffffff;\n          } while (sVar19 != sVar15);\n        }\n        else if (sVar19 != sVar15) goto LAB_0028d487;\n        *local_80 = (undefined4)local_60;\n        goto LAB_0028d48e;\n      }\n    }\n  }" { (expression_statement "*(undefined8 *)((long)auStack_90 + lVar4) = 0x28d4b1;" (assignment_expression "*(undefined8 *)((long)auStack_90 + lVar4) = 0x28d4b1" (pointer_expression "*(undefined8 *)((long)auStack_90 + lVar4)" * (cast_expression "(undefined8 *)((long)auStack_90 + lVar4)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)auStack_90 + lVar4)" ( (binary_expression "(long)auStack_90 + lVar4" (cast_expression "(long)auStack_90" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + identifier) )))) = number_literal) ;) (expression_statement "cVar8 = FUN_002864b0(pplVar6,uVar12);" (assignment_expression "cVar8 = FUN_002864b0(pplVar6,uVar12)" identifier = (call_expression "FUN_002864b0(pplVar6,uVar12)" identifier (argument_list "(pplVar6,uVar12)" ( identifier , identifier )))) ;) (if_statement "if (param_8 != 0) {\n      lVar17 = 0;\n      uVar20 = 0;\n      do {\n        while (**(char **)(param_7 + lVar17 * 8) == cVar8) {\nLAB_0028d4f6:\n          piVar1[uVar20] = (int)lVar17;\n          uVar20 = uVar20 + 1;\n          lVar17 = lVar17 + 1;\n          if (param_8 == lVar17) goto LAB_0028d508;\n        }\n        local_60 = CONCAT71(local_60._1_7_,cVar8);\n        pcVar3 = *(code **)(*plVar13 + 0x10);\n        *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d4d6;\n        cVar9 = (*pcVar3)(plVar13);\n        cVar8 = (char)local_60;\n        if ((char)local_60 == cVar9) goto LAB_0028d4f6;\n        lVar17 = lVar17 + 1;\n      } while (param_8 != lVar17);\nLAB_0028d508:\n      local_60 = 0;\njoined_r0x0028d514:\n      if (1 < uVar20) {\n        uVar18 = 1;\n        pcVar2 = *(char **)(param_7 + (long)*piVar1 * 8);\n        *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d532;\n        uVar14 = strlen(pcVar2);\n        do {\n          pcVar2 = *(char **)(param_7 + (long)piVar1[uVar18] * 8);\n          *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d545;\n          sVar15 = strlen(pcVar2);\n          if (sVar15 < uVar14) {\n            uVar14 = sVar15;\n          }\n          uVar18 = uVar18 + 1;\n        } while (uVar18 < uVar20);\n        if ((ulong)local_48[2] < (ulong)local_48[3]) {\n          local_48[2] = local_48[2] + 1;\n        }\n        else {\n          pcVar3 = *(code **)(*local_48 + 0x50);\n          *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d796;\n          (*pcVar3)();\n        }\n        local_60 = local_60 + 1;\n        local_40 = 0xffffffff;\n        if (uVar14 <= local_60) goto LAB_0028d487;\n        cVar8 = '\x01';\n        if (local_48 != (long *)0x0) {\n          cVar8 = '\0';\n          if ((ulong)local_48[3] <= (ulong)local_48[2]) {\n            pcVar3 = *(code **)(*local_48 + 0x48);\n            *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d7a1;\n            iVar11 = (*pcVar3)();\n            cVar8 = '\0';\n            if (iVar11 == -1) {\n              local_48 = (long *)0x0;\n              cVar8 = '\x01';\n            }\n          }\n        }\n        bVar10 = local_58 != (long *)0x0 && (int)local_50 == -1;\n        cVar9 = (int)local_50 == -1;\n        if ((bVar10) && (cVar9 = '\0', (ulong)local_58[3] <= (ulong)local_58[2])) {\n          local_69 = '\0';\n          pcVar3 = *(code **)(*local_58 + 0x48);\n          local_6a = bVar10;\n          *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d736;\n          iVar11 = (*pcVar3)();\n          cVar9 = local_69;\n          if (iVar11 == -1) {\n            local_58 = (long *)0x0;\n            cVar9 = local_6a;\n          }\n        }\n        if (cVar9 == cVar8) goto LAB_0028d487;\n        uVar14 = 0;\n        do {\n          while( true ) {\n            cVar8 = *(char *)(*(long *)(param_7 + (long)piVar1[uVar14] * 8) + local_60);\n            uVar12 = local_40;\n            if ((local_48 != (long *)0x0) && (local_40 == 0xffffffff)) {\n              if ((byte *)local_48[2] < (byte *)local_48[3]) {\n                uVar12 = (uint)*(byte *)local_48[2];\n              }\n              else {\n                pcVar3 = *(code **)(*local_48 + 0x48);\n                local_69 = cVar8;\n                *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d76a;\n                uVar12 = (*pcVar3)();\n                cVar8 = local_69;\n                if (uVar12 == 0xffffffff) {\n                  local_48 = (long *)0x0;\n                  uVar12 = 0xffffffff;\n                }\n              }\n            }\n            if (cVar8 != (char)uVar12) break;\n            uVar14 = uVar14 + 1;\n            if (uVar20 <= uVar14) goto joined_r0x0028d514;\n          }\n          uVar20 = uVar20 - 1;\n          piVar1[uVar14] = piVar1[uVar20];\n        } while (uVar14 < uVar20);\n        goto joined_r0x0028d514;\n      }\n      if (uVar20 == 1) {\n        if ((ulong)local_48[2] < (ulong)local_48[3]) {\n          local_48[2] = local_48[2] + 1;\n        }\n        else {\n          pcVar3 = *(code **)(*local_48 + 0x50);\n          *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d7fe;\n          (*pcVar3)();\n        }\n        uVar20 = local_60;\n        local_40 = 0xffffffff;\n        pcVar2 = *(char **)(param_7 + (long)*piVar1 * 8);\n        local_60 = CONCAT44(local_60._4_4_,*piVar1);\n        sVar19 = uVar20 + 1;\n        *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d670;\n        sVar15 = strlen(pcVar2);\n        if (sVar19 < sVar15) {\n          do {\n            pplVar7 = local_68;\n            pplVar6 = local_78;\n            *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d6c9;\n            cVar8 = FUN_0028d360(pplVar7,pplVar6);\n            if (cVar8 != '\0') goto LAB_0028d487;\n            cVar8 = pcVar2[sVar19];\n            uVar12 = local_40;\n            if ((local_48 == (long *)0x0) || (local_40 != 0xffffffff)) {\nLAB_0028d688:\n              if (cVar8 != (char)uVar12) goto LAB_0028d487;\n              pcVar16 = (char *)local_48[2];\n              if (pcVar16 < (char *)local_48[3]) goto LAB_0028d6a3;\n              pcVar3 = *(code **)(*local_48 + 0x50);\n              *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d7c3;\n              (*pcVar3)();\n            }\n            else {\n              pcVar16 = (char *)local_48[2];\n              if ((char *)local_48[3] <= pcVar16) {\n                pcVar3 = *(code **)(*local_48 + 0x48);\n                *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d7e2;\n                uVar12 = (*pcVar3)();\n                if (uVar12 == 0xffffffff) {\n                  local_48 = (long *)0x0;\n                }\n                goto LAB_0028d688;\n              }\n              if (cVar8 != *pcVar16) goto LAB_0028d487;\nLAB_0028d6a3:\n              local_48[2] = (long)(pcVar16 + 1);\n            }\n            sVar19 = sVar19 + 1;\n            local_40 = 0xffffffff;\n          } while (sVar19 != sVar15);\n        }\n        else if (sVar19 != sVar15) goto LAB_0028d487;\n        *local_80 = (undefined4)local_60;\n        goto LAB_0028d48e;\n      }\n    }" if (parenthesized_expression "(param_8 != 0)" ( (binary_expression "param_8 != 0" identifier != number_literal) )) (compound_statement "{\n      lVar17 = 0;\n      uVar20 = 0;\n      do {\n        while (**(char **)(param_7 + lVar17 * 8) == cVar8) {\nLAB_0028d4f6:\n          piVar1[uVar20] = (int)lVar17;\n          uVar20 = uVar20 + 1;\n          lVar17 = lVar17 + 1;\n          if (param_8 == lVar17) goto LAB_0028d508;\n        }\n        local_60 = CONCAT71(local_60._1_7_,cVar8);\n        pcVar3 = *(code **)(*plVar13 + 0x10);\n        *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d4d6;\n        cVar9 = (*pcVar3)(plVar13);\n        cVar8 = (char)local_60;\n        if ((char)local_60 == cVar9) goto LAB_0028d4f6;\n        lVar17 = lVar17 + 1;\n      } while (param_8 != lVar17);\nLAB_0028d508:\n      local_60 = 0;\njoined_r0x0028d514:\n      if (1 < uVar20) {\n        uVar18 = 1;\n        pcVar2 = *(char **)(param_7 + (long)*piVar1 * 8);\n        *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d532;\n        uVar14 = strlen(pcVar2);\n        do {\n          pcVar2 = *(char **)(param_7 + (long)piVar1[uVar18] * 8);\n          *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d545;\n          sVar15 = strlen(pcVar2);\n          if (sVar15 < uVar14) {\n            uVar14 = sVar15;\n          }\n          uVar18 = uVar18 + 1;\n        } while (uVar18 < uVar20);\n        if ((ulong)local_48[2] < (ulong)local_48[3]) {\n          local_48[2] = local_48[2] + 1;\n        }\n        else {\n          pcVar3 = *(code **)(*local_48 + 0x50);\n          *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d796;\n          (*pcVar3)();\n        }\n        local_60 = local_60 + 1;\n        local_40 = 0xffffffff;\n        if (uVar14 <= local_60) goto LAB_0028d487;\n        cVar8 = '\x01';\n        if (local_48 != (long *)0x0) {\n          cVar8 = '\0';\n          if ((ulong)local_48[3] <= (ulong)local_48[2]) {\n            pcVar3 = *(code **)(*local_48 + 0x48);\n            *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d7a1;\n            iVar11 = (*pcVar3)();\n            cVar8 = '\0';\n            if (iVar11 == -1) {\n              local_48 = (long *)0x0;\n              cVar8 = '\x01';\n            }\n          }\n        }\n        bVar10 = local_58 != (long *)0x0 && (int)local_50 == -1;\n        cVar9 = (int)local_50 == -1;\n        if ((bVar10) && (cVar9 = '\0', (ulong)local_58[3] <= (ulong)local_58[2])) {\n          local_69 = '\0';\n          pcVar3 = *(code **)(*local_58 + 0x48);\n          local_6a = bVar10;\n          *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d736;\n          iVar11 = (*pcVar3)();\n          cVar9 = local_69;\n          if (iVar11 == -1) {\n            local_58 = (long *)0x0;\n            cVar9 = local_6a;\n          }\n        }\n        if (cVar9 == cVar8) goto LAB_0028d487;\n        uVar14 = 0;\n        do {\n          while( true ) {\n            cVar8 = *(char *)(*(long *)(param_7 + (long)piVar1[uVar14] * 8) + local_60);\n            uVar12 = local_40;\n            if ((local_48 != (long *)0x0) && (local_40 == 0xffffffff)) {\n              if ((byte *)local_48[2] < (byte *)local_48[3]) {\n                uVar12 = (uint)*(byte *)local_48[2];\n              }\n              else {\n                pcVar3 = *(code **)(*local_48 + 0x48);\n                local_69 = cVar8;\n                *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d76a;\n                uVar12 = (*pcVar3)();\n                cVar8 = local_69;\n                if (uVar12 == 0xffffffff) {\n                  local_48 = (long *)0x0;\n                  uVar12 = 0xffffffff;\n                }\n              }\n            }\n            if (cVar8 != (char)uVar12) break;\n            uVar14 = uVar14 + 1;\n            if (uVar20 <= uVar14) goto joined_r0x0028d514;\n          }\n          uVar20 = uVar20 - 1;\n          piVar1[uVar14] = piVar1[uVar20];\n        } while (uVar14 < uVar20);\n        goto joined_r0x0028d514;\n      }\n      if (uVar20 == 1) {\n        if ((ulong)local_48[2] < (ulong)local_48[3]) {\n          local_48[2] = local_48[2] + 1;\n        }\n        else {\n          pcVar3 = *(code **)(*local_48 + 0x50);\n          *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d7fe;\n          (*pcVar3)();\n        }\n        uVar20 = local_60;\n        local_40 = 0xffffffff;\n        pcVar2 = *(char **)(param_7 + (long)*piVar1 * 8);\n        local_60 = CONCAT44(local_60._4_4_,*piVar1);\n        sVar19 = uVar20 + 1;\n        *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d670;\n        sVar15 = strlen(pcVar2);\n        if (sVar19 < sVar15) {\n          do {\n            pplVar7 = local_68;\n            pplVar6 = local_78;\n            *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d6c9;\n            cVar8 = FUN_0028d360(pplVar7,pplVar6);\n            if (cVar8 != '\0') goto LAB_0028d487;\n            cVar8 = pcVar2[sVar19];\n            uVar12 = local_40;\n            if ((local_48 == (long *)0x0) || (local_40 != 0xffffffff)) {\nLAB_0028d688:\n              if (cVar8 != (char)uVar12) goto LAB_0028d487;\n              pcVar16 = (char *)local_48[2];\n              if (pcVar16 < (char *)local_48[3]) goto LAB_0028d6a3;\n              pcVar3 = *(code **)(*local_48 + 0x50);\n              *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d7c3;\n              (*pcVar3)();\n            }\n            else {\n              pcVar16 = (char *)local_48[2];\n              if ((char *)local_48[3] <= pcVar16) {\n                pcVar3 = *(code **)(*local_48 + 0x48);\n                *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d7e2;\n                uVar12 = (*pcVar3)();\n                if (uVar12 == 0xffffffff) {\n                  local_48 = (long *)0x0;\n                }\n                goto LAB_0028d688;\n              }\n              if (cVar8 != *pcVar16) goto LAB_0028d487;\nLAB_0028d6a3:\n              local_48[2] = (long)(pcVar16 + 1);\n            }\n            sVar19 = sVar19 + 1;\n            local_40 = 0xffffffff;\n          } while (sVar19 != sVar15);\n        }\n        else if (sVar19 != sVar15) goto LAB_0028d487;\n        *local_80 = (undefined4)local_60;\n        goto LAB_0028d48e;\n      }\n    }" { (expression_statement "lVar17 = 0;" (assignment_expression "lVar17 = 0" identifier = number_literal) ;) (expression_statement "uVar20 = 0;" (assignment_expression "uVar20 = 0" identifier = number_literal) ;) (do_statement "do {\n        while (**(char **)(param_7 + lVar17 * 8) == cVar8) {\nLAB_0028d4f6:\n          piVar1[uVar20] = (int)lVar17;\n          uVar20 = uVar20 + 1;\n          lVar17 = lVar17 + 1;\n          if (param_8 == lVar17) goto LAB_0028d508;\n        }\n        local_60 = CONCAT71(local_60._1_7_,cVar8);\n        pcVar3 = *(code **)(*plVar13 + 0x10);\n        *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d4d6;\n        cVar9 = (*pcVar3)(plVar13);\n        cVar8 = (char)local_60;\n        if ((char)local_60 == cVar9) goto LAB_0028d4f6;\n        lVar17 = lVar17 + 1;\n      } while (param_8 != lVar17);" do (compound_statement "{\n        while (**(char **)(param_7 + lVar17 * 8) == cVar8) {\nLAB_0028d4f6:\n          piVar1[uVar20] = (int)lVar17;\n          uVar20 = uVar20 + 1;\n          lVar17 = lVar17 + 1;\n          if (param_8 == lVar17) goto LAB_0028d508;\n        }\n        local_60 = CONCAT71(local_60._1_7_,cVar8);\n        pcVar3 = *(code **)(*plVar13 + 0x10);\n        *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d4d6;\n        cVar9 = (*pcVar3)(plVar13);\n        cVar8 = (char)local_60;\n        if ((char)local_60 == cVar9) goto LAB_0028d4f6;\n        lVar17 = lVar17 + 1;\n      }" { (while_statement "while (**(char **)(param_7 + lVar17 * 8) == cVar8) {\nLAB_0028d4f6:\n          piVar1[uVar20] = (int)lVar17;\n          uVar20 = uVar20 + 1;\n          lVar17 = lVar17 + 1;\n          if (param_8 == lVar17) goto LAB_0028d508;\n        }" while (parenthesized_expression "(**(char **)(param_7 + lVar17 * 8) == cVar8)" ( (binary_expression "**(char **)(param_7 + lVar17 * 8) == cVar8" (pointer_expression "**(char **)(param_7 + lVar17 * 8)" * (pointer_expression "*(char **)(param_7 + lVar17 * 8)" * (cast_expression "(char **)(param_7 + lVar17 * 8)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_7 + lVar17 * 8)" ( (binary_expression "param_7 + lVar17 * 8" identifier + (binary_expression "lVar17 * 8" identifier * number_literal)) ))))) == identifier) )) (compound_statement "{\nLAB_0028d4f6:\n          piVar1[uVar20] = (int)lVar17;\n          uVar20 = uVar20 + 1;\n          lVar17 = lVar17 + 1;\n          if (param_8 == lVar17) goto LAB_0028d508;\n        }" { (labeled_statement "LAB_0028d4f6:\n          piVar1[uVar20] = (int)lVar17;" statement_identifier : (expression_statement "piVar1[uVar20] = (int)lVar17;" (assignment_expression "piVar1[uVar20] = (int)lVar17" (subscript_expression "piVar1[uVar20]" identifier [ identifier ]) = (cast_expression "(int)lVar17" ( (type_descriptor "int" primitive_type) ) identifier)) ;)) (expression_statement "uVar20 = uVar20 + 1;" (assignment_expression "uVar20 = uVar20 + 1" identifier = (binary_expression "uVar20 + 1" identifier + number_literal)) ;) (expression_statement "lVar17 = lVar17 + 1;" (assignment_expression "lVar17 = lVar17 + 1" identifier = (binary_expression "lVar17 + 1" identifier + number_literal)) ;) (if_statement "if (param_8 == lVar17) goto LAB_0028d508;" if (parenthesized_expression "(param_8 == lVar17)" ( (binary_expression "param_8 == lVar17" identifier == identifier) )) (goto_statement "goto LAB_0028d508;" goto statement_identifier ;)) })) (expression_statement "local_60 = CONCAT71(local_60._1_7_,cVar8);" (assignment_expression "local_60 = CONCAT71(local_60._1_7_,cVar8)" identifier = (call_expression "CONCAT71(local_60._1_7_,cVar8)" identifier (argument_list "(local_60._1_7_,cVar8)" ( (field_expression "local_60._1_7_" identifier . field_identifier) , identifier )))) ;) (expression_statement "pcVar3 = *(code **)(*plVar13 + 0x10);" (assignment_expression "pcVar3 = *(code **)(*plVar13 + 0x10)" identifier = (pointer_expression "*(code **)(*plVar13 + 0x10)" * (cast_expression "(code **)(*plVar13 + 0x10)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*plVar13 + 0x10)" ( (binary_expression "*plVar13 + 0x10" (pointer_expression "*plVar13" * identifier) + number_literal) ))))) ;) (expression_statement "*(undefined8 *)((long)auStack_90 + lVar4) = 0x28d4d6;" (assignment_expression "*(undefined8 *)((long)auStack_90 + lVar4) = 0x28d4d6" (pointer_expression "*(undefined8 *)((long)auStack_90 + lVar4)" * (cast_expression "(undefined8 *)((long)auStack_90 + lVar4)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)auStack_90 + lVar4)" ( (binary_expression "(long)auStack_90 + lVar4" (cast_expression "(long)auStack_90" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + identifier) )))) = number_literal) ;) (expression_statement "cVar9 = (*pcVar3)(plVar13);" (assignment_expression "cVar9 = (*pcVar3)(plVar13)" identifier = (call_expression "(*pcVar3)(plVar13)" (parenthesized_expression "(*pcVar3)" ( (pointer_expression "*pcVar3" * identifier) )) (argument_list "(plVar13)" ( identifier )))) ;) (expression_statement "cVar8 = (char)local_60;" (assignment_expression "cVar8 = (char)local_60" identifier = (cast_expression "(char)local_60" ( (type_descriptor "char" primitive_type) ) identifier)) ;) (if_statement "if ((char)local_60 == cVar9) goto LAB_0028d4f6;" if (parenthesized_expression "((char)local_60 == cVar9)" ( (binary_expression "(char)local_60 == cVar9" (cast_expression "(char)local_60" ( (type_descriptor "char" primitive_type) ) identifier) == identifier) )) (goto_statement "goto LAB_0028d4f6;" goto statement_identifier ;)) (expression_statement "lVar17 = lVar17 + 1;" (assignment_expression "lVar17 = lVar17 + 1" identifier = (binary_expression "lVar17 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(param_8 != lVar17)" ( (binary_expression "param_8 != lVar17" identifier != identifier) )) ;) (labeled_statement "LAB_0028d508:\n      local_60 = 0;" statement_identifier : (expression_statement "local_60 = 0;" (assignment_expression "local_60 = 0" identifier = number_literal) ;)) (labeled_statement "joined_r0x0028d514:\n      if (1 < uVar20) {\n        uVar18 = 1;\n        pcVar2 = *(char **)(param_7 + (long)*piVar1 * 8);\n        *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d532;\n        uVar14 = strlen(pcVar2);\n        do {\n          pcVar2 = *(char **)(param_7 + (long)piVar1[uVar18] * 8);\n          *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d545;\n          sVar15 = strlen(pcVar2);\n          if (sVar15 < uVar14) {\n            uVar14 = sVar15;\n          }\n          uVar18 = uVar18 + 1;\n        } while (uVar18 < uVar20);\n        if ((ulong)local_48[2] < (ulong)local_48[3]) {\n          local_48[2] = local_48[2] + 1;\n        }\n        else {\n          pcVar3 = *(code **)(*local_48 + 0x50);\n          *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d796;\n          (*pcVar3)();\n        }\n        local_60 = local_60 + 1;\n        local_40 = 0xffffffff;\n        if (uVar14 <= local_60) goto LAB_0028d487;\n        cVar8 = '\x01';\n        if (local_48 != (long *)0x0) {\n          cVar8 = '\0';\n          if ((ulong)local_48[3] <= (ulong)local_48[2]) {\n            pcVar3 = *(code **)(*local_48 + 0x48);\n            *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d7a1;\n            iVar11 = (*pcVar3)();\n            cVar8 = '\0';\n            if (iVar11 == -1) {\n              local_48 = (long *)0x0;\n              cVar8 = '\x01';\n            }\n          }\n        }\n        bVar10 = local_58 != (long *)0x0 && (int)local_50 == -1;\n        cVar9 = (int)local_50 == -1;\n        if ((bVar10) && (cVar9 = '\0', (ulong)local_58[3] <= (ulong)local_58[2])) {\n          local_69 = '\0';\n          pcVar3 = *(code **)(*local_58 + 0x48);\n          local_6a = bVar10;\n          *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d736;\n          iVar11 = (*pcVar3)();\n          cVar9 = local_69;\n          if (iVar11 == -1) {\n            local_58 = (long *)0x0;\n            cVar9 = local_6a;\n          }\n        }\n        if (cVar9 == cVar8) goto LAB_0028d487;\n        uVar14 = 0;\n        do {\n          while( true ) {\n            cVar8 = *(char *)(*(long *)(param_7 + (long)piVar1[uVar14] * 8) + local_60);\n            uVar12 = local_40;\n            if ((local_48 != (long *)0x0) && (local_40 == 0xffffffff)) {\n              if ((byte *)local_48[2] < (byte *)local_48[3]) {\n                uVar12 = (uint)*(byte *)local_48[2];\n              }\n              else {\n                pcVar3 = *(code **)(*local_48 + 0x48);\n                local_69 = cVar8;\n                *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d76a;\n                uVar12 = (*pcVar3)();\n                cVar8 = local_69;\n                if (uVar12 == 0xffffffff) {\n                  local_48 = (long *)0x0;\n                  uVar12 = 0xffffffff;\n                }\n              }\n            }\n            if (cVar8 != (char)uVar12) break;\n            uVar14 = uVar14 + 1;\n            if (uVar20 <= uVar14) goto joined_r0x0028d514;\n          }\n          uVar20 = uVar20 - 1;\n          piVar1[uVar14] = piVar1[uVar20];\n        } while (uVar14 < uVar20);\n        goto joined_r0x0028d514;\n      }" statement_identifier : (if_statement "if (1 < uVar20) {\n        uVar18 = 1;\n        pcVar2 = *(char **)(param_7 + (long)*piVar1 * 8);\n        *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d532;\n        uVar14 = strlen(pcVar2);\n        do {\n          pcVar2 = *(char **)(param_7 + (long)piVar1[uVar18] * 8);\n          *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d545;\n          sVar15 = strlen(pcVar2);\n          if (sVar15 < uVar14) {\n            uVar14 = sVar15;\n          }\n          uVar18 = uVar18 + 1;\n        } while (uVar18 < uVar20);\n        if ((ulong)local_48[2] < (ulong)local_48[3]) {\n          local_48[2] = local_48[2] + 1;\n        }\n        else {\n          pcVar3 = *(code **)(*local_48 + 0x50);\n          *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d796;\n          (*pcVar3)();\n        }\n        local_60 = local_60 + 1;\n        local_40 = 0xffffffff;\n        if (uVar14 <= local_60) goto LAB_0028d487;\n        cVar8 = '\x01';\n        if (local_48 != (long *)0x0) {\n          cVar8 = '\0';\n          if ((ulong)local_48[3] <= (ulong)local_48[2]) {\n            pcVar3 = *(code **)(*local_48 + 0x48);\n            *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d7a1;\n            iVar11 = (*pcVar3)();\n            cVar8 = '\0';\n            if (iVar11 == -1) {\n              local_48 = (long *)0x0;\n              cVar8 = '\x01';\n            }\n          }\n        }\n        bVar10 = local_58 != (long *)0x0 && (int)local_50 == -1;\n        cVar9 = (int)local_50 == -1;\n        if ((bVar10) && (cVar9 = '\0', (ulong)local_58[3] <= (ulong)local_58[2])) {\n          local_69 = '\0';\n          pcVar3 = *(code **)(*local_58 + 0x48);\n          local_6a = bVar10;\n          *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d736;\n          iVar11 = (*pcVar3)();\n          cVar9 = local_69;\n          if (iVar11 == -1) {\n            local_58 = (long *)0x0;\n            cVar9 = local_6a;\n          }\n        }\n        if (cVar9 == cVar8) goto LAB_0028d487;\n        uVar14 = 0;\n        do {\n          while( true ) {\n            cVar8 = *(char *)(*(long *)(param_7 + (long)piVar1[uVar14] * 8) + local_60);\n            uVar12 = local_40;\n            if ((local_48 != (long *)0x0) && (local_40 == 0xffffffff)) {\n              if ((byte *)local_48[2] < (byte *)local_48[3]) {\n                uVar12 = (uint)*(byte *)local_48[2];\n              }\n              else {\n                pcVar3 = *(code **)(*local_48 + 0x48);\n                local_69 = cVar8;\n                *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d76a;\n                uVar12 = (*pcVar3)();\n                cVar8 = local_69;\n                if (uVar12 == 0xffffffff) {\n                  local_48 = (long *)0x0;\n                  uVar12 = 0xffffffff;\n                }\n              }\n            }\n            if (cVar8 != (char)uVar12) break;\n            uVar14 = uVar14 + 1;\n            if (uVar20 <= uVar14) goto joined_r0x0028d514;\n          }\n          uVar20 = uVar20 - 1;\n          piVar1[uVar14] = piVar1[uVar20];\n        } while (uVar14 < uVar20);\n        goto joined_r0x0028d514;\n      }" if (parenthesized_expression "(1 < uVar20)" ( (binary_expression "1 < uVar20" number_literal < identifier) )) (compound_statement "{\n        uVar18 = 1;\n        pcVar2 = *(char **)(param_7 + (long)*piVar1 * 8);\n        *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d532;\n        uVar14 = strlen(pcVar2);\n        do {\n          pcVar2 = *(char **)(param_7 + (long)piVar1[uVar18] * 8);\n          *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d545;\n          sVar15 = strlen(pcVar2);\n          if (sVar15 < uVar14) {\n            uVar14 = sVar15;\n          }\n          uVar18 = uVar18 + 1;\n        } while (uVar18 < uVar20);\n        if ((ulong)local_48[2] < (ulong)local_48[3]) {\n          local_48[2] = local_48[2] + 1;\n        }\n        else {\n          pcVar3 = *(code **)(*local_48 + 0x50);\n          *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d796;\n          (*pcVar3)();\n        }\n        local_60 = local_60 + 1;\n        local_40 = 0xffffffff;\n        if (uVar14 <= local_60) goto LAB_0028d487;\n        cVar8 = '\x01';\n        if (local_48 != (long *)0x0) {\n          cVar8 = '\0';\n          if ((ulong)local_48[3] <= (ulong)local_48[2]) {\n            pcVar3 = *(code **)(*local_48 + 0x48);\n            *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d7a1;\n            iVar11 = (*pcVar3)();\n            cVar8 = '\0';\n            if (iVar11 == -1) {\n              local_48 = (long *)0x0;\n              cVar8 = '\x01';\n            }\n          }\n        }\n        bVar10 = local_58 != (long *)0x0 && (int)local_50 == -1;\n        cVar9 = (int)local_50 == -1;\n        if ((bVar10) && (cVar9 = '\0', (ulong)local_58[3] <= (ulong)local_58[2])) {\n          local_69 = '\0';\n          pcVar3 = *(code **)(*local_58 + 0x48);\n          local_6a = bVar10;\n          *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d736;\n          iVar11 = (*pcVar3)();\n          cVar9 = local_69;\n          if (iVar11 == -1) {\n            local_58 = (long *)0x0;\n            cVar9 = local_6a;\n          }\n        }\n        if (cVar9 == cVar8) goto LAB_0028d487;\n        uVar14 = 0;\n        do {\n          while( true ) {\n            cVar8 = *(char *)(*(long *)(param_7 + (long)piVar1[uVar14] * 8) + local_60);\n            uVar12 = local_40;\n            if ((local_48 != (long *)0x0) && (local_40 == 0xffffffff)) {\n              if ((byte *)local_48[2] < (byte *)local_48[3]) {\n                uVar12 = (uint)*(byte *)local_48[2];\n              }\n              else {\n                pcVar3 = *(code **)(*local_48 + 0x48);\n                local_69 = cVar8;\n                *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d76a;\n                uVar12 = (*pcVar3)();\n                cVar8 = local_69;\n                if (uVar12 == 0xffffffff) {\n                  local_48 = (long *)0x0;\n                  uVar12 = 0xffffffff;\n                }\n              }\n            }\n            if (cVar8 != (char)uVar12) break;\n            uVar14 = uVar14 + 1;\n            if (uVar20 <= uVar14) goto joined_r0x0028d514;\n          }\n          uVar20 = uVar20 - 1;\n          piVar1[uVar14] = piVar1[uVar20];\n        } while (uVar14 < uVar20);\n        goto joined_r0x0028d514;\n      }" { (expression_statement "uVar18 = 1;" (assignment_expression "uVar18 = 1" identifier = number_literal) ;) (expression_statement "pcVar2 = *(char **)(param_7 + (long)*piVar1 * 8);" (assignment_expression "pcVar2 = *(char **)(param_7 + (long)*piVar1 * 8)" identifier = (pointer_expression "*(char **)(param_7 + (long)*piVar1 * 8)" * (cast_expression "(char **)(param_7 + (long)*piVar1 * 8)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_7 + (long)*piVar1 * 8)" ( (binary_expression "param_7 + (long)*piVar1 * 8" identifier + (binary_expression "(long)*piVar1 * 8" (cast_expression "(long)*piVar1" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (pointer_expression "*piVar1" * identifier)) * number_literal)) ))))) ;) (expression_statement "*(undefined8 *)((long)auStack_90 + lVar4) = 0x28d532;" (assignment_expression "*(undefined8 *)((long)auStack_90 + lVar4) = 0x28d532" (pointer_expression "*(undefined8 *)((long)auStack_90 + lVar4)" * (cast_expression "(undefined8 *)((long)auStack_90 + lVar4)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)auStack_90 + lVar4)" ( (binary_expression "(long)auStack_90 + lVar4" (cast_expression "(long)auStack_90" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + identifier) )))) = number_literal) ;) (expression_statement "uVar14 = strlen(pcVar2);" (assignment_expression "uVar14 = strlen(pcVar2)" identifier = (call_expression "strlen(pcVar2)" identifier (argument_list "(pcVar2)" ( identifier )))) ;) (do_statement "do {\n          pcVar2 = *(char **)(param_7 + (long)piVar1[uVar18] * 8);\n          *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d545;\n          sVar15 = strlen(pcVar2);\n          if (sVar15 < uVar14) {\n            uVar14 = sVar15;\n          }\n          uVar18 = uVar18 + 1;\n        } while (uVar18 < uVar20);" do (compound_statement "{\n          pcVar2 = *(char **)(param_7 + (long)piVar1[uVar18] * 8);\n          *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d545;\n          sVar15 = strlen(pcVar2);\n          if (sVar15 < uVar14) {\n            uVar14 = sVar15;\n          }\n          uVar18 = uVar18 + 1;\n        }" { (expression_statement "pcVar2 = *(char **)(param_7 + (long)piVar1[uVar18] * 8);" (assignment_expression "pcVar2 = *(char **)(param_7 + (long)piVar1[uVar18] * 8)" identifier = (pointer_expression "*(char **)(param_7 + (long)piVar1[uVar18] * 8)" * (cast_expression "(char **)(param_7 + (long)piVar1[uVar18] * 8)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_7 + (long)piVar1[uVar18] * 8)" ( (binary_expression "param_7 + (long)piVar1[uVar18] * 8" identifier + (binary_expression "(long)piVar1[uVar18] * 8" (cast_expression "(long)piVar1[uVar18]" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (subscript_expression "piVar1[uVar18]" identifier [ identifier ])) * number_literal)) ))))) ;) (expression_statement "*(undefined8 *)((long)auStack_90 + lVar4) = 0x28d545;" (assignment_expression "*(undefined8 *)((long)auStack_90 + lVar4) = 0x28d545" (pointer_expression "*(undefined8 *)((long)auStack_90 + lVar4)" * (cast_expression "(undefined8 *)((long)auStack_90 + lVar4)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)auStack_90 + lVar4)" ( (binary_expression "(long)auStack_90 + lVar4" (cast_expression "(long)auStack_90" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + identifier) )))) = number_literal) ;) (expression_statement "sVar15 = strlen(pcVar2);" (assignment_expression "sVar15 = strlen(pcVar2)" identifier = (call_expression "strlen(pcVar2)" identifier (argument_list "(pcVar2)" ( identifier )))) ;) (if_statement "if (sVar15 < uVar14) {\n            uVar14 = sVar15;\n          }" if (parenthesized_expression "(sVar15 < uVar14)" ( (binary_expression "sVar15 < uVar14" identifier < identifier) )) (compound_statement "{\n            uVar14 = sVar15;\n          }" { (expression_statement "uVar14 = sVar15;" (assignment_expression "uVar14 = sVar15" identifier = identifier) ;) })) (expression_statement "uVar18 = uVar18 + 1;" (assignment_expression "uVar18 = uVar18 + 1" identifier = (binary_expression "uVar18 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar18 < uVar20)" ( (binary_expression "uVar18 < uVar20" identifier < identifier) )) ;) (if_statement "if ((ulong)local_48[2] < (ulong)local_48[3]) {\n          local_48[2] = local_48[2] + 1;\n        }\n        else {\n          pcVar3 = *(code **)(*local_48 + 0x50);\n          *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d796;\n          (*pcVar3)();\n        }" if (parenthesized_expression "((ulong)local_48[2] < (ulong)local_48[3])" ( (binary_expression "(ulong)local_48[2] < (ulong)local_48[3]" (cast_expression "(ulong)local_48[2]" ( (type_descriptor "ulong" type_identifier) ) (subscript_expression "local_48[2]" identifier [ number_literal ])) < (cast_expression "(ulong)local_48[3]" ( (type_descriptor "ulong" type_identifier) ) (subscript_expression "local_48[3]" identifier [ number_literal ]))) )) (compound_statement "{\n          local_48[2] = local_48[2] + 1;\n        }" { (expression_statement "local_48[2] = local_48[2] + 1;" (assignment_expression "local_48[2] = local_48[2] + 1" (subscript_expression "local_48[2]" identifier [ number_literal ]) = (binary_expression "local_48[2] + 1" (subscript_expression "local_48[2]" identifier [ number_literal ]) + number_literal)) ;) }) (else_clause "else {\n          pcVar3 = *(code **)(*local_48 + 0x50);\n          *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d796;\n          (*pcVar3)();\n        }" else (compound_statement "{\n          pcVar3 = *(code **)(*local_48 + 0x50);\n          *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d796;\n          (*pcVar3)();\n        }" { (expression_statement "pcVar3 = *(code **)(*local_48 + 0x50);" (assignment_expression "pcVar3 = *(code **)(*local_48 + 0x50)" identifier = (pointer_expression "*(code **)(*local_48 + 0x50)" * (cast_expression "(code **)(*local_48 + 0x50)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*local_48 + 0x50)" ( (binary_expression "*local_48 + 0x50" (pointer_expression "*local_48" * identifier) + number_literal) ))))) ;) (expression_statement "*(undefined8 *)((long)auStack_90 + lVar4) = 0x28d796;" (assignment_expression "*(undefined8 *)((long)auStack_90 + lVar4) = 0x28d796" (pointer_expression "*(undefined8 *)((long)auStack_90 + lVar4)" * (cast_expression "(undefined8 *)((long)auStack_90 + lVar4)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)auStack_90 + lVar4)" ( (binary_expression "(long)auStack_90 + lVar4" (cast_expression "(long)auStack_90" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + identifier) )))) = number_literal) ;) (expression_statement "(*pcVar3)();" (call_expression "(*pcVar3)()" (parenthesized_expression "(*pcVar3)" ( (pointer_expression "*pcVar3" * identifier) )) (argument_list "()" ( ))) ;) }))) (expression_statement "local_60 = local_60 + 1;" (assignment_expression "local_60 = local_60 + 1" identifier = (binary_expression "local_60 + 1" identifier + number_literal)) ;) (expression_statement "local_40 = 0xffffffff;" (assignment_expression "local_40 = 0xffffffff" identifier = number_literal) ;) (if_statement "if (uVar14 <= local_60) goto LAB_0028d487;" if (parenthesized_expression "(uVar14 <= local_60)" ( (binary_expression "uVar14 <= local_60" identifier <= identifier) )) (goto_statement "goto LAB_0028d487;" goto statement_identifier ;)) (expression_statement "cVar8 = '\x01';" (assignment_expression "cVar8 = '\x01'" identifier = (char_literal "'\x01'" ' escape_sequence ')) ;) (if_statement "if (local_48 != (long *)0x0) {\n          cVar8 = '\0';\n          if ((ulong)local_48[3] <= (ulong)local_48[2]) {\n            pcVar3 = *(code **)(*local_48 + 0x48);\n            *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d7a1;\n            iVar11 = (*pcVar3)();\n            cVar8 = '\0';\n            if (iVar11 == -1) {\n              local_48 = (long *)0x0;\n              cVar8 = '\x01';\n            }\n          }\n        }" if (parenthesized_expression "(local_48 != (long *)0x0)" ( (binary_expression "local_48 != (long *)0x0" identifier != (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          cVar8 = '\0';\n          if ((ulong)local_48[3] <= (ulong)local_48[2]) {\n            pcVar3 = *(code **)(*local_48 + 0x48);\n            *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d7a1;\n            iVar11 = (*pcVar3)();\n            cVar8 = '\0';\n            if (iVar11 == -1) {\n              local_48 = (long *)0x0;\n              cVar8 = '\x01';\n            }\n          }\n        }" { (expression_statement "cVar8 = '\0';" (assignment_expression "cVar8 = '\0'" identifier = (char_literal "'\0'" ' escape_sequence ')) ;) (if_statement "if ((ulong)local_48[3] <= (ulong)local_48[2]) {\n            pcVar3 = *(code **)(*local_48 + 0x48);\n            *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d7a1;\n            iVar11 = (*pcVar3)();\n            cVar8 = '\0';\n            if (iVar11 == -1) {\n              local_48 = (long *)0x0;\n              cVar8 = '\x01';\n            }\n          }" if (parenthesized_expression "((ulong)local_48[3] <= (ulong)local_48[2])" ( (binary_expression "(ulong)local_48[3] <= (ulong)local_48[2]" (cast_expression "(ulong)local_48[3]" ( (type_descriptor "ulong" type_identifier) ) (subscript_expression "local_48[3]" identifier [ number_literal ])) <= (cast_expression "(ulong)local_48[2]" ( (type_descriptor "ulong" type_identifier) ) (subscript_expression "local_48[2]" identifier [ number_literal ]))) )) (compound_statement "{\n            pcVar3 = *(code **)(*local_48 + 0x48);\n            *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d7a1;\n            iVar11 = (*pcVar3)();\n            cVar8 = '\0';\n            if (iVar11 == -1) {\n              local_48 = (long *)0x0;\n              cVar8 = '\x01';\n            }\n          }" { (expression_statement "pcVar3 = *(code **)(*local_48 + 0x48);" (assignment_expression "pcVar3 = *(code **)(*local_48 + 0x48)" identifier = (pointer_expression "*(code **)(*local_48 + 0x48)" * (cast_expression "(code **)(*local_48 + 0x48)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*local_48 + 0x48)" ( (binary_expression "*local_48 + 0x48" (pointer_expression "*local_48" * identifier) + number_literal) ))))) ;) (expression_statement "*(undefined8 *)((long)auStack_90 + lVar4) = 0x28d7a1;" (assignment_expression "*(undefined8 *)((long)auStack_90 + lVar4) = 0x28d7a1" (pointer_expression "*(undefined8 *)((long)auStack_90 + lVar4)" * (cast_expression "(undefined8 *)((long)auStack_90 + lVar4)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)auStack_90 + lVar4)" ( (binary_expression "(long)auStack_90 + lVar4" (cast_expression "(long)auStack_90" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + identifier) )))) = number_literal) ;) (expression_statement "iVar11 = (*pcVar3)();" (assignment_expression "iVar11 = (*pcVar3)()" identifier = (call_expression "(*pcVar3)()" (parenthesized_expression "(*pcVar3)" ( (pointer_expression "*pcVar3" * identifier) )) (argument_list "()" ( )))) ;) (expression_statement "cVar8 = '\0';" (assignment_expression "cVar8 = '\0'" identifier = (char_literal "'\0'" ' escape_sequence ')) ;) (if_statement "if (iVar11 == -1) {\n              local_48 = (long *)0x0;\n              cVar8 = '\x01';\n            }" if (parenthesized_expression "(iVar11 == -1)" ( (binary_expression "iVar11 == -1" identifier == number_literal) )) (compound_statement "{\n              local_48 = (long *)0x0;\n              cVar8 = '\x01';\n            }" { (expression_statement "local_48 = (long *)0x0;" (assignment_expression "local_48 = (long *)0x0" identifier = (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "cVar8 = '\x01';" (assignment_expression "cVar8 = '\x01'" identifier = (char_literal "'\x01'" ' escape_sequence ')) ;) })) })) })) (expression_statement "bVar10 = local_58 != (long *)0x0 && (int)local_50 == -1;" (assignment_expression "bVar10 = local_58 != (long *)0x0 && (int)local_50 == -1" identifier = (binary_expression "local_58 != (long *)0x0 && (int)local_50 == -1" (binary_expression "local_58 != (long *)0x0" identifier != (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) && (binary_expression "(int)local_50 == -1" (cast_expression "(int)local_50" ( (type_descriptor "int" primitive_type) ) identifier) == number_literal))) ;) (expression_statement "cVar9 = (int)local_50 == -1;" (assignment_expression "cVar9 = (int)local_50 == -1" identifier = (binary_expression "(int)local_50 == -1" (cast_expression "(int)local_50" ( (type_descriptor "int" primitive_type) ) identifier) == number_literal)) ;) (if_statement "if ((bVar10) && (cVar9 = '\0', (ulong)local_58[3] <= (ulong)local_58[2])) {\n          local_69 = '\0';\n          pcVar3 = *(code **)(*local_58 + 0x48);\n          local_6a = bVar10;\n          *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d736;\n          iVar11 = (*pcVar3)();\n          cVar9 = local_69;\n          if (iVar11 == -1) {\n            local_58 = (long *)0x0;\n            cVar9 = local_6a;\n          }\n        }" if (parenthesized_expression "((bVar10) && (cVar9 = '\0', (ulong)local_58[3] <= (ulong)local_58[2]))" ( (binary_expression "(bVar10) && (cVar9 = '\0', (ulong)local_58[3] <= (ulong)local_58[2])" (parenthesized_expression "(bVar10)" ( identifier )) && (parenthesized_expression "(cVar9 = '\0', (ulong)local_58[3] <= (ulong)local_58[2])" ( (comma_expression "cVar9 = '\0', (ulong)local_58[3] <= (ulong)local_58[2]" (assignment_expression "cVar9 = '\0'" identifier = (char_literal "'\0'" ' escape_sequence ')) , (binary_expression "(ulong)local_58[3] <= (ulong)local_58[2]" (cast_expression "(ulong)local_58[3]" ( (type_descriptor "ulong" type_identifier) ) (subscript_expression "local_58[3]" identifier [ number_literal ])) <= (cast_expression "(ulong)local_58[2]" ( (type_descriptor "ulong" type_identifier) ) (subscript_expression "local_58[2]" identifier [ number_literal ])))) ))) )) (compound_statement "{\n          local_69 = '\0';\n          pcVar3 = *(code **)(*local_58 + 0x48);\n          local_6a = bVar10;\n          *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d736;\n          iVar11 = (*pcVar3)();\n          cVar9 = local_69;\n          if (iVar11 == -1) {\n            local_58 = (long *)0x0;\n            cVar9 = local_6a;\n          }\n        }" { (expression_statement "local_69 = '\0';" (assignment_expression "local_69 = '\0'" identifier = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "pcVar3 = *(code **)(*local_58 + 0x48);" (assignment_expression "pcVar3 = *(code **)(*local_58 + 0x48)" identifier = (pointer_expression "*(code **)(*local_58 + 0x48)" * (cast_expression "(code **)(*local_58 + 0x48)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*local_58 + 0x48)" ( (binary_expression "*local_58 + 0x48" (pointer_expression "*local_58" * identifier) + number_literal) ))))) ;) (expression_statement "local_6a = bVar10;" (assignment_expression "local_6a = bVar10" identifier = identifier) ;) (expression_statement "*(undefined8 *)((long)auStack_90 + lVar4) = 0x28d736;" (assignment_expression "*(undefined8 *)((long)auStack_90 + lVar4) = 0x28d736" (pointer_expression "*(undefined8 *)((long)auStack_90 + lVar4)" * (cast_expression "(undefined8 *)((long)auStack_90 + lVar4)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)auStack_90 + lVar4)" ( (binary_expression "(long)auStack_90 + lVar4" (cast_expression "(long)auStack_90" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + identifier) )))) = number_literal) ;) (expression_statement "iVar11 = (*pcVar3)();" (assignment_expression "iVar11 = (*pcVar3)()" identifier = (call_expression "(*pcVar3)()" (parenthesized_expression "(*pcVar3)" ( (pointer_expression "*pcVar3" * identifier) )) (argument_list "()" ( )))) ;) (expression_statement "cVar9 = local_69;" (assignment_expression "cVar9 = local_69" identifier = identifier) ;) (if_statement "if (iVar11 == -1) {\n            local_58 = (long *)0x0;\n            cVar9 = local_6a;\n          }" if (parenthesized_expression "(iVar11 == -1)" ( (binary_expression "iVar11 == -1" identifier == number_literal) )) (compound_statement "{\n            local_58 = (long *)0x0;\n            cVar9 = local_6a;\n          }" { (expression_statement "local_58 = (long *)0x0;" (assignment_expression "local_58 = (long *)0x0" identifier = (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "cVar9 = local_6a;" (assignment_expression "cVar9 = local_6a" identifier = identifier) ;) })) })) (if_statement "if (cVar9 == cVar8) goto LAB_0028d487;" if (parenthesized_expression "(cVar9 == cVar8)" ( (binary_expression "cVar9 == cVar8" identifier == identifier) )) (goto_statement "goto LAB_0028d487;" goto statement_identifier ;)) (expression_statement "uVar14 = 0;" (assignment_expression "uVar14 = 0" identifier = number_literal) ;) (do_statement "do {\n          while( true ) {\n            cVar8 = *(char *)(*(long *)(param_7 + (long)piVar1[uVar14] * 8) + local_60);\n            uVar12 = local_40;\n            if ((local_48 != (long *)0x0) && (local_40 == 0xffffffff)) {\n              if ((byte *)local_48[2] < (byte *)local_48[3]) {\n                uVar12 = (uint)*(byte *)local_48[2];\n              }\n              else {\n                pcVar3 = *(code **)(*local_48 + 0x48);\n                local_69 = cVar8;\n                *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d76a;\n                uVar12 = (*pcVar3)();\n                cVar8 = local_69;\n                if (uVar12 == 0xffffffff) {\n                  local_48 = (long *)0x0;\n                  uVar12 = 0xffffffff;\n                }\n              }\n            }\n            if (cVar8 != (char)uVar12) break;\n            uVar14 = uVar14 + 1;\n            if (uVar20 <= uVar14) goto joined_r0x0028d514;\n          }\n          uVar20 = uVar20 - 1;\n          piVar1[uVar14] = piVar1[uVar20];\n        } while (uVar14 < uVar20);" do (compound_statement "{\n          while( true ) {\n            cVar8 = *(char *)(*(long *)(param_7 + (long)piVar1[uVar14] * 8) + local_60);\n            uVar12 = local_40;\n            if ((local_48 != (long *)0x0) && (local_40 == 0xffffffff)) {\n              if ((byte *)local_48[2] < (byte *)local_48[3]) {\n                uVar12 = (uint)*(byte *)local_48[2];\n              }\n              else {\n                pcVar3 = *(code **)(*local_48 + 0x48);\n                local_69 = cVar8;\n                *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d76a;\n                uVar12 = (*pcVar3)();\n                cVar8 = local_69;\n                if (uVar12 == 0xffffffff) {\n                  local_48 = (long *)0x0;\n                  uVar12 = 0xffffffff;\n                }\n              }\n            }\n            if (cVar8 != (char)uVar12) break;\n            uVar14 = uVar14 + 1;\n            if (uVar20 <= uVar14) goto joined_r0x0028d514;\n          }\n          uVar20 = uVar20 - 1;\n          piVar1[uVar14] = piVar1[uVar20];\n        }" { (while_statement "while( true ) {\n            cVar8 = *(char *)(*(long *)(param_7 + (long)piVar1[uVar14] * 8) + local_60);\n            uVar12 = local_40;\n            if ((local_48 != (long *)0x0) && (local_40 == 0xffffffff)) {\n              if ((byte *)local_48[2] < (byte *)local_48[3]) {\n                uVar12 = (uint)*(byte *)local_48[2];\n              }\n              else {\n                pcVar3 = *(code **)(*local_48 + 0x48);\n                local_69 = cVar8;\n                *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d76a;\n                uVar12 = (*pcVar3)();\n                cVar8 = local_69;\n                if (uVar12 == 0xffffffff) {\n                  local_48 = (long *)0x0;\n                  uVar12 = 0xffffffff;\n                }\n              }\n            }\n            if (cVar8 != (char)uVar12) break;\n            uVar14 = uVar14 + 1;\n            if (uVar20 <= uVar14) goto joined_r0x0028d514;\n          }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n            cVar8 = *(char *)(*(long *)(param_7 + (long)piVar1[uVar14] * 8) + local_60);\n            uVar12 = local_40;\n            if ((local_48 != (long *)0x0) && (local_40 == 0xffffffff)) {\n              if ((byte *)local_48[2] < (byte *)local_48[3]) {\n                uVar12 = (uint)*(byte *)local_48[2];\n              }\n              else {\n                pcVar3 = *(code **)(*local_48 + 0x48);\n                local_69 = cVar8;\n                *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d76a;\n                uVar12 = (*pcVar3)();\n                cVar8 = local_69;\n                if (uVar12 == 0xffffffff) {\n                  local_48 = (long *)0x0;\n                  uVar12 = 0xffffffff;\n                }\n              }\n            }\n            if (cVar8 != (char)uVar12) break;\n            uVar14 = uVar14 + 1;\n            if (uVar20 <= uVar14) goto joined_r0x0028d514;\n          }" { (expression_statement "cVar8 = *(char *)(*(long *)(param_7 + (long)piVar1[uVar14] * 8) + local_60);" (assignment_expression "cVar8 = *(char *)(*(long *)(param_7 + (long)piVar1[uVar14] * 8) + local_60)" identifier = (pointer_expression "*(char *)(*(long *)(param_7 + (long)piVar1[uVar14] * 8) + local_60)" * (cast_expression "(char *)(*(long *)(param_7 + (long)piVar1[uVar14] * 8) + local_60)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(param_7 + (long)piVar1[uVar14] * 8) + local_60)" ( (binary_expression "*(long *)(param_7 + (long)piVar1[uVar14] * 8) + local_60" (pointer_expression "*(long *)(param_7 + (long)piVar1[uVar14] * 8)" * (cast_expression "(long *)(param_7 + (long)piVar1[uVar14] * 8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_7 + (long)piVar1[uVar14] * 8)" ( (binary_expression "param_7 + (long)piVar1[uVar14] * 8" identifier + (binary_expression "(long)piVar1[uVar14] * 8" (cast_expression "(long)piVar1[uVar14]" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (subscript_expression "piVar1[uVar14]" identifier [ identifier ])) * number_literal)) )))) + identifier) ))))) ;) (expression_statement "uVar12 = local_40;" (assignment_expression "uVar12 = local_40" identifier = identifier) ;) (if_statement "if ((local_48 != (long *)0x0) && (local_40 == 0xffffffff)) {\n              if ((byte *)local_48[2] < (byte *)local_48[3]) {\n                uVar12 = (uint)*(byte *)local_48[2];\n              }\n              else {\n                pcVar3 = *(code **)(*local_48 + 0x48);\n                local_69 = cVar8;\n                *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d76a;\n                uVar12 = (*pcVar3)();\n                cVar8 = local_69;\n                if (uVar12 == 0xffffffff) {\n                  local_48 = (long *)0x0;\n                  uVar12 = 0xffffffff;\n                }\n              }\n            }" if (parenthesized_expression "((local_48 != (long *)0x0) && (local_40 == 0xffffffff))" ( (binary_expression "(local_48 != (long *)0x0) && (local_40 == 0xffffffff)" (parenthesized_expression "(local_48 != (long *)0x0)" ( (binary_expression "local_48 != (long *)0x0" identifier != (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) )) && (parenthesized_expression "(local_40 == 0xffffffff)" ( (binary_expression "local_40 == 0xffffffff" identifier == number_literal) ))) )) (compound_statement "{\n              if ((byte *)local_48[2] < (byte *)local_48[3]) {\n                uVar12 = (uint)*(byte *)local_48[2];\n              }\n              else {\n                pcVar3 = *(code **)(*local_48 + 0x48);\n                local_69 = cVar8;\n                *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d76a;\n                uVar12 = (*pcVar3)();\n                cVar8 = local_69;\n                if (uVar12 == 0xffffffff) {\n                  local_48 = (long *)0x0;\n                  uVar12 = 0xffffffff;\n                }\n              }\n            }" { (if_statement "if ((byte *)local_48[2] < (byte *)local_48[3]) {\n                uVar12 = (uint)*(byte *)local_48[2];\n              }\n              else {\n                pcVar3 = *(code **)(*local_48 + 0x48);\n                local_69 = cVar8;\n                *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d76a;\n                uVar12 = (*pcVar3)();\n                cVar8 = local_69;\n                if (uVar12 == 0xffffffff) {\n                  local_48 = (long *)0x0;\n                  uVar12 = 0xffffffff;\n                }\n              }" if (parenthesized_expression "((byte *)local_48[2] < (byte *)local_48[3])" ( (binary_expression "(byte *)local_48[2] < (byte *)local_48[3]" (cast_expression "(byte *)local_48[2]" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "local_48[2]" identifier [ number_literal ])) < (cast_expression "(byte *)local_48[3]" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "local_48[3]" identifier [ number_literal ]))) )) (compound_statement "{\n                uVar12 = (uint)*(byte *)local_48[2];\n              }" { (expression_statement "uVar12 = (uint)*(byte *)local_48[2];" (assignment_expression "uVar12 = (uint)*(byte *)local_48[2]" identifier = (binary_expression "(uint)*(byte *)local_48[2]" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(byte *)local_48[2]" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "local_48[2]" identifier [ number_literal ])))) ;) }) (else_clause "else {\n                pcVar3 = *(code **)(*local_48 + 0x48);\n                local_69 = cVar8;\n                *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d76a;\n                uVar12 = (*pcVar3)();\n                cVar8 = local_69;\n                if (uVar12 == 0xffffffff) {\n                  local_48 = (long *)0x0;\n                  uVar12 = 0xffffffff;\n                }\n              }" else (compound_statement "{\n                pcVar3 = *(code **)(*local_48 + 0x48);\n                local_69 = cVar8;\n                *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d76a;\n                uVar12 = (*pcVar3)();\n                cVar8 = local_69;\n                if (uVar12 == 0xffffffff) {\n                  local_48 = (long *)0x0;\n                  uVar12 = 0xffffffff;\n                }\n              }" { (expression_statement "pcVar3 = *(code **)(*local_48 + 0x48);" (assignment_expression "pcVar3 = *(code **)(*local_48 + 0x48)" identifier = (pointer_expression "*(code **)(*local_48 + 0x48)" * (cast_expression "(code **)(*local_48 + 0x48)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*local_48 + 0x48)" ( (binary_expression "*local_48 + 0x48" (pointer_expression "*local_48" * identifier) + number_literal) ))))) ;) (expression_statement "local_69 = cVar8;" (assignment_expression "local_69 = cVar8" identifier = identifier) ;) (expression_statement "*(undefined8 *)((long)auStack_90 + lVar4) = 0x28d76a;" (assignment_expression "*(undefined8 *)((long)auStack_90 + lVar4) = 0x28d76a" (pointer_expression "*(undefined8 *)((long)auStack_90 + lVar4)" * (cast_expression "(undefined8 *)((long)auStack_90 + lVar4)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)auStack_90 + lVar4)" ( (binary_expression "(long)auStack_90 + lVar4" (cast_expression "(long)auStack_90" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + identifier) )))) = number_literal) ;) (expression_statement "uVar12 = (*pcVar3)();" (assignment_expression "uVar12 = (*pcVar3)()" identifier = (call_expression "(*pcVar3)()" (parenthesized_expression "(*pcVar3)" ( (pointer_expression "*pcVar3" * identifier) )) (argument_list "()" ( )))) ;) (expression_statement "cVar8 = local_69;" (assignment_expression "cVar8 = local_69" identifier = identifier) ;) (if_statement "if (uVar12 == 0xffffffff) {\n                  local_48 = (long *)0x0;\n                  uVar12 = 0xffffffff;\n                }" if (parenthesized_expression "(uVar12 == 0xffffffff)" ( (binary_expression "uVar12 == 0xffffffff" identifier == number_literal) )) (compound_statement "{\n                  local_48 = (long *)0x0;\n                  uVar12 = 0xffffffff;\n                }" { (expression_statement "local_48 = (long *)0x0;" (assignment_expression "local_48 = (long *)0x0" identifier = (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "uVar12 = 0xffffffff;" (assignment_expression "uVar12 = 0xffffffff" identifier = number_literal) ;) })) }))) })) (if_statement "if (cVar8 != (char)uVar12) break;" if (parenthesized_expression "(cVar8 != (char)uVar12)" ( (binary_expression "cVar8 != (char)uVar12" identifier != (cast_expression "(char)uVar12" ( (type_descriptor "char" primitive_type) ) identifier)) )) (break_statement "break;" break ;)) (expression_statement "uVar14 = uVar14 + 1;" (assignment_expression "uVar14 = uVar14 + 1" identifier = (binary_expression "uVar14 + 1" identifier + number_literal)) ;) (if_statement "if (uVar20 <= uVar14) goto joined_r0x0028d514;" if (parenthesized_expression "(uVar20 <= uVar14)" ( (binary_expression "uVar20 <= uVar14" identifier <= identifier) )) (goto_statement "goto joined_r0x0028d514;" goto statement_identifier ;)) })) (expression_statement "uVar20 = uVar20 - 1;" (assignment_expression "uVar20 = uVar20 - 1" identifier = (binary_expression "uVar20 - 1" identifier - number_literal)) ;) (expression_statement "piVar1[uVar14] = piVar1[uVar20];" (assignment_expression "piVar1[uVar14] = piVar1[uVar20]" (subscript_expression "piVar1[uVar14]" identifier [ identifier ]) = (subscript_expression "piVar1[uVar20]" identifier [ identifier ])) ;) }) while (parenthesized_expression "(uVar14 < uVar20)" ( (binary_expression "uVar14 < uVar20" identifier < identifier) )) ;) (goto_statement "goto joined_r0x0028d514;" goto statement_identifier ;) }))) (if_statement "if (uVar20 == 1) {\n        if ((ulong)local_48[2] < (ulong)local_48[3]) {\n          local_48[2] = local_48[2] + 1;\n        }\n        else {\n          pcVar3 = *(code **)(*local_48 + 0x50);\n          *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d7fe;\n          (*pcVar3)();\n        }\n        uVar20 = local_60;\n        local_40 = 0xffffffff;\n        pcVar2 = *(char **)(param_7 + (long)*piVar1 * 8);\n        local_60 = CONCAT44(local_60._4_4_,*piVar1);\n        sVar19 = uVar20 + 1;\n        *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d670;\n        sVar15 = strlen(pcVar2);\n        if (sVar19 < sVar15) {\n          do {\n            pplVar7 = local_68;\n            pplVar6 = local_78;\n            *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d6c9;\n            cVar8 = FUN_0028d360(pplVar7,pplVar6);\n            if (cVar8 != '\0') goto LAB_0028d487;\n            cVar8 = pcVar2[sVar19];\n            uVar12 = local_40;\n            if ((local_48 == (long *)0x0) || (local_40 != 0xffffffff)) {\nLAB_0028d688:\n              if (cVar8 != (char)uVar12) goto LAB_0028d487;\n              pcVar16 = (char *)local_48[2];\n              if (pcVar16 < (char *)local_48[3]) goto LAB_0028d6a3;\n              pcVar3 = *(code **)(*local_48 + 0x50);\n              *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d7c3;\n              (*pcVar3)();\n            }\n            else {\n              pcVar16 = (char *)local_48[2];\n              if ((char *)local_48[3] <= pcVar16) {\n                pcVar3 = *(code **)(*local_48 + 0x48);\n                *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d7e2;\n                uVar12 = (*pcVar3)();\n                if (uVar12 == 0xffffffff) {\n                  local_48 = (long *)0x0;\n                }\n                goto LAB_0028d688;\n              }\n              if (cVar8 != *pcVar16) goto LAB_0028d487;\nLAB_0028d6a3:\n              local_48[2] = (long)(pcVar16 + 1);\n            }\n            sVar19 = sVar19 + 1;\n            local_40 = 0xffffffff;\n          } while (sVar19 != sVar15);\n        }\n        else if (sVar19 != sVar15) goto LAB_0028d487;\n        *local_80 = (undefined4)local_60;\n        goto LAB_0028d48e;\n      }" if (parenthesized_expression "(uVar20 == 1)" ( (binary_expression "uVar20 == 1" identifier == number_literal) )) (compound_statement "{\n        if ((ulong)local_48[2] < (ulong)local_48[3]) {\n          local_48[2] = local_48[2] + 1;\n        }\n        else {\n          pcVar3 = *(code **)(*local_48 + 0x50);\n          *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d7fe;\n          (*pcVar3)();\n        }\n        uVar20 = local_60;\n        local_40 = 0xffffffff;\n        pcVar2 = *(char **)(param_7 + (long)*piVar1 * 8);\n        local_60 = CONCAT44(local_60._4_4_,*piVar1);\n        sVar19 = uVar20 + 1;\n        *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d670;\n        sVar15 = strlen(pcVar2);\n        if (sVar19 < sVar15) {\n          do {\n            pplVar7 = local_68;\n            pplVar6 = local_78;\n            *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d6c9;\n            cVar8 = FUN_0028d360(pplVar7,pplVar6);\n            if (cVar8 != '\0') goto LAB_0028d487;\n            cVar8 = pcVar2[sVar19];\n            uVar12 = local_40;\n            if ((local_48 == (long *)0x0) || (local_40 != 0xffffffff)) {\nLAB_0028d688:\n              if (cVar8 != (char)uVar12) goto LAB_0028d487;\n              pcVar16 = (char *)local_48[2];\n              if (pcVar16 < (char *)local_48[3]) goto LAB_0028d6a3;\n              pcVar3 = *(code **)(*local_48 + 0x50);\n              *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d7c3;\n              (*pcVar3)();\n            }\n            else {\n              pcVar16 = (char *)local_48[2];\n              if ((char *)local_48[3] <= pcVar16) {\n                pcVar3 = *(code **)(*local_48 + 0x48);\n                *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d7e2;\n                uVar12 = (*pcVar3)();\n                if (uVar12 == 0xffffffff) {\n                  local_48 = (long *)0x0;\n                }\n                goto LAB_0028d688;\n              }\n              if (cVar8 != *pcVar16) goto LAB_0028d487;\nLAB_0028d6a3:\n              local_48[2] = (long)(pcVar16 + 1);\n            }\n            sVar19 = sVar19 + 1;\n            local_40 = 0xffffffff;\n          } while (sVar19 != sVar15);\n        }\n        else if (sVar19 != sVar15) goto LAB_0028d487;\n        *local_80 = (undefined4)local_60;\n        goto LAB_0028d48e;\n      }" { (if_statement "if ((ulong)local_48[2] < (ulong)local_48[3]) {\n          local_48[2] = local_48[2] + 1;\n        }\n        else {\n          pcVar3 = *(code **)(*local_48 + 0x50);\n          *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d7fe;\n          (*pcVar3)();\n        }" if (parenthesized_expression "((ulong)local_48[2] < (ulong)local_48[3])" ( (binary_expression "(ulong)local_48[2] < (ulong)local_48[3]" (cast_expression "(ulong)local_48[2]" ( (type_descriptor "ulong" type_identifier) ) (subscript_expression "local_48[2]" identifier [ number_literal ])) < (cast_expression "(ulong)local_48[3]" ( (type_descriptor "ulong" type_identifier) ) (subscript_expression "local_48[3]" identifier [ number_literal ]))) )) (compound_statement "{\n          local_48[2] = local_48[2] + 1;\n        }" { (expression_statement "local_48[2] = local_48[2] + 1;" (assignment_expression "local_48[2] = local_48[2] + 1" (subscript_expression "local_48[2]" identifier [ number_literal ]) = (binary_expression "local_48[2] + 1" (subscript_expression "local_48[2]" identifier [ number_literal ]) + number_literal)) ;) }) (else_clause "else {\n          pcVar3 = *(code **)(*local_48 + 0x50);\n          *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d7fe;\n          (*pcVar3)();\n        }" else (compound_statement "{\n          pcVar3 = *(code **)(*local_48 + 0x50);\n          *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d7fe;\n          (*pcVar3)();\n        }" { (expression_statement "pcVar3 = *(code **)(*local_48 + 0x50);" (assignment_expression "pcVar3 = *(code **)(*local_48 + 0x50)" identifier = (pointer_expression "*(code **)(*local_48 + 0x50)" * (cast_expression "(code **)(*local_48 + 0x50)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*local_48 + 0x50)" ( (binary_expression "*local_48 + 0x50" (pointer_expression "*local_48" * identifier) + number_literal) ))))) ;) (expression_statement "*(undefined8 *)((long)auStack_90 + lVar4) = 0x28d7fe;" (assignment_expression "*(undefined8 *)((long)auStack_90 + lVar4) = 0x28d7fe" (pointer_expression "*(undefined8 *)((long)auStack_90 + lVar4)" * (cast_expression "(undefined8 *)((long)auStack_90 + lVar4)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)auStack_90 + lVar4)" ( (binary_expression "(long)auStack_90 + lVar4" (cast_expression "(long)auStack_90" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + identifier) )))) = number_literal) ;) (expression_statement "(*pcVar3)();" (call_expression "(*pcVar3)()" (parenthesized_expression "(*pcVar3)" ( (pointer_expression "*pcVar3" * identifier) )) (argument_list "()" ( ))) ;) }))) (expression_statement "uVar20 = local_60;" (assignment_expression "uVar20 = local_60" identifier = identifier) ;) (expression_statement "local_40 = 0xffffffff;" (assignment_expression "local_40 = 0xffffffff" identifier = number_literal) ;) (expression_statement "pcVar2 = *(char **)(param_7 + (long)*piVar1 * 8);" (assignment_expression "pcVar2 = *(char **)(param_7 + (long)*piVar1 * 8)" identifier = (pointer_expression "*(char **)(param_7 + (long)*piVar1 * 8)" * (cast_expression "(char **)(param_7 + (long)*piVar1 * 8)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_7 + (long)*piVar1 * 8)" ( (binary_expression "param_7 + (long)*piVar1 * 8" identifier + (binary_expression "(long)*piVar1 * 8" (cast_expression "(long)*piVar1" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (pointer_expression "*piVar1" * identifier)) * number_literal)) ))))) ;) (expression_statement "local_60 = CONCAT44(local_60._4_4_,*piVar1);" (assignment_expression "local_60 = CONCAT44(local_60._4_4_,*piVar1)" identifier = (call_expression "CONCAT44(local_60._4_4_,*piVar1)" identifier (argument_list "(local_60._4_4_,*piVar1)" ( (field_expression "local_60._4_4_" identifier . field_identifier) , (pointer_expression "*piVar1" * identifier) )))) ;) (expression_statement "sVar19 = uVar20 + 1;" (assignment_expression "sVar19 = uVar20 + 1" identifier = (binary_expression "uVar20 + 1" identifier + number_literal)) ;) (expression_statement "*(undefined8 *)((long)auStack_90 + lVar4) = 0x28d670;" (assignment_expression "*(undefined8 *)((long)auStack_90 + lVar4) = 0x28d670" (pointer_expression "*(undefined8 *)((long)auStack_90 + lVar4)" * (cast_expression "(undefined8 *)((long)auStack_90 + lVar4)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)auStack_90 + lVar4)" ( (binary_expression "(long)auStack_90 + lVar4" (cast_expression "(long)auStack_90" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + identifier) )))) = number_literal) ;) (expression_statement "sVar15 = strlen(pcVar2);" (assignment_expression "sVar15 = strlen(pcVar2)" identifier = (call_expression "strlen(pcVar2)" identifier (argument_list "(pcVar2)" ( identifier )))) ;) (if_statement "if (sVar19 < sVar15) {\n          do {\n            pplVar7 = local_68;\n            pplVar6 = local_78;\n            *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d6c9;\n            cVar8 = FUN_0028d360(pplVar7,pplVar6);\n            if (cVar8 != '\0') goto LAB_0028d487;\n            cVar8 = pcVar2[sVar19];\n            uVar12 = local_40;\n            if ((local_48 == (long *)0x0) || (local_40 != 0xffffffff)) {\nLAB_0028d688:\n              if (cVar8 != (char)uVar12) goto LAB_0028d487;\n              pcVar16 = (char *)local_48[2];\n              if (pcVar16 < (char *)local_48[3]) goto LAB_0028d6a3;\n              pcVar3 = *(code **)(*local_48 + 0x50);\n              *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d7c3;\n              (*pcVar3)();\n            }\n            else {\n              pcVar16 = (char *)local_48[2];\n              if ((char *)local_48[3] <= pcVar16) {\n                pcVar3 = *(code **)(*local_48 + 0x48);\n                *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d7e2;\n                uVar12 = (*pcVar3)();\n                if (uVar12 == 0xffffffff) {\n                  local_48 = (long *)0x0;\n                }\n                goto LAB_0028d688;\n              }\n              if (cVar8 != *pcVar16) goto LAB_0028d487;\nLAB_0028d6a3:\n              local_48[2] = (long)(pcVar16 + 1);\n            }\n            sVar19 = sVar19 + 1;\n            local_40 = 0xffffffff;\n          } while (sVar19 != sVar15);\n        }\n        else if (sVar19 != sVar15) goto LAB_0028d487;" if (parenthesized_expression "(sVar19 < sVar15)" ( (binary_expression "sVar19 < sVar15" identifier < identifier) )) (compound_statement "{\n          do {\n            pplVar7 = local_68;\n            pplVar6 = local_78;\n            *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d6c9;\n            cVar8 = FUN_0028d360(pplVar7,pplVar6);\n            if (cVar8 != '\0') goto LAB_0028d487;\n            cVar8 = pcVar2[sVar19];\n            uVar12 = local_40;\n            if ((local_48 == (long *)0x0) || (local_40 != 0xffffffff)) {\nLAB_0028d688:\n              if (cVar8 != (char)uVar12) goto LAB_0028d487;\n              pcVar16 = (char *)local_48[2];\n              if (pcVar16 < (char *)local_48[3]) goto LAB_0028d6a3;\n              pcVar3 = *(code **)(*local_48 + 0x50);\n              *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d7c3;\n              (*pcVar3)();\n            }\n            else {\n              pcVar16 = (char *)local_48[2];\n              if ((char *)local_48[3] <= pcVar16) {\n                pcVar3 = *(code **)(*local_48 + 0x48);\n                *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d7e2;\n                uVar12 = (*pcVar3)();\n                if (uVar12 == 0xffffffff) {\n                  local_48 = (long *)0x0;\n                }\n                goto LAB_0028d688;\n              }\n              if (cVar8 != *pcVar16) goto LAB_0028d487;\nLAB_0028d6a3:\n              local_48[2] = (long)(pcVar16 + 1);\n            }\n            sVar19 = sVar19 + 1;\n            local_40 = 0xffffffff;\n          } while (sVar19 != sVar15);\n        }" { (do_statement "do {\n            pplVar7 = local_68;\n            pplVar6 = local_78;\n            *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d6c9;\n            cVar8 = FUN_0028d360(pplVar7,pplVar6);\n            if (cVar8 != '\0') goto LAB_0028d487;\n            cVar8 = pcVar2[sVar19];\n            uVar12 = local_40;\n            if ((local_48 == (long *)0x0) || (local_40 != 0xffffffff)) {\nLAB_0028d688:\n              if (cVar8 != (char)uVar12) goto LAB_0028d487;\n              pcVar16 = (char *)local_48[2];\n              if (pcVar16 < (char *)local_48[3]) goto LAB_0028d6a3;\n              pcVar3 = *(code **)(*local_48 + 0x50);\n              *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d7c3;\n              (*pcVar3)();\n            }\n            else {\n              pcVar16 = (char *)local_48[2];\n              if ((char *)local_48[3] <= pcVar16) {\n                pcVar3 = *(code **)(*local_48 + 0x48);\n                *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d7e2;\n                uVar12 = (*pcVar3)();\n                if (uVar12 == 0xffffffff) {\n                  local_48 = (long *)0x0;\n                }\n                goto LAB_0028d688;\n              }\n              if (cVar8 != *pcVar16) goto LAB_0028d487;\nLAB_0028d6a3:\n              local_48[2] = (long)(pcVar16 + 1);\n            }\n            sVar19 = sVar19 + 1;\n            local_40 = 0xffffffff;\n          } while (sVar19 != sVar15);" do (compound_statement "{\n            pplVar7 = local_68;\n            pplVar6 = local_78;\n            *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d6c9;\n            cVar8 = FUN_0028d360(pplVar7,pplVar6);\n            if (cVar8 != '\0') goto LAB_0028d487;\n            cVar8 = pcVar2[sVar19];\n            uVar12 = local_40;\n            if ((local_48 == (long *)0x0) || (local_40 != 0xffffffff)) {\nLAB_0028d688:\n              if (cVar8 != (char)uVar12) goto LAB_0028d487;\n              pcVar16 = (char *)local_48[2];\n              if (pcVar16 < (char *)local_48[3]) goto LAB_0028d6a3;\n              pcVar3 = *(code **)(*local_48 + 0x50);\n              *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d7c3;\n              (*pcVar3)();\n            }\n            else {\n              pcVar16 = (char *)local_48[2];\n              if ((char *)local_48[3] <= pcVar16) {\n                pcVar3 = *(code **)(*local_48 + 0x48);\n                *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d7e2;\n                uVar12 = (*pcVar3)();\n                if (uVar12 == 0xffffffff) {\n                  local_48 = (long *)0x0;\n                }\n                goto LAB_0028d688;\n              }\n              if (cVar8 != *pcVar16) goto LAB_0028d487;\nLAB_0028d6a3:\n              local_48[2] = (long)(pcVar16 + 1);\n            }\n            sVar19 = sVar19 + 1;\n            local_40 = 0xffffffff;\n          }" { (expression_statement "pplVar7 = local_68;" (assignment_expression "pplVar7 = local_68" identifier = identifier) ;) (expression_statement "pplVar6 = local_78;" (assignment_expression "pplVar6 = local_78" identifier = identifier) ;) (expression_statement "*(undefined8 *)((long)auStack_90 + lVar4) = 0x28d6c9;" (assignment_expression "*(undefined8 *)((long)auStack_90 + lVar4) = 0x28d6c9" (pointer_expression "*(undefined8 *)((long)auStack_90 + lVar4)" * (cast_expression "(undefined8 *)((long)auStack_90 + lVar4)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)auStack_90 + lVar4)" ( (binary_expression "(long)auStack_90 + lVar4" (cast_expression "(long)auStack_90" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + identifier) )))) = number_literal) ;) (expression_statement "cVar8 = FUN_0028d360(pplVar7,pplVar6);" (assignment_expression "cVar8 = FUN_0028d360(pplVar7,pplVar6)" identifier = (call_expression "FUN_0028d360(pplVar7,pplVar6)" identifier (argument_list "(pplVar7,pplVar6)" ( identifier , identifier )))) ;) (if_statement "if (cVar8 != '\0') goto LAB_0028d487;" if (parenthesized_expression "(cVar8 != '\0')" ( (binary_expression "cVar8 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) (goto_statement "goto LAB_0028d487;" goto statement_identifier ;)) (expression_statement "cVar8 = pcVar2[sVar19];" (assignment_expression "cVar8 = pcVar2[sVar19]" identifier = (subscript_expression "pcVar2[sVar19]" identifier [ identifier ])) ;) (expression_statement "uVar12 = local_40;" (assignment_expression "uVar12 = local_40" identifier = identifier) ;) (if_statement "if ((local_48 == (long *)0x0) || (local_40 != 0xffffffff)) {\nLAB_0028d688:\n              if (cVar8 != (char)uVar12) goto LAB_0028d487;\n              pcVar16 = (char *)local_48[2];\n              if (pcVar16 < (char *)local_48[3]) goto LAB_0028d6a3;\n              pcVar3 = *(code **)(*local_48 + 0x50);\n              *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d7c3;\n              (*pcVar3)();\n            }\n            else {\n              pcVar16 = (char *)local_48[2];\n              if ((char *)local_48[3] <= pcVar16) {\n                pcVar3 = *(code **)(*local_48 + 0x48);\n                *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d7e2;\n                uVar12 = (*pcVar3)();\n                if (uVar12 == 0xffffffff) {\n                  local_48 = (long *)0x0;\n                }\n                goto LAB_0028d688;\n              }\n              if (cVar8 != *pcVar16) goto LAB_0028d487;\nLAB_0028d6a3:\n              local_48[2] = (long)(pcVar16 + 1);\n            }" if (parenthesized_expression "((local_48 == (long *)0x0) || (local_40 != 0xffffffff))" ( (binary_expression "(local_48 == (long *)0x0) || (local_40 != 0xffffffff)" (parenthesized_expression "(local_48 == (long *)0x0)" ( (binary_expression "local_48 == (long *)0x0" identifier == (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) )) || (parenthesized_expression "(local_40 != 0xffffffff)" ( (binary_expression "local_40 != 0xffffffff" identifier != number_literal) ))) )) (compound_statement "{\nLAB_0028d688:\n              if (cVar8 != (char)uVar12) goto LAB_0028d487;\n              pcVar16 = (char *)local_48[2];\n              if (pcVar16 < (char *)local_48[3]) goto LAB_0028d6a3;\n              pcVar3 = *(code **)(*local_48 + 0x50);\n              *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d7c3;\n              (*pcVar3)();\n            }" { (labeled_statement "LAB_0028d688:\n              if (cVar8 != (char)uVar12) goto LAB_0028d487;" statement_identifier : (if_statement "if (cVar8 != (char)uVar12) goto LAB_0028d487;" if (parenthesized_expression "(cVar8 != (char)uVar12)" ( (binary_expression "cVar8 != (char)uVar12" identifier != (cast_expression "(char)uVar12" ( (type_descriptor "char" primitive_type) ) identifier)) )) (goto_statement "goto LAB_0028d487;" goto statement_identifier ;))) (expression_statement "pcVar16 = (char *)local_48[2];" (assignment_expression "pcVar16 = (char *)local_48[2]" identifier = (cast_expression "(char *)local_48[2]" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "local_48[2]" identifier [ number_literal ]))) ;) (if_statement "if (pcVar16 < (char *)local_48[3]) goto LAB_0028d6a3;" if (parenthesized_expression "(pcVar16 < (char *)local_48[3])" ( (binary_expression "pcVar16 < (char *)local_48[3]" identifier < (cast_expression "(char *)local_48[3]" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "local_48[3]" identifier [ number_literal ]))) )) (goto_statement "goto LAB_0028d6a3;" goto statement_identifier ;)) (expression_statement "pcVar3 = *(code **)(*local_48 + 0x50);" (assignment_expression "pcVar3 = *(code **)(*local_48 + 0x50)" identifier = (pointer_expression "*(code **)(*local_48 + 0x50)" * (cast_expression "(code **)(*local_48 + 0x50)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*local_48 + 0x50)" ( (binary_expression "*local_48 + 0x50" (pointer_expression "*local_48" * identifier) + number_literal) ))))) ;) (expression_statement "*(undefined8 *)((long)auStack_90 + lVar4) = 0x28d7c3;" (assignment_expression "*(undefined8 *)((long)auStack_90 + lVar4) = 0x28d7c3" (pointer_expression "*(undefined8 *)((long)auStack_90 + lVar4)" * (cast_expression "(undefined8 *)((long)auStack_90 + lVar4)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)auStack_90 + lVar4)" ( (binary_expression "(long)auStack_90 + lVar4" (cast_expression "(long)auStack_90" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + identifier) )))) = number_literal) ;) (expression_statement "(*pcVar3)();" (call_expression "(*pcVar3)()" (parenthesized_expression "(*pcVar3)" ( (pointer_expression "*pcVar3" * identifier) )) (argument_list "()" ( ))) ;) }) (else_clause "else {\n              pcVar16 = (char *)local_48[2];\n              if ((char *)local_48[3] <= pcVar16) {\n                pcVar3 = *(code **)(*local_48 + 0x48);\n                *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d7e2;\n                uVar12 = (*pcVar3)();\n                if (uVar12 == 0xffffffff) {\n                  local_48 = (long *)0x0;\n                }\n                goto LAB_0028d688;\n              }\n              if (cVar8 != *pcVar16) goto LAB_0028d487;\nLAB_0028d6a3:\n              local_48[2] = (long)(pcVar16 + 1);\n            }" else (compound_statement "{\n              pcVar16 = (char *)local_48[2];\n              if ((char *)local_48[3] <= pcVar16) {\n                pcVar3 = *(code **)(*local_48 + 0x48);\n                *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d7e2;\n                uVar12 = (*pcVar3)();\n                if (uVar12 == 0xffffffff) {\n                  local_48 = (long *)0x0;\n                }\n                goto LAB_0028d688;\n              }\n              if (cVar8 != *pcVar16) goto LAB_0028d487;\nLAB_0028d6a3:\n              local_48[2] = (long)(pcVar16 + 1);\n            }" { (expression_statement "pcVar16 = (char *)local_48[2];" (assignment_expression "pcVar16 = (char *)local_48[2]" identifier = (cast_expression "(char *)local_48[2]" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "local_48[2]" identifier [ number_literal ]))) ;) (if_statement "if ((char *)local_48[3] <= pcVar16) {\n                pcVar3 = *(code **)(*local_48 + 0x48);\n                *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d7e2;\n                uVar12 = (*pcVar3)();\n                if (uVar12 == 0xffffffff) {\n                  local_48 = (long *)0x0;\n                }\n                goto LAB_0028d688;\n              }" if (parenthesized_expression "((char *)local_48[3] <= pcVar16)" ( (binary_expression "(char *)local_48[3] <= pcVar16" (cast_expression "(char *)local_48[3]" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "local_48[3]" identifier [ number_literal ])) <= identifier) )) (compound_statement "{\n                pcVar3 = *(code **)(*local_48 + 0x48);\n                *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d7e2;\n                uVar12 = (*pcVar3)();\n                if (uVar12 == 0xffffffff) {\n                  local_48 = (long *)0x0;\n                }\n                goto LAB_0028d688;\n              }" { (expression_statement "pcVar3 = *(code **)(*local_48 + 0x48);" (assignment_expression "pcVar3 = *(code **)(*local_48 + 0x48)" identifier = (pointer_expression "*(code **)(*local_48 + 0x48)" * (cast_expression "(code **)(*local_48 + 0x48)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*local_48 + 0x48)" ( (binary_expression "*local_48 + 0x48" (pointer_expression "*local_48" * identifier) + number_literal) ))))) ;) (expression_statement "*(undefined8 *)((long)auStack_90 + lVar4) = 0x28d7e2;" (assignment_expression "*(undefined8 *)((long)auStack_90 + lVar4) = 0x28d7e2" (pointer_expression "*(undefined8 *)((long)auStack_90 + lVar4)" * (cast_expression "(undefined8 *)((long)auStack_90 + lVar4)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)auStack_90 + lVar4)" ( (binary_expression "(long)auStack_90 + lVar4" (cast_expression "(long)auStack_90" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + identifier) )))) = number_literal) ;) (expression_statement "uVar12 = (*pcVar3)();" (assignment_expression "uVar12 = (*pcVar3)()" identifier = (call_expression "(*pcVar3)()" (parenthesized_expression "(*pcVar3)" ( (pointer_expression "*pcVar3" * identifier) )) (argument_list "()" ( )))) ;) (if_statement "if (uVar12 == 0xffffffff) {\n                  local_48 = (long *)0x0;\n                }" if (parenthesized_expression "(uVar12 == 0xffffffff)" ( (binary_expression "uVar12 == 0xffffffff" identifier == number_literal) )) (compound_statement "{\n                  local_48 = (long *)0x0;\n                }" { (expression_statement "local_48 = (long *)0x0;" (assignment_expression "local_48 = (long *)0x0" identifier = (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) ;) })) (goto_statement "goto LAB_0028d688;" goto statement_identifier ;) })) (if_statement "if (cVar8 != *pcVar16) goto LAB_0028d487;" if (parenthesized_expression "(cVar8 != *pcVar16)" ( (binary_expression "cVar8 != *pcVar16" identifier != (pointer_expression "*pcVar16" * identifier)) )) (goto_statement "goto LAB_0028d487;" goto statement_identifier ;)) (labeled_statement "LAB_0028d6a3:\n              local_48[2] = (long)(pcVar16 + 1);" statement_identifier : (expression_statement "local_48[2] = (long)(pcVar16 + 1);" (assignment_expression "local_48[2] = (long)(pcVar16 + 1)" (subscript_expression "local_48[2]" identifier [ number_literal ]) = (cast_expression "(long)(pcVar16 + 1)" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (parenthesized_expression "(pcVar16 + 1)" ( (binary_expression "pcVar16 + 1" identifier + number_literal) )))) ;)) }))) (expression_statement "sVar19 = sVar19 + 1;" (assignment_expression "sVar19 = sVar19 + 1" identifier = (binary_expression "sVar19 + 1" identifier + number_literal)) ;) (expression_statement "local_40 = 0xffffffff;" (assignment_expression "local_40 = 0xffffffff" identifier = number_literal) ;) }) while (parenthesized_expression "(sVar19 != sVar15)" ( (binary_expression "sVar19 != sVar15" identifier != identifier) )) ;) }) (else_clause "else if (sVar19 != sVar15) goto LAB_0028d487;" else (if_statement "if (sVar19 != sVar15) goto LAB_0028d487;" if (parenthesized_expression "(sVar19 != sVar15)" ( (binary_expression "sVar19 != sVar15" identifier != identifier) )) (goto_statement "goto LAB_0028d487;" goto statement_identifier ;)))) (expression_statement "*local_80 = (undefined4)local_60;" (assignment_expression "*local_80 = (undefined4)local_60" (pointer_expression "*local_80" * identifier) = (cast_expression "(undefined4)local_60" ( (type_descriptor "undefined4" type_identifier) ) identifier)) ;) (goto_statement "goto LAB_0028d48e;" goto statement_identifier ;) })) })) })) (labeled_statement "LAB_0028d487:\n  *param_10 = *param_10 | 4;" statement_identifier : (expression_statement "*param_10 = *param_10 | 4;" (assignment_expression "*param_10 = *param_10 | 4" (pointer_expression "*param_10" * identifier) = (binary_expression "*param_10 | 4" (pointer_expression "*param_10" * identifier) | number_literal)) ;)) (labeled_statement "LAB_0028d48e:\n  auVar5._8_4_ = local_40;" statement_identifier : (expression_statement "auVar5._8_4_ = local_40;" (assignment_expression "auVar5._8_4_ = local_40" (field_expression "auVar5._8_4_" identifier . field_identifier) = identifier) ;)) (expression_statement "auVar5._0_8_ = local_48;" (assignment_expression "auVar5._0_8_ = local_48" (field_expression "auVar5._0_8_" identifier . field_identifier) = identifier) ;) (expression_statement "auVar5._12_4_ = uStack_3c;" (assignment_expression "auVar5._12_4_ = uStack_3c" (field_expression "auVar5._12_4_" identifier . field_identifier) = identifier) ;) (return_statement "return auVar5;" return identifier ;) (ERROR "}" }))
(translation_unit "/* std::time_get<char, std::istreambuf_iterator<char, std::char_traits<char> >\n   >::_M_extract_name(std::istreambuf_iterator<char, std::char_traits<char> >,\n   std::istreambuf_iterator<char, std::char_traits<char> >, int&, char const**, unsigned long,\n   std::ios_base&, std::_Ios_Iostate&) const */\n\nundefined1  [16]\nstd::time_get<char,std::istreambuf_iterator<char,std::char_traits<char>>>::_M_extract_name\n          (undefined8 param_1,long *param_2,undefined8 param_3,long *param_4,undefined8 param_5,\n          undefined4 *param_6,long param_7,long param_8,long param_9,uint *param_10)\n\n{\n  int *piVar1;\n  char *pcVar2;\n  code *pcVar3;\n  long lVar4;\n  undefined1 auVar5 [16];\n  long **pplVar6;\n  istreambuf_iterator<char,std::char_traits<char>> *this;\n  char cVar7;\n  char cVar8;\n  bool bVar9;\n  int iVar10;\n  uint uVar11;\n  ctype *pcVar12;\n  ulong uVar13;\n  size_t sVar14;\n  char *pcVar15;\n  long lVar16;\n  ulong uVar17;\n  size_t sVar18;\n  ulong uVar19;\n  undefined8 auStack_90 [2];\n  undefined4 *local_80;\n  long **local_78;\n  char local_6a;\n  char local_69;\n  istreambuf_iterator<char,std::char_traits<char>> *local_68;\n  ulong local_60;\n  long *local_58;\n  undefined8 local_50;\n  long *local_48;\n  uint local_40;\n  undefined4 uStack_3c;\n  \n  local_40 = (uint)param_3;\n  uStack_3c = (undefined4)((ulong)param_3 >> 0x20);\n  auStack_90[0] = 0x28d449;\n  local_80 = param_6;\n  local_58 = param_4;\n  local_50 = param_5;\n  local_48 = param_2;\n  pcVar12 = use_facet<std::ctype<char>>((locale *)(param_9 + 0xd0));\n  lVar4 = -(param_8 * 4 + 0x17U & 0xfffffffffffffff0);\n  piVar1 = (int *)((long)&local_80 + lVar4);\n  local_78 = &local_58;\n  local_68 = (istreambuf_iterator<char,std::char_traits<char>> *)&local_48;\n  *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d483;\n  cVar7 = istreambuf_iterator<char,std::char_traits<char>>::equal\n                    ((istreambuf_iterator<char,std::char_traits<char>> *)&local_48,\n                     (istreambuf_iterator *)&local_58);\n  if (cVar7 == '\0') {\n    *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d4b1;\n    cVar7 = istreambuf_iterator<char,std::char_traits<char>>::_M_get();\n    if (param_8 != 0) {\n      lVar16 = 0;\n      uVar19 = 0;\n      do {\n        while (**(char **)(param_7 + lVar16 * 8) == cVar7) {\nLAB_0028d4f6:\n          piVar1[uVar19] = (int)lVar16;\n          uVar19 = uVar19 + 1;\n          lVar16 = lVar16 + 1;\n          if (param_8 == lVar16) goto LAB_0028d508;\n        }\n        local_60 = CONCAT71(local_60._1_7_,cVar7);\n        pcVar3 = *(code **)(*(long *)pcVar12 + 0x10);\n        *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d4d6;\n        cVar8 = (*pcVar3)(pcVar12);\n        cVar7 = (char)local_60;\n        if ((char)local_60 == cVar8) goto LAB_0028d4f6;\n        lVar16 = lVar16 + 1;\n      } while (param_8 != lVar16);\nLAB_0028d508:\n      local_60 = 0;\njoined_r0x0028d514:\n      if (1 < uVar19) {\n        uVar17 = 1;\n        pcVar2 = *(char **)(param_7 + (long)*piVar1 * 8);\n        *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d532;\n        uVar13 = strlen(pcVar2);\n        do {\n          pcVar2 = *(char **)(param_7 + (long)piVar1[uVar17] * 8);\n          *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d545;\n          sVar14 = strlen(pcVar2);\n          if (sVar14 < uVar13) {\n            uVar13 = sVar14;\n          }\n          uVar17 = uVar17 + 1;\n        } while (uVar17 < uVar19);\n        if ((ulong)local_48[2] < (ulong)local_48[3]) {\n          local_48[2] = local_48[2] + 1;\n        }\n        else {\n          pcVar3 = *(code **)(*local_48 + 0x50);\n          *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d796;\n          (*pcVar3)();\n        }\n        local_60 = local_60 + 1;\n        local_40 = 0xffffffff;\n        if (uVar13 <= local_60) goto LAB_0028d487;\n        cVar7 = '\x01';\n        if (local_48 != (long *)0x0) {\n          cVar7 = '\0';\n          if ((ulong)local_48[3] <= (ulong)local_48[2]) {\n            pcVar3 = *(code **)(*local_48 + 0x48);\n            *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d7a1;\n            iVar10 = (*pcVar3)();\n            cVar7 = '\0';\n            if (iVar10 == -1) {\n              local_48 = (long *)0x0;\n              cVar7 = '\x01';\n            }\n          }\n        }\n        bVar9 = local_58 != (long *)0x0 && (int)local_50 == -1;\n        cVar8 = (int)local_50 == -1;\n        if ((bVar9) && (cVar8 = '\0', (ulong)local_58[3] <= (ulong)local_58[2])) {\n          local_69 = '\0';\n          pcVar3 = *(code **)(*local_58 + 0x48);\n          local_6a = bVar9;\n          *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d736;\n          iVar10 = (*pcVar3)();\n          cVar8 = local_69;\n          if (iVar10 == -1) {\n            local_58 = (long *)0x0;\n            cVar8 = local_6a;\n          }\n        }\n        if (cVar8 == cVar7) goto LAB_0028d487;\n        uVar13 = 0;\n        do {\n          while( true ) {\n            cVar7 = *(char *)(*(long *)(param_7 + (long)piVar1[uVar13] * 8) + local_60);\n            uVar11 = local_40;\n            if ((local_48 != (long *)0x0) && (local_40 == 0xffffffff)) {\n              if ((byte *)local_48[2] < (byte *)local_48[3]) {\n                uVar11 = (uint)*(byte *)local_48[2];\n              }\n              else {\n                pcVar3 = *(code **)(*local_48 + 0x48);\n                local_69 = cVar7;\n                *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d76a;\n                uVar11 = (*pcVar3)();\n                cVar7 = local_69;\n                if (uVar11 == 0xffffffff) {\n                  local_48 = (long *)0x0;\n                  uVar11 = 0xffffffff;\n                }\n              }\n            }\n            if (cVar7 != (char)uVar11) break;\n            uVar13 = uVar13 + 1;\n            if (uVar19 <= uVar13) goto joined_r0x0028d514;\n          }\n          uVar19 = uVar19 - 1;\n          piVar1[uVar13] = piVar1[uVar19];\n        } while (uVar13 < uVar19);\n        goto joined_r0x0028d514;\n      }\n      if (uVar19 == 1) {\n        if ((ulong)local_48[2] < (ulong)local_48[3]) {\n          local_48[2] = local_48[2] + 1;\n        }\n        else {\n          pcVar3 = *(code **)(*local_48 + 0x50);\n          *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d7fe;\n          (*pcVar3)();\n        }\n        uVar19 = local_60;\n        local_40 = 0xffffffff;\n        pcVar2 = *(char **)(param_7 + (long)*piVar1 * 8);\n        local_60 = CONCAT44(local_60._4_4_,*piVar1);\n        sVar18 = uVar19 + 1;\n        *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d670;\n        sVar14 = strlen(pcVar2);\n        if (sVar18 < sVar14) {\n          do {\n            this = local_68;\n            pplVar6 = local_78;\n            *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d6c9;\n            cVar7 = istreambuf_iterator<char,std::char_traits<char>>::equal\n                              (this,(istreambuf_iterator *)pplVar6);\n            if (cVar7 != '\0') goto LAB_0028d487;\n            cVar7 = pcVar2[sVar18];\n            uVar11 = local_40;\n            if ((local_48 == (long *)0x0) || (local_40 != 0xffffffff)) {\nLAB_0028d688:\n              if (cVar7 != (char)uVar11) goto LAB_0028d487;\n              pcVar15 = (char *)local_48[2];\n              if (pcVar15 < (char *)local_48[3]) goto LAB_0028d6a3;\n              pcVar3 = *(code **)(*local_48 + 0x50);\n              *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d7c3;\n              (*pcVar3)();\n            }\n            else {\n              pcVar15 = (char *)local_48[2];\n              if ((char *)local_48[3] <= pcVar15) {\n                pcVar3 = *(code **)(*local_48 + 0x48);\n                *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d7e2;\n                uVar11 = (*pcVar3)();\n                if (uVar11 == 0xffffffff) {\n                  local_48 = (long *)0x0;\n                }\n                goto LAB_0028d688;\n              }\n              if (cVar7 != *pcVar15) goto LAB_0028d487;\nLAB_0028d6a3:\n              local_48[2] = (long)(pcVar15 + 1);\n            }\n            sVar18 = sVar18 + 1;\n            local_40 = 0xffffffff;\n          } while (sVar18 != sVar14);\n        }\n        else if (sVar18 != sVar14) goto LAB_0028d487;\n        *local_80 = (undefined4)local_60;\n        goto LAB_0028d48e;\n      }\n    }\n  }\nLAB_0028d487:\n  *param_10 = *param_10 | 4;\nLAB_0028d48e:\n  auVar5._8_4_ = local_40;\n  auVar5._0_8_ = local_48;\n  auVar5._12_4_ = uStack_3c;\n  return auVar5;\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>>>::_M_extract_name\n          (undefined8 param_1,long *param_2,undefined8 param_3,long *param_4,undefined8 param_5,\n          undefined4 *param_6,long param_7,long param_8,long param_9,uint *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>>>::_M_extract_name\n          (undefined8 param_1,long *param_2,undefined8 param_3,long *param_4,undefined8 param_5,\n          undefined4 *param_6,long param_7,long param_8,long param_9,uint *param_10)" (binary_expression "char_traits<char>>>::_M_extract_name\n          (undefined8 param_1,long *param_2,undefined8 param_3,long *param_4,undefined8 param_5,\n          undefined4 *param_6,long param_7,long param_8,long param_9,uint *param_10)" identifier < (binary_expression "char>>>::_M_extract_name\n          (undefined8 param_1,long *param_2,undefined8 param_3,long *param_4,undefined8 param_5,\n          undefined4 *param_6,long param_7,long param_8,long param_9,uint *param_10)" identifier >> (ERROR ">::" > : :) (call_expression "_M_extract_name\n          (undefined8 param_1,long *param_2,undefined8 param_3,long *param_4,undefined8 param_5,\n          undefined4 *param_6,long param_7,long param_8,long param_9,uint *param_10)" identifier (argument_list "(undefined8 param_1,long *param_2,undefined8 param_3,long *param_4,undefined8 param_5,\n          undefined4 *param_6,long param_7,long param_8,long param_9,uint *param_10)" ( identifier (ERROR "param_1" identifier) , (binary_expression "long *param_2" identifier * identifier) , identifier (ERROR "param_3" identifier) , (binary_expression "long *param_4" identifier * identifier) , identifier (ERROR "param_5" identifier) , (binary_expression "undefined4 *param_6" identifier * identifier) , (ERROR "long" identifier) identifier , (ERROR "long" identifier) identifier , (ERROR "long" identifier) identifier , (binary_expression "uint *param_10" identifier * identifier) ))))) ;)) (compound_statement "{\n  int *piVar1;\n  char *pcVar2;\n  code *pcVar3;\n  long lVar4;\n  undefined1 auVar5 [16];\n  long **pplVar6;\n  istreambuf_iterator<char,std::char_traits<char>> *this;\n  char cVar7;\n  char cVar8;\n  bool bVar9;\n  int iVar10;\n  uint uVar11;\n  ctype *pcVar12;\n  ulong uVar13;\n  size_t sVar14;\n  char *pcVar15;\n  long lVar16;\n  ulong uVar17;\n  size_t sVar18;\n  ulong uVar19;\n  undefined8 auStack_90 [2];\n  undefined4 *local_80;\n  long **local_78;\n  char local_6a;\n  char local_69;\n  istreambuf_iterator<char,std::char_traits<char>> *local_68;\n  ulong local_60;\n  long *local_58;\n  undefined8 local_50;\n  long *local_48;\n  uint local_40;\n  undefined4 uStack_3c;\n  \n  local_40 = (uint)param_3;\n  uStack_3c = (undefined4)((ulong)param_3 >> 0x20);\n  auStack_90[0] = 0x28d449;\n  local_80 = param_6;\n  local_58 = param_4;\n  local_50 = param_5;\n  local_48 = param_2;\n  pcVar12 = use_facet<std::ctype<char>>((locale *)(param_9 + 0xd0));\n  lVar4 = -(param_8 * 4 + 0x17U & 0xfffffffffffffff0);\n  piVar1 = (int *)((long)&local_80 + lVar4);\n  local_78 = &local_58;\n  local_68 = (istreambuf_iterator<char,std::char_traits<char>> *)&local_48;\n  *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d483;\n  cVar7 = istreambuf_iterator<char,std::char_traits<char>>::equal\n                    ((istreambuf_iterator<char,std::char_traits<char>> *)&local_48,\n                     (istreambuf_iterator *)&local_58);\n  if (cVar7 == '\0') {\n    *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d4b1;\n    cVar7 = istreambuf_iterator<char,std::char_traits<char>>::_M_get();\n    if (param_8 != 0) {\n      lVar16 = 0;\n      uVar19 = 0;\n      do {\n        while (**(char **)(param_7 + lVar16 * 8) == cVar7) {\nLAB_0028d4f6:\n          piVar1[uVar19] = (int)lVar16;\n          uVar19 = uVar19 + 1;\n          lVar16 = lVar16 + 1;\n          if (param_8 == lVar16) goto LAB_0028d508;\n        }\n        local_60 = CONCAT71(local_60._1_7_,cVar7);\n        pcVar3 = *(code **)(*(long *)pcVar12 + 0x10);\n        *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d4d6;\n        cVar8 = (*pcVar3)(pcVar12);\n        cVar7 = (char)local_60;\n        if ((char)local_60 == cVar8) goto LAB_0028d4f6;\n        lVar16 = lVar16 + 1;\n      } while (param_8 != lVar16);\nLAB_0028d508:\n      local_60 = 0;\njoined_r0x0028d514:\n      if (1 < uVar19) {\n        uVar17 = 1;\n        pcVar2 = *(char **)(param_7 + (long)*piVar1 * 8);\n        *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d532;\n        uVar13 = strlen(pcVar2);\n        do {\n          pcVar2 = *(char **)(param_7 + (long)piVar1[uVar17] * 8);\n          *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d545;\n          sVar14 = strlen(pcVar2);\n          if (sVar14 < uVar13) {\n            uVar13 = sVar14;\n          }\n          uVar17 = uVar17 + 1;\n        } while (uVar17 < uVar19);\n        if ((ulong)local_48[2] < (ulong)local_48[3]) {\n          local_48[2] = local_48[2] + 1;\n        }\n        else {\n          pcVar3 = *(code **)(*local_48 + 0x50);\n          *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d796;\n          (*pcVar3)();\n        }\n        local_60 = local_60 + 1;\n        local_40 = 0xffffffff;\n        if (uVar13 <= local_60) goto LAB_0028d487;\n        cVar7 = '\x01';\n        if (local_48 != (long *)0x0) {\n          cVar7 = '\0';\n          if ((ulong)local_48[3] <= (ulong)local_48[2]) {\n            pcVar3 = *(code **)(*local_48 + 0x48);\n            *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d7a1;\n            iVar10 = (*pcVar3)();\n            cVar7 = '\0';\n            if (iVar10 == -1) {\n              local_48 = (long *)0x0;\n              cVar7 = '\x01';\n            }\n          }\n        }\n        bVar9 = local_58 != (long *)0x0 && (int)local_50 == -1;\n        cVar8 = (int)local_50 == -1;\n        if ((bVar9) && (cVar8 = '\0', (ulong)local_58[3] <= (ulong)local_58[2])) {\n          local_69 = '\0';\n          pcVar3 = *(code **)(*local_58 + 0x48);\n          local_6a = bVar9;\n          *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d736;\n          iVar10 = (*pcVar3)();\n          cVar8 = local_69;\n          if (iVar10 == -1) {\n            local_58 = (long *)0x0;\n            cVar8 = local_6a;\n          }\n        }\n        if (cVar8 == cVar7) goto LAB_0028d487;\n        uVar13 = 0;\n        do {\n          while( true ) {\n            cVar7 = *(char *)(*(long *)(param_7 + (long)piVar1[uVar13] * 8) + local_60);\n            uVar11 = local_40;\n            if ((local_48 != (long *)0x0) && (local_40 == 0xffffffff)) {\n              if ((byte *)local_48[2] < (byte *)local_48[3]) {\n                uVar11 = (uint)*(byte *)local_48[2];\n              }\n              else {\n                pcVar3 = *(code **)(*local_48 + 0x48);\n                local_69 = cVar7;\n                *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d76a;\n                uVar11 = (*pcVar3)();\n                cVar7 = local_69;\n                if (uVar11 == 0xffffffff) {\n                  local_48 = (long *)0x0;\n                  uVar11 = 0xffffffff;\n                }\n              }\n            }\n            if (cVar7 != (char)uVar11) break;\n            uVar13 = uVar13 + 1;\n            if (uVar19 <= uVar13) goto joined_r0x0028d514;\n          }\n          uVar19 = uVar19 - 1;\n          piVar1[uVar13] = piVar1[uVar19];\n        } while (uVar13 < uVar19);\n        goto joined_r0x0028d514;\n      }\n      if (uVar19 == 1) {\n        if ((ulong)local_48[2] < (ulong)local_48[3]) {\n          local_48[2] = local_48[2] + 1;\n        }\n        else {\n          pcVar3 = *(code **)(*local_48 + 0x50);\n          *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d7fe;\n          (*pcVar3)();\n        }\n        uVar19 = local_60;\n        local_40 = 0xffffffff;\n        pcVar2 = *(char **)(param_7 + (long)*piVar1 * 8);\n        local_60 = CONCAT44(local_60._4_4_,*piVar1);\n        sVar18 = uVar19 + 1;\n        *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d670;\n        sVar14 = strlen(pcVar2);\n        if (sVar18 < sVar14) {\n          do {\n            this = local_68;\n            pplVar6 = local_78;\n            *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d6c9;\n            cVar7 = istreambuf_iterator<char,std::char_traits<char>>::equal\n                              (this,(istreambuf_iterator *)pplVar6);\n            if (cVar7 != '\0') goto LAB_0028d487;\n            cVar7 = pcVar2[sVar18];\n            uVar11 = local_40;\n            if ((local_48 == (long *)0x0) || (local_40 != 0xffffffff)) {\nLAB_0028d688:\n              if (cVar7 != (char)uVar11) goto LAB_0028d487;\n              pcVar15 = (char *)local_48[2];\n              if (pcVar15 < (char *)local_48[3]) goto LAB_0028d6a3;\n              pcVar3 = *(code **)(*local_48 + 0x50);\n              *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d7c3;\n              (*pcVar3)();\n            }\n            else {\n              pcVar15 = (char *)local_48[2];\n              if ((char *)local_48[3] <= pcVar15) {\n                pcVar3 = *(code **)(*local_48 + 0x48);\n                *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d7e2;\n                uVar11 = (*pcVar3)();\n                if (uVar11 == 0xffffffff) {\n                  local_48 = (long *)0x0;\n                }\n                goto LAB_0028d688;\n              }\n              if (cVar7 != *pcVar15) goto LAB_0028d487;\nLAB_0028d6a3:\n              local_48[2] = (long)(pcVar15 + 1);\n            }\n            sVar18 = sVar18 + 1;\n            local_40 = 0xffffffff;\n          } while (sVar18 != sVar14);\n        }\n        else if (sVar18 != sVar14) goto LAB_0028d487;\n        *local_80 = (undefined4)local_60;\n        goto LAB_0028d48e;\n      }\n    }\n  }\nLAB_0028d487:\n  *param_10 = *param_10 | 4;\nLAB_0028d48e:\n  auVar5._8_4_ = local_40;\n  auVar5._0_8_ = local_48;\n  auVar5._12_4_ = uStack_3c;\n  return auVar5;\n}" { (declaration "int *piVar1;" primitive_type (pointer_declarator "*piVar1" * identifier) ;) (declaration "char *pcVar2;" primitive_type (pointer_declarator "*pcVar2" * identifier) ;) (declaration "code *pcVar3;" type_identifier (pointer_declarator "*pcVar3" * identifier) ;) (declaration "long lVar4;" (sized_type_specifier "long" long) identifier ;) (declaration "undefined1 auVar5 [16];" type_identifier (array_declarator "auVar5 [16]" identifier [ number_literal ]) ;) (declaration "long **pplVar6;" (sized_type_specifier "long" long) (pointer_declarator "**pplVar6" * (pointer_declarator "*pplVar6" * identifier)) ;) (ERROR "istreambuf_iterator<char,std::" (comma_expression "istreambuf_iterator<char,std" (binary_expression "istreambuf_iterator<char" identifier < identifier) , identifier) : :) (expression_statement "char_traits<char>> *this;" (binary_expression "char_traits<char>> *this" identifier < (binary_expression "char>> *this" identifier >> (pointer_expression "*this" * identifier))) ;) (declaration "char cVar7;" primitive_type identifier ;) (declaration "char cVar8;" primitive_type identifier ;) (declaration "bool bVar9;" primitive_type identifier ;) (declaration "int iVar10;" primitive_type identifier ;) (declaration "uint uVar11;" type_identifier identifier ;) (declaration "ctype *pcVar12;" type_identifier (pointer_declarator "*pcVar12" * identifier) ;) (declaration "ulong uVar13;" type_identifier identifier ;) (declaration "size_t sVar14;" primitive_type identifier ;) (declaration "char *pcVar15;" primitive_type (pointer_declarator "*pcVar15" * identifier) ;) (declaration "long lVar16;" (sized_type_specifier "long" long) identifier ;) (declaration "ulong uVar17;" type_identifier identifier ;) (declaration "size_t sVar18;" primitive_type identifier ;) (declaration "ulong uVar19;" type_identifier identifier ;) (declaration "undefined8 auStack_90 [2];" type_identifier (array_declarator "auStack_90 [2]" identifier [ number_literal ]) ;) (declaration "undefined4 *local_80;" type_identifier (pointer_declarator "*local_80" * identifier) ;) (declaration "long **local_78;" (sized_type_specifier "long" long) (pointer_declarator "**local_78" * (pointer_declarator "*local_78" * identifier)) ;) (declaration "char local_6a;" primitive_type identifier ;) (declaration "char local_69;" primitive_type identifier ;) (ERROR "istreambuf_iterator<char,std::" (comma_expression "istreambuf_iterator<char,std" (binary_expression "istreambuf_iterator<char" identifier < identifier) , identifier) : :) (expression_statement "char_traits<char>> *local_68;" (binary_expression "char_traits<char>> *local_68" identifier < (binary_expression "char>> *local_68" identifier >> (pointer_expression "*local_68" * identifier))) ;) (declaration "ulong local_60;" type_identifier identifier ;) (declaration "long *local_58;" (sized_type_specifier "long" long) (pointer_declarator "*local_58" * identifier) ;) (declaration "undefined8 local_50;" type_identifier identifier ;) (declaration "long *local_48;" (sized_type_specifier "long" long) (pointer_declarator "*local_48" * identifier) ;) (declaration "uint local_40;" type_identifier identifier ;) (declaration "undefined4 uStack_3c;" type_identifier identifier ;) (expression_statement "local_40 = (uint)param_3;" (assignment_expression "local_40 = (uint)param_3" identifier = (cast_expression "(uint)param_3" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (expression_statement "uStack_3c = (undefined4)((ulong)param_3 >> 0x20);" (assignment_expression "uStack_3c = (undefined4)((ulong)param_3 >> 0x20)" identifier = (call_expression "(undefined4)((ulong)param_3 >> 0x20)" (parenthesized_expression "(undefined4)" ( identifier )) (argument_list "((ulong)param_3 >> 0x20)" ( (binary_expression "(ulong)param_3 >> 0x20" (cast_expression "(ulong)param_3" ( (type_descriptor "ulong" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "auStack_90[0] = 0x28d449;" (assignment_expression "auStack_90[0] = 0x28d449" (subscript_expression "auStack_90[0]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "local_80 = param_6;" (assignment_expression "local_80 = param_6" identifier = identifier) ;) (expression_statement "local_58 = param_4;" (assignment_expression "local_58 = param_4" identifier = identifier) ;) (expression_statement "local_50 = param_5;" (assignment_expression "local_50 = param_5" identifier = identifier) ;) (expression_statement "local_48 = param_2;" (assignment_expression "local_48 = param_2" identifier = identifier) ;) (expression_statement "pcVar12 = use_facet<std::ctype<char>>((locale *)(param_9 + 0xd0));" (binary_expression "pcVar12 = use_facet<std::ctype<char>>((locale *)(param_9 + 0xd0))" (assignment_expression "pcVar12 = use_facet<std" identifier = (binary_expression "use_facet<std" identifier < identifier)) (ERROR "::ctype" : : identifier) < (binary_expression "char>>((locale *)(param_9 + 0xd0))" identifier >> (parenthesized_expression "((locale *)(param_9 + 0xd0))" ( (cast_expression "(locale *)(param_9 + 0xd0)" ( (type_descriptor "locale *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_9 + 0xd0)" ( (binary_expression "param_9 + 0xd0" identifier + number_literal) ))) )))) ;) (expression_statement "lVar4 = -(param_8 * 4 + 0x17U & 0xfffffffffffffff0);" (assignment_expression "lVar4 = -(param_8 * 4 + 0x17U & 0xfffffffffffffff0)" identifier = (unary_expression "-(param_8 * 4 + 0x17U & 0xfffffffffffffff0)" - (parenthesized_expression "(param_8 * 4 + 0x17U & 0xfffffffffffffff0)" ( (binary_expression "param_8 * 4 + 0x17U & 0xfffffffffffffff0" (binary_expression "param_8 * 4 + 0x17U" (binary_expression "param_8 * 4" identifier * number_literal) + number_literal) & number_literal) )))) ;) (expression_statement "piVar1 = (int *)((long)&local_80 + lVar4);" (assignment_expression "piVar1 = (int *)((long)&local_80 + lVar4)" identifier = (cast_expression "(int *)((long)&local_80 + lVar4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)&local_80 + lVar4)" ( (binary_expression "(long)&local_80 + lVar4" (cast_expression "(long)&local_80" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (pointer_expression "&local_80" & identifier)) + identifier) )))) ;) (expression_statement "local_78 = &local_58;" (assignment_expression "local_78 = &local_58" identifier = (pointer_expression "&local_58" & identifier)) ;) (expression_statement "local_68 = (istreambuf_iterator<char,std::char_traits<char>> *)&local_48;" (assignment_expression "local_68 = (istreambuf_iterator<char,std::char_traits<char>> *)&local_48" identifier = (binary_expression "(istreambuf_iterator<char,std::char_traits<char>> *)&local_48" (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)) ;) (expression_statement "*(undefined8 *)((long)auStack_90 + lVar4) = 0x28d483;" (assignment_expression "*(undefined8 *)((long)auStack_90 + lVar4) = 0x28d483" (pointer_expression "*(undefined8 *)((long)auStack_90 + lVar4)" * (cast_expression "(undefined8 *)((long)auStack_90 + lVar4)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)auStack_90 + lVar4)" ( (binary_expression "(long)auStack_90 + lVar4" (cast_expression "(long)auStack_90" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + identifier) )))) = number_literal) ;) (ERROR "cVar7 = istreambuf_iterator<char,std::" (comma_expression "cVar7 = istreambuf_iterator<char,std" (assignment_expression "cVar7 = 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_48,\n                     (istreambuf_iterator *)&local_58);" (binary_expression "char_traits<char>>::equal\n                    ((istreambuf_iterator<char,std::char_traits<char>> *)&local_48,\n                     (istreambuf_iterator *)&local_58)" identifier < (binary_expression "char>>::equal\n                    ((istreambuf_iterator<char,std::char_traits<char>> *)&local_48,\n                     (istreambuf_iterator *)&local_58)" identifier >> (ERROR "::" : :) (call_expression "equal\n                    ((istreambuf_iterator<char,std::char_traits<char>> *)&local_48,\n                     (istreambuf_iterator *)&local_58)" identifier (argument_list "((istreambuf_iterator<char,std::char_traits<char>> *)&local_48,\n                     (istreambuf_iterator *)&local_58)" ( (binary_expression "(istreambuf_iterator<char,std::char_traits<char>> *)&local_48" (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_58" ( (type_descriptor "istreambuf_iterator *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&local_58" & identifier)) ))))) ;) (if_statement "if (cVar7 == '\0') {\n    *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d4b1;\n    cVar7 = istreambuf_iterator<char,std::char_traits<char>>::_M_get();\n    if (param_8 != 0) {\n      lVar16 = 0;\n      uVar19 = 0;\n      do {\n        while (**(char **)(param_7 + lVar16 * 8) == cVar7) {\nLAB_0028d4f6:\n          piVar1[uVar19] = (int)lVar16;\n          uVar19 = uVar19 + 1;\n          lVar16 = lVar16 + 1;\n          if (param_8 == lVar16) goto LAB_0028d508;\n        }\n        local_60 = CONCAT71(local_60._1_7_,cVar7);\n        pcVar3 = *(code **)(*(long *)pcVar12 + 0x10);\n        *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d4d6;\n        cVar8 = (*pcVar3)(pcVar12);\n        cVar7 = (char)local_60;\n        if ((char)local_60 == cVar8) goto LAB_0028d4f6;\n        lVar16 = lVar16 + 1;\n      } while (param_8 != lVar16);\nLAB_0028d508:\n      local_60 = 0;\njoined_r0x0028d514:\n      if (1 < uVar19) {\n        uVar17 = 1;\n        pcVar2 = *(char **)(param_7 + (long)*piVar1 * 8);\n        *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d532;\n        uVar13 = strlen(pcVar2);\n        do {\n          pcVar2 = *(char **)(param_7 + (long)piVar1[uVar17] * 8);\n          *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d545;\n          sVar14 = strlen(pcVar2);\n          if (sVar14 < uVar13) {\n            uVar13 = sVar14;\n          }\n          uVar17 = uVar17 + 1;\n        } while (uVar17 < uVar19);\n        if ((ulong)local_48[2] < (ulong)local_48[3]) {\n          local_48[2] = local_48[2] + 1;\n        }\n        else {\n          pcVar3 = *(code **)(*local_48 + 0x50);\n          *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d796;\n          (*pcVar3)();\n        }\n        local_60 = local_60 + 1;\n        local_40 = 0xffffffff;\n        if (uVar13 <= local_60) goto LAB_0028d487;\n        cVar7 = '\x01';\n        if (local_48 != (long *)0x0) {\n          cVar7 = '\0';\n          if ((ulong)local_48[3] <= (ulong)local_48[2]) {\n            pcVar3 = *(code **)(*local_48 + 0x48);\n            *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d7a1;\n            iVar10 = (*pcVar3)();\n            cVar7 = '\0';\n            if (iVar10 == -1) {\n              local_48 = (long *)0x0;\n              cVar7 = '\x01';\n            }\n          }\n        }\n        bVar9 = local_58 != (long *)0x0 && (int)local_50 == -1;\n        cVar8 = (int)local_50 == -1;\n        if ((bVar9) && (cVar8 = '\0', (ulong)local_58[3] <= (ulong)local_58[2])) {\n          local_69 = '\0';\n          pcVar3 = *(code **)(*local_58 + 0x48);\n          local_6a = bVar9;\n          *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d736;\n          iVar10 = (*pcVar3)();\n          cVar8 = local_69;\n          if (iVar10 == -1) {\n            local_58 = (long *)0x0;\n            cVar8 = local_6a;\n          }\n        }\n        if (cVar8 == cVar7) goto LAB_0028d487;\n        uVar13 = 0;\n        do {\n          while( true ) {\n            cVar7 = *(char *)(*(long *)(param_7 + (long)piVar1[uVar13] * 8) + local_60);\n            uVar11 = local_40;\n            if ((local_48 != (long *)0x0) && (local_40 == 0xffffffff)) {\n              if ((byte *)local_48[2] < (byte *)local_48[3]) {\n                uVar11 = (uint)*(byte *)local_48[2];\n              }\n              else {\n                pcVar3 = *(code **)(*local_48 + 0x48);\n                local_69 = cVar7;\n                *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d76a;\n                uVar11 = (*pcVar3)();\n                cVar7 = local_69;\n                if (uVar11 == 0xffffffff) {\n                  local_48 = (long *)0x0;\n                  uVar11 = 0xffffffff;\n                }\n              }\n            }\n            if (cVar7 != (char)uVar11) break;\n            uVar13 = uVar13 + 1;\n            if (uVar19 <= uVar13) goto joined_r0x0028d514;\n          }\n          uVar19 = uVar19 - 1;\n          piVar1[uVar13] = piVar1[uVar19];\n        } while (uVar13 < uVar19);\n        goto joined_r0x0028d514;\n      }\n      if (uVar19 == 1) {\n        if ((ulong)local_48[2] < (ulong)local_48[3]) {\n          local_48[2] = local_48[2] + 1;\n        }\n        else {\n          pcVar3 = *(code **)(*local_48 + 0x50);\n          *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d7fe;\n          (*pcVar3)();\n        }\n        uVar19 = local_60;\n        local_40 = 0xffffffff;\n        pcVar2 = *(char **)(param_7 + (long)*piVar1 * 8);\n        local_60 = CONCAT44(local_60._4_4_,*piVar1);\n        sVar18 = uVar19 + 1;\n        *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d670;\n        sVar14 = strlen(pcVar2);\n        if (sVar18 < sVar14) {\n          do {\n            this = local_68;\n            pplVar6 = local_78;\n            *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d6c9;\n            cVar7 = istreambuf_iterator<char,std::char_traits<char>>::equal\n                              (this,(istreambuf_iterator *)pplVar6);\n            if (cVar7 != '\0') goto LAB_0028d487;\n            cVar7 = pcVar2[sVar18];\n            uVar11 = local_40;\n            if ((local_48 == (long *)0x0) || (local_40 != 0xffffffff)) {\nLAB_0028d688:\n              if (cVar7 != (char)uVar11) goto LAB_0028d487;\n              pcVar15 = (char *)local_48[2];\n              if (pcVar15 < (char *)local_48[3]) goto LAB_0028d6a3;\n              pcVar3 = *(code **)(*local_48 + 0x50);\n              *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d7c3;\n              (*pcVar3)();\n            }\n            else {\n              pcVar15 = (char *)local_48[2];\n              if ((char *)local_48[3] <= pcVar15) {\n                pcVar3 = *(code **)(*local_48 + 0x48);\n                *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d7e2;\n                uVar11 = (*pcVar3)();\n                if (uVar11 == 0xffffffff) {\n                  local_48 = (long *)0x0;\n                }\n                goto LAB_0028d688;\n              }\n              if (cVar7 != *pcVar15) goto LAB_0028d487;\nLAB_0028d6a3:\n              local_48[2] = (long)(pcVar15 + 1);\n            }\n            sVar18 = sVar18 + 1;\n            local_40 = 0xffffffff;\n          } while (sVar18 != sVar14);\n        }\n        else if (sVar18 != sVar14) goto LAB_0028d487;\n        *local_80 = (undefined4)local_60;\n        goto LAB_0028d48e;\n      }\n    }\n  }" if (parenthesized_expression "(cVar7 == '\0')" ( (binary_expression "cVar7 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d4b1;\n    cVar7 = istreambuf_iterator<char,std::char_traits<char>>::_M_get();\n    if (param_8 != 0) {\n      lVar16 = 0;\n      uVar19 = 0;\n      do {\n        while (**(char **)(param_7 + lVar16 * 8) == cVar7) {\nLAB_0028d4f6:\n          piVar1[uVar19] = (int)lVar16;\n          uVar19 = uVar19 + 1;\n          lVar16 = lVar16 + 1;\n          if (param_8 == lVar16) goto LAB_0028d508;\n        }\n        local_60 = CONCAT71(local_60._1_7_,cVar7);\n        pcVar3 = *(code **)(*(long *)pcVar12 + 0x10);\n        *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d4d6;\n        cVar8 = (*pcVar3)(pcVar12);\n        cVar7 = (char)local_60;\n        if ((char)local_60 == cVar8) goto LAB_0028d4f6;\n        lVar16 = lVar16 + 1;\n      } while (param_8 != lVar16);\nLAB_0028d508:\n      local_60 = 0;\njoined_r0x0028d514:\n      if (1 < uVar19) {\n        uVar17 = 1;\n        pcVar2 = *(char **)(param_7 + (long)*piVar1 * 8);\n        *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d532;\n        uVar13 = strlen(pcVar2);\n        do {\n          pcVar2 = *(char **)(param_7 + (long)piVar1[uVar17] * 8);\n          *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d545;\n          sVar14 = strlen(pcVar2);\n          if (sVar14 < uVar13) {\n            uVar13 = sVar14;\n          }\n          uVar17 = uVar17 + 1;\n        } while (uVar17 < uVar19);\n        if ((ulong)local_48[2] < (ulong)local_48[3]) {\n          local_48[2] = local_48[2] + 1;\n        }\n        else {\n          pcVar3 = *(code **)(*local_48 + 0x50);\n          *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d796;\n          (*pcVar3)();\n        }\n        local_60 = local_60 + 1;\n        local_40 = 0xffffffff;\n        if (uVar13 <= local_60) goto LAB_0028d487;\n        cVar7 = '\x01';\n        if (local_48 != (long *)0x0) {\n          cVar7 = '\0';\n          if ((ulong)local_48[3] <= (ulong)local_48[2]) {\n            pcVar3 = *(code **)(*local_48 + 0x48);\n            *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d7a1;\n            iVar10 = (*pcVar3)();\n            cVar7 = '\0';\n            if (iVar10 == -1) {\n              local_48 = (long *)0x0;\n              cVar7 = '\x01';\n            }\n          }\n        }\n        bVar9 = local_58 != (long *)0x0 && (int)local_50 == -1;\n        cVar8 = (int)local_50 == -1;\n        if ((bVar9) && (cVar8 = '\0', (ulong)local_58[3] <= (ulong)local_58[2])) {\n          local_69 = '\0';\n          pcVar3 = *(code **)(*local_58 + 0x48);\n          local_6a = bVar9;\n          *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d736;\n          iVar10 = (*pcVar3)();\n          cVar8 = local_69;\n          if (iVar10 == -1) {\n            local_58 = (long *)0x0;\n            cVar8 = local_6a;\n          }\n        }\n        if (cVar8 == cVar7) goto LAB_0028d487;\n        uVar13 = 0;\n        do {\n          while( true ) {\n            cVar7 = *(char *)(*(long *)(param_7 + (long)piVar1[uVar13] * 8) + local_60);\n            uVar11 = local_40;\n            if ((local_48 != (long *)0x0) && (local_40 == 0xffffffff)) {\n              if ((byte *)local_48[2] < (byte *)local_48[3]) {\n                uVar11 = (uint)*(byte *)local_48[2];\n              }\n              else {\n                pcVar3 = *(code **)(*local_48 + 0x48);\n                local_69 = cVar7;\n                *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d76a;\n                uVar11 = (*pcVar3)();\n                cVar7 = local_69;\n                if (uVar11 == 0xffffffff) {\n                  local_48 = (long *)0x0;\n                  uVar11 = 0xffffffff;\n                }\n              }\n            }\n            if (cVar7 != (char)uVar11) break;\n            uVar13 = uVar13 + 1;\n            if (uVar19 <= uVar13) goto joined_r0x0028d514;\n          }\n          uVar19 = uVar19 - 1;\n          piVar1[uVar13] = piVar1[uVar19];\n        } while (uVar13 < uVar19);\n        goto joined_r0x0028d514;\n      }\n      if (uVar19 == 1) {\n        if ((ulong)local_48[2] < (ulong)local_48[3]) {\n          local_48[2] = local_48[2] + 1;\n        }\n        else {\n          pcVar3 = *(code **)(*local_48 + 0x50);\n          *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d7fe;\n          (*pcVar3)();\n        }\n        uVar19 = local_60;\n        local_40 = 0xffffffff;\n        pcVar2 = *(char **)(param_7 + (long)*piVar1 * 8);\n        local_60 = CONCAT44(local_60._4_4_,*piVar1);\n        sVar18 = uVar19 + 1;\n        *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d670;\n        sVar14 = strlen(pcVar2);\n        if (sVar18 < sVar14) {\n          do {\n            this = local_68;\n            pplVar6 = local_78;\n            *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d6c9;\n            cVar7 = istreambuf_iterator<char,std::char_traits<char>>::equal\n                              (this,(istreambuf_iterator *)pplVar6);\n            if (cVar7 != '\0') goto LAB_0028d487;\n            cVar7 = pcVar2[sVar18];\n            uVar11 = local_40;\n            if ((local_48 == (long *)0x0) || (local_40 != 0xffffffff)) {\nLAB_0028d688:\n              if (cVar7 != (char)uVar11) goto LAB_0028d487;\n              pcVar15 = (char *)local_48[2];\n              if (pcVar15 < (char *)local_48[3]) goto LAB_0028d6a3;\n              pcVar3 = *(code **)(*local_48 + 0x50);\n              *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d7c3;\n              (*pcVar3)();\n            }\n            else {\n              pcVar15 = (char *)local_48[2];\n              if ((char *)local_48[3] <= pcVar15) {\n                pcVar3 = *(code **)(*local_48 + 0x48);\n                *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d7e2;\n                uVar11 = (*pcVar3)();\n                if (uVar11 == 0xffffffff) {\n                  local_48 = (long *)0x0;\n                }\n                goto LAB_0028d688;\n              }\n              if (cVar7 != *pcVar15) goto LAB_0028d487;\nLAB_0028d6a3:\n              local_48[2] = (long)(pcVar15 + 1);\n            }\n            sVar18 = sVar18 + 1;\n            local_40 = 0xffffffff;\n          } while (sVar18 != sVar14);\n        }\n        else if (sVar18 != sVar14) goto LAB_0028d487;\n        *local_80 = (undefined4)local_60;\n        goto LAB_0028d48e;\n      }\n    }\n  }" { (expression_statement "*(undefined8 *)((long)auStack_90 + lVar4) = 0x28d4b1;" (assignment_expression "*(undefined8 *)((long)auStack_90 + lVar4) = 0x28d4b1" (pointer_expression "*(undefined8 *)((long)auStack_90 + lVar4)" * (cast_expression "(undefined8 *)((long)auStack_90 + lVar4)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)auStack_90 + lVar4)" ( (binary_expression "(long)auStack_90 + lVar4" (cast_expression "(long)auStack_90" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + identifier) )))) = number_literal) ;) (ERROR "cVar7 = istreambuf_iterator<char,std::" (comma_expression "cVar7 = istreambuf_iterator<char,std" (assignment_expression "cVar7 = istreambuf_iterator<char" identifier = (binary_expression "istreambuf_iterator<char" identifier < identifier)) , identifier) : :) (expression_statement "char_traits<char>>::_M_get();" (binary_expression "char_traits<char>>::_M_get()" identifier < (binary_expression "char>>::_M_get()" identifier >> (ERROR "::" : :) (call_expression "_M_get()" identifier (argument_list "()" ( ))))) ;) (if_statement "if (param_8 != 0) {\n      lVar16 = 0;\n      uVar19 = 0;\n      do {\n        while (**(char **)(param_7 + lVar16 * 8) == cVar7) {\nLAB_0028d4f6:\n          piVar1[uVar19] = (int)lVar16;\n          uVar19 = uVar19 + 1;\n          lVar16 = lVar16 + 1;\n          if (param_8 == lVar16) goto LAB_0028d508;\n        }\n        local_60 = CONCAT71(local_60._1_7_,cVar7);\n        pcVar3 = *(code **)(*(long *)pcVar12 + 0x10);\n        *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d4d6;\n        cVar8 = (*pcVar3)(pcVar12);\n        cVar7 = (char)local_60;\n        if ((char)local_60 == cVar8) goto LAB_0028d4f6;\n        lVar16 = lVar16 + 1;\n      } while (param_8 != lVar16);\nLAB_0028d508:\n      local_60 = 0;\njoined_r0x0028d514:\n      if (1 < uVar19) {\n        uVar17 = 1;\n        pcVar2 = *(char **)(param_7 + (long)*piVar1 * 8);\n        *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d532;\n        uVar13 = strlen(pcVar2);\n        do {\n          pcVar2 = *(char **)(param_7 + (long)piVar1[uVar17] * 8);\n          *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d545;\n          sVar14 = strlen(pcVar2);\n          if (sVar14 < uVar13) {\n            uVar13 = sVar14;\n          }\n          uVar17 = uVar17 + 1;\n        } while (uVar17 < uVar19);\n        if ((ulong)local_48[2] < (ulong)local_48[3]) {\n          local_48[2] = local_48[2] + 1;\n        }\n        else {\n          pcVar3 = *(code **)(*local_48 + 0x50);\n          *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d796;\n          (*pcVar3)();\n        }\n        local_60 = local_60 + 1;\n        local_40 = 0xffffffff;\n        if (uVar13 <= local_60) goto LAB_0028d487;\n        cVar7 = '\x01';\n        if (local_48 != (long *)0x0) {\n          cVar7 = '\0';\n          if ((ulong)local_48[3] <= (ulong)local_48[2]) {\n            pcVar3 = *(code **)(*local_48 + 0x48);\n            *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d7a1;\n            iVar10 = (*pcVar3)();\n            cVar7 = '\0';\n            if (iVar10 == -1) {\n              local_48 = (long *)0x0;\n              cVar7 = '\x01';\n            }\n          }\n        }\n        bVar9 = local_58 != (long *)0x0 && (int)local_50 == -1;\n        cVar8 = (int)local_50 == -1;\n        if ((bVar9) && (cVar8 = '\0', (ulong)local_58[3] <= (ulong)local_58[2])) {\n          local_69 = '\0';\n          pcVar3 = *(code **)(*local_58 + 0x48);\n          local_6a = bVar9;\n          *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d736;\n          iVar10 = (*pcVar3)();\n          cVar8 = local_69;\n          if (iVar10 == -1) {\n            local_58 = (long *)0x0;\n            cVar8 = local_6a;\n          }\n        }\n        if (cVar8 == cVar7) goto LAB_0028d487;\n        uVar13 = 0;\n        do {\n          while( true ) {\n            cVar7 = *(char *)(*(long *)(param_7 + (long)piVar1[uVar13] * 8) + local_60);\n            uVar11 = local_40;\n            if ((local_48 != (long *)0x0) && (local_40 == 0xffffffff)) {\n              if ((byte *)local_48[2] < (byte *)local_48[3]) {\n                uVar11 = (uint)*(byte *)local_48[2];\n              }\n              else {\n                pcVar3 = *(code **)(*local_48 + 0x48);\n                local_69 = cVar7;\n                *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d76a;\n                uVar11 = (*pcVar3)();\n                cVar7 = local_69;\n                if (uVar11 == 0xffffffff) {\n                  local_48 = (long *)0x0;\n                  uVar11 = 0xffffffff;\n                }\n              }\n            }\n            if (cVar7 != (char)uVar11) break;\n            uVar13 = uVar13 + 1;\n            if (uVar19 <= uVar13) goto joined_r0x0028d514;\n          }\n          uVar19 = uVar19 - 1;\n          piVar1[uVar13] = piVar1[uVar19];\n        } while (uVar13 < uVar19);\n        goto joined_r0x0028d514;\n      }\n      if (uVar19 == 1) {\n        if ((ulong)local_48[2] < (ulong)local_48[3]) {\n          local_48[2] = local_48[2] + 1;\n        }\n        else {\n          pcVar3 = *(code **)(*local_48 + 0x50);\n          *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d7fe;\n          (*pcVar3)();\n        }\n        uVar19 = local_60;\n        local_40 = 0xffffffff;\n        pcVar2 = *(char **)(param_7 + (long)*piVar1 * 8);\n        local_60 = CONCAT44(local_60._4_4_,*piVar1);\n        sVar18 = uVar19 + 1;\n        *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d670;\n        sVar14 = strlen(pcVar2);\n        if (sVar18 < sVar14) {\n          do {\n            this = local_68;\n            pplVar6 = local_78;\n            *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d6c9;\n            cVar7 = istreambuf_iterator<char,std::char_traits<char>>::equal\n                              (this,(istreambuf_iterator *)pplVar6);\n            if (cVar7 != '\0') goto LAB_0028d487;\n            cVar7 = pcVar2[sVar18];\n            uVar11 = local_40;\n            if ((local_48 == (long *)0x0) || (local_40 != 0xffffffff)) {\nLAB_0028d688:\n              if (cVar7 != (char)uVar11) goto LAB_0028d487;\n              pcVar15 = (char *)local_48[2];\n              if (pcVar15 < (char *)local_48[3]) goto LAB_0028d6a3;\n              pcVar3 = *(code **)(*local_48 + 0x50);\n              *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d7c3;\n              (*pcVar3)();\n            }\n            else {\n              pcVar15 = (char *)local_48[2];\n              if ((char *)local_48[3] <= pcVar15) {\n                pcVar3 = *(code **)(*local_48 + 0x48);\n                *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d7e2;\n                uVar11 = (*pcVar3)();\n                if (uVar11 == 0xffffffff) {\n                  local_48 = (long *)0x0;\n                }\n                goto LAB_0028d688;\n              }\n              if (cVar7 != *pcVar15) goto LAB_0028d487;\nLAB_0028d6a3:\n              local_48[2] = (long)(pcVar15 + 1);\n            }\n            sVar18 = sVar18 + 1;\n            local_40 = 0xffffffff;\n          } while (sVar18 != sVar14);\n        }\n        else if (sVar18 != sVar14) goto LAB_0028d487;\n        *local_80 = (undefined4)local_60;\n        goto LAB_0028d48e;\n      }\n    }" if (parenthesized_expression "(param_8 != 0)" ( (binary_expression "param_8 != 0" identifier != number_literal) )) (compound_statement "{\n      lVar16 = 0;\n      uVar19 = 0;\n      do {\n        while (**(char **)(param_7 + lVar16 * 8) == cVar7) {\nLAB_0028d4f6:\n          piVar1[uVar19] = (int)lVar16;\n          uVar19 = uVar19 + 1;\n          lVar16 = lVar16 + 1;\n          if (param_8 == lVar16) goto LAB_0028d508;\n        }\n        local_60 = CONCAT71(local_60._1_7_,cVar7);\n        pcVar3 = *(code **)(*(long *)pcVar12 + 0x10);\n        *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d4d6;\n        cVar8 = (*pcVar3)(pcVar12);\n        cVar7 = (char)local_60;\n        if ((char)local_60 == cVar8) goto LAB_0028d4f6;\n        lVar16 = lVar16 + 1;\n      } while (param_8 != lVar16);\nLAB_0028d508:\n      local_60 = 0;\njoined_r0x0028d514:\n      if (1 < uVar19) {\n        uVar17 = 1;\n        pcVar2 = *(char **)(param_7 + (long)*piVar1 * 8);\n        *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d532;\n        uVar13 = strlen(pcVar2);\n        do {\n          pcVar2 = *(char **)(param_7 + (long)piVar1[uVar17] * 8);\n          *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d545;\n          sVar14 = strlen(pcVar2);\n          if (sVar14 < uVar13) {\n            uVar13 = sVar14;\n          }\n          uVar17 = uVar17 + 1;\n        } while (uVar17 < uVar19);\n        if ((ulong)local_48[2] < (ulong)local_48[3]) {\n          local_48[2] = local_48[2] + 1;\n        }\n        else {\n          pcVar3 = *(code **)(*local_48 + 0x50);\n          *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d796;\n          (*pcVar3)();\n        }\n        local_60 = local_60 + 1;\n        local_40 = 0xffffffff;\n        if (uVar13 <= local_60) goto LAB_0028d487;\n        cVar7 = '\x01';\n        if (local_48 != (long *)0x0) {\n          cVar7 = '\0';\n          if ((ulong)local_48[3] <= (ulong)local_48[2]) {\n            pcVar3 = *(code **)(*local_48 + 0x48);\n            *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d7a1;\n            iVar10 = (*pcVar3)();\n            cVar7 = '\0';\n            if (iVar10 == -1) {\n              local_48 = (long *)0x0;\n              cVar7 = '\x01';\n            }\n          }\n        }\n        bVar9 = local_58 != (long *)0x0 && (int)local_50 == -1;\n        cVar8 = (int)local_50 == -1;\n        if ((bVar9) && (cVar8 = '\0', (ulong)local_58[3] <= (ulong)local_58[2])) {\n          local_69 = '\0';\n          pcVar3 = *(code **)(*local_58 + 0x48);\n          local_6a = bVar9;\n          *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d736;\n          iVar10 = (*pcVar3)();\n          cVar8 = local_69;\n          if (iVar10 == -1) {\n            local_58 = (long *)0x0;\n            cVar8 = local_6a;\n          }\n        }\n        if (cVar8 == cVar7) goto LAB_0028d487;\n        uVar13 = 0;\n        do {\n          while( true ) {\n            cVar7 = *(char *)(*(long *)(param_7 + (long)piVar1[uVar13] * 8) + local_60);\n            uVar11 = local_40;\n            if ((local_48 != (long *)0x0) && (local_40 == 0xffffffff)) {\n              if ((byte *)local_48[2] < (byte *)local_48[3]) {\n                uVar11 = (uint)*(byte *)local_48[2];\n              }\n              else {\n                pcVar3 = *(code **)(*local_48 + 0x48);\n                local_69 = cVar7;\n                *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d76a;\n                uVar11 = (*pcVar3)();\n                cVar7 = local_69;\n                if (uVar11 == 0xffffffff) {\n                  local_48 = (long *)0x0;\n                  uVar11 = 0xffffffff;\n                }\n              }\n            }\n            if (cVar7 != (char)uVar11) break;\n            uVar13 = uVar13 + 1;\n            if (uVar19 <= uVar13) goto joined_r0x0028d514;\n          }\n          uVar19 = uVar19 - 1;\n          piVar1[uVar13] = piVar1[uVar19];\n        } while (uVar13 < uVar19);\n        goto joined_r0x0028d514;\n      }\n      if (uVar19 == 1) {\n        if ((ulong)local_48[2] < (ulong)local_48[3]) {\n          local_48[2] = local_48[2] + 1;\n        }\n        else {\n          pcVar3 = *(code **)(*local_48 + 0x50);\n          *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d7fe;\n          (*pcVar3)();\n        }\n        uVar19 = local_60;\n        local_40 = 0xffffffff;\n        pcVar2 = *(char **)(param_7 + (long)*piVar1 * 8);\n        local_60 = CONCAT44(local_60._4_4_,*piVar1);\n        sVar18 = uVar19 + 1;\n        *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d670;\n        sVar14 = strlen(pcVar2);\n        if (sVar18 < sVar14) {\n          do {\n            this = local_68;\n            pplVar6 = local_78;\n            *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d6c9;\n            cVar7 = istreambuf_iterator<char,std::char_traits<char>>::equal\n                              (this,(istreambuf_iterator *)pplVar6);\n            if (cVar7 != '\0') goto LAB_0028d487;\n            cVar7 = pcVar2[sVar18];\n            uVar11 = local_40;\n            if ((local_48 == (long *)0x0) || (local_40 != 0xffffffff)) {\nLAB_0028d688:\n              if (cVar7 != (char)uVar11) goto LAB_0028d487;\n              pcVar15 = (char *)local_48[2];\n              if (pcVar15 < (char *)local_48[3]) goto LAB_0028d6a3;\n              pcVar3 = *(code **)(*local_48 + 0x50);\n              *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d7c3;\n              (*pcVar3)();\n            }\n            else {\n              pcVar15 = (char *)local_48[2];\n              if ((char *)local_48[3] <= pcVar15) {\n                pcVar3 = *(code **)(*local_48 + 0x48);\n                *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d7e2;\n                uVar11 = (*pcVar3)();\n                if (uVar11 == 0xffffffff) {\n                  local_48 = (long *)0x0;\n                }\n                goto LAB_0028d688;\n              }\n              if (cVar7 != *pcVar15) goto LAB_0028d487;\nLAB_0028d6a3:\n              local_48[2] = (long)(pcVar15 + 1);\n            }\n            sVar18 = sVar18 + 1;\n            local_40 = 0xffffffff;\n          } while (sVar18 != sVar14);\n        }\n        else if (sVar18 != sVar14) goto LAB_0028d487;\n        *local_80 = (undefined4)local_60;\n        goto LAB_0028d48e;\n      }\n    }" { (expression_statement "lVar16 = 0;" (assignment_expression "lVar16 = 0" identifier = number_literal) ;) (expression_statement "uVar19 = 0;" (assignment_expression "uVar19 = 0" identifier = number_literal) ;) (do_statement "do {\n        while (**(char **)(param_7 + lVar16 * 8) == cVar7) {\nLAB_0028d4f6:\n          piVar1[uVar19] = (int)lVar16;\n          uVar19 = uVar19 + 1;\n          lVar16 = lVar16 + 1;\n          if (param_8 == lVar16) goto LAB_0028d508;\n        }\n        local_60 = CONCAT71(local_60._1_7_,cVar7);\n        pcVar3 = *(code **)(*(long *)pcVar12 + 0x10);\n        *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d4d6;\n        cVar8 = (*pcVar3)(pcVar12);\n        cVar7 = (char)local_60;\n        if ((char)local_60 == cVar8) goto LAB_0028d4f6;\n        lVar16 = lVar16 + 1;\n      } while (param_8 != lVar16);" do (compound_statement "{\n        while (**(char **)(param_7 + lVar16 * 8) == cVar7) {\nLAB_0028d4f6:\n          piVar1[uVar19] = (int)lVar16;\n          uVar19 = uVar19 + 1;\n          lVar16 = lVar16 + 1;\n          if (param_8 == lVar16) goto LAB_0028d508;\n        }\n        local_60 = CONCAT71(local_60._1_7_,cVar7);\n        pcVar3 = *(code **)(*(long *)pcVar12 + 0x10);\n        *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d4d6;\n        cVar8 = (*pcVar3)(pcVar12);\n        cVar7 = (char)local_60;\n        if ((char)local_60 == cVar8) goto LAB_0028d4f6;\n        lVar16 = lVar16 + 1;\n      }" { (while_statement "while (**(char **)(param_7 + lVar16 * 8) == cVar7) {\nLAB_0028d4f6:\n          piVar1[uVar19] = (int)lVar16;\n          uVar19 = uVar19 + 1;\n          lVar16 = lVar16 + 1;\n          if (param_8 == lVar16) goto LAB_0028d508;\n        }" while (parenthesized_expression "(**(char **)(param_7 + lVar16 * 8) == cVar7)" ( (binary_expression "**(char **)(param_7 + lVar16 * 8) == cVar7" (pointer_expression "**(char **)(param_7 + lVar16 * 8)" * (pointer_expression "*(char **)(param_7 + lVar16 * 8)" * (cast_expression "(char **)(param_7 + lVar16 * 8)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_7 + lVar16 * 8)" ( (binary_expression "param_7 + lVar16 * 8" identifier + (binary_expression "lVar16 * 8" identifier * number_literal)) ))))) == identifier) )) (compound_statement "{\nLAB_0028d4f6:\n          piVar1[uVar19] = (int)lVar16;\n          uVar19 = uVar19 + 1;\n          lVar16 = lVar16 + 1;\n          if (param_8 == lVar16) goto LAB_0028d508;\n        }" { (labeled_statement "LAB_0028d4f6:\n          piVar1[uVar19] = (int)lVar16;" statement_identifier : (expression_statement "piVar1[uVar19] = (int)lVar16;" (assignment_expression "piVar1[uVar19] = (int)lVar16" (subscript_expression "piVar1[uVar19]" identifier [ identifier ]) = (cast_expression "(int)lVar16" ( (type_descriptor "int" primitive_type) ) identifier)) ;)) (expression_statement "uVar19 = uVar19 + 1;" (assignment_expression "uVar19 = uVar19 + 1" identifier = (binary_expression "uVar19 + 1" identifier + number_literal)) ;) (expression_statement "lVar16 = lVar16 + 1;" (assignment_expression "lVar16 = lVar16 + 1" identifier = (binary_expression "lVar16 + 1" identifier + number_literal)) ;) (if_statement "if (param_8 == lVar16) goto LAB_0028d508;" if (parenthesized_expression "(param_8 == lVar16)" ( (binary_expression "param_8 == lVar16" identifier == identifier) )) (goto_statement "goto LAB_0028d508;" goto statement_identifier ;)) })) (expression_statement "local_60 = CONCAT71(local_60._1_7_,cVar7);" (assignment_expression "local_60 = CONCAT71(local_60._1_7_,cVar7)" identifier = (call_expression "CONCAT71(local_60._1_7_,cVar7)" identifier (argument_list "(local_60._1_7_,cVar7)" ( (field_expression "local_60._1_7_" identifier . field_identifier) , identifier )))) ;) (expression_statement "pcVar3 = *(code **)(*(long *)pcVar12 + 0x10);" (assignment_expression "pcVar3 = *(code **)(*(long *)pcVar12 + 0x10)" identifier = (pointer_expression "*(code **)(*(long *)pcVar12 + 0x10)" * (cast_expression "(code **)(*(long *)pcVar12 + 0x10)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(long *)pcVar12 + 0x10)" ( (binary_expression "*(long *)pcVar12 + 0x10" (pointer_expression "*(long *)pcVar12" * (cast_expression "(long *)pcVar12" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) identifier)) + number_literal) ))))) ;) (expression_statement "*(undefined8 *)((long)auStack_90 + lVar4) = 0x28d4d6;" (assignment_expression "*(undefined8 *)((long)auStack_90 + lVar4) = 0x28d4d6" (pointer_expression "*(undefined8 *)((long)auStack_90 + lVar4)" * (cast_expression "(undefined8 *)((long)auStack_90 + lVar4)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)auStack_90 + lVar4)" ( (binary_expression "(long)auStack_90 + lVar4" (cast_expression "(long)auStack_90" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + identifier) )))) = number_literal) ;) (expression_statement "cVar8 = (*pcVar3)(pcVar12);" (assignment_expression "cVar8 = (*pcVar3)(pcVar12)" identifier = (call_expression "(*pcVar3)(pcVar12)" (parenthesized_expression "(*pcVar3)" ( (pointer_expression "*pcVar3" * identifier) )) (argument_list "(pcVar12)" ( identifier )))) ;) (expression_statement "cVar7 = (char)local_60;" (assignment_expression "cVar7 = (char)local_60" identifier = (cast_expression "(char)local_60" ( (type_descriptor "char" primitive_type) ) identifier)) ;) (if_statement "if ((char)local_60 == cVar8) goto LAB_0028d4f6;" if (parenthesized_expression "((char)local_60 == cVar8)" ( (binary_expression "(char)local_60 == cVar8" (cast_expression "(char)local_60" ( (type_descriptor "char" primitive_type) ) identifier) == identifier) )) (goto_statement "goto LAB_0028d4f6;" goto statement_identifier ;)) (expression_statement "lVar16 = lVar16 + 1;" (assignment_expression "lVar16 = lVar16 + 1" identifier = (binary_expression "lVar16 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(param_8 != lVar16)" ( (binary_expression "param_8 != lVar16" identifier != identifier) )) ;) (labeled_statement "LAB_0028d508:\n      local_60 = 0;" statement_identifier : (expression_statement "local_60 = 0;" (assignment_expression "local_60 = 0" identifier = number_literal) ;)) (labeled_statement "joined_r0x0028d514:\n      if (1 < uVar19) {\n        uVar17 = 1;\n        pcVar2 = *(char **)(param_7 + (long)*piVar1 * 8);\n        *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d532;\n        uVar13 = strlen(pcVar2);\n        do {\n          pcVar2 = *(char **)(param_7 + (long)piVar1[uVar17] * 8);\n          *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d545;\n          sVar14 = strlen(pcVar2);\n          if (sVar14 < uVar13) {\n            uVar13 = sVar14;\n          }\n          uVar17 = uVar17 + 1;\n        } while (uVar17 < uVar19);\n        if ((ulong)local_48[2] < (ulong)local_48[3]) {\n          local_48[2] = local_48[2] + 1;\n        }\n        else {\n          pcVar3 = *(code **)(*local_48 + 0x50);\n          *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d796;\n          (*pcVar3)();\n        }\n        local_60 = local_60 + 1;\n        local_40 = 0xffffffff;\n        if (uVar13 <= local_60) goto LAB_0028d487;\n        cVar7 = '\x01';\n        if (local_48 != (long *)0x0) {\n          cVar7 = '\0';\n          if ((ulong)local_48[3] <= (ulong)local_48[2]) {\n            pcVar3 = *(code **)(*local_48 + 0x48);\n            *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d7a1;\n            iVar10 = (*pcVar3)();\n            cVar7 = '\0';\n            if (iVar10 == -1) {\n              local_48 = (long *)0x0;\n              cVar7 = '\x01';\n            }\n          }\n        }\n        bVar9 = local_58 != (long *)0x0 && (int)local_50 == -1;\n        cVar8 = (int)local_50 == -1;\n        if ((bVar9) && (cVar8 = '\0', (ulong)local_58[3] <= (ulong)local_58[2])) {\n          local_69 = '\0';\n          pcVar3 = *(code **)(*local_58 + 0x48);\n          local_6a = bVar9;\n          *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d736;\n          iVar10 = (*pcVar3)();\n          cVar8 = local_69;\n          if (iVar10 == -1) {\n            local_58 = (long *)0x0;\n            cVar8 = local_6a;\n          }\n        }\n        if (cVar8 == cVar7) goto LAB_0028d487;\n        uVar13 = 0;\n        do {\n          while( true ) {\n            cVar7 = *(char *)(*(long *)(param_7 + (long)piVar1[uVar13] * 8) + local_60);\n            uVar11 = local_40;\n            if ((local_48 != (long *)0x0) && (local_40 == 0xffffffff)) {\n              if ((byte *)local_48[2] < (byte *)local_48[3]) {\n                uVar11 = (uint)*(byte *)local_48[2];\n              }\n              else {\n                pcVar3 = *(code **)(*local_48 + 0x48);\n                local_69 = cVar7;\n                *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d76a;\n                uVar11 = (*pcVar3)();\n                cVar7 = local_69;\n                if (uVar11 == 0xffffffff) {\n                  local_48 = (long *)0x0;\n                  uVar11 = 0xffffffff;\n                }\n              }\n            }\n            if (cVar7 != (char)uVar11) break;\n            uVar13 = uVar13 + 1;\n            if (uVar19 <= uVar13) goto joined_r0x0028d514;\n          }\n          uVar19 = uVar19 - 1;\n          piVar1[uVar13] = piVar1[uVar19];\n        } while (uVar13 < uVar19);\n        goto joined_r0x0028d514;\n      }" statement_identifier : (if_statement "if (1 < uVar19) {\n        uVar17 = 1;\n        pcVar2 = *(char **)(param_7 + (long)*piVar1 * 8);\n        *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d532;\n        uVar13 = strlen(pcVar2);\n        do {\n          pcVar2 = *(char **)(param_7 + (long)piVar1[uVar17] * 8);\n          *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d545;\n          sVar14 = strlen(pcVar2);\n          if (sVar14 < uVar13) {\n            uVar13 = sVar14;\n          }\n          uVar17 = uVar17 + 1;\n        } while (uVar17 < uVar19);\n        if ((ulong)local_48[2] < (ulong)local_48[3]) {\n          local_48[2] = local_48[2] + 1;\n        }\n        else {\n          pcVar3 = *(code **)(*local_48 + 0x50);\n          *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d796;\n          (*pcVar3)();\n        }\n        local_60 = local_60 + 1;\n        local_40 = 0xffffffff;\n        if (uVar13 <= local_60) goto LAB_0028d487;\n        cVar7 = '\x01';\n        if (local_48 != (long *)0x0) {\n          cVar7 = '\0';\n          if ((ulong)local_48[3] <= (ulong)local_48[2]) {\n            pcVar3 = *(code **)(*local_48 + 0x48);\n            *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d7a1;\n            iVar10 = (*pcVar3)();\n            cVar7 = '\0';\n            if (iVar10 == -1) {\n              local_48 = (long *)0x0;\n              cVar7 = '\x01';\n            }\n          }\n        }\n        bVar9 = local_58 != (long *)0x0 && (int)local_50 == -1;\n        cVar8 = (int)local_50 == -1;\n        if ((bVar9) && (cVar8 = '\0', (ulong)local_58[3] <= (ulong)local_58[2])) {\n          local_69 = '\0';\n          pcVar3 = *(code **)(*local_58 + 0x48);\n          local_6a = bVar9;\n          *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d736;\n          iVar10 = (*pcVar3)();\n          cVar8 = local_69;\n          if (iVar10 == -1) {\n            local_58 = (long *)0x0;\n            cVar8 = local_6a;\n          }\n        }\n        if (cVar8 == cVar7) goto LAB_0028d487;\n        uVar13 = 0;\n        do {\n          while( true ) {\n            cVar7 = *(char *)(*(long *)(param_7 + (long)piVar1[uVar13] * 8) + local_60);\n            uVar11 = local_40;\n            if ((local_48 != (long *)0x0) && (local_40 == 0xffffffff)) {\n              if ((byte *)local_48[2] < (byte *)local_48[3]) {\n                uVar11 = (uint)*(byte *)local_48[2];\n              }\n              else {\n                pcVar3 = *(code **)(*local_48 + 0x48);\n                local_69 = cVar7;\n                *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d76a;\n                uVar11 = (*pcVar3)();\n                cVar7 = local_69;\n                if (uVar11 == 0xffffffff) {\n                  local_48 = (long *)0x0;\n                  uVar11 = 0xffffffff;\n                }\n              }\n            }\n            if (cVar7 != (char)uVar11) break;\n            uVar13 = uVar13 + 1;\n            if (uVar19 <= uVar13) goto joined_r0x0028d514;\n          }\n          uVar19 = uVar19 - 1;\n          piVar1[uVar13] = piVar1[uVar19];\n        } while (uVar13 < uVar19);\n        goto joined_r0x0028d514;\n      }" if (parenthesized_expression "(1 < uVar19)" ( (binary_expression "1 < uVar19" number_literal < identifier) )) (compound_statement "{\n        uVar17 = 1;\n        pcVar2 = *(char **)(param_7 + (long)*piVar1 * 8);\n        *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d532;\n        uVar13 = strlen(pcVar2);\n        do {\n          pcVar2 = *(char **)(param_7 + (long)piVar1[uVar17] * 8);\n          *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d545;\n          sVar14 = strlen(pcVar2);\n          if (sVar14 < uVar13) {\n            uVar13 = sVar14;\n          }\n          uVar17 = uVar17 + 1;\n        } while (uVar17 < uVar19);\n        if ((ulong)local_48[2] < (ulong)local_48[3]) {\n          local_48[2] = local_48[2] + 1;\n        }\n        else {\n          pcVar3 = *(code **)(*local_48 + 0x50);\n          *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d796;\n          (*pcVar3)();\n        }\n        local_60 = local_60 + 1;\n        local_40 = 0xffffffff;\n        if (uVar13 <= local_60) goto LAB_0028d487;\n        cVar7 = '\x01';\n        if (local_48 != (long *)0x0) {\n          cVar7 = '\0';\n          if ((ulong)local_48[3] <= (ulong)local_48[2]) {\n            pcVar3 = *(code **)(*local_48 + 0x48);\n            *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d7a1;\n            iVar10 = (*pcVar3)();\n            cVar7 = '\0';\n            if (iVar10 == -1) {\n              local_48 = (long *)0x0;\n              cVar7 = '\x01';\n            }\n          }\n        }\n        bVar9 = local_58 != (long *)0x0 && (int)local_50 == -1;\n        cVar8 = (int)local_50 == -1;\n        if ((bVar9) && (cVar8 = '\0', (ulong)local_58[3] <= (ulong)local_58[2])) {\n          local_69 = '\0';\n          pcVar3 = *(code **)(*local_58 + 0x48);\n          local_6a = bVar9;\n          *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d736;\n          iVar10 = (*pcVar3)();\n          cVar8 = local_69;\n          if (iVar10 == -1) {\n            local_58 = (long *)0x0;\n            cVar8 = local_6a;\n          }\n        }\n        if (cVar8 == cVar7) goto LAB_0028d487;\n        uVar13 = 0;\n        do {\n          while( true ) {\n            cVar7 = *(char *)(*(long *)(param_7 + (long)piVar1[uVar13] * 8) + local_60);\n            uVar11 = local_40;\n            if ((local_48 != (long *)0x0) && (local_40 == 0xffffffff)) {\n              if ((byte *)local_48[2] < (byte *)local_48[3]) {\n                uVar11 = (uint)*(byte *)local_48[2];\n              }\n              else {\n                pcVar3 = *(code **)(*local_48 + 0x48);\n                local_69 = cVar7;\n                *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d76a;\n                uVar11 = (*pcVar3)();\n                cVar7 = local_69;\n                if (uVar11 == 0xffffffff) {\n                  local_48 = (long *)0x0;\n                  uVar11 = 0xffffffff;\n                }\n              }\n            }\n            if (cVar7 != (char)uVar11) break;\n            uVar13 = uVar13 + 1;\n            if (uVar19 <= uVar13) goto joined_r0x0028d514;\n          }\n          uVar19 = uVar19 - 1;\n          piVar1[uVar13] = piVar1[uVar19];\n        } while (uVar13 < uVar19);\n        goto joined_r0x0028d514;\n      }" { (expression_statement "uVar17 = 1;" (assignment_expression "uVar17 = 1" identifier = number_literal) ;) (expression_statement "pcVar2 = *(char **)(param_7 + (long)*piVar1 * 8);" (assignment_expression "pcVar2 = *(char **)(param_7 + (long)*piVar1 * 8)" identifier = (pointer_expression "*(char **)(param_7 + (long)*piVar1 * 8)" * (cast_expression "(char **)(param_7 + (long)*piVar1 * 8)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_7 + (long)*piVar1 * 8)" ( (binary_expression "param_7 + (long)*piVar1 * 8" identifier + (binary_expression "(long)*piVar1 * 8" (cast_expression "(long)*piVar1" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (pointer_expression "*piVar1" * identifier)) * number_literal)) ))))) ;) (expression_statement "*(undefined8 *)((long)auStack_90 + lVar4) = 0x28d532;" (assignment_expression "*(undefined8 *)((long)auStack_90 + lVar4) = 0x28d532" (pointer_expression "*(undefined8 *)((long)auStack_90 + lVar4)" * (cast_expression "(undefined8 *)((long)auStack_90 + lVar4)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)auStack_90 + lVar4)" ( (binary_expression "(long)auStack_90 + lVar4" (cast_expression "(long)auStack_90" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + identifier) )))) = number_literal) ;) (expression_statement "uVar13 = strlen(pcVar2);" (assignment_expression "uVar13 = strlen(pcVar2)" identifier = (call_expression "strlen(pcVar2)" identifier (argument_list "(pcVar2)" ( identifier )))) ;) (do_statement "do {\n          pcVar2 = *(char **)(param_7 + (long)piVar1[uVar17] * 8);\n          *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d545;\n          sVar14 = strlen(pcVar2);\n          if (sVar14 < uVar13) {\n            uVar13 = sVar14;\n          }\n          uVar17 = uVar17 + 1;\n        } while (uVar17 < uVar19);" do (compound_statement "{\n          pcVar2 = *(char **)(param_7 + (long)piVar1[uVar17] * 8);\n          *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d545;\n          sVar14 = strlen(pcVar2);\n          if (sVar14 < uVar13) {\n            uVar13 = sVar14;\n          }\n          uVar17 = uVar17 + 1;\n        }" { (expression_statement "pcVar2 = *(char **)(param_7 + (long)piVar1[uVar17] * 8);" (assignment_expression "pcVar2 = *(char **)(param_7 + (long)piVar1[uVar17] * 8)" identifier = (pointer_expression "*(char **)(param_7 + (long)piVar1[uVar17] * 8)" * (cast_expression "(char **)(param_7 + (long)piVar1[uVar17] * 8)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_7 + (long)piVar1[uVar17] * 8)" ( (binary_expression "param_7 + (long)piVar1[uVar17] * 8" identifier + (binary_expression "(long)piVar1[uVar17] * 8" (cast_expression "(long)piVar1[uVar17]" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (subscript_expression "piVar1[uVar17]" identifier [ identifier ])) * number_literal)) ))))) ;) (expression_statement "*(undefined8 *)((long)auStack_90 + lVar4) = 0x28d545;" (assignment_expression "*(undefined8 *)((long)auStack_90 + lVar4) = 0x28d545" (pointer_expression "*(undefined8 *)((long)auStack_90 + lVar4)" * (cast_expression "(undefined8 *)((long)auStack_90 + lVar4)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)auStack_90 + lVar4)" ( (binary_expression "(long)auStack_90 + lVar4" (cast_expression "(long)auStack_90" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + identifier) )))) = number_literal) ;) (expression_statement "sVar14 = strlen(pcVar2);" (assignment_expression "sVar14 = strlen(pcVar2)" identifier = (call_expression "strlen(pcVar2)" identifier (argument_list "(pcVar2)" ( identifier )))) ;) (if_statement "if (sVar14 < uVar13) {\n            uVar13 = sVar14;\n          }" if (parenthesized_expression "(sVar14 < uVar13)" ( (binary_expression "sVar14 < uVar13" identifier < identifier) )) (compound_statement "{\n            uVar13 = sVar14;\n          }" { (expression_statement "uVar13 = sVar14;" (assignment_expression "uVar13 = sVar14" identifier = identifier) ;) })) (expression_statement "uVar17 = uVar17 + 1;" (assignment_expression "uVar17 = uVar17 + 1" identifier = (binary_expression "uVar17 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar17 < uVar19)" ( (binary_expression "uVar17 < uVar19" identifier < identifier) )) ;) (if_statement "if ((ulong)local_48[2] < (ulong)local_48[3]) {\n          local_48[2] = local_48[2] + 1;\n        }\n        else {\n          pcVar3 = *(code **)(*local_48 + 0x50);\n          *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d796;\n          (*pcVar3)();\n        }" if (parenthesized_expression "((ulong)local_48[2] < (ulong)local_48[3])" ( (binary_expression "(ulong)local_48[2] < (ulong)local_48[3]" (cast_expression "(ulong)local_48[2]" ( (type_descriptor "ulong" type_identifier) ) (subscript_expression "local_48[2]" identifier [ number_literal ])) < (cast_expression "(ulong)local_48[3]" ( (type_descriptor "ulong" type_identifier) ) (subscript_expression "local_48[3]" identifier [ number_literal ]))) )) (compound_statement "{\n          local_48[2] = local_48[2] + 1;\n        }" { (expression_statement "local_48[2] = local_48[2] + 1;" (assignment_expression "local_48[2] = local_48[2] + 1" (subscript_expression "local_48[2]" identifier [ number_literal ]) = (binary_expression "local_48[2] + 1" (subscript_expression "local_48[2]" identifier [ number_literal ]) + number_literal)) ;) }) (else_clause "else {\n          pcVar3 = *(code **)(*local_48 + 0x50);\n          *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d796;\n          (*pcVar3)();\n        }" else (compound_statement "{\n          pcVar3 = *(code **)(*local_48 + 0x50);\n          *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d796;\n          (*pcVar3)();\n        }" { (expression_statement "pcVar3 = *(code **)(*local_48 + 0x50);" (assignment_expression "pcVar3 = *(code **)(*local_48 + 0x50)" identifier = (pointer_expression "*(code **)(*local_48 + 0x50)" * (cast_expression "(code **)(*local_48 + 0x50)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*local_48 + 0x50)" ( (binary_expression "*local_48 + 0x50" (pointer_expression "*local_48" * identifier) + number_literal) ))))) ;) (expression_statement "*(undefined8 *)((long)auStack_90 + lVar4) = 0x28d796;" (assignment_expression "*(undefined8 *)((long)auStack_90 + lVar4) = 0x28d796" (pointer_expression "*(undefined8 *)((long)auStack_90 + lVar4)" * (cast_expression "(undefined8 *)((long)auStack_90 + lVar4)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)auStack_90 + lVar4)" ( (binary_expression "(long)auStack_90 + lVar4" (cast_expression "(long)auStack_90" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + identifier) )))) = number_literal) ;) (expression_statement "(*pcVar3)();" (call_expression "(*pcVar3)()" (parenthesized_expression "(*pcVar3)" ( (pointer_expression "*pcVar3" * identifier) )) (argument_list "()" ( ))) ;) }))) (expression_statement "local_60 = local_60 + 1;" (assignment_expression "local_60 = local_60 + 1" identifier = (binary_expression "local_60 + 1" identifier + number_literal)) ;) (expression_statement "local_40 = 0xffffffff;" (assignment_expression "local_40 = 0xffffffff" identifier = number_literal) ;) (if_statement "if (uVar13 <= local_60) goto LAB_0028d487;" if (parenthesized_expression "(uVar13 <= local_60)" ( (binary_expression "uVar13 <= local_60" identifier <= identifier) )) (goto_statement "goto LAB_0028d487;" goto statement_identifier ;)) (expression_statement "cVar7 = '\x01';" (assignment_expression "cVar7 = '\x01'" identifier = (char_literal "'\x01'" ' escape_sequence ')) ;) (if_statement "if (local_48 != (long *)0x0) {\n          cVar7 = '\0';\n          if ((ulong)local_48[3] <= (ulong)local_48[2]) {\n            pcVar3 = *(code **)(*local_48 + 0x48);\n            *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d7a1;\n            iVar10 = (*pcVar3)();\n            cVar7 = '\0';\n            if (iVar10 == -1) {\n              local_48 = (long *)0x0;\n              cVar7 = '\x01';\n            }\n          }\n        }" if (parenthesized_expression "(local_48 != (long *)0x0)" ( (binary_expression "local_48 != (long *)0x0" identifier != (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          cVar7 = '\0';\n          if ((ulong)local_48[3] <= (ulong)local_48[2]) {\n            pcVar3 = *(code **)(*local_48 + 0x48);\n            *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d7a1;\n            iVar10 = (*pcVar3)();\n            cVar7 = '\0';\n            if (iVar10 == -1) {\n              local_48 = (long *)0x0;\n              cVar7 = '\x01';\n            }\n          }\n        }" { (expression_statement "cVar7 = '\0';" (assignment_expression "cVar7 = '\0'" identifier = (char_literal "'\0'" ' escape_sequence ')) ;) (if_statement "if ((ulong)local_48[3] <= (ulong)local_48[2]) {\n            pcVar3 = *(code **)(*local_48 + 0x48);\n            *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d7a1;\n            iVar10 = (*pcVar3)();\n            cVar7 = '\0';\n            if (iVar10 == -1) {\n              local_48 = (long *)0x0;\n              cVar7 = '\x01';\n            }\n          }" if (parenthesized_expression "((ulong)local_48[3] <= (ulong)local_48[2])" ( (binary_expression "(ulong)local_48[3] <= (ulong)local_48[2]" (cast_expression "(ulong)local_48[3]" ( (type_descriptor "ulong" type_identifier) ) (subscript_expression "local_48[3]" identifier [ number_literal ])) <= (cast_expression "(ulong)local_48[2]" ( (type_descriptor "ulong" type_identifier) ) (subscript_expression "local_48[2]" identifier [ number_literal ]))) )) (compound_statement "{\n            pcVar3 = *(code **)(*local_48 + 0x48);\n            *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d7a1;\n            iVar10 = (*pcVar3)();\n            cVar7 = '\0';\n            if (iVar10 == -1) {\n              local_48 = (long *)0x0;\n              cVar7 = '\x01';\n            }\n          }" { (expression_statement "pcVar3 = *(code **)(*local_48 + 0x48);" (assignment_expression "pcVar3 = *(code **)(*local_48 + 0x48)" identifier = (pointer_expression "*(code **)(*local_48 + 0x48)" * (cast_expression "(code **)(*local_48 + 0x48)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*local_48 + 0x48)" ( (binary_expression "*local_48 + 0x48" (pointer_expression "*local_48" * identifier) + number_literal) ))))) ;) (expression_statement "*(undefined8 *)((long)auStack_90 + lVar4) = 0x28d7a1;" (assignment_expression "*(undefined8 *)((long)auStack_90 + lVar4) = 0x28d7a1" (pointer_expression "*(undefined8 *)((long)auStack_90 + lVar4)" * (cast_expression "(undefined8 *)((long)auStack_90 + lVar4)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)auStack_90 + lVar4)" ( (binary_expression "(long)auStack_90 + lVar4" (cast_expression "(long)auStack_90" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + identifier) )))) = number_literal) ;) (expression_statement "iVar10 = (*pcVar3)();" (assignment_expression "iVar10 = (*pcVar3)()" identifier = (call_expression "(*pcVar3)()" (parenthesized_expression "(*pcVar3)" ( (pointer_expression "*pcVar3" * identifier) )) (argument_list "()" ( )))) ;) (expression_statement "cVar7 = '\0';" (assignment_expression "cVar7 = '\0'" identifier = (char_literal "'\0'" ' escape_sequence ')) ;) (if_statement "if (iVar10 == -1) {\n              local_48 = (long *)0x0;\n              cVar7 = '\x01';\n            }" if (parenthesized_expression "(iVar10 == -1)" ( (binary_expression "iVar10 == -1" identifier == number_literal) )) (compound_statement "{\n              local_48 = (long *)0x0;\n              cVar7 = '\x01';\n            }" { (expression_statement "local_48 = (long *)0x0;" (assignment_expression "local_48 = (long *)0x0" identifier = (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "cVar7 = '\x01';" (assignment_expression "cVar7 = '\x01'" identifier = (char_literal "'\x01'" ' escape_sequence ')) ;) })) })) })) (expression_statement "bVar9 = local_58 != (long *)0x0 && (int)local_50 == -1;" (assignment_expression "bVar9 = local_58 != (long *)0x0 && (int)local_50 == -1" identifier = (binary_expression "local_58 != (long *)0x0 && (int)local_50 == -1" (binary_expression "local_58 != (long *)0x0" identifier != (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) && (binary_expression "(int)local_50 == -1" (cast_expression "(int)local_50" ( (type_descriptor "int" primitive_type) ) identifier) == number_literal))) ;) (expression_statement "cVar8 = (int)local_50 == -1;" (assignment_expression "cVar8 = (int)local_50 == -1" identifier = (binary_expression "(int)local_50 == -1" (cast_expression "(int)local_50" ( (type_descriptor "int" primitive_type) ) identifier) == number_literal)) ;) (if_statement "if ((bVar9) && (cVar8 = '\0', (ulong)local_58[3] <= (ulong)local_58[2])) {\n          local_69 = '\0';\n          pcVar3 = *(code **)(*local_58 + 0x48);\n          local_6a = bVar9;\n          *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d736;\n          iVar10 = (*pcVar3)();\n          cVar8 = local_69;\n          if (iVar10 == -1) {\n            local_58 = (long *)0x0;\n            cVar8 = local_6a;\n          }\n        }" if (parenthesized_expression "((bVar9) && (cVar8 = '\0', (ulong)local_58[3] <= (ulong)local_58[2]))" ( (binary_expression "(bVar9) && (cVar8 = '\0', (ulong)local_58[3] <= (ulong)local_58[2])" (parenthesized_expression "(bVar9)" ( identifier )) && (parenthesized_expression "(cVar8 = '\0', (ulong)local_58[3] <= (ulong)local_58[2])" ( (comma_expression "cVar8 = '\0', (ulong)local_58[3] <= (ulong)local_58[2]" (assignment_expression "cVar8 = '\0'" identifier = (char_literal "'\0'" ' escape_sequence ')) , (binary_expression "(ulong)local_58[3] <= (ulong)local_58[2]" (cast_expression "(ulong)local_58[3]" ( (type_descriptor "ulong" type_identifier) ) (subscript_expression "local_58[3]" identifier [ number_literal ])) <= (cast_expression "(ulong)local_58[2]" ( (type_descriptor "ulong" type_identifier) ) (subscript_expression "local_58[2]" identifier [ number_literal ])))) ))) )) (compound_statement "{\n          local_69 = '\0';\n          pcVar3 = *(code **)(*local_58 + 0x48);\n          local_6a = bVar9;\n          *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d736;\n          iVar10 = (*pcVar3)();\n          cVar8 = local_69;\n          if (iVar10 == -1) {\n            local_58 = (long *)0x0;\n            cVar8 = local_6a;\n          }\n        }" { (expression_statement "local_69 = '\0';" (assignment_expression "local_69 = '\0'" identifier = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "pcVar3 = *(code **)(*local_58 + 0x48);" (assignment_expression "pcVar3 = *(code **)(*local_58 + 0x48)" identifier = (pointer_expression "*(code **)(*local_58 + 0x48)" * (cast_expression "(code **)(*local_58 + 0x48)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*local_58 + 0x48)" ( (binary_expression "*local_58 + 0x48" (pointer_expression "*local_58" * identifier) + number_literal) ))))) ;) (expression_statement "local_6a = bVar9;" (assignment_expression "local_6a = bVar9" identifier = identifier) ;) (expression_statement "*(undefined8 *)((long)auStack_90 + lVar4) = 0x28d736;" (assignment_expression "*(undefined8 *)((long)auStack_90 + lVar4) = 0x28d736" (pointer_expression "*(undefined8 *)((long)auStack_90 + lVar4)" * (cast_expression "(undefined8 *)((long)auStack_90 + lVar4)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)auStack_90 + lVar4)" ( (binary_expression "(long)auStack_90 + lVar4" (cast_expression "(long)auStack_90" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + identifier) )))) = number_literal) ;) (expression_statement "iVar10 = (*pcVar3)();" (assignment_expression "iVar10 = (*pcVar3)()" identifier = (call_expression "(*pcVar3)()" (parenthesized_expression "(*pcVar3)" ( (pointer_expression "*pcVar3" * identifier) )) (argument_list "()" ( )))) ;) (expression_statement "cVar8 = local_69;" (assignment_expression "cVar8 = local_69" identifier = identifier) ;) (if_statement "if (iVar10 == -1) {\n            local_58 = (long *)0x0;\n            cVar8 = local_6a;\n          }" if (parenthesized_expression "(iVar10 == -1)" ( (binary_expression "iVar10 == -1" identifier == number_literal) )) (compound_statement "{\n            local_58 = (long *)0x0;\n            cVar8 = local_6a;\n          }" { (expression_statement "local_58 = (long *)0x0;" (assignment_expression "local_58 = (long *)0x0" identifier = (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "cVar8 = local_6a;" (assignment_expression "cVar8 = local_6a" identifier = identifier) ;) })) })) (if_statement "if (cVar8 == cVar7) goto LAB_0028d487;" if (parenthesized_expression "(cVar8 == cVar7)" ( (binary_expression "cVar8 == cVar7" identifier == identifier) )) (goto_statement "goto LAB_0028d487;" goto statement_identifier ;)) (expression_statement "uVar13 = 0;" (assignment_expression "uVar13 = 0" identifier = number_literal) ;) (do_statement "do {\n          while( true ) {\n            cVar7 = *(char *)(*(long *)(param_7 + (long)piVar1[uVar13] * 8) + local_60);\n            uVar11 = local_40;\n            if ((local_48 != (long *)0x0) && (local_40 == 0xffffffff)) {\n              if ((byte *)local_48[2] < (byte *)local_48[3]) {\n                uVar11 = (uint)*(byte *)local_48[2];\n              }\n              else {\n                pcVar3 = *(code **)(*local_48 + 0x48);\n                local_69 = cVar7;\n                *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d76a;\n                uVar11 = (*pcVar3)();\n                cVar7 = local_69;\n                if (uVar11 == 0xffffffff) {\n                  local_48 = (long *)0x0;\n                  uVar11 = 0xffffffff;\n                }\n              }\n            }\n            if (cVar7 != (char)uVar11) break;\n            uVar13 = uVar13 + 1;\n            if (uVar19 <= uVar13) goto joined_r0x0028d514;\n          }\n          uVar19 = uVar19 - 1;\n          piVar1[uVar13] = piVar1[uVar19];\n        } while (uVar13 < uVar19);" do (compound_statement "{\n          while( true ) {\n            cVar7 = *(char *)(*(long *)(param_7 + (long)piVar1[uVar13] * 8) + local_60);\n            uVar11 = local_40;\n            if ((local_48 != (long *)0x0) && (local_40 == 0xffffffff)) {\n              if ((byte *)local_48[2] < (byte *)local_48[3]) {\n                uVar11 = (uint)*(byte *)local_48[2];\n              }\n              else {\n                pcVar3 = *(code **)(*local_48 + 0x48);\n                local_69 = cVar7;\n                *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d76a;\n                uVar11 = (*pcVar3)();\n                cVar7 = local_69;\n                if (uVar11 == 0xffffffff) {\n                  local_48 = (long *)0x0;\n                  uVar11 = 0xffffffff;\n                }\n              }\n            }\n            if (cVar7 != (char)uVar11) break;\n            uVar13 = uVar13 + 1;\n            if (uVar19 <= uVar13) goto joined_r0x0028d514;\n          }\n          uVar19 = uVar19 - 1;\n          piVar1[uVar13] = piVar1[uVar19];\n        }" { (while_statement "while( true ) {\n            cVar7 = *(char *)(*(long *)(param_7 + (long)piVar1[uVar13] * 8) + local_60);\n            uVar11 = local_40;\n            if ((local_48 != (long *)0x0) && (local_40 == 0xffffffff)) {\n              if ((byte *)local_48[2] < (byte *)local_48[3]) {\n                uVar11 = (uint)*(byte *)local_48[2];\n              }\n              else {\n                pcVar3 = *(code **)(*local_48 + 0x48);\n                local_69 = cVar7;\n                *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d76a;\n                uVar11 = (*pcVar3)();\n                cVar7 = local_69;\n                if (uVar11 == 0xffffffff) {\n                  local_48 = (long *)0x0;\n                  uVar11 = 0xffffffff;\n                }\n              }\n            }\n            if (cVar7 != (char)uVar11) break;\n            uVar13 = uVar13 + 1;\n            if (uVar19 <= uVar13) goto joined_r0x0028d514;\n          }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n            cVar7 = *(char *)(*(long *)(param_7 + (long)piVar1[uVar13] * 8) + local_60);\n            uVar11 = local_40;\n            if ((local_48 != (long *)0x0) && (local_40 == 0xffffffff)) {\n              if ((byte *)local_48[2] < (byte *)local_48[3]) {\n                uVar11 = (uint)*(byte *)local_48[2];\n              }\n              else {\n                pcVar3 = *(code **)(*local_48 + 0x48);\n                local_69 = cVar7;\n                *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d76a;\n                uVar11 = (*pcVar3)();\n                cVar7 = local_69;\n                if (uVar11 == 0xffffffff) {\n                  local_48 = (long *)0x0;\n                  uVar11 = 0xffffffff;\n                }\n              }\n            }\n            if (cVar7 != (char)uVar11) break;\n            uVar13 = uVar13 + 1;\n            if (uVar19 <= uVar13) goto joined_r0x0028d514;\n          }" { (expression_statement "cVar7 = *(char *)(*(long *)(param_7 + (long)piVar1[uVar13] * 8) + local_60);" (assignment_expression "cVar7 = *(char *)(*(long *)(param_7 + (long)piVar1[uVar13] * 8) + local_60)" identifier = (pointer_expression "*(char *)(*(long *)(param_7 + (long)piVar1[uVar13] * 8) + local_60)" * (cast_expression "(char *)(*(long *)(param_7 + (long)piVar1[uVar13] * 8) + local_60)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(param_7 + (long)piVar1[uVar13] * 8) + local_60)" ( (binary_expression "*(long *)(param_7 + (long)piVar1[uVar13] * 8) + local_60" (pointer_expression "*(long *)(param_7 + (long)piVar1[uVar13] * 8)" * (cast_expression "(long *)(param_7 + (long)piVar1[uVar13] * 8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_7 + (long)piVar1[uVar13] * 8)" ( (binary_expression "param_7 + (long)piVar1[uVar13] * 8" identifier + (binary_expression "(long)piVar1[uVar13] * 8" (cast_expression "(long)piVar1[uVar13]" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (subscript_expression "piVar1[uVar13]" identifier [ identifier ])) * number_literal)) )))) + identifier) ))))) ;) (expression_statement "uVar11 = local_40;" (assignment_expression "uVar11 = local_40" identifier = identifier) ;) (if_statement "if ((local_48 != (long *)0x0) && (local_40 == 0xffffffff)) {\n              if ((byte *)local_48[2] < (byte *)local_48[3]) {\n                uVar11 = (uint)*(byte *)local_48[2];\n              }\n              else {\n                pcVar3 = *(code **)(*local_48 + 0x48);\n                local_69 = cVar7;\n                *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d76a;\n                uVar11 = (*pcVar3)();\n                cVar7 = local_69;\n                if (uVar11 == 0xffffffff) {\n                  local_48 = (long *)0x0;\n                  uVar11 = 0xffffffff;\n                }\n              }\n            }" if (parenthesized_expression "((local_48 != (long *)0x0) && (local_40 == 0xffffffff))" ( (binary_expression "(local_48 != (long *)0x0) && (local_40 == 0xffffffff)" (parenthesized_expression "(local_48 != (long *)0x0)" ( (binary_expression "local_48 != (long *)0x0" identifier != (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) )) && (parenthesized_expression "(local_40 == 0xffffffff)" ( (binary_expression "local_40 == 0xffffffff" identifier == number_literal) ))) )) (compound_statement "{\n              if ((byte *)local_48[2] < (byte *)local_48[3]) {\n                uVar11 = (uint)*(byte *)local_48[2];\n              }\n              else {\n                pcVar3 = *(code **)(*local_48 + 0x48);\n                local_69 = cVar7;\n                *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d76a;\n                uVar11 = (*pcVar3)();\n                cVar7 = local_69;\n                if (uVar11 == 0xffffffff) {\n                  local_48 = (long *)0x0;\n                  uVar11 = 0xffffffff;\n                }\n              }\n            }" { (if_statement "if ((byte *)local_48[2] < (byte *)local_48[3]) {\n                uVar11 = (uint)*(byte *)local_48[2];\n              }\n              else {\n                pcVar3 = *(code **)(*local_48 + 0x48);\n                local_69 = cVar7;\n                *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d76a;\n                uVar11 = (*pcVar3)();\n                cVar7 = local_69;\n                if (uVar11 == 0xffffffff) {\n                  local_48 = (long *)0x0;\n                  uVar11 = 0xffffffff;\n                }\n              }" if (parenthesized_expression "((byte *)local_48[2] < (byte *)local_48[3])" ( (binary_expression "(byte *)local_48[2] < (byte *)local_48[3]" (cast_expression "(byte *)local_48[2]" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "local_48[2]" identifier [ number_literal ])) < (cast_expression "(byte *)local_48[3]" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "local_48[3]" identifier [ number_literal ]))) )) (compound_statement "{\n                uVar11 = (uint)*(byte *)local_48[2];\n              }" { (expression_statement "uVar11 = (uint)*(byte *)local_48[2];" (assignment_expression "uVar11 = (uint)*(byte *)local_48[2]" identifier = (binary_expression "(uint)*(byte *)local_48[2]" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(byte *)local_48[2]" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "local_48[2]" identifier [ number_literal ])))) ;) }) (else_clause "else {\n                pcVar3 = *(code **)(*local_48 + 0x48);\n                local_69 = cVar7;\n                *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d76a;\n                uVar11 = (*pcVar3)();\n                cVar7 = local_69;\n                if (uVar11 == 0xffffffff) {\n                  local_48 = (long *)0x0;\n                  uVar11 = 0xffffffff;\n                }\n              }" else (compound_statement "{\n                pcVar3 = *(code **)(*local_48 + 0x48);\n                local_69 = cVar7;\n                *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d76a;\n                uVar11 = (*pcVar3)();\n                cVar7 = local_69;\n                if (uVar11 == 0xffffffff) {\n                  local_48 = (long *)0x0;\n                  uVar11 = 0xffffffff;\n                }\n              }" { (expression_statement "pcVar3 = *(code **)(*local_48 + 0x48);" (assignment_expression "pcVar3 = *(code **)(*local_48 + 0x48)" identifier = (pointer_expression "*(code **)(*local_48 + 0x48)" * (cast_expression "(code **)(*local_48 + 0x48)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*local_48 + 0x48)" ( (binary_expression "*local_48 + 0x48" (pointer_expression "*local_48" * identifier) + number_literal) ))))) ;) (expression_statement "local_69 = cVar7;" (assignment_expression "local_69 = cVar7" identifier = identifier) ;) (expression_statement "*(undefined8 *)((long)auStack_90 + lVar4) = 0x28d76a;" (assignment_expression "*(undefined8 *)((long)auStack_90 + lVar4) = 0x28d76a" (pointer_expression "*(undefined8 *)((long)auStack_90 + lVar4)" * (cast_expression "(undefined8 *)((long)auStack_90 + lVar4)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)auStack_90 + lVar4)" ( (binary_expression "(long)auStack_90 + lVar4" (cast_expression "(long)auStack_90" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + identifier) )))) = number_literal) ;) (expression_statement "uVar11 = (*pcVar3)();" (assignment_expression "uVar11 = (*pcVar3)()" identifier = (call_expression "(*pcVar3)()" (parenthesized_expression "(*pcVar3)" ( (pointer_expression "*pcVar3" * identifier) )) (argument_list "()" ( )))) ;) (expression_statement "cVar7 = local_69;" (assignment_expression "cVar7 = local_69" identifier = identifier) ;) (if_statement "if (uVar11 == 0xffffffff) {\n                  local_48 = (long *)0x0;\n                  uVar11 = 0xffffffff;\n                }" if (parenthesized_expression "(uVar11 == 0xffffffff)" ( (binary_expression "uVar11 == 0xffffffff" identifier == number_literal) )) (compound_statement "{\n                  local_48 = (long *)0x0;\n                  uVar11 = 0xffffffff;\n                }" { (expression_statement "local_48 = (long *)0x0;" (assignment_expression "local_48 = (long *)0x0" identifier = (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "uVar11 = 0xffffffff;" (assignment_expression "uVar11 = 0xffffffff" identifier = number_literal) ;) })) }))) })) (if_statement "if (cVar7 != (char)uVar11) break;" if (parenthesized_expression "(cVar7 != (char)uVar11)" ( (binary_expression "cVar7 != (char)uVar11" identifier != (cast_expression "(char)uVar11" ( (type_descriptor "char" primitive_type) ) identifier)) )) (break_statement "break;" break ;)) (expression_statement "uVar13 = uVar13 + 1;" (assignment_expression "uVar13 = uVar13 + 1" identifier = (binary_expression "uVar13 + 1" identifier + number_literal)) ;) (if_statement "if (uVar19 <= uVar13) goto joined_r0x0028d514;" if (parenthesized_expression "(uVar19 <= uVar13)" ( (binary_expression "uVar19 <= uVar13" identifier <= identifier) )) (goto_statement "goto joined_r0x0028d514;" goto statement_identifier ;)) })) (expression_statement "uVar19 = uVar19 - 1;" (assignment_expression "uVar19 = uVar19 - 1" identifier = (binary_expression "uVar19 - 1" identifier - number_literal)) ;) (expression_statement "piVar1[uVar13] = piVar1[uVar19];" (assignment_expression "piVar1[uVar13] = piVar1[uVar19]" (subscript_expression "piVar1[uVar13]" identifier [ identifier ]) = (subscript_expression "piVar1[uVar19]" identifier [ identifier ])) ;) }) while (parenthesized_expression "(uVar13 < uVar19)" ( (binary_expression "uVar13 < uVar19" identifier < identifier) )) ;) (goto_statement "goto joined_r0x0028d514;" goto statement_identifier ;) }))) (if_statement "if (uVar19 == 1) {\n        if ((ulong)local_48[2] < (ulong)local_48[3]) {\n          local_48[2] = local_48[2] + 1;\n        }\n        else {\n          pcVar3 = *(code **)(*local_48 + 0x50);\n          *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d7fe;\n          (*pcVar3)();\n        }\n        uVar19 = local_60;\n        local_40 = 0xffffffff;\n        pcVar2 = *(char **)(param_7 + (long)*piVar1 * 8);\n        local_60 = CONCAT44(local_60._4_4_,*piVar1);\n        sVar18 = uVar19 + 1;\n        *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d670;\n        sVar14 = strlen(pcVar2);\n        if (sVar18 < sVar14) {\n          do {\n            this = local_68;\n            pplVar6 = local_78;\n            *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d6c9;\n            cVar7 = istreambuf_iterator<char,std::char_traits<char>>::equal\n                              (this,(istreambuf_iterator *)pplVar6);\n            if (cVar7 != '\0') goto LAB_0028d487;\n            cVar7 = pcVar2[sVar18];\n            uVar11 = local_40;\n            if ((local_48 == (long *)0x0) || (local_40 != 0xffffffff)) {\nLAB_0028d688:\n              if (cVar7 != (char)uVar11) goto LAB_0028d487;\n              pcVar15 = (char *)local_48[2];\n              if (pcVar15 < (char *)local_48[3]) goto LAB_0028d6a3;\n              pcVar3 = *(code **)(*local_48 + 0x50);\n              *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d7c3;\n              (*pcVar3)();\n            }\n            else {\n              pcVar15 = (char *)local_48[2];\n              if ((char *)local_48[3] <= pcVar15) {\n                pcVar3 = *(code **)(*local_48 + 0x48);\n                *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d7e2;\n                uVar11 = (*pcVar3)();\n                if (uVar11 == 0xffffffff) {\n                  local_48 = (long *)0x0;\n                }\n                goto LAB_0028d688;\n              }\n              if (cVar7 != *pcVar15) goto LAB_0028d487;\nLAB_0028d6a3:\n              local_48[2] = (long)(pcVar15 + 1);\n            }\n            sVar18 = sVar18 + 1;\n            local_40 = 0xffffffff;\n          } while (sVar18 != sVar14);\n        }\n        else if (sVar18 != sVar14) goto LAB_0028d487;\n        *local_80 = (undefined4)local_60;\n        goto LAB_0028d48e;\n      }" if (parenthesized_expression "(uVar19 == 1)" ( (binary_expression "uVar19 == 1" identifier == number_literal) )) (compound_statement "{\n        if ((ulong)local_48[2] < (ulong)local_48[3]) {\n          local_48[2] = local_48[2] + 1;\n        }\n        else {\n          pcVar3 = *(code **)(*local_48 + 0x50);\n          *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d7fe;\n          (*pcVar3)();\n        }\n        uVar19 = local_60;\n        local_40 = 0xffffffff;\n        pcVar2 = *(char **)(param_7 + (long)*piVar1 * 8);\n        local_60 = CONCAT44(local_60._4_4_,*piVar1);\n        sVar18 = uVar19 + 1;\n        *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d670;\n        sVar14 = strlen(pcVar2);\n        if (sVar18 < sVar14) {\n          do {\n            this = local_68;\n            pplVar6 = local_78;\n            *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d6c9;\n            cVar7 = istreambuf_iterator<char,std::char_traits<char>>::equal\n                              (this,(istreambuf_iterator *)pplVar6);\n            if (cVar7 != '\0') goto LAB_0028d487;\n            cVar7 = pcVar2[sVar18];\n            uVar11 = local_40;\n            if ((local_48 == (long *)0x0) || (local_40 != 0xffffffff)) {\nLAB_0028d688:\n              if (cVar7 != (char)uVar11) goto LAB_0028d487;\n              pcVar15 = (char *)local_48[2];\n              if (pcVar15 < (char *)local_48[3]) goto LAB_0028d6a3;\n              pcVar3 = *(code **)(*local_48 + 0x50);\n              *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d7c3;\n              (*pcVar3)();\n            }\n            else {\n              pcVar15 = (char *)local_48[2];\n              if ((char *)local_48[3] <= pcVar15) {\n                pcVar3 = *(code **)(*local_48 + 0x48);\n                *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d7e2;\n                uVar11 = (*pcVar3)();\n                if (uVar11 == 0xffffffff) {\n                  local_48 = (long *)0x0;\n                }\n                goto LAB_0028d688;\n              }\n              if (cVar7 != *pcVar15) goto LAB_0028d487;\nLAB_0028d6a3:\n              local_48[2] = (long)(pcVar15 + 1);\n            }\n            sVar18 = sVar18 + 1;\n            local_40 = 0xffffffff;\n          } while (sVar18 != sVar14);\n        }\n        else if (sVar18 != sVar14) goto LAB_0028d487;\n        *local_80 = (undefined4)local_60;\n        goto LAB_0028d48e;\n      }" { (if_statement "if ((ulong)local_48[2] < (ulong)local_48[3]) {\n          local_48[2] = local_48[2] + 1;\n        }\n        else {\n          pcVar3 = *(code **)(*local_48 + 0x50);\n          *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d7fe;\n          (*pcVar3)();\n        }" if (parenthesized_expression "((ulong)local_48[2] < (ulong)local_48[3])" ( (binary_expression "(ulong)local_48[2] < (ulong)local_48[3]" (cast_expression "(ulong)local_48[2]" ( (type_descriptor "ulong" type_identifier) ) (subscript_expression "local_48[2]" identifier [ number_literal ])) < (cast_expression "(ulong)local_48[3]" ( (type_descriptor "ulong" type_identifier) ) (subscript_expression "local_48[3]" identifier [ number_literal ]))) )) (compound_statement "{\n          local_48[2] = local_48[2] + 1;\n        }" { (expression_statement "local_48[2] = local_48[2] + 1;" (assignment_expression "local_48[2] = local_48[2] + 1" (subscript_expression "local_48[2]" identifier [ number_literal ]) = (binary_expression "local_48[2] + 1" (subscript_expression "local_48[2]" identifier [ number_literal ]) + number_literal)) ;) }) (else_clause "else {\n          pcVar3 = *(code **)(*local_48 + 0x50);\n          *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d7fe;\n          (*pcVar3)();\n        }" else (compound_statement "{\n          pcVar3 = *(code **)(*local_48 + 0x50);\n          *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d7fe;\n          (*pcVar3)();\n        }" { (expression_statement "pcVar3 = *(code **)(*local_48 + 0x50);" (assignment_expression "pcVar3 = *(code **)(*local_48 + 0x50)" identifier = (pointer_expression "*(code **)(*local_48 + 0x50)" * (cast_expression "(code **)(*local_48 + 0x50)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*local_48 + 0x50)" ( (binary_expression "*local_48 + 0x50" (pointer_expression "*local_48" * identifier) + number_literal) ))))) ;) (expression_statement "*(undefined8 *)((long)auStack_90 + lVar4) = 0x28d7fe;" (assignment_expression "*(undefined8 *)((long)auStack_90 + lVar4) = 0x28d7fe" (pointer_expression "*(undefined8 *)((long)auStack_90 + lVar4)" * (cast_expression "(undefined8 *)((long)auStack_90 + lVar4)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)auStack_90 + lVar4)" ( (binary_expression "(long)auStack_90 + lVar4" (cast_expression "(long)auStack_90" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + identifier) )))) = number_literal) ;) (expression_statement "(*pcVar3)();" (call_expression "(*pcVar3)()" (parenthesized_expression "(*pcVar3)" ( (pointer_expression "*pcVar3" * identifier) )) (argument_list "()" ( ))) ;) }))) (expression_statement "uVar19 = local_60;" (assignment_expression "uVar19 = local_60" identifier = identifier) ;) (expression_statement "local_40 = 0xffffffff;" (assignment_expression "local_40 = 0xffffffff" identifier = number_literal) ;) (expression_statement "pcVar2 = *(char **)(param_7 + (long)*piVar1 * 8);" (assignment_expression "pcVar2 = *(char **)(param_7 + (long)*piVar1 * 8)" identifier = (pointer_expression "*(char **)(param_7 + (long)*piVar1 * 8)" * (cast_expression "(char **)(param_7 + (long)*piVar1 * 8)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_7 + (long)*piVar1 * 8)" ( (binary_expression "param_7 + (long)*piVar1 * 8" identifier + (binary_expression "(long)*piVar1 * 8" (cast_expression "(long)*piVar1" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (pointer_expression "*piVar1" * identifier)) * number_literal)) ))))) ;) (expression_statement "local_60 = CONCAT44(local_60._4_4_,*piVar1);" (assignment_expression "local_60 = CONCAT44(local_60._4_4_,*piVar1)" identifier = (call_expression "CONCAT44(local_60._4_4_,*piVar1)" identifier (argument_list "(local_60._4_4_,*piVar1)" ( (field_expression "local_60._4_4_" identifier . field_identifier) , (pointer_expression "*piVar1" * identifier) )))) ;) (expression_statement "sVar18 = uVar19 + 1;" (assignment_expression "sVar18 = uVar19 + 1" identifier = (binary_expression "uVar19 + 1" identifier + number_literal)) ;) (expression_statement "*(undefined8 *)((long)auStack_90 + lVar4) = 0x28d670;" (assignment_expression "*(undefined8 *)((long)auStack_90 + lVar4) = 0x28d670" (pointer_expression "*(undefined8 *)((long)auStack_90 + lVar4)" * (cast_expression "(undefined8 *)((long)auStack_90 + lVar4)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)auStack_90 + lVar4)" ( (binary_expression "(long)auStack_90 + lVar4" (cast_expression "(long)auStack_90" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + identifier) )))) = number_literal) ;) (expression_statement "sVar14 = strlen(pcVar2);" (assignment_expression "sVar14 = strlen(pcVar2)" identifier = (call_expression "strlen(pcVar2)" identifier (argument_list "(pcVar2)" ( identifier )))) ;) (if_statement "if (sVar18 < sVar14) {\n          do {\n            this = local_68;\n            pplVar6 = local_78;\n            *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d6c9;\n            cVar7 = istreambuf_iterator<char,std::char_traits<char>>::equal\n                              (this,(istreambuf_iterator *)pplVar6);\n            if (cVar7 != '\0') goto LAB_0028d487;\n            cVar7 = pcVar2[sVar18];\n            uVar11 = local_40;\n            if ((local_48 == (long *)0x0) || (local_40 != 0xffffffff)) {\nLAB_0028d688:\n              if (cVar7 != (char)uVar11) goto LAB_0028d487;\n              pcVar15 = (char *)local_48[2];\n              if (pcVar15 < (char *)local_48[3]) goto LAB_0028d6a3;\n              pcVar3 = *(code **)(*local_48 + 0x50);\n              *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d7c3;\n              (*pcVar3)();\n            }\n            else {\n              pcVar15 = (char *)local_48[2];\n              if ((char *)local_48[3] <= pcVar15) {\n                pcVar3 = *(code **)(*local_48 + 0x48);\n                *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d7e2;\n                uVar11 = (*pcVar3)();\n                if (uVar11 == 0xffffffff) {\n                  local_48 = (long *)0x0;\n                }\n                goto LAB_0028d688;\n              }\n              if (cVar7 != *pcVar15) goto LAB_0028d487;\nLAB_0028d6a3:\n              local_48[2] = (long)(pcVar15 + 1);\n            }\n            sVar18 = sVar18 + 1;\n            local_40 = 0xffffffff;\n          } while (sVar18 != sVar14);\n        }\n        else if (sVar18 != sVar14) goto LAB_0028d487;" if (parenthesized_expression "(sVar18 < sVar14)" ( (binary_expression "sVar18 < sVar14" identifier < identifier) )) (compound_statement "{\n          do {\n            this = local_68;\n            pplVar6 = local_78;\n            *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d6c9;\n            cVar7 = istreambuf_iterator<char,std::char_traits<char>>::equal\n                              (this,(istreambuf_iterator *)pplVar6);\n            if (cVar7 != '\0') goto LAB_0028d487;\n            cVar7 = pcVar2[sVar18];\n            uVar11 = local_40;\n            if ((local_48 == (long *)0x0) || (local_40 != 0xffffffff)) {\nLAB_0028d688:\n              if (cVar7 != (char)uVar11) goto LAB_0028d487;\n              pcVar15 = (char *)local_48[2];\n              if (pcVar15 < (char *)local_48[3]) goto LAB_0028d6a3;\n              pcVar3 = *(code **)(*local_48 + 0x50);\n              *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d7c3;\n              (*pcVar3)();\n            }\n            else {\n              pcVar15 = (char *)local_48[2];\n              if ((char *)local_48[3] <= pcVar15) {\n                pcVar3 = *(code **)(*local_48 + 0x48);\n                *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d7e2;\n                uVar11 = (*pcVar3)();\n                if (uVar11 == 0xffffffff) {\n                  local_48 = (long *)0x0;\n                }\n                goto LAB_0028d688;\n              }\n              if (cVar7 != *pcVar15) goto LAB_0028d487;\nLAB_0028d6a3:\n              local_48[2] = (long)(pcVar15 + 1);\n            }\n            sVar18 = sVar18 + 1;\n            local_40 = 0xffffffff;\n          } while (sVar18 != sVar14);\n        }" { (do_statement "do {\n            this = local_68;\n            pplVar6 = local_78;\n            *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d6c9;\n            cVar7 = istreambuf_iterator<char,std::char_traits<char>>::equal\n                              (this,(istreambuf_iterator *)pplVar6);\n            if (cVar7 != '\0') goto LAB_0028d487;\n            cVar7 = pcVar2[sVar18];\n            uVar11 = local_40;\n            if ((local_48 == (long *)0x0) || (local_40 != 0xffffffff)) {\nLAB_0028d688:\n              if (cVar7 != (char)uVar11) goto LAB_0028d487;\n              pcVar15 = (char *)local_48[2];\n              if (pcVar15 < (char *)local_48[3]) goto LAB_0028d6a3;\n              pcVar3 = *(code **)(*local_48 + 0x50);\n              *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d7c3;\n              (*pcVar3)();\n            }\n            else {\n              pcVar15 = (char *)local_48[2];\n              if ((char *)local_48[3] <= pcVar15) {\n                pcVar3 = *(code **)(*local_48 + 0x48);\n                *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d7e2;\n                uVar11 = (*pcVar3)();\n                if (uVar11 == 0xffffffff) {\n                  local_48 = (long *)0x0;\n                }\n                goto LAB_0028d688;\n              }\n              if (cVar7 != *pcVar15) goto LAB_0028d487;\nLAB_0028d6a3:\n              local_48[2] = (long)(pcVar15 + 1);\n            }\n            sVar18 = sVar18 + 1;\n            local_40 = 0xffffffff;\n          } while (sVar18 != sVar14);" do (compound_statement "{\n            this = local_68;\n            pplVar6 = local_78;\n            *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d6c9;\n            cVar7 = istreambuf_iterator<char,std::char_traits<char>>::equal\n                              (this,(istreambuf_iterator *)pplVar6);\n            if (cVar7 != '\0') goto LAB_0028d487;\n            cVar7 = pcVar2[sVar18];\n            uVar11 = local_40;\n            if ((local_48 == (long *)0x0) || (local_40 != 0xffffffff)) {\nLAB_0028d688:\n              if (cVar7 != (char)uVar11) goto LAB_0028d487;\n              pcVar15 = (char *)local_48[2];\n              if (pcVar15 < (char *)local_48[3]) goto LAB_0028d6a3;\n              pcVar3 = *(code **)(*local_48 + 0x50);\n              *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d7c3;\n              (*pcVar3)();\n            }\n            else {\n              pcVar15 = (char *)local_48[2];\n              if ((char *)local_48[3] <= pcVar15) {\n                pcVar3 = *(code **)(*local_48 + 0x48);\n                *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d7e2;\n                uVar11 = (*pcVar3)();\n                if (uVar11 == 0xffffffff) {\n                  local_48 = (long *)0x0;\n                }\n                goto LAB_0028d688;\n              }\n              if (cVar7 != *pcVar15) goto LAB_0028d487;\nLAB_0028d6a3:\n              local_48[2] = (long)(pcVar15 + 1);\n            }\n            sVar18 = sVar18 + 1;\n            local_40 = 0xffffffff;\n          }" { (expression_statement "this = local_68;" (assignment_expression "this = local_68" identifier = identifier) ;) (expression_statement "pplVar6 = local_78;" (assignment_expression "pplVar6 = local_78" identifier = identifier) ;) (expression_statement "*(undefined8 *)((long)auStack_90 + lVar4) = 0x28d6c9;" (assignment_expression "*(undefined8 *)((long)auStack_90 + lVar4) = 0x28d6c9" (pointer_expression "*(undefined8 *)((long)auStack_90 + lVar4)" * (cast_expression "(undefined8 *)((long)auStack_90 + lVar4)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)auStack_90 + lVar4)" ( (binary_expression "(long)auStack_90 + lVar4" (cast_expression "(long)auStack_90" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + identifier) )))) = number_literal) ;) (ERROR "cVar7 = istreambuf_iterator<char,std::" (comma_expression "cVar7 = istreambuf_iterator<char,std" (assignment_expression "cVar7 = istreambuf_iterator<char" identifier = (binary_expression "istreambuf_iterator<char" identifier < identifier)) , identifier) : :) (expression_statement "char_traits<char>>::equal\n                              (this,(istreambuf_iterator *)pplVar6);" (binary_expression "char_traits<char>>::equal\n                              (this,(istreambuf_iterator *)pplVar6)" identifier < (binary_expression "char>>::equal\n                              (this,(istreambuf_iterator *)pplVar6)" identifier >> (ERROR "::" : :) (call_expression "equal\n                              (this,(istreambuf_iterator *)pplVar6)" identifier (argument_list "(this,(istreambuf_iterator *)pplVar6)" ( identifier , (cast_expression "(istreambuf_iterator *)pplVar6" ( (type_descriptor "istreambuf_iterator *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) ))))) ;) (if_statement "if (cVar7 != '\0') goto LAB_0028d487;" if (parenthesized_expression "(cVar7 != '\0')" ( (binary_expression "cVar7 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) (goto_statement "goto LAB_0028d487;" goto statement_identifier ;)) (expression_statement "cVar7 = pcVar2[sVar18];" (assignment_expression "cVar7 = pcVar2[sVar18]" identifier = (subscript_expression "pcVar2[sVar18]" identifier [ identifier ])) ;) (expression_statement "uVar11 = local_40;" (assignment_expression "uVar11 = local_40" identifier = identifier) ;) (if_statement "if ((local_48 == (long *)0x0) || (local_40 != 0xffffffff)) {\nLAB_0028d688:\n              if (cVar7 != (char)uVar11) goto LAB_0028d487;\n              pcVar15 = (char *)local_48[2];\n              if (pcVar15 < (char *)local_48[3]) goto LAB_0028d6a3;\n              pcVar3 = *(code **)(*local_48 + 0x50);\n              *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d7c3;\n              (*pcVar3)();\n            }\n            else {\n              pcVar15 = (char *)local_48[2];\n              if ((char *)local_48[3] <= pcVar15) {\n                pcVar3 = *(code **)(*local_48 + 0x48);\n                *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d7e2;\n                uVar11 = (*pcVar3)();\n                if (uVar11 == 0xffffffff) {\n                  local_48 = (long *)0x0;\n                }\n                goto LAB_0028d688;\n              }\n              if (cVar7 != *pcVar15) goto LAB_0028d487;\nLAB_0028d6a3:\n              local_48[2] = (long)(pcVar15 + 1);\n            }" if (parenthesized_expression "((local_48 == (long *)0x0) || (local_40 != 0xffffffff))" ( (binary_expression "(local_48 == (long *)0x0) || (local_40 != 0xffffffff)" (parenthesized_expression "(local_48 == (long *)0x0)" ( (binary_expression "local_48 == (long *)0x0" identifier == (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) )) || (parenthesized_expression "(local_40 != 0xffffffff)" ( (binary_expression "local_40 != 0xffffffff" identifier != number_literal) ))) )) (compound_statement "{\nLAB_0028d688:\n              if (cVar7 != (char)uVar11) goto LAB_0028d487;\n              pcVar15 = (char *)local_48[2];\n              if (pcVar15 < (char *)local_48[3]) goto LAB_0028d6a3;\n              pcVar3 = *(code **)(*local_48 + 0x50);\n              *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d7c3;\n              (*pcVar3)();\n            }" { (labeled_statement "LAB_0028d688:\n              if (cVar7 != (char)uVar11) goto LAB_0028d487;" statement_identifier : (if_statement "if (cVar7 != (char)uVar11) goto LAB_0028d487;" if (parenthesized_expression "(cVar7 != (char)uVar11)" ( (binary_expression "cVar7 != (char)uVar11" identifier != (cast_expression "(char)uVar11" ( (type_descriptor "char" primitive_type) ) identifier)) )) (goto_statement "goto LAB_0028d487;" goto statement_identifier ;))) (expression_statement "pcVar15 = (char *)local_48[2];" (assignment_expression "pcVar15 = (char *)local_48[2]" identifier = (cast_expression "(char *)local_48[2]" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "local_48[2]" identifier [ number_literal ]))) ;) (if_statement "if (pcVar15 < (char *)local_48[3]) goto LAB_0028d6a3;" if (parenthesized_expression "(pcVar15 < (char *)local_48[3])" ( (binary_expression "pcVar15 < (char *)local_48[3]" identifier < (cast_expression "(char *)local_48[3]" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "local_48[3]" identifier [ number_literal ]))) )) (goto_statement "goto LAB_0028d6a3;" goto statement_identifier ;)) (expression_statement "pcVar3 = *(code **)(*local_48 + 0x50);" (assignment_expression "pcVar3 = *(code **)(*local_48 + 0x50)" identifier = (pointer_expression "*(code **)(*local_48 + 0x50)" * (cast_expression "(code **)(*local_48 + 0x50)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*local_48 + 0x50)" ( (binary_expression "*local_48 + 0x50" (pointer_expression "*local_48" * identifier) + number_literal) ))))) ;) (expression_statement "*(undefined8 *)((long)auStack_90 + lVar4) = 0x28d7c3;" (assignment_expression "*(undefined8 *)((long)auStack_90 + lVar4) = 0x28d7c3" (pointer_expression "*(undefined8 *)((long)auStack_90 + lVar4)" * (cast_expression "(undefined8 *)((long)auStack_90 + lVar4)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)auStack_90 + lVar4)" ( (binary_expression "(long)auStack_90 + lVar4" (cast_expression "(long)auStack_90" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + identifier) )))) = number_literal) ;) (expression_statement "(*pcVar3)();" (call_expression "(*pcVar3)()" (parenthesized_expression "(*pcVar3)" ( (pointer_expression "*pcVar3" * identifier) )) (argument_list "()" ( ))) ;) }) (else_clause "else {\n              pcVar15 = (char *)local_48[2];\n              if ((char *)local_48[3] <= pcVar15) {\n                pcVar3 = *(code **)(*local_48 + 0x48);\n                *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d7e2;\n                uVar11 = (*pcVar3)();\n                if (uVar11 == 0xffffffff) {\n                  local_48 = (long *)0x0;\n                }\n                goto LAB_0028d688;\n              }\n              if (cVar7 != *pcVar15) goto LAB_0028d487;\nLAB_0028d6a3:\n              local_48[2] = (long)(pcVar15 + 1);\n            }" else (compound_statement "{\n              pcVar15 = (char *)local_48[2];\n              if ((char *)local_48[3] <= pcVar15) {\n                pcVar3 = *(code **)(*local_48 + 0x48);\n                *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d7e2;\n                uVar11 = (*pcVar3)();\n                if (uVar11 == 0xffffffff) {\n                  local_48 = (long *)0x0;\n                }\n                goto LAB_0028d688;\n              }\n              if (cVar7 != *pcVar15) goto LAB_0028d487;\nLAB_0028d6a3:\n              local_48[2] = (long)(pcVar15 + 1);\n            }" { (expression_statement "pcVar15 = (char *)local_48[2];" (assignment_expression "pcVar15 = (char *)local_48[2]" identifier = (cast_expression "(char *)local_48[2]" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "local_48[2]" identifier [ number_literal ]))) ;) (if_statement "if ((char *)local_48[3] <= pcVar15) {\n                pcVar3 = *(code **)(*local_48 + 0x48);\n                *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d7e2;\n                uVar11 = (*pcVar3)();\n                if (uVar11 == 0xffffffff) {\n                  local_48 = (long *)0x0;\n                }\n                goto LAB_0028d688;\n              }" if (parenthesized_expression "((char *)local_48[3] <= pcVar15)" ( (binary_expression "(char *)local_48[3] <= pcVar15" (cast_expression "(char *)local_48[3]" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "local_48[3]" identifier [ number_literal ])) <= identifier) )) (compound_statement "{\n                pcVar3 = *(code **)(*local_48 + 0x48);\n                *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d7e2;\n                uVar11 = (*pcVar3)();\n                if (uVar11 == 0xffffffff) {\n                  local_48 = (long *)0x0;\n                }\n                goto LAB_0028d688;\n              }" { (expression_statement "pcVar3 = *(code **)(*local_48 + 0x48);" (assignment_expression "pcVar3 = *(code **)(*local_48 + 0x48)" identifier = (pointer_expression "*(code **)(*local_48 + 0x48)" * (cast_expression "(code **)(*local_48 + 0x48)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*local_48 + 0x48)" ( (binary_expression "*local_48 + 0x48" (pointer_expression "*local_48" * identifier) + number_literal) ))))) ;) (expression_statement "*(undefined8 *)((long)auStack_90 + lVar4) = 0x28d7e2;" (assignment_expression "*(undefined8 *)((long)auStack_90 + lVar4) = 0x28d7e2" (pointer_expression "*(undefined8 *)((long)auStack_90 + lVar4)" * (cast_expression "(undefined8 *)((long)auStack_90 + lVar4)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)auStack_90 + lVar4)" ( (binary_expression "(long)auStack_90 + lVar4" (cast_expression "(long)auStack_90" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + identifier) )))) = number_literal) ;) (expression_statement "uVar11 = (*pcVar3)();" (assignment_expression "uVar11 = (*pcVar3)()" identifier = (call_expression "(*pcVar3)()" (parenthesized_expression "(*pcVar3)" ( (pointer_expression "*pcVar3" * identifier) )) (argument_list "()" ( )))) ;) (if_statement "if (uVar11 == 0xffffffff) {\n                  local_48 = (long *)0x0;\n                }" if (parenthesized_expression "(uVar11 == 0xffffffff)" ( (binary_expression "uVar11 == 0xffffffff" identifier == number_literal) )) (compound_statement "{\n                  local_48 = (long *)0x0;\n                }" { (expression_statement "local_48 = (long *)0x0;" (assignment_expression "local_48 = (long *)0x0" identifier = (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) ;) })) (goto_statement "goto LAB_0028d688;" goto statement_identifier ;) })) (if_statement "if (cVar7 != *pcVar15) goto LAB_0028d487;" if (parenthesized_expression "(cVar7 != *pcVar15)" ( (binary_expression "cVar7 != *pcVar15" identifier != (pointer_expression "*pcVar15" * identifier)) )) (goto_statement "goto LAB_0028d487;" goto statement_identifier ;)) (labeled_statement "LAB_0028d6a3:\n              local_48[2] = (long)(pcVar15 + 1);" statement_identifier : (expression_statement "local_48[2] = (long)(pcVar15 + 1);" (assignment_expression "local_48[2] = (long)(pcVar15 + 1)" (subscript_expression "local_48[2]" identifier [ number_literal ]) = (cast_expression "(long)(pcVar15 + 1)" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (parenthesized_expression "(pcVar15 + 1)" ( (binary_expression "pcVar15 + 1" identifier + number_literal) )))) ;)) }))) (expression_statement "sVar18 = sVar18 + 1;" (assignment_expression "sVar18 = sVar18 + 1" identifier = (binary_expression "sVar18 + 1" identifier + number_literal)) ;) (expression_statement "local_40 = 0xffffffff;" (assignment_expression "local_40 = 0xffffffff" identifier = number_literal) ;) }) while (parenthesized_expression "(sVar18 != sVar14)" ( (binary_expression "sVar18 != sVar14" identifier != identifier) )) ;) }) (else_clause "else if (sVar18 != sVar14) goto LAB_0028d487;" else (if_statement "if (sVar18 != sVar14) goto LAB_0028d487;" if (parenthesized_expression "(sVar18 != sVar14)" ( (binary_expression "sVar18 != sVar14" identifier != identifier) )) (goto_statement "goto LAB_0028d487;" goto statement_identifier ;)))) (expression_statement "*local_80 = (undefined4)local_60;" (assignment_expression "*local_80 = (undefined4)local_60" (pointer_expression "*local_80" * identifier) = (cast_expression "(undefined4)local_60" ( (type_descriptor "undefined4" type_identifier) ) identifier)) ;) (goto_statement "goto LAB_0028d48e;" goto statement_identifier ;) })) })) })) (labeled_statement "LAB_0028d487:\n  *param_10 = *param_10 | 4;" statement_identifier : (expression_statement "*param_10 = *param_10 | 4;" (assignment_expression "*param_10 = *param_10 | 4" (pointer_expression "*param_10" * identifier) = (binary_expression "*param_10 | 4" (pointer_expression "*param_10" * identifier) | number_literal)) ;)) (labeled_statement "LAB_0028d48e:\n  auVar5._8_4_ = local_40;" statement_identifier : (expression_statement "auVar5._8_4_ = local_40;" (assignment_expression "auVar5._8_4_ = local_40" (field_expression "auVar5._8_4_" identifier . field_identifier) = identifier) ;)) (expression_statement "auVar5._0_8_ = local_48;" (assignment_expression "auVar5._0_8_ = local_48" (field_expression "auVar5._0_8_" identifier . field_identifier) = identifier) ;) (expression_statement "auVar5._12_4_ = uStack_3c;" (assignment_expression "auVar5._12_4_ = uStack_3c" (field_expression "auVar5._12_4_" identifier . field_identifier) = identifier) ;) (return_statement "return auVar5;" return identifier ;) }))
(translation_unit "undefined1  [16]\nFUN_0028d410(undefined8 param_1,long *param_2,undefined8 param_3,long *param_4,undefined8 param_5,\n            undefined4 *param_6,long param_7,long param_8,long param_9,uint *param_10)\n\n{\n  int *piVar1;\n  char *pcVar2;\n  code *pcVar3;\n  long lVar4;\n  undefined1 auVar5 [16];\n  long **pplVar6;\n  long **pplVar7;\n  char cVar8;\n  char cVar9;\n  bool bVar10;\n  int iVar11;\n  uint uVar12;\n  long *plVar13;\n  ulong uVar14;\n  size_t sVar15;\n  char *pcVar16;\n  long lVar17;\n  ulong uVar18;\n  size_t sVar19;\n  ulong uVar20;\n  undefined8 auStack_90 [2];\n  undefined4 *local_80;\n  long **local_78;\n  char local_6a;\n  char local_69;\n  long **local_68;\n  ulong local_60;\n  long *local_58;\n  undefined8 local_50;\n  long *local_48;\n  uint local_40;\n  undefined4 uStack_3c;\n  \n  local_40 = (uint)param_3;\n  uStack_3c = (undefined4)((ulong)param_3 >> 0x20);\n  auStack_90[0] = 0x28d449;\n  local_80 = param_6;\n  local_58 = param_4;\n  local_50 = param_5;\n  local_48 = param_2;\n  plVar13 = (long *)FUN_00288720(param_9 + 0xd0);\n  local_78 = &local_58;\n  lVar4 = -(param_8 * 4 + 0x17U & 0xfffffffffffffff0);\n  piVar1 = (int *)((long)&local_80 + lVar4);\n  local_68 = &local_48;\n  *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d483;\n  cVar8 = FUN_0028d360(&local_48);\n  uVar12 = local_40;\n  pplVar6 = local_68;\n  if (cVar8 == '\0') {\n    *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d4b1;\n    cVar8 = FUN_002864b0(pplVar6,uVar12);\n    if (param_8 != 0) {\n      lVar17 = 0;\n      uVar20 = 0;\n      do {\n        while (**(char **)(param_7 + lVar17 * 8) == cVar8) {\nLAB_0028d4f6:\n          piVar1[uVar20] = (int)lVar17;\n          uVar20 = uVar20 + 1;\n          lVar17 = lVar17 + 1;\n          if (param_8 == lVar17) goto LAB_0028d508;\n        }\n        local_60 = CONCAT71(local_60._1_7_,cVar8);\n        pcVar3 = *(code **)(*plVar13 + 0x10);\n        *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d4d6;\n        cVar9 = (*pcVar3)(plVar13);\n        cVar8 = (char)local_60;\n        if ((char)local_60 == cVar9) goto LAB_0028d4f6;\n        lVar17 = lVar17 + 1;\n      } while (param_8 != lVar17);\nLAB_0028d508:\n      local_60 = 0;\njoined_r0x0028d514:\n      if (1 < uVar20) {\n        uVar18 = 1;\n        pcVar2 = *(char **)(param_7 + (long)*piVar1 * 8);\n        *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d532;\n        uVar14 = strlen(pcVar2);\n        do {\n          pcVar2 = *(char **)(param_7 + (long)piVar1[uVar18] * 8);\n          *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d545;\n          sVar15 = strlen(pcVar2);\n          if (sVar15 < uVar14) {\n            uVar14 = sVar15;\n          }\n          uVar18 = uVar18 + 1;\n        } while (uVar18 < uVar20);\n        if ((ulong)local_48[2] < (ulong)local_48[3]) {\n          local_48[2] = local_48[2] + 1;\n        }\n        else {\n          pcVar3 = *(code **)(*local_48 + 0x50);\n          *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d796;\n          (*pcVar3)();\n        }\n        local_60 = local_60 + 1;\n        local_40 = 0xffffffff;\n        if (uVar14 <= local_60) goto LAB_0028d487;\n        cVar8 = '\x01';\n        if (local_48 != (long *)0x0) {\n          cVar8 = '\0';\n          if ((ulong)local_48[3] <= (ulong)local_48[2]) {\n            pcVar3 = *(code **)(*local_48 + 0x48);\n            *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d7a1;\n            iVar11 = (*pcVar3)();\n            cVar8 = '\0';\n            if (iVar11 == -1) {\n              local_48 = (long *)0x0;\n              cVar8 = '\x01';\n            }\n          }\n        }\n        bVar10 = local_58 != (long *)0x0 && (int)local_50 == -1;\n        cVar9 = (int)local_50 == -1;\n        if ((bVar10) && (cVar9 = '\0', (ulong)local_58[3] <= (ulong)local_58[2])) {\n          local_69 = '\0';\n          pcVar3 = *(code **)(*local_58 + 0x48);\n          local_6a = bVar10;\n          *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d736;\n          iVar11 = (*pcVar3)();\n          cVar9 = local_69;\n          if (iVar11 == -1) {\n            local_58 = (long *)0x0;\n            cVar9 = local_6a;\n          }\n        }\n        if (cVar9 == cVar8) goto LAB_0028d487;\n        uVar14 = 0;\n        do {\n          while( true ) {\n            cVar8 = *(char *)(*(long *)(param_7 + (long)piVar1[uVar14] * 8) + local_60);\n            uVar12 = local_40;\n            if ((local_48 != (long *)0x0) && (local_40 == 0xffffffff)) {\n              if ((byte *)local_48[2] < (byte *)local_48[3]) {\n                uVar12 = (uint)*(byte *)local_48[2];\n              }\n              else {\n                pcVar3 = *(code **)(*local_48 + 0x48);\n                local_69 = cVar8;\n                *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d76a;\n                uVar12 = (*pcVar3)();\n                cVar8 = local_69;\n                if (uVar12 == 0xffffffff) {\n                  local_48 = (long *)0x0;\n                  uVar12 = 0xffffffff;\n                }\n              }\n            }\n            if (cVar8 != (char)uVar12) break;\n            uVar14 = uVar14 + 1;\n            if (uVar20 <= uVar14) goto joined_r0x0028d514;\n          }\n          uVar20 = uVar20 - 1;\n          piVar1[uVar14] = piVar1[uVar20];\n        } while (uVar14 < uVar20);\n        goto joined_r0x0028d514;\n      }\n      if (uVar20 == 1) {\n        if ((ulong)local_48[2] < (ulong)local_48[3]) {\n          local_48[2] = local_48[2] + 1;\n        }\n        else {\n          pcVar3 = *(code **)(*local_48 + 0x50);\n          *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d7fe;\n          (*pcVar3)();\n        }\n        uVar20 = local_60;\n        local_40 = 0xffffffff;\n        pcVar2 = *(char **)(param_7 + (long)*piVar1 * 8);\n        local_60 = CONCAT44(local_60._4_4_,*piVar1);\n        sVar19 = uVar20 + 1;\n        *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d670;\n        sVar15 = strlen(pcVar2);\n        if (sVar19 < sVar15) {\n          do {\n            pplVar7 = local_68;\n            pplVar6 = local_78;\n            *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d6c9;\n            cVar8 = FUN_0028d360(pplVar7,pplVar6);\n            if (cVar8 != '\0') goto LAB_0028d487;\n            cVar8 = pcVar2[sVar19];\n            uVar12 = local_40;\n            if ((local_48 == (long *)0x0) || (local_40 != 0xffffffff)) {\nLAB_0028d688:\n              if (cVar8 != (char)uVar12) goto LAB_0028d487;\n              pcVar16 = (char *)local_48[2];\n              if (pcVar16 < (char *)local_48[3]) goto LAB_0028d6a3;\n              pcVar3 = *(code **)(*local_48 + 0x50);\n              *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d7c3;\n              (*pcVar3)();\n            }\n            else {\n              pcVar16 = (char *)local_48[2];\n              if ((char *)local_48[3] <= pcVar16) {\n                pcVar3 = *(code **)(*local_48 + 0x48);\n                *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d7e2;\n                uVar12 = (*pcVar3)();\n                if (uVar12 == 0xffffffff) {\n                  local_48 = (long *)0x0;\n                }\n                goto LAB_0028d688;\n              }\n              if (cVar8 != *pcVar16) goto LAB_0028d487;\nLAB_0028d6a3:\n              local_48[2] = (long)(pcVar16 + 1);\n            }\n            sVar19 = sVar19 + 1;\n            local_40 = 0xffffffff;\n          } while (sVar19 != sVar15);\n        }\n        else if (sVar19 != sVar15) goto LAB_0028d487;\n        *local_80 = (undefined4)local_60;\n        goto LAB_0028d48e;\n      }\n    }\n  }\nLAB_0028d487:\n  *param_10 = *param_10 | 4;\nLAB_0028d48e:\n  auVar5._8_4_ = local_40;\n  auVar5._0_8_ = local_48;\n  auVar5._12_4_ = uStack_3c;\n  return auVar5;\n}\n\n" (expression_statement "undefined1  [16]" (subscript_expression "undefined1  [16]" identifier [ number_literal ]) ;) (declaration "FUN_0028d410(undefined8 param_1,long *param_2,undefined8 param_3,long *param_4,undefined8 param_5,\n            undefined4 *param_6,long param_7,long param_8,long param_9,uint *param_10)\n\n{\n  int *piVar1;" (macro_type_specifier "FUN_0028d410(undefined8" identifier ( (type_descriptor "undefined8" type_identifier) )) identifier , (ERROR "long" identifier) (pointer_declarator "*param_2" * identifier) , identifier (ERROR "param_3" identifier) , (ERROR "long" identifier) (pointer_declarator "*param_4" * identifier) , identifier (ERROR "param_5" identifier) , (ERROR "undefined4" identifier) (pointer_declarator "*param_6" * identifier) , (ERROR "long" identifier) identifier , (ERROR "long" identifier) identifier , (ERROR "long" identifier) identifier , (ERROR "uint *param_10)\n\n{\n  int" identifier (pointer_declarator "*param_10" * identifier) ) { primitive_type) (pointer_declarator "*piVar1" * identifier) ;) (declaration "char *pcVar2;" primitive_type (pointer_declarator "*pcVar2" * identifier) ;) (declaration "code *pcVar3;" type_identifier (pointer_declarator "*pcVar3" * identifier) ;) (declaration "long lVar4;" (sized_type_specifier "long" long) identifier ;) (declaration "undefined1 auVar5 [16];" type_identifier (array_declarator "auVar5 [16]" identifier [ number_literal ]) ;) (declaration "long **pplVar6;" (sized_type_specifier "long" long) (pointer_declarator "**pplVar6" * (pointer_declarator "*pplVar6" * identifier)) ;) (declaration "long **pplVar7;" (sized_type_specifier "long" long) (pointer_declarator "**pplVar7" * (pointer_declarator "*pplVar7" * identifier)) ;) (declaration "char cVar8;" primitive_type identifier ;) (declaration "char cVar9;" primitive_type identifier ;) (declaration "bool bVar10;" primitive_type identifier ;) (declaration "int iVar11;" primitive_type identifier ;) (declaration "uint uVar12;" type_identifier identifier ;) (declaration "long *plVar13;" (sized_type_specifier "long" long) (pointer_declarator "*plVar13" * identifier) ;) (declaration "ulong uVar14;" type_identifier identifier ;) (declaration "size_t sVar15;" primitive_type identifier ;) (declaration "char *pcVar16;" primitive_type (pointer_declarator "*pcVar16" * identifier) ;) (declaration "long lVar17;" (sized_type_specifier "long" long) identifier ;) (declaration "ulong uVar18;" type_identifier identifier ;) (declaration "size_t sVar19;" primitive_type identifier ;) (declaration "ulong uVar20;" type_identifier identifier ;) (declaration "undefined8 auStack_90 [2];" type_identifier (array_declarator "auStack_90 [2]" identifier [ number_literal ]) ;) (declaration "undefined4 *local_80;" type_identifier (pointer_declarator "*local_80" * identifier) ;) (declaration "long **local_78;" (sized_type_specifier "long" long) (pointer_declarator "**local_78" * (pointer_declarator "*local_78" * identifier)) ;) (declaration "char local_6a;" primitive_type identifier ;) (declaration "char local_69;" primitive_type identifier ;) (declaration "long **local_68;" (sized_type_specifier "long" long) (pointer_declarator "**local_68" * (pointer_declarator "*local_68" * identifier)) ;) (declaration "ulong local_60;" type_identifier identifier ;) (declaration "long *local_58;" (sized_type_specifier "long" long) (pointer_declarator "*local_58" * identifier) ;) (declaration "undefined8 local_50;" type_identifier identifier ;) (declaration "long *local_48;" (sized_type_specifier "long" long) (pointer_declarator "*local_48" * identifier) ;) (declaration "uint local_40;" type_identifier identifier ;) (declaration "undefined4 uStack_3c;" type_identifier identifier ;) (expression_statement "local_40 = (uint)param_3;" (assignment_expression "local_40 = (uint)param_3" identifier = (cast_expression "(uint)param_3" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (expression_statement "uStack_3c = (undefined4)((ulong)param_3 >> 0x20);" (assignment_expression "uStack_3c = (undefined4)((ulong)param_3 >> 0x20)" identifier = (call_expression "(undefined4)((ulong)param_3 >> 0x20)" (parenthesized_expression "(undefined4)" ( identifier )) (argument_list "((ulong)param_3 >> 0x20)" ( (binary_expression "(ulong)param_3 >> 0x20" (cast_expression "(ulong)param_3" ( (type_descriptor "ulong" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "auStack_90[0] = 0x28d449;" (assignment_expression "auStack_90[0] = 0x28d449" (subscript_expression "auStack_90[0]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "local_80 = param_6;" (assignment_expression "local_80 = param_6" identifier = identifier) ;) (expression_statement "local_58 = param_4;" (assignment_expression "local_58 = param_4" identifier = identifier) ;) (expression_statement "local_50 = param_5;" (assignment_expression "local_50 = param_5" identifier = identifier) ;) (expression_statement "local_48 = param_2;" (assignment_expression "local_48 = param_2" identifier = identifier) ;) (expression_statement "plVar13 = (long *)FUN_00288720(param_9 + 0xd0);" (assignment_expression "plVar13 = (long *)FUN_00288720(param_9 + 0xd0)" identifier = (cast_expression "(long *)FUN_00288720(param_9 + 0xd0)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00288720(param_9 + 0xd0)" identifier (argument_list "(param_9 + 0xd0)" ( (binary_expression "param_9 + 0xd0" identifier + number_literal) ))))) ;) (expression_statement "local_78 = &local_58;" (assignment_expression "local_78 = &local_58" identifier = (pointer_expression "&local_58" & identifier)) ;) (expression_statement "lVar4 = -(param_8 * 4 + 0x17U & 0xfffffffffffffff0);" (assignment_expression "lVar4 = -(param_8 * 4 + 0x17U & 0xfffffffffffffff0)" identifier = (unary_expression "-(param_8 * 4 + 0x17U & 0xfffffffffffffff0)" - (parenthesized_expression "(param_8 * 4 + 0x17U & 0xfffffffffffffff0)" ( (binary_expression "param_8 * 4 + 0x17U & 0xfffffffffffffff0" (binary_expression "param_8 * 4 + 0x17U" (binary_expression "param_8 * 4" identifier * number_literal) + number_literal) & number_literal) )))) ;) (expression_statement "piVar1 = (int *)((long)&local_80 + lVar4);" (assignment_expression "piVar1 = (int *)((long)&local_80 + lVar4)" identifier = (cast_expression "(int *)((long)&local_80 + lVar4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)&local_80 + lVar4)" ( (binary_expression "(long)&local_80 + lVar4" (cast_expression "(long)&local_80" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (pointer_expression "&local_80" & identifier)) + identifier) )))) ;) (expression_statement "local_68 = &local_48;" (assignment_expression "local_68 = &local_48" identifier = (pointer_expression "&local_48" & identifier)) ;) (expression_statement "*(undefined8 *)((long)auStack_90 + lVar4) = 0x28d483;" (assignment_expression "*(undefined8 *)((long)auStack_90 + lVar4) = 0x28d483" (pointer_expression "*(undefined8 *)((long)auStack_90 + lVar4)" * (cast_expression "(undefined8 *)((long)auStack_90 + lVar4)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)auStack_90 + lVar4)" ( (binary_expression "(long)auStack_90 + lVar4" (cast_expression "(long)auStack_90" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + identifier) )))) = number_literal) ;) (expression_statement "cVar8 = FUN_0028d360(&local_48);" (assignment_expression "cVar8 = FUN_0028d360(&local_48)" identifier = (call_expression "FUN_0028d360(&local_48)" identifier (argument_list "(&local_48)" ( (pointer_expression "&local_48" & identifier) )))) ;) (expression_statement "uVar12 = local_40;" (assignment_expression "uVar12 = local_40" identifier = identifier) ;) (expression_statement "pplVar6 = local_68;" (assignment_expression "pplVar6 = local_68" identifier = identifier) ;) (if_statement "if (cVar8 == '\0') {\n    *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d4b1;\n    cVar8 = FUN_002864b0(pplVar6,uVar12);\n    if (param_8 != 0) {\n      lVar17 = 0;\n      uVar20 = 0;\n      do {\n        while (**(char **)(param_7 + lVar17 * 8) == cVar8) {\nLAB_0028d4f6:\n          piVar1[uVar20] = (int)lVar17;\n          uVar20 = uVar20 + 1;\n          lVar17 = lVar17 + 1;\n          if (param_8 == lVar17) goto LAB_0028d508;\n        }\n        local_60 = CONCAT71(local_60._1_7_,cVar8);\n        pcVar3 = *(code **)(*plVar13 + 0x10);\n        *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d4d6;\n        cVar9 = (*pcVar3)(plVar13);\n        cVar8 = (char)local_60;\n        if ((char)local_60 == cVar9) goto LAB_0028d4f6;\n        lVar17 = lVar17 + 1;\n      } while (param_8 != lVar17);\nLAB_0028d508:\n      local_60 = 0;\njoined_r0x0028d514:\n      if (1 < uVar20) {\n        uVar18 = 1;\n        pcVar2 = *(char **)(param_7 + (long)*piVar1 * 8);\n        *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d532;\n        uVar14 = strlen(pcVar2);\n        do {\n          pcVar2 = *(char **)(param_7 + (long)piVar1[uVar18] * 8);\n          *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d545;\n          sVar15 = strlen(pcVar2);\n          if (sVar15 < uVar14) {\n            uVar14 = sVar15;\n          }\n          uVar18 = uVar18 + 1;\n        } while (uVar18 < uVar20);\n        if ((ulong)local_48[2] < (ulong)local_48[3]) {\n          local_48[2] = local_48[2] + 1;\n        }\n        else {\n          pcVar3 = *(code **)(*local_48 + 0x50);\n          *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d796;\n          (*pcVar3)();\n        }\n        local_60 = local_60 + 1;\n        local_40 = 0xffffffff;\n        if (uVar14 <= local_60) goto LAB_0028d487;\n        cVar8 = '\x01';\n        if (local_48 != (long *)0x0) {\n          cVar8 = '\0';\n          if ((ulong)local_48[3] <= (ulong)local_48[2]) {\n            pcVar3 = *(code **)(*local_48 + 0x48);\n            *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d7a1;\n            iVar11 = (*pcVar3)();\n            cVar8 = '\0';\n            if (iVar11 == -1) {\n              local_48 = (long *)0x0;\n              cVar8 = '\x01';\n            }\n          }\n        }\n        bVar10 = local_58 != (long *)0x0 && (int)local_50 == -1;\n        cVar9 = (int)local_50 == -1;\n        if ((bVar10) && (cVar9 = '\0', (ulong)local_58[3] <= (ulong)local_58[2])) {\n          local_69 = '\0';\n          pcVar3 = *(code **)(*local_58 + 0x48);\n          local_6a = bVar10;\n          *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d736;\n          iVar11 = (*pcVar3)();\n          cVar9 = local_69;\n          if (iVar11 == -1) {\n            local_58 = (long *)0x0;\n            cVar9 = local_6a;\n          }\n        }\n        if (cVar9 == cVar8) goto LAB_0028d487;\n        uVar14 = 0;\n        do {\n          while( true ) {\n            cVar8 = *(char *)(*(long *)(param_7 + (long)piVar1[uVar14] * 8) + local_60);\n            uVar12 = local_40;\n            if ((local_48 != (long *)0x0) && (local_40 == 0xffffffff)) {\n              if ((byte *)local_48[2] < (byte *)local_48[3]) {\n                uVar12 = (uint)*(byte *)local_48[2];\n              }\n              else {\n                pcVar3 = *(code **)(*local_48 + 0x48);\n                local_69 = cVar8;\n                *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d76a;\n                uVar12 = (*pcVar3)();\n                cVar8 = local_69;\n                if (uVar12 == 0xffffffff) {\n                  local_48 = (long *)0x0;\n                  uVar12 = 0xffffffff;\n                }\n              }\n            }\n            if (cVar8 != (char)uVar12) break;\n            uVar14 = uVar14 + 1;\n            if (uVar20 <= uVar14) goto joined_r0x0028d514;\n          }\n          uVar20 = uVar20 - 1;\n          piVar1[uVar14] = piVar1[uVar20];\n        } while (uVar14 < uVar20);\n        goto joined_r0x0028d514;\n      }\n      if (uVar20 == 1) {\n        if ((ulong)local_48[2] < (ulong)local_48[3]) {\n          local_48[2] = local_48[2] + 1;\n        }\n        else {\n          pcVar3 = *(code **)(*local_48 + 0x50);\n          *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d7fe;\n          (*pcVar3)();\n        }\n        uVar20 = local_60;\n        local_40 = 0xffffffff;\n        pcVar2 = *(char **)(param_7 + (long)*piVar1 * 8);\n        local_60 = CONCAT44(local_60._4_4_,*piVar1);\n        sVar19 = uVar20 + 1;\n        *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d670;\n        sVar15 = strlen(pcVar2);\n        if (sVar19 < sVar15) {\n          do {\n            pplVar7 = local_68;\n            pplVar6 = local_78;\n            *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d6c9;\n            cVar8 = FUN_0028d360(pplVar7,pplVar6);\n            if (cVar8 != '\0') goto LAB_0028d487;\n            cVar8 = pcVar2[sVar19];\n            uVar12 = local_40;\n            if ((local_48 == (long *)0x0) || (local_40 != 0xffffffff)) {\nLAB_0028d688:\n              if (cVar8 != (char)uVar12) goto LAB_0028d487;\n              pcVar16 = (char *)local_48[2];\n              if (pcVar16 < (char *)local_48[3]) goto LAB_0028d6a3;\n              pcVar3 = *(code **)(*local_48 + 0x50);\n              *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d7c3;\n              (*pcVar3)();\n            }\n            else {\n              pcVar16 = (char *)local_48[2];\n              if ((char *)local_48[3] <= pcVar16) {\n                pcVar3 = *(code **)(*local_48 + 0x48);\n                *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d7e2;\n                uVar12 = (*pcVar3)();\n                if (uVar12 == 0xffffffff) {\n                  local_48 = (long *)0x0;\n                }\n                goto LAB_0028d688;\n              }\n              if (cVar8 != *pcVar16) goto LAB_0028d487;\nLAB_0028d6a3:\n              local_48[2] = (long)(pcVar16 + 1);\n            }\n            sVar19 = sVar19 + 1;\n            local_40 = 0xffffffff;\n          } while (sVar19 != sVar15);\n        }\n        else if (sVar19 != sVar15) goto LAB_0028d487;\n        *local_80 = (undefined4)local_60;\n        goto LAB_0028d48e;\n      }\n    }\n  }" if (parenthesized_expression "(cVar8 == '\0')" ( (binary_expression "cVar8 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d4b1;\n    cVar8 = FUN_002864b0(pplVar6,uVar12);\n    if (param_8 != 0) {\n      lVar17 = 0;\n      uVar20 = 0;\n      do {\n        while (**(char **)(param_7 + lVar17 * 8) == cVar8) {\nLAB_0028d4f6:\n          piVar1[uVar20] = (int)lVar17;\n          uVar20 = uVar20 + 1;\n          lVar17 = lVar17 + 1;\n          if (param_8 == lVar17) goto LAB_0028d508;\n        }\n        local_60 = CONCAT71(local_60._1_7_,cVar8);\n        pcVar3 = *(code **)(*plVar13 + 0x10);\n        *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d4d6;\n        cVar9 = (*pcVar3)(plVar13);\n        cVar8 = (char)local_60;\n        if ((char)local_60 == cVar9) goto LAB_0028d4f6;\n        lVar17 = lVar17 + 1;\n      } while (param_8 != lVar17);\nLAB_0028d508:\n      local_60 = 0;\njoined_r0x0028d514:\n      if (1 < uVar20) {\n        uVar18 = 1;\n        pcVar2 = *(char **)(param_7 + (long)*piVar1 * 8);\n        *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d532;\n        uVar14 = strlen(pcVar2);\n        do {\n          pcVar2 = *(char **)(param_7 + (long)piVar1[uVar18] * 8);\n          *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d545;\n          sVar15 = strlen(pcVar2);\n          if (sVar15 < uVar14) {\n            uVar14 = sVar15;\n          }\n          uVar18 = uVar18 + 1;\n        } while (uVar18 < uVar20);\n        if ((ulong)local_48[2] < (ulong)local_48[3]) {\n          local_48[2] = local_48[2] + 1;\n        }\n        else {\n          pcVar3 = *(code **)(*local_48 + 0x50);\n          *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d796;\n          (*pcVar3)();\n        }\n        local_60 = local_60 + 1;\n        local_40 = 0xffffffff;\n        if (uVar14 <= local_60) goto LAB_0028d487;\n        cVar8 = '\x01';\n        if (local_48 != (long *)0x0) {\n          cVar8 = '\0';\n          if ((ulong)local_48[3] <= (ulong)local_48[2]) {\n            pcVar3 = *(code **)(*local_48 + 0x48);\n            *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d7a1;\n            iVar11 = (*pcVar3)();\n            cVar8 = '\0';\n            if (iVar11 == -1) {\n              local_48 = (long *)0x0;\n              cVar8 = '\x01';\n            }\n          }\n        }\n        bVar10 = local_58 != (long *)0x0 && (int)local_50 == -1;\n        cVar9 = (int)local_50 == -1;\n        if ((bVar10) && (cVar9 = '\0', (ulong)local_58[3] <= (ulong)local_58[2])) {\n          local_69 = '\0';\n          pcVar3 = *(code **)(*local_58 + 0x48);\n          local_6a = bVar10;\n          *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d736;\n          iVar11 = (*pcVar3)();\n          cVar9 = local_69;\n          if (iVar11 == -1) {\n            local_58 = (long *)0x0;\n            cVar9 = local_6a;\n          }\n        }\n        if (cVar9 == cVar8) goto LAB_0028d487;\n        uVar14 = 0;\n        do {\n          while( true ) {\n            cVar8 = *(char *)(*(long *)(param_7 + (long)piVar1[uVar14] * 8) + local_60);\n            uVar12 = local_40;\n            if ((local_48 != (long *)0x0) && (local_40 == 0xffffffff)) {\n              if ((byte *)local_48[2] < (byte *)local_48[3]) {\n                uVar12 = (uint)*(byte *)local_48[2];\n              }\n              else {\n                pcVar3 = *(code **)(*local_48 + 0x48);\n                local_69 = cVar8;\n                *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d76a;\n                uVar12 = (*pcVar3)();\n                cVar8 = local_69;\n                if (uVar12 == 0xffffffff) {\n                  local_48 = (long *)0x0;\n                  uVar12 = 0xffffffff;\n                }\n              }\n            }\n            if (cVar8 != (char)uVar12) break;\n            uVar14 = uVar14 + 1;\n            if (uVar20 <= uVar14) goto joined_r0x0028d514;\n          }\n          uVar20 = uVar20 - 1;\n          piVar1[uVar14] = piVar1[uVar20];\n        } while (uVar14 < uVar20);\n        goto joined_r0x0028d514;\n      }\n      if (uVar20 == 1) {\n        if ((ulong)local_48[2] < (ulong)local_48[3]) {\n          local_48[2] = local_48[2] + 1;\n        }\n        else {\n          pcVar3 = *(code **)(*local_48 + 0x50);\n          *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d7fe;\n          (*pcVar3)();\n        }\n        uVar20 = local_60;\n        local_40 = 0xffffffff;\n        pcVar2 = *(char **)(param_7 + (long)*piVar1 * 8);\n        local_60 = CONCAT44(local_60._4_4_,*piVar1);\n        sVar19 = uVar20 + 1;\n        *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d670;\n        sVar15 = strlen(pcVar2);\n        if (sVar19 < sVar15) {\n          do {\n            pplVar7 = local_68;\n            pplVar6 = local_78;\n            *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d6c9;\n            cVar8 = FUN_0028d360(pplVar7,pplVar6);\n            if (cVar8 != '\0') goto LAB_0028d487;\n            cVar8 = pcVar2[sVar19];\n            uVar12 = local_40;\n            if ((local_48 == (long *)0x0) || (local_40 != 0xffffffff)) {\nLAB_0028d688:\n              if (cVar8 != (char)uVar12) goto LAB_0028d487;\n              pcVar16 = (char *)local_48[2];\n              if (pcVar16 < (char *)local_48[3]) goto LAB_0028d6a3;\n              pcVar3 = *(code **)(*local_48 + 0x50);\n              *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d7c3;\n              (*pcVar3)();\n            }\n            else {\n              pcVar16 = (char *)local_48[2];\n              if ((char *)local_48[3] <= pcVar16) {\n                pcVar3 = *(code **)(*local_48 + 0x48);\n                *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d7e2;\n                uVar12 = (*pcVar3)();\n                if (uVar12 == 0xffffffff) {\n                  local_48 = (long *)0x0;\n                }\n                goto LAB_0028d688;\n              }\n              if (cVar8 != *pcVar16) goto LAB_0028d487;\nLAB_0028d6a3:\n              local_48[2] = (long)(pcVar16 + 1);\n            }\n            sVar19 = sVar19 + 1;\n            local_40 = 0xffffffff;\n          } while (sVar19 != sVar15);\n        }\n        else if (sVar19 != sVar15) goto LAB_0028d487;\n        *local_80 = (undefined4)local_60;\n        goto LAB_0028d48e;\n      }\n    }\n  }" { (expression_statement "*(undefined8 *)((long)auStack_90 + lVar4) = 0x28d4b1;" (assignment_expression "*(undefined8 *)((long)auStack_90 + lVar4) = 0x28d4b1" (pointer_expression "*(undefined8 *)((long)auStack_90 + lVar4)" * (cast_expression "(undefined8 *)((long)auStack_90 + lVar4)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)auStack_90 + lVar4)" ( (binary_expression "(long)auStack_90 + lVar4" (cast_expression "(long)auStack_90" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + identifier) )))) = number_literal) ;) (expression_statement "cVar8 = FUN_002864b0(pplVar6,uVar12);" (assignment_expression "cVar8 = FUN_002864b0(pplVar6,uVar12)" identifier = (call_expression "FUN_002864b0(pplVar6,uVar12)" identifier (argument_list "(pplVar6,uVar12)" ( identifier , identifier )))) ;) (if_statement "if (param_8 != 0) {\n      lVar17 = 0;\n      uVar20 = 0;\n      do {\n        while (**(char **)(param_7 + lVar17 * 8) == cVar8) {\nLAB_0028d4f6:\n          piVar1[uVar20] = (int)lVar17;\n          uVar20 = uVar20 + 1;\n          lVar17 = lVar17 + 1;\n          if (param_8 == lVar17) goto LAB_0028d508;\n        }\n        local_60 = CONCAT71(local_60._1_7_,cVar8);\n        pcVar3 = *(code **)(*plVar13 + 0x10);\n        *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d4d6;\n        cVar9 = (*pcVar3)(plVar13);\n        cVar8 = (char)local_60;\n        if ((char)local_60 == cVar9) goto LAB_0028d4f6;\n        lVar17 = lVar17 + 1;\n      } while (param_8 != lVar17);\nLAB_0028d508:\n      local_60 = 0;\njoined_r0x0028d514:\n      if (1 < uVar20) {\n        uVar18 = 1;\n        pcVar2 = *(char **)(param_7 + (long)*piVar1 * 8);\n        *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d532;\n        uVar14 = strlen(pcVar2);\n        do {\n          pcVar2 = *(char **)(param_7 + (long)piVar1[uVar18] * 8);\n          *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d545;\n          sVar15 = strlen(pcVar2);\n          if (sVar15 < uVar14) {\n            uVar14 = sVar15;\n          }\n          uVar18 = uVar18 + 1;\n        } while (uVar18 < uVar20);\n        if ((ulong)local_48[2] < (ulong)local_48[3]) {\n          local_48[2] = local_48[2] + 1;\n        }\n        else {\n          pcVar3 = *(code **)(*local_48 + 0x50);\n          *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d796;\n          (*pcVar3)();\n        }\n        local_60 = local_60 + 1;\n        local_40 = 0xffffffff;\n        if (uVar14 <= local_60) goto LAB_0028d487;\n        cVar8 = '\x01';\n        if (local_48 != (long *)0x0) {\n          cVar8 = '\0';\n          if ((ulong)local_48[3] <= (ulong)local_48[2]) {\n            pcVar3 = *(code **)(*local_48 + 0x48);\n            *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d7a1;\n            iVar11 = (*pcVar3)();\n            cVar8 = '\0';\n            if (iVar11 == -1) {\n              local_48 = (long *)0x0;\n              cVar8 = '\x01';\n            }\n          }\n        }\n        bVar10 = local_58 != (long *)0x0 && (int)local_50 == -1;\n        cVar9 = (int)local_50 == -1;\n        if ((bVar10) && (cVar9 = '\0', (ulong)local_58[3] <= (ulong)local_58[2])) {\n          local_69 = '\0';\n          pcVar3 = *(code **)(*local_58 + 0x48);\n          local_6a = bVar10;\n          *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d736;\n          iVar11 = (*pcVar3)();\n          cVar9 = local_69;\n          if (iVar11 == -1) {\n            local_58 = (long *)0x0;\n            cVar9 = local_6a;\n          }\n        }\n        if (cVar9 == cVar8) goto LAB_0028d487;\n        uVar14 = 0;\n        do {\n          while( true ) {\n            cVar8 = *(char *)(*(long *)(param_7 + (long)piVar1[uVar14] * 8) + local_60);\n            uVar12 = local_40;\n            if ((local_48 != (long *)0x0) && (local_40 == 0xffffffff)) {\n              if ((byte *)local_48[2] < (byte *)local_48[3]) {\n                uVar12 = (uint)*(byte *)local_48[2];\n              }\n              else {\n                pcVar3 = *(code **)(*local_48 + 0x48);\n                local_69 = cVar8;\n                *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d76a;\n                uVar12 = (*pcVar3)();\n                cVar8 = local_69;\n                if (uVar12 == 0xffffffff) {\n                  local_48 = (long *)0x0;\n                  uVar12 = 0xffffffff;\n                }\n              }\n            }\n            if (cVar8 != (char)uVar12) break;\n            uVar14 = uVar14 + 1;\n            if (uVar20 <= uVar14) goto joined_r0x0028d514;\n          }\n          uVar20 = uVar20 - 1;\n          piVar1[uVar14] = piVar1[uVar20];\n        } while (uVar14 < uVar20);\n        goto joined_r0x0028d514;\n      }\n      if (uVar20 == 1) {\n        if ((ulong)local_48[2] < (ulong)local_48[3]) {\n          local_48[2] = local_48[2] + 1;\n        }\n        else {\n          pcVar3 = *(code **)(*local_48 + 0x50);\n          *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d7fe;\n          (*pcVar3)();\n        }\n        uVar20 = local_60;\n        local_40 = 0xffffffff;\n        pcVar2 = *(char **)(param_7 + (long)*piVar1 * 8);\n        local_60 = CONCAT44(local_60._4_4_,*piVar1);\n        sVar19 = uVar20 + 1;\n        *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d670;\n        sVar15 = strlen(pcVar2);\n        if (sVar19 < sVar15) {\n          do {\n            pplVar7 = local_68;\n            pplVar6 = local_78;\n            *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d6c9;\n            cVar8 = FUN_0028d360(pplVar7,pplVar6);\n            if (cVar8 != '\0') goto LAB_0028d487;\n            cVar8 = pcVar2[sVar19];\n            uVar12 = local_40;\n            if ((local_48 == (long *)0x0) || (local_40 != 0xffffffff)) {\nLAB_0028d688:\n              if (cVar8 != (char)uVar12) goto LAB_0028d487;\n              pcVar16 = (char *)local_48[2];\n              if (pcVar16 < (char *)local_48[3]) goto LAB_0028d6a3;\n              pcVar3 = *(code **)(*local_48 + 0x50);\n              *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d7c3;\n              (*pcVar3)();\n            }\n            else {\n              pcVar16 = (char *)local_48[2];\n              if ((char *)local_48[3] <= pcVar16) {\n                pcVar3 = *(code **)(*local_48 + 0x48);\n                *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d7e2;\n                uVar12 = (*pcVar3)();\n                if (uVar12 == 0xffffffff) {\n                  local_48 = (long *)0x0;\n                }\n                goto LAB_0028d688;\n              }\n              if (cVar8 != *pcVar16) goto LAB_0028d487;\nLAB_0028d6a3:\n              local_48[2] = (long)(pcVar16 + 1);\n            }\n            sVar19 = sVar19 + 1;\n            local_40 = 0xffffffff;\n          } while (sVar19 != sVar15);\n        }\n        else if (sVar19 != sVar15) goto LAB_0028d487;\n        *local_80 = (undefined4)local_60;\n        goto LAB_0028d48e;\n      }\n    }" if (parenthesized_expression "(param_8 != 0)" ( (binary_expression "param_8 != 0" identifier != number_literal) )) (compound_statement "{\n      lVar17 = 0;\n      uVar20 = 0;\n      do {\n        while (**(char **)(param_7 + lVar17 * 8) == cVar8) {\nLAB_0028d4f6:\n          piVar1[uVar20] = (int)lVar17;\n          uVar20 = uVar20 + 1;\n          lVar17 = lVar17 + 1;\n          if (param_8 == lVar17) goto LAB_0028d508;\n        }\n        local_60 = CONCAT71(local_60._1_7_,cVar8);\n        pcVar3 = *(code **)(*plVar13 + 0x10);\n        *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d4d6;\n        cVar9 = (*pcVar3)(plVar13);\n        cVar8 = (char)local_60;\n        if ((char)local_60 == cVar9) goto LAB_0028d4f6;\n        lVar17 = lVar17 + 1;\n      } while (param_8 != lVar17);\nLAB_0028d508:\n      local_60 = 0;\njoined_r0x0028d514:\n      if (1 < uVar20) {\n        uVar18 = 1;\n        pcVar2 = *(char **)(param_7 + (long)*piVar1 * 8);\n        *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d532;\n        uVar14 = strlen(pcVar2);\n        do {\n          pcVar2 = *(char **)(param_7 + (long)piVar1[uVar18] * 8);\n          *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d545;\n          sVar15 = strlen(pcVar2);\n          if (sVar15 < uVar14) {\n            uVar14 = sVar15;\n          }\n          uVar18 = uVar18 + 1;\n        } while (uVar18 < uVar20);\n        if ((ulong)local_48[2] < (ulong)local_48[3]) {\n          local_48[2] = local_48[2] + 1;\n        }\n        else {\n          pcVar3 = *(code **)(*local_48 + 0x50);\n          *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d796;\n          (*pcVar3)();\n        }\n        local_60 = local_60 + 1;\n        local_40 = 0xffffffff;\n        if (uVar14 <= local_60) goto LAB_0028d487;\n        cVar8 = '\x01';\n        if (local_48 != (long *)0x0) {\n          cVar8 = '\0';\n          if ((ulong)local_48[3] <= (ulong)local_48[2]) {\n            pcVar3 = *(code **)(*local_48 + 0x48);\n            *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d7a1;\n            iVar11 = (*pcVar3)();\n            cVar8 = '\0';\n            if (iVar11 == -1) {\n              local_48 = (long *)0x0;\n              cVar8 = '\x01';\n            }\n          }\n        }\n        bVar10 = local_58 != (long *)0x0 && (int)local_50 == -1;\n        cVar9 = (int)local_50 == -1;\n        if ((bVar10) && (cVar9 = '\0', (ulong)local_58[3] <= (ulong)local_58[2])) {\n          local_69 = '\0';\n          pcVar3 = *(code **)(*local_58 + 0x48);\n          local_6a = bVar10;\n          *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d736;\n          iVar11 = (*pcVar3)();\n          cVar9 = local_69;\n          if (iVar11 == -1) {\n            local_58 = (long *)0x0;\n            cVar9 = local_6a;\n          }\n        }\n        if (cVar9 == cVar8) goto LAB_0028d487;\n        uVar14 = 0;\n        do {\n          while( true ) {\n            cVar8 = *(char *)(*(long *)(param_7 + (long)piVar1[uVar14] * 8) + local_60);\n            uVar12 = local_40;\n            if ((local_48 != (long *)0x0) && (local_40 == 0xffffffff)) {\n              if ((byte *)local_48[2] < (byte *)local_48[3]) {\n                uVar12 = (uint)*(byte *)local_48[2];\n              }\n              else {\n                pcVar3 = *(code **)(*local_48 + 0x48);\n                local_69 = cVar8;\n                *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d76a;\n                uVar12 = (*pcVar3)();\n                cVar8 = local_69;\n                if (uVar12 == 0xffffffff) {\n                  local_48 = (long *)0x0;\n                  uVar12 = 0xffffffff;\n                }\n              }\n            }\n            if (cVar8 != (char)uVar12) break;\n            uVar14 = uVar14 + 1;\n            if (uVar20 <= uVar14) goto joined_r0x0028d514;\n          }\n          uVar20 = uVar20 - 1;\n          piVar1[uVar14] = piVar1[uVar20];\n        } while (uVar14 < uVar20);\n        goto joined_r0x0028d514;\n      }\n      if (uVar20 == 1) {\n        if ((ulong)local_48[2] < (ulong)local_48[3]) {\n          local_48[2] = local_48[2] + 1;\n        }\n        else {\n          pcVar3 = *(code **)(*local_48 + 0x50);\n          *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d7fe;\n          (*pcVar3)();\n        }\n        uVar20 = local_60;\n        local_40 = 0xffffffff;\n        pcVar2 = *(char **)(param_7 + (long)*piVar1 * 8);\n        local_60 = CONCAT44(local_60._4_4_,*piVar1);\n        sVar19 = uVar20 + 1;\n        *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d670;\n        sVar15 = strlen(pcVar2);\n        if (sVar19 < sVar15) {\n          do {\n            pplVar7 = local_68;\n            pplVar6 = local_78;\n            *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d6c9;\n            cVar8 = FUN_0028d360(pplVar7,pplVar6);\n            if (cVar8 != '\0') goto LAB_0028d487;\n            cVar8 = pcVar2[sVar19];\n            uVar12 = local_40;\n            if ((local_48 == (long *)0x0) || (local_40 != 0xffffffff)) {\nLAB_0028d688:\n              if (cVar8 != (char)uVar12) goto LAB_0028d487;\n              pcVar16 = (char *)local_48[2];\n              if (pcVar16 < (char *)local_48[3]) goto LAB_0028d6a3;\n              pcVar3 = *(code **)(*local_48 + 0x50);\n              *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d7c3;\n              (*pcVar3)();\n            }\n            else {\n              pcVar16 = (char *)local_48[2];\n              if ((char *)local_48[3] <= pcVar16) {\n                pcVar3 = *(code **)(*local_48 + 0x48);\n                *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d7e2;\n                uVar12 = (*pcVar3)();\n                if (uVar12 == 0xffffffff) {\n                  local_48 = (long *)0x0;\n                }\n                goto LAB_0028d688;\n              }\n              if (cVar8 != *pcVar16) goto LAB_0028d487;\nLAB_0028d6a3:\n              local_48[2] = (long)(pcVar16 + 1);\n            }\n            sVar19 = sVar19 + 1;\n            local_40 = 0xffffffff;\n          } while (sVar19 != sVar15);\n        }\n        else if (sVar19 != sVar15) goto LAB_0028d487;\n        *local_80 = (undefined4)local_60;\n        goto LAB_0028d48e;\n      }\n    }" { (expression_statement "lVar17 = 0;" (assignment_expression "lVar17 = 0" identifier = number_literal) ;) (expression_statement "uVar20 = 0;" (assignment_expression "uVar20 = 0" identifier = number_literal) ;) (do_statement "do {\n        while (**(char **)(param_7 + lVar17 * 8) == cVar8) {\nLAB_0028d4f6:\n          piVar1[uVar20] = (int)lVar17;\n          uVar20 = uVar20 + 1;\n          lVar17 = lVar17 + 1;\n          if (param_8 == lVar17) goto LAB_0028d508;\n        }\n        local_60 = CONCAT71(local_60._1_7_,cVar8);\n        pcVar3 = *(code **)(*plVar13 + 0x10);\n        *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d4d6;\n        cVar9 = (*pcVar3)(plVar13);\n        cVar8 = (char)local_60;\n        if ((char)local_60 == cVar9) goto LAB_0028d4f6;\n        lVar17 = lVar17 + 1;\n      } while (param_8 != lVar17);" do (compound_statement "{\n        while (**(char **)(param_7 + lVar17 * 8) == cVar8) {\nLAB_0028d4f6:\n          piVar1[uVar20] = (int)lVar17;\n          uVar20 = uVar20 + 1;\n          lVar17 = lVar17 + 1;\n          if (param_8 == lVar17) goto LAB_0028d508;\n        }\n        local_60 = CONCAT71(local_60._1_7_,cVar8);\n        pcVar3 = *(code **)(*plVar13 + 0x10);\n        *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d4d6;\n        cVar9 = (*pcVar3)(plVar13);\n        cVar8 = (char)local_60;\n        if ((char)local_60 == cVar9) goto LAB_0028d4f6;\n        lVar17 = lVar17 + 1;\n      }" { (while_statement "while (**(char **)(param_7 + lVar17 * 8) == cVar8) {\nLAB_0028d4f6:\n          piVar1[uVar20] = (int)lVar17;\n          uVar20 = uVar20 + 1;\n          lVar17 = lVar17 + 1;\n          if (param_8 == lVar17) goto LAB_0028d508;\n        }" while (parenthesized_expression "(**(char **)(param_7 + lVar17 * 8) == cVar8)" ( (binary_expression "**(char **)(param_7 + lVar17 * 8) == cVar8" (pointer_expression "**(char **)(param_7 + lVar17 * 8)" * (pointer_expression "*(char **)(param_7 + lVar17 * 8)" * (cast_expression "(char **)(param_7 + lVar17 * 8)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_7 + lVar17 * 8)" ( (binary_expression "param_7 + lVar17 * 8" identifier + (binary_expression "lVar17 * 8" identifier * number_literal)) ))))) == identifier) )) (compound_statement "{\nLAB_0028d4f6:\n          piVar1[uVar20] = (int)lVar17;\n          uVar20 = uVar20 + 1;\n          lVar17 = lVar17 + 1;\n          if (param_8 == lVar17) goto LAB_0028d508;\n        }" { (labeled_statement "LAB_0028d4f6:\n          piVar1[uVar20] = (int)lVar17;" statement_identifier : (expression_statement "piVar1[uVar20] = (int)lVar17;" (assignment_expression "piVar1[uVar20] = (int)lVar17" (subscript_expression "piVar1[uVar20]" identifier [ identifier ]) = (cast_expression "(int)lVar17" ( (type_descriptor "int" primitive_type) ) identifier)) ;)) (expression_statement "uVar20 = uVar20 + 1;" (assignment_expression "uVar20 = uVar20 + 1" identifier = (binary_expression "uVar20 + 1" identifier + number_literal)) ;) (expression_statement "lVar17 = lVar17 + 1;" (assignment_expression "lVar17 = lVar17 + 1" identifier = (binary_expression "lVar17 + 1" identifier + number_literal)) ;) (if_statement "if (param_8 == lVar17) goto LAB_0028d508;" if (parenthesized_expression "(param_8 == lVar17)" ( (binary_expression "param_8 == lVar17" identifier == identifier) )) (goto_statement "goto LAB_0028d508;" goto statement_identifier ;)) })) (expression_statement "local_60 = CONCAT71(local_60._1_7_,cVar8);" (assignment_expression "local_60 = CONCAT71(local_60._1_7_,cVar8)" identifier = (call_expression "CONCAT71(local_60._1_7_,cVar8)" identifier (argument_list "(local_60._1_7_,cVar8)" ( (field_expression "local_60._1_7_" identifier . field_identifier) , identifier )))) ;) (expression_statement "pcVar3 = *(code **)(*plVar13 + 0x10);" (assignment_expression "pcVar3 = *(code **)(*plVar13 + 0x10)" identifier = (pointer_expression "*(code **)(*plVar13 + 0x10)" * (cast_expression "(code **)(*plVar13 + 0x10)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*plVar13 + 0x10)" ( (binary_expression "*plVar13 + 0x10" (pointer_expression "*plVar13" * identifier) + number_literal) ))))) ;) (expression_statement "*(undefined8 *)((long)auStack_90 + lVar4) = 0x28d4d6;" (assignment_expression "*(undefined8 *)((long)auStack_90 + lVar4) = 0x28d4d6" (pointer_expression "*(undefined8 *)((long)auStack_90 + lVar4)" * (cast_expression "(undefined8 *)((long)auStack_90 + lVar4)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)auStack_90 + lVar4)" ( (binary_expression "(long)auStack_90 + lVar4" (cast_expression "(long)auStack_90" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + identifier) )))) = number_literal) ;) (expression_statement "cVar9 = (*pcVar3)(plVar13);" (assignment_expression "cVar9 = (*pcVar3)(plVar13)" identifier = (call_expression "(*pcVar3)(plVar13)" (parenthesized_expression "(*pcVar3)" ( (pointer_expression "*pcVar3" * identifier) )) (argument_list "(plVar13)" ( identifier )))) ;) (expression_statement "cVar8 = (char)local_60;" (assignment_expression "cVar8 = (char)local_60" identifier = (cast_expression "(char)local_60" ( (type_descriptor "char" primitive_type) ) identifier)) ;) (if_statement "if ((char)local_60 == cVar9) goto LAB_0028d4f6;" if (parenthesized_expression "((char)local_60 == cVar9)" ( (binary_expression "(char)local_60 == cVar9" (cast_expression "(char)local_60" ( (type_descriptor "char" primitive_type) ) identifier) == identifier) )) (goto_statement "goto LAB_0028d4f6;" goto statement_identifier ;)) (expression_statement "lVar17 = lVar17 + 1;" (assignment_expression "lVar17 = lVar17 + 1" identifier = (binary_expression "lVar17 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(param_8 != lVar17)" ( (binary_expression "param_8 != lVar17" identifier != identifier) )) ;) (labeled_statement "LAB_0028d508:\n      local_60 = 0;" statement_identifier : (expression_statement "local_60 = 0;" (assignment_expression "local_60 = 0" identifier = number_literal) ;)) (labeled_statement "joined_r0x0028d514:\n      if (1 < uVar20) {\n        uVar18 = 1;\n        pcVar2 = *(char **)(param_7 + (long)*piVar1 * 8);\n        *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d532;\n        uVar14 = strlen(pcVar2);\n        do {\n          pcVar2 = *(char **)(param_7 + (long)piVar1[uVar18] * 8);\n          *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d545;\n          sVar15 = strlen(pcVar2);\n          if (sVar15 < uVar14) {\n            uVar14 = sVar15;\n          }\n          uVar18 = uVar18 + 1;\n        } while (uVar18 < uVar20);\n        if ((ulong)local_48[2] < (ulong)local_48[3]) {\n          local_48[2] = local_48[2] + 1;\n        }\n        else {\n          pcVar3 = *(code **)(*local_48 + 0x50);\n          *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d796;\n          (*pcVar3)();\n        }\n        local_60 = local_60 + 1;\n        local_40 = 0xffffffff;\n        if (uVar14 <= local_60) goto LAB_0028d487;\n        cVar8 = '\x01';\n        if (local_48 != (long *)0x0) {\n          cVar8 = '\0';\n          if ((ulong)local_48[3] <= (ulong)local_48[2]) {\n            pcVar3 = *(code **)(*local_48 + 0x48);\n            *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d7a1;\n            iVar11 = (*pcVar3)();\n            cVar8 = '\0';\n            if (iVar11 == -1) {\n              local_48 = (long *)0x0;\n              cVar8 = '\x01';\n            }\n          }\n        }\n        bVar10 = local_58 != (long *)0x0 && (int)local_50 == -1;\n        cVar9 = (int)local_50 == -1;\n        if ((bVar10) && (cVar9 = '\0', (ulong)local_58[3] <= (ulong)local_58[2])) {\n          local_69 = '\0';\n          pcVar3 = *(code **)(*local_58 + 0x48);\n          local_6a = bVar10;\n          *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d736;\n          iVar11 = (*pcVar3)();\n          cVar9 = local_69;\n          if (iVar11 == -1) {\n            local_58 = (long *)0x0;\n            cVar9 = local_6a;\n          }\n        }\n        if (cVar9 == cVar8) goto LAB_0028d487;\n        uVar14 = 0;\n        do {\n          while( true ) {\n            cVar8 = *(char *)(*(long *)(param_7 + (long)piVar1[uVar14] * 8) + local_60);\n            uVar12 = local_40;\n            if ((local_48 != (long *)0x0) && (local_40 == 0xffffffff)) {\n              if ((byte *)local_48[2] < (byte *)local_48[3]) {\n                uVar12 = (uint)*(byte *)local_48[2];\n              }\n              else {\n                pcVar3 = *(code **)(*local_48 + 0x48);\n                local_69 = cVar8;\n                *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d76a;\n                uVar12 = (*pcVar3)();\n                cVar8 = local_69;\n                if (uVar12 == 0xffffffff) {\n                  local_48 = (long *)0x0;\n                  uVar12 = 0xffffffff;\n                }\n              }\n            }\n            if (cVar8 != (char)uVar12) break;\n            uVar14 = uVar14 + 1;\n            if (uVar20 <= uVar14) goto joined_r0x0028d514;\n          }\n          uVar20 = uVar20 - 1;\n          piVar1[uVar14] = piVar1[uVar20];\n        } while (uVar14 < uVar20);\n        goto joined_r0x0028d514;\n      }" statement_identifier : (if_statement "if (1 < uVar20) {\n        uVar18 = 1;\n        pcVar2 = *(char **)(param_7 + (long)*piVar1 * 8);\n        *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d532;\n        uVar14 = strlen(pcVar2);\n        do {\n          pcVar2 = *(char **)(param_7 + (long)piVar1[uVar18] * 8);\n          *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d545;\n          sVar15 = strlen(pcVar2);\n          if (sVar15 < uVar14) {\n            uVar14 = sVar15;\n          }\n          uVar18 = uVar18 + 1;\n        } while (uVar18 < uVar20);\n        if ((ulong)local_48[2] < (ulong)local_48[3]) {\n          local_48[2] = local_48[2] + 1;\n        }\n        else {\n          pcVar3 = *(code **)(*local_48 + 0x50);\n          *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d796;\n          (*pcVar3)();\n        }\n        local_60 = local_60 + 1;\n        local_40 = 0xffffffff;\n        if (uVar14 <= local_60) goto LAB_0028d487;\n        cVar8 = '\x01';\n        if (local_48 != (long *)0x0) {\n          cVar8 = '\0';\n          if ((ulong)local_48[3] <= (ulong)local_48[2]) {\n            pcVar3 = *(code **)(*local_48 + 0x48);\n            *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d7a1;\n            iVar11 = (*pcVar3)();\n            cVar8 = '\0';\n            if (iVar11 == -1) {\n              local_48 = (long *)0x0;\n              cVar8 = '\x01';\n            }\n          }\n        }\n        bVar10 = local_58 != (long *)0x0 && (int)local_50 == -1;\n        cVar9 = (int)local_50 == -1;\n        if ((bVar10) && (cVar9 = '\0', (ulong)local_58[3] <= (ulong)local_58[2])) {\n          local_69 = '\0';\n          pcVar3 = *(code **)(*local_58 + 0x48);\n          local_6a = bVar10;\n          *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d736;\n          iVar11 = (*pcVar3)();\n          cVar9 = local_69;\n          if (iVar11 == -1) {\n            local_58 = (long *)0x0;\n            cVar9 = local_6a;\n          }\n        }\n        if (cVar9 == cVar8) goto LAB_0028d487;\n        uVar14 = 0;\n        do {\n          while( true ) {\n            cVar8 = *(char *)(*(long *)(param_7 + (long)piVar1[uVar14] * 8) + local_60);\n            uVar12 = local_40;\n            if ((local_48 != (long *)0x0) && (local_40 == 0xffffffff)) {\n              if ((byte *)local_48[2] < (byte *)local_48[3]) {\n                uVar12 = (uint)*(byte *)local_48[2];\n              }\n              else {\n                pcVar3 = *(code **)(*local_48 + 0x48);\n                local_69 = cVar8;\n                *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d76a;\n                uVar12 = (*pcVar3)();\n                cVar8 = local_69;\n                if (uVar12 == 0xffffffff) {\n                  local_48 = (long *)0x0;\n                  uVar12 = 0xffffffff;\n                }\n              }\n            }\n            if (cVar8 != (char)uVar12) break;\n            uVar14 = uVar14 + 1;\n            if (uVar20 <= uVar14) goto joined_r0x0028d514;\n          }\n          uVar20 = uVar20 - 1;\n          piVar1[uVar14] = piVar1[uVar20];\n        } while (uVar14 < uVar20);\n        goto joined_r0x0028d514;\n      }" if (parenthesized_expression "(1 < uVar20)" ( (binary_expression "1 < uVar20" number_literal < identifier) )) (compound_statement "{\n        uVar18 = 1;\n        pcVar2 = *(char **)(param_7 + (long)*piVar1 * 8);\n        *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d532;\n        uVar14 = strlen(pcVar2);\n        do {\n          pcVar2 = *(char **)(param_7 + (long)piVar1[uVar18] * 8);\n          *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d545;\n          sVar15 = strlen(pcVar2);\n          if (sVar15 < uVar14) {\n            uVar14 = sVar15;\n          }\n          uVar18 = uVar18 + 1;\n        } while (uVar18 < uVar20);\n        if ((ulong)local_48[2] < (ulong)local_48[3]) {\n          local_48[2] = local_48[2] + 1;\n        }\n        else {\n          pcVar3 = *(code **)(*local_48 + 0x50);\n          *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d796;\n          (*pcVar3)();\n        }\n        local_60 = local_60 + 1;\n        local_40 = 0xffffffff;\n        if (uVar14 <= local_60) goto LAB_0028d487;\n        cVar8 = '\x01';\n        if (local_48 != (long *)0x0) {\n          cVar8 = '\0';\n          if ((ulong)local_48[3] <= (ulong)local_48[2]) {\n            pcVar3 = *(code **)(*local_48 + 0x48);\n            *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d7a1;\n            iVar11 = (*pcVar3)();\n            cVar8 = '\0';\n            if (iVar11 == -1) {\n              local_48 = (long *)0x0;\n              cVar8 = '\x01';\n            }\n          }\n        }\n        bVar10 = local_58 != (long *)0x0 && (int)local_50 == -1;\n        cVar9 = (int)local_50 == -1;\n        if ((bVar10) && (cVar9 = '\0', (ulong)local_58[3] <= (ulong)local_58[2])) {\n          local_69 = '\0';\n          pcVar3 = *(code **)(*local_58 + 0x48);\n          local_6a = bVar10;\n          *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d736;\n          iVar11 = (*pcVar3)();\n          cVar9 = local_69;\n          if (iVar11 == -1) {\n            local_58 = (long *)0x0;\n            cVar9 = local_6a;\n          }\n        }\n        if (cVar9 == cVar8) goto LAB_0028d487;\n        uVar14 = 0;\n        do {\n          while( true ) {\n            cVar8 = *(char *)(*(long *)(param_7 + (long)piVar1[uVar14] * 8) + local_60);\n            uVar12 = local_40;\n            if ((local_48 != (long *)0x0) && (local_40 == 0xffffffff)) {\n              if ((byte *)local_48[2] < (byte *)local_48[3]) {\n                uVar12 = (uint)*(byte *)local_48[2];\n              }\n              else {\n                pcVar3 = *(code **)(*local_48 + 0x48);\n                local_69 = cVar8;\n                *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d76a;\n                uVar12 = (*pcVar3)();\n                cVar8 = local_69;\n                if (uVar12 == 0xffffffff) {\n                  local_48 = (long *)0x0;\n                  uVar12 = 0xffffffff;\n                }\n              }\n            }\n            if (cVar8 != (char)uVar12) break;\n            uVar14 = uVar14 + 1;\n            if (uVar20 <= uVar14) goto joined_r0x0028d514;\n          }\n          uVar20 = uVar20 - 1;\n          piVar1[uVar14] = piVar1[uVar20];\n        } while (uVar14 < uVar20);\n        goto joined_r0x0028d514;\n      }" { (expression_statement "uVar18 = 1;" (assignment_expression "uVar18 = 1" identifier = number_literal) ;) (expression_statement "pcVar2 = *(char **)(param_7 + (long)*piVar1 * 8);" (assignment_expression "pcVar2 = *(char **)(param_7 + (long)*piVar1 * 8)" identifier = (pointer_expression "*(char **)(param_7 + (long)*piVar1 * 8)" * (cast_expression "(char **)(param_7 + (long)*piVar1 * 8)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_7 + (long)*piVar1 * 8)" ( (binary_expression "param_7 + (long)*piVar1 * 8" identifier + (binary_expression "(long)*piVar1 * 8" (cast_expression "(long)*piVar1" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (pointer_expression "*piVar1" * identifier)) * number_literal)) ))))) ;) (expression_statement "*(undefined8 *)((long)auStack_90 + lVar4) = 0x28d532;" (assignment_expression "*(undefined8 *)((long)auStack_90 + lVar4) = 0x28d532" (pointer_expression "*(undefined8 *)((long)auStack_90 + lVar4)" * (cast_expression "(undefined8 *)((long)auStack_90 + lVar4)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)auStack_90 + lVar4)" ( (binary_expression "(long)auStack_90 + lVar4" (cast_expression "(long)auStack_90" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + identifier) )))) = number_literal) ;) (expression_statement "uVar14 = strlen(pcVar2);" (assignment_expression "uVar14 = strlen(pcVar2)" identifier = (call_expression "strlen(pcVar2)" identifier (argument_list "(pcVar2)" ( identifier )))) ;) (do_statement "do {\n          pcVar2 = *(char **)(param_7 + (long)piVar1[uVar18] * 8);\n          *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d545;\n          sVar15 = strlen(pcVar2);\n          if (sVar15 < uVar14) {\n            uVar14 = sVar15;\n          }\n          uVar18 = uVar18 + 1;\n        } while (uVar18 < uVar20);" do (compound_statement "{\n          pcVar2 = *(char **)(param_7 + (long)piVar1[uVar18] * 8);\n          *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d545;\n          sVar15 = strlen(pcVar2);\n          if (sVar15 < uVar14) {\n            uVar14 = sVar15;\n          }\n          uVar18 = uVar18 + 1;\n        }" { (expression_statement "pcVar2 = *(char **)(param_7 + (long)piVar1[uVar18] * 8);" (assignment_expression "pcVar2 = *(char **)(param_7 + (long)piVar1[uVar18] * 8)" identifier = (pointer_expression "*(char **)(param_7 + (long)piVar1[uVar18] * 8)" * (cast_expression "(char **)(param_7 + (long)piVar1[uVar18] * 8)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_7 + (long)piVar1[uVar18] * 8)" ( (binary_expression "param_7 + (long)piVar1[uVar18] * 8" identifier + (binary_expression "(long)piVar1[uVar18] * 8" (cast_expression "(long)piVar1[uVar18]" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (subscript_expression "piVar1[uVar18]" identifier [ identifier ])) * number_literal)) ))))) ;) (expression_statement "*(undefined8 *)((long)auStack_90 + lVar4) = 0x28d545;" (assignment_expression "*(undefined8 *)((long)auStack_90 + lVar4) = 0x28d545" (pointer_expression "*(undefined8 *)((long)auStack_90 + lVar4)" * (cast_expression "(undefined8 *)((long)auStack_90 + lVar4)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)auStack_90 + lVar4)" ( (binary_expression "(long)auStack_90 + lVar4" (cast_expression "(long)auStack_90" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + identifier) )))) = number_literal) ;) (expression_statement "sVar15 = strlen(pcVar2);" (assignment_expression "sVar15 = strlen(pcVar2)" identifier = (call_expression "strlen(pcVar2)" identifier (argument_list "(pcVar2)" ( identifier )))) ;) (if_statement "if (sVar15 < uVar14) {\n            uVar14 = sVar15;\n          }" if (parenthesized_expression "(sVar15 < uVar14)" ( (binary_expression "sVar15 < uVar14" identifier < identifier) )) (compound_statement "{\n            uVar14 = sVar15;\n          }" { (expression_statement "uVar14 = sVar15;" (assignment_expression "uVar14 = sVar15" identifier = identifier) ;) })) (expression_statement "uVar18 = uVar18 + 1;" (assignment_expression "uVar18 = uVar18 + 1" identifier = (binary_expression "uVar18 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar18 < uVar20)" ( (binary_expression "uVar18 < uVar20" identifier < identifier) )) ;) (if_statement "if ((ulong)local_48[2] < (ulong)local_48[3]) {\n          local_48[2] = local_48[2] + 1;\n        }\n        else {\n          pcVar3 = *(code **)(*local_48 + 0x50);\n          *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d796;\n          (*pcVar3)();\n        }" if (parenthesized_expression "((ulong)local_48[2] < (ulong)local_48[3])" ( (binary_expression "(ulong)local_48[2] < (ulong)local_48[3]" (cast_expression "(ulong)local_48[2]" ( (type_descriptor "ulong" type_identifier) ) (subscript_expression "local_48[2]" identifier [ number_literal ])) < (cast_expression "(ulong)local_48[3]" ( (type_descriptor "ulong" type_identifier) ) (subscript_expression "local_48[3]" identifier [ number_literal ]))) )) (compound_statement "{\n          local_48[2] = local_48[2] + 1;\n        }" { (expression_statement "local_48[2] = local_48[2] + 1;" (assignment_expression "local_48[2] = local_48[2] + 1" (subscript_expression "local_48[2]" identifier [ number_literal ]) = (binary_expression "local_48[2] + 1" (subscript_expression "local_48[2]" identifier [ number_literal ]) + number_literal)) ;) }) (else_clause "else {\n          pcVar3 = *(code **)(*local_48 + 0x50);\n          *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d796;\n          (*pcVar3)();\n        }" else (compound_statement "{\n          pcVar3 = *(code **)(*local_48 + 0x50);\n          *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d796;\n          (*pcVar3)();\n        }" { (expression_statement "pcVar3 = *(code **)(*local_48 + 0x50);" (assignment_expression "pcVar3 = *(code **)(*local_48 + 0x50)" identifier = (pointer_expression "*(code **)(*local_48 + 0x50)" * (cast_expression "(code **)(*local_48 + 0x50)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*local_48 + 0x50)" ( (binary_expression "*local_48 + 0x50" (pointer_expression "*local_48" * identifier) + number_literal) ))))) ;) (expression_statement "*(undefined8 *)((long)auStack_90 + lVar4) = 0x28d796;" (assignment_expression "*(undefined8 *)((long)auStack_90 + lVar4) = 0x28d796" (pointer_expression "*(undefined8 *)((long)auStack_90 + lVar4)" * (cast_expression "(undefined8 *)((long)auStack_90 + lVar4)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)auStack_90 + lVar4)" ( (binary_expression "(long)auStack_90 + lVar4" (cast_expression "(long)auStack_90" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + identifier) )))) = number_literal) ;) (expression_statement "(*pcVar3)();" (call_expression "(*pcVar3)()" (parenthesized_expression "(*pcVar3)" ( (pointer_expression "*pcVar3" * identifier) )) (argument_list "()" ( ))) ;) }))) (expression_statement "local_60 = local_60 + 1;" (assignment_expression "local_60 = local_60 + 1" identifier = (binary_expression "local_60 + 1" identifier + number_literal)) ;) (expression_statement "local_40 = 0xffffffff;" (assignment_expression "local_40 = 0xffffffff" identifier = number_literal) ;) (if_statement "if (uVar14 <= local_60) goto LAB_0028d487;" if (parenthesized_expression "(uVar14 <= local_60)" ( (binary_expression "uVar14 <= local_60" identifier <= identifier) )) (goto_statement "goto LAB_0028d487;" goto statement_identifier ;)) (expression_statement "cVar8 = '\x01';" (assignment_expression "cVar8 = '\x01'" identifier = (char_literal "'\x01'" ' escape_sequence ')) ;) (if_statement "if (local_48 != (long *)0x0) {\n          cVar8 = '\0';\n          if ((ulong)local_48[3] <= (ulong)local_48[2]) {\n            pcVar3 = *(code **)(*local_48 + 0x48);\n            *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d7a1;\n            iVar11 = (*pcVar3)();\n            cVar8 = '\0';\n            if (iVar11 == -1) {\n              local_48 = (long *)0x0;\n              cVar8 = '\x01';\n            }\n          }\n        }" if (parenthesized_expression "(local_48 != (long *)0x0)" ( (binary_expression "local_48 != (long *)0x0" identifier != (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          cVar8 = '\0';\n          if ((ulong)local_48[3] <= (ulong)local_48[2]) {\n            pcVar3 = *(code **)(*local_48 + 0x48);\n            *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d7a1;\n            iVar11 = (*pcVar3)();\n            cVar8 = '\0';\n            if (iVar11 == -1) {\n              local_48 = (long *)0x0;\n              cVar8 = '\x01';\n            }\n          }\n        }" { (expression_statement "cVar8 = '\0';" (assignment_expression "cVar8 = '\0'" identifier = (char_literal "'\0'" ' escape_sequence ')) ;) (if_statement "if ((ulong)local_48[3] <= (ulong)local_48[2]) {\n            pcVar3 = *(code **)(*local_48 + 0x48);\n            *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d7a1;\n            iVar11 = (*pcVar3)();\n            cVar8 = '\0';\n            if (iVar11 == -1) {\n              local_48 = (long *)0x0;\n              cVar8 = '\x01';\n            }\n          }" if (parenthesized_expression "((ulong)local_48[3] <= (ulong)local_48[2])" ( (binary_expression "(ulong)local_48[3] <= (ulong)local_48[2]" (cast_expression "(ulong)local_48[3]" ( (type_descriptor "ulong" type_identifier) ) (subscript_expression "local_48[3]" identifier [ number_literal ])) <= (cast_expression "(ulong)local_48[2]" ( (type_descriptor "ulong" type_identifier) ) (subscript_expression "local_48[2]" identifier [ number_literal ]))) )) (compound_statement "{\n            pcVar3 = *(code **)(*local_48 + 0x48);\n            *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d7a1;\n            iVar11 = (*pcVar3)();\n            cVar8 = '\0';\n            if (iVar11 == -1) {\n              local_48 = (long *)0x0;\n              cVar8 = '\x01';\n            }\n          }" { (expression_statement "pcVar3 = *(code **)(*local_48 + 0x48);" (assignment_expression "pcVar3 = *(code **)(*local_48 + 0x48)" identifier = (pointer_expression "*(code **)(*local_48 + 0x48)" * (cast_expression "(code **)(*local_48 + 0x48)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*local_48 + 0x48)" ( (binary_expression "*local_48 + 0x48" (pointer_expression "*local_48" * identifier) + number_literal) ))))) ;) (expression_statement "*(undefined8 *)((long)auStack_90 + lVar4) = 0x28d7a1;" (assignment_expression "*(undefined8 *)((long)auStack_90 + lVar4) = 0x28d7a1" (pointer_expression "*(undefined8 *)((long)auStack_90 + lVar4)" * (cast_expression "(undefined8 *)((long)auStack_90 + lVar4)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)auStack_90 + lVar4)" ( (binary_expression "(long)auStack_90 + lVar4" (cast_expression "(long)auStack_90" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + identifier) )))) = number_literal) ;) (expression_statement "iVar11 = (*pcVar3)();" (assignment_expression "iVar11 = (*pcVar3)()" identifier = (call_expression "(*pcVar3)()" (parenthesized_expression "(*pcVar3)" ( (pointer_expression "*pcVar3" * identifier) )) (argument_list "()" ( )))) ;) (expression_statement "cVar8 = '\0';" (assignment_expression "cVar8 = '\0'" identifier = (char_literal "'\0'" ' escape_sequence ')) ;) (if_statement "if (iVar11 == -1) {\n              local_48 = (long *)0x0;\n              cVar8 = '\x01';\n            }" if (parenthesized_expression "(iVar11 == -1)" ( (binary_expression "iVar11 == -1" identifier == number_literal) )) (compound_statement "{\n              local_48 = (long *)0x0;\n              cVar8 = '\x01';\n            }" { (expression_statement "local_48 = (long *)0x0;" (assignment_expression "local_48 = (long *)0x0" identifier = (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "cVar8 = '\x01';" (assignment_expression "cVar8 = '\x01'" identifier = (char_literal "'\x01'" ' escape_sequence ')) ;) })) })) })) (expression_statement "bVar10 = local_58 != (long *)0x0 && (int)local_50 == -1;" (assignment_expression "bVar10 = local_58 != (long *)0x0 && (int)local_50 == -1" identifier = (binary_expression "local_58 != (long *)0x0 && (int)local_50 == -1" (binary_expression "local_58 != (long *)0x0" identifier != (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) && (binary_expression "(int)local_50 == -1" (cast_expression "(int)local_50" ( (type_descriptor "int" primitive_type) ) identifier) == number_literal))) ;) (expression_statement "cVar9 = (int)local_50 == -1;" (assignment_expression "cVar9 = (int)local_50 == -1" identifier = (binary_expression "(int)local_50 == -1" (cast_expression "(int)local_50" ( (type_descriptor "int" primitive_type) ) identifier) == number_literal)) ;) (if_statement "if ((bVar10) && (cVar9 = '\0', (ulong)local_58[3] <= (ulong)local_58[2])) {\n          local_69 = '\0';\n          pcVar3 = *(code **)(*local_58 + 0x48);\n          local_6a = bVar10;\n          *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d736;\n          iVar11 = (*pcVar3)();\n          cVar9 = local_69;\n          if (iVar11 == -1) {\n            local_58 = (long *)0x0;\n            cVar9 = local_6a;\n          }\n        }" if (parenthesized_expression "((bVar10) && (cVar9 = '\0', (ulong)local_58[3] <= (ulong)local_58[2]))" ( (binary_expression "(bVar10) && (cVar9 = '\0', (ulong)local_58[3] <= (ulong)local_58[2])" (parenthesized_expression "(bVar10)" ( identifier )) && (parenthesized_expression "(cVar9 = '\0', (ulong)local_58[3] <= (ulong)local_58[2])" ( (comma_expression "cVar9 = '\0', (ulong)local_58[3] <= (ulong)local_58[2]" (assignment_expression "cVar9 = '\0'" identifier = (char_literal "'\0'" ' escape_sequence ')) , (binary_expression "(ulong)local_58[3] <= (ulong)local_58[2]" (cast_expression "(ulong)local_58[3]" ( (type_descriptor "ulong" type_identifier) ) (subscript_expression "local_58[3]" identifier [ number_literal ])) <= (cast_expression "(ulong)local_58[2]" ( (type_descriptor "ulong" type_identifier) ) (subscript_expression "local_58[2]" identifier [ number_literal ])))) ))) )) (compound_statement "{\n          local_69 = '\0';\n          pcVar3 = *(code **)(*local_58 + 0x48);\n          local_6a = bVar10;\n          *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d736;\n          iVar11 = (*pcVar3)();\n          cVar9 = local_69;\n          if (iVar11 == -1) {\n            local_58 = (long *)0x0;\n            cVar9 = local_6a;\n          }\n        }" { (expression_statement "local_69 = '\0';" (assignment_expression "local_69 = '\0'" identifier = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "pcVar3 = *(code **)(*local_58 + 0x48);" (assignment_expression "pcVar3 = *(code **)(*local_58 + 0x48)" identifier = (pointer_expression "*(code **)(*local_58 + 0x48)" * (cast_expression "(code **)(*local_58 + 0x48)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*local_58 + 0x48)" ( (binary_expression "*local_58 + 0x48" (pointer_expression "*local_58" * identifier) + number_literal) ))))) ;) (expression_statement "local_6a = bVar10;" (assignment_expression "local_6a = bVar10" identifier = identifier) ;) (expression_statement "*(undefined8 *)((long)auStack_90 + lVar4) = 0x28d736;" (assignment_expression "*(undefined8 *)((long)auStack_90 + lVar4) = 0x28d736" (pointer_expression "*(undefined8 *)((long)auStack_90 + lVar4)" * (cast_expression "(undefined8 *)((long)auStack_90 + lVar4)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)auStack_90 + lVar4)" ( (binary_expression "(long)auStack_90 + lVar4" (cast_expression "(long)auStack_90" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + identifier) )))) = number_literal) ;) (expression_statement "iVar11 = (*pcVar3)();" (assignment_expression "iVar11 = (*pcVar3)()" identifier = (call_expression "(*pcVar3)()" (parenthesized_expression "(*pcVar3)" ( (pointer_expression "*pcVar3" * identifier) )) (argument_list "()" ( )))) ;) (expression_statement "cVar9 = local_69;" (assignment_expression "cVar9 = local_69" identifier = identifier) ;) (if_statement "if (iVar11 == -1) {\n            local_58 = (long *)0x0;\n            cVar9 = local_6a;\n          }" if (parenthesized_expression "(iVar11 == -1)" ( (binary_expression "iVar11 == -1" identifier == number_literal) )) (compound_statement "{\n            local_58 = (long *)0x0;\n            cVar9 = local_6a;\n          }" { (expression_statement "local_58 = (long *)0x0;" (assignment_expression "local_58 = (long *)0x0" identifier = (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "cVar9 = local_6a;" (assignment_expression "cVar9 = local_6a" identifier = identifier) ;) })) })) (if_statement "if (cVar9 == cVar8) goto LAB_0028d487;" if (parenthesized_expression "(cVar9 == cVar8)" ( (binary_expression "cVar9 == cVar8" identifier == identifier) )) (goto_statement "goto LAB_0028d487;" goto statement_identifier ;)) (expression_statement "uVar14 = 0;" (assignment_expression "uVar14 = 0" identifier = number_literal) ;) (do_statement "do {\n          while( true ) {\n            cVar8 = *(char *)(*(long *)(param_7 + (long)piVar1[uVar14] * 8) + local_60);\n            uVar12 = local_40;\n            if ((local_48 != (long *)0x0) && (local_40 == 0xffffffff)) {\n              if ((byte *)local_48[2] < (byte *)local_48[3]) {\n                uVar12 = (uint)*(byte *)local_48[2];\n              }\n              else {\n                pcVar3 = *(code **)(*local_48 + 0x48);\n                local_69 = cVar8;\n                *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d76a;\n                uVar12 = (*pcVar3)();\n                cVar8 = local_69;\n                if (uVar12 == 0xffffffff) {\n                  local_48 = (long *)0x0;\n                  uVar12 = 0xffffffff;\n                }\n              }\n            }\n            if (cVar8 != (char)uVar12) break;\n            uVar14 = uVar14 + 1;\n            if (uVar20 <= uVar14) goto joined_r0x0028d514;\n          }\n          uVar20 = uVar20 - 1;\n          piVar1[uVar14] = piVar1[uVar20];\n        } while (uVar14 < uVar20);" do (compound_statement "{\n          while( true ) {\n            cVar8 = *(char *)(*(long *)(param_7 + (long)piVar1[uVar14] * 8) + local_60);\n            uVar12 = local_40;\n            if ((local_48 != (long *)0x0) && (local_40 == 0xffffffff)) {\n              if ((byte *)local_48[2] < (byte *)local_48[3]) {\n                uVar12 = (uint)*(byte *)local_48[2];\n              }\n              else {\n                pcVar3 = *(code **)(*local_48 + 0x48);\n                local_69 = cVar8;\n                *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d76a;\n                uVar12 = (*pcVar3)();\n                cVar8 = local_69;\n                if (uVar12 == 0xffffffff) {\n                  local_48 = (long *)0x0;\n                  uVar12 = 0xffffffff;\n                }\n              }\n            }\n            if (cVar8 != (char)uVar12) break;\n            uVar14 = uVar14 + 1;\n            if (uVar20 <= uVar14) goto joined_r0x0028d514;\n          }\n          uVar20 = uVar20 - 1;\n          piVar1[uVar14] = piVar1[uVar20];\n        }" { (while_statement "while( true ) {\n            cVar8 = *(char *)(*(long *)(param_7 + (long)piVar1[uVar14] * 8) + local_60);\n            uVar12 = local_40;\n            if ((local_48 != (long *)0x0) && (local_40 == 0xffffffff)) {\n              if ((byte *)local_48[2] < (byte *)local_48[3]) {\n                uVar12 = (uint)*(byte *)local_48[2];\n              }\n              else {\n                pcVar3 = *(code **)(*local_48 + 0x48);\n                local_69 = cVar8;\n                *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d76a;\n                uVar12 = (*pcVar3)();\n                cVar8 = local_69;\n                if (uVar12 == 0xffffffff) {\n                  local_48 = (long *)0x0;\n                  uVar12 = 0xffffffff;\n                }\n              }\n            }\n            if (cVar8 != (char)uVar12) break;\n            uVar14 = uVar14 + 1;\n            if (uVar20 <= uVar14) goto joined_r0x0028d514;\n          }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n            cVar8 = *(char *)(*(long *)(param_7 + (long)piVar1[uVar14] * 8) + local_60);\n            uVar12 = local_40;\n            if ((local_48 != (long *)0x0) && (local_40 == 0xffffffff)) {\n              if ((byte *)local_48[2] < (byte *)local_48[3]) {\n                uVar12 = (uint)*(byte *)local_48[2];\n              }\n              else {\n                pcVar3 = *(code **)(*local_48 + 0x48);\n                local_69 = cVar8;\n                *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d76a;\n                uVar12 = (*pcVar3)();\n                cVar8 = local_69;\n                if (uVar12 == 0xffffffff) {\n                  local_48 = (long *)0x0;\n                  uVar12 = 0xffffffff;\n                }\n              }\n            }\n            if (cVar8 != (char)uVar12) break;\n            uVar14 = uVar14 + 1;\n            if (uVar20 <= uVar14) goto joined_r0x0028d514;\n          }" { (expression_statement "cVar8 = *(char *)(*(long *)(param_7 + (long)piVar1[uVar14] * 8) + local_60);" (assignment_expression "cVar8 = *(char *)(*(long *)(param_7 + (long)piVar1[uVar14] * 8) + local_60)" identifier = (pointer_expression "*(char *)(*(long *)(param_7 + (long)piVar1[uVar14] * 8) + local_60)" * (cast_expression "(char *)(*(long *)(param_7 + (long)piVar1[uVar14] * 8) + local_60)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(param_7 + (long)piVar1[uVar14] * 8) + local_60)" ( (binary_expression "*(long *)(param_7 + (long)piVar1[uVar14] * 8) + local_60" (pointer_expression "*(long *)(param_7 + (long)piVar1[uVar14] * 8)" * (cast_expression "(long *)(param_7 + (long)piVar1[uVar14] * 8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_7 + (long)piVar1[uVar14] * 8)" ( (binary_expression "param_7 + (long)piVar1[uVar14] * 8" identifier + (binary_expression "(long)piVar1[uVar14] * 8" (cast_expression "(long)piVar1[uVar14]" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (subscript_expression "piVar1[uVar14]" identifier [ identifier ])) * number_literal)) )))) + identifier) ))))) ;) (expression_statement "uVar12 = local_40;" (assignment_expression "uVar12 = local_40" identifier = identifier) ;) (if_statement "if ((local_48 != (long *)0x0) && (local_40 == 0xffffffff)) {\n              if ((byte *)local_48[2] < (byte *)local_48[3]) {\n                uVar12 = (uint)*(byte *)local_48[2];\n              }\n              else {\n                pcVar3 = *(code **)(*local_48 + 0x48);\n                local_69 = cVar8;\n                *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d76a;\n                uVar12 = (*pcVar3)();\n                cVar8 = local_69;\n                if (uVar12 == 0xffffffff) {\n                  local_48 = (long *)0x0;\n                  uVar12 = 0xffffffff;\n                }\n              }\n            }" if (parenthesized_expression "((local_48 != (long *)0x0) && (local_40 == 0xffffffff))" ( (binary_expression "(local_48 != (long *)0x0) && (local_40 == 0xffffffff)" (parenthesized_expression "(local_48 != (long *)0x0)" ( (binary_expression "local_48 != (long *)0x0" identifier != (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) )) && (parenthesized_expression "(local_40 == 0xffffffff)" ( (binary_expression "local_40 == 0xffffffff" identifier == number_literal) ))) )) (compound_statement "{\n              if ((byte *)local_48[2] < (byte *)local_48[3]) {\n                uVar12 = (uint)*(byte *)local_48[2];\n              }\n              else {\n                pcVar3 = *(code **)(*local_48 + 0x48);\n                local_69 = cVar8;\n                *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d76a;\n                uVar12 = (*pcVar3)();\n                cVar8 = local_69;\n                if (uVar12 == 0xffffffff) {\n                  local_48 = (long *)0x0;\n                  uVar12 = 0xffffffff;\n                }\n              }\n            }" { (if_statement "if ((byte *)local_48[2] < (byte *)local_48[3]) {\n                uVar12 = (uint)*(byte *)local_48[2];\n              }\n              else {\n                pcVar3 = *(code **)(*local_48 + 0x48);\n                local_69 = cVar8;\n                *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d76a;\n                uVar12 = (*pcVar3)();\n                cVar8 = local_69;\n                if (uVar12 == 0xffffffff) {\n                  local_48 = (long *)0x0;\n                  uVar12 = 0xffffffff;\n                }\n              }" if (parenthesized_expression "((byte *)local_48[2] < (byte *)local_48[3])" ( (binary_expression "(byte *)local_48[2] < (byte *)local_48[3]" (cast_expression "(byte *)local_48[2]" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "local_48[2]" identifier [ number_literal ])) < (cast_expression "(byte *)local_48[3]" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "local_48[3]" identifier [ number_literal ]))) )) (compound_statement "{\n                uVar12 = (uint)*(byte *)local_48[2];\n              }" { (expression_statement "uVar12 = (uint)*(byte *)local_48[2];" (assignment_expression "uVar12 = (uint)*(byte *)local_48[2]" identifier = (binary_expression "(uint)*(byte *)local_48[2]" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(byte *)local_48[2]" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "local_48[2]" identifier [ number_literal ])))) ;) }) (else_clause "else {\n                pcVar3 = *(code **)(*local_48 + 0x48);\n                local_69 = cVar8;\n                *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d76a;\n                uVar12 = (*pcVar3)();\n                cVar8 = local_69;\n                if (uVar12 == 0xffffffff) {\n                  local_48 = (long *)0x0;\n                  uVar12 = 0xffffffff;\n                }\n              }" else (compound_statement "{\n                pcVar3 = *(code **)(*local_48 + 0x48);\n                local_69 = cVar8;\n                *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d76a;\n                uVar12 = (*pcVar3)();\n                cVar8 = local_69;\n                if (uVar12 == 0xffffffff) {\n                  local_48 = (long *)0x0;\n                  uVar12 = 0xffffffff;\n                }\n              }" { (expression_statement "pcVar3 = *(code **)(*local_48 + 0x48);" (assignment_expression "pcVar3 = *(code **)(*local_48 + 0x48)" identifier = (pointer_expression "*(code **)(*local_48 + 0x48)" * (cast_expression "(code **)(*local_48 + 0x48)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*local_48 + 0x48)" ( (binary_expression "*local_48 + 0x48" (pointer_expression "*local_48" * identifier) + number_literal) ))))) ;) (expression_statement "local_69 = cVar8;" (assignment_expression "local_69 = cVar8" identifier = identifier) ;) (expression_statement "*(undefined8 *)((long)auStack_90 + lVar4) = 0x28d76a;" (assignment_expression "*(undefined8 *)((long)auStack_90 + lVar4) = 0x28d76a" (pointer_expression "*(undefined8 *)((long)auStack_90 + lVar4)" * (cast_expression "(undefined8 *)((long)auStack_90 + lVar4)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)auStack_90 + lVar4)" ( (binary_expression "(long)auStack_90 + lVar4" (cast_expression "(long)auStack_90" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + identifier) )))) = number_literal) ;) (expression_statement "uVar12 = (*pcVar3)();" (assignment_expression "uVar12 = (*pcVar3)()" identifier = (call_expression "(*pcVar3)()" (parenthesized_expression "(*pcVar3)" ( (pointer_expression "*pcVar3" * identifier) )) (argument_list "()" ( )))) ;) (expression_statement "cVar8 = local_69;" (assignment_expression "cVar8 = local_69" identifier = identifier) ;) (if_statement "if (uVar12 == 0xffffffff) {\n                  local_48 = (long *)0x0;\n                  uVar12 = 0xffffffff;\n                }" if (parenthesized_expression "(uVar12 == 0xffffffff)" ( (binary_expression "uVar12 == 0xffffffff" identifier == number_literal) )) (compound_statement "{\n                  local_48 = (long *)0x0;\n                  uVar12 = 0xffffffff;\n                }" { (expression_statement "local_48 = (long *)0x0;" (assignment_expression "local_48 = (long *)0x0" identifier = (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "uVar12 = 0xffffffff;" (assignment_expression "uVar12 = 0xffffffff" identifier = number_literal) ;) })) }))) })) (if_statement "if (cVar8 != (char)uVar12) break;" if (parenthesized_expression "(cVar8 != (char)uVar12)" ( (binary_expression "cVar8 != (char)uVar12" identifier != (cast_expression "(char)uVar12" ( (type_descriptor "char" primitive_type) ) identifier)) )) (break_statement "break;" break ;)) (expression_statement "uVar14 = uVar14 + 1;" (assignment_expression "uVar14 = uVar14 + 1" identifier = (binary_expression "uVar14 + 1" identifier + number_literal)) ;) (if_statement "if (uVar20 <= uVar14) goto joined_r0x0028d514;" if (parenthesized_expression "(uVar20 <= uVar14)" ( (binary_expression "uVar20 <= uVar14" identifier <= identifier) )) (goto_statement "goto joined_r0x0028d514;" goto statement_identifier ;)) })) (expression_statement "uVar20 = uVar20 - 1;" (assignment_expression "uVar20 = uVar20 - 1" identifier = (binary_expression "uVar20 - 1" identifier - number_literal)) ;) (expression_statement "piVar1[uVar14] = piVar1[uVar20];" (assignment_expression "piVar1[uVar14] = piVar1[uVar20]" (subscript_expression "piVar1[uVar14]" identifier [ identifier ]) = (subscript_expression "piVar1[uVar20]" identifier [ identifier ])) ;) }) while (parenthesized_expression "(uVar14 < uVar20)" ( (binary_expression "uVar14 < uVar20" identifier < identifier) )) ;) (goto_statement "goto joined_r0x0028d514;" goto statement_identifier ;) }))) (if_statement "if (uVar20 == 1) {\n        if ((ulong)local_48[2] < (ulong)local_48[3]) {\n          local_48[2] = local_48[2] + 1;\n        }\n        else {\n          pcVar3 = *(code **)(*local_48 + 0x50);\n          *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d7fe;\n          (*pcVar3)();\n        }\n        uVar20 = local_60;\n        local_40 = 0xffffffff;\n        pcVar2 = *(char **)(param_7 + (long)*piVar1 * 8);\n        local_60 = CONCAT44(local_60._4_4_,*piVar1);\n        sVar19 = uVar20 + 1;\n        *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d670;\n        sVar15 = strlen(pcVar2);\n        if (sVar19 < sVar15) {\n          do {\n            pplVar7 = local_68;\n            pplVar6 = local_78;\n            *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d6c9;\n            cVar8 = FUN_0028d360(pplVar7,pplVar6);\n            if (cVar8 != '\0') goto LAB_0028d487;\n            cVar8 = pcVar2[sVar19];\n            uVar12 = local_40;\n            if ((local_48 == (long *)0x0) || (local_40 != 0xffffffff)) {\nLAB_0028d688:\n              if (cVar8 != (char)uVar12) goto LAB_0028d487;\n              pcVar16 = (char *)local_48[2];\n              if (pcVar16 < (char *)local_48[3]) goto LAB_0028d6a3;\n              pcVar3 = *(code **)(*local_48 + 0x50);\n              *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d7c3;\n              (*pcVar3)();\n            }\n            else {\n              pcVar16 = (char *)local_48[2];\n              if ((char *)local_48[3] <= pcVar16) {\n                pcVar3 = *(code **)(*local_48 + 0x48);\n                *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d7e2;\n                uVar12 = (*pcVar3)();\n                if (uVar12 == 0xffffffff) {\n                  local_48 = (long *)0x0;\n                }\n                goto LAB_0028d688;\n              }\n              if (cVar8 != *pcVar16) goto LAB_0028d487;\nLAB_0028d6a3:\n              local_48[2] = (long)(pcVar16 + 1);\n            }\n            sVar19 = sVar19 + 1;\n            local_40 = 0xffffffff;\n          } while (sVar19 != sVar15);\n        }\n        else if (sVar19 != sVar15) goto LAB_0028d487;\n        *local_80 = (undefined4)local_60;\n        goto LAB_0028d48e;\n      }" if (parenthesized_expression "(uVar20 == 1)" ( (binary_expression "uVar20 == 1" identifier == number_literal) )) (compound_statement "{\n        if ((ulong)local_48[2] < (ulong)local_48[3]) {\n          local_48[2] = local_48[2] + 1;\n        }\n        else {\n          pcVar3 = *(code **)(*local_48 + 0x50);\n          *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d7fe;\n          (*pcVar3)();\n        }\n        uVar20 = local_60;\n        local_40 = 0xffffffff;\n        pcVar2 = *(char **)(param_7 + (long)*piVar1 * 8);\n        local_60 = CONCAT44(local_60._4_4_,*piVar1);\n        sVar19 = uVar20 + 1;\n        *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d670;\n        sVar15 = strlen(pcVar2);\n        if (sVar19 < sVar15) {\n          do {\n            pplVar7 = local_68;\n            pplVar6 = local_78;\n            *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d6c9;\n            cVar8 = FUN_0028d360(pplVar7,pplVar6);\n            if (cVar8 != '\0') goto LAB_0028d487;\n            cVar8 = pcVar2[sVar19];\n            uVar12 = local_40;\n            if ((local_48 == (long *)0x0) || (local_40 != 0xffffffff)) {\nLAB_0028d688:\n              if (cVar8 != (char)uVar12) goto LAB_0028d487;\n              pcVar16 = (char *)local_48[2];\n              if (pcVar16 < (char *)local_48[3]) goto LAB_0028d6a3;\n              pcVar3 = *(code **)(*local_48 + 0x50);\n              *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d7c3;\n              (*pcVar3)();\n            }\n            else {\n              pcVar16 = (char *)local_48[2];\n              if ((char *)local_48[3] <= pcVar16) {\n                pcVar3 = *(code **)(*local_48 + 0x48);\n                *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d7e2;\n                uVar12 = (*pcVar3)();\n                if (uVar12 == 0xffffffff) {\n                  local_48 = (long *)0x0;\n                }\n                goto LAB_0028d688;\n              }\n              if (cVar8 != *pcVar16) goto LAB_0028d487;\nLAB_0028d6a3:\n              local_48[2] = (long)(pcVar16 + 1);\n            }\n            sVar19 = sVar19 + 1;\n            local_40 = 0xffffffff;\n          } while (sVar19 != sVar15);\n        }\n        else if (sVar19 != sVar15) goto LAB_0028d487;\n        *local_80 = (undefined4)local_60;\n        goto LAB_0028d48e;\n      }" { (if_statement "if ((ulong)local_48[2] < (ulong)local_48[3]) {\n          local_48[2] = local_48[2] + 1;\n        }\n        else {\n          pcVar3 = *(code **)(*local_48 + 0x50);\n          *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d7fe;\n          (*pcVar3)();\n        }" if (parenthesized_expression "((ulong)local_48[2] < (ulong)local_48[3])" ( (binary_expression "(ulong)local_48[2] < (ulong)local_48[3]" (cast_expression "(ulong)local_48[2]" ( (type_descriptor "ulong" type_identifier) ) (subscript_expression "local_48[2]" identifier [ number_literal ])) < (cast_expression "(ulong)local_48[3]" ( (type_descriptor "ulong" type_identifier) ) (subscript_expression "local_48[3]" identifier [ number_literal ]))) )) (compound_statement "{\n          local_48[2] = local_48[2] + 1;\n        }" { (expression_statement "local_48[2] = local_48[2] + 1;" (assignment_expression "local_48[2] = local_48[2] + 1" (subscript_expression "local_48[2]" identifier [ number_literal ]) = (binary_expression "local_48[2] + 1" (subscript_expression "local_48[2]" identifier [ number_literal ]) + number_literal)) ;) }) (else_clause "else {\n          pcVar3 = *(code **)(*local_48 + 0x50);\n          *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d7fe;\n          (*pcVar3)();\n        }" else (compound_statement "{\n          pcVar3 = *(code **)(*local_48 + 0x50);\n          *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d7fe;\n          (*pcVar3)();\n        }" { (expression_statement "pcVar3 = *(code **)(*local_48 + 0x50);" (assignment_expression "pcVar3 = *(code **)(*local_48 + 0x50)" identifier = (pointer_expression "*(code **)(*local_48 + 0x50)" * (cast_expression "(code **)(*local_48 + 0x50)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*local_48 + 0x50)" ( (binary_expression "*local_48 + 0x50" (pointer_expression "*local_48" * identifier) + number_literal) ))))) ;) (expression_statement "*(undefined8 *)((long)auStack_90 + lVar4) = 0x28d7fe;" (assignment_expression "*(undefined8 *)((long)auStack_90 + lVar4) = 0x28d7fe" (pointer_expression "*(undefined8 *)((long)auStack_90 + lVar4)" * (cast_expression "(undefined8 *)((long)auStack_90 + lVar4)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)auStack_90 + lVar4)" ( (binary_expression "(long)auStack_90 + lVar4" (cast_expression "(long)auStack_90" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + identifier) )))) = number_literal) ;) (expression_statement "(*pcVar3)();" (call_expression "(*pcVar3)()" (parenthesized_expression "(*pcVar3)" ( (pointer_expression "*pcVar3" * identifier) )) (argument_list "()" ( ))) ;) }))) (expression_statement "uVar20 = local_60;" (assignment_expression "uVar20 = local_60" identifier = identifier) ;) (expression_statement "local_40 = 0xffffffff;" (assignment_expression "local_40 = 0xffffffff" identifier = number_literal) ;) (expression_statement "pcVar2 = *(char **)(param_7 + (long)*piVar1 * 8);" (assignment_expression "pcVar2 = *(char **)(param_7 + (long)*piVar1 * 8)" identifier = (pointer_expression "*(char **)(param_7 + (long)*piVar1 * 8)" * (cast_expression "(char **)(param_7 + (long)*piVar1 * 8)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_7 + (long)*piVar1 * 8)" ( (binary_expression "param_7 + (long)*piVar1 * 8" identifier + (binary_expression "(long)*piVar1 * 8" (cast_expression "(long)*piVar1" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (pointer_expression "*piVar1" * identifier)) * number_literal)) ))))) ;) (expression_statement "local_60 = CONCAT44(local_60._4_4_,*piVar1);" (assignment_expression "local_60 = CONCAT44(local_60._4_4_,*piVar1)" identifier = (call_expression "CONCAT44(local_60._4_4_,*piVar1)" identifier (argument_list "(local_60._4_4_,*piVar1)" ( (field_expression "local_60._4_4_" identifier . field_identifier) , (pointer_expression "*piVar1" * identifier) )))) ;) (expression_statement "sVar19 = uVar20 + 1;" (assignment_expression "sVar19 = uVar20 + 1" identifier = (binary_expression "uVar20 + 1" identifier + number_literal)) ;) (expression_statement "*(undefined8 *)((long)auStack_90 + lVar4) = 0x28d670;" (assignment_expression "*(undefined8 *)((long)auStack_90 + lVar4) = 0x28d670" (pointer_expression "*(undefined8 *)((long)auStack_90 + lVar4)" * (cast_expression "(undefined8 *)((long)auStack_90 + lVar4)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)auStack_90 + lVar4)" ( (binary_expression "(long)auStack_90 + lVar4" (cast_expression "(long)auStack_90" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + identifier) )))) = number_literal) ;) (expression_statement "sVar15 = strlen(pcVar2);" (assignment_expression "sVar15 = strlen(pcVar2)" identifier = (call_expression "strlen(pcVar2)" identifier (argument_list "(pcVar2)" ( identifier )))) ;) (if_statement "if (sVar19 < sVar15) {\n          do {\n            pplVar7 = local_68;\n            pplVar6 = local_78;\n            *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d6c9;\n            cVar8 = FUN_0028d360(pplVar7,pplVar6);\n            if (cVar8 != '\0') goto LAB_0028d487;\n            cVar8 = pcVar2[sVar19];\n            uVar12 = local_40;\n            if ((local_48 == (long *)0x0) || (local_40 != 0xffffffff)) {\nLAB_0028d688:\n              if (cVar8 != (char)uVar12) goto LAB_0028d487;\n              pcVar16 = (char *)local_48[2];\n              if (pcVar16 < (char *)local_48[3]) goto LAB_0028d6a3;\n              pcVar3 = *(code **)(*local_48 + 0x50);\n              *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d7c3;\n              (*pcVar3)();\n            }\n            else {\n              pcVar16 = (char *)local_48[2];\n              if ((char *)local_48[3] <= pcVar16) {\n                pcVar3 = *(code **)(*local_48 + 0x48);\n                *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d7e2;\n                uVar12 = (*pcVar3)();\n                if (uVar12 == 0xffffffff) {\n                  local_48 = (long *)0x0;\n                }\n                goto LAB_0028d688;\n              }\n              if (cVar8 != *pcVar16) goto LAB_0028d487;\nLAB_0028d6a3:\n              local_48[2] = (long)(pcVar16 + 1);\n            }\n            sVar19 = sVar19 + 1;\n            local_40 = 0xffffffff;\n          } while (sVar19 != sVar15);\n        }\n        else if (sVar19 != sVar15) goto LAB_0028d487;" if (parenthesized_expression "(sVar19 < sVar15)" ( (binary_expression "sVar19 < sVar15" identifier < identifier) )) (compound_statement "{\n          do {\n            pplVar7 = local_68;\n            pplVar6 = local_78;\n            *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d6c9;\n            cVar8 = FUN_0028d360(pplVar7,pplVar6);\n            if (cVar8 != '\0') goto LAB_0028d487;\n            cVar8 = pcVar2[sVar19];\n            uVar12 = local_40;\n            if ((local_48 == (long *)0x0) || (local_40 != 0xffffffff)) {\nLAB_0028d688:\n              if (cVar8 != (char)uVar12) goto LAB_0028d487;\n              pcVar16 = (char *)local_48[2];\n              if (pcVar16 < (char *)local_48[3]) goto LAB_0028d6a3;\n              pcVar3 = *(code **)(*local_48 + 0x50);\n              *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d7c3;\n              (*pcVar3)();\n            }\n            else {\n              pcVar16 = (char *)local_48[2];\n              if ((char *)local_48[3] <= pcVar16) {\n                pcVar3 = *(code **)(*local_48 + 0x48);\n                *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d7e2;\n                uVar12 = (*pcVar3)();\n                if (uVar12 == 0xffffffff) {\n                  local_48 = (long *)0x0;\n                }\n                goto LAB_0028d688;\n              }\n              if (cVar8 != *pcVar16) goto LAB_0028d487;\nLAB_0028d6a3:\n              local_48[2] = (long)(pcVar16 + 1);\n            }\n            sVar19 = sVar19 + 1;\n            local_40 = 0xffffffff;\n          } while (sVar19 != sVar15);\n        }" { (do_statement "do {\n            pplVar7 = local_68;\n            pplVar6 = local_78;\n            *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d6c9;\n            cVar8 = FUN_0028d360(pplVar7,pplVar6);\n            if (cVar8 != '\0') goto LAB_0028d487;\n            cVar8 = pcVar2[sVar19];\n            uVar12 = local_40;\n            if ((local_48 == (long *)0x0) || (local_40 != 0xffffffff)) {\nLAB_0028d688:\n              if (cVar8 != (char)uVar12) goto LAB_0028d487;\n              pcVar16 = (char *)local_48[2];\n              if (pcVar16 < (char *)local_48[3]) goto LAB_0028d6a3;\n              pcVar3 = *(code **)(*local_48 + 0x50);\n              *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d7c3;\n              (*pcVar3)();\n            }\n            else {\n              pcVar16 = (char *)local_48[2];\n              if ((char *)local_48[3] <= pcVar16) {\n                pcVar3 = *(code **)(*local_48 + 0x48);\n                *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d7e2;\n                uVar12 = (*pcVar3)();\n                if (uVar12 == 0xffffffff) {\n                  local_48 = (long *)0x0;\n                }\n                goto LAB_0028d688;\n              }\n              if (cVar8 != *pcVar16) goto LAB_0028d487;\nLAB_0028d6a3:\n              local_48[2] = (long)(pcVar16 + 1);\n            }\n            sVar19 = sVar19 + 1;\n            local_40 = 0xffffffff;\n          } while (sVar19 != sVar15);" do (compound_statement "{\n            pplVar7 = local_68;\n            pplVar6 = local_78;\n            *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d6c9;\n            cVar8 = FUN_0028d360(pplVar7,pplVar6);\n            if (cVar8 != '\0') goto LAB_0028d487;\n            cVar8 = pcVar2[sVar19];\n            uVar12 = local_40;\n            if ((local_48 == (long *)0x0) || (local_40 != 0xffffffff)) {\nLAB_0028d688:\n              if (cVar8 != (char)uVar12) goto LAB_0028d487;\n              pcVar16 = (char *)local_48[2];\n              if (pcVar16 < (char *)local_48[3]) goto LAB_0028d6a3;\n              pcVar3 = *(code **)(*local_48 + 0x50);\n              *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d7c3;\n              (*pcVar3)();\n            }\n            else {\n              pcVar16 = (char *)local_48[2];\n              if ((char *)local_48[3] <= pcVar16) {\n                pcVar3 = *(code **)(*local_48 + 0x48);\n                *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d7e2;\n                uVar12 = (*pcVar3)();\n                if (uVar12 == 0xffffffff) {\n                  local_48 = (long *)0x0;\n                }\n                goto LAB_0028d688;\n              }\n              if (cVar8 != *pcVar16) goto LAB_0028d487;\nLAB_0028d6a3:\n              local_48[2] = (long)(pcVar16 + 1);\n            }\n            sVar19 = sVar19 + 1;\n            local_40 = 0xffffffff;\n          }" { (expression_statement "pplVar7 = local_68;" (assignment_expression "pplVar7 = local_68" identifier = identifier) ;) (expression_statement "pplVar6 = local_78;" (assignment_expression "pplVar6 = local_78" identifier = identifier) ;) (expression_statement "*(undefined8 *)((long)auStack_90 + lVar4) = 0x28d6c9;" (assignment_expression "*(undefined8 *)((long)auStack_90 + lVar4) = 0x28d6c9" (pointer_expression "*(undefined8 *)((long)auStack_90 + lVar4)" * (cast_expression "(undefined8 *)((long)auStack_90 + lVar4)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)auStack_90 + lVar4)" ( (binary_expression "(long)auStack_90 + lVar4" (cast_expression "(long)auStack_90" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + identifier) )))) = number_literal) ;) (expression_statement "cVar8 = FUN_0028d360(pplVar7,pplVar6);" (assignment_expression "cVar8 = FUN_0028d360(pplVar7,pplVar6)" identifier = (call_expression "FUN_0028d360(pplVar7,pplVar6)" identifier (argument_list "(pplVar7,pplVar6)" ( identifier , identifier )))) ;) (if_statement "if (cVar8 != '\0') goto LAB_0028d487;" if (parenthesized_expression "(cVar8 != '\0')" ( (binary_expression "cVar8 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) (goto_statement "goto LAB_0028d487;" goto statement_identifier ;)) (expression_statement "cVar8 = pcVar2[sVar19];" (assignment_expression "cVar8 = pcVar2[sVar19]" identifier = (subscript_expression "pcVar2[sVar19]" identifier [ identifier ])) ;) (expression_statement "uVar12 = local_40;" (assignment_expression "uVar12 = local_40" identifier = identifier) ;) (if_statement "if ((local_48 == (long *)0x0) || (local_40 != 0xffffffff)) {\nLAB_0028d688:\n              if (cVar8 != (char)uVar12) goto LAB_0028d487;\n              pcVar16 = (char *)local_48[2];\n              if (pcVar16 < (char *)local_48[3]) goto LAB_0028d6a3;\n              pcVar3 = *(code **)(*local_48 + 0x50);\n              *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d7c3;\n              (*pcVar3)();\n            }\n            else {\n              pcVar16 = (char *)local_48[2];\n              if ((char *)local_48[3] <= pcVar16) {\n                pcVar3 = *(code **)(*local_48 + 0x48);\n                *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d7e2;\n                uVar12 = (*pcVar3)();\n                if (uVar12 == 0xffffffff) {\n                  local_48 = (long *)0x0;\n                }\n                goto LAB_0028d688;\n              }\n              if (cVar8 != *pcVar16) goto LAB_0028d487;\nLAB_0028d6a3:\n              local_48[2] = (long)(pcVar16 + 1);\n            }" if (parenthesized_expression "((local_48 == (long *)0x0) || (local_40 != 0xffffffff))" ( (binary_expression "(local_48 == (long *)0x0) || (local_40 != 0xffffffff)" (parenthesized_expression "(local_48 == (long *)0x0)" ( (binary_expression "local_48 == (long *)0x0" identifier == (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) )) || (parenthesized_expression "(local_40 != 0xffffffff)" ( (binary_expression "local_40 != 0xffffffff" identifier != number_literal) ))) )) (compound_statement "{\nLAB_0028d688:\n              if (cVar8 != (char)uVar12) goto LAB_0028d487;\n              pcVar16 = (char *)local_48[2];\n              if (pcVar16 < (char *)local_48[3]) goto LAB_0028d6a3;\n              pcVar3 = *(code **)(*local_48 + 0x50);\n              *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d7c3;\n              (*pcVar3)();\n            }" { (labeled_statement "LAB_0028d688:\n              if (cVar8 != (char)uVar12) goto LAB_0028d487;" statement_identifier : (if_statement "if (cVar8 != (char)uVar12) goto LAB_0028d487;" if (parenthesized_expression "(cVar8 != (char)uVar12)" ( (binary_expression "cVar8 != (char)uVar12" identifier != (cast_expression "(char)uVar12" ( (type_descriptor "char" primitive_type) ) identifier)) )) (goto_statement "goto LAB_0028d487;" goto statement_identifier ;))) (expression_statement "pcVar16 = (char *)local_48[2];" (assignment_expression "pcVar16 = (char *)local_48[2]" identifier = (cast_expression "(char *)local_48[2]" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "local_48[2]" identifier [ number_literal ]))) ;) (if_statement "if (pcVar16 < (char *)local_48[3]) goto LAB_0028d6a3;" if (parenthesized_expression "(pcVar16 < (char *)local_48[3])" ( (binary_expression "pcVar16 < (char *)local_48[3]" identifier < (cast_expression "(char *)local_48[3]" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "local_48[3]" identifier [ number_literal ]))) )) (goto_statement "goto LAB_0028d6a3;" goto statement_identifier ;)) (expression_statement "pcVar3 = *(code **)(*local_48 + 0x50);" (assignment_expression "pcVar3 = *(code **)(*local_48 + 0x50)" identifier = (pointer_expression "*(code **)(*local_48 + 0x50)" * (cast_expression "(code **)(*local_48 + 0x50)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*local_48 + 0x50)" ( (binary_expression "*local_48 + 0x50" (pointer_expression "*local_48" * identifier) + number_literal) ))))) ;) (expression_statement "*(undefined8 *)((long)auStack_90 + lVar4) = 0x28d7c3;" (assignment_expression "*(undefined8 *)((long)auStack_90 + lVar4) = 0x28d7c3" (pointer_expression "*(undefined8 *)((long)auStack_90 + lVar4)" * (cast_expression "(undefined8 *)((long)auStack_90 + lVar4)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)auStack_90 + lVar4)" ( (binary_expression "(long)auStack_90 + lVar4" (cast_expression "(long)auStack_90" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + identifier) )))) = number_literal) ;) (expression_statement "(*pcVar3)();" (call_expression "(*pcVar3)()" (parenthesized_expression "(*pcVar3)" ( (pointer_expression "*pcVar3" * identifier) )) (argument_list "()" ( ))) ;) }) (else_clause "else {\n              pcVar16 = (char *)local_48[2];\n              if ((char *)local_48[3] <= pcVar16) {\n                pcVar3 = *(code **)(*local_48 + 0x48);\n                *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d7e2;\n                uVar12 = (*pcVar3)();\n                if (uVar12 == 0xffffffff) {\n                  local_48 = (long *)0x0;\n                }\n                goto LAB_0028d688;\n              }\n              if (cVar8 != *pcVar16) goto LAB_0028d487;\nLAB_0028d6a3:\n              local_48[2] = (long)(pcVar16 + 1);\n            }" else (compound_statement "{\n              pcVar16 = (char *)local_48[2];\n              if ((char *)local_48[3] <= pcVar16) {\n                pcVar3 = *(code **)(*local_48 + 0x48);\n                *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d7e2;\n                uVar12 = (*pcVar3)();\n                if (uVar12 == 0xffffffff) {\n                  local_48 = (long *)0x0;\n                }\n                goto LAB_0028d688;\n              }\n              if (cVar8 != *pcVar16) goto LAB_0028d487;\nLAB_0028d6a3:\n              local_48[2] = (long)(pcVar16 + 1);\n            }" { (expression_statement "pcVar16 = (char *)local_48[2];" (assignment_expression "pcVar16 = (char *)local_48[2]" identifier = (cast_expression "(char *)local_48[2]" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "local_48[2]" identifier [ number_literal ]))) ;) (if_statement "if ((char *)local_48[3] <= pcVar16) {\n                pcVar3 = *(code **)(*local_48 + 0x48);\n                *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d7e2;\n                uVar12 = (*pcVar3)();\n                if (uVar12 == 0xffffffff) {\n                  local_48 = (long *)0x0;\n                }\n                goto LAB_0028d688;\n              }" if (parenthesized_expression "((char *)local_48[3] <= pcVar16)" ( (binary_expression "(char *)local_48[3] <= pcVar16" (cast_expression "(char *)local_48[3]" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "local_48[3]" identifier [ number_literal ])) <= identifier) )) (compound_statement "{\n                pcVar3 = *(code **)(*local_48 + 0x48);\n                *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d7e2;\n                uVar12 = (*pcVar3)();\n                if (uVar12 == 0xffffffff) {\n                  local_48 = (long *)0x0;\n                }\n                goto LAB_0028d688;\n              }" { (expression_statement "pcVar3 = *(code **)(*local_48 + 0x48);" (assignment_expression "pcVar3 = *(code **)(*local_48 + 0x48)" identifier = (pointer_expression "*(code **)(*local_48 + 0x48)" * (cast_expression "(code **)(*local_48 + 0x48)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*local_48 + 0x48)" ( (binary_expression "*local_48 + 0x48" (pointer_expression "*local_48" * identifier) + number_literal) ))))) ;) (expression_statement "*(undefined8 *)((long)auStack_90 + lVar4) = 0x28d7e2;" (assignment_expression "*(undefined8 *)((long)auStack_90 + lVar4) = 0x28d7e2" (pointer_expression "*(undefined8 *)((long)auStack_90 + lVar4)" * (cast_expression "(undefined8 *)((long)auStack_90 + lVar4)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)auStack_90 + lVar4)" ( (binary_expression "(long)auStack_90 + lVar4" (cast_expression "(long)auStack_90" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + identifier) )))) = number_literal) ;) (expression_statement "uVar12 = (*pcVar3)();" (assignment_expression "uVar12 = (*pcVar3)()" identifier = (call_expression "(*pcVar3)()" (parenthesized_expression "(*pcVar3)" ( (pointer_expression "*pcVar3" * identifier) )) (argument_list "()" ( )))) ;) (if_statement "if (uVar12 == 0xffffffff) {\n                  local_48 = (long *)0x0;\n                }" if (parenthesized_expression "(uVar12 == 0xffffffff)" ( (binary_expression "uVar12 == 0xffffffff" identifier == number_literal) )) (compound_statement "{\n                  local_48 = (long *)0x0;\n                }" { (expression_statement "local_48 = (long *)0x0;" (assignment_expression "local_48 = (long *)0x0" identifier = (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) ;) })) (goto_statement "goto LAB_0028d688;" goto statement_identifier ;) })) (if_statement "if (cVar8 != *pcVar16) goto LAB_0028d487;" if (parenthesized_expression "(cVar8 != *pcVar16)" ( (binary_expression "cVar8 != *pcVar16" identifier != (pointer_expression "*pcVar16" * identifier)) )) (goto_statement "goto LAB_0028d487;" goto statement_identifier ;)) (labeled_statement "LAB_0028d6a3:\n              local_48[2] = (long)(pcVar16 + 1);" statement_identifier : (expression_statement "local_48[2] = (long)(pcVar16 + 1);" (assignment_expression "local_48[2] = (long)(pcVar16 + 1)" (subscript_expression "local_48[2]" identifier [ number_literal ]) = (cast_expression "(long)(pcVar16 + 1)" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (parenthesized_expression "(pcVar16 + 1)" ( (binary_expression "pcVar16 + 1" identifier + number_literal) )))) ;)) }))) (expression_statement "sVar19 = sVar19 + 1;" (assignment_expression "sVar19 = sVar19 + 1" identifier = (binary_expression "sVar19 + 1" identifier + number_literal)) ;) (expression_statement "local_40 = 0xffffffff;" (assignment_expression "local_40 = 0xffffffff" identifier = number_literal) ;) }) while (parenthesized_expression "(sVar19 != sVar15)" ( (binary_expression "sVar19 != sVar15" identifier != identifier) )) ;) }) (else_clause "else if (sVar19 != sVar15) goto LAB_0028d487;" else (if_statement "if (sVar19 != sVar15) goto LAB_0028d487;" if (parenthesized_expression "(sVar19 != sVar15)" ( (binary_expression "sVar19 != sVar15" identifier != identifier) )) (goto_statement "goto LAB_0028d487;" goto statement_identifier ;)))) (expression_statement "*local_80 = (undefined4)local_60;" (assignment_expression "*local_80 = (undefined4)local_60" (pointer_expression "*local_80" * identifier) = (cast_expression "(undefined4)local_60" ( (type_descriptor "undefined4" type_identifier) ) identifier)) ;) (goto_statement "goto LAB_0028d48e;" goto statement_identifier ;) })) })) })) (labeled_statement "LAB_0028d487:\n  *param_10 = *param_10 | 4;" statement_identifier : (expression_statement "*param_10 = *param_10 | 4;" (assignment_expression "*param_10 = *param_10 | 4" (pointer_expression "*param_10" * identifier) = (binary_expression "*param_10 | 4" (pointer_expression "*param_10" * identifier) | number_literal)) ;)) (labeled_statement "LAB_0028d48e:\n  auVar5._8_4_ = local_40;" statement_identifier : (expression_statement "auVar5._8_4_ = local_40;" (assignment_expression "auVar5._8_4_ = local_40" (field_expression "auVar5._8_4_" identifier . field_identifier) = identifier) ;)) (expression_statement "auVar5._0_8_ = local_48;" (assignment_expression "auVar5._0_8_ = local_48" (field_expression "auVar5._0_8_" identifier . field_identifier) = identifier) ;) (expression_statement "auVar5._12_4_ = uStack_3c;" (assignment_expression "auVar5._12_4_ = uStack_3c" (field_expression "auVar5._12_4_" identifier . field_identifier) = identifier) ;) (return_statement "return auVar5;" return identifier ;) (ERROR "}" }))
(translation_unit (expression_statement (subscript_expression IDENT [ LIT ]) ;) (declaration (macro_type_specifier IDENT ( (type_descriptor TYPE) )) IDENT , (ERROR IDENT) (pointer_declarator * IDENT) , IDENT (ERROR IDENT) , (ERROR IDENT) (pointer_declarator * IDENT) , IDENT (ERROR IDENT) , (ERROR IDENT) (pointer_declarator * IDENT) , (ERROR IDENT) IDENT , (ERROR IDENT) IDENT , (ERROR IDENT) IDENT , (ERROR IDENT (pointer_declarator * IDENT) ) { TYPE) (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration (sized_type_specifier long) IDENT ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (declaration (sized_type_specifier long) (pointer_declarator * (pointer_declarator * IDENT)) ;) (declaration (sized_type_specifier long) (pointer_declarator * (pointer_declarator * 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 TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration (sized_type_specifier long) IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration (sized_type_specifier long) (pointer_declarator * (pointer_declarator * IDENT)) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration (sized_type_specifier long) (pointer_declarator * (pointer_declarator * 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 ;) (declaration TYPE IDENT ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT) )))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_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 IDENT = (pointer_expression & IDENT)) ;) (expression_statement (assignment_expression IDENT = (unary_expression - (parenthesized_expression ( (binary_expression (binary_expression (binary_expression IDENT * LIT) + LIT) & LIT) )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) (pointer_expression & IDENT)) + IDENT) )))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression & IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + IDENT) )))) = LIT) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (pointer_expression & IDENT) )))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + IDENT) )))) = LIT) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (do_statement do (compound_statement { (while_statement while (parenthesized_expression ( (binary_expression (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression IDENT * LIT)) ))))) == IDENT) )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression (subscript_expression IDENT [ IDENT ]) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (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 = (call_expression IDENT (argument_list ( (field_expression IDENT . field_identifier) , IDENT )))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + IDENT) )))) = LIT) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( IDENT )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) == IDENT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT != IDENT) )) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = LIT) ;)) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) (pointer_expression * IDENT)) * LIT)) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + IDENT) )))) = LIT) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) (subscript_expression IDENT [ IDENT ])) * LIT)) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + IDENT) )))) = LIT) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT < IDENT) )) ;) (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 (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + IDENT) )))) = LIT) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( ))) ;) }))) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT <= IDENT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (char_literal ' escape_sequence ')) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (char_literal ' escape_sequence ')) ;) (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 = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + IDENT) )))) = LIT) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( )))) ;) (expression_statement (assignment_expression IDENT = (char_literal ' escape_sequence ')) ;) (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 = (char_literal ' escape_sequence ')) ;) })) })) })) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT != (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) LIT)) && (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) == LIT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) == LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( IDENT )) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (char_literal ' escape_sequence ')) , (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 = (char_literal ' escape_sequence ')) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + IDENT) )))) = LIT) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( )))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) LIT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) })) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT == IDENT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = LIT) ;) (do_statement do (compound_statement { (while_statement while (parenthesized_expression ( BOOL )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) (subscript_expression IDENT [ IDENT ])) * LIT)) )))) + 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 ( (binary_expression IDENT == LIT) ))) )) (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 = (binary_expression (parenthesized_expression ( IDENT )) * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ])))) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + IDENT) )))) = LIT) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( )))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) LIT)) ;) (expression_statement (assignment_expression IDENT = LIT) ;) })) }))) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE) ) IDENT)) )) (break_statement break ;)) (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 = (binary_expression IDENT - LIT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ IDENT ]) = (subscript_expression IDENT [ IDENT ])) ;) }) while (parenthesized_expression ( (binary_expression IDENT < IDENT) )) ;) (goto_statement goto statement_identifier ;) }))) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (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 (subscript_expression IDENT [ LIT ]) = (binary_expression (subscript_expression IDENT [ LIT ]) + LIT)) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + IDENT) )))) = LIT) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( ))) ;) }))) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) (pointer_expression * IDENT)) * LIT)) ))))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (field_expression IDENT . field_identifier) , (pointer_expression * IDENT) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + IDENT) )))) = LIT) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < IDENT) )) (compound_statement { (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + IDENT) )))) = LIT) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (char_literal ' escape_sequence ')) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ 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 ( (binary_expression IDENT != LIT) ))) )) (compound_statement { (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE) ) IDENT)) )) (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 (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + IDENT) )))) = LIT) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( ))) ;) }) (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 = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + IDENT) )))) = LIT) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( )))) ;) (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 ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (pointer_expression * IDENT)) )) (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 = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = LIT) ;) }) while (parenthesized_expression ( (binary_expression IDENT != IDENT) )) ;) }) (else_clause else (if_statement if (parenthesized_expression ( (binary_expression IDENT != IDENT) )) (goto_statement goto statement_identifier ;)))) (expression_statement (assignment_expression (pointer_expression * IDENT) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (goto_statement goto statement_identifier ;) })) })) })) (labeled_statement statement_identifier : (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression (pointer_expression * IDENT) | LIT)) ;)) (labeled_statement statement_identifier : (expression_statement (assignment_expression (field_expression IDENT . field_identifier) = IDENT) ;)) (expression_statement (assignment_expression (field_expression IDENT . field_identifier) = IDENT) ;) (expression_statement (assignment_expression (field_expression IDENT . field_identifier) = IDENT) ;) (return_statement return IDENT ;) (ERROR }))
(expression_statement "undefined1  [16]" (subscript_expression "undefined1  [16]" (identifier "undefined1") ([ "[") (number_literal "16") (] "]")) (; "")) (declaration "FUN_0028d410(undefined8 param_1,long *param_2,undefined8 param_3,long *param_4,undefined8 param_5,\n            undefined4 *param_6,long param_7,long param_8,long param_9,uint *param_10)\n\n{\n  int *piVar1;" (macro_type_specifier "FUN_0028d410(undefined8" (identifier "FUN_0028d410") (( "(") (type_descriptor "undefined8" (type_identifier "undefined8")) () "")) (identifier "param_1") (, ",") (ERROR "long" (identifier "long")) (pointer_declarator "*param_2" (* "*") (identifier "param_2")) (, ",") (identifier "undefined8") (ERROR "param_3" (identifier "param_3")) (, ",") (ERROR "long" (identifier "long")) (pointer_declarator "*param_4" (* "*") (identifier "param_4")) (, ",") (identifier "undefined8") (ERROR "param_5" (identifier "param_5")) (, ",") (ERROR "undefined4" (identifier "undefined4")) (pointer_declarator "*param_6" (* "*") (identifier "param_6")) (, ",") (ERROR "long" (identifier "long")) (identifier "param_7") (, ",") (ERROR "long" (identifier "long")) (identifier "param_8") (, ",") (ERROR "long" (identifier "long")) (identifier "param_9") (, ",") (ERROR "uint *param_10)\n\n{\n  int" (identifier "uint") (pointer_declarator "*param_10" (* "*") (identifier "param_10")) () ")") ({ "{") (primitive_type "int")) (pointer_declarator "*piVar1" (* "*") (identifier "piVar1")) (; ";")) (declaration "char *pcVar2;" (primitive_type "char") (pointer_declarator "*pcVar2" (* "*") (identifier "pcVar2")) (; ";")) (declaration "code *pcVar3;" (type_identifier "code") (pointer_declarator "*pcVar3" (* "*") (identifier "pcVar3")) (; ";")) (declaration "long lVar4;" (sized_type_specifier "long" (long "long")) (identifier "lVar4") (; ";")) (declaration "undefined1 auVar5 [16];" (type_identifier "undefined1") (array_declarator "auVar5 [16]" (identifier "auVar5") ([ "[") (number_literal "16") (] "]")) (; ";")) (declaration "long **pplVar6;" (sized_type_specifier "long" (long "long")) (pointer_declarator "**pplVar6" (* "*") (pointer_declarator "*pplVar6" (* "*") (identifier "pplVar6"))) (; ";")) (declaration "long **pplVar7;" (sized_type_specifier "long" (long "long")) (pointer_declarator "**pplVar7" (* "*") (pointer_declarator "*pplVar7" (* "*") (identifier "pplVar7"))) (; ";")) (declaration "char cVar8;" (primitive_type "char") (identifier "cVar8") (; ";")) (declaration "char cVar9;" (primitive_type "char") (identifier "cVar9") (; ";")) (declaration "bool bVar10;" (primitive_type "bool") (identifier "bVar10") (; ";")) (declaration "int iVar11;" (primitive_type "int") (identifier "iVar11") (; ";")) (declaration "uint uVar12;" (type_identifier "uint") (identifier "uVar12") (; ";")) (declaration "long *plVar13;" (sized_type_specifier "long" (long "long")) (pointer_declarator "*plVar13" (* "*") (identifier "plVar13")) (; ";")) (declaration "ulong uVar14;" (type_identifier "ulong") (identifier "uVar14") (; ";")) (declaration "size_t sVar15;" (primitive_type "size_t") (identifier "sVar15") (; ";")) (declaration "char *pcVar16;" (primitive_type "char") (pointer_declarator "*pcVar16" (* "*") (identifier "pcVar16")) (; ";")) (declaration "long lVar17;" (sized_type_specifier "long" (long "long")) (identifier "lVar17") (; ";")) (declaration "ulong uVar18;" (type_identifier "ulong") (identifier "uVar18") (; ";")) (declaration "size_t sVar19;" (primitive_type "size_t") (identifier "sVar19") (; ";")) (declaration "ulong uVar20;" (type_identifier "ulong") (identifier "uVar20") (; ";")) (declaration "undefined8 auStack_90 [2];" (type_identifier "undefined8") (array_declarator "auStack_90 [2]" (identifier "auStack_90") ([ "[") (number_literal "2") (] "]")) (; ";")) (declaration "undefined4 *local_80;" (type_identifier "undefined4") (pointer_declarator "*local_80" (* "*") (identifier "local_80")) (; ";")) (declaration "long **local_78;" (sized_type_specifier "long" (long "long")) (pointer_declarator "**local_78" (* "*") (pointer_declarator "*local_78" (* "*") (identifier "local_78"))) (; ";")) (declaration "char local_6a;" (primitive_type "char") (identifier "local_6a") (; ";")) (declaration "char local_69;" (primitive_type "char") (identifier "local_69") (; ";")) (declaration "long **local_68;" (sized_type_specifier "long" (long "long")) (pointer_declarator "**local_68" (* "*") (pointer_declarator "*local_68" (* "*") (identifier "local_68"))) (; ";")) (declaration "ulong local_60;" (type_identifier "ulong") (identifier "local_60") (; ";")) (declaration "long *local_58;" (sized_type_specifier "long" (long "long")) (pointer_declarator "*local_58" (* "*") (identifier "local_58")) (; ";")) (declaration "undefined8 local_50;" (type_identifier "undefined8") (identifier "local_50") (; ";")) (declaration "long *local_48;" (sized_type_specifier "long" (long "long")) (pointer_declarator "*local_48" (* "*") (identifier "local_48")) (; ";")) (declaration "uint local_40;" (type_identifier "uint") (identifier "local_40") (; ";")) (declaration "undefined4 uStack_3c;" (type_identifier "undefined4") (identifier "uStack_3c") (; ";")) (expression_statement "local_40 = (uint)param_3;" (assignment_expression "local_40 = (uint)param_3" (identifier "local_40") (= "=") (cast_expression "(uint)param_3" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "param_3"))) (; ";")) (expression_statement "uStack_3c = (undefined4)((ulong)param_3 >> 0x20);" (assignment_expression "uStack_3c = (undefined4)((ulong)param_3 >> 0x20)" (identifier "uStack_3c") (= "=") (call_expression "(undefined4)((ulong)param_3 >> 0x20)" (parenthesized_expression "(undefined4)" (( "(") (identifier "undefined4") () ")")) (argument_list "((ulong)param_3 >> 0x20)" (( "(") (binary_expression "(ulong)param_3 >> 0x20" (cast_expression "(ulong)param_3" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (identifier "param_3")) (>> ">>") (number_literal "0x20")) () ")")))) (; ";")) (expression_statement "auStack_90[0] = 0x28d449;" (assignment_expression "auStack_90[0] = 0x28d449" (subscript_expression "auStack_90[0]" (identifier "auStack_90") ([ "[") (number_literal "0") (] "]")) (= "=") (number_literal "0x28d449")) (; ";")) (expression_statement "local_80 = param_6;" (assignment_expression "local_80 = param_6" (identifier "local_80") (= "=") (identifier "param_6")) (; ";")) (expression_statement "local_58 = param_4;" (assignment_expression "local_58 = param_4" (identifier "local_58") (= "=") (identifier "param_4")) (; ";")) (expression_statement "local_50 = param_5;" (assignment_expression "local_50 = param_5" (identifier "local_50") (= "=") (identifier "param_5")) (; ";")) (expression_statement "local_48 = param_2;" (assignment_expression "local_48 = param_2" (identifier "local_48") (= "=") (identifier "param_2")) (; ";")) (expression_statement "plVar13 = (long *)FUN_00288720(param_9 + 0xd0);" (assignment_expression "plVar13 = (long *)FUN_00288720(param_9 + 0xd0)" (identifier "plVar13") (= "=") (cast_expression "(long *)FUN_00288720(param_9 + 0xd0)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_00288720(param_9 + 0xd0)" (identifier "FUN_00288720") (argument_list "(param_9 + 0xd0)" (( "(") (binary_expression "param_9 + 0xd0" (identifier "param_9") (+ "+") (number_literal "0xd0")) () ")"))))) (; ";")) (expression_statement "local_78 = &local_58;" (assignment_expression "local_78 = &local_58" (identifier "local_78") (= "=") (pointer_expression "&local_58" (& "&") (identifier "local_58"))) (; ";")) (expression_statement "lVar4 = -(param_8 * 4 + 0x17U & 0xfffffffffffffff0);" (assignment_expression "lVar4 = -(param_8 * 4 + 0x17U & 0xfffffffffffffff0)" (identifier "lVar4") (= "=") (unary_expression "-(param_8 * 4 + 0x17U & 0xfffffffffffffff0)" (- "-") (parenthesized_expression "(param_8 * 4 + 0x17U & 0xfffffffffffffff0)" (( "(") (binary_expression "param_8 * 4 + 0x17U & 0xfffffffffffffff0" (binary_expression "param_8 * 4 + 0x17U" (binary_expression "param_8 * 4" (identifier "param_8") (* "*") (number_literal "4")) (+ "+") (number_literal "0x17U")) (& "&") (number_literal "0xfffffffffffffff0")) () ")")))) (; ";")) (expression_statement "piVar1 = (int *)((long)&local_80 + lVar4);" (assignment_expression "piVar1 = (int *)((long)&local_80 + lVar4)" (identifier "piVar1") (= "=") (cast_expression "(int *)((long)&local_80 + lVar4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)&local_80 + lVar4)" (( "(") (binary_expression "(long)&local_80 + lVar4" (cast_expression "(long)&local_80" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (pointer_expression "&local_80" (& "&") (identifier "local_80"))) (+ "+") (identifier "lVar4")) () ")")))) (; ";")) (expression_statement "local_68 = &local_48;" (assignment_expression "local_68 = &local_48" (identifier "local_68") (= "=") (pointer_expression "&local_48" (& "&") (identifier "local_48"))) (; ";")) (expression_statement "*(undefined8 *)((long)auStack_90 + lVar4) = 0x28d483;" (assignment_expression "*(undefined8 *)((long)auStack_90 + lVar4) = 0x28d483" (pointer_expression "*(undefined8 *)((long)auStack_90 + lVar4)" (* "*") (cast_expression "(undefined8 *)((long)auStack_90 + lVar4)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)auStack_90 + lVar4)" (( "(") (binary_expression "(long)auStack_90 + lVar4" (cast_expression "(long)auStack_90" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "auStack_90")) (+ "+") (identifier "lVar4")) () ")")))) (= "=") (number_literal "0x28d483")) (; ";")) (expression_statement "cVar8 = FUN_0028d360(&local_48);" (assignment_expression "cVar8 = FUN_0028d360(&local_48)" (identifier "cVar8") (= "=") (call_expression "FUN_0028d360(&local_48)" (identifier "FUN_0028d360") (argument_list "(&local_48)" (( "(") (pointer_expression "&local_48" (& "&") (identifier "local_48")) () ")")))) (; ";")) (expression_statement "uVar12 = local_40;" (assignment_expression "uVar12 = local_40" (identifier "uVar12") (= "=") (identifier "local_40")) (; ";")) (expression_statement "pplVar6 = local_68;" (assignment_expression "pplVar6 = local_68" (identifier "pplVar6") (= "=") (identifier "local_68")) (; ";")) (if_statement "if (cVar8 == '\0') {\n    *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d4b1;\n    cVar8 = FUN_002864b0(pplVar6,uVar12);\n    if (param_8 != 0) {\n      lVar17 = 0;\n      uVar20 = 0;\n      do {\n        while (**(char **)(param_7 + lVar17 * 8) == cVar8) {\nLAB_0028d4f6:\n          piVar1[uVar20] = (int)lVar17;\n          uVar20 = uVar20 + 1;\n          lVar17 = lVar17 + 1;\n          if (param_8 == lVar17) goto LAB_0028d508;\n        }\n        local_60 = CONCAT71(local_60._1_7_,cVar8);\n        pcVar3 = *(code **)(*plVar13 + 0x10);\n        *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d4d6;\n        cVar9 = (*pcVar3)(plVar13);\n        cVar8 = (char)local_60;\n        if ((char)local_60 == cVar9) goto LAB_0028d4f6;\n        lVar17 = lVar17 + 1;\n      } while (param_8 != lVar17);\nLAB_0028d508:\n      local_60 = 0;\njoined_r0x0028d514:\n      if (1 < uVar20) {\n        uVar18 = 1;\n        pcVar2 = *(char **)(param_7 + (long)*piVar1 * 8);\n        *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d532;\n        uVar14 = strlen(pcVar2);\n        do {\n          pcVar2 = *(char **)(param_7 + (long)piVar1[uVar18] * 8);\n          *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d545;\n          sVar15 = strlen(pcVar2);\n          if (sVar15 < uVar14) {\n            uVar14 = sVar15;\n          }\n          uVar18 = uVar18 + 1;\n        } while (uVar18 < uVar20);\n        if ((ulong)local_48[2] < (ulong)local_48[3]) {\n          local_48[2] = local_48[2] + 1;\n        }\n        else {\n          pcVar3 = *(code **)(*local_48 + 0x50);\n          *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d796;\n          (*pcVar3)();\n        }\n        local_60 = local_60 + 1;\n        local_40 = 0xffffffff;\n        if (uVar14 <= local_60) goto LAB_0028d487;\n        cVar8 = '\x01';\n        if (local_48 != (long *)0x0) {\n          cVar8 = '\0';\n          if ((ulong)local_48[3] <= (ulong)local_48[2]) {\n            pcVar3 = *(code **)(*local_48 + 0x48);\n            *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d7a1;\n            iVar11 = (*pcVar3)();\n            cVar8 = '\0';\n            if (iVar11 == -1) {\n              local_48 = (long *)0x0;\n              cVar8 = '\x01';\n            }\n          }\n        }\n        bVar10 = local_58 != (long *)0x0 && (int)local_50 == -1;\n        cVar9 = (int)local_50 == -1;\n        if ((bVar10) && (cVar9 = '\0', (ulong)local_58[3] <= (ulong)local_58[2])) {\n          local_69 = '\0';\n          pcVar3 = *(code **)(*local_58 + 0x48);\n          local_6a = bVar10;\n          *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d736;\n          iVar11 = (*pcVar3)();\n          cVar9 = local_69;\n          if (iVar11 == -1) {\n            local_58 = (long *)0x0;\n            cVar9 = local_6a;\n          }\n        }\n        if (cVar9 == cVar8) goto LAB_0028d487;\n        uVar14 = 0;\n        do {\n          while( true ) {\n            cVar8 = *(char *)(*(long *)(param_7 + (long)piVar1[uVar14] * 8) + local_60);\n            uVar12 = local_40;\n            if ((local_48 != (long *)0x0) && (local_40 == 0xffffffff)) {\n              if ((byte *)local_48[2] < (byte *)local_48[3]) {\n                uVar12 = (uint)*(byte *)local_48[2];\n              }\n              else {\n                pcVar3 = *(code **)(*local_48 + 0x48);\n                local_69 = cVar8;\n                *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d76a;\n                uVar12 = (*pcVar3)();\n                cVar8 = local_69;\n                if (uVar12 == 0xffffffff) {\n                  local_48 = (long *)0x0;\n                  uVar12 = 0xffffffff;\n                }\n              }\n            }\n            if (cVar8 != (char)uVar12) break;\n            uVar14 = uVar14 + 1;\n            if (uVar20 <= uVar14) goto joined_r0x0028d514;\n          }\n          uVar20 = uVar20 - 1;\n          piVar1[uVar14] = piVar1[uVar20];\n        } while (uVar14 < uVar20);\n        goto joined_r0x0028d514;\n      }\n      if (uVar20 == 1) {\n        if ((ulong)local_48[2] < (ulong)local_48[3]) {\n          local_48[2] = local_48[2] + 1;\n        }\n        else {\n          pcVar3 = *(code **)(*local_48 + 0x50);\n          *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d7fe;\n          (*pcVar3)();\n        }\n        uVar20 = local_60;\n        local_40 = 0xffffffff;\n        pcVar2 = *(char **)(param_7 + (long)*piVar1 * 8);\n        local_60 = CONCAT44(local_60._4_4_,*piVar1);\n        sVar19 = uVar20 + 1;\n        *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d670;\n        sVar15 = strlen(pcVar2);\n        if (sVar19 < sVar15) {\n          do {\n            pplVar7 = local_68;\n            pplVar6 = local_78;\n            *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d6c9;\n            cVar8 = FUN_0028d360(pplVar7,pplVar6);\n            if (cVar8 != '\0') goto LAB_0028d487;\n            cVar8 = pcVar2[sVar19];\n            uVar12 = local_40;\n            if ((local_48 == (long *)0x0) || (local_40 != 0xffffffff)) {\nLAB_0028d688:\n              if (cVar8 != (char)uVar12) goto LAB_0028d487;\n              pcVar16 = (char *)local_48[2];\n              if (pcVar16 < (char *)local_48[3]) goto LAB_0028d6a3;\n              pcVar3 = *(code **)(*local_48 + 0x50);\n              *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d7c3;\n              (*pcVar3)();\n            }\n            else {\n              pcVar16 = (char *)local_48[2];\n              if ((char *)local_48[3] <= pcVar16) {\n                pcVar3 = *(code **)(*local_48 + 0x48);\n                *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d7e2;\n                uVar12 = (*pcVar3)();\n                if (uVar12 == 0xffffffff) {\n                  local_48 = (long *)0x0;\n                }\n                goto LAB_0028d688;\n              }\n              if (cVar8 != *pcVar16) goto LAB_0028d487;\nLAB_0028d6a3:\n              local_48[2] = (long)(pcVar16 + 1);\n            }\n            sVar19 = sVar19 + 1;\n            local_40 = 0xffffffff;\n          } while (sVar19 != sVar15);\n        }\n        else if (sVar19 != sVar15) goto LAB_0028d487;\n        *local_80 = (undefined4)local_60;\n        goto LAB_0028d48e;\n      }\n    }\n  }" (if "if") (parenthesized_expression "(cVar8 == '\0')" (( "(") (binary_expression "cVar8 == '\0'" (identifier "cVar8") (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n    *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d4b1;\n    cVar8 = FUN_002864b0(pplVar6,uVar12);\n    if (param_8 != 0) {\n      lVar17 = 0;\n      uVar20 = 0;\n      do {\n        while (**(char **)(param_7 + lVar17 * 8) == cVar8) {\nLAB_0028d4f6:\n          piVar1[uVar20] = (int)lVar17;\n          uVar20 = uVar20 + 1;\n          lVar17 = lVar17 + 1;\n          if (param_8 == lVar17) goto LAB_0028d508;\n        }\n        local_60 = CONCAT71(local_60._1_7_,cVar8);\n        pcVar3 = *(code **)(*plVar13 + 0x10);\n        *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d4d6;\n        cVar9 = (*pcVar3)(plVar13);\n        cVar8 = (char)local_60;\n        if ((char)local_60 == cVar9) goto LAB_0028d4f6;\n        lVar17 = lVar17 + 1;\n      } while (param_8 != lVar17);\nLAB_0028d508:\n      local_60 = 0;\njoined_r0x0028d514:\n      if (1 < uVar20) {\n        uVar18 = 1;\n        pcVar2 = *(char **)(param_7 + (long)*piVar1 * 8);\n        *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d532;\n        uVar14 = strlen(pcVar2);\n        do {\n          pcVar2 = *(char **)(param_7 + (long)piVar1[uVar18] * 8);\n          *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d545;\n          sVar15 = strlen(pcVar2);\n          if (sVar15 < uVar14) {\n            uVar14 = sVar15;\n          }\n          uVar18 = uVar18 + 1;\n        } while (uVar18 < uVar20);\n        if ((ulong)local_48[2] < (ulong)local_48[3]) {\n          local_48[2] = local_48[2] + 1;\n        }\n        else {\n          pcVar3 = *(code **)(*local_48 + 0x50);\n          *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d796;\n          (*pcVar3)();\n        }\n        local_60 = local_60 + 1;\n        local_40 = 0xffffffff;\n        if (uVar14 <= local_60) goto LAB_0028d487;\n        cVar8 = '\x01';\n        if (local_48 != (long *)0x0) {\n          cVar8 = '\0';\n          if ((ulong)local_48[3] <= (ulong)local_48[2]) {\n            pcVar3 = *(code **)(*local_48 + 0x48);\n            *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d7a1;\n            iVar11 = (*pcVar3)();\n            cVar8 = '\0';\n            if (iVar11 == -1) {\n              local_48 = (long *)0x0;\n              cVar8 = '\x01';\n            }\n          }\n        }\n        bVar10 = local_58 != (long *)0x0 && (int)local_50 == -1;\n        cVar9 = (int)local_50 == -1;\n        if ((bVar10) && (cVar9 = '\0', (ulong)local_58[3] <= (ulong)local_58[2])) {\n          local_69 = '\0';\n          pcVar3 = *(code **)(*local_58 + 0x48);\n          local_6a = bVar10;\n          *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d736;\n          iVar11 = (*pcVar3)();\n          cVar9 = local_69;\n          if (iVar11 == -1) {\n            local_58 = (long *)0x0;\n            cVar9 = local_6a;\n          }\n        }\n        if (cVar9 == cVar8) goto LAB_0028d487;\n        uVar14 = 0;\n        do {\n          while( true ) {\n            cVar8 = *(char *)(*(long *)(param_7 + (long)piVar1[uVar14] * 8) + local_60);\n            uVar12 = local_40;\n            if ((local_48 != (long *)0x0) && (local_40 == 0xffffffff)) {\n              if ((byte *)local_48[2] < (byte *)local_48[3]) {\n                uVar12 = (uint)*(byte *)local_48[2];\n              }\n              else {\n                pcVar3 = *(code **)(*local_48 + 0x48);\n                local_69 = cVar8;\n                *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d76a;\n                uVar12 = (*pcVar3)();\n                cVar8 = local_69;\n                if (uVar12 == 0xffffffff) {\n                  local_48 = (long *)0x0;\n                  uVar12 = 0xffffffff;\n                }\n              }\n            }\n            if (cVar8 != (char)uVar12) break;\n            uVar14 = uVar14 + 1;\n            if (uVar20 <= uVar14) goto joined_r0x0028d514;\n          }\n          uVar20 = uVar20 - 1;\n          piVar1[uVar14] = piVar1[uVar20];\n        } while (uVar14 < uVar20);\n        goto joined_r0x0028d514;\n      }\n      if (uVar20 == 1) {\n        if ((ulong)local_48[2] < (ulong)local_48[3]) {\n          local_48[2] = local_48[2] + 1;\n        }\n        else {\n          pcVar3 = *(code **)(*local_48 + 0x50);\n          *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d7fe;\n          (*pcVar3)();\n        }\n        uVar20 = local_60;\n        local_40 = 0xffffffff;\n        pcVar2 = *(char **)(param_7 + (long)*piVar1 * 8);\n        local_60 = CONCAT44(local_60._4_4_,*piVar1);\n        sVar19 = uVar20 + 1;\n        *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d670;\n        sVar15 = strlen(pcVar2);\n        if (sVar19 < sVar15) {\n          do {\n            pplVar7 = local_68;\n            pplVar6 = local_78;\n            *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d6c9;\n            cVar8 = FUN_0028d360(pplVar7,pplVar6);\n            if (cVar8 != '\0') goto LAB_0028d487;\n            cVar8 = pcVar2[sVar19];\n            uVar12 = local_40;\n            if ((local_48 == (long *)0x0) || (local_40 != 0xffffffff)) {\nLAB_0028d688:\n              if (cVar8 != (char)uVar12) goto LAB_0028d487;\n              pcVar16 = (char *)local_48[2];\n              if (pcVar16 < (char *)local_48[3]) goto LAB_0028d6a3;\n              pcVar3 = *(code **)(*local_48 + 0x50);\n              *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d7c3;\n              (*pcVar3)();\n            }\n            else {\n              pcVar16 = (char *)local_48[2];\n              if ((char *)local_48[3] <= pcVar16) {\n                pcVar3 = *(code **)(*local_48 + 0x48);\n                *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d7e2;\n                uVar12 = (*pcVar3)();\n                if (uVar12 == 0xffffffff) {\n                  local_48 = (long *)0x0;\n                }\n                goto LAB_0028d688;\n              }\n              if (cVar8 != *pcVar16) goto LAB_0028d487;\nLAB_0028d6a3:\n              local_48[2] = (long)(pcVar16 + 1);\n            }\n            sVar19 = sVar19 + 1;\n            local_40 = 0xffffffff;\n          } while (sVar19 != sVar15);\n        }\n        else if (sVar19 != sVar15) goto LAB_0028d487;\n        *local_80 = (undefined4)local_60;\n        goto LAB_0028d48e;\n      }\n    }\n  }" ({ "{") (expression_statement "*(undefined8 *)((long)auStack_90 + lVar4) = 0x28d4b1;" (assignment_expression "*(undefined8 *)((long)auStack_90 + lVar4) = 0x28d4b1" (pointer_expression "*(undefined8 *)((long)auStack_90 + lVar4)" (* "*") (cast_expression "(undefined8 *)((long)auStack_90 + lVar4)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)auStack_90 + lVar4)" (( "(") (binary_expression "(long)auStack_90 + lVar4" (cast_expression "(long)auStack_90" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "auStack_90")) (+ "+") (identifier "lVar4")) () ")")))) (= "=") (number_literal "0x28d4b1")) (; ";")) (expression_statement "cVar8 = FUN_002864b0(pplVar6,uVar12);" (assignment_expression "cVar8 = FUN_002864b0(pplVar6,uVar12)" (identifier "cVar8") (= "=") (call_expression "FUN_002864b0(pplVar6,uVar12)" (identifier "FUN_002864b0") (argument_list "(pplVar6,uVar12)" (( "(") (identifier "pplVar6") (, ",") (identifier "uVar12") () ")")))) (; ";")) (if_statement "if (param_8 != 0) {\n      lVar17 = 0;\n      uVar20 = 0;\n      do {\n        while (**(char **)(param_7 + lVar17 * 8) == cVar8) {\nLAB_0028d4f6:\n          piVar1[uVar20] = (int)lVar17;\n          uVar20 = uVar20 + 1;\n          lVar17 = lVar17 + 1;\n          if (param_8 == lVar17) goto LAB_0028d508;\n        }\n        local_60 = CONCAT71(local_60._1_7_,cVar8);\n        pcVar3 = *(code **)(*plVar13 + 0x10);\n        *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d4d6;\n        cVar9 = (*pcVar3)(plVar13);\n        cVar8 = (char)local_60;\n        if ((char)local_60 == cVar9) goto LAB_0028d4f6;\n        lVar17 = lVar17 + 1;\n      } while (param_8 != lVar17);\nLAB_0028d508:\n      local_60 = 0;\njoined_r0x0028d514:\n      if (1 < uVar20) {\n        uVar18 = 1;\n        pcVar2 = *(char **)(param_7 + (long)*piVar1 * 8);\n        *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d532;\n        uVar14 = strlen(pcVar2);\n        do {\n          pcVar2 = *(char **)(param_7 + (long)piVar1[uVar18] * 8);\n          *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d545;\n          sVar15 = strlen(pcVar2);\n          if (sVar15 < uVar14) {\n            uVar14 = sVar15;\n          }\n          uVar18 = uVar18 + 1;\n        } while (uVar18 < uVar20);\n        if ((ulong)local_48[2] < (ulong)local_48[3]) {\n          local_48[2] = local_48[2] + 1;\n        }\n        else {\n          pcVar3 = *(code **)(*local_48 + 0x50);\n          *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d796;\n          (*pcVar3)();\n        }\n        local_60 = local_60 + 1;\n        local_40 = 0xffffffff;\n        if (uVar14 <= local_60) goto LAB_0028d487;\n        cVar8 = '\x01';\n        if (local_48 != (long *)0x0) {\n          cVar8 = '\0';\n          if ((ulong)local_48[3] <= (ulong)local_48[2]) {\n            pcVar3 = *(code **)(*local_48 + 0x48);\n            *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d7a1;\n            iVar11 = (*pcVar3)();\n            cVar8 = '\0';\n            if (iVar11 == -1) {\n              local_48 = (long *)0x0;\n              cVar8 = '\x01';\n            }\n          }\n        }\n        bVar10 = local_58 != (long *)0x0 && (int)local_50 == -1;\n        cVar9 = (int)local_50 == -1;\n        if ((bVar10) && (cVar9 = '\0', (ulong)local_58[3] <= (ulong)local_58[2])) {\n          local_69 = '\0';\n          pcVar3 = *(code **)(*local_58 + 0x48);\n          local_6a = bVar10;\n          *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d736;\n          iVar11 = (*pcVar3)();\n          cVar9 = local_69;\n          if (iVar11 == -1) {\n            local_58 = (long *)0x0;\n            cVar9 = local_6a;\n          }\n        }\n        if (cVar9 == cVar8) goto LAB_0028d487;\n        uVar14 = 0;\n        do {\n          while( true ) {\n            cVar8 = *(char *)(*(long *)(param_7 + (long)piVar1[uVar14] * 8) + local_60);\n            uVar12 = local_40;\n            if ((local_48 != (long *)0x0) && (local_40 == 0xffffffff)) {\n              if ((byte *)local_48[2] < (byte *)local_48[3]) {\n                uVar12 = (uint)*(byte *)local_48[2];\n              }\n              else {\n                pcVar3 = *(code **)(*local_48 + 0x48);\n                local_69 = cVar8;\n                *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d76a;\n                uVar12 = (*pcVar3)();\n                cVar8 = local_69;\n                if (uVar12 == 0xffffffff) {\n                  local_48 = (long *)0x0;\n                  uVar12 = 0xffffffff;\n                }\n              }\n            }\n            if (cVar8 != (char)uVar12) break;\n            uVar14 = uVar14 + 1;\n            if (uVar20 <= uVar14) goto joined_r0x0028d514;\n          }\n          uVar20 = uVar20 - 1;\n          piVar1[uVar14] = piVar1[uVar20];\n        } while (uVar14 < uVar20);\n        goto joined_r0x0028d514;\n      }\n      if (uVar20 == 1) {\n        if ((ulong)local_48[2] < (ulong)local_48[3]) {\n          local_48[2] = local_48[2] + 1;\n        }\n        else {\n          pcVar3 = *(code **)(*local_48 + 0x50);\n          *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d7fe;\n          (*pcVar3)();\n        }\n        uVar20 = local_60;\n        local_40 = 0xffffffff;\n        pcVar2 = *(char **)(param_7 + (long)*piVar1 * 8);\n        local_60 = CONCAT44(local_60._4_4_,*piVar1);\n        sVar19 = uVar20 + 1;\n        *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d670;\n        sVar15 = strlen(pcVar2);\n        if (sVar19 < sVar15) {\n          do {\n            pplVar7 = local_68;\n            pplVar6 = local_78;\n            *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d6c9;\n            cVar8 = FUN_0028d360(pplVar7,pplVar6);\n            if (cVar8 != '\0') goto LAB_0028d487;\n            cVar8 = pcVar2[sVar19];\n            uVar12 = local_40;\n            if ((local_48 == (long *)0x0) || (local_40 != 0xffffffff)) {\nLAB_0028d688:\n              if (cVar8 != (char)uVar12) goto LAB_0028d487;\n              pcVar16 = (char *)local_48[2];\n              if (pcVar16 < (char *)local_48[3]) goto LAB_0028d6a3;\n              pcVar3 = *(code **)(*local_48 + 0x50);\n              *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d7c3;\n              (*pcVar3)();\n            }\n            else {\n              pcVar16 = (char *)local_48[2];\n              if ((char *)local_48[3] <= pcVar16) {\n                pcVar3 = *(code **)(*local_48 + 0x48);\n                *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d7e2;\n                uVar12 = (*pcVar3)();\n                if (uVar12 == 0xffffffff) {\n                  local_48 = (long *)0x0;\n                }\n                goto LAB_0028d688;\n              }\n              if (cVar8 != *pcVar16) goto LAB_0028d487;\nLAB_0028d6a3:\n              local_48[2] = (long)(pcVar16 + 1);\n            }\n            sVar19 = sVar19 + 1;\n            local_40 = 0xffffffff;\n          } while (sVar19 != sVar15);\n        }\n        else if (sVar19 != sVar15) goto LAB_0028d487;\n        *local_80 = (undefined4)local_60;\n        goto LAB_0028d48e;\n      }\n    }" (if "if") (parenthesized_expression "(param_8 != 0)" (( "(") (binary_expression "param_8 != 0" (identifier "param_8") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n      lVar17 = 0;\n      uVar20 = 0;\n      do {\n        while (**(char **)(param_7 + lVar17 * 8) == cVar8) {\nLAB_0028d4f6:\n          piVar1[uVar20] = (int)lVar17;\n          uVar20 = uVar20 + 1;\n          lVar17 = lVar17 + 1;\n          if (param_8 == lVar17) goto LAB_0028d508;\n        }\n        local_60 = CONCAT71(local_60._1_7_,cVar8);\n        pcVar3 = *(code **)(*plVar13 + 0x10);\n        *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d4d6;\n        cVar9 = (*pcVar3)(plVar13);\n        cVar8 = (char)local_60;\n        if ((char)local_60 == cVar9) goto LAB_0028d4f6;\n        lVar17 = lVar17 + 1;\n      } while (param_8 != lVar17);\nLAB_0028d508:\n      local_60 = 0;\njoined_r0x0028d514:\n      if (1 < uVar20) {\n        uVar18 = 1;\n        pcVar2 = *(char **)(param_7 + (long)*piVar1 * 8);\n        *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d532;\n        uVar14 = strlen(pcVar2);\n        do {\n          pcVar2 = *(char **)(param_7 + (long)piVar1[uVar18] * 8);\n          *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d545;\n          sVar15 = strlen(pcVar2);\n          if (sVar15 < uVar14) {\n            uVar14 = sVar15;\n          }\n          uVar18 = uVar18 + 1;\n        } while (uVar18 < uVar20);\n        if ((ulong)local_48[2] < (ulong)local_48[3]) {\n          local_48[2] = local_48[2] + 1;\n        }\n        else {\n          pcVar3 = *(code **)(*local_48 + 0x50);\n          *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d796;\n          (*pcVar3)();\n        }\n        local_60 = local_60 + 1;\n        local_40 = 0xffffffff;\n        if (uVar14 <= local_60) goto LAB_0028d487;\n        cVar8 = '\x01';\n        if (local_48 != (long *)0x0) {\n          cVar8 = '\0';\n          if ((ulong)local_48[3] <= (ulong)local_48[2]) {\n            pcVar3 = *(code **)(*local_48 + 0x48);\n            *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d7a1;\n            iVar11 = (*pcVar3)();\n            cVar8 = '\0';\n            if (iVar11 == -1) {\n              local_48 = (long *)0x0;\n              cVar8 = '\x01';\n            }\n          }\n        }\n        bVar10 = local_58 != (long *)0x0 && (int)local_50 == -1;\n        cVar9 = (int)local_50 == -1;\n        if ((bVar10) && (cVar9 = '\0', (ulong)local_58[3] <= (ulong)local_58[2])) {\n          local_69 = '\0';\n          pcVar3 = *(code **)(*local_58 + 0x48);\n          local_6a = bVar10;\n          *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d736;\n          iVar11 = (*pcVar3)();\n          cVar9 = local_69;\n          if (iVar11 == -1) {\n            local_58 = (long *)0x0;\n            cVar9 = local_6a;\n          }\n        }\n        if (cVar9 == cVar8) goto LAB_0028d487;\n        uVar14 = 0;\n        do {\n          while( true ) {\n            cVar8 = *(char *)(*(long *)(param_7 + (long)piVar1[uVar14] * 8) + local_60);\n            uVar12 = local_40;\n            if ((local_48 != (long *)0x0) && (local_40 == 0xffffffff)) {\n              if ((byte *)local_48[2] < (byte *)local_48[3]) {\n                uVar12 = (uint)*(byte *)local_48[2];\n              }\n              else {\n                pcVar3 = *(code **)(*local_48 + 0x48);\n                local_69 = cVar8;\n                *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d76a;\n                uVar12 = (*pcVar3)();\n                cVar8 = local_69;\n                if (uVar12 == 0xffffffff) {\n                  local_48 = (long *)0x0;\n                  uVar12 = 0xffffffff;\n                }\n              }\n            }\n            if (cVar8 != (char)uVar12) break;\n            uVar14 = uVar14 + 1;\n            if (uVar20 <= uVar14) goto joined_r0x0028d514;\n          }\n          uVar20 = uVar20 - 1;\n          piVar1[uVar14] = piVar1[uVar20];\n        } while (uVar14 < uVar20);\n        goto joined_r0x0028d514;\n      }\n      if (uVar20 == 1) {\n        if ((ulong)local_48[2] < (ulong)local_48[3]) {\n          local_48[2] = local_48[2] + 1;\n        }\n        else {\n          pcVar3 = *(code **)(*local_48 + 0x50);\n          *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d7fe;\n          (*pcVar3)();\n        }\n        uVar20 = local_60;\n        local_40 = 0xffffffff;\n        pcVar2 = *(char **)(param_7 + (long)*piVar1 * 8);\n        local_60 = CONCAT44(local_60._4_4_,*piVar1);\n        sVar19 = uVar20 + 1;\n        *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d670;\n        sVar15 = strlen(pcVar2);\n        if (sVar19 < sVar15) {\n          do {\n            pplVar7 = local_68;\n            pplVar6 = local_78;\n            *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d6c9;\n            cVar8 = FUN_0028d360(pplVar7,pplVar6);\n            if (cVar8 != '\0') goto LAB_0028d487;\n            cVar8 = pcVar2[sVar19];\n            uVar12 = local_40;\n            if ((local_48 == (long *)0x0) || (local_40 != 0xffffffff)) {\nLAB_0028d688:\n              if (cVar8 != (char)uVar12) goto LAB_0028d487;\n              pcVar16 = (char *)local_48[2];\n              if (pcVar16 < (char *)local_48[3]) goto LAB_0028d6a3;\n              pcVar3 = *(code **)(*local_48 + 0x50);\n              *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d7c3;\n              (*pcVar3)();\n            }\n            else {\n              pcVar16 = (char *)local_48[2];\n              if ((char *)local_48[3] <= pcVar16) {\n                pcVar3 = *(code **)(*local_48 + 0x48);\n                *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d7e2;\n                uVar12 = (*pcVar3)();\n                if (uVar12 == 0xffffffff) {\n                  local_48 = (long *)0x0;\n                }\n                goto LAB_0028d688;\n              }\n              if (cVar8 != *pcVar16) goto LAB_0028d487;\nLAB_0028d6a3:\n              local_48[2] = (long)(pcVar16 + 1);\n            }\n            sVar19 = sVar19 + 1;\n            local_40 = 0xffffffff;\n          } while (sVar19 != sVar15);\n        }\n        else if (sVar19 != sVar15) goto LAB_0028d487;\n        *local_80 = (undefined4)local_60;\n        goto LAB_0028d48e;\n      }\n    }" ({ "{") (expression_statement "lVar17 = 0;" (assignment_expression "lVar17 = 0" (identifier "lVar17") (= "=") (number_literal "0")) (; ";")) (expression_statement "uVar20 = 0;" (assignment_expression "uVar20 = 0" (identifier "uVar20") (= "=") (number_literal "0")) (; ";")) (do_statement "do {\n        while (**(char **)(param_7 + lVar17 * 8) == cVar8) {\nLAB_0028d4f6:\n          piVar1[uVar20] = (int)lVar17;\n          uVar20 = uVar20 + 1;\n          lVar17 = lVar17 + 1;\n          if (param_8 == lVar17) goto LAB_0028d508;\n        }\n        local_60 = CONCAT71(local_60._1_7_,cVar8);\n        pcVar3 = *(code **)(*plVar13 + 0x10);\n        *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d4d6;\n        cVar9 = (*pcVar3)(plVar13);\n        cVar8 = (char)local_60;\n        if ((char)local_60 == cVar9) goto LAB_0028d4f6;\n        lVar17 = lVar17 + 1;\n      } while (param_8 != lVar17);" (do "do") (compound_statement "{\n        while (**(char **)(param_7 + lVar17 * 8) == cVar8) {\nLAB_0028d4f6:\n          piVar1[uVar20] = (int)lVar17;\n          uVar20 = uVar20 + 1;\n          lVar17 = lVar17 + 1;\n          if (param_8 == lVar17) goto LAB_0028d508;\n        }\n        local_60 = CONCAT71(local_60._1_7_,cVar8);\n        pcVar3 = *(code **)(*plVar13 + 0x10);\n        *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d4d6;\n        cVar9 = (*pcVar3)(plVar13);\n        cVar8 = (char)local_60;\n        if ((char)local_60 == cVar9) goto LAB_0028d4f6;\n        lVar17 = lVar17 + 1;\n      }" ({ "{") (while_statement "while (**(char **)(param_7 + lVar17 * 8) == cVar8) {\nLAB_0028d4f6:\n          piVar1[uVar20] = (int)lVar17;\n          uVar20 = uVar20 + 1;\n          lVar17 = lVar17 + 1;\n          if (param_8 == lVar17) goto LAB_0028d508;\n        }" (while "while") (parenthesized_expression "(**(char **)(param_7 + lVar17 * 8) == cVar8)" (( "(") (binary_expression "**(char **)(param_7 + lVar17 * 8) == cVar8" (pointer_expression "**(char **)(param_7 + lVar17 * 8)" (* "*") (pointer_expression "*(char **)(param_7 + lVar17 * 8)" (* "*") (cast_expression "(char **)(param_7 + lVar17 * 8)" (( "(") (type_descriptor "char **" (primitive_type "char") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_7 + lVar17 * 8)" (( "(") (binary_expression "param_7 + lVar17 * 8" (identifier "param_7") (+ "+") (binary_expression "lVar17 * 8" (identifier "lVar17") (* "*") (number_literal "8"))) () ")"))))) (== "==") (identifier "cVar8")) () ")")) (compound_statement "{\nLAB_0028d4f6:\n          piVar1[uVar20] = (int)lVar17;\n          uVar20 = uVar20 + 1;\n          lVar17 = lVar17 + 1;\n          if (param_8 == lVar17) goto LAB_0028d508;\n        }" ({ "{") (labeled_statement "LAB_0028d4f6:\n          piVar1[uVar20] = (int)lVar17;" (statement_identifier "LAB_0028d4f6") (: ":") (expression_statement "piVar1[uVar20] = (int)lVar17;" (assignment_expression "piVar1[uVar20] = (int)lVar17" (subscript_expression "piVar1[uVar20]" (identifier "piVar1") ([ "[") (identifier "uVar20") (] "]")) (= "=") (cast_expression "(int)lVar17" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "lVar17"))) (; ";"))) (expression_statement "uVar20 = uVar20 + 1;" (assignment_expression "uVar20 = uVar20 + 1" (identifier "uVar20") (= "=") (binary_expression "uVar20 + 1" (identifier "uVar20") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "lVar17 = lVar17 + 1;" (assignment_expression "lVar17 = lVar17 + 1" (identifier "lVar17") (= "=") (binary_expression "lVar17 + 1" (identifier "lVar17") (+ "+") (number_literal "1"))) (; ";")) (if_statement "if (param_8 == lVar17) goto LAB_0028d508;" (if "if") (parenthesized_expression "(param_8 == lVar17)" (( "(") (binary_expression "param_8 == lVar17" (identifier "param_8") (== "==") (identifier "lVar17")) () ")")) (goto_statement "goto LAB_0028d508;" (goto "goto") (statement_identifier "LAB_0028d508") (; ";"))) (} "}"))) (expression_statement "local_60 = CONCAT71(local_60._1_7_,cVar8);" (assignment_expression "local_60 = CONCAT71(local_60._1_7_,cVar8)" (identifier "local_60") (= "=") (call_expression "CONCAT71(local_60._1_7_,cVar8)" (identifier "CONCAT71") (argument_list "(local_60._1_7_,cVar8)" (( "(") (field_expression "local_60._1_7_" (identifier "local_60") (. ".") (field_identifier "_1_7_")) (, ",") (identifier "cVar8") () ")")))) (; ";")) (expression_statement "pcVar3 = *(code **)(*plVar13 + 0x10);" (assignment_expression "pcVar3 = *(code **)(*plVar13 + 0x10)" (identifier "pcVar3") (= "=") (pointer_expression "*(code **)(*plVar13 + 0x10)" (* "*") (cast_expression "(code **)(*plVar13 + 0x10)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*plVar13 + 0x10)" (( "(") (binary_expression "*plVar13 + 0x10" (pointer_expression "*plVar13" (* "*") (identifier "plVar13")) (+ "+") (number_literal "0x10")) () ")"))))) (; ";")) (expression_statement "*(undefined8 *)((long)auStack_90 + lVar4) = 0x28d4d6;" (assignment_expression "*(undefined8 *)((long)auStack_90 + lVar4) = 0x28d4d6" (pointer_expression "*(undefined8 *)((long)auStack_90 + lVar4)" (* "*") (cast_expression "(undefined8 *)((long)auStack_90 + lVar4)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)auStack_90 + lVar4)" (( "(") (binary_expression "(long)auStack_90 + lVar4" (cast_expression "(long)auStack_90" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "auStack_90")) (+ "+") (identifier "lVar4")) () ")")))) (= "=") (number_literal "0x28d4d6")) (; ";")) (expression_statement "cVar9 = (*pcVar3)(plVar13);" (assignment_expression "cVar9 = (*pcVar3)(plVar13)" (identifier "cVar9") (= "=") (call_expression "(*pcVar3)(plVar13)" (parenthesized_expression "(*pcVar3)" (( "(") (pointer_expression "*pcVar3" (* "*") (identifier "pcVar3")) () ")")) (argument_list "(plVar13)" (( "(") (identifier "plVar13") () ")")))) (; ";")) (expression_statement "cVar8 = (char)local_60;" (assignment_expression "cVar8 = (char)local_60" (identifier "cVar8") (= "=") (cast_expression "(char)local_60" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (identifier "local_60"))) (; ";")) (if_statement "if ((char)local_60 == cVar9) goto LAB_0028d4f6;" (if "if") (parenthesized_expression "((char)local_60 == cVar9)" (( "(") (binary_expression "(char)local_60 == cVar9" (cast_expression "(char)local_60" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (identifier "local_60")) (== "==") (identifier "cVar9")) () ")")) (goto_statement "goto LAB_0028d4f6;" (goto "goto") (statement_identifier "LAB_0028d4f6") (; ";"))) (expression_statement "lVar17 = lVar17 + 1;" (assignment_expression "lVar17 = lVar17 + 1" (identifier "lVar17") (= "=") (binary_expression "lVar17 + 1" (identifier "lVar17") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(param_8 != lVar17)" (( "(") (binary_expression "param_8 != lVar17" (identifier "param_8") (!= "!=") (identifier "lVar17")) () ")")) (; ";")) (labeled_statement "LAB_0028d508:\n      local_60 = 0;" (statement_identifier "LAB_0028d508") (: ":") (expression_statement "local_60 = 0;" (assignment_expression "local_60 = 0" (identifier "local_60") (= "=") (number_literal "0")) (; ";"))) (labeled_statement "joined_r0x0028d514:\n      if (1 < uVar20) {\n        uVar18 = 1;\n        pcVar2 = *(char **)(param_7 + (long)*piVar1 * 8);\n        *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d532;\n        uVar14 = strlen(pcVar2);\n        do {\n          pcVar2 = *(char **)(param_7 + (long)piVar1[uVar18] * 8);\n          *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d545;\n          sVar15 = strlen(pcVar2);\n          if (sVar15 < uVar14) {\n            uVar14 = sVar15;\n          }\n          uVar18 = uVar18 + 1;\n        } while (uVar18 < uVar20);\n        if ((ulong)local_48[2] < (ulong)local_48[3]) {\n          local_48[2] = local_48[2] + 1;\n        }\n        else {\n          pcVar3 = *(code **)(*local_48 + 0x50);\n          *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d796;\n          (*pcVar3)();\n        }\n        local_60 = local_60 + 1;\n        local_40 = 0xffffffff;\n        if (uVar14 <= local_60) goto LAB_0028d487;\n        cVar8 = '\x01';\n        if (local_48 != (long *)0x0) {\n          cVar8 = '\0';\n          if ((ulong)local_48[3] <= (ulong)local_48[2]) {\n            pcVar3 = *(code **)(*local_48 + 0x48);\n            *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d7a1;\n            iVar11 = (*pcVar3)();\n            cVar8 = '\0';\n            if (iVar11 == -1) {\n              local_48 = (long *)0x0;\n              cVar8 = '\x01';\n            }\n          }\n        }\n        bVar10 = local_58 != (long *)0x0 && (int)local_50 == -1;\n        cVar9 = (int)local_50 == -1;\n        if ((bVar10) && (cVar9 = '\0', (ulong)local_58[3] <= (ulong)local_58[2])) {\n          local_69 = '\0';\n          pcVar3 = *(code **)(*local_58 + 0x48);\n          local_6a = bVar10;\n          *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d736;\n          iVar11 = (*pcVar3)();\n          cVar9 = local_69;\n          if (iVar11 == -1) {\n            local_58 = (long *)0x0;\n            cVar9 = local_6a;\n          }\n        }\n        if (cVar9 == cVar8) goto LAB_0028d487;\n        uVar14 = 0;\n        do {\n          while( true ) {\n            cVar8 = *(char *)(*(long *)(param_7 + (long)piVar1[uVar14] * 8) + local_60);\n            uVar12 = local_40;\n            if ((local_48 != (long *)0x0) && (local_40 == 0xffffffff)) {\n              if ((byte *)local_48[2] < (byte *)local_48[3]) {\n                uVar12 = (uint)*(byte *)local_48[2];\n              }\n              else {\n                pcVar3 = *(code **)(*local_48 + 0x48);\n                local_69 = cVar8;\n                *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d76a;\n                uVar12 = (*pcVar3)();\n                cVar8 = local_69;\n                if (uVar12 == 0xffffffff) {\n                  local_48 = (long *)0x0;\n                  uVar12 = 0xffffffff;\n                }\n              }\n            }\n            if (cVar8 != (char)uVar12) break;\n            uVar14 = uVar14 + 1;\n            if (uVar20 <= uVar14) goto joined_r0x0028d514;\n          }\n          uVar20 = uVar20 - 1;\n          piVar1[uVar14] = piVar1[uVar20];\n        } while (uVar14 < uVar20);\n        goto joined_r0x0028d514;\n      }" (statement_identifier "joined_r0x0028d514") (: ":") (if_statement "if (1 < uVar20) {\n        uVar18 = 1;\n        pcVar2 = *(char **)(param_7 + (long)*piVar1 * 8);\n        *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d532;\n        uVar14 = strlen(pcVar2);\n        do {\n          pcVar2 = *(char **)(param_7 + (long)piVar1[uVar18] * 8);\n          *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d545;\n          sVar15 = strlen(pcVar2);\n          if (sVar15 < uVar14) {\n            uVar14 = sVar15;\n          }\n          uVar18 = uVar18 + 1;\n        } while (uVar18 < uVar20);\n        if ((ulong)local_48[2] < (ulong)local_48[3]) {\n          local_48[2] = local_48[2] + 1;\n        }\n        else {\n          pcVar3 = *(code **)(*local_48 + 0x50);\n          *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d796;\n          (*pcVar3)();\n        }\n        local_60 = local_60 + 1;\n        local_40 = 0xffffffff;\n        if (uVar14 <= local_60) goto LAB_0028d487;\n        cVar8 = '\x01';\n        if (local_48 != (long *)0x0) {\n          cVar8 = '\0';\n          if ((ulong)local_48[3] <= (ulong)local_48[2]) {\n            pcVar3 = *(code **)(*local_48 + 0x48);\n            *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d7a1;\n            iVar11 = (*pcVar3)();\n            cVar8 = '\0';\n            if (iVar11 == -1) {\n              local_48 = (long *)0x0;\n              cVar8 = '\x01';\n            }\n          }\n        }\n        bVar10 = local_58 != (long *)0x0 && (int)local_50 == -1;\n        cVar9 = (int)local_50 == -1;\n        if ((bVar10) && (cVar9 = '\0', (ulong)local_58[3] <= (ulong)local_58[2])) {\n          local_69 = '\0';\n          pcVar3 = *(code **)(*local_58 + 0x48);\n          local_6a = bVar10;\n          *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d736;\n          iVar11 = (*pcVar3)();\n          cVar9 = local_69;\n          if (iVar11 == -1) {\n            local_58 = (long *)0x0;\n            cVar9 = local_6a;\n          }\n        }\n        if (cVar9 == cVar8) goto LAB_0028d487;\n        uVar14 = 0;\n        do {\n          while( true ) {\n            cVar8 = *(char *)(*(long *)(param_7 + (long)piVar1[uVar14] * 8) + local_60);\n            uVar12 = local_40;\n            if ((local_48 != (long *)0x0) && (local_40 == 0xffffffff)) {\n              if ((byte *)local_48[2] < (byte *)local_48[3]) {\n                uVar12 = (uint)*(byte *)local_48[2];\n              }\n              else {\n                pcVar3 = *(code **)(*local_48 + 0x48);\n                local_69 = cVar8;\n                *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d76a;\n                uVar12 = (*pcVar3)();\n                cVar8 = local_69;\n                if (uVar12 == 0xffffffff) {\n                  local_48 = (long *)0x0;\n                  uVar12 = 0xffffffff;\n                }\n              }\n            }\n            if (cVar8 != (char)uVar12) break;\n            uVar14 = uVar14 + 1;\n            if (uVar20 <= uVar14) goto joined_r0x0028d514;\n          }\n          uVar20 = uVar20 - 1;\n          piVar1[uVar14] = piVar1[uVar20];\n        } while (uVar14 < uVar20);\n        goto joined_r0x0028d514;\n      }" (if "if") (parenthesized_expression "(1 < uVar20)" (( "(") (binary_expression "1 < uVar20" (number_literal "1") (< "<") (identifier "uVar20")) () ")")) (compound_statement "{\n        uVar18 = 1;\n        pcVar2 = *(char **)(param_7 + (long)*piVar1 * 8);\n        *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d532;\n        uVar14 = strlen(pcVar2);\n        do {\n          pcVar2 = *(char **)(param_7 + (long)piVar1[uVar18] * 8);\n          *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d545;\n          sVar15 = strlen(pcVar2);\n          if (sVar15 < uVar14) {\n            uVar14 = sVar15;\n          }\n          uVar18 = uVar18 + 1;\n        } while (uVar18 < uVar20);\n        if ((ulong)local_48[2] < (ulong)local_48[3]) {\n          local_48[2] = local_48[2] + 1;\n        }\n        else {\n          pcVar3 = *(code **)(*local_48 + 0x50);\n          *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d796;\n          (*pcVar3)();\n        }\n        local_60 = local_60 + 1;\n        local_40 = 0xffffffff;\n        if (uVar14 <= local_60) goto LAB_0028d487;\n        cVar8 = '\x01';\n        if (local_48 != (long *)0x0) {\n          cVar8 = '\0';\n          if ((ulong)local_48[3] <= (ulong)local_48[2]) {\n            pcVar3 = *(code **)(*local_48 + 0x48);\n            *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d7a1;\n            iVar11 = (*pcVar3)();\n            cVar8 = '\0';\n            if (iVar11 == -1) {\n              local_48 = (long *)0x0;\n              cVar8 = '\x01';\n            }\n          }\n        }\n        bVar10 = local_58 != (long *)0x0 && (int)local_50 == -1;\n        cVar9 = (int)local_50 == -1;\n        if ((bVar10) && (cVar9 = '\0', (ulong)local_58[3] <= (ulong)local_58[2])) {\n          local_69 = '\0';\n          pcVar3 = *(code **)(*local_58 + 0x48);\n          local_6a = bVar10;\n          *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d736;\n          iVar11 = (*pcVar3)();\n          cVar9 = local_69;\n          if (iVar11 == -1) {\n            local_58 = (long *)0x0;\n            cVar9 = local_6a;\n          }\n        }\n        if (cVar9 == cVar8) goto LAB_0028d487;\n        uVar14 = 0;\n        do {\n          while( true ) {\n            cVar8 = *(char *)(*(long *)(param_7 + (long)piVar1[uVar14] * 8) + local_60);\n            uVar12 = local_40;\n            if ((local_48 != (long *)0x0) && (local_40 == 0xffffffff)) {\n              if ((byte *)local_48[2] < (byte *)local_48[3]) {\n                uVar12 = (uint)*(byte *)local_48[2];\n              }\n              else {\n                pcVar3 = *(code **)(*local_48 + 0x48);\n                local_69 = cVar8;\n                *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d76a;\n                uVar12 = (*pcVar3)();\n                cVar8 = local_69;\n                if (uVar12 == 0xffffffff) {\n                  local_48 = (long *)0x0;\n                  uVar12 = 0xffffffff;\n                }\n              }\n            }\n            if (cVar8 != (char)uVar12) break;\n            uVar14 = uVar14 + 1;\n            if (uVar20 <= uVar14) goto joined_r0x0028d514;\n          }\n          uVar20 = uVar20 - 1;\n          piVar1[uVar14] = piVar1[uVar20];\n        } while (uVar14 < uVar20);\n        goto joined_r0x0028d514;\n      }" ({ "{") (expression_statement "uVar18 = 1;" (assignment_expression "uVar18 = 1" (identifier "uVar18") (= "=") (number_literal "1")) (; ";")) (expression_statement "pcVar2 = *(char **)(param_7 + (long)*piVar1 * 8);" (assignment_expression "pcVar2 = *(char **)(param_7 + (long)*piVar1 * 8)" (identifier "pcVar2") (= "=") (pointer_expression "*(char **)(param_7 + (long)*piVar1 * 8)" (* "*") (cast_expression "(char **)(param_7 + (long)*piVar1 * 8)" (( "(") (type_descriptor "char **" (primitive_type "char") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_7 + (long)*piVar1 * 8)" (( "(") (binary_expression "param_7 + (long)*piVar1 * 8" (identifier "param_7") (+ "+") (binary_expression "(long)*piVar1 * 8" (cast_expression "(long)*piVar1" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (pointer_expression "*piVar1" (* "*") (identifier "piVar1"))) (* "*") (number_literal "8"))) () ")"))))) (; ";")) (expression_statement "*(undefined8 *)((long)auStack_90 + lVar4) = 0x28d532;" (assignment_expression "*(undefined8 *)((long)auStack_90 + lVar4) = 0x28d532" (pointer_expression "*(undefined8 *)((long)auStack_90 + lVar4)" (* "*") (cast_expression "(undefined8 *)((long)auStack_90 + lVar4)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)auStack_90 + lVar4)" (( "(") (binary_expression "(long)auStack_90 + lVar4" (cast_expression "(long)auStack_90" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "auStack_90")) (+ "+") (identifier "lVar4")) () ")")))) (= "=") (number_literal "0x28d532")) (; ";")) (expression_statement "uVar14 = strlen(pcVar2);" (assignment_expression "uVar14 = strlen(pcVar2)" (identifier "uVar14") (= "=") (call_expression "strlen(pcVar2)" (identifier "strlen") (argument_list "(pcVar2)" (( "(") (identifier "pcVar2") () ")")))) (; ";")) (do_statement "do {\n          pcVar2 = *(char **)(param_7 + (long)piVar1[uVar18] * 8);\n          *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d545;\n          sVar15 = strlen(pcVar2);\n          if (sVar15 < uVar14) {\n            uVar14 = sVar15;\n          }\n          uVar18 = uVar18 + 1;\n        } while (uVar18 < uVar20);" (do "do") (compound_statement "{\n          pcVar2 = *(char **)(param_7 + (long)piVar1[uVar18] * 8);\n          *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d545;\n          sVar15 = strlen(pcVar2);\n          if (sVar15 < uVar14) {\n            uVar14 = sVar15;\n          }\n          uVar18 = uVar18 + 1;\n        }" ({ "{") (expression_statement "pcVar2 = *(char **)(param_7 + (long)piVar1[uVar18] * 8);" (assignment_expression "pcVar2 = *(char **)(param_7 + (long)piVar1[uVar18] * 8)" (identifier "pcVar2") (= "=") (pointer_expression "*(char **)(param_7 + (long)piVar1[uVar18] * 8)" (* "*") (cast_expression "(char **)(param_7 + (long)piVar1[uVar18] * 8)" (( "(") (type_descriptor "char **" (primitive_type "char") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_7 + (long)piVar1[uVar18] * 8)" (( "(") (binary_expression "param_7 + (long)piVar1[uVar18] * 8" (identifier "param_7") (+ "+") (binary_expression "(long)piVar1[uVar18] * 8" (cast_expression "(long)piVar1[uVar18]" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (subscript_expression "piVar1[uVar18]" (identifier "piVar1") ([ "[") (identifier "uVar18") (] "]"))) (* "*") (number_literal "8"))) () ")"))))) (; ";")) (expression_statement "*(undefined8 *)((long)auStack_90 + lVar4) = 0x28d545;" (assignment_expression "*(undefined8 *)((long)auStack_90 + lVar4) = 0x28d545" (pointer_expression "*(undefined8 *)((long)auStack_90 + lVar4)" (* "*") (cast_expression "(undefined8 *)((long)auStack_90 + lVar4)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)auStack_90 + lVar4)" (( "(") (binary_expression "(long)auStack_90 + lVar4" (cast_expression "(long)auStack_90" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "auStack_90")) (+ "+") (identifier "lVar4")) () ")")))) (= "=") (number_literal "0x28d545")) (; ";")) (expression_statement "sVar15 = strlen(pcVar2);" (assignment_expression "sVar15 = strlen(pcVar2)" (identifier "sVar15") (= "=") (call_expression "strlen(pcVar2)" (identifier "strlen") (argument_list "(pcVar2)" (( "(") (identifier "pcVar2") () ")")))) (; ";")) (if_statement "if (sVar15 < uVar14) {\n            uVar14 = sVar15;\n          }" (if "if") (parenthesized_expression "(sVar15 < uVar14)" (( "(") (binary_expression "sVar15 < uVar14" (identifier "sVar15") (< "<") (identifier "uVar14")) () ")")) (compound_statement "{\n            uVar14 = sVar15;\n          }" ({ "{") (expression_statement "uVar14 = sVar15;" (assignment_expression "uVar14 = sVar15" (identifier "uVar14") (= "=") (identifier "sVar15")) (; ";")) (} "}"))) (expression_statement "uVar18 = uVar18 + 1;" (assignment_expression "uVar18 = uVar18 + 1" (identifier "uVar18") (= "=") (binary_expression "uVar18 + 1" (identifier "uVar18") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(uVar18 < uVar20)" (( "(") (binary_expression "uVar18 < uVar20" (identifier "uVar18") (< "<") (identifier "uVar20")) () ")")) (; ";")) (if_statement "if ((ulong)local_48[2] < (ulong)local_48[3]) {\n          local_48[2] = local_48[2] + 1;\n        }\n        else {\n          pcVar3 = *(code **)(*local_48 + 0x50);\n          *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d796;\n          (*pcVar3)();\n        }" (if "if") (parenthesized_expression "((ulong)local_48[2] < (ulong)local_48[3])" (( "(") (binary_expression "(ulong)local_48[2] < (ulong)local_48[3]" (cast_expression "(ulong)local_48[2]" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (subscript_expression "local_48[2]" (identifier "local_48") ([ "[") (number_literal "2") (] "]"))) (< "<") (cast_expression "(ulong)local_48[3]" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (subscript_expression "local_48[3]" (identifier "local_48") ([ "[") (number_literal "3") (] "]")))) () ")")) (compound_statement "{\n          local_48[2] = local_48[2] + 1;\n        }" ({ "{") (expression_statement "local_48[2] = local_48[2] + 1;" (assignment_expression "local_48[2] = local_48[2] + 1" (subscript_expression "local_48[2]" (identifier "local_48") ([ "[") (number_literal "2") (] "]")) (= "=") (binary_expression "local_48[2] + 1" (subscript_expression "local_48[2]" (identifier "local_48") ([ "[") (number_literal "2") (] "]")) (+ "+") (number_literal "1"))) (; ";")) (} "}")) (else_clause "else {\n          pcVar3 = *(code **)(*local_48 + 0x50);\n          *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d796;\n          (*pcVar3)();\n        }" (else "else") (compound_statement "{\n          pcVar3 = *(code **)(*local_48 + 0x50);\n          *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d796;\n          (*pcVar3)();\n        }" ({ "{") (expression_statement "pcVar3 = *(code **)(*local_48 + 0x50);" (assignment_expression "pcVar3 = *(code **)(*local_48 + 0x50)" (identifier "pcVar3") (= "=") (pointer_expression "*(code **)(*local_48 + 0x50)" (* "*") (cast_expression "(code **)(*local_48 + 0x50)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*local_48 + 0x50)" (( "(") (binary_expression "*local_48 + 0x50" (pointer_expression "*local_48" (* "*") (identifier "local_48")) (+ "+") (number_literal "0x50")) () ")"))))) (; ";")) (expression_statement "*(undefined8 *)((long)auStack_90 + lVar4) = 0x28d796;" (assignment_expression "*(undefined8 *)((long)auStack_90 + lVar4) = 0x28d796" (pointer_expression "*(undefined8 *)((long)auStack_90 + lVar4)" (* "*") (cast_expression "(undefined8 *)((long)auStack_90 + lVar4)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)auStack_90 + lVar4)" (( "(") (binary_expression "(long)auStack_90 + lVar4" (cast_expression "(long)auStack_90" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "auStack_90")) (+ "+") (identifier "lVar4")) () ")")))) (= "=") (number_literal "0x28d796")) (; ";")) (expression_statement "(*pcVar3)();" (call_expression "(*pcVar3)()" (parenthesized_expression "(*pcVar3)" (( "(") (pointer_expression "*pcVar3" (* "*") (identifier "pcVar3")) () ")")) (argument_list "()" (( "(") () ")"))) (; ";")) (} "}")))) (expression_statement "local_60 = local_60 + 1;" (assignment_expression "local_60 = local_60 + 1" (identifier "local_60") (= "=") (binary_expression "local_60 + 1" (identifier "local_60") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "local_40 = 0xffffffff;" (assignment_expression "local_40 = 0xffffffff" (identifier "local_40") (= "=") (number_literal "0xffffffff")) (; ";")) (if_statement "if (uVar14 <= local_60) goto LAB_0028d487;" (if "if") (parenthesized_expression "(uVar14 <= local_60)" (( "(") (binary_expression "uVar14 <= local_60" (identifier "uVar14") (<= "<=") (identifier "local_60")) () ")")) (goto_statement "goto LAB_0028d487;" (goto "goto") (statement_identifier "LAB_0028d487") (; ";"))) (expression_statement "cVar8 = '\x01';" (assignment_expression "cVar8 = '\x01'" (identifier "cVar8") (= "=") (char_literal "'\x01'" (' "'") (escape_sequence "\x01") (' "'"))) (; ";")) (if_statement "if (local_48 != (long *)0x0) {\n          cVar8 = '\0';\n          if ((ulong)local_48[3] <= (ulong)local_48[2]) {\n            pcVar3 = *(code **)(*local_48 + 0x48);\n            *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d7a1;\n            iVar11 = (*pcVar3)();\n            cVar8 = '\0';\n            if (iVar11 == -1) {\n              local_48 = (long *)0x0;\n              cVar8 = '\x01';\n            }\n          }\n        }" (if "if") (parenthesized_expression "(local_48 != (long *)0x0)" (( "(") (binary_expression "local_48 != (long *)0x0" (identifier "local_48") (!= "!=") (cast_expression "(long *)0x0" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n          cVar8 = '\0';\n          if ((ulong)local_48[3] <= (ulong)local_48[2]) {\n            pcVar3 = *(code **)(*local_48 + 0x48);\n            *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d7a1;\n            iVar11 = (*pcVar3)();\n            cVar8 = '\0';\n            if (iVar11 == -1) {\n              local_48 = (long *)0x0;\n              cVar8 = '\x01';\n            }\n          }\n        }" ({ "{") (expression_statement "cVar8 = '\0';" (assignment_expression "cVar8 = '\0'" (identifier "cVar8") (= "=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) (; ";")) (if_statement "if ((ulong)local_48[3] <= (ulong)local_48[2]) {\n            pcVar3 = *(code **)(*local_48 + 0x48);\n            *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d7a1;\n            iVar11 = (*pcVar3)();\n            cVar8 = '\0';\n            if (iVar11 == -1) {\n              local_48 = (long *)0x0;\n              cVar8 = '\x01';\n            }\n          }" (if "if") (parenthesized_expression "((ulong)local_48[3] <= (ulong)local_48[2])" (( "(") (binary_expression "(ulong)local_48[3] <= (ulong)local_48[2]" (cast_expression "(ulong)local_48[3]" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (subscript_expression "local_48[3]" (identifier "local_48") ([ "[") (number_literal "3") (] "]"))) (<= "<=") (cast_expression "(ulong)local_48[2]" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (subscript_expression "local_48[2]" (identifier "local_48") ([ "[") (number_literal "2") (] "]")))) () ")")) (compound_statement "{\n            pcVar3 = *(code **)(*local_48 + 0x48);\n            *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d7a1;\n            iVar11 = (*pcVar3)();\n            cVar8 = '\0';\n            if (iVar11 == -1) {\n              local_48 = (long *)0x0;\n              cVar8 = '\x01';\n            }\n          }" ({ "{") (expression_statement "pcVar3 = *(code **)(*local_48 + 0x48);" (assignment_expression "pcVar3 = *(code **)(*local_48 + 0x48)" (identifier "pcVar3") (= "=") (pointer_expression "*(code **)(*local_48 + 0x48)" (* "*") (cast_expression "(code **)(*local_48 + 0x48)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*local_48 + 0x48)" (( "(") (binary_expression "*local_48 + 0x48" (pointer_expression "*local_48" (* "*") (identifier "local_48")) (+ "+") (number_literal "0x48")) () ")"))))) (; ";")) (expression_statement "*(undefined8 *)((long)auStack_90 + lVar4) = 0x28d7a1;" (assignment_expression "*(undefined8 *)((long)auStack_90 + lVar4) = 0x28d7a1" (pointer_expression "*(undefined8 *)((long)auStack_90 + lVar4)" (* "*") (cast_expression "(undefined8 *)((long)auStack_90 + lVar4)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)auStack_90 + lVar4)" (( "(") (binary_expression "(long)auStack_90 + lVar4" (cast_expression "(long)auStack_90" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "auStack_90")) (+ "+") (identifier "lVar4")) () ")")))) (= "=") (number_literal "0x28d7a1")) (; ";")) (expression_statement "iVar11 = (*pcVar3)();" (assignment_expression "iVar11 = (*pcVar3)()" (identifier "iVar11") (= "=") (call_expression "(*pcVar3)()" (parenthesized_expression "(*pcVar3)" (( "(") (pointer_expression "*pcVar3" (* "*") (identifier "pcVar3")) () ")")) (argument_list "()" (( "(") () ")")))) (; ";")) (expression_statement "cVar8 = '\0';" (assignment_expression "cVar8 = '\0'" (identifier "cVar8") (= "=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) (; ";")) (if_statement "if (iVar11 == -1) {\n              local_48 = (long *)0x0;\n              cVar8 = '\x01';\n            }" (if "if") (parenthesized_expression "(iVar11 == -1)" (( "(") (binary_expression "iVar11 == -1" (identifier "iVar11") (== "==") (number_literal "-1")) () ")")) (compound_statement "{\n              local_48 = (long *)0x0;\n              cVar8 = '\x01';\n            }" ({ "{") (expression_statement "local_48 = (long *)0x0;" (assignment_expression "local_48 = (long *)0x0" (identifier "local_48") (= "=") (cast_expression "(long *)0x0" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (expression_statement "cVar8 = '\x01';" (assignment_expression "cVar8 = '\x01'" (identifier "cVar8") (= "=") (char_literal "'\x01'" (' "'") (escape_sequence "\x01") (' "'"))) (; ";")) (} "}"))) (} "}"))) (} "}"))) (expression_statement "bVar10 = local_58 != (long *)0x0 && (int)local_50 == -1;" (assignment_expression "bVar10 = local_58 != (long *)0x0 && (int)local_50 == -1" (identifier "bVar10") (= "=") (binary_expression "local_58 != (long *)0x0 && (int)local_50 == -1" (binary_expression "local_58 != (long *)0x0" (identifier "local_58") (!= "!=") (cast_expression "(long *)0x0" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (&& "&&") (binary_expression "(int)local_50 == -1" (cast_expression "(int)local_50" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_50")) (== "==") (number_literal "-1")))) (; ";")) (expression_statement "cVar9 = (int)local_50 == -1;" (assignment_expression "cVar9 = (int)local_50 == -1" (identifier "cVar9") (= "=") (binary_expression "(int)local_50 == -1" (cast_expression "(int)local_50" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_50")) (== "==") (number_literal "-1"))) (; ";")) (if_statement "if ((bVar10) && (cVar9 = '\0', (ulong)local_58[3] <= (ulong)local_58[2])) {\n          local_69 = '\0';\n          pcVar3 = *(code **)(*local_58 + 0x48);\n          local_6a = bVar10;\n          *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d736;\n          iVar11 = (*pcVar3)();\n          cVar9 = local_69;\n          if (iVar11 == -1) {\n            local_58 = (long *)0x0;\n            cVar9 = local_6a;\n          }\n        }" (if "if") (parenthesized_expression "((bVar10) && (cVar9 = '\0', (ulong)local_58[3] <= (ulong)local_58[2]))" (( "(") (binary_expression "(bVar10) && (cVar9 = '\0', (ulong)local_58[3] <= (ulong)local_58[2])" (parenthesized_expression "(bVar10)" (( "(") (identifier "bVar10") () ")")) (&& "&&") (parenthesized_expression "(cVar9 = '\0', (ulong)local_58[3] <= (ulong)local_58[2])" (( "(") (comma_expression "cVar9 = '\0', (ulong)local_58[3] <= (ulong)local_58[2]" (assignment_expression "cVar9 = '\0'" (identifier "cVar9") (= "=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) (, ",") (binary_expression "(ulong)local_58[3] <= (ulong)local_58[2]" (cast_expression "(ulong)local_58[3]" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (subscript_expression "local_58[3]" (identifier "local_58") ([ "[") (number_literal "3") (] "]"))) (<= "<=") (cast_expression "(ulong)local_58[2]" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (subscript_expression "local_58[2]" (identifier "local_58") ([ "[") (number_literal "2") (] "]"))))) () ")"))) () ")")) (compound_statement "{\n          local_69 = '\0';\n          pcVar3 = *(code **)(*local_58 + 0x48);\n          local_6a = bVar10;\n          *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d736;\n          iVar11 = (*pcVar3)();\n          cVar9 = local_69;\n          if (iVar11 == -1) {\n            local_58 = (long *)0x0;\n            cVar9 = local_6a;\n          }\n        }" ({ "{") (expression_statement "local_69 = '\0';" (assignment_expression "local_69 = '\0'" (identifier "local_69") (= "=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) (; ";")) (expression_statement "pcVar3 = *(code **)(*local_58 + 0x48);" (assignment_expression "pcVar3 = *(code **)(*local_58 + 0x48)" (identifier "pcVar3") (= "=") (pointer_expression "*(code **)(*local_58 + 0x48)" (* "*") (cast_expression "(code **)(*local_58 + 0x48)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*local_58 + 0x48)" (( "(") (binary_expression "*local_58 + 0x48" (pointer_expression "*local_58" (* "*") (identifier "local_58")) (+ "+") (number_literal "0x48")) () ")"))))) (; ";")) (expression_statement "local_6a = bVar10;" (assignment_expression "local_6a = bVar10" (identifier "local_6a") (= "=") (identifier "bVar10")) (; ";")) (expression_statement "*(undefined8 *)((long)auStack_90 + lVar4) = 0x28d736;" (assignment_expression "*(undefined8 *)((long)auStack_90 + lVar4) = 0x28d736" (pointer_expression "*(undefined8 *)((long)auStack_90 + lVar4)" (* "*") (cast_expression "(undefined8 *)((long)auStack_90 + lVar4)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)auStack_90 + lVar4)" (( "(") (binary_expression "(long)auStack_90 + lVar4" (cast_expression "(long)auStack_90" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "auStack_90")) (+ "+") (identifier "lVar4")) () ")")))) (= "=") (number_literal "0x28d736")) (; ";")) (expression_statement "iVar11 = (*pcVar3)();" (assignment_expression "iVar11 = (*pcVar3)()" (identifier "iVar11") (= "=") (call_expression "(*pcVar3)()" (parenthesized_expression "(*pcVar3)" (( "(") (pointer_expression "*pcVar3" (* "*") (identifier "pcVar3")) () ")")) (argument_list "()" (( "(") () ")")))) (; ";")) (expression_statement "cVar9 = local_69;" (assignment_expression "cVar9 = local_69" (identifier "cVar9") (= "=") (identifier "local_69")) (; ";")) (if_statement "if (iVar11 == -1) {\n            local_58 = (long *)0x0;\n            cVar9 = local_6a;\n          }" (if "if") (parenthesized_expression "(iVar11 == -1)" (( "(") (binary_expression "iVar11 == -1" (identifier "iVar11") (== "==") (number_literal "-1")) () ")")) (compound_statement "{\n            local_58 = (long *)0x0;\n            cVar9 = local_6a;\n          }" ({ "{") (expression_statement "local_58 = (long *)0x0;" (assignment_expression "local_58 = (long *)0x0" (identifier "local_58") (= "=") (cast_expression "(long *)0x0" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (expression_statement "cVar9 = local_6a;" (assignment_expression "cVar9 = local_6a" (identifier "cVar9") (= "=") (identifier "local_6a")) (; ";")) (} "}"))) (} "}"))) (if_statement "if (cVar9 == cVar8) goto LAB_0028d487;" (if "if") (parenthesized_expression "(cVar9 == cVar8)" (( "(") (binary_expression "cVar9 == cVar8" (identifier "cVar9") (== "==") (identifier "cVar8")) () ")")) (goto_statement "goto LAB_0028d487;" (goto "goto") (statement_identifier "LAB_0028d487") (; ";"))) (expression_statement "uVar14 = 0;" (assignment_expression "uVar14 = 0" (identifier "uVar14") (= "=") (number_literal "0")) (; ";")) (do_statement "do {\n          while( true ) {\n            cVar8 = *(char *)(*(long *)(param_7 + (long)piVar1[uVar14] * 8) + local_60);\n            uVar12 = local_40;\n            if ((local_48 != (long *)0x0) && (local_40 == 0xffffffff)) {\n              if ((byte *)local_48[2] < (byte *)local_48[3]) {\n                uVar12 = (uint)*(byte *)local_48[2];\n              }\n              else {\n                pcVar3 = *(code **)(*local_48 + 0x48);\n                local_69 = cVar8;\n                *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d76a;\n                uVar12 = (*pcVar3)();\n                cVar8 = local_69;\n                if (uVar12 == 0xffffffff) {\n                  local_48 = (long *)0x0;\n                  uVar12 = 0xffffffff;\n                }\n              }\n            }\n            if (cVar8 != (char)uVar12) break;\n            uVar14 = uVar14 + 1;\n            if (uVar20 <= uVar14) goto joined_r0x0028d514;\n          }\n          uVar20 = uVar20 - 1;\n          piVar1[uVar14] = piVar1[uVar20];\n        } while (uVar14 < uVar20);" (do "do") (compound_statement "{\n          while( true ) {\n            cVar8 = *(char *)(*(long *)(param_7 + (long)piVar1[uVar14] * 8) + local_60);\n            uVar12 = local_40;\n            if ((local_48 != (long *)0x0) && (local_40 == 0xffffffff)) {\n              if ((byte *)local_48[2] < (byte *)local_48[3]) {\n                uVar12 = (uint)*(byte *)local_48[2];\n              }\n              else {\n                pcVar3 = *(code **)(*local_48 + 0x48);\n                local_69 = cVar8;\n                *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d76a;\n                uVar12 = (*pcVar3)();\n                cVar8 = local_69;\n                if (uVar12 == 0xffffffff) {\n                  local_48 = (long *)0x0;\n                  uVar12 = 0xffffffff;\n                }\n              }\n            }\n            if (cVar8 != (char)uVar12) break;\n            uVar14 = uVar14 + 1;\n            if (uVar20 <= uVar14) goto joined_r0x0028d514;\n          }\n          uVar20 = uVar20 - 1;\n          piVar1[uVar14] = piVar1[uVar20];\n        }" ({ "{") (while_statement "while( true ) {\n            cVar8 = *(char *)(*(long *)(param_7 + (long)piVar1[uVar14] * 8) + local_60);\n            uVar12 = local_40;\n            if ((local_48 != (long *)0x0) && (local_40 == 0xffffffff)) {\n              if ((byte *)local_48[2] < (byte *)local_48[3]) {\n                uVar12 = (uint)*(byte *)local_48[2];\n              }\n              else {\n                pcVar3 = *(code **)(*local_48 + 0x48);\n                local_69 = cVar8;\n                *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d76a;\n                uVar12 = (*pcVar3)();\n                cVar8 = local_69;\n                if (uVar12 == 0xffffffff) {\n                  local_48 = (long *)0x0;\n                  uVar12 = 0xffffffff;\n                }\n              }\n            }\n            if (cVar8 != (char)uVar12) break;\n            uVar14 = uVar14 + 1;\n            if (uVar20 <= uVar14) goto joined_r0x0028d514;\n          }" (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (compound_statement "{\n            cVar8 = *(char *)(*(long *)(param_7 + (long)piVar1[uVar14] * 8) + local_60);\n            uVar12 = local_40;\n            if ((local_48 != (long *)0x0) && (local_40 == 0xffffffff)) {\n              if ((byte *)local_48[2] < (byte *)local_48[3]) {\n                uVar12 = (uint)*(byte *)local_48[2];\n              }\n              else {\n                pcVar3 = *(code **)(*local_48 + 0x48);\n                local_69 = cVar8;\n                *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d76a;\n                uVar12 = (*pcVar3)();\n                cVar8 = local_69;\n                if (uVar12 == 0xffffffff) {\n                  local_48 = (long *)0x0;\n                  uVar12 = 0xffffffff;\n                }\n              }\n            }\n            if (cVar8 != (char)uVar12) break;\n            uVar14 = uVar14 + 1;\n            if (uVar20 <= uVar14) goto joined_r0x0028d514;\n          }" ({ "{") (expression_statement "cVar8 = *(char *)(*(long *)(param_7 + (long)piVar1[uVar14] * 8) + local_60);" (assignment_expression "cVar8 = *(char *)(*(long *)(param_7 + (long)piVar1[uVar14] * 8) + local_60)" (identifier "cVar8") (= "=") (pointer_expression "*(char *)(*(long *)(param_7 + (long)piVar1[uVar14] * 8) + local_60)" (* "*") (cast_expression "(char *)(*(long *)(param_7 + (long)piVar1[uVar14] * 8) + local_60)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(long *)(param_7 + (long)piVar1[uVar14] * 8) + local_60)" (( "(") (binary_expression "*(long *)(param_7 + (long)piVar1[uVar14] * 8) + local_60" (pointer_expression "*(long *)(param_7 + (long)piVar1[uVar14] * 8)" (* "*") (cast_expression "(long *)(param_7 + (long)piVar1[uVar14] * 8)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_7 + (long)piVar1[uVar14] * 8)" (( "(") (binary_expression "param_7 + (long)piVar1[uVar14] * 8" (identifier "param_7") (+ "+") (binary_expression "(long)piVar1[uVar14] * 8" (cast_expression "(long)piVar1[uVar14]" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (subscript_expression "piVar1[uVar14]" (identifier "piVar1") ([ "[") (identifier "uVar14") (] "]"))) (* "*") (number_literal "8"))) () ")")))) (+ "+") (identifier "local_60")) () ")"))))) (; ";")) (expression_statement "uVar12 = local_40;" (assignment_expression "uVar12 = local_40" (identifier "uVar12") (= "=") (identifier "local_40")) (; ";")) (if_statement "if ((local_48 != (long *)0x0) && (local_40 == 0xffffffff)) {\n              if ((byte *)local_48[2] < (byte *)local_48[3]) {\n                uVar12 = (uint)*(byte *)local_48[2];\n              }\n              else {\n                pcVar3 = *(code **)(*local_48 + 0x48);\n                local_69 = cVar8;\n                *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d76a;\n                uVar12 = (*pcVar3)();\n                cVar8 = local_69;\n                if (uVar12 == 0xffffffff) {\n                  local_48 = (long *)0x0;\n                  uVar12 = 0xffffffff;\n                }\n              }\n            }" (if "if") (parenthesized_expression "((local_48 != (long *)0x0) && (local_40 == 0xffffffff))" (( "(") (binary_expression "(local_48 != (long *)0x0) && (local_40 == 0xffffffff)" (parenthesized_expression "(local_48 != (long *)0x0)" (( "(") (binary_expression "local_48 != (long *)0x0" (identifier "local_48") (!= "!=") (cast_expression "(long *)0x0" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (&& "&&") (parenthesized_expression "(local_40 == 0xffffffff)" (( "(") (binary_expression "local_40 == 0xffffffff" (identifier "local_40") (== "==") (number_literal "0xffffffff")) () ")"))) () ")")) (compound_statement "{\n              if ((byte *)local_48[2] < (byte *)local_48[3]) {\n                uVar12 = (uint)*(byte *)local_48[2];\n              }\n              else {\n                pcVar3 = *(code **)(*local_48 + 0x48);\n                local_69 = cVar8;\n                *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d76a;\n                uVar12 = (*pcVar3)();\n                cVar8 = local_69;\n                if (uVar12 == 0xffffffff) {\n                  local_48 = (long *)0x0;\n                  uVar12 = 0xffffffff;\n                }\n              }\n            }" ({ "{") (if_statement "if ((byte *)local_48[2] < (byte *)local_48[3]) {\n                uVar12 = (uint)*(byte *)local_48[2];\n              }\n              else {\n                pcVar3 = *(code **)(*local_48 + 0x48);\n                local_69 = cVar8;\n                *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d76a;\n                uVar12 = (*pcVar3)();\n                cVar8 = local_69;\n                if (uVar12 == 0xffffffff) {\n                  local_48 = (long *)0x0;\n                  uVar12 = 0xffffffff;\n                }\n              }" (if "if") (parenthesized_expression "((byte *)local_48[2] < (byte *)local_48[3])" (( "(") (binary_expression "(byte *)local_48[2] < (byte *)local_48[3]" (cast_expression "(byte *)local_48[2]" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "local_48[2]" (identifier "local_48") ([ "[") (number_literal "2") (] "]"))) (< "<") (cast_expression "(byte *)local_48[3]" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "local_48[3]" (identifier "local_48") ([ "[") (number_literal "3") (] "]")))) () ")")) (compound_statement "{\n                uVar12 = (uint)*(byte *)local_48[2];\n              }" ({ "{") (expression_statement "uVar12 = (uint)*(byte *)local_48[2];" (assignment_expression "uVar12 = (uint)*(byte *)local_48[2]" (identifier "uVar12") (= "=") (binary_expression "(uint)*(byte *)local_48[2]" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (* "*") (cast_expression "(byte *)local_48[2]" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "local_48[2]" (identifier "local_48") ([ "[") (number_literal "2") (] "]"))))) (; ";")) (} "}")) (else_clause "else {\n                pcVar3 = *(code **)(*local_48 + 0x48);\n                local_69 = cVar8;\n                *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d76a;\n                uVar12 = (*pcVar3)();\n                cVar8 = local_69;\n                if (uVar12 == 0xffffffff) {\n                  local_48 = (long *)0x0;\n                  uVar12 = 0xffffffff;\n                }\n              }" (else "else") (compound_statement "{\n                pcVar3 = *(code **)(*local_48 + 0x48);\n                local_69 = cVar8;\n                *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d76a;\n                uVar12 = (*pcVar3)();\n                cVar8 = local_69;\n                if (uVar12 == 0xffffffff) {\n                  local_48 = (long *)0x0;\n                  uVar12 = 0xffffffff;\n                }\n              }" ({ "{") (expression_statement "pcVar3 = *(code **)(*local_48 + 0x48);" (assignment_expression "pcVar3 = *(code **)(*local_48 + 0x48)" (identifier "pcVar3") (= "=") (pointer_expression "*(code **)(*local_48 + 0x48)" (* "*") (cast_expression "(code **)(*local_48 + 0x48)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*local_48 + 0x48)" (( "(") (binary_expression "*local_48 + 0x48" (pointer_expression "*local_48" (* "*") (identifier "local_48")) (+ "+") (number_literal "0x48")) () ")"))))) (; ";")) (expression_statement "local_69 = cVar8;" (assignment_expression "local_69 = cVar8" (identifier "local_69") (= "=") (identifier "cVar8")) (; ";")) (expression_statement "*(undefined8 *)((long)auStack_90 + lVar4) = 0x28d76a;" (assignment_expression "*(undefined8 *)((long)auStack_90 + lVar4) = 0x28d76a" (pointer_expression "*(undefined8 *)((long)auStack_90 + lVar4)" (* "*") (cast_expression "(undefined8 *)((long)auStack_90 + lVar4)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)auStack_90 + lVar4)" (( "(") (binary_expression "(long)auStack_90 + lVar4" (cast_expression "(long)auStack_90" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "auStack_90")) (+ "+") (identifier "lVar4")) () ")")))) (= "=") (number_literal "0x28d76a")) (; ";")) (expression_statement "uVar12 = (*pcVar3)();" (assignment_expression "uVar12 = (*pcVar3)()" (identifier "uVar12") (= "=") (call_expression "(*pcVar3)()" (parenthesized_expression "(*pcVar3)" (( "(") (pointer_expression "*pcVar3" (* "*") (identifier "pcVar3")) () ")")) (argument_list "()" (( "(") () ")")))) (; ";")) (expression_statement "cVar8 = local_69;" (assignment_expression "cVar8 = local_69" (identifier "cVar8") (= "=") (identifier "local_69")) (; ";")) (if_statement "if (uVar12 == 0xffffffff) {\n                  local_48 = (long *)0x0;\n                  uVar12 = 0xffffffff;\n                }" (if "if") (parenthesized_expression "(uVar12 == 0xffffffff)" (( "(") (binary_expression "uVar12 == 0xffffffff" (identifier "uVar12") (== "==") (number_literal "0xffffffff")) () ")")) (compound_statement "{\n                  local_48 = (long *)0x0;\n                  uVar12 = 0xffffffff;\n                }" ({ "{") (expression_statement "local_48 = (long *)0x0;" (assignment_expression "local_48 = (long *)0x0" (identifier "local_48") (= "=") (cast_expression "(long *)0x0" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (expression_statement "uVar12 = 0xffffffff;" (assignment_expression "uVar12 = 0xffffffff" (identifier "uVar12") (= "=") (number_literal "0xffffffff")) (; ";")) (} "}"))) (} "}")))) (} "}"))) (if_statement "if (cVar8 != (char)uVar12) break;" (if "if") (parenthesized_expression "(cVar8 != (char)uVar12)" (( "(") (binary_expression "cVar8 != (char)uVar12" (identifier "cVar8") (!= "!=") (cast_expression "(char)uVar12" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (identifier "uVar12"))) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "uVar14 = uVar14 + 1;" (assignment_expression "uVar14 = uVar14 + 1" (identifier "uVar14") (= "=") (binary_expression "uVar14 + 1" (identifier "uVar14") (+ "+") (number_literal "1"))) (; ";")) (if_statement "if (uVar20 <= uVar14) goto joined_r0x0028d514;" (if "if") (parenthesized_expression "(uVar20 <= uVar14)" (( "(") (binary_expression "uVar20 <= uVar14" (identifier "uVar20") (<= "<=") (identifier "uVar14")) () ")")) (goto_statement "goto joined_r0x0028d514;" (goto "goto") (statement_identifier "joined_r0x0028d514") (; ";"))) (} "}"))) (expression_statement "uVar20 = uVar20 - 1;" (assignment_expression "uVar20 = uVar20 - 1" (identifier "uVar20") (= "=") (binary_expression "uVar20 - 1" (identifier "uVar20") (- "-") (number_literal "1"))) (; ";")) (expression_statement "piVar1[uVar14] = piVar1[uVar20];" (assignment_expression "piVar1[uVar14] = piVar1[uVar20]" (subscript_expression "piVar1[uVar14]" (identifier "piVar1") ([ "[") (identifier "uVar14") (] "]")) (= "=") (subscript_expression "piVar1[uVar20]" (identifier "piVar1") ([ "[") (identifier "uVar20") (] "]"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(uVar14 < uVar20)" (( "(") (binary_expression "uVar14 < uVar20" (identifier "uVar14") (< "<") (identifier "uVar20")) () ")")) (; ";")) (goto_statement "goto joined_r0x0028d514;" (goto "goto") (statement_identifier "joined_r0x0028d514") (; ";")) (} "}")))) (if_statement "if (uVar20 == 1) {\n        if ((ulong)local_48[2] < (ulong)local_48[3]) {\n          local_48[2] = local_48[2] + 1;\n        }\n        else {\n          pcVar3 = *(code **)(*local_48 + 0x50);\n          *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d7fe;\n          (*pcVar3)();\n        }\n        uVar20 = local_60;\n        local_40 = 0xffffffff;\n        pcVar2 = *(char **)(param_7 + (long)*piVar1 * 8);\n        local_60 = CONCAT44(local_60._4_4_,*piVar1);\n        sVar19 = uVar20 + 1;\n        *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d670;\n        sVar15 = strlen(pcVar2);\n        if (sVar19 < sVar15) {\n          do {\n            pplVar7 = local_68;\n            pplVar6 = local_78;\n            *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d6c9;\n            cVar8 = FUN_0028d360(pplVar7,pplVar6);\n            if (cVar8 != '\0') goto LAB_0028d487;\n            cVar8 = pcVar2[sVar19];\n            uVar12 = local_40;\n            if ((local_48 == (long *)0x0) || (local_40 != 0xffffffff)) {\nLAB_0028d688:\n              if (cVar8 != (char)uVar12) goto LAB_0028d487;\n              pcVar16 = (char *)local_48[2];\n              if (pcVar16 < (char *)local_48[3]) goto LAB_0028d6a3;\n              pcVar3 = *(code **)(*local_48 + 0x50);\n              *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d7c3;\n              (*pcVar3)();\n            }\n            else {\n              pcVar16 = (char *)local_48[2];\n              if ((char *)local_48[3] <= pcVar16) {\n                pcVar3 = *(code **)(*local_48 + 0x48);\n                *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d7e2;\n                uVar12 = (*pcVar3)();\n                if (uVar12 == 0xffffffff) {\n                  local_48 = (long *)0x0;\n                }\n                goto LAB_0028d688;\n              }\n              if (cVar8 != *pcVar16) goto LAB_0028d487;\nLAB_0028d6a3:\n              local_48[2] = (long)(pcVar16 + 1);\n            }\n            sVar19 = sVar19 + 1;\n            local_40 = 0xffffffff;\n          } while (sVar19 != sVar15);\n        }\n        else if (sVar19 != sVar15) goto LAB_0028d487;\n        *local_80 = (undefined4)local_60;\n        goto LAB_0028d48e;\n      }" (if "if") (parenthesized_expression "(uVar20 == 1)" (( "(") (binary_expression "uVar20 == 1" (identifier "uVar20") (== "==") (number_literal "1")) () ")")) (compound_statement "{\n        if ((ulong)local_48[2] < (ulong)local_48[3]) {\n          local_48[2] = local_48[2] + 1;\n        }\n        else {\n          pcVar3 = *(code **)(*local_48 + 0x50);\n          *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d7fe;\n          (*pcVar3)();\n        }\n        uVar20 = local_60;\n        local_40 = 0xffffffff;\n        pcVar2 = *(char **)(param_7 + (long)*piVar1 * 8);\n        local_60 = CONCAT44(local_60._4_4_,*piVar1);\n        sVar19 = uVar20 + 1;\n        *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d670;\n        sVar15 = strlen(pcVar2);\n        if (sVar19 < sVar15) {\n          do {\n            pplVar7 = local_68;\n            pplVar6 = local_78;\n            *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d6c9;\n            cVar8 = FUN_0028d360(pplVar7,pplVar6);\n            if (cVar8 != '\0') goto LAB_0028d487;\n            cVar8 = pcVar2[sVar19];\n            uVar12 = local_40;\n            if ((local_48 == (long *)0x0) || (local_40 != 0xffffffff)) {\nLAB_0028d688:\n              if (cVar8 != (char)uVar12) goto LAB_0028d487;\n              pcVar16 = (char *)local_48[2];\n              if (pcVar16 < (char *)local_48[3]) goto LAB_0028d6a3;\n              pcVar3 = *(code **)(*local_48 + 0x50);\n              *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d7c3;\n              (*pcVar3)();\n            }\n            else {\n              pcVar16 = (char *)local_48[2];\n              if ((char *)local_48[3] <= pcVar16) {\n                pcVar3 = *(code **)(*local_48 + 0x48);\n                *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d7e2;\n                uVar12 = (*pcVar3)();\n                if (uVar12 == 0xffffffff) {\n                  local_48 = (long *)0x0;\n                }\n                goto LAB_0028d688;\n              }\n              if (cVar8 != *pcVar16) goto LAB_0028d487;\nLAB_0028d6a3:\n              local_48[2] = (long)(pcVar16 + 1);\n            }\n            sVar19 = sVar19 + 1;\n            local_40 = 0xffffffff;\n          } while (sVar19 != sVar15);\n        }\n        else if (sVar19 != sVar15) goto LAB_0028d487;\n        *local_80 = (undefined4)local_60;\n        goto LAB_0028d48e;\n      }" ({ "{") (if_statement "if ((ulong)local_48[2] < (ulong)local_48[3]) {\n          local_48[2] = local_48[2] + 1;\n        }\n        else {\n          pcVar3 = *(code **)(*local_48 + 0x50);\n          *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d7fe;\n          (*pcVar3)();\n        }" (if "if") (parenthesized_expression "((ulong)local_48[2] < (ulong)local_48[3])" (( "(") (binary_expression "(ulong)local_48[2] < (ulong)local_48[3]" (cast_expression "(ulong)local_48[2]" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (subscript_expression "local_48[2]" (identifier "local_48") ([ "[") (number_literal "2") (] "]"))) (< "<") (cast_expression "(ulong)local_48[3]" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (subscript_expression "local_48[3]" (identifier "local_48") ([ "[") (number_literal "3") (] "]")))) () ")")) (compound_statement "{\n          local_48[2] = local_48[2] + 1;\n        }" ({ "{") (expression_statement "local_48[2] = local_48[2] + 1;" (assignment_expression "local_48[2] = local_48[2] + 1" (subscript_expression "local_48[2]" (identifier "local_48") ([ "[") (number_literal "2") (] "]")) (= "=") (binary_expression "local_48[2] + 1" (subscript_expression "local_48[2]" (identifier "local_48") ([ "[") (number_literal "2") (] "]")) (+ "+") (number_literal "1"))) (; ";")) (} "}")) (else_clause "else {\n          pcVar3 = *(code **)(*local_48 + 0x50);\n          *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d7fe;\n          (*pcVar3)();\n        }" (else "else") (compound_statement "{\n          pcVar3 = *(code **)(*local_48 + 0x50);\n          *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d7fe;\n          (*pcVar3)();\n        }" ({ "{") (expression_statement "pcVar3 = *(code **)(*local_48 + 0x50);" (assignment_expression "pcVar3 = *(code **)(*local_48 + 0x50)" (identifier "pcVar3") (= "=") (pointer_expression "*(code **)(*local_48 + 0x50)" (* "*") (cast_expression "(code **)(*local_48 + 0x50)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*local_48 + 0x50)" (( "(") (binary_expression "*local_48 + 0x50" (pointer_expression "*local_48" (* "*") (identifier "local_48")) (+ "+") (number_literal "0x50")) () ")"))))) (; ";")) (expression_statement "*(undefined8 *)((long)auStack_90 + lVar4) = 0x28d7fe;" (assignment_expression "*(undefined8 *)((long)auStack_90 + lVar4) = 0x28d7fe" (pointer_expression "*(undefined8 *)((long)auStack_90 + lVar4)" (* "*") (cast_expression "(undefined8 *)((long)auStack_90 + lVar4)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)auStack_90 + lVar4)" (( "(") (binary_expression "(long)auStack_90 + lVar4" (cast_expression "(long)auStack_90" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "auStack_90")) (+ "+") (identifier "lVar4")) () ")")))) (= "=") (number_literal "0x28d7fe")) (; ";")) (expression_statement "(*pcVar3)();" (call_expression "(*pcVar3)()" (parenthesized_expression "(*pcVar3)" (( "(") (pointer_expression "*pcVar3" (* "*") (identifier "pcVar3")) () ")")) (argument_list "()" (( "(") () ")"))) (; ";")) (} "}")))) (expression_statement "uVar20 = local_60;" (assignment_expression "uVar20 = local_60" (identifier "uVar20") (= "=") (identifier "local_60")) (; ";")) (expression_statement "local_40 = 0xffffffff;" (assignment_expression "local_40 = 0xffffffff" (identifier "local_40") (= "=") (number_literal "0xffffffff")) (; ";")) (expression_statement "pcVar2 = *(char **)(param_7 + (long)*piVar1 * 8);" (assignment_expression "pcVar2 = *(char **)(param_7 + (long)*piVar1 * 8)" (identifier "pcVar2") (= "=") (pointer_expression "*(char **)(param_7 + (long)*piVar1 * 8)" (* "*") (cast_expression "(char **)(param_7 + (long)*piVar1 * 8)" (( "(") (type_descriptor "char **" (primitive_type "char") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_7 + (long)*piVar1 * 8)" (( "(") (binary_expression "param_7 + (long)*piVar1 * 8" (identifier "param_7") (+ "+") (binary_expression "(long)*piVar1 * 8" (cast_expression "(long)*piVar1" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (pointer_expression "*piVar1" (* "*") (identifier "piVar1"))) (* "*") (number_literal "8"))) () ")"))))) (; ";")) (expression_statement "local_60 = CONCAT44(local_60._4_4_,*piVar1);" (assignment_expression "local_60 = CONCAT44(local_60._4_4_,*piVar1)" (identifier "local_60") (= "=") (call_expression "CONCAT44(local_60._4_4_,*piVar1)" (identifier "CONCAT44") (argument_list "(local_60._4_4_,*piVar1)" (( "(") (field_expression "local_60._4_4_" (identifier "local_60") (. ".") (field_identifier "_4_4_")) (, ",") (pointer_expression "*piVar1" (* "*") (identifier "piVar1")) () ")")))) (; ";")) (expression_statement "sVar19 = uVar20 + 1;" (assignment_expression "sVar19 = uVar20 + 1" (identifier "sVar19") (= "=") (binary_expression "uVar20 + 1" (identifier "uVar20") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "*(undefined8 *)((long)auStack_90 + lVar4) = 0x28d670;" (assignment_expression "*(undefined8 *)((long)auStack_90 + lVar4) = 0x28d670" (pointer_expression "*(undefined8 *)((long)auStack_90 + lVar4)" (* "*") (cast_expression "(undefined8 *)((long)auStack_90 + lVar4)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)auStack_90 + lVar4)" (( "(") (binary_expression "(long)auStack_90 + lVar4" (cast_expression "(long)auStack_90" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "auStack_90")) (+ "+") (identifier "lVar4")) () ")")))) (= "=") (number_literal "0x28d670")) (; ";")) (expression_statement "sVar15 = strlen(pcVar2);" (assignment_expression "sVar15 = strlen(pcVar2)" (identifier "sVar15") (= "=") (call_expression "strlen(pcVar2)" (identifier "strlen") (argument_list "(pcVar2)" (( "(") (identifier "pcVar2") () ")")))) (; ";")) (if_statement "if (sVar19 < sVar15) {\n          do {\n            pplVar7 = local_68;\n            pplVar6 = local_78;\n            *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d6c9;\n            cVar8 = FUN_0028d360(pplVar7,pplVar6);\n            if (cVar8 != '\0') goto LAB_0028d487;\n            cVar8 = pcVar2[sVar19];\n            uVar12 = local_40;\n            if ((local_48 == (long *)0x0) || (local_40 != 0xffffffff)) {\nLAB_0028d688:\n              if (cVar8 != (char)uVar12) goto LAB_0028d487;\n              pcVar16 = (char *)local_48[2];\n              if (pcVar16 < (char *)local_48[3]) goto LAB_0028d6a3;\n              pcVar3 = *(code **)(*local_48 + 0x50);\n              *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d7c3;\n              (*pcVar3)();\n            }\n            else {\n              pcVar16 = (char *)local_48[2];\n              if ((char *)local_48[3] <= pcVar16) {\n                pcVar3 = *(code **)(*local_48 + 0x48);\n                *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d7e2;\n                uVar12 = (*pcVar3)();\n                if (uVar12 == 0xffffffff) {\n                  local_48 = (long *)0x0;\n                }\n                goto LAB_0028d688;\n              }\n              if (cVar8 != *pcVar16) goto LAB_0028d487;\nLAB_0028d6a3:\n              local_48[2] = (long)(pcVar16 + 1);\n            }\n            sVar19 = sVar19 + 1;\n            local_40 = 0xffffffff;\n          } while (sVar19 != sVar15);\n        }\n        else if (sVar19 != sVar15) goto LAB_0028d487;" (if "if") (parenthesized_expression "(sVar19 < sVar15)" (( "(") (binary_expression "sVar19 < sVar15" (identifier "sVar19") (< "<") (identifier "sVar15")) () ")")) (compound_statement "{\n          do {\n            pplVar7 = local_68;\n            pplVar6 = local_78;\n            *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d6c9;\n            cVar8 = FUN_0028d360(pplVar7,pplVar6);\n            if (cVar8 != '\0') goto LAB_0028d487;\n            cVar8 = pcVar2[sVar19];\n            uVar12 = local_40;\n            if ((local_48 == (long *)0x0) || (local_40 != 0xffffffff)) {\nLAB_0028d688:\n              if (cVar8 != (char)uVar12) goto LAB_0028d487;\n              pcVar16 = (char *)local_48[2];\n              if (pcVar16 < (char *)local_48[3]) goto LAB_0028d6a3;\n              pcVar3 = *(code **)(*local_48 + 0x50);\n              *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d7c3;\n              (*pcVar3)();\n            }\n            else {\n              pcVar16 = (char *)local_48[2];\n              if ((char *)local_48[3] <= pcVar16) {\n                pcVar3 = *(code **)(*local_48 + 0x48);\n                *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d7e2;\n                uVar12 = (*pcVar3)();\n                if (uVar12 == 0xffffffff) {\n                  local_48 = (long *)0x0;\n                }\n                goto LAB_0028d688;\n              }\n              if (cVar8 != *pcVar16) goto LAB_0028d487;\nLAB_0028d6a3:\n              local_48[2] = (long)(pcVar16 + 1);\n            }\n            sVar19 = sVar19 + 1;\n            local_40 = 0xffffffff;\n          } while (sVar19 != sVar15);\n        }" ({ "{") (do_statement "do {\n            pplVar7 = local_68;\n            pplVar6 = local_78;\n            *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d6c9;\n            cVar8 = FUN_0028d360(pplVar7,pplVar6);\n            if (cVar8 != '\0') goto LAB_0028d487;\n            cVar8 = pcVar2[sVar19];\n            uVar12 = local_40;\n            if ((local_48 == (long *)0x0) || (local_40 != 0xffffffff)) {\nLAB_0028d688:\n              if (cVar8 != (char)uVar12) goto LAB_0028d487;\n              pcVar16 = (char *)local_48[2];\n              if (pcVar16 < (char *)local_48[3]) goto LAB_0028d6a3;\n              pcVar3 = *(code **)(*local_48 + 0x50);\n              *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d7c3;\n              (*pcVar3)();\n            }\n            else {\n              pcVar16 = (char *)local_48[2];\n              if ((char *)local_48[3] <= pcVar16) {\n                pcVar3 = *(code **)(*local_48 + 0x48);\n                *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d7e2;\n                uVar12 = (*pcVar3)();\n                if (uVar12 == 0xffffffff) {\n                  local_48 = (long *)0x0;\n                }\n                goto LAB_0028d688;\n              }\n              if (cVar8 != *pcVar16) goto LAB_0028d487;\nLAB_0028d6a3:\n              local_48[2] = (long)(pcVar16 + 1);\n            }\n            sVar19 = sVar19 + 1;\n            local_40 = 0xffffffff;\n          } while (sVar19 != sVar15);" (do "do") (compound_statement "{\n            pplVar7 = local_68;\n            pplVar6 = local_78;\n            *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d6c9;\n            cVar8 = FUN_0028d360(pplVar7,pplVar6);\n            if (cVar8 != '\0') goto LAB_0028d487;\n            cVar8 = pcVar2[sVar19];\n            uVar12 = local_40;\n            if ((local_48 == (long *)0x0) || (local_40 != 0xffffffff)) {\nLAB_0028d688:\n              if (cVar8 != (char)uVar12) goto LAB_0028d487;\n              pcVar16 = (char *)local_48[2];\n              if (pcVar16 < (char *)local_48[3]) goto LAB_0028d6a3;\n              pcVar3 = *(code **)(*local_48 + 0x50);\n              *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d7c3;\n              (*pcVar3)();\n            }\n            else {\n              pcVar16 = (char *)local_48[2];\n              if ((char *)local_48[3] <= pcVar16) {\n                pcVar3 = *(code **)(*local_48 + 0x48);\n                *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d7e2;\n                uVar12 = (*pcVar3)();\n                if (uVar12 == 0xffffffff) {\n                  local_48 = (long *)0x0;\n                }\n                goto LAB_0028d688;\n              }\n              if (cVar8 != *pcVar16) goto LAB_0028d487;\nLAB_0028d6a3:\n              local_48[2] = (long)(pcVar16 + 1);\n            }\n            sVar19 = sVar19 + 1;\n            local_40 = 0xffffffff;\n          }" ({ "{") (expression_statement "pplVar7 = local_68;" (assignment_expression "pplVar7 = local_68" (identifier "pplVar7") (= "=") (identifier "local_68")) (; ";")) (expression_statement "pplVar6 = local_78;" (assignment_expression "pplVar6 = local_78" (identifier "pplVar6") (= "=") (identifier "local_78")) (; ";")) (expression_statement "*(undefined8 *)((long)auStack_90 + lVar4) = 0x28d6c9;" (assignment_expression "*(undefined8 *)((long)auStack_90 + lVar4) = 0x28d6c9" (pointer_expression "*(undefined8 *)((long)auStack_90 + lVar4)" (* "*") (cast_expression "(undefined8 *)((long)auStack_90 + lVar4)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)auStack_90 + lVar4)" (( "(") (binary_expression "(long)auStack_90 + lVar4" (cast_expression "(long)auStack_90" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "auStack_90")) (+ "+") (identifier "lVar4")) () ")")))) (= "=") (number_literal "0x28d6c9")) (; ";")) (expression_statement "cVar8 = FUN_0028d360(pplVar7,pplVar6);" (assignment_expression "cVar8 = FUN_0028d360(pplVar7,pplVar6)" (identifier "cVar8") (= "=") (call_expression "FUN_0028d360(pplVar7,pplVar6)" (identifier "FUN_0028d360") (argument_list "(pplVar7,pplVar6)" (( "(") (identifier "pplVar7") (, ",") (identifier "pplVar6") () ")")))) (; ";")) (if_statement "if (cVar8 != '\0') goto LAB_0028d487;" (if "if") (parenthesized_expression "(cVar8 != '\0')" (( "(") (binary_expression "cVar8 != '\0'" (identifier "cVar8") (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (goto_statement "goto LAB_0028d487;" (goto "goto") (statement_identifier "LAB_0028d487") (; ";"))) (expression_statement "cVar8 = pcVar2[sVar19];" (assignment_expression "cVar8 = pcVar2[sVar19]" (identifier "cVar8") (= "=") (subscript_expression "pcVar2[sVar19]" (identifier "pcVar2") ([ "[") (identifier "sVar19") (] "]"))) (; ";")) (expression_statement "uVar12 = local_40;" (assignment_expression "uVar12 = local_40" (identifier "uVar12") (= "=") (identifier "local_40")) (; ";")) (if_statement "if ((local_48 == (long *)0x0) || (local_40 != 0xffffffff)) {\nLAB_0028d688:\n              if (cVar8 != (char)uVar12) goto LAB_0028d487;\n              pcVar16 = (char *)local_48[2];\n              if (pcVar16 < (char *)local_48[3]) goto LAB_0028d6a3;\n              pcVar3 = *(code **)(*local_48 + 0x50);\n              *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d7c3;\n              (*pcVar3)();\n            }\n            else {\n              pcVar16 = (char *)local_48[2];\n              if ((char *)local_48[3] <= pcVar16) {\n                pcVar3 = *(code **)(*local_48 + 0x48);\n                *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d7e2;\n                uVar12 = (*pcVar3)();\n                if (uVar12 == 0xffffffff) {\n                  local_48 = (long *)0x0;\n                }\n                goto LAB_0028d688;\n              }\n              if (cVar8 != *pcVar16) goto LAB_0028d487;\nLAB_0028d6a3:\n              local_48[2] = (long)(pcVar16 + 1);\n            }" (if "if") (parenthesized_expression "((local_48 == (long *)0x0) || (local_40 != 0xffffffff))" (( "(") (binary_expression "(local_48 == (long *)0x0) || (local_40 != 0xffffffff)" (parenthesized_expression "(local_48 == (long *)0x0)" (( "(") (binary_expression "local_48 == (long *)0x0" (identifier "local_48") (== "==") (cast_expression "(long *)0x0" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (|| "||") (parenthesized_expression "(local_40 != 0xffffffff)" (( "(") (binary_expression "local_40 != 0xffffffff" (identifier "local_40") (!= "!=") (number_literal "0xffffffff")) () ")"))) () ")")) (compound_statement "{\nLAB_0028d688:\n              if (cVar8 != (char)uVar12) goto LAB_0028d487;\n              pcVar16 = (char *)local_48[2];\n              if (pcVar16 < (char *)local_48[3]) goto LAB_0028d6a3;\n              pcVar3 = *(code **)(*local_48 + 0x50);\n              *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d7c3;\n              (*pcVar3)();\n            }" ({ "{") (labeled_statement "LAB_0028d688:\n              if (cVar8 != (char)uVar12) goto LAB_0028d487;" (statement_identifier "LAB_0028d688") (: ":") (if_statement "if (cVar8 != (char)uVar12) goto LAB_0028d487;" (if "if") (parenthesized_expression "(cVar8 != (char)uVar12)" (( "(") (binary_expression "cVar8 != (char)uVar12" (identifier "cVar8") (!= "!=") (cast_expression "(char)uVar12" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (identifier "uVar12"))) () ")")) (goto_statement "goto LAB_0028d487;" (goto "goto") (statement_identifier "LAB_0028d487") (; ";")))) (expression_statement "pcVar16 = (char *)local_48[2];" (assignment_expression "pcVar16 = (char *)local_48[2]" (identifier "pcVar16") (= "=") (cast_expression "(char *)local_48[2]" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "local_48[2]" (identifier "local_48") ([ "[") (number_literal "2") (] "]")))) (; ";")) (if_statement "if (pcVar16 < (char *)local_48[3]) goto LAB_0028d6a3;" (if "if") (parenthesized_expression "(pcVar16 < (char *)local_48[3])" (( "(") (binary_expression "pcVar16 < (char *)local_48[3]" (identifier "pcVar16") (< "<") (cast_expression "(char *)local_48[3]" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "local_48[3]" (identifier "local_48") ([ "[") (number_literal "3") (] "]")))) () ")")) (goto_statement "goto LAB_0028d6a3;" (goto "goto") (statement_identifier "LAB_0028d6a3") (; ";"))) (expression_statement "pcVar3 = *(code **)(*local_48 + 0x50);" (assignment_expression "pcVar3 = *(code **)(*local_48 + 0x50)" (identifier "pcVar3") (= "=") (pointer_expression "*(code **)(*local_48 + 0x50)" (* "*") (cast_expression "(code **)(*local_48 + 0x50)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*local_48 + 0x50)" (( "(") (binary_expression "*local_48 + 0x50" (pointer_expression "*local_48" (* "*") (identifier "local_48")) (+ "+") (number_literal "0x50")) () ")"))))) (; ";")) (expression_statement "*(undefined8 *)((long)auStack_90 + lVar4) = 0x28d7c3;" (assignment_expression "*(undefined8 *)((long)auStack_90 + lVar4) = 0x28d7c3" (pointer_expression "*(undefined8 *)((long)auStack_90 + lVar4)" (* "*") (cast_expression "(undefined8 *)((long)auStack_90 + lVar4)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)auStack_90 + lVar4)" (( "(") (binary_expression "(long)auStack_90 + lVar4" (cast_expression "(long)auStack_90" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "auStack_90")) (+ "+") (identifier "lVar4")) () ")")))) (= "=") (number_literal "0x28d7c3")) (; ";")) (expression_statement "(*pcVar3)();" (call_expression "(*pcVar3)()" (parenthesized_expression "(*pcVar3)" (( "(") (pointer_expression "*pcVar3" (* "*") (identifier "pcVar3")) () ")")) (argument_list "()" (( "(") () ")"))) (; ";")) (} "}")) (else_clause "else {\n              pcVar16 = (char *)local_48[2];\n              if ((char *)local_48[3] <= pcVar16) {\n                pcVar3 = *(code **)(*local_48 + 0x48);\n                *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d7e2;\n                uVar12 = (*pcVar3)();\n                if (uVar12 == 0xffffffff) {\n                  local_48 = (long *)0x0;\n                }\n                goto LAB_0028d688;\n              }\n              if (cVar8 != *pcVar16) goto LAB_0028d487;\nLAB_0028d6a3:\n              local_48[2] = (long)(pcVar16 + 1);\n            }" (else "else") (compound_statement "{\n              pcVar16 = (char *)local_48[2];\n              if ((char *)local_48[3] <= pcVar16) {\n                pcVar3 = *(code **)(*local_48 + 0x48);\n                *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d7e2;\n                uVar12 = (*pcVar3)();\n                if (uVar12 == 0xffffffff) {\n                  local_48 = (long *)0x0;\n                }\n                goto LAB_0028d688;\n              }\n              if (cVar8 != *pcVar16) goto LAB_0028d487;\nLAB_0028d6a3:\n              local_48[2] = (long)(pcVar16 + 1);\n            }" ({ "{") (expression_statement "pcVar16 = (char *)local_48[2];" (assignment_expression "pcVar16 = (char *)local_48[2]" (identifier "pcVar16") (= "=") (cast_expression "(char *)local_48[2]" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "local_48[2]" (identifier "local_48") ([ "[") (number_literal "2") (] "]")))) (; ";")) (if_statement "if ((char *)local_48[3] <= pcVar16) {\n                pcVar3 = *(code **)(*local_48 + 0x48);\n                *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d7e2;\n                uVar12 = (*pcVar3)();\n                if (uVar12 == 0xffffffff) {\n                  local_48 = (long *)0x0;\n                }\n                goto LAB_0028d688;\n              }" (if "if") (parenthesized_expression "((char *)local_48[3] <= pcVar16)" (( "(") (binary_expression "(char *)local_48[3] <= pcVar16" (cast_expression "(char *)local_48[3]" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "local_48[3]" (identifier "local_48") ([ "[") (number_literal "3") (] "]"))) (<= "<=") (identifier "pcVar16")) () ")")) (compound_statement "{\n                pcVar3 = *(code **)(*local_48 + 0x48);\n                *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d7e2;\n                uVar12 = (*pcVar3)();\n                if (uVar12 == 0xffffffff) {\n                  local_48 = (long *)0x0;\n                }\n                goto LAB_0028d688;\n              }" ({ "{") (expression_statement "pcVar3 = *(code **)(*local_48 + 0x48);" (assignment_expression "pcVar3 = *(code **)(*local_48 + 0x48)" (identifier "pcVar3") (= "=") (pointer_expression "*(code **)(*local_48 + 0x48)" (* "*") (cast_expression "(code **)(*local_48 + 0x48)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*local_48 + 0x48)" (( "(") (binary_expression "*local_48 + 0x48" (pointer_expression "*local_48" (* "*") (identifier "local_48")) (+ "+") (number_literal "0x48")) () ")"))))) (; ";")) (expression_statement "*(undefined8 *)((long)auStack_90 + lVar4) = 0x28d7e2;" (assignment_expression "*(undefined8 *)((long)auStack_90 + lVar4) = 0x28d7e2" (pointer_expression "*(undefined8 *)((long)auStack_90 + lVar4)" (* "*") (cast_expression "(undefined8 *)((long)auStack_90 + lVar4)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)auStack_90 + lVar4)" (( "(") (binary_expression "(long)auStack_90 + lVar4" (cast_expression "(long)auStack_90" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "auStack_90")) (+ "+") (identifier "lVar4")) () ")")))) (= "=") (number_literal "0x28d7e2")) (; ";")) (expression_statement "uVar12 = (*pcVar3)();" (assignment_expression "uVar12 = (*pcVar3)()" (identifier "uVar12") (= "=") (call_expression "(*pcVar3)()" (parenthesized_expression "(*pcVar3)" (( "(") (pointer_expression "*pcVar3" (* "*") (identifier "pcVar3")) () ")")) (argument_list "()" (( "(") () ")")))) (; ";")) (if_statement "if (uVar12 == 0xffffffff) {\n                  local_48 = (long *)0x0;\n                }" (if "if") (parenthesized_expression "(uVar12 == 0xffffffff)" (( "(") (binary_expression "uVar12 == 0xffffffff" (identifier "uVar12") (== "==") (number_literal "0xffffffff")) () ")")) (compound_statement "{\n                  local_48 = (long *)0x0;\n                }" ({ "{") (expression_statement "local_48 = (long *)0x0;" (assignment_expression "local_48 = (long *)0x0" (identifier "local_48") (= "=") (cast_expression "(long *)0x0" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (} "}"))) (goto_statement "goto LAB_0028d688;" (goto "goto") (statement_identifier "LAB_0028d688") (; ";")) (} "}"))) (if_statement "if (cVar8 != *pcVar16) goto LAB_0028d487;" (if "if") (parenthesized_expression "(cVar8 != *pcVar16)" (( "(") (binary_expression "cVar8 != *pcVar16" (identifier "cVar8") (!= "!=") (pointer_expression "*pcVar16" (* "*") (identifier "pcVar16"))) () ")")) (goto_statement "goto LAB_0028d487;" (goto "goto") (statement_identifier "LAB_0028d487") (; ";"))) (labeled_statement "LAB_0028d6a3:\n              local_48[2] = (long)(pcVar16 + 1);" (statement_identifier "LAB_0028d6a3") (: ":") (expression_statement "local_48[2] = (long)(pcVar16 + 1);" (assignment_expression "local_48[2] = (long)(pcVar16 + 1)" (subscript_expression "local_48[2]" (identifier "local_48") ([ "[") (number_literal "2") (] "]")) (= "=") (cast_expression "(long)(pcVar16 + 1)" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (parenthesized_expression "(pcVar16 + 1)" (( "(") (binary_expression "pcVar16 + 1" (identifier "pcVar16") (+ "+") (number_literal "1")) () ")")))) (; ";"))) (} "}")))) (expression_statement "sVar19 = sVar19 + 1;" (assignment_expression "sVar19 = sVar19 + 1" (identifier "sVar19") (= "=") (binary_expression "sVar19 + 1" (identifier "sVar19") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "local_40 = 0xffffffff;" (assignment_expression "local_40 = 0xffffffff" (identifier "local_40") (= "=") (number_literal "0xffffffff")) (; ";")) (} "}")) (while "while") (parenthesized_expression "(sVar19 != sVar15)" (( "(") (binary_expression "sVar19 != sVar15" (identifier "sVar19") (!= "!=") (identifier "sVar15")) () ")")) (; ";")) (} "}")) (else_clause "else if (sVar19 != sVar15) goto LAB_0028d487;" (else "else") (if_statement "if (sVar19 != sVar15) goto LAB_0028d487;" (if "if") (parenthesized_expression "(sVar19 != sVar15)" (( "(") (binary_expression "sVar19 != sVar15" (identifier "sVar19") (!= "!=") (identifier "sVar15")) () ")")) (goto_statement "goto LAB_0028d487;" (goto "goto") (statement_identifier "LAB_0028d487") (; ";"))))) (expression_statement "*local_80 = (undefined4)local_60;" (assignment_expression "*local_80 = (undefined4)local_60" (pointer_expression "*local_80" (* "*") (identifier "local_80")) (= "=") (cast_expression "(undefined4)local_60" (( "(") (type_descriptor "undefined4" (type_identifier "undefined4")) () ")") (identifier "local_60"))) (; ";")) (goto_statement "goto LAB_0028d48e;" (goto "goto") (statement_identifier "LAB_0028d48e") (; ";")) (} "}"))) (} "}"))) (} "}"))) (labeled_statement "LAB_0028d487:\n  *param_10 = *param_10 | 4;" (statement_identifier "LAB_0028d487") (: ":") (expression_statement "*param_10 = *param_10 | 4;" (assignment_expression "*param_10 = *param_10 | 4" (pointer_expression "*param_10" (* "*") (identifier "param_10")) (= "=") (binary_expression "*param_10 | 4" (pointer_expression "*param_10" (* "*") (identifier "param_10")) (| "|") (number_literal "4"))) (; ";"))) (labeled_statement "LAB_0028d48e:\n  auVar5._8_4_ = local_40;" (statement_identifier "LAB_0028d48e") (: ":") (expression_statement "auVar5._8_4_ = local_40;" (assignment_expression "auVar5._8_4_ = local_40" (field_expression "auVar5._8_4_" (identifier "auVar5") (. ".") (field_identifier "_8_4_")) (= "=") (identifier "local_40")) (; ";"))) (expression_statement "auVar5._0_8_ = local_48;" (assignment_expression "auVar5._0_8_ = local_48" (field_expression "auVar5._0_8_" (identifier "auVar5") (. ".") (field_identifier "_0_8_")) (= "=") (identifier "local_48")) (; ";")) (expression_statement "auVar5._12_4_ = uStack_3c;" (assignment_expression "auVar5._12_4_ = uStack_3c" (field_expression "auVar5._12_4_" (identifier "auVar5") (. ".") (field_identifier "_12_4_")) (= "=") (identifier "uStack_3c")) (; ";")) (return_statement "return auVar5;" (return "return") (identifier "auVar5") (; ";")) (ERROR "}" (} "}"))

/* std::time_get<char, std::istreambuf_iterator<char, std::char_traits<char> >
   >::_M_extract_name(std::istreambuf_iterator<char, std::char_traits<char> >,
   std::istreambuf_iterator<char, std::char_traits<char> >, int&, char const**, unsigned long,
   std::ios_base&, std::_Ios_Iostate&) const */

type_2  [16]
std::time_get<var_2,var_12::type_7<var_2,var_12::var_1<var_2>>>::var_3
          (type_5 param_1,var_4 *var_5,type_5 param_3,var_4 *var_6,type_5 param_5,
          var_7 *var_8,var_4 var_20,var_4 var_14,var_4 var_13,var_9 *var_10)

{
  int *piVar1;
  char *pcVar2;
  type_1 *pcVar3;
  long var_15;
  type_2 auVar5 [16];
  long **pplVar6;
  type_7<var_2,var_12::var_1<var_2>> *this;
  char var_18;
  char var_24;
  bool bVar9;
  int var_30;
  var_9 var_33;
  type_3 *pcVar12;
  type_4 var_27;
  size_t var_26;
  char *var_36;
  long var_21;
  type_4 var_28;
  size_t var_35;
  type_4 var_22;
  type_5 auStack_90 [2];
  var_7 *local_80;
  long **local_78;
  char local_6a;
  char local_69;
  type_7<var_2,var_12::var_1<var_2>> *local_68;
  type_4 var_29;
  long *var_31;
  type_5 local_50;
  long *var_16;
  var_9 var_32;
  var_7 uStack_3c;
  
  var_32 = (var_9)param_3;
  uStack_3c = (var_7)((type_4)param_3 >> 0x20);
  auStack_90[0] = 0x28d449;
  local_80 = var_8;
  var_31 = var_6;
  local_50 = param_5;
  var_16 = var_5;
  pcVar12 = var_11<var_12::type_3<var_2>>((type_6 *)(var_13 + 0xd0));
  var_15 = -(var_14 * 4 + 0x17U & 0xfffffffffffffff0);
  piVar1 = (int *)((long)&local_80 + var_15);
  local_78 = &var_31;
  local_68 = (type_7<var_2,var_12::var_1<var_2>> *)&var_16;
  *(type_5 *)((long)auStack_90 + var_15) = 0x28d483;
  var_18 = type_7<var_2,var_12::var_1<var_2>>::var_17
                    ((type_7<var_2,var_12::var_1<var_2>> *)&var_16,
                     (type_7 *)&var_31);
  if (var_18 == '\0') {
    *(type_5 *)((long)auStack_90 + var_15) = 0x28d4b1;
    var_18 = type_7<var_2,var_12::var_1<var_2>>::var_19();
    if (var_14 != 0) {
      var_21 = 0;
      var_22 = 0;
      do {
        while (**(char **)(var_20 + var_21 * 8) == var_18) {
LAB_0028d4f6:
          piVar1[var_22] = (int)var_21;
          var_22 = var_22 + 1;
          var_21 = var_21 + 1;
          if (var_14 == var_21) goto LAB_0028d508;
        }
        var_29 = var_23(var_29._1_7_,var_18);
        pcVar3 = *(type_1 **)(*(long *)pcVar12 + 0x10);
        *(type_5 *)((long)auStack_90 + var_15) = 0x28d4d6;
        var_24 = (*pcVar3)(pcVar12);
        var_18 = (char)var_29;
        if ((char)var_29 == var_24) goto LAB_0028d4f6;
        var_21 = var_21 + 1;
      } while (var_14 != var_21);
LAB_0028d508:
      var_29 = 0;
joined_r0x0028d514:
      if (1 < var_22) {
        var_28 = 1;
        pcVar2 = *(char **)(var_20 + (long)*piVar1 * 8);
        *(type_5 *)((long)auStack_90 + var_15) = 0x28d532;
        var_27 = var_25(pcVar2);
        do {
          pcVar2 = *(char **)(var_20 + (long)piVar1[var_28] * 8);
          *(type_5 *)((long)auStack_90 + var_15) = 0x28d545;
          var_26 = var_25(pcVar2);
          if (var_26 < var_27) {
            var_27 = var_26;
          }
          var_28 = var_28 + 1;
        } while (var_28 < var_22);
        if ((type_4)var_16[2] < (type_4)var_16[3]) {
          var_16[2] = var_16[2] + 1;
        }
        else {
          pcVar3 = *(type_1 **)(*var_16 + 0x50);
          *(type_5 *)((long)auStack_90 + var_15) = 0x28d796;
          (*pcVar3)();
        }
        var_29 = var_29 + 1;
        var_32 = 0xffffffff;
        if (var_27 <= var_29) goto LAB_0028d487;
        var_18 = '\x01';
        if (var_16 != (long *)0x0) {
          var_18 = '\0';
          if ((type_4)var_16[3] <= (type_4)var_16[2]) {
            pcVar3 = *(type_1 **)(*var_16 + 0x48);
            *(type_5 *)((long)auStack_90 + var_15) = 0x28d7a1;
            var_30 = (*pcVar3)();
            var_18 = '\0';
            if (var_30 == -1) {
              var_16 = (long *)0x0;
              var_18 = '\x01';
            }
          }
        }
        bVar9 = var_31 != (long *)0x0 && (int)local_50 == -1;
        var_24 = (int)local_50 == -1;
        if ((bVar9) && (var_24 = '\0', (type_4)var_31[3] <= (type_4)var_31[2])) {
          local_69 = '\0';
          pcVar3 = *(type_1 **)(*var_31 + 0x48);
          local_6a = bVar9;
          *(type_5 *)((long)auStack_90 + var_15) = 0x28d736;
          var_30 = (*pcVar3)();
          var_24 = local_69;
          if (var_30 == -1) {
            var_31 = (long *)0x0;
            var_24 = local_6a;
          }
        }
        if (var_24 == var_18) goto LAB_0028d487;
        var_27 = 0;
        do {
          while( true ) {
            var_18 = *(char *)(*(long *)(var_20 + (long)piVar1[var_27] * 8) + var_29);
            var_33 = var_32;
            if ((var_16 != (long *)0x0) && (var_32 == 0xffffffff)) {
              if ((type_8 *)var_16[2] < (type_8 *)var_16[3]) {
                var_33 = (var_9)*(type_8 *)var_16[2];
              }
              else {
                pcVar3 = *(type_1 **)(*var_16 + 0x48);
                local_69 = var_18;
                *(type_5 *)((long)auStack_90 + var_15) = 0x28d76a;
                var_33 = (*pcVar3)();
                var_18 = local_69;
                if (var_33 == 0xffffffff) {
                  var_16 = (long *)0x0;
                  var_33 = 0xffffffff;
                }
              }
            }
            if (var_18 != (char)var_33) break;
            var_27 = var_27 + 1;
            if (var_22 <= var_27) goto joined_r0x0028d514;
          }
          var_22 = var_22 - 1;
          piVar1[var_27] = piVar1[var_22];
        } while (var_27 < var_22);
        goto joined_r0x0028d514;
      }
      if (var_22 == 1) {
        if ((type_4)var_16[2] < (type_4)var_16[3]) {
          var_16[2] = var_16[2] + 1;
        }
        else {
          pcVar3 = *(type_1 **)(*var_16 + 0x50);
          *(type_5 *)((long)auStack_90 + var_15) = 0x28d7fe;
          (*pcVar3)();
        }
        var_22 = var_29;
        var_32 = 0xffffffff;
        pcVar2 = *(char **)(var_20 + (long)*piVar1 * 8);
        var_29 = var_34(var_29._4_4_,*piVar1);
        var_35 = var_22 + 1;
        *(type_5 *)((long)auStack_90 + var_15) = 0x28d670;
        var_26 = var_25(pcVar2);
        if (var_35 < var_26) {
          do {
            this = local_68;
            pplVar6 = local_78;
            *(type_5 *)((long)auStack_90 + var_15) = 0x28d6c9;
            var_18 = type_7<var_2,var_12::var_1<var_2>>::var_17
                              (this,(type_7 *)pplVar6);
            if (var_18 != '\0') goto LAB_0028d487;
            var_18 = pcVar2[var_35];
            var_33 = var_32;
            if ((var_16 == (long *)0x0) || (var_32 != 0xffffffff)) {
LAB_0028d688:
              if (var_18 != (char)var_33) goto LAB_0028d487;
              var_36 = (char *)var_16[2];
              if (var_36 < (char *)var_16[3]) goto LAB_0028d6a3;
              pcVar3 = *(type_1 **)(*var_16 + 0x50);
              *(type_5 *)((long)auStack_90 + var_15) = 0x28d7c3;
              (*pcVar3)();
            }
            else {
              var_36 = (char *)var_16[2];
              if ((char *)var_16[3] <= var_36) {
                pcVar3 = *(type_1 **)(*var_16 + 0x48);
                *(type_5 *)((long)auStack_90 + var_15) = 0x28d7e2;
                var_33 = (*pcVar3)();
                if (var_33 == 0xffffffff) {
                  var_16 = (long *)0x0;
                }
                goto LAB_0028d688;
              }
              if (var_18 != *var_36) goto LAB_0028d487;
LAB_0028d6a3:
              var_16[2] = (long)(var_36 + 1);
            }
            var_35 = var_35 + 1;
            var_32 = 0xffffffff;
          } while (var_35 != var_26);
        }
        else if (var_35 != var_26) goto LAB_0028d487;
        *local_80 = (var_7)var_29;
        goto LAB_0028d48e;
      }
    }
  }
LAB_0028d487:
  *var_10 = *var_10 | 4;
LAB_0028d48e:
  auVar5._8_4_ = var_32;
  auVar5._0_8_ = var_16;
  auVar5._12_4_ = uStack_3c;
  return auVar5;
}


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

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

{
  int *piVar1;
  char *pcVar2;
  code *pcVar3;
  long lVar4;
  undefined1 auVar5 [16];
  long **pplVar6;
  long **pplVar7;
  char cVar8;
  char cVar9;
  bool bVar10;
  int iVar11;
  uint uVar12;
  long *plVar13;
  ulong uVar14;
  size_t sVar15;
  char *pcVar16;
  long lVar17;
  ulong uVar18;
  size_t sVar19;
  ulong uVar20;
  undefined8 auStack_90 [2];
  undefined4 *local_80;
  long **local_78;
  char local_6a;
  char local_69;
  long **local_68;
  ulong local_60;
  long *local_58;
  undefined8 local_50;
  long *local_48;
  uint local_40;
  undefined4 uStack_3c;
  
  local_40 = (uint)param_3;
  uStack_3c = (undefined4)((ulong)param_3 >> 0x20);
  auStack_90[0] = 0x28d449;
  local_80 = param_6;
  local_58 = param_4;
  local_50 = param_5;
  local_48 = param_2;
  plVar13 = (long *)FUN_00288720(param_9 + 0xd0);
  local_78 = &local_58;
  lVar4 = -(param_8 * 4 + 0x17U & 0xfffffffffffffff0);
  piVar1 = (int *)((long)&local_80 + lVar4);
  local_68 = &local_48;
  *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d483;
  cVar8 = FUN_0028d360(&local_48);
  uVar12 = local_40;
  pplVar6 = local_68;
  if (cVar8 == '\0') {
    *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d4b1;
    cVar8 = FUN_002864b0(pplVar6,uVar12);
    if (param_8 != 0) {
      lVar17 = 0;
      uVar20 = 0;
      do {
        while (**(char **)(param_7 + lVar17 * 8) == cVar8) {
LAB_0028d4f6:
          piVar1[uVar20] = (int)lVar17;
          uVar20 = uVar20 + 1;
          lVar17 = lVar17 + 1;
          if (param_8 == lVar17) goto LAB_0028d508;
        }
        local_60 = CONCAT71(local_60._1_7_,cVar8);
        pcVar3 = *(code **)(*plVar13 + 0x10);
        *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d4d6;
        cVar9 = (*pcVar3)(plVar13);
        cVar8 = (char)local_60;
        if ((char)local_60 == cVar9) goto LAB_0028d4f6;
        lVar17 = lVar17 + 1;
      } while (param_8 != lVar17);
LAB_0028d508:
      local_60 = 0;
joined_r0x0028d514:
      if (1 < uVar20) {
        uVar18 = 1;
        pcVar2 = *(char **)(param_7 + (long)*piVar1 * 8);
        *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d532;
        uVar14 = strlen(pcVar2);
        do {
          pcVar2 = *(char **)(param_7 + (long)piVar1[uVar18] * 8);
          *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d545;
          sVar15 = strlen(pcVar2);
          if (sVar15 < uVar14) {
            uVar14 = sVar15;
          }
          uVar18 = uVar18 + 1;
        } while (uVar18 < uVar20);
        if ((ulong)local_48[2] < (ulong)local_48[3]) {
          local_48[2] = local_48[2] + 1;
        }
        else {
          pcVar3 = *(code **)(*local_48 + 0x50);
          *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d796;
          (*pcVar3)();
        }
        local_60 = local_60 + 1;
        local_40 = 0xffffffff;
        if (uVar14 <= local_60) goto LAB_0028d487;
        cVar8 = '\x01';
        if (local_48 != (long *)0x0) {
          cVar8 = '\0';
          if ((ulong)local_48[3] <= (ulong)local_48[2]) {
            pcVar3 = *(code **)(*local_48 + 0x48);
            *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d7a1;
            iVar11 = (*pcVar3)();
            cVar8 = '\0';
            if (iVar11 == -1) {
              local_48 = (long *)0x0;
              cVar8 = '\x01';
            }
          }
        }
        bVar10 = local_58 != (long *)0x0 && (int)local_50 == -1;
        cVar9 = (int)local_50 == -1;
        if ((bVar10) && (cVar9 = '\0', (ulong)local_58[3] <= (ulong)local_58[2])) {
          local_69 = '\0';
          pcVar3 = *(code **)(*local_58 + 0x48);
          local_6a = bVar10;
          *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d736;
          iVar11 = (*pcVar3)();
          cVar9 = local_69;
          if (iVar11 == -1) {
            local_58 = (long *)0x0;
            cVar9 = local_6a;
          }
        }
        if (cVar9 == cVar8) goto LAB_0028d487;
        uVar14 = 0;
        do {
          while( true ) {
            cVar8 = *(char *)(*(long *)(param_7 + (long)piVar1[uVar14] * 8) + local_60);
            uVar12 = local_40;
            if ((local_48 != (long *)0x0) && (local_40 == 0xffffffff)) {
              if ((byte *)local_48[2] < (byte *)local_48[3]) {
                uVar12 = (uint)*(byte *)local_48[2];
              }
              else {
                pcVar3 = *(code **)(*local_48 + 0x48);
                local_69 = cVar8;
                *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d76a;
                uVar12 = (*pcVar3)();
                cVar8 = local_69;
                if (uVar12 == 0xffffffff) {
                  local_48 = (long *)0x0;
                  uVar12 = 0xffffffff;
                }
              }
            }
            if (cVar8 != (char)uVar12) break;
            uVar14 = uVar14 + 1;
            if (uVar20 <= uVar14) goto joined_r0x0028d514;
          }
          uVar20 = uVar20 - 1;
          piVar1[uVar14] = piVar1[uVar20];
        } while (uVar14 < uVar20);
        goto joined_r0x0028d514;
      }
      if (uVar20 == 1) {
        if ((ulong)local_48[2] < (ulong)local_48[3]) {
          local_48[2] = local_48[2] + 1;
        }
        else {
          pcVar3 = *(code **)(*local_48 + 0x50);
          *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d7fe;
          (*pcVar3)();
        }
        uVar20 = local_60;
        local_40 = 0xffffffff;
        pcVar2 = *(char **)(param_7 + (long)*piVar1 * 8);
        local_60 = CONCAT44(local_60._4_4_,*piVar1);
        sVar19 = uVar20 + 1;
        *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d670;
        sVar15 = strlen(pcVar2);
        if (sVar19 < sVar15) {
          do {
            pplVar7 = local_68;
            pplVar6 = local_78;
            *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d6c9;
            cVar8 = FUN_0028d360(pplVar7,pplVar6);
            if (cVar8 != '\0') goto LAB_0028d487;
            cVar8 = pcVar2[sVar19];
            uVar12 = local_40;
            if ((local_48 == (long *)0x0) || (local_40 != 0xffffffff)) {
LAB_0028d688:
              if (cVar8 != (char)uVar12) goto LAB_0028d487;
              pcVar16 = (char *)local_48[2];
              if (pcVar16 < (char *)local_48[3]) goto LAB_0028d6a3;
              pcVar3 = *(code **)(*local_48 + 0x50);
              *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d7c3;
              (*pcVar3)();
            }
            else {
              pcVar16 = (char *)local_48[2];
              if ((char *)local_48[3] <= pcVar16) {
                pcVar3 = *(code **)(*local_48 + 0x48);
                *(undefined8 *)((long)auStack_90 + lVar4) = 0x28d7e2;
                uVar12 = (*pcVar3)();
                if (uVar12 == 0xffffffff) {
                  local_48 = (long *)0x0;
                }
                goto LAB_0028d688;
              }
              if (cVar8 != *pcVar16) goto LAB_0028d487;
LAB_0028d6a3:
              local_48[2] = (long)(pcVar16 + 1);
            }
            sVar19 = sVar19 + 1;
            local_40 = 0xffffffff;
          } while (sVar19 != sVar15);
        }
        else if (sVar19 != sVar15) goto LAB_0028d487;
        *local_80 = (undefined4)local_60;
        goto LAB_0028d48e;
      }
    }
  }
LAB_0028d487:
  *param_10 = *param_10 | 4;
LAB_0028d48e:
  auVar5._8_4_ = local_40;
  auVar5._0_8_ = local_48;
  auVar5._12_4_ = uStack_3c;
  return auVar5;
}

