BakSrc

decompiled_code:
__int64 BakSrc()
{
__int64 v0; // rbx
unsigned __int8 v1; // dl
__int64 v2; // rbx
_BYTE *v3; // rax
unsigned int v5; // er8
char v6; // di
int v7; // ecx
__int64 v8; // rsi
int v9; // eax
char v10; // dl
char *v11; // rax
_BYTE *v12; // rax
unsigned __int64 i; // rax
char v14; // si
__int64 v15; // rbx
unsigned __int64 v16; // rdx
__int64 v17; // rbp
unsigned __int8 *v18; // rbx
__int64 v19; // rcx
int v20; // eax
__int64 v21; // rbx
__int64 v22; // r12
__int64 v23; // rbp
int v24; // eax
__int64 v25; // rdx
__int64 v26; // rdx
_BYTE *v27; // rdi
unsigned __int64 v28; // rcx
_BYTE *v29; // rdx
int v30; // edx
int v31[7]; // [rsp+Ch] [rbp-1Ch] BYREF

v0 = SStPtr;
v1 = *SStPtr;
if ( *SStPtr == 19 )
{
v3 = (_BYTE *)EBPtr1;
if ( EndSAr <= EBPtr1 )
{
if ( (*((_BYTE *)&ChrMsk + (unsigned __int8)*EBPtr1) & 0xD0) == 0 )
{
LABEL_26:
v3 = (_BYTE *)EBPtr1;
goto LABEL_13;
}
while ( 1 )
{
EBPtr1 = --v3;
if ( (unsigned __int64)v3 < EndSAr )
break;
if ( (*((_BYTE *)&ChrMsk + (unsigned __int8)*v3) & 0xD0) == 0 )
goto LABEL_26;
}
}
LABEL_13:
EBPtr2 = v3;
return 0;
}
if ( v1 > 0x13u )
{
v3 = (_BYTE *)EBPtr1;
if ( v1 == 24 )
goto LABEL_13;
LABEL_16:
v3 = (_BYTE *)EBPtr1;
if ( SMFlag )
{
if ( EndSAr <= EBPtr1 )
{
while ( *v3 != v1 )
{
EBPtr1 = --v3;
if ( (unsigned __int64)v3 < EndSAr )
goto LABEL_13;
v1 = *SStPtr;
}
goto LABEL_26;
}
}
else
{
v6 = v1 + 32;
if ( *((char *)&ChrMsk + v1) >= 0 )
{
v6 = v1 - 32;
if ( (*((_BYTE *)&ChrMsk + v1) & 0x40) == 0 )
v6 = *SStPtr;
}
if ( EndSAr <= EBPtr1 )
{
while ( 1 )
{
v7 = (unsigned __int8)*v3;
if ( (_BYTE)v7 == v1 || v7 == v6 )
goto LABEL_26;
EBPtr1 = --v3;
if ( (unsigned __int64)v3 < EndSAr )
goto LABEL_13;
v1 = *SStPtr;
}
}
}
goto LABEL_13;
}
if ( v1 != 5 )
{
if ( v1 == 14 )
{
v2 = SStPtr + 1LL;
SStPtr = v2;
if ( v2 == SBfPtr )
{
ErrMsg(15LL);
return (unsigned int)-1;
}
v3 = (_BYTE *)EBPtr1;
if ( EndSAr > EBPtr1 )
goto LABEL_13;
while ( 1 )
{
EBPtr2 = v3;
SStPtr = v2;
if ( (unsigned int)CMatch(v31) == -1 )
return 0xFFFFFFFFLL;
v3 = (_BYTE *)EBPtr1;
if ( v31[0] )
{
v3 = (_BYTE *)(EBPtr1 - 1LL);
EBPtr1 = v3;
if ( (unsigned __int64)v3 >= EndSAr )
continue;
}
goto LABEL_13;
}
}
goto LABEL_16;
}
++SStPtr;
if ( v0 + 1 == SBfPtr )
{
LABEL_52:
ErrMsg(4LL);
return 0xFFFFFFFFLL;
}
v8 = *(unsigned __int8 *)(v0 + 1);
v9 = *(unsigned __int8 *)(v0 + 1);
if ( (*((_BYTE *)&ChrMsk + v8) & 0x40) != 0 )
v9 = v8 - 32;
switch ( v9 )
{
case '<':
v18 = (unsigned __int8 *)(v0 + 2);
SStPtr = v18;
if ( (unsigned __int8 *)SBfPtr == v18 )
goto LABEL_52;
v19 = 0LL;
while ( 1 )
{
v20 = *v18;
if ( (*((_BYTE *)&ChrMsk + (unsigned __int8)v20) & 0x10) == 0 )
break;
v19 = v20 - 48 + 8 * v19;
if ( v19 <= 127 )
{
SStPtr = ++v18;
if ( (unsigned __int8 *)SBfPtr != v18 )
continue;
}
goto LABEL_52;
}
if ( (_BYTE)v20 != 62 )
goto LABEL_52;
v3 = (_BYTE *)EBPtr1;
if ( EndSAr > EBPtr1 )
goto LABEL_13;
while ( *v3 != (_BYTE)v19 )
{
EBPtr1 = --v3;
if ( (unsigned __int64)v3 < EndSAr )
goto LABEL_13;
}
goto LABEL_26;
case 'A':
v3 = (_BYTE *)EBPtr1;
if ( EndSAr > EBPtr1 )
goto LABEL_13;
while ( (*((_BYTE *)&ChrMsk + (unsigned __int8)*v3) & 0xC0) == 0 )
{
EBPtr1 = --v3;
if ( (unsigned __int64)v3 < EndSAr )
goto LABEL_13;
}
goto LABEL_26;
case 'B':
v3 = (_BYTE *)EBPtr1;
if ( EBPtr1 < EndSAr )
goto LABEL_13;
while ( (*((_BYTE *)&ChrMsk + (unsigned __int8)*v3) & 0xD0) != 0 )
{
EBPtr1 = --v3;
if ( (unsigned __int64)v3 < EndSAr )
goto LABEL_13;
}
goto LABEL_26;
case 'C':
v3 = (_BYTE *)EBPtr1;
if ( EndSAr > EBPtr1 )
goto LABEL_13;
while ( 1 )
{
v30 = *((_BYTE *)&ChrMsk + (unsigned __int8)*v3) & 0xD0;
LOBYTE(v30) = v30 != 0;
if ( (unsigned __int8)(*v3 - 36) <= 0x3Bu )
v30 |= (0x800000000000401uLL >> (*v3 - 36)) & 1;
if ( (_BYTE)v30 )
goto LABEL_26;
EBPtr1 = --v3;
if ( (unsigned __int64)v3 < EndSAr )
goto LABEL_13;
}
case 'D':
v3 = (_BYTE *)EBPtr1;
if ( EBPtr1 < EndSAr )
goto LABEL_13;
while ( (*((_BYTE *)&ChrMsk + (unsigned __int8)*v3) & 0x10) == 0 )
{
EBPtr1 = --v3;
if ( (unsigned __int64)v3 < EndSAr )
goto LABEL_13;
}
goto LABEL_26;
case 'G':
v21 = v0 + 2;
SStPtr = v21;
if ( SBfPtr == v21 )
goto LABEL_52;
v22 = CBfPtr;
v23 = CStEnd;
CBfPtr = v21;
CStEnd = SBfPtr;
v24 = FindQR();
v25 = CBfPtr;
CBfPtr = v22;
SStPtr = v25;
v26 = CStEnd;
CStEnd = v23;
SBfPtr = v26;
if ( v24 == -1 )
return 0xFFFFFFFFLL;
v3 = (_BYTE *)EBPtr1;
if ( EndSAr > EBPtr1 )
goto LABEL_13;
v27 = (_BYTE *)*QR;
v28 = *(_QWORD *)(QR + 8LL);
do
{
v29 = v27;
while ( (unsigned __int64)v29 < v28 )
{
if ( *v29++ == *v3 )
goto LABEL_26;
}
EBPtr1 = --v3;
}
while ( (unsigned __int64)v3 >= EndSAr );
goto LABEL_13;
case 'L':
v3 = (_BYTE *)EBPtr1;
if ( EndSAr > EBPtr1 )
goto LABEL_13;
while ( (*((_BYTE *)&ChrMsk + (unsigned __int8)*v3) & 0x20) == 0 )
{
EBPtr1 = --v3;
if ( (unsigned __int64)v3 < EndSAr )
goto LABEL_13;
}
goto LABEL_26;
case 'M':
v15 = v0 + 2;
SStPtr = v15;
if ( SBfPtr == v15 )
goto LABEL_52;
if ( (unsigned int)BakSrc() == -1 )
return 0xFFFFFFFFLL;
v3 = (_BYTE *)EBPtr1;
v16 = EndSAr;
v17 = EBPtr2;
if ( EBPtr1 < EndSAr )
goto LABEL_13;
while ( 2 )
{
if ( (unsigned __int64)v3 <= v16 )
return 0;
SStPtr = v15;
EBPtr1 = v3 - 1;
EBPtr2 = v3 - 1;
if ( (unsigned int)CMatch(v31) == -1 )
return 0xFFFFFFFFLL;
v5 = v31[0];
v3 = (_BYTE *)EBPtr1;
if ( v31[0] )
{
v16 = EndSAr;
continue;
}
break;
}
EBPtr2 = v17;
++EBPtr1;
return v5;
case 'R':
v3 = (_BYTE *)EBPtr1;
if ( EndSAr > EBPtr1 )
goto LABEL_13;
while ( (*((_BYTE *)&ChrMsk + (unsigned __int8)*v3) & 0xD0) == 0 )
{
EBPtr1 = --v3;
if ( (unsigned __int64)v3 < EndSAr )
goto LABEL_13;
}
goto LABEL_26;
case 'S':
v3 = (_BYTE *)EBPtr1;
if ( EndSAr > EBPtr1 )
goto LABEL_13;
while ( *v3 != 32 && *v3 != 9 )
{
EBPtr1 = --v3;
if ( (unsigned __int64)v3 < EndSAr )
goto LABEL_13;
}
EBPtr2 = v3;
for ( i = EBPtr1; EndSAr < i; --i )
{
EBPtr1 = i - 1;
v14 = *(_BYTE *)(i - 1);
if ( v14 != 32 && v14 != 9 )
{
EBPtr1 = i;
return 0;
}
}
return 0;
case 'V':
v3 = (_BYTE *)EBPtr1;
if ( EndSAr > EBPtr1 )
goto LABEL_13;
while ( (*((_BYTE *)&ChrMsk + (unsigned __int8)*v3) & 0x40) == 0 )
{
EBPtr1 = --v3;
if ( (unsigned __int64)v3 < EndSAr )
goto LABEL_13;
}
goto LABEL_26;
case 'W':
v3 = (_BYTE *)EBPtr1;
if ( EBPtr1 < EndSAr )
goto LABEL_13;
while ( *((char *)&ChrMsk + (unsigned __int8)*v3) >= 0 )
{
EBPtr1 = --v3;
if ( (unsigned __int64)v3 < EndSAr )
goto LABEL_13;
}
goto LABEL_26;
case 'X':
goto LABEL_26;
case '[':
SStPtr = v0 + 2;
if ( SBfPtr == v0 + 2 )
goto LABEL_52;
v3 = (_BYTE *)EBPtr1;
if ( EBPtr1 < EndSAr )
goto LABEL_13;
break;
default:
goto LABEL_52;
}
while ( 1 )
{
v10 = *(_BYTE *)(v0 + 2);
v11 = (char *)(v0 + 2);
if ( v10 != 93 )
break;
LABEL_139:
SStPtr = v0 + 2;
v3 = (_BYTE *)--EBPtr1;
if ( EBPtr1 < EndSAr )
goto LABEL_13;
}
while ( 1 )
{
if ( v10 == 44 )
{
SStPtr = ++v11;
if ( v11 == (char *)SBfPtr )
goto LABEL_52;
goto LABEL_47;
}
EBPtr2 = EBPtr1;
if ( (unsigned int)CMatch(v31) == -1 )
return 0xFFFFFFFFLL;
v12 = (_BYTE *)SStPtr;
if ( v31[0] )
break;
v11 = (char *)(SStPtr + 1LL);
SStPtr = v11;
if ( v11 == (char *)SBfPtr )
goto LABEL_52;
LABEL_47:
v10 = *v11;
if ( *v11 == 93 )
goto LABEL_139;
}
while ( *v12 != 93 )
{
SStPtr = ++v12;
if ( v12 == (_BYTE *)SBfPtr )
goto LABEL_52;
}
v5 = 0;
EBPtr2 = EBPtr1;
return v5;
}

canonical_decompiled_code:
__int64 func0()
{
__int64 v0; // rbx
unsigned __int8 v1; // dl
__int64 v2; // rbx
_BYTE *v3; // rax
unsigned int v5; // er8
char v6; // di
int v7; // ecx
__int64 v8; // rsi
int v9; // eax
char v10; // dl
char *v11; // rax
_BYTE *v12; // rax
unsigned __int64 i; // rax
char v14; // si
__int64 v15; // rbx
unsigned __int64 v16; // rdx
__int64 v17; // rbp
unsigned __int8 *v18; // rbx
__int64 v19; // rcx
int v20; // eax
__int64 v21; // rbx
__int64 v22; // r12
__int64 v23; // rbp
int v24; // eax
__int64 v25; // rdx
__int64 v26; // rdx
_BYTE *v27; // rdi
unsigned __int64 v28; // rcx
_BYTE *v29; // rdx
int v30; // edx
int v31[7]; // [rsp+Ch] [rbp-1Ch] BYREF

v0 = SStPtr;
v1 = *SStPtr;
if ( *SStPtr == 19 )
{
v3 = (_BYTE *)EBPtr1;
if ( EndSAr <= EBPtr1 )
{
if ( (*((_BYTE *)&ChrMsk + (unsigned __int8)*EBPtr1) & 0xD0) == 0 )
{
LABEL_26:
v3 = (_BYTE *)EBPtr1;
goto LABEL_13;
}
while ( 1 )
{
EBPtr1 = --v3;
if ( (unsigned __int64)v3 < EndSAr )
break;
if ( (*((_BYTE *)&ChrMsk + (unsigned __int8)*v3) & 0xD0) == 0 )
goto LABEL_26;
}
}
LABEL_13:
EBPtr2 = v3;
return 0;
}
if ( v1 > 0x13u )
{
v3 = (_BYTE *)EBPtr1;
if ( v1 == 24 )
goto LABEL_13;
LABEL_16:
v3 = (_BYTE *)EBPtr1;
if ( SMFlag )
{
if ( EndSAr <= EBPtr1 )
{
while ( *v3 != v1 )
{
EBPtr1 = --v3;
if ( (unsigned __int64)v3 < EndSAr )
goto LABEL_13;
v1 = *SStPtr;
}
goto LABEL_26;
}
}
else
{
v6 = v1 + 32;
if ( *((char *)&ChrMsk + v1) >= 0 )
{
v6 = v1 - 32;
if ( (*((_BYTE *)&ChrMsk + v1) & 0x40) == 0 )
v6 = *SStPtr;
}
if ( EndSAr <= EBPtr1 )
{
while ( 1 )
{
v7 = (unsigned __int8)*v3;
if ( (_BYTE)v7 == v1 || v7 == v6 )
goto LABEL_26;
EBPtr1 = --v3;
if ( (unsigned __int64)v3 < EndSAr )
goto LABEL_13;
v1 = *SStPtr;
}
}
}
goto LABEL_13;
}
if ( v1 != 5 )
{
if ( v1 == 14 )
{
v2 = SStPtr + 1LL;
SStPtr = v2;
if ( v2 == SBfPtr )
{
ErrMsg(15LL);
return (unsigned int)-1;
}
v3 = (_BYTE *)EBPtr1;
if ( EndSAr > EBPtr1 )
goto LABEL_13;
while ( 1 )
{
EBPtr2 = v3;
SStPtr = v2;
if ( (unsigned int)CMatch(v31) == -1 )
return 0xFFFFFFFFLL;
v3 = (_BYTE *)EBPtr1;
if ( v31[0] )
{
v3 = (_BYTE *)(EBPtr1 - 1LL);
EBPtr1 = v3;
if ( (unsigned __int64)v3 >= EndSAr )
continue;
}
goto LABEL_13;
}
}
goto LABEL_16;
}
++SStPtr;
if ( v0 + 1 == SBfPtr )
{
LABEL_52:
ErrMsg(4LL);
return 0xFFFFFFFFLL;
}
v8 = *(unsigned __int8 *)(v0 + 1);
v9 = *(unsigned __int8 *)(v0 + 1);
if ( (*((_BYTE *)&ChrMsk + v8) & 0x40) != 0 )
v9 = v8 - 32;
switch ( v9 )
{
case '<':
v18 = (unsigned __int8 *)(v0 + 2);
SStPtr = v18;
if ( (unsigned __int8 *)SBfPtr == v18 )
goto LABEL_52;
v19 = 0LL;
while ( 1 )
{
v20 = *v18;
if ( (*((_BYTE *)&ChrMsk + (unsigned __int8)v20) & 0x10) == 0 )
break;
v19 = v20 - 48 + 8 * v19;
if ( v19 <= 127 )
{
SStPtr = ++v18;
if ( (unsigned __int8 *)SBfPtr != v18 )
continue;
}
goto LABEL_52;
}
if ( (_BYTE)v20 != 62 )
goto LABEL_52;
v3 = (_BYTE *)EBPtr1;
if ( EndSAr > EBPtr1 )
goto LABEL_13;
while ( *v3 != (_BYTE)v19 )
{
EBPtr1 = --v3;
if ( (unsigned __int64)v3 < EndSAr )
goto LABEL_13;
}
goto LABEL_26;
case 'A':
v3 = (_BYTE *)EBPtr1;
if ( EndSAr > EBPtr1 )
goto LABEL_13;
while ( (*((_BYTE *)&ChrMsk + (unsigned __int8)*v3) & 0xC0) == 0 )
{
EBPtr1 = --v3;
if ( (unsigned __int64)v3 < EndSAr )
goto LABEL_13;
}
goto LABEL_26;
case 'B':
v3 = (_BYTE *)EBPtr1;
if ( EBPtr1 < EndSAr )
goto LABEL_13;
while ( (*((_BYTE *)&ChrMsk + (unsigned __int8)*v3) & 0xD0) != 0 )
{
EBPtr1 = --v3;
if ( (unsigned __int64)v3 < EndSAr )
goto LABEL_13;
}
goto LABEL_26;
case 'C':
v3 = (_BYTE *)EBPtr1;
if ( EndSAr > EBPtr1 )
goto LABEL_13;
while ( 1 )
{
v30 = *((_BYTE *)&ChrMsk + (unsigned __int8)*v3) & 0xD0;
LOBYTE(v30) = v30 != 0;
if ( (unsigned __int8)(*v3 - 36) <= 0x3Bu )
v30 |= (0x800000000000401uLL >> (*v3 - 36)) & 1;
if ( (_BYTE)v30 )
goto LABEL_26;
EBPtr1 = --v3;
if ( (unsigned __int64)v3 < EndSAr )
goto LABEL_13;
}
case 'D':
v3 = (_BYTE *)EBPtr1;
if ( EBPtr1 < EndSAr )
goto LABEL_13;
while ( (*((_BYTE *)&ChrMsk + (unsigned __int8)*v3) & 0x10) == 0 )
{
EBPtr1 = --v3;
if ( (unsigned __int64)v3 < EndSAr )
goto LABEL_13;
}
goto LABEL_26;
case 'G':
v21 = v0 + 2;
SStPtr = v21;
if ( SBfPtr == v21 )
goto LABEL_52;
v22 = CBfPtr;
v23 = CStEnd;
CBfPtr = v21;
CStEnd = SBfPtr;
v24 = FindQR();
v25 = CBfPtr;
CBfPtr = v22;
SStPtr = v25;
v26 = CStEnd;
CStEnd = v23;
SBfPtr = v26;
if ( v24 == -1 )
return 0xFFFFFFFFLL;
v3 = (_BYTE *)EBPtr1;
if ( EndSAr > EBPtr1 )
goto LABEL_13;
v27 = (_BYTE *)*QR;
v28 = *(_QWORD *)(QR + 8LL);
do
{
v29 = v27;
while ( (unsigned __int64)v29 < v28 )
{
if ( *v29++ == *v3 )
goto LABEL_26;
}
EBPtr1 = --v3;
}
while ( (unsigned __int64)v3 >= EndSAr );
goto LABEL_13;
case 'L':
v3 = (_BYTE *)EBPtr1;
if ( EndSAr > EBPtr1 )
goto LABEL_13;
while ( (*((_BYTE *)&ChrMsk + (unsigned __int8)*v3) & 0x20) == 0 )
{
EBPtr1 = --v3;
if ( (unsigned __int64)v3 < EndSAr )
goto LABEL_13;
}
goto LABEL_26;
case 'M':
v15 = v0 + 2;
SStPtr = v15;
if ( SBfPtr == v15 )
goto LABEL_52;
if ( (unsigned int)func0() == -1 )
return 0xFFFFFFFFLL;
v3 = (_BYTE *)EBPtr1;
v16 = EndSAr;
v17 = EBPtr2;
if ( EBPtr1 < EndSAr )
goto LABEL_13;
while ( 2 )
{
if ( (unsigned __int64)v3 <= v16 )
return 0;
SStPtr = v15;
EBPtr1 = v3 - 1;
EBPtr2 = v3 - 1;
if ( (unsigned int)CMatch(v31) == -1 )
return 0xFFFFFFFFLL;
v5 = v31[0];
v3 = (_BYTE *)EBPtr1;
if ( v31[0] )
{
v16 = EndSAr;
continue;
}
break;
}
EBPtr2 = v17;
++EBPtr1;
return v5;
case 'R':
v3 = (_BYTE *)EBPtr1;
if ( EndSAr > EBPtr1 )
goto LABEL_13;
while ( (*((_BYTE *)&ChrMsk + (unsigned __int8)*v3) & 0xD0) == 0 )
{
EBPtr1 = --v3;
if ( (unsigned __int64)v3 < EndSAr )
goto LABEL_13;
}
goto LABEL_26;
case 'S':
v3 = (_BYTE *)EBPtr1;
if ( EndSAr > EBPtr1 )
goto LABEL_13;
while ( *v3 != 32 && *v3 != 9 )
{
EBPtr1 = --v3;
if ( (unsigned __int64)v3 < EndSAr )
goto LABEL_13;
}
EBPtr2 = v3;
for ( i = EBPtr1; EndSAr < i; --i )
{
EBPtr1 = i - 1;
v14 = *(_BYTE *)(i - 1);
if ( v14 != 32 && v14 != 9 )
{
EBPtr1 = i;
return 0;
}
}
return 0;
case 'V':
v3 = (_BYTE *)EBPtr1;
if ( EndSAr > EBPtr1 )
goto LABEL_13;
while ( (*((_BYTE *)&ChrMsk + (unsigned __int8)*v3) & 0x40) == 0 )
{
EBPtr1 = --v3;
if ( (unsigned __int64)v3 < EndSAr )
goto LABEL_13;
}
goto LABEL_26;
case 'W':
v3 = (_BYTE *)EBPtr1;
if ( EBPtr1 < EndSAr )
goto LABEL_13;
while ( *((char *)&ChrMsk + (unsigned __int8)*v3) >= 0 )
{
EBPtr1 = --v3;
if ( (unsigned __int64)v3 < EndSAr )
goto LABEL_13;
}
goto LABEL_26;
case 'X':
goto LABEL_26;
case '[':
SStPtr = v0 + 2;
if ( SBfPtr == v0 + 2 )
goto LABEL_52;
v3 = (_BYTE *)EBPtr1;
if ( EBPtr1 < EndSAr )
goto LABEL_13;
break;
default:
goto LABEL_52;
}
while ( 1 )
{
v10 = *(_BYTE *)(v0 + 2);
v11 = (char *)(v0 + 2);
if ( v10 != 93 )
break;
LABEL_139:
SStPtr = v0 + 2;
v3 = (_BYTE *)--EBPtr1;
if ( EBPtr1 < EndSAr )
goto LABEL_13;
}
while ( 1 )
{
if ( v10 == 44 )
{
SStPtr = ++v11;
if ( v11 == (char *)SBfPtr )
goto LABEL_52;
goto LABEL_47;
}
EBPtr2 = EBPtr1;
if ( (unsigned int)CMatch(v31) == -1 )
return 0xFFFFFFFFLL;
v12 = (_BYTE *)SStPtr;
if ( v31[0] )
break;
v11 = (char *)(SStPtr + 1LL);
SStPtr = v11;
if ( v11 == (char *)SBfPtr )
goto LABEL_52;
LABEL_47:
v10 = *v11;
if ( *v11 == 93 )
goto LABEL_139;
}
while ( *v12 != 93 )
{
SStPtr = ++v12;
if ( v12 == (_BYTE *)SBfPtr )
goto LABEL_52;
}
v5 = 0;
EBPtr2 = EBPtr1;
return v5;
}

