
char * dlang_parse_qualified(string *decl,char *mangled,dlang_symbol_kinds kind)

{
  byte bVar1;
  string *decl_00;
  byte *pbVar2;
  char *pcVar3;
  byte *pbVar4;
  char *pcVar5;
  dlang_symbol_kinds kind_00;
  int iVar6;
  int unaff_EDI;
  int iVar7;
  undefined8 uVar8;
  string *in_stack_ffffffc4;
  char *in_stack_ffffffc8;
  int local_30;
  
  uVar8 = __x86_get_pc_thunk_di();
  pbVar4 = (byte *)((ulonglong)uVar8 >> 0x20);
  decl_00 = (string *)uVar8;
  iVar7 = 1;
  do {
    for (; *pbVar4 == 0x30; pbVar4 = pbVar4 + 1) {
    }
    pbVar2 = (byte *)dlang_identifier(decl_00,(char *)pbVar4,kind_00);
    if (pbVar2 == (byte *)0x0) {
      return (char *)0x0;
    }
    bVar1 = *pbVar2;
    if (bVar1 == 0x4d) {
      if (decl_00->b == decl_00->p) {
        pbVar4 = (byte *)dlang_type_modifiers(decl_00,(char *)(pbVar2 + 1));
        pcVar3 = decl_00->b;
        local_30 = 0;
        pcVar5 = decl_00->p;
        if (pcVar5 == pcVar3) goto LAB_001e3ed6;
LAB_001e3fd8:
        iVar6 = local_30 - ((int)pcVar5 - (int)pcVar3);
      }
      else {
        iVar6 = (int)decl_00->p - (int)decl_00->b;
        pbVar4 = (byte *)dlang_type_modifiers(decl_00,(char *)(pbVar2 + 1));
        pcVar3 = decl_00->b;
        pcVar5 = decl_00->p;
        local_30 = iVar6;
        if (pcVar3 != pcVar5) goto LAB_001e3fd8;
      }
      if (iVar6 < 0) {
        decl_00->p = pcVar3 + local_30;
      }
LAB_001e3ed6:
      pcVar3 = dlang_call_convention(decl_00,(char *)pbVar4);
      if (pcVar3 != (char *)0x0) {
        if (*pcVar3 == '\0') {
          pcVar3 = (char *)0x0;
        }
        else {
          pcVar3 = dlang_attributes(in_stack_ffffffc4,in_stack_ffffffc8);
        }
      }
      pcVar5 = decl_00->b;
      iVar6 = local_30 - ((int)decl_00->p - (int)pcVar5);
      if (pcVar5 == decl_00->p) {
        iVar6 = local_30;
      }
      if (iVar6 < 0) {
        decl_00->p = pcVar5 + local_30;
      }
      string_append(decl_00,(char *)(unaff_EDI + 0xb2025));
      pbVar4 = (byte *)dlang_function_args(decl_00,pcVar3);
      string_append(decl_00,(char *)(unaff_EDI + 0xbd158));
      if ((pbVar4 == (byte *)0x0) || ((*(byte *)(unaff_EDI + 0xbf7b9 + (uint)*pbVar4 * 2) & 4) == 0)
         ) {
        pcVar3 = decl_00->b;
        iVar6 = local_30 - ((int)decl_00->p - (int)pcVar3);
        if (pcVar3 == decl_00->p) {
          iVar6 = local_30;
        }
        if (iVar6 < 0) {
          decl_00->p = pcVar3 + local_30;
        }
        bVar1 = *pbVar2;
        goto LAB_001e3f9a;
      }
    }
    else {
      if (((byte)(bVar1 + 0xba) < 0x14) && ((1 << (bVar1 + 0xba & 0x1f) & 0xb9001U) != 0)) {
        pbVar4 = pbVar2;
        if (decl_00->b == decl_00->p) {
          local_30 = 0;
        }
        else {
          local_30 = (int)decl_00->p - (int)decl_00->b;
        }
        goto LAB_001e3ed6;
      }
LAB_001e3f9a:
      pbVar4 = pbVar2;
      if ((*(byte *)(unaff_EDI + 0xbf7b9 + (uint)bVar1 * 2) & 4) == 0) {
        return (char *)pbVar2;
      }
    }
    if (iVar7 != 0) {
      string_append(decl_00,(char *)(unaff_EDI + 0xa9e04));
    }
    iVar7 = iVar7 + 1;
  } while( true );
}



byte * FUN_001e3e40(void)

{
  byte bVar1;
  int *piVar2;
  byte *pbVar3;
  char *pcVar4;
  byte *pbVar5;
  int iVar6;
  int iVar7;
  int iVar8;
  int unaff_EDI;
  int iVar9;
  undefined8 uVar10;
  int local_30;
  
  uVar10 = FUN_000559ee();
  pbVar5 = (byte *)((ulonglong)uVar10 >> 0x20);
  piVar2 = (int *)uVar10;
  iVar9 = 1;
  do {
    for (; *pbVar5 == 0x30; pbVar5 = pbVar5 + 1) {
    }
    pbVar3 = (byte *)FUN_001e3890();
    if (pbVar3 == (byte *)0x0) {
      return (byte *)0x0;
    }
    bVar1 = *pbVar3;
    if (bVar1 == 0x4d) {
      if (*piVar2 == piVar2[1]) {
        FUN_001e1fa0();
        iVar8 = *piVar2;
        local_30 = 0;
        iVar6 = piVar2[1];
        if (iVar6 == iVar8) goto LAB_001e3ed6;
LAB_001e3fd8:
        iVar7 = local_30 - (iVar6 - iVar8);
      }
      else {
        iVar7 = piVar2[1] - *piVar2;
        FUN_001e1fa0();
        iVar8 = *piVar2;
        iVar6 = piVar2[1];
        local_30 = iVar7;
        if (iVar8 != iVar6) goto LAB_001e3fd8;
      }
      if (iVar7 < 0) {
        piVar2[1] = iVar8 + local_30;
      }
LAB_001e3ed6:
      pcVar4 = (char *)FUN_001e1eb0();
      if ((pcVar4 != (char *)0x0) && (*pcVar4 != '\0')) {
        FUN_001e2060();
      }
      iVar8 = *piVar2;
      iVar6 = local_30 - (piVar2[1] - iVar8);
      if (iVar8 == piVar2[1]) {
        iVar6 = local_30;
      }
      if (iVar6 < 0) {
        piVar2[1] = iVar8 + local_30;
      }
      FUN_001e1e60();
      pbVar5 = (byte *)FUN_001e34c0();
      FUN_001e1e60();
      if ((pbVar5 == (byte *)0x0) || ((*(byte *)(unaff_EDI + 0xbf7b9 + (uint)*pbVar5 * 2) & 4) == 0)
         ) {
        iVar8 = *piVar2;
        iVar6 = local_30 - (piVar2[1] - iVar8);
        if (iVar8 == piVar2[1]) {
          iVar6 = local_30;
        }
        if (iVar6 < 0) {
          piVar2[1] = iVar8 + local_30;
        }
        bVar1 = *pbVar3;
        goto LAB_001e3f9a;
      }
    }
    else {
      if (((byte)(bVar1 + 0xba) < 0x14) && ((1 << (bVar1 + 0xba & 0x1f) & 0xb9001U) != 0)) {
        if (*piVar2 == piVar2[1]) {
          local_30 = 0;
        }
        else {
          local_30 = piVar2[1] - *piVar2;
        }
        goto LAB_001e3ed6;
      }
LAB_001e3f9a:
      pbVar5 = pbVar3;
      if ((*(byte *)(unaff_EDI + 0xbf7b9 + (uint)bVar1 * 2) & 4) == 0) {
        return pbVar3;
      }
    }
    if (iVar9 != 0) {
      FUN_001e1e60();
    }
    iVar9 = iVar9 + 1;
  } while( true );
}


