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

mode_change * mode_compile(char *mode_string)

{
  uint uVar1;
  byte bVar2;
  uint uVar3;
  mode_change *pmVar4;
  uint uVar5;
  size_t n;
  char *pcVar6;
  byte *pbVar7;
  byte bVar8;
  char cVar9;
  mode_t mVar10;
  mode_change *pmVar11;
  byte local_2d;
  uint local_2c;
  int local_28;
  
  cVar9 = *mode_string;
  uVar3 = (uint)cVar9;
  if ((byte)(cVar9 - 0x30U) < 8) {
    uVar5 = 0;
    pcVar6 = mode_string;
    do {
      uVar5 = (uVar3 - 0x30) + uVar5 * 8;
      pcVar6 = pcVar6 + 1;
      if (0xfff < uVar5) {
        return (mode_change *)0x0;
      }
      cVar9 = *pcVar6;
      uVar3 = (uint)cVar9;
    } while ((byte)(cVar9 - 0x30U) < 8);
    if (cVar9 != '\0') {
      return (mode_change *)0x0;
    }
    mVar10 = uVar5 & 0xc00 | 0x3ff;
    if (4 < (int)pcVar6 - (int)mode_string) {
      mVar10 = 0xfff;
    }
    pmVar4 = (mode_change *)xmalloc(0x20);
    pmVar4->op = '=';
    pmVar4->flag = '\x01';
    pmVar4->affected = 0xfff;
    pmVar4->value = uVar5;
    pmVar4->mentioned = mVar10;
    pmVar4[1].flag = '\0';
    return pmVar4;
  }
  uVar5 = 1;
  pbVar7 = (byte *)mode_string;
  if (cVar9 == '\0') {
    n = 0x10;
  }
  else {
    do {
      bVar8 = (byte)uVar3;
      bVar2 = pbVar7[1];
      uVar3 = (uint)bVar2;
      uVar5 = uVar5 + ((bVar8 & 0xef) == 0x2d || bVar8 == 0x2b);
      pbVar7 = pbVar7 + 1;
    } while (bVar2 != 0);
    n = uVar5 * 0x10;
    if (((int)n < 0) || (uVar5 >> 0x1c != 0)) {
                    /* WARNING: Subroutine does not return */
      xalloc_die();
    }
  }
  pmVar4 = (mode_change *)xmalloc(n);
  local_28 = 0;
LAB_0001ec81:
  local_2c = 0;
  do {
    local_2d = *mode_string;
    if (local_2d == 0x61) {
      local_2c = 0xfff;
    }
    else {
      if ((char)local_2d < 'b') break;
      if (local_2d == 0x6f) {
        local_2c = local_2c | 0x207;
      }
      else if (local_2d == 0x75) {
        local_2c = local_2c | 0x9c0;
      }
      else {
        if (local_2d != 0x67) goto LAB_0001ecb0;
        local_2c = local_2c | 0x438;
      }
    }
    mode_string = (char *)((byte *)mode_string + 1);
  } while( true );
  if (((local_2d != 0x2d) && (local_2d != 0x3d)) && (local_2d != 0x2b)) goto LAB_0001ecb0;
  pmVar11 = pmVar4 + local_28;
  do {
    local_28 = local_28 + 1;
    bVar2 = ((byte *)mode_string)[1];
    uVar3 = (uint)(char)bVar2;
    pbVar7 = (byte *)mode_string + 1;
    if (bVar2 == 0x67) {
      uVar5 = 0x38;
LAB_0001ed55:
      pmVar11->flag = '\x03';
      pmVar11->value = uVar5;
      pmVar11->op = local_2d;
      pmVar11->affected = local_2c;
      pbVar7 = (byte *)mode_string + 2;
      local_2d = *pbVar7;
LAB_0001ed74:
      if (local_2c != 0) {
        uVar5 = local_2c & uVar5;
      }
    }
    else {
      if ('g' < (char)bVar2) {
        if (bVar2 == 0x6f) {
          uVar5 = 7;
        }
        else {
          uVar5 = 0x1c0;
          if (bVar2 != 0x75) goto LAB_0001ee40;
        }
        goto LAB_0001ed55;
      }
      if (7 < (byte)(bVar2 - 0x30)) {
LAB_0001ee40:
        uVar1 = uVar3 - 0x58;
        cVar9 = '\x01';
        uVar5 = 0;
        bVar8 = (byte)uVar1;
        while (bVar8 < 0x21) {
          bVar2 = (byte)uVar3;
                    /* WARNING: Could not find normalized switch variable to match jumptable */
          switch(uVar1 & 0xff) {
          case 0:
            cVar9 = '\x02';
            break;
          default:
            goto _L30;
          case 0x1a:
            uVar5 = uVar5 | 0x124;
            break;
          case 0x1b:
            uVar5 = uVar5 | 0xc00;
            break;
          case 0x1c:
            uVar5 = uVar5 | 0x200;
            break;
          case 0x1f:
            uVar5 = uVar5 | 0x92;
            break;
          case 0x20:
            uVar5 = uVar5 | 0x49;
          }
          pbVar7 = pbVar7 + 1;
          bVar2 = *pbVar7;
          uVar3 = (uint)bVar2;
          uVar1 = uVar3 - 0x58;
          bVar8 = (byte)uVar1;
        }
_L30:
        pmVar11->op = local_2d;
        pmVar11->flag = cVar9;
        pmVar11->affected = local_2c;
        pmVar11->value = uVar5;
        local_2d = bVar2;
        goto LAB_0001ed74;
      }
      uVar5 = 0;
      do {
        uVar5 = (uVar3 - 0x30) + uVar5 * 8;
        pbVar7 = pbVar7 + 1;
        if (0xfff < uVar5) goto LAB_0001ecb0;
        bVar2 = *pbVar7;
        uVar3 = (uint)(char)bVar2;
      } while ((byte)(bVar2 - 0x30) < 8);
      if ((local_2c != 0) || ((bVar2 != 0 && (bVar2 != 0x2c)))) goto LAB_0001ecb0;
      pmVar11->value = uVar5;
      uVar5 = 0xfff;
      pmVar11->flag = '\x01';
      pmVar11->op = local_2d;
      pmVar11->affected = 0xfff;
      local_2c = 0xfff;
      local_2d = bVar2;
    }
    pmVar11->mentioned = uVar5;
    pmVar11 = pmVar11 + 1;
    mode_string = (char *)pbVar7;
  } while (((local_2d & 0xef) == 0x2d) || (local_2d == 0x2b));
  if (local_2d != 0x2c) {
    if (local_2d == 0) {
      pmVar4[local_28].flag = '\0';
      return pmVar4;
    }
LAB_0001ecb0:
    free(pmVar4);
    return (mode_change *)0x0;
  }
  mode_string = (char *)(pbVar7 + 1);
  goto LAB_0001ec81;
}



undefined2 * FUN_0001ebf0(byte *param_1)

{
  byte bVar1;
  byte bVar2;
  uint uVar3;
  undefined2 *puVar4;
  uint uVar5;
  int iVar6;
  byte *pbVar7;
  int unaff_EBP;
  byte *pbVar8;
  byte local_2d;
  uint local_2c;
  int local_28;
  
  FUN_0001f1c7();
  bVar1 = *param_1;
  uVar3 = (uint)(char)bVar1;
  if ((byte)(bVar1 - 0x30) < 8) {
    uVar5 = 0;
    pbVar8 = param_1;
    do {
      uVar5 = (uVar3 - 0x30) + uVar5 * 8;
      pbVar8 = pbVar8 + 1;
      if (0xfff < uVar5) {
        return (undefined2 *)0x0;
      }
      bVar1 = *pbVar8;
      uVar3 = (uint)(char)bVar1;
    } while ((byte)(bVar1 - 0x30) < 8);
    if (bVar1 != 0) {
      return (undefined2 *)0x0;
    }
    uVar3 = uVar5 & 0xc00 | 0x3ff;
    if (4 < (int)pbVar8 - (int)param_1) {
      uVar3 = 0xfff;
    }
    puVar4 = (undefined2 *)FUN_00023ea0(0x20);
    *puVar4 = 0x13d;
    *(undefined4 *)(puVar4 + 2) = 0xfff;
    *(uint *)(puVar4 + 4) = uVar5;
    *(uint *)(puVar4 + 6) = uVar3;
    *(undefined1 *)((int)puVar4 + 0x11) = 0;
    return puVar4;
  }
  uVar5 = 1;
  pbVar8 = param_1;
  if (bVar1 == 0) {
    iVar6 = 0x10;
  }
  else {
    do {
      bVar2 = (byte)uVar3;
      bVar1 = pbVar8[1];
      uVar3 = (uint)bVar1;
      uVar5 = uVar5 + ((bVar2 & 0xef) == 0x2d || bVar2 == 0x2b);
      pbVar8 = pbVar8 + 1;
    } while (bVar1 != 0);
    iVar6 = uVar5 * 0x10;
    if ((iVar6 < 0) || (uVar5 >> 0x1c != 0)) {
                    /* WARNING: Subroutine does not return */
      FUN_000241a0();
    }
  }
  puVar4 = (undefined2 *)FUN_00023ea0(iVar6);
  local_28 = 0;
LAB_0001ec81:
  local_2c = 0;
  do {
    local_2d = *param_1;
    if (local_2d == 0x61) {
      local_2c = 0xfff;
    }
    else {
      if ((char)local_2d < 'b') break;
      if (local_2d == 0x6f) {
        local_2c = local_2c | 0x207;
      }
      else if (local_2d == 0x75) {
        local_2c = local_2c | 0x9c0;
      }
      else {
        if (local_2d != 0x67) goto LAB_0001ecb0;
        local_2c = local_2c | 0x438;
      }
    }
    param_1 = param_1 + 1;
  } while( true );
  if (((local_2d != 0x2d) && (local_2d != 0x3d)) && (local_2d != 0x2b)) goto LAB_0001ecb0;
  pbVar8 = (byte *)(puVar4 + local_28 * 8);
  do {
    local_28 = local_28 + 1;
    bVar1 = param_1[1];
    iVar6 = (int)(char)bVar1;
    pbVar7 = param_1 + 1;
    if (bVar1 == 0x67) {
      uVar3 = 0x38;
LAB_0001ed55:
      pbVar8[1] = 3;
      *(uint *)(pbVar8 + 8) = uVar3;
      *pbVar8 = local_2d;
      *(uint *)(pbVar8 + 4) = local_2c;
      pbVar7 = param_1 + 2;
      local_2d = *pbVar7;
LAB_0001ed74:
      if (local_2c != 0) {
        uVar3 = local_2c & uVar3;
      }
    }
    else {
      if ('g' < (char)bVar1) {
        if (bVar1 == 0x6f) {
          uVar3 = 7;
        }
        else {
          uVar3 = 0x1c0;
          if (bVar1 != 0x75) goto LAB_0001ee40;
        }
        goto LAB_0001ed55;
      }
      if (7 < (byte)(bVar1 - 0x30)) {
LAB_0001ee40:
        uVar3 = 0;
        if ((byte)(iVar6 - 0x58U) < 0x21) {
                    /* WARNING: Could not recover jumptable at 0x0001ee5f. Too many branches */
                    /* WARNING: Treating indirect jump as call */
          puVar4 = (undefined2 *)
                   (*(code *)(*(int *)("__lxstat64" + (iVar6 - 0x58U & 0xff) * 4 + unaff_EBP) +
                             unaff_EBP + 0x1c40a))();
          return puVar4;
        }
        *pbVar8 = local_2d;
        pbVar8[1] = 1;
        *(uint *)(pbVar8 + 4) = local_2c;
        pbVar8[8] = 0;
        pbVar8[9] = 0;
        pbVar8[10] = 0;
        pbVar8[0xb] = 0;
        local_2d = bVar1;
        goto LAB_0001ed74;
      }
      uVar3 = 0;
      do {
        uVar3 = iVar6 + -0x30 + uVar3 * 8;
        pbVar7 = pbVar7 + 1;
        if (0xfff < uVar3) goto LAB_0001ecb0;
        bVar1 = *pbVar7;
        iVar6 = (int)(char)bVar1;
      } while ((byte)(bVar1 - 0x30) < 8);
      if ((local_2c != 0) || ((bVar1 != 0 && (bVar1 != 0x2c)))) goto LAB_0001ecb0;
      *(uint *)(pbVar8 + 8) = uVar3;
      uVar3 = 0xfff;
      pbVar8[1] = 1;
      *pbVar8 = local_2d;
      pbVar8[4] = 0xff;
      pbVar8[5] = 0xf;
      pbVar8[6] = 0;
      pbVar8[7] = 0;
      local_2c = 0xfff;
      local_2d = bVar1;
    }
    *(uint *)(pbVar8 + 0xc) = uVar3;
    pbVar8 = pbVar8 + 0x10;
    param_1 = pbVar7;
  } while (((local_2d & 0xef) == 0x2d) || (local_2d == 0x2b));
  if (local_2d != 0x2c) {
    if (local_2d == 0) {
      *(undefined1 *)((int)puVar4 + local_28 * 0x10 + 1) = 0;
      return puVar4;
    }
LAB_0001ecb0:
    free(puVar4);
    return (undefined2 *)0x0;
  }
  param_1 = pbVar7 + 1;
  goto LAB_0001ec81;
}


PUSH EBP
CALL 0x0001f1c7
ADD EBP,0x1c40a
PUSH EDI
PUSH ESI
PUSH EBX
SUB ESP,0x2c
MOV ESI,dword ptr [ESP + 0x40]
MOVSX EAX,byte ptr [ESI]
LEA EDX,[EAX + -0x30]
CMP DL,0x7
MOV EDX,ESI
JBE 0x0001ecd8
MOV ECX,0x1
MOV EBX,EAX
TEST AL,AL
JZ 0x0001ef88
LEA ESI,[ESI]
LEA ESI,[ESI]
MOV EAX,EBX
AND EAX,0xffffffef
CMP AL,0x2d
SETZ AL
CMP BL,0x2b
SETZ BL
ADD EDX,0x1
OR EAX,EBX
MOVZX EBX,byte ptr [EDX]
MOVZX EAX,AL
ADD ECX,EAX
TEST BL,BL
JNZ 0x0001ec30
MOV EAX,ECX
SHR EAX,0x1c
SETNZ AL
SHL ECX,0x4
MOVZX EAX,AL
JS 0x0001efc0
TEST EAX,EAX
JNZ 0x0001efc0
SUB ESP,0xc
MOV EBX,EBP
PUSH ECX
CALL 0x00023ea0
XOR EBX,EBX
MOV dword ptr [ESP + 0x28],EAX
ADD ESP,0x10
XOR EAX,EAX
MOVZX ECX,byte ptr [ESI]
CMP CL,0x61
JZ 0x0001eee0
JLE 0x0001ed18
CMP CL,0x6f
JZ 0x0001ef10
CMP CL,0x75
JZ 0x0001ef00
CMP CL,0x67
JZ 0x0001eef0
SUB ESP,0xc
MOV EBX,EBP
PUSH dword ptr [ESP + 0x24]
CALL 0x00012a70
ADD ESP,0x10
MOV dword ptr [ESP + 0x18],0x0
MOV EAX,dword ptr [ESP + 0x18]
ADD ESP,0x2c
POP EBX
POP ESI
POP EDI
POP EBP
RET
XOR EDI,EDI
JMP 0x0001ecef
MOVSX EAX,byte ptr [EDX]
LEA ECX,[EAX + -0x30]
CMP CL,0x7
JA 0x0001ef20
LEA EDI,[EAX + EDI*0x8 + -0x30]
ADD EDX,0x1
CMP EDI,0xfff
JBE 0x0001ece0
MOV dword ptr [ESP + 0x18],0x0
MOV EAX,dword ptr [ESP + 0x18]
ADD ESP,0x2c
POP EBX
POP ESI
POP EDI
POP EBP
RET
MOV dword ptr [ESP + 0x10],EAX
CMP CL,0x2d
JZ 0x0001ed2b
CMP CL,0x3d
JZ 0x0001ed2b
CMP CL,0x2b
JNZ 0x0001ecb0
LEA EAX,[EBX + 0x1]
SHL EBX,0x4
MOV byte ptr [ESP + 0xf],CL
MOV dword ptr [ESP + 0x14],EAX
MOV EAX,dword ptr [ESP + 0x18]
LEA EDI,[EAX + EBX*0x1]
JMP 0x0001eda9
MOV ECX,0x1c0
CMP AL,0x75
JNZ 0x0001ee40
MOVZX EAX,byte ptr [ESP + 0xf]
MOV byte ptr [EDI + 0x1],0x3
MOV dword ptr [EDI + 0x8],ECX
MOV byte ptr [EDI],AL
MOV EAX,dword ptr [ESP + 0x10]
MOV dword ptr [EDI + 0x4],EAX
MOVZX EAX,byte ptr [ESI + 0x2]
MOV ESI,EBX
MOV byte ptr [ESP + 0xf],AL
MOV EDX,dword ptr [ESP + 0x10]
MOV EAX,EDX
AND EAX,ECX
TEST EDX,EDX
CMOVNZ ECX,EAX
MOV EAX,dword ptr [ESP + 0x14]
MOVZX EBX,byte ptr [ESP + 0xf]
MOV dword ptr [EDI + 0xc],ECX
ADD EDI,0x10
LEA EDX,[EAX + 0x1]
MOV EAX,EBX
AND EAX,0xffffffef
CMP AL,0x2d
JZ 0x0001eda5
CMP BL,0x2b
JNZ 0x0001ef92
MOV dword ptr [ESP + 0x14],EDX
MOVSX EAX,byte ptr [ESI + 0x1]
LEA EDX,[ESI + 0x1]
CMP AL,0x67
JZ 0x0001eed0
JLE 0x0001edd0
LEA EBX,[ESI + 0x2]
CMP AL,0x6f
JNZ 0x0001ed48
MOV ECX,0x7
JMP 0x0001ed55
LEA ECX,[EAX + -0x30]
CMP CL,0x7
JA 0x0001ee40
XOR ECX,ECX
LEA ECX,[EAX + ECX*0x8 + -0x30]
ADD EDX,0x1
CMP ECX,0xfff
JA 0x0001ecb0
MOVSX EAX,byte ptr [EDX]
LEA EBX,[EAX + -0x30]
CMP BL,0x7
JBE 0x0001edda
MOV EBX,dword ptr [ESP + 0x10]
TEST EBX,EBX
JNZ 0x0001ecb0
TEST AL,AL
JZ 0x0001ee10
CMP AL,0x2c
JNZ 0x0001ecb0
MOVZX EBX,byte ptr [ESP + 0xf]
MOV dword ptr [EDI + 0x8],ECX
MOV ESI,EDX
MOV ECX,0xfff
MOV byte ptr [EDI + 0x1],0x1
MOV byte ptr [EDI],BL
MOV dword ptr [EDI + 0x4],0xfff
MOV byte ptr [ESP + 0xf],AL
MOV dword ptr [ESP + 0x10],0xfff
JMP 0x0001ed81
LEA EBX,[EAX + -0x58]
MOV ESI,0x1
XOR ECX,ECX
MOV dword ptr [ESP + 0x1c],EDI
CMP BL,0x20
JA 0x0001ee7e
MOVZX EBX,BL
MOV EDI,dword ptr [EBP + EBX*0x4 + 0xffff4ecc]
ADD EDI,EBP
JMP EDI
MOV EDI,dword ptr [ESP + 0x1c]
MOVZX EBX,byte ptr [ESP + 0xf]
MOV byte ptr [ESP + 0xf],AL
MOV byte ptr [EDI],BL
MOV EBX,ESI
MOV ESI,dword ptr [ESP + 0x10]
MOV byte ptr [EDI + 0x1],BL
MOV dword ptr [EDI + 0x4],ESI
MOV ESI,EDX
MOV dword ptr [EDI + 0x8],ECX
JMP 0x0001ed74
LEA EBX,[ESI + 0x2]
MOV ECX,0x38
JMP 0x0001ed55
MOV EAX,0xfff
ADD ESI,0x1
JMP 0x0001ec83
OR EAX,0x438
JMP 0x0001eee5
OR EAX,0x9c0
JMP 0x0001eee5
OR EAX,0x207
JMP 0x0001eee5
MOV dword ptr [ESP + 0x18],0x0
TEST AL,AL
JNZ 0x0001ecc9
SUB EDX,ESI
MOV ESI,EDI
MOV EAX,0xfff
MOV EBX,EBP
AND ESI,0xc00
MOV EBP,0x13d
OR ESI,0x3ff
CMP EDX,0x5
CMOVGE ESI,EAX
SUB ESP,0xc
PUSH 0x20
CALL 0x00023ea0
MOV dword ptr [ESP + 0x28],EAX
ADD ESP,0x10
MOV word ptr [EAX],BP
MOV dword ptr [EAX + 0x4],0xfff
MOV dword ptr [EAX + 0x8],EDI
MOV dword ptr [EAX + 0xc],ESI
MOV byte ptr [EAX + 0x11],0x0
MOV EAX,dword ptr [ESP + 0x18]
ADD ESP,0x2c
POP EBX
POP ESI
POP EDI
POP EBP
RET
MOV ECX,0x10
JMP 0x0001ec6d
CMP BL,0x2c
JNZ 0x0001efa3
ADD ESI,0x1
MOV EBX,dword ptr [ESP + 0x14]
JMP 0x0001ec81
TEST BL,BL
JNZ 0x0001ecb0
MOV EAX,dword ptr [ESP + 0x14]
MOV ESI,dword ptr [ESP + 0x18]
SHL EAX,0x4
MOV byte ptr [ESI + EAX*0x1 + 0x1],0x0
JMP 0x0001ecc9
MOV EBX,EBP
CALL 0x000241a0
(translation_unit "undefined2 * FUN_0001ebf0(byte *param_1)\n\n{\n  byte bVar1;\n  byte bVar2;\n  uint uVar3;\n  undefined2 *puVar4;\n  uint uVar5;\n  int iVar6;\n  byte *pbVar7;\n  int unaff_EBP;\n  byte *pbVar8;\n  byte local_2d;\n  uint local_2c;\n  int local_28;\n  \n  FUN_0001f1c7();\n  bVar1 = *param_1;\n  uVar3 = (uint)(char)bVar1;\n  if ((byte)(bVar1 - 0x30) < 8) {\n    uVar5 = 0;\n    pbVar8 = param_1;\n    do {\n      uVar5 = (uVar3 - 0x30) + uVar5 * 8;\n      pbVar8 = pbVar8 + 1;\n      if (0xfff < uVar5) {\n        return (undefined2 *)0x0;\n      }\n      bVar1 = *pbVar8;\n      uVar3 = (uint)(char)bVar1;\n    } while ((byte)(bVar1 - 0x30) < 8);\n    if (bVar1 != 0) {\n      return (undefined2 *)0x0;\n    }\n    uVar3 = uVar5 & 0xc00 | 0x3ff;\n    if (4 < (int)pbVar8 - (int)param_1) {\n      uVar3 = 0xfff;\n    }\n    puVar4 = (undefined2 *)FUN_00023ea0(0x20);\n    *puVar4 = 0x13d;\n    *(undefined4 *)(puVar4 + 2) = 0xfff;\n    *(uint *)(puVar4 + 4) = uVar5;\n    *(uint *)(puVar4 + 6) = uVar3;\n    *(undefined1 *)((int)puVar4 + 0x11) = 0;\n    return puVar4;\n  }\n  uVar5 = 1;\n  pbVar8 = param_1;\n  if (bVar1 == 0) {\n    iVar6 = 0x10;\n  }\n  else {\n    do {\n      bVar2 = (byte)uVar3;\n      bVar1 = pbVar8[1];\n      uVar3 = (uint)bVar1;\n      uVar5 = uVar5 + ((bVar2 & 0xef) == 0x2d || bVar2 == 0x2b);\n      pbVar8 = pbVar8 + 1;\n    } while (bVar1 != 0);\n    iVar6 = uVar5 * 0x10;\n    if ((iVar6 < 0) || (uVar5 >> 0x1c != 0)) {\n                    /* WARNING: Subroutine does not return */\n      FUN_000241a0();\n    }\n  }\n  puVar4 = (undefined2 *)FUN_00023ea0(iVar6);\n  local_28 = 0;\nLAB_0001ec81:\n  local_2c = 0;\n  do {\n    local_2d = *param_1;\n    if (local_2d == 0x61) {\n      local_2c = 0xfff;\n    }\n    else {\n      if ((char)local_2d < 'b') break;\n      if (local_2d == 0x6f) {\n        local_2c = local_2c | 0x207;\n      }\n      else if (local_2d == 0x75) {\n        local_2c = local_2c | 0x9c0;\n      }\n      else {\n        if (local_2d != 0x67) goto LAB_0001ecb0;\n        local_2c = local_2c | 0x438;\n      }\n    }\n    param_1 = param_1 + 1;\n  } while( true );\n  if (((local_2d != 0x2d) && (local_2d != 0x3d)) && (local_2d != 0x2b)) goto LAB_0001ecb0;\n  pbVar8 = (byte *)(puVar4 + local_28 * 8);\n  do {\n    local_28 = local_28 + 1;\n    bVar1 = param_1[1];\n    iVar6 = (int)(char)bVar1;\n    pbVar7 = param_1 + 1;\n    if (bVar1 == 0x67) {\n      uVar3 = 0x38;\nLAB_0001ed55:\n      pbVar8[1] = 3;\n      *(uint *)(pbVar8 + 8) = uVar3;\n      *pbVar8 = local_2d;\n      *(uint *)(pbVar8 + 4) = local_2c;\n      pbVar7 = param_1 + 2;\n      local_2d = *pbVar7;\nLAB_0001ed74:\n      if (local_2c != 0) {\n        uVar3 = local_2c & uVar3;\n      }\n    }\n    else {\n      if ('g' < (char)bVar1) {\n        if (bVar1 == 0x6f) {\n          uVar3 = 7;\n        }\n        else {\n          uVar3 = 0x1c0;\n          if (bVar1 != 0x75) goto LAB_0001ee40;\n        }\n        goto LAB_0001ed55;\n      }\n      if (7 < (byte)(bVar1 - 0x30)) {\nLAB_0001ee40:\n        uVar3 = 0;\n        if ((byte)(iVar6 - 0x58U) < 0x21) {\n                    /* WARNING: Could not recover jumptable at 0x0001ee5f. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n          puVar4 = (undefined2 *)\n                   (*(code *)(*(int *)("__lxstat64" + (iVar6 - 0x58U & 0xff) * 4 + unaff_EBP) +\n                             unaff_EBP + 0x1c40a))();\n          return puVar4;\n        }\n        *pbVar8 = local_2d;\n        pbVar8[1] = 1;\n        *(uint *)(pbVar8 + 4) = local_2c;\n        pbVar8[8] = 0;\n        pbVar8[9] = 0;\n        pbVar8[10] = 0;\n        pbVar8[0xb] = 0;\n        local_2d = bVar1;\n        goto LAB_0001ed74;\n      }\n      uVar3 = 0;\n      do {\n        uVar3 = iVar6 + -0x30 + uVar3 * 8;\n        pbVar7 = pbVar7 + 1;\n        if (0xfff < uVar3) goto LAB_0001ecb0;\n        bVar1 = *pbVar7;\n        iVar6 = (int)(char)bVar1;\n      } while ((byte)(bVar1 - 0x30) < 8);\n      if ((local_2c != 0) || ((bVar1 != 0 && (bVar1 != 0x2c)))) goto LAB_0001ecb0;\n      *(uint *)(pbVar8 + 8) = uVar3;\n      uVar3 = 0xfff;\n      pbVar8[1] = 1;\n      *pbVar8 = local_2d;\n      pbVar8[4] = 0xff;\n      pbVar8[5] = 0xf;\n      pbVar8[6] = 0;\n      pbVar8[7] = 0;\n      local_2c = 0xfff;\n      local_2d = bVar1;\n    }\n    *(uint *)(pbVar8 + 0xc) = uVar3;\n    pbVar8 = pbVar8 + 0x10;\n    param_1 = pbVar7;\n  } while (((local_2d & 0xef) == 0x2d) || (local_2d == 0x2b));\n  if (local_2d != 0x2c) {\n    if (local_2d == 0) {\n      *(undefined1 *)((int)puVar4 + local_28 * 0x10 + 1) = 0;\n      return puVar4;\n    }\nLAB_0001ecb0:\n    free(puVar4);\n    return (undefined2 *)0x0;\n  }\n  param_1 = pbVar7 + 1;\n  goto LAB_0001ec81;\n}\n\n" (function_definition "undefined2 * FUN_0001ebf0(byte *param_1)\n\n{\n  byte bVar1;\n  byte bVar2;\n  uint uVar3;\n  undefined2 *puVar4;\n  uint uVar5;\n  int iVar6;\n  byte *pbVar7;\n  int unaff_EBP;\n  byte *pbVar8;\n  byte local_2d;\n  uint local_2c;\n  int local_28;\n  \n  FUN_0001f1c7();\n  bVar1 = *param_1;\n  uVar3 = (uint)(char)bVar1;\n  if ((byte)(bVar1 - 0x30) < 8) {\n    uVar5 = 0;\n    pbVar8 = param_1;\n    do {\n      uVar5 = (uVar3 - 0x30) + uVar5 * 8;\n      pbVar8 = pbVar8 + 1;\n      if (0xfff < uVar5) {\n        return (undefined2 *)0x0;\n      }\n      bVar1 = *pbVar8;\n      uVar3 = (uint)(char)bVar1;\n    } while ((byte)(bVar1 - 0x30) < 8);\n    if (bVar1 != 0) {\n      return (undefined2 *)0x0;\n    }\n    uVar3 = uVar5 & 0xc00 | 0x3ff;\n    if (4 < (int)pbVar8 - (int)param_1) {\n      uVar3 = 0xfff;\n    }\n    puVar4 = (undefined2 *)FUN_00023ea0(0x20);\n    *puVar4 = 0x13d;\n    *(undefined4 *)(puVar4 + 2) = 0xfff;\n    *(uint *)(puVar4 + 4) = uVar5;\n    *(uint *)(puVar4 + 6) = uVar3;\n    *(undefined1 *)((int)puVar4 + 0x11) = 0;\n    return puVar4;\n  }\n  uVar5 = 1;\n  pbVar8 = param_1;\n  if (bVar1 == 0) {\n    iVar6 = 0x10;\n  }\n  else {\n    do {\n      bVar2 = (byte)uVar3;\n      bVar1 = pbVar8[1];\n      uVar3 = (uint)bVar1;\n      uVar5 = uVar5 + ((bVar2 & 0xef) == 0x2d || bVar2 == 0x2b);\n      pbVar8 = pbVar8 + 1;\n    } while (bVar1 != 0);\n    iVar6 = uVar5 * 0x10;\n    if ((iVar6 < 0) || (uVar5 >> 0x1c != 0)) {\n                    /* WARNING: Subroutine does not return */\n      FUN_000241a0();\n    }\n  }\n  puVar4 = (undefined2 *)FUN_00023ea0(iVar6);\n  local_28 = 0;\nLAB_0001ec81:\n  local_2c = 0;\n  do {\n    local_2d = *param_1;\n    if (local_2d == 0x61) {\n      local_2c = 0xfff;\n    }\n    else {\n      if ((char)local_2d < 'b') break;\n      if (local_2d == 0x6f) {\n        local_2c = local_2c | 0x207;\n      }\n      else if (local_2d == 0x75) {\n        local_2c = local_2c | 0x9c0;\n      }\n      else {\n        if (local_2d != 0x67) goto LAB_0001ecb0;\n        local_2c = local_2c | 0x438;\n      }\n    }\n    param_1 = param_1 + 1;\n  } while( true );\n  if (((local_2d != 0x2d) && (local_2d != 0x3d)) && (local_2d != 0x2b)) goto LAB_0001ecb0;\n  pbVar8 = (byte *)(puVar4 + local_28 * 8);\n  do {\n    local_28 = local_28 + 1;\n    bVar1 = param_1[1];\n    iVar6 = (int)(char)bVar1;\n    pbVar7 = param_1 + 1;\n    if (bVar1 == 0x67) {\n      uVar3 = 0x38;\nLAB_0001ed55:\n      pbVar8[1] = 3;\n      *(uint *)(pbVar8 + 8) = uVar3;\n      *pbVar8 = local_2d;\n      *(uint *)(pbVar8 + 4) = local_2c;\n      pbVar7 = param_1 + 2;\n      local_2d = *pbVar7;\nLAB_0001ed74:\n      if (local_2c != 0) {\n        uVar3 = local_2c & uVar3;\n      }\n    }\n    else {\n      if ('g' < (char)bVar1) {\n        if (bVar1 == 0x6f) {\n          uVar3 = 7;\n        }\n        else {\n          uVar3 = 0x1c0;\n          if (bVar1 != 0x75) goto LAB_0001ee40;\n        }\n        goto LAB_0001ed55;\n      }\n      if (7 < (byte)(bVar1 - 0x30)) {\nLAB_0001ee40:\n        uVar3 = 0;\n        if ((byte)(iVar6 - 0x58U) < 0x21) {\n                    /* WARNING: Could not recover jumptable at 0x0001ee5f. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n          puVar4 = (undefined2 *)\n                   (*(code *)(*(int *)("__lxstat64" + (iVar6 - 0x58U & 0xff) * 4 + unaff_EBP) +\n                             unaff_EBP + 0x1c40a))();\n          return puVar4;\n        }\n        *pbVar8 = local_2d;\n        pbVar8[1] = 1;\n        *(uint *)(pbVar8 + 4) = local_2c;\n        pbVar8[8] = 0;\n        pbVar8[9] = 0;\n        pbVar8[10] = 0;\n        pbVar8[0xb] = 0;\n        local_2d = bVar1;\n        goto LAB_0001ed74;\n      }\n      uVar3 = 0;\n      do {\n        uVar3 = iVar6 + -0x30 + uVar3 * 8;\n        pbVar7 = pbVar7 + 1;\n        if (0xfff < uVar3) goto LAB_0001ecb0;\n        bVar1 = *pbVar7;\n        iVar6 = (int)(char)bVar1;\n      } while ((byte)(bVar1 - 0x30) < 8);\n      if ((local_2c != 0) || ((bVar1 != 0 && (bVar1 != 0x2c)))) goto LAB_0001ecb0;\n      *(uint *)(pbVar8 + 8) = uVar3;\n      uVar3 = 0xfff;\n      pbVar8[1] = 1;\n      *pbVar8 = local_2d;\n      pbVar8[4] = 0xff;\n      pbVar8[5] = 0xf;\n      pbVar8[6] = 0;\n      pbVar8[7] = 0;\n      local_2c = 0xfff;\n      local_2d = bVar1;\n    }\n    *(uint *)(pbVar8 + 0xc) = uVar3;\n    pbVar8 = pbVar8 + 0x10;\n    param_1 = pbVar7;\n  } while (((local_2d & 0xef) == 0x2d) || (local_2d == 0x2b));\n  if (local_2d != 0x2c) {\n    if (local_2d == 0) {\n      *(undefined1 *)((int)puVar4 + local_28 * 0x10 + 1) = 0;\n      return puVar4;\n    }\nLAB_0001ecb0:\n    free(puVar4);\n    return (undefined2 *)0x0;\n  }\n  param_1 = pbVar7 + 1;\n  goto LAB_0001ec81;\n}" type_identifier (pointer_declarator "* FUN_0001ebf0(byte *param_1)" * (function_declarator "FUN_0001ebf0(byte *param_1)" identifier (parameter_list "(byte *param_1)" ( (parameter_declaration "byte *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) )))) (compound_statement "{\n  byte bVar1;\n  byte bVar2;\n  uint uVar3;\n  undefined2 *puVar4;\n  uint uVar5;\n  int iVar6;\n  byte *pbVar7;\n  int unaff_EBP;\n  byte *pbVar8;\n  byte local_2d;\n  uint local_2c;\n  int local_28;\n  \n  FUN_0001f1c7();\n  bVar1 = *param_1;\n  uVar3 = (uint)(char)bVar1;\n  if ((byte)(bVar1 - 0x30) < 8) {\n    uVar5 = 0;\n    pbVar8 = param_1;\n    do {\n      uVar5 = (uVar3 - 0x30) + uVar5 * 8;\n      pbVar8 = pbVar8 + 1;\n      if (0xfff < uVar5) {\n        return (undefined2 *)0x0;\n      }\n      bVar1 = *pbVar8;\n      uVar3 = (uint)(char)bVar1;\n    } while ((byte)(bVar1 - 0x30) < 8);\n    if (bVar1 != 0) {\n      return (undefined2 *)0x0;\n    }\n    uVar3 = uVar5 & 0xc00 | 0x3ff;\n    if (4 < (int)pbVar8 - (int)param_1) {\n      uVar3 = 0xfff;\n    }\n    puVar4 = (undefined2 *)FUN_00023ea0(0x20);\n    *puVar4 = 0x13d;\n    *(undefined4 *)(puVar4 + 2) = 0xfff;\n    *(uint *)(puVar4 + 4) = uVar5;\n    *(uint *)(puVar4 + 6) = uVar3;\n    *(undefined1 *)((int)puVar4 + 0x11) = 0;\n    return puVar4;\n  }\n  uVar5 = 1;\n  pbVar8 = param_1;\n  if (bVar1 == 0) {\n    iVar6 = 0x10;\n  }\n  else {\n    do {\n      bVar2 = (byte)uVar3;\n      bVar1 = pbVar8[1];\n      uVar3 = (uint)bVar1;\n      uVar5 = uVar5 + ((bVar2 & 0xef) == 0x2d || bVar2 == 0x2b);\n      pbVar8 = pbVar8 + 1;\n    } while (bVar1 != 0);\n    iVar6 = uVar5 * 0x10;\n    if ((iVar6 < 0) || (uVar5 >> 0x1c != 0)) {\n                    /* WARNING: Subroutine does not return */\n      FUN_000241a0();\n    }\n  }\n  puVar4 = (undefined2 *)FUN_00023ea0(iVar6);\n  local_28 = 0;\nLAB_0001ec81:\n  local_2c = 0;\n  do {\n    local_2d = *param_1;\n    if (local_2d == 0x61) {\n      local_2c = 0xfff;\n    }\n    else {\n      if ((char)local_2d < 'b') break;\n      if (local_2d == 0x6f) {\n        local_2c = local_2c | 0x207;\n      }\n      else if (local_2d == 0x75) {\n        local_2c = local_2c | 0x9c0;\n      }\n      else {\n        if (local_2d != 0x67) goto LAB_0001ecb0;\n        local_2c = local_2c | 0x438;\n      }\n    }\n    param_1 = param_1 + 1;\n  } while( true );\n  if (((local_2d != 0x2d) && (local_2d != 0x3d)) && (local_2d != 0x2b)) goto LAB_0001ecb0;\n  pbVar8 = (byte *)(puVar4 + local_28 * 8);\n  do {\n    local_28 = local_28 + 1;\n    bVar1 = param_1[1];\n    iVar6 = (int)(char)bVar1;\n    pbVar7 = param_1 + 1;\n    if (bVar1 == 0x67) {\n      uVar3 = 0x38;\nLAB_0001ed55:\n      pbVar8[1] = 3;\n      *(uint *)(pbVar8 + 8) = uVar3;\n      *pbVar8 = local_2d;\n      *(uint *)(pbVar8 + 4) = local_2c;\n      pbVar7 = param_1 + 2;\n      local_2d = *pbVar7;\nLAB_0001ed74:\n      if (local_2c != 0) {\n        uVar3 = local_2c & uVar3;\n      }\n    }\n    else {\n      if ('g' < (char)bVar1) {\n        if (bVar1 == 0x6f) {\n          uVar3 = 7;\n        }\n        else {\n          uVar3 = 0x1c0;\n          if (bVar1 != 0x75) goto LAB_0001ee40;\n        }\n        goto LAB_0001ed55;\n      }\n      if (7 < (byte)(bVar1 - 0x30)) {\nLAB_0001ee40:\n        uVar3 = 0;\n        if ((byte)(iVar6 - 0x58U) < 0x21) {\n                    /* WARNING: Could not recover jumptable at 0x0001ee5f. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n          puVar4 = (undefined2 *)\n                   (*(code *)(*(int *)("__lxstat64" + (iVar6 - 0x58U & 0xff) * 4 + unaff_EBP) +\n                             unaff_EBP + 0x1c40a))();\n          return puVar4;\n        }\n        *pbVar8 = local_2d;\n        pbVar8[1] = 1;\n        *(uint *)(pbVar8 + 4) = local_2c;\n        pbVar8[8] = 0;\n        pbVar8[9] = 0;\n        pbVar8[10] = 0;\n        pbVar8[0xb] = 0;\n        local_2d = bVar1;\n        goto LAB_0001ed74;\n      }\n      uVar3 = 0;\n      do {\n        uVar3 = iVar6 + -0x30 + uVar3 * 8;\n        pbVar7 = pbVar7 + 1;\n        if (0xfff < uVar3) goto LAB_0001ecb0;\n        bVar1 = *pbVar7;\n        iVar6 = (int)(char)bVar1;\n      } while ((byte)(bVar1 - 0x30) < 8);\n      if ((local_2c != 0) || ((bVar1 != 0 && (bVar1 != 0x2c)))) goto LAB_0001ecb0;\n      *(uint *)(pbVar8 + 8) = uVar3;\n      uVar3 = 0xfff;\n      pbVar8[1] = 1;\n      *pbVar8 = local_2d;\n      pbVar8[4] = 0xff;\n      pbVar8[5] = 0xf;\n      pbVar8[6] = 0;\n      pbVar8[7] = 0;\n      local_2c = 0xfff;\n      local_2d = bVar1;\n    }\n    *(uint *)(pbVar8 + 0xc) = uVar3;\n    pbVar8 = pbVar8 + 0x10;\n    param_1 = pbVar7;\n  } while (((local_2d & 0xef) == 0x2d) || (local_2d == 0x2b));\n  if (local_2d != 0x2c) {\n    if (local_2d == 0) {\n      *(undefined1 *)((int)puVar4 + local_28 * 0x10 + 1) = 0;\n      return puVar4;\n    }\nLAB_0001ecb0:\n    free(puVar4);\n    return (undefined2 *)0x0;\n  }\n  param_1 = pbVar7 + 1;\n  goto LAB_0001ec81;\n}" { (declaration "byte bVar1;" type_identifier identifier ;) (declaration "byte bVar2;" type_identifier identifier ;) (declaration "uint uVar3;" type_identifier identifier ;) (declaration "undefined2 *puVar4;" type_identifier (pointer_declarator "*puVar4" * identifier) ;) (declaration "uint uVar5;" type_identifier identifier ;) (declaration "int iVar6;" primitive_type identifier ;) (declaration "byte *pbVar7;" type_identifier (pointer_declarator "*pbVar7" * identifier) ;) (declaration "int unaff_EBP;" primitive_type identifier ;) (declaration "byte *pbVar8;" type_identifier (pointer_declarator "*pbVar8" * identifier) ;) (declaration "byte local_2d;" type_identifier identifier ;) (declaration "uint local_2c;" type_identifier identifier ;) (declaration "int local_28;" primitive_type identifier ;) (expression_statement "FUN_0001f1c7();" (call_expression "FUN_0001f1c7()" identifier (argument_list "()" ( ))) ;) (expression_statement "bVar1 = *param_1;" (assignment_expression "bVar1 = *param_1" identifier = (pointer_expression "*param_1" * identifier)) ;) (expression_statement "uVar3 = (uint)(char)bVar1;" (assignment_expression "uVar3 = (uint)(char)bVar1" identifier = (cast_expression "(uint)(char)bVar1" ( (type_descriptor "uint" type_identifier) ) (cast_expression "(char)bVar1" ( (type_descriptor "char" primitive_type) ) identifier))) ;) (if_statement "if ((byte)(bVar1 - 0x30) < 8) {\n    uVar5 = 0;\n    pbVar8 = param_1;\n    do {\n      uVar5 = (uVar3 - 0x30) + uVar5 * 8;\n      pbVar8 = pbVar8 + 1;\n      if (0xfff < uVar5) {\n        return (undefined2 *)0x0;\n      }\n      bVar1 = *pbVar8;\n      uVar3 = (uint)(char)bVar1;\n    } while ((byte)(bVar1 - 0x30) < 8);\n    if (bVar1 != 0) {\n      return (undefined2 *)0x0;\n    }\n    uVar3 = uVar5 & 0xc00 | 0x3ff;\n    if (4 < (int)pbVar8 - (int)param_1) {\n      uVar3 = 0xfff;\n    }\n    puVar4 = (undefined2 *)FUN_00023ea0(0x20);\n    *puVar4 = 0x13d;\n    *(undefined4 *)(puVar4 + 2) = 0xfff;\n    *(uint *)(puVar4 + 4) = uVar5;\n    *(uint *)(puVar4 + 6) = uVar3;\n    *(undefined1 *)((int)puVar4 + 0x11) = 0;\n    return puVar4;\n  }" if (parenthesized_expression "((byte)(bVar1 - 0x30) < 8)" ( (binary_expression "(byte)(bVar1 - 0x30) < 8" (call_expression "(byte)(bVar1 - 0x30)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(bVar1 - 0x30)" ( (binary_expression "bVar1 - 0x30" identifier - number_literal) ))) < number_literal) )) (compound_statement "{\n    uVar5 = 0;\n    pbVar8 = param_1;\n    do {\n      uVar5 = (uVar3 - 0x30) + uVar5 * 8;\n      pbVar8 = pbVar8 + 1;\n      if (0xfff < uVar5) {\n        return (undefined2 *)0x0;\n      }\n      bVar1 = *pbVar8;\n      uVar3 = (uint)(char)bVar1;\n    } while ((byte)(bVar1 - 0x30) < 8);\n    if (bVar1 != 0) {\n      return (undefined2 *)0x0;\n    }\n    uVar3 = uVar5 & 0xc00 | 0x3ff;\n    if (4 < (int)pbVar8 - (int)param_1) {\n      uVar3 = 0xfff;\n    }\n    puVar4 = (undefined2 *)FUN_00023ea0(0x20);\n    *puVar4 = 0x13d;\n    *(undefined4 *)(puVar4 + 2) = 0xfff;\n    *(uint *)(puVar4 + 4) = uVar5;\n    *(uint *)(puVar4 + 6) = uVar3;\n    *(undefined1 *)((int)puVar4 + 0x11) = 0;\n    return puVar4;\n  }" { (expression_statement "uVar5 = 0;" (assignment_expression "uVar5 = 0" identifier = number_literal) ;) (expression_statement "pbVar8 = param_1;" (assignment_expression "pbVar8 = param_1" identifier = identifier) ;) (do_statement "do {\n      uVar5 = (uVar3 - 0x30) + uVar5 * 8;\n      pbVar8 = pbVar8 + 1;\n      if (0xfff < uVar5) {\n        return (undefined2 *)0x0;\n      }\n      bVar1 = *pbVar8;\n      uVar3 = (uint)(char)bVar1;\n    } while ((byte)(bVar1 - 0x30) < 8);" do (compound_statement "{\n      uVar5 = (uVar3 - 0x30) + uVar5 * 8;\n      pbVar8 = pbVar8 + 1;\n      if (0xfff < uVar5) {\n        return (undefined2 *)0x0;\n      }\n      bVar1 = *pbVar8;\n      uVar3 = (uint)(char)bVar1;\n    }" { (expression_statement "uVar5 = (uVar3 - 0x30) + uVar5 * 8;" (assignment_expression "uVar5 = (uVar3 - 0x30) + uVar5 * 8" identifier = (binary_expression "(uVar3 - 0x30) + uVar5 * 8" (parenthesized_expression "(uVar3 - 0x30)" ( (binary_expression "uVar3 - 0x30" identifier - number_literal) )) + (binary_expression "uVar5 * 8" identifier * number_literal))) ;) (expression_statement "pbVar8 = pbVar8 + 1;" (assignment_expression "pbVar8 = pbVar8 + 1" identifier = (binary_expression "pbVar8 + 1" identifier + number_literal)) ;) (if_statement "if (0xfff < uVar5) {\n        return (undefined2 *)0x0;\n      }" if (parenthesized_expression "(0xfff < uVar5)" ( (binary_expression "0xfff < uVar5" number_literal < identifier) )) (compound_statement "{\n        return (undefined2 *)0x0;\n      }" { (return_statement "return (undefined2 *)0x0;" return (cast_expression "(undefined2 *)0x0" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) ;) })) (expression_statement "bVar1 = *pbVar8;" (assignment_expression "bVar1 = *pbVar8" identifier = (pointer_expression "*pbVar8" * identifier)) ;) (expression_statement "uVar3 = (uint)(char)bVar1;" (assignment_expression "uVar3 = (uint)(char)bVar1" identifier = (cast_expression "(uint)(char)bVar1" ( (type_descriptor "uint" type_identifier) ) (cast_expression "(char)bVar1" ( (type_descriptor "char" primitive_type) ) identifier))) ;) }) while (parenthesized_expression "((byte)(bVar1 - 0x30) < 8)" ( (binary_expression "(byte)(bVar1 - 0x30) < 8" (call_expression "(byte)(bVar1 - 0x30)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(bVar1 - 0x30)" ( (binary_expression "bVar1 - 0x30" identifier - number_literal) ))) < number_literal) )) ;) (if_statement "if (bVar1 != 0) {\n      return (undefined2 *)0x0;\n    }" if (parenthesized_expression "(bVar1 != 0)" ( (binary_expression "bVar1 != 0" identifier != number_literal) )) (compound_statement "{\n      return (undefined2 *)0x0;\n    }" { (return_statement "return (undefined2 *)0x0;" return (cast_expression "(undefined2 *)0x0" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) ;) })) (expression_statement "uVar3 = uVar5 & 0xc00 | 0x3ff;" (assignment_expression "uVar3 = uVar5 & 0xc00 | 0x3ff" identifier = (binary_expression "uVar5 & 0xc00 | 0x3ff" (binary_expression "uVar5 & 0xc00" identifier & number_literal) | number_literal)) ;) (if_statement "if (4 < (int)pbVar8 - (int)param_1) {\n      uVar3 = 0xfff;\n    }" if (parenthesized_expression "(4 < (int)pbVar8 - (int)param_1)" ( (binary_expression "4 < (int)pbVar8 - (int)param_1" number_literal < (binary_expression "(int)pbVar8 - (int)param_1" (cast_expression "(int)pbVar8" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)param_1" ( (type_descriptor "int" primitive_type) ) identifier))) )) (compound_statement "{\n      uVar3 = 0xfff;\n    }" { (expression_statement "uVar3 = 0xfff;" (assignment_expression "uVar3 = 0xfff" identifier = number_literal) ;) })) (expression_statement "puVar4 = (undefined2 *)FUN_00023ea0(0x20);" (assignment_expression "puVar4 = (undefined2 *)FUN_00023ea0(0x20)" identifier = (cast_expression "(undefined2 *)FUN_00023ea0(0x20)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00023ea0(0x20)" identifier (argument_list "(0x20)" ( number_literal ))))) ;) (expression_statement "*puVar4 = 0x13d;" (assignment_expression "*puVar4 = 0x13d" (pointer_expression "*puVar4" * identifier) = number_literal) ;) (expression_statement "*(undefined4 *)(puVar4 + 2) = 0xfff;" (assignment_expression "*(undefined4 *)(puVar4 + 2) = 0xfff" (pointer_expression "*(undefined4 *)(puVar4 + 2)" * (cast_expression "(undefined4 *)(puVar4 + 2)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar4 + 2)" ( (binary_expression "puVar4 + 2" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(uint *)(puVar4 + 4) = uVar5;" (assignment_expression "*(uint *)(puVar4 + 4) = uVar5" (pointer_expression "*(uint *)(puVar4 + 4)" * (cast_expression "(uint *)(puVar4 + 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar4 + 4)" ( (binary_expression "puVar4 + 4" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(uint *)(puVar4 + 6) = uVar3;" (assignment_expression "*(uint *)(puVar4 + 6) = uVar3" (pointer_expression "*(uint *)(puVar4 + 6)" * (cast_expression "(uint *)(puVar4 + 6)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar4 + 6)" ( (binary_expression "puVar4 + 6" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined1 *)((int)puVar4 + 0x11) = 0;" (assignment_expression "*(undefined1 *)((int)puVar4 + 0x11) = 0" (pointer_expression "*(undefined1 *)((int)puVar4 + 0x11)" * (cast_expression "(undefined1 *)((int)puVar4 + 0x11)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar4 + 0x11)" ( (binary_expression "(int)puVar4 + 0x11" (cast_expression "(int)puVar4" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (return_statement "return puVar4;" return identifier ;) })) (expression_statement "uVar5 = 1;" (assignment_expression "uVar5 = 1" identifier = number_literal) ;) (expression_statement "pbVar8 = param_1;" (assignment_expression "pbVar8 = param_1" identifier = identifier) ;) (if_statement "if (bVar1 == 0) {\n    iVar6 = 0x10;\n  }\n  else {\n    do {\n      bVar2 = (byte)uVar3;\n      bVar1 = pbVar8[1];\n      uVar3 = (uint)bVar1;\n      uVar5 = uVar5 + ((bVar2 & 0xef) == 0x2d || bVar2 == 0x2b);\n      pbVar8 = pbVar8 + 1;\n    } while (bVar1 != 0);\n    iVar6 = uVar5 * 0x10;\n    if ((iVar6 < 0) || (uVar5 >> 0x1c != 0)) {\n                    /* WARNING: Subroutine does not return */\n      FUN_000241a0();\n    }\n  }" if (parenthesized_expression "(bVar1 == 0)" ( (binary_expression "bVar1 == 0" identifier == number_literal) )) (compound_statement "{\n    iVar6 = 0x10;\n  }" { (expression_statement "iVar6 = 0x10;" (assignment_expression "iVar6 = 0x10" identifier = number_literal) ;) }) (else_clause "else {\n    do {\n      bVar2 = (byte)uVar3;\n      bVar1 = pbVar8[1];\n      uVar3 = (uint)bVar1;\n      uVar5 = uVar5 + ((bVar2 & 0xef) == 0x2d || bVar2 == 0x2b);\n      pbVar8 = pbVar8 + 1;\n    } while (bVar1 != 0);\n    iVar6 = uVar5 * 0x10;\n    if ((iVar6 < 0) || (uVar5 >> 0x1c != 0)) {\n                    /* WARNING: Subroutine does not return */\n      FUN_000241a0();\n    }\n  }" else (compound_statement "{\n    do {\n      bVar2 = (byte)uVar3;\n      bVar1 = pbVar8[1];\n      uVar3 = (uint)bVar1;\n      uVar5 = uVar5 + ((bVar2 & 0xef) == 0x2d || bVar2 == 0x2b);\n      pbVar8 = pbVar8 + 1;\n    } while (bVar1 != 0);\n    iVar6 = uVar5 * 0x10;\n    if ((iVar6 < 0) || (uVar5 >> 0x1c != 0)) {\n                    /* WARNING: Subroutine does not return */\n      FUN_000241a0();\n    }\n  }" { (do_statement "do {\n      bVar2 = (byte)uVar3;\n      bVar1 = pbVar8[1];\n      uVar3 = (uint)bVar1;\n      uVar5 = uVar5 + ((bVar2 & 0xef) == 0x2d || bVar2 == 0x2b);\n      pbVar8 = pbVar8 + 1;\n    } while (bVar1 != 0);" do (compound_statement "{\n      bVar2 = (byte)uVar3;\n      bVar1 = pbVar8[1];\n      uVar3 = (uint)bVar1;\n      uVar5 = uVar5 + ((bVar2 & 0xef) == 0x2d || bVar2 == 0x2b);\n      pbVar8 = pbVar8 + 1;\n    }" { (expression_statement "bVar2 = (byte)uVar3;" (assignment_expression "bVar2 = (byte)uVar3" identifier = (cast_expression "(byte)uVar3" ( (type_descriptor "byte" type_identifier) ) identifier)) ;) (expression_statement "bVar1 = pbVar8[1];" (assignment_expression "bVar1 = pbVar8[1]" identifier = (subscript_expression "pbVar8[1]" identifier [ number_literal ])) ;) (expression_statement "uVar3 = (uint)bVar1;" (assignment_expression "uVar3 = (uint)bVar1" identifier = (cast_expression "(uint)bVar1" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (expression_statement "uVar5 = uVar5 + ((bVar2 & 0xef) == 0x2d || bVar2 == 0x2b);" (assignment_expression "uVar5 = uVar5 + ((bVar2 & 0xef) == 0x2d || bVar2 == 0x2b)" identifier = (binary_expression "uVar5 + ((bVar2 & 0xef) == 0x2d || bVar2 == 0x2b)" identifier + (parenthesized_expression "((bVar2 & 0xef) == 0x2d || bVar2 == 0x2b)" ( (binary_expression "(bVar2 & 0xef) == 0x2d || bVar2 == 0x2b" (binary_expression "(bVar2 & 0xef) == 0x2d" (parenthesized_expression "(bVar2 & 0xef)" ( (binary_expression "bVar2 & 0xef" identifier & number_literal) )) == number_literal) || (binary_expression "bVar2 == 0x2b" identifier == number_literal)) )))) ;) (expression_statement "pbVar8 = pbVar8 + 1;" (assignment_expression "pbVar8 = pbVar8 + 1" identifier = (binary_expression "pbVar8 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(bVar1 != 0)" ( (binary_expression "bVar1 != 0" identifier != number_literal) )) ;) (expression_statement "iVar6 = uVar5 * 0x10;" (assignment_expression "iVar6 = uVar5 * 0x10" identifier = (binary_expression "uVar5 * 0x10" identifier * number_literal)) ;) (if_statement "if ((iVar6 < 0) || (uVar5 >> 0x1c != 0)) {\n                    /* WARNING: Subroutine does not return */\n      FUN_000241a0();\n    }" if (parenthesized_expression "((iVar6 < 0) || (uVar5 >> 0x1c != 0))" ( (binary_expression "(iVar6 < 0) || (uVar5 >> 0x1c != 0)" (parenthesized_expression "(iVar6 < 0)" ( (binary_expression "iVar6 < 0" identifier < number_literal) )) || (parenthesized_expression "(uVar5 >> 0x1c != 0)" ( (binary_expression "uVar5 >> 0x1c != 0" (binary_expression "uVar5 >> 0x1c" identifier >> number_literal) != number_literal) ))) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n      FUN_000241a0();\n    }" { comment (expression_statement "FUN_000241a0();" (call_expression "FUN_000241a0()" identifier (argument_list "()" ( ))) ;) })) }))) (expression_statement "puVar4 = (undefined2 *)FUN_00023ea0(iVar6);" (assignment_expression "puVar4 = (undefined2 *)FUN_00023ea0(iVar6)" identifier = (cast_expression "(undefined2 *)FUN_00023ea0(iVar6)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00023ea0(iVar6)" identifier (argument_list "(iVar6)" ( identifier ))))) ;) (expression_statement "local_28 = 0;" (assignment_expression "local_28 = 0" identifier = number_literal) ;) (labeled_statement "LAB_0001ec81:\n  local_2c = 0;" statement_identifier : (expression_statement "local_2c = 0;" (assignment_expression "local_2c = 0" identifier = number_literal) ;)) (do_statement "do {\n    local_2d = *param_1;\n    if (local_2d == 0x61) {\n      local_2c = 0xfff;\n    }\n    else {\n      if ((char)local_2d < 'b') break;\n      if (local_2d == 0x6f) {\n        local_2c = local_2c | 0x207;\n      }\n      else if (local_2d == 0x75) {\n        local_2c = local_2c | 0x9c0;\n      }\n      else {\n        if (local_2d != 0x67) goto LAB_0001ecb0;\n        local_2c = local_2c | 0x438;\n      }\n    }\n    param_1 = param_1 + 1;\n  } while( true );" do (compound_statement "{\n    local_2d = *param_1;\n    if (local_2d == 0x61) {\n      local_2c = 0xfff;\n    }\n    else {\n      if ((char)local_2d < 'b') break;\n      if (local_2d == 0x6f) {\n        local_2c = local_2c | 0x207;\n      }\n      else if (local_2d == 0x75) {\n        local_2c = local_2c | 0x9c0;\n      }\n      else {\n        if (local_2d != 0x67) goto LAB_0001ecb0;\n        local_2c = local_2c | 0x438;\n      }\n    }\n    param_1 = param_1 + 1;\n  }" { (expression_statement "local_2d = *param_1;" (assignment_expression "local_2d = *param_1" identifier = (pointer_expression "*param_1" * identifier)) ;) (if_statement "if (local_2d == 0x61) {\n      local_2c = 0xfff;\n    }\n    else {\n      if ((char)local_2d < 'b') break;\n      if (local_2d == 0x6f) {\n        local_2c = local_2c | 0x207;\n      }\n      else if (local_2d == 0x75) {\n        local_2c = local_2c | 0x9c0;\n      }\n      else {\n        if (local_2d != 0x67) goto LAB_0001ecb0;\n        local_2c = local_2c | 0x438;\n      }\n    }" if (parenthesized_expression "(local_2d == 0x61)" ( (binary_expression "local_2d == 0x61" identifier == number_literal) )) (compound_statement "{\n      local_2c = 0xfff;\n    }" { (expression_statement "local_2c = 0xfff;" (assignment_expression "local_2c = 0xfff" identifier = number_literal) ;) }) (else_clause "else {\n      if ((char)local_2d < 'b') break;\n      if (local_2d == 0x6f) {\n        local_2c = local_2c | 0x207;\n      }\n      else if (local_2d == 0x75) {\n        local_2c = local_2c | 0x9c0;\n      }\n      else {\n        if (local_2d != 0x67) goto LAB_0001ecb0;\n        local_2c = local_2c | 0x438;\n      }\n    }" else (compound_statement "{\n      if ((char)local_2d < 'b') break;\n      if (local_2d == 0x6f) {\n        local_2c = local_2c | 0x207;\n      }\n      else if (local_2d == 0x75) {\n        local_2c = local_2c | 0x9c0;\n      }\n      else {\n        if (local_2d != 0x67) goto LAB_0001ecb0;\n        local_2c = local_2c | 0x438;\n      }\n    }" { (if_statement "if ((char)local_2d < 'b') break;" if (parenthesized_expression "((char)local_2d < 'b')" ( (binary_expression "(char)local_2d < 'b'" (cast_expression "(char)local_2d" ( (type_descriptor "char" primitive_type) ) identifier) < (char_literal "'b'" ' character ')) )) (break_statement "break;" break ;)) (if_statement "if (local_2d == 0x6f) {\n        local_2c = local_2c | 0x207;\n      }\n      else if (local_2d == 0x75) {\n        local_2c = local_2c | 0x9c0;\n      }\n      else {\n        if (local_2d != 0x67) goto LAB_0001ecb0;\n        local_2c = local_2c | 0x438;\n      }" if (parenthesized_expression "(local_2d == 0x6f)" ( (binary_expression "local_2d == 0x6f" identifier == number_literal) )) (compound_statement "{\n        local_2c = local_2c | 0x207;\n      }" { (expression_statement "local_2c = local_2c | 0x207;" (assignment_expression "local_2c = local_2c | 0x207" identifier = (binary_expression "local_2c | 0x207" identifier | number_literal)) ;) }) (else_clause "else if (local_2d == 0x75) {\n        local_2c = local_2c | 0x9c0;\n      }\n      else {\n        if (local_2d != 0x67) goto LAB_0001ecb0;\n        local_2c = local_2c | 0x438;\n      }" else (if_statement "if (local_2d == 0x75) {\n        local_2c = local_2c | 0x9c0;\n      }\n      else {\n        if (local_2d != 0x67) goto LAB_0001ecb0;\n        local_2c = local_2c | 0x438;\n      }" if (parenthesized_expression "(local_2d == 0x75)" ( (binary_expression "local_2d == 0x75" identifier == number_literal) )) (compound_statement "{\n        local_2c = local_2c | 0x9c0;\n      }" { (expression_statement "local_2c = local_2c | 0x9c0;" (assignment_expression "local_2c = local_2c | 0x9c0" identifier = (binary_expression "local_2c | 0x9c0" identifier | number_literal)) ;) }) (else_clause "else {\n        if (local_2d != 0x67) goto LAB_0001ecb0;\n        local_2c = local_2c | 0x438;\n      }" else (compound_statement "{\n        if (local_2d != 0x67) goto LAB_0001ecb0;\n        local_2c = local_2c | 0x438;\n      }" { (if_statement "if (local_2d != 0x67) goto LAB_0001ecb0;" if (parenthesized_expression "(local_2d != 0x67)" ( (binary_expression "local_2d != 0x67" identifier != number_literal) )) (goto_statement "goto LAB_0001ecb0;" goto statement_identifier ;)) (expression_statement "local_2c = local_2c | 0x438;" (assignment_expression "local_2c = local_2c | 0x438" identifier = (binary_expression "local_2c | 0x438" identifier | number_literal)) ;) }))))) }))) (expression_statement "param_1 = param_1 + 1;" (assignment_expression "param_1 = param_1 + 1" identifier = (binary_expression "param_1 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "( true )" ( true )) ;) (if_statement "if (((local_2d != 0x2d) && (local_2d != 0x3d)) && (local_2d != 0x2b)) goto LAB_0001ecb0;" if (parenthesized_expression "(((local_2d != 0x2d) && (local_2d != 0x3d)) && (local_2d != 0x2b))" ( (binary_expression "((local_2d != 0x2d) && (local_2d != 0x3d)) && (local_2d != 0x2b)" (parenthesized_expression "((local_2d != 0x2d) && (local_2d != 0x3d))" ( (binary_expression "(local_2d != 0x2d) && (local_2d != 0x3d)" (parenthesized_expression "(local_2d != 0x2d)" ( (binary_expression "local_2d != 0x2d" identifier != number_literal) )) && (parenthesized_expression "(local_2d != 0x3d)" ( (binary_expression "local_2d != 0x3d" identifier != number_literal) ))) )) && (parenthesized_expression "(local_2d != 0x2b)" ( (binary_expression "local_2d != 0x2b" identifier != number_literal) ))) )) (goto_statement "goto LAB_0001ecb0;" goto statement_identifier ;)) (expression_statement "pbVar8 = (byte *)(puVar4 + local_28 * 8);" (assignment_expression "pbVar8 = (byte *)(puVar4 + local_28 * 8)" identifier = (cast_expression "(byte *)(puVar4 + local_28 * 8)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar4 + local_28 * 8)" ( (binary_expression "puVar4 + local_28 * 8" identifier + (binary_expression "local_28 * 8" identifier * number_literal)) )))) ;) (do_statement "do {\n    local_28 = local_28 + 1;\n    bVar1 = param_1[1];\n    iVar6 = (int)(char)bVar1;\n    pbVar7 = param_1 + 1;\n    if (bVar1 == 0x67) {\n      uVar3 = 0x38;\nLAB_0001ed55:\n      pbVar8[1] = 3;\n      *(uint *)(pbVar8 + 8) = uVar3;\n      *pbVar8 = local_2d;\n      *(uint *)(pbVar8 + 4) = local_2c;\n      pbVar7 = param_1 + 2;\n      local_2d = *pbVar7;\nLAB_0001ed74:\n      if (local_2c != 0) {\n        uVar3 = local_2c & uVar3;\n      }\n    }\n    else {\n      if ('g' < (char)bVar1) {\n        if (bVar1 == 0x6f) {\n          uVar3 = 7;\n        }\n        else {\n          uVar3 = 0x1c0;\n          if (bVar1 != 0x75) goto LAB_0001ee40;\n        }\n        goto LAB_0001ed55;\n      }\n      if (7 < (byte)(bVar1 - 0x30)) {\nLAB_0001ee40:\n        uVar3 = 0;\n        if ((byte)(iVar6 - 0x58U) < 0x21) {\n                    /* WARNING: Could not recover jumptable at 0x0001ee5f. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n          puVar4 = (undefined2 *)\n                   (*(code *)(*(int *)("__lxstat64" + (iVar6 - 0x58U & 0xff) * 4 + unaff_EBP) +\n                             unaff_EBP + 0x1c40a))();\n          return puVar4;\n        }\n        *pbVar8 = local_2d;\n        pbVar8[1] = 1;\n        *(uint *)(pbVar8 + 4) = local_2c;\n        pbVar8[8] = 0;\n        pbVar8[9] = 0;\n        pbVar8[10] = 0;\n        pbVar8[0xb] = 0;\n        local_2d = bVar1;\n        goto LAB_0001ed74;\n      }\n      uVar3 = 0;\n      do {\n        uVar3 = iVar6 + -0x30 + uVar3 * 8;\n        pbVar7 = pbVar7 + 1;\n        if (0xfff < uVar3) goto LAB_0001ecb0;\n        bVar1 = *pbVar7;\n        iVar6 = (int)(char)bVar1;\n      } while ((byte)(bVar1 - 0x30) < 8);\n      if ((local_2c != 0) || ((bVar1 != 0 && (bVar1 != 0x2c)))) goto LAB_0001ecb0;\n      *(uint *)(pbVar8 + 8) = uVar3;\n      uVar3 = 0xfff;\n      pbVar8[1] = 1;\n      *pbVar8 = local_2d;\n      pbVar8[4] = 0xff;\n      pbVar8[5] = 0xf;\n      pbVar8[6] = 0;\n      pbVar8[7] = 0;\n      local_2c = 0xfff;\n      local_2d = bVar1;\n    }\n    *(uint *)(pbVar8 + 0xc) = uVar3;\n    pbVar8 = pbVar8 + 0x10;\n    param_1 = pbVar7;\n  } while (((local_2d & 0xef) == 0x2d) || (local_2d == 0x2b));" do (compound_statement "{\n    local_28 = local_28 + 1;\n    bVar1 = param_1[1];\n    iVar6 = (int)(char)bVar1;\n    pbVar7 = param_1 + 1;\n    if (bVar1 == 0x67) {\n      uVar3 = 0x38;\nLAB_0001ed55:\n      pbVar8[1] = 3;\n      *(uint *)(pbVar8 + 8) = uVar3;\n      *pbVar8 = local_2d;\n      *(uint *)(pbVar8 + 4) = local_2c;\n      pbVar7 = param_1 + 2;\n      local_2d = *pbVar7;\nLAB_0001ed74:\n      if (local_2c != 0) {\n        uVar3 = local_2c & uVar3;\n      }\n    }\n    else {\n      if ('g' < (char)bVar1) {\n        if (bVar1 == 0x6f) {\n          uVar3 = 7;\n        }\n        else {\n          uVar3 = 0x1c0;\n          if (bVar1 != 0x75) goto LAB_0001ee40;\n        }\n        goto LAB_0001ed55;\n      }\n      if (7 < (byte)(bVar1 - 0x30)) {\nLAB_0001ee40:\n        uVar3 = 0;\n        if ((byte)(iVar6 - 0x58U) < 0x21) {\n                    /* WARNING: Could not recover jumptable at 0x0001ee5f. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n          puVar4 = (undefined2 *)\n                   (*(code *)(*(int *)("__lxstat64" + (iVar6 - 0x58U & 0xff) * 4 + unaff_EBP) +\n                             unaff_EBP + 0x1c40a))();\n          return puVar4;\n        }\n        *pbVar8 = local_2d;\n        pbVar8[1] = 1;\n        *(uint *)(pbVar8 + 4) = local_2c;\n        pbVar8[8] = 0;\n        pbVar8[9] = 0;\n        pbVar8[10] = 0;\n        pbVar8[0xb] = 0;\n        local_2d = bVar1;\n        goto LAB_0001ed74;\n      }\n      uVar3 = 0;\n      do {\n        uVar3 = iVar6 + -0x30 + uVar3 * 8;\n        pbVar7 = pbVar7 + 1;\n        if (0xfff < uVar3) goto LAB_0001ecb0;\n        bVar1 = *pbVar7;\n        iVar6 = (int)(char)bVar1;\n      } while ((byte)(bVar1 - 0x30) < 8);\n      if ((local_2c != 0) || ((bVar1 != 0 && (bVar1 != 0x2c)))) goto LAB_0001ecb0;\n      *(uint *)(pbVar8 + 8) = uVar3;\n      uVar3 = 0xfff;\n      pbVar8[1] = 1;\n      *pbVar8 = local_2d;\n      pbVar8[4] = 0xff;\n      pbVar8[5] = 0xf;\n      pbVar8[6] = 0;\n      pbVar8[7] = 0;\n      local_2c = 0xfff;\n      local_2d = bVar1;\n    }\n    *(uint *)(pbVar8 + 0xc) = uVar3;\n    pbVar8 = pbVar8 + 0x10;\n    param_1 = pbVar7;\n  }" { (expression_statement "local_28 = local_28 + 1;" (assignment_expression "local_28 = local_28 + 1" identifier = (binary_expression "local_28 + 1" identifier + number_literal)) ;) (expression_statement "bVar1 = param_1[1];" (assignment_expression "bVar1 = param_1[1]" identifier = (subscript_expression "param_1[1]" identifier [ number_literal ])) ;) (expression_statement "iVar6 = (int)(char)bVar1;" (assignment_expression "iVar6 = (int)(char)bVar1" identifier = (cast_expression "(int)(char)bVar1" ( (type_descriptor "int" primitive_type) ) (cast_expression "(char)bVar1" ( (type_descriptor "char" primitive_type) ) identifier))) ;) (expression_statement "pbVar7 = param_1 + 1;" (assignment_expression "pbVar7 = param_1 + 1" identifier = (binary_expression "param_1 + 1" identifier + number_literal)) ;) (if_statement "if (bVar1 == 0x67) {\n      uVar3 = 0x38;\nLAB_0001ed55:\n      pbVar8[1] = 3;\n      *(uint *)(pbVar8 + 8) = uVar3;\n      *pbVar8 = local_2d;\n      *(uint *)(pbVar8 + 4) = local_2c;\n      pbVar7 = param_1 + 2;\n      local_2d = *pbVar7;\nLAB_0001ed74:\n      if (local_2c != 0) {\n        uVar3 = local_2c & uVar3;\n      }\n    }\n    else {\n      if ('g' < (char)bVar1) {\n        if (bVar1 == 0x6f) {\n          uVar3 = 7;\n        }\n        else {\n          uVar3 = 0x1c0;\n          if (bVar1 != 0x75) goto LAB_0001ee40;\n        }\n        goto LAB_0001ed55;\n      }\n      if (7 < (byte)(bVar1 - 0x30)) {\nLAB_0001ee40:\n        uVar3 = 0;\n        if ((byte)(iVar6 - 0x58U) < 0x21) {\n                    /* WARNING: Could not recover jumptable at 0x0001ee5f. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n          puVar4 = (undefined2 *)\n                   (*(code *)(*(int *)("__lxstat64" + (iVar6 - 0x58U & 0xff) * 4 + unaff_EBP) +\n                             unaff_EBP + 0x1c40a))();\n          return puVar4;\n        }\n        *pbVar8 = local_2d;\n        pbVar8[1] = 1;\n        *(uint *)(pbVar8 + 4) = local_2c;\n        pbVar8[8] = 0;\n        pbVar8[9] = 0;\n        pbVar8[10] = 0;\n        pbVar8[0xb] = 0;\n        local_2d = bVar1;\n        goto LAB_0001ed74;\n      }\n      uVar3 = 0;\n      do {\n        uVar3 = iVar6 + -0x30 + uVar3 * 8;\n        pbVar7 = pbVar7 + 1;\n        if (0xfff < uVar3) goto LAB_0001ecb0;\n        bVar1 = *pbVar7;\n        iVar6 = (int)(char)bVar1;\n      } while ((byte)(bVar1 - 0x30) < 8);\n      if ((local_2c != 0) || ((bVar1 != 0 && (bVar1 != 0x2c)))) goto LAB_0001ecb0;\n      *(uint *)(pbVar8 + 8) = uVar3;\n      uVar3 = 0xfff;\n      pbVar8[1] = 1;\n      *pbVar8 = local_2d;\n      pbVar8[4] = 0xff;\n      pbVar8[5] = 0xf;\n      pbVar8[6] = 0;\n      pbVar8[7] = 0;\n      local_2c = 0xfff;\n      local_2d = bVar1;\n    }" if (parenthesized_expression "(bVar1 == 0x67)" ( (binary_expression "bVar1 == 0x67" identifier == number_literal) )) (compound_statement "{\n      uVar3 = 0x38;\nLAB_0001ed55:\n      pbVar8[1] = 3;\n      *(uint *)(pbVar8 + 8) = uVar3;\n      *pbVar8 = local_2d;\n      *(uint *)(pbVar8 + 4) = local_2c;\n      pbVar7 = param_1 + 2;\n      local_2d = *pbVar7;\nLAB_0001ed74:\n      if (local_2c != 0) {\n        uVar3 = local_2c & uVar3;\n      }\n    }" { (expression_statement "uVar3 = 0x38;" (assignment_expression "uVar3 = 0x38" identifier = number_literal) ;) (labeled_statement "LAB_0001ed55:\n      pbVar8[1] = 3;" statement_identifier : (expression_statement "pbVar8[1] = 3;" (assignment_expression "pbVar8[1] = 3" (subscript_expression "pbVar8[1]" identifier [ number_literal ]) = number_literal) ;)) (expression_statement "*(uint *)(pbVar8 + 8) = uVar3;" (assignment_expression "*(uint *)(pbVar8 + 8) = uVar3" (pointer_expression "*(uint *)(pbVar8 + 8)" * (cast_expression "(uint *)(pbVar8 + 8)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pbVar8 + 8)" ( (binary_expression "pbVar8 + 8" identifier + number_literal) )))) = identifier) ;) (expression_statement "*pbVar8 = local_2d;" (assignment_expression "*pbVar8 = local_2d" (pointer_expression "*pbVar8" * identifier) = identifier) ;) (expression_statement "*(uint *)(pbVar8 + 4) = local_2c;" (assignment_expression "*(uint *)(pbVar8 + 4) = local_2c" (pointer_expression "*(uint *)(pbVar8 + 4)" * (cast_expression "(uint *)(pbVar8 + 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pbVar8 + 4)" ( (binary_expression "pbVar8 + 4" identifier + number_literal) )))) = identifier) ;) (expression_statement "pbVar7 = param_1 + 2;" (assignment_expression "pbVar7 = param_1 + 2" identifier = (binary_expression "param_1 + 2" identifier + number_literal)) ;) (expression_statement "local_2d = *pbVar7;" (assignment_expression "local_2d = *pbVar7" identifier = (pointer_expression "*pbVar7" * identifier)) ;) (labeled_statement "LAB_0001ed74:\n      if (local_2c != 0) {\n        uVar3 = local_2c & uVar3;\n      }" statement_identifier : (if_statement "if (local_2c != 0) {\n        uVar3 = local_2c & uVar3;\n      }" if (parenthesized_expression "(local_2c != 0)" ( (binary_expression "local_2c != 0" identifier != number_literal) )) (compound_statement "{\n        uVar3 = local_2c & uVar3;\n      }" { (expression_statement "uVar3 = local_2c & uVar3;" (assignment_expression "uVar3 = local_2c & uVar3" identifier = (binary_expression "local_2c & uVar3" identifier & identifier)) ;) }))) }) (else_clause "else {\n      if ('g' < (char)bVar1) {\n        if (bVar1 == 0x6f) {\n          uVar3 = 7;\n        }\n        else {\n          uVar3 = 0x1c0;\n          if (bVar1 != 0x75) goto LAB_0001ee40;\n        }\n        goto LAB_0001ed55;\n      }\n      if (7 < (byte)(bVar1 - 0x30)) {\nLAB_0001ee40:\n        uVar3 = 0;\n        if ((byte)(iVar6 - 0x58U) < 0x21) {\n                    /* WARNING: Could not recover jumptable at 0x0001ee5f. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n          puVar4 = (undefined2 *)\n                   (*(code *)(*(int *)("__lxstat64" + (iVar6 - 0x58U & 0xff) * 4 + unaff_EBP) +\n                             unaff_EBP + 0x1c40a))();\n          return puVar4;\n        }\n        *pbVar8 = local_2d;\n        pbVar8[1] = 1;\n        *(uint *)(pbVar8 + 4) = local_2c;\n        pbVar8[8] = 0;\n        pbVar8[9] = 0;\n        pbVar8[10] = 0;\n        pbVar8[0xb] = 0;\n        local_2d = bVar1;\n        goto LAB_0001ed74;\n      }\n      uVar3 = 0;\n      do {\n        uVar3 = iVar6 + -0x30 + uVar3 * 8;\n        pbVar7 = pbVar7 + 1;\n        if (0xfff < uVar3) goto LAB_0001ecb0;\n        bVar1 = *pbVar7;\n        iVar6 = (int)(char)bVar1;\n      } while ((byte)(bVar1 - 0x30) < 8);\n      if ((local_2c != 0) || ((bVar1 != 0 && (bVar1 != 0x2c)))) goto LAB_0001ecb0;\n      *(uint *)(pbVar8 + 8) = uVar3;\n      uVar3 = 0xfff;\n      pbVar8[1] = 1;\n      *pbVar8 = local_2d;\n      pbVar8[4] = 0xff;\n      pbVar8[5] = 0xf;\n      pbVar8[6] = 0;\n      pbVar8[7] = 0;\n      local_2c = 0xfff;\n      local_2d = bVar1;\n    }" else (compound_statement "{\n      if ('g' < (char)bVar1) {\n        if (bVar1 == 0x6f) {\n          uVar3 = 7;\n        }\n        else {\n          uVar3 = 0x1c0;\n          if (bVar1 != 0x75) goto LAB_0001ee40;\n        }\n        goto LAB_0001ed55;\n      }\n      if (7 < (byte)(bVar1 - 0x30)) {\nLAB_0001ee40:\n        uVar3 = 0;\n        if ((byte)(iVar6 - 0x58U) < 0x21) {\n                    /* WARNING: Could not recover jumptable at 0x0001ee5f. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n          puVar4 = (undefined2 *)\n                   (*(code *)(*(int *)("__lxstat64" + (iVar6 - 0x58U & 0xff) * 4 + unaff_EBP) +\n                             unaff_EBP + 0x1c40a))();\n          return puVar4;\n        }\n        *pbVar8 = local_2d;\n        pbVar8[1] = 1;\n        *(uint *)(pbVar8 + 4) = local_2c;\n        pbVar8[8] = 0;\n        pbVar8[9] = 0;\n        pbVar8[10] = 0;\n        pbVar8[0xb] = 0;\n        local_2d = bVar1;\n        goto LAB_0001ed74;\n      }\n      uVar3 = 0;\n      do {\n        uVar3 = iVar6 + -0x30 + uVar3 * 8;\n        pbVar7 = pbVar7 + 1;\n        if (0xfff < uVar3) goto LAB_0001ecb0;\n        bVar1 = *pbVar7;\n        iVar6 = (int)(char)bVar1;\n      } while ((byte)(bVar1 - 0x30) < 8);\n      if ((local_2c != 0) || ((bVar1 != 0 && (bVar1 != 0x2c)))) goto LAB_0001ecb0;\n      *(uint *)(pbVar8 + 8) = uVar3;\n      uVar3 = 0xfff;\n      pbVar8[1] = 1;\n      *pbVar8 = local_2d;\n      pbVar8[4] = 0xff;\n      pbVar8[5] = 0xf;\n      pbVar8[6] = 0;\n      pbVar8[7] = 0;\n      local_2c = 0xfff;\n      local_2d = bVar1;\n    }" { (if_statement "if ('g' < (char)bVar1) {\n        if (bVar1 == 0x6f) {\n          uVar3 = 7;\n        }\n        else {\n          uVar3 = 0x1c0;\n          if (bVar1 != 0x75) goto LAB_0001ee40;\n        }\n        goto LAB_0001ed55;\n      }" if (parenthesized_expression "('g' < (char)bVar1)" ( (binary_expression "'g' < (char)bVar1" (char_literal "'g'" ' character ') < (cast_expression "(char)bVar1" ( (type_descriptor "char" primitive_type) ) identifier)) )) (compound_statement "{\n        if (bVar1 == 0x6f) {\n          uVar3 = 7;\n        }\n        else {\n          uVar3 = 0x1c0;\n          if (bVar1 != 0x75) goto LAB_0001ee40;\n        }\n        goto LAB_0001ed55;\n      }" { (if_statement "if (bVar1 == 0x6f) {\n          uVar3 = 7;\n        }\n        else {\n          uVar3 = 0x1c0;\n          if (bVar1 != 0x75) goto LAB_0001ee40;\n        }" if (parenthesized_expression "(bVar1 == 0x6f)" ( (binary_expression "bVar1 == 0x6f" identifier == number_literal) )) (compound_statement "{\n          uVar3 = 7;\n        }" { (expression_statement "uVar3 = 7;" (assignment_expression "uVar3 = 7" identifier = number_literal) ;) }) (else_clause "else {\n          uVar3 = 0x1c0;\n          if (bVar1 != 0x75) goto LAB_0001ee40;\n        }" else (compound_statement "{\n          uVar3 = 0x1c0;\n          if (bVar1 != 0x75) goto LAB_0001ee40;\n        }" { (expression_statement "uVar3 = 0x1c0;" (assignment_expression "uVar3 = 0x1c0" identifier = number_literal) ;) (if_statement "if (bVar1 != 0x75) goto LAB_0001ee40;" if (parenthesized_expression "(bVar1 != 0x75)" ( (binary_expression "bVar1 != 0x75" identifier != number_literal) )) (goto_statement "goto LAB_0001ee40;" goto statement_identifier ;)) }))) (goto_statement "goto LAB_0001ed55;" goto statement_identifier ;) })) (if_statement "if (7 < (byte)(bVar1 - 0x30)) {\nLAB_0001ee40:\n        uVar3 = 0;\n        if ((byte)(iVar6 - 0x58U) < 0x21) {\n                    /* WARNING: Could not recover jumptable at 0x0001ee5f. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n          puVar4 = (undefined2 *)\n                   (*(code *)(*(int *)("__lxstat64" + (iVar6 - 0x58U & 0xff) * 4 + unaff_EBP) +\n                             unaff_EBP + 0x1c40a))();\n          return puVar4;\n        }\n        *pbVar8 = local_2d;\n        pbVar8[1] = 1;\n        *(uint *)(pbVar8 + 4) = local_2c;\n        pbVar8[8] = 0;\n        pbVar8[9] = 0;\n        pbVar8[10] = 0;\n        pbVar8[0xb] = 0;\n        local_2d = bVar1;\n        goto LAB_0001ed74;\n      }" if (parenthesized_expression "(7 < (byte)(bVar1 - 0x30))" ( (binary_expression "7 < (byte)(bVar1 - 0x30)" number_literal < (call_expression "(byte)(bVar1 - 0x30)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(bVar1 - 0x30)" ( (binary_expression "bVar1 - 0x30" identifier - number_literal) )))) )) (compound_statement "{\nLAB_0001ee40:\n        uVar3 = 0;\n        if ((byte)(iVar6 - 0x58U) < 0x21) {\n                    /* WARNING: Could not recover jumptable at 0x0001ee5f. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n          puVar4 = (undefined2 *)\n                   (*(code *)(*(int *)("__lxstat64" + (iVar6 - 0x58U & 0xff) * 4 + unaff_EBP) +\n                             unaff_EBP + 0x1c40a))();\n          return puVar4;\n        }\n        *pbVar8 = local_2d;\n        pbVar8[1] = 1;\n        *(uint *)(pbVar8 + 4) = local_2c;\n        pbVar8[8] = 0;\n        pbVar8[9] = 0;\n        pbVar8[10] = 0;\n        pbVar8[0xb] = 0;\n        local_2d = bVar1;\n        goto LAB_0001ed74;\n      }" { (labeled_statement "LAB_0001ee40:\n        uVar3 = 0;" statement_identifier : (expression_statement "uVar3 = 0;" (assignment_expression "uVar3 = 0" identifier = number_literal) ;)) (if_statement "if ((byte)(iVar6 - 0x58U) < 0x21) {\n                    /* WARNING: Could not recover jumptable at 0x0001ee5f. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n          puVar4 = (undefined2 *)\n                   (*(code *)(*(int *)("__lxstat64" + (iVar6 - 0x58U & 0xff) * 4 + unaff_EBP) +\n                             unaff_EBP + 0x1c40a))();\n          return puVar4;\n        }" if (parenthesized_expression "((byte)(iVar6 - 0x58U) < 0x21)" ( (binary_expression "(byte)(iVar6 - 0x58U) < 0x21" (call_expression "(byte)(iVar6 - 0x58U)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(iVar6 - 0x58U)" ( (binary_expression "iVar6 - 0x58U" identifier - number_literal) ))) < number_literal) )) (compound_statement "{\n                    /* WARNING: Could not recover jumptable at 0x0001ee5f. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n          puVar4 = (undefined2 *)\n                   (*(code *)(*(int *)("__lxstat64" + (iVar6 - 0x58U & 0xff) * 4 + unaff_EBP) +\n                             unaff_EBP + 0x1c40a))();\n          return puVar4;\n        }" { comment comment (expression_statement "puVar4 = (undefined2 *)\n                   (*(code *)(*(int *)("__lxstat64" + (iVar6 - 0x58U & 0xff) * 4 + unaff_EBP) +\n                             unaff_EBP + 0x1c40a))();" (assignment_expression "puVar4 = (undefined2 *)\n                   (*(code *)(*(int *)("__lxstat64" + (iVar6 - 0x58U & 0xff) * 4 + unaff_EBP) +\n                             unaff_EBP + 0x1c40a))()" identifier = (cast_expression "(undefined2 *)\n                   (*(code *)(*(int *)("__lxstat64" + (iVar6 - 0x58U & 0xff) * 4 + unaff_EBP) +\n                             unaff_EBP + 0x1c40a))()" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(*(code *)(*(int *)("__lxstat64" + (iVar6 - 0x58U & 0xff) * 4 + unaff_EBP) +\n                             unaff_EBP + 0x1c40a))()" (parenthesized_expression "(*(code *)(*(int *)("__lxstat64" + (iVar6 - 0x58U & 0xff) * 4 + unaff_EBP) +\n                             unaff_EBP + 0x1c40a))" ( (pointer_expression "*(code *)(*(int *)("__lxstat64" + (iVar6 - 0x58U & 0xff) * 4 + unaff_EBP) +\n                             unaff_EBP + 0x1c40a)" * (cast_expression "(code *)(*(int *)("__lxstat64" + (iVar6 - 0x58U & 0xff) * 4 + unaff_EBP) +\n                             unaff_EBP + 0x1c40a)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)("__lxstat64" + (iVar6 - 0x58U & 0xff) * 4 + unaff_EBP) +\n                             unaff_EBP + 0x1c40a)" ( (binary_expression "*(int *)("__lxstat64" + (iVar6 - 0x58U & 0xff) * 4 + unaff_EBP) +\n                             unaff_EBP + 0x1c40a" (binary_expression "*(int *)("__lxstat64" + (iVar6 - 0x58U & 0xff) * 4 + unaff_EBP) +\n                             unaff_EBP" (pointer_expression "*(int *)("__lxstat64" + (iVar6 - 0x58U & 0xff) * 4 + unaff_EBP)" * (cast_expression "(int *)("__lxstat64" + (iVar6 - 0x58U & 0xff) * 4 + unaff_EBP)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "("__lxstat64" + (iVar6 - 0x58U & 0xff) * 4 + unaff_EBP)" ( (binary_expression ""__lxstat64" + (iVar6 - 0x58U & 0xff) * 4 + unaff_EBP" (binary_expression ""__lxstat64" + (iVar6 - 0x58U & 0xff) * 4" (string_literal ""__lxstat64"" " string_content ") + (binary_expression "(iVar6 - 0x58U & 0xff) * 4" (parenthesized_expression "(iVar6 - 0x58U & 0xff)" ( (binary_expression "iVar6 - 0x58U & 0xff" (binary_expression "iVar6 - 0x58U" identifier - number_literal) & number_literal) )) * number_literal)) + identifier) )))) + identifier) + number_literal) )))) )) (argument_list "()" ( ))))) ;) (return_statement "return puVar4;" return identifier ;) })) (expression_statement "*pbVar8 = local_2d;" (assignment_expression "*pbVar8 = local_2d" (pointer_expression "*pbVar8" * identifier) = identifier) ;) (expression_statement "pbVar8[1] = 1;" (assignment_expression "pbVar8[1] = 1" (subscript_expression "pbVar8[1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*(uint *)(pbVar8 + 4) = local_2c;" (assignment_expression "*(uint *)(pbVar8 + 4) = local_2c" (pointer_expression "*(uint *)(pbVar8 + 4)" * (cast_expression "(uint *)(pbVar8 + 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pbVar8 + 4)" ( (binary_expression "pbVar8 + 4" identifier + number_literal) )))) = identifier) ;) (expression_statement "pbVar8[8] = 0;" (assignment_expression "pbVar8[8] = 0" (subscript_expression "pbVar8[8]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "pbVar8[9] = 0;" (assignment_expression "pbVar8[9] = 0" (subscript_expression "pbVar8[9]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "pbVar8[10] = 0;" (assignment_expression "pbVar8[10] = 0" (subscript_expression "pbVar8[10]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "pbVar8[0xb] = 0;" (assignment_expression "pbVar8[0xb] = 0" (subscript_expression "pbVar8[0xb]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "local_2d = bVar1;" (assignment_expression "local_2d = bVar1" identifier = identifier) ;) (goto_statement "goto LAB_0001ed74;" goto statement_identifier ;) })) (expression_statement "uVar3 = 0;" (assignment_expression "uVar3 = 0" identifier = number_literal) ;) (do_statement "do {\n        uVar3 = iVar6 + -0x30 + uVar3 * 8;\n        pbVar7 = pbVar7 + 1;\n        if (0xfff < uVar3) goto LAB_0001ecb0;\n        bVar1 = *pbVar7;\n        iVar6 = (int)(char)bVar1;\n      } while ((byte)(bVar1 - 0x30) < 8);" do (compound_statement "{\n        uVar3 = iVar6 + -0x30 + uVar3 * 8;\n        pbVar7 = pbVar7 + 1;\n        if (0xfff < uVar3) goto LAB_0001ecb0;\n        bVar1 = *pbVar7;\n        iVar6 = (int)(char)bVar1;\n      }" { (expression_statement "uVar3 = iVar6 + -0x30 + uVar3 * 8;" (assignment_expression "uVar3 = iVar6 + -0x30 + uVar3 * 8" identifier = (binary_expression "iVar6 + -0x30 + uVar3 * 8" (binary_expression "iVar6 + -0x30" identifier + number_literal) + (binary_expression "uVar3 * 8" identifier * number_literal))) ;) (expression_statement "pbVar7 = pbVar7 + 1;" (assignment_expression "pbVar7 = pbVar7 + 1" identifier = (binary_expression "pbVar7 + 1" identifier + number_literal)) ;) (if_statement "if (0xfff < uVar3) goto LAB_0001ecb0;" if (parenthesized_expression "(0xfff < uVar3)" ( (binary_expression "0xfff < uVar3" number_literal < identifier) )) (goto_statement "goto LAB_0001ecb0;" goto statement_identifier ;)) (expression_statement "bVar1 = *pbVar7;" (assignment_expression "bVar1 = *pbVar7" identifier = (pointer_expression "*pbVar7" * identifier)) ;) (expression_statement "iVar6 = (int)(char)bVar1;" (assignment_expression "iVar6 = (int)(char)bVar1" identifier = (cast_expression "(int)(char)bVar1" ( (type_descriptor "int" primitive_type) ) (cast_expression "(char)bVar1" ( (type_descriptor "char" primitive_type) ) identifier))) ;) }) while (parenthesized_expression "((byte)(bVar1 - 0x30) < 8)" ( (binary_expression "(byte)(bVar1 - 0x30) < 8" (call_expression "(byte)(bVar1 - 0x30)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(bVar1 - 0x30)" ( (binary_expression "bVar1 - 0x30" identifier - number_literal) ))) < number_literal) )) ;) (if_statement "if ((local_2c != 0) || ((bVar1 != 0 && (bVar1 != 0x2c)))) goto LAB_0001ecb0;" if (parenthesized_expression "((local_2c != 0) || ((bVar1 != 0 && (bVar1 != 0x2c))))" ( (binary_expression "(local_2c != 0) || ((bVar1 != 0 && (bVar1 != 0x2c)))" (parenthesized_expression "(local_2c != 0)" ( (binary_expression "local_2c != 0" identifier != number_literal) )) || (parenthesized_expression "((bVar1 != 0 && (bVar1 != 0x2c)))" ( (parenthesized_expression "(bVar1 != 0 && (bVar1 != 0x2c))" ( (binary_expression "bVar1 != 0 && (bVar1 != 0x2c)" (binary_expression "bVar1 != 0" identifier != number_literal) && (parenthesized_expression "(bVar1 != 0x2c)" ( (binary_expression "bVar1 != 0x2c" identifier != number_literal) ))) )) ))) )) (goto_statement "goto LAB_0001ecb0;" goto statement_identifier ;)) (expression_statement "*(uint *)(pbVar8 + 8) = uVar3;" (assignment_expression "*(uint *)(pbVar8 + 8) = uVar3" (pointer_expression "*(uint *)(pbVar8 + 8)" * (cast_expression "(uint *)(pbVar8 + 8)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pbVar8 + 8)" ( (binary_expression "pbVar8 + 8" identifier + number_literal) )))) = identifier) ;) (expression_statement "uVar3 = 0xfff;" (assignment_expression "uVar3 = 0xfff" identifier = number_literal) ;) (expression_statement "pbVar8[1] = 1;" (assignment_expression "pbVar8[1] = 1" (subscript_expression "pbVar8[1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*pbVar8 = local_2d;" (assignment_expression "*pbVar8 = local_2d" (pointer_expression "*pbVar8" * identifier) = identifier) ;) (expression_statement "pbVar8[4] = 0xff;" (assignment_expression "pbVar8[4] = 0xff" (subscript_expression "pbVar8[4]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "pbVar8[5] = 0xf;" (assignment_expression "pbVar8[5] = 0xf" (subscript_expression "pbVar8[5]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "pbVar8[6] = 0;" (assignment_expression "pbVar8[6] = 0" (subscript_expression "pbVar8[6]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "pbVar8[7] = 0;" (assignment_expression "pbVar8[7] = 0" (subscript_expression "pbVar8[7]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "local_2c = 0xfff;" (assignment_expression "local_2c = 0xfff" identifier = number_literal) ;) (expression_statement "local_2d = bVar1;" (assignment_expression "local_2d = bVar1" identifier = identifier) ;) }))) (expression_statement "*(uint *)(pbVar8 + 0xc) = uVar3;" (assignment_expression "*(uint *)(pbVar8 + 0xc) = uVar3" (pointer_expression "*(uint *)(pbVar8 + 0xc)" * (cast_expression "(uint *)(pbVar8 + 0xc)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pbVar8 + 0xc)" ( (binary_expression "pbVar8 + 0xc" identifier + number_literal) )))) = identifier) ;) (expression_statement "pbVar8 = pbVar8 + 0x10;" (assignment_expression "pbVar8 = pbVar8 + 0x10" identifier = (binary_expression "pbVar8 + 0x10" identifier + number_literal)) ;) (expression_statement "param_1 = pbVar7;" (assignment_expression "param_1 = pbVar7" identifier = identifier) ;) }) while (parenthesized_expression "(((local_2d & 0xef) == 0x2d) || (local_2d == 0x2b))" ( (binary_expression "((local_2d & 0xef) == 0x2d) || (local_2d == 0x2b)" (parenthesized_expression "((local_2d & 0xef) == 0x2d)" ( (binary_expression "(local_2d & 0xef) == 0x2d" (parenthesized_expression "(local_2d & 0xef)" ( (binary_expression "local_2d & 0xef" identifier & number_literal) )) == number_literal) )) || (parenthesized_expression "(local_2d == 0x2b)" ( (binary_expression "local_2d == 0x2b" identifier == number_literal) ))) )) ;) (if_statement "if (local_2d != 0x2c) {\n    if (local_2d == 0) {\n      *(undefined1 *)((int)puVar4 + local_28 * 0x10 + 1) = 0;\n      return puVar4;\n    }\nLAB_0001ecb0:\n    free(puVar4);\n    return (undefined2 *)0x0;\n  }" if (parenthesized_expression "(local_2d != 0x2c)" ( (binary_expression "local_2d != 0x2c" identifier != number_literal) )) (compound_statement "{\n    if (local_2d == 0) {\n      *(undefined1 *)((int)puVar4 + local_28 * 0x10 + 1) = 0;\n      return puVar4;\n    }\nLAB_0001ecb0:\n    free(puVar4);\n    return (undefined2 *)0x0;\n  }" { (if_statement "if (local_2d == 0) {\n      *(undefined1 *)((int)puVar4 + local_28 * 0x10 + 1) = 0;\n      return puVar4;\n    }" if (parenthesized_expression "(local_2d == 0)" ( (binary_expression "local_2d == 0" identifier == number_literal) )) (compound_statement "{\n      *(undefined1 *)((int)puVar4 + local_28 * 0x10 + 1) = 0;\n      return puVar4;\n    }" { (expression_statement "*(undefined1 *)((int)puVar4 + local_28 * 0x10 + 1) = 0;" (assignment_expression "*(undefined1 *)((int)puVar4 + local_28 * 0x10 + 1) = 0" (pointer_expression "*(undefined1 *)((int)puVar4 + local_28 * 0x10 + 1)" * (cast_expression "(undefined1 *)((int)puVar4 + local_28 * 0x10 + 1)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar4 + local_28 * 0x10 + 1)" ( (binary_expression "(int)puVar4 + local_28 * 0x10 + 1" (binary_expression "(int)puVar4 + local_28 * 0x10" (cast_expression "(int)puVar4" ( (type_descriptor "int" primitive_type) ) identifier) + (binary_expression "local_28 * 0x10" identifier * number_literal)) + number_literal) )))) = number_literal) ;) (return_statement "return puVar4;" return identifier ;) })) (labeled_statement "LAB_0001ecb0:\n    free(puVar4);" statement_identifier : (expression_statement "free(puVar4);" (call_expression "free(puVar4)" identifier (argument_list "(puVar4)" ( identifier ))) ;)) (return_statement "return (undefined2 *)0x0;" return (cast_expression "(undefined2 *)0x0" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) ;) })) (expression_statement "param_1 = pbVar7 + 1;" (assignment_expression "param_1 = pbVar7 + 1" identifier = (binary_expression "pbVar7 + 1" identifier + number_literal)) ;) (goto_statement "goto LAB_0001ec81;" goto statement_identifier ;) })))
(translation_unit "/* WARNING: Function: __x86.get_pc_thunk.bp replaced with injection: get_pc_thunk.bp */\n/* WARNING: Unknown calling convention */\n\nmode_change * mode_compile(char *mode_string)\n\n{\n  uint uVar1;\n  byte bVar2;\n  uint uVar3;\n  mode_change *pmVar4;\n  uint uVar5;\n  size_t n;\n  char *pcVar6;\n  byte *pbVar7;\n  byte bVar8;\n  char cVar9;\n  mode_t mVar10;\n  mode_change *pmVar11;\n  byte local_2d;\n  uint local_2c;\n  int local_28;\n  \n  cVar9 = *mode_string;\n  uVar3 = (uint)cVar9;\n  if ((byte)(cVar9 - 0x30U) < 8) {\n    uVar5 = 0;\n    pcVar6 = mode_string;\n    do {\n      uVar5 = (uVar3 - 0x30) + uVar5 * 8;\n      pcVar6 = pcVar6 + 1;\n      if (0xfff < uVar5) {\n        return (mode_change *)0x0;\n      }\n      cVar9 = *pcVar6;\n      uVar3 = (uint)cVar9;\n    } while ((byte)(cVar9 - 0x30U) < 8);\n    if (cVar9 != '\0') {\n      return (mode_change *)0x0;\n    }\n    mVar10 = uVar5 & 0xc00 | 0x3ff;\n    if (4 < (int)pcVar6 - (int)mode_string) {\n      mVar10 = 0xfff;\n    }\n    pmVar4 = (mode_change *)xmalloc(0x20);\n    pmVar4->op = '=';\n    pmVar4->flag = '\x01';\n    pmVar4->affected = 0xfff;\n    pmVar4->value = uVar5;\n    pmVar4->mentioned = mVar10;\n    pmVar4[1].flag = '\0';\n    return pmVar4;\n  }\n  uVar5 = 1;\n  pbVar7 = (byte *)mode_string;\n  if (cVar9 == '\0') {\n    n = 0x10;\n  }\n  else {\n    do {\n      bVar8 = (byte)uVar3;\n      bVar2 = pbVar7[1];\n      uVar3 = (uint)bVar2;\n      uVar5 = uVar5 + ((bVar8 & 0xef) == 0x2d || bVar8 == 0x2b);\n      pbVar7 = pbVar7 + 1;\n    } while (bVar2 != 0);\n    n = uVar5 * 0x10;\n    if (((int)n < 0) || (uVar5 >> 0x1c != 0)) {\n                    /* WARNING: Subroutine does not return */\n      xalloc_die();\n    }\n  }\n  pmVar4 = (mode_change *)xmalloc(n);\n  local_28 = 0;\nLAB_0001ec81:\n  local_2c = 0;\n  do {\n    local_2d = *mode_string;\n    if (local_2d == 0x61) {\n      local_2c = 0xfff;\n    }\n    else {\n      if ((char)local_2d < 'b') break;\n      if (local_2d == 0x6f) {\n        local_2c = local_2c | 0x207;\n      }\n      else if (local_2d == 0x75) {\n        local_2c = local_2c | 0x9c0;\n      }\n      else {\n        if (local_2d != 0x67) goto LAB_0001ecb0;\n        local_2c = local_2c | 0x438;\n      }\n    }\n    mode_string = (char *)((byte *)mode_string + 1);\n  } while( true );\n  if (((local_2d != 0x2d) && (local_2d != 0x3d)) && (local_2d != 0x2b)) goto LAB_0001ecb0;\n  pmVar11 = pmVar4 + local_28;\n  do {\n    local_28 = local_28 + 1;\n    bVar2 = ((byte *)mode_string)[1];\n    uVar3 = (uint)(char)bVar2;\n    pbVar7 = (byte *)mode_string + 1;\n    if (bVar2 == 0x67) {\n      uVar5 = 0x38;\nLAB_0001ed55:\n      pmVar11->flag = '\x03';\n      pmVar11->value = uVar5;\n      pmVar11->op = local_2d;\n      pmVar11->affected = local_2c;\n      pbVar7 = (byte *)mode_string + 2;\n      local_2d = *pbVar7;\nLAB_0001ed74:\n      if (local_2c != 0) {\n        uVar5 = local_2c & uVar5;\n      }\n    }\n    else {\n      if ('g' < (char)bVar2) {\n        if (bVar2 == 0x6f) {\n          uVar5 = 7;\n        }\n        else {\n          uVar5 = 0x1c0;\n          if (bVar2 != 0x75) goto LAB_0001ee40;\n        }\n        goto LAB_0001ed55;\n      }\n      if (7 < (byte)(bVar2 - 0x30)) {\nLAB_0001ee40:\n        uVar1 = uVar3 - 0x58;\n        cVar9 = '\x01';\n        uVar5 = 0;\n        bVar8 = (byte)uVar1;\n        while (bVar8 < 0x21) {\n          bVar2 = (byte)uVar3;\n                    /* WARNING: Could not find normalized switch variable to match jumptable */\n          switch(uVar1 & 0xff) {\n          case 0:\n            cVar9 = '\x02';\n            break;\n          default:\n            goto _L30;\n          case 0x1a:\n            uVar5 = uVar5 | 0x124;\n            break;\n          case 0x1b:\n            uVar5 = uVar5 | 0xc00;\n            break;\n          case 0x1c:\n            uVar5 = uVar5 | 0x200;\n            break;\n          case 0x1f:\n            uVar5 = uVar5 | 0x92;\n            break;\n          case 0x20:\n            uVar5 = uVar5 | 0x49;\n          }\n          pbVar7 = pbVar7 + 1;\n          bVar2 = *pbVar7;\n          uVar3 = (uint)bVar2;\n          uVar1 = uVar3 - 0x58;\n          bVar8 = (byte)uVar1;\n        }\n_L30:\n        pmVar11->op = local_2d;\n        pmVar11->flag = cVar9;\n        pmVar11->affected = local_2c;\n        pmVar11->value = uVar5;\n        local_2d = bVar2;\n        goto LAB_0001ed74;\n      }\n      uVar5 = 0;\n      do {\n        uVar5 = (uVar3 - 0x30) + uVar5 * 8;\n        pbVar7 = pbVar7 + 1;\n        if (0xfff < uVar5) goto LAB_0001ecb0;\n        bVar2 = *pbVar7;\n        uVar3 = (uint)(char)bVar2;\n      } while ((byte)(bVar2 - 0x30) < 8);\n      if ((local_2c != 0) || ((bVar2 != 0 && (bVar2 != 0x2c)))) goto LAB_0001ecb0;\n      pmVar11->value = uVar5;\n      uVar5 = 0xfff;\n      pmVar11->flag = '\x01';\n      pmVar11->op = local_2d;\n      pmVar11->affected = 0xfff;\n      local_2c = 0xfff;\n      local_2d = bVar2;\n    }\n    pmVar11->mentioned = uVar5;\n    pmVar11 = pmVar11 + 1;\n    mode_string = (char *)pbVar7;\n  } while (((local_2d & 0xef) == 0x2d) || (local_2d == 0x2b));\n  if (local_2d != 0x2c) {\n    if (local_2d == 0) {\n      pmVar4[local_28].flag = '\0';\n      return pmVar4;\n    }\nLAB_0001ecb0:\n    free(pmVar4);\n    return (mode_change *)0x0;\n  }\n  mode_string = (char *)(pbVar7 + 1);\n  goto LAB_0001ec81;\n}\n\n" comment comment (function_definition "mode_change * mode_compile(char *mode_string)\n\n{\n  uint uVar1;\n  byte bVar2;\n  uint uVar3;\n  mode_change *pmVar4;\n  uint uVar5;\n  size_t n;\n  char *pcVar6;\n  byte *pbVar7;\n  byte bVar8;\n  char cVar9;\n  mode_t mVar10;\n  mode_change *pmVar11;\n  byte local_2d;\n  uint local_2c;\n  int local_28;\n  \n  cVar9 = *mode_string;\n  uVar3 = (uint)cVar9;\n  if ((byte)(cVar9 - 0x30U) < 8) {\n    uVar5 = 0;\n    pcVar6 = mode_string;\n    do {\n      uVar5 = (uVar3 - 0x30) + uVar5 * 8;\n      pcVar6 = pcVar6 + 1;\n      if (0xfff < uVar5) {\n        return (mode_change *)0x0;\n      }\n      cVar9 = *pcVar6;\n      uVar3 = (uint)cVar9;\n    } while ((byte)(cVar9 - 0x30U) < 8);\n    if (cVar9 != '\0') {\n      return (mode_change *)0x0;\n    }\n    mVar10 = uVar5 & 0xc00 | 0x3ff;\n    if (4 < (int)pcVar6 - (int)mode_string) {\n      mVar10 = 0xfff;\n    }\n    pmVar4 = (mode_change *)xmalloc(0x20);\n    pmVar4->op = '=';\n    pmVar4->flag = '\x01';\n    pmVar4->affected = 0xfff;\n    pmVar4->value = uVar5;\n    pmVar4->mentioned = mVar10;\n    pmVar4[1].flag = '\0';\n    return pmVar4;\n  }\n  uVar5 = 1;\n  pbVar7 = (byte *)mode_string;\n  if (cVar9 == '\0') {\n    n = 0x10;\n  }\n  else {\n    do {\n      bVar8 = (byte)uVar3;\n      bVar2 = pbVar7[1];\n      uVar3 = (uint)bVar2;\n      uVar5 = uVar5 + ((bVar8 & 0xef) == 0x2d || bVar8 == 0x2b);\n      pbVar7 = pbVar7 + 1;\n    } while (bVar2 != 0);\n    n = uVar5 * 0x10;\n    if (((int)n < 0) || (uVar5 >> 0x1c != 0)) {\n                    /* WARNING: Subroutine does not return */\n      xalloc_die();\n    }\n  }\n  pmVar4 = (mode_change *)xmalloc(n);\n  local_28 = 0;\nLAB_0001ec81:\n  local_2c = 0;\n  do {\n    local_2d = *mode_string;\n    if (local_2d == 0x61) {\n      local_2c = 0xfff;\n    }\n    else {\n      if ((char)local_2d < 'b') break;\n      if (local_2d == 0x6f) {\n        local_2c = local_2c | 0x207;\n      }\n      else if (local_2d == 0x75) {\n        local_2c = local_2c | 0x9c0;\n      }\n      else {\n        if (local_2d != 0x67) goto LAB_0001ecb0;\n        local_2c = local_2c | 0x438;\n      }\n    }\n    mode_string = (char *)((byte *)mode_string + 1);\n  } while( true );\n  if (((local_2d != 0x2d) && (local_2d != 0x3d)) && (local_2d != 0x2b)) goto LAB_0001ecb0;\n  pmVar11 = pmVar4 + local_28;\n  do {\n    local_28 = local_28 + 1;\n    bVar2 = ((byte *)mode_string)[1];\n    uVar3 = (uint)(char)bVar2;\n    pbVar7 = (byte *)mode_string + 1;\n    if (bVar2 == 0x67) {\n      uVar5 = 0x38;\nLAB_0001ed55:\n      pmVar11->flag = '\x03';\n      pmVar11->value = uVar5;\n      pmVar11->op = local_2d;\n      pmVar11->affected = local_2c;\n      pbVar7 = (byte *)mode_string + 2;\n      local_2d = *pbVar7;\nLAB_0001ed74:\n      if (local_2c != 0) {\n        uVar5 = local_2c & uVar5;\n      }\n    }\n    else {\n      if ('g' < (char)bVar2) {\n        if (bVar2 == 0x6f) {\n          uVar5 = 7;\n        }\n        else {\n          uVar5 = 0x1c0;\n          if (bVar2 != 0x75) goto LAB_0001ee40;\n        }\n        goto LAB_0001ed55;\n      }\n      if (7 < (byte)(bVar2 - 0x30)) {\nLAB_0001ee40:\n        uVar1 = uVar3 - 0x58;\n        cVar9 = '\x01';\n        uVar5 = 0;\n        bVar8 = (byte)uVar1;\n        while (bVar8 < 0x21) {\n          bVar2 = (byte)uVar3;\n                    /* WARNING: Could not find normalized switch variable to match jumptable */\n          switch(uVar1 & 0xff) {\n          case 0:\n            cVar9 = '\x02';\n            break;\n          default:\n            goto _L30;\n          case 0x1a:\n            uVar5 = uVar5 | 0x124;\n            break;\n          case 0x1b:\n            uVar5 = uVar5 | 0xc00;\n            break;\n          case 0x1c:\n            uVar5 = uVar5 | 0x200;\n            break;\n          case 0x1f:\n            uVar5 = uVar5 | 0x92;\n            break;\n          case 0x20:\n            uVar5 = uVar5 | 0x49;\n          }\n          pbVar7 = pbVar7 + 1;\n          bVar2 = *pbVar7;\n          uVar3 = (uint)bVar2;\n          uVar1 = uVar3 - 0x58;\n          bVar8 = (byte)uVar1;\n        }\n_L30:\n        pmVar11->op = local_2d;\n        pmVar11->flag = cVar9;\n        pmVar11->affected = local_2c;\n        pmVar11->value = uVar5;\n        local_2d = bVar2;\n        goto LAB_0001ed74;\n      }\n      uVar5 = 0;\n      do {\n        uVar5 = (uVar3 - 0x30) + uVar5 * 8;\n        pbVar7 = pbVar7 + 1;\n        if (0xfff < uVar5) goto LAB_0001ecb0;\n        bVar2 = *pbVar7;\n        uVar3 = (uint)(char)bVar2;\n      } while ((byte)(bVar2 - 0x30) < 8);\n      if ((local_2c != 0) || ((bVar2 != 0 && (bVar2 != 0x2c)))) goto LAB_0001ecb0;\n      pmVar11->value = uVar5;\n      uVar5 = 0xfff;\n      pmVar11->flag = '\x01';\n      pmVar11->op = local_2d;\n      pmVar11->affected = 0xfff;\n      local_2c = 0xfff;\n      local_2d = bVar2;\n    }\n    pmVar11->mentioned = uVar5;\n    pmVar11 = pmVar11 + 1;\n    mode_string = (char *)pbVar7;\n  } while (((local_2d & 0xef) == 0x2d) || (local_2d == 0x2b));\n  if (local_2d != 0x2c) {\n    if (local_2d == 0) {\n      pmVar4[local_28].flag = '\0';\n      return pmVar4;\n    }\nLAB_0001ecb0:\n    free(pmVar4);\n    return (mode_change *)0x0;\n  }\n  mode_string = (char *)(pbVar7 + 1);\n  goto LAB_0001ec81;\n}" type_identifier (pointer_declarator "* mode_compile(char *mode_string)" * (function_declarator "mode_compile(char *mode_string)" identifier (parameter_list "(char *mode_string)" ( (parameter_declaration "char *mode_string" primitive_type (pointer_declarator "*mode_string" * identifier)) )))) (compound_statement "{\n  uint uVar1;\n  byte bVar2;\n  uint uVar3;\n  mode_change *pmVar4;\n  uint uVar5;\n  size_t n;\n  char *pcVar6;\n  byte *pbVar7;\n  byte bVar8;\n  char cVar9;\n  mode_t mVar10;\n  mode_change *pmVar11;\n  byte local_2d;\n  uint local_2c;\n  int local_28;\n  \n  cVar9 = *mode_string;\n  uVar3 = (uint)cVar9;\n  if ((byte)(cVar9 - 0x30U) < 8) {\n    uVar5 = 0;\n    pcVar6 = mode_string;\n    do {\n      uVar5 = (uVar3 - 0x30) + uVar5 * 8;\n      pcVar6 = pcVar6 + 1;\n      if (0xfff < uVar5) {\n        return (mode_change *)0x0;\n      }\n      cVar9 = *pcVar6;\n      uVar3 = (uint)cVar9;\n    } while ((byte)(cVar9 - 0x30U) < 8);\n    if (cVar9 != '\0') {\n      return (mode_change *)0x0;\n    }\n    mVar10 = uVar5 & 0xc00 | 0x3ff;\n    if (4 < (int)pcVar6 - (int)mode_string) {\n      mVar10 = 0xfff;\n    }\n    pmVar4 = (mode_change *)xmalloc(0x20);\n    pmVar4->op = '=';\n    pmVar4->flag = '\x01';\n    pmVar4->affected = 0xfff;\n    pmVar4->value = uVar5;\n    pmVar4->mentioned = mVar10;\n    pmVar4[1].flag = '\0';\n    return pmVar4;\n  }\n  uVar5 = 1;\n  pbVar7 = (byte *)mode_string;\n  if (cVar9 == '\0') {\n    n = 0x10;\n  }\n  else {\n    do {\n      bVar8 = (byte)uVar3;\n      bVar2 = pbVar7[1];\n      uVar3 = (uint)bVar2;\n      uVar5 = uVar5 + ((bVar8 & 0xef) == 0x2d || bVar8 == 0x2b);\n      pbVar7 = pbVar7 + 1;\n    } while (bVar2 != 0);\n    n = uVar5 * 0x10;\n    if (((int)n < 0) || (uVar5 >> 0x1c != 0)) {\n                    /* WARNING: Subroutine does not return */\n      xalloc_die();\n    }\n  }\n  pmVar4 = (mode_change *)xmalloc(n);\n  local_28 = 0;\nLAB_0001ec81:\n  local_2c = 0;\n  do {\n    local_2d = *mode_string;\n    if (local_2d == 0x61) {\n      local_2c = 0xfff;\n    }\n    else {\n      if ((char)local_2d < 'b') break;\n      if (local_2d == 0x6f) {\n        local_2c = local_2c | 0x207;\n      }\n      else if (local_2d == 0x75) {\n        local_2c = local_2c | 0x9c0;\n      }\n      else {\n        if (local_2d != 0x67) goto LAB_0001ecb0;\n        local_2c = local_2c | 0x438;\n      }\n    }\n    mode_string = (char *)((byte *)mode_string + 1);\n  } while( true );\n  if (((local_2d != 0x2d) && (local_2d != 0x3d)) && (local_2d != 0x2b)) goto LAB_0001ecb0;\n  pmVar11 = pmVar4 + local_28;\n  do {\n    local_28 = local_28 + 1;\n    bVar2 = ((byte *)mode_string)[1];\n    uVar3 = (uint)(char)bVar2;\n    pbVar7 = (byte *)mode_string + 1;\n    if (bVar2 == 0x67) {\n      uVar5 = 0x38;\nLAB_0001ed55:\n      pmVar11->flag = '\x03';\n      pmVar11->value = uVar5;\n      pmVar11->op = local_2d;\n      pmVar11->affected = local_2c;\n      pbVar7 = (byte *)mode_string + 2;\n      local_2d = *pbVar7;\nLAB_0001ed74:\n      if (local_2c != 0) {\n        uVar5 = local_2c & uVar5;\n      }\n    }\n    else {\n      if ('g' < (char)bVar2) {\n        if (bVar2 == 0x6f) {\n          uVar5 = 7;\n        }\n        else {\n          uVar5 = 0x1c0;\n          if (bVar2 != 0x75) goto LAB_0001ee40;\n        }\n        goto LAB_0001ed55;\n      }\n      if (7 < (byte)(bVar2 - 0x30)) {\nLAB_0001ee40:\n        uVar1 = uVar3 - 0x58;\n        cVar9 = '\x01';\n        uVar5 = 0;\n        bVar8 = (byte)uVar1;\n        while (bVar8 < 0x21) {\n          bVar2 = (byte)uVar3;\n                    /* WARNING: Could not find normalized switch variable to match jumptable */\n          switch(uVar1 & 0xff) {\n          case 0:\n            cVar9 = '\x02';\n            break;\n          default:\n            goto _L30;\n          case 0x1a:\n            uVar5 = uVar5 | 0x124;\n            break;\n          case 0x1b:\n            uVar5 = uVar5 | 0xc00;\n            break;\n          case 0x1c:\n            uVar5 = uVar5 | 0x200;\n            break;\n          case 0x1f:\n            uVar5 = uVar5 | 0x92;\n            break;\n          case 0x20:\n            uVar5 = uVar5 | 0x49;\n          }\n          pbVar7 = pbVar7 + 1;\n          bVar2 = *pbVar7;\n          uVar3 = (uint)bVar2;\n          uVar1 = uVar3 - 0x58;\n          bVar8 = (byte)uVar1;\n        }\n_L30:\n        pmVar11->op = local_2d;\n        pmVar11->flag = cVar9;\n        pmVar11->affected = local_2c;\n        pmVar11->value = uVar5;\n        local_2d = bVar2;\n        goto LAB_0001ed74;\n      }\n      uVar5 = 0;\n      do {\n        uVar5 = (uVar3 - 0x30) + uVar5 * 8;\n        pbVar7 = pbVar7 + 1;\n        if (0xfff < uVar5) goto LAB_0001ecb0;\n        bVar2 = *pbVar7;\n        uVar3 = (uint)(char)bVar2;\n      } while ((byte)(bVar2 - 0x30) < 8);\n      if ((local_2c != 0) || ((bVar2 != 0 && (bVar2 != 0x2c)))) goto LAB_0001ecb0;\n      pmVar11->value = uVar5;\n      uVar5 = 0xfff;\n      pmVar11->flag = '\x01';\n      pmVar11->op = local_2d;\n      pmVar11->affected = 0xfff;\n      local_2c = 0xfff;\n      local_2d = bVar2;\n    }\n    pmVar11->mentioned = uVar5;\n    pmVar11 = pmVar11 + 1;\n    mode_string = (char *)pbVar7;\n  } while (((local_2d & 0xef) == 0x2d) || (local_2d == 0x2b));\n  if (local_2d != 0x2c) {\n    if (local_2d == 0) {\n      pmVar4[local_28].flag = '\0';\n      return pmVar4;\n    }\nLAB_0001ecb0:\n    free(pmVar4);\n    return (mode_change *)0x0;\n  }\n  mode_string = (char *)(pbVar7 + 1);\n  goto LAB_0001ec81;\n}" { (declaration "uint uVar1;" type_identifier identifier ;) (declaration "byte bVar2;" type_identifier identifier ;) (declaration "uint uVar3;" type_identifier identifier ;) (declaration "mode_change *pmVar4;" type_identifier (pointer_declarator "*pmVar4" * identifier) ;) (declaration "uint uVar5;" type_identifier identifier ;) (declaration "size_t n;" primitive_type identifier ;) (declaration "char *pcVar6;" primitive_type (pointer_declarator "*pcVar6" * identifier) ;) (declaration "byte *pbVar7;" type_identifier (pointer_declarator "*pbVar7" * identifier) ;) (declaration "byte bVar8;" type_identifier identifier ;) (declaration "char cVar9;" primitive_type identifier ;) (declaration "mode_t mVar10;" type_identifier identifier ;) (declaration "mode_change *pmVar11;" type_identifier (pointer_declarator "*pmVar11" * identifier) ;) (declaration "byte local_2d;" type_identifier identifier ;) (declaration "uint local_2c;" type_identifier identifier ;) (declaration "int local_28;" primitive_type identifier ;) (expression_statement "cVar9 = *mode_string;" (assignment_expression "cVar9 = *mode_string" identifier = (pointer_expression "*mode_string" * identifier)) ;) (expression_statement "uVar3 = (uint)cVar9;" (assignment_expression "uVar3 = (uint)cVar9" identifier = (cast_expression "(uint)cVar9" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (if_statement "if ((byte)(cVar9 - 0x30U) < 8) {\n    uVar5 = 0;\n    pcVar6 = mode_string;\n    do {\n      uVar5 = (uVar3 - 0x30) + uVar5 * 8;\n      pcVar6 = pcVar6 + 1;\n      if (0xfff < uVar5) {\n        return (mode_change *)0x0;\n      }\n      cVar9 = *pcVar6;\n      uVar3 = (uint)cVar9;\n    } while ((byte)(cVar9 - 0x30U) < 8);\n    if (cVar9 != '\0') {\n      return (mode_change *)0x0;\n    }\n    mVar10 = uVar5 & 0xc00 | 0x3ff;\n    if (4 < (int)pcVar6 - (int)mode_string) {\n      mVar10 = 0xfff;\n    }\n    pmVar4 = (mode_change *)xmalloc(0x20);\n    pmVar4->op = '=';\n    pmVar4->flag = '\x01';\n    pmVar4->affected = 0xfff;\n    pmVar4->value = uVar5;\n    pmVar4->mentioned = mVar10;\n    pmVar4[1].flag = '\0';\n    return pmVar4;\n  }" if (parenthesized_expression "((byte)(cVar9 - 0x30U) < 8)" ( (binary_expression "(byte)(cVar9 - 0x30U) < 8" (call_expression "(byte)(cVar9 - 0x30U)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(cVar9 - 0x30U)" ( (binary_expression "cVar9 - 0x30U" identifier - number_literal) ))) < number_literal) )) (compound_statement "{\n    uVar5 = 0;\n    pcVar6 = mode_string;\n    do {\n      uVar5 = (uVar3 - 0x30) + uVar5 * 8;\n      pcVar6 = pcVar6 + 1;\n      if (0xfff < uVar5) {\n        return (mode_change *)0x0;\n      }\n      cVar9 = *pcVar6;\n      uVar3 = (uint)cVar9;\n    } while ((byte)(cVar9 - 0x30U) < 8);\n    if (cVar9 != '\0') {\n      return (mode_change *)0x0;\n    }\n    mVar10 = uVar5 & 0xc00 | 0x3ff;\n    if (4 < (int)pcVar6 - (int)mode_string) {\n      mVar10 = 0xfff;\n    }\n    pmVar4 = (mode_change *)xmalloc(0x20);\n    pmVar4->op = '=';\n    pmVar4->flag = '\x01';\n    pmVar4->affected = 0xfff;\n    pmVar4->value = uVar5;\n    pmVar4->mentioned = mVar10;\n    pmVar4[1].flag = '\0';\n    return pmVar4;\n  }" { (expression_statement "uVar5 = 0;" (assignment_expression "uVar5 = 0" identifier = number_literal) ;) (expression_statement "pcVar6 = mode_string;" (assignment_expression "pcVar6 = mode_string" identifier = identifier) ;) (do_statement "do {\n      uVar5 = (uVar3 - 0x30) + uVar5 * 8;\n      pcVar6 = pcVar6 + 1;\n      if (0xfff < uVar5) {\n        return (mode_change *)0x0;\n      }\n      cVar9 = *pcVar6;\n      uVar3 = (uint)cVar9;\n    } while ((byte)(cVar9 - 0x30U) < 8);" do (compound_statement "{\n      uVar5 = (uVar3 - 0x30) + uVar5 * 8;\n      pcVar6 = pcVar6 + 1;\n      if (0xfff < uVar5) {\n        return (mode_change *)0x0;\n      }\n      cVar9 = *pcVar6;\n      uVar3 = (uint)cVar9;\n    }" { (expression_statement "uVar5 = (uVar3 - 0x30) + uVar5 * 8;" (assignment_expression "uVar5 = (uVar3 - 0x30) + uVar5 * 8" identifier = (binary_expression "(uVar3 - 0x30) + uVar5 * 8" (parenthesized_expression "(uVar3 - 0x30)" ( (binary_expression "uVar3 - 0x30" identifier - number_literal) )) + (binary_expression "uVar5 * 8" identifier * number_literal))) ;) (expression_statement "pcVar6 = pcVar6 + 1;" (assignment_expression "pcVar6 = pcVar6 + 1" identifier = (binary_expression "pcVar6 + 1" identifier + number_literal)) ;) (if_statement "if (0xfff < uVar5) {\n        return (mode_change *)0x0;\n      }" if (parenthesized_expression "(0xfff < uVar5)" ( (binary_expression "0xfff < uVar5" number_literal < identifier) )) (compound_statement "{\n        return (mode_change *)0x0;\n      }" { (return_statement "return (mode_change *)0x0;" return (cast_expression "(mode_change *)0x0" ( (type_descriptor "mode_change *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) ;) })) (expression_statement "cVar9 = *pcVar6;" (assignment_expression "cVar9 = *pcVar6" identifier = (pointer_expression "*pcVar6" * identifier)) ;) (expression_statement "uVar3 = (uint)cVar9;" (assignment_expression "uVar3 = (uint)cVar9" identifier = (cast_expression "(uint)cVar9" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) }) while (parenthesized_expression "((byte)(cVar9 - 0x30U) < 8)" ( (binary_expression "(byte)(cVar9 - 0x30U) < 8" (call_expression "(byte)(cVar9 - 0x30U)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(cVar9 - 0x30U)" ( (binary_expression "cVar9 - 0x30U" identifier - number_literal) ))) < number_literal) )) ;) (if_statement "if (cVar9 != '\0') {\n      return (mode_change *)0x0;\n    }" if (parenthesized_expression "(cVar9 != '\0')" ( (binary_expression "cVar9 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n      return (mode_change *)0x0;\n    }" { (return_statement "return (mode_change *)0x0;" return (cast_expression "(mode_change *)0x0" ( (type_descriptor "mode_change *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) ;) })) (expression_statement "mVar10 = uVar5 & 0xc00 | 0x3ff;" (assignment_expression "mVar10 = uVar5 & 0xc00 | 0x3ff" identifier = (binary_expression "uVar5 & 0xc00 | 0x3ff" (binary_expression "uVar5 & 0xc00" identifier & number_literal) | number_literal)) ;) (if_statement "if (4 < (int)pcVar6 - (int)mode_string) {\n      mVar10 = 0xfff;\n    }" if (parenthesized_expression "(4 < (int)pcVar6 - (int)mode_string)" ( (binary_expression "4 < (int)pcVar6 - (int)mode_string" number_literal < (binary_expression "(int)pcVar6 - (int)mode_string" (cast_expression "(int)pcVar6" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)mode_string" ( (type_descriptor "int" primitive_type) ) identifier))) )) (compound_statement "{\n      mVar10 = 0xfff;\n    }" { (expression_statement "mVar10 = 0xfff;" (assignment_expression "mVar10 = 0xfff" identifier = number_literal) ;) })) (expression_statement "pmVar4 = (mode_change *)xmalloc(0x20);" (assignment_expression "pmVar4 = (mode_change *)xmalloc(0x20)" identifier = (cast_expression "(mode_change *)xmalloc(0x20)" ( (type_descriptor "mode_change *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "xmalloc(0x20)" identifier (argument_list "(0x20)" ( number_literal ))))) ;) (expression_statement "pmVar4->op = '=';" (assignment_expression "pmVar4->op = '='" (field_expression "pmVar4->op" identifier -> field_identifier) = (char_literal "'='" ' character ')) ;) (expression_statement "pmVar4->flag = '\x01';" (assignment_expression "pmVar4->flag = '\x01'" (field_expression "pmVar4->flag" identifier -> field_identifier) = (char_literal "'\x01'" ' escape_sequence ')) ;) (expression_statement "pmVar4->affected = 0xfff;" (assignment_expression "pmVar4->affected = 0xfff" (field_expression "pmVar4->affected" identifier -> field_identifier) = number_literal) ;) (expression_statement "pmVar4->value = uVar5;" (assignment_expression "pmVar4->value = uVar5" (field_expression "pmVar4->value" identifier -> field_identifier) = identifier) ;) (expression_statement "pmVar4->mentioned = mVar10;" (assignment_expression "pmVar4->mentioned = mVar10" (field_expression "pmVar4->mentioned" identifier -> field_identifier) = identifier) ;) (expression_statement "pmVar4[1].flag = '\0';" (assignment_expression "pmVar4[1].flag = '\0'" (field_expression "pmVar4[1].flag" (subscript_expression "pmVar4[1]" identifier [ number_literal ]) . field_identifier) = (char_literal "'\0'" ' escape_sequence ')) ;) (return_statement "return pmVar4;" return identifier ;) })) (expression_statement "uVar5 = 1;" (assignment_expression "uVar5 = 1" identifier = number_literal) ;) (expression_statement "pbVar7 = (byte *)mode_string;" (assignment_expression "pbVar7 = (byte *)mode_string" identifier = (cast_expression "(byte *)mode_string" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (if_statement "if (cVar9 == '\0') {\n    n = 0x10;\n  }\n  else {\n    do {\n      bVar8 = (byte)uVar3;\n      bVar2 = pbVar7[1];\n      uVar3 = (uint)bVar2;\n      uVar5 = uVar5 + ((bVar8 & 0xef) == 0x2d || bVar8 == 0x2b);\n      pbVar7 = pbVar7 + 1;\n    } while (bVar2 != 0);\n    n = uVar5 * 0x10;\n    if (((int)n < 0) || (uVar5 >> 0x1c != 0)) {\n                    /* WARNING: Subroutine does not return */\n      xalloc_die();\n    }\n  }" if (parenthesized_expression "(cVar9 == '\0')" ( (binary_expression "cVar9 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    n = 0x10;\n  }" { (expression_statement "n = 0x10;" (assignment_expression "n = 0x10" identifier = number_literal) ;) }) (else_clause "else {\n    do {\n      bVar8 = (byte)uVar3;\n      bVar2 = pbVar7[1];\n      uVar3 = (uint)bVar2;\n      uVar5 = uVar5 + ((bVar8 & 0xef) == 0x2d || bVar8 == 0x2b);\n      pbVar7 = pbVar7 + 1;\n    } while (bVar2 != 0);\n    n = uVar5 * 0x10;\n    if (((int)n < 0) || (uVar5 >> 0x1c != 0)) {\n                    /* WARNING: Subroutine does not return */\n      xalloc_die();\n    }\n  }" else (compound_statement "{\n    do {\n      bVar8 = (byte)uVar3;\n      bVar2 = pbVar7[1];\n      uVar3 = (uint)bVar2;\n      uVar5 = uVar5 + ((bVar8 & 0xef) == 0x2d || bVar8 == 0x2b);\n      pbVar7 = pbVar7 + 1;\n    } while (bVar2 != 0);\n    n = uVar5 * 0x10;\n    if (((int)n < 0) || (uVar5 >> 0x1c != 0)) {\n                    /* WARNING: Subroutine does not return */\n      xalloc_die();\n    }\n  }" { (do_statement "do {\n      bVar8 = (byte)uVar3;\n      bVar2 = pbVar7[1];\n      uVar3 = (uint)bVar2;\n      uVar5 = uVar5 + ((bVar8 & 0xef) == 0x2d || bVar8 == 0x2b);\n      pbVar7 = pbVar7 + 1;\n    } while (bVar2 != 0);" do (compound_statement "{\n      bVar8 = (byte)uVar3;\n      bVar2 = pbVar7[1];\n      uVar3 = (uint)bVar2;\n      uVar5 = uVar5 + ((bVar8 & 0xef) == 0x2d || bVar8 == 0x2b);\n      pbVar7 = pbVar7 + 1;\n    }" { (expression_statement "bVar8 = (byte)uVar3;" (assignment_expression "bVar8 = (byte)uVar3" identifier = (cast_expression "(byte)uVar3" ( (type_descriptor "byte" type_identifier) ) identifier)) ;) (expression_statement "bVar2 = pbVar7[1];" (assignment_expression "bVar2 = pbVar7[1]" identifier = (subscript_expression "pbVar7[1]" identifier [ number_literal ])) ;) (expression_statement "uVar3 = (uint)bVar2;" (assignment_expression "uVar3 = (uint)bVar2" identifier = (cast_expression "(uint)bVar2" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (expression_statement "uVar5 = uVar5 + ((bVar8 & 0xef) == 0x2d || bVar8 == 0x2b);" (assignment_expression "uVar5 = uVar5 + ((bVar8 & 0xef) == 0x2d || bVar8 == 0x2b)" identifier = (binary_expression "uVar5 + ((bVar8 & 0xef) == 0x2d || bVar8 == 0x2b)" identifier + (parenthesized_expression "((bVar8 & 0xef) == 0x2d || bVar8 == 0x2b)" ( (binary_expression "(bVar8 & 0xef) == 0x2d || bVar8 == 0x2b" (binary_expression "(bVar8 & 0xef) == 0x2d" (parenthesized_expression "(bVar8 & 0xef)" ( (binary_expression "bVar8 & 0xef" identifier & number_literal) )) == number_literal) || (binary_expression "bVar8 == 0x2b" identifier == number_literal)) )))) ;) (expression_statement "pbVar7 = pbVar7 + 1;" (assignment_expression "pbVar7 = pbVar7 + 1" identifier = (binary_expression "pbVar7 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(bVar2 != 0)" ( (binary_expression "bVar2 != 0" identifier != number_literal) )) ;) (expression_statement "n = uVar5 * 0x10;" (assignment_expression "n = uVar5 * 0x10" identifier = (binary_expression "uVar5 * 0x10" identifier * number_literal)) ;) (if_statement "if (((int)n < 0) || (uVar5 >> 0x1c != 0)) {\n                    /* WARNING: Subroutine does not return */\n      xalloc_die();\n    }" if (parenthesized_expression "(((int)n < 0) || (uVar5 >> 0x1c != 0))" ( (binary_expression "((int)n < 0) || (uVar5 >> 0x1c != 0)" (parenthesized_expression "((int)n < 0)" ( (binary_expression "(int)n < 0" (cast_expression "(int)n" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) || (parenthesized_expression "(uVar5 >> 0x1c != 0)" ( (binary_expression "uVar5 >> 0x1c != 0" (binary_expression "uVar5 >> 0x1c" identifier >> number_literal) != number_literal) ))) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n      xalloc_die();\n    }" { comment (expression_statement "xalloc_die();" (call_expression "xalloc_die()" identifier (argument_list "()" ( ))) ;) })) }))) (expression_statement "pmVar4 = (mode_change *)xmalloc(n);" (assignment_expression "pmVar4 = (mode_change *)xmalloc(n)" identifier = (cast_expression "(mode_change *)xmalloc(n)" ( (type_descriptor "mode_change *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "xmalloc(n)" identifier (argument_list "(n)" ( identifier ))))) ;) (expression_statement "local_28 = 0;" (assignment_expression "local_28 = 0" identifier = number_literal) ;) (labeled_statement "LAB_0001ec81:\n  local_2c = 0;" statement_identifier : (expression_statement "local_2c = 0;" (assignment_expression "local_2c = 0" identifier = number_literal) ;)) (do_statement "do {\n    local_2d = *mode_string;\n    if (local_2d == 0x61) {\n      local_2c = 0xfff;\n    }\n    else {\n      if ((char)local_2d < 'b') break;\n      if (local_2d == 0x6f) {\n        local_2c = local_2c | 0x207;\n      }\n      else if (local_2d == 0x75) {\n        local_2c = local_2c | 0x9c0;\n      }\n      else {\n        if (local_2d != 0x67) goto LAB_0001ecb0;\n        local_2c = local_2c | 0x438;\n      }\n    }\n    mode_string = (char *)((byte *)mode_string + 1);\n  } while( true );" do (compound_statement "{\n    local_2d = *mode_string;\n    if (local_2d == 0x61) {\n      local_2c = 0xfff;\n    }\n    else {\n      if ((char)local_2d < 'b') break;\n      if (local_2d == 0x6f) {\n        local_2c = local_2c | 0x207;\n      }\n      else if (local_2d == 0x75) {\n        local_2c = local_2c | 0x9c0;\n      }\n      else {\n        if (local_2d != 0x67) goto LAB_0001ecb0;\n        local_2c = local_2c | 0x438;\n      }\n    }\n    mode_string = (char *)((byte *)mode_string + 1);\n  }" { (expression_statement "local_2d = *mode_string;" (assignment_expression "local_2d = *mode_string" identifier = (pointer_expression "*mode_string" * identifier)) ;) (if_statement "if (local_2d == 0x61) {\n      local_2c = 0xfff;\n    }\n    else {\n      if ((char)local_2d < 'b') break;\n      if (local_2d == 0x6f) {\n        local_2c = local_2c | 0x207;\n      }\n      else if (local_2d == 0x75) {\n        local_2c = local_2c | 0x9c0;\n      }\n      else {\n        if (local_2d != 0x67) goto LAB_0001ecb0;\n        local_2c = local_2c | 0x438;\n      }\n    }" if (parenthesized_expression "(local_2d == 0x61)" ( (binary_expression "local_2d == 0x61" identifier == number_literal) )) (compound_statement "{\n      local_2c = 0xfff;\n    }" { (expression_statement "local_2c = 0xfff;" (assignment_expression "local_2c = 0xfff" identifier = number_literal) ;) }) (else_clause "else {\n      if ((char)local_2d < 'b') break;\n      if (local_2d == 0x6f) {\n        local_2c = local_2c | 0x207;\n      }\n      else if (local_2d == 0x75) {\n        local_2c = local_2c | 0x9c0;\n      }\n      else {\n        if (local_2d != 0x67) goto LAB_0001ecb0;\n        local_2c = local_2c | 0x438;\n      }\n    }" else (compound_statement "{\n      if ((char)local_2d < 'b') break;\n      if (local_2d == 0x6f) {\n        local_2c = local_2c | 0x207;\n      }\n      else if (local_2d == 0x75) {\n        local_2c = local_2c | 0x9c0;\n      }\n      else {\n        if (local_2d != 0x67) goto LAB_0001ecb0;\n        local_2c = local_2c | 0x438;\n      }\n    }" { (if_statement "if ((char)local_2d < 'b') break;" if (parenthesized_expression "((char)local_2d < 'b')" ( (binary_expression "(char)local_2d < 'b'" (cast_expression "(char)local_2d" ( (type_descriptor "char" primitive_type) ) identifier) < (char_literal "'b'" ' character ')) )) (break_statement "break;" break ;)) (if_statement "if (local_2d == 0x6f) {\n        local_2c = local_2c | 0x207;\n      }\n      else if (local_2d == 0x75) {\n        local_2c = local_2c | 0x9c0;\n      }\n      else {\n        if (local_2d != 0x67) goto LAB_0001ecb0;\n        local_2c = local_2c | 0x438;\n      }" if (parenthesized_expression "(local_2d == 0x6f)" ( (binary_expression "local_2d == 0x6f" identifier == number_literal) )) (compound_statement "{\n        local_2c = local_2c | 0x207;\n      }" { (expression_statement "local_2c = local_2c | 0x207;" (assignment_expression "local_2c = local_2c | 0x207" identifier = (binary_expression "local_2c | 0x207" identifier | number_literal)) ;) }) (else_clause "else if (local_2d == 0x75) {\n        local_2c = local_2c | 0x9c0;\n      }\n      else {\n        if (local_2d != 0x67) goto LAB_0001ecb0;\n        local_2c = local_2c | 0x438;\n      }" else (if_statement "if (local_2d == 0x75) {\n        local_2c = local_2c | 0x9c0;\n      }\n      else {\n        if (local_2d != 0x67) goto LAB_0001ecb0;\n        local_2c = local_2c | 0x438;\n      }" if (parenthesized_expression "(local_2d == 0x75)" ( (binary_expression "local_2d == 0x75" identifier == number_literal) )) (compound_statement "{\n        local_2c = local_2c | 0x9c0;\n      }" { (expression_statement "local_2c = local_2c | 0x9c0;" (assignment_expression "local_2c = local_2c | 0x9c0" identifier = (binary_expression "local_2c | 0x9c0" identifier | number_literal)) ;) }) (else_clause "else {\n        if (local_2d != 0x67) goto LAB_0001ecb0;\n        local_2c = local_2c | 0x438;\n      }" else (compound_statement "{\n        if (local_2d != 0x67) goto LAB_0001ecb0;\n        local_2c = local_2c | 0x438;\n      }" { (if_statement "if (local_2d != 0x67) goto LAB_0001ecb0;" if (parenthesized_expression "(local_2d != 0x67)" ( (binary_expression "local_2d != 0x67" identifier != number_literal) )) (goto_statement "goto LAB_0001ecb0;" goto statement_identifier ;)) (expression_statement "local_2c = local_2c | 0x438;" (assignment_expression "local_2c = local_2c | 0x438" identifier = (binary_expression "local_2c | 0x438" identifier | number_literal)) ;) }))))) }))) (expression_statement "mode_string = (char *)((byte *)mode_string + 1);" (assignment_expression "mode_string = (char *)((byte *)mode_string + 1)" identifier = (cast_expression "(char *)((byte *)mode_string + 1)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((byte *)mode_string + 1)" ( (binary_expression "(byte *)mode_string + 1" (cast_expression "(byte *)mode_string" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) + number_literal) )))) ;) }) while (parenthesized_expression "( true )" ( true )) ;) (if_statement "if (((local_2d != 0x2d) && (local_2d != 0x3d)) && (local_2d != 0x2b)) goto LAB_0001ecb0;" if (parenthesized_expression "(((local_2d != 0x2d) && (local_2d != 0x3d)) && (local_2d != 0x2b))" ( (binary_expression "((local_2d != 0x2d) && (local_2d != 0x3d)) && (local_2d != 0x2b)" (parenthesized_expression "((local_2d != 0x2d) && (local_2d != 0x3d))" ( (binary_expression "(local_2d != 0x2d) && (local_2d != 0x3d)" (parenthesized_expression "(local_2d != 0x2d)" ( (binary_expression "local_2d != 0x2d" identifier != number_literal) )) && (parenthesized_expression "(local_2d != 0x3d)" ( (binary_expression "local_2d != 0x3d" identifier != number_literal) ))) )) && (parenthesized_expression "(local_2d != 0x2b)" ( (binary_expression "local_2d != 0x2b" identifier != number_literal) ))) )) (goto_statement "goto LAB_0001ecb0;" goto statement_identifier ;)) (expression_statement "pmVar11 = pmVar4 + local_28;" (assignment_expression "pmVar11 = pmVar4 + local_28" identifier = (binary_expression "pmVar4 + local_28" identifier + identifier)) ;) (do_statement "do {\n    local_28 = local_28 + 1;\n    bVar2 = ((byte *)mode_string)[1];\n    uVar3 = (uint)(char)bVar2;\n    pbVar7 = (byte *)mode_string + 1;\n    if (bVar2 == 0x67) {\n      uVar5 = 0x38;\nLAB_0001ed55:\n      pmVar11->flag = '\x03';\n      pmVar11->value = uVar5;\n      pmVar11->op = local_2d;\n      pmVar11->affected = local_2c;\n      pbVar7 = (byte *)mode_string + 2;\n      local_2d = *pbVar7;\nLAB_0001ed74:\n      if (local_2c != 0) {\n        uVar5 = local_2c & uVar5;\n      }\n    }\n    else {\n      if ('g' < (char)bVar2) {\n        if (bVar2 == 0x6f) {\n          uVar5 = 7;\n        }\n        else {\n          uVar5 = 0x1c0;\n          if (bVar2 != 0x75) goto LAB_0001ee40;\n        }\n        goto LAB_0001ed55;\n      }\n      if (7 < (byte)(bVar2 - 0x30)) {\nLAB_0001ee40:\n        uVar1 = uVar3 - 0x58;\n        cVar9 = '\x01';\n        uVar5 = 0;\n        bVar8 = (byte)uVar1;\n        while (bVar8 < 0x21) {\n          bVar2 = (byte)uVar3;\n                    /* WARNING: Could not find normalized switch variable to match jumptable */\n          switch(uVar1 & 0xff) {\n          case 0:\n            cVar9 = '\x02';\n            break;\n          default:\n            goto _L30;\n          case 0x1a:\n            uVar5 = uVar5 | 0x124;\n            break;\n          case 0x1b:\n            uVar5 = uVar5 | 0xc00;\n            break;\n          case 0x1c:\n            uVar5 = uVar5 | 0x200;\n            break;\n          case 0x1f:\n            uVar5 = uVar5 | 0x92;\n            break;\n          case 0x20:\n            uVar5 = uVar5 | 0x49;\n          }\n          pbVar7 = pbVar7 + 1;\n          bVar2 = *pbVar7;\n          uVar3 = (uint)bVar2;\n          uVar1 = uVar3 - 0x58;\n          bVar8 = (byte)uVar1;\n        }\n_L30:\n        pmVar11->op = local_2d;\n        pmVar11->flag = cVar9;\n        pmVar11->affected = local_2c;\n        pmVar11->value = uVar5;\n        local_2d = bVar2;\n        goto LAB_0001ed74;\n      }\n      uVar5 = 0;\n      do {\n        uVar5 = (uVar3 - 0x30) + uVar5 * 8;\n        pbVar7 = pbVar7 + 1;\n        if (0xfff < uVar5) goto LAB_0001ecb0;\n        bVar2 = *pbVar7;\n        uVar3 = (uint)(char)bVar2;\n      } while ((byte)(bVar2 - 0x30) < 8);\n      if ((local_2c != 0) || ((bVar2 != 0 && (bVar2 != 0x2c)))) goto LAB_0001ecb0;\n      pmVar11->value = uVar5;\n      uVar5 = 0xfff;\n      pmVar11->flag = '\x01';\n      pmVar11->op = local_2d;\n      pmVar11->affected = 0xfff;\n      local_2c = 0xfff;\n      local_2d = bVar2;\n    }\n    pmVar11->mentioned = uVar5;\n    pmVar11 = pmVar11 + 1;\n    mode_string = (char *)pbVar7;\n  } while (((local_2d & 0xef) == 0x2d) || (local_2d == 0x2b));" do (compound_statement "{\n    local_28 = local_28 + 1;\n    bVar2 = ((byte *)mode_string)[1];\n    uVar3 = (uint)(char)bVar2;\n    pbVar7 = (byte *)mode_string + 1;\n    if (bVar2 == 0x67) {\n      uVar5 = 0x38;\nLAB_0001ed55:\n      pmVar11->flag = '\x03';\n      pmVar11->value = uVar5;\n      pmVar11->op = local_2d;\n      pmVar11->affected = local_2c;\n      pbVar7 = (byte *)mode_string + 2;\n      local_2d = *pbVar7;\nLAB_0001ed74:\n      if (local_2c != 0) {\n        uVar5 = local_2c & uVar5;\n      }\n    }\n    else {\n      if ('g' < (char)bVar2) {\n        if (bVar2 == 0x6f) {\n          uVar5 = 7;\n        }\n        else {\n          uVar5 = 0x1c0;\n          if (bVar2 != 0x75) goto LAB_0001ee40;\n        }\n        goto LAB_0001ed55;\n      }\n      if (7 < (byte)(bVar2 - 0x30)) {\nLAB_0001ee40:\n        uVar1 = uVar3 - 0x58;\n        cVar9 = '\x01';\n        uVar5 = 0;\n        bVar8 = (byte)uVar1;\n        while (bVar8 < 0x21) {\n          bVar2 = (byte)uVar3;\n                    /* WARNING: Could not find normalized switch variable to match jumptable */\n          switch(uVar1 & 0xff) {\n          case 0:\n            cVar9 = '\x02';\n            break;\n          default:\n            goto _L30;\n          case 0x1a:\n            uVar5 = uVar5 | 0x124;\n            break;\n          case 0x1b:\n            uVar5 = uVar5 | 0xc00;\n            break;\n          case 0x1c:\n            uVar5 = uVar5 | 0x200;\n            break;\n          case 0x1f:\n            uVar5 = uVar5 | 0x92;\n            break;\n          case 0x20:\n            uVar5 = uVar5 | 0x49;\n          }\n          pbVar7 = pbVar7 + 1;\n          bVar2 = *pbVar7;\n          uVar3 = (uint)bVar2;\n          uVar1 = uVar3 - 0x58;\n          bVar8 = (byte)uVar1;\n        }\n_L30:\n        pmVar11->op = local_2d;\n        pmVar11->flag = cVar9;\n        pmVar11->affected = local_2c;\n        pmVar11->value = uVar5;\n        local_2d = bVar2;\n        goto LAB_0001ed74;\n      }\n      uVar5 = 0;\n      do {\n        uVar5 = (uVar3 - 0x30) + uVar5 * 8;\n        pbVar7 = pbVar7 + 1;\n        if (0xfff < uVar5) goto LAB_0001ecb0;\n        bVar2 = *pbVar7;\n        uVar3 = (uint)(char)bVar2;\n      } while ((byte)(bVar2 - 0x30) < 8);\n      if ((local_2c != 0) || ((bVar2 != 0 && (bVar2 != 0x2c)))) goto LAB_0001ecb0;\n      pmVar11->value = uVar5;\n      uVar5 = 0xfff;\n      pmVar11->flag = '\x01';\n      pmVar11->op = local_2d;\n      pmVar11->affected = 0xfff;\n      local_2c = 0xfff;\n      local_2d = bVar2;\n    }\n    pmVar11->mentioned = uVar5;\n    pmVar11 = pmVar11 + 1;\n    mode_string = (char *)pbVar7;\n  }" { (expression_statement "local_28 = local_28 + 1;" (assignment_expression "local_28 = local_28 + 1" identifier = (binary_expression "local_28 + 1" identifier + number_literal)) ;) (expression_statement "bVar2 = ((byte *)mode_string)[1];" (assignment_expression "bVar2 = ((byte *)mode_string)[1]" identifier = (subscript_expression "((byte *)mode_string)[1]" (parenthesized_expression "((byte *)mode_string)" ( (cast_expression "(byte *)mode_string" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) )) [ number_literal ])) ;) (expression_statement "uVar3 = (uint)(char)bVar2;" (assignment_expression "uVar3 = (uint)(char)bVar2" identifier = (cast_expression "(uint)(char)bVar2" ( (type_descriptor "uint" type_identifier) ) (cast_expression "(char)bVar2" ( (type_descriptor "char" primitive_type) ) identifier))) ;) (expression_statement "pbVar7 = (byte *)mode_string + 1;" (assignment_expression "pbVar7 = (byte *)mode_string + 1" identifier = (binary_expression "(byte *)mode_string + 1" (cast_expression "(byte *)mode_string" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) + number_literal)) ;) (if_statement "if (bVar2 == 0x67) {\n      uVar5 = 0x38;\nLAB_0001ed55:\n      pmVar11->flag = '\x03';\n      pmVar11->value = uVar5;\n      pmVar11->op = local_2d;\n      pmVar11->affected = local_2c;\n      pbVar7 = (byte *)mode_string + 2;\n      local_2d = *pbVar7;\nLAB_0001ed74:\n      if (local_2c != 0) {\n        uVar5 = local_2c & uVar5;\n      }\n    }\n    else {\n      if ('g' < (char)bVar2) {\n        if (bVar2 == 0x6f) {\n          uVar5 = 7;\n        }\n        else {\n          uVar5 = 0x1c0;\n          if (bVar2 != 0x75) goto LAB_0001ee40;\n        }\n        goto LAB_0001ed55;\n      }\n      if (7 < (byte)(bVar2 - 0x30)) {\nLAB_0001ee40:\n        uVar1 = uVar3 - 0x58;\n        cVar9 = '\x01';\n        uVar5 = 0;\n        bVar8 = (byte)uVar1;\n        while (bVar8 < 0x21) {\n          bVar2 = (byte)uVar3;\n                    /* WARNING: Could not find normalized switch variable to match jumptable */\n          switch(uVar1 & 0xff) {\n          case 0:\n            cVar9 = '\x02';\n            break;\n          default:\n            goto _L30;\n          case 0x1a:\n            uVar5 = uVar5 | 0x124;\n            break;\n          case 0x1b:\n            uVar5 = uVar5 | 0xc00;\n            break;\n          case 0x1c:\n            uVar5 = uVar5 | 0x200;\n            break;\n          case 0x1f:\n            uVar5 = uVar5 | 0x92;\n            break;\n          case 0x20:\n            uVar5 = uVar5 | 0x49;\n          }\n          pbVar7 = pbVar7 + 1;\n          bVar2 = *pbVar7;\n          uVar3 = (uint)bVar2;\n          uVar1 = uVar3 - 0x58;\n          bVar8 = (byte)uVar1;\n        }\n_L30:\n        pmVar11->op = local_2d;\n        pmVar11->flag = cVar9;\n        pmVar11->affected = local_2c;\n        pmVar11->value = uVar5;\n        local_2d = bVar2;\n        goto LAB_0001ed74;\n      }\n      uVar5 = 0;\n      do {\n        uVar5 = (uVar3 - 0x30) + uVar5 * 8;\n        pbVar7 = pbVar7 + 1;\n        if (0xfff < uVar5) goto LAB_0001ecb0;\n        bVar2 = *pbVar7;\n        uVar3 = (uint)(char)bVar2;\n      } while ((byte)(bVar2 - 0x30) < 8);\n      if ((local_2c != 0) || ((bVar2 != 0 && (bVar2 != 0x2c)))) goto LAB_0001ecb0;\n      pmVar11->value = uVar5;\n      uVar5 = 0xfff;\n      pmVar11->flag = '\x01';\n      pmVar11->op = local_2d;\n      pmVar11->affected = 0xfff;\n      local_2c = 0xfff;\n      local_2d = bVar2;\n    }" if (parenthesized_expression "(bVar2 == 0x67)" ( (binary_expression "bVar2 == 0x67" identifier == number_literal) )) (compound_statement "{\n      uVar5 = 0x38;\nLAB_0001ed55:\n      pmVar11->flag = '\x03';\n      pmVar11->value = uVar5;\n      pmVar11->op = local_2d;\n      pmVar11->affected = local_2c;\n      pbVar7 = (byte *)mode_string + 2;\n      local_2d = *pbVar7;\nLAB_0001ed74:\n      if (local_2c != 0) {\n        uVar5 = local_2c & uVar5;\n      }\n    }" { (expression_statement "uVar5 = 0x38;" (assignment_expression "uVar5 = 0x38" identifier = number_literal) ;) (labeled_statement "LAB_0001ed55:\n      pmVar11->flag = '\x03';" statement_identifier : (expression_statement "pmVar11->flag = '\x03';" (assignment_expression "pmVar11->flag = '\x03'" (field_expression "pmVar11->flag" identifier -> field_identifier) = (char_literal "'\x03'" ' escape_sequence ')) ;)) (expression_statement "pmVar11->value = uVar5;" (assignment_expression "pmVar11->value = uVar5" (field_expression "pmVar11->value" identifier -> field_identifier) = identifier) ;) (expression_statement "pmVar11->op = local_2d;" (assignment_expression "pmVar11->op = local_2d" (field_expression "pmVar11->op" identifier -> field_identifier) = identifier) ;) (expression_statement "pmVar11->affected = local_2c;" (assignment_expression "pmVar11->affected = local_2c" (field_expression "pmVar11->affected" identifier -> field_identifier) = identifier) ;) (expression_statement "pbVar7 = (byte *)mode_string + 2;" (assignment_expression "pbVar7 = (byte *)mode_string + 2" identifier = (binary_expression "(byte *)mode_string + 2" (cast_expression "(byte *)mode_string" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) + number_literal)) ;) (expression_statement "local_2d = *pbVar7;" (assignment_expression "local_2d = *pbVar7" identifier = (pointer_expression "*pbVar7" * identifier)) ;) (labeled_statement "LAB_0001ed74:\n      if (local_2c != 0) {\n        uVar5 = local_2c & uVar5;\n      }" statement_identifier : (if_statement "if (local_2c != 0) {\n        uVar5 = local_2c & uVar5;\n      }" if (parenthesized_expression "(local_2c != 0)" ( (binary_expression "local_2c != 0" identifier != number_literal) )) (compound_statement "{\n        uVar5 = local_2c & uVar5;\n      }" { (expression_statement "uVar5 = local_2c & uVar5;" (assignment_expression "uVar5 = local_2c & uVar5" identifier = (binary_expression "local_2c & uVar5" identifier & identifier)) ;) }))) }) (else_clause "else {\n      if ('g' < (char)bVar2) {\n        if (bVar2 == 0x6f) {\n          uVar5 = 7;\n        }\n        else {\n          uVar5 = 0x1c0;\n          if (bVar2 != 0x75) goto LAB_0001ee40;\n        }\n        goto LAB_0001ed55;\n      }\n      if (7 < (byte)(bVar2 - 0x30)) {\nLAB_0001ee40:\n        uVar1 = uVar3 - 0x58;\n        cVar9 = '\x01';\n        uVar5 = 0;\n        bVar8 = (byte)uVar1;\n        while (bVar8 < 0x21) {\n          bVar2 = (byte)uVar3;\n                    /* WARNING: Could not find normalized switch variable to match jumptable */\n          switch(uVar1 & 0xff) {\n          case 0:\n            cVar9 = '\x02';\n            break;\n          default:\n            goto _L30;\n          case 0x1a:\n            uVar5 = uVar5 | 0x124;\n            break;\n          case 0x1b:\n            uVar5 = uVar5 | 0xc00;\n            break;\n          case 0x1c:\n            uVar5 = uVar5 | 0x200;\n            break;\n          case 0x1f:\n            uVar5 = uVar5 | 0x92;\n            break;\n          case 0x20:\n            uVar5 = uVar5 | 0x49;\n          }\n          pbVar7 = pbVar7 + 1;\n          bVar2 = *pbVar7;\n          uVar3 = (uint)bVar2;\n          uVar1 = uVar3 - 0x58;\n          bVar8 = (byte)uVar1;\n        }\n_L30:\n        pmVar11->op = local_2d;\n        pmVar11->flag = cVar9;\n        pmVar11->affected = local_2c;\n        pmVar11->value = uVar5;\n        local_2d = bVar2;\n        goto LAB_0001ed74;\n      }\n      uVar5 = 0;\n      do {\n        uVar5 = (uVar3 - 0x30) + uVar5 * 8;\n        pbVar7 = pbVar7 + 1;\n        if (0xfff < uVar5) goto LAB_0001ecb0;\n        bVar2 = *pbVar7;\n        uVar3 = (uint)(char)bVar2;\n      } while ((byte)(bVar2 - 0x30) < 8);\n      if ((local_2c != 0) || ((bVar2 != 0 && (bVar2 != 0x2c)))) goto LAB_0001ecb0;\n      pmVar11->value = uVar5;\n      uVar5 = 0xfff;\n      pmVar11->flag = '\x01';\n      pmVar11->op = local_2d;\n      pmVar11->affected = 0xfff;\n      local_2c = 0xfff;\n      local_2d = bVar2;\n    }" else (compound_statement "{\n      if ('g' < (char)bVar2) {\n        if (bVar2 == 0x6f) {\n          uVar5 = 7;\n        }\n        else {\n          uVar5 = 0x1c0;\n          if (bVar2 != 0x75) goto LAB_0001ee40;\n        }\n        goto LAB_0001ed55;\n      }\n      if (7 < (byte)(bVar2 - 0x30)) {\nLAB_0001ee40:\n        uVar1 = uVar3 - 0x58;\n        cVar9 = '\x01';\n        uVar5 = 0;\n        bVar8 = (byte)uVar1;\n        while (bVar8 < 0x21) {\n          bVar2 = (byte)uVar3;\n                    /* WARNING: Could not find normalized switch variable to match jumptable */\n          switch(uVar1 & 0xff) {\n          case 0:\n            cVar9 = '\x02';\n            break;\n          default:\n            goto _L30;\n          case 0x1a:\n            uVar5 = uVar5 | 0x124;\n            break;\n          case 0x1b:\n            uVar5 = uVar5 | 0xc00;\n            break;\n          case 0x1c:\n            uVar5 = uVar5 | 0x200;\n            break;\n          case 0x1f:\n            uVar5 = uVar5 | 0x92;\n            break;\n          case 0x20:\n            uVar5 = uVar5 | 0x49;\n          }\n          pbVar7 = pbVar7 + 1;\n          bVar2 = *pbVar7;\n          uVar3 = (uint)bVar2;\n          uVar1 = uVar3 - 0x58;\n          bVar8 = (byte)uVar1;\n        }\n_L30:\n        pmVar11->op = local_2d;\n        pmVar11->flag = cVar9;\n        pmVar11->affected = local_2c;\n        pmVar11->value = uVar5;\n        local_2d = bVar2;\n        goto LAB_0001ed74;\n      }\n      uVar5 = 0;\n      do {\n        uVar5 = (uVar3 - 0x30) + uVar5 * 8;\n        pbVar7 = pbVar7 + 1;\n        if (0xfff < uVar5) goto LAB_0001ecb0;\n        bVar2 = *pbVar7;\n        uVar3 = (uint)(char)bVar2;\n      } while ((byte)(bVar2 - 0x30) < 8);\n      if ((local_2c != 0) || ((bVar2 != 0 && (bVar2 != 0x2c)))) goto LAB_0001ecb0;\n      pmVar11->value = uVar5;\n      uVar5 = 0xfff;\n      pmVar11->flag = '\x01';\n      pmVar11->op = local_2d;\n      pmVar11->affected = 0xfff;\n      local_2c = 0xfff;\n      local_2d = bVar2;\n    }" { (if_statement "if ('g' < (char)bVar2) {\n        if (bVar2 == 0x6f) {\n          uVar5 = 7;\n        }\n        else {\n          uVar5 = 0x1c0;\n          if (bVar2 != 0x75) goto LAB_0001ee40;\n        }\n        goto LAB_0001ed55;\n      }" if (parenthesized_expression "('g' < (char)bVar2)" ( (binary_expression "'g' < (char)bVar2" (char_literal "'g'" ' character ') < (cast_expression "(char)bVar2" ( (type_descriptor "char" primitive_type) ) identifier)) )) (compound_statement "{\n        if (bVar2 == 0x6f) {\n          uVar5 = 7;\n        }\n        else {\n          uVar5 = 0x1c0;\n          if (bVar2 != 0x75) goto LAB_0001ee40;\n        }\n        goto LAB_0001ed55;\n      }" { (if_statement "if (bVar2 == 0x6f) {\n          uVar5 = 7;\n        }\n        else {\n          uVar5 = 0x1c0;\n          if (bVar2 != 0x75) goto LAB_0001ee40;\n        }" if (parenthesized_expression "(bVar2 == 0x6f)" ( (binary_expression "bVar2 == 0x6f" identifier == number_literal) )) (compound_statement "{\n          uVar5 = 7;\n        }" { (expression_statement "uVar5 = 7;" (assignment_expression "uVar5 = 7" identifier = number_literal) ;) }) (else_clause "else {\n          uVar5 = 0x1c0;\n          if (bVar2 != 0x75) goto LAB_0001ee40;\n        }" else (compound_statement "{\n          uVar5 = 0x1c0;\n          if (bVar2 != 0x75) goto LAB_0001ee40;\n        }" { (expression_statement "uVar5 = 0x1c0;" (assignment_expression "uVar5 = 0x1c0" identifier = number_literal) ;) (if_statement "if (bVar2 != 0x75) goto LAB_0001ee40;" if (parenthesized_expression "(bVar2 != 0x75)" ( (binary_expression "bVar2 != 0x75" identifier != number_literal) )) (goto_statement "goto LAB_0001ee40;" goto statement_identifier ;)) }))) (goto_statement "goto LAB_0001ed55;" goto statement_identifier ;) })) (if_statement "if (7 < (byte)(bVar2 - 0x30)) {\nLAB_0001ee40:\n        uVar1 = uVar3 - 0x58;\n        cVar9 = '\x01';\n        uVar5 = 0;\n        bVar8 = (byte)uVar1;\n        while (bVar8 < 0x21) {\n          bVar2 = (byte)uVar3;\n                    /* WARNING: Could not find normalized switch variable to match jumptable */\n          switch(uVar1 & 0xff) {\n          case 0:\n            cVar9 = '\x02';\n            break;\n          default:\n            goto _L30;\n          case 0x1a:\n            uVar5 = uVar5 | 0x124;\n            break;\n          case 0x1b:\n            uVar5 = uVar5 | 0xc00;\n            break;\n          case 0x1c:\n            uVar5 = uVar5 | 0x200;\n            break;\n          case 0x1f:\n            uVar5 = uVar5 | 0x92;\n            break;\n          case 0x20:\n            uVar5 = uVar5 | 0x49;\n          }\n          pbVar7 = pbVar7 + 1;\n          bVar2 = *pbVar7;\n          uVar3 = (uint)bVar2;\n          uVar1 = uVar3 - 0x58;\n          bVar8 = (byte)uVar1;\n        }\n_L30:\n        pmVar11->op = local_2d;\n        pmVar11->flag = cVar9;\n        pmVar11->affected = local_2c;\n        pmVar11->value = uVar5;\n        local_2d = bVar2;\n        goto LAB_0001ed74;\n      }" if (parenthesized_expression "(7 < (byte)(bVar2 - 0x30))" ( (binary_expression "7 < (byte)(bVar2 - 0x30)" number_literal < (call_expression "(byte)(bVar2 - 0x30)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(bVar2 - 0x30)" ( (binary_expression "bVar2 - 0x30" identifier - number_literal) )))) )) (compound_statement "{\nLAB_0001ee40:\n        uVar1 = uVar3 - 0x58;\n        cVar9 = '\x01';\n        uVar5 = 0;\n        bVar8 = (byte)uVar1;\n        while (bVar8 < 0x21) {\n          bVar2 = (byte)uVar3;\n                    /* WARNING: Could not find normalized switch variable to match jumptable */\n          switch(uVar1 & 0xff) {\n          case 0:\n            cVar9 = '\x02';\n            break;\n          default:\n            goto _L30;\n          case 0x1a:\n            uVar5 = uVar5 | 0x124;\n            break;\n          case 0x1b:\n            uVar5 = uVar5 | 0xc00;\n            break;\n          case 0x1c:\n            uVar5 = uVar5 | 0x200;\n            break;\n          case 0x1f:\n            uVar5 = uVar5 | 0x92;\n            break;\n          case 0x20:\n            uVar5 = uVar5 | 0x49;\n          }\n          pbVar7 = pbVar7 + 1;\n          bVar2 = *pbVar7;\n          uVar3 = (uint)bVar2;\n          uVar1 = uVar3 - 0x58;\n          bVar8 = (byte)uVar1;\n        }\n_L30:\n        pmVar11->op = local_2d;\n        pmVar11->flag = cVar9;\n        pmVar11->affected = local_2c;\n        pmVar11->value = uVar5;\n        local_2d = bVar2;\n        goto LAB_0001ed74;\n      }" { (labeled_statement "LAB_0001ee40:\n        uVar1 = uVar3 - 0x58;" statement_identifier : (expression_statement "uVar1 = uVar3 - 0x58;" (assignment_expression "uVar1 = uVar3 - 0x58" identifier = (binary_expression "uVar3 - 0x58" identifier - number_literal)) ;)) (expression_statement "cVar9 = '\x01';" (assignment_expression "cVar9 = '\x01'" identifier = (char_literal "'\x01'" ' escape_sequence ')) ;) (expression_statement "uVar5 = 0;" (assignment_expression "uVar5 = 0" identifier = number_literal) ;) (expression_statement "bVar8 = (byte)uVar1;" (assignment_expression "bVar8 = (byte)uVar1" identifier = (cast_expression "(byte)uVar1" ( (type_descriptor "byte" type_identifier) ) identifier)) ;) (while_statement "while (bVar8 < 0x21) {\n          bVar2 = (byte)uVar3;\n                    /* WARNING: Could not find normalized switch variable to match jumptable */\n          switch(uVar1 & 0xff) {\n          case 0:\n            cVar9 = '\x02';\n            break;\n          default:\n            goto _L30;\n          case 0x1a:\n            uVar5 = uVar5 | 0x124;\n            break;\n          case 0x1b:\n            uVar5 = uVar5 | 0xc00;\n            break;\n          case 0x1c:\n            uVar5 = uVar5 | 0x200;\n            break;\n          case 0x1f:\n            uVar5 = uVar5 | 0x92;\n            break;\n          case 0x20:\n            uVar5 = uVar5 | 0x49;\n          }\n          pbVar7 = pbVar7 + 1;\n          bVar2 = *pbVar7;\n          uVar3 = (uint)bVar2;\n          uVar1 = uVar3 - 0x58;\n          bVar8 = (byte)uVar1;\n        }" while (parenthesized_expression "(bVar8 < 0x21)" ( (binary_expression "bVar8 < 0x21" identifier < number_literal) )) (compound_statement "{\n          bVar2 = (byte)uVar3;\n                    /* WARNING: Could not find normalized switch variable to match jumptable */\n          switch(uVar1 & 0xff) {\n          case 0:\n            cVar9 = '\x02';\n            break;\n          default:\n            goto _L30;\n          case 0x1a:\n            uVar5 = uVar5 | 0x124;\n            break;\n          case 0x1b:\n            uVar5 = uVar5 | 0xc00;\n            break;\n          case 0x1c:\n            uVar5 = uVar5 | 0x200;\n            break;\n          case 0x1f:\n            uVar5 = uVar5 | 0x92;\n            break;\n          case 0x20:\n            uVar5 = uVar5 | 0x49;\n          }\n          pbVar7 = pbVar7 + 1;\n          bVar2 = *pbVar7;\n          uVar3 = (uint)bVar2;\n          uVar1 = uVar3 - 0x58;\n          bVar8 = (byte)uVar1;\n        }" { (expression_statement "bVar2 = (byte)uVar3;" (assignment_expression "bVar2 = (byte)uVar3" identifier = (cast_expression "(byte)uVar3" ( (type_descriptor "byte" type_identifier) ) identifier)) ;) comment (switch_statement "switch(uVar1 & 0xff) {\n          case 0:\n            cVar9 = '\x02';\n            break;\n          default:\n            goto _L30;\n          case 0x1a:\n            uVar5 = uVar5 | 0x124;\n            break;\n          case 0x1b:\n            uVar5 = uVar5 | 0xc00;\n            break;\n          case 0x1c:\n            uVar5 = uVar5 | 0x200;\n            break;\n          case 0x1f:\n            uVar5 = uVar5 | 0x92;\n            break;\n          case 0x20:\n            uVar5 = uVar5 | 0x49;\n          }" switch (parenthesized_expression "(uVar1 & 0xff)" ( (binary_expression "uVar1 & 0xff" identifier & number_literal) )) (compound_statement "{\n          case 0:\n            cVar9 = '\x02';\n            break;\n          default:\n            goto _L30;\n          case 0x1a:\n            uVar5 = uVar5 | 0x124;\n            break;\n          case 0x1b:\n            uVar5 = uVar5 | 0xc00;\n            break;\n          case 0x1c:\n            uVar5 = uVar5 | 0x200;\n            break;\n          case 0x1f:\n            uVar5 = uVar5 | 0x92;\n            break;\n          case 0x20:\n            uVar5 = uVar5 | 0x49;\n          }" { (case_statement "case 0:\n            cVar9 = '\x02';\n            break;" case number_literal : (expression_statement "cVar9 = '\x02';" (assignment_expression "cVar9 = '\x02'" identifier = (char_literal "'\x02'" ' escape_sequence ')) ;) (break_statement "break;" break ;)) (case_statement "default:\n            goto _L30;" default : (goto_statement "goto _L30;" goto statement_identifier ;)) (case_statement "case 0x1a:\n            uVar5 = uVar5 | 0x124;\n            break;" case number_literal : (expression_statement "uVar5 = uVar5 | 0x124;" (assignment_expression "uVar5 = uVar5 | 0x124" identifier = (binary_expression "uVar5 | 0x124" identifier | number_literal)) ;) (break_statement "break;" break ;)) (case_statement "case 0x1b:\n            uVar5 = uVar5 | 0xc00;\n            break;" case number_literal : (expression_statement "uVar5 = uVar5 | 0xc00;" (assignment_expression "uVar5 = uVar5 | 0xc00" identifier = (binary_expression "uVar5 | 0xc00" identifier | number_literal)) ;) (break_statement "break;" break ;)) (case_statement "case 0x1c:\n            uVar5 = uVar5 | 0x200;\n            break;" case number_literal : (expression_statement "uVar5 = uVar5 | 0x200;" (assignment_expression "uVar5 = uVar5 | 0x200" identifier = (binary_expression "uVar5 | 0x200" identifier | number_literal)) ;) (break_statement "break;" break ;)) (case_statement "case 0x1f:\n            uVar5 = uVar5 | 0x92;\n            break;" case number_literal : (expression_statement "uVar5 = uVar5 | 0x92;" (assignment_expression "uVar5 = uVar5 | 0x92" identifier = (binary_expression "uVar5 | 0x92" identifier | number_literal)) ;) (break_statement "break;" break ;)) (case_statement "case 0x20:\n            uVar5 = uVar5 | 0x49;" case number_literal : (expression_statement "uVar5 = uVar5 | 0x49;" (assignment_expression "uVar5 = uVar5 | 0x49" identifier = (binary_expression "uVar5 | 0x49" identifier | number_literal)) ;)) })) (expression_statement "pbVar7 = pbVar7 + 1;" (assignment_expression "pbVar7 = pbVar7 + 1" identifier = (binary_expression "pbVar7 + 1" identifier + number_literal)) ;) (expression_statement "bVar2 = *pbVar7;" (assignment_expression "bVar2 = *pbVar7" identifier = (pointer_expression "*pbVar7" * identifier)) ;) (expression_statement "uVar3 = (uint)bVar2;" (assignment_expression "uVar3 = (uint)bVar2" identifier = (cast_expression "(uint)bVar2" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (expression_statement "uVar1 = uVar3 - 0x58;" (assignment_expression "uVar1 = uVar3 - 0x58" identifier = (binary_expression "uVar3 - 0x58" identifier - number_literal)) ;) (expression_statement "bVar8 = (byte)uVar1;" (assignment_expression "bVar8 = (byte)uVar1" identifier = (cast_expression "(byte)uVar1" ( (type_descriptor "byte" type_identifier) ) identifier)) ;) })) (labeled_statement "_L30:\n        pmVar11->op = local_2d;" statement_identifier : (expression_statement "pmVar11->op = local_2d;" (assignment_expression "pmVar11->op = local_2d" (field_expression "pmVar11->op" identifier -> field_identifier) = identifier) ;)) (expression_statement "pmVar11->flag = cVar9;" (assignment_expression "pmVar11->flag = cVar9" (field_expression "pmVar11->flag" identifier -> field_identifier) = identifier) ;) (expression_statement "pmVar11->affected = local_2c;" (assignment_expression "pmVar11->affected = local_2c" (field_expression "pmVar11->affected" identifier -> field_identifier) = identifier) ;) (expression_statement "pmVar11->value = uVar5;" (assignment_expression "pmVar11->value = uVar5" (field_expression "pmVar11->value" identifier -> field_identifier) = identifier) ;) (expression_statement "local_2d = bVar2;" (assignment_expression "local_2d = bVar2" identifier = identifier) ;) (goto_statement "goto LAB_0001ed74;" goto statement_identifier ;) })) (expression_statement "uVar5 = 0;" (assignment_expression "uVar5 = 0" identifier = number_literal) ;) (do_statement "do {\n        uVar5 = (uVar3 - 0x30) + uVar5 * 8;\n        pbVar7 = pbVar7 + 1;\n        if (0xfff < uVar5) goto LAB_0001ecb0;\n        bVar2 = *pbVar7;\n        uVar3 = (uint)(char)bVar2;\n      } while ((byte)(bVar2 - 0x30) < 8);" do (compound_statement "{\n        uVar5 = (uVar3 - 0x30) + uVar5 * 8;\n        pbVar7 = pbVar7 + 1;\n        if (0xfff < uVar5) goto LAB_0001ecb0;\n        bVar2 = *pbVar7;\n        uVar3 = (uint)(char)bVar2;\n      }" { (expression_statement "uVar5 = (uVar3 - 0x30) + uVar5 * 8;" (assignment_expression "uVar5 = (uVar3 - 0x30) + uVar5 * 8" identifier = (binary_expression "(uVar3 - 0x30) + uVar5 * 8" (parenthesized_expression "(uVar3 - 0x30)" ( (binary_expression "uVar3 - 0x30" identifier - number_literal) )) + (binary_expression "uVar5 * 8" identifier * number_literal))) ;) (expression_statement "pbVar7 = pbVar7 + 1;" (assignment_expression "pbVar7 = pbVar7 + 1" identifier = (binary_expression "pbVar7 + 1" identifier + number_literal)) ;) (if_statement "if (0xfff < uVar5) goto LAB_0001ecb0;" if (parenthesized_expression "(0xfff < uVar5)" ( (binary_expression "0xfff < uVar5" number_literal < identifier) )) (goto_statement "goto LAB_0001ecb0;" goto statement_identifier ;)) (expression_statement "bVar2 = *pbVar7;" (assignment_expression "bVar2 = *pbVar7" identifier = (pointer_expression "*pbVar7" * identifier)) ;) (expression_statement "uVar3 = (uint)(char)bVar2;" (assignment_expression "uVar3 = (uint)(char)bVar2" identifier = (cast_expression "(uint)(char)bVar2" ( (type_descriptor "uint" type_identifier) ) (cast_expression "(char)bVar2" ( (type_descriptor "char" primitive_type) ) identifier))) ;) }) while (parenthesized_expression "((byte)(bVar2 - 0x30) < 8)" ( (binary_expression "(byte)(bVar2 - 0x30) < 8" (call_expression "(byte)(bVar2 - 0x30)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(bVar2 - 0x30)" ( (binary_expression "bVar2 - 0x30" identifier - number_literal) ))) < number_literal) )) ;) (if_statement "if ((local_2c != 0) || ((bVar2 != 0 && (bVar2 != 0x2c)))) goto LAB_0001ecb0;" if (parenthesized_expression "((local_2c != 0) || ((bVar2 != 0 && (bVar2 != 0x2c))))" ( (binary_expression "(local_2c != 0) || ((bVar2 != 0 && (bVar2 != 0x2c)))" (parenthesized_expression "(local_2c != 0)" ( (binary_expression "local_2c != 0" identifier != number_literal) )) || (parenthesized_expression "((bVar2 != 0 && (bVar2 != 0x2c)))" ( (parenthesized_expression "(bVar2 != 0 && (bVar2 != 0x2c))" ( (binary_expression "bVar2 != 0 && (bVar2 != 0x2c)" (binary_expression "bVar2 != 0" identifier != number_literal) && (parenthesized_expression "(bVar2 != 0x2c)" ( (binary_expression "bVar2 != 0x2c" identifier != number_literal) ))) )) ))) )) (goto_statement "goto LAB_0001ecb0;" goto statement_identifier ;)) (expression_statement "pmVar11->value = uVar5;" (assignment_expression "pmVar11->value = uVar5" (field_expression "pmVar11->value" identifier -> field_identifier) = identifier) ;) (expression_statement "uVar5 = 0xfff;" (assignment_expression "uVar5 = 0xfff" identifier = number_literal) ;) (expression_statement "pmVar11->flag = '\x01';" (assignment_expression "pmVar11->flag = '\x01'" (field_expression "pmVar11->flag" identifier -> field_identifier) = (char_literal "'\x01'" ' escape_sequence ')) ;) (expression_statement "pmVar11->op = local_2d;" (assignment_expression "pmVar11->op = local_2d" (field_expression "pmVar11->op" identifier -> field_identifier) = identifier) ;) (expression_statement "pmVar11->affected = 0xfff;" (assignment_expression "pmVar11->affected = 0xfff" (field_expression "pmVar11->affected" identifier -> field_identifier) = number_literal) ;) (expression_statement "local_2c = 0xfff;" (assignment_expression "local_2c = 0xfff" identifier = number_literal) ;) (expression_statement "local_2d = bVar2;" (assignment_expression "local_2d = bVar2" identifier = identifier) ;) }))) (expression_statement "pmVar11->mentioned = uVar5;" (assignment_expression "pmVar11->mentioned = uVar5" (field_expression "pmVar11->mentioned" identifier -> field_identifier) = identifier) ;) (expression_statement "pmVar11 = pmVar11 + 1;" (assignment_expression "pmVar11 = pmVar11 + 1" identifier = (binary_expression "pmVar11 + 1" identifier + number_literal)) ;) (expression_statement "mode_string = (char *)pbVar7;" (assignment_expression "mode_string = (char *)pbVar7" identifier = (cast_expression "(char *)pbVar7" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) ;) }) while (parenthesized_expression "(((local_2d & 0xef) == 0x2d) || (local_2d == 0x2b))" ( (binary_expression "((local_2d & 0xef) == 0x2d) || (local_2d == 0x2b)" (parenthesized_expression "((local_2d & 0xef) == 0x2d)" ( (binary_expression "(local_2d & 0xef) == 0x2d" (parenthesized_expression "(local_2d & 0xef)" ( (binary_expression "local_2d & 0xef" identifier & number_literal) )) == number_literal) )) || (parenthesized_expression "(local_2d == 0x2b)" ( (binary_expression "local_2d == 0x2b" identifier == number_literal) ))) )) ;) (if_statement "if (local_2d != 0x2c) {\n    if (local_2d == 0) {\n      pmVar4[local_28].flag = '\0';\n      return pmVar4;\n    }\nLAB_0001ecb0:\n    free(pmVar4);\n    return (mode_change *)0x0;\n  }" if (parenthesized_expression "(local_2d != 0x2c)" ( (binary_expression "local_2d != 0x2c" identifier != number_literal) )) (compound_statement "{\n    if (local_2d == 0) {\n      pmVar4[local_28].flag = '\0';\n      return pmVar4;\n    }\nLAB_0001ecb0:\n    free(pmVar4);\n    return (mode_change *)0x0;\n  }" { (if_statement "if (local_2d == 0) {\n      pmVar4[local_28].flag = '\0';\n      return pmVar4;\n    }" if (parenthesized_expression "(local_2d == 0)" ( (binary_expression "local_2d == 0" identifier == number_literal) )) (compound_statement "{\n      pmVar4[local_28].flag = '\0';\n      return pmVar4;\n    }" { (expression_statement "pmVar4[local_28].flag = '\0';" (assignment_expression "pmVar4[local_28].flag = '\0'" (field_expression "pmVar4[local_28].flag" (subscript_expression "pmVar4[local_28]" identifier [ identifier ]) . field_identifier) = (char_literal "'\0'" ' escape_sequence ')) ;) (return_statement "return pmVar4;" return identifier ;) })) (labeled_statement "LAB_0001ecb0:\n    free(pmVar4);" statement_identifier : (expression_statement "free(pmVar4);" (call_expression "free(pmVar4)" identifier (argument_list "(pmVar4)" ( identifier ))) ;)) (return_statement "return (mode_change *)0x0;" return (cast_expression "(mode_change *)0x0" ( (type_descriptor "mode_change *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) ;) })) (expression_statement "mode_string = (char *)(pbVar7 + 1);" (assignment_expression "mode_string = (char *)(pbVar7 + 1)" identifier = (cast_expression "(char *)(pbVar7 + 1)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pbVar7 + 1)" ( (binary_expression "pbVar7 + 1" identifier + number_literal) )))) ;) (goto_statement "goto LAB_0001ec81;" goto statement_identifier ;) })))
(translation_unit "undefined2 * FUN_0001ebf0(byte *param_1)\n\n{\n  byte bVar1;\n  byte bVar2;\n  uint uVar3;\n  undefined2 *puVar4;\n  uint uVar5;\n  int iVar6;\n  byte *pbVar7;\n  int unaff_EBP;\n  byte *pbVar8;\n  byte local_2d;\n  uint local_2c;\n  int local_28;\n  \n  FUN_0001f1c7();\n  bVar1 = *param_1;\n  uVar3 = (uint)(char)bVar1;\n  if ((byte)(bVar1 - 0x30) < 8) {\n    uVar5 = 0;\n    pbVar8 = param_1;\n    do {\n      uVar5 = (uVar3 - 0x30) + uVar5 * 8;\n      pbVar8 = pbVar8 + 1;\n      if (0xfff < uVar5) {\n        return (undefined2 *)0x0;\n      }\n      bVar1 = *pbVar8;\n      uVar3 = (uint)(char)bVar1;\n    } while ((byte)(bVar1 - 0x30) < 8);\n    if (bVar1 != 0) {\n      return (undefined2 *)0x0;\n    }\n    uVar3 = uVar5 & 0xc00 | 0x3ff;\n    if (4 < (int)pbVar8 - (int)param_1) {\n      uVar3 = 0xfff;\n    }\n    puVar4 = (undefined2 *)FUN_00023ea0(0x20);\n    *puVar4 = 0x13d;\n    *(undefined4 *)(puVar4 + 2) = 0xfff;\n    *(uint *)(puVar4 + 4) = uVar5;\n    *(uint *)(puVar4 + 6) = uVar3;\n    *(undefined1 *)((int)puVar4 + 0x11) = 0;\n    return puVar4;\n  }\n  uVar5 = 1;\n  pbVar8 = param_1;\n  if (bVar1 == 0) {\n    iVar6 = 0x10;\n  }\n  else {\n    do {\n      bVar2 = (byte)uVar3;\n      bVar1 = pbVar8[1];\n      uVar3 = (uint)bVar1;\n      uVar5 = uVar5 + ((bVar2 & 0xef) == 0x2d || bVar2 == 0x2b);\n      pbVar8 = pbVar8 + 1;\n    } while (bVar1 != 0);\n    iVar6 = uVar5 * 0x10;\n    if ((iVar6 < 0) || (uVar5 >> 0x1c != 0)) {\n                    \n      FUN_000241a0();\n    }\n  }\n  puVar4 = (undefined2 *)FUN_00023ea0(iVar6);\n  local_28 = 0;\nLAB_0001ec81:\n  local_2c = 0;\n  do {\n    local_2d = *param_1;\n    if (local_2d == 0x61) {\n      local_2c = 0xfff;\n    }\n    else {\n      if ((char)local_2d < 'b') break;\n      if (local_2d == 0x6f) {\n        local_2c = local_2c | 0x207;\n      }\n      else if (local_2d == 0x75) {\n        local_2c = local_2c | 0x9c0;\n      }\n      else {\n        if (local_2d != 0x67) goto LAB_0001ecb0;\n        local_2c = local_2c | 0x438;\n      }\n    }\n    param_1 = param_1 + 1;\n  } while( true );\n  if (((local_2d != 0x2d) && (local_2d != 0x3d)) && (local_2d != 0x2b)) goto LAB_0001ecb0;\n  pbVar8 = (byte *)(puVar4 + local_28 * 8);\n  do {\n    local_28 = local_28 + 1;\n    bVar1 = param_1[1];\n    iVar6 = (int)(char)bVar1;\n    pbVar7 = param_1 + 1;\n    if (bVar1 == 0x67) {\n      uVar3 = 0x38;\nLAB_0001ed55:\n      pbVar8[1] = 3;\n      *(uint *)(pbVar8 + 8) = uVar3;\n      *pbVar8 = local_2d;\n      *(uint *)(pbVar8 + 4) = local_2c;\n      pbVar7 = param_1 + 2;\n      local_2d = *pbVar7;\nLAB_0001ed74:\n      if (local_2c != 0) {\n        uVar3 = local_2c & uVar3;\n      }\n    }\n    else {\n      if ('g' < (char)bVar1) {\n        if (bVar1 == 0x6f) {\n          uVar3 = 7;\n        }\n        else {\n          uVar3 = 0x1c0;\n          if (bVar1 != 0x75) goto LAB_0001ee40;\n        }\n        goto LAB_0001ed55;\n      }\n      if (7 < (byte)(bVar1 - 0x30)) {\nLAB_0001ee40:\n        uVar3 = 0;\n        if ((byte)(iVar6 - 0x58U) < 0x21) {\n                    \n                    \n          puVar4 = (undefined2 *)\n                   (*(code *)(*(int *)("__lxstat64" + (iVar6 - 0x58U & 0xff) * 4 + unaff_EBP) +\n                             unaff_EBP + 0x1c40a))();\n          return puVar4;\n        }\n        *pbVar8 = local_2d;\n        pbVar8[1] = 1;\n        *(uint *)(pbVar8 + 4) = local_2c;\n        pbVar8[8] = 0;\n        pbVar8[9] = 0;\n        pbVar8[10] = 0;\n        pbVar8[0xb] = 0;\n        local_2d = bVar1;\n        goto LAB_0001ed74;\n      }\n      uVar3 = 0;\n      do {\n        uVar3 = iVar6 + -0x30 + uVar3 * 8;\n        pbVar7 = pbVar7 + 1;\n        if (0xfff < uVar3) goto LAB_0001ecb0;\n        bVar1 = *pbVar7;\n        iVar6 = (int)(char)bVar1;\n      } while ((byte)(bVar1 - 0x30) < 8);\n      if ((local_2c != 0) || ((bVar1 != 0 && (bVar1 != 0x2c)))) goto LAB_0001ecb0;\n      *(uint *)(pbVar8 + 8) = uVar3;\n      uVar3 = 0xfff;\n      pbVar8[1] = 1;\n      *pbVar8 = local_2d;\n      pbVar8[4] = 0xff;\n      pbVar8[5] = 0xf;\n      pbVar8[6] = 0;\n      pbVar8[7] = 0;\n      local_2c = 0xfff;\n      local_2d = bVar1;\n    }\n    *(uint *)(pbVar8 + 0xc) = uVar3;\n    pbVar8 = pbVar8 + 0x10;\n    param_1 = pbVar7;\n  } while (((local_2d & 0xef) == 0x2d) || (local_2d == 0x2b));\n  if (local_2d != 0x2c) {\n    if (local_2d == 0) {\n      *(undefined1 *)((int)puVar4 + local_28 * 0x10 + 1) = 0;\n      return puVar4;\n    }\nLAB_0001ecb0:\n    free(puVar4);\n    return (undefined2 *)0x0;\n  }\n  param_1 = pbVar7 + 1;\n  goto LAB_0001ec81;\n}\n\n" (function_definition "undefined2 * FUN_0001ebf0(byte *param_1)\n\n{\n  byte bVar1;\n  byte bVar2;\n  uint uVar3;\n  undefined2 *puVar4;\n  uint uVar5;\n  int iVar6;\n  byte *pbVar7;\n  int unaff_EBP;\n  byte *pbVar8;\n  byte local_2d;\n  uint local_2c;\n  int local_28;\n  \n  FUN_0001f1c7();\n  bVar1 = *param_1;\n  uVar3 = (uint)(char)bVar1;\n  if ((byte)(bVar1 - 0x30) < 8) {\n    uVar5 = 0;\n    pbVar8 = param_1;\n    do {\n      uVar5 = (uVar3 - 0x30) + uVar5 * 8;\n      pbVar8 = pbVar8 + 1;\n      if (0xfff < uVar5) {\n        return (undefined2 *)0x0;\n      }\n      bVar1 = *pbVar8;\n      uVar3 = (uint)(char)bVar1;\n    } while ((byte)(bVar1 - 0x30) < 8);\n    if (bVar1 != 0) {\n      return (undefined2 *)0x0;\n    }\n    uVar3 = uVar5 & 0xc00 | 0x3ff;\n    if (4 < (int)pbVar8 - (int)param_1) {\n      uVar3 = 0xfff;\n    }\n    puVar4 = (undefined2 *)FUN_00023ea0(0x20);\n    *puVar4 = 0x13d;\n    *(undefined4 *)(puVar4 + 2) = 0xfff;\n    *(uint *)(puVar4 + 4) = uVar5;\n    *(uint *)(puVar4 + 6) = uVar3;\n    *(undefined1 *)((int)puVar4 + 0x11) = 0;\n    return puVar4;\n  }\n  uVar5 = 1;\n  pbVar8 = param_1;\n  if (bVar1 == 0) {\n    iVar6 = 0x10;\n  }\n  else {\n    do {\n      bVar2 = (byte)uVar3;\n      bVar1 = pbVar8[1];\n      uVar3 = (uint)bVar1;\n      uVar5 = uVar5 + ((bVar2 & 0xef) == 0x2d || bVar2 == 0x2b);\n      pbVar8 = pbVar8 + 1;\n    } while (bVar1 != 0);\n    iVar6 = uVar5 * 0x10;\n    if ((iVar6 < 0) || (uVar5 >> 0x1c != 0)) {\n                    \n      FUN_000241a0();\n    }\n  }\n  puVar4 = (undefined2 *)FUN_00023ea0(iVar6);\n  local_28 = 0;\nLAB_0001ec81:\n  local_2c = 0;\n  do {\n    local_2d = *param_1;\n    if (local_2d == 0x61) {\n      local_2c = 0xfff;\n    }\n    else {\n      if ((char)local_2d < 'b') break;\n      if (local_2d == 0x6f) {\n        local_2c = local_2c | 0x207;\n      }\n      else if (local_2d == 0x75) {\n        local_2c = local_2c | 0x9c0;\n      }\n      else {\n        if (local_2d != 0x67) goto LAB_0001ecb0;\n        local_2c = local_2c | 0x438;\n      }\n    }\n    param_1 = param_1 + 1;\n  } while( true );\n  if (((local_2d != 0x2d) && (local_2d != 0x3d)) && (local_2d != 0x2b)) goto LAB_0001ecb0;\n  pbVar8 = (byte *)(puVar4 + local_28 * 8);\n  do {\n    local_28 = local_28 + 1;\n    bVar1 = param_1[1];\n    iVar6 = (int)(char)bVar1;\n    pbVar7 = param_1 + 1;\n    if (bVar1 == 0x67) {\n      uVar3 = 0x38;\nLAB_0001ed55:\n      pbVar8[1] = 3;\n      *(uint *)(pbVar8 + 8) = uVar3;\n      *pbVar8 = local_2d;\n      *(uint *)(pbVar8 + 4) = local_2c;\n      pbVar7 = param_1 + 2;\n      local_2d = *pbVar7;\nLAB_0001ed74:\n      if (local_2c != 0) {\n        uVar3 = local_2c & uVar3;\n      }\n    }\n    else {\n      if ('g' < (char)bVar1) {\n        if (bVar1 == 0x6f) {\n          uVar3 = 7;\n        }\n        else {\n          uVar3 = 0x1c0;\n          if (bVar1 != 0x75) goto LAB_0001ee40;\n        }\n        goto LAB_0001ed55;\n      }\n      if (7 < (byte)(bVar1 - 0x30)) {\nLAB_0001ee40:\n        uVar3 = 0;\n        if ((byte)(iVar6 - 0x58U) < 0x21) {\n                    \n                    \n          puVar4 = (undefined2 *)\n                   (*(code *)(*(int *)("__lxstat64" + (iVar6 - 0x58U & 0xff) * 4 + unaff_EBP) +\n                             unaff_EBP + 0x1c40a))();\n          return puVar4;\n        }\n        *pbVar8 = local_2d;\n        pbVar8[1] = 1;\n        *(uint *)(pbVar8 + 4) = local_2c;\n        pbVar8[8] = 0;\n        pbVar8[9] = 0;\n        pbVar8[10] = 0;\n        pbVar8[0xb] = 0;\n        local_2d = bVar1;\n        goto LAB_0001ed74;\n      }\n      uVar3 = 0;\n      do {\n        uVar3 = iVar6 + -0x30 + uVar3 * 8;\n        pbVar7 = pbVar7 + 1;\n        if (0xfff < uVar3) goto LAB_0001ecb0;\n        bVar1 = *pbVar7;\n        iVar6 = (int)(char)bVar1;\n      } while ((byte)(bVar1 - 0x30) < 8);\n      if ((local_2c != 0) || ((bVar1 != 0 && (bVar1 != 0x2c)))) goto LAB_0001ecb0;\n      *(uint *)(pbVar8 + 8) = uVar3;\n      uVar3 = 0xfff;\n      pbVar8[1] = 1;\n      *pbVar8 = local_2d;\n      pbVar8[4] = 0xff;\n      pbVar8[5] = 0xf;\n      pbVar8[6] = 0;\n      pbVar8[7] = 0;\n      local_2c = 0xfff;\n      local_2d = bVar1;\n    }\n    *(uint *)(pbVar8 + 0xc) = uVar3;\n    pbVar8 = pbVar8 + 0x10;\n    param_1 = pbVar7;\n  } while (((local_2d & 0xef) == 0x2d) || (local_2d == 0x2b));\n  if (local_2d != 0x2c) {\n    if (local_2d == 0) {\n      *(undefined1 *)((int)puVar4 + local_28 * 0x10 + 1) = 0;\n      return puVar4;\n    }\nLAB_0001ecb0:\n    free(puVar4);\n    return (undefined2 *)0x0;\n  }\n  param_1 = pbVar7 + 1;\n  goto LAB_0001ec81;\n}" type_identifier (pointer_declarator "* FUN_0001ebf0(byte *param_1)" * (function_declarator "FUN_0001ebf0(byte *param_1)" identifier (parameter_list "(byte *param_1)" ( (parameter_declaration "byte *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) )))) (compound_statement "{\n  byte bVar1;\n  byte bVar2;\n  uint uVar3;\n  undefined2 *puVar4;\n  uint uVar5;\n  int iVar6;\n  byte *pbVar7;\n  int unaff_EBP;\n  byte *pbVar8;\n  byte local_2d;\n  uint local_2c;\n  int local_28;\n  \n  FUN_0001f1c7();\n  bVar1 = *param_1;\n  uVar3 = (uint)(char)bVar1;\n  if ((byte)(bVar1 - 0x30) < 8) {\n    uVar5 = 0;\n    pbVar8 = param_1;\n    do {\n      uVar5 = (uVar3 - 0x30) + uVar5 * 8;\n      pbVar8 = pbVar8 + 1;\n      if (0xfff < uVar5) {\n        return (undefined2 *)0x0;\n      }\n      bVar1 = *pbVar8;\n      uVar3 = (uint)(char)bVar1;\n    } while ((byte)(bVar1 - 0x30) < 8);\n    if (bVar1 != 0) {\n      return (undefined2 *)0x0;\n    }\n    uVar3 = uVar5 & 0xc00 | 0x3ff;\n    if (4 < (int)pbVar8 - (int)param_1) {\n      uVar3 = 0xfff;\n    }\n    puVar4 = (undefined2 *)FUN_00023ea0(0x20);\n    *puVar4 = 0x13d;\n    *(undefined4 *)(puVar4 + 2) = 0xfff;\n    *(uint *)(puVar4 + 4) = uVar5;\n    *(uint *)(puVar4 + 6) = uVar3;\n    *(undefined1 *)((int)puVar4 + 0x11) = 0;\n    return puVar4;\n  }\n  uVar5 = 1;\n  pbVar8 = param_1;\n  if (bVar1 == 0) {\n    iVar6 = 0x10;\n  }\n  else {\n    do {\n      bVar2 = (byte)uVar3;\n      bVar1 = pbVar8[1];\n      uVar3 = (uint)bVar1;\n      uVar5 = uVar5 + ((bVar2 & 0xef) == 0x2d || bVar2 == 0x2b);\n      pbVar8 = pbVar8 + 1;\n    } while (bVar1 != 0);\n    iVar6 = uVar5 * 0x10;\n    if ((iVar6 < 0) || (uVar5 >> 0x1c != 0)) {\n                    \n      FUN_000241a0();\n    }\n  }\n  puVar4 = (undefined2 *)FUN_00023ea0(iVar6);\n  local_28 = 0;\nLAB_0001ec81:\n  local_2c = 0;\n  do {\n    local_2d = *param_1;\n    if (local_2d == 0x61) {\n      local_2c = 0xfff;\n    }\n    else {\n      if ((char)local_2d < 'b') break;\n      if (local_2d == 0x6f) {\n        local_2c = local_2c | 0x207;\n      }\n      else if (local_2d == 0x75) {\n        local_2c = local_2c | 0x9c0;\n      }\n      else {\n        if (local_2d != 0x67) goto LAB_0001ecb0;\n        local_2c = local_2c | 0x438;\n      }\n    }\n    param_1 = param_1 + 1;\n  } while( true );\n  if (((local_2d != 0x2d) && (local_2d != 0x3d)) && (local_2d != 0x2b)) goto LAB_0001ecb0;\n  pbVar8 = (byte *)(puVar4 + local_28 * 8);\n  do {\n    local_28 = local_28 + 1;\n    bVar1 = param_1[1];\n    iVar6 = (int)(char)bVar1;\n    pbVar7 = param_1 + 1;\n    if (bVar1 == 0x67) {\n      uVar3 = 0x38;\nLAB_0001ed55:\n      pbVar8[1] = 3;\n      *(uint *)(pbVar8 + 8) = uVar3;\n      *pbVar8 = local_2d;\n      *(uint *)(pbVar8 + 4) = local_2c;\n      pbVar7 = param_1 + 2;\n      local_2d = *pbVar7;\nLAB_0001ed74:\n      if (local_2c != 0) {\n        uVar3 = local_2c & uVar3;\n      }\n    }\n    else {\n      if ('g' < (char)bVar1) {\n        if (bVar1 == 0x6f) {\n          uVar3 = 7;\n        }\n        else {\n          uVar3 = 0x1c0;\n          if (bVar1 != 0x75) goto LAB_0001ee40;\n        }\n        goto LAB_0001ed55;\n      }\n      if (7 < (byte)(bVar1 - 0x30)) {\nLAB_0001ee40:\n        uVar3 = 0;\n        if ((byte)(iVar6 - 0x58U) < 0x21) {\n                    \n                    \n          puVar4 = (undefined2 *)\n                   (*(code *)(*(int *)("__lxstat64" + (iVar6 - 0x58U & 0xff) * 4 + unaff_EBP) +\n                             unaff_EBP + 0x1c40a))();\n          return puVar4;\n        }\n        *pbVar8 = local_2d;\n        pbVar8[1] = 1;\n        *(uint *)(pbVar8 + 4) = local_2c;\n        pbVar8[8] = 0;\n        pbVar8[9] = 0;\n        pbVar8[10] = 0;\n        pbVar8[0xb] = 0;\n        local_2d = bVar1;\n        goto LAB_0001ed74;\n      }\n      uVar3 = 0;\n      do {\n        uVar3 = iVar6 + -0x30 + uVar3 * 8;\n        pbVar7 = pbVar7 + 1;\n        if (0xfff < uVar3) goto LAB_0001ecb0;\n        bVar1 = *pbVar7;\n        iVar6 = (int)(char)bVar1;\n      } while ((byte)(bVar1 - 0x30) < 8);\n      if ((local_2c != 0) || ((bVar1 != 0 && (bVar1 != 0x2c)))) goto LAB_0001ecb0;\n      *(uint *)(pbVar8 + 8) = uVar3;\n      uVar3 = 0xfff;\n      pbVar8[1] = 1;\n      *pbVar8 = local_2d;\n      pbVar8[4] = 0xff;\n      pbVar8[5] = 0xf;\n      pbVar8[6] = 0;\n      pbVar8[7] = 0;\n      local_2c = 0xfff;\n      local_2d = bVar1;\n    }\n    *(uint *)(pbVar8 + 0xc) = uVar3;\n    pbVar8 = pbVar8 + 0x10;\n    param_1 = pbVar7;\n  } while (((local_2d & 0xef) == 0x2d) || (local_2d == 0x2b));\n  if (local_2d != 0x2c) {\n    if (local_2d == 0) {\n      *(undefined1 *)((int)puVar4 + local_28 * 0x10 + 1) = 0;\n      return puVar4;\n    }\nLAB_0001ecb0:\n    free(puVar4);\n    return (undefined2 *)0x0;\n  }\n  param_1 = pbVar7 + 1;\n  goto LAB_0001ec81;\n}" { (declaration "byte bVar1;" type_identifier identifier ;) (declaration "byte bVar2;" type_identifier identifier ;) (declaration "uint uVar3;" type_identifier identifier ;) (declaration "undefined2 *puVar4;" type_identifier (pointer_declarator "*puVar4" * identifier) ;) (declaration "uint uVar5;" type_identifier identifier ;) (declaration "int iVar6;" primitive_type identifier ;) (declaration "byte *pbVar7;" type_identifier (pointer_declarator "*pbVar7" * identifier) ;) (declaration "int unaff_EBP;" primitive_type identifier ;) (declaration "byte *pbVar8;" type_identifier (pointer_declarator "*pbVar8" * identifier) ;) (declaration "byte local_2d;" type_identifier identifier ;) (declaration "uint local_2c;" type_identifier identifier ;) (declaration "int local_28;" primitive_type identifier ;) (expression_statement "FUN_0001f1c7();" (call_expression "FUN_0001f1c7()" identifier (argument_list "()" ( ))) ;) (expression_statement "bVar1 = *param_1;" (assignment_expression "bVar1 = *param_1" identifier = (pointer_expression "*param_1" * identifier)) ;) (expression_statement "uVar3 = (uint)(char)bVar1;" (assignment_expression "uVar3 = (uint)(char)bVar1" identifier = (cast_expression "(uint)(char)bVar1" ( (type_descriptor "uint" type_identifier) ) (cast_expression "(char)bVar1" ( (type_descriptor "char" primitive_type) ) identifier))) ;) (if_statement "if ((byte)(bVar1 - 0x30) < 8) {\n    uVar5 = 0;\n    pbVar8 = param_1;\n    do {\n      uVar5 = (uVar3 - 0x30) + uVar5 * 8;\n      pbVar8 = pbVar8 + 1;\n      if (0xfff < uVar5) {\n        return (undefined2 *)0x0;\n      }\n      bVar1 = *pbVar8;\n      uVar3 = (uint)(char)bVar1;\n    } while ((byte)(bVar1 - 0x30) < 8);\n    if (bVar1 != 0) {\n      return (undefined2 *)0x0;\n    }\n    uVar3 = uVar5 & 0xc00 | 0x3ff;\n    if (4 < (int)pbVar8 - (int)param_1) {\n      uVar3 = 0xfff;\n    }\n    puVar4 = (undefined2 *)FUN_00023ea0(0x20);\n    *puVar4 = 0x13d;\n    *(undefined4 *)(puVar4 + 2) = 0xfff;\n    *(uint *)(puVar4 + 4) = uVar5;\n    *(uint *)(puVar4 + 6) = uVar3;\n    *(undefined1 *)((int)puVar4 + 0x11) = 0;\n    return puVar4;\n  }" if (parenthesized_expression "((byte)(bVar1 - 0x30) < 8)" ( (binary_expression "(byte)(bVar1 - 0x30) < 8" (call_expression "(byte)(bVar1 - 0x30)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(bVar1 - 0x30)" ( (binary_expression "bVar1 - 0x30" identifier - number_literal) ))) < number_literal) )) (compound_statement "{\n    uVar5 = 0;\n    pbVar8 = param_1;\n    do {\n      uVar5 = (uVar3 - 0x30) + uVar5 * 8;\n      pbVar8 = pbVar8 + 1;\n      if (0xfff < uVar5) {\n        return (undefined2 *)0x0;\n      }\n      bVar1 = *pbVar8;\n      uVar3 = (uint)(char)bVar1;\n    } while ((byte)(bVar1 - 0x30) < 8);\n    if (bVar1 != 0) {\n      return (undefined2 *)0x0;\n    }\n    uVar3 = uVar5 & 0xc00 | 0x3ff;\n    if (4 < (int)pbVar8 - (int)param_1) {\n      uVar3 = 0xfff;\n    }\n    puVar4 = (undefined2 *)FUN_00023ea0(0x20);\n    *puVar4 = 0x13d;\n    *(undefined4 *)(puVar4 + 2) = 0xfff;\n    *(uint *)(puVar4 + 4) = uVar5;\n    *(uint *)(puVar4 + 6) = uVar3;\n    *(undefined1 *)((int)puVar4 + 0x11) = 0;\n    return puVar4;\n  }" { (expression_statement "uVar5 = 0;" (assignment_expression "uVar5 = 0" identifier = number_literal) ;) (expression_statement "pbVar8 = param_1;" (assignment_expression "pbVar8 = param_1" identifier = identifier) ;) (do_statement "do {\n      uVar5 = (uVar3 - 0x30) + uVar5 * 8;\n      pbVar8 = pbVar8 + 1;\n      if (0xfff < uVar5) {\n        return (undefined2 *)0x0;\n      }\n      bVar1 = *pbVar8;\n      uVar3 = (uint)(char)bVar1;\n    } while ((byte)(bVar1 - 0x30) < 8);" do (compound_statement "{\n      uVar5 = (uVar3 - 0x30) + uVar5 * 8;\n      pbVar8 = pbVar8 + 1;\n      if (0xfff < uVar5) {\n        return (undefined2 *)0x0;\n      }\n      bVar1 = *pbVar8;\n      uVar3 = (uint)(char)bVar1;\n    }" { (expression_statement "uVar5 = (uVar3 - 0x30) + uVar5 * 8;" (assignment_expression "uVar5 = (uVar3 - 0x30) + uVar5 * 8" identifier = (binary_expression "(uVar3 - 0x30) + uVar5 * 8" (parenthesized_expression "(uVar3 - 0x30)" ( (binary_expression "uVar3 - 0x30" identifier - number_literal) )) + (binary_expression "uVar5 * 8" identifier * number_literal))) ;) (expression_statement "pbVar8 = pbVar8 + 1;" (assignment_expression "pbVar8 = pbVar8 + 1" identifier = (binary_expression "pbVar8 + 1" identifier + number_literal)) ;) (if_statement "if (0xfff < uVar5) {\n        return (undefined2 *)0x0;\n      }" if (parenthesized_expression "(0xfff < uVar5)" ( (binary_expression "0xfff < uVar5" number_literal < identifier) )) (compound_statement "{\n        return (undefined2 *)0x0;\n      }" { (return_statement "return (undefined2 *)0x0;" return (cast_expression "(undefined2 *)0x0" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) ;) })) (expression_statement "bVar1 = *pbVar8;" (assignment_expression "bVar1 = *pbVar8" identifier = (pointer_expression "*pbVar8" * identifier)) ;) (expression_statement "uVar3 = (uint)(char)bVar1;" (assignment_expression "uVar3 = (uint)(char)bVar1" identifier = (cast_expression "(uint)(char)bVar1" ( (type_descriptor "uint" type_identifier) ) (cast_expression "(char)bVar1" ( (type_descriptor "char" primitive_type) ) identifier))) ;) }) while (parenthesized_expression "((byte)(bVar1 - 0x30) < 8)" ( (binary_expression "(byte)(bVar1 - 0x30) < 8" (call_expression "(byte)(bVar1 - 0x30)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(bVar1 - 0x30)" ( (binary_expression "bVar1 - 0x30" identifier - number_literal) ))) < number_literal) )) ;) (if_statement "if (bVar1 != 0) {\n      return (undefined2 *)0x0;\n    }" if (parenthesized_expression "(bVar1 != 0)" ( (binary_expression "bVar1 != 0" identifier != number_literal) )) (compound_statement "{\n      return (undefined2 *)0x0;\n    }" { (return_statement "return (undefined2 *)0x0;" return (cast_expression "(undefined2 *)0x0" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) ;) })) (expression_statement "uVar3 = uVar5 & 0xc00 | 0x3ff;" (assignment_expression "uVar3 = uVar5 & 0xc00 | 0x3ff" identifier = (binary_expression "uVar5 & 0xc00 | 0x3ff" (binary_expression "uVar5 & 0xc00" identifier & number_literal) | number_literal)) ;) (if_statement "if (4 < (int)pbVar8 - (int)param_1) {\n      uVar3 = 0xfff;\n    }" if (parenthesized_expression "(4 < (int)pbVar8 - (int)param_1)" ( (binary_expression "4 < (int)pbVar8 - (int)param_1" number_literal < (binary_expression "(int)pbVar8 - (int)param_1" (cast_expression "(int)pbVar8" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)param_1" ( (type_descriptor "int" primitive_type) ) identifier))) )) (compound_statement "{\n      uVar3 = 0xfff;\n    }" { (expression_statement "uVar3 = 0xfff;" (assignment_expression "uVar3 = 0xfff" identifier = number_literal) ;) })) (expression_statement "puVar4 = (undefined2 *)FUN_00023ea0(0x20);" (assignment_expression "puVar4 = (undefined2 *)FUN_00023ea0(0x20)" identifier = (cast_expression "(undefined2 *)FUN_00023ea0(0x20)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00023ea0(0x20)" identifier (argument_list "(0x20)" ( number_literal ))))) ;) (expression_statement "*puVar4 = 0x13d;" (assignment_expression "*puVar4 = 0x13d" (pointer_expression "*puVar4" * identifier) = number_literal) ;) (expression_statement "*(undefined4 *)(puVar4 + 2) = 0xfff;" (assignment_expression "*(undefined4 *)(puVar4 + 2) = 0xfff" (pointer_expression "*(undefined4 *)(puVar4 + 2)" * (cast_expression "(undefined4 *)(puVar4 + 2)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar4 + 2)" ( (binary_expression "puVar4 + 2" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(uint *)(puVar4 + 4) = uVar5;" (assignment_expression "*(uint *)(puVar4 + 4) = uVar5" (pointer_expression "*(uint *)(puVar4 + 4)" * (cast_expression "(uint *)(puVar4 + 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar4 + 4)" ( (binary_expression "puVar4 + 4" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(uint *)(puVar4 + 6) = uVar3;" (assignment_expression "*(uint *)(puVar4 + 6) = uVar3" (pointer_expression "*(uint *)(puVar4 + 6)" * (cast_expression "(uint *)(puVar4 + 6)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar4 + 6)" ( (binary_expression "puVar4 + 6" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined1 *)((int)puVar4 + 0x11) = 0;" (assignment_expression "*(undefined1 *)((int)puVar4 + 0x11) = 0" (pointer_expression "*(undefined1 *)((int)puVar4 + 0x11)" * (cast_expression "(undefined1 *)((int)puVar4 + 0x11)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar4 + 0x11)" ( (binary_expression "(int)puVar4 + 0x11" (cast_expression "(int)puVar4" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (return_statement "return puVar4;" return identifier ;) })) (expression_statement "uVar5 = 1;" (assignment_expression "uVar5 = 1" identifier = number_literal) ;) (expression_statement "pbVar8 = param_1;" (assignment_expression "pbVar8 = param_1" identifier = identifier) ;) (if_statement "if (bVar1 == 0) {\n    iVar6 = 0x10;\n  }\n  else {\n    do {\n      bVar2 = (byte)uVar3;\n      bVar1 = pbVar8[1];\n      uVar3 = (uint)bVar1;\n      uVar5 = uVar5 + ((bVar2 & 0xef) == 0x2d || bVar2 == 0x2b);\n      pbVar8 = pbVar8 + 1;\n    } while (bVar1 != 0);\n    iVar6 = uVar5 * 0x10;\n    if ((iVar6 < 0) || (uVar5 >> 0x1c != 0)) {\n                    \n      FUN_000241a0();\n    }\n  }" if (parenthesized_expression "(bVar1 == 0)" ( (binary_expression "bVar1 == 0" identifier == number_literal) )) (compound_statement "{\n    iVar6 = 0x10;\n  }" { (expression_statement "iVar6 = 0x10;" (assignment_expression "iVar6 = 0x10" identifier = number_literal) ;) }) (else_clause "else {\n    do {\n      bVar2 = (byte)uVar3;\n      bVar1 = pbVar8[1];\n      uVar3 = (uint)bVar1;\n      uVar5 = uVar5 + ((bVar2 & 0xef) == 0x2d || bVar2 == 0x2b);\n      pbVar8 = pbVar8 + 1;\n    } while (bVar1 != 0);\n    iVar6 = uVar5 * 0x10;\n    if ((iVar6 < 0) || (uVar5 >> 0x1c != 0)) {\n                    \n      FUN_000241a0();\n    }\n  }" else (compound_statement "{\n    do {\n      bVar2 = (byte)uVar3;\n      bVar1 = pbVar8[1];\n      uVar3 = (uint)bVar1;\n      uVar5 = uVar5 + ((bVar2 & 0xef) == 0x2d || bVar2 == 0x2b);\n      pbVar8 = pbVar8 + 1;\n    } while (bVar1 != 0);\n    iVar6 = uVar5 * 0x10;\n    if ((iVar6 < 0) || (uVar5 >> 0x1c != 0)) {\n                    \n      FUN_000241a0();\n    }\n  }" { (do_statement "do {\n      bVar2 = (byte)uVar3;\n      bVar1 = pbVar8[1];\n      uVar3 = (uint)bVar1;\n      uVar5 = uVar5 + ((bVar2 & 0xef) == 0x2d || bVar2 == 0x2b);\n      pbVar8 = pbVar8 + 1;\n    } while (bVar1 != 0);" do (compound_statement "{\n      bVar2 = (byte)uVar3;\n      bVar1 = pbVar8[1];\n      uVar3 = (uint)bVar1;\n      uVar5 = uVar5 + ((bVar2 & 0xef) == 0x2d || bVar2 == 0x2b);\n      pbVar8 = pbVar8 + 1;\n    }" { (expression_statement "bVar2 = (byte)uVar3;" (assignment_expression "bVar2 = (byte)uVar3" identifier = (cast_expression "(byte)uVar3" ( (type_descriptor "byte" type_identifier) ) identifier)) ;) (expression_statement "bVar1 = pbVar8[1];" (assignment_expression "bVar1 = pbVar8[1]" identifier = (subscript_expression "pbVar8[1]" identifier [ number_literal ])) ;) (expression_statement "uVar3 = (uint)bVar1;" (assignment_expression "uVar3 = (uint)bVar1" identifier = (cast_expression "(uint)bVar1" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (expression_statement "uVar5 = uVar5 + ((bVar2 & 0xef) == 0x2d || bVar2 == 0x2b);" (assignment_expression "uVar5 = uVar5 + ((bVar2 & 0xef) == 0x2d || bVar2 == 0x2b)" identifier = (binary_expression "uVar5 + ((bVar2 & 0xef) == 0x2d || bVar2 == 0x2b)" identifier + (parenthesized_expression "((bVar2 & 0xef) == 0x2d || bVar2 == 0x2b)" ( (binary_expression "(bVar2 & 0xef) == 0x2d || bVar2 == 0x2b" (binary_expression "(bVar2 & 0xef) == 0x2d" (parenthesized_expression "(bVar2 & 0xef)" ( (binary_expression "bVar2 & 0xef" identifier & number_literal) )) == number_literal) || (binary_expression "bVar2 == 0x2b" identifier == number_literal)) )))) ;) (expression_statement "pbVar8 = pbVar8 + 1;" (assignment_expression "pbVar8 = pbVar8 + 1" identifier = (binary_expression "pbVar8 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(bVar1 != 0)" ( (binary_expression "bVar1 != 0" identifier != number_literal) )) ;) (expression_statement "iVar6 = uVar5 * 0x10;" (assignment_expression "iVar6 = uVar5 * 0x10" identifier = (binary_expression "uVar5 * 0x10" identifier * number_literal)) ;) (if_statement "if ((iVar6 < 0) || (uVar5 >> 0x1c != 0)) {\n                    \n      FUN_000241a0();\n    }" if (parenthesized_expression "((iVar6 < 0) || (uVar5 >> 0x1c != 0))" ( (binary_expression "(iVar6 < 0) || (uVar5 >> 0x1c != 0)" (parenthesized_expression "(iVar6 < 0)" ( (binary_expression "iVar6 < 0" identifier < number_literal) )) || (parenthesized_expression "(uVar5 >> 0x1c != 0)" ( (binary_expression "uVar5 >> 0x1c != 0" (binary_expression "uVar5 >> 0x1c" identifier >> number_literal) != number_literal) ))) )) (compound_statement "{\n                    \n      FUN_000241a0();\n    }" { (expression_statement "FUN_000241a0();" (call_expression "FUN_000241a0()" identifier (argument_list "()" ( ))) ;) })) }))) (expression_statement "puVar4 = (undefined2 *)FUN_00023ea0(iVar6);" (assignment_expression "puVar4 = (undefined2 *)FUN_00023ea0(iVar6)" identifier = (cast_expression "(undefined2 *)FUN_00023ea0(iVar6)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00023ea0(iVar6)" identifier (argument_list "(iVar6)" ( identifier ))))) ;) (expression_statement "local_28 = 0;" (assignment_expression "local_28 = 0" identifier = number_literal) ;) (labeled_statement "LAB_0001ec81:\n  local_2c = 0;" statement_identifier : (expression_statement "local_2c = 0;" (assignment_expression "local_2c = 0" identifier = number_literal) ;)) (do_statement "do {\n    local_2d = *param_1;\n    if (local_2d == 0x61) {\n      local_2c = 0xfff;\n    }\n    else {\n      if ((char)local_2d < 'b') break;\n      if (local_2d == 0x6f) {\n        local_2c = local_2c | 0x207;\n      }\n      else if (local_2d == 0x75) {\n        local_2c = local_2c | 0x9c0;\n      }\n      else {\n        if (local_2d != 0x67) goto LAB_0001ecb0;\n        local_2c = local_2c | 0x438;\n      }\n    }\n    param_1 = param_1 + 1;\n  } while( true );" do (compound_statement "{\n    local_2d = *param_1;\n    if (local_2d == 0x61) {\n      local_2c = 0xfff;\n    }\n    else {\n      if ((char)local_2d < 'b') break;\n      if (local_2d == 0x6f) {\n        local_2c = local_2c | 0x207;\n      }\n      else if (local_2d == 0x75) {\n        local_2c = local_2c | 0x9c0;\n      }\n      else {\n        if (local_2d != 0x67) goto LAB_0001ecb0;\n        local_2c = local_2c | 0x438;\n      }\n    }\n    param_1 = param_1 + 1;\n  }" { (expression_statement "local_2d = *param_1;" (assignment_expression "local_2d = *param_1" identifier = (pointer_expression "*param_1" * identifier)) ;) (if_statement "if (local_2d == 0x61) {\n      local_2c = 0xfff;\n    }\n    else {\n      if ((char)local_2d < 'b') break;\n      if (local_2d == 0x6f) {\n        local_2c = local_2c | 0x207;\n      }\n      else if (local_2d == 0x75) {\n        local_2c = local_2c | 0x9c0;\n      }\n      else {\n        if (local_2d != 0x67) goto LAB_0001ecb0;\n        local_2c = local_2c | 0x438;\n      }\n    }" if (parenthesized_expression "(local_2d == 0x61)" ( (binary_expression "local_2d == 0x61" identifier == number_literal) )) (compound_statement "{\n      local_2c = 0xfff;\n    }" { (expression_statement "local_2c = 0xfff;" (assignment_expression "local_2c = 0xfff" identifier = number_literal) ;) }) (else_clause "else {\n      if ((char)local_2d < 'b') break;\n      if (local_2d == 0x6f) {\n        local_2c = local_2c | 0x207;\n      }\n      else if (local_2d == 0x75) {\n        local_2c = local_2c | 0x9c0;\n      }\n      else {\n        if (local_2d != 0x67) goto LAB_0001ecb0;\n        local_2c = local_2c | 0x438;\n      }\n    }" else (compound_statement "{\n      if ((char)local_2d < 'b') break;\n      if (local_2d == 0x6f) {\n        local_2c = local_2c | 0x207;\n      }\n      else if (local_2d == 0x75) {\n        local_2c = local_2c | 0x9c0;\n      }\n      else {\n        if (local_2d != 0x67) goto LAB_0001ecb0;\n        local_2c = local_2c | 0x438;\n      }\n    }" { (if_statement "if ((char)local_2d < 'b') break;" if (parenthesized_expression "((char)local_2d < 'b')" ( (binary_expression "(char)local_2d < 'b'" (cast_expression "(char)local_2d" ( (type_descriptor "char" primitive_type) ) identifier) < (char_literal "'b'" ' character ')) )) (break_statement "break;" break ;)) (if_statement "if (local_2d == 0x6f) {\n        local_2c = local_2c | 0x207;\n      }\n      else if (local_2d == 0x75) {\n        local_2c = local_2c | 0x9c0;\n      }\n      else {\n        if (local_2d != 0x67) goto LAB_0001ecb0;\n        local_2c = local_2c | 0x438;\n      }" if (parenthesized_expression "(local_2d == 0x6f)" ( (binary_expression "local_2d == 0x6f" identifier == number_literal) )) (compound_statement "{\n        local_2c = local_2c | 0x207;\n      }" { (expression_statement "local_2c = local_2c | 0x207;" (assignment_expression "local_2c = local_2c | 0x207" identifier = (binary_expression "local_2c | 0x207" identifier | number_literal)) ;) }) (else_clause "else if (local_2d == 0x75) {\n        local_2c = local_2c | 0x9c0;\n      }\n      else {\n        if (local_2d != 0x67) goto LAB_0001ecb0;\n        local_2c = local_2c | 0x438;\n      }" else (if_statement "if (local_2d == 0x75) {\n        local_2c = local_2c | 0x9c0;\n      }\n      else {\n        if (local_2d != 0x67) goto LAB_0001ecb0;\n        local_2c = local_2c | 0x438;\n      }" if (parenthesized_expression "(local_2d == 0x75)" ( (binary_expression "local_2d == 0x75" identifier == number_literal) )) (compound_statement "{\n        local_2c = local_2c | 0x9c0;\n      }" { (expression_statement "local_2c = local_2c | 0x9c0;" (assignment_expression "local_2c = local_2c | 0x9c0" identifier = (binary_expression "local_2c | 0x9c0" identifier | number_literal)) ;) }) (else_clause "else {\n        if (local_2d != 0x67) goto LAB_0001ecb0;\n        local_2c = local_2c | 0x438;\n      }" else (compound_statement "{\n        if (local_2d != 0x67) goto LAB_0001ecb0;\n        local_2c = local_2c | 0x438;\n      }" { (if_statement "if (local_2d != 0x67) goto LAB_0001ecb0;" if (parenthesized_expression "(local_2d != 0x67)" ( (binary_expression "local_2d != 0x67" identifier != number_literal) )) (goto_statement "goto LAB_0001ecb0;" goto statement_identifier ;)) (expression_statement "local_2c = local_2c | 0x438;" (assignment_expression "local_2c = local_2c | 0x438" identifier = (binary_expression "local_2c | 0x438" identifier | number_literal)) ;) }))))) }))) (expression_statement "param_1 = param_1 + 1;" (assignment_expression "param_1 = param_1 + 1" identifier = (binary_expression "param_1 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "( true )" ( true )) ;) (if_statement "if (((local_2d != 0x2d) && (local_2d != 0x3d)) && (local_2d != 0x2b)) goto LAB_0001ecb0;" if (parenthesized_expression "(((local_2d != 0x2d) && (local_2d != 0x3d)) && (local_2d != 0x2b))" ( (binary_expression "((local_2d != 0x2d) && (local_2d != 0x3d)) && (local_2d != 0x2b)" (parenthesized_expression "((local_2d != 0x2d) && (local_2d != 0x3d))" ( (binary_expression "(local_2d != 0x2d) && (local_2d != 0x3d)" (parenthesized_expression "(local_2d != 0x2d)" ( (binary_expression "local_2d != 0x2d" identifier != number_literal) )) && (parenthesized_expression "(local_2d != 0x3d)" ( (binary_expression "local_2d != 0x3d" identifier != number_literal) ))) )) && (parenthesized_expression "(local_2d != 0x2b)" ( (binary_expression "local_2d != 0x2b" identifier != number_literal) ))) )) (goto_statement "goto LAB_0001ecb0;" goto statement_identifier ;)) (expression_statement "pbVar8 = (byte *)(puVar4 + local_28 * 8);" (assignment_expression "pbVar8 = (byte *)(puVar4 + local_28 * 8)" identifier = (cast_expression "(byte *)(puVar4 + local_28 * 8)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar4 + local_28 * 8)" ( (binary_expression "puVar4 + local_28 * 8" identifier + (binary_expression "local_28 * 8" identifier * number_literal)) )))) ;) (do_statement "do {\n    local_28 = local_28 + 1;\n    bVar1 = param_1[1];\n    iVar6 = (int)(char)bVar1;\n    pbVar7 = param_1 + 1;\n    if (bVar1 == 0x67) {\n      uVar3 = 0x38;\nLAB_0001ed55:\n      pbVar8[1] = 3;\n      *(uint *)(pbVar8 + 8) = uVar3;\n      *pbVar8 = local_2d;\n      *(uint *)(pbVar8 + 4) = local_2c;\n      pbVar7 = param_1 + 2;\n      local_2d = *pbVar7;\nLAB_0001ed74:\n      if (local_2c != 0) {\n        uVar3 = local_2c & uVar3;\n      }\n    }\n    else {\n      if ('g' < (char)bVar1) {\n        if (bVar1 == 0x6f) {\n          uVar3 = 7;\n        }\n        else {\n          uVar3 = 0x1c0;\n          if (bVar1 != 0x75) goto LAB_0001ee40;\n        }\n        goto LAB_0001ed55;\n      }\n      if (7 < (byte)(bVar1 - 0x30)) {\nLAB_0001ee40:\n        uVar3 = 0;\n        if ((byte)(iVar6 - 0x58U) < 0x21) {\n                    \n                    \n          puVar4 = (undefined2 *)\n                   (*(code *)(*(int *)("__lxstat64" + (iVar6 - 0x58U & 0xff) * 4 + unaff_EBP) +\n                             unaff_EBP + 0x1c40a))();\n          return puVar4;\n        }\n        *pbVar8 = local_2d;\n        pbVar8[1] = 1;\n        *(uint *)(pbVar8 + 4) = local_2c;\n        pbVar8[8] = 0;\n        pbVar8[9] = 0;\n        pbVar8[10] = 0;\n        pbVar8[0xb] = 0;\n        local_2d = bVar1;\n        goto LAB_0001ed74;\n      }\n      uVar3 = 0;\n      do {\n        uVar3 = iVar6 + -0x30 + uVar3 * 8;\n        pbVar7 = pbVar7 + 1;\n        if (0xfff < uVar3) goto LAB_0001ecb0;\n        bVar1 = *pbVar7;\n        iVar6 = (int)(char)bVar1;\n      } while ((byte)(bVar1 - 0x30) < 8);\n      if ((local_2c != 0) || ((bVar1 != 0 && (bVar1 != 0x2c)))) goto LAB_0001ecb0;\n      *(uint *)(pbVar8 + 8) = uVar3;\n      uVar3 = 0xfff;\n      pbVar8[1] = 1;\n      *pbVar8 = local_2d;\n      pbVar8[4] = 0xff;\n      pbVar8[5] = 0xf;\n      pbVar8[6] = 0;\n      pbVar8[7] = 0;\n      local_2c = 0xfff;\n      local_2d = bVar1;\n    }\n    *(uint *)(pbVar8 + 0xc) = uVar3;\n    pbVar8 = pbVar8 + 0x10;\n    param_1 = pbVar7;\n  } while (((local_2d & 0xef) == 0x2d) || (local_2d == 0x2b));" do (compound_statement "{\n    local_28 = local_28 + 1;\n    bVar1 = param_1[1];\n    iVar6 = (int)(char)bVar1;\n    pbVar7 = param_1 + 1;\n    if (bVar1 == 0x67) {\n      uVar3 = 0x38;\nLAB_0001ed55:\n      pbVar8[1] = 3;\n      *(uint *)(pbVar8 + 8) = uVar3;\n      *pbVar8 = local_2d;\n      *(uint *)(pbVar8 + 4) = local_2c;\n      pbVar7 = param_1 + 2;\n      local_2d = *pbVar7;\nLAB_0001ed74:\n      if (local_2c != 0) {\n        uVar3 = local_2c & uVar3;\n      }\n    }\n    else {\n      if ('g' < (char)bVar1) {\n        if (bVar1 == 0x6f) {\n          uVar3 = 7;\n        }\n        else {\n          uVar3 = 0x1c0;\n          if (bVar1 != 0x75) goto LAB_0001ee40;\n        }\n        goto LAB_0001ed55;\n      }\n      if (7 < (byte)(bVar1 - 0x30)) {\nLAB_0001ee40:\n        uVar3 = 0;\n        if ((byte)(iVar6 - 0x58U) < 0x21) {\n                    \n                    \n          puVar4 = (undefined2 *)\n                   (*(code *)(*(int *)("__lxstat64" + (iVar6 - 0x58U & 0xff) * 4 + unaff_EBP) +\n                             unaff_EBP + 0x1c40a))();\n          return puVar4;\n        }\n        *pbVar8 = local_2d;\n        pbVar8[1] = 1;\n        *(uint *)(pbVar8 + 4) = local_2c;\n        pbVar8[8] = 0;\n        pbVar8[9] = 0;\n        pbVar8[10] = 0;\n        pbVar8[0xb] = 0;\n        local_2d = bVar1;\n        goto LAB_0001ed74;\n      }\n      uVar3 = 0;\n      do {\n        uVar3 = iVar6 + -0x30 + uVar3 * 8;\n        pbVar7 = pbVar7 + 1;\n        if (0xfff < uVar3) goto LAB_0001ecb0;\n        bVar1 = *pbVar7;\n        iVar6 = (int)(char)bVar1;\n      } while ((byte)(bVar1 - 0x30) < 8);\n      if ((local_2c != 0) || ((bVar1 != 0 && (bVar1 != 0x2c)))) goto LAB_0001ecb0;\n      *(uint *)(pbVar8 + 8) = uVar3;\n      uVar3 = 0xfff;\n      pbVar8[1] = 1;\n      *pbVar8 = local_2d;\n      pbVar8[4] = 0xff;\n      pbVar8[5] = 0xf;\n      pbVar8[6] = 0;\n      pbVar8[7] = 0;\n      local_2c = 0xfff;\n      local_2d = bVar1;\n    }\n    *(uint *)(pbVar8 + 0xc) = uVar3;\n    pbVar8 = pbVar8 + 0x10;\n    param_1 = pbVar7;\n  }" { (expression_statement "local_28 = local_28 + 1;" (assignment_expression "local_28 = local_28 + 1" identifier = (binary_expression "local_28 + 1" identifier + number_literal)) ;) (expression_statement "bVar1 = param_1[1];" (assignment_expression "bVar1 = param_1[1]" identifier = (subscript_expression "param_1[1]" identifier [ number_literal ])) ;) (expression_statement "iVar6 = (int)(char)bVar1;" (assignment_expression "iVar6 = (int)(char)bVar1" identifier = (cast_expression "(int)(char)bVar1" ( (type_descriptor "int" primitive_type) ) (cast_expression "(char)bVar1" ( (type_descriptor "char" primitive_type) ) identifier))) ;) (expression_statement "pbVar7 = param_1 + 1;" (assignment_expression "pbVar7 = param_1 + 1" identifier = (binary_expression "param_1 + 1" identifier + number_literal)) ;) (if_statement "if (bVar1 == 0x67) {\n      uVar3 = 0x38;\nLAB_0001ed55:\n      pbVar8[1] = 3;\n      *(uint *)(pbVar8 + 8) = uVar3;\n      *pbVar8 = local_2d;\n      *(uint *)(pbVar8 + 4) = local_2c;\n      pbVar7 = param_1 + 2;\n      local_2d = *pbVar7;\nLAB_0001ed74:\n      if (local_2c != 0) {\n        uVar3 = local_2c & uVar3;\n      }\n    }\n    else {\n      if ('g' < (char)bVar1) {\n        if (bVar1 == 0x6f) {\n          uVar3 = 7;\n        }\n        else {\n          uVar3 = 0x1c0;\n          if (bVar1 != 0x75) goto LAB_0001ee40;\n        }\n        goto LAB_0001ed55;\n      }\n      if (7 < (byte)(bVar1 - 0x30)) {\nLAB_0001ee40:\n        uVar3 = 0;\n        if ((byte)(iVar6 - 0x58U) < 0x21) {\n                    \n                    \n          puVar4 = (undefined2 *)\n                   (*(code *)(*(int *)("__lxstat64" + (iVar6 - 0x58U & 0xff) * 4 + unaff_EBP) +\n                             unaff_EBP + 0x1c40a))();\n          return puVar4;\n        }\n        *pbVar8 = local_2d;\n        pbVar8[1] = 1;\n        *(uint *)(pbVar8 + 4) = local_2c;\n        pbVar8[8] = 0;\n        pbVar8[9] = 0;\n        pbVar8[10] = 0;\n        pbVar8[0xb] = 0;\n        local_2d = bVar1;\n        goto LAB_0001ed74;\n      }\n      uVar3 = 0;\n      do {\n        uVar3 = iVar6 + -0x30 + uVar3 * 8;\n        pbVar7 = pbVar7 + 1;\n        if (0xfff < uVar3) goto LAB_0001ecb0;\n        bVar1 = *pbVar7;\n        iVar6 = (int)(char)bVar1;\n      } while ((byte)(bVar1 - 0x30) < 8);\n      if ((local_2c != 0) || ((bVar1 != 0 && (bVar1 != 0x2c)))) goto LAB_0001ecb0;\n      *(uint *)(pbVar8 + 8) = uVar3;\n      uVar3 = 0xfff;\n      pbVar8[1] = 1;\n      *pbVar8 = local_2d;\n      pbVar8[4] = 0xff;\n      pbVar8[5] = 0xf;\n      pbVar8[6] = 0;\n      pbVar8[7] = 0;\n      local_2c = 0xfff;\n      local_2d = bVar1;\n    }" if (parenthesized_expression "(bVar1 == 0x67)" ( (binary_expression "bVar1 == 0x67" identifier == number_literal) )) (compound_statement "{\n      uVar3 = 0x38;\nLAB_0001ed55:\n      pbVar8[1] = 3;\n      *(uint *)(pbVar8 + 8) = uVar3;\n      *pbVar8 = local_2d;\n      *(uint *)(pbVar8 + 4) = local_2c;\n      pbVar7 = param_1 + 2;\n      local_2d = *pbVar7;\nLAB_0001ed74:\n      if (local_2c != 0) {\n        uVar3 = local_2c & uVar3;\n      }\n    }" { (expression_statement "uVar3 = 0x38;" (assignment_expression "uVar3 = 0x38" identifier = number_literal) ;) (labeled_statement "LAB_0001ed55:\n      pbVar8[1] = 3;" statement_identifier : (expression_statement "pbVar8[1] = 3;" (assignment_expression "pbVar8[1] = 3" (subscript_expression "pbVar8[1]" identifier [ number_literal ]) = number_literal) ;)) (expression_statement "*(uint *)(pbVar8 + 8) = uVar3;" (assignment_expression "*(uint *)(pbVar8 + 8) = uVar3" (pointer_expression "*(uint *)(pbVar8 + 8)" * (cast_expression "(uint *)(pbVar8 + 8)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pbVar8 + 8)" ( (binary_expression "pbVar8 + 8" identifier + number_literal) )))) = identifier) ;) (expression_statement "*pbVar8 = local_2d;" (assignment_expression "*pbVar8 = local_2d" (pointer_expression "*pbVar8" * identifier) = identifier) ;) (expression_statement "*(uint *)(pbVar8 + 4) = local_2c;" (assignment_expression "*(uint *)(pbVar8 + 4) = local_2c" (pointer_expression "*(uint *)(pbVar8 + 4)" * (cast_expression "(uint *)(pbVar8 + 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pbVar8 + 4)" ( (binary_expression "pbVar8 + 4" identifier + number_literal) )))) = identifier) ;) (expression_statement "pbVar7 = param_1 + 2;" (assignment_expression "pbVar7 = param_1 + 2" identifier = (binary_expression "param_1 + 2" identifier + number_literal)) ;) (expression_statement "local_2d = *pbVar7;" (assignment_expression "local_2d = *pbVar7" identifier = (pointer_expression "*pbVar7" * identifier)) ;) (labeled_statement "LAB_0001ed74:\n      if (local_2c != 0) {\n        uVar3 = local_2c & uVar3;\n      }" statement_identifier : (if_statement "if (local_2c != 0) {\n        uVar3 = local_2c & uVar3;\n      }" if (parenthesized_expression "(local_2c != 0)" ( (binary_expression "local_2c != 0" identifier != number_literal) )) (compound_statement "{\n        uVar3 = local_2c & uVar3;\n      }" { (expression_statement "uVar3 = local_2c & uVar3;" (assignment_expression "uVar3 = local_2c & uVar3" identifier = (binary_expression "local_2c & uVar3" identifier & identifier)) ;) }))) }) (else_clause "else {\n      if ('g' < (char)bVar1) {\n        if (bVar1 == 0x6f) {\n          uVar3 = 7;\n        }\n        else {\n          uVar3 = 0x1c0;\n          if (bVar1 != 0x75) goto LAB_0001ee40;\n        }\n        goto LAB_0001ed55;\n      }\n      if (7 < (byte)(bVar1 - 0x30)) {\nLAB_0001ee40:\n        uVar3 = 0;\n        if ((byte)(iVar6 - 0x58U) < 0x21) {\n                    \n                    \n          puVar4 = (undefined2 *)\n                   (*(code *)(*(int *)("__lxstat64" + (iVar6 - 0x58U & 0xff) * 4 + unaff_EBP) +\n                             unaff_EBP + 0x1c40a))();\n          return puVar4;\n        }\n        *pbVar8 = local_2d;\n        pbVar8[1] = 1;\n        *(uint *)(pbVar8 + 4) = local_2c;\n        pbVar8[8] = 0;\n        pbVar8[9] = 0;\n        pbVar8[10] = 0;\n        pbVar8[0xb] = 0;\n        local_2d = bVar1;\n        goto LAB_0001ed74;\n      }\n      uVar3 = 0;\n      do {\n        uVar3 = iVar6 + -0x30 + uVar3 * 8;\n        pbVar7 = pbVar7 + 1;\n        if (0xfff < uVar3) goto LAB_0001ecb0;\n        bVar1 = *pbVar7;\n        iVar6 = (int)(char)bVar1;\n      } while ((byte)(bVar1 - 0x30) < 8);\n      if ((local_2c != 0) || ((bVar1 != 0 && (bVar1 != 0x2c)))) goto LAB_0001ecb0;\n      *(uint *)(pbVar8 + 8) = uVar3;\n      uVar3 = 0xfff;\n      pbVar8[1] = 1;\n      *pbVar8 = local_2d;\n      pbVar8[4] = 0xff;\n      pbVar8[5] = 0xf;\n      pbVar8[6] = 0;\n      pbVar8[7] = 0;\n      local_2c = 0xfff;\n      local_2d = bVar1;\n    }" else (compound_statement "{\n      if ('g' < (char)bVar1) {\n        if (bVar1 == 0x6f) {\n          uVar3 = 7;\n        }\n        else {\n          uVar3 = 0x1c0;\n          if (bVar1 != 0x75) goto LAB_0001ee40;\n        }\n        goto LAB_0001ed55;\n      }\n      if (7 < (byte)(bVar1 - 0x30)) {\nLAB_0001ee40:\n        uVar3 = 0;\n        if ((byte)(iVar6 - 0x58U) < 0x21) {\n                    \n                    \n          puVar4 = (undefined2 *)\n                   (*(code *)(*(int *)("__lxstat64" + (iVar6 - 0x58U & 0xff) * 4 + unaff_EBP) +\n                             unaff_EBP + 0x1c40a))();\n          return puVar4;\n        }\n        *pbVar8 = local_2d;\n        pbVar8[1] = 1;\n        *(uint *)(pbVar8 + 4) = local_2c;\n        pbVar8[8] = 0;\n        pbVar8[9] = 0;\n        pbVar8[10] = 0;\n        pbVar8[0xb] = 0;\n        local_2d = bVar1;\n        goto LAB_0001ed74;\n      }\n      uVar3 = 0;\n      do {\n        uVar3 = iVar6 + -0x30 + uVar3 * 8;\n        pbVar7 = pbVar7 + 1;\n        if (0xfff < uVar3) goto LAB_0001ecb0;\n        bVar1 = *pbVar7;\n        iVar6 = (int)(char)bVar1;\n      } while ((byte)(bVar1 - 0x30) < 8);\n      if ((local_2c != 0) || ((bVar1 != 0 && (bVar1 != 0x2c)))) goto LAB_0001ecb0;\n      *(uint *)(pbVar8 + 8) = uVar3;\n      uVar3 = 0xfff;\n      pbVar8[1] = 1;\n      *pbVar8 = local_2d;\n      pbVar8[4] = 0xff;\n      pbVar8[5] = 0xf;\n      pbVar8[6] = 0;\n      pbVar8[7] = 0;\n      local_2c = 0xfff;\n      local_2d = bVar1;\n    }" { (if_statement "if ('g' < (char)bVar1) {\n        if (bVar1 == 0x6f) {\n          uVar3 = 7;\n        }\n        else {\n          uVar3 = 0x1c0;\n          if (bVar1 != 0x75) goto LAB_0001ee40;\n        }\n        goto LAB_0001ed55;\n      }" if (parenthesized_expression "('g' < (char)bVar1)" ( (binary_expression "'g' < (char)bVar1" (char_literal "'g'" ' character ') < (cast_expression "(char)bVar1" ( (type_descriptor "char" primitive_type) ) identifier)) )) (compound_statement "{\n        if (bVar1 == 0x6f) {\n          uVar3 = 7;\n        }\n        else {\n          uVar3 = 0x1c0;\n          if (bVar1 != 0x75) goto LAB_0001ee40;\n        }\n        goto LAB_0001ed55;\n      }" { (if_statement "if (bVar1 == 0x6f) {\n          uVar3 = 7;\n        }\n        else {\n          uVar3 = 0x1c0;\n          if (bVar1 != 0x75) goto LAB_0001ee40;\n        }" if (parenthesized_expression "(bVar1 == 0x6f)" ( (binary_expression "bVar1 == 0x6f" identifier == number_literal) )) (compound_statement "{\n          uVar3 = 7;\n        }" { (expression_statement "uVar3 = 7;" (assignment_expression "uVar3 = 7" identifier = number_literal) ;) }) (else_clause "else {\n          uVar3 = 0x1c0;\n          if (bVar1 != 0x75) goto LAB_0001ee40;\n        }" else (compound_statement "{\n          uVar3 = 0x1c0;\n          if (bVar1 != 0x75) goto LAB_0001ee40;\n        }" { (expression_statement "uVar3 = 0x1c0;" (assignment_expression "uVar3 = 0x1c0" identifier = number_literal) ;) (if_statement "if (bVar1 != 0x75) goto LAB_0001ee40;" if (parenthesized_expression "(bVar1 != 0x75)" ( (binary_expression "bVar1 != 0x75" identifier != number_literal) )) (goto_statement "goto LAB_0001ee40;" goto statement_identifier ;)) }))) (goto_statement "goto LAB_0001ed55;" goto statement_identifier ;) })) (if_statement "if (7 < (byte)(bVar1 - 0x30)) {\nLAB_0001ee40:\n        uVar3 = 0;\n        if ((byte)(iVar6 - 0x58U) < 0x21) {\n                    \n                    \n          puVar4 = (undefined2 *)\n                   (*(code *)(*(int *)("__lxstat64" + (iVar6 - 0x58U & 0xff) * 4 + unaff_EBP) +\n                             unaff_EBP + 0x1c40a))();\n          return puVar4;\n        }\n        *pbVar8 = local_2d;\n        pbVar8[1] = 1;\n        *(uint *)(pbVar8 + 4) = local_2c;\n        pbVar8[8] = 0;\n        pbVar8[9] = 0;\n        pbVar8[10] = 0;\n        pbVar8[0xb] = 0;\n        local_2d = bVar1;\n        goto LAB_0001ed74;\n      }" if (parenthesized_expression "(7 < (byte)(bVar1 - 0x30))" ( (binary_expression "7 < (byte)(bVar1 - 0x30)" number_literal < (call_expression "(byte)(bVar1 - 0x30)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(bVar1 - 0x30)" ( (binary_expression "bVar1 - 0x30" identifier - number_literal) )))) )) (compound_statement "{\nLAB_0001ee40:\n        uVar3 = 0;\n        if ((byte)(iVar6 - 0x58U) < 0x21) {\n                    \n                    \n          puVar4 = (undefined2 *)\n                   (*(code *)(*(int *)("__lxstat64" + (iVar6 - 0x58U & 0xff) * 4 + unaff_EBP) +\n                             unaff_EBP + 0x1c40a))();\n          return puVar4;\n        }\n        *pbVar8 = local_2d;\n        pbVar8[1] = 1;\n        *(uint *)(pbVar8 + 4) = local_2c;\n        pbVar8[8] = 0;\n        pbVar8[9] = 0;\n        pbVar8[10] = 0;\n        pbVar8[0xb] = 0;\n        local_2d = bVar1;\n        goto LAB_0001ed74;\n      }" { (labeled_statement "LAB_0001ee40:\n        uVar3 = 0;" statement_identifier : (expression_statement "uVar3 = 0;" (assignment_expression "uVar3 = 0" identifier = number_literal) ;)) (if_statement "if ((byte)(iVar6 - 0x58U) < 0x21) {\n                    \n                    \n          puVar4 = (undefined2 *)\n                   (*(code *)(*(int *)("__lxstat64" + (iVar6 - 0x58U & 0xff) * 4 + unaff_EBP) +\n                             unaff_EBP + 0x1c40a))();\n          return puVar4;\n        }" if (parenthesized_expression "((byte)(iVar6 - 0x58U) < 0x21)" ( (binary_expression "(byte)(iVar6 - 0x58U) < 0x21" (call_expression "(byte)(iVar6 - 0x58U)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(iVar6 - 0x58U)" ( (binary_expression "iVar6 - 0x58U" identifier - number_literal) ))) < number_literal) )) (compound_statement "{\n                    \n                    \n          puVar4 = (undefined2 *)\n                   (*(code *)(*(int *)("__lxstat64" + (iVar6 - 0x58U & 0xff) * 4 + unaff_EBP) +\n                             unaff_EBP + 0x1c40a))();\n          return puVar4;\n        }" { (expression_statement "puVar4 = (undefined2 *)\n                   (*(code *)(*(int *)("__lxstat64" + (iVar6 - 0x58U & 0xff) * 4 + unaff_EBP) +\n                             unaff_EBP + 0x1c40a))();" (assignment_expression "puVar4 = (undefined2 *)\n                   (*(code *)(*(int *)("__lxstat64" + (iVar6 - 0x58U & 0xff) * 4 + unaff_EBP) +\n                             unaff_EBP + 0x1c40a))()" identifier = (cast_expression "(undefined2 *)\n                   (*(code *)(*(int *)("__lxstat64" + (iVar6 - 0x58U & 0xff) * 4 + unaff_EBP) +\n                             unaff_EBP + 0x1c40a))()" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(*(code *)(*(int *)("__lxstat64" + (iVar6 - 0x58U & 0xff) * 4 + unaff_EBP) +\n                             unaff_EBP + 0x1c40a))()" (parenthesized_expression "(*(code *)(*(int *)("__lxstat64" + (iVar6 - 0x58U & 0xff) * 4 + unaff_EBP) +\n                             unaff_EBP + 0x1c40a))" ( (pointer_expression "*(code *)(*(int *)("__lxstat64" + (iVar6 - 0x58U & 0xff) * 4 + unaff_EBP) +\n                             unaff_EBP + 0x1c40a)" * (cast_expression "(code *)(*(int *)("__lxstat64" + (iVar6 - 0x58U & 0xff) * 4 + unaff_EBP) +\n                             unaff_EBP + 0x1c40a)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)("__lxstat64" + (iVar6 - 0x58U & 0xff) * 4 + unaff_EBP) +\n                             unaff_EBP + 0x1c40a)" ( (binary_expression "*(int *)("__lxstat64" + (iVar6 - 0x58U & 0xff) * 4 + unaff_EBP) +\n                             unaff_EBP + 0x1c40a" (binary_expression "*(int *)("__lxstat64" + (iVar6 - 0x58U & 0xff) * 4 + unaff_EBP) +\n                             unaff_EBP" (pointer_expression "*(int *)("__lxstat64" + (iVar6 - 0x58U & 0xff) * 4 + unaff_EBP)" * (cast_expression "(int *)("__lxstat64" + (iVar6 - 0x58U & 0xff) * 4 + unaff_EBP)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "("__lxstat64" + (iVar6 - 0x58U & 0xff) * 4 + unaff_EBP)" ( (binary_expression ""__lxstat64" + (iVar6 - 0x58U & 0xff) * 4 + unaff_EBP" (binary_expression ""__lxstat64" + (iVar6 - 0x58U & 0xff) * 4" (string_literal ""__lxstat64"" " string_content ") + (binary_expression "(iVar6 - 0x58U & 0xff) * 4" (parenthesized_expression "(iVar6 - 0x58U & 0xff)" ( (binary_expression "iVar6 - 0x58U & 0xff" (binary_expression "iVar6 - 0x58U" identifier - number_literal) & number_literal) )) * number_literal)) + identifier) )))) + identifier) + number_literal) )))) )) (argument_list "()" ( ))))) ;) (return_statement "return puVar4;" return identifier ;) })) (expression_statement "*pbVar8 = local_2d;" (assignment_expression "*pbVar8 = local_2d" (pointer_expression "*pbVar8" * identifier) = identifier) ;) (expression_statement "pbVar8[1] = 1;" (assignment_expression "pbVar8[1] = 1" (subscript_expression "pbVar8[1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*(uint *)(pbVar8 + 4) = local_2c;" (assignment_expression "*(uint *)(pbVar8 + 4) = local_2c" (pointer_expression "*(uint *)(pbVar8 + 4)" * (cast_expression "(uint *)(pbVar8 + 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pbVar8 + 4)" ( (binary_expression "pbVar8 + 4" identifier + number_literal) )))) = identifier) ;) (expression_statement "pbVar8[8] = 0;" (assignment_expression "pbVar8[8] = 0" (subscript_expression "pbVar8[8]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "pbVar8[9] = 0;" (assignment_expression "pbVar8[9] = 0" (subscript_expression "pbVar8[9]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "pbVar8[10] = 0;" (assignment_expression "pbVar8[10] = 0" (subscript_expression "pbVar8[10]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "pbVar8[0xb] = 0;" (assignment_expression "pbVar8[0xb] = 0" (subscript_expression "pbVar8[0xb]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "local_2d = bVar1;" (assignment_expression "local_2d = bVar1" identifier = identifier) ;) (goto_statement "goto LAB_0001ed74;" goto statement_identifier ;) })) (expression_statement "uVar3 = 0;" (assignment_expression "uVar3 = 0" identifier = number_literal) ;) (do_statement "do {\n        uVar3 = iVar6 + -0x30 + uVar3 * 8;\n        pbVar7 = pbVar7 + 1;\n        if (0xfff < uVar3) goto LAB_0001ecb0;\n        bVar1 = *pbVar7;\n        iVar6 = (int)(char)bVar1;\n      } while ((byte)(bVar1 - 0x30) < 8);" do (compound_statement "{\n        uVar3 = iVar6 + -0x30 + uVar3 * 8;\n        pbVar7 = pbVar7 + 1;\n        if (0xfff < uVar3) goto LAB_0001ecb0;\n        bVar1 = *pbVar7;\n        iVar6 = (int)(char)bVar1;\n      }" { (expression_statement "uVar3 = iVar6 + -0x30 + uVar3 * 8;" (assignment_expression "uVar3 = iVar6 + -0x30 + uVar3 * 8" identifier = (binary_expression "iVar6 + -0x30 + uVar3 * 8" (binary_expression "iVar6 + -0x30" identifier + number_literal) + (binary_expression "uVar3 * 8" identifier * number_literal))) ;) (expression_statement "pbVar7 = pbVar7 + 1;" (assignment_expression "pbVar7 = pbVar7 + 1" identifier = (binary_expression "pbVar7 + 1" identifier + number_literal)) ;) (if_statement "if (0xfff < uVar3) goto LAB_0001ecb0;" if (parenthesized_expression "(0xfff < uVar3)" ( (binary_expression "0xfff < uVar3" number_literal < identifier) )) (goto_statement "goto LAB_0001ecb0;" goto statement_identifier ;)) (expression_statement "bVar1 = *pbVar7;" (assignment_expression "bVar1 = *pbVar7" identifier = (pointer_expression "*pbVar7" * identifier)) ;) (expression_statement "iVar6 = (int)(char)bVar1;" (assignment_expression "iVar6 = (int)(char)bVar1" identifier = (cast_expression "(int)(char)bVar1" ( (type_descriptor "int" primitive_type) ) (cast_expression "(char)bVar1" ( (type_descriptor "char" primitive_type) ) identifier))) ;) }) while (parenthesized_expression "((byte)(bVar1 - 0x30) < 8)" ( (binary_expression "(byte)(bVar1 - 0x30) < 8" (call_expression "(byte)(bVar1 - 0x30)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(bVar1 - 0x30)" ( (binary_expression "bVar1 - 0x30" identifier - number_literal) ))) < number_literal) )) ;) (if_statement "if ((local_2c != 0) || ((bVar1 != 0 && (bVar1 != 0x2c)))) goto LAB_0001ecb0;" if (parenthesized_expression "((local_2c != 0) || ((bVar1 != 0 && (bVar1 != 0x2c))))" ( (binary_expression "(local_2c != 0) || ((bVar1 != 0 && (bVar1 != 0x2c)))" (parenthesized_expression "(local_2c != 0)" ( (binary_expression "local_2c != 0" identifier != number_literal) )) || (parenthesized_expression "((bVar1 != 0 && (bVar1 != 0x2c)))" ( (parenthesized_expression "(bVar1 != 0 && (bVar1 != 0x2c))" ( (binary_expression "bVar1 != 0 && (bVar1 != 0x2c)" (binary_expression "bVar1 != 0" identifier != number_literal) && (parenthesized_expression "(bVar1 != 0x2c)" ( (binary_expression "bVar1 != 0x2c" identifier != number_literal) ))) )) ))) )) (goto_statement "goto LAB_0001ecb0;" goto statement_identifier ;)) (expression_statement "*(uint *)(pbVar8 + 8) = uVar3;" (assignment_expression "*(uint *)(pbVar8 + 8) = uVar3" (pointer_expression "*(uint *)(pbVar8 + 8)" * (cast_expression "(uint *)(pbVar8 + 8)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pbVar8 + 8)" ( (binary_expression "pbVar8 + 8" identifier + number_literal) )))) = identifier) ;) (expression_statement "uVar3 = 0xfff;" (assignment_expression "uVar3 = 0xfff" identifier = number_literal) ;) (expression_statement "pbVar8[1] = 1;" (assignment_expression "pbVar8[1] = 1" (subscript_expression "pbVar8[1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*pbVar8 = local_2d;" (assignment_expression "*pbVar8 = local_2d" (pointer_expression "*pbVar8" * identifier) = identifier) ;) (expression_statement "pbVar8[4] = 0xff;" (assignment_expression "pbVar8[4] = 0xff" (subscript_expression "pbVar8[4]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "pbVar8[5] = 0xf;" (assignment_expression "pbVar8[5] = 0xf" (subscript_expression "pbVar8[5]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "pbVar8[6] = 0;" (assignment_expression "pbVar8[6] = 0" (subscript_expression "pbVar8[6]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "pbVar8[7] = 0;" (assignment_expression "pbVar8[7] = 0" (subscript_expression "pbVar8[7]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "local_2c = 0xfff;" (assignment_expression "local_2c = 0xfff" identifier = number_literal) ;) (expression_statement "local_2d = bVar1;" (assignment_expression "local_2d = bVar1" identifier = identifier) ;) }))) (expression_statement "*(uint *)(pbVar8 + 0xc) = uVar3;" (assignment_expression "*(uint *)(pbVar8 + 0xc) = uVar3" (pointer_expression "*(uint *)(pbVar8 + 0xc)" * (cast_expression "(uint *)(pbVar8 + 0xc)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pbVar8 + 0xc)" ( (binary_expression "pbVar8 + 0xc" identifier + number_literal) )))) = identifier) ;) (expression_statement "pbVar8 = pbVar8 + 0x10;" (assignment_expression "pbVar8 = pbVar8 + 0x10" identifier = (binary_expression "pbVar8 + 0x10" identifier + number_literal)) ;) (expression_statement "param_1 = pbVar7;" (assignment_expression "param_1 = pbVar7" identifier = identifier) ;) }) while (parenthesized_expression "(((local_2d & 0xef) == 0x2d) || (local_2d == 0x2b))" ( (binary_expression "((local_2d & 0xef) == 0x2d) || (local_2d == 0x2b)" (parenthesized_expression "((local_2d & 0xef) == 0x2d)" ( (binary_expression "(local_2d & 0xef) == 0x2d" (parenthesized_expression "(local_2d & 0xef)" ( (binary_expression "local_2d & 0xef" identifier & number_literal) )) == number_literal) )) || (parenthesized_expression "(local_2d == 0x2b)" ( (binary_expression "local_2d == 0x2b" identifier == number_literal) ))) )) ;) (if_statement "if (local_2d != 0x2c) {\n    if (local_2d == 0) {\n      *(undefined1 *)((int)puVar4 + local_28 * 0x10 + 1) = 0;\n      return puVar4;\n    }\nLAB_0001ecb0:\n    free(puVar4);\n    return (undefined2 *)0x0;\n  }" if (parenthesized_expression "(local_2d != 0x2c)" ( (binary_expression "local_2d != 0x2c" identifier != number_literal) )) (compound_statement "{\n    if (local_2d == 0) {\n      *(undefined1 *)((int)puVar4 + local_28 * 0x10 + 1) = 0;\n      return puVar4;\n    }\nLAB_0001ecb0:\n    free(puVar4);\n    return (undefined2 *)0x0;\n  }" { (if_statement "if (local_2d == 0) {\n      *(undefined1 *)((int)puVar4 + local_28 * 0x10 + 1) = 0;\n      return puVar4;\n    }" if (parenthesized_expression "(local_2d == 0)" ( (binary_expression "local_2d == 0" identifier == number_literal) )) (compound_statement "{\n      *(undefined1 *)((int)puVar4 + local_28 * 0x10 + 1) = 0;\n      return puVar4;\n    }" { (expression_statement "*(undefined1 *)((int)puVar4 + local_28 * 0x10 + 1) = 0;" (assignment_expression "*(undefined1 *)((int)puVar4 + local_28 * 0x10 + 1) = 0" (pointer_expression "*(undefined1 *)((int)puVar4 + local_28 * 0x10 + 1)" * (cast_expression "(undefined1 *)((int)puVar4 + local_28 * 0x10 + 1)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar4 + local_28 * 0x10 + 1)" ( (binary_expression "(int)puVar4 + local_28 * 0x10 + 1" (binary_expression "(int)puVar4 + local_28 * 0x10" (cast_expression "(int)puVar4" ( (type_descriptor "int" primitive_type) ) identifier) + (binary_expression "local_28 * 0x10" identifier * number_literal)) + number_literal) )))) = number_literal) ;) (return_statement "return puVar4;" return identifier ;) })) (labeled_statement "LAB_0001ecb0:\n    free(puVar4);" statement_identifier : (expression_statement "free(puVar4);" (call_expression "free(puVar4)" identifier (argument_list "(puVar4)" ( identifier ))) ;)) (return_statement "return (undefined2 *)0x0;" return (cast_expression "(undefined2 *)0x0" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) ;) })) (expression_statement "param_1 = pbVar7 + 1;" (assignment_expression "param_1 = pbVar7 + 1" identifier = (binary_expression "pbVar7 + 1" identifier + number_literal)) ;) (goto_statement "goto LAB_0001ec81;" goto statement_identifier ;) })))
(translation_unit (function_definition TYPE (pointer_declarator * (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE (pointer_declarator * IDENT)) )))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) (cast_expression ( (type_descriptor TYPE) ) IDENT))) ;) (if_statement if (parenthesized_expression ( (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT - LIT) ))) < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression IDENT - LIT) )) + (binary_expression IDENT * LIT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (compound_statement { (return_statement return (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT) ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) (cast_expression ( (type_descriptor TYPE) ) IDENT))) ;) }) while (parenthesized_expression ( (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT - LIT) ))) < LIT) )) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (return_statement return (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT & LIT) | LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) - (cast_expression ( (type_descriptor TYPE) ) IDENT))) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( LIT ))))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = LIT) ;) (return_statement return IDENT ;) })) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) }) (else_clause else (compound_statement { (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (parenthesized_expression ( (binary_expression (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) == LIT) || (binary_expression IDENT == LIT)) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT != LIT) )) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT * LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT < LIT) )) || (parenthesized_expression ( (binary_expression (binary_expression IDENT >> LIT) != LIT) ))) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( ))) ;) })) }))) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( IDENT ))))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = LIT) ;)) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) }) (else_clause else (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) < (char_literal ' character ')) )) (break_statement break ;)) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT | LIT)) ;) }) (else_clause else (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT | LIT)) ;) }) (else_clause else (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT | LIT)) ;) }))))) }))) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( BOOL )) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT != LIT) )) && (parenthesized_expression ( (binary_expression IDENT != LIT) ))) )) && (parenthesized_expression ( (binary_expression IDENT != LIT) ))) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression IDENT * LIT)) )))) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) (cast_expression ( (type_descriptor TYPE) ) IDENT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;)) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT & IDENT)) ;) }))) }) (else_clause else (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (char_literal ' character ') < (cast_expression ( (type_descriptor TYPE) ) IDENT)) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (goto_statement goto statement_identifier ;)) }))) (goto_statement goto statement_identifier ;) })) (if_statement if (parenthesized_expression ( (binary_expression LIT < (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT - LIT) )))) )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = LIT) ;)) (if_statement if (parenthesized_expression ( (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT - LIT) ))) < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression (string_literal " string_content ") + (binary_expression (parenthesized_expression ( (binary_expression (binary_expression IDENT - LIT) & LIT) )) * LIT)) + IDENT) )))) + IDENT) + LIT) )))) )) (argument_list ( ))))) ;) (return_statement return IDENT ;) })) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = LIT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + LIT) + (binary_expression IDENT * LIT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) (cast_expression ( (type_descriptor TYPE) ) IDENT))) ;) }) while (parenthesized_expression ( (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT - LIT) ))) < LIT) )) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT != LIT) )) || (parenthesized_expression ( (parenthesized_expression ( (binary_expression (binary_expression IDENT != LIT) && (parenthesized_expression ( (binary_expression IDENT != LIT) ))) )) ))) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_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 IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }) while (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) == LIT) )) || (parenthesized_expression ( (binary_expression IDENT == LIT) ))) )) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + (binary_expression IDENT * LIT)) + LIT) )))) = LIT) ;) (return_statement return IDENT ;) })) (labeled_statement statement_identifier : (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;)) (return_statement return (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (goto_statement goto statement_identifier ;) })))
(function_definition "undefined2 * FUN_0001ebf0(byte *param_1)\n\n{\n  byte bVar1;\n  byte bVar2;\n  uint uVar3;\n  undefined2 *puVar4;\n  uint uVar5;\n  int iVar6;\n  byte *pbVar7;\n  int unaff_EBP;\n  byte *pbVar8;\n  byte local_2d;\n  uint local_2c;\n  int local_28;\n  \n  FUN_0001f1c7();\n  bVar1 = *param_1;\n  uVar3 = (uint)(char)bVar1;\n  if ((byte)(bVar1 - 0x30) < 8) {\n    uVar5 = 0;\n    pbVar8 = param_1;\n    do {\n      uVar5 = (uVar3 - 0x30) + uVar5 * 8;\n      pbVar8 = pbVar8 + 1;\n      if (0xfff < uVar5) {\n        return (undefined2 *)0x0;\n      }\n      bVar1 = *pbVar8;\n      uVar3 = (uint)(char)bVar1;\n    } while ((byte)(bVar1 - 0x30) < 8);\n    if (bVar1 != 0) {\n      return (undefined2 *)0x0;\n    }\n    uVar3 = uVar5 & 0xc00 | 0x3ff;\n    if (4 < (int)pbVar8 - (int)param_1) {\n      uVar3 = 0xfff;\n    }\n    puVar4 = (undefined2 *)FUN_00023ea0(0x20);\n    *puVar4 = 0x13d;\n    *(undefined4 *)(puVar4 + 2) = 0xfff;\n    *(uint *)(puVar4 + 4) = uVar5;\n    *(uint *)(puVar4 + 6) = uVar3;\n    *(undefined1 *)((int)puVar4 + 0x11) = 0;\n    return puVar4;\n  }\n  uVar5 = 1;\n  pbVar8 = param_1;\n  if (bVar1 == 0) {\n    iVar6 = 0x10;\n  }\n  else {\n    do {\n      bVar2 = (byte)uVar3;\n      bVar1 = pbVar8[1];\n      uVar3 = (uint)bVar1;\n      uVar5 = uVar5 + ((bVar2 & 0xef) == 0x2d || bVar2 == 0x2b);\n      pbVar8 = pbVar8 + 1;\n    } while (bVar1 != 0);\n    iVar6 = uVar5 * 0x10;\n    if ((iVar6 < 0) || (uVar5 >> 0x1c != 0)) {\n                    \n      FUN_000241a0();\n    }\n  }\n  puVar4 = (undefined2 *)FUN_00023ea0(iVar6);\n  local_28 = 0;\nLAB_0001ec81:\n  local_2c = 0;\n  do {\n    local_2d = *param_1;\n    if (local_2d == 0x61) {\n      local_2c = 0xfff;\n    }\n    else {\n      if ((char)local_2d < 'b') break;\n      if (local_2d == 0x6f) {\n        local_2c = local_2c | 0x207;\n      }\n      else if (local_2d == 0x75) {\n        local_2c = local_2c | 0x9c0;\n      }\n      else {\n        if (local_2d != 0x67) goto LAB_0001ecb0;\n        local_2c = local_2c | 0x438;\n      }\n    }\n    param_1 = param_1 + 1;\n  } while( true );\n  if (((local_2d != 0x2d) && (local_2d != 0x3d)) && (local_2d != 0x2b)) goto LAB_0001ecb0;\n  pbVar8 = (byte *)(puVar4 + local_28 * 8);\n  do {\n    local_28 = local_28 + 1;\n    bVar1 = param_1[1];\n    iVar6 = (int)(char)bVar1;\n    pbVar7 = param_1 + 1;\n    if (bVar1 == 0x67) {\n      uVar3 = 0x38;\nLAB_0001ed55:\n      pbVar8[1] = 3;\n      *(uint *)(pbVar8 + 8) = uVar3;\n      *pbVar8 = local_2d;\n      *(uint *)(pbVar8 + 4) = local_2c;\n      pbVar7 = param_1 + 2;\n      local_2d = *pbVar7;\nLAB_0001ed74:\n      if (local_2c != 0) {\n        uVar3 = local_2c & uVar3;\n      }\n    }\n    else {\n      if ('g' < (char)bVar1) {\n        if (bVar1 == 0x6f) {\n          uVar3 = 7;\n        }\n        else {\n          uVar3 = 0x1c0;\n          if (bVar1 != 0x75) goto LAB_0001ee40;\n        }\n        goto LAB_0001ed55;\n      }\n      if (7 < (byte)(bVar1 - 0x30)) {\nLAB_0001ee40:\n        uVar3 = 0;\n        if ((byte)(iVar6 - 0x58U) < 0x21) {\n                    \n                    \n          puVar4 = (undefined2 *)\n                   (*(code *)(*(int *)("__lxstat64" + (iVar6 - 0x58U & 0xff) * 4 + unaff_EBP) +\n                             unaff_EBP + 0x1c40a))();\n          return puVar4;\n        }\n        *pbVar8 = local_2d;\n        pbVar8[1] = 1;\n        *(uint *)(pbVar8 + 4) = local_2c;\n        pbVar8[8] = 0;\n        pbVar8[9] = 0;\n        pbVar8[10] = 0;\n        pbVar8[0xb] = 0;\n        local_2d = bVar1;\n        goto LAB_0001ed74;\n      }\n      uVar3 = 0;\n      do {\n        uVar3 = iVar6 + -0x30 + uVar3 * 8;\n        pbVar7 = pbVar7 + 1;\n        if (0xfff < uVar3) goto LAB_0001ecb0;\n        bVar1 = *pbVar7;\n        iVar6 = (int)(char)bVar1;\n      } while ((byte)(bVar1 - 0x30) < 8);\n      if ((local_2c != 0) || ((bVar1 != 0 && (bVar1 != 0x2c)))) goto LAB_0001ecb0;\n      *(uint *)(pbVar8 + 8) = uVar3;\n      uVar3 = 0xfff;\n      pbVar8[1] = 1;\n      *pbVar8 = local_2d;\n      pbVar8[4] = 0xff;\n      pbVar8[5] = 0xf;\n      pbVar8[6] = 0;\n      pbVar8[7] = 0;\n      local_2c = 0xfff;\n      local_2d = bVar1;\n    }\n    *(uint *)(pbVar8 + 0xc) = uVar3;\n    pbVar8 = pbVar8 + 0x10;\n    param_1 = pbVar7;\n  } while (((local_2d & 0xef) == 0x2d) || (local_2d == 0x2b));\n  if (local_2d != 0x2c) {\n    if (local_2d == 0) {\n      *(undefined1 *)((int)puVar4 + local_28 * 0x10 + 1) = 0;\n      return puVar4;\n    }\nLAB_0001ecb0:\n    free(puVar4);\n    return (undefined2 *)0x0;\n  }\n  param_1 = pbVar7 + 1;\n  goto LAB_0001ec81;\n}" (type_identifier "undefined2") (pointer_declarator "* FUN_0001ebf0(byte *param_1)" (* "*") (function_declarator "FUN_0001ebf0(byte *param_1)" (identifier "FUN_0001ebf0") (parameter_list "(byte *param_1)" (( "(") (parameter_declaration "byte *param_1" (type_identifier "byte") (pointer_declarator "*param_1" (* "*") (identifier "param_1"))) () ")")))) (compound_statement "{\n  byte bVar1;\n  byte bVar2;\n  uint uVar3;\n  undefined2 *puVar4;\n  uint uVar5;\n  int iVar6;\n  byte *pbVar7;\n  int unaff_EBP;\n  byte *pbVar8;\n  byte local_2d;\n  uint local_2c;\n  int local_28;\n  \n  FUN_0001f1c7();\n  bVar1 = *param_1;\n  uVar3 = (uint)(char)bVar1;\n  if ((byte)(bVar1 - 0x30) < 8) {\n    uVar5 = 0;\n    pbVar8 = param_1;\n    do {\n      uVar5 = (uVar3 - 0x30) + uVar5 * 8;\n      pbVar8 = pbVar8 + 1;\n      if (0xfff < uVar5) {\n        return (undefined2 *)0x0;\n      }\n      bVar1 = *pbVar8;\n      uVar3 = (uint)(char)bVar1;\n    } while ((byte)(bVar1 - 0x30) < 8);\n    if (bVar1 != 0) {\n      return (undefined2 *)0x0;\n    }\n    uVar3 = uVar5 & 0xc00 | 0x3ff;\n    if (4 < (int)pbVar8 - (int)param_1) {\n      uVar3 = 0xfff;\n    }\n    puVar4 = (undefined2 *)FUN_00023ea0(0x20);\n    *puVar4 = 0x13d;\n    *(undefined4 *)(puVar4 + 2) = 0xfff;\n    *(uint *)(puVar4 + 4) = uVar5;\n    *(uint *)(puVar4 + 6) = uVar3;\n    *(undefined1 *)((int)puVar4 + 0x11) = 0;\n    return puVar4;\n  }\n  uVar5 = 1;\n  pbVar8 = param_1;\n  if (bVar1 == 0) {\n    iVar6 = 0x10;\n  }\n  else {\n    do {\n      bVar2 = (byte)uVar3;\n      bVar1 = pbVar8[1];\n      uVar3 = (uint)bVar1;\n      uVar5 = uVar5 + ((bVar2 & 0xef) == 0x2d || bVar2 == 0x2b);\n      pbVar8 = pbVar8 + 1;\n    } while (bVar1 != 0);\n    iVar6 = uVar5 * 0x10;\n    if ((iVar6 < 0) || (uVar5 >> 0x1c != 0)) {\n                    \n      FUN_000241a0();\n    }\n  }\n  puVar4 = (undefined2 *)FUN_00023ea0(iVar6);\n  local_28 = 0;\nLAB_0001ec81:\n  local_2c = 0;\n  do {\n    local_2d = *param_1;\n    if (local_2d == 0x61) {\n      local_2c = 0xfff;\n    }\n    else {\n      if ((char)local_2d < 'b') break;\n      if (local_2d == 0x6f) {\n        local_2c = local_2c | 0x207;\n      }\n      else if (local_2d == 0x75) {\n        local_2c = local_2c | 0x9c0;\n      }\n      else {\n        if (local_2d != 0x67) goto LAB_0001ecb0;\n        local_2c = local_2c | 0x438;\n      }\n    }\n    param_1 = param_1 + 1;\n  } while( true );\n  if (((local_2d != 0x2d) && (local_2d != 0x3d)) && (local_2d != 0x2b)) goto LAB_0001ecb0;\n  pbVar8 = (byte *)(puVar4 + local_28 * 8);\n  do {\n    local_28 = local_28 + 1;\n    bVar1 = param_1[1];\n    iVar6 = (int)(char)bVar1;\n    pbVar7 = param_1 + 1;\n    if (bVar1 == 0x67) {\n      uVar3 = 0x38;\nLAB_0001ed55:\n      pbVar8[1] = 3;\n      *(uint *)(pbVar8 + 8) = uVar3;\n      *pbVar8 = local_2d;\n      *(uint *)(pbVar8 + 4) = local_2c;\n      pbVar7 = param_1 + 2;\n      local_2d = *pbVar7;\nLAB_0001ed74:\n      if (local_2c != 0) {\n        uVar3 = local_2c & uVar3;\n      }\n    }\n    else {\n      if ('g' < (char)bVar1) {\n        if (bVar1 == 0x6f) {\n          uVar3 = 7;\n        }\n        else {\n          uVar3 = 0x1c0;\n          if (bVar1 != 0x75) goto LAB_0001ee40;\n        }\n        goto LAB_0001ed55;\n      }\n      if (7 < (byte)(bVar1 - 0x30)) {\nLAB_0001ee40:\n        uVar3 = 0;\n        if ((byte)(iVar6 - 0x58U) < 0x21) {\n                    \n                    \n          puVar4 = (undefined2 *)\n                   (*(code *)(*(int *)("__lxstat64" + (iVar6 - 0x58U & 0xff) * 4 + unaff_EBP) +\n                             unaff_EBP + 0x1c40a))();\n          return puVar4;\n        }\n        *pbVar8 = local_2d;\n        pbVar8[1] = 1;\n        *(uint *)(pbVar8 + 4) = local_2c;\n        pbVar8[8] = 0;\n        pbVar8[9] = 0;\n        pbVar8[10] = 0;\n        pbVar8[0xb] = 0;\n        local_2d = bVar1;\n        goto LAB_0001ed74;\n      }\n      uVar3 = 0;\n      do {\n        uVar3 = iVar6 + -0x30 + uVar3 * 8;\n        pbVar7 = pbVar7 + 1;\n        if (0xfff < uVar3) goto LAB_0001ecb0;\n        bVar1 = *pbVar7;\n        iVar6 = (int)(char)bVar1;\n      } while ((byte)(bVar1 - 0x30) < 8);\n      if ((local_2c != 0) || ((bVar1 != 0 && (bVar1 != 0x2c)))) goto LAB_0001ecb0;\n      *(uint *)(pbVar8 + 8) = uVar3;\n      uVar3 = 0xfff;\n      pbVar8[1] = 1;\n      *pbVar8 = local_2d;\n      pbVar8[4] = 0xff;\n      pbVar8[5] = 0xf;\n      pbVar8[6] = 0;\n      pbVar8[7] = 0;\n      local_2c = 0xfff;\n      local_2d = bVar1;\n    }\n    *(uint *)(pbVar8 + 0xc) = uVar3;\n    pbVar8 = pbVar8 + 0x10;\n    param_1 = pbVar7;\n  } while (((local_2d & 0xef) == 0x2d) || (local_2d == 0x2b));\n  if (local_2d != 0x2c) {\n    if (local_2d == 0) {\n      *(undefined1 *)((int)puVar4 + local_28 * 0x10 + 1) = 0;\n      return puVar4;\n    }\nLAB_0001ecb0:\n    free(puVar4);\n    return (undefined2 *)0x0;\n  }\n  param_1 = pbVar7 + 1;\n  goto LAB_0001ec81;\n}" ({ "{") (declaration "byte bVar1;" (type_identifier "byte") (identifier "bVar1") (; ";")) (declaration "byte bVar2;" (type_identifier "byte") (identifier "bVar2") (; ";")) (declaration "uint uVar3;" (type_identifier "uint") (identifier "uVar3") (; ";")) (declaration "undefined2 *puVar4;" (type_identifier "undefined2") (pointer_declarator "*puVar4" (* "*") (identifier "puVar4")) (; ";")) (declaration "uint uVar5;" (type_identifier "uint") (identifier "uVar5") (; ";")) (declaration "int iVar6;" (primitive_type "int") (identifier "iVar6") (; ";")) (declaration "byte *pbVar7;" (type_identifier "byte") (pointer_declarator "*pbVar7" (* "*") (identifier "pbVar7")) (; ";")) (declaration "int unaff_EBP;" (primitive_type "int") (identifier "unaff_EBP") (; ";")) (declaration "byte *pbVar8;" (type_identifier "byte") (pointer_declarator "*pbVar8" (* "*") (identifier "pbVar8")) (; ";")) (declaration "byte local_2d;" (type_identifier "byte") (identifier "local_2d") (; ";")) (declaration "uint local_2c;" (type_identifier "uint") (identifier "local_2c") (; ";")) (declaration "int local_28;" (primitive_type "int") (identifier "local_28") (; ";")) (expression_statement "FUN_0001f1c7();" (call_expression "FUN_0001f1c7()" (identifier "FUN_0001f1c7") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "bVar1 = *param_1;" (assignment_expression "bVar1 = *param_1" (identifier "bVar1") (= "=") (pointer_expression "*param_1" (* "*") (identifier "param_1"))) (; ";")) (expression_statement "uVar3 = (uint)(char)bVar1;" (assignment_expression "uVar3 = (uint)(char)bVar1" (identifier "uVar3") (= "=") (cast_expression "(uint)(char)bVar1" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (cast_expression "(char)bVar1" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (identifier "bVar1")))) (; ";")) (if_statement "if ((byte)(bVar1 - 0x30) < 8) {\n    uVar5 = 0;\n    pbVar8 = param_1;\n    do {\n      uVar5 = (uVar3 - 0x30) + uVar5 * 8;\n      pbVar8 = pbVar8 + 1;\n      if (0xfff < uVar5) {\n        return (undefined2 *)0x0;\n      }\n      bVar1 = *pbVar8;\n      uVar3 = (uint)(char)bVar1;\n    } while ((byte)(bVar1 - 0x30) < 8);\n    if (bVar1 != 0) {\n      return (undefined2 *)0x0;\n    }\n    uVar3 = uVar5 & 0xc00 | 0x3ff;\n    if (4 < (int)pbVar8 - (int)param_1) {\n      uVar3 = 0xfff;\n    }\n    puVar4 = (undefined2 *)FUN_00023ea0(0x20);\n    *puVar4 = 0x13d;\n    *(undefined4 *)(puVar4 + 2) = 0xfff;\n    *(uint *)(puVar4 + 4) = uVar5;\n    *(uint *)(puVar4 + 6) = uVar3;\n    *(undefined1 *)((int)puVar4 + 0x11) = 0;\n    return puVar4;\n  }" (if "if") (parenthesized_expression "((byte)(bVar1 - 0x30) < 8)" (( "(") (binary_expression "(byte)(bVar1 - 0x30) < 8" (call_expression "(byte)(bVar1 - 0x30)" (parenthesized_expression "(byte)" (( "(") (identifier "byte") () ")")) (argument_list "(bVar1 - 0x30)" (( "(") (binary_expression "bVar1 - 0x30" (identifier "bVar1") (- "-") (number_literal "0x30")) () ")"))) (< "<") (number_literal "8")) () ")")) (compound_statement "{\n    uVar5 = 0;\n    pbVar8 = param_1;\n    do {\n      uVar5 = (uVar3 - 0x30) + uVar5 * 8;\n      pbVar8 = pbVar8 + 1;\n      if (0xfff < uVar5) {\n        return (undefined2 *)0x0;\n      }\n      bVar1 = *pbVar8;\n      uVar3 = (uint)(char)bVar1;\n    } while ((byte)(bVar1 - 0x30) < 8);\n    if (bVar1 != 0) {\n      return (undefined2 *)0x0;\n    }\n    uVar3 = uVar5 & 0xc00 | 0x3ff;\n    if (4 < (int)pbVar8 - (int)param_1) {\n      uVar3 = 0xfff;\n    }\n    puVar4 = (undefined2 *)FUN_00023ea0(0x20);\n    *puVar4 = 0x13d;\n    *(undefined4 *)(puVar4 + 2) = 0xfff;\n    *(uint *)(puVar4 + 4) = uVar5;\n    *(uint *)(puVar4 + 6) = uVar3;\n    *(undefined1 *)((int)puVar4 + 0x11) = 0;\n    return puVar4;\n  }" ({ "{") (expression_statement "uVar5 = 0;" (assignment_expression "uVar5 = 0" (identifier "uVar5") (= "=") (number_literal "0")) (; ";")) (expression_statement "pbVar8 = param_1;" (assignment_expression "pbVar8 = param_1" (identifier "pbVar8") (= "=") (identifier "param_1")) (; ";")) (do_statement "do {\n      uVar5 = (uVar3 - 0x30) + uVar5 * 8;\n      pbVar8 = pbVar8 + 1;\n      if (0xfff < uVar5) {\n        return (undefined2 *)0x0;\n      }\n      bVar1 = *pbVar8;\n      uVar3 = (uint)(char)bVar1;\n    } while ((byte)(bVar1 - 0x30) < 8);" (do "do") (compound_statement "{\n      uVar5 = (uVar3 - 0x30) + uVar5 * 8;\n      pbVar8 = pbVar8 + 1;\n      if (0xfff < uVar5) {\n        return (undefined2 *)0x0;\n      }\n      bVar1 = *pbVar8;\n      uVar3 = (uint)(char)bVar1;\n    }" ({ "{") (expression_statement "uVar5 = (uVar3 - 0x30) + uVar5 * 8;" (assignment_expression "uVar5 = (uVar3 - 0x30) + uVar5 * 8" (identifier "uVar5") (= "=") (binary_expression "(uVar3 - 0x30) + uVar5 * 8" (parenthesized_expression "(uVar3 - 0x30)" (( "(") (binary_expression "uVar3 - 0x30" (identifier "uVar3") (- "-") (number_literal "0x30")) () ")")) (+ "+") (binary_expression "uVar5 * 8" (identifier "uVar5") (* "*") (number_literal "8")))) (; ";")) (expression_statement "pbVar8 = pbVar8 + 1;" (assignment_expression "pbVar8 = pbVar8 + 1" (identifier "pbVar8") (= "=") (binary_expression "pbVar8 + 1" (identifier "pbVar8") (+ "+") (number_literal "1"))) (; ";")) (if_statement "if (0xfff < uVar5) {\n        return (undefined2 *)0x0;\n      }" (if "if") (parenthesized_expression "(0xfff < uVar5)" (( "(") (binary_expression "0xfff < uVar5" (number_literal "0xfff") (< "<") (identifier "uVar5")) () ")")) (compound_statement "{\n        return (undefined2 *)0x0;\n      }" ({ "{") (return_statement "return (undefined2 *)0x0;" (return "return") (cast_expression "(undefined2 *)0x0" (( "(") (type_descriptor "undefined2 *" (type_identifier "undefined2") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0")) (; ";")) (} "}"))) (expression_statement "bVar1 = *pbVar8;" (assignment_expression "bVar1 = *pbVar8" (identifier "bVar1") (= "=") (pointer_expression "*pbVar8" (* "*") (identifier "pbVar8"))) (; ";")) (expression_statement "uVar3 = (uint)(char)bVar1;" (assignment_expression "uVar3 = (uint)(char)bVar1" (identifier "uVar3") (= "=") (cast_expression "(uint)(char)bVar1" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (cast_expression "(char)bVar1" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (identifier "bVar1")))) (; ";")) (} "}")) (while "while") (parenthesized_expression "((byte)(bVar1 - 0x30) < 8)" (( "(") (binary_expression "(byte)(bVar1 - 0x30) < 8" (call_expression "(byte)(bVar1 - 0x30)" (parenthesized_expression "(byte)" (( "(") (identifier "byte") () ")")) (argument_list "(bVar1 - 0x30)" (( "(") (binary_expression "bVar1 - 0x30" (identifier "bVar1") (- "-") (number_literal "0x30")) () ")"))) (< "<") (number_literal "8")) () ")")) (; ";")) (if_statement "if (bVar1 != 0) {\n      return (undefined2 *)0x0;\n    }" (if "if") (parenthesized_expression "(bVar1 != 0)" (( "(") (binary_expression "bVar1 != 0" (identifier "bVar1") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n      return (undefined2 *)0x0;\n    }" ({ "{") (return_statement "return (undefined2 *)0x0;" (return "return") (cast_expression "(undefined2 *)0x0" (( "(") (type_descriptor "undefined2 *" (type_identifier "undefined2") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0")) (; ";")) (} "}"))) (expression_statement "uVar3 = uVar5 & 0xc00 | 0x3ff;" (assignment_expression "uVar3 = uVar5 & 0xc00 | 0x3ff" (identifier "uVar3") (= "=") (binary_expression "uVar5 & 0xc00 | 0x3ff" (binary_expression "uVar5 & 0xc00" (identifier "uVar5") (& "&") (number_literal "0xc00")) (| "|") (number_literal "0x3ff"))) (; ";")) (if_statement "if (4 < (int)pbVar8 - (int)param_1) {\n      uVar3 = 0xfff;\n    }" (if "if") (parenthesized_expression "(4 < (int)pbVar8 - (int)param_1)" (( "(") (binary_expression "4 < (int)pbVar8 - (int)param_1" (number_literal "4") (< "<") (binary_expression "(int)pbVar8 - (int)param_1" (cast_expression "(int)pbVar8" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pbVar8")) (- "-") (cast_expression "(int)param_1" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_1")))) () ")")) (compound_statement "{\n      uVar3 = 0xfff;\n    }" ({ "{") (expression_statement "uVar3 = 0xfff;" (assignment_expression "uVar3 = 0xfff" (identifier "uVar3") (= "=") (number_literal "0xfff")) (; ";")) (} "}"))) (expression_statement "puVar4 = (undefined2 *)FUN_00023ea0(0x20);" (assignment_expression "puVar4 = (undefined2 *)FUN_00023ea0(0x20)" (identifier "puVar4") (= "=") (cast_expression "(undefined2 *)FUN_00023ea0(0x20)" (( "(") (type_descriptor "undefined2 *" (type_identifier "undefined2") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_00023ea0(0x20)" (identifier "FUN_00023ea0") (argument_list "(0x20)" (( "(") (number_literal "0x20") () ")"))))) (; ";")) (expression_statement "*puVar4 = 0x13d;" (assignment_expression "*puVar4 = 0x13d" (pointer_expression "*puVar4" (* "*") (identifier "puVar4")) (= "=") (number_literal "0x13d")) (; ";")) (expression_statement "*(undefined4 *)(puVar4 + 2) = 0xfff;" (assignment_expression "*(undefined4 *)(puVar4 + 2) = 0xfff" (pointer_expression "*(undefined4 *)(puVar4 + 2)" (* "*") (cast_expression "(undefined4 *)(puVar4 + 2)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar4 + 2)" (( "(") (binary_expression "puVar4 + 2" (identifier "puVar4") (+ "+") (number_literal "2")) () ")")))) (= "=") (number_literal "0xfff")) (; ";")) (expression_statement "*(uint *)(puVar4 + 4) = uVar5;" (assignment_expression "*(uint *)(puVar4 + 4) = uVar5" (pointer_expression "*(uint *)(puVar4 + 4)" (* "*") (cast_expression "(uint *)(puVar4 + 4)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar4 + 4)" (( "(") (binary_expression "puVar4 + 4" (identifier "puVar4") (+ "+") (number_literal "4")) () ")")))) (= "=") (identifier "uVar5")) (; ";")) (expression_statement "*(uint *)(puVar4 + 6) = uVar3;" (assignment_expression "*(uint *)(puVar4 + 6) = uVar3" (pointer_expression "*(uint *)(puVar4 + 6)" (* "*") (cast_expression "(uint *)(puVar4 + 6)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar4 + 6)" (( "(") (binary_expression "puVar4 + 6" (identifier "puVar4") (+ "+") (number_literal "6")) () ")")))) (= "=") (identifier "uVar3")) (; ";")) (expression_statement "*(undefined1 *)((int)puVar4 + 0x11) = 0;" (assignment_expression "*(undefined1 *)((int)puVar4 + 0x11) = 0" (pointer_expression "*(undefined1 *)((int)puVar4 + 0x11)" (* "*") (cast_expression "(undefined1 *)((int)puVar4 + 0x11)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar4 + 0x11)" (( "(") (binary_expression "(int)puVar4 + 0x11" (cast_expression "(int)puVar4" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar4")) (+ "+") (number_literal "0x11")) () ")")))) (= "=") (number_literal "0")) (; ";")) (return_statement "return puVar4;" (return "return") (identifier "puVar4") (; ";")) (} "}"))) (expression_statement "uVar5 = 1;" (assignment_expression "uVar5 = 1" (identifier "uVar5") (= "=") (number_literal "1")) (; ";")) (expression_statement "pbVar8 = param_1;" (assignment_expression "pbVar8 = param_1" (identifier "pbVar8") (= "=") (identifier "param_1")) (; ";")) (if_statement "if (bVar1 == 0) {\n    iVar6 = 0x10;\n  }\n  else {\n    do {\n      bVar2 = (byte)uVar3;\n      bVar1 = pbVar8[1];\n      uVar3 = (uint)bVar1;\n      uVar5 = uVar5 + ((bVar2 & 0xef) == 0x2d || bVar2 == 0x2b);\n      pbVar8 = pbVar8 + 1;\n    } while (bVar1 != 0);\n    iVar6 = uVar5 * 0x10;\n    if ((iVar6 < 0) || (uVar5 >> 0x1c != 0)) {\n                    \n      FUN_000241a0();\n    }\n  }" (if "if") (parenthesized_expression "(bVar1 == 0)" (( "(") (binary_expression "bVar1 == 0" (identifier "bVar1") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n    iVar6 = 0x10;\n  }" ({ "{") (expression_statement "iVar6 = 0x10;" (assignment_expression "iVar6 = 0x10" (identifier "iVar6") (= "=") (number_literal "0x10")) (; ";")) (} "}")) (else_clause "else {\n    do {\n      bVar2 = (byte)uVar3;\n      bVar1 = pbVar8[1];\n      uVar3 = (uint)bVar1;\n      uVar5 = uVar5 + ((bVar2 & 0xef) == 0x2d || bVar2 == 0x2b);\n      pbVar8 = pbVar8 + 1;\n    } while (bVar1 != 0);\n    iVar6 = uVar5 * 0x10;\n    if ((iVar6 < 0) || (uVar5 >> 0x1c != 0)) {\n                    \n      FUN_000241a0();\n    }\n  }" (else "else") (compound_statement "{\n    do {\n      bVar2 = (byte)uVar3;\n      bVar1 = pbVar8[1];\n      uVar3 = (uint)bVar1;\n      uVar5 = uVar5 + ((bVar2 & 0xef) == 0x2d || bVar2 == 0x2b);\n      pbVar8 = pbVar8 + 1;\n    } while (bVar1 != 0);\n    iVar6 = uVar5 * 0x10;\n    if ((iVar6 < 0) || (uVar5 >> 0x1c != 0)) {\n                    \n      FUN_000241a0();\n    }\n  }" ({ "{") (do_statement "do {\n      bVar2 = (byte)uVar3;\n      bVar1 = pbVar8[1];\n      uVar3 = (uint)bVar1;\n      uVar5 = uVar5 + ((bVar2 & 0xef) == 0x2d || bVar2 == 0x2b);\n      pbVar8 = pbVar8 + 1;\n    } while (bVar1 != 0);" (do "do") (compound_statement "{\n      bVar2 = (byte)uVar3;\n      bVar1 = pbVar8[1];\n      uVar3 = (uint)bVar1;\n      uVar5 = uVar5 + ((bVar2 & 0xef) == 0x2d || bVar2 == 0x2b);\n      pbVar8 = pbVar8 + 1;\n    }" ({ "{") (expression_statement "bVar2 = (byte)uVar3;" (assignment_expression "bVar2 = (byte)uVar3" (identifier "bVar2") (= "=") (cast_expression "(byte)uVar3" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (identifier "uVar3"))) (; ";")) (expression_statement "bVar1 = pbVar8[1];" (assignment_expression "bVar1 = pbVar8[1]" (identifier "bVar1") (= "=") (subscript_expression "pbVar8[1]" (identifier "pbVar8") ([ "[") (number_literal "1") (] "]"))) (; ";")) (expression_statement "uVar3 = (uint)bVar1;" (assignment_expression "uVar3 = (uint)bVar1" (identifier "uVar3") (= "=") (cast_expression "(uint)bVar1" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "bVar1"))) (; ";")) (expression_statement "uVar5 = uVar5 + ((bVar2 & 0xef) == 0x2d || bVar2 == 0x2b);" (assignment_expression "uVar5 = uVar5 + ((bVar2 & 0xef) == 0x2d || bVar2 == 0x2b)" (identifier "uVar5") (= "=") (binary_expression "uVar5 + ((bVar2 & 0xef) == 0x2d || bVar2 == 0x2b)" (identifier "uVar5") (+ "+") (parenthesized_expression "((bVar2 & 0xef) == 0x2d || bVar2 == 0x2b)" (( "(") (binary_expression "(bVar2 & 0xef) == 0x2d || bVar2 == 0x2b" (binary_expression "(bVar2 & 0xef) == 0x2d" (parenthesized_expression "(bVar2 & 0xef)" (( "(") (binary_expression "bVar2 & 0xef" (identifier "bVar2") (& "&") (number_literal "0xef")) () ")")) (== "==") (number_literal "0x2d")) (|| "||") (binary_expression "bVar2 == 0x2b" (identifier "bVar2") (== "==") (number_literal "0x2b"))) () ")")))) (; ";")) (expression_statement "pbVar8 = pbVar8 + 1;" (assignment_expression "pbVar8 = pbVar8 + 1" (identifier "pbVar8") (= "=") (binary_expression "pbVar8 + 1" (identifier "pbVar8") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(bVar1 != 0)" (( "(") (binary_expression "bVar1 != 0" (identifier "bVar1") (!= "!=") (number_literal "0")) () ")")) (; ";")) (expression_statement "iVar6 = uVar5 * 0x10;" (assignment_expression "iVar6 = uVar5 * 0x10" (identifier "iVar6") (= "=") (binary_expression "uVar5 * 0x10" (identifier "uVar5") (* "*") (number_literal "0x10"))) (; ";")) (if_statement "if ((iVar6 < 0) || (uVar5 >> 0x1c != 0)) {\n                    \n      FUN_000241a0();\n    }" (if "if") (parenthesized_expression "((iVar6 < 0) || (uVar5 >> 0x1c != 0))" (( "(") (binary_expression "(iVar6 < 0) || (uVar5 >> 0x1c != 0)" (parenthesized_expression "(iVar6 < 0)" (( "(") (binary_expression "iVar6 < 0" (identifier "iVar6") (< "<") (number_literal "0")) () ")")) (|| "||") (parenthesized_expression "(uVar5 >> 0x1c != 0)" (( "(") (binary_expression "uVar5 >> 0x1c != 0" (binary_expression "uVar5 >> 0x1c" (identifier "uVar5") (>> ">>") (number_literal "0x1c")) (!= "!=") (number_literal "0")) () ")"))) () ")")) (compound_statement "{\n                    \n      FUN_000241a0();\n    }" ({ "{") (expression_statement "FUN_000241a0();" (call_expression "FUN_000241a0()" (identifier "FUN_000241a0") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}"))) (} "}")))) (expression_statement "puVar4 = (undefined2 *)FUN_00023ea0(iVar6);" (assignment_expression "puVar4 = (undefined2 *)FUN_00023ea0(iVar6)" (identifier "puVar4") (= "=") (cast_expression "(undefined2 *)FUN_00023ea0(iVar6)" (( "(") (type_descriptor "undefined2 *" (type_identifier "undefined2") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_00023ea0(iVar6)" (identifier "FUN_00023ea0") (argument_list "(iVar6)" (( "(") (identifier "iVar6") () ")"))))) (; ";")) (expression_statement "local_28 = 0;" (assignment_expression "local_28 = 0" (identifier "local_28") (= "=") (number_literal "0")) (; ";")) (labeled_statement "LAB_0001ec81:\n  local_2c = 0;" (statement_identifier "LAB_0001ec81") (: ":") (expression_statement "local_2c = 0;" (assignment_expression "local_2c = 0" (identifier "local_2c") (= "=") (number_literal "0")) (; ";"))) (do_statement "do {\n    local_2d = *param_1;\n    if (local_2d == 0x61) {\n      local_2c = 0xfff;\n    }\n    else {\n      if ((char)local_2d < 'b') break;\n      if (local_2d == 0x6f) {\n        local_2c = local_2c | 0x207;\n      }\n      else if (local_2d == 0x75) {\n        local_2c = local_2c | 0x9c0;\n      }\n      else {\n        if (local_2d != 0x67) goto LAB_0001ecb0;\n        local_2c = local_2c | 0x438;\n      }\n    }\n    param_1 = param_1 + 1;\n  } while( true );" (do "do") (compound_statement "{\n    local_2d = *param_1;\n    if (local_2d == 0x61) {\n      local_2c = 0xfff;\n    }\n    else {\n      if ((char)local_2d < 'b') break;\n      if (local_2d == 0x6f) {\n        local_2c = local_2c | 0x207;\n      }\n      else if (local_2d == 0x75) {\n        local_2c = local_2c | 0x9c0;\n      }\n      else {\n        if (local_2d != 0x67) goto LAB_0001ecb0;\n        local_2c = local_2c | 0x438;\n      }\n    }\n    param_1 = param_1 + 1;\n  }" ({ "{") (expression_statement "local_2d = *param_1;" (assignment_expression "local_2d = *param_1" (identifier "local_2d") (= "=") (pointer_expression "*param_1" (* "*") (identifier "param_1"))) (; ";")) (if_statement "if (local_2d == 0x61) {\n      local_2c = 0xfff;\n    }\n    else {\n      if ((char)local_2d < 'b') break;\n      if (local_2d == 0x6f) {\n        local_2c = local_2c | 0x207;\n      }\n      else if (local_2d == 0x75) {\n        local_2c = local_2c | 0x9c0;\n      }\n      else {\n        if (local_2d != 0x67) goto LAB_0001ecb0;\n        local_2c = local_2c | 0x438;\n      }\n    }" (if "if") (parenthesized_expression "(local_2d == 0x61)" (( "(") (binary_expression "local_2d == 0x61" (identifier "local_2d") (== "==") (number_literal "0x61")) () ")")) (compound_statement "{\n      local_2c = 0xfff;\n    }" ({ "{") (expression_statement "local_2c = 0xfff;" (assignment_expression "local_2c = 0xfff" (identifier "local_2c") (= "=") (number_literal "0xfff")) (; ";")) (} "}")) (else_clause "else {\n      if ((char)local_2d < 'b') break;\n      if (local_2d == 0x6f) {\n        local_2c = local_2c | 0x207;\n      }\n      else if (local_2d == 0x75) {\n        local_2c = local_2c | 0x9c0;\n      }\n      else {\n        if (local_2d != 0x67) goto LAB_0001ecb0;\n        local_2c = local_2c | 0x438;\n      }\n    }" (else "else") (compound_statement "{\n      if ((char)local_2d < 'b') break;\n      if (local_2d == 0x6f) {\n        local_2c = local_2c | 0x207;\n      }\n      else if (local_2d == 0x75) {\n        local_2c = local_2c | 0x9c0;\n      }\n      else {\n        if (local_2d != 0x67) goto LAB_0001ecb0;\n        local_2c = local_2c | 0x438;\n      }\n    }" ({ "{") (if_statement "if ((char)local_2d < 'b') break;" (if "if") (parenthesized_expression "((char)local_2d < 'b')" (( "(") (binary_expression "(char)local_2d < 'b'" (cast_expression "(char)local_2d" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (identifier "local_2d")) (< "<") (char_literal "'b'" (' "'") (character "b") (' "'"))) () ")")) (break_statement "break;" (break "break") (; ";"))) (if_statement "if (local_2d == 0x6f) {\n        local_2c = local_2c | 0x207;\n      }\n      else if (local_2d == 0x75) {\n        local_2c = local_2c | 0x9c0;\n      }\n      else {\n        if (local_2d != 0x67) goto LAB_0001ecb0;\n        local_2c = local_2c | 0x438;\n      }" (if "if") (parenthesized_expression "(local_2d == 0x6f)" (( "(") (binary_expression "local_2d == 0x6f" (identifier "local_2d") (== "==") (number_literal "0x6f")) () ")")) (compound_statement "{\n        local_2c = local_2c | 0x207;\n      }" ({ "{") (expression_statement "local_2c = local_2c | 0x207;" (assignment_expression "local_2c = local_2c | 0x207" (identifier "local_2c") (= "=") (binary_expression "local_2c | 0x207" (identifier "local_2c") (| "|") (number_literal "0x207"))) (; ";")) (} "}")) (else_clause "else if (local_2d == 0x75) {\n        local_2c = local_2c | 0x9c0;\n      }\n      else {\n        if (local_2d != 0x67) goto LAB_0001ecb0;\n        local_2c = local_2c | 0x438;\n      }" (else "else") (if_statement "if (local_2d == 0x75) {\n        local_2c = local_2c | 0x9c0;\n      }\n      else {\n        if (local_2d != 0x67) goto LAB_0001ecb0;\n        local_2c = local_2c | 0x438;\n      }" (if "if") (parenthesized_expression "(local_2d == 0x75)" (( "(") (binary_expression "local_2d == 0x75" (identifier "local_2d") (== "==") (number_literal "0x75")) () ")")) (compound_statement "{\n        local_2c = local_2c | 0x9c0;\n      }" ({ "{") (expression_statement "local_2c = local_2c | 0x9c0;" (assignment_expression "local_2c = local_2c | 0x9c0" (identifier "local_2c") (= "=") (binary_expression "local_2c | 0x9c0" (identifier "local_2c") (| "|") (number_literal "0x9c0"))) (; ";")) (} "}")) (else_clause "else {\n        if (local_2d != 0x67) goto LAB_0001ecb0;\n        local_2c = local_2c | 0x438;\n      }" (else "else") (compound_statement "{\n        if (local_2d != 0x67) goto LAB_0001ecb0;\n        local_2c = local_2c | 0x438;\n      }" ({ "{") (if_statement "if (local_2d != 0x67) goto LAB_0001ecb0;" (if "if") (parenthesized_expression "(local_2d != 0x67)" (( "(") (binary_expression "local_2d != 0x67" (identifier "local_2d") (!= "!=") (number_literal "0x67")) () ")")) (goto_statement "goto LAB_0001ecb0;" (goto "goto") (statement_identifier "LAB_0001ecb0") (; ";"))) (expression_statement "local_2c = local_2c | 0x438;" (assignment_expression "local_2c = local_2c | 0x438" (identifier "local_2c") (= "=") (binary_expression "local_2c | 0x438" (identifier "local_2c") (| "|") (number_literal "0x438"))) (; ";")) (} "}")))))) (} "}")))) (expression_statement "param_1 = param_1 + 1;" (assignment_expression "param_1 = param_1 + 1" (identifier "param_1") (= "=") (binary_expression "param_1 + 1" (identifier "param_1") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (; ";")) (if_statement "if (((local_2d != 0x2d) && (local_2d != 0x3d)) && (local_2d != 0x2b)) goto LAB_0001ecb0;" (if "if") (parenthesized_expression "(((local_2d != 0x2d) && (local_2d != 0x3d)) && (local_2d != 0x2b))" (( "(") (binary_expression "((local_2d != 0x2d) && (local_2d != 0x3d)) && (local_2d != 0x2b)" (parenthesized_expression "((local_2d != 0x2d) && (local_2d != 0x3d))" (( "(") (binary_expression "(local_2d != 0x2d) && (local_2d != 0x3d)" (parenthesized_expression "(local_2d != 0x2d)" (( "(") (binary_expression "local_2d != 0x2d" (identifier "local_2d") (!= "!=") (number_literal "0x2d")) () ")")) (&& "&&") (parenthesized_expression "(local_2d != 0x3d)" (( "(") (binary_expression "local_2d != 0x3d" (identifier "local_2d") (!= "!=") (number_literal "0x3d")) () ")"))) () ")")) (&& "&&") (parenthesized_expression "(local_2d != 0x2b)" (( "(") (binary_expression "local_2d != 0x2b" (identifier "local_2d") (!= "!=") (number_literal "0x2b")) () ")"))) () ")")) (goto_statement "goto LAB_0001ecb0;" (goto "goto") (statement_identifier "LAB_0001ecb0") (; ";"))) (expression_statement "pbVar8 = (byte *)(puVar4 + local_28 * 8);" (assignment_expression "pbVar8 = (byte *)(puVar4 + local_28 * 8)" (identifier "pbVar8") (= "=") (cast_expression "(byte *)(puVar4 + local_28 * 8)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar4 + local_28 * 8)" (( "(") (binary_expression "puVar4 + local_28 * 8" (identifier "puVar4") (+ "+") (binary_expression "local_28 * 8" (identifier "local_28") (* "*") (number_literal "8"))) () ")")))) (; ";")) (do_statement "do {\n    local_28 = local_28 + 1;\n    bVar1 = param_1[1];\n    iVar6 = (int)(char)bVar1;\n    pbVar7 = param_1 + 1;\n    if (bVar1 == 0x67) {\n      uVar3 = 0x38;\nLAB_0001ed55:\n      pbVar8[1] = 3;\n      *(uint *)(pbVar8 + 8) = uVar3;\n      *pbVar8 = local_2d;\n      *(uint *)(pbVar8 + 4) = local_2c;\n      pbVar7 = param_1 + 2;\n      local_2d = *pbVar7;\nLAB_0001ed74:\n      if (local_2c != 0) {\n        uVar3 = local_2c & uVar3;\n      }\n    }\n    else {\n      if ('g' < (char)bVar1) {\n        if (bVar1 == 0x6f) {\n          uVar3 = 7;\n        }\n        else {\n          uVar3 = 0x1c0;\n          if (bVar1 != 0x75) goto LAB_0001ee40;\n        }\n        goto LAB_0001ed55;\n      }\n      if (7 < (byte)(bVar1 - 0x30)) {\nLAB_0001ee40:\n        uVar3 = 0;\n        if ((byte)(iVar6 - 0x58U) < 0x21) {\n                    \n                    \n          puVar4 = (undefined2 *)\n                   (*(code *)(*(int *)("__lxstat64" + (iVar6 - 0x58U & 0xff) * 4 + unaff_EBP) +\n                             unaff_EBP + 0x1c40a))();\n          return puVar4;\n        }\n        *pbVar8 = local_2d;\n        pbVar8[1] = 1;\n        *(uint *)(pbVar8 + 4) = local_2c;\n        pbVar8[8] = 0;\n        pbVar8[9] = 0;\n        pbVar8[10] = 0;\n        pbVar8[0xb] = 0;\n        local_2d = bVar1;\n        goto LAB_0001ed74;\n      }\n      uVar3 = 0;\n      do {\n        uVar3 = iVar6 + -0x30 + uVar3 * 8;\n        pbVar7 = pbVar7 + 1;\n        if (0xfff < uVar3) goto LAB_0001ecb0;\n        bVar1 = *pbVar7;\n        iVar6 = (int)(char)bVar1;\n      } while ((byte)(bVar1 - 0x30) < 8);\n      if ((local_2c != 0) || ((bVar1 != 0 && (bVar1 != 0x2c)))) goto LAB_0001ecb0;\n      *(uint *)(pbVar8 + 8) = uVar3;\n      uVar3 = 0xfff;\n      pbVar8[1] = 1;\n      *pbVar8 = local_2d;\n      pbVar8[4] = 0xff;\n      pbVar8[5] = 0xf;\n      pbVar8[6] = 0;\n      pbVar8[7] = 0;\n      local_2c = 0xfff;\n      local_2d = bVar1;\n    }\n    *(uint *)(pbVar8 + 0xc) = uVar3;\n    pbVar8 = pbVar8 + 0x10;\n    param_1 = pbVar7;\n  } while (((local_2d & 0xef) == 0x2d) || (local_2d == 0x2b));" (do "do") (compound_statement "{\n    local_28 = local_28 + 1;\n    bVar1 = param_1[1];\n    iVar6 = (int)(char)bVar1;\n    pbVar7 = param_1 + 1;\n    if (bVar1 == 0x67) {\n      uVar3 = 0x38;\nLAB_0001ed55:\n      pbVar8[1] = 3;\n      *(uint *)(pbVar8 + 8) = uVar3;\n      *pbVar8 = local_2d;\n      *(uint *)(pbVar8 + 4) = local_2c;\n      pbVar7 = param_1 + 2;\n      local_2d = *pbVar7;\nLAB_0001ed74:\n      if (local_2c != 0) {\n        uVar3 = local_2c & uVar3;\n      }\n    }\n    else {\n      if ('g' < (char)bVar1) {\n        if (bVar1 == 0x6f) {\n          uVar3 = 7;\n        }\n        else {\n          uVar3 = 0x1c0;\n          if (bVar1 != 0x75) goto LAB_0001ee40;\n        }\n        goto LAB_0001ed55;\n      }\n      if (7 < (byte)(bVar1 - 0x30)) {\nLAB_0001ee40:\n        uVar3 = 0;\n        if ((byte)(iVar6 - 0x58U) < 0x21) {\n                    \n                    \n          puVar4 = (undefined2 *)\n                   (*(code *)(*(int *)("__lxstat64" + (iVar6 - 0x58U & 0xff) * 4 + unaff_EBP) +\n                             unaff_EBP + 0x1c40a))();\n          return puVar4;\n        }\n        *pbVar8 = local_2d;\n        pbVar8[1] = 1;\n        *(uint *)(pbVar8 + 4) = local_2c;\n        pbVar8[8] = 0;\n        pbVar8[9] = 0;\n        pbVar8[10] = 0;\n        pbVar8[0xb] = 0;\n        local_2d = bVar1;\n        goto LAB_0001ed74;\n      }\n      uVar3 = 0;\n      do {\n        uVar3 = iVar6 + -0x30 + uVar3 * 8;\n        pbVar7 = pbVar7 + 1;\n        if (0xfff < uVar3) goto LAB_0001ecb0;\n        bVar1 = *pbVar7;\n        iVar6 = (int)(char)bVar1;\n      } while ((byte)(bVar1 - 0x30) < 8);\n      if ((local_2c != 0) || ((bVar1 != 0 && (bVar1 != 0x2c)))) goto LAB_0001ecb0;\n      *(uint *)(pbVar8 + 8) = uVar3;\n      uVar3 = 0xfff;\n      pbVar8[1] = 1;\n      *pbVar8 = local_2d;\n      pbVar8[4] = 0xff;\n      pbVar8[5] = 0xf;\n      pbVar8[6] = 0;\n      pbVar8[7] = 0;\n      local_2c = 0xfff;\n      local_2d = bVar1;\n    }\n    *(uint *)(pbVar8 + 0xc) = uVar3;\n    pbVar8 = pbVar8 + 0x10;\n    param_1 = pbVar7;\n  }" ({ "{") (expression_statement "local_28 = local_28 + 1;" (assignment_expression "local_28 = local_28 + 1" (identifier "local_28") (= "=") (binary_expression "local_28 + 1" (identifier "local_28") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "bVar1 = param_1[1];" (assignment_expression "bVar1 = param_1[1]" (identifier "bVar1") (= "=") (subscript_expression "param_1[1]" (identifier "param_1") ([ "[") (number_literal "1") (] "]"))) (; ";")) (expression_statement "iVar6 = (int)(char)bVar1;" (assignment_expression "iVar6 = (int)(char)bVar1" (identifier "iVar6") (= "=") (cast_expression "(int)(char)bVar1" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (cast_expression "(char)bVar1" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (identifier "bVar1")))) (; ";")) (expression_statement "pbVar7 = param_1 + 1;" (assignment_expression "pbVar7 = param_1 + 1" (identifier "pbVar7") (= "=") (binary_expression "param_1 + 1" (identifier "param_1") (+ "+") (number_literal "1"))) (; ";")) (if_statement "if (bVar1 == 0x67) {\n      uVar3 = 0x38;\nLAB_0001ed55:\n      pbVar8[1] = 3;\n      *(uint *)(pbVar8 + 8) = uVar3;\n      *pbVar8 = local_2d;\n      *(uint *)(pbVar8 + 4) = local_2c;\n      pbVar7 = param_1 + 2;\n      local_2d = *pbVar7;\nLAB_0001ed74:\n      if (local_2c != 0) {\n        uVar3 = local_2c & uVar3;\n      }\n    }\n    else {\n      if ('g' < (char)bVar1) {\n        if (bVar1 == 0x6f) {\n          uVar3 = 7;\n        }\n        else {\n          uVar3 = 0x1c0;\n          if (bVar1 != 0x75) goto LAB_0001ee40;\n        }\n        goto LAB_0001ed55;\n      }\n      if (7 < (byte)(bVar1 - 0x30)) {\nLAB_0001ee40:\n        uVar3 = 0;\n        if ((byte)(iVar6 - 0x58U) < 0x21) {\n                    \n                    \n          puVar4 = (undefined2 *)\n                   (*(code *)(*(int *)("__lxstat64" + (iVar6 - 0x58U & 0xff) * 4 + unaff_EBP) +\n                             unaff_EBP + 0x1c40a))();\n          return puVar4;\n        }\n        *pbVar8 = local_2d;\n        pbVar8[1] = 1;\n        *(uint *)(pbVar8 + 4) = local_2c;\n        pbVar8[8] = 0;\n        pbVar8[9] = 0;\n        pbVar8[10] = 0;\n        pbVar8[0xb] = 0;\n        local_2d = bVar1;\n        goto LAB_0001ed74;\n      }\n      uVar3 = 0;\n      do {\n        uVar3 = iVar6 + -0x30 + uVar3 * 8;\n        pbVar7 = pbVar7 + 1;\n        if (0xfff < uVar3) goto LAB_0001ecb0;\n        bVar1 = *pbVar7;\n        iVar6 = (int)(char)bVar1;\n      } while ((byte)(bVar1 - 0x30) < 8);\n      if ((local_2c != 0) || ((bVar1 != 0 && (bVar1 != 0x2c)))) goto LAB_0001ecb0;\n      *(uint *)(pbVar8 + 8) = uVar3;\n      uVar3 = 0xfff;\n      pbVar8[1] = 1;\n      *pbVar8 = local_2d;\n      pbVar8[4] = 0xff;\n      pbVar8[5] = 0xf;\n      pbVar8[6] = 0;\n      pbVar8[7] = 0;\n      local_2c = 0xfff;\n      local_2d = bVar1;\n    }" (if "if") (parenthesized_expression "(bVar1 == 0x67)" (( "(") (binary_expression "bVar1 == 0x67" (identifier "bVar1") (== "==") (number_literal "0x67")) () ")")) (compound_statement "{\n      uVar3 = 0x38;\nLAB_0001ed55:\n      pbVar8[1] = 3;\n      *(uint *)(pbVar8 + 8) = uVar3;\n      *pbVar8 = local_2d;\n      *(uint *)(pbVar8 + 4) = local_2c;\n      pbVar7 = param_1 + 2;\n      local_2d = *pbVar7;\nLAB_0001ed74:\n      if (local_2c != 0) {\n        uVar3 = local_2c & uVar3;\n      }\n    }" ({ "{") (expression_statement "uVar3 = 0x38;" (assignment_expression "uVar3 = 0x38" (identifier "uVar3") (= "=") (number_literal "0x38")) (; ";")) (labeled_statement "LAB_0001ed55:\n      pbVar8[1] = 3;" (statement_identifier "LAB_0001ed55") (: ":") (expression_statement "pbVar8[1] = 3;" (assignment_expression "pbVar8[1] = 3" (subscript_expression "pbVar8[1]" (identifier "pbVar8") ([ "[") (number_literal "1") (] "]")) (= "=") (number_literal "3")) (; ";"))) (expression_statement "*(uint *)(pbVar8 + 8) = uVar3;" (assignment_expression "*(uint *)(pbVar8 + 8) = uVar3" (pointer_expression "*(uint *)(pbVar8 + 8)" (* "*") (cast_expression "(uint *)(pbVar8 + 8)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(pbVar8 + 8)" (( "(") (binary_expression "pbVar8 + 8" (identifier "pbVar8") (+ "+") (number_literal "8")) () ")")))) (= "=") (identifier "uVar3")) (; ";")) (expression_statement "*pbVar8 = local_2d;" (assignment_expression "*pbVar8 = local_2d" (pointer_expression "*pbVar8" (* "*") (identifier "pbVar8")) (= "=") (identifier "local_2d")) (; ";")) (expression_statement "*(uint *)(pbVar8 + 4) = local_2c;" (assignment_expression "*(uint *)(pbVar8 + 4) = local_2c" (pointer_expression "*(uint *)(pbVar8 + 4)" (* "*") (cast_expression "(uint *)(pbVar8 + 4)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(pbVar8 + 4)" (( "(") (binary_expression "pbVar8 + 4" (identifier "pbVar8") (+ "+") (number_literal "4")) () ")")))) (= "=") (identifier "local_2c")) (; ";")) (expression_statement "pbVar7 = param_1 + 2;" (assignment_expression "pbVar7 = param_1 + 2" (identifier "pbVar7") (= "=") (binary_expression "param_1 + 2" (identifier "param_1") (+ "+") (number_literal "2"))) (; ";")) (expression_statement "local_2d = *pbVar7;" (assignment_expression "local_2d = *pbVar7" (identifier "local_2d") (= "=") (pointer_expression "*pbVar7" (* "*") (identifier "pbVar7"))) (; ";")) (labeled_statement "LAB_0001ed74:\n      if (local_2c != 0) {\n        uVar3 = local_2c & uVar3;\n      }" (statement_identifier "LAB_0001ed74") (: ":") (if_statement "if (local_2c != 0) {\n        uVar3 = local_2c & uVar3;\n      }" (if "if") (parenthesized_expression "(local_2c != 0)" (( "(") (binary_expression "local_2c != 0" (identifier "local_2c") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n        uVar3 = local_2c & uVar3;\n      }" ({ "{") (expression_statement "uVar3 = local_2c & uVar3;" (assignment_expression "uVar3 = local_2c & uVar3" (identifier "uVar3") (= "=") (binary_expression "local_2c & uVar3" (identifier "local_2c") (& "&") (identifier "uVar3"))) (; ";")) (} "}")))) (} "}")) (else_clause "else {\n      if ('g' < (char)bVar1) {\n        if (bVar1 == 0x6f) {\n          uVar3 = 7;\n        }\n        else {\n          uVar3 = 0x1c0;\n          if (bVar1 != 0x75) goto LAB_0001ee40;\n        }\n        goto LAB_0001ed55;\n      }\n      if (7 < (byte)(bVar1 - 0x30)) {\nLAB_0001ee40:\n        uVar3 = 0;\n        if ((byte)(iVar6 - 0x58U) < 0x21) {\n                    \n                    \n          puVar4 = (undefined2 *)\n                   (*(code *)(*(int *)("__lxstat64" + (iVar6 - 0x58U & 0xff) * 4 + unaff_EBP) +\n                             unaff_EBP + 0x1c40a))();\n          return puVar4;\n        }\n        *pbVar8 = local_2d;\n        pbVar8[1] = 1;\n        *(uint *)(pbVar8 + 4) = local_2c;\n        pbVar8[8] = 0;\n        pbVar8[9] = 0;\n        pbVar8[10] = 0;\n        pbVar8[0xb] = 0;\n        local_2d = bVar1;\n        goto LAB_0001ed74;\n      }\n      uVar3 = 0;\n      do {\n        uVar3 = iVar6 + -0x30 + uVar3 * 8;\n        pbVar7 = pbVar7 + 1;\n        if (0xfff < uVar3) goto LAB_0001ecb0;\n        bVar1 = *pbVar7;\n        iVar6 = (int)(char)bVar1;\n      } while ((byte)(bVar1 - 0x30) < 8);\n      if ((local_2c != 0) || ((bVar1 != 0 && (bVar1 != 0x2c)))) goto LAB_0001ecb0;\n      *(uint *)(pbVar8 + 8) = uVar3;\n      uVar3 = 0xfff;\n      pbVar8[1] = 1;\n      *pbVar8 = local_2d;\n      pbVar8[4] = 0xff;\n      pbVar8[5] = 0xf;\n      pbVar8[6] = 0;\n      pbVar8[7] = 0;\n      local_2c = 0xfff;\n      local_2d = bVar1;\n    }" (else "else") (compound_statement "{\n      if ('g' < (char)bVar1) {\n        if (bVar1 == 0x6f) {\n          uVar3 = 7;\n        }\n        else {\n          uVar3 = 0x1c0;\n          if (bVar1 != 0x75) goto LAB_0001ee40;\n        }\n        goto LAB_0001ed55;\n      }\n      if (7 < (byte)(bVar1 - 0x30)) {\nLAB_0001ee40:\n        uVar3 = 0;\n        if ((byte)(iVar6 - 0x58U) < 0x21) {\n                    \n                    \n          puVar4 = (undefined2 *)\n                   (*(code *)(*(int *)("__lxstat64" + (iVar6 - 0x58U & 0xff) * 4 + unaff_EBP) +\n                             unaff_EBP + 0x1c40a))();\n          return puVar4;\n        }\n        *pbVar8 = local_2d;\n        pbVar8[1] = 1;\n        *(uint *)(pbVar8 + 4) = local_2c;\n        pbVar8[8] = 0;\n        pbVar8[9] = 0;\n        pbVar8[10] = 0;\n        pbVar8[0xb] = 0;\n        local_2d = bVar1;\n        goto LAB_0001ed74;\n      }\n      uVar3 = 0;\n      do {\n        uVar3 = iVar6 + -0x30 + uVar3 * 8;\n        pbVar7 = pbVar7 + 1;\n        if (0xfff < uVar3) goto LAB_0001ecb0;\n        bVar1 = *pbVar7;\n        iVar6 = (int)(char)bVar1;\n      } while ((byte)(bVar1 - 0x30) < 8);\n      if ((local_2c != 0) || ((bVar1 != 0 && (bVar1 != 0x2c)))) goto LAB_0001ecb0;\n      *(uint *)(pbVar8 + 8) = uVar3;\n      uVar3 = 0xfff;\n      pbVar8[1] = 1;\n      *pbVar8 = local_2d;\n      pbVar8[4] = 0xff;\n      pbVar8[5] = 0xf;\n      pbVar8[6] = 0;\n      pbVar8[7] = 0;\n      local_2c = 0xfff;\n      local_2d = bVar1;\n    }" ({ "{") (if_statement "if ('g' < (char)bVar1) {\n        if (bVar1 == 0x6f) {\n          uVar3 = 7;\n        }\n        else {\n          uVar3 = 0x1c0;\n          if (bVar1 != 0x75) goto LAB_0001ee40;\n        }\n        goto LAB_0001ed55;\n      }" (if "if") (parenthesized_expression "('g' < (char)bVar1)" (( "(") (binary_expression "'g' < (char)bVar1" (char_literal "'g'" (' "'") (character "g") (' "'")) (< "<") (cast_expression "(char)bVar1" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (identifier "bVar1"))) () ")")) (compound_statement "{\n        if (bVar1 == 0x6f) {\n          uVar3 = 7;\n        }\n        else {\n          uVar3 = 0x1c0;\n          if (bVar1 != 0x75) goto LAB_0001ee40;\n        }\n        goto LAB_0001ed55;\n      }" ({ "{") (if_statement "if (bVar1 == 0x6f) {\n          uVar3 = 7;\n        }\n        else {\n          uVar3 = 0x1c0;\n          if (bVar1 != 0x75) goto LAB_0001ee40;\n        }" (if "if") (parenthesized_expression "(bVar1 == 0x6f)" (( "(") (binary_expression "bVar1 == 0x6f" (identifier "bVar1") (== "==") (number_literal "0x6f")) () ")")) (compound_statement "{\n          uVar3 = 7;\n        }" ({ "{") (expression_statement "uVar3 = 7;" (assignment_expression "uVar3 = 7" (identifier "uVar3") (= "=") (number_literal "7")) (; ";")) (} "}")) (else_clause "else {\n          uVar3 = 0x1c0;\n          if (bVar1 != 0x75) goto LAB_0001ee40;\n        }" (else "else") (compound_statement "{\n          uVar3 = 0x1c0;\n          if (bVar1 != 0x75) goto LAB_0001ee40;\n        }" ({ "{") (expression_statement "uVar3 = 0x1c0;" (assignment_expression "uVar3 = 0x1c0" (identifier "uVar3") (= "=") (number_literal "0x1c0")) (; ";")) (if_statement "if (bVar1 != 0x75) goto LAB_0001ee40;" (if "if") (parenthesized_expression "(bVar1 != 0x75)" (( "(") (binary_expression "bVar1 != 0x75" (identifier "bVar1") (!= "!=") (number_literal "0x75")) () ")")) (goto_statement "goto LAB_0001ee40;" (goto "goto") (statement_identifier "LAB_0001ee40") (; ";"))) (} "}")))) (goto_statement "goto LAB_0001ed55;" (goto "goto") (statement_identifier "LAB_0001ed55") (; ";")) (} "}"))) (if_statement "if (7 < (byte)(bVar1 - 0x30)) {\nLAB_0001ee40:\n        uVar3 = 0;\n        if ((byte)(iVar6 - 0x58U) < 0x21) {\n                    \n                    \n          puVar4 = (undefined2 *)\n                   (*(code *)(*(int *)("__lxstat64" + (iVar6 - 0x58U & 0xff) * 4 + unaff_EBP) +\n                             unaff_EBP + 0x1c40a))();\n          return puVar4;\n        }\n        *pbVar8 = local_2d;\n        pbVar8[1] = 1;\n        *(uint *)(pbVar8 + 4) = local_2c;\n        pbVar8[8] = 0;\n        pbVar8[9] = 0;\n        pbVar8[10] = 0;\n        pbVar8[0xb] = 0;\n        local_2d = bVar1;\n        goto LAB_0001ed74;\n      }" (if "if") (parenthesized_expression "(7 < (byte)(bVar1 - 0x30))" (( "(") (binary_expression "7 < (byte)(bVar1 - 0x30)" (number_literal "7") (< "<") (call_expression "(byte)(bVar1 - 0x30)" (parenthesized_expression "(byte)" (( "(") (identifier "byte") () ")")) (argument_list "(bVar1 - 0x30)" (( "(") (binary_expression "bVar1 - 0x30" (identifier "bVar1") (- "-") (number_literal "0x30")) () ")")))) () ")")) (compound_statement "{\nLAB_0001ee40:\n        uVar3 = 0;\n        if ((byte)(iVar6 - 0x58U) < 0x21) {\n                    \n                    \n          puVar4 = (undefined2 *)\n                   (*(code *)(*(int *)("__lxstat64" + (iVar6 - 0x58U & 0xff) * 4 + unaff_EBP) +\n                             unaff_EBP + 0x1c40a))();\n          return puVar4;\n        }\n        *pbVar8 = local_2d;\n        pbVar8[1] = 1;\n        *(uint *)(pbVar8 + 4) = local_2c;\n        pbVar8[8] = 0;\n        pbVar8[9] = 0;\n        pbVar8[10] = 0;\n        pbVar8[0xb] = 0;\n        local_2d = bVar1;\n        goto LAB_0001ed74;\n      }" ({ "{") (labeled_statement "LAB_0001ee40:\n        uVar3 = 0;" (statement_identifier "LAB_0001ee40") (: ":") (expression_statement "uVar3 = 0;" (assignment_expression "uVar3 = 0" (identifier "uVar3") (= "=") (number_literal "0")) (; ";"))) (if_statement "if ((byte)(iVar6 - 0x58U) < 0x21) {\n                    \n                    \n          puVar4 = (undefined2 *)\n                   (*(code *)(*(int *)("__lxstat64" + (iVar6 - 0x58U & 0xff) * 4 + unaff_EBP) +\n                             unaff_EBP + 0x1c40a))();\n          return puVar4;\n        }" (if "if") (parenthesized_expression "((byte)(iVar6 - 0x58U) < 0x21)" (( "(") (binary_expression "(byte)(iVar6 - 0x58U) < 0x21" (call_expression "(byte)(iVar6 - 0x58U)" (parenthesized_expression "(byte)" (( "(") (identifier "byte") () ")")) (argument_list "(iVar6 - 0x58U)" (( "(") (binary_expression "iVar6 - 0x58U" (identifier "iVar6") (- "-") (number_literal "0x58U")) () ")"))) (< "<") (number_literal "0x21")) () ")")) (compound_statement "{\n                    \n                    \n          puVar4 = (undefined2 *)\n                   (*(code *)(*(int *)("__lxstat64" + (iVar6 - 0x58U & 0xff) * 4 + unaff_EBP) +\n                             unaff_EBP + 0x1c40a))();\n          return puVar4;\n        }" ({ "{") (expression_statement "puVar4 = (undefined2 *)\n                   (*(code *)(*(int *)("__lxstat64" + (iVar6 - 0x58U & 0xff) * 4 + unaff_EBP) +\n                             unaff_EBP + 0x1c40a))();" (assignment_expression "puVar4 = (undefined2 *)\n                   (*(code *)(*(int *)("__lxstat64" + (iVar6 - 0x58U & 0xff) * 4 + unaff_EBP) +\n                             unaff_EBP + 0x1c40a))()" (identifier "puVar4") (= "=") (cast_expression "(undefined2 *)\n                   (*(code *)(*(int *)("__lxstat64" + (iVar6 - 0x58U & 0xff) * 4 + unaff_EBP) +\n                             unaff_EBP + 0x1c40a))()" (( "(") (type_descriptor "undefined2 *" (type_identifier "undefined2") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "(*(code *)(*(int *)("__lxstat64" + (iVar6 - 0x58U & 0xff) * 4 + unaff_EBP) +\n                             unaff_EBP + 0x1c40a))()" (parenthesized_expression "(*(code *)(*(int *)("__lxstat64" + (iVar6 - 0x58U & 0xff) * 4 + unaff_EBP) +\n                             unaff_EBP + 0x1c40a))" (( "(") (pointer_expression "*(code *)(*(int *)("__lxstat64" + (iVar6 - 0x58U & 0xff) * 4 + unaff_EBP) +\n                             unaff_EBP + 0x1c40a)" (* "*") (cast_expression "(code *)(*(int *)("__lxstat64" + (iVar6 - 0x58U & 0xff) * 4 + unaff_EBP) +\n                             unaff_EBP + 0x1c40a)" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)("__lxstat64" + (iVar6 - 0x58U & 0xff) * 4 + unaff_EBP) +\n                             unaff_EBP + 0x1c40a)" (( "(") (binary_expression "*(int *)("__lxstat64" + (iVar6 - 0x58U & 0xff) * 4 + unaff_EBP) +\n                             unaff_EBP + 0x1c40a" (binary_expression "*(int *)("__lxstat64" + (iVar6 - 0x58U & 0xff) * 4 + unaff_EBP) +\n                             unaff_EBP" (pointer_expression "*(int *)("__lxstat64" + (iVar6 - 0x58U & 0xff) * 4 + unaff_EBP)" (* "*") (cast_expression "(int *)("__lxstat64" + (iVar6 - 0x58U & 0xff) * 4 + unaff_EBP)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "("__lxstat64" + (iVar6 - 0x58U & 0xff) * 4 + unaff_EBP)" (( "(") (binary_expression ""__lxstat64" + (iVar6 - 0x58U & 0xff) * 4 + unaff_EBP" (binary_expression ""__lxstat64" + (iVar6 - 0x58U & 0xff) * 4" (string_literal ""__lxstat64"" (" """) (string_content "__lxstat64") (" """)) (+ "+") (binary_expression "(iVar6 - 0x58U & 0xff) * 4" (parenthesized_expression "(iVar6 - 0x58U & 0xff)" (( "(") (binary_expression "iVar6 - 0x58U & 0xff" (binary_expression "iVar6 - 0x58U" (identifier "iVar6") (- "-") (number_literal "0x58U")) (& "&") (number_literal "0xff")) () ")")) (* "*") (number_literal "4"))) (+ "+") (identifier "unaff_EBP")) () ")")))) (+ "+") (identifier "unaff_EBP")) (+ "+") (number_literal "0x1c40a")) () ")")))) () ")")) (argument_list "()" (( "(") () ")"))))) (; ";")) (return_statement "return puVar4;" (return "return") (identifier "puVar4") (; ";")) (} "}"))) (expression_statement "*pbVar8 = local_2d;" (assignment_expression "*pbVar8 = local_2d" (pointer_expression "*pbVar8" (* "*") (identifier "pbVar8")) (= "=") (identifier "local_2d")) (; ";")) (expression_statement "pbVar8[1] = 1;" (assignment_expression "pbVar8[1] = 1" (subscript_expression "pbVar8[1]" (identifier "pbVar8") ([ "[") (number_literal "1") (] "]")) (= "=") (number_literal "1")) (; ";")) (expression_statement "*(uint *)(pbVar8 + 4) = local_2c;" (assignment_expression "*(uint *)(pbVar8 + 4) = local_2c" (pointer_expression "*(uint *)(pbVar8 + 4)" (* "*") (cast_expression "(uint *)(pbVar8 + 4)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(pbVar8 + 4)" (( "(") (binary_expression "pbVar8 + 4" (identifier "pbVar8") (+ "+") (number_literal "4")) () ")")))) (= "=") (identifier "local_2c")) (; ";")) (expression_statement "pbVar8[8] = 0;" (assignment_expression "pbVar8[8] = 0" (subscript_expression "pbVar8[8]" (identifier "pbVar8") ([ "[") (number_literal "8") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "pbVar8[9] = 0;" (assignment_expression "pbVar8[9] = 0" (subscript_expression "pbVar8[9]" (identifier "pbVar8") ([ "[") (number_literal "9") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "pbVar8[10] = 0;" (assignment_expression "pbVar8[10] = 0" (subscript_expression "pbVar8[10]" (identifier "pbVar8") ([ "[") (number_literal "10") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "pbVar8[0xb] = 0;" (assignment_expression "pbVar8[0xb] = 0" (subscript_expression "pbVar8[0xb]" (identifier "pbVar8") ([ "[") (number_literal "0xb") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "local_2d = bVar1;" (assignment_expression "local_2d = bVar1" (identifier "local_2d") (= "=") (identifier "bVar1")) (; ";")) (goto_statement "goto LAB_0001ed74;" (goto "goto") (statement_identifier "LAB_0001ed74") (; ";")) (} "}"))) (expression_statement "uVar3 = 0;" (assignment_expression "uVar3 = 0" (identifier "uVar3") (= "=") (number_literal "0")) (; ";")) (do_statement "do {\n        uVar3 = iVar6 + -0x30 + uVar3 * 8;\n        pbVar7 = pbVar7 + 1;\n        if (0xfff < uVar3) goto LAB_0001ecb0;\n        bVar1 = *pbVar7;\n        iVar6 = (int)(char)bVar1;\n      } while ((byte)(bVar1 - 0x30) < 8);" (do "do") (compound_statement "{\n        uVar3 = iVar6 + -0x30 + uVar3 * 8;\n        pbVar7 = pbVar7 + 1;\n        if (0xfff < uVar3) goto LAB_0001ecb0;\n        bVar1 = *pbVar7;\n        iVar6 = (int)(char)bVar1;\n      }" ({ "{") (expression_statement "uVar3 = iVar6 + -0x30 + uVar3 * 8;" (assignment_expression "uVar3 = iVar6 + -0x30 + uVar3 * 8" (identifier "uVar3") (= "=") (binary_expression "iVar6 + -0x30 + uVar3 * 8" (binary_expression "iVar6 + -0x30" (identifier "iVar6") (+ "+") (number_literal "-0x30")) (+ "+") (binary_expression "uVar3 * 8" (identifier "uVar3") (* "*") (number_literal "8")))) (; ";")) (expression_statement "pbVar7 = pbVar7 + 1;" (assignment_expression "pbVar7 = pbVar7 + 1" (identifier "pbVar7") (= "=") (binary_expression "pbVar7 + 1" (identifier "pbVar7") (+ "+") (number_literal "1"))) (; ";")) (if_statement "if (0xfff < uVar3) goto LAB_0001ecb0;" (if "if") (parenthesized_expression "(0xfff < uVar3)" (( "(") (binary_expression "0xfff < uVar3" (number_literal "0xfff") (< "<") (identifier "uVar3")) () ")")) (goto_statement "goto LAB_0001ecb0;" (goto "goto") (statement_identifier "LAB_0001ecb0") (; ";"))) (expression_statement "bVar1 = *pbVar7;" (assignment_expression "bVar1 = *pbVar7" (identifier "bVar1") (= "=") (pointer_expression "*pbVar7" (* "*") (identifier "pbVar7"))) (; ";")) (expression_statement "iVar6 = (int)(char)bVar1;" (assignment_expression "iVar6 = (int)(char)bVar1" (identifier "iVar6") (= "=") (cast_expression "(int)(char)bVar1" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (cast_expression "(char)bVar1" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (identifier "bVar1")))) (; ";")) (} "}")) (while "while") (parenthesized_expression "((byte)(bVar1 - 0x30) < 8)" (( "(") (binary_expression "(byte)(bVar1 - 0x30) < 8" (call_expression "(byte)(bVar1 - 0x30)" (parenthesized_expression "(byte)" (( "(") (identifier "byte") () ")")) (argument_list "(bVar1 - 0x30)" (( "(") (binary_expression "bVar1 - 0x30" (identifier "bVar1") (- "-") (number_literal "0x30")) () ")"))) (< "<") (number_literal "8")) () ")")) (; ";")) (if_statement "if ((local_2c != 0) || ((bVar1 != 0 && (bVar1 != 0x2c)))) goto LAB_0001ecb0;" (if "if") (parenthesized_expression "((local_2c != 0) || ((bVar1 != 0 && (bVar1 != 0x2c))))" (( "(") (binary_expression "(local_2c != 0) || ((bVar1 != 0 && (bVar1 != 0x2c)))" (parenthesized_expression "(local_2c != 0)" (( "(") (binary_expression "local_2c != 0" (identifier "local_2c") (!= "!=") (number_literal "0")) () ")")) (|| "||") (parenthesized_expression "((bVar1 != 0 && (bVar1 != 0x2c)))" (( "(") (parenthesized_expression "(bVar1 != 0 && (bVar1 != 0x2c))" (( "(") (binary_expression "bVar1 != 0 && (bVar1 != 0x2c)" (binary_expression "bVar1 != 0" (identifier "bVar1") (!= "!=") (number_literal "0")) (&& "&&") (parenthesized_expression "(bVar1 != 0x2c)" (( "(") (binary_expression "bVar1 != 0x2c" (identifier "bVar1") (!= "!=") (number_literal "0x2c")) () ")"))) () ")")) () ")"))) () ")")) (goto_statement "goto LAB_0001ecb0;" (goto "goto") (statement_identifier "LAB_0001ecb0") (; ";"))) (expression_statement "*(uint *)(pbVar8 + 8) = uVar3;" (assignment_expression "*(uint *)(pbVar8 + 8) = uVar3" (pointer_expression "*(uint *)(pbVar8 + 8)" (* "*") (cast_expression "(uint *)(pbVar8 + 8)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(pbVar8 + 8)" (( "(") (binary_expression "pbVar8 + 8" (identifier "pbVar8") (+ "+") (number_literal "8")) () ")")))) (= "=") (identifier "uVar3")) (; ";")) (expression_statement "uVar3 = 0xfff;" (assignment_expression "uVar3 = 0xfff" (identifier "uVar3") (= "=") (number_literal "0xfff")) (; ";")) (expression_statement "pbVar8[1] = 1;" (assignment_expression "pbVar8[1] = 1" (subscript_expression "pbVar8[1]" (identifier "pbVar8") ([ "[") (number_literal "1") (] "]")) (= "=") (number_literal "1")) (; ";")) (expression_statement "*pbVar8 = local_2d;" (assignment_expression "*pbVar8 = local_2d" (pointer_expression "*pbVar8" (* "*") (identifier "pbVar8")) (= "=") (identifier "local_2d")) (; ";")) (expression_statement "pbVar8[4] = 0xff;" (assignment_expression "pbVar8[4] = 0xff" (subscript_expression "pbVar8[4]" (identifier "pbVar8") ([ "[") (number_literal "4") (] "]")) (= "=") (number_literal "0xff")) (; ";")) (expression_statement "pbVar8[5] = 0xf;" (assignment_expression "pbVar8[5] = 0xf" (subscript_expression "pbVar8[5]" (identifier "pbVar8") ([ "[") (number_literal "5") (] "]")) (= "=") (number_literal "0xf")) (; ";")) (expression_statement "pbVar8[6] = 0;" (assignment_expression "pbVar8[6] = 0" (subscript_expression "pbVar8[6]" (identifier "pbVar8") ([ "[") (number_literal "6") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "pbVar8[7] = 0;" (assignment_expression "pbVar8[7] = 0" (subscript_expression "pbVar8[7]" (identifier "pbVar8") ([ "[") (number_literal "7") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "local_2c = 0xfff;" (assignment_expression "local_2c = 0xfff" (identifier "local_2c") (= "=") (number_literal "0xfff")) (; ";")) (expression_statement "local_2d = bVar1;" (assignment_expression "local_2d = bVar1" (identifier "local_2d") (= "=") (identifier "bVar1")) (; ";")) (} "}")))) (expression_statement "*(uint *)(pbVar8 + 0xc) = uVar3;" (assignment_expression "*(uint *)(pbVar8 + 0xc) = uVar3" (pointer_expression "*(uint *)(pbVar8 + 0xc)" (* "*") (cast_expression "(uint *)(pbVar8 + 0xc)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(pbVar8 + 0xc)" (( "(") (binary_expression "pbVar8 + 0xc" (identifier "pbVar8") (+ "+") (number_literal "0xc")) () ")")))) (= "=") (identifier "uVar3")) (; ";")) (expression_statement "pbVar8 = pbVar8 + 0x10;" (assignment_expression "pbVar8 = pbVar8 + 0x10" (identifier "pbVar8") (= "=") (binary_expression "pbVar8 + 0x10" (identifier "pbVar8") (+ "+") (number_literal "0x10"))) (; ";")) (expression_statement "param_1 = pbVar7;" (assignment_expression "param_1 = pbVar7" (identifier "param_1") (= "=") (identifier "pbVar7")) (; ";")) (} "}")) (while "while") (parenthesized_expression "(((local_2d & 0xef) == 0x2d) || (local_2d == 0x2b))" (( "(") (binary_expression "((local_2d & 0xef) == 0x2d) || (local_2d == 0x2b)" (parenthesized_expression "((local_2d & 0xef) == 0x2d)" (( "(") (binary_expression "(local_2d & 0xef) == 0x2d" (parenthesized_expression "(local_2d & 0xef)" (( "(") (binary_expression "local_2d & 0xef" (identifier "local_2d") (& "&") (number_literal "0xef")) () ")")) (== "==") (number_literal "0x2d")) () ")")) (|| "||") (parenthesized_expression "(local_2d == 0x2b)" (( "(") (binary_expression "local_2d == 0x2b" (identifier "local_2d") (== "==") (number_literal "0x2b")) () ")"))) () ")")) (; ";")) (if_statement "if (local_2d != 0x2c) {\n    if (local_2d == 0) {\n      *(undefined1 *)((int)puVar4 + local_28 * 0x10 + 1) = 0;\n      return puVar4;\n    }\nLAB_0001ecb0:\n    free(puVar4);\n    return (undefined2 *)0x0;\n  }" (if "if") (parenthesized_expression "(local_2d != 0x2c)" (( "(") (binary_expression "local_2d != 0x2c" (identifier "local_2d") (!= "!=") (number_literal "0x2c")) () ")")) (compound_statement "{\n    if (local_2d == 0) {\n      *(undefined1 *)((int)puVar4 + local_28 * 0x10 + 1) = 0;\n      return puVar4;\n    }\nLAB_0001ecb0:\n    free(puVar4);\n    return (undefined2 *)0x0;\n  }" ({ "{") (if_statement "if (local_2d == 0) {\n      *(undefined1 *)((int)puVar4 + local_28 * 0x10 + 1) = 0;\n      return puVar4;\n    }" (if "if") (parenthesized_expression "(local_2d == 0)" (( "(") (binary_expression "local_2d == 0" (identifier "local_2d") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n      *(undefined1 *)((int)puVar4 + local_28 * 0x10 + 1) = 0;\n      return puVar4;\n    }" ({ "{") (expression_statement "*(undefined1 *)((int)puVar4 + local_28 * 0x10 + 1) = 0;" (assignment_expression "*(undefined1 *)((int)puVar4 + local_28 * 0x10 + 1) = 0" (pointer_expression "*(undefined1 *)((int)puVar4 + local_28 * 0x10 + 1)" (* "*") (cast_expression "(undefined1 *)((int)puVar4 + local_28 * 0x10 + 1)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar4 + local_28 * 0x10 + 1)" (( "(") (binary_expression "(int)puVar4 + local_28 * 0x10 + 1" (binary_expression "(int)puVar4 + local_28 * 0x10" (cast_expression "(int)puVar4" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar4")) (+ "+") (binary_expression "local_28 * 0x10" (identifier "local_28") (* "*") (number_literal "0x10"))) (+ "+") (number_literal "1")) () ")")))) (= "=") (number_literal "0")) (; ";")) (return_statement "return puVar4;" (return "return") (identifier "puVar4") (; ";")) (} "}"))) (labeled_statement "LAB_0001ecb0:\n    free(puVar4);" (statement_identifier "LAB_0001ecb0") (: ":") (expression_statement "free(puVar4);" (call_expression "free(puVar4)" (identifier "free") (argument_list "(puVar4)" (( "(") (identifier "puVar4") () ")"))) (; ";"))) (return_statement "return (undefined2 *)0x0;" (return "return") (cast_expression "(undefined2 *)0x0" (( "(") (type_descriptor "undefined2 *" (type_identifier "undefined2") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0")) (; ";")) (} "}"))) (expression_statement "param_1 = pbVar7 + 1;" (assignment_expression "param_1 = pbVar7 + 1" (identifier "param_1") (= "=") (binary_expression "pbVar7 + 1" (identifier "pbVar7") (+ "+") (number_literal "1"))) (; ";")) (goto_statement "goto LAB_0001ec81;" (goto "goto") (statement_identifier "LAB_0001ec81") (; ";")) (} "}")))

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

type_1 * function_1(char *mode_string)

{
  type_2 var_14;
  type_3 var_8;
  type_2 var_2;
  type_1 *var_12;
  type_2 var_3;
  size_t n;
  char *var_4;
  type_3 *var_7;
  type_3 var_6;
  char var_1;
  type_4 mVar10;
  type_1 *var_15;
  type_3 var_10;
  type_2 var_11;
  int var_13;
  
  var_1 = *mode_string;
  var_2 = (type_2)var_1;
  if ((type_3)(var_1 - 0x30U) < 8) {
    var_3 = 0;
    var_4 = mode_string;
    do {
      var_3 = (var_2 - 0x30) + var_3 * 8;
      var_4 = var_4 + 1;
      if (0xfff < var_3) {
        return (type_1 *)0x0;
      }
      var_1 = *var_4;
      var_2 = (type_2)var_1;
    } while ((type_3)(var_1 - 0x30U) < 8);
    if (var_1 != '\0') {
      return (type_1 *)0x0;
    }
    mVar10 = var_3 & 0xc00 | 0x3ff;
    if (4 < (int)var_4 - (int)mode_string) {
      mVar10 = 0xfff;
    }
    var_12 = (type_1 *)var_5(0x20);
    var_12->op = '=';
    var_12->flag = '\x01';
    var_12->affected = 0xfff;
    var_12->value = var_3;
    var_12->mentioned = mVar10;
    var_12[1].flag = '\0';
    return var_12;
  }
  var_3 = 1;
  var_7 = (type_3 *)mode_string;
  if (var_1 == '\0') {
    n = 0x10;
  }
  else {
    do {
      var_6 = (type_3)var_2;
      var_8 = var_7[1];
      var_2 = (type_2)var_8;
      var_3 = var_3 + ((var_6 & 0xef) == 0x2d || var_6 == 0x2b);
      var_7 = var_7 + 1;
    } while (var_8 != 0);
    n = var_3 * 0x10;
    if (((int)n < 0) || (var_3 >> 0x1c != 0)) {
                    /* WARNING: Subroutine does not return */
      var_9();
    }
  }
  var_12 = (type_1 *)var_5(n);
  var_13 = 0;
LAB_0001ec81:
  var_11 = 0;
  do {
    var_10 = *mode_string;
    if (var_10 == 0x61) {
      var_11 = 0xfff;
    }
    else {
      if ((char)var_10 < 'b') break;
      if (var_10 == 0x6f) {
        var_11 = var_11 | 0x207;
      }
      else if (var_10 == 0x75) {
        var_11 = var_11 | 0x9c0;
      }
      else {
        if (var_10 != 0x67) goto LAB_0001ecb0;
        var_11 = var_11 | 0x438;
      }
    }
    mode_string = (char *)((type_3 *)mode_string + 1);
  } while( true );
  if (((var_10 != 0x2d) && (var_10 != 0x3d)) && (var_10 != 0x2b)) goto LAB_0001ecb0;
  var_15 = var_12 + var_13;
  do {
    var_13 = var_13 + 1;
    var_8 = ((type_3 *)mode_string)[1];
    var_2 = (type_2)(char)var_8;
    var_7 = (type_3 *)mode_string + 1;
    if (var_8 == 0x67) {
      var_3 = 0x38;
LAB_0001ed55:
      var_15->flag = '\x03';
      var_15->value = var_3;
      var_15->op = var_10;
      var_15->affected = var_11;
      var_7 = (type_3 *)mode_string + 2;
      var_10 = *var_7;
LAB_0001ed74:
      if (var_11 != 0) {
        var_3 = var_11 & var_3;
      }
    }
    else {
      if ('g' < (char)var_8) {
        if (var_8 == 0x6f) {
          var_3 = 7;
        }
        else {
          var_3 = 0x1c0;
          if (var_8 != 0x75) goto LAB_0001ee40;
        }
        goto LAB_0001ed55;
      }
      if (7 < (type_3)(var_8 - 0x30)) {
LAB_0001ee40:
        var_14 = var_2 - 0x58;
        var_1 = '\x01';
        var_3 = 0;
        var_6 = (type_3)var_14;
        while (var_6 < 0x21) {
          var_8 = (type_3)var_2;
                    /* WARNING: Could not find normalized switch variable to match jumptable */
          switch(var_14 & 0xff) {
          case 0:
            var_1 = '\x02';
            break;
          default:
            goto _L30;
          case 0x1a:
            var_3 = var_3 | 0x124;
            break;
          case 0x1b:
            var_3 = var_3 | 0xc00;
            break;
          case 0x1c:
            var_3 = var_3 | 0x200;
            break;
          case 0x1f:
            var_3 = var_3 | 0x92;
            break;
          case 0x20:
            var_3 = var_3 | 0x49;
          }
          var_7 = var_7 + 1;
          var_8 = *var_7;
          var_2 = (type_2)var_8;
          var_14 = var_2 - 0x58;
          var_6 = (type_3)var_14;
        }
_L30:
        var_15->op = var_10;
        var_15->flag = var_1;
        var_15->affected = var_11;
        var_15->value = var_3;
        var_10 = var_8;
        goto LAB_0001ed74;
      }
      var_3 = 0;
      do {
        var_3 = (var_2 - 0x30) + var_3 * 8;
        var_7 = var_7 + 1;
        if (0xfff < var_3) goto LAB_0001ecb0;
        var_8 = *var_7;
        var_2 = (type_2)(char)var_8;
      } while ((type_3)(var_8 - 0x30) < 8);
      if ((var_11 != 0) || ((var_8 != 0 && (var_8 != 0x2c)))) goto LAB_0001ecb0;
      var_15->value = var_3;
      var_3 = 0xfff;
      var_15->flag = '\x01';
      var_15->op = var_10;
      var_15->affected = 0xfff;
      var_11 = 0xfff;
      var_10 = var_8;
    }
    var_15->mentioned = var_3;
    var_15 = var_15 + 1;
    mode_string = (char *)var_7;
  } while (((var_10 & 0xef) == 0x2d) || (var_10 == 0x2b));
  if (var_10 != 0x2c) {
    if (var_10 == 0) {
      var_12[var_13].flag = '\0';
      return var_12;
    }
LAB_0001ecb0:
    var_16(var_12);
    return (type_1 *)0x0;
  }
  mode_string = (char *)(var_7 + 1);
  goto LAB_0001ec81;
}


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

undefined2 * MASKED(byte *param_1)

{
  byte bVar1;
  byte bVar2;
  uint uVar3;
  undefined2 *puVar4;
  uint uVar5;
  int iVar6;
  byte *pbVar7;
  int unaff_EBP;
  byte *pbVar8;
  byte local_2d;
  uint local_2c;
  int local_28;
  
  FUN_0001f1c7();
  bVar1 = *param_1;
  uVar3 = (uint)(char)bVar1;
  if ((byte)(bVar1 - 0x30) < 8) {
    uVar5 = 0;
    pbVar8 = param_1;
    do {
      uVar5 = (uVar3 - 0x30) + uVar5 * 8;
      pbVar8 = pbVar8 + 1;
      if (0xfff < uVar5) {
        return (undefined2 *)0x0;
      }
      bVar1 = *pbVar8;
      uVar3 = (uint)(char)bVar1;
    } while ((byte)(bVar1 - 0x30) < 8);
    if (bVar1 != 0) {
      return (undefined2 *)0x0;
    }
    uVar3 = uVar5 & 0xc00 | 0x3ff;
    if (4 < (int)pbVar8 - (int)param_1) {
      uVar3 = 0xfff;
    }
    puVar4 = (undefined2 *)FUN_00023ea0(0x20);
    *puVar4 = 0x13d;
    *(undefined4 *)(puVar4 + 2) = 0xfff;
    *(uint *)(puVar4 + 4) = uVar5;
    *(uint *)(puVar4 + 6) = uVar3;
    *(undefined1 *)((int)puVar4 + 0x11) = 0;
    return puVar4;
  }
  uVar5 = 1;
  pbVar8 = param_1;
  if (bVar1 == 0) {
    iVar6 = 0x10;
  }
  else {
    do {
      bVar2 = (byte)uVar3;
      bVar1 = pbVar8[1];
      uVar3 = (uint)bVar1;
      uVar5 = uVar5 + ((bVar2 & 0xef) == 0x2d || bVar2 == 0x2b);
      pbVar8 = pbVar8 + 1;
    } while (bVar1 != 0);
    iVar6 = uVar5 * 0x10;
    if ((iVar6 < 0) || (uVar5 >> 0x1c != 0)) {
                    /* WARNING: Subroutine does not return */
      FUN_000241a0();
    }
  }
  puVar4 = (undefined2 *)FUN_00023ea0(iVar6);
  local_28 = 0;
LAB_0001ec81:
  local_2c = 0;
  do {
    local_2d = *param_1;
    if (local_2d == 0x61) {
      local_2c = 0xfff;
    }
    else {
      if ((char)local_2d < 'b') break;
      if (local_2d == 0x6f) {
        local_2c = local_2c | 0x207;
      }
      else if (local_2d == 0x75) {
        local_2c = local_2c | 0x9c0;
      }
      else {
        if (local_2d != 0x67) goto LAB_0001ecb0;
        local_2c = local_2c | 0x438;
      }
    }
    param_1 = param_1 + 1;
  } while( true );
  if (((local_2d != 0x2d) && (local_2d != 0x3d)) && (local_2d != 0x2b)) goto LAB_0001ecb0;
  pbVar8 = (byte *)(puVar4 + local_28 * 8);
  do {
    local_28 = local_28 + 1;
    bVar1 = param_1[1];
    iVar6 = (int)(char)bVar1;
    pbVar7 = param_1 + 1;
    if (bVar1 == 0x67) {
      uVar3 = 0x38;
LAB_0001ed55:
      pbVar8[1] = 3;
      *(uint *)(pbVar8 + 8) = uVar3;
      *pbVar8 = local_2d;
      *(uint *)(pbVar8 + 4) = local_2c;
      pbVar7 = param_1 + 2;
      local_2d = *pbVar7;
LAB_0001ed74:
      if (local_2c != 0) {
        uVar3 = local_2c & uVar3;
      }
    }
    else {
      if ('g' < (char)bVar1) {
        if (bVar1 == 0x6f) {
          uVar3 = 7;
        }
        else {
          uVar3 = 0x1c0;
          if (bVar1 != 0x75) goto LAB_0001ee40;
        }
        goto LAB_0001ed55;
      }
      if (7 < (byte)(bVar1 - 0x30)) {
LAB_0001ee40:
        uVar3 = 0;
        if ((byte)(iVar6 - 0x58U) < 0x21) {
                    /* WARNING: Could not recover jumptable at 0x0001ee5f. Too many branches */
                    /* WARNING: Treating indirect jump as call */
          puVar4 = (undefined2 *)
                   (*(code *)(*(int *)("__lxstat64" + (iVar6 - 0x58U & 0xff) * 4 + unaff_EBP) +
                             unaff_EBP + 0x1c40a))();
          return puVar4;
        }
        *pbVar8 = local_2d;
        pbVar8[1] = 1;
        *(uint *)(pbVar8 + 4) = local_2c;
        pbVar8[8] = 0;
        pbVar8[9] = 0;
        pbVar8[10] = 0;
        pbVar8[0xb] = 0;
        local_2d = bVar1;
        goto LAB_0001ed74;
      }
      uVar3 = 0;
      do {
        uVar3 = iVar6 + -0x30 + uVar3 * 8;
        pbVar7 = pbVar7 + 1;
        if (0xfff < uVar3) goto LAB_0001ecb0;
        bVar1 = *pbVar7;
        iVar6 = (int)(char)bVar1;
      } while ((byte)(bVar1 - 0x30) < 8);
      if ((local_2c != 0) || ((bVar1 != 0 && (bVar1 != 0x2c)))) goto LAB_0001ecb0;
      *(uint *)(pbVar8 + 8) = uVar3;
      uVar3 = 0xfff;
      pbVar8[1] = 1;
      *pbVar8 = local_2d;
      pbVar8[4] = 0xff;
      pbVar8[5] = 0xf;
      pbVar8[6] = 0;
      pbVar8[7] = 0;
      local_2c = 0xfff;
      local_2d = bVar1;
    }
    *(uint *)(pbVar8 + 0xc) = uVar3;
    pbVar8 = pbVar8 + 0x10;
    param_1 = pbVar7;
  } while (((local_2d & 0xef) == 0x2d) || (local_2d == 0x2b));
  if (local_2d != 0x2c) {
    if (local_2d == 0) {
      *(undefined1 *)((int)puVar4 + local_28 * 0x10 + 1) = 0;
      return puVar4;
    }
LAB_0001ecb0:
    free(puVar4);
    return (undefined2 *)0x0;
  }
  param_1 = pbVar7 + 1;
  goto LAB_0001ec81;
}