original_code:
DEFAULT BakSrc()
{
    unsigned char Charac;
    charptr LstBeg;
    char OtCase;
    charptr QRPtr;
    BOOLEAN SamChr;
    charptr SavEP2;
    charptr SavSSP;
    DEFAULT Status;
    charptr TCBfPt;
    charptr TCStEn;
    LONG TmpLng;
    switch (*SStPtr) {
 case '\030':
         break;
 case '\023':
     for (; EBPtr1 >= EndSAr; --EBPtr1) {
         if (!(ChrMsk[(*EBPtr1)] & ('\200' | '\100' | '\20'))) {
      break;
  }
     }
     break;
 case '\016':
     if (++SStPtr == SBfPtr) {
         ErrMsg(15);
  ;
  return (-1);
     }
     SavSSP = SStPtr;
     for (;EBPtr1>=EndSAr;--EBPtr1) {
         EBPtr2 = EBPtr1;
  SStPtr = SavSSP;
  if (CMatch(&SamChr) == (-1)) {
      ;
      return (-1);
  }
  if (!SamChr) {
      break;
  }
     }
     break;
 case '\005':
     if (++SStPtr == SBfPtr) {
         ErrMsg(4);
  ;
  return (-1);
     }
     switch (((ChrMsk[(*SStPtr)] & '\100') ? (*SStPtr)-' ' : (*SStPtr) )) {
         case 'A':
      for (; EBPtr1 >= EndSAr; --EBPtr1) {
          if ((ChrMsk[(*EBPtr1)] & ('\200' | '\100'))) {
       break;
   }
      }
      break;
  case 'B':
      for (; EBPtr1 >= EndSAr; --EBPtr1) {
          if (!(ChrMsk[(*EBPtr1)] & ('\200' | '\100' | '\20'))) {
       break;
   }
      }
      break;
  case 'C':
      for (; EBPtr1 >= EndSAr; --EBPtr1) {
          if (((ChrMsk[(*EBPtr1)] & ('\200' | '\100' | '\20')) || *EBPtr1 == '.' || *EBPtr1 == '_' || *EBPtr1 == '$')) {
       break;
   }
      }
      break;
  case 'D':
      for (; EBPtr1 >= EndSAr; --EBPtr1) {
          if ((ChrMsk[(*EBPtr1)] & '\20')) {
       break;
   }
      }
      break;
  case 'G':
      if (++SStPtr == SBfPtr) {
          ErrMsg(4);
   ;
   return (-1);
      }
      TCBfPt = CBfPtr;
      TCStEn = CStEnd;
      CBfPtr = SStPtr;
      CStEnd = SBfPtr;
      Status = FindQR();
      SStPtr = CBfPtr;
      SBfPtr = CStEnd;
      CBfPtr = TCBfPt;
      CStEnd = TCStEn;
      if (Status == (-1)) {
          ;
       return (-1);
      }
      for (; EBPtr1 >= EndSAr; --EBPtr1) {
          QRPtr = QR->Start;
   while (QRPtr < QR->End_P1) {
       if (*QRPtr++ == *EBPtr1) {
           goto kludge;
       }
   }
      }
kludge: break;
  case 'L':
      for (; EBPtr1 >= EndSAr; --EBPtr1) {
          if ((ChrMsk[(*EBPtr1)] & '\40')) {
       break;
   }
      }
      break;
  case 'M':
      if (++SStPtr == SBfPtr) {
          ErrMsg(4);
   ;
   return (-1);
      }
      SavSSP = SStPtr;
      if (BakSrc() == (-1)) {
          ;
   return (-1);
      }
      if (EBPtr1 < EndSAr) {
          break;
      }
      SavEP2 = EBPtr2;
      while (EBPtr1 > EndSAr) {
          EBPtr1--;
   EBPtr2 = EBPtr1;
   SStPtr = SavSSP;
   if (CMatch(&SamChr) == (-1)) {
       ;
       return (-1);
   }
   if (!SamChr) {
       EBPtr1++;
       EBPtr2 = SavEP2;
       break;
   }
      }
      ;
      return 0;
  case 'R':
      for (; EBPtr1 >= EndSAr; --EBPtr1) {
          if ((ChrMsk[(*EBPtr1)] & ('\200' | '\100' | '\20'))) {
       break;
   }
      }
      break;
  case 'S':
      for (; EBPtr1 >= EndSAr; --EBPtr1) {
          if ((*EBPtr1 == '\040') || (*EBPtr1 == '\011')) {
       EBPtr2 = EBPtr1;
       while (EBPtr1 > EndSAr) {
           EBPtr1--;
    if ((*EBPtr1 != '\040') &&
        (*EBPtr1 != '\011')) {
        EBPtr1++;
        break;
    }
       }
       ;
       return 0;
   }
      }
      break;
  case 'V':
      for (; EBPtr1 >= EndSAr; --EBPtr1) {
          if ((ChrMsk[(*EBPtr1)] & '\100')) {
       break;
   }
      }
      break;
  case 'W':
      for (; EBPtr1 >= EndSAr; --EBPtr1) {
          if ((ChrMsk[(*EBPtr1)] & '\200')) {
              break;
   }
      }
      break;
  case 'X':
      break;
  case '<':
      if (++SStPtr == SBfPtr) {
          ErrMsg(4);
   ;
   return (-1);
      }
      TmpLng = 0;
      while ((ChrMsk[(*SStPtr)] & '\20')) {
          TmpLng = (TmpLng * 8) + (*SStPtr - '0');
   if (TmpLng > 127) {
       ErrMsg(4);
       ;
       return (-1);
   }
   if (++SStPtr == SBfPtr) {
       ErrMsg(4);
       ;
       return (-1);
   }
      }
      if (*SStPtr != '>') {
          ErrMsg(4);
   ;
   return (-1);
      }
      Charac = (unsigned char)TmpLng;
      for (; EBPtr1 >= EndSAr; --EBPtr1) {
          if (*EBPtr1 == Charac) {
       break;
   }
      }
      break;
  case '[':
      if (++SStPtr == SBfPtr) {
          ErrMsg(4);
   ;
   return (-1);
      }
      LstBeg = SStPtr;
      for (; EBPtr1 >= EndSAr; --EBPtr1) {
   while (*SStPtr != ']') {
              if (*SStPtr == ',') {
           if (++SStPtr == SBfPtr) {
               ErrMsg(4);
        ;
        return (-1);
    }
       } else {
           EBPtr2 = EBPtr1;
    if (CMatch(&SamChr) == (-1)) {
               ;
        return (-1);
    }
    if (SamChr) {
               while (*SStPtr != ']') {
            if (++SStPtr == SBfPtr) {
                ErrMsg(4);
         ;
         return (-1);
     }
        }
        EBPtr2 = EBPtr1;
        ;
        return 0;
    }
    if (++SStPtr == SBfPtr) {
               ErrMsg(4);
        ;
        return (-1);
    }
       }
   }
   SStPtr = LstBeg;
      }
      break;
  default:
      ErrMsg(4);
      ;
      return (-1);
     }
     break;
 default:
     if (SMFlag) {
         for (; EBPtr1 >= EndSAr; --EBPtr1) {
      if (*EBPtr1 == *SStPtr) {
          break;
      }
  }
     } else {
         OtCase = (ChrMsk[(*SStPtr)] & '\200')
               ? ((ChrMsk[(*SStPtr)] & '\200') ? (*SStPtr)+' ' : (*SStPtr) )
        : ((ChrMsk[(*SStPtr)] & '\100') ? (*SStPtr)-' ' : (*SStPtr) );
  for (; EBPtr1 >= EndSAr; --EBPtr1) {
      if ((*EBPtr1 == *SStPtr) || (*EBPtr1 == OtCase)) {
          break;
      }
  }
     }
    }
    EBPtr2 = EBPtr1;
    ;
    return 0;
}

canonical_original_code:
int BakSrc()
{
    unsigned char Charac;
    unsigned char *LstBeg;
    char OtCase;
    unsigned char *QRPtr;
    int SamChr;
    unsigned char *SavEP2;
    unsigned char *SavSSP;
    int Status;
    unsigned char *TCBfPt;
    unsigned char *TCStEn;
    long TmpLng;
    switch (*SStPtr) {
 case '\030':
         break;
 case '\023':
     for (; EBPtr1 >= EndSAr; --EBPtr1) {
         if (!(ChrMsk[(*EBPtr1)] & ('\200' | '\100' | '\20'))) {
      break;
  }
     }
     break;
 case '\016':
     if (++SStPtr == SBfPtr) {
         ErrMsg(15);
  ;
  return (-1);
     }
     SavSSP = SStPtr;
     for (;EBPtr1>=EndSAr;--EBPtr1) {
         EBPtr2 = EBPtr1;
  SStPtr = SavSSP;
  if (CMatch(&SamChr) == (-1)) {
      ;
      return (-1);
  }
  if (!SamChr) {
      break;
  }
     }
     break;
 case '\005':
     if (++SStPtr == SBfPtr) {
         ErrMsg(4);
  ;
  return (-1);
     }
     switch (((ChrMsk[(*SStPtr)] & '\100') ? (*SStPtr)-' ' : (*SStPtr) )) {
         case 'A':
      for (; EBPtr1 >= EndSAr; --EBPtr1) {
          if ((ChrMsk[(*EBPtr1)] & ('\200' | '\100'))) {
       break;
   }
      }
      break;
  case 'B':
      for (; EBPtr1 >= EndSAr; --EBPtr1) {
          if (!(ChrMsk[(*EBPtr1)] & ('\200' | '\100' | '\20'))) {
       break;
   }
      }
      break;
  case 'C':
      for (; EBPtr1 >= EndSAr; --EBPtr1) {
          if (((ChrMsk[(*EBPtr1)] & ('\200' | '\100' | '\20')) || *EBPtr1 == '.' || *EBPtr1 == '_' || *EBPtr1 == '$')) {
       break;
   }
      }
      break;
  case 'D':
      for (; EBPtr1 >= EndSAr; --EBPtr1) {
          if ((ChrMsk[(*EBPtr1)] & '\20')) {
       break;
   }
      }
      break;
  case 'G':
      if (++SStPtr == SBfPtr) {
          ErrMsg(4);
   ;
   return (-1);
      }
      TCBfPt = CBfPtr;
      TCStEn = CStEnd;
      CBfPtr = SStPtr;
      CStEnd = SBfPtr;
      Status = FindQR();
      SStPtr = CBfPtr;
      SBfPtr = CStEnd;
      CBfPtr = TCBfPt;
      CStEnd = TCStEn;
      if (Status == (-1)) {
          ;
       return (-1);
      }
      for (; EBPtr1 >= EndSAr; --EBPtr1) {
          QRPtr = QR->Start;
   while (QRPtr < QR->End_P1) {
       if (*QRPtr++ == *EBPtr1) {
           goto kludge;
       }
   }
      }
kludge: break;
  case 'L':
      for (; EBPtr1 >= EndSAr; --EBPtr1) {
          if ((ChrMsk[(*EBPtr1)] & '\40')) {
       break;
   }
      }
      break;
  case 'M':
      if (++SStPtr == SBfPtr) {
          ErrMsg(4);
   ;
   return (-1);
      }
      SavSSP = SStPtr;
      if (BakSrc() == (-1)) {
          ;
   return (-1);
      }
      if (EBPtr1 < EndSAr) {
          break;
      }
      SavEP2 = EBPtr2;
      while (EBPtr1 > EndSAr) {
          EBPtr1--;
   EBPtr2 = EBPtr1;
   SStPtr = SavSSP;
   if (CMatch(&SamChr) == (-1)) {
       ;
       return (-1);
   }
   if (!SamChr) {
       EBPtr1++;
       EBPtr2 = SavEP2;
       break;
   }
      }
      ;
      return 0;
  case 'R':
      for (; EBPtr1 >= EndSAr; --EBPtr1) {
          if ((ChrMsk[(*EBPtr1)] & ('\200' | '\100' | '\20'))) {
       break;
   }
      }
      break;
  case 'S':
      for (; EBPtr1 >= EndSAr; --EBPtr1) {
          if ((*EBPtr1 == '\040') || (*EBPtr1 == '\011')) {
       EBPtr2 = EBPtr1;
       while (EBPtr1 > EndSAr) {
           EBPtr1--;
    if ((*EBPtr1 != '\040') &&
        (*EBPtr1 != '\011')) {
        EBPtr1++;
        break;
    }
       }
       ;
       return 0;
   }
      }
      break;
  case 'V':
      for (; EBPtr1 >= EndSAr; --EBPtr1) {
          if ((ChrMsk[(*EBPtr1)] & '\100')) {
       break;
   }
      }
      break;
  case 'W':
      for (; EBPtr1 >= EndSAr; --EBPtr1) {
          if ((ChrMsk[(*EBPtr1)] & '\200')) {
              break;
   }
      }
      break;
  case 'X':
      break;
  case '<':
      if (++SStPtr == SBfPtr) {
          ErrMsg(4);
   ;
   return (-1);
      }
      TmpLng = 0;
      while ((ChrMsk[(*SStPtr)] & '\20')) {
          TmpLng = (TmpLng * 8) + (*SStPtr - '0');
   if (TmpLng > 127) {
       ErrMsg(4);
       ;
       return (-1);
   }
   if (++SStPtr == SBfPtr) {
       ErrMsg(4);
       ;
       return (-1);
   }
      }
      if (*SStPtr != '>') {
          ErrMsg(4);
   ;
   return (-1);
      }
      Charac = (unsigned char)TmpLng;
      for (; EBPtr1 >= EndSAr; --EBPtr1) {
          if (*EBPtr1 == Charac) {
       break;
   }
      }
      break;
  case '[':
      if (++SStPtr == SBfPtr) {
          ErrMsg(4);
   ;
   return (-1);
      }
      LstBeg = SStPtr;
      for (; EBPtr1 >= EndSAr; --EBPtr1) {
   while (*SStPtr != ']') {
              if (*SStPtr == ',') {
           if (++SStPtr == SBfPtr) {
               ErrMsg(4);
        ;
        return (-1);
    }
       } else {
           EBPtr2 = EBPtr1;
    if (CMatch(&SamChr) == (-1)) {
               ;
        return (-1);
    }
    if (SamChr) {
               while (*SStPtr != ']') {
            if (++SStPtr == SBfPtr) {
                ErrMsg(4);
         ;
         return (-1);
     }
        }
        EBPtr2 = EBPtr1;
        ;
        return 0;
    }
    if (++SStPtr == SBfPtr) {
               ErrMsg(4);
        ;
        return (-1);
    }
       }
   }
   SStPtr = LstBeg;
      }
      break;
  default:
      ErrMsg(4);
      ;
      return (-1);
     }
     break;
 default:
     if (SMFlag) {
         for (; EBPtr1 >= EndSAr; --EBPtr1) {
      if (*EBPtr1 == *SStPtr) {
          break;
      }
  }
     } else {
         OtCase = (ChrMsk[(*SStPtr)] & '\200')
               ? ((ChrMsk[(*SStPtr)] & '\200') ? (*SStPtr)+' ' : (*SStPtr) )
        : ((ChrMsk[(*SStPtr)] & '\100') ? (*SStPtr)-' ' : (*SStPtr) );
  for (; EBPtr1 >= EndSAr; --EBPtr1) {
      if ((*EBPtr1 == *SStPtr) || (*EBPtr1 == OtCase)) {
          break;
      }
  }
     }
    }
    EBPtr2 = EBPtr1;
    ;
    return 0;
}