PUSH EBP
PUSH EDI
CALL 0x000559ee
ADD EDI,0x1ab1b9
PUSH ESI
MOV ESI,EAX
PUSH EBX
MOV EBX,EDX
SUB ESP,0x2c
MOV dword ptr [ESP + 0x10],ECX
MOV EBP,EDI
MOV dword ptr [ESP + 0x8],EDI
MOV EDI,0x1
LEA EAX,[EBP + 0xfff14600]
MOV dword ptr [ESP + 0x18],EAX
MOV dword ptr [ESP + 0x1c],EAX
JMP 0x001e3e7b
ADD EBX,0x1
CMP byte ptr [EBX],0x30
JZ 0x001e3e78
MOV ECX,dword ptr [ESP + 0x10]
MOV EDX,EBX
MOV EAX,ESI
CALL 0x001e3890
MOV EBX,EAX
TEST EAX,EAX
JZ 0x001e3fa0
MOVZX EDX,byte ptr [EAX]
CMP DL,0x4d
JZ 0x001e3fb0
LEA ECX,[EDX + -0x46]
CMP CL,0x13
JA 0x001e3f90
MOV EAX,0x1
SHL EAX,CL
TEST EAX,0xb9001
JZ 0x001e3f90
MOV EAX,dword ptr [ESI]
MOV EDX,dword ptr [ESI + 0x4]
CMP EAX,EDX
JZ 0x001e4057
SUB EDX,EAX
MOV dword ptr [ESP + 0xc],EDX
MOV EDX,EBX
MOV EAX,ESI
CALL 0x001e1eb0
MOV EBP,EAX
TEST EAX,EAX
JZ 0x001e3ef7
CMP byte ptr [EAX],0x0
JZ 0x001e4031
MOV EDX,EAX
MOV EAX,ESI
CALL 0x001e2060
MOV EBP,EAX
MOV ECX,dword ptr [ESI + 0x4]
MOV EAX,dword ptr [ESI]
MOV dword ptr [ESP + 0x14],ECX
MOV EDX,ECX
MOV ECX,dword ptr [ESP + 0xc]
SUB EDX,EAX
SUB ECX,EDX
CMP EAX,dword ptr [ESP + 0x14]
MOV EDX,ECX
MOV ECX,dword ptr [ESP + 0xc]
CMOVZ EDX,ECX
TEST EDX,EDX
JNS 0x001e3f20
ADD EAX,ECX
MOV dword ptr [ESI + 0x4],EAX
MOV EAX,dword ptr [ESP + 0x8]
LEA EDX,[EAX + 0xfff06e6c]
MOV EAX,ESI
CALL 0x001e1e60
MOV EDX,EBP
MOV EAX,ESI
CALL 0x001e34c0
MOV EBP,EAX
MOV EAX,dword ptr [ESP + 0x8]
LEA EDX,[EAX + 0xfff11f9f]
MOV EAX,ESI
CALL 0x001e1e60
MOV EAX,dword ptr [ESP + 0x1c]
TEST EBP,EBP
JZ 0x001e4000
MOV ECX,dword ptr [ESP + 0x18]
MOVZX EDX,byte ptr [EBP]
MOV EAX,ECX
TEST byte ptr [ECX + EDX*0x2],0x4
JZ 0x001e4000
MOV EBX,EBP
NOP
TEST EDI,EDI
JZ 0x001e3f85
MOV EAX,dword ptr [ESP + 0x8]
LEA EDX,[EAX + 0xffefec4b]
MOV EAX,ESI
CALL 0x001e1e60
ADD EDI,0x1
JMP 0x001e3e7b
MOV EAX,dword ptr [ESP + 0x8]
LEA EAX,[EAX + 0xfff14600]
TEST byte ptr [EAX + EDX*0x2],0x4
JNZ 0x001e3f70
ADD ESP,0x2c
MOV EAX,EBX
POP EBX
POP ESI
POP EDI
POP EBP
RET
MOV EAX,dword ptr [ESI]
MOV ECX,dword ptr [ESI + 0x4]
LEA EDX,[EBX + 0x1]
CMP EAX,ECX
JZ 0x001e4038
SUB ECX,EAX
MOV EAX,ESI
MOV dword ptr [ESP + 0xc],ECX
CALL 0x001e1fa0
MOV ECX,dword ptr [ESI]
MOV EDX,EAX
MOV EAX,dword ptr [ESI + 0x4]
CMP ECX,EAX
JZ 0x001e4066
MOV EBP,dword ptr [ESP + 0xc]
SUB EAX,ECX
SUB EBP,EAX
MOV EAX,EBP
TEST EAX,EAX
JNS 0x001e3ed6
ADD ECX,dword ptr [ESP + 0xc]
MOV dword ptr [ESI + 0x4],ECX
JMP 0x001e3ed6
MOV EBP,dword ptr [ESI + 0x4]
MOV EDX,dword ptr [ESI]
MOV dword ptr [ESP + 0x14],EBP
MOV ECX,EBP
MOV EBP,dword ptr [ESP + 0xc]
SUB ECX,EDX
SUB EBP,ECX
CMP EDX,dword ptr [ESP + 0x14]
MOV ECX,EBP
CMOVZ ECX,dword ptr [ESP + 0xc]
TEST ECX,ECX
JNS 0x001e4029
ADD EDX,dword ptr [ESP + 0xc]
MOV dword ptr [ESI + 0x4],EDX
MOVZX EDX,byte ptr [EBX]
JMP 0x001e3f9a
XOR EBP,EBP
JMP 0x001e3ef7
MOV EAX,ESI
CALL 0x001e1fa0
MOV ECX,dword ptr [ESI]
MOV dword ptr [ESP + 0xc],0x0
MOV EDX,EAX
MOV EAX,dword ptr [ESI + 0x4]
CMP EAX,ECX
JNZ 0x001e3fd8
JMP 0x001e3ed6
MOV EDX,EBX
MOV dword ptr [ESP + 0xc],0x0
JMP 0x001e3ed6
MOV EAX,dword ptr [ESP + 0xc]
JMP 0x001e3fe2
(translation_unit "byte * FUN_001e3e40(void)\n\n{\n  byte bVar1;\n  int *piVar2;\n  byte *pbVar3;\n  char *pcVar4;\n  byte *pbVar5;\n  int iVar6;\n  int iVar7;\n  int iVar8;\n  int unaff_EDI;\n  int iVar9;\n  undefined8 uVar10;\n  int local_30;\n  \n  uVar10 = FUN_000559ee();\n  pbVar5 = (byte *)((ulonglong)uVar10 >> 0x20);\n  piVar2 = (int *)uVar10;\n  iVar9 = 1;\n  do {\n    for (; *pbVar5 == 0x30; pbVar5 = pbVar5 + 1) {\n    }\n    pbVar3 = (byte *)FUN_001e3890();\n    if (pbVar3 == (byte *)0x0) {\n      return (byte *)0x0;\n    }\n    bVar1 = *pbVar3;\n    if (bVar1 == 0x4d) {\n      if (*piVar2 == piVar2[1]) {\n        FUN_001e1fa0();\n        iVar8 = *piVar2;\n        local_30 = 0;\n        iVar6 = piVar2[1];\n        if (iVar6 == iVar8) goto LAB_001e3ed6;\nLAB_001e3fd8:\n        iVar7 = local_30 - (iVar6 - iVar8);\n      }\n      else {\n        iVar7 = piVar2[1] - *piVar2;\n        FUN_001e1fa0();\n        iVar8 = *piVar2;\n        iVar6 = piVar2[1];\n        local_30 = iVar7;\n        if (iVar8 != iVar6) goto LAB_001e3fd8;\n      }\n      if (iVar7 < 0) {\n        piVar2[1] = iVar8 + local_30;\n      }\nLAB_001e3ed6:\n      pcVar4 = (char *)FUN_001e1eb0();\n      if ((pcVar4 != (char *)0x0) && (*pcVar4 != '\0')) {\n        FUN_001e2060();\n      }\n      iVar8 = *piVar2;\n      iVar6 = local_30 - (piVar2[1] - iVar8);\n      if (iVar8 == piVar2[1]) {\n        iVar6 = local_30;\n      }\n      if (iVar6 < 0) {\n        piVar2[1] = iVar8 + local_30;\n      }\n      FUN_001e1e60();\n      pbVar5 = (byte *)FUN_001e34c0();\n      FUN_001e1e60();\n      if ((pbVar5 == (byte *)0x0) || ((*(byte *)(unaff_EDI + 0xbf7b9 + (uint)*pbVar5 * 2) & 4) == 0)\n         ) {\n        iVar8 = *piVar2;\n        iVar6 = local_30 - (piVar2[1] - iVar8);\n        if (iVar8 == piVar2[1]) {\n          iVar6 = local_30;\n        }\n        if (iVar6 < 0) {\n          piVar2[1] = iVar8 + local_30;\n        }\n        bVar1 = *pbVar3;\n        goto LAB_001e3f9a;\n      }\n    }\n    else {\n      if (((byte)(bVar1 + 0xba) < 0x14) && ((1 << (bVar1 + 0xba & 0x1f) & 0xb9001U) != 0)) {\n        if (*piVar2 == piVar2[1]) {\n          local_30 = 0;\n        }\n        else {\n          local_30 = piVar2[1] - *piVar2;\n        }\n        goto LAB_001e3ed6;\n      }\nLAB_001e3f9a:\n      pbVar5 = pbVar3;\n      if ((*(byte *)(unaff_EDI + 0xbf7b9 + (uint)bVar1 * 2) & 4) == 0) {\n        return pbVar3;\n      }\n    }\n    if (iVar9 != 0) {\n      FUN_001e1e60();\n    }\n    iVar9 = iVar9 + 1;\n  } while( true );\n}\n\n" (function_definition "byte * FUN_001e3e40(void)\n\n{\n  byte bVar1;\n  int *piVar2;\n  byte *pbVar3;\n  char *pcVar4;\n  byte *pbVar5;\n  int iVar6;\n  int iVar7;\n  int iVar8;\n  int unaff_EDI;\n  int iVar9;\n  undefined8 uVar10;\n  int local_30;\n  \n  uVar10 = FUN_000559ee();\n  pbVar5 = (byte *)((ulonglong)uVar10 >> 0x20);\n  piVar2 = (int *)uVar10;\n  iVar9 = 1;\n  do {\n    for (; *pbVar5 == 0x30; pbVar5 = pbVar5 + 1) {\n    }\n    pbVar3 = (byte *)FUN_001e3890();\n    if (pbVar3 == (byte *)0x0) {\n      return (byte *)0x0;\n    }\n    bVar1 = *pbVar3;\n    if (bVar1 == 0x4d) {\n      if (*piVar2 == piVar2[1]) {\n        FUN_001e1fa0();\n        iVar8 = *piVar2;\n        local_30 = 0;\n        iVar6 = piVar2[1];\n        if (iVar6 == iVar8) goto LAB_001e3ed6;\nLAB_001e3fd8:\n        iVar7 = local_30 - (iVar6 - iVar8);\n      }\n      else {\n        iVar7 = piVar2[1] - *piVar2;\n        FUN_001e1fa0();\n        iVar8 = *piVar2;\n        iVar6 = piVar2[1];\n        local_30 = iVar7;\n        if (iVar8 != iVar6) goto LAB_001e3fd8;\n      }\n      if (iVar7 < 0) {\n        piVar2[1] = iVar8 + local_30;\n      }\nLAB_001e3ed6:\n      pcVar4 = (char *)FUN_001e1eb0();\n      if ((pcVar4 != (char *)0x0) && (*pcVar4 != '\0')) {\n        FUN_001e2060();\n      }\n      iVar8 = *piVar2;\n      iVar6 = local_30 - (piVar2[1] - iVar8);\n      if (iVar8 == piVar2[1]) {\n        iVar6 = local_30;\n      }\n      if (iVar6 < 0) {\n        piVar2[1] = iVar8 + local_30;\n      }\n      FUN_001e1e60();\n      pbVar5 = (byte *)FUN_001e34c0();\n      FUN_001e1e60();\n      if ((pbVar5 == (byte *)0x0) || ((*(byte *)(unaff_EDI + 0xbf7b9 + (uint)*pbVar5 * 2) & 4) == 0)\n         ) {\n        iVar8 = *piVar2;\n        iVar6 = local_30 - (piVar2[1] - iVar8);\n        if (iVar8 == piVar2[1]) {\n          iVar6 = local_30;\n        }\n        if (iVar6 < 0) {\n          piVar2[1] = iVar8 + local_30;\n        }\n        bVar1 = *pbVar3;\n        goto LAB_001e3f9a;\n      }\n    }\n    else {\n      if (((byte)(bVar1 + 0xba) < 0x14) && ((1 << (bVar1 + 0xba & 0x1f) & 0xb9001U) != 0)) {\n        if (*piVar2 == piVar2[1]) {\n          local_30 = 0;\n        }\n        else {\n          local_30 = piVar2[1] - *piVar2;\n        }\n        goto LAB_001e3ed6;\n      }\nLAB_001e3f9a:\n      pbVar5 = pbVar3;\n      if ((*(byte *)(unaff_EDI + 0xbf7b9 + (uint)bVar1 * 2) & 4) == 0) {\n        return pbVar3;\n      }\n    }\n    if (iVar9 != 0) {\n      FUN_001e1e60();\n    }\n    iVar9 = iVar9 + 1;\n  } while( true );\n}" type_identifier (pointer_declarator "* FUN_001e3e40(void)" * (function_declarator "FUN_001e3e40(void)" identifier (parameter_list "(void)" ( (parameter_declaration "void" primitive_type) )))) (compound_statement "{\n  byte bVar1;\n  int *piVar2;\n  byte *pbVar3;\n  char *pcVar4;\n  byte *pbVar5;\n  int iVar6;\n  int iVar7;\n  int iVar8;\n  int unaff_EDI;\n  int iVar9;\n  undefined8 uVar10;\n  int local_30;\n  \n  uVar10 = FUN_000559ee();\n  pbVar5 = (byte *)((ulonglong)uVar10 >> 0x20);\n  piVar2 = (int *)uVar10;\n  iVar9 = 1;\n  do {\n    for (; *pbVar5 == 0x30; pbVar5 = pbVar5 + 1) {\n    }\n    pbVar3 = (byte *)FUN_001e3890();\n    if (pbVar3 == (byte *)0x0) {\n      return (byte *)0x0;\n    }\n    bVar1 = *pbVar3;\n    if (bVar1 == 0x4d) {\n      if (*piVar2 == piVar2[1]) {\n        FUN_001e1fa0();\n        iVar8 = *piVar2;\n        local_30 = 0;\n        iVar6 = piVar2[1];\n        if (iVar6 == iVar8) goto LAB_001e3ed6;\nLAB_001e3fd8:\n        iVar7 = local_30 - (iVar6 - iVar8);\n      }\n      else {\n        iVar7 = piVar2[1] - *piVar2;\n        FUN_001e1fa0();\n        iVar8 = *piVar2;\n        iVar6 = piVar2[1];\n        local_30 = iVar7;\n        if (iVar8 != iVar6) goto LAB_001e3fd8;\n      }\n      if (iVar7 < 0) {\n        piVar2[1] = iVar8 + local_30;\n      }\nLAB_001e3ed6:\n      pcVar4 = (char *)FUN_001e1eb0();\n      if ((pcVar4 != (char *)0x0) && (*pcVar4 != '\0')) {\n        FUN_001e2060();\n      }\n      iVar8 = *piVar2;\n      iVar6 = local_30 - (piVar2[1] - iVar8);\n      if (iVar8 == piVar2[1]) {\n        iVar6 = local_30;\n      }\n      if (iVar6 < 0) {\n        piVar2[1] = iVar8 + local_30;\n      }\n      FUN_001e1e60();\n      pbVar5 = (byte *)FUN_001e34c0();\n      FUN_001e1e60();\n      if ((pbVar5 == (byte *)0x0) || ((*(byte *)(unaff_EDI + 0xbf7b9 + (uint)*pbVar5 * 2) & 4) == 0)\n         ) {\n        iVar8 = *piVar2;\n        iVar6 = local_30 - (piVar2[1] - iVar8);\n        if (iVar8 == piVar2[1]) {\n          iVar6 = local_30;\n        }\n        if (iVar6 < 0) {\n          piVar2[1] = iVar8 + local_30;\n        }\n        bVar1 = *pbVar3;\n        goto LAB_001e3f9a;\n      }\n    }\n    else {\n      if (((byte)(bVar1 + 0xba) < 0x14) && ((1 << (bVar1 + 0xba & 0x1f) & 0xb9001U) != 0)) {\n        if (*piVar2 == piVar2[1]) {\n          local_30 = 0;\n        }\n        else {\n          local_30 = piVar2[1] - *piVar2;\n        }\n        goto LAB_001e3ed6;\n      }\nLAB_001e3f9a:\n      pbVar5 = pbVar3;\n      if ((*(byte *)(unaff_EDI + 0xbf7b9 + (uint)bVar1 * 2) & 4) == 0) {\n        return pbVar3;\n      }\n    }\n    if (iVar9 != 0) {\n      FUN_001e1e60();\n    }\n    iVar9 = iVar9 + 1;\n  } while( true );\n}" { (declaration "byte bVar1;" type_identifier identifier ;) (declaration "int *piVar2;" primitive_type (pointer_declarator "*piVar2" * identifier) ;) (declaration "byte *pbVar3;" type_identifier (pointer_declarator "*pbVar3" * identifier) ;) (declaration "char *pcVar4;" primitive_type (pointer_declarator "*pcVar4" * identifier) ;) (declaration "byte *pbVar5;" type_identifier (pointer_declarator "*pbVar5" * identifier) ;) (declaration "int iVar6;" primitive_type identifier ;) (declaration "int iVar7;" primitive_type identifier ;) (declaration "int iVar8;" primitive_type identifier ;) (declaration "int unaff_EDI;" primitive_type identifier ;) (declaration "int iVar9;" primitive_type identifier ;) (declaration "undefined8 uVar10;" type_identifier identifier ;) (declaration "int local_30;" primitive_type identifier ;) (expression_statement "uVar10 = FUN_000559ee();" (assignment_expression "uVar10 = FUN_000559ee()" identifier = (call_expression "FUN_000559ee()" identifier (argument_list "()" ( )))) ;) (expression_statement "pbVar5 = (byte *)((ulonglong)uVar10 >> 0x20);" (assignment_expression "pbVar5 = (byte *)((ulonglong)uVar10 >> 0x20)" identifier = (cast_expression "(byte *)((ulonglong)uVar10 >> 0x20)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((ulonglong)uVar10 >> 0x20)" ( (binary_expression "(ulonglong)uVar10 >> 0x20" (cast_expression "(ulonglong)uVar10" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "piVar2 = (int *)uVar10;" (assignment_expression "piVar2 = (int *)uVar10" identifier = (cast_expression "(int *)uVar10" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) ;) (expression_statement "iVar9 = 1;" (assignment_expression "iVar9 = 1" identifier = number_literal) ;) (do_statement "do {\n    for (; *pbVar5 == 0x30; pbVar5 = pbVar5 + 1) {\n    }\n    pbVar3 = (byte *)FUN_001e3890();\n    if (pbVar3 == (byte *)0x0) {\n      return (byte *)0x0;\n    }\n    bVar1 = *pbVar3;\n    if (bVar1 == 0x4d) {\n      if (*piVar2 == piVar2[1]) {\n        FUN_001e1fa0();\n        iVar8 = *piVar2;\n        local_30 = 0;\n        iVar6 = piVar2[1];\n        if (iVar6 == iVar8) goto LAB_001e3ed6;\nLAB_001e3fd8:\n        iVar7 = local_30 - (iVar6 - iVar8);\n      }\n      else {\n        iVar7 = piVar2[1] - *piVar2;\n        FUN_001e1fa0();\n        iVar8 = *piVar2;\n        iVar6 = piVar2[1];\n        local_30 = iVar7;\n        if (iVar8 != iVar6) goto LAB_001e3fd8;\n      }\n      if (iVar7 < 0) {\n        piVar2[1] = iVar8 + local_30;\n      }\nLAB_001e3ed6:\n      pcVar4 = (char *)FUN_001e1eb0();\n      if ((pcVar4 != (char *)0x0) && (*pcVar4 != '\0')) {\n        FUN_001e2060();\n      }\n      iVar8 = *piVar2;\n      iVar6 = local_30 - (piVar2[1] - iVar8);\n      if (iVar8 == piVar2[1]) {\n        iVar6 = local_30;\n      }\n      if (iVar6 < 0) {\n        piVar2[1] = iVar8 + local_30;\n      }\n      FUN_001e1e60();\n      pbVar5 = (byte *)FUN_001e34c0();\n      FUN_001e1e60();\n      if ((pbVar5 == (byte *)0x0) || ((*(byte *)(unaff_EDI + 0xbf7b9 + (uint)*pbVar5 * 2) & 4) == 0)\n         ) {\n        iVar8 = *piVar2;\n        iVar6 = local_30 - (piVar2[1] - iVar8);\n        if (iVar8 == piVar2[1]) {\n          iVar6 = local_30;\n        }\n        if (iVar6 < 0) {\n          piVar2[1] = iVar8 + local_30;\n        }\n        bVar1 = *pbVar3;\n        goto LAB_001e3f9a;\n      }\n    }\n    else {\n      if (((byte)(bVar1 + 0xba) < 0x14) && ((1 << (bVar1 + 0xba & 0x1f) & 0xb9001U) != 0)) {\n        if (*piVar2 == piVar2[1]) {\n          local_30 = 0;\n        }\n        else {\n          local_30 = piVar2[1] - *piVar2;\n        }\n        goto LAB_001e3ed6;\n      }\nLAB_001e3f9a:\n      pbVar5 = pbVar3;\n      if ((*(byte *)(unaff_EDI + 0xbf7b9 + (uint)bVar1 * 2) & 4) == 0) {\n        return pbVar3;\n      }\n    }\n    if (iVar9 != 0) {\n      FUN_001e1e60();\n    }\n    iVar9 = iVar9 + 1;\n  } while( true );" do (compound_statement "{\n    for (; *pbVar5 == 0x30; pbVar5 = pbVar5 + 1) {\n    }\n    pbVar3 = (byte *)FUN_001e3890();\n    if (pbVar3 == (byte *)0x0) {\n      return (byte *)0x0;\n    }\n    bVar1 = *pbVar3;\n    if (bVar1 == 0x4d) {\n      if (*piVar2 == piVar2[1]) {\n        FUN_001e1fa0();\n        iVar8 = *piVar2;\n        local_30 = 0;\n        iVar6 = piVar2[1];\n        if (iVar6 == iVar8) goto LAB_001e3ed6;\nLAB_001e3fd8:\n        iVar7 = local_30 - (iVar6 - iVar8);\n      }\n      else {\n        iVar7 = piVar2[1] - *piVar2;\n        FUN_001e1fa0();\n        iVar8 = *piVar2;\n        iVar6 = piVar2[1];\n        local_30 = iVar7;\n        if (iVar8 != iVar6) goto LAB_001e3fd8;\n      }\n      if (iVar7 < 0) {\n        piVar2[1] = iVar8 + local_30;\n      }\nLAB_001e3ed6:\n      pcVar4 = (char *)FUN_001e1eb0();\n      if ((pcVar4 != (char *)0x0) && (*pcVar4 != '\0')) {\n        FUN_001e2060();\n      }\n      iVar8 = *piVar2;\n      iVar6 = local_30 - (piVar2[1] - iVar8);\n      if (iVar8 == piVar2[1]) {\n        iVar6 = local_30;\n      }\n      if (iVar6 < 0) {\n        piVar2[1] = iVar8 + local_30;\n      }\n      FUN_001e1e60();\n      pbVar5 = (byte *)FUN_001e34c0();\n      FUN_001e1e60();\n      if ((pbVar5 == (byte *)0x0) || ((*(byte *)(unaff_EDI + 0xbf7b9 + (uint)*pbVar5 * 2) & 4) == 0)\n         ) {\n        iVar8 = *piVar2;\n        iVar6 = local_30 - (piVar2[1] - iVar8);\n        if (iVar8 == piVar2[1]) {\n          iVar6 = local_30;\n        }\n        if (iVar6 < 0) {\n          piVar2[1] = iVar8 + local_30;\n        }\n        bVar1 = *pbVar3;\n        goto LAB_001e3f9a;\n      }\n    }\n    else {\n      if (((byte)(bVar1 + 0xba) < 0x14) && ((1 << (bVar1 + 0xba & 0x1f) & 0xb9001U) != 0)) {\n        if (*piVar2 == piVar2[1]) {\n          local_30 = 0;\n        }\n        else {\n          local_30 = piVar2[1] - *piVar2;\n        }\n        goto LAB_001e3ed6;\n      }\nLAB_001e3f9a:\n      pbVar5 = pbVar3;\n      if ((*(byte *)(unaff_EDI + 0xbf7b9 + (uint)bVar1 * 2) & 4) == 0) {\n        return pbVar3;\n      }\n    }\n    if (iVar9 != 0) {\n      FUN_001e1e60();\n    }\n    iVar9 = iVar9 + 1;\n  }" { (for_statement "for (; *pbVar5 == 0x30; pbVar5 = pbVar5 + 1) {\n    }" for ( ; (binary_expression "*pbVar5 == 0x30" (pointer_expression "*pbVar5" * identifier) == number_literal) ; (assignment_expression "pbVar5 = pbVar5 + 1" identifier = (binary_expression "pbVar5 + 1" identifier + number_literal)) ) (compound_statement "{\n    }" { })) (expression_statement "pbVar3 = (byte *)FUN_001e3890();" (assignment_expression "pbVar3 = (byte *)FUN_001e3890()" identifier = (cast_expression "(byte *)FUN_001e3890()" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_001e3890()" identifier (argument_list "()" ( ))))) ;) (if_statement "if (pbVar3 == (byte *)0x0) {\n      return (byte *)0x0;\n    }" if (parenthesized_expression "(pbVar3 == (byte *)0x0)" ( (binary_expression "pbVar3 == (byte *)0x0" identifier == (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      return (byte *)0x0;\n    }" { (return_statement "return (byte *)0x0;" return (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) ;) })) (expression_statement "bVar1 = *pbVar3;" (assignment_expression "bVar1 = *pbVar3" identifier = (pointer_expression "*pbVar3" * identifier)) ;) (if_statement "if (bVar1 == 0x4d) {\n      if (*piVar2 == piVar2[1]) {\n        FUN_001e1fa0();\n        iVar8 = *piVar2;\n        local_30 = 0;\n        iVar6 = piVar2[1];\n        if (iVar6 == iVar8) goto LAB_001e3ed6;\nLAB_001e3fd8:\n        iVar7 = local_30 - (iVar6 - iVar8);\n      }\n      else {\n        iVar7 = piVar2[1] - *piVar2;\n        FUN_001e1fa0();\n        iVar8 = *piVar2;\n        iVar6 = piVar2[1];\n        local_30 = iVar7;\n        if (iVar8 != iVar6) goto LAB_001e3fd8;\n      }\n      if (iVar7 < 0) {\n        piVar2[1] = iVar8 + local_30;\n      }\nLAB_001e3ed6:\n      pcVar4 = (char *)FUN_001e1eb0();\n      if ((pcVar4 != (char *)0x0) && (*pcVar4 != '\0')) {\n        FUN_001e2060();\n      }\n      iVar8 = *piVar2;\n      iVar6 = local_30 - (piVar2[1] - iVar8);\n      if (iVar8 == piVar2[1]) {\n        iVar6 = local_30;\n      }\n      if (iVar6 < 0) {\n        piVar2[1] = iVar8 + local_30;\n      }\n      FUN_001e1e60();\n      pbVar5 = (byte *)FUN_001e34c0();\n      FUN_001e1e60();\n      if ((pbVar5 == (byte *)0x0) || ((*(byte *)(unaff_EDI + 0xbf7b9 + (uint)*pbVar5 * 2) & 4) == 0)\n         ) {\n        iVar8 = *piVar2;\n        iVar6 = local_30 - (piVar2[1] - iVar8);\n        if (iVar8 == piVar2[1]) {\n          iVar6 = local_30;\n        }\n        if (iVar6 < 0) {\n          piVar2[1] = iVar8 + local_30;\n        }\n        bVar1 = *pbVar3;\n        goto LAB_001e3f9a;\n      }\n    }\n    else {\n      if (((byte)(bVar1 + 0xba) < 0x14) && ((1 << (bVar1 + 0xba & 0x1f) & 0xb9001U) != 0)) {\n        if (*piVar2 == piVar2[1]) {\n          local_30 = 0;\n        }\n        else {\n          local_30 = piVar2[1] - *piVar2;\n        }\n        goto LAB_001e3ed6;\n      }\nLAB_001e3f9a:\n      pbVar5 = pbVar3;\n      if ((*(byte *)(unaff_EDI + 0xbf7b9 + (uint)bVar1 * 2) & 4) == 0) {\n        return pbVar3;\n      }\n    }" if (parenthesized_expression "(bVar1 == 0x4d)" ( (binary_expression "bVar1 == 0x4d" identifier == number_literal) )) (compound_statement "{\n      if (*piVar2 == piVar2[1]) {\n        FUN_001e1fa0();\n        iVar8 = *piVar2;\n        local_30 = 0;\n        iVar6 = piVar2[1];\n        if (iVar6 == iVar8) goto LAB_001e3ed6;\nLAB_001e3fd8:\n        iVar7 = local_30 - (iVar6 - iVar8);\n      }\n      else {\n        iVar7 = piVar2[1] - *piVar2;\n        FUN_001e1fa0();\n        iVar8 = *piVar2;\n        iVar6 = piVar2[1];\n        local_30 = iVar7;\n        if (iVar8 != iVar6) goto LAB_001e3fd8;\n      }\n      if (iVar7 < 0) {\n        piVar2[1] = iVar8 + local_30;\n      }\nLAB_001e3ed6:\n      pcVar4 = (char *)FUN_001e1eb0();\n      if ((pcVar4 != (char *)0x0) && (*pcVar4 != '\0')) {\n        FUN_001e2060();\n      }\n      iVar8 = *piVar2;\n      iVar6 = local_30 - (piVar2[1] - iVar8);\n      if (iVar8 == piVar2[1]) {\n        iVar6 = local_30;\n      }\n      if (iVar6 < 0) {\n        piVar2[1] = iVar8 + local_30;\n      }\n      FUN_001e1e60();\n      pbVar5 = (byte *)FUN_001e34c0();\n      FUN_001e1e60();\n      if ((pbVar5 == (byte *)0x0) || ((*(byte *)(unaff_EDI + 0xbf7b9 + (uint)*pbVar5 * 2) & 4) == 0)\n         ) {\n        iVar8 = *piVar2;\n        iVar6 = local_30 - (piVar2[1] - iVar8);\n        if (iVar8 == piVar2[1]) {\n          iVar6 = local_30;\n        }\n        if (iVar6 < 0) {\n          piVar2[1] = iVar8 + local_30;\n        }\n        bVar1 = *pbVar3;\n        goto LAB_001e3f9a;\n      }\n    }" { (if_statement "if (*piVar2 == piVar2[1]) {\n        FUN_001e1fa0();\n        iVar8 = *piVar2;\n        local_30 = 0;\n        iVar6 = piVar2[1];\n        if (iVar6 == iVar8) goto LAB_001e3ed6;\nLAB_001e3fd8:\n        iVar7 = local_30 - (iVar6 - iVar8);\n      }\n      else {\n        iVar7 = piVar2[1] - *piVar2;\n        FUN_001e1fa0();\n        iVar8 = *piVar2;\n        iVar6 = piVar2[1];\n        local_30 = iVar7;\n        if (iVar8 != iVar6) goto LAB_001e3fd8;\n      }" if (parenthesized_expression "(*piVar2 == piVar2[1])" ( (binary_expression "*piVar2 == piVar2[1]" (pointer_expression "*piVar2" * identifier) == (subscript_expression "piVar2[1]" identifier [ number_literal ])) )) (compound_statement "{\n        FUN_001e1fa0();\n        iVar8 = *piVar2;\n        local_30 = 0;\n        iVar6 = piVar2[1];\n        if (iVar6 == iVar8) goto LAB_001e3ed6;\nLAB_001e3fd8:\n        iVar7 = local_30 - (iVar6 - iVar8);\n      }" { (expression_statement "FUN_001e1fa0();" (call_expression "FUN_001e1fa0()" identifier (argument_list "()" ( ))) ;) (expression_statement "iVar8 = *piVar2;" (assignment_expression "iVar8 = *piVar2" identifier = (pointer_expression "*piVar2" * identifier)) ;) (expression_statement "local_30 = 0;" (assignment_expression "local_30 = 0" identifier = number_literal) ;) (expression_statement "iVar6 = piVar2[1];" (assignment_expression "iVar6 = piVar2[1]" identifier = (subscript_expression "piVar2[1]" identifier [ number_literal ])) ;) (if_statement "if (iVar6 == iVar8) goto LAB_001e3ed6;" if (parenthesized_expression "(iVar6 == iVar8)" ( (binary_expression "iVar6 == iVar8" identifier == identifier) )) (goto_statement "goto LAB_001e3ed6;" goto statement_identifier ;)) (labeled_statement "LAB_001e3fd8:\n        iVar7 = local_30 - (iVar6 - iVar8);" statement_identifier : (expression_statement "iVar7 = local_30 - (iVar6 - iVar8);" (assignment_expression "iVar7 = local_30 - (iVar6 - iVar8)" identifier = (binary_expression "local_30 - (iVar6 - iVar8)" identifier - (parenthesized_expression "(iVar6 - iVar8)" ( (binary_expression "iVar6 - iVar8" identifier - identifier) )))) ;)) }) (else_clause "else {\n        iVar7 = piVar2[1] - *piVar2;\n        FUN_001e1fa0();\n        iVar8 = *piVar2;\n        iVar6 = piVar2[1];\n        local_30 = iVar7;\n        if (iVar8 != iVar6) goto LAB_001e3fd8;\n      }" else (compound_statement "{\n        iVar7 = piVar2[1] - *piVar2;\n        FUN_001e1fa0();\n        iVar8 = *piVar2;\n        iVar6 = piVar2[1];\n        local_30 = iVar7;\n        if (iVar8 != iVar6) goto LAB_001e3fd8;\n      }" { (expression_statement "iVar7 = piVar2[1] - *piVar2;" (assignment_expression "iVar7 = piVar2[1] - *piVar2" identifier = (binary_expression "piVar2[1] - *piVar2" (subscript_expression "piVar2[1]" identifier [ number_literal ]) - (pointer_expression "*piVar2" * identifier))) ;) (expression_statement "FUN_001e1fa0();" (call_expression "FUN_001e1fa0()" identifier (argument_list "()" ( ))) ;) (expression_statement "iVar8 = *piVar2;" (assignment_expression "iVar8 = *piVar2" identifier = (pointer_expression "*piVar2" * identifier)) ;) (expression_statement "iVar6 = piVar2[1];" (assignment_expression "iVar6 = piVar2[1]" identifier = (subscript_expression "piVar2[1]" identifier [ number_literal ])) ;) (expression_statement "local_30 = iVar7;" (assignment_expression "local_30 = iVar7" identifier = identifier) ;) (if_statement "if (iVar8 != iVar6) goto LAB_001e3fd8;" if (parenthesized_expression "(iVar8 != iVar6)" ( (binary_expression "iVar8 != iVar6" identifier != identifier) )) (goto_statement "goto LAB_001e3fd8;" goto statement_identifier ;)) }))) (if_statement "if (iVar7 < 0) {\n        piVar2[1] = iVar8 + local_30;\n      }" if (parenthesized_expression "(iVar7 < 0)" ( (binary_expression "iVar7 < 0" identifier < number_literal) )) (compound_statement "{\n        piVar2[1] = iVar8 + local_30;\n      }" { (expression_statement "piVar2[1] = iVar8 + local_30;" (assignment_expression "piVar2[1] = iVar8 + local_30" (subscript_expression "piVar2[1]" identifier [ number_literal ]) = (binary_expression "iVar8 + local_30" identifier + identifier)) ;) })) (labeled_statement "LAB_001e3ed6:\n      pcVar4 = (char *)FUN_001e1eb0();" statement_identifier : (expression_statement "pcVar4 = (char *)FUN_001e1eb0();" (assignment_expression "pcVar4 = (char *)FUN_001e1eb0()" identifier = (cast_expression "(char *)FUN_001e1eb0()" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_001e1eb0()" identifier (argument_list "()" ( ))))) ;)) (if_statement "if ((pcVar4 != (char *)0x0) && (*pcVar4 != '\0')) {\n        FUN_001e2060();\n      }" if (parenthesized_expression "((pcVar4 != (char *)0x0) && (*pcVar4 != '\0'))" ( (binary_expression "(pcVar4 != (char *)0x0) && (*pcVar4 != '\0')" (parenthesized_expression "(pcVar4 != (char *)0x0)" ( (binary_expression "pcVar4 != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) && (parenthesized_expression "(*pcVar4 != '\0')" ( (binary_expression "*pcVar4 != '\0'" (pointer_expression "*pcVar4" * identifier) != (char_literal "'\0'" ' escape_sequence ')) ))) )) (compound_statement "{\n        FUN_001e2060();\n      }" { (expression_statement "FUN_001e2060();" (call_expression "FUN_001e2060()" identifier (argument_list "()" ( ))) ;) })) (expression_statement "iVar8 = *piVar2;" (assignment_expression "iVar8 = *piVar2" identifier = (pointer_expression "*piVar2" * identifier)) ;) (expression_statement "iVar6 = local_30 - (piVar2[1] - iVar8);" (assignment_expression "iVar6 = local_30 - (piVar2[1] - iVar8)" identifier = (binary_expression "local_30 - (piVar2[1] - iVar8)" identifier - (parenthesized_expression "(piVar2[1] - iVar8)" ( (binary_expression "piVar2[1] - iVar8" (subscript_expression "piVar2[1]" identifier [ number_literal ]) - identifier) )))) ;) (if_statement "if (iVar8 == piVar2[1]) {\n        iVar6 = local_30;\n      }" if (parenthesized_expression "(iVar8 == piVar2[1])" ( (binary_expression "iVar8 == piVar2[1]" identifier == (subscript_expression "piVar2[1]" identifier [ number_literal ])) )) (compound_statement "{\n        iVar6 = local_30;\n      }" { (expression_statement "iVar6 = local_30;" (assignment_expression "iVar6 = local_30" identifier = identifier) ;) })) (if_statement "if (iVar6 < 0) {\n        piVar2[1] = iVar8 + local_30;\n      }" if (parenthesized_expression "(iVar6 < 0)" ( (binary_expression "iVar6 < 0" identifier < number_literal) )) (compound_statement "{\n        piVar2[1] = iVar8 + local_30;\n      }" { (expression_statement "piVar2[1] = iVar8 + local_30;" (assignment_expression "piVar2[1] = iVar8 + local_30" (subscript_expression "piVar2[1]" identifier [ number_literal ]) = (binary_expression "iVar8 + local_30" identifier + identifier)) ;) })) (expression_statement "FUN_001e1e60();" (call_expression "FUN_001e1e60()" identifier (argument_list "()" ( ))) ;) (expression_statement "pbVar5 = (byte *)FUN_001e34c0();" (assignment_expression "pbVar5 = (byte *)FUN_001e34c0()" identifier = (cast_expression "(byte *)FUN_001e34c0()" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_001e34c0()" identifier (argument_list "()" ( ))))) ;) (expression_statement "FUN_001e1e60();" (call_expression "FUN_001e1e60()" identifier (argument_list "()" ( ))) ;) (if_statement "if ((pbVar5 == (byte *)0x0) || ((*(byte *)(unaff_EDI + 0xbf7b9 + (uint)*pbVar5 * 2) & 4) == 0)\n         ) {\n        iVar8 = *piVar2;\n        iVar6 = local_30 - (piVar2[1] - iVar8);\n        if (iVar8 == piVar2[1]) {\n          iVar6 = local_30;\n        }\n        if (iVar6 < 0) {\n          piVar2[1] = iVar8 + local_30;\n        }\n        bVar1 = *pbVar3;\n        goto LAB_001e3f9a;\n      }" if (parenthesized_expression "((pbVar5 == (byte *)0x0) || ((*(byte *)(unaff_EDI + 0xbf7b9 + (uint)*pbVar5 * 2) & 4) == 0)\n         )" ( (binary_expression "(pbVar5 == (byte *)0x0) || ((*(byte *)(unaff_EDI + 0xbf7b9 + (uint)*pbVar5 * 2) & 4) == 0)" (parenthesized_expression "(pbVar5 == (byte *)0x0)" ( (binary_expression "pbVar5 == (byte *)0x0" identifier == (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) || (parenthesized_expression "((*(byte *)(unaff_EDI + 0xbf7b9 + (uint)*pbVar5 * 2) & 4) == 0)" ( (binary_expression "(*(byte *)(unaff_EDI + 0xbf7b9 + (uint)*pbVar5 * 2) & 4) == 0" (parenthesized_expression "(*(byte *)(unaff_EDI + 0xbf7b9 + (uint)*pbVar5 * 2) & 4)" ( (binary_expression "*(byte *)(unaff_EDI + 0xbf7b9 + (uint)*pbVar5 * 2) & 4" (pointer_expression "*(byte *)(unaff_EDI + 0xbf7b9 + (uint)*pbVar5 * 2)" * (cast_expression "(byte *)(unaff_EDI + 0xbf7b9 + (uint)*pbVar5 * 2)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0xbf7b9 + (uint)*pbVar5 * 2)" ( (binary_expression "unaff_EDI + 0xbf7b9 + (uint)*pbVar5 * 2" (binary_expression "unaff_EDI + 0xbf7b9" identifier + number_literal) + (binary_expression "(uint)*pbVar5 * 2" (binary_expression "(uint)*pbVar5" (parenthesized_expression "(uint)" ( identifier )) * identifier) * number_literal)) )))) & number_literal) )) == number_literal) ))) )) (compound_statement "{\n        iVar8 = *piVar2;\n        iVar6 = local_30 - (piVar2[1] - iVar8);\n        if (iVar8 == piVar2[1]) {\n          iVar6 = local_30;\n        }\n        if (iVar6 < 0) {\n          piVar2[1] = iVar8 + local_30;\n        }\n        bVar1 = *pbVar3;\n        goto LAB_001e3f9a;\n      }" { (expression_statement "iVar8 = *piVar2;" (assignment_expression "iVar8 = *piVar2" identifier = (pointer_expression "*piVar2" * identifier)) ;) (expression_statement "iVar6 = local_30 - (piVar2[1] - iVar8);" (assignment_expression "iVar6 = local_30 - (piVar2[1] - iVar8)" identifier = (binary_expression "local_30 - (piVar2[1] - iVar8)" identifier - (parenthesized_expression "(piVar2[1] - iVar8)" ( (binary_expression "piVar2[1] - iVar8" (subscript_expression "piVar2[1]" identifier [ number_literal ]) - identifier) )))) ;) (if_statement "if (iVar8 == piVar2[1]) {\n          iVar6 = local_30;\n        }" if (parenthesized_expression "(iVar8 == piVar2[1])" ( (binary_expression "iVar8 == piVar2[1]" identifier == (subscript_expression "piVar2[1]" identifier [ number_literal ])) )) (compound_statement "{\n          iVar6 = local_30;\n        }" { (expression_statement "iVar6 = local_30;" (assignment_expression "iVar6 = local_30" identifier = identifier) ;) })) (if_statement "if (iVar6 < 0) {\n          piVar2[1] = iVar8 + local_30;\n        }" if (parenthesized_expression "(iVar6 < 0)" ( (binary_expression "iVar6 < 0" identifier < number_literal) )) (compound_statement "{\n          piVar2[1] = iVar8 + local_30;\n        }" { (expression_statement "piVar2[1] = iVar8 + local_30;" (assignment_expression "piVar2[1] = iVar8 + local_30" (subscript_expression "piVar2[1]" identifier [ number_literal ]) = (binary_expression "iVar8 + local_30" identifier + identifier)) ;) })) (expression_statement "bVar1 = *pbVar3;" (assignment_expression "bVar1 = *pbVar3" identifier = (pointer_expression "*pbVar3" * identifier)) ;) (goto_statement "goto LAB_001e3f9a;" goto statement_identifier ;) })) }) (else_clause "else {\n      if (((byte)(bVar1 + 0xba) < 0x14) && ((1 << (bVar1 + 0xba & 0x1f) & 0xb9001U) != 0)) {\n        if (*piVar2 == piVar2[1]) {\n          local_30 = 0;\n        }\n        else {\n          local_30 = piVar2[1] - *piVar2;\n        }\n        goto LAB_001e3ed6;\n      }\nLAB_001e3f9a:\n      pbVar5 = pbVar3;\n      if ((*(byte *)(unaff_EDI + 0xbf7b9 + (uint)bVar1 * 2) & 4) == 0) {\n        return pbVar3;\n      }\n    }" else (compound_statement "{\n      if (((byte)(bVar1 + 0xba) < 0x14) && ((1 << (bVar1 + 0xba & 0x1f) & 0xb9001U) != 0)) {\n        if (*piVar2 == piVar2[1]) {\n          local_30 = 0;\n        }\n        else {\n          local_30 = piVar2[1] - *piVar2;\n        }\n        goto LAB_001e3ed6;\n      }\nLAB_001e3f9a:\n      pbVar5 = pbVar3;\n      if ((*(byte *)(unaff_EDI + 0xbf7b9 + (uint)bVar1 * 2) & 4) == 0) {\n        return pbVar3;\n      }\n    }" { (if_statement "if (((byte)(bVar1 + 0xba) < 0x14) && ((1 << (bVar1 + 0xba & 0x1f) & 0xb9001U) != 0)) {\n        if (*piVar2 == piVar2[1]) {\n          local_30 = 0;\n        }\n        else {\n          local_30 = piVar2[1] - *piVar2;\n        }\n        goto LAB_001e3ed6;\n      }" if (parenthesized_expression "(((byte)(bVar1 + 0xba) < 0x14) && ((1 << (bVar1 + 0xba & 0x1f) & 0xb9001U) != 0))" ( (binary_expression "((byte)(bVar1 + 0xba) < 0x14) && ((1 << (bVar1 + 0xba & 0x1f) & 0xb9001U) != 0)" (parenthesized_expression "((byte)(bVar1 + 0xba) < 0x14)" ( (binary_expression "(byte)(bVar1 + 0xba) < 0x14" (call_expression "(byte)(bVar1 + 0xba)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(bVar1 + 0xba)" ( (binary_expression "bVar1 + 0xba" identifier + number_literal) ))) < number_literal) )) && (parenthesized_expression "((1 << (bVar1 + 0xba & 0x1f) & 0xb9001U) != 0)" ( (binary_expression "(1 << (bVar1 + 0xba & 0x1f) & 0xb9001U) != 0" (parenthesized_expression "(1 << (bVar1 + 0xba & 0x1f) & 0xb9001U)" ( (binary_expression "1 << (bVar1 + 0xba & 0x1f) & 0xb9001U" (binary_expression "1 << (bVar1 + 0xba & 0x1f)" number_literal << (parenthesized_expression "(bVar1 + 0xba & 0x1f)" ( (binary_expression "bVar1 + 0xba & 0x1f" (binary_expression "bVar1 + 0xba" identifier + number_literal) & number_literal) ))) & number_literal) )) != number_literal) ))) )) (compound_statement "{\n        if (*piVar2 == piVar2[1]) {\n          local_30 = 0;\n        }\n        else {\n          local_30 = piVar2[1] - *piVar2;\n        }\n        goto LAB_001e3ed6;\n      }" { (if_statement "if (*piVar2 == piVar2[1]) {\n          local_30 = 0;\n        }\n        else {\n          local_30 = piVar2[1] - *piVar2;\n        }" if (parenthesized_expression "(*piVar2 == piVar2[1])" ( (binary_expression "*piVar2 == piVar2[1]" (pointer_expression "*piVar2" * identifier) == (subscript_expression "piVar2[1]" identifier [ number_literal ])) )) (compound_statement "{\n          local_30 = 0;\n        }" { (expression_statement "local_30 = 0;" (assignment_expression "local_30 = 0" identifier = number_literal) ;) }) (else_clause "else {\n          local_30 = piVar2[1] - *piVar2;\n        }" else (compound_statement "{\n          local_30 = piVar2[1] - *piVar2;\n        }" { (expression_statement "local_30 = piVar2[1] - *piVar2;" (assignment_expression "local_30 = piVar2[1] - *piVar2" identifier = (binary_expression "piVar2[1] - *piVar2" (subscript_expression "piVar2[1]" identifier [ number_literal ]) - (pointer_expression "*piVar2" * identifier))) ;) }))) (goto_statement "goto LAB_001e3ed6;" goto statement_identifier ;) })) (labeled_statement "LAB_001e3f9a:\n      pbVar5 = pbVar3;" statement_identifier : (expression_statement "pbVar5 = pbVar3;" (assignment_expression "pbVar5 = pbVar3" identifier = identifier) ;)) (if_statement "if ((*(byte *)(unaff_EDI + 0xbf7b9 + (uint)bVar1 * 2) & 4) == 0) {\n        return pbVar3;\n      }" if (parenthesized_expression "((*(byte *)(unaff_EDI + 0xbf7b9 + (uint)bVar1 * 2) & 4) == 0)" ( (binary_expression "(*(byte *)(unaff_EDI + 0xbf7b9 + (uint)bVar1 * 2) & 4) == 0" (parenthesized_expression "(*(byte *)(unaff_EDI + 0xbf7b9 + (uint)bVar1 * 2) & 4)" ( (binary_expression "*(byte *)(unaff_EDI + 0xbf7b9 + (uint)bVar1 * 2) & 4" (pointer_expression "*(byte *)(unaff_EDI + 0xbf7b9 + (uint)bVar1 * 2)" * (cast_expression "(byte *)(unaff_EDI + 0xbf7b9 + (uint)bVar1 * 2)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0xbf7b9 + (uint)bVar1 * 2)" ( (binary_expression "unaff_EDI + 0xbf7b9 + (uint)bVar1 * 2" (binary_expression "unaff_EDI + 0xbf7b9" identifier + number_literal) + (binary_expression "(uint)bVar1 * 2" (cast_expression "(uint)bVar1" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) )))) & number_literal) )) == number_literal) )) (compound_statement "{\n        return pbVar3;\n      }" { (return_statement "return pbVar3;" return identifier ;) })) }))) (if_statement "if (iVar9 != 0) {\n      FUN_001e1e60();\n    }" if (parenthesized_expression "(iVar9 != 0)" ( (binary_expression "iVar9 != 0" identifier != number_literal) )) (compound_statement "{\n      FUN_001e1e60();\n    }" { (expression_statement "FUN_001e1e60();" (call_expression "FUN_001e1e60()" identifier (argument_list "()" ( ))) ;) })) (expression_statement "iVar9 = iVar9 + 1;" (assignment_expression "iVar9 = iVar9 + 1" identifier = (binary_expression "iVar9 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "( true )" ( true )) ;) })))
(translation_unit "char * dlang_parse_qualified(string *decl,char *mangled,dlang_symbol_kinds kind)\n\n{\n  byte bVar1;\n  string *decl_00;\n  byte *pbVar2;\n  char *pcVar3;\n  byte *pbVar4;\n  char *pcVar5;\n  dlang_symbol_kinds kind_00;\n  int iVar6;\n  int unaff_EDI;\n  int iVar7;\n  undefined8 uVar8;\n  string *in_stack_ffffffc4;\n  char *in_stack_ffffffc8;\n  int local_30;\n  \n  uVar8 = __x86_get_pc_thunk_di();\n  pbVar4 = (byte *)((ulonglong)uVar8 >> 0x20);\n  decl_00 = (string *)uVar8;\n  iVar7 = 1;\n  do {\n    for (; *pbVar4 == 0x30; pbVar4 = pbVar4 + 1) {\n    }\n    pbVar2 = (byte *)dlang_identifier(decl_00,(char *)pbVar4,kind_00);\n    if (pbVar2 == (byte *)0x0) {\n      return (char *)0x0;\n    }\n    bVar1 = *pbVar2;\n    if (bVar1 == 0x4d) {\n      if (decl_00->b == decl_00->p) {\n        pbVar4 = (byte *)dlang_type_modifiers(decl_00,(char *)(pbVar2 + 1));\n        pcVar3 = decl_00->b;\n        local_30 = 0;\n        pcVar5 = decl_00->p;\n        if (pcVar5 == pcVar3) goto LAB_001e3ed6;\nLAB_001e3fd8:\n        iVar6 = local_30 - ((int)pcVar5 - (int)pcVar3);\n      }\n      else {\n        iVar6 = (int)decl_00->p - (int)decl_00->b;\n        pbVar4 = (byte *)dlang_type_modifiers(decl_00,(char *)(pbVar2 + 1));\n        pcVar3 = decl_00->b;\n        pcVar5 = decl_00->p;\n        local_30 = iVar6;\n        if (pcVar3 != pcVar5) goto LAB_001e3fd8;\n      }\n      if (iVar6 < 0) {\n        decl_00->p = pcVar3 + local_30;\n      }\nLAB_001e3ed6:\n      pcVar3 = dlang_call_convention(decl_00,(char *)pbVar4);\n      if (pcVar3 != (char *)0x0) {\n        if (*pcVar3 == '\0') {\n          pcVar3 = (char *)0x0;\n        }\n        else {\n          pcVar3 = dlang_attributes(in_stack_ffffffc4,in_stack_ffffffc8);\n        }\n      }\n      pcVar5 = decl_00->b;\n      iVar6 = local_30 - ((int)decl_00->p - (int)pcVar5);\n      if (pcVar5 == decl_00->p) {\n        iVar6 = local_30;\n      }\n      if (iVar6 < 0) {\n        decl_00->p = pcVar5 + local_30;\n      }\n      string_append(decl_00,(char *)(unaff_EDI + 0xb2025));\n      pbVar4 = (byte *)dlang_function_args(decl_00,pcVar3);\n      string_append(decl_00,(char *)(unaff_EDI + 0xbd158));\n      if ((pbVar4 == (byte *)0x0) || ((*(byte *)(unaff_EDI + 0xbf7b9 + (uint)*pbVar4 * 2) & 4) == 0)\n         ) {\n        pcVar3 = decl_00->b;\n        iVar6 = local_30 - ((int)decl_00->p - (int)pcVar3);\n        if (pcVar3 == decl_00->p) {\n          iVar6 = local_30;\n        }\n        if (iVar6 < 0) {\n          decl_00->p = pcVar3 + local_30;\n        }\n        bVar1 = *pbVar2;\n        goto LAB_001e3f9a;\n      }\n    }\n    else {\n      if (((byte)(bVar1 + 0xba) < 0x14) && ((1 << (bVar1 + 0xba & 0x1f) & 0xb9001U) != 0)) {\n        pbVar4 = pbVar2;\n        if (decl_00->b == decl_00->p) {\n          local_30 = 0;\n        }\n        else {\n          local_30 = (int)decl_00->p - (int)decl_00->b;\n        }\n        goto LAB_001e3ed6;\n      }\nLAB_001e3f9a:\n      pbVar4 = pbVar2;\n      if ((*(byte *)(unaff_EDI + 0xbf7b9 + (uint)bVar1 * 2) & 4) == 0) {\n        return (char *)pbVar2;\n      }\n    }\n    if (iVar7 != 0) {\n      string_append(decl_00,(char *)(unaff_EDI + 0xa9e04));\n    }\n    iVar7 = iVar7 + 1;\n  } while( true );\n}\n\n" (function_definition "char * dlang_parse_qualified(string *decl,char *mangled,dlang_symbol_kinds kind)\n\n{\n  byte bVar1;\n  string *decl_00;\n  byte *pbVar2;\n  char *pcVar3;\n  byte *pbVar4;\n  char *pcVar5;\n  dlang_symbol_kinds kind_00;\n  int iVar6;\n  int unaff_EDI;\n  int iVar7;\n  undefined8 uVar8;\n  string *in_stack_ffffffc4;\n  char *in_stack_ffffffc8;\n  int local_30;\n  \n  uVar8 = __x86_get_pc_thunk_di();\n  pbVar4 = (byte *)((ulonglong)uVar8 >> 0x20);\n  decl_00 = (string *)uVar8;\n  iVar7 = 1;\n  do {\n    for (; *pbVar4 == 0x30; pbVar4 = pbVar4 + 1) {\n    }\n    pbVar2 = (byte *)dlang_identifier(decl_00,(char *)pbVar4,kind_00);\n    if (pbVar2 == (byte *)0x0) {\n      return (char *)0x0;\n    }\n    bVar1 = *pbVar2;\n    if (bVar1 == 0x4d) {\n      if (decl_00->b == decl_00->p) {\n        pbVar4 = (byte *)dlang_type_modifiers(decl_00,(char *)(pbVar2 + 1));\n        pcVar3 = decl_00->b;\n        local_30 = 0;\n        pcVar5 = decl_00->p;\n        if (pcVar5 == pcVar3) goto LAB_001e3ed6;\nLAB_001e3fd8:\n        iVar6 = local_30 - ((int)pcVar5 - (int)pcVar3);\n      }\n      else {\n        iVar6 = (int)decl_00->p - (int)decl_00->b;\n        pbVar4 = (byte *)dlang_type_modifiers(decl_00,(char *)(pbVar2 + 1));\n        pcVar3 = decl_00->b;\n        pcVar5 = decl_00->p;\n        local_30 = iVar6;\n        if (pcVar3 != pcVar5) goto LAB_001e3fd8;\n      }\n      if (iVar6 < 0) {\n        decl_00->p = pcVar3 + local_30;\n      }\nLAB_001e3ed6:\n      pcVar3 = dlang_call_convention(decl_00,(char *)pbVar4);\n      if (pcVar3 != (char *)0x0) {\n        if (*pcVar3 == '\0') {\n          pcVar3 = (char *)0x0;\n        }\n        else {\n          pcVar3 = dlang_attributes(in_stack_ffffffc4,in_stack_ffffffc8);\n        }\n      }\n      pcVar5 = decl_00->b;\n      iVar6 = local_30 - ((int)decl_00->p - (int)pcVar5);\n      if (pcVar5 == decl_00->p) {\n        iVar6 = local_30;\n      }\n      if (iVar6 < 0) {\n        decl_00->p = pcVar5 + local_30;\n      }\n      string_append(decl_00,(char *)(unaff_EDI + 0xb2025));\n      pbVar4 = (byte *)dlang_function_args(decl_00,pcVar3);\n      string_append(decl_00,(char *)(unaff_EDI + 0xbd158));\n      if ((pbVar4 == (byte *)0x0) || ((*(byte *)(unaff_EDI + 0xbf7b9 + (uint)*pbVar4 * 2) & 4) == 0)\n         ) {\n        pcVar3 = decl_00->b;\n        iVar6 = local_30 - ((int)decl_00->p - (int)pcVar3);\n        if (pcVar3 == decl_00->p) {\n          iVar6 = local_30;\n        }\n        if (iVar6 < 0) {\n          decl_00->p = pcVar3 + local_30;\n        }\n        bVar1 = *pbVar2;\n        goto LAB_001e3f9a;\n      }\n    }\n    else {\n      if (((byte)(bVar1 + 0xba) < 0x14) && ((1 << (bVar1 + 0xba & 0x1f) & 0xb9001U) != 0)) {\n        pbVar4 = pbVar2;\n        if (decl_00->b == decl_00->p) {\n          local_30 = 0;\n        }\n        else {\n          local_30 = (int)decl_00->p - (int)decl_00->b;\n        }\n        goto LAB_001e3ed6;\n      }\nLAB_001e3f9a:\n      pbVar4 = pbVar2;\n      if ((*(byte *)(unaff_EDI + 0xbf7b9 + (uint)bVar1 * 2) & 4) == 0) {\n        return (char *)pbVar2;\n      }\n    }\n    if (iVar7 != 0) {\n      string_append(decl_00,(char *)(unaff_EDI + 0xa9e04));\n    }\n    iVar7 = iVar7 + 1;\n  } while( true );\n}" primitive_type (pointer_declarator "* dlang_parse_qualified(string *decl,char *mangled,dlang_symbol_kinds kind)" * (function_declarator "dlang_parse_qualified(string *decl,char *mangled,dlang_symbol_kinds kind)" identifier (parameter_list "(string *decl,char *mangled,dlang_symbol_kinds kind)" ( (parameter_declaration "string *decl" type_identifier (pointer_declarator "*decl" * identifier)) , (parameter_declaration "char *mangled" primitive_type (pointer_declarator "*mangled" * identifier)) , (parameter_declaration "dlang_symbol_kinds kind" type_identifier identifier) )))) (compound_statement "{\n  byte bVar1;\n  string *decl_00;\n  byte *pbVar2;\n  char *pcVar3;\n  byte *pbVar4;\n  char *pcVar5;\n  dlang_symbol_kinds kind_00;\n  int iVar6;\n  int unaff_EDI;\n  int iVar7;\n  undefined8 uVar8;\n  string *in_stack_ffffffc4;\n  char *in_stack_ffffffc8;\n  int local_30;\n  \n  uVar8 = __x86_get_pc_thunk_di();\n  pbVar4 = (byte *)((ulonglong)uVar8 >> 0x20);\n  decl_00 = (string *)uVar8;\n  iVar7 = 1;\n  do {\n    for (; *pbVar4 == 0x30; pbVar4 = pbVar4 + 1) {\n    }\n    pbVar2 = (byte *)dlang_identifier(decl_00,(char *)pbVar4,kind_00);\n    if (pbVar2 == (byte *)0x0) {\n      return (char *)0x0;\n    }\n    bVar1 = *pbVar2;\n    if (bVar1 == 0x4d) {\n      if (decl_00->b == decl_00->p) {\n        pbVar4 = (byte *)dlang_type_modifiers(decl_00,(char *)(pbVar2 + 1));\n        pcVar3 = decl_00->b;\n        local_30 = 0;\n        pcVar5 = decl_00->p;\n        if (pcVar5 == pcVar3) goto LAB_001e3ed6;\nLAB_001e3fd8:\n        iVar6 = local_30 - ((int)pcVar5 - (int)pcVar3);\n      }\n      else {\n        iVar6 = (int)decl_00->p - (int)decl_00->b;\n        pbVar4 = (byte *)dlang_type_modifiers(decl_00,(char *)(pbVar2 + 1));\n        pcVar3 = decl_00->b;\n        pcVar5 = decl_00->p;\n        local_30 = iVar6;\n        if (pcVar3 != pcVar5) goto LAB_001e3fd8;\n      }\n      if (iVar6 < 0) {\n        decl_00->p = pcVar3 + local_30;\n      }\nLAB_001e3ed6:\n      pcVar3 = dlang_call_convention(decl_00,(char *)pbVar4);\n      if (pcVar3 != (char *)0x0) {\n        if (*pcVar3 == '\0') {\n          pcVar3 = (char *)0x0;\n        }\n        else {\n          pcVar3 = dlang_attributes(in_stack_ffffffc4,in_stack_ffffffc8);\n        }\n      }\n      pcVar5 = decl_00->b;\n      iVar6 = local_30 - ((int)decl_00->p - (int)pcVar5);\n      if (pcVar5 == decl_00->p) {\n        iVar6 = local_30;\n      }\n      if (iVar6 < 0) {\n        decl_00->p = pcVar5 + local_30;\n      }\n      string_append(decl_00,(char *)(unaff_EDI + 0xb2025));\n      pbVar4 = (byte *)dlang_function_args(decl_00,pcVar3);\n      string_append(decl_00,(char *)(unaff_EDI + 0xbd158));\n      if ((pbVar4 == (byte *)0x0) || ((*(byte *)(unaff_EDI + 0xbf7b9 + (uint)*pbVar4 * 2) & 4) == 0)\n         ) {\n        pcVar3 = decl_00->b;\n        iVar6 = local_30 - ((int)decl_00->p - (int)pcVar3);\n        if (pcVar3 == decl_00->p) {\n          iVar6 = local_30;\n        }\n        if (iVar6 < 0) {\n          decl_00->p = pcVar3 + local_30;\n        }\n        bVar1 = *pbVar2;\n        goto LAB_001e3f9a;\n      }\n    }\n    else {\n      if (((byte)(bVar1 + 0xba) < 0x14) && ((1 << (bVar1 + 0xba & 0x1f) & 0xb9001U) != 0)) {\n        pbVar4 = pbVar2;\n        if (decl_00->b == decl_00->p) {\n          local_30 = 0;\n        }\n        else {\n          local_30 = (int)decl_00->p - (int)decl_00->b;\n        }\n        goto LAB_001e3ed6;\n      }\nLAB_001e3f9a:\n      pbVar4 = pbVar2;\n      if ((*(byte *)(unaff_EDI + 0xbf7b9 + (uint)bVar1 * 2) & 4) == 0) {\n        return (char *)pbVar2;\n      }\n    }\n    if (iVar7 != 0) {\n      string_append(decl_00,(char *)(unaff_EDI + 0xa9e04));\n    }\n    iVar7 = iVar7 + 1;\n  } while( true );\n}" { (declaration "byte bVar1;" type_identifier identifier ;) (declaration "string *decl_00;" type_identifier (pointer_declarator "*decl_00" * identifier) ;) (declaration "byte *pbVar2;" type_identifier (pointer_declarator "*pbVar2" * identifier) ;) (declaration "char *pcVar3;" primitive_type (pointer_declarator "*pcVar3" * identifier) ;) (declaration "byte *pbVar4;" type_identifier (pointer_declarator "*pbVar4" * identifier) ;) (declaration "char *pcVar5;" primitive_type (pointer_declarator "*pcVar5" * identifier) ;) (declaration "dlang_symbol_kinds kind_00;" type_identifier identifier ;) (declaration "int iVar6;" primitive_type identifier ;) (declaration "int unaff_EDI;" primitive_type identifier ;) (declaration "int iVar7;" primitive_type identifier ;) (declaration "undefined8 uVar8;" type_identifier identifier ;) (declaration "string *in_stack_ffffffc4;" type_identifier (pointer_declarator "*in_stack_ffffffc4" * identifier) ;) (declaration "char *in_stack_ffffffc8;" primitive_type (pointer_declarator "*in_stack_ffffffc8" * identifier) ;) (declaration "int local_30;" primitive_type identifier ;) (expression_statement "uVar8 = __x86_get_pc_thunk_di();" (assignment_expression "uVar8 = __x86_get_pc_thunk_di()" identifier = (call_expression "__x86_get_pc_thunk_di()" identifier (argument_list "()" ( )))) ;) (expression_statement "pbVar4 = (byte *)((ulonglong)uVar8 >> 0x20);" (assignment_expression "pbVar4 = (byte *)((ulonglong)uVar8 >> 0x20)" identifier = (cast_expression "(byte *)((ulonglong)uVar8 >> 0x20)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((ulonglong)uVar8 >> 0x20)" ( (binary_expression "(ulonglong)uVar8 >> 0x20" (cast_expression "(ulonglong)uVar8" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "decl_00 = (string *)uVar8;" (assignment_expression "decl_00 = (string *)uVar8" identifier = (cast_expression "(string *)uVar8" ( (type_descriptor "string *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (expression_statement "iVar7 = 1;" (assignment_expression "iVar7 = 1" identifier = number_literal) ;) (do_statement "do {\n    for (; *pbVar4 == 0x30; pbVar4 = pbVar4 + 1) {\n    }\n    pbVar2 = (byte *)dlang_identifier(decl_00,(char *)pbVar4,kind_00);\n    if (pbVar2 == (byte *)0x0) {\n      return (char *)0x0;\n    }\n    bVar1 = *pbVar2;\n    if (bVar1 == 0x4d) {\n      if (decl_00->b == decl_00->p) {\n        pbVar4 = (byte *)dlang_type_modifiers(decl_00,(char *)(pbVar2 + 1));\n        pcVar3 = decl_00->b;\n        local_30 = 0;\n        pcVar5 = decl_00->p;\n        if (pcVar5 == pcVar3) goto LAB_001e3ed6;\nLAB_001e3fd8:\n        iVar6 = local_30 - ((int)pcVar5 - (int)pcVar3);\n      }\n      else {\n        iVar6 = (int)decl_00->p - (int)decl_00->b;\n        pbVar4 = (byte *)dlang_type_modifiers(decl_00,(char *)(pbVar2 + 1));\n        pcVar3 = decl_00->b;\n        pcVar5 = decl_00->p;\n        local_30 = iVar6;\n        if (pcVar3 != pcVar5) goto LAB_001e3fd8;\n      }\n      if (iVar6 < 0) {\n        decl_00->p = pcVar3 + local_30;\n      }\nLAB_001e3ed6:\n      pcVar3 = dlang_call_convention(decl_00,(char *)pbVar4);\n      if (pcVar3 != (char *)0x0) {\n        if (*pcVar3 == '\0') {\n          pcVar3 = (char *)0x0;\n        }\n        else {\n          pcVar3 = dlang_attributes(in_stack_ffffffc4,in_stack_ffffffc8);\n        }\n      }\n      pcVar5 = decl_00->b;\n      iVar6 = local_30 - ((int)decl_00->p - (int)pcVar5);\n      if (pcVar5 == decl_00->p) {\n        iVar6 = local_30;\n      }\n      if (iVar6 < 0) {\n        decl_00->p = pcVar5 + local_30;\n      }\n      string_append(decl_00,(char *)(unaff_EDI + 0xb2025));\n      pbVar4 = (byte *)dlang_function_args(decl_00,pcVar3);\n      string_append(decl_00,(char *)(unaff_EDI + 0xbd158));\n      if ((pbVar4 == (byte *)0x0) || ((*(byte *)(unaff_EDI + 0xbf7b9 + (uint)*pbVar4 * 2) & 4) == 0)\n         ) {\n        pcVar3 = decl_00->b;\n        iVar6 = local_30 - ((int)decl_00->p - (int)pcVar3);\n        if (pcVar3 == decl_00->p) {\n          iVar6 = local_30;\n        }\n        if (iVar6 < 0) {\n          decl_00->p = pcVar3 + local_30;\n        }\n        bVar1 = *pbVar2;\n        goto LAB_001e3f9a;\n      }\n    }\n    else {\n      if (((byte)(bVar1 + 0xba) < 0x14) && ((1 << (bVar1 + 0xba & 0x1f) & 0xb9001U) != 0)) {\n        pbVar4 = pbVar2;\n        if (decl_00->b == decl_00->p) {\n          local_30 = 0;\n        }\n        else {\n          local_30 = (int)decl_00->p - (int)decl_00->b;\n        }\n        goto LAB_001e3ed6;\n      }\nLAB_001e3f9a:\n      pbVar4 = pbVar2;\n      if ((*(byte *)(unaff_EDI + 0xbf7b9 + (uint)bVar1 * 2) & 4) == 0) {\n        return (char *)pbVar2;\n      }\n    }\n    if (iVar7 != 0) {\n      string_append(decl_00,(char *)(unaff_EDI + 0xa9e04));\n    }\n    iVar7 = iVar7 + 1;\n  } while( true );" do (compound_statement "{\n    for (; *pbVar4 == 0x30; pbVar4 = pbVar4 + 1) {\n    }\n    pbVar2 = (byte *)dlang_identifier(decl_00,(char *)pbVar4,kind_00);\n    if (pbVar2 == (byte *)0x0) {\n      return (char *)0x0;\n    }\n    bVar1 = *pbVar2;\n    if (bVar1 == 0x4d) {\n      if (decl_00->b == decl_00->p) {\n        pbVar4 = (byte *)dlang_type_modifiers(decl_00,(char *)(pbVar2 + 1));\n        pcVar3 = decl_00->b;\n        local_30 = 0;\n        pcVar5 = decl_00->p;\n        if (pcVar5 == pcVar3) goto LAB_001e3ed6;\nLAB_001e3fd8:\n        iVar6 = local_30 - ((int)pcVar5 - (int)pcVar3);\n      }\n      else {\n        iVar6 = (int)decl_00->p - (int)decl_00->b;\n        pbVar4 = (byte *)dlang_type_modifiers(decl_00,(char *)(pbVar2 + 1));\n        pcVar3 = decl_00->b;\n        pcVar5 = decl_00->p;\n        local_30 = iVar6;\n        if (pcVar3 != pcVar5) goto LAB_001e3fd8;\n      }\n      if (iVar6 < 0) {\n        decl_00->p = pcVar3 + local_30;\n      }\nLAB_001e3ed6:\n      pcVar3 = dlang_call_convention(decl_00,(char *)pbVar4);\n      if (pcVar3 != (char *)0x0) {\n        if (*pcVar3 == '\0') {\n          pcVar3 = (char *)0x0;\n        }\n        else {\n          pcVar3 = dlang_attributes(in_stack_ffffffc4,in_stack_ffffffc8);\n        }\n      }\n      pcVar5 = decl_00->b;\n      iVar6 = local_30 - ((int)decl_00->p - (int)pcVar5);\n      if (pcVar5 == decl_00->p) {\n        iVar6 = local_30;\n      }\n      if (iVar6 < 0) {\n        decl_00->p = pcVar5 + local_30;\n      }\n      string_append(decl_00,(char *)(unaff_EDI + 0xb2025));\n      pbVar4 = (byte *)dlang_function_args(decl_00,pcVar3);\n      string_append(decl_00,(char *)(unaff_EDI + 0xbd158));\n      if ((pbVar4 == (byte *)0x0) || ((*(byte *)(unaff_EDI + 0xbf7b9 + (uint)*pbVar4 * 2) & 4) == 0)\n         ) {\n        pcVar3 = decl_00->b;\n        iVar6 = local_30 - ((int)decl_00->p - (int)pcVar3);\n        if (pcVar3 == decl_00->p) {\n          iVar6 = local_30;\n        }\n        if (iVar6 < 0) {\n          decl_00->p = pcVar3 + local_30;\n        }\n        bVar1 = *pbVar2;\n        goto LAB_001e3f9a;\n      }\n    }\n    else {\n      if (((byte)(bVar1 + 0xba) < 0x14) && ((1 << (bVar1 + 0xba & 0x1f) & 0xb9001U) != 0)) {\n        pbVar4 = pbVar2;\n        if (decl_00->b == decl_00->p) {\n          local_30 = 0;\n        }\n        else {\n          local_30 = (int)decl_00->p - (int)decl_00->b;\n        }\n        goto LAB_001e3ed6;\n      }\nLAB_001e3f9a:\n      pbVar4 = pbVar2;\n      if ((*(byte *)(unaff_EDI + 0xbf7b9 + (uint)bVar1 * 2) & 4) == 0) {\n        return (char *)pbVar2;\n      }\n    }\n    if (iVar7 != 0) {\n      string_append(decl_00,(char *)(unaff_EDI + 0xa9e04));\n    }\n    iVar7 = iVar7 + 1;\n  }" { (for_statement "for (; *pbVar4 == 0x30; pbVar4 = pbVar4 + 1) {\n    }" for ( ; (binary_expression "*pbVar4 == 0x30" (pointer_expression "*pbVar4" * identifier) == number_literal) ; (assignment_expression "pbVar4 = pbVar4 + 1" identifier = (binary_expression "pbVar4 + 1" identifier + number_literal)) ) (compound_statement "{\n    }" { })) (expression_statement "pbVar2 = (byte *)dlang_identifier(decl_00,(char *)pbVar4,kind_00);" (assignment_expression "pbVar2 = (byte *)dlang_identifier(decl_00,(char *)pbVar4,kind_00)" identifier = (cast_expression "(byte *)dlang_identifier(decl_00,(char *)pbVar4,kind_00)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "dlang_identifier(decl_00,(char *)pbVar4,kind_00)" identifier (argument_list "(decl_00,(char *)pbVar4,kind_00)" ( identifier , (cast_expression "(char *)pbVar4" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) , identifier ))))) ;) (if_statement "if (pbVar2 == (byte *)0x0) {\n      return (char *)0x0;\n    }" if (parenthesized_expression "(pbVar2 == (byte *)0x0)" ( (binary_expression "pbVar2 == (byte *)0x0" identifier == (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      return (char *)0x0;\n    }" { (return_statement "return (char *)0x0;" return (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal) ;) })) (expression_statement "bVar1 = *pbVar2;" (assignment_expression "bVar1 = *pbVar2" identifier = (pointer_expression "*pbVar2" * identifier)) ;) (if_statement "if (bVar1 == 0x4d) {\n      if (decl_00->b == decl_00->p) {\n        pbVar4 = (byte *)dlang_type_modifiers(decl_00,(char *)(pbVar2 + 1));\n        pcVar3 = decl_00->b;\n        local_30 = 0;\n        pcVar5 = decl_00->p;\n        if (pcVar5 == pcVar3) goto LAB_001e3ed6;\nLAB_001e3fd8:\n        iVar6 = local_30 - ((int)pcVar5 - (int)pcVar3);\n      }\n      else {\n        iVar6 = (int)decl_00->p - (int)decl_00->b;\n        pbVar4 = (byte *)dlang_type_modifiers(decl_00,(char *)(pbVar2 + 1));\n        pcVar3 = decl_00->b;\n        pcVar5 = decl_00->p;\n        local_30 = iVar6;\n        if (pcVar3 != pcVar5) goto LAB_001e3fd8;\n      }\n      if (iVar6 < 0) {\n        decl_00->p = pcVar3 + local_30;\n      }\nLAB_001e3ed6:\n      pcVar3 = dlang_call_convention(decl_00,(char *)pbVar4);\n      if (pcVar3 != (char *)0x0) {\n        if (*pcVar3 == '\0') {\n          pcVar3 = (char *)0x0;\n        }\n        else {\n          pcVar3 = dlang_attributes(in_stack_ffffffc4,in_stack_ffffffc8);\n        }\n      }\n      pcVar5 = decl_00->b;\n      iVar6 = local_30 - ((int)decl_00->p - (int)pcVar5);\n      if (pcVar5 == decl_00->p) {\n        iVar6 = local_30;\n      }\n      if (iVar6 < 0) {\n        decl_00->p = pcVar5 + local_30;\n      }\n      string_append(decl_00,(char *)(unaff_EDI + 0xb2025));\n      pbVar4 = (byte *)dlang_function_args(decl_00,pcVar3);\n      string_append(decl_00,(char *)(unaff_EDI + 0xbd158));\n      if ((pbVar4 == (byte *)0x0) || ((*(byte *)(unaff_EDI + 0xbf7b9 + (uint)*pbVar4 * 2) & 4) == 0)\n         ) {\n        pcVar3 = decl_00->b;\n        iVar6 = local_30 - ((int)decl_00->p - (int)pcVar3);\n        if (pcVar3 == decl_00->p) {\n          iVar6 = local_30;\n        }\n        if (iVar6 < 0) {\n          decl_00->p = pcVar3 + local_30;\n        }\n        bVar1 = *pbVar2;\n        goto LAB_001e3f9a;\n      }\n    }\n    else {\n      if (((byte)(bVar1 + 0xba) < 0x14) && ((1 << (bVar1 + 0xba & 0x1f) & 0xb9001U) != 0)) {\n        pbVar4 = pbVar2;\n        if (decl_00->b == decl_00->p) {\n          local_30 = 0;\n        }\n        else {\n          local_30 = (int)decl_00->p - (int)decl_00->b;\n        }\n        goto LAB_001e3ed6;\n      }\nLAB_001e3f9a:\n      pbVar4 = pbVar2;\n      if ((*(byte *)(unaff_EDI + 0xbf7b9 + (uint)bVar1 * 2) & 4) == 0) {\n        return (char *)pbVar2;\n      }\n    }" if (parenthesized_expression "(bVar1 == 0x4d)" ( (binary_expression "bVar1 == 0x4d" identifier == number_literal) )) (compound_statement "{\n      if (decl_00->b == decl_00->p) {\n        pbVar4 = (byte *)dlang_type_modifiers(decl_00,(char *)(pbVar2 + 1));\n        pcVar3 = decl_00->b;\n        local_30 = 0;\n        pcVar5 = decl_00->p;\n        if (pcVar5 == pcVar3) goto LAB_001e3ed6;\nLAB_001e3fd8:\n        iVar6 = local_30 - ((int)pcVar5 - (int)pcVar3);\n      }\n      else {\n        iVar6 = (int)decl_00->p - (int)decl_00->b;\n        pbVar4 = (byte *)dlang_type_modifiers(decl_00,(char *)(pbVar2 + 1));\n        pcVar3 = decl_00->b;\n        pcVar5 = decl_00->p;\n        local_30 = iVar6;\n        if (pcVar3 != pcVar5) goto LAB_001e3fd8;\n      }\n      if (iVar6 < 0) {\n        decl_00->p = pcVar3 + local_30;\n      }\nLAB_001e3ed6:\n      pcVar3 = dlang_call_convention(decl_00,(char *)pbVar4);\n      if (pcVar3 != (char *)0x0) {\n        if (*pcVar3 == '\0') {\n          pcVar3 = (char *)0x0;\n        }\n        else {\n          pcVar3 = dlang_attributes(in_stack_ffffffc4,in_stack_ffffffc8);\n        }\n      }\n      pcVar5 = decl_00->b;\n      iVar6 = local_30 - ((int)decl_00->p - (int)pcVar5);\n      if (pcVar5 == decl_00->p) {\n        iVar6 = local_30;\n      }\n      if (iVar6 < 0) {\n        decl_00->p = pcVar5 + local_30;\n      }\n      string_append(decl_00,(char *)(unaff_EDI + 0xb2025));\n      pbVar4 = (byte *)dlang_function_args(decl_00,pcVar3);\n      string_append(decl_00,(char *)(unaff_EDI + 0xbd158));\n      if ((pbVar4 == (byte *)0x0) || ((*(byte *)(unaff_EDI + 0xbf7b9 + (uint)*pbVar4 * 2) & 4) == 0)\n         ) {\n        pcVar3 = decl_00->b;\n        iVar6 = local_30 - ((int)decl_00->p - (int)pcVar3);\n        if (pcVar3 == decl_00->p) {\n          iVar6 = local_30;\n        }\n        if (iVar6 < 0) {\n          decl_00->p = pcVar3 + local_30;\n        }\n        bVar1 = *pbVar2;\n        goto LAB_001e3f9a;\n      }\n    }" { (if_statement "if (decl_00->b == decl_00->p) {\n        pbVar4 = (byte *)dlang_type_modifiers(decl_00,(char *)(pbVar2 + 1));\n        pcVar3 = decl_00->b;\n        local_30 = 0;\n        pcVar5 = decl_00->p;\n        if (pcVar5 == pcVar3) goto LAB_001e3ed6;\nLAB_001e3fd8:\n        iVar6 = local_30 - ((int)pcVar5 - (int)pcVar3);\n      }\n      else {\n        iVar6 = (int)decl_00->p - (int)decl_00->b;\n        pbVar4 = (byte *)dlang_type_modifiers(decl_00,(char *)(pbVar2 + 1));\n        pcVar3 = decl_00->b;\n        pcVar5 = decl_00->p;\n        local_30 = iVar6;\n        if (pcVar3 != pcVar5) goto LAB_001e3fd8;\n      }" if (parenthesized_expression "(decl_00->b == decl_00->p)" ( (binary_expression "decl_00->b == decl_00->p" (field_expression "decl_00->b" identifier -> field_identifier) == (field_expression "decl_00->p" identifier -> field_identifier)) )) (compound_statement "{\n        pbVar4 = (byte *)dlang_type_modifiers(decl_00,(char *)(pbVar2 + 1));\n        pcVar3 = decl_00->b;\n        local_30 = 0;\n        pcVar5 = decl_00->p;\n        if (pcVar5 == pcVar3) goto LAB_001e3ed6;\nLAB_001e3fd8:\n        iVar6 = local_30 - ((int)pcVar5 - (int)pcVar3);\n      }" { (expression_statement "pbVar4 = (byte *)dlang_type_modifiers(decl_00,(char *)(pbVar2 + 1));" (assignment_expression "pbVar4 = (byte *)dlang_type_modifiers(decl_00,(char *)(pbVar2 + 1))" identifier = (cast_expression "(byte *)dlang_type_modifiers(decl_00,(char *)(pbVar2 + 1))" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "dlang_type_modifiers(decl_00,(char *)(pbVar2 + 1))" identifier (argument_list "(decl_00,(char *)(pbVar2 + 1))" ( identifier , (cast_expression "(char *)(pbVar2 + 1)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pbVar2 + 1)" ( (binary_expression "pbVar2 + 1" identifier + number_literal) ))) ))))) ;) (expression_statement "pcVar3 = decl_00->b;" (assignment_expression "pcVar3 = decl_00->b" identifier = (field_expression "decl_00->b" identifier -> field_identifier)) ;) (expression_statement "local_30 = 0;" (assignment_expression "local_30 = 0" identifier = number_literal) ;) (expression_statement "pcVar5 = decl_00->p;" (assignment_expression "pcVar5 = decl_00->p" identifier = (field_expression "decl_00->p" identifier -> field_identifier)) ;) (if_statement "if (pcVar5 == pcVar3) goto LAB_001e3ed6;" if (parenthesized_expression "(pcVar5 == pcVar3)" ( (binary_expression "pcVar5 == pcVar3" identifier == identifier) )) (goto_statement "goto LAB_001e3ed6;" goto statement_identifier ;)) (labeled_statement "LAB_001e3fd8:\n        iVar6 = local_30 - ((int)pcVar5 - (int)pcVar3);" statement_identifier : (expression_statement "iVar6 = local_30 - ((int)pcVar5 - (int)pcVar3);" (assignment_expression "iVar6 = local_30 - ((int)pcVar5 - (int)pcVar3)" identifier = (binary_expression "local_30 - ((int)pcVar5 - (int)pcVar3)" identifier - (parenthesized_expression "((int)pcVar5 - (int)pcVar3)" ( (binary_expression "(int)pcVar5 - (int)pcVar3" (cast_expression "(int)pcVar5" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)pcVar3" ( (type_descriptor "int" primitive_type) ) identifier)) )))) ;)) }) (else_clause "else {\n        iVar6 = (int)decl_00->p - (int)decl_00->b;\n        pbVar4 = (byte *)dlang_type_modifiers(decl_00,(char *)(pbVar2 + 1));\n        pcVar3 = decl_00->b;\n        pcVar5 = decl_00->p;\n        local_30 = iVar6;\n        if (pcVar3 != pcVar5) goto LAB_001e3fd8;\n      }" else (compound_statement "{\n        iVar6 = (int)decl_00->p - (int)decl_00->b;\n        pbVar4 = (byte *)dlang_type_modifiers(decl_00,(char *)(pbVar2 + 1));\n        pcVar3 = decl_00->b;\n        pcVar5 = decl_00->p;\n        local_30 = iVar6;\n        if (pcVar3 != pcVar5) goto LAB_001e3fd8;\n      }" { (expression_statement "iVar6 = (int)decl_00->p - (int)decl_00->b;" (assignment_expression "iVar6 = (int)decl_00->p - (int)decl_00->b" identifier = (binary_expression "(int)decl_00->p - (int)decl_00->b" (cast_expression "(int)decl_00->p" ( (type_descriptor "int" primitive_type) ) (field_expression "decl_00->p" identifier -> field_identifier)) - (cast_expression "(int)decl_00->b" ( (type_descriptor "int" primitive_type) ) (field_expression "decl_00->b" identifier -> field_identifier)))) ;) (expression_statement "pbVar4 = (byte *)dlang_type_modifiers(decl_00,(char *)(pbVar2 + 1));" (assignment_expression "pbVar4 = (byte *)dlang_type_modifiers(decl_00,(char *)(pbVar2 + 1))" identifier = (cast_expression "(byte *)dlang_type_modifiers(decl_00,(char *)(pbVar2 + 1))" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "dlang_type_modifiers(decl_00,(char *)(pbVar2 + 1))" identifier (argument_list "(decl_00,(char *)(pbVar2 + 1))" ( identifier , (cast_expression "(char *)(pbVar2 + 1)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pbVar2 + 1)" ( (binary_expression "pbVar2 + 1" identifier + number_literal) ))) ))))) ;) (expression_statement "pcVar3 = decl_00->b;" (assignment_expression "pcVar3 = decl_00->b" identifier = (field_expression "decl_00->b" identifier -> field_identifier)) ;) (expression_statement "pcVar5 = decl_00->p;" (assignment_expression "pcVar5 = decl_00->p" identifier = (field_expression "decl_00->p" identifier -> field_identifier)) ;) (expression_statement "local_30 = iVar6;" (assignment_expression "local_30 = iVar6" identifier = identifier) ;) (if_statement "if (pcVar3 != pcVar5) goto LAB_001e3fd8;" if (parenthesized_expression "(pcVar3 != pcVar5)" ( (binary_expression "pcVar3 != pcVar5" identifier != identifier) )) (goto_statement "goto LAB_001e3fd8;" goto statement_identifier ;)) }))) (if_statement "if (iVar6 < 0) {\n        decl_00->p = pcVar3 + local_30;\n      }" if (parenthesized_expression "(iVar6 < 0)" ( (binary_expression "iVar6 < 0" identifier < number_literal) )) (compound_statement "{\n        decl_00->p = pcVar3 + local_30;\n      }" { (expression_statement "decl_00->p = pcVar3 + local_30;" (assignment_expression "decl_00->p = pcVar3 + local_30" (field_expression "decl_00->p" identifier -> field_identifier) = (binary_expression "pcVar3 + local_30" identifier + identifier)) ;) })) (labeled_statement "LAB_001e3ed6:\n      pcVar3 = dlang_call_convention(decl_00,(char *)pbVar4);" statement_identifier : (expression_statement "pcVar3 = dlang_call_convention(decl_00,(char *)pbVar4);" (assignment_expression "pcVar3 = dlang_call_convention(decl_00,(char *)pbVar4)" identifier = (call_expression "dlang_call_convention(decl_00,(char *)pbVar4)" identifier (argument_list "(decl_00,(char *)pbVar4)" ( identifier , (cast_expression "(char *)pbVar4" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) )))) ;)) (if_statement "if (pcVar3 != (char *)0x0) {\n        if (*pcVar3 == '\0') {\n          pcVar3 = (char *)0x0;\n        }\n        else {\n          pcVar3 = dlang_attributes(in_stack_ffffffc4,in_stack_ffffffc8);\n        }\n      }" if (parenthesized_expression "(pcVar3 != (char *)0x0)" ( (binary_expression "pcVar3 != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        if (*pcVar3 == '\0') {\n          pcVar3 = (char *)0x0;\n        }\n        else {\n          pcVar3 = dlang_attributes(in_stack_ffffffc4,in_stack_ffffffc8);\n        }\n      }" { (if_statement "if (*pcVar3 == '\0') {\n          pcVar3 = (char *)0x0;\n        }\n        else {\n          pcVar3 = dlang_attributes(in_stack_ffffffc4,in_stack_ffffffc8);\n        }" if (parenthesized_expression "(*pcVar3 == '\0')" ( (binary_expression "*pcVar3 == '\0'" (pointer_expression "*pcVar3" * identifier) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n          pcVar3 = (char *)0x0;\n        }" { (expression_statement "pcVar3 = (char *)0x0;" (assignment_expression "pcVar3 = (char *)0x0" identifier = (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) }) (else_clause "else {\n          pcVar3 = dlang_attributes(in_stack_ffffffc4,in_stack_ffffffc8);\n        }" else (compound_statement "{\n          pcVar3 = dlang_attributes(in_stack_ffffffc4,in_stack_ffffffc8);\n        }" { (expression_statement "pcVar3 = dlang_attributes(in_stack_ffffffc4,in_stack_ffffffc8);" (assignment_expression "pcVar3 = dlang_attributes(in_stack_ffffffc4,in_stack_ffffffc8)" identifier = (call_expression "dlang_attributes(in_stack_ffffffc4,in_stack_ffffffc8)" identifier (argument_list "(in_stack_ffffffc4,in_stack_ffffffc8)" ( identifier , identifier )))) ;) }))) })) (expression_statement "pcVar5 = decl_00->b;" (assignment_expression "pcVar5 = decl_00->b" identifier = (field_expression "decl_00->b" identifier -> field_identifier)) ;) (expression_statement "iVar6 = local_30 - ((int)decl_00->p - (int)pcVar5);" (assignment_expression "iVar6 = local_30 - ((int)decl_00->p - (int)pcVar5)" identifier = (binary_expression "local_30 - ((int)decl_00->p - (int)pcVar5)" identifier - (parenthesized_expression "((int)decl_00->p - (int)pcVar5)" ( (binary_expression "(int)decl_00->p - (int)pcVar5" (cast_expression "(int)decl_00->p" ( (type_descriptor "int" primitive_type) ) (field_expression "decl_00->p" identifier -> field_identifier)) - (cast_expression "(int)pcVar5" ( (type_descriptor "int" primitive_type) ) identifier)) )))) ;) (if_statement "if (pcVar5 == decl_00->p) {\n        iVar6 = local_30;\n      }" if (parenthesized_expression "(pcVar5 == decl_00->p)" ( (binary_expression "pcVar5 == decl_00->p" identifier == (field_expression "decl_00->p" identifier -> field_identifier)) )) (compound_statement "{\n        iVar6 = local_30;\n      }" { (expression_statement "iVar6 = local_30;" (assignment_expression "iVar6 = local_30" identifier = identifier) ;) })) (if_statement "if (iVar6 < 0) {\n        decl_00->p = pcVar5 + local_30;\n      }" if (parenthesized_expression "(iVar6 < 0)" ( (binary_expression "iVar6 < 0" identifier < number_literal) )) (compound_statement "{\n        decl_00->p = pcVar5 + local_30;\n      }" { (expression_statement "decl_00->p = pcVar5 + local_30;" (assignment_expression "decl_00->p = pcVar5 + local_30" (field_expression "decl_00->p" identifier -> field_identifier) = (binary_expression "pcVar5 + local_30" identifier + identifier)) ;) })) (expression_statement "string_append(decl_00,(char *)(unaff_EDI + 0xb2025));" (call_expression "string_append(decl_00,(char *)(unaff_EDI + 0xb2025))" identifier (argument_list "(decl_00,(char *)(unaff_EDI + 0xb2025))" ( identifier , (cast_expression "(char *)(unaff_EDI + 0xb2025)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0xb2025)" ( (binary_expression "unaff_EDI + 0xb2025" identifier + number_literal) ))) ))) ;) (expression_statement "pbVar4 = (byte *)dlang_function_args(decl_00,pcVar3);" (assignment_expression "pbVar4 = (byte *)dlang_function_args(decl_00,pcVar3)" identifier = (cast_expression "(byte *)dlang_function_args(decl_00,pcVar3)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "dlang_function_args(decl_00,pcVar3)" identifier (argument_list "(decl_00,pcVar3)" ( identifier , identifier ))))) ;) (expression_statement "string_append(decl_00,(char *)(unaff_EDI + 0xbd158));" (call_expression "string_append(decl_00,(char *)(unaff_EDI + 0xbd158))" identifier (argument_list "(decl_00,(char *)(unaff_EDI + 0xbd158))" ( identifier , (cast_expression "(char *)(unaff_EDI + 0xbd158)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0xbd158)" ( (binary_expression "unaff_EDI + 0xbd158" identifier + number_literal) ))) ))) ;) (if_statement "if ((pbVar4 == (byte *)0x0) || ((*(byte *)(unaff_EDI + 0xbf7b9 + (uint)*pbVar4 * 2) & 4) == 0)\n         ) {\n        pcVar3 = decl_00->b;\n        iVar6 = local_30 - ((int)decl_00->p - (int)pcVar3);\n        if (pcVar3 == decl_00->p) {\n          iVar6 = local_30;\n        }\n        if (iVar6 < 0) {\n          decl_00->p = pcVar3 + local_30;\n        }\n        bVar1 = *pbVar2;\n        goto LAB_001e3f9a;\n      }" if (parenthesized_expression "((pbVar4 == (byte *)0x0) || ((*(byte *)(unaff_EDI + 0xbf7b9 + (uint)*pbVar4 * 2) & 4) == 0)\n         )" ( (binary_expression "(pbVar4 == (byte *)0x0) || ((*(byte *)(unaff_EDI + 0xbf7b9 + (uint)*pbVar4 * 2) & 4) == 0)" (parenthesized_expression "(pbVar4 == (byte *)0x0)" ( (binary_expression "pbVar4 == (byte *)0x0" identifier == (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) || (parenthesized_expression "((*(byte *)(unaff_EDI + 0xbf7b9 + (uint)*pbVar4 * 2) & 4) == 0)" ( (binary_expression "(*(byte *)(unaff_EDI + 0xbf7b9 + (uint)*pbVar4 * 2) & 4) == 0" (parenthesized_expression "(*(byte *)(unaff_EDI + 0xbf7b9 + (uint)*pbVar4 * 2) & 4)" ( (binary_expression "*(byte *)(unaff_EDI + 0xbf7b9 + (uint)*pbVar4 * 2) & 4" (pointer_expression "*(byte *)(unaff_EDI + 0xbf7b9 + (uint)*pbVar4 * 2)" * (cast_expression "(byte *)(unaff_EDI + 0xbf7b9 + (uint)*pbVar4 * 2)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0xbf7b9 + (uint)*pbVar4 * 2)" ( (binary_expression "unaff_EDI + 0xbf7b9 + (uint)*pbVar4 * 2" (binary_expression "unaff_EDI + 0xbf7b9" identifier + number_literal) + (binary_expression "(uint)*pbVar4 * 2" (binary_expression "(uint)*pbVar4" (parenthesized_expression "(uint)" ( identifier )) * identifier) * number_literal)) )))) & number_literal) )) == number_literal) ))) )) (compound_statement "{\n        pcVar3 = decl_00->b;\n        iVar6 = local_30 - ((int)decl_00->p - (int)pcVar3);\n        if (pcVar3 == decl_00->p) {\n          iVar6 = local_30;\n        }\n        if (iVar6 < 0) {\n          decl_00->p = pcVar3 + local_30;\n        }\n        bVar1 = *pbVar2;\n        goto LAB_001e3f9a;\n      }" { (expression_statement "pcVar3 = decl_00->b;" (assignment_expression "pcVar3 = decl_00->b" identifier = (field_expression "decl_00->b" identifier -> field_identifier)) ;) (expression_statement "iVar6 = local_30 - ((int)decl_00->p - (int)pcVar3);" (assignment_expression "iVar6 = local_30 - ((int)decl_00->p - (int)pcVar3)" identifier = (binary_expression "local_30 - ((int)decl_00->p - (int)pcVar3)" identifier - (parenthesized_expression "((int)decl_00->p - (int)pcVar3)" ( (binary_expression "(int)decl_00->p - (int)pcVar3" (cast_expression "(int)decl_00->p" ( (type_descriptor "int" primitive_type) ) (field_expression "decl_00->p" identifier -> field_identifier)) - (cast_expression "(int)pcVar3" ( (type_descriptor "int" primitive_type) ) identifier)) )))) ;) (if_statement "if (pcVar3 == decl_00->p) {\n          iVar6 = local_30;\n        }" if (parenthesized_expression "(pcVar3 == decl_00->p)" ( (binary_expression "pcVar3 == decl_00->p" identifier == (field_expression "decl_00->p" identifier -> field_identifier)) )) (compound_statement "{\n          iVar6 = local_30;\n        }" { (expression_statement "iVar6 = local_30;" (assignment_expression "iVar6 = local_30" identifier = identifier) ;) })) (if_statement "if (iVar6 < 0) {\n          decl_00->p = pcVar3 + local_30;\n        }" if (parenthesized_expression "(iVar6 < 0)" ( (binary_expression "iVar6 < 0" identifier < number_literal) )) (compound_statement "{\n          decl_00->p = pcVar3 + local_30;\n        }" { (expression_statement "decl_00->p = pcVar3 + local_30;" (assignment_expression "decl_00->p = pcVar3 + local_30" (field_expression "decl_00->p" identifier -> field_identifier) = (binary_expression "pcVar3 + local_30" identifier + identifier)) ;) })) (expression_statement "bVar1 = *pbVar2;" (assignment_expression "bVar1 = *pbVar2" identifier = (pointer_expression "*pbVar2" * identifier)) ;) (goto_statement "goto LAB_001e3f9a;" goto statement_identifier ;) })) }) (else_clause "else {\n      if (((byte)(bVar1 + 0xba) < 0x14) && ((1 << (bVar1 + 0xba & 0x1f) & 0xb9001U) != 0)) {\n        pbVar4 = pbVar2;\n        if (decl_00->b == decl_00->p) {\n          local_30 = 0;\n        }\n        else {\n          local_30 = (int)decl_00->p - (int)decl_00->b;\n        }\n        goto LAB_001e3ed6;\n      }\nLAB_001e3f9a:\n      pbVar4 = pbVar2;\n      if ((*(byte *)(unaff_EDI + 0xbf7b9 + (uint)bVar1 * 2) & 4) == 0) {\n        return (char *)pbVar2;\n      }\n    }" else (compound_statement "{\n      if (((byte)(bVar1 + 0xba) < 0x14) && ((1 << (bVar1 + 0xba & 0x1f) & 0xb9001U) != 0)) {\n        pbVar4 = pbVar2;\n        if (decl_00->b == decl_00->p) {\n          local_30 = 0;\n        }\n        else {\n          local_30 = (int)decl_00->p - (int)decl_00->b;\n        }\n        goto LAB_001e3ed6;\n      }\nLAB_001e3f9a:\n      pbVar4 = pbVar2;\n      if ((*(byte *)(unaff_EDI + 0xbf7b9 + (uint)bVar1 * 2) & 4) == 0) {\n        return (char *)pbVar2;\n      }\n    }" { (if_statement "if (((byte)(bVar1 + 0xba) < 0x14) && ((1 << (bVar1 + 0xba & 0x1f) & 0xb9001U) != 0)) {\n        pbVar4 = pbVar2;\n        if (decl_00->b == decl_00->p) {\n          local_30 = 0;\n        }\n        else {\n          local_30 = (int)decl_00->p - (int)decl_00->b;\n        }\n        goto LAB_001e3ed6;\n      }" if (parenthesized_expression "(((byte)(bVar1 + 0xba) < 0x14) && ((1 << (bVar1 + 0xba & 0x1f) & 0xb9001U) != 0))" ( (binary_expression "((byte)(bVar1 + 0xba) < 0x14) && ((1 << (bVar1 + 0xba & 0x1f) & 0xb9001U) != 0)" (parenthesized_expression "((byte)(bVar1 + 0xba) < 0x14)" ( (binary_expression "(byte)(bVar1 + 0xba) < 0x14" (call_expression "(byte)(bVar1 + 0xba)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(bVar1 + 0xba)" ( (binary_expression "bVar1 + 0xba" identifier + number_literal) ))) < number_literal) )) && (parenthesized_expression "((1 << (bVar1 + 0xba & 0x1f) & 0xb9001U) != 0)" ( (binary_expression "(1 << (bVar1 + 0xba & 0x1f) & 0xb9001U) != 0" (parenthesized_expression "(1 << (bVar1 + 0xba & 0x1f) & 0xb9001U)" ( (binary_expression "1 << (bVar1 + 0xba & 0x1f) & 0xb9001U" (binary_expression "1 << (bVar1 + 0xba & 0x1f)" number_literal << (parenthesized_expression "(bVar1 + 0xba & 0x1f)" ( (binary_expression "bVar1 + 0xba & 0x1f" (binary_expression "bVar1 + 0xba" identifier + number_literal) & number_literal) ))) & number_literal) )) != number_literal) ))) )) (compound_statement "{\n        pbVar4 = pbVar2;\n        if (decl_00->b == decl_00->p) {\n          local_30 = 0;\n        }\n        else {\n          local_30 = (int)decl_00->p - (int)decl_00->b;\n        }\n        goto LAB_001e3ed6;\n      }" { (expression_statement "pbVar4 = pbVar2;" (assignment_expression "pbVar4 = pbVar2" identifier = identifier) ;) (if_statement "if (decl_00->b == decl_00->p) {\n          local_30 = 0;\n        }\n        else {\n          local_30 = (int)decl_00->p - (int)decl_00->b;\n        }" if (parenthesized_expression "(decl_00->b == decl_00->p)" ( (binary_expression "decl_00->b == decl_00->p" (field_expression "decl_00->b" identifier -> field_identifier) == (field_expression "decl_00->p" identifier -> field_identifier)) )) (compound_statement "{\n          local_30 = 0;\n        }" { (expression_statement "local_30 = 0;" (assignment_expression "local_30 = 0" identifier = number_literal) ;) }) (else_clause "else {\n          local_30 = (int)decl_00->p - (int)decl_00->b;\n        }" else (compound_statement "{\n          local_30 = (int)decl_00->p - (int)decl_00->b;\n        }" { (expression_statement "local_30 = (int)decl_00->p - (int)decl_00->b;" (assignment_expression "local_30 = (int)decl_00->p - (int)decl_00->b" identifier = (binary_expression "(int)decl_00->p - (int)decl_00->b" (cast_expression "(int)decl_00->p" ( (type_descriptor "int" primitive_type) ) (field_expression "decl_00->p" identifier -> field_identifier)) - (cast_expression "(int)decl_00->b" ( (type_descriptor "int" primitive_type) ) (field_expression "decl_00->b" identifier -> field_identifier)))) ;) }))) (goto_statement "goto LAB_001e3ed6;" goto statement_identifier ;) })) (labeled_statement "LAB_001e3f9a:\n      pbVar4 = pbVar2;" statement_identifier : (expression_statement "pbVar4 = pbVar2;" (assignment_expression "pbVar4 = pbVar2" identifier = identifier) ;)) (if_statement "if ((*(byte *)(unaff_EDI + 0xbf7b9 + (uint)bVar1 * 2) & 4) == 0) {\n        return (char *)pbVar2;\n      }" if (parenthesized_expression "((*(byte *)(unaff_EDI + 0xbf7b9 + (uint)bVar1 * 2) & 4) == 0)" ( (binary_expression "(*(byte *)(unaff_EDI + 0xbf7b9 + (uint)bVar1 * 2) & 4) == 0" (parenthesized_expression "(*(byte *)(unaff_EDI + 0xbf7b9 + (uint)bVar1 * 2) & 4)" ( (binary_expression "*(byte *)(unaff_EDI + 0xbf7b9 + (uint)bVar1 * 2) & 4" (pointer_expression "*(byte *)(unaff_EDI + 0xbf7b9 + (uint)bVar1 * 2)" * (cast_expression "(byte *)(unaff_EDI + 0xbf7b9 + (uint)bVar1 * 2)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0xbf7b9 + (uint)bVar1 * 2)" ( (binary_expression "unaff_EDI + 0xbf7b9 + (uint)bVar1 * 2" (binary_expression "unaff_EDI + 0xbf7b9" identifier + number_literal) + (binary_expression "(uint)bVar1 * 2" (cast_expression "(uint)bVar1" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) )))) & number_literal) )) == number_literal) )) (compound_statement "{\n        return (char *)pbVar2;\n      }" { (return_statement "return (char *)pbVar2;" return (cast_expression "(char *)pbVar2" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) ;) })) }))) (if_statement "if (iVar7 != 0) {\n      string_append(decl_00,(char *)(unaff_EDI + 0xa9e04));\n    }" if (parenthesized_expression "(iVar7 != 0)" ( (binary_expression "iVar7 != 0" identifier != number_literal) )) (compound_statement "{\n      string_append(decl_00,(char *)(unaff_EDI + 0xa9e04));\n    }" { (expression_statement "string_append(decl_00,(char *)(unaff_EDI + 0xa9e04));" (call_expression "string_append(decl_00,(char *)(unaff_EDI + 0xa9e04))" identifier (argument_list "(decl_00,(char *)(unaff_EDI + 0xa9e04))" ( identifier , (cast_expression "(char *)(unaff_EDI + 0xa9e04)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0xa9e04)" ( (binary_expression "unaff_EDI + 0xa9e04" identifier + number_literal) ))) ))) ;) })) (expression_statement "iVar7 = iVar7 + 1;" (assignment_expression "iVar7 = iVar7 + 1" identifier = (binary_expression "iVar7 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "( true )" ( true )) ;) })))
(translation_unit "byte * FUN_001e3e40(void)\n\n{\n  byte bVar1;\n  int *piVar2;\n  byte *pbVar3;\n  char *pcVar4;\n  byte *pbVar5;\n  int iVar6;\n  int iVar7;\n  int iVar8;\n  int unaff_EDI;\n  int iVar9;\n  undefined8 uVar10;\n  int local_30;\n  \n  uVar10 = FUN_000559ee();\n  pbVar5 = (byte *)((ulonglong)uVar10 >> 0x20);\n  piVar2 = (int *)uVar10;\n  iVar9 = 1;\n  do {\n    for (; *pbVar5 == 0x30; pbVar5 = pbVar5 + 1) {\n    }\n    pbVar3 = (byte *)FUN_001e3890();\n    if (pbVar3 == (byte *)0x0) {\n      return (byte *)0x0;\n    }\n    bVar1 = *pbVar3;\n    if (bVar1 == 0x4d) {\n      if (*piVar2 == piVar2[1]) {\n        FUN_001e1fa0();\n        iVar8 = *piVar2;\n        local_30 = 0;\n        iVar6 = piVar2[1];\n        if (iVar6 == iVar8) goto LAB_001e3ed6;\nLAB_001e3fd8:\n        iVar7 = local_30 - (iVar6 - iVar8);\n      }\n      else {\n        iVar7 = piVar2[1] - *piVar2;\n        FUN_001e1fa0();\n        iVar8 = *piVar2;\n        iVar6 = piVar2[1];\n        local_30 = iVar7;\n        if (iVar8 != iVar6) goto LAB_001e3fd8;\n      }\n      if (iVar7 < 0) {\n        piVar2[1] = iVar8 + local_30;\n      }\nLAB_001e3ed6:\n      pcVar4 = (char *)FUN_001e1eb0();\n      if ((pcVar4 != (char *)0x0) && (*pcVar4 != '\0')) {\n        FUN_001e2060();\n      }\n      iVar8 = *piVar2;\n      iVar6 = local_30 - (piVar2[1] - iVar8);\n      if (iVar8 == piVar2[1]) {\n        iVar6 = local_30;\n      }\n      if (iVar6 < 0) {\n        piVar2[1] = iVar8 + local_30;\n      }\n      FUN_001e1e60();\n      pbVar5 = (byte *)FUN_001e34c0();\n      FUN_001e1e60();\n      if ((pbVar5 == (byte *)0x0) || ((*(byte *)(unaff_EDI + 0xbf7b9 + (uint)*pbVar5 * 2) & 4) == 0)\n         ) {\n        iVar8 = *piVar2;\n        iVar6 = local_30 - (piVar2[1] - iVar8);\n        if (iVar8 == piVar2[1]) {\n          iVar6 = local_30;\n        }\n        if (iVar6 < 0) {\n          piVar2[1] = iVar8 + local_30;\n        }\n        bVar1 = *pbVar3;\n        goto LAB_001e3f9a;\n      }\n    }\n    else {\n      if (((byte)(bVar1 + 0xba) < 0x14) && ((1 << (bVar1 + 0xba & 0x1f) & 0xb9001U) != 0)) {\n        if (*piVar2 == piVar2[1]) {\n          local_30 = 0;\n        }\n        else {\n          local_30 = piVar2[1] - *piVar2;\n        }\n        goto LAB_001e3ed6;\n      }\nLAB_001e3f9a:\n      pbVar5 = pbVar3;\n      if ((*(byte *)(unaff_EDI + 0xbf7b9 + (uint)bVar1 * 2) & 4) == 0) {\n        return pbVar3;\n      }\n    }\n    if (iVar9 != 0) {\n      FUN_001e1e60();\n    }\n    iVar9 = iVar9 + 1;\n  } while( true );\n}\n\n" (function_definition "byte * FUN_001e3e40(void)\n\n{\n  byte bVar1;\n  int *piVar2;\n  byte *pbVar3;\n  char *pcVar4;\n  byte *pbVar5;\n  int iVar6;\n  int iVar7;\n  int iVar8;\n  int unaff_EDI;\n  int iVar9;\n  undefined8 uVar10;\n  int local_30;\n  \n  uVar10 = FUN_000559ee();\n  pbVar5 = (byte *)((ulonglong)uVar10 >> 0x20);\n  piVar2 = (int *)uVar10;\n  iVar9 = 1;\n  do {\n    for (; *pbVar5 == 0x30; pbVar5 = pbVar5 + 1) {\n    }\n    pbVar3 = (byte *)FUN_001e3890();\n    if (pbVar3 == (byte *)0x0) {\n      return (byte *)0x0;\n    }\n    bVar1 = *pbVar3;\n    if (bVar1 == 0x4d) {\n      if (*piVar2 == piVar2[1]) {\n        FUN_001e1fa0();\n        iVar8 = *piVar2;\n        local_30 = 0;\n        iVar6 = piVar2[1];\n        if (iVar6 == iVar8) goto LAB_001e3ed6;\nLAB_001e3fd8:\n        iVar7 = local_30 - (iVar6 - iVar8);\n      }\n      else {\n        iVar7 = piVar2[1] - *piVar2;\n        FUN_001e1fa0();\n        iVar8 = *piVar2;\n        iVar6 = piVar2[1];\n        local_30 = iVar7;\n        if (iVar8 != iVar6) goto LAB_001e3fd8;\n      }\n      if (iVar7 < 0) {\n        piVar2[1] = iVar8 + local_30;\n      }\nLAB_001e3ed6:\n      pcVar4 = (char *)FUN_001e1eb0();\n      if ((pcVar4 != (char *)0x0) && (*pcVar4 != '\0')) {\n        FUN_001e2060();\n      }\n      iVar8 = *piVar2;\n      iVar6 = local_30 - (piVar2[1] - iVar8);\n      if (iVar8 == piVar2[1]) {\n        iVar6 = local_30;\n      }\n      if (iVar6 < 0) {\n        piVar2[1] = iVar8 + local_30;\n      }\n      FUN_001e1e60();\n      pbVar5 = (byte *)FUN_001e34c0();\n      FUN_001e1e60();\n      if ((pbVar5 == (byte *)0x0) || ((*(byte *)(unaff_EDI + 0xbf7b9 + (uint)*pbVar5 * 2) & 4) == 0)\n         ) {\n        iVar8 = *piVar2;\n        iVar6 = local_30 - (piVar2[1] - iVar8);\n        if (iVar8 == piVar2[1]) {\n          iVar6 = local_30;\n        }\n        if (iVar6 < 0) {\n          piVar2[1] = iVar8 + local_30;\n        }\n        bVar1 = *pbVar3;\n        goto LAB_001e3f9a;\n      }\n    }\n    else {\n      if (((byte)(bVar1 + 0xba) < 0x14) && ((1 << (bVar1 + 0xba & 0x1f) & 0xb9001U) != 0)) {\n        if (*piVar2 == piVar2[1]) {\n          local_30 = 0;\n        }\n        else {\n          local_30 = piVar2[1] - *piVar2;\n        }\n        goto LAB_001e3ed6;\n      }\nLAB_001e3f9a:\n      pbVar5 = pbVar3;\n      if ((*(byte *)(unaff_EDI + 0xbf7b9 + (uint)bVar1 * 2) & 4) == 0) {\n        return pbVar3;\n      }\n    }\n    if (iVar9 != 0) {\n      FUN_001e1e60();\n    }\n    iVar9 = iVar9 + 1;\n  } while( true );\n}" type_identifier (pointer_declarator "* FUN_001e3e40(void)" * (function_declarator "FUN_001e3e40(void)" identifier (parameter_list "(void)" ( (parameter_declaration "void" primitive_type) )))) (compound_statement "{\n  byte bVar1;\n  int *piVar2;\n  byte *pbVar3;\n  char *pcVar4;\n  byte *pbVar5;\n  int iVar6;\n  int iVar7;\n  int iVar8;\n  int unaff_EDI;\n  int iVar9;\n  undefined8 uVar10;\n  int local_30;\n  \n  uVar10 = FUN_000559ee();\n  pbVar5 = (byte *)((ulonglong)uVar10 >> 0x20);\n  piVar2 = (int *)uVar10;\n  iVar9 = 1;\n  do {\n    for (; *pbVar5 == 0x30; pbVar5 = pbVar5 + 1) {\n    }\n    pbVar3 = (byte *)FUN_001e3890();\n    if (pbVar3 == (byte *)0x0) {\n      return (byte *)0x0;\n    }\n    bVar1 = *pbVar3;\n    if (bVar1 == 0x4d) {\n      if (*piVar2 == piVar2[1]) {\n        FUN_001e1fa0();\n        iVar8 = *piVar2;\n        local_30 = 0;\n        iVar6 = piVar2[1];\n        if (iVar6 == iVar8) goto LAB_001e3ed6;\nLAB_001e3fd8:\n        iVar7 = local_30 - (iVar6 - iVar8);\n      }\n      else {\n        iVar7 = piVar2[1] - *piVar2;\n        FUN_001e1fa0();\n        iVar8 = *piVar2;\n        iVar6 = piVar2[1];\n        local_30 = iVar7;\n        if (iVar8 != iVar6) goto LAB_001e3fd8;\n      }\n      if (iVar7 < 0) {\n        piVar2[1] = iVar8 + local_30;\n      }\nLAB_001e3ed6:\n      pcVar4 = (char *)FUN_001e1eb0();\n      if ((pcVar4 != (char *)0x0) && (*pcVar4 != '\0')) {\n        FUN_001e2060();\n      }\n      iVar8 = *piVar2;\n      iVar6 = local_30 - (piVar2[1] - iVar8);\n      if (iVar8 == piVar2[1]) {\n        iVar6 = local_30;\n      }\n      if (iVar6 < 0) {\n        piVar2[1] = iVar8 + local_30;\n      }\n      FUN_001e1e60();\n      pbVar5 = (byte *)FUN_001e34c0();\n      FUN_001e1e60();\n      if ((pbVar5 == (byte *)0x0) || ((*(byte *)(unaff_EDI + 0xbf7b9 + (uint)*pbVar5 * 2) & 4) == 0)\n         ) {\n        iVar8 = *piVar2;\n        iVar6 = local_30 - (piVar2[1] - iVar8);\n        if (iVar8 == piVar2[1]) {\n          iVar6 = local_30;\n        }\n        if (iVar6 < 0) {\n          piVar2[1] = iVar8 + local_30;\n        }\n        bVar1 = *pbVar3;\n        goto LAB_001e3f9a;\n      }\n    }\n    else {\n      if (((byte)(bVar1 + 0xba) < 0x14) && ((1 << (bVar1 + 0xba & 0x1f) & 0xb9001U) != 0)) {\n        if (*piVar2 == piVar2[1]) {\n          local_30 = 0;\n        }\n        else {\n          local_30 = piVar2[1] - *piVar2;\n        }\n        goto LAB_001e3ed6;\n      }\nLAB_001e3f9a:\n      pbVar5 = pbVar3;\n      if ((*(byte *)(unaff_EDI + 0xbf7b9 + (uint)bVar1 * 2) & 4) == 0) {\n        return pbVar3;\n      }\n    }\n    if (iVar9 != 0) {\n      FUN_001e1e60();\n    }\n    iVar9 = iVar9 + 1;\n  } while( true );\n}" { (declaration "byte bVar1;" type_identifier identifier ;) (declaration "int *piVar2;" primitive_type (pointer_declarator "*piVar2" * identifier) ;) (declaration "byte *pbVar3;" type_identifier (pointer_declarator "*pbVar3" * identifier) ;) (declaration "char *pcVar4;" primitive_type (pointer_declarator "*pcVar4" * identifier) ;) (declaration "byte *pbVar5;" type_identifier (pointer_declarator "*pbVar5" * identifier) ;) (declaration "int iVar6;" primitive_type identifier ;) (declaration "int iVar7;" primitive_type identifier ;) (declaration "int iVar8;" primitive_type identifier ;) (declaration "int unaff_EDI;" primitive_type identifier ;) (declaration "int iVar9;" primitive_type identifier ;) (declaration "undefined8 uVar10;" type_identifier identifier ;) (declaration "int local_30;" primitive_type identifier ;) (expression_statement "uVar10 = FUN_000559ee();" (assignment_expression "uVar10 = FUN_000559ee()" identifier = (call_expression "FUN_000559ee()" identifier (argument_list "()" ( )))) ;) (expression_statement "pbVar5 = (byte *)((ulonglong)uVar10 >> 0x20);" (assignment_expression "pbVar5 = (byte *)((ulonglong)uVar10 >> 0x20)" identifier = (cast_expression "(byte *)((ulonglong)uVar10 >> 0x20)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((ulonglong)uVar10 >> 0x20)" ( (binary_expression "(ulonglong)uVar10 >> 0x20" (cast_expression "(ulonglong)uVar10" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "piVar2 = (int *)uVar10;" (assignment_expression "piVar2 = (int *)uVar10" identifier = (cast_expression "(int *)uVar10" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) ;) (expression_statement "iVar9 = 1;" (assignment_expression "iVar9 = 1" identifier = number_literal) ;) (do_statement "do {\n    for (; *pbVar5 == 0x30; pbVar5 = pbVar5 + 1) {\n    }\n    pbVar3 = (byte *)FUN_001e3890();\n    if (pbVar3 == (byte *)0x0) {\n      return (byte *)0x0;\n    }\n    bVar1 = *pbVar3;\n    if (bVar1 == 0x4d) {\n      if (*piVar2 == piVar2[1]) {\n        FUN_001e1fa0();\n        iVar8 = *piVar2;\n        local_30 = 0;\n        iVar6 = piVar2[1];\n        if (iVar6 == iVar8) goto LAB_001e3ed6;\nLAB_001e3fd8:\n        iVar7 = local_30 - (iVar6 - iVar8);\n      }\n      else {\n        iVar7 = piVar2[1] - *piVar2;\n        FUN_001e1fa0();\n        iVar8 = *piVar2;\n        iVar6 = piVar2[1];\n        local_30 = iVar7;\n        if (iVar8 != iVar6) goto LAB_001e3fd8;\n      }\n      if (iVar7 < 0) {\n        piVar2[1] = iVar8 + local_30;\n      }\nLAB_001e3ed6:\n      pcVar4 = (char *)FUN_001e1eb0();\n      if ((pcVar4 != (char *)0x0) && (*pcVar4 != '\0')) {\n        FUN_001e2060();\n      }\n      iVar8 = *piVar2;\n      iVar6 = local_30 - (piVar2[1] - iVar8);\n      if (iVar8 == piVar2[1]) {\n        iVar6 = local_30;\n      }\n      if (iVar6 < 0) {\n        piVar2[1] = iVar8 + local_30;\n      }\n      FUN_001e1e60();\n      pbVar5 = (byte *)FUN_001e34c0();\n      FUN_001e1e60();\n      if ((pbVar5 == (byte *)0x0) || ((*(byte *)(unaff_EDI + 0xbf7b9 + (uint)*pbVar5 * 2) & 4) == 0)\n         ) {\n        iVar8 = *piVar2;\n        iVar6 = local_30 - (piVar2[1] - iVar8);\n        if (iVar8 == piVar2[1]) {\n          iVar6 = local_30;\n        }\n        if (iVar6 < 0) {\n          piVar2[1] = iVar8 + local_30;\n        }\n        bVar1 = *pbVar3;\n        goto LAB_001e3f9a;\n      }\n    }\n    else {\n      if (((byte)(bVar1 + 0xba) < 0x14) && ((1 << (bVar1 + 0xba & 0x1f) & 0xb9001U) != 0)) {\n        if (*piVar2 == piVar2[1]) {\n          local_30 = 0;\n        }\n        else {\n          local_30 = piVar2[1] - *piVar2;\n        }\n        goto LAB_001e3ed6;\n      }\nLAB_001e3f9a:\n      pbVar5 = pbVar3;\n      if ((*(byte *)(unaff_EDI + 0xbf7b9 + (uint)bVar1 * 2) & 4) == 0) {\n        return pbVar3;\n      }\n    }\n    if (iVar9 != 0) {\n      FUN_001e1e60();\n    }\n    iVar9 = iVar9 + 1;\n  } while( true );" do (compound_statement "{\n    for (; *pbVar5 == 0x30; pbVar5 = pbVar5 + 1) {\n    }\n    pbVar3 = (byte *)FUN_001e3890();\n    if (pbVar3 == (byte *)0x0) {\n      return (byte *)0x0;\n    }\n    bVar1 = *pbVar3;\n    if (bVar1 == 0x4d) {\n      if (*piVar2 == piVar2[1]) {\n        FUN_001e1fa0();\n        iVar8 = *piVar2;\n        local_30 = 0;\n        iVar6 = piVar2[1];\n        if (iVar6 == iVar8) goto LAB_001e3ed6;\nLAB_001e3fd8:\n        iVar7 = local_30 - (iVar6 - iVar8);\n      }\n      else {\n        iVar7 = piVar2[1] - *piVar2;\n        FUN_001e1fa0();\n        iVar8 = *piVar2;\n        iVar6 = piVar2[1];\n        local_30 = iVar7;\n        if (iVar8 != iVar6) goto LAB_001e3fd8;\n      }\n      if (iVar7 < 0) {\n        piVar2[1] = iVar8 + local_30;\n      }\nLAB_001e3ed6:\n      pcVar4 = (char *)FUN_001e1eb0();\n      if ((pcVar4 != (char *)0x0) && (*pcVar4 != '\0')) {\n        FUN_001e2060();\n      }\n      iVar8 = *piVar2;\n      iVar6 = local_30 - (piVar2[1] - iVar8);\n      if (iVar8 == piVar2[1]) {\n        iVar6 = local_30;\n      }\n      if (iVar6 < 0) {\n        piVar2[1] = iVar8 + local_30;\n      }\n      FUN_001e1e60();\n      pbVar5 = (byte *)FUN_001e34c0();\n      FUN_001e1e60();\n      if ((pbVar5 == (byte *)0x0) || ((*(byte *)(unaff_EDI + 0xbf7b9 + (uint)*pbVar5 * 2) & 4) == 0)\n         ) {\n        iVar8 = *piVar2;\n        iVar6 = local_30 - (piVar2[1] - iVar8);\n        if (iVar8 == piVar2[1]) {\n          iVar6 = local_30;\n        }\n        if (iVar6 < 0) {\n          piVar2[1] = iVar8 + local_30;\n        }\n        bVar1 = *pbVar3;\n        goto LAB_001e3f9a;\n      }\n    }\n    else {\n      if (((byte)(bVar1 + 0xba) < 0x14) && ((1 << (bVar1 + 0xba & 0x1f) & 0xb9001U) != 0)) {\n        if (*piVar2 == piVar2[1]) {\n          local_30 = 0;\n        }\n        else {\n          local_30 = piVar2[1] - *piVar2;\n        }\n        goto LAB_001e3ed6;\n      }\nLAB_001e3f9a:\n      pbVar5 = pbVar3;\n      if ((*(byte *)(unaff_EDI + 0xbf7b9 + (uint)bVar1 * 2) & 4) == 0) {\n        return pbVar3;\n      }\n    }\n    if (iVar9 != 0) {\n      FUN_001e1e60();\n    }\n    iVar9 = iVar9 + 1;\n  }" { (for_statement "for (; *pbVar5 == 0x30; pbVar5 = pbVar5 + 1) {\n    }" for ( ; (binary_expression "*pbVar5 == 0x30" (pointer_expression "*pbVar5" * identifier) == number_literal) ; (assignment_expression "pbVar5 = pbVar5 + 1" identifier = (binary_expression "pbVar5 + 1" identifier + number_literal)) ) (compound_statement "{\n    }" { })) (expression_statement "pbVar3 = (byte *)FUN_001e3890();" (assignment_expression "pbVar3 = (byte *)FUN_001e3890()" identifier = (cast_expression "(byte *)FUN_001e3890()" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_001e3890()" identifier (argument_list "()" ( ))))) ;) (if_statement "if (pbVar3 == (byte *)0x0) {\n      return (byte *)0x0;\n    }" if (parenthesized_expression "(pbVar3 == (byte *)0x0)" ( (binary_expression "pbVar3 == (byte *)0x0" identifier == (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      return (byte *)0x0;\n    }" { (return_statement "return (byte *)0x0;" return (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) ;) })) (expression_statement "bVar1 = *pbVar3;" (assignment_expression "bVar1 = *pbVar3" identifier = (pointer_expression "*pbVar3" * identifier)) ;) (if_statement "if (bVar1 == 0x4d) {\n      if (*piVar2 == piVar2[1]) {\n        FUN_001e1fa0();\n        iVar8 = *piVar2;\n        local_30 = 0;\n        iVar6 = piVar2[1];\n        if (iVar6 == iVar8) goto LAB_001e3ed6;\nLAB_001e3fd8:\n        iVar7 = local_30 - (iVar6 - iVar8);\n      }\n      else {\n        iVar7 = piVar2[1] - *piVar2;\n        FUN_001e1fa0();\n        iVar8 = *piVar2;\n        iVar6 = piVar2[1];\n        local_30 = iVar7;\n        if (iVar8 != iVar6) goto LAB_001e3fd8;\n      }\n      if (iVar7 < 0) {\n        piVar2[1] = iVar8 + local_30;\n      }\nLAB_001e3ed6:\n      pcVar4 = (char *)FUN_001e1eb0();\n      if ((pcVar4 != (char *)0x0) && (*pcVar4 != '\0')) {\n        FUN_001e2060();\n      }\n      iVar8 = *piVar2;\n      iVar6 = local_30 - (piVar2[1] - iVar8);\n      if (iVar8 == piVar2[1]) {\n        iVar6 = local_30;\n      }\n      if (iVar6 < 0) {\n        piVar2[1] = iVar8 + local_30;\n      }\n      FUN_001e1e60();\n      pbVar5 = (byte *)FUN_001e34c0();\n      FUN_001e1e60();\n      if ((pbVar5 == (byte *)0x0) || ((*(byte *)(unaff_EDI + 0xbf7b9 + (uint)*pbVar5 * 2) & 4) == 0)\n         ) {\n        iVar8 = *piVar2;\n        iVar6 = local_30 - (piVar2[1] - iVar8);\n        if (iVar8 == piVar2[1]) {\n          iVar6 = local_30;\n        }\n        if (iVar6 < 0) {\n          piVar2[1] = iVar8 + local_30;\n        }\n        bVar1 = *pbVar3;\n        goto LAB_001e3f9a;\n      }\n    }\n    else {\n      if (((byte)(bVar1 + 0xba) < 0x14) && ((1 << (bVar1 + 0xba & 0x1f) & 0xb9001U) != 0)) {\n        if (*piVar2 == piVar2[1]) {\n          local_30 = 0;\n        }\n        else {\n          local_30 = piVar2[1] - *piVar2;\n        }\n        goto LAB_001e3ed6;\n      }\nLAB_001e3f9a:\n      pbVar5 = pbVar3;\n      if ((*(byte *)(unaff_EDI + 0xbf7b9 + (uint)bVar1 * 2) & 4) == 0) {\n        return pbVar3;\n      }\n    }" if (parenthesized_expression "(bVar1 == 0x4d)" ( (binary_expression "bVar1 == 0x4d" identifier == number_literal) )) (compound_statement "{\n      if (*piVar2 == piVar2[1]) {\n        FUN_001e1fa0();\n        iVar8 = *piVar2;\n        local_30 = 0;\n        iVar6 = piVar2[1];\n        if (iVar6 == iVar8) goto LAB_001e3ed6;\nLAB_001e3fd8:\n        iVar7 = local_30 - (iVar6 - iVar8);\n      }\n      else {\n        iVar7 = piVar2[1] - *piVar2;\n        FUN_001e1fa0();\n        iVar8 = *piVar2;\n        iVar6 = piVar2[1];\n        local_30 = iVar7;\n        if (iVar8 != iVar6) goto LAB_001e3fd8;\n      }\n      if (iVar7 < 0) {\n        piVar2[1] = iVar8 + local_30;\n      }\nLAB_001e3ed6:\n      pcVar4 = (char *)FUN_001e1eb0();\n      if ((pcVar4 != (char *)0x0) && (*pcVar4 != '\0')) {\n        FUN_001e2060();\n      }\n      iVar8 = *piVar2;\n      iVar6 = local_30 - (piVar2[1] - iVar8);\n      if (iVar8 == piVar2[1]) {\n        iVar6 = local_30;\n      }\n      if (iVar6 < 0) {\n        piVar2[1] = iVar8 + local_30;\n      }\n      FUN_001e1e60();\n      pbVar5 = (byte *)FUN_001e34c0();\n      FUN_001e1e60();\n      if ((pbVar5 == (byte *)0x0) || ((*(byte *)(unaff_EDI + 0xbf7b9 + (uint)*pbVar5 * 2) & 4) == 0)\n         ) {\n        iVar8 = *piVar2;\n        iVar6 = local_30 - (piVar2[1] - iVar8);\n        if (iVar8 == piVar2[1]) {\n          iVar6 = local_30;\n        }\n        if (iVar6 < 0) {\n          piVar2[1] = iVar8 + local_30;\n        }\n        bVar1 = *pbVar3;\n        goto LAB_001e3f9a;\n      }\n    }" { (if_statement "if (*piVar2 == piVar2[1]) {\n        FUN_001e1fa0();\n        iVar8 = *piVar2;\n        local_30 = 0;\n        iVar6 = piVar2[1];\n        if (iVar6 == iVar8) goto LAB_001e3ed6;\nLAB_001e3fd8:\n        iVar7 = local_30 - (iVar6 - iVar8);\n      }\n      else {\n        iVar7 = piVar2[1] - *piVar2;\n        FUN_001e1fa0();\n        iVar8 = *piVar2;\n        iVar6 = piVar2[1];\n        local_30 = iVar7;\n        if (iVar8 != iVar6) goto LAB_001e3fd8;\n      }" if (parenthesized_expression "(*piVar2 == piVar2[1])" ( (binary_expression "*piVar2 == piVar2[1]" (pointer_expression "*piVar2" * identifier) == (subscript_expression "piVar2[1]" identifier [ number_literal ])) )) (compound_statement "{\n        FUN_001e1fa0();\n        iVar8 = *piVar2;\n        local_30 = 0;\n        iVar6 = piVar2[1];\n        if (iVar6 == iVar8) goto LAB_001e3ed6;\nLAB_001e3fd8:\n        iVar7 = local_30 - (iVar6 - iVar8);\n      }" { (expression_statement "FUN_001e1fa0();" (call_expression "FUN_001e1fa0()" identifier (argument_list "()" ( ))) ;) (expression_statement "iVar8 = *piVar2;" (assignment_expression "iVar8 = *piVar2" identifier = (pointer_expression "*piVar2" * identifier)) ;) (expression_statement "local_30 = 0;" (assignment_expression "local_30 = 0" identifier = number_literal) ;) (expression_statement "iVar6 = piVar2[1];" (assignment_expression "iVar6 = piVar2[1]" identifier = (subscript_expression "piVar2[1]" identifier [ number_literal ])) ;) (if_statement "if (iVar6 == iVar8) goto LAB_001e3ed6;" if (parenthesized_expression "(iVar6 == iVar8)" ( (binary_expression "iVar6 == iVar8" identifier == identifier) )) (goto_statement "goto LAB_001e3ed6;" goto statement_identifier ;)) (labeled_statement "LAB_001e3fd8:\n        iVar7 = local_30 - (iVar6 - iVar8);" statement_identifier : (expression_statement "iVar7 = local_30 - (iVar6 - iVar8);" (assignment_expression "iVar7 = local_30 - (iVar6 - iVar8)" identifier = (binary_expression "local_30 - (iVar6 - iVar8)" identifier - (parenthesized_expression "(iVar6 - iVar8)" ( (binary_expression "iVar6 - iVar8" identifier - identifier) )))) ;)) }) (else_clause "else {\n        iVar7 = piVar2[1] - *piVar2;\n        FUN_001e1fa0();\n        iVar8 = *piVar2;\n        iVar6 = piVar2[1];\n        local_30 = iVar7;\n        if (iVar8 != iVar6) goto LAB_001e3fd8;\n      }" else (compound_statement "{\n        iVar7 = piVar2[1] - *piVar2;\n        FUN_001e1fa0();\n        iVar8 = *piVar2;\n        iVar6 = piVar2[1];\n        local_30 = iVar7;\n        if (iVar8 != iVar6) goto LAB_001e3fd8;\n      }" { (expression_statement "iVar7 = piVar2[1] - *piVar2;" (assignment_expression "iVar7 = piVar2[1] - *piVar2" identifier = (binary_expression "piVar2[1] - *piVar2" (subscript_expression "piVar2[1]" identifier [ number_literal ]) - (pointer_expression "*piVar2" * identifier))) ;) (expression_statement "FUN_001e1fa0();" (call_expression "FUN_001e1fa0()" identifier (argument_list "()" ( ))) ;) (expression_statement "iVar8 = *piVar2;" (assignment_expression "iVar8 = *piVar2" identifier = (pointer_expression "*piVar2" * identifier)) ;) (expression_statement "iVar6 = piVar2[1];" (assignment_expression "iVar6 = piVar2[1]" identifier = (subscript_expression "piVar2[1]" identifier [ number_literal ])) ;) (expression_statement "local_30 = iVar7;" (assignment_expression "local_30 = iVar7" identifier = identifier) ;) (if_statement "if (iVar8 != iVar6) goto LAB_001e3fd8;" if (parenthesized_expression "(iVar8 != iVar6)" ( (binary_expression "iVar8 != iVar6" identifier != identifier) )) (goto_statement "goto LAB_001e3fd8;" goto statement_identifier ;)) }))) (if_statement "if (iVar7 < 0) {\n        piVar2[1] = iVar8 + local_30;\n      }" if (parenthesized_expression "(iVar7 < 0)" ( (binary_expression "iVar7 < 0" identifier < number_literal) )) (compound_statement "{\n        piVar2[1] = iVar8 + local_30;\n      }" { (expression_statement "piVar2[1] = iVar8 + local_30;" (assignment_expression "piVar2[1] = iVar8 + local_30" (subscript_expression "piVar2[1]" identifier [ number_literal ]) = (binary_expression "iVar8 + local_30" identifier + identifier)) ;) })) (labeled_statement "LAB_001e3ed6:\n      pcVar4 = (char *)FUN_001e1eb0();" statement_identifier : (expression_statement "pcVar4 = (char *)FUN_001e1eb0();" (assignment_expression "pcVar4 = (char *)FUN_001e1eb0()" identifier = (cast_expression "(char *)FUN_001e1eb0()" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_001e1eb0()" identifier (argument_list "()" ( ))))) ;)) (if_statement "if ((pcVar4 != (char *)0x0) && (*pcVar4 != '\0')) {\n        FUN_001e2060();\n      }" if (parenthesized_expression "((pcVar4 != (char *)0x0) && (*pcVar4 != '\0'))" ( (binary_expression "(pcVar4 != (char *)0x0) && (*pcVar4 != '\0')" (parenthesized_expression "(pcVar4 != (char *)0x0)" ( (binary_expression "pcVar4 != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) && (parenthesized_expression "(*pcVar4 != '\0')" ( (binary_expression "*pcVar4 != '\0'" (pointer_expression "*pcVar4" * identifier) != (char_literal "'\0'" ' escape_sequence ')) ))) )) (compound_statement "{\n        FUN_001e2060();\n      }" { (expression_statement "FUN_001e2060();" (call_expression "FUN_001e2060()" identifier (argument_list "()" ( ))) ;) })) (expression_statement "iVar8 = *piVar2;" (assignment_expression "iVar8 = *piVar2" identifier = (pointer_expression "*piVar2" * identifier)) ;) (expression_statement "iVar6 = local_30 - (piVar2[1] - iVar8);" (assignment_expression "iVar6 = local_30 - (piVar2[1] - iVar8)" identifier = (binary_expression "local_30 - (piVar2[1] - iVar8)" identifier - (parenthesized_expression "(piVar2[1] - iVar8)" ( (binary_expression "piVar2[1] - iVar8" (subscript_expression "piVar2[1]" identifier [ number_literal ]) - identifier) )))) ;) (if_statement "if (iVar8 == piVar2[1]) {\n        iVar6 = local_30;\n      }" if (parenthesized_expression "(iVar8 == piVar2[1])" ( (binary_expression "iVar8 == piVar2[1]" identifier == (subscript_expression "piVar2[1]" identifier [ number_literal ])) )) (compound_statement "{\n        iVar6 = local_30;\n      }" { (expression_statement "iVar6 = local_30;" (assignment_expression "iVar6 = local_30" identifier = identifier) ;) })) (if_statement "if (iVar6 < 0) {\n        piVar2[1] = iVar8 + local_30;\n      }" if (parenthesized_expression "(iVar6 < 0)" ( (binary_expression "iVar6 < 0" identifier < number_literal) )) (compound_statement "{\n        piVar2[1] = iVar8 + local_30;\n      }" { (expression_statement "piVar2[1] = iVar8 + local_30;" (assignment_expression "piVar2[1] = iVar8 + local_30" (subscript_expression "piVar2[1]" identifier [ number_literal ]) = (binary_expression "iVar8 + local_30" identifier + identifier)) ;) })) (expression_statement "FUN_001e1e60();" (call_expression "FUN_001e1e60()" identifier (argument_list "()" ( ))) ;) (expression_statement "pbVar5 = (byte *)FUN_001e34c0();" (assignment_expression "pbVar5 = (byte *)FUN_001e34c0()" identifier = (cast_expression "(byte *)FUN_001e34c0()" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_001e34c0()" identifier (argument_list "()" ( ))))) ;) (expression_statement "FUN_001e1e60();" (call_expression "FUN_001e1e60()" identifier (argument_list "()" ( ))) ;) (if_statement "if ((pbVar5 == (byte *)0x0) || ((*(byte *)(unaff_EDI + 0xbf7b9 + (uint)*pbVar5 * 2) & 4) == 0)\n         ) {\n        iVar8 = *piVar2;\n        iVar6 = local_30 - (piVar2[1] - iVar8);\n        if (iVar8 == piVar2[1]) {\n          iVar6 = local_30;\n        }\n        if (iVar6 < 0) {\n          piVar2[1] = iVar8 + local_30;\n        }\n        bVar1 = *pbVar3;\n        goto LAB_001e3f9a;\n      }" if (parenthesized_expression "((pbVar5 == (byte *)0x0) || ((*(byte *)(unaff_EDI + 0xbf7b9 + (uint)*pbVar5 * 2) & 4) == 0)\n         )" ( (binary_expression "(pbVar5 == (byte *)0x0) || ((*(byte *)(unaff_EDI + 0xbf7b9 + (uint)*pbVar5 * 2) & 4) == 0)" (parenthesized_expression "(pbVar5 == (byte *)0x0)" ( (binary_expression "pbVar5 == (byte *)0x0" identifier == (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) || (parenthesized_expression "((*(byte *)(unaff_EDI + 0xbf7b9 + (uint)*pbVar5 * 2) & 4) == 0)" ( (binary_expression "(*(byte *)(unaff_EDI + 0xbf7b9 + (uint)*pbVar5 * 2) & 4) == 0" (parenthesized_expression "(*(byte *)(unaff_EDI + 0xbf7b9 + (uint)*pbVar5 * 2) & 4)" ( (binary_expression "*(byte *)(unaff_EDI + 0xbf7b9 + (uint)*pbVar5 * 2) & 4" (pointer_expression "*(byte *)(unaff_EDI + 0xbf7b9 + (uint)*pbVar5 * 2)" * (cast_expression "(byte *)(unaff_EDI + 0xbf7b9 + (uint)*pbVar5 * 2)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0xbf7b9 + (uint)*pbVar5 * 2)" ( (binary_expression "unaff_EDI + 0xbf7b9 + (uint)*pbVar5 * 2" (binary_expression "unaff_EDI + 0xbf7b9" identifier + number_literal) + (binary_expression "(uint)*pbVar5 * 2" (binary_expression "(uint)*pbVar5" (parenthesized_expression "(uint)" ( identifier )) * identifier) * number_literal)) )))) & number_literal) )) == number_literal) ))) )) (compound_statement "{\n        iVar8 = *piVar2;\n        iVar6 = local_30 - (piVar2[1] - iVar8);\n        if (iVar8 == piVar2[1]) {\n          iVar6 = local_30;\n        }\n        if (iVar6 < 0) {\n          piVar2[1] = iVar8 + local_30;\n        }\n        bVar1 = *pbVar3;\n        goto LAB_001e3f9a;\n      }" { (expression_statement "iVar8 = *piVar2;" (assignment_expression "iVar8 = *piVar2" identifier = (pointer_expression "*piVar2" * identifier)) ;) (expression_statement "iVar6 = local_30 - (piVar2[1] - iVar8);" (assignment_expression "iVar6 = local_30 - (piVar2[1] - iVar8)" identifier = (binary_expression "local_30 - (piVar2[1] - iVar8)" identifier - (parenthesized_expression "(piVar2[1] - iVar8)" ( (binary_expression "piVar2[1] - iVar8" (subscript_expression "piVar2[1]" identifier [ number_literal ]) - identifier) )))) ;) (if_statement "if (iVar8 == piVar2[1]) {\n          iVar6 = local_30;\n        }" if (parenthesized_expression "(iVar8 == piVar2[1])" ( (binary_expression "iVar8 == piVar2[1]" identifier == (subscript_expression "piVar2[1]" identifier [ number_literal ])) )) (compound_statement "{\n          iVar6 = local_30;\n        }" { (expression_statement "iVar6 = local_30;" (assignment_expression "iVar6 = local_30" identifier = identifier) ;) })) (if_statement "if (iVar6 < 0) {\n          piVar2[1] = iVar8 + local_30;\n        }" if (parenthesized_expression "(iVar6 < 0)" ( (binary_expression "iVar6 < 0" identifier < number_literal) )) (compound_statement "{\n          piVar2[1] = iVar8 + local_30;\n        }" { (expression_statement "piVar2[1] = iVar8 + local_30;" (assignment_expression "piVar2[1] = iVar8 + local_30" (subscript_expression "piVar2[1]" identifier [ number_literal ]) = (binary_expression "iVar8 + local_30" identifier + identifier)) ;) })) (expression_statement "bVar1 = *pbVar3;" (assignment_expression "bVar1 = *pbVar3" identifier = (pointer_expression "*pbVar3" * identifier)) ;) (goto_statement "goto LAB_001e3f9a;" goto statement_identifier ;) })) }) (else_clause "else {\n      if (((byte)(bVar1 + 0xba) < 0x14) && ((1 << (bVar1 + 0xba & 0x1f) & 0xb9001U) != 0)) {\n        if (*piVar2 == piVar2[1]) {\n          local_30 = 0;\n        }\n        else {\n          local_30 = piVar2[1] - *piVar2;\n        }\n        goto LAB_001e3ed6;\n      }\nLAB_001e3f9a:\n      pbVar5 = pbVar3;\n      if ((*(byte *)(unaff_EDI + 0xbf7b9 + (uint)bVar1 * 2) & 4) == 0) {\n        return pbVar3;\n      }\n    }" else (compound_statement "{\n      if (((byte)(bVar1 + 0xba) < 0x14) && ((1 << (bVar1 + 0xba & 0x1f) & 0xb9001U) != 0)) {\n        if (*piVar2 == piVar2[1]) {\n          local_30 = 0;\n        }\n        else {\n          local_30 = piVar2[1] - *piVar2;\n        }\n        goto LAB_001e3ed6;\n      }\nLAB_001e3f9a:\n      pbVar5 = pbVar3;\n      if ((*(byte *)(unaff_EDI + 0xbf7b9 + (uint)bVar1 * 2) & 4) == 0) {\n        return pbVar3;\n      }\n    }" { (if_statement "if (((byte)(bVar1 + 0xba) < 0x14) && ((1 << (bVar1 + 0xba & 0x1f) & 0xb9001U) != 0)) {\n        if (*piVar2 == piVar2[1]) {\n          local_30 = 0;\n        }\n        else {\n          local_30 = piVar2[1] - *piVar2;\n        }\n        goto LAB_001e3ed6;\n      }" if (parenthesized_expression "(((byte)(bVar1 + 0xba) < 0x14) && ((1 << (bVar1 + 0xba & 0x1f) & 0xb9001U) != 0))" ( (binary_expression "((byte)(bVar1 + 0xba) < 0x14) && ((1 << (bVar1 + 0xba & 0x1f) & 0xb9001U) != 0)" (parenthesized_expression "((byte)(bVar1 + 0xba) < 0x14)" ( (binary_expression "(byte)(bVar1 + 0xba) < 0x14" (call_expression "(byte)(bVar1 + 0xba)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(bVar1 + 0xba)" ( (binary_expression "bVar1 + 0xba" identifier + number_literal) ))) < number_literal) )) && (parenthesized_expression "((1 << (bVar1 + 0xba & 0x1f) & 0xb9001U) != 0)" ( (binary_expression "(1 << (bVar1 + 0xba & 0x1f) & 0xb9001U) != 0" (parenthesized_expression "(1 << (bVar1 + 0xba & 0x1f) & 0xb9001U)" ( (binary_expression "1 << (bVar1 + 0xba & 0x1f) & 0xb9001U" (binary_expression "1 << (bVar1 + 0xba & 0x1f)" number_literal << (parenthesized_expression "(bVar1 + 0xba & 0x1f)" ( (binary_expression "bVar1 + 0xba & 0x1f" (binary_expression "bVar1 + 0xba" identifier + number_literal) & number_literal) ))) & number_literal) )) != number_literal) ))) )) (compound_statement "{\n        if (*piVar2 == piVar2[1]) {\n          local_30 = 0;\n        }\n        else {\n          local_30 = piVar2[1] - *piVar2;\n        }\n        goto LAB_001e3ed6;\n      }" { (if_statement "if (*piVar2 == piVar2[1]) {\n          local_30 = 0;\n        }\n        else {\n          local_30 = piVar2[1] - *piVar2;\n        }" if (parenthesized_expression "(*piVar2 == piVar2[1])" ( (binary_expression "*piVar2 == piVar2[1]" (pointer_expression "*piVar2" * identifier) == (subscript_expression "piVar2[1]" identifier [ number_literal ])) )) (compound_statement "{\n          local_30 = 0;\n        }" { (expression_statement "local_30 = 0;" (assignment_expression "local_30 = 0" identifier = number_literal) ;) }) (else_clause "else {\n          local_30 = piVar2[1] - *piVar2;\n        }" else (compound_statement "{\n          local_30 = piVar2[1] - *piVar2;\n        }" { (expression_statement "local_30 = piVar2[1] - *piVar2;" (assignment_expression "local_30 = piVar2[1] - *piVar2" identifier = (binary_expression "piVar2[1] - *piVar2" (subscript_expression "piVar2[1]" identifier [ number_literal ]) - (pointer_expression "*piVar2" * identifier))) ;) }))) (goto_statement "goto LAB_001e3ed6;" goto statement_identifier ;) })) (labeled_statement "LAB_001e3f9a:\n      pbVar5 = pbVar3;" statement_identifier : (expression_statement "pbVar5 = pbVar3;" (assignment_expression "pbVar5 = pbVar3" identifier = identifier) ;)) (if_statement "if ((*(byte *)(unaff_EDI + 0xbf7b9 + (uint)bVar1 * 2) & 4) == 0) {\n        return pbVar3;\n      }" if (parenthesized_expression "((*(byte *)(unaff_EDI + 0xbf7b9 + (uint)bVar1 * 2) & 4) == 0)" ( (binary_expression "(*(byte *)(unaff_EDI + 0xbf7b9 + (uint)bVar1 * 2) & 4) == 0" (parenthesized_expression "(*(byte *)(unaff_EDI + 0xbf7b9 + (uint)bVar1 * 2) & 4)" ( (binary_expression "*(byte *)(unaff_EDI + 0xbf7b9 + (uint)bVar1 * 2) & 4" (pointer_expression "*(byte *)(unaff_EDI + 0xbf7b9 + (uint)bVar1 * 2)" * (cast_expression "(byte *)(unaff_EDI + 0xbf7b9 + (uint)bVar1 * 2)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0xbf7b9 + (uint)bVar1 * 2)" ( (binary_expression "unaff_EDI + 0xbf7b9 + (uint)bVar1 * 2" (binary_expression "unaff_EDI + 0xbf7b9" identifier + number_literal) + (binary_expression "(uint)bVar1 * 2" (cast_expression "(uint)bVar1" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) )))) & number_literal) )) == number_literal) )) (compound_statement "{\n        return pbVar3;\n      }" { (return_statement "return pbVar3;" return identifier ;) })) }))) (if_statement "if (iVar9 != 0) {\n      FUN_001e1e60();\n    }" if (parenthesized_expression "(iVar9 != 0)" ( (binary_expression "iVar9 != 0" identifier != number_literal) )) (compound_statement "{\n      FUN_001e1e60();\n    }" { (expression_statement "FUN_001e1e60();" (call_expression "FUN_001e1e60()" identifier (argument_list "()" ( ))) ;) })) (expression_statement "iVar9 = iVar9 + 1;" (assignment_expression "iVar9 = iVar9 + 1" identifier = (binary_expression "iVar9 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "( true )" ( true )) ;) })))
(translation_unit (function_definition TYPE (pointer_declarator * (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE) )))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT) )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (do_statement do (compound_statement { (for_statement for ( ; (binary_expression (pointer_expression * IDENT) == LIT) ; (assignment_expression IDENT = (binary_expression IDENT + LIT)) ) (compound_statement { })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (return_statement return (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT) ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) == (subscript_expression IDENT [ LIT ])) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( ))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == IDENT) )) (goto_statement goto statement_identifier ;)) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (binary_expression IDENT - (parenthesized_expression ( (binary_expression IDENT - IDENT) )))) ;)) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (subscript_expression IDENT [ LIT ]) - (pointer_expression * IDENT))) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != IDENT) )) (goto_statement goto statement_identifier ;)) }))) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression IDENT + IDENT)) ;) })) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( ))))) ;)) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) && (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) != (char_literal ' escape_sequence ')) ))) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( ))) ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT - (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) - IDENT) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (subscript_expression IDENT [ LIT ])) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression IDENT + IDENT)) ;) })) (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 ( ))))) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) || (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) + (binary_expression (binary_expression (parenthesized_expression ( IDENT )) * IDENT) * LIT)) )))) & LIT) )) == LIT) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT - (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) - IDENT) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (subscript_expression IDENT [ LIT ])) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression IDENT + IDENT)) ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (goto_statement goto statement_identifier ;) })) }) (else_clause else (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT + LIT) ))) < LIT) )) && (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (binary_expression LIT << (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) & LIT) ))) & LIT) )) != LIT) ))) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) == (subscript_expression IDENT [ LIT ])) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (subscript_expression IDENT [ LIT ]) - (pointer_expression * IDENT))) ;) }))) (goto_statement goto statement_identifier ;) })) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = IDENT) ;)) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) + (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT)) )))) & LIT) )) == LIT) )) (compound_statement { (return_statement return IDENT ;) })) }))) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( ))) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( BOOL )) ;) })))
(function_definition "byte * FUN_001e3e40(void)\n\n{\n  byte bVar1;\n  int *piVar2;\n  byte *pbVar3;\n  char *pcVar4;\n  byte *pbVar5;\n  int iVar6;\n  int iVar7;\n  int iVar8;\n  int unaff_EDI;\n  int iVar9;\n  undefined8 uVar10;\n  int local_30;\n  \n  uVar10 = FUN_000559ee();\n  pbVar5 = (byte *)((ulonglong)uVar10 >> 0x20);\n  piVar2 = (int *)uVar10;\n  iVar9 = 1;\n  do {\n    for (; *pbVar5 == 0x30; pbVar5 = pbVar5 + 1) {\n    }\n    pbVar3 = (byte *)FUN_001e3890();\n    if (pbVar3 == (byte *)0x0) {\n      return (byte *)0x0;\n    }\n    bVar1 = *pbVar3;\n    if (bVar1 == 0x4d) {\n      if (*piVar2 == piVar2[1]) {\n        FUN_001e1fa0();\n        iVar8 = *piVar2;\n        local_30 = 0;\n        iVar6 = piVar2[1];\n        if (iVar6 == iVar8) goto LAB_001e3ed6;\nLAB_001e3fd8:\n        iVar7 = local_30 - (iVar6 - iVar8);\n      }\n      else {\n        iVar7 = piVar2[1] - *piVar2;\n        FUN_001e1fa0();\n        iVar8 = *piVar2;\n        iVar6 = piVar2[1];\n        local_30 = iVar7;\n        if (iVar8 != iVar6) goto LAB_001e3fd8;\n      }\n      if (iVar7 < 0) {\n        piVar2[1] = iVar8 + local_30;\n      }\nLAB_001e3ed6:\n      pcVar4 = (char *)FUN_001e1eb0();\n      if ((pcVar4 != (char *)0x0) && (*pcVar4 != '\0')) {\n        FUN_001e2060();\n      }\n      iVar8 = *piVar2;\n      iVar6 = local_30 - (piVar2[1] - iVar8);\n      if (iVar8 == piVar2[1]) {\n        iVar6 = local_30;\n      }\n      if (iVar6 < 0) {\n        piVar2[1] = iVar8 + local_30;\n      }\n      FUN_001e1e60();\n      pbVar5 = (byte *)FUN_001e34c0();\n      FUN_001e1e60();\n      if ((pbVar5 == (byte *)0x0) || ((*(byte *)(unaff_EDI + 0xbf7b9 + (uint)*pbVar5 * 2) & 4) == 0)\n         ) {\n        iVar8 = *piVar2;\n        iVar6 = local_30 - (piVar2[1] - iVar8);\n        if (iVar8 == piVar2[1]) {\n          iVar6 = local_30;\n        }\n        if (iVar6 < 0) {\n          piVar2[1] = iVar8 + local_30;\n        }\n        bVar1 = *pbVar3;\n        goto LAB_001e3f9a;\n      }\n    }\n    else {\n      if (((byte)(bVar1 + 0xba) < 0x14) && ((1 << (bVar1 + 0xba & 0x1f) & 0xb9001U) != 0)) {\n        if (*piVar2 == piVar2[1]) {\n          local_30 = 0;\n        }\n        else {\n          local_30 = piVar2[1] - *piVar2;\n        }\n        goto LAB_001e3ed6;\n      }\nLAB_001e3f9a:\n      pbVar5 = pbVar3;\n      if ((*(byte *)(unaff_EDI + 0xbf7b9 + (uint)bVar1 * 2) & 4) == 0) {\n        return pbVar3;\n      }\n    }\n    if (iVar9 != 0) {\n      FUN_001e1e60();\n    }\n    iVar9 = iVar9 + 1;\n  } while( true );\n}" (type_identifier "byte") (pointer_declarator "* FUN_001e3e40(void)" (* "*") (function_declarator "FUN_001e3e40(void)" (identifier "FUN_001e3e40") (parameter_list "(void)" (( "(") (parameter_declaration "void" (primitive_type "void")) () ")")))) (compound_statement "{\n  byte bVar1;\n  int *piVar2;\n  byte *pbVar3;\n  char *pcVar4;\n  byte *pbVar5;\n  int iVar6;\n  int iVar7;\n  int iVar8;\n  int unaff_EDI;\n  int iVar9;\n  undefined8 uVar10;\n  int local_30;\n  \n  uVar10 = FUN_000559ee();\n  pbVar5 = (byte *)((ulonglong)uVar10 >> 0x20);\n  piVar2 = (int *)uVar10;\n  iVar9 = 1;\n  do {\n    for (; *pbVar5 == 0x30; pbVar5 = pbVar5 + 1) {\n    }\n    pbVar3 = (byte *)FUN_001e3890();\n    if (pbVar3 == (byte *)0x0) {\n      return (byte *)0x0;\n    }\n    bVar1 = *pbVar3;\n    if (bVar1 == 0x4d) {\n      if (*piVar2 == piVar2[1]) {\n        FUN_001e1fa0();\n        iVar8 = *piVar2;\n        local_30 = 0;\n        iVar6 = piVar2[1];\n        if (iVar6 == iVar8) goto LAB_001e3ed6;\nLAB_001e3fd8:\n        iVar7 = local_30 - (iVar6 - iVar8);\n      }\n      else {\n        iVar7 = piVar2[1] - *piVar2;\n        FUN_001e1fa0();\n        iVar8 = *piVar2;\n        iVar6 = piVar2[1];\n        local_30 = iVar7;\n        if (iVar8 != iVar6) goto LAB_001e3fd8;\n      }\n      if (iVar7 < 0) {\n        piVar2[1] = iVar8 + local_30;\n      }\nLAB_001e3ed6:\n      pcVar4 = (char *)FUN_001e1eb0();\n      if ((pcVar4 != (char *)0x0) && (*pcVar4 != '\0')) {\n        FUN_001e2060();\n      }\n      iVar8 = *piVar2;\n      iVar6 = local_30 - (piVar2[1] - iVar8);\n      if (iVar8 == piVar2[1]) {\n        iVar6 = local_30;\n      }\n      if (iVar6 < 0) {\n        piVar2[1] = iVar8 + local_30;\n      }\n      FUN_001e1e60();\n      pbVar5 = (byte *)FUN_001e34c0();\n      FUN_001e1e60();\n      if ((pbVar5 == (byte *)0x0) || ((*(byte *)(unaff_EDI + 0xbf7b9 + (uint)*pbVar5 * 2) & 4) == 0)\n         ) {\n        iVar8 = *piVar2;\n        iVar6 = local_30 - (piVar2[1] - iVar8);\n        if (iVar8 == piVar2[1]) {\n          iVar6 = local_30;\n        }\n        if (iVar6 < 0) {\n          piVar2[1] = iVar8 + local_30;\n        }\n        bVar1 = *pbVar3;\n        goto LAB_001e3f9a;\n      }\n    }\n    else {\n      if (((byte)(bVar1 + 0xba) < 0x14) && ((1 << (bVar1 + 0xba & 0x1f) & 0xb9001U) != 0)) {\n        if (*piVar2 == piVar2[1]) {\n          local_30 = 0;\n        }\n        else {\n          local_30 = piVar2[1] - *piVar2;\n        }\n        goto LAB_001e3ed6;\n      }\nLAB_001e3f9a:\n      pbVar5 = pbVar3;\n      if ((*(byte *)(unaff_EDI + 0xbf7b9 + (uint)bVar1 * 2) & 4) == 0) {\n        return pbVar3;\n      }\n    }\n    if (iVar9 != 0) {\n      FUN_001e1e60();\n    }\n    iVar9 = iVar9 + 1;\n  } while( true );\n}" ({ "{") (declaration "byte bVar1;" (type_identifier "byte") (identifier "bVar1") (; ";")) (declaration "int *piVar2;" (primitive_type "int") (pointer_declarator "*piVar2" (* "*") (identifier "piVar2")) (; ";")) (declaration "byte *pbVar3;" (type_identifier "byte") (pointer_declarator "*pbVar3" (* "*") (identifier "pbVar3")) (; ";")) (declaration "char *pcVar4;" (primitive_type "char") (pointer_declarator "*pcVar4" (* "*") (identifier "pcVar4")) (; ";")) (declaration "byte *pbVar5;" (type_identifier "byte") (pointer_declarator "*pbVar5" (* "*") (identifier "pbVar5")) (; ";")) (declaration "int iVar6;" (primitive_type "int") (identifier "iVar6") (; ";")) (declaration "int iVar7;" (primitive_type "int") (identifier "iVar7") (; ";")) (declaration "int iVar8;" (primitive_type "int") (identifier "iVar8") (; ";")) (declaration "int unaff_EDI;" (primitive_type "int") (identifier "unaff_EDI") (; ";")) (declaration "int iVar9;" (primitive_type "int") (identifier "iVar9") (; ";")) (declaration "undefined8 uVar10;" (type_identifier "undefined8") (identifier "uVar10") (; ";")) (declaration "int local_30;" (primitive_type "int") (identifier "local_30") (; ";")) (expression_statement "uVar10 = FUN_000559ee();" (assignment_expression "uVar10 = FUN_000559ee()" (identifier "uVar10") (= "=") (call_expression "FUN_000559ee()" (identifier "FUN_000559ee") (argument_list "()" (( "(") () ")")))) (; ";")) (expression_statement "pbVar5 = (byte *)((ulonglong)uVar10 >> 0x20);" (assignment_expression "pbVar5 = (byte *)((ulonglong)uVar10 >> 0x20)" (identifier "pbVar5") (= "=") (cast_expression "(byte *)((ulonglong)uVar10 >> 0x20)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((ulonglong)uVar10 >> 0x20)" (( "(") (binary_expression "(ulonglong)uVar10 >> 0x20" (cast_expression "(ulonglong)uVar10" (( "(") (type_descriptor "ulonglong" (type_identifier "ulonglong")) () ")") (identifier "uVar10")) (>> ">>") (number_literal "0x20")) () ")")))) (; ";")) (expression_statement "piVar2 = (int *)uVar10;" (assignment_expression "piVar2 = (int *)uVar10" (identifier "piVar2") (= "=") (cast_expression "(int *)uVar10" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "uVar10"))) (; ";")) (expression_statement "iVar9 = 1;" (assignment_expression "iVar9 = 1" (identifier "iVar9") (= "=") (number_literal "1")) (; ";")) (do_statement "do {\n    for (; *pbVar5 == 0x30; pbVar5 = pbVar5 + 1) {\n    }\n    pbVar3 = (byte *)FUN_001e3890();\n    if (pbVar3 == (byte *)0x0) {\n      return (byte *)0x0;\n    }\n    bVar1 = *pbVar3;\n    if (bVar1 == 0x4d) {\n      if (*piVar2 == piVar2[1]) {\n        FUN_001e1fa0();\n        iVar8 = *piVar2;\n        local_30 = 0;\n        iVar6 = piVar2[1];\n        if (iVar6 == iVar8) goto LAB_001e3ed6;\nLAB_001e3fd8:\n        iVar7 = local_30 - (iVar6 - iVar8);\n      }\n      else {\n        iVar7 = piVar2[1] - *piVar2;\n        FUN_001e1fa0();\n        iVar8 = *piVar2;\n        iVar6 = piVar2[1];\n        local_30 = iVar7;\n        if (iVar8 != iVar6) goto LAB_001e3fd8;\n      }\n      if (iVar7 < 0) {\n        piVar2[1] = iVar8 + local_30;\n      }\nLAB_001e3ed6:\n      pcVar4 = (char *)FUN_001e1eb0();\n      if ((pcVar4 != (char *)0x0) && (*pcVar4 != '\0')) {\n        FUN_001e2060();\n      }\n      iVar8 = *piVar2;\n      iVar6 = local_30 - (piVar2[1] - iVar8);\n      if (iVar8 == piVar2[1]) {\n        iVar6 = local_30;\n      }\n      if (iVar6 < 0) {\n        piVar2[1] = iVar8 + local_30;\n      }\n      FUN_001e1e60();\n      pbVar5 = (byte *)FUN_001e34c0();\n      FUN_001e1e60();\n      if ((pbVar5 == (byte *)0x0) || ((*(byte *)(unaff_EDI + 0xbf7b9 + (uint)*pbVar5 * 2) & 4) == 0)\n         ) {\n        iVar8 = *piVar2;\n        iVar6 = local_30 - (piVar2[1] - iVar8);\n        if (iVar8 == piVar2[1]) {\n          iVar6 = local_30;\n        }\n        if (iVar6 < 0) {\n          piVar2[1] = iVar8 + local_30;\n        }\n        bVar1 = *pbVar3;\n        goto LAB_001e3f9a;\n      }\n    }\n    else {\n      if (((byte)(bVar1 + 0xba) < 0x14) && ((1 << (bVar1 + 0xba & 0x1f) & 0xb9001U) != 0)) {\n        if (*piVar2 == piVar2[1]) {\n          local_30 = 0;\n        }\n        else {\n          local_30 = piVar2[1] - *piVar2;\n        }\n        goto LAB_001e3ed6;\n      }\nLAB_001e3f9a:\n      pbVar5 = pbVar3;\n      if ((*(byte *)(unaff_EDI + 0xbf7b9 + (uint)bVar1 * 2) & 4) == 0) {\n        return pbVar3;\n      }\n    }\n    if (iVar9 != 0) {\n      FUN_001e1e60();\n    }\n    iVar9 = iVar9 + 1;\n  } while( true );" (do "do") (compound_statement "{\n    for (; *pbVar5 == 0x30; pbVar5 = pbVar5 + 1) {\n    }\n    pbVar3 = (byte *)FUN_001e3890();\n    if (pbVar3 == (byte *)0x0) {\n      return (byte *)0x0;\n    }\n    bVar1 = *pbVar3;\n    if (bVar1 == 0x4d) {\n      if (*piVar2 == piVar2[1]) {\n        FUN_001e1fa0();\n        iVar8 = *piVar2;\n        local_30 = 0;\n        iVar6 = piVar2[1];\n        if (iVar6 == iVar8) goto LAB_001e3ed6;\nLAB_001e3fd8:\n        iVar7 = local_30 - (iVar6 - iVar8);\n      }\n      else {\n        iVar7 = piVar2[1] - *piVar2;\n        FUN_001e1fa0();\n        iVar8 = *piVar2;\n        iVar6 = piVar2[1];\n        local_30 = iVar7;\n        if (iVar8 != iVar6) goto LAB_001e3fd8;\n      }\n      if (iVar7 < 0) {\n        piVar2[1] = iVar8 + local_30;\n      }\nLAB_001e3ed6:\n      pcVar4 = (char *)FUN_001e1eb0();\n      if ((pcVar4 != (char *)0x0) && (*pcVar4 != '\0')) {\n        FUN_001e2060();\n      }\n      iVar8 = *piVar2;\n      iVar6 = local_30 - (piVar2[1] - iVar8);\n      if (iVar8 == piVar2[1]) {\n        iVar6 = local_30;\n      }\n      if (iVar6 < 0) {\n        piVar2[1] = iVar8 + local_30;\n      }\n      FUN_001e1e60();\n      pbVar5 = (byte *)FUN_001e34c0();\n      FUN_001e1e60();\n      if ((pbVar5 == (byte *)0x0) || ((*(byte *)(unaff_EDI + 0xbf7b9 + (uint)*pbVar5 * 2) & 4) == 0)\n         ) {\n        iVar8 = *piVar2;\n        iVar6 = local_30 - (piVar2[1] - iVar8);\n        if (iVar8 == piVar2[1]) {\n          iVar6 = local_30;\n        }\n        if (iVar6 < 0) {\n          piVar2[1] = iVar8 + local_30;\n        }\n        bVar1 = *pbVar3;\n        goto LAB_001e3f9a;\n      }\n    }\n    else {\n      if (((byte)(bVar1 + 0xba) < 0x14) && ((1 << (bVar1 + 0xba & 0x1f) & 0xb9001U) != 0)) {\n        if (*piVar2 == piVar2[1]) {\n          local_30 = 0;\n        }\n        else {\n          local_30 = piVar2[1] - *piVar2;\n        }\n        goto LAB_001e3ed6;\n      }\nLAB_001e3f9a:\n      pbVar5 = pbVar3;\n      if ((*(byte *)(unaff_EDI + 0xbf7b9 + (uint)bVar1 * 2) & 4) == 0) {\n        return pbVar3;\n      }\n    }\n    if (iVar9 != 0) {\n      FUN_001e1e60();\n    }\n    iVar9 = iVar9 + 1;\n  }" ({ "{") (for_statement "for (; *pbVar5 == 0x30; pbVar5 = pbVar5 + 1) {\n    }" (for "for") (( "(") (; ";") (binary_expression "*pbVar5 == 0x30" (pointer_expression "*pbVar5" (* "*") (identifier "pbVar5")) (== "==") (number_literal "0x30")) (; ";") (assignment_expression "pbVar5 = pbVar5 + 1" (identifier "pbVar5") (= "=") (binary_expression "pbVar5 + 1" (identifier "pbVar5") (+ "+") (number_literal "1"))) () ")") (compound_statement "{\n    }" ({ "{") (} "}"))) (expression_statement "pbVar3 = (byte *)FUN_001e3890();" (assignment_expression "pbVar3 = (byte *)FUN_001e3890()" (identifier "pbVar3") (= "=") (cast_expression "(byte *)FUN_001e3890()" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_001e3890()" (identifier "FUN_001e3890") (argument_list "()" (( "(") () ")"))))) (; ";")) (if_statement "if (pbVar3 == (byte *)0x0) {\n      return (byte *)0x0;\n    }" (if "if") (parenthesized_expression "(pbVar3 == (byte *)0x0)" (( "(") (binary_expression "pbVar3 == (byte *)0x0" (identifier "pbVar3") (== "==") (cast_expression "(byte *)0x0" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n      return (byte *)0x0;\n    }" ({ "{") (return_statement "return (byte *)0x0;" (return "return") (cast_expression "(byte *)0x0" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0")) (; ";")) (} "}"))) (expression_statement "bVar1 = *pbVar3;" (assignment_expression "bVar1 = *pbVar3" (identifier "bVar1") (= "=") (pointer_expression "*pbVar3" (* "*") (identifier "pbVar3"))) (; ";")) (if_statement "if (bVar1 == 0x4d) {\n      if (*piVar2 == piVar2[1]) {\n        FUN_001e1fa0();\n        iVar8 = *piVar2;\n        local_30 = 0;\n        iVar6 = piVar2[1];\n        if (iVar6 == iVar8) goto LAB_001e3ed6;\nLAB_001e3fd8:\n        iVar7 = local_30 - (iVar6 - iVar8);\n      }\n      else {\n        iVar7 = piVar2[1] - *piVar2;\n        FUN_001e1fa0();\n        iVar8 = *piVar2;\n        iVar6 = piVar2[1];\n        local_30 = iVar7;\n        if (iVar8 != iVar6) goto LAB_001e3fd8;\n      }\n      if (iVar7 < 0) {\n        piVar2[1] = iVar8 + local_30;\n      }\nLAB_001e3ed6:\n      pcVar4 = (char *)FUN_001e1eb0();\n      if ((pcVar4 != (char *)0x0) && (*pcVar4 != '\0')) {\n        FUN_001e2060();\n      }\n      iVar8 = *piVar2;\n      iVar6 = local_30 - (piVar2[1] - iVar8);\n      if (iVar8 == piVar2[1]) {\n        iVar6 = local_30;\n      }\n      if (iVar6 < 0) {\n        piVar2[1] = iVar8 + local_30;\n      }\n      FUN_001e1e60();\n      pbVar5 = (byte *)FUN_001e34c0();\n      FUN_001e1e60();\n      if ((pbVar5 == (byte *)0x0) || ((*(byte *)(unaff_EDI + 0xbf7b9 + (uint)*pbVar5 * 2) & 4) == 0)\n         ) {\n        iVar8 = *piVar2;\n        iVar6 = local_30 - (piVar2[1] - iVar8);\n        if (iVar8 == piVar2[1]) {\n          iVar6 = local_30;\n        }\n        if (iVar6 < 0) {\n          piVar2[1] = iVar8 + local_30;\n        }\n        bVar1 = *pbVar3;\n        goto LAB_001e3f9a;\n      }\n    }\n    else {\n      if (((byte)(bVar1 + 0xba) < 0x14) && ((1 << (bVar1 + 0xba & 0x1f) & 0xb9001U) != 0)) {\n        if (*piVar2 == piVar2[1]) {\n          local_30 = 0;\n        }\n        else {\n          local_30 = piVar2[1] - *piVar2;\n        }\n        goto LAB_001e3ed6;\n      }\nLAB_001e3f9a:\n      pbVar5 = pbVar3;\n      if ((*(byte *)(unaff_EDI + 0xbf7b9 + (uint)bVar1 * 2) & 4) == 0) {\n        return pbVar3;\n      }\n    }" (if "if") (parenthesized_expression "(bVar1 == 0x4d)" (( "(") (binary_expression "bVar1 == 0x4d" (identifier "bVar1") (== "==") (number_literal "0x4d")) () ")")) (compound_statement "{\n      if (*piVar2 == piVar2[1]) {\n        FUN_001e1fa0();\n        iVar8 = *piVar2;\n        local_30 = 0;\n        iVar6 = piVar2[1];\n        if (iVar6 == iVar8) goto LAB_001e3ed6;\nLAB_001e3fd8:\n        iVar7 = local_30 - (iVar6 - iVar8);\n      }\n      else {\n        iVar7 = piVar2[1] - *piVar2;\n        FUN_001e1fa0();\n        iVar8 = *piVar2;\n        iVar6 = piVar2[1];\n        local_30 = iVar7;\n        if (iVar8 != iVar6) goto LAB_001e3fd8;\n      }\n      if (iVar7 < 0) {\n        piVar2[1] = iVar8 + local_30;\n      }\nLAB_001e3ed6:\n      pcVar4 = (char *)FUN_001e1eb0();\n      if ((pcVar4 != (char *)0x0) && (*pcVar4 != '\0')) {\n        FUN_001e2060();\n      }\n      iVar8 = *piVar2;\n      iVar6 = local_30 - (piVar2[1] - iVar8);\n      if (iVar8 == piVar2[1]) {\n        iVar6 = local_30;\n      }\n      if (iVar6 < 0) {\n        piVar2[1] = iVar8 + local_30;\n      }\n      FUN_001e1e60();\n      pbVar5 = (byte *)FUN_001e34c0();\n      FUN_001e1e60();\n      if ((pbVar5 == (byte *)0x0) || ((*(byte *)(unaff_EDI + 0xbf7b9 + (uint)*pbVar5 * 2) & 4) == 0)\n         ) {\n        iVar8 = *piVar2;\n        iVar6 = local_30 - (piVar2[1] - iVar8);\n        if (iVar8 == piVar2[1]) {\n          iVar6 = local_30;\n        }\n        if (iVar6 < 0) {\n          piVar2[1] = iVar8 + local_30;\n        }\n        bVar1 = *pbVar3;\n        goto LAB_001e3f9a;\n      }\n    }" ({ "{") (if_statement "if (*piVar2 == piVar2[1]) {\n        FUN_001e1fa0();\n        iVar8 = *piVar2;\n        local_30 = 0;\n        iVar6 = piVar2[1];\n        if (iVar6 == iVar8) goto LAB_001e3ed6;\nLAB_001e3fd8:\n        iVar7 = local_30 - (iVar6 - iVar8);\n      }\n      else {\n        iVar7 = piVar2[1] - *piVar2;\n        FUN_001e1fa0();\n        iVar8 = *piVar2;\n        iVar6 = piVar2[1];\n        local_30 = iVar7;\n        if (iVar8 != iVar6) goto LAB_001e3fd8;\n      }" (if "if") (parenthesized_expression "(*piVar2 == piVar2[1])" (( "(") (binary_expression "*piVar2 == piVar2[1]" (pointer_expression "*piVar2" (* "*") (identifier "piVar2")) (== "==") (subscript_expression "piVar2[1]" (identifier "piVar2") ([ "[") (number_literal "1") (] "]"))) () ")")) (compound_statement "{\n        FUN_001e1fa0();\n        iVar8 = *piVar2;\n        local_30 = 0;\n        iVar6 = piVar2[1];\n        if (iVar6 == iVar8) goto LAB_001e3ed6;\nLAB_001e3fd8:\n        iVar7 = local_30 - (iVar6 - iVar8);\n      }" ({ "{") (expression_statement "FUN_001e1fa0();" (call_expression "FUN_001e1fa0()" (identifier "FUN_001e1fa0") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "iVar8 = *piVar2;" (assignment_expression "iVar8 = *piVar2" (identifier "iVar8") (= "=") (pointer_expression "*piVar2" (* "*") (identifier "piVar2"))) (; ";")) (expression_statement "local_30 = 0;" (assignment_expression "local_30 = 0" (identifier "local_30") (= "=") (number_literal "0")) (; ";")) (expression_statement "iVar6 = piVar2[1];" (assignment_expression "iVar6 = piVar2[1]" (identifier "iVar6") (= "=") (subscript_expression "piVar2[1]" (identifier "piVar2") ([ "[") (number_literal "1") (] "]"))) (; ";")) (if_statement "if (iVar6 == iVar8) goto LAB_001e3ed6;" (if "if") (parenthesized_expression "(iVar6 == iVar8)" (( "(") (binary_expression "iVar6 == iVar8" (identifier "iVar6") (== "==") (identifier "iVar8")) () ")")) (goto_statement "goto LAB_001e3ed6;" (goto "goto") (statement_identifier "LAB_001e3ed6") (; ";"))) (labeled_statement "LAB_001e3fd8:\n        iVar7 = local_30 - (iVar6 - iVar8);" (statement_identifier "LAB_001e3fd8") (: ":") (expression_statement "iVar7 = local_30 - (iVar6 - iVar8);" (assignment_expression "iVar7 = local_30 - (iVar6 - iVar8)" (identifier "iVar7") (= "=") (binary_expression "local_30 - (iVar6 - iVar8)" (identifier "local_30") (- "-") (parenthesized_expression "(iVar6 - iVar8)" (( "(") (binary_expression "iVar6 - iVar8" (identifier "iVar6") (- "-") (identifier "iVar8")) () ")")))) (; ";"))) (} "}")) (else_clause "else {\n        iVar7 = piVar2[1] - *piVar2;\n        FUN_001e1fa0();\n        iVar8 = *piVar2;\n        iVar6 = piVar2[1];\n        local_30 = iVar7;\n        if (iVar8 != iVar6) goto LAB_001e3fd8;\n      }" (else "else") (compound_statement "{\n        iVar7 = piVar2[1] - *piVar2;\n        FUN_001e1fa0();\n        iVar8 = *piVar2;\n        iVar6 = piVar2[1];\n        local_30 = iVar7;\n        if (iVar8 != iVar6) goto LAB_001e3fd8;\n      }" ({ "{") (expression_statement "iVar7 = piVar2[1] - *piVar2;" (assignment_expression "iVar7 = piVar2[1] - *piVar2" (identifier "iVar7") (= "=") (binary_expression "piVar2[1] - *piVar2" (subscript_expression "piVar2[1]" (identifier "piVar2") ([ "[") (number_literal "1") (] "]")) (- "-") (pointer_expression "*piVar2" (* "*") (identifier "piVar2")))) (; ";")) (expression_statement "FUN_001e1fa0();" (call_expression "FUN_001e1fa0()" (identifier "FUN_001e1fa0") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "iVar8 = *piVar2;" (assignment_expression "iVar8 = *piVar2" (identifier "iVar8") (= "=") (pointer_expression "*piVar2" (* "*") (identifier "piVar2"))) (; ";")) (expression_statement "iVar6 = piVar2[1];" (assignment_expression "iVar6 = piVar2[1]" (identifier "iVar6") (= "=") (subscript_expression "piVar2[1]" (identifier "piVar2") ([ "[") (number_literal "1") (] "]"))) (; ";")) (expression_statement "local_30 = iVar7;" (assignment_expression "local_30 = iVar7" (identifier "local_30") (= "=") (identifier "iVar7")) (; ";")) (if_statement "if (iVar8 != iVar6) goto LAB_001e3fd8;" (if "if") (parenthesized_expression "(iVar8 != iVar6)" (( "(") (binary_expression "iVar8 != iVar6" (identifier "iVar8") (!= "!=") (identifier "iVar6")) () ")")) (goto_statement "goto LAB_001e3fd8;" (goto "goto") (statement_identifier "LAB_001e3fd8") (; ";"))) (} "}")))) (if_statement "if (iVar7 < 0) {\n        piVar2[1] = iVar8 + local_30;\n      }" (if "if") (parenthesized_expression "(iVar7 < 0)" (( "(") (binary_expression "iVar7 < 0" (identifier "iVar7") (< "<") (number_literal "0")) () ")")) (compound_statement "{\n        piVar2[1] = iVar8 + local_30;\n      }" ({ "{") (expression_statement "piVar2[1] = iVar8 + local_30;" (assignment_expression "piVar2[1] = iVar8 + local_30" (subscript_expression "piVar2[1]" (identifier "piVar2") ([ "[") (number_literal "1") (] "]")) (= "=") (binary_expression "iVar8 + local_30" (identifier "iVar8") (+ "+") (identifier "local_30"))) (; ";")) (} "}"))) (labeled_statement "LAB_001e3ed6:\n      pcVar4 = (char *)FUN_001e1eb0();" (statement_identifier "LAB_001e3ed6") (: ":") (expression_statement "pcVar4 = (char *)FUN_001e1eb0();" (assignment_expression "pcVar4 = (char *)FUN_001e1eb0()" (identifier "pcVar4") (= "=") (cast_expression "(char *)FUN_001e1eb0()" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_001e1eb0()" (identifier "FUN_001e1eb0") (argument_list "()" (( "(") () ")"))))) (; ";"))) (if_statement "if ((pcVar4 != (char *)0x0) && (*pcVar4 != '\0')) {\n        FUN_001e2060();\n      }" (if "if") (parenthesized_expression "((pcVar4 != (char *)0x0) && (*pcVar4 != '\0'))" (( "(") (binary_expression "(pcVar4 != (char *)0x0) && (*pcVar4 != '\0')" (parenthesized_expression "(pcVar4 != (char *)0x0)" (( "(") (binary_expression "pcVar4 != (char *)0x0" (identifier "pcVar4") (!= "!=") (cast_expression "(char *)0x0" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (&& "&&") (parenthesized_expression "(*pcVar4 != '\0')" (( "(") (binary_expression "*pcVar4 != '\0'" (pointer_expression "*pcVar4" (* "*") (identifier "pcVar4")) (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")"))) () ")")) (compound_statement "{\n        FUN_001e2060();\n      }" ({ "{") (expression_statement "FUN_001e2060();" (call_expression "FUN_001e2060()" (identifier "FUN_001e2060") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}"))) (expression_statement "iVar8 = *piVar2;" (assignment_expression "iVar8 = *piVar2" (identifier "iVar8") (= "=") (pointer_expression "*piVar2" (* "*") (identifier "piVar2"))) (; ";")) (expression_statement "iVar6 = local_30 - (piVar2[1] - iVar8);" (assignment_expression "iVar6 = local_30 - (piVar2[1] - iVar8)" (identifier "iVar6") (= "=") (binary_expression "local_30 - (piVar2[1] - iVar8)" (identifier "local_30") (- "-") (parenthesized_expression "(piVar2[1] - iVar8)" (( "(") (binary_expression "piVar2[1] - iVar8" (subscript_expression "piVar2[1]" (identifier "piVar2") ([ "[") (number_literal "1") (] "]")) (- "-") (identifier "iVar8")) () ")")))) (; ";")) (if_statement "if (iVar8 == piVar2[1]) {\n        iVar6 = local_30;\n      }" (if "if") (parenthesized_expression "(iVar8 == piVar2[1])" (( "(") (binary_expression "iVar8 == piVar2[1]" (identifier "iVar8") (== "==") (subscript_expression "piVar2[1]" (identifier "piVar2") ([ "[") (number_literal "1") (] "]"))) () ")")) (compound_statement "{\n        iVar6 = local_30;\n      }" ({ "{") (expression_statement "iVar6 = local_30;" (assignment_expression "iVar6 = local_30" (identifier "iVar6") (= "=") (identifier "local_30")) (; ";")) (} "}"))) (if_statement "if (iVar6 < 0) {\n        piVar2[1] = iVar8 + local_30;\n      }" (if "if") (parenthesized_expression "(iVar6 < 0)" (( "(") (binary_expression "iVar6 < 0" (identifier "iVar6") (< "<") (number_literal "0")) () ")")) (compound_statement "{\n        piVar2[1] = iVar8 + local_30;\n      }" ({ "{") (expression_statement "piVar2[1] = iVar8 + local_30;" (assignment_expression "piVar2[1] = iVar8 + local_30" (subscript_expression "piVar2[1]" (identifier "piVar2") ([ "[") (number_literal "1") (] "]")) (= "=") (binary_expression "iVar8 + local_30" (identifier "iVar8") (+ "+") (identifier "local_30"))) (; ";")) (} "}"))) (expression_statement "FUN_001e1e60();" (call_expression "FUN_001e1e60()" (identifier "FUN_001e1e60") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "pbVar5 = (byte *)FUN_001e34c0();" (assignment_expression "pbVar5 = (byte *)FUN_001e34c0()" (identifier "pbVar5") (= "=") (cast_expression "(byte *)FUN_001e34c0()" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_001e34c0()" (identifier "FUN_001e34c0") (argument_list "()" (( "(") () ")"))))) (; ";")) (expression_statement "FUN_001e1e60();" (call_expression "FUN_001e1e60()" (identifier "FUN_001e1e60") (argument_list "()" (( "(") () ")"))) (; ";")) (if_statement "if ((pbVar5 == (byte *)0x0) || ((*(byte *)(unaff_EDI + 0xbf7b9 + (uint)*pbVar5 * 2) & 4) == 0)\n         ) {\n        iVar8 = *piVar2;\n        iVar6 = local_30 - (piVar2[1] - iVar8);\n        if (iVar8 == piVar2[1]) {\n          iVar6 = local_30;\n        }\n        if (iVar6 < 0) {\n          piVar2[1] = iVar8 + local_30;\n        }\n        bVar1 = *pbVar3;\n        goto LAB_001e3f9a;\n      }" (if "if") (parenthesized_expression "((pbVar5 == (byte *)0x0) || ((*(byte *)(unaff_EDI + 0xbf7b9 + (uint)*pbVar5 * 2) & 4) == 0)\n         )" (( "(") (binary_expression "(pbVar5 == (byte *)0x0) || ((*(byte *)(unaff_EDI + 0xbf7b9 + (uint)*pbVar5 * 2) & 4) == 0)" (parenthesized_expression "(pbVar5 == (byte *)0x0)" (( "(") (binary_expression "pbVar5 == (byte *)0x0" (identifier "pbVar5") (== "==") (cast_expression "(byte *)0x0" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (|| "||") (parenthesized_expression "((*(byte *)(unaff_EDI + 0xbf7b9 + (uint)*pbVar5 * 2) & 4) == 0)" (( "(") (binary_expression "(*(byte *)(unaff_EDI + 0xbf7b9 + (uint)*pbVar5 * 2) & 4) == 0" (parenthesized_expression "(*(byte *)(unaff_EDI + 0xbf7b9 + (uint)*pbVar5 * 2) & 4)" (( "(") (binary_expression "*(byte *)(unaff_EDI + 0xbf7b9 + (uint)*pbVar5 * 2) & 4" (pointer_expression "*(byte *)(unaff_EDI + 0xbf7b9 + (uint)*pbVar5 * 2)" (* "*") (cast_expression "(byte *)(unaff_EDI + 0xbf7b9 + (uint)*pbVar5 * 2)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(unaff_EDI + 0xbf7b9 + (uint)*pbVar5 * 2)" (( "(") (binary_expression "unaff_EDI + 0xbf7b9 + (uint)*pbVar5 * 2" (binary_expression "unaff_EDI + 0xbf7b9" (identifier "unaff_EDI") (+ "+") (number_literal "0xbf7b9")) (+ "+") (binary_expression "(uint)*pbVar5 * 2" (binary_expression "(uint)*pbVar5" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (* "*") (identifier "pbVar5")) (* "*") (number_literal "2"))) () ")")))) (& "&") (number_literal "4")) () ")")) (== "==") (number_literal "0")) () ")"))) () ")")) (compound_statement "{\n        iVar8 = *piVar2;\n        iVar6 = local_30 - (piVar2[1] - iVar8);\n        if (iVar8 == piVar2[1]) {\n          iVar6 = local_30;\n        }\n        if (iVar6 < 0) {\n          piVar2[1] = iVar8 + local_30;\n        }\n        bVar1 = *pbVar3;\n        goto LAB_001e3f9a;\n      }" ({ "{") (expression_statement "iVar8 = *piVar2;" (assignment_expression "iVar8 = *piVar2" (identifier "iVar8") (= "=") (pointer_expression "*piVar2" (* "*") (identifier "piVar2"))) (; ";")) (expression_statement "iVar6 = local_30 - (piVar2[1] - iVar8);" (assignment_expression "iVar6 = local_30 - (piVar2[1] - iVar8)" (identifier "iVar6") (= "=") (binary_expression "local_30 - (piVar2[1] - iVar8)" (identifier "local_30") (- "-") (parenthesized_expression "(piVar2[1] - iVar8)" (( "(") (binary_expression "piVar2[1] - iVar8" (subscript_expression "piVar2[1]" (identifier "piVar2") ([ "[") (number_literal "1") (] "]")) (- "-") (identifier "iVar8")) () ")")))) (; ";")) (if_statement "if (iVar8 == piVar2[1]) {\n          iVar6 = local_30;\n        }" (if "if") (parenthesized_expression "(iVar8 == piVar2[1])" (( "(") (binary_expression "iVar8 == piVar2[1]" (identifier "iVar8") (== "==") (subscript_expression "piVar2[1]" (identifier "piVar2") ([ "[") (number_literal "1") (] "]"))) () ")")) (compound_statement "{\n          iVar6 = local_30;\n        }" ({ "{") (expression_statement "iVar6 = local_30;" (assignment_expression "iVar6 = local_30" (identifier "iVar6") (= "=") (identifier "local_30")) (; ";")) (} "}"))) (if_statement "if (iVar6 < 0) {\n          piVar2[1] = iVar8 + local_30;\n        }" (if "if") (parenthesized_expression "(iVar6 < 0)" (( "(") (binary_expression "iVar6 < 0" (identifier "iVar6") (< "<") (number_literal "0")) () ")")) (compound_statement "{\n          piVar2[1] = iVar8 + local_30;\n        }" ({ "{") (expression_statement "piVar2[1] = iVar8 + local_30;" (assignment_expression "piVar2[1] = iVar8 + local_30" (subscript_expression "piVar2[1]" (identifier "piVar2") ([ "[") (number_literal "1") (] "]")) (= "=") (binary_expression "iVar8 + local_30" (identifier "iVar8") (+ "+") (identifier "local_30"))) (; ";")) (} "}"))) (expression_statement "bVar1 = *pbVar3;" (assignment_expression "bVar1 = *pbVar3" (identifier "bVar1") (= "=") (pointer_expression "*pbVar3" (* "*") (identifier "pbVar3"))) (; ";")) (goto_statement "goto LAB_001e3f9a;" (goto "goto") (statement_identifier "LAB_001e3f9a") (; ";")) (} "}"))) (} "}")) (else_clause "else {\n      if (((byte)(bVar1 + 0xba) < 0x14) && ((1 << (bVar1 + 0xba & 0x1f) & 0xb9001U) != 0)) {\n        if (*piVar2 == piVar2[1]) {\n          local_30 = 0;\n        }\n        else {\n          local_30 = piVar2[1] - *piVar2;\n        }\n        goto LAB_001e3ed6;\n      }\nLAB_001e3f9a:\n      pbVar5 = pbVar3;\n      if ((*(byte *)(unaff_EDI + 0xbf7b9 + (uint)bVar1 * 2) & 4) == 0) {\n        return pbVar3;\n      }\n    }" (else "else") (compound_statement "{\n      if (((byte)(bVar1 + 0xba) < 0x14) && ((1 << (bVar1 + 0xba & 0x1f) & 0xb9001U) != 0)) {\n        if (*piVar2 == piVar2[1]) {\n          local_30 = 0;\n        }\n        else {\n          local_30 = piVar2[1] - *piVar2;\n        }\n        goto LAB_001e3ed6;\n      }\nLAB_001e3f9a:\n      pbVar5 = pbVar3;\n      if ((*(byte *)(unaff_EDI + 0xbf7b9 + (uint)bVar1 * 2) & 4) == 0) {\n        return pbVar3;\n      }\n    }" ({ "{") (if_statement "if (((byte)(bVar1 + 0xba) < 0x14) && ((1 << (bVar1 + 0xba & 0x1f) & 0xb9001U) != 0)) {\n        if (*piVar2 == piVar2[1]) {\n          local_30 = 0;\n        }\n        else {\n          local_30 = piVar2[1] - *piVar2;\n        }\n        goto LAB_001e3ed6;\n      }" (if "if") (parenthesized_expression "(((byte)(bVar1 + 0xba) < 0x14) && ((1 << (bVar1 + 0xba & 0x1f) & 0xb9001U) != 0))" (( "(") (binary_expression "((byte)(bVar1 + 0xba) < 0x14) && ((1 << (bVar1 + 0xba & 0x1f) & 0xb9001U) != 0)" (parenthesized_expression "((byte)(bVar1 + 0xba) < 0x14)" (( "(") (binary_expression "(byte)(bVar1 + 0xba) < 0x14" (call_expression "(byte)(bVar1 + 0xba)" (parenthesized_expression "(byte)" (( "(") (identifier "byte") () ")")) (argument_list "(bVar1 + 0xba)" (( "(") (binary_expression "bVar1 + 0xba" (identifier "bVar1") (+ "+") (number_literal "0xba")) () ")"))) (< "<") (number_literal "0x14")) () ")")) (&& "&&") (parenthesized_expression "((1 << (bVar1 + 0xba & 0x1f) & 0xb9001U) != 0)" (( "(") (binary_expression "(1 << (bVar1 + 0xba & 0x1f) & 0xb9001U) != 0" (parenthesized_expression "(1 << (bVar1 + 0xba & 0x1f) & 0xb9001U)" (( "(") (binary_expression "1 << (bVar1 + 0xba & 0x1f) & 0xb9001U" (binary_expression "1 << (bVar1 + 0xba & 0x1f)" (number_literal "1") (<< "<<") (parenthesized_expression "(bVar1 + 0xba & 0x1f)" (( "(") (binary_expression "bVar1 + 0xba & 0x1f" (binary_expression "bVar1 + 0xba" (identifier "bVar1") (+ "+") (number_literal "0xba")) (& "&") (number_literal "0x1f")) () ")"))) (& "&") (number_literal "0xb9001U")) () ")")) (!= "!=") (number_literal "0")) () ")"))) () ")")) (compound_statement "{\n        if (*piVar2 == piVar2[1]) {\n          local_30 = 0;\n        }\n        else {\n          local_30 = piVar2[1] - *piVar2;\n        }\n        goto LAB_001e3ed6;\n      }" ({ "{") (if_statement "if (*piVar2 == piVar2[1]) {\n          local_30 = 0;\n        }\n        else {\n          local_30 = piVar2[1] - *piVar2;\n        }" (if "if") (parenthesized_expression "(*piVar2 == piVar2[1])" (( "(") (binary_expression "*piVar2 == piVar2[1]" (pointer_expression "*piVar2" (* "*") (identifier "piVar2")) (== "==") (subscript_expression "piVar2[1]" (identifier "piVar2") ([ "[") (number_literal "1") (] "]"))) () ")")) (compound_statement "{\n          local_30 = 0;\n        }" ({ "{") (expression_statement "local_30 = 0;" (assignment_expression "local_30 = 0" (identifier "local_30") (= "=") (number_literal "0")) (; ";")) (} "}")) (else_clause "else {\n          local_30 = piVar2[1] - *piVar2;\n        }" (else "else") (compound_statement "{\n          local_30 = piVar2[1] - *piVar2;\n        }" ({ "{") (expression_statement "local_30 = piVar2[1] - *piVar2;" (assignment_expression "local_30 = piVar2[1] - *piVar2" (identifier "local_30") (= "=") (binary_expression "piVar2[1] - *piVar2" (subscript_expression "piVar2[1]" (identifier "piVar2") ([ "[") (number_literal "1") (] "]")) (- "-") (pointer_expression "*piVar2" (* "*") (identifier "piVar2")))) (; ";")) (} "}")))) (goto_statement "goto LAB_001e3ed6;" (goto "goto") (statement_identifier "LAB_001e3ed6") (; ";")) (} "}"))) (labeled_statement "LAB_001e3f9a:\n      pbVar5 = pbVar3;" (statement_identifier "LAB_001e3f9a") (: ":") (expression_statement "pbVar5 = pbVar3;" (assignment_expression "pbVar5 = pbVar3" (identifier "pbVar5") (= "=") (identifier "pbVar3")) (; ";"))) (if_statement "if ((*(byte *)(unaff_EDI + 0xbf7b9 + (uint)bVar1 * 2) & 4) == 0) {\n        return pbVar3;\n      }" (if "if") (parenthesized_expression "((*(byte *)(unaff_EDI + 0xbf7b9 + (uint)bVar1 * 2) & 4) == 0)" (( "(") (binary_expression "(*(byte *)(unaff_EDI + 0xbf7b9 + (uint)bVar1 * 2) & 4) == 0" (parenthesized_expression "(*(byte *)(unaff_EDI + 0xbf7b9 + (uint)bVar1 * 2) & 4)" (( "(") (binary_expression "*(byte *)(unaff_EDI + 0xbf7b9 + (uint)bVar1 * 2) & 4" (pointer_expression "*(byte *)(unaff_EDI + 0xbf7b9 + (uint)bVar1 * 2)" (* "*") (cast_expression "(byte *)(unaff_EDI + 0xbf7b9 + (uint)bVar1 * 2)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(unaff_EDI + 0xbf7b9 + (uint)bVar1 * 2)" (( "(") (binary_expression "unaff_EDI + 0xbf7b9 + (uint)bVar1 * 2" (binary_expression "unaff_EDI + 0xbf7b9" (identifier "unaff_EDI") (+ "+") (number_literal "0xbf7b9")) (+ "+") (binary_expression "(uint)bVar1 * 2" (cast_expression "(uint)bVar1" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "bVar1")) (* "*") (number_literal "2"))) () ")")))) (& "&") (number_literal "4")) () ")")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n        return pbVar3;\n      }" ({ "{") (return_statement "return pbVar3;" (return "return") (identifier "pbVar3") (; ";")) (} "}"))) (} "}")))) (if_statement "if (iVar9 != 0) {\n      FUN_001e1e60();\n    }" (if "if") (parenthesized_expression "(iVar9 != 0)" (( "(") (binary_expression "iVar9 != 0" (identifier "iVar9") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n      FUN_001e1e60();\n    }" ({ "{") (expression_statement "FUN_001e1e60();" (call_expression "FUN_001e1e60()" (identifier "FUN_001e1e60") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}"))) (expression_statement "iVar9 = iVar9 + 1;" (assignment_expression "iVar9 = iVar9 + 1" (identifier "iVar9") (= "=") (binary_expression "iVar9 + 1" (identifier "iVar9") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (; ";")) (} "}")))

char * function_1(type_1 *decl,char *mangled,type_2 kind)

{
  type_3 var_5;
  type_1 *decl_00;
  type_3 *var_4;
  char *var_8;
  type_3 *var_2;
  char *var_7;
  type_2 kind_00;
  int var_10;
  int var_14;
  int var_16;
  type_4 uVar8;
  type_1 *in_stack_ffffffc4;
  char *in_stack_ffffffc8;
  int var_9;
  
  uVar8 = var_1();
  var_2 = (type_3 *)((type_5)uVar8 >> 0x20);
  decl_00 = (type_1 *)uVar8;
  var_16 = 1;
  do {
    for (; *var_2 == 0x30; var_2 = var_2 + 1) {
    }
    var_4 = (type_3 *)var_3(decl_00,(char *)var_2,kind_00);
    if (var_4 == (type_3 *)0x0) {
      return (char *)0x0;
    }
    var_5 = *var_4;
    if (var_5 == 0x4d) {
      if (decl_00->b == decl_00->p) {
        var_2 = (type_3 *)var_6(decl_00,(char *)(var_4 + 1));
        var_8 = decl_00->b;
        var_9 = 0;
        var_7 = decl_00->p;
        if (var_7 == var_8) goto LAB_001e3ed6;
LAB_001e3fd8:
        var_10 = var_9 - ((int)var_7 - (int)var_8);
      }
      else {
        var_10 = (int)decl_00->p - (int)decl_00->b;
        var_2 = (type_3 *)var_6(decl_00,(char *)(var_4 + 1));
        var_8 = decl_00->b;
        var_7 = decl_00->p;
        var_9 = var_10;
        if (var_8 != var_7) goto LAB_001e3fd8;
      }
      if (var_10 < 0) {
        decl_00->p = var_8 + var_9;
      }
LAB_001e3ed6:
      var_8 = var_11(decl_00,(char *)var_2);
      if (var_8 != (char *)0x0) {
        if (*var_8 == '\0') {
          var_8 = (char *)0x0;
        }
        else {
          var_8 = var_12(in_stack_ffffffc4,in_stack_ffffffc8);
        }
      }
      var_7 = decl_00->b;
      var_10 = var_9 - ((int)decl_00->p - (int)var_7);
      if (var_7 == decl_00->p) {
        var_10 = var_9;
      }
      if (var_10 < 0) {
        decl_00->p = var_7 + var_9;
      }
      var_13(decl_00,(char *)(var_14 + 0xb2025));
      var_2 = (type_3 *)var_15(decl_00,var_8);
      var_13(decl_00,(char *)(var_14 + 0xbd158));
      if ((var_2 == (type_3 *)0x0) || ((*(type_3 *)(var_14 + 0xbf7b9 + (type_6)*var_2 * 2) & 4) == 0)
         ) {
        var_8 = decl_00->b;
        var_10 = var_9 - ((int)decl_00->p - (int)var_8);
        if (var_8 == decl_00->p) {
          var_10 = var_9;
        }
        if (var_10 < 0) {
          decl_00->p = var_8 + var_9;
        }
        var_5 = *var_4;
        goto LAB_001e3f9a;
      }
    }
    else {
      if (((type_3)(var_5 + 0xba) < 0x14) && ((1 << (var_5 + 0xba & 0x1f) & 0xb9001U) != 0)) {
        var_2 = var_4;
        if (decl_00->b == decl_00->p) {
          var_9 = 0;
        }
        else {
          var_9 = (int)decl_00->p - (int)decl_00->b;
        }
        goto LAB_001e3ed6;
      }
LAB_001e3f9a:
      var_2 = var_4;
      if ((*(type_3 *)(var_14 + 0xbf7b9 + (type_6)var_5 * 2) & 4) == 0) {
        return (char *)var_4;
      }
    }
    if (var_16 != 0) {
      var_13(decl_00,(char *)(var_14 + 0xa9e04));
    }
    var_16 = var_16 + 1;
  } while( true );
}


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

byte * MASKED(void)

{
  byte bVar1;
  int *piVar2;
  byte *pbVar3;
  char *pcVar4;
  byte *pbVar5;
  int iVar6;
  int iVar7;
  int iVar8;
  int unaff_EDI;
  int iVar9;
  undefined8 uVar10;
  int local_30;
  
  uVar10 = FUN_000559ee();
  pbVar5 = (byte *)((ulonglong)uVar10 >> 0x20);
  piVar2 = (int *)uVar10;
  iVar9 = 1;
  do {
    for (; *pbVar5 == 0x30; pbVar5 = pbVar5 + 1) {
    }
    pbVar3 = (byte *)FUN_001e3890();
    if (pbVar3 == (byte *)0x0) {
      return (byte *)0x0;
    }
    bVar1 = *pbVar3;
    if (bVar1 == 0x4d) {
      if (*piVar2 == piVar2[1]) {
        FUN_001e1fa0();
        iVar8 = *piVar2;
        local_30 = 0;
        iVar6 = piVar2[1];
        if (iVar6 == iVar8) goto LAB_001e3ed6;
LAB_001e3fd8:
        iVar7 = local_30 - (iVar6 - iVar8);
      }
      else {
        iVar7 = piVar2[1] - *piVar2;
        FUN_001e1fa0();
        iVar8 = *piVar2;
        iVar6 = piVar2[1];
        local_30 = iVar7;
        if (iVar8 != iVar6) goto LAB_001e3fd8;
      }
      if (iVar7 < 0) {
        piVar2[1] = iVar8 + local_30;
      }
LAB_001e3ed6:
      pcVar4 = (char *)FUN_001e1eb0();
      if ((pcVar4 != (char *)0x0) && (*pcVar4 != '\0')) {
        FUN_001e2060();
      }
      iVar8 = *piVar2;
      iVar6 = local_30 - (piVar2[1] - iVar8);
      if (iVar8 == piVar2[1]) {
        iVar6 = local_30;
      }
      if (iVar6 < 0) {
        piVar2[1] = iVar8 + local_30;
      }
      FUN_001e1e60();
      pbVar5 = (byte *)FUN_001e34c0();
      FUN_001e1e60();
      if ((pbVar5 == (byte *)0x0) || ((*(byte *)(unaff_EDI + 0xbf7b9 + (uint)*pbVar5 * 2) & 4) == 0)
         ) {
        iVar8 = *piVar2;
        iVar6 = local_30 - (piVar2[1] - iVar8);
        if (iVar8 == piVar2[1]) {
          iVar6 = local_30;
        }
        if (iVar6 < 0) {
          piVar2[1] = iVar8 + local_30;
        }
        bVar1 = *pbVar3;
        goto LAB_001e3f9a;
      }
    }
    else {
      if (((byte)(bVar1 + 0xba) < 0x14) && ((1 << (bVar1 + 0xba & 0x1f) & 0xb9001U) != 0)) {
        if (*piVar2 == piVar2[1]) {
          local_30 = 0;
        }
        else {
          local_30 = piVar2[1] - *piVar2;
        }
        goto LAB_001e3ed6;
      }
LAB_001e3f9a:
      pbVar5 = pbVar3;
      if ((*(byte *)(unaff_EDI + 0xbf7b9 + (uint)bVar1 * 2) & 4) == 0) {
        return pbVar3;
      }
    }
    if (iVar9 != 0) {
      FUN_001e1e60();
    }
    iVar9 = iVar9 + 1;
  } while( true );
}