variable_types:
Charac
unsigned char

variable_types:
LstBeg
unsigned char *

variable_types: OtCase char

variable_types:
QRPtr
unsigned char *

variable_types: SamChr int

variable_types:
SavSSP
unsigned char *

variable_types: Status int

variable_types:
TCBfPt
unsigned char *

variable_types:
TCStEn
unsigned char *

variable_types: TmpLng long


ExeBar

repo: rmblair/tecoc

decompiled_code:
__int64 ExeBar()
{
__int64 result; // rax

result = FlowEC();
if ( (_DWORD)result != -1 )
{
CmdMod = 0;
EStTop = EStBot;
result = 0LL;
}
return result;
}

canonical_decompiled_code:
__int64 func0()
{
__int64 result; // rax

result = FlowEC();
if ( (_DWORD)result != -1 )
{
CmdMod = 0;
EStTop = EStBot;
result = 0LL;
}
return result;
}

original_code:
DEFAULT ExeBar()
{
 ;
 if (FlowEC() == (-1)) {
  ;
  return (-1);
 }
 CmdMod = '\0';
 EStTop = EStBot;
 ;
 return 0;
}

canonical_original_code:
int ExeBar()
{
 ;
 if (FlowEC() == (-1)) {
  ;
  return (-1);
 }
 CmdMod = '\0';
 EStTop = EStBot;
 ;
 return 0;
}

return_type: int


FindQR

decompiled_code:
__int64 FindQR()
{
__int16 v0; // ax
__int64 v1; // rsi
char v2; // dl
__int16 v3; // ax
char *v4; // rax
__int64 result; // rax
__int16 v6; // ax
char v7; // dl
__int16 v8; // cx
__int16 v9; // ax
bool v10; // zf
__int64 v11; // rdx

v0 = (unsigned __int8)*CBfPtr;
if ( (_BYTE)v0 != 46 )
{
v1 = (unsigned __int8)v0;
v2 = *((_BYTE *)&ChrMsk + (unsigned __int8)v0);
if ( v2 < 0 )
{
v3 = v0 - 55;
LABEL_4:
v4 = (char *)&QRgstr + 24 * v3;
LABEL_5:
QR = v4;
return 0LL;
}
if ( (v2 & 0x40) != 0 )
{
v3 = v0 - 87;
goto LABEL_4;
}
if ( (*((_BYTE *)&ChrMsk + (unsigned __int8)v0) & 0x10) != 0 )
{
v3 = v0 - 48;
goto LABEL_4;
}
LABEL_9:
ErrChr(12LL, v1);
return 0xFFFFFFFFLL;
}
result = IncCBP();
if ( (_DWORD)result != -1 )
{
v6 = (unsigned __int8)*CBfPtr;
v1 = (unsigned __int8)v6;
v7 = *((_BYTE *)&ChrMsk + (unsigned __int8)v6);
if ( v7 < 0 )
{
v8 = v6 - 55;
v9 = MStTop;
v10 = MStTop == 0;
if ( MStTop >= 0 )
goto LABEL_15;
}
else
{
if ( (v7 & 0x40) != 0 )
{
v8 = v6 - 87;
}
else
{
if ( (*((_BYTE *)&ChrMsk + (unsigned __int8)v6) & 0x10) == 0 )
goto LABEL_9;
v8 = v6 - 48;
}
v9 = MStTop;
v10 = MStTop == 0;
if ( MStTop >= 0 )
{
LABEL_15:
if ( v10 )
{
LABEL_23:
v4 = (char *)&QRgstr + 24 * (__int16)(v8 + 36);
}
else
{
while ( 1 )
{
v11 = MStack[5 * v9 + 4];
if ( v11 )
break;
if ( !--v9 )
goto LABEL_23;
}
v4 = (char *)(v11 + 24LL * v8);
}
goto LABEL_5;
}
}
QR = (char *)&QRgstr + 24 * (__int16)(v8 + 36);
result = 0LL;
}
return result;
}

canonical_decompiled_code:
__int64 func0()
{
__int16 v0; // ax
__int64 v1; // rsi
char v2; // dl
__int16 v3; // ax
char *v4; // rax
__int64 result; // rax
__int16 v6; // ax
char v7; // dl
__int16 v8; // cx
__int16 v9; // ax
bool v10; // zf
__int64 v11; // rdx

v0 = (unsigned __int8)*CBfPtr;
if ( (_BYTE)v0 != 46 )
{
v1 = (unsigned __int8)v0;
v2 = *((_BYTE *)&ChrMsk + (unsigned __int8)v0);
if ( v2 < 0 )
{
v3 = v0 - 55;
LABEL_4:
v4 = (char *)&QRgstr + 24 * v3;
LABEL_5:
QR = v4;
return 0LL;
}
if ( (v2 & 0x40) != 0 )
{
v3 = v0 - 87;
goto LABEL_4;
}
if ( (*((_BYTE *)&ChrMsk + (unsigned __int8)v0) & 0x10) != 0 )
{
v3 = v0 - 48;
goto LABEL_4;
}
LABEL_9:
ErrChr(12LL, v1);
return 0xFFFFFFFFLL;
}
result = IncCBP();
if ( (_DWORD)result != -1 )
{
v6 = (unsigned __int8)*CBfPtr;
v1 = (unsigned __int8)v6;
v7 = *((_BYTE *)&ChrMsk + (unsigned __int8)v6);
if ( v7 < 0 )
{
v8 = v6 - 55;
v9 = MStTop;
v10 = MStTop == 0;
if ( MStTop >= 0 )
goto LABEL_15;
}
else
{
if ( (v7 & 0x40) != 0 )
{
v8 = v6 - 87;
}
else
{
if ( (*((_BYTE *)&ChrMsk + (unsigned __int8)v6) & 0x10) == 0 )
goto LABEL_9;
v8 = v6 - 48;
}
v9 = MStTop;
v10 = MStTop == 0;
if ( MStTop >= 0 )
{
LABEL_15:
if ( v10 )
{
LABEL_23:
v4 = (char *)&QRgstr + 24 * (__int16)(v8 + 36);
}
else
{
while ( 1 )
{
v11 = MStack[5 * v9 + 4];
if ( v11 )
break;
if ( !--v9 )
goto LABEL_23;
}
v4 = (char *)(v11 + 24LL * v8);
}
goto LABEL_5;
}
}
QR = (char *)&QRgstr + 24 * (__int16)(v8 + 36);
result = 0LL;
}
return result;
}

original_code:
DEFAULT FindQR()
{
    WORD i;
    BOOLEAN LocalQ;
    WORD QIndex;
    unsigned char QName;
    ;
    LocalQ = (*CBfPtr == '.');
    if (LocalQ) {
        if (IncCBP() == (-1)) {
     ;
     return (-1);
 }
    }
    QName = *CBfPtr;
    if ((ChrMsk[(QName)] & '\200')) {
        i = 'A' - 10;
    } else if ((ChrMsk[(QName)] & '\100')) {
 i = 'a' - 10;
    } else if ((ChrMsk[(QName)] & '\20')) {
 i = '0';
    } else {
        ErrChr(12, QName);
 ;
 return (-1);
    }
    QIndex = QName - i;
    if (LocalQ) {
        if (MStTop < 0) {
     QR = &QRgstr[QIndex+36];
 } else {
     WORD TMIndx;
     QRptr QRp;
     for (TMIndx=MStTop; TMIndx>0; TMIndx--) {
  if (MStack[TMIndx].QRgstr != (void *)0) {
      QRp = MStack[TMIndx].QRgstr;
      break;
  }
     }
     QR = (TMIndx != 0) ?
      &QRp[QIndex]:
      (QRptr) &QRgstr[QIndex+36];
 }
    } else {
        QR = &QRgstr[QIndex];
    }
    return 0;
}

canonical_original_code:
int FindQR()
{
    short i;
    int LocalQ;
    short QIndex;
    unsigned char QName;
    ;
    LocalQ = (*CBfPtr == '.');
    if (LocalQ) {
        if (IncCBP() == (-1)) {
     ;
     return (-1);
 }
    }
    QName = *CBfPtr;
    if ((ChrMsk[(QName)] & '\200')) {
        i = 'A' - 10;
    } else if ((ChrMsk[(QName)] & '\100')) {
 i = 'a' - 10;
    } else if ((ChrMsk[(QName)] & '\20')) {
 i = '0';
    } else {
        ErrChr(12, QName);
 ;
 return (-1);
    }
    QIndex = QName - i;
    if (LocalQ) {
        if (MStTop < 0) {
     QR = &QRgstr[QIndex+36];
 } else {
     short TMIndx;
     struct QReg *QRp;
     for (TMIndx=MStTop; TMIndx>0; TMIndx--) {
  if (MStack[TMIndx].QRgstr != (void *)0) {
      QRp = MStack[TMIndx].QRgstr;
      break;
  }
     }
     QR = (TMIndx != 0) ?
      &QRp[QIndex]:
      (QRptr) &QRgstr[QIndex+36];
 }
    } else {
        QR = &QRgstr[QIndex];
    }
    return 0;
}

variable_types: i short

variable_types: LocalQ int

variable_types: QIndex short

variable_types:
QName
unsigned char

variable_types: TMIndx short

variable_types: struct QReg { unsigned char *Start; unsigned char *End_P1; long Number; } *


GetAra

decompiled_code:
__int64 GetAra()
{
__int64 v0; // rax
__int64 v1; // rdx
__int64 v2; // rcx
unsigned __int64 v3; // rax
unsigned __int64 v4; // rdx
__int64 result; // rax

v0 = MArgmt;
if ( MArgmt < 0 )
{
ErrMsg(26LL);
result = 0xFFFFFFFFLL;
}
else
{
v1 = NArgmt;
if ( NArgmt < 0 )
goto LABEL_12;
if ( MArgmt > NArgmt )
{
v2 = MArgmt;
NArgmt = MArgmt;
v0 = v1;
MArgmt = v1;
v1 = v2;
}
v3 = EBfBeg + v0;
AraBeg = v3;
if ( v3 > GapBeg - 1LL )
{
v3 += GapEnd - GapBeg + 1LL;
AraBeg = v3;
}
v4 = EBfBeg + v1 - 1;
AraEnd = v4;
if ( GapBeg - 1LL < v4 )
AraEnd = v4 + GapEnd - GapBeg + 1;
if ( EBfEnd < v3 || EBfEnd < AraEnd )
{
LABEL_12:
ErrStr(34LL, &ErrTxt);
result = 0xFFFFFFFFLL;
}
else
{
result = 0LL;
}
}
return result;
}

canonical_decompiled_code:
__int64 func0()
{
__int64 v0; // rax
__int64 v1; // rdx
__int64 v2; // rcx
unsigned __int64 v3; // rax
unsigned __int64 v4; // rdx
__int64 result; // rax

v0 = MArgmt;
if ( MArgmt < 0 )
{
ErrMsg(26LL);
result = 0xFFFFFFFFLL;
}
else
{
v1 = NArgmt;
if ( NArgmt < 0 )
goto LABEL_12;
if ( MArgmt > NArgmt )
{
v2 = MArgmt;
NArgmt = MArgmt;
v0 = v1;
MArgmt = v1;
v1 = v2;
}
v3 = EBfBeg + v0;
AraBeg = v3;
if ( v3 > GapBeg - 1LL )
{
v3 += GapEnd - GapBeg + 1LL;
AraBeg = v3;
}
v4 = EBfBeg + v1 - 1;
AraEnd = v4;
if ( GapBeg - 1LL < v4 )
AraEnd = v4 + GapEnd - GapBeg + 1;
if ( EBfEnd < v3 || EBfEnd < AraEnd )
{
LABEL_12:
ErrStr(34LL, &ErrTxt);
result = 0xFFFFFFFFLL;
}
else
{
result = 0LL;
}
}
return result;
}

original_code:
DEFAULT GetAra()
{
 LONG TmpLng;
 if (MArgmt < 0) {
  ErrMsg(26);
  ;
  return (-1);
 }
 if (NArgmt < 0) {
  ErrStr(34, ErrTxt);
  ;
  return (-1);
 }
 if (MArgmt > NArgmt) {
  TmpLng = NArgmt;
  NArgmt = MArgmt;
  MArgmt = TmpLng;
 }
 AraBeg = EBfBeg + MArgmt;
 if (AraBeg > GapBeg-1) {
  AraBeg += (GapEnd-GapBeg) + 1;
 }
 AraEnd = (EBfBeg + NArgmt) - 1;
 if (AraEnd > GapBeg-1) {
  AraEnd += (GapEnd-GapBeg) + 1;
 }
 if ((AraBeg > EBfEnd) ||
     (AraEnd > EBfEnd)) {
  ErrStr(34, ErrTxt);
  ;
  return (-1);
 }
 return 0;
}

canonical_original_code:
int GetAra()
{
 long TmpLng;
 if (MArgmt < 0) {
  ErrMsg(26);
  ;
  return (-1);
 }
 if (NArgmt < 0) {
  ErrStr(34, ErrTxt);
  ;
  return (-1);
 }
 if (MArgmt > NArgmt) {
  TmpLng = NArgmt;
  NArgmt = MArgmt;
  MArgmt = TmpLng;
 }
 AraBeg = EBfBeg + MArgmt;
 if (AraBeg > GapBeg-1) {
  AraBeg += (GapEnd-GapBeg) + 1;
 }
 AraEnd = (EBfBeg + NArgmt) - 1;
 if (AraEnd > GapBeg-1) {
  AraEnd += (GapEnd-GapBeg) + 1;
 }
 if ((AraBeg > EBfEnd) ||
     (AraEnd > EBfEnd)) {
  ErrStr(34, ErrTxt);
  ;
  return (-1);
 }
 return 0;
}


ExeCtC

decompiled_code:
__int64 ExeCtC()
{
if ( CBfPtr < CStEnd && *(_BYTE *)(CBfPtr + 1LL) == 3 )
TAbort(0LL);
CmdMod = 0;
EStTop = EStBot;
return 0xFFFFFFFFLL;
}

canonical_decompiled_code:
__int64 func0()
{
if ( CBfPtr < CStEnd && *(_BYTE *)(CBfPtr + 1LL) == 3 )
TAbort(0LL);
CmdMod = 0;
EStTop = EStBot;
return 0xFFFFFFFFLL;
}

original_code:
DEFAULT ExeCtC()
{
 ;
 if ((CBfPtr < CStEnd) && (*(CBfPtr+1) == '\003')) {
  TAbort(0);
 }
 CmdMod = '\0';
 EStTop = EStBot;
 ;
 return (-1);
}

canonical_original_code:
int ExeCtC()
{
 ;
 if ((CBfPtr < CStEnd) && (*(CBfPtr+1) == '\003')) {
  TAbort(0);
 }
 CmdMod = '\0';
 EStTop = EStBot;
 ;
 return (-1);
}


ExeCtL

decompiled_code:
__int64 ExeCtL()
{
ZDspCh(12LL);
return 0LL;
}

canonical_decompiled_code:
__int64 func0()
{
ZDspCh(12LL);
return 0LL;
}

original_code:
DEFAULT ExeCtL()
{
 ZDspCh('\014');
 return 0;
}

canonical_original_code:
int ExeCtL()
{
 ZDspCh('\014');
 return 0;
}


SinglP

decompiled_code:
__int64 SinglP()
{
__int64 result; // rax

result = WrPage(CurOut, EBfBeg, EBfEnd, FFPage);
if ( (_DWORD)result != -1 )
{
GapBeg = EBfBeg;
GapEnd = EBfEnd;
result = (unsigned int)-((unsigned int)RdPage() == -1);
}
return result;
}

canonical_decompiled_code:
__int64 func0()
{
__int64 result; // rax

result = WrPage(CurOut, EBfBeg, EBfEnd, FFPage);
if ( (_DWORD)result != -1 )
{
GapBeg = EBfBeg;
GapEnd = EBfEnd;
result = (unsigned int)-((unsigned int)RdPage() == -1);
}
return result;
}

original_code:
DEFAULT SinglP()
{
 ;
 if (WrPage(CurOut, EBfBeg, EBfEnd, FFPage) == (-1)) {
  ;
  return (-1);
 }
 GapBeg = EBfBeg;
 GapEnd = EBfEnd;
 if (RdPage() == (-1)) {
  ;
  return (-1);
 }
 ;
 return 0;
}

canonical_original_code:
int SinglP()
{
 ;
 if (WrPage(CurOut, EBfBeg, EBfEnd, FFPage) == (-1)) {
  ;
  return (-1);
 }
 GapBeg = EBfBeg;
 GapEnd = EBfEnd;
 if (RdPage() == (-1)) {
  ;
  return (-1);
 }
 ;
 return 0;
}


ExeEsc

decompiled_code:
__int64 ExeEsc()
{
__int64 result; // rax

if ( *(_BYTE *)(CBfPtr + 1LL) == 27 )
{
if ( TraceM )
ZDspCh(36LL);
CBfPtr = CStEnd;
result = 0LL;
}
else
{
CmdMod = 0;
EStTop = EStBot;
result = 0LL;
}
return result;
}

canonical_decompiled_code:
__int64 func0()
{
__int64 result; // rax

if ( *(_BYTE *)(CBfPtr + 1LL) == 27 )
{
if ( TraceM )
ZDspCh(36LL);
CBfPtr = CStEnd;
result = 0LL;
}
else
{
CmdMod = 0;
EStTop = EStBot;
result = 0LL;
}
return result;
}

original_code:
DEFAULT ExeEsc()
{
 ;
 if (*(CBfPtr+1) == '\033') {
  if (TraceM) {
   ZDspCh('$');
  }
  CBfPtr = CStEnd;
 } else {
  CmdMod = '\0';
  EStTop = EStBot;
 }
 ;
 return 0;
}

canonical_original_code:
int ExeEsc()
{
 ;
 if (*(CBfPtr+1) == '\033') {
  if (TraceM) {
   ZDspCh('$');
  }
  CBfPtr = CStEnd;
 } else {
  CmdMod = '\0';
  EStTop = EStBot;
 }
 ;
 return 0;
}


ExeX

decompiled_code:
__int64 ExeX()
{
char v0; // al
_QWORD *v1; // rax
__int64 v3; // rdi
__int64 v4; // rsi
__int64 v5; // rdi
__int64 v6; // rdx
int v7; // ebx
__int64 v8; // rax

if ( EStTop == EStBot )
{
NArgmt = 1LL;
}
else
{
UMinus();
if ( (unsigned int)GetNmA() == -1 )
return 0xFFFFFFFFLL;
}
if ( (unsigned int)IncCBP() == -1 || (unsigned int)FindQR() == -1 )
return 0xFFFFFFFFLL;
v0 = CmdMod;
if ( (CmdMod & 2) == 0 && *QR )
{
ZFree();
v1 = (_QWORD *)QR;
*(_QWORD *)(QR + 8LL) = 0LL;
*v1 = 0LL;
v0 = CmdMod;
}
if ( (v0 & 8) != 0 )
{
if ( MArgmt == NArgmt )
{
LABEL_10:
CmdMod = 0;
return 0LL;
}
ZCpyBl(&ErrTxt, "m,nX", 5LL);
if ( (unsigned int)GetAra() != -1 )
{
if ( AraBeg >= GapBeg || GapEnd >= AraEnd )
{
v7 = AraEnd - AraBeg + 1;
if ( v7 <= 0 )
goto LABEL_10;
if ( (unsigned int)MakRom((unsigned int)v7) != -1 )
{
ZCpyBl(*(_QWORD *)(QR + 8LL), AraBeg, (unsigned int)v7);
*(_QWORD *)(QR + 8LL) += v7;
goto LABEL_10;
}
}
else
{
v3 = (unsigned int)(GapBeg - AraBeg + AraEnd - GapEnd);
if ( (int)v3 <= 0 )
goto LABEL_10;
if ( (unsigned int)MakRom(v3) != -1 )
{
ZCpyBl(*(_QWORD *)(QR + 8LL), AraBeg, GapBeg - AraBeg);
v4 = GapEnd;
v5 = *(_QWORD *)(QR + 8LL) + GapBeg - AraBeg;
v6 = AraEnd;
*(_QWORD *)(QR + 8LL) = v5;
ZCpyBl(v5, v4 + 1, v6 - v4);
*(_QWORD *)(QR + 8LL) += AraEnd - GapEnd;
goto LABEL_10;
}
}
}
return 0xFFFFFFFFLL;
}
v8 = Ln2Chr(NArgmt);
NArgmt = v8;
if ( v8 <= 0 )
{
if ( !v8 )
goto LABEL_10;
if ( (unsigned int)MakRom((unsigned int)-(int)v8) != -1 )
{
ZCpyBl(*(_QWORD *)(QR + 8LL), GapBeg + NArgmt, (unsigned int)-NArgmt);
*(_QWORD *)(QR + 8LL) -= NArgmt;
goto LABEL_10;
}
return 0xFFFFFFFFLL;
}
if ( (unsigned int)MakRom((unsigned int)v8) == -1 )
return 0xFFFFFFFFLL;
ZCpyBl(*(_QWORD *)(QR + 8LL), GapEnd + 1LL, NArgmt);
CmdMod = 0;
*(_QWORD *)(QR + 8LL) += NArgmt;
return 0LL;
}

canonical_decompiled_code:
__int64 func0()
{
char v0; // al
_QWORD *v1; // rax
__int64 v3; // rdi
__int64 v4; // rsi
__int64 v5; // rdi
__int64 v6; // rdx
int v7; // ebx
__int64 v8; // rax

if ( EStTop == EStBot )
{
NArgmt = 1LL;
}
else
{
UMinus();
if ( (unsigned int)GetNmA() == -1 )
return 0xFFFFFFFFLL;
}
if ( (unsigned int)IncCBP() == -1 || (unsigned int)FindQR() == -1 )
return 0xFFFFFFFFLL;
v0 = CmdMod;
if ( (CmdMod & 2) == 0 && *QR )
{
ZFree();
v1 = (_QWORD *)QR;
*(_QWORD *)(QR + 8LL) = 0LL;
*v1 = 0LL;
v0 = CmdMod;
}
if ( (v0 & 8) != 0 )
{
if ( MArgmt == NArgmt )
{
LABEL_10:
CmdMod = 0;
return 0LL;
}
ZCpyBl(&ErrTxt, "m,nX", 5LL);
if ( (unsigned int)GetAra() != -1 )
{
if ( AraBeg >= GapBeg || GapEnd >= AraEnd )
{
v7 = AraEnd - AraBeg + 1;
if ( v7 <= 0 )
goto LABEL_10;
if ( (unsigned int)MakRom((unsigned int)v7) != -1 )
{
ZCpyBl(*(_QWORD *)(QR + 8LL), AraBeg, (unsigned int)v7);
*(_QWORD *)(QR + 8LL) += v7;
goto LABEL_10;
}
}
else
{
v3 = (unsigned int)(GapBeg - AraBeg + AraEnd - GapEnd);
if ( (int)v3 <= 0 )
goto LABEL_10;
if ( (unsigned int)MakRom(v3) != -1 )
{
ZCpyBl(*(_QWORD *)(QR + 8LL), AraBeg, GapBeg - AraBeg);
v4 = GapEnd;
v5 = *(_QWORD *)(QR + 8LL) + GapBeg - AraBeg;
v6 = AraEnd;
*(_QWORD *)(QR + 8LL) = v5;
ZCpyBl(v5, v4 + 1, v6 - v4);
*(_QWORD *)(QR + 8LL) += AraEnd - GapEnd;
goto LABEL_10;
}
}
}
return 0xFFFFFFFFLL;
}
v8 = Ln2Chr(NArgmt);
NArgmt = v8;
if ( v8 <= 0 )
{
if ( !v8 )
goto LABEL_10;
if ( (unsigned int)MakRom((unsigned int)-(int)v8) != -1 )
{
ZCpyBl(*(_QWORD *)(QR + 8LL), GapBeg + NArgmt, (unsigned int)-NArgmt);
*(_QWORD *)(QR + 8LL) -= NArgmt;
goto LABEL_10;
}
return 0xFFFFFFFFLL;
}
if ( (unsigned int)MakRom((unsigned int)v8) == -1 )
return 0xFFFFFFFFLL;
ZCpyBl(*(_QWORD *)(QR + 8LL), GapEnd + 1LL, NArgmt);
CmdMod = 0;
*(_QWORD *)(QR + 8LL) += NArgmt;
return 0LL;
}

original_code:
DEFAULT ExeX()
{
 int TmpSiz;
 ;
 if (EStTop == EStBot) {
  NArgmt = 1;
 } else {
  UMinus();
  if (GetNmA() == (-1)) {
   ;
   return (-1);
  }
 }
 if (IncCBP() == (-1)) {
  ;
  return (-1);
 }
 if (FindQR() == (-1)) {
  ;
  return (-1);
 }
 if (!(CmdMod & '\2')) {
  if (QR->Start != (void *)0) {
   ZFree((voidptr)QR->Start);
   QR->Start = QR->End_P1 = (void *)0;
  }
 }
 if ((CmdMod & '\10') == '\0') {
  NArgmt = Ln2Chr(NArgmt);
  if (NArgmt > 0) {
   if (MakRom((SIZE_T)NArgmt) == (-1)) {
    ;
    return (-1);
   }
   ZCpyBl((QR->End_P1),(GapEnd+1),((SIZE_T)NArgmt));
   QR->End_P1 += NArgmt;
  } else if (NArgmt < 0) {
   if (MakRom((SIZE_T)-NArgmt) == (-1)) {
    ;
    return (-1);
   }
   ZCpyBl((QR->End_P1),(GapBeg+NArgmt),((SIZE_T)-NArgmt));
   QR->End_P1 -= NArgmt;
  }
 } else if (NArgmt != MArgmt) {
  ZCpyBl((ErrTxt),("m,nX"),(5));
  if (GetAra() == (-1)) {
   ;
   return (-1);
  }
  if ((AraBeg < GapBeg) && (AraEnd > GapEnd)) {
   TmpSiz = (GapBeg-AraBeg) + (AraEnd-GapEnd);
   if (TmpSiz > 0) {
    if (MakRom((SIZE_T)TmpSiz) == (-1)) {
     ;
     return (-1);
    }
    ZCpyBl((QR->End_P1),(AraBeg),((SIZE_T)(GapBeg - AraBeg)));
    QR->End_P1 += GapBeg-AraBeg;
    ZCpyBl((QR->End_P1),(GapEnd+1),((SIZE_T)(AraEnd - GapEnd)));
    QR->End_P1 += AraEnd-GapEnd;
   }
  } else {
   TmpSiz = (AraEnd - AraBeg) + 1;
   if (TmpSiz > 0) {
    if (MakRom((SIZE_T)TmpSiz) == (-1)) {
     ;
     return (-1);
    }
    ZCpyBl((QR->End_P1),(AraBeg),((SIZE_T)TmpSiz));
    QR->End_P1 += TmpSiz;
   }
  }
 }
 CmdMod = '\0';
 ;
 return 0;
}

canonical_original_code:
int ExeX()
{
 int TmpSiz;
 ;
 if (EStTop == EStBot) {
  NArgmt = 1;
 } else {
  UMinus();
  if (GetNmA() == (-1)) {
   ;
   return (-1);
  }
 }
 if (IncCBP() == (-1)) {
  ;
  return (-1);
 }
 if (FindQR() == (-1)) {
  ;
  return (-1);
 }
 if (!(CmdMod & '\2')) {
  if (QR->Start != (void *)0) {
   ZFree((unsigned char *)QR->Start);
   QR->Start = QR->End_P1 = (void *)0;
  }
 }
 if ((CmdMod & '\10') == '\0') {
  NArgmt = Ln2Chr(NArgmt);
  if (NArgmt > 0) {
   if (MakRom((unsigned int)NArgmt) == (-1)) {
    ;
    return (-1);
   }
   ZCpyBl((QR->End_P1),(GapEnd+1),((unsigned int)NArgmt));
   QR->End_P1 += NArgmt;
  } else if (NArgmt < 0) {
   if (MakRom((SIZE_T)-NArgmt) == (-1)) {
    ;
    return (-1);
   }
   ZCpyBl((QR->End_P1),(GapBeg+NArgmt),((SIZE_T)-NArgmt));
   QR->End_P1 -= NArgmt;
  }
 } else if (NArgmt != MArgmt) {
  ZCpyBl((ErrTxt),("m,nX"),(5));
  if (GetAra() == (-1)) {
   ;
   return (-1);
  }
  if ((AraBeg < GapBeg) && (AraEnd > GapEnd)) {
   TmpSiz = (GapBeg-AraBeg) + (AraEnd-GapEnd);
   if (TmpSiz > 0) {
    if (MakRom((unsigned int)TmpSiz) == (-1)) {
     ;
     return (-1);
    }
    ZCpyBl((QR->End_P1),(AraBeg),((SIZE_T)(GapBeg - AraBeg)));
    QR->End_P1 += GapBeg-AraBeg;
    ZCpyBl((QR->End_P1),(GapEnd+1),((SIZE_T)(AraEnd - GapEnd)));
    QR->End_P1 += AraEnd-GapEnd;
   }
  } else {
   TmpSiz = (AraEnd - AraBeg) + 1;
   if (TmpSiz > 0) {
    if (MakRom((unsigned int)TmpSiz) == (-1)) {
     ;
     return (-1);
    }
    ZCpyBl((QR->End_P1),(AraBeg),((unsigned int)TmpSiz));
    QR->End_P1 += TmpSiz;
   }
  }
 }
 CmdMod = '\0';
 ;
 return 0;
}

variable_types: TmpSiz int


ExeA

decompiled_code:
__int64 ExeA()
{
char v0; // bl
char v1; // bl
__int64 v3; // rax
unsigned __int8 *v4; // rax
int v5[3]; // [rsp+Ch] [rbp-Ch] BYREF

v0 = CmdMod;
CmdMod &= 0xFDu;
v1 = v0 & 2;
if ( EStTop > EStBot )
{
UMinus();
if ( (unsigned int)GetNmA() == -1 )
return 0xFFFFFFFFLL;
if ( v1 )
{
if ( NArgmt <= 0 )
{
ErrMsg(10LL);
}
else
{
--NArgmt;
while ( 1 )
{
v5[0] = 0;
if ( (unsigned int)RdLine(v5) == -1 )
break;
if ( v5[0] )
return PushEx(-1LL, 0LL);
if ( *((_DWORD *)&IsEofI + CurInp) )
return PushEx(0LL, 0LL);
v3 = NArgmt--;
if ( v3 <= 0 )
return PushEx(-1LL, 0LL);
}
}
return 0xFFFFFFFFLL;
}
if ( NArgmt < 0 )
{
v4 = (unsigned __int8 *)(GapBeg + NArgmt);
if ( GapBeg + NArgmt >= EBfBeg )
return PushEx(*v4, 0LL);
}
else
{
v4 = (unsigned __int8 *)(GapEnd + NArgmt + 1LL);
if ( (unsigned __int64)v4 <= EBfEnd )
return PushEx(*v4, 0LL);
}
return PushEx(-1LL, 0LL);
}
if ( !*((_DWORD *)&IsEofI + CurInp) )
{
if ( (unsigned int)RdPage() != -1 )
{
if ( !v1 )
return 0LL;
return PushEx(-1LL, 0LL);
}
return 0xFFFFFFFFLL;
}
if ( !v1 )
return 0LL;
return PushEx(0LL, 0LL);
}

canonical_decompiled_code:
__int64 func0()
{
char v0; // bl
char v1; // bl
__int64 v3; // rax
unsigned __int8 *v4; // rax
int v5[3]; // [rsp+Ch] [rbp-Ch] BYREF

v0 = CmdMod;
CmdMod &= 0xFDu;
v1 = v0 & 2;
if ( EStTop > EStBot )
{
UMinus();
if ( (unsigned int)GetNmA() == -1 )
return 0xFFFFFFFFLL;
if ( v1 )
{
if ( NArgmt <= 0 )
{
ErrMsg(10LL);
}
else
{
--NArgmt;
while ( 1 )
{
v5[0] = 0;
if ( (unsigned int)RdLine(v5) == -1 )
break;
if ( v5[0] )
return PushEx(-1LL, 0LL);
if ( *((_DWORD *)&IsEofI + CurInp) )
return PushEx(0LL, 0LL);
v3 = NArgmt--;
if ( v3 <= 0 )
return PushEx(-1LL, 0LL);
}
}
return 0xFFFFFFFFLL;
}
if ( NArgmt < 0 )
{
v4 = (unsigned __int8 *)(GapBeg + NArgmt);
if ( GapBeg + NArgmt >= EBfBeg )
return PushEx(*v4, 0LL);
}
else
{
v4 = (unsigned __int8 *)(GapEnd + NArgmt + 1LL);
if ( (unsigned __int64)v4 <= EBfEnd )
return PushEx(*v4, 0LL);
}
return PushEx(-1LL, 0LL);
}
if ( !*((_DWORD *)&IsEofI + CurInp) )
{
if ( (unsigned int)RdPage() != -1 )
{
if ( !v1 )
return 0LL;
return PushEx(-1LL, 0LL);
}
return 0xFFFFFFFFLL;
}
if ( !v1 )
return 0LL;
return PushEx(0LL, 0LL);
}

original_code:
DEFAULT ExeA()
{
    BOOLEAN EBfFul;
    unsigned char TmpChr;
    BOOLEAN ColonMod;
    ;
    ColonMod = (CmdMod & '\2');
    CmdMod &= ~'\2';
    if (EStTop > EStBot) {
        UMinus();
 if (GetNmA() == (-1)) {
     ;
     return (-1);
 }
 if (ColonMod) {
     if (NArgmt < 1) {
         ErrMsg(10);
  ;
  return (-1);
     }
     while (NArgmt-- > 0) {
         EBfFul = 0;
  if (RdLine(&EBfFul) == (-1)) {
      ;
      return (-1);
  }
  if (EBfFul) {
      break;
  }
  if (IsEofI[CurInp]) {
      ;
      return PushEx(0L, 0);
  }
     }
     ;
     return PushEx(-1L, 0);
 }
 if (NArgmt < 0) {
     if ((GapBeg+NArgmt) < EBfBeg) {
         ;
  return PushEx(-1L, 0);
     }
     TmpChr = *(GapBeg+NArgmt);
 } else {
     if ((GapEnd+NArgmt+1) > EBfEnd) {
         ;
  return PushEx(-1L, 0);
     }
     TmpChr = *(GapEnd+NArgmt+1);
 }
 return PushEx((LONG)TmpChr, 0);
    }
    if (IsEofI[CurInp]) {
        ;
 return ((ColonMod) ? PushEx(0L,0) : 0);
    }
    if (RdPage() == (-1)) {
        ;
 return (-1);
    }
    ;
    return (ColonMod) ? PushEx(-1L, 0) : 0;
}

canonical_original_code:
int ExeA()
{
    int EBfFul;
    unsigned char TmpChr;
    int ColonMod;
    ;
    ColonMod = (CmdMod & '\2');
    CmdMod &= ~'\2';
    if (EStTop > EStBot) {
        UMinus();
 if (GetNmA() == (-1)) {
     ;
     return (-1);
 }
 if (ColonMod) {
     if (NArgmt < 1) {
         ErrMsg(10);
  ;
  return (-1);
     }
     while (NArgmt-- > 0) {
         EBfFul = 0;
  if (RdLine(&EBfFul) == (-1)) {
      ;
      return (-1);
  }
  if (EBfFul) {
      break;
  }
  if (IsEofI[CurInp]) {
      ;
      return PushEx(0L, 0);
  }
     }
     ;
     return PushEx(-1L, 0);
 }
 if (NArgmt < 0) {
     if ((GapBeg+NArgmt) < EBfBeg) {
         ;
  return PushEx(-1L, 0);
     }
     TmpChr = *(GapBeg+NArgmt);
 } else {
     if ((GapEnd+NArgmt+1) > EBfEnd) {
         ;
  return PushEx(-1L, 0);
     }
     TmpChr = *(GapEnd+NArgmt+1);
 }
 return PushEx((long)TmpChr, 0);
    }
    if (IsEofI[CurInp]) {
        ;
 return ((ColonMod) ? PushEx(0L,0) : 0);
    }
    if (RdPage() == (-1)) {
        ;
 return (-1);
    }
    ;
    return (ColonMod) ? PushEx(-1L, 0) : 0;
}

variable_types: EBfFul int

variable_types:
TmpChr
unsigned char

variable_types: ColonMod int


ExeDQu

decompiled_code:
__int64 __fastcall ExeDQu(__int64 a1)
{
unsigned __int64 v1; // rdx
__int64 v2; // rsi
int v3; // eax
__int64 result; // rax
__int64 v5; // rcx

if ( EStTop == EStBot )
{
ErrMsg(23LL);
result = 0xFFFFFFFFLL;
}
else if ( (unsigned int)GetNmA() == -1 || (unsigned int)IncCBP() == -1 )
{
LABEL_8:
result = 0xFFFFFFFFLL;
}
else
{
CmdMod = 0;
v1 = NArgmt;
v2 = (unsigned __int8)*CBfPtr;
v3 = (unsigned __int8)*CBfPtr;
if ( (*((_BYTE *)&ChrMsk + v2) & 0x40) != 0 )
v3 = v2 - 32;
switch ( v3 )
{
case '<':
case 'L':
case 'S':
case 'T':
result = 0LL;
if ( NArgmt >= 0 )
goto LABEL_11;
return result;
case '=':
case 'E':
case 'F':
case 'U':
result = 0LL;
if ( !NArgmt )
return result;
goto LABEL_11;
case '>':
case 'G':
result = 0LL;
if ( NArgmt > 0 )
return result;
goto LABEL_11;
case 'A':
result = 0LL;
v1 = *((_BYTE *)&ChrMsk + NArgmt) & 0xC0;
if ( (*((_BYTE *)&ChrMsk + NArgmt) & 0xC0) != 0 )
return result;
goto LABEL_11;
case 'C':
result = *((_BYTE *)&ChrMsk + NArgmt) & 0xD0;
if ( (*((_BYTE *)&ChrMsk + NArgmt) & 0xD0) != 0 )
{
result = 0LL;
}
else
{
v1 = (unsigned int)(NArgmt - 36);
if ( (unsigned __int8)(NArgmt - 36) > 0x3Bu || (v5 = 0x800000000000401LL, !_bittest64(&v5, v1)) )
{
LABEL_11:
result = FlowEE(a1, v2, v1);
if ( (_DWORD)result != -1 )
{
CmdMod = 0;
result = 0LL;
}
}
}
break;
case 'D':
v1 = NArgmt;
result = 0LL;
if ( (*((_BYTE *)&ChrMsk + NArgmt) & 0x10) != 0 )
return result;
goto LABEL_11;
case 'N':
result = 0LL;
if ( NArgmt )
return result;
goto LABEL_11;
case 'R':
result = 0LL;
v1 = *((_BYTE *)&ChrMsk + NArgmt) & 0xD0;
if ( (*((_BYTE *)&ChrMsk + NArgmt) & 0xD0) != 0 )
return result;
goto LABEL_11;
case 'V':
v1 = NArgmt;
result = 0LL;
if ( (*((_BYTE *)&ChrMsk + NArgmt) & 0x40) != 0 )
return result;
goto LABEL_11;
case 'W':
v1 = NArgmt;
result = 0LL;
if ( *((char *)&ChrMsk + NArgmt) < 0 )
return result;
goto LABEL_11;
default:
ErrMsg(11LL);
goto LABEL_8;
}
}
return result;
}

canonical_decompiled_code:
__int64 __fastcall func0(__int64 a1)
{
unsigned __int64 v1; // rdx
__int64 v2; // rsi
int v3; // eax
__int64 result; // rax
__int64 v5; // rcx

if ( EStTop == EStBot )
{
ErrMsg(23LL);
result = 0xFFFFFFFFLL;
}
else if ( (unsigned int)GetNmA() == -1 || (unsigned int)IncCBP() == -1 )
{
LABEL_8:
result = 0xFFFFFFFFLL;
}
else
{
CmdMod = 0;
v1 = NArgmt;
v2 = (unsigned __int8)*CBfPtr;
v3 = (unsigned __int8)*CBfPtr;
if ( (*((_BYTE *)&ChrMsk + v2) & 0x40) != 0 )
v3 = v2 - 32;
switch ( v3 )
{
case '<':
case 'L':
case 'S':
case 'T':
result = 0LL;
if ( NArgmt >= 0 )
goto LABEL_11;
return result;
case '=':
case 'E':
case 'F':
case 'U':
result = 0LL;
if ( !NArgmt )
return result;
goto LABEL_11;
case '>':
case 'G':
result = 0LL;
if ( NArgmt > 0 )
return result;
goto LABEL_11;
case 'A':
result = 0LL;
v1 = *((_BYTE *)&ChrMsk + NArgmt) & 0xC0;
if ( (*((_BYTE *)&ChrMsk + NArgmt) & 0xC0) != 0 )
return result;
goto LABEL_11;
case 'C':
result = *((_BYTE *)&ChrMsk + NArgmt) & 0xD0;
if ( (*((_BYTE *)&ChrMsk + NArgmt) & 0xD0) != 0 )
{
result = 0LL;
}
else
{
v1 = (unsigned int)(NArgmt - 36);
if ( (unsigned __int8)(NArgmt - 36) > 0x3Bu || (v5 = 0x800000000000401LL, !_bittest64(&v5, v1)) )
{
LABEL_11:
result = FlowEE(a1, v2, v1);
if ( (_DWORD)result != -1 )
{
CmdMod = 0;
result = 0LL;
}
}
}
break;
case 'D':
v1 = NArgmt;
result = 0LL;
if ( (*((_BYTE *)&ChrMsk + NArgmt) & 0x10) != 0 )
return result;
goto LABEL_11;
case 'N':
result = 0LL;
if ( NArgmt )
return result;
goto LABEL_11;
case 'R':
result = 0LL;
v1 = *((_BYTE *)&ChrMsk + NArgmt) & 0xD0;
if ( (*((_BYTE *)&ChrMsk + NArgmt) & 0xD0) != 0 )
return result;
goto LABEL_11;
case 'V':
v1 = NArgmt;
result = 0LL;
if ( (*((_BYTE *)&ChrMsk + NArgmt) & 0x40) != 0 )
return result;
goto LABEL_11;
case 'W':
v1 = NArgmt;
result = 0LL;
if ( *((char *)&ChrMsk + NArgmt) < 0 )
return result;
goto LABEL_11;
default:
ErrMsg(11LL);
goto LABEL_8;
}
}
return result;
}

original_code:
DEFAULT ExeDQu()
{
 unsigned char RelExp;
 ;
 if (EStTop == EStBot) {
  ErrMsg(23);
  ;
  return (-1);
 }
 if (GetNmA() == (-1)) {
  ;
  return (-1);
 }
 if (IncCBP() == (-1)) {
  ;
  return (-1);
 }
 CmdMod = '\0';
 RelExp = (unsigned char)NArgmt;
 switch (((ChrMsk[(*CBfPtr)] & '\100') ? (*CBfPtr)-' ' : (*CBfPtr) )) {
 case 'A':
  if ((ChrMsk[(RelExp)] & ('\200' | '\100'))) {
   ;
   return 0;
  }
  break;
 case 'C':
  if (((ChrMsk[(RelExp)] & ('\200' | '\100' | '\20')) || RelExp == '.' || RelExp == '_' || RelExp == '$')) {
   ;
   return 0;
  }
  break;
 case 'D':
  if ((ChrMsk[(RelExp)] & '\20')) {
   ;
   return 0;
  }
  break;
 case 'E':
 case 'F':
 case 'U':
 case '=':
  if (NArgmt == 0) {
   ;
   return 0;
  }
  break;
 case 'G':
 case '>':
  if (NArgmt > 0) {
   ;
   return 0;
  }
  break;
 case 'L':
 case 'S':
 case 'T':
 case '<':
  if (NArgmt < 0) {
   ;
   return 0;
  }
  break;
 case 'N':
  if (NArgmt != 0) {
   ;
   return 0;
  }
  break;
 case 'R':
  if ((ChrMsk[(RelExp)] & ('\200' | '\100' | '\20'))) {
   ;
   return 0;
  }
  break;
 case 'V':
  if ((ChrMsk[(RelExp)] & '\100')) {
   ;
   return 0;
  }
  break;
 case 'W':
  if ((ChrMsk[(RelExp)] & '\200')) {
   ;
   return 0;
  }
  break;
 default:
  ErrMsg(11);
  ;
  return (-1);
 }
 if (FlowEE() == (-1)) {
  ;
  return (-1);
 }
 CmdMod = '\0';
 ;
 return 0;
}

canonical_original_code:
int ExeDQu()
{
 unsigned char RelExp;
 ;
 if (EStTop == EStBot) {
  ErrMsg(23);
  ;
  return (-1);
 }
 if (GetNmA() == (-1)) {
  ;
  return (-1);
 }
 if (IncCBP() == (-1)) {
  ;
  return (-1);
 }
 CmdMod = '\0';
 RelExp = (unsigned char)NArgmt;
 switch (((ChrMsk[(*CBfPtr)] & '\100') ? (*CBfPtr)-' ' : (*CBfPtr) )) {
 case 'A':
  if ((ChrMsk[(RelExp)] & ('\200' | '\100'))) {
   ;
   return 0;
  }
  break;
 case 'C':
  if (((ChrMsk[(RelExp)] & ('\200' | '\100' | '\20')) || RelExp == '.' || RelExp == '_' || RelExp == '$')) {
   ;
   return 0;
  }
  break;
 case 'D':
  if ((ChrMsk[(RelExp)] & '\20')) {
   ;
   return 0;
  }
  break;
 case 'E':
 case 'F':
 case 'U':
 case '=':
  if (NArgmt == 0) {
   ;
   return 0;
  }
  break;
 case 'G':
 case '>':
  if (NArgmt > 0) {
   ;
   return 0;
  }
  break;
 case 'L':
 case 'S':
 case 'T':
 case '<':
  if (NArgmt < 0) {
   ;
   return 0;
  }
  break;
 case 'N':
  if (NArgmt != 0) {
   ;
   return 0;
  }
  break;
 case 'R':
  if ((ChrMsk[(RelExp)] & ('\200' | '\100' | '\20'))) {
   ;
   return 0;
  }
  break;
 case 'V':
  if ((ChrMsk[(RelExp)] & '\100')) {
   ;
   return 0;
  }
  break;
 case 'W':
  if ((ChrMsk[(RelExp)] & '\200')) {
   ;
   return 0;
  }
  break;
 default:
  ErrMsg(11);
  ;
  return (-1);
 }
 if (FlowEE() == (-1)) {
  ;
  return (-1);
 }
 CmdMod = '\0';
 ;
 return 0;
}

variable_types:
RelExp
unsigned char


ZFrSrc

decompiled_code:
__int64 ZFrSrc()
{
__int64 v0; // rbx
unsigned __int8 v1; // dl
__int64 v2; // rbx
unsigned __int8 *v3; // rax
__int64 result; // rax
char v5; // di
int v6; // ecx
__int64 v7; // rsi
int v8; // eax
char v9; // dl
char *v10; // rax
_BYTE *v11; // rax
unsigned __int8 v12; // si
__int64 v13; // rbx
unsigned __int64 v14; // rdx
__int64 v15; // rbp
unsigned __int8 *v16; // rbx
__int64 v17; // rcx
int v18; // eax
int v19; // edx
__int64 v20; // rbx
__int64 v21; // r12
__int64 v22; // rbp
int v23; // eax
__int64 v24; // rdx
__int64 v25; // rdx
_BYTE *v26; // rdi
unsigned __int64 v27; // rcx
_BYTE *v28; // rdx
int v29[7]; // [rsp+Ch] [rbp-1Ch] BYREF

v0 = SStPtr;
v1 = *SStPtr;
if ( *SStPtr == 19 )
{
v3 = (unsigned __int8 *)EBPtr1;
if ( EndSAr >= EBPtr1 )
{
if ( (*((_BYTE *)&ChrMsk + (unsigned __int8)*EBPtr1) & 0xD0) == 0 )
{
LABEL_25:
v3 = (unsigned __int8 *)EBPtr1;
goto LABEL_13;
}
while ( 1 )
{
EBPtr1 = ++v3;
if ( (unsigned __int64)v3 > EndSAr )
break;
if ( (*((_BYTE *)&ChrMsk + *v3) & 0xD0) == 0 )
goto LABEL_25;
}
}
LABEL_13:
EBPtr2 = v3;
return 0LL;
}
if ( v1 > 0x13u )
{
v3 = (unsigned __int8 *)EBPtr1;
if ( v1 == 24 )
goto LABEL_13;
LABEL_15:
v3 = (unsigned __int8 *)EBPtr1;
if ( SMFlag )
{
if ( EndSAr >= EBPtr1 )
{
while ( *v3 != v1 )
{
EBPtr1 = ++v3;
if ( (unsigned __int64)v3 > EndSAr )
goto LABEL_13;
v1 = *SStPtr;
}
goto LABEL_25;
}
}
else
{
v5 = v1 + 32;
if ( *((char *)&ChrMsk + v1) >= 0 )
{
v5 = v1 - 32;
if ( (*((_BYTE *)&ChrMsk + v1) & 0x40) == 0 )
v5 = *SStPtr;
}
if ( EndSAr >= EBPtr1 )
{
while ( 1 )
{
v6 = *v3;
if ( (_BYTE)v6 == v1 || v6 == v5 )
goto LABEL_25;
EBPtr1 = ++v3;
if ( (unsigned __int64)v3 > EndSAr )
goto LABEL_13;
v1 = *SStPtr;
}
}
}
goto LABEL_13;
}
if ( v1 != 5 )
{
if ( v1 == 14 )
{
v2 = SStPtr + 1LL;
SStPtr = v2;
if ( v2 == SBfPtr )
{
LABEL_52:
ErrMsg(15LL);
return 0xFFFFFFFFLL;
}
v3 = (unsigned __int8 *)EBPtr1;
if ( EndSAr < EBPtr1 )
goto LABEL_13;
while ( 1 )
{
EBPtr2 = v3;
SStPtr = v2;
if ( (unsigned int)CMatch(v29) == -1 )
return 0xFFFFFFFFLL;
v3 = (unsigned __int8 *)EBPtr1;
if ( v29[0] )
{
v3 = (unsigned __int8 *)(EBPtr1 + 1LL);
EBPtr1 = v3;
if ( (unsigned __int64)v3 <= EndSAr )
continue;
}
goto LABEL_13;
}
}
goto LABEL_15;
}
++SStPtr;
if ( v0 + 1 == SBfPtr )
{
LABEL_41:
ErrMsg(4LL);
return 0xFFFFFFFFLL;
}
v7 = *(unsigned __int8 *)(v0 + 1);
v8 = *(unsigned __int8 *)(v0 + 1);
if ( (*((_BYTE *)&ChrMsk + v7) & 0x40) != 0 )
v8 = v7 - 32;
switch ( v8 )
{
case '<':
v16 = (unsigned __int8 *)(v0 + 2);
SStPtr = v16;
if ( (unsigned __int8 *)SBfPtr == v16 )
goto LABEL_41;
v17 = 0LL;
while ( 1 )
{
v18 = *v16;
if ( (*((_BYTE *)&ChrMsk + (unsigned __int8)v18) & 0x10) == 0 )
break;
v17 = v18 - 48 + 8 * v17;
if ( v17 <= 127 )
{
SStPtr = ++v16;
if ( (unsigned __int8 *)SBfPtr != v16 )
continue;
}
goto LABEL_41;
}
if ( (_BYTE)v18 != 62 )
goto LABEL_41;
v3 = (unsigned __int8 *)EBPtr1;
if ( EndSAr < EBPtr1 )
goto LABEL_13;
while ( *v3 != (char)v17 )
{
EBPtr1 = ++v3;
if ( (unsigned __int64)v3 > EndSAr )
goto LABEL_13;
}
goto LABEL_25;
case 'A':
v3 = (unsigned __int8 *)EBPtr1;
if ( EndSAr < EBPtr1 )
goto LABEL_13;
while ( (*((_BYTE *)&ChrMsk + *v3) & 0xC0) == 0 )
{
EBPtr1 = ++v3;
if ( (unsigned __int64)v3 > EndSAr )
goto LABEL_13;
}
goto LABEL_25;
case 'B':
v3 = (unsigned __int8 *)EBPtr1;
if ( EndSAr < EBPtr1 )
goto LABEL_13;
while ( (*((_BYTE *)&ChrMsk + *v3) & 0xD0) != 0 )
{
EBPtr1 = ++v3;
if ( (unsigned __int64)v3 > EndSAr )
goto LABEL_13;
}
goto LABEL_25;
case 'C':
v3 = (unsigned __int8 *)EBPtr1;
if ( EndSAr < EBPtr1 )
goto LABEL_13;
while ( 1 )
{
v19 = *((_BYTE *)&ChrMsk + *v3) & 0xD0;
LOBYTE(v19) = v19 != 0;
if ( (unsigned __int8)(*v3 - 36) <= 0x3Bu )
v19 |= (0x800000000000401uLL >> (*v3 - 36)) & 1;
if ( (_BYTE)v19 )
goto LABEL_25;
EBPtr1 = ++v3;
if ( (unsigned __int64)v3 > EndSAr )
goto LABEL_13;
}
case 'D':
v3 = (unsigned __int8 *)EBPtr1;
if ( EndSAr < EBPtr1 )
goto LABEL_13;
while ( (*((_BYTE *)&ChrMsk + *v3) & 0x10) == 0 )
{
EBPtr1 = ++v3;
if ( (unsigned __int64)v3 > EndSAr )
goto LABEL_13;
}
goto LABEL_25;
case 'G':
v20 = v0 + 2;
SStPtr = v20;
if ( SBfPtr == v20 )
goto LABEL_41;
v21 = CBfPtr;
v22 = CStEnd;
CBfPtr = v20;
CStEnd = SBfPtr;
v23 = FindQR();
v24 = CBfPtr;
CBfPtr = v21;
SStPtr = v24;
v25 = CStEnd;
CStEnd = v22;
SBfPtr = v25;
if ( v23 == -1 )
return 0xFFFFFFFFLL;
v3 = (unsigned __int8 *)EBPtr1;
if ( EndSAr < EBPtr1 )
goto LABEL_13;
v26 = (_BYTE *)*QR;
v27 = *(_QWORD *)(QR + 8LL);
do
{
v28 = v26;
while ( (unsigned __int64)v28 < v27 )
{
if ( *v28++ == *v3 )
goto LABEL_25;
}
EBPtr1 = ++v3;
}
while ( (unsigned __int64)v3 <= EndSAr );
goto LABEL_13;
case 'L':
v3 = (unsigned __int8 *)EBPtr1;
if ( EndSAr < EBPtr1 )
goto LABEL_13;
while ( (*((_BYTE *)&ChrMsk + *v3) & 0x20) == 0 )
{
EBPtr1 = ++v3;
if ( (unsigned __int64)v3 > EndSAr )
goto LABEL_13;
}
goto LABEL_25;
case 'M':
v13 = v0 + 2;
SStPtr = v13;
if ( SBfPtr == v13 )
goto LABEL_41;
if ( (unsigned int)ZFrSrc() == -1 )
return 0xFFFFFFFFLL;
v3 = (unsigned __int8 *)EBPtr1;
v14 = EndSAr;
if ( EBPtr1 > EndSAr )
goto LABEL_13;
while ( 2 )
{
v15 = EBPtr2;
if ( EBPtr2 >= v14 )
return 0LL;
SStPtr = v13;
++EBPtr2;
if ( (unsigned int)CMatch(v29) == -1 )
return 0xFFFFFFFFLL;
result = (unsigned int)v29[0];
if ( v29[0] )
{
v14 = EndSAr;
continue;
}
break;
}
EBPtr2 = v15;
return result;
case 'R':
v3 = (unsigned __int8 *)EBPtr1;
if ( EBPtr1 > EndSAr )
goto LABEL_13;
while ( (*((_BYTE *)&ChrMsk + *v3) & 0xD0) == 0 )
{
EBPtr1 = ++v3;
if ( (unsigned __int64)v3 > EndSAr )
goto LABEL_13;
}
goto LABEL_25;
case 'S':
v3 = (unsigned __int8 *)EBPtr1;
if ( EndSAr < EBPtr1 )
goto LABEL_13;
while ( *v3 != 32 && *v3 != 9 )
{
EBPtr1 = ++v3;
if ( (unsigned __int64)v3 > EndSAr )
goto LABEL_13;
}
EBPtr2 = v3;
while ( EndSAr > (unsigned __int64)v3 )
{
EBPtr2 = v3 + 1;
v12 = v3[1];
if ( v12 != 32 && v12 != 9 )
goto LABEL_13;
++v3;
}
return 0LL;
case 'V':
v3 = (unsigned __int8 *)EBPtr1;
if ( EndSAr < EBPtr1 )
goto LABEL_13;
while ( (*((_BYTE *)&ChrMsk + *v3) & 0x40) == 0 )
{
EBPtr1 = ++v3;
if ( (unsigned __int64)v3 > EndSAr )
goto LABEL_13;
}
goto LABEL_25;
case 'W':
v3 = (unsigned __int8 *)EBPtr1;
if ( EndSAr < EBPtr1 )
goto LABEL_13;
while ( *((char *)&ChrMsk + *v3) >= 0 )
{
EBPtr1 = ++v3;
if ( (unsigned __int64)v3 > EndSAr )
goto LABEL_13;
}
goto LABEL_25;
case 'X':
goto LABEL_25;
case '[':
SStPtr = v0 + 2;
if ( SBfPtr == v0 + 2 )
goto LABEL_41;
v3 = (unsigned __int8 *)EBPtr1;
if ( EndSAr < EBPtr1 )
goto LABEL_13;
break;
default:
goto LABEL_41;
}
while ( 1 )
{
v9 = *(_BYTE *)(v0 + 2);
v10 = (char *)(v0 + 2);
if ( v9 != 93 )
break;
LABEL_138:
SStPtr = v0 + 2;
v3 = (unsigned __int8 *)++EBPtr1;
if ( EBPtr1 > EndSAr )
goto LABEL_13;
}
while ( 1 )
{
if ( v9 == 44 )
{
SStPtr = ++v10;
if ( v10 == (char *)SBfPtr )
goto LABEL_41;
goto LABEL_47;
}
EBPtr2 = EBPtr1;
if ( (unsigned int)CMatch(v29) == -1 )
return 0xFFFFFFFFLL;
v11 = (_BYTE *)SStPtr;
if ( v29[0] )
break;
v10 = (char *)(SStPtr + 1LL);
SStPtr = v10;
if ( v10 == (char *)SBfPtr )
goto LABEL_52;
LABEL_47:
v9 = *v10;
if ( *v10 == 93 )
goto LABEL_138;
}
while ( *v11 != 93 )
{
SStPtr = ++v11;
if ( v11 == (_BYTE *)SBfPtr )
goto LABEL_41;
}
EBPtr2 = EBPtr1;
return 0LL;
}

canonical_decompiled_code:
__int64 func0()
{
__int64 v0; // rbx
unsigned __int8 v1; // dl
__int64 v2; // rbx
unsigned __int8 *v3; // rax
__int64 result; // rax
char v5; // di
int v6; // ecx
__int64 v7; // rsi
int v8; // eax
char v9; // dl
char *v10; // rax
_BYTE *v11; // rax
unsigned __int8 v12; // si
__int64 v13; // rbx
unsigned __int64 v14; // rdx
__int64 v15; // rbp
unsigned __int8 *v16; // rbx
__int64 v17; // rcx
int v18; // eax
int v19; // edx
__int64 v20; // rbx
__int64 v21; // r12
__int64 v22; // rbp
int v23; // eax
__int64 v24; // rdx
__int64 v25; // rdx
_BYTE *v26; // rdi
unsigned __int64 v27; // rcx
_BYTE *v28; // rdx
int v29[7]; // [rsp+Ch] [rbp-1Ch] BYREF

v0 = SStPtr;
v1 = *SStPtr;
if ( *SStPtr == 19 )
{
v3 = (unsigned __int8 *)EBPtr1;
if ( EndSAr >= EBPtr1 )
{
if ( (*((_BYTE *)&ChrMsk + (unsigned __int8)*EBPtr1) & 0xD0) == 0 )
{
LABEL_25:
v3 = (unsigned __int8 *)EBPtr1;
goto LABEL_13;
}
while ( 1 )
{
EBPtr1 = ++v3;
if ( (unsigned __int64)v3 > EndSAr )
break;
if ( (*((_BYTE *)&ChrMsk + *v3) & 0xD0) == 0 )
goto LABEL_25;
}
}
LABEL_13:
EBPtr2 = v3;
return 0LL;
}
if ( v1 > 0x13u )
{
v3 = (unsigned __int8 *)EBPtr1;
if ( v1 == 24 )
goto LABEL_13;
LABEL_15:
v3 = (unsigned __int8 *)EBPtr1;
if ( SMFlag )
{
if ( EndSAr >= EBPtr1 )
{
while ( *v3 != v1 )
{
EBPtr1 = ++v3;
if ( (unsigned __int64)v3 > EndSAr )
goto LABEL_13;
v1 = *SStPtr;
}
goto LABEL_25;
}
}
else
{
v5 = v1 + 32;
if ( *((char *)&ChrMsk + v1) >= 0 )
{
v5 = v1 - 32;
if ( (*((_BYTE *)&ChrMsk + v1) & 0x40) == 0 )
v5 = *SStPtr;
}
if ( EndSAr >= EBPtr1 )
{
while ( 1 )
{
v6 = *v3;
if ( (_BYTE)v6 == v1 || v6 == v5 )
goto LABEL_25;
EBPtr1 = ++v3;
if ( (unsigned __int64)v3 > EndSAr )
goto LABEL_13;
v1 = *SStPtr;
}
}
}
goto LABEL_13;
}
if ( v1 != 5 )
{
if ( v1 == 14 )
{
v2 = SStPtr + 1LL;
SStPtr = v2;
if ( v2 == SBfPtr )
{
LABEL_52:
ErrMsg(15LL);
return 0xFFFFFFFFLL;
}
v3 = (unsigned __int8 *)EBPtr1;
if ( EndSAr < EBPtr1 )
goto LABEL_13;
while ( 1 )
{
EBPtr2 = v3;
SStPtr = v2;
if ( (unsigned int)CMatch(v29) == -1 )
return 0xFFFFFFFFLL;
v3 = (unsigned __int8 *)EBPtr1;
if ( v29[0] )
{
v3 = (unsigned __int8 *)(EBPtr1 + 1LL);
EBPtr1 = v3;
if ( (unsigned __int64)v3 <= EndSAr )
continue;
}
goto LABEL_13;
}
}
goto LABEL_15;
}
++SStPtr;
if ( v0 + 1 == SBfPtr )
{
LABEL_41:
ErrMsg(4LL);
return 0xFFFFFFFFLL;
}
v7 = *(unsigned __int8 *)(v0 + 1);
v8 = *(unsigned __int8 *)(v0 + 1);
if ( (*((_BYTE *)&ChrMsk + v7) & 0x40) != 0 )
v8 = v7 - 32;
switch ( v8 )
{
case '<':
v16 = (unsigned __int8 *)(v0 + 2);
SStPtr = v16;
if ( (unsigned __int8 *)SBfPtr == v16 )
goto LABEL_41;
v17 = 0LL;
while ( 1 )
{
v18 = *v16;
if ( (*((_BYTE *)&ChrMsk + (unsigned __int8)v18) & 0x10) == 0 )
break;
v17 = v18 - 48 + 8 * v17;
if ( v17 <= 127 )
{
SStPtr = ++v16;
if ( (unsigned __int8 *)SBfPtr != v16 )
continue;
}
goto LABEL_41;
}
if ( (_BYTE)v18 != 62 )
goto LABEL_41;
v3 = (unsigned __int8 *)EBPtr1;
if ( EndSAr < EBPtr1 )
goto LABEL_13;
while ( *v3 != (char)v17 )
{
EBPtr1 = ++v3;
if ( (unsigned __int64)v3 > EndSAr )
goto LABEL_13;
}
goto LABEL_25;
case 'A':
v3 = (unsigned __int8 *)EBPtr1;
if ( EndSAr < EBPtr1 )
goto LABEL_13;
while ( (*((_BYTE *)&ChrMsk + *v3) & 0xC0) == 0 )
{
EBPtr1 = ++v3;
if ( (unsigned __int64)v3 > EndSAr )
goto LABEL_13;
}
goto LABEL_25;
case 'B':
v3 = (unsigned __int8 *)EBPtr1;
if ( EndSAr < EBPtr1 )
goto LABEL_13;
while ( (*((_BYTE *)&ChrMsk + *v3) & 0xD0) != 0 )
{
EBPtr1 = ++v3;
if ( (unsigned __int64)v3 > EndSAr )
goto LABEL_13;
}
goto LABEL_25;
case 'C':
v3 = (unsigned __int8 *)EBPtr1;
if ( EndSAr < EBPtr1 )
goto LABEL_13;
while ( 1 )
{
v19 = *((_BYTE *)&ChrMsk + *v3) & 0xD0;
LOBYTE(v19) = v19 != 0;
if ( (unsigned __int8)(*v3 - 36) <= 0x3Bu )
v19 |= (0x800000000000401uLL >> (*v3 - 36)) & 1;
if ( (_BYTE)v19 )
goto LABEL_25;
EBPtr1 = ++v3;
if ( (unsigned __int64)v3 > EndSAr )
goto LABEL_13;
}
case 'D':
v3 = (unsigned __int8 *)EBPtr1;
if ( EndSAr < EBPtr1 )
goto LABEL_13;
while ( (*((_BYTE *)&ChrMsk + *v3) & 0x10) == 0 )
{
EBPtr1 = ++v3;
if ( (unsigned __int64)v3 > EndSAr )
goto LABEL_13;
}
goto LABEL_25;
case 'G':
v20 = v0 + 2;
SStPtr = v20;
if ( SBfPtr == v20 )
goto LABEL_41;
v21 = CBfPtr;
v22 = CStEnd;
CBfPtr = v20;
CStEnd = SBfPtr;
v23 = FindQR();
v24 = CBfPtr;
CBfPtr = v21;
SStPtr = v24;
v25 = CStEnd;
CStEnd = v22;
SBfPtr = v25;
if ( v23 == -1 )
return 0xFFFFFFFFLL;
v3 = (unsigned __int8 *)EBPtr1;
if ( EndSAr < EBPtr1 )
goto LABEL_13;
v26 = (_BYTE *)*QR;
v27 = *(_QWORD *)(QR + 8LL);
do
{
v28 = v26;
while ( (unsigned __int64)v28 < v27 )
{
if ( *v28++ == *v3 )
goto LABEL_25;
}
EBPtr1 = ++v3;
}
while ( (unsigned __int64)v3 <= EndSAr );
goto LABEL_13;
case 'L':
v3 = (unsigned __int8 *)EBPtr1;
if ( EndSAr < EBPtr1 )
goto LABEL_13;
while ( (*((_BYTE *)&ChrMsk + *v3) & 0x20) == 0 )
{
EBPtr1 = ++v3;
if ( (unsigned __int64)v3 > EndSAr )
goto LABEL_13;
}
goto LABEL_25;
case 'M':
v13 = v0 + 2;
SStPtr = v13;
if ( SBfPtr == v13 )
goto LABEL_41;
if ( (unsigned int)func0() == -1 )
return 0xFFFFFFFFLL;
v3 = (unsigned __int8 *)EBPtr1;
v14 = EndSAr;
if ( EBPtr1 > EndSAr )
goto LABEL_13;
while ( 2 )
{
v15 = EBPtr2;
if ( EBPtr2 >= v14 )
return 0LL;
SStPtr = v13;
++EBPtr2;
if ( (unsigned int)CMatch(v29) == -1 )
return 0xFFFFFFFFLL;
result = (unsigned int)v29[0];
if ( v29[0] )
{
v14 = EndSAr;
continue;
}
break;
}
EBPtr2 = v15;
return result;
case 'R':
v3 = (unsigned __int8 *)EBPtr1;
if ( EBPtr1 > EndSAr )
goto LABEL_13;
while ( (*((_BYTE *)&ChrMsk + *v3) & 0xD0) == 0 )
{
EBPtr1 = ++v3;
if ( (unsigned __int64)v3 > EndSAr )
goto LABEL_13;
}
goto LABEL_25;
case 'S':
v3 = (unsigned __int8 *)EBPtr1;
if ( EndSAr < EBPtr1 )
goto LABEL_13;
while ( *v3 != 32 && *v3 != 9 )
{
EBPtr1 = ++v3;
if ( (unsigned __int64)v3 > EndSAr )
goto LABEL_13;
}
EBPtr2 = v3;
while ( EndSAr > (unsigned __int64)v3 )
{
EBPtr2 = v3 + 1;
v12 = v3[1];
if ( v12 != 32 && v12 != 9 )
goto LABEL_13;
++v3;
}
return 0LL;
case 'V':
v3 = (unsigned __int8 *)EBPtr1;
if ( EndSAr < EBPtr1 )
goto LABEL_13;
while ( (*((_BYTE *)&ChrMsk + *v3) & 0x40) == 0 )
{
EBPtr1 = ++v3;
if ( (unsigned __int64)v3 > EndSAr )
goto LABEL_13;
}
goto LABEL_25;
case 'W':
v3 = (unsigned __int8 *)EBPtr1;
if ( EndSAr < EBPtr1 )
goto LABEL_13;
while ( *((char *)&ChrMsk + *v3) >= 0 )
{
EBPtr1 = ++v3;
if ( (unsigned __int64)v3 > EndSAr )
goto LABEL_13;
}
goto LABEL_25;
case 'X':
goto LABEL_25;
case '[':
SStPtr = v0 + 2;
if ( SBfPtr == v0 + 2 )
goto LABEL_41;
v3 = (unsigned __int8 *)EBPtr1;
if ( EndSAr < EBPtr1 )
goto LABEL_13;
break;
default:
goto LABEL_41;
}
while ( 1 )
{
v9 = *(_BYTE *)(v0 + 2);
v10 = (char *)(v0 + 2);
if ( v9 != 93 )
break;
LABEL_138:
SStPtr = v0 + 2;
v3 = (unsigned __int8 *)++EBPtr1;
if ( EBPtr1 > EndSAr )
goto LABEL_13;
}
while ( 1 )
{
if ( v9 == 44 )
{
SStPtr = ++v10;
if ( v10 == (char *)SBfPtr )
goto LABEL_41;
goto LABEL_47;
}
EBPtr2 = EBPtr1;
if ( (unsigned int)CMatch(v29) == -1 )
return 0xFFFFFFFFLL;
v11 = (_BYTE *)SStPtr;
if ( v29[0] )
break;
v10 = (char *)(SStPtr + 1LL);
SStPtr = v10;
if ( v10 == (char *)SBfPtr )
goto LABEL_52;
LABEL_47:
v9 = *v10;
if ( *v10 == 93 )
goto LABEL_138;
}
while ( *v11 != 93 )
{
SStPtr = ++v11;
if ( v11 == (_BYTE *)SBfPtr )
goto LABEL_41;
}
EBPtr2 = EBPtr1;
return 0LL;
}

original_code:
DEFAULT ZFrSrc()
{
 char Charac;
 charptr LstBeg;
 char OtCase;
 charptr QTPtr;
 BOOLEAN SamChr;
 charptr SavEP2;
 charptr SavSSP;
 DEFAULT Status;
 charptr TCBfPt;
 charptr TCStEn;
 LONG TmpLng;
 switch (*SStPtr) {
  case '\030':
   break;
  case '\023':
   for (;EBPtr1<=EndSAr;++EBPtr1)
    if (!(ChrMsk[(*EBPtr1)] & ('\200' | '\100' | '\20')))
     break;
   break;
  case '\016':
   if (++SStPtr == SBfPtr)
    {
    ErrMsg(15);
    ;
    return (-1);
    }
   SavSSP = SStPtr;
   for (;EBPtr1<=EndSAr;++EBPtr1)
    {
    EBPtr2 = EBPtr1;
    SStPtr = SavSSP;
    if (CMatch(&SamChr) == (-1)) {
     ;
     return (-1);
    }
    if (!SamChr)
     break;
    }
   break;
  case '\005':
   if (++SStPtr == SBfPtr)
    {
    ErrMsg(4);
    ;
    return (-1);
    }
   switch (((ChrMsk[(*SStPtr)] & '\100') ? (*SStPtr)-' ' : (*SStPtr) )) {
   case 'A':
    for (;EBPtr1<=EndSAr;++EBPtr1)
     if ((ChrMsk[(*EBPtr1)] & ('\200' | '\100')))
      break;
    break;
   case 'B':
    for (;EBPtr1<=EndSAr;++EBPtr1)
     if (!(ChrMsk[(*EBPtr1)] & ('\200' | '\100' | '\20')))
      break;
    break;
   case 'C':
    for (;EBPtr1<=EndSAr;++EBPtr1)
     if (((ChrMsk[(*EBPtr1)] & ('\200' | '\100' | '\20')) || *EBPtr1 == '.' || *EBPtr1 == '_' || *EBPtr1 == '$'))
      break;
    break;
   case 'D':
    for (;EBPtr1<=EndSAr;++EBPtr1)
     if ((ChrMsk[(*EBPtr1)] & '\20'))
      break;
    break;
   case 'G':
    if (++SStPtr == SBfPtr)
     {
     ErrMsg(4);
     ;
     return (-1);
     }
    TCBfPt = CBfPtr;
    TCStEn = CStEnd;
    CBfPtr = SStPtr;
    CStEnd = SBfPtr;
    Status = FindQR();
    SStPtr = CBfPtr;
    SBfPtr = CStEnd;
    CBfPtr = TCBfPt;
    CStEnd = TCStEn;
    if (Status == (-1)) {
     ;
     return (-1);
    }
    for (;EBPtr1<=EndSAr;++EBPtr1)
     {
     QTPtr = QR->Start;
     while (QTPtr < QR->End_P1)
      if (*QTPtr++ == *EBPtr1)
       goto kludge;
     }
kludge: break;
   case 'L':
    for (;EBPtr1<=EndSAr;++EBPtr1)
     if ((ChrMsk[(*EBPtr1)] & '\40'))
      break;
    break;
   case 'M':
    if (++SStPtr == SBfPtr)
     {
     ErrMsg(4);
     ;
     return (-1);
     }
    SavSSP = SStPtr;
    if (ZFrSrc() == (-1)) {
     ;
     return (-1);
    }
    if (EBPtr1 > EndSAr)
     break;
    while (EBPtr2 < EndSAr)
     {
     SavEP2 = EBPtr2++;
     SStPtr = SavSSP;
     if (CMatch(&SamChr) == (-1)) {
      ;
      return (-1);
     }
     if (!SamChr)
      {
      EBPtr2 = SavEP2;
      break;
      }
     }
    ;
    return 0;
   case 'R':
    for (;EBPtr1<=EndSAr;++EBPtr1)
     if ((ChrMsk[(*EBPtr1)] & ('\200' | '\100' | '\20')))
      break;
    break;
   case 'S':
    for (;EBPtr1<=EndSAr;++EBPtr1)
     if ((*EBPtr1 == '\040') ||
         (*EBPtr1 == '\011'))
      {
      EBPtr2 = EBPtr1;
      while (EBPtr2 < EndSAr)
          {
          ++EBPtr2;
          if ((*EBPtr2 != '\040') &&
       (*EBPtr2 != '\011'))
           {
           EBPtr2--;
           break;
           }
          }
      ;
      return 0;
      }
    break;
   case 'V':
    for (;EBPtr1<=EndSAr;++EBPtr1)
     if ((ChrMsk[(*EBPtr1)] & '\100'))
      break;
    break;
   case 'W':
    for (;EBPtr1<=EndSAr;++EBPtr1)
     if ((ChrMsk[(*EBPtr1)] & '\200'))
      break;
    break;
   case 'X':
    break;
   case '<':
    if (++SStPtr == SBfPtr)
     {
     ErrMsg(4);
     ;
     return (-1);
     }
    TmpLng = 0;
    while ((ChrMsk[(*SStPtr)] & '\20'))
     {
     TmpLng *= 8;
     TmpLng += *SStPtr - '0';
     if (TmpLng > 127)
      {
      ErrMsg(4);
      ;
      return (-1);
      }
     if (++SStPtr == SBfPtr)
      {
      ErrMsg(4);
      ;
      return (-1);
      }
     }
    if (*SStPtr != '>')
     {
     ErrMsg(4);
     ;
     return (-1);
     }
    Charac = (char)TmpLng;
    for (;EBPtr1<=EndSAr;++EBPtr1)
     if (*EBPtr1 == Charac)
      break;
    break;
   case '[':
    if (++SStPtr == SBfPtr)
     {
     ErrMsg(4);
     ;
     return (-1);
     }
    LstBeg = SStPtr;
    for (;EBPtr1<=EndSAr;++EBPtr1)
     {
     while (*SStPtr != ']')
      if (*SStPtr == ',')
       {
       if (++SStPtr == SBfPtr)
        {
        ErrMsg(4);
        ;
        return (-1);
        }
       }
      else
       {
      EBPtr2 = EBPtr1;
      if (CMatch(&SamChr) == (-1)) {
       ;
       return (-1);
      }
      if (SamChr)
       {
       while (*SStPtr != ']')
       if (++SStPtr == SBfPtr)
        {
        ErrMsg(4);
        ;
        return (-1);
        }
       EBPtr2 = EBPtr1;
       ;
       return 0;
       }
      if (++SStPtr == SBfPtr)
       {
       ErrMsg(15);
       ;
       return (-1);
       }
      }
     SStPtr = LstBeg;
     }
    break;
   default:
    ErrMsg(4);
    ;
    return (-1);
   }
   break;
  default:
   if (SMFlag)
    {
    for (;EBPtr1<=EndSAr;++EBPtr1)
     if (*EBPtr1 == *SStPtr)
      break;
    }
   else
    {
    OtCase = ((ChrMsk[(*SStPtr)] & '\200')) ?
      ((ChrMsk[(*SStPtr)] & '\200') ? (*SStPtr)+' ' : (*SStPtr) ) :
      ((ChrMsk[(*SStPtr)] & '\100') ? (*SStPtr)-' ' : (*SStPtr) );
    for (;EBPtr1<=EndSAr;++EBPtr1)
     if ((*EBPtr1 == *SStPtr) ||
         (*EBPtr1 == OtCase))
      break;
    }
 }
 EBPtr2 = EBPtr1;
 return 0;
}

canonical_original_code:
int ZFrSrc()
{
 char Charac;
 unsigned char *LstBeg;
 char OtCase;
 unsigned char *QTPtr;
 int SamChr;
 unsigned char *SavEP2;
 unsigned char *SavSSP;
 int Status;
 unsigned char *TCBfPt;
 unsigned char *TCStEn;
 long TmpLng;
 switch (*SStPtr) {
  case '\030':
   break;
  case '\023':
   for (;EBPtr1<=EndSAr;++EBPtr1)
    if (!(ChrMsk[(*EBPtr1)] & ('\200' | '\100' | '\20')))
     break;
   break;
  case '\016':
   if (++SStPtr == SBfPtr)
    {
    ErrMsg(15);
    ;
    return (-1);
    }
   SavSSP = SStPtr;
   for (;EBPtr1<=EndSAr;++EBPtr1)
    {
    EBPtr2 = EBPtr1;
    SStPtr = SavSSP;
    if (CMatch(&SamChr) == (-1)) {
     ;
     return (-1);
    }
    if (!SamChr)
     break;
    }
   break;
  case '\005':
   if (++SStPtr == SBfPtr)
    {
    ErrMsg(4);
    ;
    return (-1);
    }
   switch (((ChrMsk[(*SStPtr)] & '\100') ? (*SStPtr)-' ' : (*SStPtr) )) {
   case 'A':
    for (;EBPtr1<=EndSAr;++EBPtr1)
     if ((ChrMsk[(*EBPtr1)] & ('\200' | '\100')))
      break;
    break;
   case 'B':
    for (;EBPtr1<=EndSAr;++EBPtr1)
     if (!(ChrMsk[(*EBPtr1)] & ('\200' | '\100' | '\20')))
      break;
    break;
   case 'C':
    for (;EBPtr1<=EndSAr;++EBPtr1)
     if (((ChrMsk[(*EBPtr1)] & ('\200' | '\100' | '\20')) || *EBPtr1 == '.' || *EBPtr1 == '_' || *EBPtr1 == '$'))
      break;
    break;
   case 'D':
    for (;EBPtr1<=EndSAr;++EBPtr1)
     if ((ChrMsk[(*EBPtr1)] & '\20'))
      break;
    break;
   case 'G':
    if (++SStPtr == SBfPtr)
     {
     ErrMsg(4);
     ;
     return (-1);
     }
    TCBfPt = CBfPtr;
    TCStEn = CStEnd;
    CBfPtr = SStPtr;
    CStEnd = SBfPtr;
    Status = FindQR();
    SStPtr = CBfPtr;
    SBfPtr = CStEnd;
    CBfPtr = TCBfPt;
    CStEnd = TCStEn;
    if (Status == (-1)) {
     ;
     return (-1);
    }
    for (;EBPtr1<=EndSAr;++EBPtr1)
     {
     QTPtr = QR->Start;
     while (QTPtr < QR->End_P1)
      if (*QTPtr++ == *EBPtr1)
       goto kludge;
     }
kludge: break;
   case 'L':
    for (;EBPtr1<=EndSAr;++EBPtr1)
     if ((ChrMsk[(*EBPtr1)] & '\40'))
      break;
    break;
   case 'M':
    if (++SStPtr == SBfPtr)
     {
     ErrMsg(4);
     ;
     return (-1);
     }
    SavSSP = SStPtr;
    if (ZFrSrc() == (-1)) {
     ;
     return (-1);
    }
    if (EBPtr1 > EndSAr)
     break;
    while (EBPtr2 < EndSAr)
     {
     SavEP2 = EBPtr2++;
     SStPtr = SavSSP;
     if (CMatch(&SamChr) == (-1)) {
      ;
      return (-1);
     }
     if (!SamChr)
      {
      EBPtr2 = SavEP2;
      break;
      }
     }
    ;
    return 0;
   case 'R':
    for (;EBPtr1<=EndSAr;++EBPtr1)
     if ((ChrMsk[(*EBPtr1)] & ('\200' | '\100' | '\20')))
      break;
    break;
   case 'S':
    for (;EBPtr1<=EndSAr;++EBPtr1)
     if ((*EBPtr1 == '\040') ||
         (*EBPtr1 == '\011'))
      {
      EBPtr2 = EBPtr1;
      while (EBPtr2 < EndSAr)
          {
          ++EBPtr2;
          if ((*EBPtr2 != '\040') &&
       (*EBPtr2 != '\011'))
           {
           EBPtr2--;
           break;
           }
          }
      ;
      return 0;
      }
    break;
   case 'V':
    for (;EBPtr1<=EndSAr;++EBPtr1)
     if ((ChrMsk[(*EBPtr1)] & '\100'))
      break;
    break;
   case 'W':
    for (;EBPtr1<=EndSAr;++EBPtr1)
     if ((ChrMsk[(*EBPtr1)] & '\200'))
      break;
    break;
   case 'X':
    break;
   case '<':
    if (++SStPtr == SBfPtr)
     {
     ErrMsg(4);
     ;
     return (-1);
     }
    TmpLng = 0;
    while ((ChrMsk[(*SStPtr)] & '\20'))
     {
     TmpLng *= 8;
     TmpLng += *SStPtr - '0';
     if (TmpLng > 127)
      {
      ErrMsg(4);
      ;
      return (-1);
      }
     if (++SStPtr == SBfPtr)
      {
      ErrMsg(4);
      ;
      return (-1);
      }
     }
    if (*SStPtr != '>')
     {
     ErrMsg(4);
     ;
     return (-1);
     }
    Charac = (char)TmpLng;
    for (;EBPtr1<=EndSAr;++EBPtr1)
     if (*EBPtr1 == Charac)
      break;
    break;
   case '[':
    if (++SStPtr == SBfPtr)
     {
     ErrMsg(4);
     ;
     return (-1);
     }
    LstBeg = SStPtr;
    for (;EBPtr1<=EndSAr;++EBPtr1)
     {
     while (*SStPtr != ']')
      if (*SStPtr == ',')
       {
       if (++SStPtr == SBfPtr)
        {
        ErrMsg(4);
        ;
        return (-1);
        }
       }
      else
       {
      EBPtr2 = EBPtr1;
      if (CMatch(&SamChr) == (-1)) {
       ;
       return (-1);
      }
      if (SamChr)
       {
       while (*SStPtr != ']')
       if (++SStPtr == SBfPtr)
        {
        ErrMsg(4);
        ;
        return (-1);
        }
       EBPtr2 = EBPtr1;
       ;
       return 0;
       }
      if (++SStPtr == SBfPtr)
       {
       ErrMsg(15);
       ;
       return (-1);
       }
      }
     SStPtr = LstBeg;
     }
    break;
   default:
    ErrMsg(4);
    ;
    return (-1);
   }
   break;
  default:
   if (SMFlag)
    {
    for (;EBPtr1<=EndSAr;++EBPtr1)
     if (*EBPtr1 == *SStPtr)
      break;
    }
   else
    {
    OtCase = ((ChrMsk[(*SStPtr)] & '\200')) ?
      ((ChrMsk[(*SStPtr)] & '\200') ? (*SStPtr)+' ' : (*SStPtr) ) :
      ((ChrMsk[(*SStPtr)] & '\100') ? (*SStPtr)-' ' : (*SStPtr) );
    for (;EBPtr1<=EndSAr;++EBPtr1)
     if ((*EBPtr1 == *SStPtr) ||
         (*EBPtr1 == OtCase))
      break;
    }
 }
 EBPtr2 = EBPtr1;
 return 0;
}

variable_types: Charac char

variable_types:
LstBeg
unsigned char *

variable_types: OtCase char

variable_types:
QTPtr
unsigned char *

variable_types: SamChr int


MemIni

decompiled_code:
char *MemIni()
{
__int64 v0; // rbp
__int64 v1; // rax
__int64 v2; // rax
__int64 v3; // rax
__int64 v4; // rax
char *v5; // rax
char *result; // rax

v0 = ZAlloc(4096LL);
DBfPtr = ZAlloc(24LL);
DBfBeg = DBfPtr;
if ( !DBfPtr )
{
ErrMsg(18LL);
TAbort(1LL);
}
v1 = ZAlloc(64LL);
FBfPtr = v1;
FBfBeg = v1;
if ( !v1 )
{
ErrMsg(18LL);
TAbort(1LL);
v1 = FBfBeg;
}
FBfEnd = v1 + 63;
v2 = ZAlloc(20000LL);
CBfBeg = v2;
if ( !v2 )
{
ErrMsg(18LL);
TAbort(1LL);
v2 = CBfBeg;
}
CBfEnd = v2 + 19999;
v3 = ZAlloc(1000LL);
SBfPtr = v3;
SBfBeg = v3;
if ( !v3 )
{
ErrMsg(18LL);
TAbort(1LL);
v3 = SBfBeg;
}
SBfEnd = v3 + 999;
v4 = ZAlloc(128000LL);
GapBeg = v4;
EBfBeg = v4;
if ( !v4 )
{
ErrMsg(18LL);
TAbort(1LL);
v4 = EBfBeg;
}
GapEnd = v4 + 63999;
EBfEnd = v4 + 63999;
IBfEnd = v4 + 127999;
v5 = (char *)&QRgstr;
do
{
*((_QWORD *)v5 + 1) = 0LL;
v5 += 24;
*((_QWORD *)v5 - 3) = 0LL;
*((_QWORD *)v5 - 1) = 0LL;
}
while ( v5 != (char *)&QRgstr + 1728 );
result = (char *)&QStack;
do
{
*((_QWORD *)result + 1) = 0LL;
result += 24;
*((_QWORD *)result - 3) = 0LL;
*((_QWORD *)result - 1) = 0LL;
}
while ( result != (char *)&QStack + 768 );
IsOpnO = 0LL;
*((_DWORD *)&IsOpnO + 2) = 0;
IsEofI[0] = 0LL;
IsEofI[1] = 0LL;
IsOpnI[0] = 0LL;
IsOpnI[1] = 0LL;
if ( v0 )
result = (char *)ZFree(v0);
return result;
}

canonical_decompiled_code:
char *func0()
{
__int64 v0; // rbp
__int64 v1; // rax
__int64 v2; // rax
__int64 v3; // rax
__int64 v4; // rax
char *v5; // rax
char *result; // rax

v0 = ZAlloc(4096LL);
DBfPtr = ZAlloc(24LL);
DBfBeg = DBfPtr;
if ( !DBfPtr )
{
ErrMsg(18LL);
TAbort(1LL);
}
v1 = ZAlloc(64LL);
FBfPtr = v1;
FBfBeg = v1;
if ( !v1 )
{
ErrMsg(18LL);
TAbort(1LL);
v1 = FBfBeg;
}
FBfEnd = v1 + 63;
v2 = ZAlloc(20000LL);
CBfBeg = v2;
if ( !v2 )
{
ErrMsg(18LL);
TAbort(1LL);
v2 = CBfBeg;
}
CBfEnd = v2 + 19999;
v3 = ZAlloc(1000LL);
SBfPtr = v3;
SBfBeg = v3;
if ( !v3 )
{
ErrMsg(18LL);
TAbort(1LL);
v3 = SBfBeg;
}
SBfEnd = v3 + 999;
v4 = ZAlloc(128000LL);
GapBeg = v4;
EBfBeg = v4;
if ( !v4 )
{
ErrMsg(18LL);
TAbort(1LL);
v4 = EBfBeg;
}
GapEnd = v4 + 63999;
EBfEnd = v4 + 63999;
IBfEnd = v4 + 127999;
v5 = (char *)&QRgstr;
do
{
*((_QWORD *)v5 + 1) = 0LL;
v5 += 24;
*((_QWORD *)v5 - 3) = 0LL;
*((_QWORD *)v5 - 1) = 0LL;
}
while ( v5 != (char *)&QRgstr + 1728 );
result = (char *)&QStack;
do
{
*((_QWORD *)result + 1) = 0LL;
result += 24;
*((_QWORD *)result - 3) = 0LL;
*((_QWORD *)result - 1) = 0LL;
}
while ( result != (char *)&QStack + 768 );
IsOpnO = 0LL;
*((_DWORD *)&IsOpnO + 2) = 0;
IsEofI[0] = 0LL;
IsEofI[1] = 0LL;
IsOpnI[0] = 0LL;
IsOpnI[1] = 0LL;
if ( v0 )
result = (char *)ZFree(v0);
return result;
}

original_code:
static void MemIni()
{
 WORD i;
 QRptr QRp;
 charptr TmpMem;
 ;
 TmpMem = (charptr)ZAlloc((SIZE_T)(4*1024));
 DBfBeg = DBfPtr = (charptr)ZAlloc((((sizeof(LONG)*8)+2)/3)+2);
 if (DBfBeg == (void *)0) {
  ErrMsg(18);
  TAbort(1);
 }
 FBfBeg = FBfPtr = (charptr)ZAlloc((SIZE_T)64);
 if (FBfBeg == (void *)0) {
  ErrMsg(18);
  TAbort(1);
 }
 FBfEnd = FBfBeg + 64 - 1;
 CBfBeg = (charptr)ZAlloc((SIZE_T)20000);
 if (CBfBeg == (void *)0) {
  ErrMsg(18);
  TAbort(1);
 }
 CBfEnd = CBfBeg + 20000 - 1;
 SBfBeg = SBfPtr = (charptr)ZAlloc((SIZE_T)1000);
 if (SBfBeg == (void *)0) {
  ErrMsg(18);
  TAbort(1);
 }
 SBfEnd = SBfBeg + 1000 - 1;
 EBfBeg = GapBeg = (charptr)ZAlloc((SIZE_T)64000L + (SIZE_T)64000L);
 if (EBfBeg == (void *)0) {
  ErrMsg(18);
  TAbort(1);
 }
 EBfEnd = GapEnd = EBfBeg + 64000L - 1;
 IBfEnd = EBfEnd + 64000L;
 for (QRp = QRgstr, i = 0; i < 72; ++i, ++QRp) {
  QRp->Start = QRp->End_P1 = (void *)0;
  QRp->Number = 0;
 }
 for (QRp = QStack, i = 0; i < 32; ++i, ++QRp) {
  QRp->Start = QRp->End_P1 = (void *)0;
  QRp->Number = 0;
 }
 for (i = 0; i < 8; i++) {
  IsOpnI[i] = IsEofI[i] = 0;
 }
 for (i = 0; i < 3; i++) {
  IsOpnO[i] = 0;
 }
 if (TmpMem) {
  ZFree (TmpMem);
 }
 ;
}

canonical_original_code:
static void MemIni()
{
 short i;
 struct QReg *QRp;
 unsigned char *TmpMem;
 ;
 TmpMem = (unsigned char *)ZAlloc((SIZE_T)(4*1024));
 DBfBeg = DBfPtr = (unsigned char *)ZAlloc((((sizeof(LONG)*8)+2)/3)+2);
 if (DBfBeg == (void *)0) {
  ErrMsg(18);
  TAbort(1);
 }
 FBfBeg = FBfPtr = (unsigned char *)ZAlloc((unsigned int)64);
 if (FBfBeg == (void *)0) {
  ErrMsg(18);
  TAbort(1);
 }
 FBfEnd = FBfBeg + 64 - 1;
 CBfBeg = (unsigned char *)ZAlloc((unsigned int)20000);
 if (CBfBeg == (void *)0) {
  ErrMsg(18);
  TAbort(1);
 }
 CBfEnd = CBfBeg + 20000 - 1;
 SBfBeg = SBfPtr = (unsigned char *)ZAlloc((unsigned int)1000);
 if (SBfBeg == (void *)0) {
  ErrMsg(18);
  TAbort(1);
 }
 SBfEnd = SBfBeg + 1000 - 1;
 EBfBeg = GapBeg = (unsigned char *)ZAlloc((unsigned int)64000L + (unsigned int)64000L);
 if (EBfBeg == (void *)0) {
  ErrMsg(18);
  TAbort(1);
 }
 EBfEnd = GapEnd = EBfBeg + 64000L - 1;
 IBfEnd = EBfEnd + 64000L;
 for (QRp = QRgstr, i = 0; i < 72; ++i, ++QRp) {
  QRp->Start = QRp->End_P1 = (void *)0;
  QRp->Number = 0;
 }
 for (QRp = QStack, i = 0; i < 32; ++i, ++QRp) {
  QRp->Start = QRp->End_P1 = (void *)0;
  QRp->Number = 0;
 }
 for (i = 0; i < 8; i++) {
  IsOpnI[i] = IsEofI[i] = 0;
 }
 for (i = 0; i < 3; i++) {
  IsOpnO[i] = 0;
 }
 if (TmpMem) {
  ZFree (TmpMem);
 }
 ;
}

variable_types:
TmpMem
unsigned char *

return_type: void

user_defined_types: struct QReg { unsigned char *Start; unsigned char *End_P1; long Number; }


ExeP

decompiled_code:
__int64 ExeP()
{
int v0; // ebx
__int64 v1; // rax
__int64 result; // rax

v0 = *((_DWORD *)&IsEofI + CurInp);
if ( EStTop == EStBot )
{
NArgmt = 1LL;
}
else
{
if ( (unsigned int)GetNmA() == -1 )
return 0xFFFFFFFFLL;
if ( NArgmt <= 0 )
{
if ( (CmdMod & 8) == 0 )
{
ErrMsg(10LL);
return 0xFFFFFFFFLL;
}
v1 = CBfPtr;
if ( CBfPtr == CStEnd || (*(_BYTE *)(CBfPtr + 1LL) & 0xDF) != 87 )
return ExePW();
goto LABEL_19;
}
}
v1 = CBfPtr;
if ( CBfPtr == CStEnd || (*(_BYTE *)(CBfPtr + 1LL) & 0xDF) != 87 )
{
if ( (CmdMod & 8) != 0 )
return ExePW();
while ( (unsigned int)SinglP() != -1 )
{
--NArgmt;
if ( NArgmt <= 0 || *((_DWORD *)&IsEofI + CurInp) )
{
if ( (CmdMod & 2) != 0 )
return PushEx(-(__int64)(v0 == 0), 0LL);
result = 0LL;
CmdMod = 0;
return result;
}
}
return 0xFFFFFFFFLL;
}
LABEL_19:
CBfPtr = v1 + 1;
return ExePW();
}

canonical_decompiled_code:
__int64 func0()
{
int v0; // ebx
__int64 v1; // rax
__int64 result; // rax

v0 = *((_DWORD *)&IsEofI + CurInp);
if ( EStTop == EStBot )
{
NArgmt = 1LL;
}
else
{
if ( (unsigned int)GetNmA() == -1 )
return 0xFFFFFFFFLL;
if ( NArgmt <= 0 )
{
if ( (CmdMod & 8) == 0 )
{
ErrMsg(10LL);
return 0xFFFFFFFFLL;
}
v1 = CBfPtr;
if ( CBfPtr == CStEnd || (*(_BYTE *)(CBfPtr + 1LL) & 0xDF) != 87 )
return ExePW();
goto LABEL_19;
}
}
v1 = CBfPtr;
if ( CBfPtr == CStEnd || (*(_BYTE *)(CBfPtr + 1LL) & 0xDF) != 87 )
{
if ( (CmdMod & 8) != 0 )
return ExePW();
while ( (unsigned int)SinglP() != -1 )
{
--NArgmt;
if ( NArgmt <= 0 || *((_DWORD *)&IsEofI + CurInp) )
{
if ( (CmdMod & 2) != 0 )
return PushEx(-(__int64)(v0 == 0), 0LL);
result = 0LL;
CmdMod = 0;
return result;
}
}
return 0xFFFFFFFFLL;
}
LABEL_19:
CBfPtr = v1 + 1;
return ExePW();
}

original_code:
DEFAULT ExeP()
{
 BOOLEAN SavEof;
 ;
 SavEof = IsEofI[CurInp];
 if (EStTop == EStBot) {
  NArgmt = 1;
 } else {
  if (GetNmA() == (-1)) {
   ;
   return (-1);
  }
  if ((NArgmt <= 0) && ((CmdMod & '\10') == 0)) {
   ErrMsg(10);
   ;
   return (-1);
  }
 }
 if ((CBfPtr != CStEnd) &&
     ((*(CBfPtr+1) == 'W') || (*(CBfPtr+1) == 'w'))) {
  ++CBfPtr;
  ;
  return ExePW();
 }
 if (CmdMod & '\10') {
  ;
  return ExePW();
 }
 do {
  if (SinglP() == (-1)) {
   ;
   return (-1);
  }
 } while ((--NArgmt > 0) && !IsEofI[CurInp]);
 if (CmdMod & '\2') {
  ;
  return PushEx(SavEof ? 0L : -1L, 0);
 }
 CmdMod = '\0';
 ;
 return 0;
}

canonical_original_code:
int ExeP()
{
 int SavEof;
 ;
 SavEof = IsEofI[CurInp];
 if (EStTop == EStBot) {
  NArgmt = 1;
 } else {
  if (GetNmA() == (-1)) {
   ;
   return (-1);
  }
  if ((NArgmt <= 0) && ((CmdMod & '\10') == 0)) {
   ErrMsg(10);
   ;
   return (-1);
  }
 }
 if ((CBfPtr != CStEnd) &&
     ((*(CBfPtr+1) == 'W') || (*(CBfPtr+1) == 'w'))) {
  ++CBfPtr;
  ;
  return ExePW();
 }
 if (CmdMod & '\10') {
  ;
  return ExePW();
 }
 do {
  if (SinglP() == (-1)) {
   ;
   return (-1);
  }
 } while ((--NArgmt > 0) && !IsEofI[CurInp]);
 if (CmdMod & '\2') {
  ;
  return PushEx(SavEof ? 0L : -1L, 0);
 }
 CmdMod = '\0';
 ;
 return 0;
}

variable_types: SavEof int


ExeCom

decompiled_code:
__int64 ExeCom()
{
__int64 result; // rax

if ( EStTop == EStBot )
{
ErrMsg(20LL);
result = 0xFFFFFFFFLL;
}
else
{
result = GetNmA();
if ( (_DWORD)result != -1 )
{
CmdMod |= 8u;
MArgmt = NArgmt;
result = 0LL;
}
}
return result;
}

canonical_decompiled_code:
__int64 func0()
{
__int64 result; // rax

if ( EStTop == EStBot )
{
ErrMsg(20LL);
result = 0xFFFFFFFFLL;
}
else
{
result = GetNmA();
if ( (_DWORD)result != -1 )
{
CmdMod |= 8u;
MArgmt = NArgmt;
result = 0LL;
}
}
return result;
}

original_code:
DEFAULT ExeCom()
{
 ;
 if (EStTop == EStBot) {
  ErrMsg(20);
  ;
  return (-1);
 }
 if (GetNmA() == (-1)) {
  ;
  return (-1);
 }
 MArgmt = NArgmt;
 CmdMod |= '\10';
 ;
 return 0;
}

canonical_original_code:
int ExeCom()
{
 ;
 if (EStTop == EStBot) {
  ErrMsg(20);
  ;
  return (-1);
 }
 if (GetNmA() == (-1)) {
  ;
  return (-1);
 }
 MArgmt = NArgmt;
 CmdMod |= '\10';
 ;
 return 0;
}


ExeCln

decompiled_code:
__int64 ExeCln()
{
char v0; // al

v0 = CmdMod | 2;
if ( (CmdMod & 2) != 0 )
v0 = CmdMod & 0xFD | 4;
CmdMod = v0;
return 0LL;
}

canonical_decompiled_code:
__int64 func0()
{
char v0; // al

v0 = CmdMod | 2;
if ( (CmdMod & 2) != 0 )
v0 = CmdMod & 0xFD | 4;
CmdMod = v0;
return 0LL;
}

original_code:
DEFAULT ExeCln()
{
 ;
 if (CmdMod & '\2') {
  CmdMod &= ~'\2';
  CmdMod |= '\4';
 } else {
  CmdMod |= '\2';
 }
 ;
 return 0;
}

canonical_original_code:
int ExeCln()
{
 ;
 if (CmdMod & '\2') {
  CmdMod &= ~'\2';
  CmdMod |= '\4';
 } else {
  CmdMod |= '\2';
 }
 ;
 return 0;
}


ExeAtS

decompiled_code:
__int64 ExeAtS()
{
CmdMod |= 1u;
return 0LL;
}

canonical_decompiled_code:
__int64 func0()
{
CmdMod |= 1u;
return 0LL;
}

original_code:
DEFAULT ExeAtS()
{
 ;
 CmdMod |= '\1';
 ;
 return 0;
}

canonical_original_code:
int ExeAtS()
{
 ;
 CmdMod |= '\1';
 ;
 return 0;
}


ExeZ

decompiled_code:
__int64 ExeZ()
{
return PushEx(GapBeg - EBfBeg + EBfEnd - GapEnd, 0LL);
}

canonical_decompiled_code:
__int64 func0()
{
return PushEx(GapBeg - EBfBeg + EBfEnd - GapEnd, 0LL);
}

original_code:
DEFAULT ExeZ()
{
 return PushEx((LONG)((GapBeg-EBfBeg)+(EBfEnd-GapEnd)), 0);
}

canonical_original_code:
int ExeZ()
{
 return PushEx((LONG)((GapBeg-EBfBeg)+(EBfEnd-GapEnd)), 0);
}


ErrUTC

decompiled_code:
__int64 ErrUTC()
{
return ErrMsg((MStTop >= 0) + 39);
}

canonical_decompiled_code:
__int64 func5()
{
return func4((MStTop >= 0) + 39);
}

original_code:
void ErrUTC()
{
 ErrMsg((MStTop < 0) ? 39 : 40);
}


ExeEY

decompiled_code:
__int64 ExeEY()
{
char v0; // bl
char v1; // bl
__int64 v2; // rdi
unsigned int v3; // er12

v0 = CmdMod;
CmdMod &= 0xFDu;
v1 = v0 & 2;
GapBeg = EBfBeg;
GapEnd = EBfEnd;
if ( *((_DWORD *)&IsEofI + CurInp) )
{
v2 = 0LL;
if ( !v1 )
{
v3 = 0;
EStTop = EStBot;
return v3;
}
return PushEx(v2, 0LL);
}
if ( (unsigned int)RdPage() == -1 )
return (unsigned int)-1;
if ( v1 )
{
v2 = -1LL;
return PushEx(v2, 0LL);
}
EStTop = EStBot;
return 0LL;
}

canonical_decompiled_code:
__int64 func0()
{
char v0; // bl
char v1; // bl
__int64 v2; // rdi
unsigned int v3; // er12

v0 = CmdMod;
CmdMod &= 0xFDu;
v1 = v0 & 2;
GapBeg = EBfBeg;
GapEnd = EBfEnd;
if ( *((_DWORD *)&IsEofI + CurInp) )
{
v2 = 0LL;
if ( !v1 )
{
v3 = 0;
EStTop = EStBot;
return v3;
}
return PushEx(v2, 0LL);
}
if ( (unsigned int)RdPage() == -1 )
return (unsigned int)-1;
if ( v1 )
{
v2 = -1LL;
return PushEx(v2, 0LL);
}
EStTop = EStBot;
return 0LL;
}

original_code:
DEFAULT ExeEY()
{
 BOOLEAN ColonMod;
 ;
 ColonMod = (CmdMod & '\2');
 CmdMod &= ~'\2';
 GapBeg = EBfBeg;
 GapEnd = EBfEnd;
 if (IsEofI[CurInp]) {
  if (ColonMod) {
   ;
   return PushEx(0L, 0);
  } else {
   EStTop = EStBot;
   ;
   return 0;
  }
 }
 if (RdPage() == (-1)) {
  ;
  return (-1);
 }
 if (ColonMod) {
  ;
  return PushEx(-1L, 0);
 }
 EStTop = EStBot;
 ;
 return 0;
}

canonical_original_code:
int ExeEY()
{
 int ColonMod;
 ;
 ColonMod = (CmdMod & '\2');
 CmdMod &= ~'\2';
 GapBeg = EBfBeg;
 GapEnd = EBfEnd;
 if (IsEofI[CurInp]) {
  if (ColonMod) {
   ;
   return PushEx(0L, 0);
  } else {
   EStTop = EStBot;
   ;
   return 0;
  }
 }
 if (RdPage() == (-1)) {
  ;
  return (-1);
 }
 if (ColonMod) {
  ;
  return PushEx(-1L, 0);
 }
 EStTop = EStBot;
 ;
 return 0;
}


ExeQes

decompiled_code:
__int64 ExeQes()
{
CmdMod = 0;
TraceM = TraceM == 0;
EStTop = EStBot;
return 0LL;
}

canonical_decompiled_code:
__int64 func0()
{
CmdMod = 0;
TraceM = TraceM == 0;
EStTop = EStBot;
return 0LL;
}

original_code:
DEFAULT ExeQes()
{
 ;
 TraceM = !TraceM;
 CmdMod = '\0';
 EStTop = EStBot;
 ;
 return 0;
}

canonical_original_code:
int ExeQes()
{
 ;
 TraceM = !TraceM;
 CmdMod = '\0';
 EStTop = EStBot;
 ;
 return 0;
}


ExeCtV

decompiled_code:
__int64 ExeCtV()
{
__int64 result; // rax

if ( EStTop == EStBot )
{
IniSrM = 0;
result = 0LL;
CmdMod = 0;
}
else
{
result = GetNmA();
if ( (_DWORD)result != -1 )
{
if ( NArgmt )
{
ErrMsg(0LL);
result = 0xFFFFFFFFLL;
}
else
{
IniSrM = 1;
result = 0LL;
CmdMod = 0;
}
}
}
return result;
}

canonical_decompiled_code:
__int64 func0()
{
__int64 result; // rax

if ( EStTop == EStBot )
{
IniSrM = 0;
result = 0LL;
CmdMod = 0;
}
else
{
result = GetNmA();
if ( (_DWORD)result != -1 )
{
if ( NArgmt )
{
ErrMsg(0LL);
result = 0xFFFFFFFFLL;
}
else
{
IniSrM = 1;
result = 0LL;
CmdMod = 0;
}
}
}
return result;
}

original_code:
DEFAULT ExeCtV()
{
 ;
 if (EStTop == EStBot) {
  IniSrM = 0;
 } else {
  if (GetNmA() == (-1)) {
   ;
   return (-1);
  }
  if (NArgmt) {
   ErrMsg(0);
   ;
   return (-1);
  }
  IniSrM = 1;
 }
 CmdMod = '\0';
 ;
 return 0;
}

canonical_original_code:
int ExeCtV()
{
 ;
 if (EStTop == EStBot) {
  IniSrM = 0;
 } else {
  if (GetNmA() == (-1)) {
   ;
   return (-1);
  }
  if (NArgmt) {
   ErrMsg(0);
   ;
   return (-1);
  }
  IniSrM = 1;
 }
 CmdMod = '\0';
 ;
 return 0;
}


ExeL

decompiled_code:
__int64 ExeL()
{
__int64 v0; // rax
__int64 v1; // rbx
bool v2; // zf
__int64 result; // rax

if ( EStTop == EStBot )
{
NArgmt = 1LL;
v0 = Ln2Chr(1LL);
v1 = v0;
v2 = v0 == 0;
if ( v0 <= 0 )
goto LABEL_3;
LABEL_8:
ZCpyBl(GapBeg, GapEnd + 1LL, (unsigned int)v1);
GapBeg += v1;
result = 0LL;
GapEnd += v1;
CmdMod = 0;
return result;
}
UMinus();
result = GetNmA();
if ( (_DWORD)result == -1 )
return result;
v0 = Ln2Chr(NArgmt);
v1 = v0;
v2 = v0 == 0;
if ( v0 > 0 )
goto LABEL_8;
LABEL_3:
if ( v2 )
{
CmdMod = 0;
result = 0LL;
}
else
{
GapEnd += v0;
GapBeg += v0;
ZCpyBl(GapEnd + 1LL, GapBeg, (unsigned int)-(int)v0);
CmdMod = 0;
result = 0LL;
}
return result;
}

canonical_decompiled_code:
__int64 func0()
{
__int64 v0; // rax
__int64 v1; // rbx
bool v2; // zf
__int64 result; // rax

if ( EStTop == EStBot )
{
NArgmt = 1LL;
v0 = Ln2Chr(1LL);
v1 = v0;
v2 = v0 == 0;
if ( v0 <= 0 )
goto LABEL_3;
LABEL_8:
ZCpyBl(GapBeg, GapEnd + 1LL, (unsigned int)v1);
GapBeg += v1;
result = 0LL;
GapEnd += v1;
CmdMod = 0;
return result;
}
UMinus();
result = GetNmA();
if ( (_DWORD)result == -1 )
return result;
v0 = Ln2Chr(NArgmt);
v1 = v0;
v2 = v0 == 0;
if ( v0 > 0 )
goto LABEL_8;
LABEL_3:
if ( v2 )
{
CmdMod = 0;
result = 0LL;
}
else
{
GapEnd += v0;
GapBeg += v0;
ZCpyBl(GapEnd + 1LL, GapBeg, (unsigned int)-(int)v0);
CmdMod = 0;
result = 0LL;
}
return result;
}

original_code:
DEFAULT ExeL()
{
 LONG HowFar;
 ;
 if (EStTop == EStBot) {
  NArgmt = 1;
 } else {
  UMinus();
  if (GetNmA() == (-1)) {
   ;
   return (-1);
  }
 }
 HowFar = Ln2Chr(NArgmt);
 if (HowFar > 0) {
  ZCpyBl((GapBeg),(GapEnd+1),((SIZE_T)HowFar));
  GapBeg += HowFar;
  GapEnd += HowFar;
 } else if (HowFar < 0) {
  GapBeg += HowFar;
  GapEnd += HowFar;
  ZCpyBl((GapEnd+1),(GapBeg),((SIZE_T)-HowFar));
 }
 CmdMod = '\0';
 ;
 return 0;
}

canonical_original_code:
int ExeL()
{
 long HowFar;
 ;
 if (EStTop == EStBot) {
  NArgmt = 1;
 } else {
  UMinus();
  if (GetNmA() == (-1)) {
   ;
   return (-1);
  }
 }
 HowFar = Ln2Chr(NArgmt);
 if (HowFar > 0) {
  ZCpyBl((GapBeg),(GapEnd+1),((unsigned int)HowFar));
  GapBeg += HowFar;
  GapEnd += HowFar;
 } else if (HowFar < 0) {
  GapBeg += HowFar;
  GapEnd += HowFar;
  ZCpyBl((GapEnd+1),(GapBeg),((SIZE_T)-HowFar));
 }
 CmdMod = '\0';
 ;
 return 0;
}

variable_types: HowFar long


ExeCtA

decompiled_code:
__int64 ExeCtA()
{
__int64 result; // rax

result = FindES(1LL);
if ( (_DWORD)result != -1 )
{
TypBuf(ArgPtr, CBfPtr);
CmdMod = 0;
EStTop = EStBot;
result = 0LL;
}
return result;
}

canonical_decompiled_code:
__int64 func0()
{
__int64 result; // rax

result = FindES(1LL);
if ( (_DWORD)result != -1 )
{
TypBuf(ArgPtr, CBfPtr);
CmdMod = 0;
EStTop = EStBot;
result = 0LL;
}
return result;
}

original_code:
DEFAULT ExeCtA()
{
 ;
 if (FindES('\001') == (-1)) {
  ;
  return (-1);
 }
 TypBuf(ArgPtr, CBfPtr);
 CmdMod = '\0';
 EStTop = EStBot;
 ;
 return 0;
}

canonical_original_code:
int ExeCtA()
{
 ;
 if (FindES('\001') == (-1)) {
  ;
  return (-1);
 }
 TypBuf(ArgPtr, CBfPtr);
 CmdMod = '\0';
 EStTop = EStBot;
 ;
 return 0;
}


ExeCrt

decompiled_code:
__int64 ExeCrt()
{
unsigned __int8 v0; // al

if ( (unsigned int)IncCBP() != -1 )
{
v0 = *CBfPtr;
if ( (*((_BYTE *)&ChrMsk + (unsigned __int8)*CBfPtr) & 0x40) != 0 )
v0 = *CBfPtr - 32;
if ( (unsigned __int8)(v0 - 65) <= 0x1Eu )
return ((__int64 (*)(void))*(&FCAray_0 + v0 - 65))();
ErrChr(16LL);
}
return 0xFFFFFFFFLL;
}

canonical_decompiled_code:
__int64 func0()
{
unsigned __int8 v0; // al

if ( (unsigned int)IncCBP() != -1 )
{
v0 = *CBfPtr;
if ( (*((_BYTE *)&ChrMsk + (unsigned __int8)*CBfPtr) & 0x40) != 0 )
v0 = *CBfPtr - 32;
if ( (unsigned __int8)(v0 - 65) <= 0x1Eu )
return ((__int64 (*)(void))*(&FCAray_0 + v0 - 65))();
ErrChr(16LL);
}
return 0xFFFFFFFFLL;
}

original_code:
DEFAULT ExeCrt()
{
 unsigned char TmpChr;
 static DEFAULT (*FCAray[])(void) = {
          ExeCtA, ZExCtB, ExeCtC,
          ExeCtD, ExeCtE, ExeNYI,
          ExeIll, ZExCtH, ExeCtI,
          ExeNul, ExeIll, ExeCtL,
          ExeNul, ExeCtN, ExeCtO,
          ExeCtP, ExeCtQ, ExeCtR,
          ExeCtS, ExeCtT, ExeCtU,
          ExeCtV, ExeCtW, ExeCtX,
          ExeCtY, ExeCtZ, ExeEsc,
          ExeIll, ExeIll, ExeCCC,
          ExeUsc
 };
 if (IncCBP() == (-1)) {
  return (-1);
 }
 TmpChr = ((ChrMsk[(*CBfPtr)] & '\100') ? (*CBfPtr)-' ' : (*CBfPtr) );
 if ((TmpChr < 'A') || (TmpChr > '_')) {
  ErrChr(16, *CBfPtr);
  return (-1);
 }
 return (*FCAray[TmpChr-'A'])();
}

canonical_original_code:
int ExeCrt()
{
 unsigned char TmpChr;
 static int (*FCAray[])() = {
          ExeCtA, ZExCtB, ExeCtC,
          ExeCtD, ExeCtE, ExeNYI,
          ExeIll, ZExCtH, ExeCtI,
          ExeNul, ExeIll, ExeCtL,
          ExeNul, ExeCtN, ExeCtO,
          ExeCtP, ExeCtQ, ExeCtR,
          ExeCtS, ExeCtT, ExeCtU,
          ExeCtV, ExeCtW, ExeCtX,
          ExeCtY, ExeCtZ, ExeEsc,
          ExeIll, ExeIll, ExeCCC,
          ExeUsc
 };
 if (IncCBP() == (-1)) {
  return (-1);
 }
 TmpChr = ((ChrMsk[(*CBfPtr)] & '\100') ? (*CBfPtr)-' ' : (*CBfPtr) );
 if ((TmpChr < 'A') || (TmpChr > '_')) {
  ErrChr(16, *CBfPtr);
  return (-1);
 }
 return (*FCAray[TmpChr-'A'])();
}

variable_types:
FCAray
int (*[])()