typedef   signed char       int8;
typedef unsigned char      uint8;
typedef   signed short      int16;
typedef unsigned short     uint16;
typedef   signed int        int32;
typedef unsigned int       uint32;
typedef   signed long long  int64;
typedef unsigned long long uint64;
typedef struct { char *data; int64 len; int64 size; } FBSTRING;
typedef int8 boolean;
struct $13FBGNUARCHINFO {
	char* GNUID;
	int64 CPUTYPE;
};
#define __FB_STATIC_ASSERT( expr ) extern int __$fb_structsizecheck[(expr) ? 1 : -1]
__FB_STATIC_ASSERT( sizeof( struct $13FBGNUARCHINFO ) == 16 );
struct $7TLISTTB;
struct $7TLISTTB {
	struct $7TLISTTB* NEXT;
	void* NODETB;
	int64 NODES;
};
__FB_STATIC_ASSERT( sizeof( struct $7TLISTTB ) == 24 );
struct $9TLISTNODE;
struct $9TLISTNODE {
	struct $9TLISTNODE* PREV;
	struct $9TLISTNODE* NEXT;
};
__FB_STATIC_ASSERT( sizeof( struct $9TLISTNODE ) == 16 );
typedef int64 $10LIST_FLAGS;
struct $5TLIST {
	struct $7TLISTTB* TBHEAD;
	struct $7TLISTTB* TBTAIL;
	int64 NODES;
	int64 NODELEN;
	struct $9TLISTNODE* FHEAD;
	void* HEAD;
	void* TAIL;
	$10LIST_FLAGS FLAGS;
};
__FB_STATIC_ASSERT( sizeof( struct $5TLIST ) == 64 );
struct $8HASHITEM;
struct $8HASHITEM {
	char* NAME;
	void* DATA;
	struct $8HASHITEM* PREV;
	struct $8HASHITEM* NEXT;
};
__FB_STATIC_ASSERT( sizeof( struct $8HASHITEM ) == 32 );
struct $11TSTRSETITEM {
	FBSTRING S;
	int64 USERDATA;
	struct $8HASHITEM* HASHITEM;
};
__FB_STATIC_ASSERT( sizeof( struct $11TSTRSETITEM ) == 40 );
struct $10FBC_EXTOPT {
	FBSTRING GAS;
	FBSTRING LD;
	FBSTRING GCC;
};
__FB_STATIC_ASSERT( sizeof( struct $10FBC_EXTOPT ) == 72 );
struct $9FBCIOFILE {
	FBSTRING SRCFILE;
	FBSTRING* OBJFILE;
	int64 IS_CUSTOM_OBJFILE;
};
__FB_STATIC_ASSERT( sizeof( struct $9FBCIOFILE ) == 40 );
struct $8HASHLIST {
	struct $8HASHITEM* HEAD;
	struct $8HASHITEM* TAIL;
};
__FB_STATIC_ASSERT( sizeof( struct $8HASHLIST ) == 16 );
struct $5THASH {
	struct $8HASHLIST* LIST;
	int64 NODES;
	int64 DELSTR;
};
__FB_STATIC_ASSERT( sizeof( struct $5THASH ) == 24 );
struct $7TSTRSET {
	struct $5TLIST LIST;
	struct $5THASH HASH;
};
__FB_STATIC_ASSERT( sizeof( struct $7TSTRSET ) == 88 );
typedef int64 $7FB_LANG;
struct $10FBC_OBJINF {
	$7FB_LANG LANG;
	int64 MT;
};
__FB_STATIC_ASSERT( sizeof( struct $10FBC_OBJINF ) == 16 );
struct $6FBCCTX {
	int64 OPTID;
	struct $9FBCIOFILE* LASTMODULE;
	FBSTRING OBJFILE;
	int64 BACKEND;
	int64 CPUTYPE;
	int64 CPUTYPE_IS_NATIVE;
	int64 ASMSYNTAX;
	int64 EMITASMONLY;
	int64 KEEPASM;
	int64 EMITFINALASMONLY;
	int64 KEEPFINALASM;
	int64 KEEPOBJ;
	int64 VERBOSE;
	int64 SHOWVERSION;
	int64 SHOWHELP;
	int64 PRINT;
	struct $5TLIST MODULES;
	struct $5TLIST RCS;
	struct $9FBCIOFILE XPM;
	struct $7TSTRSET TEMPS;
	struct $5TLIST OBJLIST;
	struct $5TLIST LIBFILES;
	struct $7TSTRSET LIBS;
	struct $7TSTRSET LIBPATHS;
	struct $7TSTRSET EXCLUDEDLIBS;
	struct $7TSTRSET FINALLIBS;
	struct $7TSTRSET FINALLIBPATHS;
	char OUTNAME[261];
	char MAINNAME[261];
	char ENTRY[129];
	int64 MAINSET;
	char MAPFILE[261];
	char SUBSYSTEM[129];
	struct $10FBC_EXTOPT EXTOPT;
	char TARGET[129];
	char TARGETPREFIX[129];
	char XBE_TITLE[129];
	int64 NODEFLIBS;
	int64 STATICLINK;
	int64 STRIPSYMBOLS;
	char PREFIX[261];
	char BINPATH[261];
	char INCPATH[261];
	char LIBPATH[261];
	char BUILDPREFIX[261];
	struct $10FBC_OBJINF OBJINF;
};
__FB_STATIC_ASSERT( sizeof( struct $6FBCCTX ) == 3840 );
typedef int64 $11FBCTOOLFLAG;
struct $11FBCTOOLINFO {
	char NAME[16];
	$11FBCTOOLFLAG FLAGS;
	char PATH[261];
};
__FB_STATIC_ASSERT( sizeof( struct $11FBCTOOLINFO ) == 288 );
struct $16__FB_ARRAYDIMTB$ {
	int64 ELEMENTS;
	int64 LBOUND;
	int64 UBOUND;
};
__FB_STATIC_ASSERT( sizeof( struct $16__FB_ARRAYDIMTB$ ) == 24 );
struct $8FBARRAY1IcE {
	char* DATA;
	char* PTR;
	int64 SIZE;
	int64 ELEMENT_LEN;
	int64 DIMENSIONS;
	int64 FLAGS;
	struct $16__FB_ARRAYDIMTB$ DIMTB[1];
};
__FB_STATIC_ASSERT( sizeof( struct $8FBARRAY1IcE ) == 72 );
typedef int64 $7FBCTOOL;
struct $11FBGNUOSINFO {
	char* GNUID;
	int64 OS;
};
__FB_STATIC_ASSERT( sizeof( struct $11FBGNUOSINFO ) == 16 );
struct $12FBOSARCHINFO {
	char* TARGETID;
	int64 OS;
	int64 CPUTYPE;
};
__FB_STATIC_ASSERT( sizeof( struct $12FBOSARCHINFO ) == 24 );
struct $7FBARRAYI8FBSTRINGE {
	FBSTRING* DATA;
	FBSTRING* PTR;
	int64 SIZE;
	int64 ELEMENT_LEN;
	int64 DIMENSIONS;
	int64 FLAGS;
	struct $16__FB_ARRAYDIMTB$ DIMTB[8];
};
__FB_STATIC_ASSERT( sizeof( struct $7FBARRAYI8FBSTRINGE ) == 240 );
struct $7FBARRAYIKvE {
	void* DATA;
	void* PTR;
	int64 SIZE;
	int64 ELEMENT_LEN;
	int64 DIMENSIONS;
	int64 FLAGS;
	struct $16__FB_ARRAYDIMTB$ DIMTB[8];
};
__FB_STATIC_ASSERT( sizeof( struct $7FBARRAYIKvE ) == 240 );
struct $7FBARRAYIvE {
	void* DATA;
	void* PTR;
	int64 SIZE;
	int64 ELEMENT_LEN;
	int64 DIMENSIONS;
	int64 FLAGS;
	struct $16__FB_ARRAYDIMTB$ DIMTB[8];
};
__FB_STATIC_ASSERT( sizeof( struct $7FBARRAYIvE ) == 240 );
struct $18FBC_CMDLINE_OPTION {
	boolean TAKES_ARGUMENT;
	boolean ALLOWED_IN_SOURCE;
	boolean PARSER_RESTART;
	int64 FBC_RESTART;
};
__FB_STATIC_ASSERT( sizeof( struct $18FBC_CMDLINE_OPTION ) == 16 );
void fb_ArrayStrErase( struct $7FBARRAYIvE* );
int64 fb_ArrayLBound( struct $7FBARRAYIKvE*, int64 );
int64 fb_ArrayUBound( struct $7FBARRAYIKvE*, int64 );
void* fb_ErrorThrowAt( int32, char*, void*, void* );
int32 fb_FileOpen( FBSTRING*, uint32, uint32, uint32, int32, int32 );
int32 fb_FileOpenPipe( FBSTRING*, uint32, uint32, uint32, int32, int32, char* );
int32 fb_FileClose( int32 );
int32 fb_FilePutLarge( int32, int64, void*, uint64 );
int32 fb_FileLineInput( int32, void*, int64, int32 );
int32 fb_FileInput( int32 );
int32 fb_InputString( void*, int64, int32 );
int32 rename( char*, char* );
int32 fb_FileFree( void );
int32 fb_FileEof( int32 );
int32 fb_FileKill( FBSTRING* );
void fb_PrintVoid( int32, int32 );
void fb_PrintString( int32, FBSTRING*, int32 );
FBSTRING* fb_StrInit( void*, int64, void*, int64, int32 );
FBSTRING* fb_StrAssign( void*, int64, void*, int64, int32 );
void fb_StrDelete( FBSTRING* );
FBSTRING* fb_StrConcat( FBSTRING*, void*, int64, void*, int64 );
FBSTRING* fb_StrConcatByref( void*, int64, void*, int64, int32 );
int32 fb_StrCompare( void*, int64, void*, int64 );
FBSTRING* fb_StrConcatAssign( void*, int64, void*, int64, int32 );
FBSTRING* fb_StrAllocTempResult( FBSTRING* );
FBSTRING* fb_StrAllocTempDescZ( char* );
FBSTRING* fb_StrAllocTempDescZEx( char*, int64 );
FBSTRING* fb_LongintToStr( int64 );
int64 fb_StrLen( void*, int64 );
int64 fb_StrInstr( int64, FBSTRING*, FBSTRING* );
FBSTRING* fb_TRIM( FBSTRING* );
int32 fb_VALINT( FBSTRING* );
FBSTRING* fb_LEFT( FBSTRING*, int64 );
FBSTRING* fb_RIGHT( FBSTRING*, int64 );
FBSTRING* fb_StrLcase2( FBSTRING*, int32 );
FBSTRING* fb_StrUcase2( FBSTRING*, int32 );
void fb_Init( int32, char**, int32 );
void fb_InitSignals( void );
void fb_End( int32 );
FBSTRING* fb_ExePath( void );
int32 fb_Shell( FBSTRING* );
int32 fb_Exec( FBSTRING*, FBSTRING* );
FBSTRING* fb_GetEnviron( FBSTRING* );
void LISTINIT( struct $5TLIST*, int64, int64, $10LIST_FLAGS );
void* LISTNEWNODE( struct $5TLIST* );
void* LISTGETHEAD( struct $5TLIST* );
void* LISTGETNEXT( void* );
void STRLISTAPPEND( struct $5TLIST*, FBSTRING* );
void STRLISTINIT( struct $5TLIST*, int64 );
static void _ZN11TSTRSETITEMaSERKS_( struct $11TSTRSETITEM*, struct $11TSTRSETITEM* );
void STRSETADD( struct $7TSTRSET*, FBSTRING*, int64 );
void STRSETDEL( struct $7TSTRSET*, FBSTRING* );
void STRSETCOPY( struct $7TSTRSET*, struct $7TSTRSET* );
void STRSETINIT( struct $7TSTRSET*, int64 );
void ERRPREINIT( void );
int64 ERRGETCOUNT( void );
typedef int64 $12FB_ERRMSGOPT;
void ERRREPORTEX( int64, char*, int64, $12FB_ERRMSGOPT, char* );
void ERRREPORTWARN( int64, char*, $12FB_ERRMSGOPT, char* );
void ERRREPORTWARNEX( int64, char*, int64, $12FB_ERRMSGOPT, char* );
void FBINIT( int64, char*, int64 );
void FBEND( void );
void FBCOMPILE( char*, char*, FBSTRING*, int64 );
int64 FBSHOULDRESTART( void );
typedef int64 $16FB_RESTART_FLAGS;
void FBRESTARTBEGINREQUEST( $16FB_RESTART_FLAGS );
void FBRESTARTENDREQUEST( $16FB_RESTART_FLAGS );
int64 FBRESTARTGETCOUNT( void );
void FBGLOBALINIT( void );
void FBADDINCLUDEPATH( FBSTRING* );
void FBADDPREDEFINE( FBSTRING* );
void FBADDPREINCLUDE( FBSTRING* );
void FBSETOPTION( int64, int64 );
int64 FBGETOPTION( int64 );
void FBSETLIBS( struct $7TSTRSET*, struct $7TSTRSET* );
void FBGETLIBS( struct $7TSTRSET*, struct $7TSTRSET* );
FBSTRING* FBGETTARGETID( void );
FBSTRING* FBGETHOSTID( void );
int64 FBIDENTIFYOS( FBSTRING* );
int64 FBCPUTYPEFROMCPUFAMILYID( FBSTRING* );
char* FBGETGCCARCH( void );
char* FBGETFBCARCH( void );
int64 FBGETBITS( void );
int64 FBGETHOSTBITS( void );
int64 FBGETCPUFAMILY( void );
int64 FBIDENTIFYFBCARCH( FBSTRING* );
int64 FBTARGETSUPPORTSELF( void );
int64 FBISCROSSCOMP( void );
typedef int64 $10FB_BACKEND;
FBSTRING* FBGETBACKENDNAME( $10FB_BACKEND );
$7FB_LANG FBGETLANGID( char* );
int64 HFILEEXISTS( char* );
int64 HFILEEXISTSINPATH( char* );
FBSTRING* HSTRIPEXT( FBSTRING* );
FBSTRING* HSTRIPPATH( char* );
FBSTRING* HSTRIPFILENAME( char* );
FBSTRING* HGETFILEEXT( char* );
void HREPLACESLASH( char*, int64 );
FBSTRING* PATHSTRIPDIV( FBSTRING* );
FBSTRING* STRUNQUOTE( FBSTRING* );
FBSTRING* HREPLACE( char*, char*, char* );
void HSPLITSTR( FBSTRING*, FBSTRING*, struct $7FBARRAYI8FBSTRINGE* );
void OBJINFOREADOBJ( FBSTRING* );
void OBJINFOREADLIBFILE( FBSTRING* );
void OBJINFOREADLIB( FBSTRING*, struct $5TLIST* );
int64 OBJINFOREADNEXT( FBSTRING* );
char* OBJINFOGETFILENAME( void );
void OBJINFOREADEND( void );
int64 fb_FileLen( char* );
static void _ZN10FBC_EXTOPTC1Ev( struct $10FBC_EXTOPT* );
static void _ZN10FBC_EXTOPTaSERKS_( struct $10FBC_EXTOPT*, struct $10FBC_EXTOPT* );
static void _ZN10FBC_EXTOPTD1Ev( struct $10FBC_EXTOPT* );
static void _ZN9FBCIOFILEC1Ev( struct $9FBCIOFILE* );
static void _ZN9FBCIOFILEaSERKS_( struct $9FBCIOFILE*, struct $9FBCIOFILE* );
static void _ZN9FBCIOFILED1Ev( struct $9FBCIOFILE* );
static void _ZN6FBCCTXC1Ev( struct $6FBCCTX* );
static void _ZN6FBCCTXaSERKS_( struct $6FBCCTX*, struct $6FBCCTX* );
static void _ZN6FBCCTXD1Ev( struct $6FBCCTX* );
static void FBCFINDBIN( int64, FBSTRING* );
static void HPRINTVERSION( int64 );
static void FBCINIT( void );
static void HSETOUTNAME( void );
static void FBCEND( int64 );
static void FBCADDTEMP( FBSTRING* );
static void FBCREMOVETEMP( FBSTRING* );
static FBSTRING* FBCADDOBJ( FBSTRING* );
static FBSTRING* HGET1STOUTPUTLINEFROMCOMMAND( FBSTRING* );
static FBSTRING* FBCQUERYGCC( FBSTRING* );
static FBSTRING* FBCBUILDPATHTOLIBFILE( char* );
static FBSTRING* FBCFINDLIBFILE( char* );
static void FBCADDDEFLIBPATH( FBSTRING* );
static void FBCADDLIBPATHFOR( char* );
static int64 FBCRUNBIN( char*, int64, FBSTRING* );
static int64 CLEARDEFLIST( FBSTRING* );
static int64 HGENERATEEMPTYDEFFILE( FBSTRING* );
static int64 MAKEIMPLIB( FBSTRING*, FBSTRING* );
static FBSTRING* HFINDLIB( char* );
static int64 FBCLINKERISGOLD( void );
static int64 FBCISUSINGGOLDLINKER( void );
static int64 HLINKFILES( void );
static void HREADOBJINFO( void );
static void HCOLLECTOBJINFO( void );
static void HFATALINVALIDOPTION( FBSTRING*, int64 );
static void HCHECKWAITINGOBJFILE( void );
static void HSETIOFILE( struct $9FBCIOFILE*, FBSTRING*, int64 );
static void HADDBAS( FBSTRING* );
static void HPARSEGNUTRIPLET( FBSTRING*, int64, int64*, int64* );
static void HPARSETARGETARG( FBSTRING*, int64*, int64*, int64* );
static void HANDLEOPT( int64, FBSTRING*, int64 );
static int64 PARSEOPTION( char* );
static void PARSEARGSFROMFILE( FBSTRING*, int64 );
static void HANDLEARG( FBSTRING*, int64, int64 );
void FBCPARSEARGSFROMSTRING( char*, int64, int64 );
static int64 HTARGETNEEDSPIC( void );
static void HPARSEARGS( int64, char** );
static void HCHECKARGS( void );
static void FBCDETERMINEPREFIX( void );
static void FBCSETUPCOMPILERPATHS( void );
static void FBCPRINTTARGETINFO( void );
static void FBCDETERMINEMAINNAME( void );
static FBSTRING* HGETASMNAME( struct $9FBCIOFILE*, int64 );
static void HCOMPILEBAS( struct $9FBCIOFILE*, int64, int64, int64 );
static void HCOMPILEMODULES( void );
static int64 HPARSEXPM( FBSTRING*, FBSTRING* );
static int64 HCOMPILEXPM( void );
static int64 HCOMPILESTAGE2MODULE( struct $9FBCIOFILE* );
static void HCOMPILESTAGE2MODULES( void );
static int64 HASSEMBLEMODULE( struct $9FBCIOFILE* );
static void HASSEMBLEMODULES( void );
static int64 HASSEMBLERC( struct $9FBCIOFILE* );
static void HASSEMBLERCS( void );
static void HASSEMBLEXPM( void );
static int64 HCOMPILEFBCTINF( void );
static int64 HARCHIVEFILES( void );
static void HSETDEFAULTLIBPATHS( void );
static void FBCADDDEFLIB( char* );
static FBSTRING* HGETFBLIBNAMESUFFIX( void );
static void HADDDEFAULTLIBS( void );
static void HEXCLUDELIBSFROMLINK( void );
static void HPRINTOPTIONS( int64 );
static void _GLOBAL__I( void ) __attribute__(( constructor ));
static void _GLOBAL__D( void ) __attribute__(( destructor ));
static struct $11FBCTOOLINFO FBCTOOLTB$[15] = { { "as", 3ll }, { "ar", 3ll }, { "ld", 3ll }, { "gcc", 3ll }, { "llc", 3ll }, { "clang", 3ll }, { "dlltool", 3ll }, { "GoRC", 3ll }, { "windres", 3ll }, { "cxbe", 3ll }, { "dxe3gen", 3ll }, { "emcc", 3ll }, { "emar", 3ll }, { "emcc", 3ll }, { "emcc", 3ll } };
static struct $6FBCCTX FBC$;
static struct $11FBGNUOSINFO GNUOSMAP$[13] = { { (char*)"linux", 2ll }, { (char*)"haiku", 3ll }, { (char*)"mingw", 0ll }, { (char*)"djgpp", 4ll }, { (char*)"msdosdjgpp", 4ll }, { (char*)"cygwin", 1ll }, { (char*)"darwin", 10ll }, { (char*)"freebsd", 6ll }, { (char*)"dragonfly", 7ll }, { (char*)"solaris", 8ll }, { (char*)"netbsd", 11ll }, { (char*)"openbsd", 9ll }, { (char*)"xbox", 5ll } };
static struct $13FBGNUARCHINFO GNUARCHMAP$[22] = { { (char*)"i386", 0ll }, { (char*)"i486", 1ll }, { (char*)"i586", 2ll }, { (char*)"i686", 3ll }, { (char*)"x86", 3ll }, { (char*)"x86_64", 13ll }, { (char*)"amd64", 13ll }, { (char*)"armv6", 14ll }, { (char*)"armv6+fp", 15ll }, { (char*)"armv7a", 16ll }, { (char*)"armv7a+fp", 17ll }, { (char*)"arm", 15ll }, { (char*)"aarch64", 18ll }, { (char*)"ppc", 19ll }, { (char*)"powerpc", 19ll }, { (char*)"ppc64  ", 20ll }, { (char*)"powerpc64", 20ll }, { (char*)"ppc64le  ", 21ll }, { (char*)"powerpc64le", 21ll }, { (char*)"riscv64", 22ll }, { (char*)"s390x", 23ll }, { (char*)"loongarch64", 24ll } };
static struct $12FBOSARCHINFO FBOSARCHMAP$[13] = { { (char*)"win32", 0ll, 3ll }, { (char*)"win64", 0ll, 13ll }, { (char*)"dragonfly", 7ll, 13ll }, { (char*)"solaris", 8ll, 13ll }, { (char*)"dos", 4ll, 3ll }, { (char*)"xbox", 5ll, 3ll }, { (char*)"cygwin", 1ll, 18ll }, { (char*)"darwin", 10ll, 18ll }, { (char*)"freebsd", 6ll, 18ll }, { (char*)"linux", 2ll, 18ll }, { (char*)"haiku", 3ll, 18ll }, { (char*)"netbsd", 11ll, 18ll }, { (char*)"openbsd", 9ll, 18ll } };
static struct $18FBC_CMDLINE_OPTION CMDLINEOPTIONTB$[71] = { { (boolean)1, (boolean)1, (boolean)0, 0ll }, { (boolean)1, (boolean)1, (boolean)1, -1ll }, { (boolean)1, (boolean)1, (boolean)0, -1ll }, { (boolean)1, (boolean)1, (boolean)0, 0ll }, { (boolean)1, (boolean)1, (boolean)0, -1ll }, { (boolean)0, (boolean)1, (boolean)1, 0ll }, { (boolean)0, (boolean)1, (boolean)0, 0ll }, { (boolean)1, (boolean)1, (boolean)0, -1ll }, { (boolean)0, (boolean)1, (boolean)1, -1ll }, { (boolean)0, (boolean)1, (boolean)1, -1ll }, { (boolean)0, (boolean)1, (boolean)1, 0ll }, { (boolean)0, (boolean)1, (boolean)1, 0ll }, { (boolean)0, (boolean)1, (boolean)1, 0ll }, { (boolean)0, (boolean)1, (boolean)1, 0ll }, { (boolean)0, (boolean)1, (boolean)1, 0ll }, { (boolean)0, (boolean)1, (boolean)1, 0ll }, { (boolean)0, (boolean)1, (boolean)1, 0ll }, { (boolean)0, (boolean)1, (boolean)1, 0ll }, { (boolean)1, (boolean)1, (boolean)1, -1ll }, { (boolean)0, (boolean)1, (boolean)1, 0ll }, { (boolean)0, (boolean)1, (boolean)1, 0ll }, { (boolean)0, (boolean)1, (boolean)1, 0ll }, { (boolean)0, (boolean)1, (boolean)0, 0ll }, { (boolean)1, (boolean)1, (boolean)1, 0ll }, { (boolean)1, (boolean)1, (boolean)1, -1ll }, { (boolean)1, (boolean)1, (boolean)1, -1ll }, { (boolean)0, (boolean)1, (boolean)1, 0ll }, { (boolean)1, (boolean)1, (boolean)1, -1ll }, { (boolean)0, (boolean)0, (boolean)0, 0ll }, { (boolean)1, (boolean)1, (boolean)1, -1ll }, { (boolean)1, (boolean)1, (boolean)1, -1ll }, { (boolean)1, (boolean)1, (boolean)0, 0ll }, { (boolean)1, (boolean)1, (boolean)1, 0ll }, { (boolean)0, (boolean)1, (boolean)1, -1ll }, { (boolean)1, (boolean)1, (boolean)1, -1ll }, { (boolean)1, (boolean)1, (boolean)0, 0ll }, { (boolean)1, (boolean)1, (boolean)0, 0ll }, { (boolean)0, (boolean)1, (boolean)1, 0ll }, { (boolean)0, (boolean)1, (boolean)0, 0ll }, { (boolean)0, (boolean)1, (boolean)0, 0ll }, { (boolean)1, (boolean)1, (boolean)0, 0ll }, { (boolean)0, (boolean)1, (boolean)0, 0ll }, { (boolean)0, (boolean)1, (boolean)0, 0ll }, { (boolean)1, (boolean)1, (boolean)1, -1ll }, { (boolean)1, (boolean)1, (boolean)0, 0ll }, { (boolean)1, (boolean)1, (boolean)0, 0ll }, { (boolean)0, (boolean)1, (boolean)0, -1ll }, { (boolean)0, (boolean)1, (boolean)0, -1ll }, { (boolean)1, (boolean)1, (boolean)0, -1ll }, { (boolean)1, (boolean)0, (boolean)0, 0ll }, { (boolean)0, (boolean)1, (boolean)1, -1ll }, { (boolean)0, (boolean)1, (boolean)1, 0ll }, { (boolean)0, (boolean)1, (boolean)1, 0ll }, { (boolean)0, (boolean)1, (boolean)1, 0ll }, { (boolean)0, (boolean)1, (boolean)1, 0ll }, { (boolean)1, (boolean)1, (boolean)0, 0ll }, { (boolean)0, (boolean)1, (boolean)0, -1ll }, { (boolean)0, (boolean)1, (boolean)0, 0ll }, { (boolean)0, (boolean)1, (boolean)0, 0ll }, { (boolean)1, (boolean)1, (boolean)0, 0ll }, { (boolean)1, (boolean)1, (boolean)1, -1ll }, { (boolean)1, (boolean)1, (boolean)0, 0ll }, { (boolean)0, (boolean)1, (boolean)0, 0ll }, { (boolean)1, (boolean)1, (boolean)1, -1ll }, { (boolean)0, (boolean)1, (boolean)0, 0ll }, { (boolean)1, (boolean)1, (boolean)0, 0ll }, { (boolean)1, (boolean)1, (boolean)0, 0ll }, { (boolean)1, (boolean)1, (boolean)0, 0ll }, { (boolean)1, (boolean)1, (boolean)0, 0ll }, { (boolean)1, (boolean)1, (boolean)0, 0ll }, { (boolean)1, (boolean)1, (boolean)1, -1ll } };

int64 FBCPUTYPEFROMGNUARCHINFO( FBSTRING* ARCH$1 )
{
	int64 fb$result$1;
	__builtin_memset( &fb$result$1, 0, 8ll );
	label$513:;
	{
		int64 I$2;
		I$2 = 0ll;
		label$518:;
		{
			int32 vr$2 = fb_StrCompare( (void*)ARCH$1, -1ll, *(void**)((int64)(struct $13FBGNUARCHINFO*)GNUARCHMAP$ + (I$2 << (4ll & 63ll))), 0ll );
			if( (int64)vr$2 != 0ll ) goto label$520;
			{
				fb$result$1 = *(int64*)(((int64)(struct $13FBGNUARCHINFO*)GNUARCHMAP$ + (I$2 << (4ll & 63ll))) + 8ll);
				goto label$514;
			}
			label$520:;
			label$519:;
		}
		label$516:;
		I$2 = I$2 + 1ll;
		label$515:;
		if( I$2 <= 21ll ) goto label$518;
		label$517:;
	}
	fb$result$1 = -1ll;
	goto label$514;
	label$514:;
	return fb$result$1;
}

void FBCPARSEARGSFROMSTRING( char* ARGS_IN$1, int64 IS_SOURCE$1, int64 IS_FILE$1 )
{
	label$970:;
	FBSTRING ARGS$1;
	fb_StrInit( (void*)&ARGS$1, -1ll, (void*)ARGS_IN$1, 0ll, 0 );
	FBSTRING ARG$1;
	__builtin_memset( &ARG$1, 0, 24ll );
	label$972:;
	{
		int64 LENGTH$2;
		int64 vr$3 = fb_StrLen( (void*)&ARGS$1, -1ll );
		LENGTH$2 = vr$3;
		if( LENGTH$2 != 0ll ) goto label$976;
		{
			goto label$973;
		}
		label$976:;
		label$975:;
		int64 I$2;
		I$2 = 0ll;
		int64 QUOTECH$2;
		QUOTECH$2 = 0ll;
		label$977:;
		if( I$2 >= LENGTH$2 ) goto label$978;
		{
			int64 CH$3;
			CH$3 = (int64)*(uint8*)((uint8*)*(char**)&ARGS$1 + I$2);
			{
				uint64 TMP$478$4;
				TMP$478$4 = (uint64)CH$3;
				goto label$980;
				label$981:;
				{
					if( QUOTECH$2 != 0ll ) goto label$983;
					{
						goto label$978;
					}
					label$983:;
					label$982:;
				}
				goto label$979;
				label$984:;
				{
					if( QUOTECH$2 != CH$3 ) goto label$986;
					{
						QUOTECH$2 = 0ll;
					}
					goto label$985;
					label$986:;
					if( QUOTECH$2 != 0ll ) goto label$987;
					{
						QUOTECH$2 = CH$3;
					}
					label$987:;
					label$985:;
				}
				goto label$979;
				label$980:;
				static const void* tmp$480[8ll] = {
					&&label$981,
					&&label$979,
					&&label$984,
					&&label$979,
					&&label$979,
					&&label$979,
					&&label$979,
					&&label$984,
				};
				if( (TMP$478$4 - 32ull) > 7ull ) goto label$979;
				goto *tmp$480[TMP$478$4 - 32ull];
				label$979:;
			}
			I$2 = I$2 + 1ll;
		}
		goto label$977;
		label$978:;
		if( I$2 != 0ll ) goto label$989;
		{
			I$2 = 1ll;
		}
		goto label$988;
		label$989:;
		{
			FBSTRING* vr$8 = fb_LEFT( (FBSTRING*)&ARGS$1, I$2 );
			fb_StrAssign( (void*)&ARG$1, -1ll, (void*)vr$8, -1ll, 0 );
			FBSTRING* vr$11 = fb_TRIM( (FBSTRING*)&ARG$1 );
			fb_StrAssign( (void*)&ARG$1, -1ll, (void*)vr$11, -1ll, 0 );
			FBSTRING* vr$14 = STRUNQUOTE( &ARG$1 );
			fb_StrAssign( (void*)&ARG$1, -1ll, (void*)vr$14, -1ll, 0 );
			HANDLEARG( &ARG$1, IS_SOURCE$1, IS_FILE$1 );
		}
		label$988:;
		FBSTRING* vr$19 = fb_RIGHT( (FBSTRING*)&ARGS$1, LENGTH$2 - I$2 );
		fb_StrAssign( (void*)&ARGS$1, -1ll, (void*)vr$19, -1ll, 0 );
	}
	label$974:;
	goto label$972;
	label$973:;
	fb_StrDelete( (FBSTRING*)&ARG$1 );
	fb_StrDelete( (FBSTRING*)&ARGS$1 );
	label$971:;
}

int32 main( int32 __FB_ARGC__$0, char** __FB_ARGV__$0 )
{
	int32 fb$result$0;
	__builtin_memset( &fb$result$0, 0, 4ll );
	fb_Init( __FB_ARGC__$0, (char**)__FB_ARGV__$0, 0 );
	fb_InitSignals(  );
	label$0:;
	FBCINIT(  );
	if( (int64)__FB_ARGC__$0 != 1ll ) goto label$1449;
	{
		HPRINTOPTIONS( 0ll );
		FBCEND( 1ll );
	}
	label$1449:;
	label$1448:;
	HPARSEARGS( (int64)__FB_ARGC__$0, (char**)__FB_ARGV__$0 );
	HCHECKARGS(  );
	if( *(int64*)((uint8*)&FBC$ + 120ll) == 0ll ) goto label$1451;
	{
		HPRINTVERSION( *(int64*)((uint8*)&FBC$ + 112ll) );
		FBCEND( 0ll );
	}
	label$1451:;
	label$1450:;
	if( *(int64*)((uint8*)&FBC$ + 112ll) == 0ll ) goto label$1453;
	{
		*(int64*)((uint8*)&FBC$ + 120ll) = -1ll;
		HPRINTVERSION( 0ll );
	}
	label$1453:;
	label$1452:;
	if( *(int64*)((uint8*)&FBC$ + 128ll) == 0ll ) goto label$1455;
	{
		HPRINTOPTIONS( *(int64*)((uint8*)&FBC$ + 112ll) );
		FBCEND( 1ll );
	}
	label$1455:;
	label$1454:;
	label$1456:;
	{
		FBSTRING TMP$827$1;
		FBCDETERMINEPREFIX(  );
		FBCSETUPCOMPILERPATHS(  );
		if( *(int64*)((uint8*)&FBC$ + 112ll) == 0ll ) goto label$1460;
		{
			FBCPRINTTARGETINFO(  );
		}
		label$1460:;
		label$1459:;
		__builtin_memset( &TMP$827$1, 0, 24ll );
		fb_StrAssign( (void*)&TMP$827$1, -1ll, (void*)((uint8*)&FBC$ + 3034ll), 261ll, 0 );
		FBADDINCLUDEPATH( &TMP$827$1 );
		fb_StrDelete( (FBSTRING*)&TMP$827$1 );
		int64 HAVE_INPUT_FILES$1;
		void* vr$9 = LISTGETHEAD( (struct $5TLIST*)((uint8*)&FBC$ + 144ll) );
		void* vr$12 = LISTGETHEAD( (struct $5TLIST*)((uint8*)&FBC$ + 400ll) );
		void* vr$16 = LISTGETHEAD( (struct $5TLIST*)((uint8*)&FBC$ + 528ll) );
		void* vr$20 = LISTGETHEAD( (struct $5TLIST*)((uint8*)&FBC$ + 464ll) );
		HAVE_INPUT_FILES$1 = (((int64)-(vr$9 != (void*)0ull) | (int64)-(vr$12 != (void*)0ull)) | (int64)-(vr$16 != (void*)0ull)) | (int64)-(vr$20 != (void*)0ull);
		if( *(int64*)((uint8*)&FBC$ + 136ll) < 0ll ) goto label$1462;
		{
			{
				int64 TMP$828$3;
				TMP$828$3 = *(int64*)((uint8*)&FBC$ + 136ll);
				if( TMP$828$3 != 0ll ) goto label$1464;
				label$1465:;
				{
					FBSTRING* vr$23 = FBGETHOSTID(  );
					fb_PrintString( 0, (FBSTRING*)vr$23, 1 );
				}
				goto label$1463;
				label$1464:;
				if( TMP$828$3 != 1ll ) goto label$1466;
				label$1467:;
				{
					FBSTRING* vr$24 = FBGETTARGETID(  );
					fb_PrintString( 0, (FBSTRING*)vr$24, 1 );
				}
				goto label$1463;
				label$1466:;
				if( TMP$828$3 != 2ll ) goto label$1468;
				label$1469:;
				{
					if( HAVE_INPUT_FILES$1 == 0ll ) goto label$1471;
					{
						FBCDETERMINEMAINNAME(  );
					}
					label$1471:;
					label$1470:;
					HSETOUTNAME(  );
					FBSTRING* vr$26 = fb_StrAllocTempDescZ( (char*)((uint8*)&FBC$ + 968ll) );
					fb_PrintString( 0, (FBSTRING*)vr$26, 1 );
				}
				goto label$1463;
				label$1468:;
				if( TMP$828$3 != 3ll ) goto label$1472;
				label$1473:;
				{
					FBSTRING* vr$28 = fb_StrAllocTempDescZ( (char*)((uint8*)&FBC$ + 3295ll) );
					fb_PrintString( 0, (FBSTRING*)vr$28, 1 );
				}
				goto label$1463;
				label$1472:;
				if( TMP$828$3 != 4ll ) goto label$1474;
				label$1475:;
				{
					FBSTRING* vr$29 = fb_StrAllocTempDescZEx( (char*)"", 0ll );
					fb_PrintString( 0, (FBSTRING*)vr$29, 1 );
				}
				label$1474:;
				label$1463:;
			}
			FBCEND( 0ll );
		}
		label$1462:;
		label$1461:;
		FBCDETERMINEMAINNAME(  );
		if( HAVE_INPUT_FILES$1 != 0ll ) goto label$1477;
		{
			HPRINTOPTIONS( *(int64*)((uint8*)&FBC$ + 112ll) );
			FBCEND( 1ll );
		}
		label$1477:;
		label$1476:;
		HCOMPILEMODULES(  );
		int64 vr$30 = FBSHOULDRESTART(  );
		if( vr$30 != 0ll ) goto label$1479;
		{
			goto label$1457;
		}
		label$1479:;
		label$1478:;
		FBRESTARTENDREQUEST( 8ll );
		ERRPREINIT(  );
		HCHECKARGS(  );
		if( *(int64*)((uint8*)&FBC$ + 112ll) == 0ll ) goto label$1481;
		{
			FBSTRING* vr$31 = fb_StrAllocTempDescZEx( (char*)"Restarting fbc ...", 18ll );
			fb_PrintString( 0, (FBSTRING*)vr$31, 1 );
		}
		label$1481:;
		label$1480:;
	}
	label$1458:;
	goto label$1456;
	label$1457:;
	int64 vr$32 = HCOMPILEXPM(  );
	if( vr$32 != 0ll ) goto label$1483;
	{
		FBCEND( 1ll );
	}
	label$1483:;
	label$1482:;
	if( *(int64*)((uint8*)&FBC$ + 72ll) == 0ll ) goto label$1485;
	{
		FBCEND( 0ll );
	}
	label$1485:;
	label$1484:;
	int64 vr$33 = FBGETOPTION( 2ll );
	int64 vr$35 = FBGETOPTION( 2ll );
	if( ((int64)-(vr$33 != 0ll) & (int64)-(vr$35 != 3ll)) == 0ll ) goto label$1487;
	{
		HCOMPILESTAGE2MODULES(  );
	}
	label$1487:;
	label$1486:;
	if( *(int64*)((uint8*)&FBC$ + 88ll) == 0ll ) goto label$1489;
	{
		FBCEND( 0ll );
	}
	label$1489:;
	label$1488:;
	HASSEMBLEMODULES(  );
	HASSEMBLERCS(  );
	HASSEMBLEXPM(  );
	int64 vr$38 = FBGETOPTION( 0ll );
	if( vr$38 != 3ll ) goto label$1491;
	{
		FBCEND( 0ll );
	}
	label$1491:;
	label$1490:;
	HSETDEFAULTLIBPATHS(  );
	int64 vr$39 = FBGETOPTION( 39ll );
	int64 vr$40 = FBISCROSSCOMP(  );
	if( (vr$39 & ~vr$40) == 0ll ) goto label$1493;
	{
		HCOLLECTOBJINFO(  );
	}
	label$1493:;
	label$1492:;
	int64 vr$43 = FBGETOPTION( 0ll );
	if( vr$43 != 1ll ) goto label$1495;
	{
		int64 vr$44 = HARCHIVEFILES(  );
		if( vr$44 != 0ll ) goto label$1497;
		{
			FBCEND( 1ll );
		}
		label$1497:;
		label$1496:;
		FBCEND( 0ll );
	}
	label$1495:;
	label$1494:;
	if( *(int64*)((uint8*)&FBC$ + 2488ll) != 0ll ) goto label$1499;
	{
		HADDDEFAULTLIBS(  );
	}
	label$1499:;
	label$1498:;
	HEXCLUDELIBSFROMLINK(  );
	int64 vr$45 = HLINKFILES(  );
	if( vr$45 != 0ll ) goto label$1501;
	{
		FBCEND( 1ll );
	}
	label$1501:;
	label$1500:;
	FBCEND( 0ll );
	label$1:;
	fb_End( 0 );
	return fb$result$0;
}

static void _ZN11TSTRSETITEMaSERKS_( struct $11TSTRSETITEM* THIS$1, struct $11TSTRSETITEM* __FB_RHS__$1 )
{
	label$4:;
	fb_StrAssign( (void*)THIS$1, -1ll, (void*)__FB_RHS__$1, -1ll, 0 );
	*(int64*)((uint8*)THIS$1 + 24ll) = *(int64*)((uint8*)__FB_RHS__$1 + 24ll);
	*(struct $8HASHITEM**)((uint8*)THIS$1 + 32ll) = *(struct $8HASHITEM**)((uint8*)__FB_RHS__$1 + 32ll);
	label$5:;
}

static void _ZN10FBC_EXTOPTC1Ev( struct $10FBC_EXTOPT* THIS$1 )
{
	__builtin_memset( (FBSTRING*)THIS$1, 0, 24ll );
	__builtin_memset( (FBSTRING*)((uint8*)THIS$1 + 24ll), 0, 24ll );
	__builtin_memset( (FBSTRING*)((uint8*)THIS$1 + 48ll), 0, 24ll );
	label$10:;
	label$11:;
}

static void _ZN10FBC_EXTOPTaSERKS_( struct $10FBC_EXTOPT* THIS$1, struct $10FBC_EXTOPT* __FB_RHS__$1 )
{
	label$12:;
	fb_StrAssign( (void*)THIS$1, -1ll, (void*)__FB_RHS__$1, -1ll, 0 );
	fb_StrAssign( (void*)((uint8*)THIS$1 + 24ll), -1ll, (void*)((uint8*)__FB_RHS__$1 + 24ll), -1ll, 0 );
	fb_StrAssign( (void*)((uint8*)THIS$1 + 48ll), -1ll, (void*)((uint8*)__FB_RHS__$1 + 48ll), -1ll, 0 );
	label$13:;
}

static void _ZN10FBC_EXTOPTD1Ev( struct $10FBC_EXTOPT* THIS$1 )
{
	label$16:;
	label$17:;
	fb_StrDelete( (FBSTRING*)((uint8*)THIS$1 + 48ll) );
	fb_StrDelete( (FBSTRING*)((uint8*)THIS$1 + 24ll) );
	fb_StrDelete( (FBSTRING*)THIS$1 );
}

static void _ZN9FBCIOFILEC1Ev( struct $9FBCIOFILE* THIS$1 )
{
	__builtin_memset( (FBSTRING*)THIS$1, 0, 24ll );
	__builtin_memset( (FBSTRING**)((uint8*)THIS$1 + 24ll), 0, 8ll );
	__builtin_memset( (int64*)((uint8*)THIS$1 + 32ll), 0, 8ll );
	label$18:;
	label$19:;
}

static void _ZN9FBCIOFILEaSERKS_( struct $9FBCIOFILE* THIS$1, struct $9FBCIOFILE* __FB_RHS__$1 )
{
	label$20:;
	fb_StrAssign( (void*)THIS$1, -1ll, (void*)__FB_RHS__$1, -1ll, 0 );
	*(FBSTRING**)((uint8*)THIS$1 + 24ll) = *(FBSTRING**)((uint8*)__FB_RHS__$1 + 24ll);
	*(int64*)((uint8*)THIS$1 + 32ll) = *(int64*)((uint8*)__FB_RHS__$1 + 32ll);
	label$21:;
}

static void _ZN9FBCIOFILED1Ev( struct $9FBCIOFILE* THIS$1 )
{
	label$24:;
	label$25:;
	fb_StrDelete( (FBSTRING*)THIS$1 );
}

static void _ZN6FBCCTXC1Ev( struct $6FBCCTX* THIS$1 )
{
	__builtin_memset( (int64*)THIS$1, 0, 8ll );
	__builtin_memset( (struct $9FBCIOFILE**)((uint8*)THIS$1 + 8ll), 0, 8ll );
	__builtin_memset( (FBSTRING*)((uint8*)THIS$1 + 16ll), 0, 24ll );
	__builtin_memset( (int64*)((uint8*)THIS$1 + 40ll), 0, 8ll );
	__builtin_memset( (int64*)((uint8*)THIS$1 + 48ll), 0, 8ll );
	__builtin_memset( (int64*)((uint8*)THIS$1 + 56ll), 0, 8ll );
	__builtin_memset( (int64*)((uint8*)THIS$1 + 64ll), 0, 8ll );
	__builtin_memset( (int64*)((uint8*)THIS$1 + 72ll), 0, 8ll );
	__builtin_memset( (int64*)((uint8*)THIS$1 + 80ll), 0, 8ll );
	__builtin_memset( (int64*)((uint8*)THIS$1 + 88ll), 0, 8ll );
	__builtin_memset( (int64*)((uint8*)THIS$1 + 96ll), 0, 8ll );
	__builtin_memset( (int64*)((uint8*)THIS$1 + 104ll), 0, 8ll );
	__builtin_memset( (int64*)((uint8*)THIS$1 + 112ll), 0, 8ll );
	__builtin_memset( (int64*)((uint8*)THIS$1 + 120ll), 0, 8ll );
	__builtin_memset( (int64*)((uint8*)THIS$1 + 128ll), 0, 8ll );
	__builtin_memset( (int64*)((uint8*)THIS$1 + 136ll), 0, 8ll );
	__builtin_memset( (struct $5TLIST*)((uint8*)THIS$1 + 144ll), 0, 64ll );
	__builtin_memset( (struct $5TLIST*)((uint8*)THIS$1 + 208ll), 0, 64ll );
	_ZN9FBCIOFILEC1Ev( (struct $9FBCIOFILE*)((uint8*)THIS$1 + 272ll) );
	__builtin_memset( (struct $7TSTRSET*)((uint8*)THIS$1 + 312ll), 0, 88ll );
	__builtin_memset( (struct $5TLIST*)((uint8*)THIS$1 + 400ll), 0, 64ll );
	__builtin_memset( (struct $5TLIST*)((uint8*)THIS$1 + 464ll), 0, 64ll );
	__builtin_memset( (struct $7TSTRSET*)((uint8*)THIS$1 + 528ll), 0, 88ll );
	__builtin_memset( (struct $7TSTRSET*)((uint8*)THIS$1 + 616ll), 0, 88ll );
	__builtin_memset( (struct $7TSTRSET*)((uint8*)THIS$1 + 704ll), 0, 88ll );
	__builtin_memset( (struct $7TSTRSET*)((uint8*)THIS$1 + 792ll), 0, 88ll );
	__builtin_memset( (struct $7TSTRSET*)((uint8*)THIS$1 + 880ll), 0, 88ll );
	__builtin_memset( (char*)((uint8*)THIS$1 + 968ll), 0, 261ll );
	__builtin_memset( (char*)((uint8*)THIS$1 + 1229ll), 0, 261ll );
	__builtin_memset( (char*)((uint8*)THIS$1 + 1490ll), 0, 129ll );
	__builtin_memset( (int64*)((uint8*)THIS$1 + 1624ll), 0, 8ll );
	__builtin_memset( (char*)((uint8*)THIS$1 + 1632ll), 0, 261ll );
	__builtin_memset( (char*)((uint8*)THIS$1 + 1893ll), 0, 129ll );
	_ZN10FBC_EXTOPTC1Ev( (struct $10FBC_EXTOPT*)((uint8*)THIS$1 + 2024ll) );
	__builtin_memset( (char*)((uint8*)THIS$1 + 2096ll), 0, 129ll );
	__builtin_memset( (char*)((uint8*)THIS$1 + 2225ll), 0, 129ll );
	__builtin_memset( (char*)((uint8*)THIS$1 + 2354ll), 0, 129ll );
	__builtin_memset( (int64*)((uint8*)THIS$1 + 2488ll), 0, 8ll );
	__builtin_memset( (int64*)((uint8*)THIS$1 + 2496ll), 0, 8ll );
	__builtin_memset( (int64*)((uint8*)THIS$1 + 2504ll), 0, 8ll );
	__builtin_memset( (char*)((uint8*)THIS$1 + 2512ll), 0, 261ll );
	__builtin_memset( (char*)((uint8*)THIS$1 + 2773ll), 0, 261ll );
	__builtin_memset( (char*)((uint8*)THIS$1 + 3034ll), 0, 261ll );
	__builtin_memset( (char*)((uint8*)THIS$1 + 3295ll), 0, 261ll );
	__builtin_memset( (char*)((uint8*)THIS$1 + 3556ll), 0, 261ll );
	__builtin_memset( (struct $10FBC_OBJINF*)((uint8*)THIS$1 + 3824ll), 0, 16ll );
	label$26:;
	label$27:;
}

static void _ZN6FBCCTXaSERKS_( struct $6FBCCTX* THIS$1, struct $6FBCCTX* __FB_RHS__$1 )
{
	label$28:;
	*(int64*)THIS$1 = *(int64*)__FB_RHS__$1;
	*(struct $9FBCIOFILE**)((uint8*)THIS$1 + 8ll) = *(struct $9FBCIOFILE**)((uint8*)__FB_RHS__$1 + 8ll);
	fb_StrAssign( (void*)((uint8*)THIS$1 + 16ll), -1ll, (void*)((uint8*)__FB_RHS__$1 + 16ll), -1ll, 0 );
	*(int64*)((uint8*)THIS$1 + 40ll) = *(int64*)((uint8*)__FB_RHS__$1 + 40ll);
	*(int64*)((uint8*)THIS$1 + 48ll) = *(int64*)((uint8*)__FB_RHS__$1 + 48ll);
	*(int64*)((uint8*)THIS$1 + 56ll) = *(int64*)((uint8*)__FB_RHS__$1 + 56ll);
	*(int64*)((uint8*)THIS$1 + 64ll) = *(int64*)((uint8*)__FB_RHS__$1 + 64ll);
	*(int64*)((uint8*)THIS$1 + 72ll) = *(int64*)((uint8*)__FB_RHS__$1 + 72ll);
	*(int64*)((uint8*)THIS$1 + 80ll) = *(int64*)((uint8*)__FB_RHS__$1 + 80ll);
	*(int64*)((uint8*)THIS$1 + 88ll) = *(int64*)((uint8*)__FB_RHS__$1 + 88ll);
	*(int64*)((uint8*)THIS$1 + 96ll) = *(int64*)((uint8*)__FB_RHS__$1 + 96ll);
	*(int64*)((uint8*)THIS$1 + 104ll) = *(int64*)((uint8*)__FB_RHS__$1 + 104ll);
	*(int64*)((uint8*)THIS$1 + 112ll) = *(int64*)((uint8*)__FB_RHS__$1 + 112ll);
	*(int64*)((uint8*)THIS$1 + 120ll) = *(int64*)((uint8*)__FB_RHS__$1 + 120ll);
	*(int64*)((uint8*)THIS$1 + 128ll) = *(int64*)((uint8*)__FB_RHS__$1 + 128ll);
	*(int64*)((uint8*)THIS$1 + 136ll) = *(int64*)((uint8*)__FB_RHS__$1 + 136ll);
	__builtin_memcpy( (struct $5TLIST*)((uint8*)THIS$1 + 144ll), (struct $5TLIST*)((uint8*)__FB_RHS__$1 + 144ll), 64 );
	__builtin_memcpy( (struct $5TLIST*)((uint8*)THIS$1 + 208ll), (struct $5TLIST*)((uint8*)__FB_RHS__$1 + 208ll), 64 );
	_ZN9FBCIOFILEaSERKS_( (struct $9FBCIOFILE*)((uint8*)THIS$1 + 272ll), (struct $9FBCIOFILE*)((uint8*)__FB_RHS__$1 + 272ll) );
	__builtin_memcpy( (struct $7TSTRSET*)((uint8*)THIS$1 + 312ll), (struct $7TSTRSET*)((uint8*)__FB_RHS__$1 + 312ll), 88 );
	__builtin_memcpy( (struct $5TLIST*)((uint8*)THIS$1 + 400ll), (struct $5TLIST*)((uint8*)__FB_RHS__$1 + 400ll), 64 );
	__builtin_memcpy( (struct $5TLIST*)((uint8*)THIS$1 + 464ll), (struct $5TLIST*)((uint8*)__FB_RHS__$1 + 464ll), 64 );
	__builtin_memcpy( (struct $7TSTRSET*)((uint8*)THIS$1 + 528ll), (struct $7TSTRSET*)((uint8*)__FB_RHS__$1 + 528ll), 88 );
	__builtin_memcpy( (struct $7TSTRSET*)((uint8*)THIS$1 + 616ll), (struct $7TSTRSET*)((uint8*)__FB_RHS__$1 + 616ll), 88 );
	__builtin_memcpy( (struct $7TSTRSET*)((uint8*)THIS$1 + 704ll), (struct $7TSTRSET*)((uint8*)__FB_RHS__$1 + 704ll), 88 );
	__builtin_memcpy( (struct $7TSTRSET*)((uint8*)THIS$1 + 792ll), (struct $7TSTRSET*)((uint8*)__FB_RHS__$1 + 792ll), 88 );
	__builtin_memcpy( (struct $7TSTRSET*)((uint8*)THIS$1 + 880ll), (struct $7TSTRSET*)((uint8*)__FB_RHS__$1 + 880ll), 88 );
	fb_StrAssign( (void*)((uint8*)THIS$1 + 968ll), 261ll, (void*)((uint8*)__FB_RHS__$1 + 968ll), 261ll, 0 );
	fb_StrAssign( (void*)((uint8*)THIS$1 + 1229ll), 261ll, (void*)((uint8*)__FB_RHS__$1 + 1229ll), 261ll, 0 );
	fb_StrAssign( (void*)((uint8*)THIS$1 + 1490ll), 129ll, (void*)((uint8*)__FB_RHS__$1 + 1490ll), 129ll, 0 );
	*(int64*)((uint8*)THIS$1 + 1624ll) = *(int64*)((uint8*)__FB_RHS__$1 + 1624ll);
	fb_StrAssign( (void*)((uint8*)THIS$1 + 1632ll), 261ll, (void*)((uint8*)__FB_RHS__$1 + 1632ll), 261ll, 0 );
	fb_StrAssign( (void*)((uint8*)THIS$1 + 1893ll), 129ll, (void*)((uint8*)__FB_RHS__$1 + 1893ll), 129ll, 0 );
	_ZN10FBC_EXTOPTaSERKS_( (struct $10FBC_EXTOPT*)((uint8*)THIS$1 + 2024ll), (struct $10FBC_EXTOPT*)((uint8*)__FB_RHS__$1 + 2024ll) );
	fb_StrAssign( (void*)((uint8*)THIS$1 + 2096ll), 129ll, (void*)((uint8*)__FB_RHS__$1 + 2096ll), 129ll, 0 );
	fb_StrAssign( (void*)((uint8*)THIS$1 + 2225ll), 129ll, (void*)((uint8*)__FB_RHS__$1 + 2225ll), 129ll, 0 );
	fb_StrAssign( (void*)((uint8*)THIS$1 + 2354ll), 129ll, (void*)((uint8*)__FB_RHS__$1 + 2354ll), 129ll, 0 );
	*(int64*)((uint8*)THIS$1 + 2488ll) = *(int64*)((uint8*)__FB_RHS__$1 + 2488ll);
	*(int64*)((uint8*)THIS$1 + 2496ll) = *(int64*)((uint8*)__FB_RHS__$1 + 2496ll);
	*(int64*)((uint8*)THIS$1 + 2504ll) = *(int64*)((uint8*)__FB_RHS__$1 + 2504ll);
	fb_StrAssign( (void*)((uint8*)THIS$1 + 2512ll), 261ll, (void*)((uint8*)__FB_RHS__$1 + 2512ll), 261ll, 0 );
	fb_StrAssign( (void*)((uint8*)THIS$1 + 2773ll), 261ll, (void*)((uint8*)__FB_RHS__$1 + 2773ll), 261ll, 0 );
	fb_StrAssign( (void*)((uint8*)THIS$1 + 3034ll), 261ll, (void*)((uint8*)__FB_RHS__$1 + 3034ll), 261ll, 0 );
	fb_StrAssign( (void*)((uint8*)THIS$1 + 3295ll), 261ll, (void*)((uint8*)__FB_RHS__$1 + 3295ll), 261ll, 0 );
	fb_StrAssign( (void*)((uint8*)THIS$1 + 3556ll), 261ll, (void*)((uint8*)__FB_RHS__$1 + 3556ll), 261ll, 0 );
	__builtin_memcpy( (struct $10FBC_OBJINF*)((uint8*)THIS$1 + 3824ll), (struct $10FBC_OBJINF*)((uint8*)__FB_RHS__$1 + 3824ll), 16 );
	label$29:;
}

static void _ZN6FBCCTXD1Ev( struct $6FBCCTX* THIS$1 )
{
	label$32:;
	label$33:;
	_ZN10FBC_EXTOPTD1Ev( (struct $10FBC_EXTOPT*)((uint8*)THIS$1 + 2024ll) );
	_ZN9FBCIOFILED1Ev( (struct $9FBCIOFILE*)((uint8*)THIS$1 + 272ll) );
	fb_StrDelete( (FBSTRING*)((uint8*)THIS$1 + 16ll) );
}

static void FBCINIT( void )
{
	label$34:;
	*(int64*)((uint8*)&FBC$ + 40ll) = -1ll;
	*(int64*)((uint8*)&FBC$ + 48ll) = -1ll;
	*(int64*)((uint8*)&FBC$ + 64ll) = -1ll;
	LISTINIT( (struct $5TLIST*)((uint8*)&FBC$ + 144ll), 64ll, 40ll, 4294967295ll );
	LISTINIT( (struct $5TLIST*)((uint8*)&FBC$ + 208ll), 16ll, 40ll, 4294967295ll );
	STRSETINIT( (struct $7TSTRSET*)((uint8*)&FBC$ + 312ll), 16ll );
	STRLISTINIT( (struct $5TLIST*)((uint8*)&FBC$ + 400ll), 64ll );
	STRLISTINIT( (struct $5TLIST*)((uint8*)&FBC$ + 464ll), 16ll );
	STRSETINIT( (struct $7TSTRSET*)((uint8*)&FBC$ + 528ll), 16ll );
	STRSETINIT( (struct $7TSTRSET*)((uint8*)&FBC$ + 616ll), 16ll );
	STRSETINIT( (struct $7TSTRSET*)((uint8*)&FBC$ + 704ll), 16ll );
	STRSETINIT( (struct $7TSTRSET*)((uint8*)&FBC$ + 792ll), 32ll );
	STRSETINIT( (struct $7TSTRSET*)((uint8*)&FBC$ + 880ll), 32ll );
	FBGLOBALINIT(  );
	int64 vr$10 = FBGETOPTION( 10ll );
	*($7FB_LANG*)((uint8*)&FBC$ + 3824ll) = vr$10;
	*(int64*)((uint8*)&FBC$ + 136ll) = -1ll;
	label$35:;
}

static void HSETOUTNAME( void )
{
	label$36:;
	int64 vr$1 = fb_StrLen( (void*)((uint8*)&FBC$ + 968ll), 261ll );
	if( vr$1 <= 0ll ) goto label$39;
	{
		goto label$37;
	}
	label$39:;
	label$38:;
	int64 vr$2 = FBGETOPTION( 0ll );
	if( vr$2 != 1ll ) goto label$41;
	{
		FBSTRING TMP$41$2;
		FBSTRING TMP$42$2;
		FBSTRING TMP$43$2;
		FBSTRING* vr$4 = HSTRIPPATH( (char*)((uint8*)&FBC$ + 1229ll) );
		FBSTRING* vr$6 = HSTRIPFILENAME( (char*)((uint8*)&FBC$ + 1229ll) );
		__builtin_memset( &TMP$41$2, 0, 24ll );
		FBSTRING* vr$9 = fb_StrConcat( &TMP$41$2, (void*)vr$6, -1ll, (void*)"lib", 4ll );
		__builtin_memset( &TMP$42$2, 0, 24ll );
		FBSTRING* vr$12 = fb_StrConcat( &TMP$42$2, (void*)vr$9, -1ll, (void*)vr$4, -1ll );
		__builtin_memset( &TMP$43$2, 0, 24ll );
		FBSTRING* vr$15 = fb_StrConcat( &TMP$43$2, (void*)vr$12, -1ll, (void*)".a", 3ll );
		fb_StrAssign( (void*)((uint8*)&FBC$ + 968ll), 261ll, (void*)vr$15, -1ll, 0 );
		goto label$37;
	}
	label$41:;
	label$40:;
	fb_StrAssign( (void*)((uint8*)&FBC$ + 968ll), 261ll, (void*)((uint8*)&FBC$ + 1229ll), 261ll, 0 );
	{
		int64 TMP$44$2;
		int64 vr$19 = FBGETOPTION( 0ll );
		TMP$44$2 = vr$19;
		if( TMP$44$2 != 0ll ) goto label$43;
		label$44:;
		{
			{
				int64 TMP$45$4;
				int64 vr$20 = FBGETOPTION( 3ll );
				TMP$45$4 = vr$20;
				if( TMP$45$4 == 4ll ) goto label$47;
				label$48:;
				if( TMP$45$4 == 1ll ) goto label$47;
				label$49:;
				if( TMP$45$4 == 0ll ) goto label$47;
				label$50:;
				if( TMP$45$4 != 5ll ) goto label$46;
				label$47:;
				{
					FBSTRING TMP$46$5;
					__builtin_memset( &TMP$46$5, 0, 24ll );
					FBSTRING* vr$24 = fb_StrConcat( &TMP$46$5, (void*)((uint8*)&FBC$ + 968ll), 261ll, (void*)".exe", 5ll );
					fb_StrAssign( (void*)((uint8*)&FBC$ + 968ll), 261ll, (void*)vr$24, -1ll, 0 );
				}
				goto label$45;
				label$46:;
				if( TMP$45$4 != 12ll ) goto label$51;
				label$52:;
				{
					FBSTRING TMP$48$5;
					__builtin_memset( &TMP$48$5, 0, 24ll );
					FBSTRING* vr$29 = fb_StrConcat( &TMP$48$5, (void*)((uint8*)&FBC$ + 968ll), 261ll, (void*)".html", 6ll );
					fb_StrAssign( (void*)((uint8*)&FBC$ + 968ll), 261ll, (void*)vr$29, -1ll, 0 );
				}
				label$51:;
				label$45:;
			}
		}
		goto label$42;
		label$43:;
		if( TMP$44$2 != 2ll ) goto label$53;
		label$54:;
		{
			{
				int64 TMP$49$4;
				int64 vr$31 = FBGETOPTION( 3ll );
				TMP$49$4 = vr$31;
				if( TMP$49$4 == 1ll ) goto label$57;
				label$58:;
				if( TMP$49$4 != 0ll ) goto label$56;
				label$57:;
				{
					FBSTRING TMP$51$5;
					__builtin_memset( &TMP$51$5, 0, 24ll );
					FBSTRING* vr$35 = fb_StrConcat( &TMP$51$5, (void*)((uint8*)&FBC$ + 968ll), 261ll, (void*)".dll", 5ll );
					fb_StrAssign( (void*)((uint8*)&FBC$ + 968ll), 261ll, (void*)vr$35, -1ll, 0 );
				}
				goto label$55;
				label$56:;
				if( TMP$49$4 == 2ll ) goto label$60;
				label$61:;
				if( TMP$49$4 == 3ll ) goto label$60;
				label$62:;
				if( TMP$49$4 == 10ll ) goto label$60;
				label$63:;
				if( TMP$49$4 == 6ll ) goto label$60;
				label$64:;
				if( TMP$49$4 == 9ll ) goto label$60;
				label$65:;
				if( TMP$49$4 == 11ll ) goto label$60;
				label$66:;
				if( TMP$49$4 == 7ll ) goto label$60;
				label$67:;
				if( TMP$49$4 != 8ll ) goto label$59;
				label$60:;
				{
					FBSTRING TMP$53$5;
					FBSTRING TMP$54$5;
					FBSTRING TMP$55$5;
					FBSTRING* vr$38 = HSTRIPPATH( (char*)((uint8*)&FBC$ + 968ll) );
					FBSTRING* vr$40 = HSTRIPFILENAME( (char*)((uint8*)&FBC$ + 968ll) );
					__builtin_memset( &TMP$53$5, 0, 24ll );
					FBSTRING* vr$43 = fb_StrConcat( &TMP$53$5, (void*)vr$40, -1ll, (void*)"lib", 4ll );
					__builtin_memset( &TMP$54$5, 0, 24ll );
					FBSTRING* vr$46 = fb_StrConcat( &TMP$54$5, (void*)vr$43, -1ll, (void*)vr$38, -1ll );
					__builtin_memset( &TMP$55$5, 0, 24ll );
					FBSTRING* vr$49 = fb_StrConcat( &TMP$55$5, (void*)vr$46, -1ll, (void*)".so", 4ll );
					fb_StrAssign( (void*)((uint8*)&FBC$ + 968ll), 261ll, (void*)vr$49, -1ll, 0 );
				}
				goto label$55;
				label$59:;
				if( TMP$49$4 != 4ll ) goto label$68;
				label$69:;
				{
					FBSTRING TMP$57$5;
					__builtin_memset( &TMP$57$5, 0, 24ll );
					FBSTRING* vr$54 = fb_StrConcat( &TMP$57$5, (void*)((uint8*)&FBC$ + 968ll), 261ll, (void*)".dxe", 5ll );
					fb_StrAssign( (void*)((uint8*)&FBC$ + 968ll), 261ll, (void*)vr$54, -1ll, 0 );
				}
				label$68:;
				label$55:;
			}
		}
		label$53:;
		label$42:;
	}
	label$37:;
}

static void FBCEND( int64 ERRNUM$1 )
{
	label$70:;
	struct $11TSTRSETITEM* FILE$1;
	void* vr$1 = LISTGETHEAD( (struct $5TLIST*)((uint8*)&FBC$ + 312ll) );
	FILE$1 = (struct $11TSTRSETITEM*)vr$1;
	label$72:;
	if( FILE$1 == (struct $11TSTRSETITEM*)0ull ) goto label$73;
	{
		int32 vr$4 = fb_FileKill( (FBSTRING*)FILE$1 );
		if( (int64)vr$4 == 0ll ) goto label$75;
		{
		}
		label$75:;
		label$74:;
		void* vr$6 = LISTGETNEXT( (void*)FILE$1 );
		FILE$1 = (struct $11TSTRSETITEM*)vr$6;
	}
	goto label$72;
	label$73:;
	fb_End( (int32)ERRNUM$1 );
	label$71:;
}

static void FBCADDTEMP( FBSTRING* FILE$1 )
{
	label$76:;
	STRSETADD( (struct $7TSTRSET*)((uint8*)&FBC$ + 312ll), FILE$1, 0ll );
	label$77:;
}

static void FBCREMOVETEMP( FBSTRING* FILE$1 )
{
	label$78:;
	STRSETDEL( (struct $7TSTRSET*)((uint8*)&FBC$ + 312ll), (FBSTRING*)FILE$1 );
	label$79:;
}

static FBSTRING* FBCADDOBJ( FBSTRING* FILE$1 )
{
	FBSTRING* fb$result$1;
	__builtin_memset( &fb$result$1, 0, 8ll );
	label$80:;
	FBSTRING* S$1;
	void* vr$2 = LISTNEWNODE( (struct $5TLIST*)((uint8*)&FBC$ + 400ll) );
	S$1 = (FBSTRING*)vr$2;
	fb_StrAssign( (void*)S$1, -1ll, (void*)FILE$1, -1ll, 0 );
	fb$result$1 = S$1;
	label$81:;
	return fb$result$1;
}

static FBSTRING* HGET1STOUTPUTLINEFROMCOMMAND( FBSTRING* CMD$1 )
{
	FBSTRING fb$result$1;
	__builtin_memset( &fb$result$1, 0, 24ll );
	label$82:;
	int32 F$1;
	int32 vr$1 = fb_FileFree(  );
	F$1 = vr$1;
	int32 vr$2 = fb_FileOpenPipe( (FBSTRING*)CMD$1, 2u, 0u, 0u, F$1, 0, (char*)0ull );
	if( (int64)vr$2 == 0ll ) goto label$85;
	{
		goto label$83;
	}
	label$85:;
	label$84:;
	FBSTRING LN$1;
	__builtin_memset( &LN$1, 0, 24ll );
	fb_FileInput( F$1 );
	fb_InputString( (void*)&LN$1, -1ll, 0 );
	int32 vr$6 = fb_FileClose( F$1 );
	if( (int64)vr$6 == 0ll ) goto label$86;
	void* vr$8 = fb_ErrorThrowAt( 303, (char*)"/root/FreeBASIC-1.10.3/src/compiler/fbc.bas", (void*)0ull, (void*)0ull );
	goto *vr$8;
	label$86:;
	fb_StrInit( (void*)&fb$result$1, -1ll, (void*)&LN$1, -1ll, 0 );
	fb_StrDelete( (FBSTRING*)&LN$1 );
	goto label$83;
	fb_StrDelete( (FBSTRING*)&LN$1 );
	label$83:;
	FBSTRING* vr$14 = fb_StrAllocTempResult( (FBSTRING*)&fb$result$1 );
	return vr$14;
}

static FBSTRING* FBCQUERYGCC( FBSTRING* OPTIONS$1 )
{
	FBSTRING TMP$62$1;
	FBSTRING fb$result$1;
	__builtin_memset( &fb$result$1, 0, 24ll );
	label$87:;
	FBSTRING PATH$1;
	__builtin_memset( &PATH$1, 0, 24ll );
	FBCFINDBIN( 3ll, &PATH$1 );
	{
		int64 TMP$59$2;
		int64 vr$3 = FBGETCPUFAMILY(  );
		TMP$59$2 = vr$3;
		if( TMP$59$2 != 0ll ) goto label$90;
		label$91:;
		{
			fb_StrConcatAssign( (void*)&PATH$1, -1ll, (void*)" -m32", 6ll, 0 );
		}
		goto label$89;
		label$90:;
		if( TMP$59$2 != 1ll ) goto label$92;
		label$93:;
		{
			fb_StrConcatAssign( (void*)&PATH$1, -1ll, (void*)" -m64", 6ll, 0 );
		}
		goto label$89;
		label$92:;
		if( TMP$59$2 != 4ll ) goto label$94;
		label$95:;
		{
			fb_StrConcatAssign( (void*)&PATH$1, -1ll, (void*)" -m32", 6ll, 0 );
		}
		goto label$89;
		label$94:;
		if( TMP$59$2 == 5ll ) goto label$97;
		label$98:;
		if( TMP$59$2 != 6ll ) goto label$96;
		label$97:;
		{
			fb_StrConcatAssign( (void*)&PATH$1, -1ll, (void*)" -m64", 6ll, 0 );
		}
		label$96:;
		label$89:;
	}
	__builtin_memset( &TMP$62$1, 0, 24ll );
	FBSTRING* vr$11 = fb_StrConcat( &TMP$62$1, (void*)&PATH$1, -1ll, (void*)OPTIONS$1, -1ll );
	fb_StrAssign( (void*)&PATH$1, -1ll, (void*)vr$11, -1ll, 0 );
	int64 FF$1;
	int32 vr$13 = fb_FileFree(  );
	FF$1 = (int64)vr$13;
	int32 vr$17 = fb_FileOpenPipe( (FBSTRING*)&PATH$1, 2u, 0u, 0u, (int32)FF$1, 0, (char*)0ull );
	if( (int64)vr$17 == 0ll ) goto label$100;
	{
		fb_StrDelete( (FBSTRING*)&PATH$1 );
		goto label$88;
	}
	label$100:;
	label$99:;
	FBSTRING RET$1;
	__builtin_memset( &RET$1, 0, 24ll );
	fb_FileInput( (int32)FF$1 );
	fb_InputString( (void*)&RET$1, -1ll, 0 );
	int32 vr$24 = fb_FileClose( (int32)FF$1 );
	if( (int64)vr$24 == 0ll ) goto label$101;
	void* vr$26 = fb_ErrorThrowAt( 334, (char*)"/root/FreeBASIC-1.10.3/src/compiler/fbc.bas", (void*)0ull, (void*)0ull );
	goto *vr$26;
	label$101:;
	fb_StrInit( (void*)&fb$result$1, -1ll, (void*)&RET$1, -1ll, 0 );
	fb_StrDelete( (FBSTRING*)&RET$1 );
	fb_StrDelete( (FBSTRING*)&PATH$1 );
	goto label$88;
	fb_StrDelete( (FBSTRING*)&RET$1 );
	fb_StrDelete( (FBSTRING*)&PATH$1 );
	label$88:;
	FBSTRING* vr$34 = fb_StrAllocTempResult( (FBSTRING*)&fb$result$1 );
	return vr$34;
}

static FBSTRING* FBCBUILDPATHTOLIBFILE( char* FILE$1 )
{
	FBSTRING TMP$63$1;
	FBSTRING TMP$64$1;
	FBSTRING TMP$67$1;
	FBSTRING TMP$68$1;
	FBSTRING fb$result$1;
	__builtin_memset( &fb$result$1, 0, 24ll );
	label$102:;
	FBSTRING FOUND$1;
	__builtin_memset( &FOUND$1, 0, 24ll );
	__builtin_memset( &TMP$63$1, 0, 24ll );
	FBSTRING* vr$5 = fb_StrConcat( &TMP$63$1, (void*)((uint8*)&FBC$ + 3295ll), 261ll, (void*)"/", 2ll );
	__builtin_memset( &TMP$64$1, 0, 24ll );
	FBSTRING* vr$8 = fb_StrConcat( &TMP$64$1, (void*)vr$5, -1ll, (void*)FILE$1, 0ll );
	fb_StrAssign( (void*)&FOUND$1, -1ll, (void*)vr$8, -1ll, 0 );
	int64 vr$10 = HFILEEXISTS( (char*)*(char**)&FOUND$1 );
	if( vr$10 == 0ll ) goto label$105;
	{
		fb_StrInit( (void*)&fb$result$1, -1ll, (void*)&FOUND$1, -1ll, 0 );
		fb_StrDelete( (FBSTRING*)&FOUND$1 );
		goto label$103;
	}
	label$105:;
	label$104:;
	FBSTRING PATH$1;
	__builtin_memset( &PATH$1, 0, 24ll );
	FBCFINDBIN( 3ll, &PATH$1 );
	{
		int64 TMP$65$2;
		int64 vr$16 = FBGETCPUFAMILY(  );
		TMP$65$2 = vr$16;
		if( TMP$65$2 != 0ll ) goto label$107;
		label$108:;
		{
			fb_StrConcatAssign( (void*)&PATH$1, -1ll, (void*)" -m32", 6ll, 0 );
		}
		goto label$106;
		label$107:;
		if( TMP$65$2 != 1ll ) goto label$109;
		label$110:;
		{
			fb_StrConcatAssign( (void*)&PATH$1, -1ll, (void*)" -m64", 6ll, 0 );
		}
		goto label$106;
		label$109:;
		if( TMP$65$2 != 4ll ) goto label$111;
		label$112:;
		{
			fb_StrConcatAssign( (void*)&PATH$1, -1ll, (void*)" -m32", 6ll, 0 );
		}
		goto label$106;
		label$111:;
		if( TMP$65$2 == 5ll ) goto label$114;
		label$115:;
		if( TMP$65$2 != 6ll ) goto label$113;
		label$114:;
		{
			fb_StrConcatAssign( (void*)&PATH$1, -1ll, (void*)" -m64", 6ll, 0 );
		}
		label$113:;
		label$106:;
	}
	__builtin_memset( &TMP$67$1, 0, 24ll );
	FBSTRING* vr$23 = fb_StrConcat( &TMP$67$1, (void*)" -print-file-name=", 19ll, (void*)FILE$1, 0ll );
	__builtin_memset( &TMP$68$1, 0, 24ll );
	FBSTRING* vr$27 = fb_StrConcat( &TMP$68$1, (void*)&PATH$1, -1ll, (void*)vr$23, -1ll );
	fb_StrAssign( (void*)&PATH$1, -1ll, (void*)vr$27, -1ll, 0 );
	FBSTRING* vr$30 = HGET1STOUTPUTLINEFROMCOMMAND( &PATH$1 );
	fb_StrAssign( (void*)&FOUND$1, -1ll, (void*)vr$30, -1ll, 0 );
	int64 vr$33 = fb_StrLen( (void*)&FOUND$1, -1ll );
	if( vr$33 != 0ll ) goto label$117;
	{
		fb_StrDelete( (FBSTRING*)&PATH$1 );
		fb_StrDelete( (FBSTRING*)&FOUND$1 );
		goto label$103;
	}
	label$117:;
	label$116:;
	FBSTRING* vr$36 = HSTRIPPATH( (char*)*(char**)&FOUND$1 );
	int32 vr$38 = fb_StrCompare( (void*)&FOUND$1, -1ll, (void*)vr$36, -1ll );
	if( (int64)vr$38 != 0ll ) goto label$119;
	{
		fb_StrDelete( (FBSTRING*)&PATH$1 );
		fb_StrDelete( (FBSTRING*)&FOUND$1 );
		goto label$103;
	}
	label$119:;
	label$118:;
	fb_StrAssign( (void*)&fb$result$1, -1ll, (void*)&FOUND$1, -1ll, 0 );
	fb_StrDelete( (FBSTRING*)&PATH$1 );
	fb_StrDelete( (FBSTRING*)&FOUND$1 );
	label$103:;
	FBSTRING* vr$47 = fb_StrAllocTempResult( (FBSTRING*)&fb$result$1 );
	return vr$47;
}

static FBSTRING* FBCFINDLIBFILE( char* FILE$1 )
{
	FBSTRING fb$result$1;
	__builtin_memset( &fb$result$1, 0, 24ll );
	label$120:;
	FBSTRING FOUND$1;
	__builtin_memset( &FOUND$1, 0, 24ll );
	FBSTRING* vr$2 = FBCBUILDPATHTOLIBFILE( FILE$1 );
	fb_StrAssign( (void*)&FOUND$1, -1ll, (void*)vr$2, -1ll, 0 );
	int64 vr$5 = fb_StrLen( (void*)&FOUND$1, -1ll );
	if( vr$5 <= 0ll ) goto label$123;
	{
		int64 vr$6 = HFILEEXISTS( (char*)*(char**)&FOUND$1 );
		if( vr$6 != 0ll ) goto label$125;
		{
			fb_StrAssign( (void*)&FOUND$1, -1ll, (void*)"", 1ll, 0 );
		}
		label$125:;
		label$124:;
	}
	label$123:;
	label$122:;
	fb_StrAssign( (void*)&fb$result$1, -1ll, (void*)&FOUND$1, -1ll, 0 );
	fb_StrDelete( (FBSTRING*)&FOUND$1 );
	label$121:;
	FBSTRING* vr$12 = fb_StrAllocTempResult( (FBSTRING*)&fb$result$1 );
	return vr$12;
}

static void FBCADDDEFLIBPATH( FBSTRING* PATH$1 )
{
	label$126:;
	STRSETADD( (struct $7TSTRSET*)((uint8*)&FBC$ + 880ll), PATH$1, -1ll );
	label$127:;
}

static void FBCADDLIBPATHFOR( char* LIBNAME$1 )
{
	FBSTRING TMP$69$1;
	label$128:;
	FBSTRING PATH$1;
	__builtin_memset( &PATH$1, 0, 24ll );
	__builtin_memset( &TMP$69$1, 0, 24ll );
	FBSTRING* vr$2 = FBCBUILDPATHTOLIBFILE( LIBNAME$1 );
	fb_StrAssign( (void*)&TMP$69$1, -1ll, (void*)vr$2, -1ll, 0 );
	FBSTRING* vr$4 = HSTRIPFILENAME( (char*)*(char**)&TMP$69$1 );
	fb_StrAssign( (void*)&PATH$1, -1ll, (void*)vr$4, -1ll, 0 );
	fb_StrDelete( (FBSTRING*)&TMP$69$1 );
	FBSTRING* vr$8 = PATHSTRIPDIV( &PATH$1 );
	fb_StrAssign( (void*)&PATH$1, -1ll, (void*)vr$8, -1ll, 0 );
	int64 vr$11 = fb_StrLen( (void*)&PATH$1, -1ll );
	if( vr$11 <= 0ll ) goto label$131;
	{
		FBCADDDEFLIBPATH( &PATH$1 );
	}
	label$131:;
	label$130:;
	fb_StrDelete( (FBSTRING*)&PATH$1 );
	label$129:;
}

static void FBCFINDBIN( int64 TOOL$1, FBSTRING* PATH$1 )
{
	label$132:;
	if( (*(int64*)(((int64)(struct $11FBCTOOLINFO*)FBCTOOLTB$ + (TOOL$1 * 288ll)) + 16ll) & 4ll) == 0ll ) goto label$135;
	{
		fb_StrAssign( (void*)PATH$1, -1ll, (void*)(((int64)(struct $11FBCTOOLINFO*)FBCTOOLTB$ + (TOOL$1 * 288ll)) + 24ll), 261ll, 0 );
		goto label$133;
	}
	label$135:;
	label$134:;
	*($11FBCTOOLFLAG*)(((int64)(struct $11FBCTOOLINFO*)FBCTOOLTB$ + (TOOL$1 * 288ll)) + 16ll) = *(int64*)(((int64)(struct $11FBCTOOLINFO*)FBCTOOLTB$ + (TOOL$1 * 288ll)) + 16ll) & -9ll;
	if( (*(int64*)(((int64)(struct $11FBCTOOLINFO*)FBCTOOLTB$ + (TOOL$1 * 288ll)) + 16ll) & 2ll) == 0ll ) goto label$137;
	{
		FBSTRING* vr$11 = fb_StrAllocTempDescZ( (char*)((int64)(struct $11FBCTOOLINFO*)FBCTOOLTB$ + (TOOL$1 * 288ll)) );
		FBSTRING* vr$12 = fb_StrUcase2( (FBSTRING*)vr$11, 0 );
		FBSTRING* vr$13 = fb_GetEnviron( (FBSTRING*)vr$12 );
		fb_StrAssign( (void*)PATH$1, -1ll, (void*)vr$13, -1ll, 0 );
	}
	label$137:;
	label$136:;
	int64 vr$14 = fb_StrLen( (void*)PATH$1, -1ll );
	if( vr$14 != 0ll ) goto label$139;
	{
		FBSTRING TMP$70$2;
		FBSTRING TMP$71$2;
		__builtin_memset( &TMP$70$2, 0, 24ll );
		FBSTRING* vr$20 = fb_StrConcat( &TMP$70$2, (void*)((uint8*)&FBC$ + 2773ll), 261ll, (void*)((int64)(struct $11FBCTOOLINFO*)FBCTOOLTB$ + (TOOL$1 * 288ll)), 16ll );
		__builtin_memset( &TMP$71$2, 0, 24ll );
		FBSTRING* vr$23 = fb_StrConcat( &TMP$71$2, (void*)vr$20, -1ll, (void*)".exe", 5ll );
		fb_StrAssign( (void*)PATH$1, -1ll, (void*)vr$23, -1ll, 0 );
		int64 vr$25 = HFILEEXISTS( (char*)*(char**)PATH$1 );
		if( vr$25 != 0ll ) goto label$141;
		{
			{
				int64 TMP$72$4;
				int64 vr$26 = FBGETOPTION( 2ll );
				TMP$72$4 = vr$26;
				if( TMP$72$4 != 1ll ) goto label$143;
				label$144:;
				{
					if( TOOL$1 != 0ll ) goto label$146;
					{
						FBSTRING TMP$74$6;
						__builtin_memset( &TMP$74$6, 0, 24ll );
						fb_StrAssign( (void*)&TMP$74$6, -1ll, (void*)" -print-prog-name=as", 21ll, 0 );
						FBSTRING* vr$30 = FBCQUERYGCC( &TMP$74$6 );
						fb_StrAssign( (void*)PATH$1, -1ll, (void*)vr$30, -1ll, 0 );
						fb_StrDelete( (FBSTRING*)&TMP$74$6 );
					}
					goto label$145;
					label$146:;
					if( TOOL$1 != 2ll ) goto label$147;
					{
						FBSTRING TMP$76$6;
						__builtin_memset( &TMP$76$6, 0, 24ll );
						fb_StrAssign( (void*)&TMP$76$6, -1ll, (void*)" -print-prog-name=ld", 21ll, 0 );
						FBSTRING* vr$35 = FBCQUERYGCC( &TMP$76$6 );
						fb_StrAssign( (void*)PATH$1, -1ll, (void*)vr$35, -1ll, 0 );
						fb_StrDelete( (FBSTRING*)&TMP$76$6 );
					}
					label$147:;
					label$145:;
				}
				goto label$142;
				label$143:;
				if( TMP$72$4 == 0ll ) goto label$149;
				label$150:;
				if( TMP$72$4 != 3ll ) goto label$148;
				label$149:;
				{
				}
				label$148:;
				label$142:;
			}
		}
		label$141:;
		label$140:;
		int64 vr$38 = HFILEEXISTS( (char*)*(char**)PATH$1 );
		if( vr$38 != 0ll ) goto label$152;
		{
			int64 vr$39 = FBGETOPTION( 3ll );
			if( vr$39 == 12ll ) goto label$154;
			{
				int64 USED_OVERRIDE$4;
				USED_OVERRIDE$4 = 0ll;
				int64 vr$40 = FBGETOPTION( 3ll );
				if( vr$40 != 9ll ) goto label$156;
				{
					if( TOOL$1 != 3ll ) goto label$158;
					{
						int64 vr$41 = HFILEEXISTSINPATH( (char*)"egcc" );
						if( vr$41 == 0ll ) goto label$160;
						{
							fb_StrAssign( (void*)PATH$1, -1ll, (void*)"egcc", 5ll, 0 );
							USED_OVERRIDE$4 = -1ll;
						}
						label$160:;
						label$159:;
					}
					label$158:;
					label$157:;
				}
				label$156:;
				label$155:;
				if( USED_OVERRIDE$4 != 0ll ) goto label$162;
				{
					int64 vr$43 = fb_StrLen( (void*)((uint8*)&FBC$ + 3556ll), 261ll );
					if( vr$43 <= 0ll ) goto label$164;
					{
						FBSTRING TMP$78$6;
						FBSTRING TMP$79$6;
						__builtin_memset( &TMP$78$6, 0, 24ll );
						FBSTRING* vr$49 = fb_StrConcat( &TMP$78$6, (void*)((uint8*)&FBC$ + 3556ll), 261ll, (void*)((int64)(struct $11FBCTOOLINFO*)FBCTOOLTB$ + (TOOL$1 * 288ll)), 16ll );
						__builtin_memset( &TMP$79$6, 0, 24ll );
						FBSTRING* vr$52 = fb_StrConcat( &TMP$79$6, (void*)vr$49, -1ll, (void*)".exe", 5ll );
						fb_StrAssign( (void*)PATH$1, -1ll, (void*)vr$52, -1ll, 0 );
					}
					goto label$163;
					label$164:;
					{
						FBSTRING TMP$80$6;
						FBSTRING TMP$81$6;
						__builtin_memset( &TMP$80$6, 0, 24ll );
						FBSTRING* vr$58 = fb_StrConcat( &TMP$80$6, (void*)((uint8*)&FBC$ + 2225ll), 129ll, (void*)((int64)(struct $11FBCTOOLINFO*)FBCTOOLTB$ + (TOOL$1 * 288ll)), 16ll );
						__builtin_memset( &TMP$81$6, 0, 24ll );
						FBSTRING* vr$61 = fb_StrConcat( &TMP$81$6, (void*)vr$58, -1ll, (void*)".exe", 5ll );
						fb_StrAssign( (void*)PATH$1, -1ll, (void*)vr$61, -1ll, 0 );
					}
					label$163:;
				}
				label$162:;
				label$161:;
			}
			goto label$153;
			label$154:;
			{
				fb_StrAssign( (void*)PATH$1, -1ll, (void*)((int64)(struct $11FBCTOOLINFO*)FBCTOOLTB$ + (TOOL$1 * 288ll)), 16ll, 0 );
			}
			label$153:;
			*($11FBCTOOLFLAG*)(((int64)(struct $11FBCTOOLINFO*)FBCTOOLTB$ + (TOOL$1 * 288ll)) + 16ll) = *(int64*)(((int64)(struct $11FBCTOOLINFO*)FBCTOOLTB$ + (TOOL$1 * 288ll)) + 16ll) | 8ll;
		}
		label$152:;
		label$151:;
	}
	label$139:;
	label$138:;
	fb_StrAssign( (void*)(((int64)(struct $11FBCTOOLINFO*)FBCTOOLTB$ + (TOOL$1 * 288ll)) + 24ll), 261ll, (void*)PATH$1, -1ll, 0 );
	*($11FBCTOOLFLAG*)(((int64)(struct $11FBCTOOLINFO*)FBCTOOLTB$ + (TOOL$1 * 288ll)) + 16ll) = *(int64*)(((int64)(struct $11FBCTOOLINFO*)FBCTOOLTB$ + (TOOL$1 * 288ll)) + 16ll) | 4ll;
	label$133:;
}

static int64 FBCRUNBIN( char* ACTION$1, int64 TOOL$1, FBSTRING* LN$1 )
{
	int64 fb$result$1;
	__builtin_memset( &fb$result$1, 0, 8ll );
	label$165:;
	int64 RESULT$1;
	FBSTRING PATH$1;
	__builtin_memset( &PATH$1, 0, 24ll );
	FBCFINDBIN( TOOL$1, &PATH$1 );
	if( *(int64*)((uint8*)&FBC$ + 112ll) == 0ll ) goto label$168;
	{
		FBSTRING TMP$83$2;
		FBSTRING TMP$85$2;
		FBSTRING TMP$86$2;
		__builtin_memset( &TMP$83$2, 0, 24ll );
		FBSTRING* vr$5 = fb_StrConcat( &TMP$83$2, (void*)ACTION$1, 0ll, (void*)": ", 3ll );
		fb_PrintString( 0, (FBSTRING*)vr$5, 2 );
		__builtin_memset( &TMP$85$2, 0, 24ll );
		FBSTRING* vr$9 = fb_StrConcat( &TMP$85$2, (void*)&PATH$1, -1ll, (void*)" ", 2ll );
		__builtin_memset( &TMP$86$2, 0, 24ll );
		FBSTRING* vr$12 = fb_StrConcat( &TMP$86$2, (void*)vr$9, -1ll, (void*)LN$1, -1ll );
		fb_PrintString( 0, (FBSTRING*)vr$12, 1 );
	}
	label$168:;
	label$167:;
	int32 vr$14 = fb_Exec( (FBSTRING*)&PATH$1, (FBSTRING*)LN$1 );
	RESULT$1 = (int64)vr$14;
	if( RESULT$1 != 0ll ) goto label$170;
	{
		fb$result$1 = -1ll;
	}
	goto label$169;
	label$170:;
	if( RESULT$1 >= 0ll ) goto label$171;
	{
		ERRREPORTEX( 91ll, (char*)*(char**)&PATH$1, -1ll, 6ll, (char*)0ull );
	}
	goto label$169;
	label$171:;
	{
		if( *(int64*)((uint8*)&FBC$ + 112ll) == 0ll ) goto label$173;
		{
			FBSTRING TMP$89$3;
			FBSTRING TMP$90$3;
			FBSTRING TMP$91$3;
			FBSTRING TMP$92$3;
			FBSTRING* vr$16 = fb_LongintToStr( RESULT$1 );
			__builtin_memset( &TMP$89$3, 0, 24ll );
			FBSTRING* vr$20 = fb_StrConcat( &TMP$89$3, (void*)ACTION$1, 0ll, (void*)" failed: '", 11ll );
			__builtin_memset( &TMP$90$3, 0, 24ll );
			FBSTRING* vr$23 = fb_StrConcat( &TMP$90$3, (void*)vr$20, -1ll, (void*)&PATH$1, -1ll );
			__builtin_memset( &TMP$91$3, 0, 24ll );
			FBSTRING* vr$26 = fb_StrConcat( &TMP$91$3, (void*)vr$23, -1ll, (void*)"' terminated with exit code ", 29ll );
			__builtin_memset( &TMP$92$3, 0, 24ll );
			FBSTRING* vr$29 = fb_StrConcat( &TMP$92$3, (void*)vr$26, -1ll, (void*)vr$16, -1ll );
			fb_PrintString( 0, (FBSTRING*)vr$29, 1 );
		}
		label$173:;
		label$172:;
	}
	label$169:;
	fb_StrDelete( (FBSTRING*)&PATH$1 );
	label$166:;
	return fb$result$1;
}

static int64 CLEARDEFLIST( FBSTRING* DEFFILE$1 )
{
	FBSTRING TMP$94$1;
	int64 fb$result$1;
	__builtin_memset( &fb$result$1, 0, 8ll );
	label$174:;
	int64 FI$1;
	int32 vr$1 = fb_FileFree(  );
	FI$1 = (int64)vr$1;
	int32 vr$4 = fb_FileOpen( (FBSTRING*)DEFFILE$1, 2u, 0u, 0u, (int32)FI$1, 0 );
	if( (int64)vr$4 == 0ll ) goto label$177;
	{
		fb$result$1 = 0ll;
		goto label$175;
	}
	label$177:;
	label$176:;
	FBSTRING CLEANED$1;
	FBSTRING* vr$6 = HSTRIPEXT( DEFFILE$1 );
	__builtin_memset( &TMP$94$1, 0, 24ll );
	FBSTRING* vr$9 = fb_StrConcat( &TMP$94$1, (void*)vr$6, -1ll, (void*)".clean.def", 11ll );
	fb_StrInit( (void*)&CLEANED$1, -1ll, (void*)vr$9, -1ll, 0 );
	int64 FO$1;
	int32 vr$11 = fb_FileFree(  );
	FO$1 = (int64)vr$11;
	int32 vr$15 = fb_FileOpen( (FBSTRING*)&CLEANED$1, 3u, 0u, 0u, (int32)FO$1, 0 );
	if( (int64)vr$15 == 0ll ) goto label$179;
	{
		int32 vr$18 = fb_FileClose( (int32)FI$1 );
		if( (int64)vr$18 == 0ll ) goto label$180;
		void* vr$20 = fb_ErrorThrowAt( 623, (char*)"/root/FreeBASIC-1.10.3/src/compiler/fbc.bas", (void*)0ull, (void*)0ull );
		goto *vr$20;
		label$180:;
		fb$result$1 = 0ll;
		fb_StrDelete( (FBSTRING*)&CLEANED$1 );
		goto label$175;
	}
	label$179:;
	label$178:;
	FBSTRING LN$1;
	__builtin_memset( &LN$1, 0, 24ll );
	label$181:;
	int32 vr$24 = fb_FileEof( (int32)FI$1 );
	if( (int64)vr$24 != 0ll ) goto label$182;
	{
		int64 TMP$96$2;
		fb_FileLineInput( (int32)FI$1, (void*)&LN$1, -1ll, 0 );
		FBSTRING* vr$29 = fb_RIGHT( (FBSTRING*)&LN$1, 4ll );
		int32 vr$30 = fb_StrCompare( (void*)vr$29, -1ll, (void*)"DATA", 5ll );
		if( (int64)vr$30 != 0ll ) goto label$184;
		{
			int64 vr$33 = fb_StrLen( (void*)&LN$1, -1ll );
			FBSTRING* vr$36 = fb_LEFT( (FBSTRING*)&LN$1, vr$33 + -4ll );
			fb_StrAssign( (void*)&LN$1, -1ll, (void*)vr$36, -1ll, 0 );
		}
		label$184:;
		label$183:;
		TMP$96$2 = FO$1;
		fb_PrintString( (int32)TMP$96$2, (FBSTRING*)&LN$1, 1 );
	}
	goto label$181;
	label$182:;
	int32 vr$41 = fb_FileClose( (int32)FO$1 );
	if( (int64)vr$41 == 0ll ) goto label$185;
	void* vr$43 = fb_ErrorThrowAt( 638, (char*)"/root/FreeBASIC-1.10.3/src/compiler/fbc.bas", (void*)0ull, (void*)0ull );
	goto *vr$43;
	label$185:;
	int32 vr$45 = fb_FileClose( (int32)FI$1 );
	if( (int64)vr$45 == 0ll ) goto label$186;
	void* vr$47 = fb_ErrorThrowAt( 639, (char*)"/root/FreeBASIC-1.10.3/src/compiler/fbc.bas", (void*)0ull, (void*)0ull );
	goto *vr$47;
	label$186:;
	fb_FileKill( (FBSTRING*)DEFFILE$1 );
	int32 vr$49 = rename( (char*)*(char**)&CLEANED$1, (char*)*(char**)DEFFILE$1 );
	fb$result$1 = (int64)-((int64)vr$49 == 0ll);
	fb_StrDelete( (FBSTRING*)&LN$1 );
	fb_StrDelete( (FBSTRING*)&CLEANED$1 );
	goto label$175;
	fb_StrDelete( (FBSTRING*)&LN$1 );
	fb_StrDelete( (FBSTRING*)&CLEANED$1 );
	label$175:;
	return fb$result$1;
}

static int64 HGENERATEEMPTYDEFFILE( FBSTRING* DEFFILE$1 )
{
	int32 TMP$97$1;
	int64 fb$result$1;
	__builtin_memset( &fb$result$1, 0, 8ll );
	label$187:;
	int32 F$1;
	int32 vr$1 = fb_FileFree(  );
	F$1 = vr$1;
	int32 vr$2 = fb_FileOpen( (FBSTRING*)DEFFILE$1, 3u, 0u, 0u, F$1, 0 );
	if( (int64)vr$2 == 0ll ) goto label$190;
	{
		goto label$188;
	}
	label$190:;
	label$189:;
	TMP$97$1 = F$1;
	FBSTRING* vr$4 = fb_StrAllocTempDescZEx( (char*)"EXPORTS", 7ll );
	fb_PrintString( TMP$97$1, (FBSTRING*)vr$4, 1 );
	int32 vr$5 = fb_FileClose( F$1 );
	if( (int64)vr$5 == 0ll ) goto label$191;
	void* vr$7 = fb_ErrorThrowAt( 653, (char*)"/root/FreeBASIC-1.10.3/src/compiler/fbc.bas", (void*)0ull, (void*)0ull );
	goto *vr$7;
	label$191:;
	fb$result$1 = -1ll;
	label$188:;
	return fb$result$1;
}

static int64 MAKEIMPLIB( FBSTRING* DLLNAME$1, FBSTRING* DEFFILE$1 )
{
	FBSTRING TMP$101$1;
	FBSTRING TMP$102$1;
	FBSTRING TMP$103$1;
	FBSTRING TMP$107$1;
	FBSTRING TMP$108$1;
	FBSTRING TMP$109$1;
	FBSTRING TMP$110$1;
	FBSTRING TMP$111$1;
	int64 fb$result$1;
	__builtin_memset( &fb$result$1, 0, 8ll );
	label$192:;
	int64 vr$1 = CLEARDEFLIST( DEFFILE$1 );
	if( vr$1 != 0ll ) goto label$195;
	{
		goto label$193;
	}
	label$195:;
	label$194:;
	int64 vr$3 = fb_FileLen( (char*)*(char**)DEFFILE$1 );
	if( vr$3 != 0ll ) goto label$197;
	{
		int64 vr$4 = HGENERATEEMPTYDEFFILE( DEFFILE$1 );
		if( vr$4 != 0ll ) goto label$199;
		{
			goto label$193;
		}
		label$199:;
		label$198:;
	}
	label$197:;
	label$196:;
	FBSTRING LN$1;
	__builtin_memset( &LN$1, 0, 24ll );
	__builtin_memset( &TMP$101$1, 0, 24ll );
	FBSTRING* vr$8 = fb_StrConcat( &TMP$101$1, (void*)"--def \x22", 8ll, (void*)DEFFILE$1, -1ll );
	__builtin_memset( &TMP$102$1, 0, 24ll );
	FBSTRING* vr$11 = fb_StrConcat( &TMP$102$1, (void*)vr$8, -1ll, (void*)"\x22", 2ll );
	__builtin_memset( &TMP$103$1, 0, 24ll );
	FBSTRING* vr$15 = fb_StrConcat( &TMP$103$1, (void*)&LN$1, -1ll, (void*)vr$11, -1ll );
	fb_StrAssign( (void*)&LN$1, -1ll, (void*)vr$15, -1ll, 0 );
	fb_StrConcatAssign( (void*)&LN$1, -1ll, (void*)" --dllname \x22", 13ll, 0 );
	FBSTRING* vr$19 = HSTRIPPATH( (char*)((uint8*)&FBC$ + 968ll) );
	fb_StrConcatAssign( (void*)&LN$1, -1ll, (void*)vr$19, -1ll, 0 );
	fb_StrConcatAssign( (void*)&LN$1, -1ll, (void*)"\x22", 2ll, 0 );
	FBSTRING* vr$23 = HSTRIPFILENAME( (char*)((uint8*)&FBC$ + 968ll) );
	__builtin_memset( &TMP$107$1, 0, 24ll );
	FBSTRING* vr$26 = fb_StrConcat( &TMP$107$1, (void*)" --output-lib \x22", 16ll, (void*)vr$23, -1ll );
	__builtin_memset( &TMP$108$1, 0, 24ll );
	FBSTRING* vr$29 = fb_StrConcat( &TMP$108$1, (void*)vr$26, -1ll, (void*)"lib", 4ll );
	__builtin_memset( &TMP$109$1, 0, 24ll );
	FBSTRING* vr$32 = fb_StrConcat( &TMP$109$1, (void*)vr$29, -1ll, (void*)DLLNAME$1, -1ll );
	__builtin_memset( &TMP$110$1, 0, 24ll );
	FBSTRING* vr$35 = fb_StrConcat( &TMP$110$1, (void*)vr$32, -1ll, (void*)".dll.a\x22", 8ll );
	__builtin_memset( &TMP$111$1, 0, 24ll );
	FBSTRING* vr$39 = fb_StrConcat( &TMP$111$1, (void*)&LN$1, -1ll, (void*)vr$35, -1ll );
	fb_StrAssign( (void*)&LN$1, -1ll, (void*)vr$39, -1ll, 0 );
	int64 vr$42 = FBCRUNBIN( (char*)"creating import library", 6ll, &LN$1 );
	if( vr$42 != 0ll ) goto label$201;
	{
		fb_StrDelete( (FBSTRING*)&LN$1 );
		goto label$193;
	}
	label$201:;
	label$200:;
	if( *(int64*)((uint8*)&FBC$ + 80ll) != 0ll ) goto label$203;
	{
		FBCADDTEMP( DEFFILE$1 );
	}
	label$203:;
	label$202:;
	fb$result$1 = -1ll;
	fb_StrDelete( (FBSTRING*)&LN$1 );
	label$193:;
	return fb$result$1;
}

static FBSTRING* HFINDLIB( char* FILE$1 )
{
	FBSTRING fb$result$1;
	__builtin_memset( &fb$result$1, 0, 24ll );
	label$204:;
	FBSTRING FOUND$1;
	FBSTRING* vr$1 = FBCBUILDPATHTOLIBFILE( FILE$1 );
	fb_StrInit( (void*)&FOUND$1, -1ll, (void*)vr$1, -1ll, 0 );
	int64 vr$4 = fb_StrLen( (void*)&FOUND$1, -1ll );
	if( vr$4 <= 0ll ) goto label$207;
	{
		fb_StrAssign( (void*)&fb$result$1, -1ll, (void*)" \x22", 3ll, 0 );
		fb_StrConcatAssign( (void*)&fb$result$1, -1ll, (void*)&FOUND$1, -1ll, 0 );
		fb_StrConcatAssign( (void*)&fb$result$1, -1ll, (void*)"\x22", 2ll, 0 );
	}
	goto label$206;
	label$207:;
	{
		ERRREPORTEX( 23ll, (char*)FILE$1, -1ll, 1ll, (char*)0ull );
	}
	label$206:;
	fb_StrDelete( (FBSTRING*)&FOUND$1 );
	label$205:;
	FBSTRING* vr$11 = fb_StrAllocTempResult( (FBSTRING*)&fb$result$1 );
	return vr$11;
}

static int64 FBCLINKERISGOLD( void )
{
	int64 fb$result$1;
	__builtin_memset( &fb$result$1, 0, 8ll );
	label$208:;
	int64 vr$1 = FBGETOPTION( 3ll );
	if( vr$1 != 8ll ) goto label$211;
	{
		fb$result$1 = 0ll;
		goto label$209;
	}
	goto label$210;
	label$211:;
	{
		FBSTRING LDCMD$2;
		__builtin_memset( &LDCMD$2, 0, 24ll );
		FBCFINDBIN( 2ll, &LDCMD$2 );
		fb_StrConcatAssign( (void*)&LDCMD$2, -1ll, (void*)" --version", 11ll, 0 );
		FBSTRING* vr$5 = fb_StrAllocTempDescZEx( (char*)"GNU gold", 8ll );
		FBSTRING* vr$7 = HGET1STOUTPUTLINEFROMCOMMAND( &LDCMD$2 );
		int64 vr$8 = fb_StrInstr( 1ll, (FBSTRING*)vr$7, (FBSTRING*)vr$5 );
		fb$result$1 = (int64)-(vr$8 > 0ll);
		fb_StrDelete( (FBSTRING*)&LDCMD$2 );
		goto label$209;
		fb_StrDelete( (FBSTRING*)&LDCMD$2 );
	}
	label$210:;
	label$209:;
	return fb$result$1;
}

static int64 FBCISUSINGGOLDLINKER( void )
{
	int64 fb$result$1;
	__builtin_memset( &fb$result$1, 0, 8ll );
	label$212:;
	int64 vr$1 = FBTARGETSUPPORTSELF(  );
	if( vr$1 == 0ll ) goto label$215;
	{
		int64 vr$2 = FBCLINKERISGOLD(  );
		fb$result$1 = vr$2;
		goto label$213;
	}
	label$215:;
	label$214:;
	fb$result$1 = 0ll;
	goto label$213;
	label$213:;
	return fb$result$1;
}

static int64 HLINKFILES( void )
{
	int64 fb$result$1;
	__builtin_memset( &fb$result$1, 0, 8ll );
	label$216:;
	FBSTRING LDCLINE$1;
	__builtin_memset( &LDCLINE$1, 0, 24ll );
	FBSTRING DLLNAME$1;
	__builtin_memset( &DLLNAME$1, 0, 24ll );
	FBSTRING DEFFILE$1;
	__builtin_memset( &DEFFILE$1, 0, 24ll );
	fb$result$1 = 0ll;
	HSETOUTNAME(  );
	{
		int64 TMP$116$2;
		int64 vr$4 = FBGETOPTION( 3ll );
		TMP$116$2 = vr$4;
		if( TMP$116$2 != 0ll ) goto label$219;
		label$220:;
		{
			{
				int64 TMP$117$4;
				int64 vr$5 = FBGETCPUFAMILY(  );
				TMP$117$4 = vr$5;
				if( TMP$117$4 != 0ll ) goto label$222;
				label$223:;
				{
					fb_StrConcatAssign( (void*)&LDCLINE$1, -1ll, (void*)"-m i386pe ", 11ll, 0 );
				}
				goto label$221;
				label$222:;
				if( TMP$117$4 != 1ll ) goto label$224;
				label$225:;
				{
					fb_StrConcatAssign( (void*)&LDCLINE$1, -1ll, (void*)"-m i386pep ", 12ll, 0 );
				}
				label$224:;
				label$221:;
			}
		}
		goto label$218;
		label$219:;
		if( TMP$116$2 != 2ll ) goto label$226;
		label$227:;
		{
			{
				int64 TMP$120$4;
				int64 vr$8 = FBGETCPUFAMILY(  );
				TMP$120$4 = vr$8;
				if( TMP$120$4 != 0ll ) goto label$229;
				label$230:;
				{
					fb_StrConcatAssign( (void*)&LDCLINE$1, -1ll, (void*)"-m elf_i386 ", 13ll, 0 );
				}
				goto label$228;
				label$229:;
				if( TMP$120$4 != 1ll ) goto label$231;
				label$232:;
				{
					fb_StrConcatAssign( (void*)&LDCLINE$1, -1ll, (void*)"-m elf_x86_64 ", 15ll, 0 );
				}
				goto label$228;
				label$231:;
				if( TMP$120$4 != 2ll ) goto label$233;
				label$234:;
				{
					fb_StrConcatAssign( (void*)&LDCLINE$1, -1ll, (void*)"-m armelf_linux_eabi ", 22ll, 0 );
				}
				label$233:;
				label$228:;
			}
		}
		goto label$218;
		label$226:;
		if( TMP$116$2 != 3ll ) goto label$235;
		label$236:;
		{
			{
				int64 TMP$124$4;
				int64 vr$12 = FBGETCPUFAMILY(  );
				TMP$124$4 = vr$12;
				if( TMP$124$4 != 0ll ) goto label$238;
				label$239:;
				{
					fb_StrConcatAssign( (void*)&LDCLINE$1, -1ll, (void*)"-m elf_i386_haiku ", 19ll, 0 );
				}
				goto label$237;
				label$238:;
				if( TMP$124$4 != 1ll ) goto label$240;
				label$241:;
				{
					fb_StrConcatAssign( (void*)&LDCLINE$1, -1ll, (void*)"-m elf_x86_64_haiku ", 21ll, 0 );
				}
				goto label$237;
				label$240:;
				if( TMP$124$4 != 2ll ) goto label$242;
				label$243:;
				{
					fb_StrConcatAssign( (void*)&LDCLINE$1, -1ll, (void*)"-m armelf_linux_eabi ", 22ll, 0 );
				}
				label$242:;
				label$237:;
			}
		}
		goto label$218;
		label$235:;
		if( TMP$116$2 != 10ll ) goto label$244;
		label$245:;
		{
			{
				int64 TMP$127$4;
				int64 vr$16 = FBGETCPUFAMILY(  );
				TMP$127$4 = vr$16;
				if( TMP$127$4 != 0ll ) goto label$247;
				label$248:;
				{
					fb_StrConcatAssign( (void*)&LDCLINE$1, -1ll, (void*)"-arch i386 ", 12ll, 0 );
				}
				goto label$246;
				label$247:;
				if( TMP$127$4 != 1ll ) goto label$249;
				label$250:;
				{
					fb_StrConcatAssign( (void*)&LDCLINE$1, -1ll, (void*)"-arch x86_64 ", 14ll, 0 );
				}
				goto label$246;
				label$249:;
				if( TMP$127$4 != 2ll ) goto label$251;
				label$252:;
				{
					fb_StrConcatAssign( (void*)&LDCLINE$1, -1ll, (void*)"-arch armv6 ", 13ll, 0 );
				}
				label$251:;
				label$246:;
			}
		}
		goto label$218;
		label$244:;
		if( TMP$116$2 != 11ll ) goto label$253;
		label$254:;
		{
			fb_StrConcatAssign( (void*)&LDCLINE$1, -1ll, (void*)" -rpath /usr/X11R7/lib/ ", 25ll, 0 );
			fb_StrConcatAssign( (void*)&LDCLINE$1, -1ll, (void*)" -rpath /usr/pkg/lib/ ", 23ll, 0 );
		}
		label$253:;
		label$218:;
	}
	fb_StrConcatAssign( (void*)&LDCLINE$1, -1ll, (void*)"-o \x22", 5ll, 0 );
	fb_StrConcatAssign( (void*)&LDCLINE$1, -1ll, (void*)((uint8*)&FBC$ + 968ll), 261ll, 0 );
	fb_StrConcatAssign( (void*)&LDCLINE$1, -1ll, (void*)"\x22", 2ll, 0 );
	int64 vr$26 = FBGETOPTION( 3ll );
	int64 vr$28 = FBGETOPTION( 0ll );
	if( ((int64)-(vr$26 == 4ll) & (int64)-(vr$28 == 2ll)) == 0ll ) goto label$256;
	{
		FBSTRING TMP$137$2;
		fb_StrConcatAssign( (void*)&LDCLINE$1, -1ll, (void*)" -I \x22lib", 9ll, 0 );
		__builtin_memset( &TMP$137$2, 0, 24ll );
		fb_StrAssign( (void*)&TMP$137$2, -1ll, (void*)((uint8*)&FBC$ + 968ll), 261ll, 0 );
		FBSTRING* vr$36 = HSTRIPEXT( &TMP$137$2 );
		fb_StrConcatAssign( (void*)&LDCLINE$1, -1ll, (void*)vr$36, -1ll, 0 );
		fb_StrConcatAssign( (void*)&LDCLINE$1, -1ll, (void*)"_il.a\x22", 7ll, 0 );
		fb_StrDelete( (FBSTRING*)&TMP$137$2 );
		fb_StrConcatAssign( (void*)&LDCLINE$1, -1ll, (void*)" -U", 4ll, 0 );
		{
			FBSTRING* OBJFILE$3;
			void* vr$42 = LISTGETHEAD( (struct $5TLIST*)((uint8*)&FBC$ + 400ll) );
			OBJFILE$3 = (FBSTRING*)vr$42;
			label$257:;
			if( OBJFILE$3 == (FBSTRING*)0ull ) goto label$258;
			{
				FBSTRING TMP$140$4;
				FBSTRING TMP$141$4;
				FBSTRING TMP$142$4;
				__builtin_memset( &TMP$140$4, 0, 24ll );
				FBSTRING* vr$45 = fb_StrConcat( &TMP$140$4, (void*)" \x22", 3ll, (void*)OBJFILE$3, -1ll );
				__builtin_memset( &TMP$141$4, 0, 24ll );
				FBSTRING* vr$48 = fb_StrConcat( &TMP$141$4, (void*)vr$45, -1ll, (void*)"\x22", 2ll );
				__builtin_memset( &TMP$142$4, 0, 24ll );
				FBSTRING* vr$52 = fb_StrConcat( &TMP$142$4, (void*)&LDCLINE$1, -1ll, (void*)vr$48, -1ll );
				fb_StrAssign( (void*)&LDCLINE$1, -1ll, (void*)vr$52, -1ll, 0 );
				void* vr$54 = LISTGETNEXT( (void*)OBJFILE$3 );
				OBJFILE$3 = (FBSTRING*)vr$54;
			}
			goto label$257;
			label$258:;
		}
		{
			FBSTRING* LIBFILE$3;
			void* vr$56 = LISTGETHEAD( (struct $5TLIST*)((uint8*)&FBC$ + 464ll) );
			LIBFILE$3 = (FBSTRING*)vr$56;
			if( LIBFILE$3 == (FBSTRING*)0ull ) goto label$260;
			{
				fb_StrConcatAssign( (void*)&LDCLINE$1, -1ll, (void*)" -lc", 5ll, 0 );
			}
			label$260:;
			label$259:;
			label$261:;
			if( LIBFILE$3 == (FBSTRING*)0ull ) goto label$262;
			{
				FBSTRING TMP$144$4;
				FBSTRING TMP$145$4;
				FBSTRING TMP$146$4;
				__builtin_memset( &TMP$144$4, 0, 24ll );
				FBSTRING* vr$60 = fb_StrConcat( &TMP$144$4, (void*)" \x22", 3ll, (void*)LIBFILE$3, -1ll );
				__builtin_memset( &TMP$145$4, 0, 24ll );
				FBSTRING* vr$63 = fb_StrConcat( &TMP$145$4, (void*)vr$60, -1ll, (void*)"\x22", 2ll );
				__builtin_memset( &TMP$146$4, 0, 24ll );
				FBSTRING* vr$67 = fb_StrConcat( &TMP$146$4, (void*)&LDCLINE$1, -1ll, (void*)vr$63, -1ll );
				fb_StrAssign( (void*)&LDCLINE$1, -1ll, (void*)vr$67, -1ll, 0 );
				void* vr$69 = LISTGETNEXT( (void*)LIBFILE$3 );
				LIBFILE$3 = (FBSTRING*)vr$69;
			}
			goto label$261;
			label$262:;
		}
		int64 vr$71 = FBCRUNBIN( (char*)"making DXE", 10ll, &LDCLINE$1 );
		fb$result$1 = vr$71;
		fb_StrDelete( (FBSTRING*)&DEFFILE$1 );
		fb_StrDelete( (FBSTRING*)&DLLNAME$1 );
		fb_StrDelete( (FBSTRING*)&LDCLINE$1 );
		goto label$217;
	}
	label$256:;
	label$255:;
	{
		uint64 TMP$148$2;
		int64 vr$75 = FBGETOPTION( 3ll );
		TMP$148$2 = (uint64)vr$75;
		goto label$264;
		label$265:;
		{
			int64 vr$77 = fb_StrLen( (void*)((uint8*)&FBC$ + 1893ll), 129ll );
			if( vr$77 != 0ll ) goto label$267;
			{
				fb_StrAssign( (void*)((uint8*)&FBC$ + 1893ll), 129ll, (void*)"console", 8ll, 0 );
			}
			goto label$266;
			label$267:;
			{
				int32 vr$80 = fb_StrCompare( (void*)((uint8*)&FBC$ + 1893ll), 129ll, (void*)"gui", 4ll );
				if( (int64)vr$80 != 0ll ) goto label$269;
				{
					fb_StrAssign( (void*)((uint8*)&FBC$ + 1893ll), 129ll, (void*)"windows", 8ll, 0 );
				}
				label$269:;
				label$268:;
			}
			label$266:;
			fb_StrConcatAssign( (void*)&LDCLINE$1, -1ll, (void*)" -subsystem ", 13ll, 0 );
			fb_StrConcatAssign( (void*)&LDCLINE$1, -1ll, (void*)((uint8*)&FBC$ + 1893ll), 129ll, 0 );
			int64 vr$86 = FBGETOPTION( 0ll );
			if( vr$86 != 2ll ) goto label$271;
			{
				FBSTRING TMP$153$4;
				FBSTRING TMP$154$4;
				__builtin_memset( &TMP$154$4, 0, 24ll );
				__builtin_memset( &TMP$153$4, 0, 24ll );
				fb_StrAssign( (void*)&TMP$153$4, -1ll, (void*)((uint8*)&FBC$ + 968ll), 261ll, 0 );
				FBSTRING* vr$92 = HSTRIPEXT( &TMP$153$4 );
				fb_StrAssign( (void*)&TMP$154$4, -1ll, (void*)vr$92, -1ll, 0 );
				FBSTRING* vr$94 = HSTRIPPATH( (char*)*(char**)&TMP$154$4 );
				fb_StrAssign( (void*)&DLLNAME$1, -1ll, (void*)vr$94, -1ll, 0 );
				fb_StrDelete( (FBSTRING*)&TMP$154$4 );
				fb_StrDelete( (FBSTRING*)&TMP$153$4 );
				fb_StrConcatAssign( (void*)&LDCLINE$1, -1ll, (void*)" --dll --enable-stdcall-fixup", 30ll, 0 );
				int64 vr$99 = FBGETCPUFAMILY(  );
				if( vr$99 != 0ll ) goto label$273;
				{
					fb_StrConcatAssign( (void*)&LDCLINE$1, -1ll, (void*)" -e _DllMainCRTStartup@12", 26ll, 0 );
				}
				goto label$272;
				label$273:;
				{
					fb_StrConcatAssign( (void*)&LDCLINE$1, -1ll, (void*)" -e DllMainCRTStartup", 22ll, 0 );
				}
				label$272:;
			}
			label$271:;
			label$270:;
		}
		goto label$263;
		label$274:;
		{
			int64 vr$102 = FBGETOPTION( 0ll );
			if( vr$102 != 2ll ) goto label$276;
			{
				FBSTRING TMP$158$4;
				FBSTRING TMP$159$4;
				__builtin_memset( &TMP$159$4, 0, 24ll );
				__builtin_memset( &TMP$158$4, 0, 24ll );
				fb_StrAssign( (void*)&TMP$158$4, -1ll, (void*)((uint8*)&FBC$ + 968ll), 261ll, 0 );
				FBSTRING* vr$108 = HSTRIPEXT( &TMP$158$4 );
				fb_StrAssign( (void*)&TMP$159$4, -1ll, (void*)vr$108, -1ll, 0 );
				FBSTRING* vr$110 = HSTRIPPATH( (char*)*(char**)&TMP$159$4 );
				fb_StrAssign( (void*)&DLLNAME$1, -1ll, (void*)vr$110, -1ll, 0 );
				fb_StrDelete( (FBSTRING*)&TMP$159$4 );
				fb_StrDelete( (FBSTRING*)&TMP$158$4 );
				fb_StrConcatAssign( (void*)&LDCLINE$1, -1ll, (void*)" -shared -h", 12ll, 0 );
				FBSTRING* vr$116 = HSTRIPPATH( (char*)((uint8*)&FBC$ + 968ll) );
				fb_StrConcatAssign( (void*)&LDCLINE$1, -1ll, (void*)vr$116, -1ll, 0 );
				FBSTRING* vr$119 = fb_LEFT( (FBSTRING*)&DLLNAME$1, 3ll );
				int32 vr$120 = fb_StrCompare( (void*)vr$119, -1ll, (void*)"lib", 4ll );
				if( (int64)vr$120 != 0ll ) goto label$278;
				{
					int64 vr$123 = fb_StrLen( (void*)&DLLNAME$1, -1ll );
					FBSTRING* vr$126 = fb_RIGHT( (FBSTRING*)&DLLNAME$1, vr$123 + -3ll );
					fb_StrAssign( (void*)&DLLNAME$1, -1ll, (void*)vr$126, -1ll, 0 );
				}
				label$278:;
				label$277:;
			}
			goto label$275;
			label$276:;
			{
				{
					uint64 TMP$161$5;
					int64 vr$128 = FBGETOPTION( 3ll );
					TMP$161$5 = (uint64)vr$128;
					goto label$280;
					label$281:;
					{
						fb_StrConcatAssign( (void*)&LDCLINE$1, -1ll, (void*)" -dynamic-linker /libexec/ld-elf.so.1", 38ll, 0 );
					}
					goto label$279;
					label$282:;
					{
						fb_StrConcatAssign( (void*)&LDCLINE$1, -1ll, (void*)" -dynamic-linker /libexec/ld-elf.so.2", 38ll, 0 );
					}
					goto label$279;
					label$283:;
					{
						fb_StrConcatAssign( (void*)&LDCLINE$1, -1ll, (void*)" --dynamic-linker /lib/64/ld.so.1", 34ll, 0 );
					}
					goto label$279;
					label$284:;
					{
						{
							int64 TMP$165$7;
							int64 vr$132 = FBGETCPUFAMILY(  );
							TMP$165$7 = vr$132;
							if( TMP$165$7 != 0ll ) goto label$286;
							label$287:;
							{
								fb_StrConcatAssign( (void*)&LDCLINE$1, -1ll, (void*)" -dynamic-linker /lib/ld-linux.so.2", 36ll, 0 );
							}
							goto label$285;
							label$286:;
							if( TMP$165$7 != 1ll ) goto label$288;
							label$289:;
							{
								fb_StrConcatAssign( (void*)&LDCLINE$1, -1ll, (void*)" -dynamic-linker /lib64/ld-linux-x86-64.so.2", 45ll, 0 );
							}
							goto label$285;
							label$288:;
							if( TMP$165$7 != 2ll ) goto label$290;
							label$291:;
							{
								fb_StrConcatAssign( (void*)&LDCLINE$1, -1ll, (void*)" -dynamic-linker /lib/ld-linux-armhf.so.3", 42ll, 0 );
							}
							goto label$285;
							label$290:;
							if( TMP$165$7 != 3ll ) goto label$292;
							label$293:;
							{
								fb_StrConcatAssign( (void*)&LDCLINE$1, -1ll, (void*)" -dynamic-linker /lib/ld-linux-aarch64.so.1", 44ll, 0 );
							}
							label$292:;
							label$285:;
						}
					}
					goto label$279;
					label$294:;
					{
						fb_StrConcatAssign( (void*)&LDCLINE$1, -1ll, (void*)" -shared -no-undefined", 23ll, 0 );
					}
					goto label$279;
					label$295:;
					{
						fb_StrConcatAssign( (void*)&LDCLINE$1, -1ll, (void*)" -dynamic-linker /usr/libexec/ld.elf_so", 40ll, 0 );
					}
					goto label$279;
					label$296:;
					{
						fb_StrConcatAssign( (void*)&LDCLINE$1, -1ll, (void*)" -dynamic-linker /usr/libexec/ld.so", 36ll, 0 );
					}
					goto label$279;
					label$280:;
					static const void* tmp$830[10ll] = {
						&&label$284,
						&&label$294,
						&&label$279,
						&&label$279,
						&&label$281,
						&&label$282,
						&&label$283,
						&&label$296,
						&&label$279,
						&&label$295,
					};
					if( (TMP$161$5 - 2ull) > 9ull ) goto label$279;
					goto *tmp$830[TMP$161$5 - 2ull];
					label$279:;
				}
			}
			label$275:;
			int64 vr$140 = FBGETOPTION( 0ll );
			int64 vr$142 = FBGETOPTION( 33ll );
			int64 vr$144 = FBGETOPTION( 3ll );
			if( (((int64)-(vr$140 == 2ll) | vr$142) & (int64)-(vr$144 != 8ll)) == 0ll ) goto label$298;
			{
				fb_StrConcatAssign( (void*)&LDCLINE$1, -1ll, (void*)" --export-dynamic", 18ll, 0 );
			}
			label$298:;
			label$297:;
		}
		goto label$263;
		label$299:;
		{
			fb_StrConcatAssign( (void*)&LDCLINE$1, -1ll, (void*)" -nostdlib --file-alignment 0x20 --section-alignment 0x20 -shared", 66ll, 0 );
		}
		goto label$263;
		label$300:;
		{
			fb_StrConcatAssign( (void*)&LDCLINE$1, -1ll, (void*)" -O", 4ll, 0 );
			int64 vr$150 = FBGETOPTION( 8ll );
			FBSTRING* vr$151 = fb_LongintToStr( vr$150 );
			fb_StrConcatAssign( (void*)&LDCLINE$1, -1ll, (void*)vr$151, -1ll, 0 );
			static char EMSCRIPTEN_OPTIONS$3[5][32] = { "CASE_INSENSITIVE_FS=1", "TOTAL_MEMORY=67108864", "ALLOW_MEMORY_GROWTH=1", "RETAIN_COMPILER_SETTINGS=1", "ASYNCIFY=1" };
			static struct $8FBARRAY1IcE tmp$181$3 = { (char*)EMSCRIPTEN_OPTIONS$3, (char*)EMSCRIPTEN_OPTIONS$3, 160ll, 32ll, 1ll, 49ll, { { 5ll, 0ll, 4ll } } };
			fb_StrConcatAssign( (void*)&LDCLINE$1, -1ll, (void*)" -Wno-warn-absolute-paths", 26ll, 0 );
			{
				int64 I$4;
				I$4 = 0ll;
				label$304:;
				{
					fb_StrConcatAssign( (void*)&LDCLINE$1, -1ll, (void*)" -s ", 5ll, 0 );
					fb_StrConcatAssign( (void*)&LDCLINE$1, -1ll, (void*)((int64)(char*)EMSCRIPTEN_OPTIONS$3 + (I$4 << (5ll & 63ll))), 32ll, 0 );
				}
				label$302:;
				I$4 = I$4 + 1ll;
				label$301:;
				if( I$4 <= 4ll ) goto label$304;
				label$303:;
			}
			fb_StrConcatAssign( (void*)&LDCLINE$1, -1ll, (void*)" --shell-file", 14ll, 0 );
			FBSTRING* vr$160 = HFINDLIB( (char*)"fb_shell.html" );
			fb_StrConcatAssign( (void*)&LDCLINE$1, -1ll, (void*)vr$160, -1ll, 0 );
			fb_StrConcatAssign( (void*)&LDCLINE$1, -1ll, (void*)" --post-js", 11ll, 0 );
			FBSTRING* vr$163 = HFINDLIB( (char*)"fb_rtlib.js" );
			fb_StrConcatAssign( (void*)&LDCLINE$1, -1ll, (void*)vr$163, -1ll, 0 );
			int64 vr$166 = fb_StrLen( (void*)((uint8*)&FBC$ + 1893ll), 129ll );
			if( vr$166 != 0ll ) goto label$306;
			{
				fb_StrConcatAssign( (void*)&LDCLINE$1, -1ll, (void*)" --post-js", 11ll, 0 );
				FBSTRING* vr$168 = HFINDLIB( (char*)"termlib_min.js" );
				fb_StrConcatAssign( (void*)&LDCLINE$1, -1ll, (void*)vr$168, -1ll, 0 );
			}
			label$306:;
			label$305:;
		}
		goto label$263;
		label$264:;
		static const void* tmp$831[13ll] = {
			&&label$265,
			&&label$265,
			&&label$274,
			&&label$274,
			&&label$263,
			&&label$299,
			&&label$274,
			&&label$274,
			&&label$274,
			&&label$274,
			&&label$274,
			&&label$274,
			&&label$300,
		};
		if( TMP$148$2 > 12ull ) goto label$263;
		goto *tmp$831[TMP$148$2 - 0ull];
		label$263:;
	}
	int64 vr$170 = FBGETOPTION( 3ll );
	if( vr$170 != 4ll ) goto label$308;
	{
		fb_StrConcatAssign( (void*)&LDCLINE$1, -1ll, (void*)" -T \x22", 6ll, 0 );
		fb_StrConcatAssign( (void*)&LDCLINE$1, -1ll, (void*)((uint8*)&FBC$ + 3295ll), 261ll, 0 );
		fb_StrConcatAssign( (void*)&LDCLINE$1, -1ll, (void*)"/i386go32.x\x22", 13ll, 0 );
	}
	goto label$307;
	label$308:;
	{
		int64 vr$175 = FBGETOPTION( 39ll );
		int64 vr$176 = FBGETOPTION( 3ll );
		int64 vr$179 = FBGETOPTION( 3ll );
		int64 vr$182 = FBGETOPTION( 3ll );
		int64 vr$185 = FBCISUSINGGOLDLINKER(  );
		if( ((((vr$175 & (int64)-(vr$176 != 10ll)) & (int64)-(vr$179 != 8ll)) & (int64)-(vr$182 != 12ll)) & ~vr$185) == 0ll ) goto label$310;
		{
			fb_StrConcatAssign( (void*)&LDCLINE$1, -1ll, (void*)" -T \x22", 6ll, 0 );
			fb_StrConcatAssign( (void*)&LDCLINE$1, -1ll, (void*)((uint8*)&FBC$ + 3295ll), 261ll, 0 );
			fb_StrConcatAssign( (void*)&LDCLINE$1, -1ll, (void*)"/fbextra.x\x22", 12ll, 0 );
		}
		label$310:;
		label$309:;
	}
	label$307:;
	{
		uint64 TMP$194$2;
		int64 vr$192 = FBGETOPTION( 3ll );
		TMP$194$2 = (uint64)vr$192;
		goto label$312;
		label$313:;
		{
			int64 STACKSIZE$3;
			int64 vr$193 = FBGETOPTION( 38ll );
			STACKSIZE$3 = vr$193;
			fb_StrConcatAssign( (void*)&LDCLINE$1, -1ll, (void*)" --stack ", 10ll, 0 );
			FBSTRING* vr$195 = fb_LongintToStr( STACKSIZE$3 );
			fb_StrConcatAssign( (void*)&LDCLINE$1, -1ll, (void*)vr$195, -1ll, 0 );
			fb_StrConcatAssign( (void*)&LDCLINE$1, -1ll, (void*)",", 2ll, 0 );
			FBSTRING* vr$198 = fb_LongintToStr( STACKSIZE$3 );
			fb_StrConcatAssign( (void*)&LDCLINE$1, -1ll, (void*)vr$198, -1ll, 0 );
			int64 vr$200 = FBGETOPTION( 0ll );
			if( vr$200 != 2ll ) goto label$315;
			{
				FBSTRING TMP$197$4;
				__builtin_memset( &TMP$197$4, 0, 24ll );
				fb_StrAssign( (void*)&TMP$197$4, -1ll, (void*)((uint8*)&FBC$ + 968ll), 261ll, 0 );
				FBSTRING* vr$205 = HSTRIPEXT( &TMP$197$4 );
				fb_StrAssign( (void*)&DEFFILE$1, -1ll, (void*)vr$205, -1ll, 0 );
				fb_StrConcatAssign( (void*)&DEFFILE$1, -1ll, (void*)".def", 5ll, 0 );
				fb_StrDelete( (FBSTRING*)&TMP$197$4 );
				fb_StrConcatAssign( (void*)&LDCLINE$1, -1ll, (void*)" --output-def \x22", 16ll, 0 );
				fb_StrConcatAssign( (void*)&LDCLINE$1, -1ll, (void*)&DEFFILE$1, -1ll, 0 );
				fb_StrConcatAssign( (void*)&LDCLINE$1, -1ll, (void*)"\x22", 2ll, 0 );
			}
			label$315:;
			label$314:;
		}
		goto label$311;
		label$316:;
		{
			fb_StrConcatAssign( (void*)&LDCLINE$1, -1ll, (void*)" -e _WinMainCRTStartup", 23ll, 0 );
		}
		goto label$311;
		label$317:;
		{
			int64 vr$214 = FBGETOPTION( 0ll );
			if( vr$214 != 0ll ) goto label$319;
			{
				fb_StrConcatAssign( (void*)&LDCLINE$1, -1ll, (void*)" -pie -e __start", 17ll, 0 );
			}
			label$319:;
			label$318:;
		}
		goto label$311;
		label$312:;
		static const void* tmp$832[10ll] = {
			&&label$313,
			&&label$313,
			&&label$311,
			&&label$311,
			&&label$311,
			&&label$316,
			&&label$311,
			&&label$311,
			&&label$311,
			&&label$317,
		};
		if( TMP$194$2 > 9ull ) goto label$311;
		goto *tmp$832[TMP$194$2 - 0ull];
		label$311:;
	}
	if( *(int64*)((uint8*)&FBC$ + 2496ll) == 0ll ) goto label$321;
	{
		fb_StrConcatAssign( (void*)&LDCLINE$1, -1ll, (void*)" -Bstatic", 10ll, 0 );
	}
	label$321:;
	label$320:;
	int64 vr$218 = fb_StrLen( (void*)((uint8*)&FBC$ + 1632ll), 261ll );
	if( vr$218 <= 0ll ) goto label$323;
	{
		fb_StrConcatAssign( (void*)&LDCLINE$1, -1ll, (void*)" -Map ", 7ll, 0 );
		fb_StrConcatAssign( (void*)&LDCLINE$1, -1ll, (void*)((uint8*)&FBC$ + 1632ll), 261ll, 0 );
	}
	label$323:;
	label$322:;
	int64 vr$222 = FBGETOPTION( 14ll );
	if( vr$222 != 0ll ) goto label$325;
	{
		int64 vr$223 = FBGETOPTION( 23ll );
		if( vr$223 != 0ll ) goto label$327;
		{
			int64 vr$224 = FBGETOPTION( 3ll );
			int64 vr$226 = FBGETOPTION( 3ll );
			if( ((int64)-(vr$224 != 10ll) & (int64)-(vr$226 != 12ll)) == 0ll ) goto label$329;
			{
				if( *(int64*)((uint8*)&FBC$ + 2504ll) == 0ll ) goto label$331;
				{
					fb_StrConcatAssign( (void*)&LDCLINE$1, -1ll, (void*)" -s", 4ll, 0 );
				}
				label$331:;
				label$330:;
			}
			label$329:;
			label$328:;
		}
		label$327:;
		label$326:;
	}
	label$325:;
	label$324:;
	{
		struct $11TSTRSETITEM* I$2;
		void* vr$231 = LISTGETHEAD( (struct $5TLIST*)((uint8*)&FBC$ + 880ll) );
		I$2 = (struct $11TSTRSETITEM*)vr$231;
		FBSTRING L$2;
		__builtin_memset( &L$2, 0, 24ll );
		int64 vr$233 = FBGETOPTION( 3ll );
		if( vr$233 == 12ll ) goto label$333;
		{
			fb_StrAssign( (void*)&L$2, -1ll, (void*)" -L \x22", 6ll, 0 );
		}
		goto label$332;
		label$333:;
		{
			fb_StrAssign( (void*)&L$2, -1ll, (void*)" -L\x22", 5ll, 0 );
		}
		label$332:;
		label$334:;
		if( I$2 == (struct $11TSTRSETITEM*)0ull ) goto label$335;
		{
			FBSTRING TMP$207$3;
			FBSTRING TMP$208$3;
			FBSTRING TMP$209$3;
			__builtin_memset( &TMP$207$3, 0, 24ll );
			FBSTRING* vr$241 = fb_StrConcat( &TMP$207$3, (void*)&L$2, -1ll, (void*)I$2, -1ll );
			__builtin_memset( &TMP$208$3, 0, 24ll );
			FBSTRING* vr$244 = fb_StrConcat( &TMP$208$3, (void*)vr$241, -1ll, (void*)"\x22", 2ll );
			__builtin_memset( &TMP$209$3, 0, 24ll );
			FBSTRING* vr$248 = fb_StrConcat( &TMP$209$3, (void*)&LDCLINE$1, -1ll, (void*)vr$244, -1ll );
			fb_StrAssign( (void*)&LDCLINE$1, -1ll, (void*)vr$248, -1ll, 0 );
			void* vr$250 = LISTGETNEXT( (void*)I$2 );
			I$2 = (struct $11TSTRSETITEM*)vr$250;
		}
		goto label$334;
		label$335:;
		fb_StrDelete( (FBSTRING*)&L$2 );
	}
	{
		uint64 TMP$210$2;
		int64 vr$252 = FBGETOPTION( 3ll );
		TMP$210$2 = (uint64)vr$252;
		goto label$337;
		label$338:;
		{
			int64 vr$253 = FBGETOPTION( 0ll );
			if( vr$253 != 2ll ) goto label$340;
			{
				FBSTRING* vr$254 = HFINDLIB( (char*)"crt0.o" );
				fb_StrConcatAssign( (void*)&LDCLINE$1, -1ll, (void*)vr$254, -1ll, 0 );
			}
			goto label$339;
			label$340:;
			{
				FBSTRING* vr$256 = HFINDLIB( (char*)"crt0.o" );
				fb_StrConcatAssign( (void*)&LDCLINE$1, -1ll, (void*)vr$256, -1ll, 0 );
				int64 vr$258 = FBGETOPTION( 23ll );
				if( vr$258 == 0ll ) goto label$342;
				{
					FBSTRING* vr$259 = HFINDLIB( (char*)"gcrt0.o" );
					fb_StrConcatAssign( (void*)&LDCLINE$1, -1ll, (void*)vr$259, -1ll, 0 );
				}
				label$342:;
				label$341:;
			}
			label$339:;
		}
		goto label$336;
		label$343:;
		{
			int64 vr$261 = FBGETOPTION( 0ll );
			if( vr$261 != 2ll ) goto label$345;
			{
				FBSTRING* vr$262 = HFINDLIB( (char*)"dllcrt2.o" );
				fb_StrConcatAssign( (void*)&LDCLINE$1, -1ll, (void*)vr$262, -1ll, 0 );
			}
			goto label$344;
			label$345:;
			{
				FBSTRING* vr$264 = HFINDLIB( (char*)"crt2.o" );
				fb_StrConcatAssign( (void*)&LDCLINE$1, -1ll, (void*)vr$264, -1ll, 0 );
				int64 vr$266 = FBGETOPTION( 23ll );
				if( vr$266 == 0ll ) goto label$347;
				{
					FBSTRING* vr$267 = HFINDLIB( (char*)"gcrt2.o" );
					fb_StrConcatAssign( (void*)&LDCLINE$1, -1ll, (void*)vr$267, -1ll, 0 );
				}
				label$347:;
				label$346:;
			}
			label$344:;
			FBSTRING* vr$269 = HFINDLIB( (char*)"crtbegin.o" );
			fb_StrConcatAssign( (void*)&LDCLINE$1, -1ll, (void*)vr$269, -1ll, 0 );
		}
		goto label$336;
		label$348:;
		{
			int64 vr$271 = FBGETOPTION( 23ll );
			if( vr$271 == 0ll ) goto label$350;
			{
				FBSTRING* vr$272 = HFINDLIB( (char*)"gcrt0.o" );
				fb_StrConcatAssign( (void*)&LDCLINE$1, -1ll, (void*)vr$272, -1ll, 0 );
			}
			goto label$349;
			label$350:;
			{
				FBSTRING* vr$274 = HFINDLIB( (char*)"crt0.o" );
				fb_StrConcatAssign( (void*)&LDCLINE$1, -1ll, (void*)vr$274, -1ll, 0 );
			}
			label$349:;
		}
		goto label$336;
		label$351:;
		{
			int64 vr$276 = FBGETOPTION( 0ll );
			if( vr$276 != 0ll ) goto label$353;
			{
				int64 vr$277 = FBGETOPTION( 23ll );
				if( vr$277 == 0ll ) goto label$355;
				{
					{
						uint64 TMP$217$6;
						int64 vr$278 = FBGETOPTION( 3ll );
						TMP$217$6 = (uint64)vr$278;
						goto label$357;
						label$358:;
						{
							FBSTRING* vr$279 = HFINDLIB( (char*)"gcrt0.o" );
							fb_StrConcatAssign( (void*)&LDCLINE$1, -1ll, (void*)vr$279, -1ll, 0 );
						}
						goto label$356;
						label$359:;
						{
						}
						goto label$356;
						label$360:;
						{
							FBSTRING* vr$281 = HFINDLIB( (char*)"gcrt1.o" );
							fb_StrConcatAssign( (void*)&LDCLINE$1, -1ll, (void*)vr$281, -1ll, 0 );
						}
						goto label$356;
						label$357:;
						static const void* tmp$833[9ll] = {
							&&label$359,
							&&label$360,
							&&label$360,
							&&label$360,
							&&label$360,
							&&label$360,
							&&label$358,
							&&label$360,
							&&label$358,
						};
						if( (TMP$217$6 - 3ull) > 8ull ) goto label$360;
						goto *tmp$833[TMP$217$6 - 3ull];
						label$356:;
					}
				}
				goto label$354;
				label$355:;
				{
					{
						uint64 TMP$219$6;
						int64 vr$283 = FBGETOPTION( 3ll );
						TMP$219$6 = (uint64)vr$283;
						goto label$362;
						label$363:;
						{
							FBSTRING* vr$284 = HFINDLIB( (char*)"crt0.o" );
							fb_StrConcatAssign( (void*)&LDCLINE$1, -1ll, (void*)vr$284, -1ll, 0 );
						}
						goto label$361;
						label$364:;
						{
						}
						goto label$361;
						label$365:;
						{
							FBSTRING* vr$286 = HFINDLIB( (char*)"crt1.o" );
							fb_StrConcatAssign( (void*)&LDCLINE$1, -1ll, (void*)vr$286, -1ll, 0 );
						}
						goto label$361;
						label$362:;
						static const void* tmp$834[9ll] = {
							&&label$364,
							&&label$365,
							&&label$365,
							&&label$365,
							&&label$365,
							&&label$365,
							&&label$363,
							&&label$365,
							&&label$363,
						};
						if( (TMP$219$6 - 3ull) > 8ull ) goto label$365;
						goto *tmp$834[TMP$219$6 - 3ull];
						label$361:;
					}
				}
				label$354:;
			}
			label$353:;
			label$352:;
			int64 vr$288 = FBGETOPTION( 3ll );
			if( vr$288 == 10ll ) goto label$367;
			{
				int64 vr$289 = FBGETOPTION( 3ll );
				if( vr$289 == 9ll ) goto label$369;
				{
					FBSTRING* vr$290 = HFINDLIB( (char*)"crti.o" );
					fb_StrConcatAssign( (void*)&LDCLINE$1, -1ll, (void*)vr$290, -1ll, 0 );
				}
				label$369:;
				label$368:;
				{
					uint64 TMP$222$5;
					int64 vr$292 = FBGETOPTION( 3ll );
					TMP$222$5 = (uint64)vr$292;
					goto label$371;
					label$372:;
					{
						FBSTRING* vr$293 = HFINDLIB( (char*)"crtbegin.o" );
						fb_StrConcatAssign( (void*)&LDCLINE$1, -1ll, (void*)vr$293, -1ll, 0 );
					}
					goto label$370;
					label$373:;
					{
						FBSTRING* vr$295 = HFINDLIB( (char*)"crtbeginS.o" );
						fb_StrConcatAssign( (void*)&LDCLINE$1, -1ll, (void*)vr$295, -1ll, 0 );
						FBSTRING* vr$297 = HFINDLIB( (char*)"start_dyn.o" );
						fb_StrConcatAssign( (void*)&LDCLINE$1, -1ll, (void*)vr$297, -1ll, 0 );
						FBSTRING* vr$299 = HFINDLIB( (char*)"init_term_dyn.o" );
						fb_StrConcatAssign( (void*)&LDCLINE$1, -1ll, (void*)vr$299, -1ll, 0 );
					}
					goto label$370;
					label$374:;
					{
						int64 vr$301 = FBGETOPTION( 37ll );
						if( vr$301 == 0ll ) goto label$376;
						{
							FBSTRING* vr$302 = HFINDLIB( (char*)"crtbeginS.o" );
							fb_StrConcatAssign( (void*)&LDCLINE$1, -1ll, (void*)vr$302, -1ll, 0 );
						}
						goto label$375;
						label$376:;
						{
							FBSTRING* vr$304 = HFINDLIB( (char*)"crtbegin.o" );
							fb_StrConcatAssign( (void*)&LDCLINE$1, -1ll, (void*)vr$304, -1ll, 0 );
						}
						label$375:;
					}
					goto label$370;
					label$371:;
					static const void* tmp$835[7ll] = {
						&&label$373,
						&&label$374,
						&&label$374,
						&&label$374,
						&&label$374,
						&&label$374,
						&&label$372,
					};
					if( (TMP$222$5 - 3ull) > 6ull ) goto label$374;
					goto *tmp$835[TMP$222$5 - 3ull];
					label$370:;
				}
			}
			label$367:;
			label$366:;
		}
		goto label$336;
		label$377:;
		{
			FBSTRING* vr$306 = HFINDLIB( (char*)"crt0.o" );
			fb_StrConcatAssign( (void*)&LDCLINE$1, -1ll, (void*)vr$306, -1ll, 0 );
		}
		goto label$336;
		label$337:;
		static const void* tmp$836[12ll] = {
			&&label$343,
			&&label$338,
			&&label$351,
			&&label$351,
			&&label$348,
			&&label$377,
			&&label$351,
			&&label$351,
			&&label$351,
			&&label$351,
			&&label$351,
			&&label$351,
		};
		if( TMP$210$2 > 11ull ) goto label$336;
		goto *tmp$836[TMP$210$2 - 0ull];
		label$336:;
	}
	if( *(int64*)((uint8*)&FBC$ + 2488ll) != 0ll ) goto label$379;
	{
		int64 vr$308 = FBGETOPTION( 3ll );
		if( vr$308 == 12ll ) goto label$381;
		{
			fb_StrConcatAssign( (void*)&LDCLINE$1, -1ll, (void*)" \x22", 3ll, 0 );
			fb_StrConcatAssign( (void*)&LDCLINE$1, -1ll, (void*)((uint8*)&FBC$ + 3295ll), 261ll, 0 );
			fb_StrConcatAssign( (void*)&LDCLINE$1, -1ll, (void*)"/", 2ll, 0 );
			int64 vr$313 = FBGETOPTION( 37ll );
			if( vr$313 == 0ll ) goto label$383;
			{
				fb_StrConcatAssign( (void*)&LDCLINE$1, -1ll, (void*)"fbrt0pic.o", 11ll, 0 );
			}
			goto label$382;
			label$383:;
			{
				fb_StrConcatAssign( (void*)&LDCLINE$1, -1ll, (void*)"fbrt0.o", 8ll, 0 );
			}
			label$382:;
			fb_StrConcatAssign( (void*)&LDCLINE$1, -1ll, (void*)"\x22", 2ll, 0 );
		}
		label$381:;
		label$380:;
	}
	label$379:;
	label$378:;
	{
		FBSTRING* OBJFILE$2;
		void* vr$318 = LISTGETHEAD( (struct $5TLIST*)((uint8*)&FBC$ + 400ll) );
		OBJFILE$2 = (FBSTRING*)vr$318;
		label$384:;
		if( OBJFILE$2 == (FBSTRING*)0ull ) goto label$385;
		{
			FBSTRING TMP$228$3;
			FBSTRING TMP$229$3;
			FBSTRING TMP$230$3;
			__builtin_memset( &TMP$228$3, 0, 24ll );
			FBSTRING* vr$321 = fb_StrConcat( &TMP$228$3, (void*)" \x22", 3ll, (void*)OBJFILE$2, -1ll );
			__builtin_memset( &TMP$229$3, 0, 24ll );
			FBSTRING* vr$324 = fb_StrConcat( &TMP$229$3, (void*)vr$321, -1ll, (void*)"\x22", 2ll );
			__builtin_memset( &TMP$230$3, 0, 24ll );
			FBSTRING* vr$328 = fb_StrConcat( &TMP$230$3, (void*)&LDCLINE$1, -1ll, (void*)vr$324, -1ll );
			fb_StrAssign( (void*)&LDCLINE$1, -1ll, (void*)vr$328, -1ll, 0 );
			void* vr$330 = LISTGETNEXT( (void*)OBJFILE$2 );
			OBJFILE$2 = (FBSTRING*)vr$330;
		}
		goto label$384;
		label$385:;
	}
	int64 vr$331 = FBGETOPTION( 3ll );
	if( vr$331 == 10ll ) goto label$387;
	{
		int64 vr$332 = FBGETOPTION( 3ll );
		if( vr$332 == 12ll ) goto label$389;
		{
			fb_StrConcatAssign( (void*)&LDCLINE$1, -1ll, (void*)" \x22-(\x22", 6ll, 0 );
		}
		label$389:;
		label$388:;
	}
	label$387:;
	label$386:;
	{
		FBSTRING* LIBFILE$2;
		void* vr$335 = LISTGETHEAD( (struct $5TLIST*)((uint8*)&FBC$ + 464ll) );
		LIBFILE$2 = (FBSTRING*)vr$335;
		label$390:;
		if( LIBFILE$2 == (FBSTRING*)0ull ) goto label$391;
		{
			FBSTRING TMP$232$3;
			FBSTRING TMP$233$3;
			FBSTRING TMP$234$3;
			__builtin_memset( &TMP$232$3, 0, 24ll );
			FBSTRING* vr$338 = fb_StrConcat( &TMP$232$3, (void*)" \x22", 3ll, (void*)LIBFILE$2, -1ll );
			__builtin_memset( &TMP$233$3, 0, 24ll );
			FBSTRING* vr$341 = fb_StrConcat( &TMP$233$3, (void*)vr$338, -1ll, (void*)"\x22", 2ll );
			__builtin_memset( &TMP$234$3, 0, 24ll );
			FBSTRING* vr$345 = fb_StrConcat( &TMP$234$3, (void*)&LDCLINE$1, -1ll, (void*)vr$341, -1ll );
			fb_StrAssign( (void*)&LDCLINE$1, -1ll, (void*)vr$345, -1ll, 0 );
			void* vr$347 = LISTGETNEXT( (void*)LIBFILE$2 );
			LIBFILE$2 = (FBSTRING*)vr$347;
		}
		goto label$390;
		label$391:;
	}
	{
		struct $11TSTRSETITEM* I$2;
		void* vr$349 = LISTGETHEAD( (struct $5TLIST*)((uint8*)&FBC$ + 792ll) );
		I$2 = (struct $11TSTRSETITEM*)vr$349;
		int64 CHECKDLLNAME$2;
		int64 vr$350 = FBGETOPTION( 0ll );
		CHECKDLLNAME$2 = (int64)-(vr$350 == 2ll);
		label$392:;
		if( I$2 == (struct $11TSTRSETITEM*)0ull ) goto label$393;
		{
			int64 TMP$235$3;
			if( CHECKDLLNAME$2 == 0ll ) goto label$394;
			int32 vr$355 = fb_StrCompare( (void*)I$2, -1ll, (void*)&DLLNAME$1, -1ll );
			TMP$235$3 = (int64)-((int64)vr$355 != 0ll);
			goto label$1508;
			label$394:;
			TMP$235$3 = -1ll;
			label$1508:;
			if( TMP$235$3 == 0ll ) goto label$396;
			{
				FBSTRING TMP$237$4;
				FBSTRING TMP$238$4;
				__builtin_memset( &TMP$237$4, 0, 24ll );
				FBSTRING* vr$362 = fb_StrConcat( &TMP$237$4, (void*)" -l", 4ll, (void*)I$2, -1ll );
				__builtin_memset( &TMP$238$4, 0, 24ll );
				FBSTRING* vr$366 = fb_StrConcat( &TMP$238$4, (void*)&LDCLINE$1, -1ll, (void*)vr$362, -1ll );
				fb_StrAssign( (void*)&LDCLINE$1, -1ll, (void*)vr$366, -1ll, 0 );
			}
			label$396:;
			label$395:;
			void* vr$368 = LISTGETNEXT( (void*)I$2 );
			I$2 = (struct $11TSTRSETITEM*)vr$368;
		}
		goto label$392;
		label$393:;
	}
	int64 vr$369 = FBGETOPTION( 3ll );
	if( vr$369 == 10ll ) goto label$398;
	{
		int64 vr$370 = FBGETOPTION( 3ll );
		if( vr$370 == 12ll ) goto label$400;
		{
			fb_StrConcatAssign( (void*)&LDCLINE$1, -1ll, (void*)" \x22-)\x22", 6ll, 0 );
		}
		goto label$399;
		label$400:;
		{
			fb_StrConcatAssign( (void*)&LDCLINE$1, -1ll, (void*)" -lfb", 6ll, 0 );
		}
		label$399:;
	}
	label$398:;
	label$397:;
	{
		uint64 TMP$241$2;
		int64 vr$373 = FBGETOPTION( 3ll );
		TMP$241$2 = (uint64)vr$373;
		goto label$402;
		label$403:;
		{
			int64 vr$374 = FBGETOPTION( 37ll );
			if( vr$374 == 0ll ) goto label$405;
			{
				FBSTRING* vr$375 = HFINDLIB( (char*)"crtendS.o" );
				fb_StrConcatAssign( (void*)&LDCLINE$1, -1ll, (void*)vr$375, -1ll, 0 );
			}
			goto label$404;
			label$405:;
			{
				FBSTRING* vr$377 = HFINDLIB( (char*)"crtend.o" );
				fb_StrConcatAssign( (void*)&LDCLINE$1, -1ll, (void*)vr$377, -1ll, 0 );
			}
			label$404:;
			int64 vr$379 = FBGETOPTION( 3ll );
			if( vr$379 == 9ll ) goto label$407;
			{
				FBSTRING* vr$380 = HFINDLIB( (char*)"crtn.o" );
				fb_StrConcatAssign( (void*)&LDCLINE$1, -1ll, (void*)vr$380, -1ll, 0 );
			}
			label$407:;
			label$406:;
		}
		goto label$401;
		label$408:;
		{
			FBSTRING* vr$382 = HFINDLIB( (char*)"crtend.o" );
			fb_StrConcatAssign( (void*)&LDCLINE$1, -1ll, (void*)vr$382, -1ll, 0 );
		}
		goto label$401;
		label$409:;
		{
			FBSTRING* vr$384 = HFINDLIB( (char*)"crtn.o" );
			fb_StrConcatAssign( (void*)&LDCLINE$1, -1ll, (void*)vr$384, -1ll, 0 );
			FBSTRING* vr$386 = HFINDLIB( (char*)"crtendS.o" );
			fb_StrConcatAssign( (void*)&LDCLINE$1, -1ll, (void*)vr$386, -1ll, 0 );
		}
		goto label$401;
		label$410:;
		{
			FBSTRING* vr$388 = HFINDLIB( (char*)"crtend.o" );
			fb_StrConcatAssign( (void*)&LDCLINE$1, -1ll, (void*)vr$388, -1ll, 0 );
		}
		goto label$401;
		label$402:;
		static const void* tmp$837[12ll] = {
			&&label$410,
			&&label$401,
			&&label$403,
			&&label$409,
			&&label$401,
			&&label$401,
			&&label$403,
			&&label$403,
			&&label$403,
			&&label$408,
			&&label$401,
			&&label$403,
		};
		if( TMP$241$2 > 11ull ) goto label$401;
		goto *tmp$837[TMP$241$2 - 0ull];
		label$401:;
	}
	int64 vr$390 = FBGETOPTION( 3ll );
	if( vr$390 != 10ll ) goto label$412;
	{
		fb_StrConcatAssign( (void*)&LDCLINE$1, -1ll, (void*)" -macosx_version_min 10.4", 26ll, 0 );
	}
	label$412:;
	label$411:;
	{
		uint64 TMP$246$2;
		int64 vr$392 = FBGETOPTION( 3ll );
		TMP$246$2 = (uint64)vr$392;
		goto label$414;
		label$415:;
		{
			int64 TMP$247$3;
			int32 OUTTYPE$3;
			int64 vr$393 = FBGETOPTION( 0ll );
			OUTTYPE$3 = (int32)vr$393;
			if( (int64)OUTTYPE$3 == 0ll ) goto label$416;
			TMP$247$3 = (int64)-((int64)OUTTYPE$3 == 2ll);
			goto label$1509;
			label$416:;
			TMP$247$3 = -1ll;
			label$1509:;
			if( TMP$247$3 == 0ll ) goto label$418;
			{
				int64 TMP$248$4;
				int64 TMP$249$4;
				int64 TMP$250$4;
				int32 CPUFAMILY$4;
				int64 vr$398 = FBGETCPUFAMILY(  );
				CPUFAMILY$4 = (int32)vr$398;
				if( (int64)CPUFAMILY$4 == 1ll ) goto label$419;
				TMP$248$4 = (int64)-((int64)CPUFAMILY$4 == 3ll);
				goto label$1510;
				label$419:;
				TMP$248$4 = -1ll;
				label$1510:;
				if( TMP$248$4 != 0ll ) goto label$420;
				TMP$249$4 = (int64)-((int64)CPUFAMILY$4 == 5ll);
				goto label$1511;
				label$420:;
				TMP$249$4 = -1ll;
				label$1511:;
				if( TMP$249$4 != 0ll ) goto label$421;
				TMP$250$4 = (int64)-((int64)CPUFAMILY$4 == 6ll);
				goto label$1512;
				label$421:;
				TMP$250$4 = -1ll;
				label$1512:;
				if( TMP$250$4 == 0ll ) goto label$423;
				{
					fb_StrConcatAssign( (void*)&LDCLINE$1, -1ll, (void*)" --eh-frame-hdr", 16ll, 0 );
				}
				label$423:;
				label$422:;
			}
			label$418:;
			label$417:;
		}
		goto label$413;
		label$414:;
		static const void* tmp$838[10ll] = {
			&&label$415,
			&&label$415,
			&&label$413,
			&&label$413,
			&&label$415,
			&&label$415,
			&&label$413,
			&&label$415,
			&&label$415,
			&&label$415,
		};
		if( (TMP$246$2 - 2ull) > 9ull ) goto label$413;
		goto *tmp$838[TMP$246$2 - 2ull];
		label$413:;
	}
	fb_StrConcatAssign( (void*)&LDCLINE$1, -1ll, (void*)" ", 2ll, 0 );
	fb_StrConcatAssign( (void*)&LDCLINE$1, -1ll, (void*)((uint8*)&FBC$ + 2048ll), -1ll, 0 );
	$7FBCTOOL LD$1;
	LD$1 = 2ll;
	int64 vr$411 = FBGETOPTION( 3ll );
	if( vr$411 != 12ll ) goto label$425;
	{
		LD$1 = 13ll;
	}
	label$425:;
	label$424:;
	int64 vr$413 = FBCRUNBIN( (char*)"linking", LD$1, &LDCLINE$1 );
	if( vr$413 != 0ll ) goto label$427;
	{
		fb_StrDelete( (FBSTRING*)&DEFFILE$1 );
		fb_StrDelete( (FBSTRING*)&DLLNAME$1 );
		fb_StrDelete( (FBSTRING*)&LDCLINE$1 );
		goto label$217;
	}
	label$427:;
	label$426:;
	{
		uint64 TMP$253$2;
		int64 vr$417 = FBGETOPTION( 3ll );
		TMP$253$2 = (uint64)vr$417;
		goto label$429;
		label$430:;
		{
			int64 F$3;
			int32 vr$418 = fb_FileFree(  );
			F$3 = (int64)vr$418;
			FBSTRING* vr$422 = fb_StrAllocTempDescZ( (char*)((uint8*)&FBC$ + 968ll) );
			int32 vr$423 = fb_FileOpen( (FBSTRING*)vr$422, 0u, 3u, 0u, (int32)F$3, 0 );
			if( (int64)vr$423 == 0ll ) goto label$432;
			{
				fb_StrDelete( (FBSTRING*)&DEFFILE$1 );
				fb_StrDelete( (FBSTRING*)&DLLNAME$1 );
				fb_StrDelete( (FBSTRING*)&LDCLINE$1 );
				goto label$217;
			}
			label$432:;
			label$431:;
			int32 VALUE$3;
			int64 vr$428 = FBGETOPTION( 38ll );
			VALUE$3 = (int32)vr$428;
			int32 vr$432 = fb_FilePutLarge( (int32)F$3, 533ll, (void*)&VALUE$3, 4ull );
			if( (int64)vr$432 == 0ll ) goto label$433;
			void* vr$434 = fb_ErrorThrowAt( 1326, (char*)"/root/FreeBASIC-1.10.3/src/compiler/fbc.bas", (void*)0ull, (void*)0ull );
			goto *vr$434;
			label$433:;
			int32 vr$436 = fb_FileClose( (int32)F$3 );
			if( (int64)vr$436 == 0ll ) goto label$434;
			void* vr$438 = fb_ErrorThrowAt( 1328, (char*)"/root/FreeBASIC-1.10.3/src/compiler/fbc.bas", (void*)0ull, (void*)0ull );
			goto *vr$438;
			label$434:;
		}
		goto label$428;
		label$435:;
		{
			int64 vr$439 = FBGETOPTION( 0ll );
			if( vr$439 != 2ll ) goto label$437;
			{
				int64 vr$442 = MAKEIMPLIB( &DLLNAME$1, &DEFFILE$1 );
				if( vr$442 != 0ll ) goto label$439;
				{
					fb_StrDelete( (FBSTRING*)&DEFFILE$1 );
					fb_StrDelete( (FBSTRING*)&DLLNAME$1 );
					fb_StrDelete( (FBSTRING*)&LDCLINE$1 );
					goto label$217;
				}
				label$439:;
				label$438:;
			}
			label$437:;
			label$436:;
		}
		goto label$428;
		label$440:;
		{
			FBSTRING TMP$265$3;
			FBSTRING TMP$270$3;
			FBSTRING TMP$271$3;
			FBSTRING CXBEPATH$3;
			__builtin_memset( &CXBEPATH$3, 0, 24ll );
			FBSTRING CXBECLINE$3;
			__builtin_memset( &CXBECLINE$3, 0, 24ll );
			int64 RES$3;
			int64 vr$449 = fb_StrLen( (void*)((uint8*)&FBC$ + 2354ll), 129ll );
			if( vr$449 != 0ll ) goto label$442;
			{
				FBSTRING TMP$254$4;
				__builtin_memset( &TMP$254$4, 0, 24ll );
				fb_StrAssign( (void*)&TMP$254$4, -1ll, (void*)((uint8*)&FBC$ + 968ll), 261ll, 0 );
				FBSTRING* vr$454 = HSTRIPEXT( &TMP$254$4 );
				fb_StrAssign( (void*)((uint8*)&FBC$ + 2354ll), 129ll, (void*)vr$454, -1ll, 0 );
				fb_StrDelete( (FBSTRING*)&TMP$254$4 );
			}
			label$442:;
			label$441:;
			fb_StrAssign( (void*)&CXBECLINE$3, -1ll, (void*)"-TITLE:\x22", 9ll, 0 );
			fb_StrConcatAssign( (void*)&CXBECLINE$3, -1ll, (void*)((uint8*)&FBC$ + 2354ll), 129ll, 0 );
			fb_StrConcatAssign( (void*)&CXBECLINE$3, -1ll, (void*)"\x22 ", 3ll, 0 );
			int64 vr$461 = FBGETOPTION( 14ll );
			if( vr$461 == 0ll ) goto label$444;
			{
				FBSTRING TMP$260$4;
				fb_StrConcatAssign( (void*)&CXBECLINE$3, -1ll, (void*)"-DUMPINFO:\x22", 12ll, 0 );
				__builtin_memset( &TMP$260$4, 0, 24ll );
				fb_StrAssign( (void*)&TMP$260$4, -1ll, (void*)((uint8*)&FBC$ + 968ll), 261ll, 0 );
				FBSTRING* vr$467 = HSTRIPEXT( &TMP$260$4 );
				fb_StrConcatAssign( (void*)&CXBECLINE$3, -1ll, (void*)vr$467, -1ll, 0 );
				fb_StrConcatAssign( (void*)&CXBECLINE$3, -1ll, (void*)".cxbe\x22", 7ll, 0 );
				fb_StrDelete( (FBSTRING*)&TMP$260$4 );
			}
			label$444:;
			label$443:;
			fb_StrConcatAssign( (void*)&CXBECLINE$3, -1ll, (void*)" -OUT:\x22", 8ll, 0 );
			__builtin_memset( &TMP$265$3, 0, 24ll );
			fb_StrAssign( (void*)&TMP$265$3, -1ll, (void*)((uint8*)&FBC$ + 968ll), 261ll, 0 );
			FBSTRING* vr$476 = HSTRIPEXT( &TMP$265$3 );
			fb_StrConcatAssign( (void*)&CXBECLINE$3, -1ll, (void*)vr$476, -1ll, 0 );
			fb_StrConcatAssign( (void*)&CXBECLINE$3, -1ll, (void*)".xbe", 5ll, 0 );
			fb_StrConcatAssign( (void*)&CXBECLINE$3, -1ll, (void*)"\x22", 2ll, 0 );
			fb_StrDelete( (FBSTRING*)&TMP$265$3 );
			fb_StrConcatAssign( (void*)&CXBECLINE$3, -1ll, (void*)" \x22", 3ll, 0 );
			fb_StrConcatAssign( (void*)&CXBECLINE$3, -1ll, (void*)((uint8*)&FBC$ + 968ll), 261ll, 0 );
			fb_StrConcatAssign( (void*)&CXBECLINE$3, -1ll, (void*)"\x22", 2ll, 0 );
			if( *(int64*)((uint8*)&FBC$ + 112ll) != 0ll ) goto label$446;
			{
				fb_StrConcatAssign( (void*)&CXBECLINE$3, -1ll, (void*)" >nul", 6ll, 0 );
			}
			label$446:;
			label$445:;
			if( *(int64*)((uint8*)&FBC$ + 112ll) == 0ll ) goto label$448;
			{
				FBSTRING* vr$486 = fb_StrAllocTempDescZEx( (char*)"cxbe: ", 6ll );
				fb_PrintString( 0, (FBSTRING*)vr$486, 2 );
				fb_PrintString( 0, (FBSTRING*)&CXBECLINE$3, 1 );
			}
			label$448:;
			label$447:;
			FBCFINDBIN( 9ll, &CXBEPATH$3 );
			__builtin_memset( &TMP$270$3, 0, 24ll );
			FBSTRING* vr$493 = fb_StrConcat( &TMP$270$3, (void*)&CXBEPATH$3, -1ll, (void*)" ", 2ll );
			__builtin_memset( &TMP$271$3, 0, 24ll );
			FBSTRING* vr$496 = fb_StrConcat( &TMP$271$3, (void*)vr$493, -1ll, (void*)&CXBECLINE$3, -1ll );
			int32 vr$497 = fb_Shell( (FBSTRING*)vr$496 );
			RES$3 = (int64)vr$497;
			if( RES$3 == 0ll ) goto label$450;
			{
				if( *(int64*)((uint8*)&FBC$ + 112ll) == 0ll ) goto label$452;
				{
					FBSTRING TMP$273$5;
					FBSTRING* vr$499 = fb_LongintToStr( RES$3 );
					__builtin_memset( &TMP$273$5, 0, 24ll );
					FBSTRING* vr$502 = fb_StrConcat( &TMP$273$5, (void*)"cxbe failed: exit code ", 24ll, (void*)vr$499, -1ll );
					fb_PrintString( 0, (FBSTRING*)vr$502, 1 );
				}
				label$452:;
				label$451:;
				fb_StrDelete( (FBSTRING*)&CXBECLINE$3 );
				fb_StrDelete( (FBSTRING*)&CXBEPATH$3 );
				fb_StrDelete( (FBSTRING*)&DEFFILE$1 );
				fb_StrDelete( (FBSTRING*)&DLLNAME$1 );
				fb_StrDelete( (FBSTRING*)&LDCLINE$1 );
				goto label$217;
			}
			label$450:;
			label$449:;
			FBSTRING* vr$509 = fb_StrAllocTempDescZ( (char*)((uint8*)&FBC$ + 968ll) );
			fb_FileKill( (FBSTRING*)vr$509 );
			fb_StrDelete( (FBSTRING*)&CXBECLINE$3 );
			fb_StrDelete( (FBSTRING*)&CXBEPATH$3 );
		}
		goto label$428;
		label$429:;
		static const void* tmp$839[6ll] = {
			&&label$435,
			&&label$435,
			&&label$428,
			&&label$428,
			&&label$430,
			&&label$440,
		};
		if( TMP$253$2 > 5ull ) goto label$428;
		goto *tmp$839[TMP$253$2 - 0ull];
		label$428:;
	}
	fb$result$1 = -1ll;
	fb_StrDelete( (FBSTRING*)&DEFFILE$1 );
	fb_StrDelete( (FBSTRING*)&DLLNAME$1 );
	fb_StrDelete( (FBSTRING*)&LDCLINE$1 );
	label$217:;
	return fb$result$1;
}

static void HREADOBJINFO( void )
{
	label$453:;
	FBSTRING DAT$1;
	__builtin_memset( &DAT$1, 0, 24ll );
	int64 LANG$1;
	label$455:;
	{
		{
			uint64 TMP$274$3;
			int64 vr$2 = OBJINFOREADNEXT( &DAT$1 );
			TMP$274$3 = (uint64)vr$2;
			goto label$459;
			label$460:;
			{
				STRSETADD( (struct $7TSTRSET*)((uint8*)&FBC$ + 792ll), &DAT$1, 0ll );
			}
			goto label$458;
			label$461:;
			{
				STRSETADD( (struct $7TSTRSET*)((uint8*)&FBC$ + 880ll), &DAT$1, 0ll );
			}
			goto label$458;
			label$462:;
			{
				if( *(int64*)((uint8*)&FBC$ + 3832ll) != 0ll ) goto label$464;
				{
					char* vr$7 = OBJINFOGETFILENAME(  );
					ERRREPORTWARNEX( 20ll, (char*)vr$7, -1ll, 1ll, (char*)0ull );
					*(int64*)((uint8*)&FBC$ + 3832ll) = -1ll;
					FBSETOPTION( 35ll, -1ll );
				}
				label$464:;
				label$463:;
			}
			goto label$458;
			label$465:;
			{
				FBSETOPTION( 36ll, -1ll );
			}
			goto label$458;
			label$466:;
			{
				$7FB_LANG vr$8 = FBGETLANGID( (char*)*(char**)&DAT$1 );
				LANG$1 = vr$8;
				if( LANG$1 != -1ll ) goto label$468;
				{
					LANG$1 = 0ll;
				}
				label$468:;
				label$467:;
				if( LANG$1 == *(int64*)((uint8*)&FBC$ + 3824ll) ) goto label$470;
				{
					char* vr$9 = OBJINFOGETFILENAME(  );
					ERRREPORTWARNEX( 21ll, (char*)vr$9, -1ll, 1ll, (char*)0ull );
					*($7FB_LANG*)((uint8*)&FBC$ + 3824ll) = LANG$1;
					FBSETOPTION( 10ll, LANG$1 );
				}
				label$470:;
				label$469:;
			}
			goto label$458;
			label$471:;
			{
				goto label$456;
			}
			goto label$458;
			label$459:;
			static const void* tmp$840[5ll] = {
				&&label$460,
				&&label$461,
				&&label$462,
				&&label$465,
				&&label$466,
			};
			if( TMP$274$3 > 4ull ) goto label$471;
			goto *tmp$840[TMP$274$3 - 0ull];
			label$458:;
		}
	}
	label$457:;
	goto label$455;
	label$456:;
	OBJINFOREADEND(  );
	fb_StrDelete( (FBSTRING*)&DAT$1 );
	label$454:;
}

static void HCOLLECTOBJINFO( void )
{
	label$472:;
	FBSTRING* S$1;
	struct $11TSTRSETITEM* I$1;
	void* vr$1 = LISTGETHEAD( (struct $5TLIST*)((uint8*)&FBC$ + 400ll) );
	S$1 = (FBSTRING*)vr$1;
	label$474:;
	if( S$1 == (FBSTRING*)0ull ) goto label$475;
	{
		OBJINFOREADOBJ( S$1 );
		HREADOBJINFO(  );
		void* vr$2 = LISTGETNEXT( (void*)S$1 );
		S$1 = (FBSTRING*)vr$2;
	}
	goto label$474;
	label$475:;
	void* vr$4 = LISTGETHEAD( (struct $5TLIST*)((uint8*)&FBC$ + 792ll) );
	I$1 = (struct $11TSTRSETITEM*)vr$4;
	label$476:;
	if( I$1 == (struct $11TSTRSETITEM*)0ull ) goto label$477;
	{
		if( *(int64*)((uint8*)I$1 + 24ll) != 0ll ) goto label$479;
		{
			OBJINFOREADLIB( (FBSTRING*)I$1, (struct $5TLIST*)((uint8*)&FBC$ + 880ll) );
			HREADOBJINFO(  );
		}
		label$479:;
		label$478:;
		void* vr$9 = LISTGETNEXT( (void*)I$1 );
		I$1 = (struct $11TSTRSETITEM*)vr$9;
	}
	goto label$476;
	label$477:;
	void* vr$11 = LISTGETHEAD( (struct $5TLIST*)((uint8*)&FBC$ + 464ll) );
	S$1 = (FBSTRING*)vr$11;
	label$480:;
	if( S$1 == (FBSTRING*)0ull ) goto label$481;
	{
		OBJINFOREADLIBFILE( S$1 );
		HREADOBJINFO(  );
		void* vr$12 = LISTGETNEXT( (void*)S$1 );
		S$1 = (FBSTRING*)vr$12;
	}
	goto label$480;
	label$481:;
	label$473:;
}

static void HFATALINVALIDOPTION( FBSTRING* ARG$1, int64 IS_SOURCE$1 )
{
	FBSTRING TMP$275$1;
	FBSTRING TMP$276$1;
	FBSTRING TMP$277$1;
	int64 TMP$278$1;
	label$482:;
	if( IS_SOURCE$1 == 0ll ) goto label$484;
	TMP$278$1 = 0ll;
	goto label$1513;
	label$484:;
	TMP$278$1 = -1ll;
	label$1513:;
	__builtin_memset( &TMP$277$1, 0, 24ll );
	__builtin_memset( &TMP$275$1, 0, 24ll );
	FBSTRING* vr$3 = fb_StrConcat( &TMP$275$1, (void*)"\x22", 2ll, (void*)ARG$1, -1ll );
	__builtin_memset( &TMP$276$1, 0, 24ll );
	FBSTRING* vr$6 = fb_StrConcat( &TMP$276$1, (void*)vr$3, -1ll, (void*)"\x22", 2ll );
	fb_StrAssign( (void*)&TMP$277$1, -1ll, (void*)vr$6, -1ll, 0 );
	ERRREPORTEX( 81ll, (char*)*(char**)&TMP$277$1, TMP$278$1, 1ll, (char*)0ull );
	fb_StrDelete( (FBSTRING*)&TMP$277$1 );
	FBCEND( 1ll );
	label$483:;
}

static void HCHECKWAITINGOBJFILE( void )
{
	label$485:;
	int64 vr$1 = fb_StrLen( (void*)((uint8*)&FBC$ + 16ll), -1ll );
	if( vr$1 <= 0ll ) goto label$488;
	{
		FBSTRING TMP$279$2;
		FBSTRING TMP$280$2;
		__builtin_memset( &TMP$280$2, 0, 24ll );
		__builtin_memset( &TMP$279$2, 0, 24ll );
		FBSTRING* vr$6 = fb_StrConcat( &TMP$279$2, (void*)"-o ", 4ll, (void*)((uint8*)&FBC$ + 16ll), -1ll );
		fb_StrAssign( (void*)&TMP$280$2, -1ll, (void*)vr$6, -1ll, 0 );
		ERRREPORTEX( 292ll, (char*)*(char**)&TMP$280$2, -1ll, 1ll, (char*)0ull );
		fb_StrDelete( (FBSTRING*)&TMP$280$2 );
		fb_StrAssign( (void*)((uint8*)&FBC$ + 16ll), -1ll, (void*)"", 1ll, 0 );
	}
	label$488:;
	label$487:;
	label$486:;
}

static void HSETIOFILE( struct $9FBCIOFILE* MODULE$1, FBSTRING* SRCFILE$1, int64 IS_RC$1 )
{
	label$489:;
	fb_StrAssign( (void*)MODULE$1, -1ll, (void*)SRCFILE$1, -1ll, 0 );
	int64 vr$3 = fb_StrLen( (void*)((uint8*)&FBC$ + 16ll), -1ll );
	if( vr$3 != 0ll ) goto label$492;
	{
		*(int64*)((uint8*)MODULE$1 + 32ll) = 0ll;
		if( IS_RC$1 == 0ll ) goto label$494;
		{
			FBSTRING TMP$282$3;
			__builtin_memset( &TMP$282$3, 0, 24ll );
			FBSTRING* vr$7 = fb_StrConcat( &TMP$282$3, (void*)SRCFILE$1, -1ll, (void*)".o", 3ll );
			fb_StrAssign( (void*)((uint8*)&FBC$ + 16ll), -1ll, (void*)vr$7, -1ll, 0 );
		}
		goto label$493;
		label$494:;
		{
			FBSTRING TMP$283$3;
			FBSTRING* vr$9 = HSTRIPEXT( SRCFILE$1 );
			__builtin_memset( &TMP$283$3, 0, 24ll );
			FBSTRING* vr$12 = fb_StrConcat( &TMP$283$3, (void*)vr$9, -1ll, (void*)".o", 3ll );
			fb_StrAssign( (void*)((uint8*)&FBC$ + 16ll), -1ll, (void*)vr$12, -1ll, 0 );
		}
		label$493:;
		*(struct $9FBCIOFILE**)((uint8*)&FBC$ + 8ll) = MODULE$1;
	}
	goto label$491;
	label$492:;
	{
		*(int64*)((uint8*)MODULE$1 + 32ll) = -1ll;
	}
	label$491:;
	FBSTRING* vr$16 = FBCADDOBJ( (FBSTRING*)((uint8*)&FBC$ + 16ll) );
	*(FBSTRING**)((uint8*)MODULE$1 + 24ll) = vr$16;
	fb_StrAssign( (void*)((uint8*)&FBC$ + 16ll), -1ll, (void*)"", 1ll, 0 );
	label$490:;
}

static void HADDBAS( FBSTRING* BASFILE$1 )
{
	label$495:;
	void* vr$1 = LISTNEWNODE( (struct $5TLIST*)((uint8*)&FBC$ + 144ll) );
	HSETIOFILE( (struct $9FBCIOFILE*)vr$1, BASFILE$1, 0ll );
	label$496:;
}

static void HPARSEGNUTRIPLET( FBSTRING* ARG$1, int64 SEPARATOR$1, int64* OS$1, int64* CPUTYPE$1 )
{
	label$497:;
	{
		int64 I$2;
		I$2 = 0ll;
		label$502:;
		{
			FBSTRING* vr$1 = fb_StrAllocTempDescZ( (char*)*(char**)((int64)(struct $11FBGNUOSINFO*)GNUOSMAP$ + (I$2 << (4ll & 63ll))) );
			int64 vr$2 = fb_StrInstr( 1ll, (FBSTRING*)ARG$1, (FBSTRING*)vr$1 );
			if( vr$2 <= 0ll ) goto label$504;
			{
				*OS$1 = *(int64*)(((int64)(struct $11FBGNUOSINFO*)GNUOSMAP$ + (I$2 << (4ll & 63ll))) + 8ll);
				goto label$501;
			}
			label$504:;
			label$503:;
		}
		label$500:;
		I$2 = I$2 + 1ll;
		label$499:;
		if( I$2 <= 12ll ) goto label$502;
		label$501:;
	}
	if( SEPARATOR$1 <= 0ll ) goto label$506;
	{
		FBSTRING ARCH$2;
		FBSTRING* vr$7 = fb_LEFT( (FBSTRING*)ARG$1, SEPARATOR$1 + -1ll );
		fb_StrInit( (void*)&ARCH$2, -1ll, (void*)vr$7, -1ll, 0 );
		{
			int64 I$3;
			I$3 = 0ll;
			label$510:;
			{
				int32 vr$11 = fb_StrCompare( (void*)&ARCH$2, -1ll, *(void**)((int64)(struct $13FBGNUARCHINFO*)GNUARCHMAP$ + (I$3 << (4ll & 63ll))), 0ll );
				if( (int64)vr$11 != 0ll ) goto label$512;
				{
					*CPUTYPE$1 = *(int64*)(((int64)(struct $13FBGNUARCHINFO*)GNUARCHMAP$ + (I$3 << (4ll & 63ll))) + 8ll);
					goto label$509;
				}
				label$512:;
				label$511:;
			}
			label$508:;
			I$3 = I$3 + 1ll;
			label$507:;
			if( I$3 <= 21ll ) goto label$510;
			label$509:;
		}
		fb_StrDelete( (FBSTRING*)&ARCH$2 );
	}
	label$506:;
	label$505:;
	label$498:;
}

static void HPARSETARGETARG( FBSTRING* ARG$1, int64* OS$1, int64* CPUTYPE$1, int64* IS_GNU_TRIPLET$1 )
{
	label$521:;
	*OS$1 = -1ll;
	*CPUTYPE$1 = -1ll;
	*IS_GNU_TRIPLET$1 = 0ll;
	FBSTRING LCASEARG$1;
	FBSTRING* vr$3 = fb_StrLcase2( (FBSTRING*)ARG$1, 0 );
	fb_StrInit( (void*)&LCASEARG$1, -1ll, (void*)vr$3, -1ll, 0 );
	{
		int64 I$2;
		I$2 = 0ll;
		label$526:;
		{
			int32 vr$7 = fb_StrCompare( (void*)&LCASEARG$1, -1ll, *(void**)((int64)(struct $12FBOSARCHINFO*)FBOSARCHMAP$ + (I$2 * 24ll)), 0ll );
			if( (int64)vr$7 != 0ll ) goto label$528;
			{
				*OS$1 = *(int64*)(((int64)(struct $12FBOSARCHINFO*)FBOSARCHMAP$ + (I$2 * 24ll)) + 8ll);
				*CPUTYPE$1 = *(int64*)(((int64)(struct $12FBOSARCHINFO*)FBOSARCHMAP$ + (I$2 * 24ll)) + 16ll);
				fb_StrDelete( (FBSTRING*)&LCASEARG$1 );
				goto label$522;
			}
			label$528:;
			label$527:;
		}
		label$524:;
		I$2 = I$2 + 1ll;
		label$523:;
		if( I$2 <= 12ll ) goto label$526;
		label$525:;
	}
	int64 SEPARATOR$1;
	FBSTRING* vr$15 = fb_StrAllocTempDescZEx( (char*)"-", 1ll );
	int64 vr$16 = fb_StrInstr( 1ll, (FBSTRING*)ARG$1, (FBSTRING*)vr$15 );
	SEPARATOR$1 = vr$16;
	if( SEPARATOR$1 <= 0ll ) goto label$530;
	{
		FBSTRING TMP$326$2;
		FBSTRING TMP$327$2;
		__builtin_memset( &TMP$326$2, 0, 24ll );
		FBSTRING* vr$20 = fb_LEFT( (FBSTRING*)&LCASEARG$1, SEPARATOR$1 + -1ll );
		fb_StrAssign( (void*)&TMP$326$2, -1ll, (void*)vr$20, -1ll, 0 );
		int64 vr$23 = FBIDENTIFYOS( &TMP$326$2 );
		*OS$1 = vr$23;
		fb_StrDelete( (FBSTRING*)&TMP$326$2 );
		__builtin_memset( &TMP$327$2, 0, 24ll );
		int64 vr$28 = fb_StrLen( (void*)&LCASEARG$1, -1ll );
		FBSTRING* vr$31 = fb_RIGHT( (FBSTRING*)&LCASEARG$1, vr$28 - SEPARATOR$1 );
		fb_StrAssign( (void*)&TMP$327$2, -1ll, (void*)vr$31, -1ll, 0 );
		int64 vr$34 = FBCPUTYPEFROMCPUFAMILYID( &TMP$327$2 );
		*CPUTYPE$1 = vr$34;
		fb_StrDelete( (FBSTRING*)&TMP$327$2 );
	}
	label$530:;
	label$529:;
	if( ((int64)-(*OS$1 < 0ll) & (int64)-(*CPUTYPE$1 < 0ll)) == 0ll ) goto label$532;
	{
		HPARSEGNUTRIPLET( ARG$1, SEPARATOR$1, OS$1, CPUTYPE$1 );
		*IS_GNU_TRIPLET$1 = -1ll;
	}
	label$532:;
	label$531:;
	fb_StrDelete( (FBSTRING*)&LCASEARG$1 );
	label$522:;
}

static void HANDLEOPT( int64 OPTID$1, FBSTRING* ARG$1, int64 IS_SOURCE$1 )
{
	label$533:;
	{
		uint64 TMP$330$2;
		TMP$330$2 = (uint64)OPTID$1;
		goto label$536;
		label$537:;
		{
			FBCADDOBJ( ARG$1 );
		}
		goto label$535;
		label$538:;
		{
			int32 vr$0 = fb_StrCompare( (void*)ARG$1, -1ll, (void*)"native", 7ll );
			*(int64*)((uint8*)&FBC$ + 56ll) = (int64)-((int64)vr$0 == 0ll);
			int64 vr$3 = FBIDENTIFYFBCARCH( ARG$1 );
			*(int64*)((uint8*)&FBC$ + 48ll) = vr$3;
			if( *(int64*)((uint8*)&FBC$ + 48ll) >= 0ll ) goto label$540;
			{
				FBSTRING TMP$333$4;
				FBSTRING TMP$334$4;
				__builtin_memset( &TMP$334$4, 0, 24ll );
				__builtin_memset( &TMP$333$4, 0, 24ll );
				FBSTRING* vr$7 = fb_StrConcat( &TMP$333$4, (void*)"-arch ", 7ll, (void*)ARG$1, -1ll );
				fb_StrAssign( (void*)&TMP$334$4, -1ll, (void*)vr$7, -1ll, 0 );
				HFATALINVALIDOPTION( &TMP$334$4, IS_SOURCE$1 );
				fb_StrDelete( (FBSTRING*)&TMP$334$4 );
			}
			label$540:;
			label$539:;
		}
		goto label$535;
		label$541:;
		{
			{
				FBSTRING TMP$335$4;
				fb_StrInit( (void*)&TMP$335$4, -1ll, (void*)ARG$1, -1ll, 0 );
				int32 vr$13 = fb_StrCompare( (void*)&TMP$335$4, -1ll, (void*)"att", 4ll );
				if( (int64)vr$13 != 0ll ) goto label$543;
				label$544:;
				{
					*(int64*)((uint8*)&FBC$ + 64ll) = 1ll;
				}
				goto label$542;
				label$543:;
				int32 vr$16 = fb_StrCompare( (void*)&TMP$335$4, -1ll, (void*)"intel", 6ll );
				if( (int64)vr$16 != 0ll ) goto label$545;
				label$546:;
				{
					*(int64*)((uint8*)&FBC$ + 64ll) = 0ll;
				}
				goto label$542;
				label$545:;
				{
					HFATALINVALIDOPTION( ARG$1, IS_SOURCE$1 );
				}
				label$547:;
				label$542:;
				fb_StrDelete( (FBSTRING*)&TMP$335$4 );
			}
		}
		goto label$535;
		label$548:;
		{
			HADDBAS( ARG$1 );
		}
		goto label$535;
		label$549:;
		{
			fb_StrAssign( (void*)((uint8*)&FBC$ + 3556ll), 261ll, (void*)ARG$1, -1ll, 0 );
		}
		goto label$535;
		label$550:;
		{
			FBSETOPTION( 0ll, 3ll );
			*(int64*)((uint8*)&FBC$ + 104ll) = -1ll;
		}
		goto label$535;
		label$551:;
		{
			*(int64*)((uint8*)&FBC$ + 104ll) = -1ll;
		}
		goto label$535;
		label$552:;
		{
			FBADDPREDEFINE( ARG$1 );
		}
		goto label$535;
		label$553:;
		{
			FBSETOPTION( 0ll, 2ll );
		}
		goto label$535;
		label$554:;
		{
			FBSETOPTION( 16ll, -1ll );
			FBSETOPTION( 21ll, -1ll );
		}
		goto label$535;
		label$555:;
		{
			FBSETOPTION( 22ll, -1ll );
		}
		goto label$535;
		label$556:;
		{
			FBSETOPTION( 15ll, -1ll );
		}
		goto label$535;
		label$557:;
		{
			FBSETOPTION( 13ll, -1ll );
		}
		goto label$535;
		label$558:;
		{
			FBSETOPTION( 14ll, -1ll );
		}
		goto label$535;
		label$559:;
		{
			FBSETOPTION( 19ll, -1ll );
		}
		goto label$535;
		label$560:;
		{
			FBSETOPTION( 20ll, -1ll );
		}
		goto label$535;
		label$561:;
		{
			FBSETOPTION( 21ll, -1ll );
		}
		goto label$535;
		label$562:;
		{
			fb_StrAssign( (void*)((uint8*)&FBC$ + 1490ll), 129ll, (void*)ARG$1, -1ll, 0 );
		}
		goto label$535;
		label$563:;
		{
			FBSETOPTION( 16ll, -1ll );
			FBSETOPTION( 17ll, -1ll );
			FBSETOPTION( 21ll, -1ll );
		}
		goto label$535;
		label$564:;
		{
			FBSETOPTION( 16ll, -1ll );
			FBSETOPTION( 17ll, -1ll );
			FBSETOPTION( 18ll, -1ll );
			FBSETOPTION( 19ll, -1ll );
			FBSETOPTION( 22ll, -1ll );
			FBSETOPTION( 20ll, -1ll );
			FBSETOPTION( 21ll, -1ll );
		}
		goto label$535;
		label$565:;
		{
			FBSETOPTION( 33ll, -1ll );
		}
		goto label$535;
		label$566:;
		{
			FBSETOPTION( 36ll, -1ll );
		}
		goto label$535;
		label$567:;
		{
			int64 VALUE$3;
			$7FB_LANG vr$22 = FBGETLANGID( (char*)*(char**)ARG$1 );
			VALUE$3 = vr$22;
			if( VALUE$3 != -1ll ) goto label$569;
			{
				HFATALINVALIDOPTION( ARG$1, IS_SOURCE$1 );
			}
			label$569:;
			label$568:;
			int64 vr$23 = FBGETOPTION( 11ll );
			if( (IS_SOURCE$1 & vr$23) == 0ll ) goto label$571;
			{
				ERRREPORTWARN( 30ll, (char*)0ull, 1ll, (char*)0ull );
			}
			goto label$570;
			label$571:;
			{
				FBSETOPTION( 10ll, VALUE$3 );
				FBSETOPTION( 11ll, -1ll );
				*($7FB_LANG*)((uint8*)&FBC$ + 3824ll) = VALUE$3;
				if( IS_SOURCE$1 == 0ll ) goto label$573;
				{
					FBSETOPTION( 12ll, VALUE$3 );
				}
				label$573:;
				label$572:;
			}
			label$570:;
		}
		goto label$535;
		label$574:;
		{
			int64 VALUE$3;
			{
				FBSTRING TMP$338$4;
				FBSTRING* vr$25 = fb_StrUcase2( (FBSTRING*)ARG$1, 0 );
				fb_StrInit( (void*)&TMP$338$4, -1ll, (void*)vr$25, -1ll, 0 );
				int32 vr$28 = fb_StrCompare( (void*)&TMP$338$4, -1ll, (void*)"PRECISE", 8ll );
				if( (int64)vr$28 != 0ll ) goto label$576;
				label$577:;
				{
					VALUE$3 = 0ll;
				}
				goto label$575;
				label$576:;
				int32 vr$31 = fb_StrCompare( (void*)&TMP$338$4, -1ll, (void*)"FAST", 5ll );
				if( (int64)vr$31 != 0ll ) goto label$578;
				label$579:;
				{
					VALUE$3 = 1ll;
				}
				goto label$575;
				label$578:;
				{
					HFATALINVALIDOPTION( ARG$1, IS_SOURCE$1 );
				}
				label$580:;
				label$575:;
				fb_StrDelete( (FBSTRING*)&TMP$338$4 );
			}
			FBSETOPTION( 6ll, VALUE$3 );
		}
		goto label$535;
		label$581:;
		{
			int64 VALUE$3;
			{
				FBSTRING TMP$341$4;
				FBSTRING* vr$34 = fb_StrUcase2( (FBSTRING*)ARG$1, 0 );
				fb_StrInit( (void*)&TMP$341$4, -1ll, (void*)vr$34, -1ll, 0 );
				int32 vr$37 = fb_StrCompare( (void*)&TMP$341$4, -1ll, (void*)"X87", 4ll );
				if( (int64)vr$37 == 0ll ) goto label$584;
				label$585:;
				int32 vr$40 = fb_StrCompare( (void*)&TMP$341$4, -1ll, (void*)"FPU", 4ll );
				if( (int64)vr$40 != 0ll ) goto label$583;
				label$584:;
				{
					VALUE$3 = 0ll;
				}
				goto label$582;
				label$583:;
				int32 vr$43 = fb_StrCompare( (void*)&TMP$341$4, -1ll, (void*)"SSE", 4ll );
				if( (int64)vr$43 != 0ll ) goto label$586;
				label$587:;
				{
					VALUE$3 = 1ll;
				}
				goto label$582;
				label$586:;
				{
					HFATALINVALIDOPTION( ARG$1, IS_SOURCE$1 );
				}
				label$588:;
				label$582:;
				fb_StrDelete( (FBSTRING*)&TMP$341$4 );
			}
			FBSETOPTION( 5ll, VALUE$3 );
		}
		goto label$535;
		label$589:;
		{
			FBSETOPTION( 13ll, -1ll );
			FBSETOPTION( 14ll, -1ll );
			FBSETOPTION( 15ll, -1ll );
		}
		goto label$535;
		label$590:;
		{
			{
				FBSTRING TMP$345$4;
				FBSTRING* vr$46 = fb_StrLcase2( (FBSTRING*)ARG$1, 0 );
				fb_StrInit( (void*)&TMP$345$4, -1ll, (void*)vr$46, -1ll, 0 );
				int32 vr$49 = fb_StrCompare( (void*)&TMP$345$4, -1ll, (void*)"gas", 4ll );
				if( (int64)vr$49 != 0ll ) goto label$592;
				label$593:;
				{
					*(int64*)((uint8*)&FBC$ + 40ll) = 0ll;
				}
				goto label$591;
				label$592:;
				int32 vr$52 = fb_StrCompare( (void*)&TMP$345$4, -1ll, (void*)"gcc", 4ll );
				if( (int64)vr$52 != 0ll ) goto label$594;
				label$595:;
				{
					*(int64*)((uint8*)&FBC$ + 40ll) = 1ll;
				}
				goto label$591;
				label$594:;
				int32 vr$55 = fb_StrCompare( (void*)&TMP$345$4, -1ll, (void*)"llvm", 5ll );
				if( (int64)vr$55 != 0ll ) goto label$596;
				label$597:;
				{
					*(int64*)((uint8*)&FBC$ + 40ll) = 2ll;
				}
				goto label$591;
				label$596:;
				int32 vr$58 = fb_StrCompare( (void*)&TMP$345$4, -1ll, (void*)"gas64", 6ll );
				if( (int64)vr$58 != 0ll ) goto label$598;
				label$599:;
				{
					*(int64*)((uint8*)&FBC$ + 40ll) = 3ll;
				}
				goto label$591;
				label$598:;
				{
					HFATALINVALIDOPTION( ARG$1, IS_SOURCE$1 );
				}
				label$600:;
				label$591:;
				fb_StrDelete( (FBSTRING*)&TMP$345$4 );
			}
		}
		goto label$535;
		label$601:;
		{
			*(int64*)((uint8*)&FBC$ + 128ll) = -1ll;
		}
		goto label$535;
		label$602:;
		{
			FBSTRING TMP$349$3;
			__builtin_memset( &TMP$349$3, 0, 24ll );
			FBSTRING* vr$62 = PATHSTRIPDIV( ARG$1 );
			fb_StrAssign( (void*)&TMP$349$3, -1ll, (void*)vr$62, -1ll, 0 );
			FBADDINCLUDEPATH( &TMP$349$3 );
			fb_StrDelete( (FBSTRING*)&TMP$349$3 );
		}
		goto label$535;
		label$603:;
		{
			FBADDPREINCLUDE( ARG$1 );
		}
		goto label$535;
		label$604:;
		{
			STRSETADD( (struct $7TSTRSET*)((uint8*)&FBC$ + 528ll), ARG$1, 0ll );
		}
		goto label$535;
		label$605:;
		{
			int64 VALUE$3;
			$7FB_LANG vr$68 = FBGETLANGID( (char*)*(char**)ARG$1 );
			VALUE$3 = vr$68;
			if( VALUE$3 != -1ll ) goto label$607;
			{
				HFATALINVALIDOPTION( ARG$1, IS_SOURCE$1 );
			}
			label$607:;
			label$606:;
			int64 vr$69 = FBGETOPTION( 11ll );
			if( vr$69 != 0ll ) goto label$609;
			{
				FBSETOPTION( 10ll, VALUE$3 );
				*($7FB_LANG*)((uint8*)&FBC$ + 3824ll) = VALUE$3;
				if( IS_SOURCE$1 == 0ll ) goto label$611;
				{
					FBSETOPTION( 12ll, VALUE$3 );
				}
				label$611:;
				label$610:;
			}
			label$609:;
			label$608:;
		}
		goto label$535;
		label$612:;
		{
			FBSETOPTION( 0ll, 1ll );
		}
		goto label$535;
		label$613:;
		{
			fb_StrAssign( (void*)((uint8*)&FBC$ + 1229ll), 261ll, (void*)ARG$1, -1ll, 0 );
			*(int64*)((uint8*)&FBC$ + 1624ll) = -1ll;
		}
		goto label$535;
		label$614:;
		{
			fb_StrAssign( (void*)((uint8*)&FBC$ + 1632ll), 261ll, (void*)ARG$1, -1ll, 0 );
		}
		goto label$535;
		label$615:;
		{
			int64 VALUE$3;
			int32 vr$72 = fb_StrCompare( (void*)ARG$1, -1ll, (void*)"inf", 4ll );
			if( (int64)vr$72 != 0ll ) goto label$617;
			{
				VALUE$3 = 2147483647ll;
			}
			goto label$616;
			label$617:;
			{
				int32 vr$74 = fb_VALINT( (FBSTRING*)ARG$1 );
				VALUE$3 = (int64)vr$74;
				if( VALUE$3 > 0ll ) goto label$619;
				{
					HFATALINVALIDOPTION( ARG$1, IS_SOURCE$1 );
				}
				label$619:;
				label$618:;
			}
			label$616:;
			FBSETOPTION( 26ll, VALUE$3 );
		}
		goto label$535;
		label$620:;
		{
			FBSETOPTION( 35ll, -1ll );
			*(int64*)((uint8*)&FBC$ + 3832ll) = -1ll;
		}
		goto label$535;
		label$621:;
		{
			*(int64*)((uint8*)&FBC$ + 2488ll) = -1ll;
		}
		goto label$535;
		label$622:;
		{
			FBSETOPTION( 25ll, 0ll );
		}
		goto label$535;
		label$623:;
		{
			FBSTRING TMP$351$3;
			struct $7FBARRAYI8FBSTRINGE LIBS$3;
			*(FBSTRING**)&LIBS$3 = (FBSTRING*)0ull;
			*(FBSTRING**)((uint8*)&LIBS$3 + 8ll) = (FBSTRING*)0ull;
			*(int64*)((uint8*)&LIBS$3 + 16ll) = 0ll;
			*(int64*)((uint8*)&LIBS$3 + 24ll) = 24ll;
			*(int64*)((uint8*)&LIBS$3 + 32ll) = 0ll;
			*(int64*)((uint8*)&LIBS$3 + 40ll) = 8ll;
			__builtin_memset( (void*)((uint8*)&LIBS$3 + 48ll), 0, 192ll );
			__builtin_memset( &TMP$351$3, 0, 24ll );
			fb_StrAssign( (void*)&TMP$351$3, -1ll, (void*)",", 2ll, 0 );
			HSPLITSTR( ARG$1, &TMP$351$3, &LIBS$3 );
			fb_StrDelete( (FBSTRING*)&TMP$351$3 );
			{
				int64 I$4;
				int64 vr$83 = fb_ArrayLBound( (struct $7FBARRAYIKvE*)&LIBS$3, 1ll );
				I$4 = vr$83;
				int64 TMP$352$4;
				int64 vr$85 = fb_ArrayUBound( (struct $7FBARRAYIKvE*)&LIBS$3, 1ll );
				TMP$352$4 = vr$85;
				goto label$624;
				label$627:;
				{
					int64 vr$89 = fb_StrLen( (void*)((I$4 * 24ll) + *(int64*)&LIBS$3), -1ll );
					if( vr$89 <= 0ll ) goto label$629;
					{
						STRSETADD( (struct $7TSTRSET*)((uint8*)&FBC$ + 704ll), (FBSTRING*)((I$4 * 24ll) + *(int64*)&LIBS$3), 0ll );
					}
					label$629:;
					label$628:;
				}
				label$625:;
				I$4 = I$4 + 1ll;
				label$624:;
				if( I$4 <= TMP$352$4 ) goto label$627;
				label$626:;
			}
			fb_ArrayStrErase( (struct $7FBARRAYIvE*)&LIBS$3 );
		}
		goto label$535;
		label$630:;
		{
			FBSETOPTION( 39ll, 0ll );
		}
		goto label$535;
		label$631:;
		{
			*(int64*)((uint8*)&FBC$ + 2504ll) = 0ll;
		}
		goto label$535;
		label$632:;
		{
			HCHECKWAITINGOBJFILE(  );
			if( *(struct $9FBCIOFILE**)((uint8*)&FBC$ + 8ll) == (struct $9FBCIOFILE*)0ull ) goto label$634;
			{
				fb_StrAssign( *(void**)((uint8*)*(struct $9FBCIOFILE**)((uint8*)&FBC$ + 8ll) + 24ll), -1ll, (void*)ARG$1, -1ll, 0 );
				*(int64*)((uint8*)*(struct $9FBCIOFILE**)((uint8*)&FBC$ + 8ll) + 32ll) = -1ll;
			}
			goto label$633;
			label$634:;
			{
				fb_StrAssign( (void*)((uint8*)&FBC$ + 16ll), -1ll, (void*)ARG$1, -1ll, 0 );
			}
			label$633:;
		}
		goto label$535;
		label$635:;
		{
			int64 VALUE$3;
			int32 vr$99 = fb_StrCompare( (void*)ARG$1, -1ll, (void*)"max", 4ll );
			if( (int64)vr$99 != 0ll ) goto label$637;
			{
				VALUE$3 = 3ll;
			}
			goto label$636;
			label$637:;
			{
				int32 vr$101 = fb_VALINT( (FBSTRING*)ARG$1 );
				VALUE$3 = (int64)vr$101;
				if( VALUE$3 >= 0ll ) goto label$639;
				{
					VALUE$3 = 0ll;
				}
				goto label$638;
				label$639:;
				if( VALUE$3 <= 3ll ) goto label$640;
				{
					VALUE$3 = 3ll;
				}
				label$640:;
				label$638:;
			}
			label$636:;
			FBSETOPTION( 8ll, VALUE$3 );
		}
		goto label$535;
		label$641:;
		{
			FBSTRING TMP$354$3;
			__builtin_memset( &TMP$354$3, 0, 24ll );
			FBSTRING* vr$104 = PATHSTRIPDIV( ARG$1 );
			fb_StrAssign( (void*)&TMP$354$3, -1ll, (void*)vr$104, -1ll, 0 );
			STRSETADD( (struct $7TSTRSET*)((uint8*)&FBC$ + 616ll), &TMP$354$3, 0ll );
			fb_StrDelete( (FBSTRING*)&TMP$354$3 );
		}
		goto label$535;
		label$642:;
		{
			FBSETOPTION( 37ll, -1ll );
		}
		goto label$535;
		label$643:;
		{
			FBSETOPTION( 1ll, -1ll );
			*(int64*)((uint8*)&FBC$ + 72ll) = -1ll;
		}
		goto label$535;
		label$644:;
		{
			FBSTRING* vr$109 = PATHSTRIPDIV( ARG$1 );
			fb_StrAssign( (void*)((uint8*)&FBC$ + 2512ll), 261ll, (void*)vr$109, -1ll, 0 );
			HREPLACESLASH( (char*)((uint8*)&FBC$ + 2512ll), 47ll );
		}
		goto label$535;
		label$645:;
		{
			{
				FBSTRING TMP$355$4;
				fb_StrInit( (void*)&TMP$355$4, -1ll, (void*)ARG$1, -1ll, 0 );
				int32 vr$114 = fb_StrCompare( (void*)&TMP$355$4, -1ll, (void*)"host", 5ll );
				if( (int64)vr$114 != 0ll ) goto label$647;
				label$648:;
				{
					*(int64*)((uint8*)&FBC$ + 136ll) = 0ll;
				}
				goto label$646;
				label$647:;
				int32 vr$117 = fb_StrCompare( (void*)&TMP$355$4, -1ll, (void*)"target", 7ll );
				if( (int64)vr$117 != 0ll ) goto label$649;
				label$650:;
				{
					*(int64*)((uint8*)&FBC$ + 136ll) = 1ll;
				}
				goto label$646;
				label$649:;
				int32 vr$120 = fb_StrCompare( (void*)&TMP$355$4, -1ll, (void*)"x", 2ll );
				if( (int64)vr$120 != 0ll ) goto label$651;
				label$652:;
				{
					*(int64*)((uint8*)&FBC$ + 136ll) = 2ll;
				}
				goto label$646;
				label$651:;
				int32 vr$123 = fb_StrCompare( (void*)&TMP$355$4, -1ll, (void*)"fblibdir", 9ll );
				if( (int64)vr$123 != 0ll ) goto label$653;
				label$654:;
				{
					*(int64*)((uint8*)&FBC$ + 136ll) = 3ll;
				}
				goto label$646;
				label$653:;
				int32 vr$126 = fb_StrCompare( (void*)&TMP$355$4, -1ll, (void*)"sha-1", 6ll );
				if( (int64)vr$126 != 0ll ) goto label$655;
				label$656:;
				{
					*(int64*)((uint8*)&FBC$ + 136ll) = 4ll;
				}
				goto label$646;
				label$655:;
				{
					HFATALINVALIDOPTION( ARG$1, IS_SOURCE$1 );
				}
				label$657:;
				label$646:;
				fb_StrDelete( (FBSTRING*)&TMP$355$4 );
			}
		}
		goto label$535;
		label$658:;
		{
			FBSETOPTION( 23ll, -1ll );
		}
		goto label$535;
		label$659:;
		{
			FBSETOPTION( 0ll, 3ll );
			*(int64*)((uint8*)&FBC$ + 72ll) = -1ll;
			*(int64*)((uint8*)&FBC$ + 80ll) = -1ll;
		}
		goto label$535;
		label$660:;
		{
			*(int64*)((uint8*)&FBC$ + 80ll) = -1ll;
		}
		goto label$535;
		label$661:;
		{
			FBSETOPTION( 0ll, 3ll );
			*(int64*)((uint8*)&FBC$ + 88ll) = -1ll;
			*(int64*)((uint8*)&FBC$ + 96ll) = -1ll;
		}
		goto label$535;
		label$662:;
		{
			*(int64*)((uint8*)&FBC$ + 96ll) = -1ll;
		}
		goto label$535;
		label$663:;
		{
			fb_StrAssign( (void*)((uint8*)&FBC$ + 1893ll), 129ll, (void*)ARG$1, -1ll, 0 );
			{
				FBSTRING TMP$361$4;
				fb_StrInit( (void*)&TMP$361$4, -1ll, (void*)ARG$1, -1ll, 0 );
				int32 vr$132 = fb_StrCompare( (void*)&TMP$361$4, -1ll, (void*)"gui", 4ll );
				if( (int64)vr$132 != 0ll ) goto label$665;
				label$666:;
				{
					FBSETOPTION( 41ll, 1ll );
				}
				label$665:;
				label$664:;
				fb_StrDelete( (FBSTRING*)&TMP$361$4 );
			}
		}
		goto label$535;
		label$667:;
		{
			FBSETOPTION( 40ll, -1ll );
		}
		goto label$535;
		label$668:;
		{
			*(int64*)((uint8*)&FBC$ + 2496ll) = -1ll;
		}
		goto label$535;
		label$669:;
		{
			*(int64*)((uint8*)&FBC$ + 2504ll) = -1ll;
		}
		goto label$535;
		label$670:;
		{
			int32 vr$135 = fb_VALINT( (FBSTRING*)ARG$1 );
			FBSETOPTION( 38ll, (int64)vr$135 << (10ll & 63ll) );
		}
		goto label$535;
		label$671:;
		{
			int64 OS$3;
			__builtin_memset( &OS$3, 0, 8ll );
			int64 CPUTYPE$3;
			__builtin_memset( &CPUTYPE$3, 0, 8ll );
			int64 IS_GNU_TRIPLET$3;
			__builtin_memset( &IS_GNU_TRIPLET$3, 0, 8ll );
			HPARSETARGETARG( ARG$1, &OS$3, &CPUTYPE$3, &IS_GNU_TRIPLET$3 );
			if( ((int64)-(OS$3 < 0ll) | (int64)-(CPUTYPE$3 < 0ll)) == 0ll ) goto label$673;
			{
				HFATALINVALIDOPTION( ARG$1, IS_SOURCE$1 );
			}
			label$673:;
			label$672:;
			FBSETOPTION( 3ll, OS$3 );
			FBSETOPTION( 4ll, CPUTYPE$3 );
			if( (((int64)-(OS$3 != 1ll) | (int64)-(CPUTYPE$3 != 18ll)) | IS_GNU_TRIPLET$3) == 0ll ) goto label$675;
			{
				FBSTRING TMP$362$4;
				fb_StrAssign( (void*)((uint8*)&FBC$ + 2096ll), 129ll, (void*)ARG$1, -1ll, 0 );
				__builtin_memset( &TMP$362$4, 0, 24ll );
				FBSTRING* vr$155 = fb_StrConcat( &TMP$362$4, (void*)((uint8*)&FBC$ + 2096ll), 129ll, (void*)"-", 2ll );
				fb_StrAssign( (void*)((uint8*)&FBC$ + 2225ll), 129ll, (void*)vr$155, -1ll, 0 );
			}
			label$675:;
			label$674:;
		}
		goto label$535;
		label$676:;
		{
			fb_StrAssign( (void*)((uint8*)&FBC$ + 2354ll), 129ll, (void*)ARG$1, -1ll, 0 );
		}
		goto label$535;
		label$677:;
		{
			*(int64*)((uint8*)&FBC$ + 112ll) = -1ll;
		}
		goto label$535;
		label$678:;
		{
			int64 VALUE$3;
			{
				FBSTRING TMP$363$4;
				FBSTRING* vr$158 = fb_StrUcase2( (FBSTRING*)ARG$1, 0 );
				fb_StrInit( (void*)&TMP$363$4, -1ll, (void*)vr$158, -1ll, 0 );
				int32 vr$161 = fb_StrCompare( (void*)&TMP$363$4, -1ll, (void*)"NONE", 5ll );
				if( (int64)vr$161 == 0ll ) goto label$681;
				label$682:;
				int32 vr$164 = fb_StrCompare( (void*)&TMP$363$4, -1ll, (void*)"0", 2ll );
				if( (int64)vr$164 != 0ll ) goto label$680;
				label$681:;
				{
					VALUE$3 = 0ll;
				}
				goto label$679;
				label$680:;
				int32 vr$167 = fb_StrCompare( (void*)&TMP$363$4, -1ll, (void*)"1", 2ll );
				if( (int64)vr$167 != 0ll ) goto label$683;
				label$684:;
				{
					VALUE$3 = 1ll;
				}
				goto label$679;
				label$683:;
				int32 vr$170 = fb_StrCompare( (void*)&TMP$363$4, -1ll, (void*)"2", 2ll );
				if( (int64)vr$170 != 0ll ) goto label$685;
				label$686:;
				{
					VALUE$3 = 2ll;
				}
				goto label$679;
				label$685:;
				{
					HFATALINVALIDOPTION( ARG$1, IS_SOURCE$1 );
				}
				label$687:;
				label$679:;
				fb_StrDelete( (FBSTRING*)&TMP$363$4 );
			}
			FBSETOPTION( 7ll, VALUE$3 );
		}
		goto label$535;
		label$688:;
		{
			if( IS_SOURCE$1 == 0ll ) goto label$690;
			{
				if( *(int64*)((uint8*)&FBC$ + 120ll) != 0ll ) goto label$692;
				{
					HPRINTVERSION( *(int64*)((uint8*)&FBC$ + 112ll) );
				}
				label$692:;
				label$691:;
			}
			label$690:;
			label$689:;
			*(int64*)((uint8*)&FBC$ + 120ll) = -1ll;
		}
		goto label$535;
		label$693:;
		{
			int64 VALUE$3;
			VALUE$3 = -1ll;
			{
				FBSTRING TMP$367$4;
				fb_StrInit( (void*)&TMP$367$4, -1ll, (void*)ARG$1, -1ll, 0 );
				int32 vr$175 = fb_StrCompare( (void*)&TMP$367$4, -1ll, (void*)"all", 4ll );
				if( (int64)vr$175 != 0ll ) goto label$695;
				label$696:;
				{
					VALUE$3 = 0ll;
				}
				goto label$694;
				label$695:;
				int32 vr$178 = fb_StrCompare( (void*)&TMP$367$4, -1ll, (void*)"none", 5ll );
				if( (int64)vr$178 != 0ll ) goto label$697;
				label$698:;
				{
					VALUE$3 = 4ll;
				}
				goto label$694;
				label$697:;
				int32 vr$181 = fb_StrCompare( (void*)&TMP$367$4, -1ll, (void*)"param", 6ll );
				if( (int64)vr$181 != 0ll ) goto label$699;
				label$700:;
				{
					int64 vr$183 = FBGETOPTION( 27ll );
					FBSETOPTION( 27ll, vr$183 | 2ll );
				}
				goto label$694;
				label$699:;
				int32 vr$186 = fb_StrCompare( (void*)&TMP$367$4, -1ll, (void*)"escape", 7ll );
				if( (int64)vr$186 != 0ll ) goto label$701;
				label$702:;
				{
					int64 vr$188 = FBGETOPTION( 27ll );
					FBSETOPTION( 27ll, vr$188 | 1ll );
				}
				goto label$694;
				label$701:;
				int32 vr$191 = fb_StrCompare( (void*)&TMP$367$4, -1ll, (void*)"next", 5ll );
				if( (int64)vr$191 != 0ll ) goto label$703;
				label$704:;
				{
					int64 vr$193 = FBGETOPTION( 27ll );
					FBSETOPTION( 27ll, vr$193 | 8ll );
				}
				goto label$694;
				label$703:;
				int32 vr$196 = fb_StrCompare( (void*)&TMP$367$4, -1ll, (void*)"signedness", 11ll );
				if( (int64)vr$196 != 0ll ) goto label$705;
				label$706:;
				{
					int64 vr$198 = FBGETOPTION( 27ll );
					FBSETOPTION( 27ll, vr$198 | 32ll );
				}
				goto label$694;
				label$705:;
				int32 vr$201 = fb_StrCompare( (void*)&TMP$367$4, -1ll, (void*)"constness", 10ll );
				if( (int64)vr$201 != 0ll ) goto label$707;
				label$708:;
				{
					int64 vr$203 = FBGETOPTION( 27ll );
					FBSETOPTION( 27ll, vr$203 | 128ll );
					VALUE$3 = 0ll;
				}
				goto label$694;
				label$707:;
				int32 vr$206 = fb_StrCompare( (void*)&TMP$367$4, -1ll, (void*)"funcptr", 8ll );
				if( (int64)vr$206 != 0ll ) goto label$709;
				label$710:;
				{
					int64 vr$208 = FBGETOPTION( 27ll );
					FBSETOPTION( 27ll, vr$208 | 64ll );
					VALUE$3 = 0ll;
				}
				goto label$694;
				label$709:;
				int32 vr$211 = fb_StrCompare( (void*)&TMP$367$4, -1ll, (void*)"suffix", 7ll );
				if( (int64)vr$211 != 0ll ) goto label$711;
				label$712:;
				{
					int64 vr$213 = FBGETOPTION( 27ll );
					FBSETOPTION( 27ll, vr$213 | 256ll );
				}
				goto label$694;
				label$711:;
				int32 vr$216 = fb_StrCompare( (void*)&TMP$367$4, -1ll, (void*)"pedantic", 9ll );
				if( (int64)vr$216 != 0ll ) goto label$713;
				label$714:;
				{
					FBSETOPTION( 27ll, 4294965527ll );
					if( VALUE$3 <= 1ll ) goto label$716;
					{
						VALUE$3 = 1ll;
					}
					label$716:;
					label$715:;
				}
				goto label$694;
				label$713:;
				int32 vr$219 = fb_StrCompare( (void*)&TMP$367$4, -1ll, (void*)"error", 6ll );
				if( (int64)vr$219 != 0ll ) goto label$717;
				label$718:;
				{
					int64 vr$221 = FBGETOPTION( 27ll );
					FBSETOPTION( 27ll, vr$221 | 512ll );
				}
				goto label$694;
				label$717:;
				int32 vr$224 = fb_StrCompare( (void*)&TMP$367$4, -1ll, (void*)"upcast", 7ll );
				if( (int64)vr$224 != 0ll ) goto label$719;
				label$720:;
				{
					int64 vr$226 = FBGETOPTION( 27ll );
					FBSETOPTION( 27ll, vr$226 | 1024ll );
				}
				goto label$694;
				label$719:;
				{
					int32 vr$228 = fb_VALINT( (FBSTRING*)ARG$1 );
					VALUE$3 = (int64)vr$228;
				}
				label$721:;
				label$694:;
				fb_StrDelete( (FBSTRING*)&TMP$367$4 );
			}
			if( VALUE$3 < 0ll ) goto label$723;
			{
				FBSETOPTION( 24ll, VALUE$3 );
			}
			label$723:;
			label$722:;
		}
		goto label$535;
		label$724:;
		{
			FBSTRING TMP$380$3;
			FBSTRING TMP$381$3;
			FBSTRING TMP$382$3;
			FBSTRING* vr$232 = HREPLACE( (char*)*(char**)ARG$1, (char*)",", (char*)" " );
			__builtin_memset( &TMP$380$3, 0, 24ll );
			FBSTRING* vr$235 = fb_StrConcat( &TMP$380$3, (void*)" ", 2ll, (void*)vr$232, -1ll );
			__builtin_memset( &TMP$381$3, 0, 24ll );
			FBSTRING* vr$238 = fb_StrConcat( &TMP$381$3, (void*)vr$235, -1ll, (void*)" ", 2ll );
			__builtin_memset( &TMP$382$3, 0, 24ll );
			FBSTRING* vr$242 = fb_StrConcat( &TMP$382$3, (void*)((uint8*)&FBC$ + 2024ll), -1ll, (void*)vr$238, -1ll );
			fb_StrAssign( (void*)((uint8*)&FBC$ + 2024ll), -1ll, (void*)vr$242, -1ll, 0 );
		}
		goto label$535;
		label$725:;
		{
			FBSTRING TMP$383$3;
			FBSTRING TMP$384$3;
			FBSTRING TMP$385$3;
			FBSTRING* vr$245 = HREPLACE( (char*)*(char**)ARG$1, (char*)",", (char*)" " );
			__builtin_memset( &TMP$383$3, 0, 24ll );
			FBSTRING* vr$248 = fb_StrConcat( &TMP$383$3, (void*)" ", 2ll, (void*)vr$245, -1ll );
			__builtin_memset( &TMP$384$3, 0, 24ll );
			FBSTRING* vr$251 = fb_StrConcat( &TMP$384$3, (void*)vr$248, -1ll, (void*)" ", 2ll );
			__builtin_memset( &TMP$385$3, 0, 24ll );
			FBSTRING* vr$255 = fb_StrConcat( &TMP$385$3, (void*)((uint8*)&FBC$ + 2072ll), -1ll, (void*)vr$251, -1ll );
			fb_StrAssign( (void*)((uint8*)&FBC$ + 2072ll), -1ll, (void*)vr$255, -1ll, 0 );
		}
		goto label$535;
		label$726:;
		{
			FBSTRING TMP$386$3;
			FBSTRING TMP$387$3;
			FBSTRING TMP$388$3;
			FBSTRING* vr$258 = HREPLACE( (char*)*(char**)ARG$1, (char*)",", (char*)" " );
			__builtin_memset( &TMP$386$3, 0, 24ll );
			FBSTRING* vr$261 = fb_StrConcat( &TMP$386$3, (void*)" ", 2ll, (void*)vr$258, -1ll );
			__builtin_memset( &TMP$387$3, 0, 24ll );
			FBSTRING* vr$264 = fb_StrConcat( &TMP$387$3, (void*)vr$261, -1ll, (void*)" ", 2ll );
			__builtin_memset( &TMP$388$3, 0, 24ll );
			FBSTRING* vr$268 = fb_StrConcat( &TMP$388$3, (void*)((uint8*)&FBC$ + 2048ll), -1ll, (void*)vr$264, -1ll );
			fb_StrAssign( (void*)((uint8*)&FBC$ + 2048ll), -1ll, (void*)vr$268, -1ll, 0 );
		}
		goto label$535;
		label$727:;
		{
			fb_StrAssign( (void*)((uint8*)&FBC$ + 968ll), 261ll, (void*)ARG$1, -1ll, 0 );
		}
		goto label$535;
		label$728:;
		{
			{
				FBSTRING TMP$389$4;
				FBSTRING* vr$271 = fb_StrLcase2( (FBSTRING*)ARG$1, 0 );
				fb_StrInit( (void*)&TMP$389$4, -1ll, (void*)vr$271, -1ll, 0 );
				int32 vr$274 = fb_StrCompare( (void*)&TMP$389$4, -1ll, (void*)"gosub-setjmp", 13ll );
				if( (int64)vr$274 != 0ll ) goto label$730;
				label$731:;
				{
					FBSETOPTION( 28ll, -1ll );
				}
				goto label$729;
				label$730:;
				int32 vr$277 = fb_StrCompare( (void*)&TMP$389$4, -1ll, (void*)"valist-as-ptr", 14ll );
				if( (int64)vr$277 != 0ll ) goto label$732;
				label$733:;
				{
					FBSETOPTION( 29ll, -1ll );
				}
				goto label$729;
				label$732:;
				int32 vr$280 = fb_StrCompare( (void*)&TMP$389$4, -1ll, (void*)"no-thiscall", 12ll );
				if( (int64)vr$280 != 0ll ) goto label$734;
				label$735:;
				{
					FBSETOPTION( 30ll, -1ll );
				}
				goto label$729;
				label$734:;
				int32 vr$283 = fb_StrCompare( (void*)&TMP$389$4, -1ll, (void*)"no-fastcall", 12ll );
				if( (int64)vr$283 != 0ll ) goto label$736;
				label$737:;
				{
					FBSETOPTION( 31ll, -1ll );
				}
				goto label$729;
				label$736:;
				int32 vr$286 = fb_StrCompare( (void*)&TMP$389$4, -1ll, (void*)"fbrt", 5ll );
				if( (int64)vr$286 != 0ll ) goto label$738;
				label$739:;
				{
					FBSETOPTION( 32ll, -1ll );
				}
				goto label$729;
				label$738:;
				int32 vr$289 = fb_StrCompare( (void*)&TMP$389$4, -1ll, (void*)"nocmdline", 10ll );
				if( (int64)vr$289 != 0ll ) goto label$740;
				label$741:;
				{
					FBSETOPTION( 42ll, -1ll );
				}
				goto label$729;
				label$740:;
				int32 vr$292 = fb_StrCompare( (void*)&TMP$389$4, -1ll, (void*)"retinflts", 10ll );
				if( (int64)vr$292 != 0ll ) goto label$742;
				label$743:;
				{
					FBSETOPTION( 43ll, -1ll );
				}
				goto label$729;
				label$742:;
				{
					HFATALINVALIDOPTION( ARG$1, IS_SOURCE$1 );
				}
				label$744:;
				label$729:;
				fb_StrDelete( (FBSTRING*)&TMP$389$4 );
			}
		}
		goto label$535;
		label$536:;
		static const void* tmp$841[71ll] = {
			&&label$537,
			&&label$538,
			&&label$541,
			&&label$548,
			&&label$549,
			&&label$550,
			&&label$551,
			&&label$552,
			&&label$553,
			&&label$553,
			&&label$554,
			&&label$555,
			&&label$556,
			&&label$557,
			&&label$558,
			&&label$559,
			&&label$560,
			&&label$561,
			&&label$562,
			&&label$563,
			&&label$564,
			&&label$565,
			&&label$566,
			&&label$567,
			&&label$574,
			&&label$581,
			&&label$589,
			&&label$590,
			&&label$601,
			&&label$602,
			&&label$603,
			&&label$604,
			&&label$605,
			&&label$612,
			&&label$613,
			&&label$614,
			&&label$615,
			&&label$620,
			&&label$621,
			&&label$622,
			&&label$623,
			&&label$630,
			&&label$631,
			&&label$632,
			&&label$635,
			&&label$641,
			&&label$642,
			&&label$643,
			&&label$644,
			&&label$645,
			&&label$658,
			&&label$659,
			&&label$660,
			&&label$661,
			&&label$662,
			&&label$663,
			&&label$667,
			&&label$668,
			&&label$669,
			&&label$670,
			&&label$671,
			&&label$676,
			&&label$677,
			&&label$678,
			&&label$688,
			&&label$693,
			&&label$724,
			&&label$725,
			&&label$726,
			&&label$727,
			&&label$728,
		};
		if( TMP$330$2 > 70ull ) goto label$535;
		goto *tmp$841[TMP$330$2 - 0ull];
		label$535:;
	}
	label$534:;
}

static int64 PARSEOPTION( char* OPT$1 )
{
	int64 fb$result$1;
	__builtin_memset( &fb$result$1, 0, 8ll );
	label$745:;
	{
		uint64 TMP$397$2;
		TMP$397$2 = (uint64)*(uint8*)OPT$1;
		goto label$748;
		label$749:;
		{
			if( (int64)*(uint8*)((uint8*)OPT$1 + 1ll) != 0ll ) goto label$751;
			{
				fb$result$1 = 0ll;
				goto label$746;
			}
			label$751:;
			label$750:;
			int32 vr$5 = fb_StrCompare( (void*)OPT$1, 0ll, (void*)"arch", 5ll );
			if( (int64)vr$5 != 0ll ) goto label$753;
			{
				fb$result$1 = 1ll;
				goto label$746;
			}
			label$753:;
			label$752:;
			int32 vr$7 = fb_StrCompare( (void*)OPT$1, 0ll, (void*)"asm", 4ll );
			if( (int64)vr$7 != 0ll ) goto label$755;
			{
				fb$result$1 = 2ll;
				goto label$746;
			}
			label$755:;
			label$754:;
		}
		goto label$747;
		label$756:;
		{
			if( (int64)*(uint8*)((uint8*)OPT$1 + 1ll) != 0ll ) goto label$758;
			{
				fb$result$1 = 3ll;
				goto label$746;
			}
			label$758:;
			label$757:;
			int32 vr$11 = fb_StrCompare( (void*)OPT$1, 0ll, (void*)"buildprefix", 12ll );
			if( (int64)vr$11 != 0ll ) goto label$760;
			{
				fb$result$1 = 4ll;
				goto label$746;
			}
			label$760:;
			label$759:;
		}
		goto label$747;
		label$761:;
		{
			if( (int64)*(uint8*)((uint8*)OPT$1 + 1ll) != 0ll ) goto label$763;
			{
				fb$result$1 = 5ll;
				goto label$746;
			}
			label$763:;
			label$762:;
		}
		goto label$747;
		label$764:;
		{
			if( (int64)*(uint8*)((uint8*)OPT$1 + 1ll) != 0ll ) goto label$766;
			{
				fb$result$1 = 6ll;
				goto label$746;
			}
			label$766:;
			label$765:;
		}
		goto label$747;
		label$767:;
		{
			if( (int64)*(uint8*)((uint8*)OPT$1 + 1ll) != 0ll ) goto label$769;
			{
				fb$result$1 = 7ll;
				goto label$746;
			}
			label$769:;
			label$768:;
			int32 vr$19 = fb_StrCompare( (void*)OPT$1, 0ll, (void*)"dll", 4ll );
			if( (int64)vr$19 != 0ll ) goto label$771;
			{
				fb$result$1 = 8ll;
				goto label$746;
			}
			label$771:;
			label$770:;
			int32 vr$21 = fb_StrCompare( (void*)OPT$1, 0ll, (void*)"dylib", 6ll );
			if( (int64)vr$21 != 0ll ) goto label$773;
			{
				fb$result$1 = 9ll;
				goto label$746;
			}
			label$773:;
			label$772:;
		}
		goto label$747;
		label$774:;
		{
			if( (int64)*(uint8*)((uint8*)OPT$1 + 1ll) != 0ll ) goto label$776;
			{
				fb$result$1 = 10ll;
				goto label$746;
			}
			label$776:;
			label$775:;
			int32 vr$25 = fb_StrCompare( (void*)OPT$1, 0ll, (void*)"ex", 3ll );
			if( (int64)vr$25 != 0ll ) goto label$778;
			{
				fb$result$1 = 19ll;
				goto label$746;
			}
			label$778:;
			label$777:;
			int32 vr$27 = fb_StrCompare( (void*)OPT$1, 0ll, (void*)"earray", 7ll );
			if( (int64)vr$27 != 0ll ) goto label$780;
			{
				fb$result$1 = 11ll;
				goto label$746;
			}
			label$780:;
			label$779:;
			int32 vr$29 = fb_StrCompare( (void*)OPT$1, 0ll, (void*)"eassert", 8ll );
			if( (int64)vr$29 != 0ll ) goto label$782;
			{
				fb$result$1 = 12ll;
				goto label$746;
			}
			label$782:;
			label$781:;
			int32 vr$31 = fb_StrCompare( (void*)OPT$1, 0ll, (void*)"edebug", 7ll );
			if( (int64)vr$31 != 0ll ) goto label$784;
			{
				fb$result$1 = 13ll;
				goto label$746;
			}
			label$784:;
			label$783:;
			int32 vr$33 = fb_StrCompare( (void*)OPT$1, 0ll, (void*)"edebuginfo", 11ll );
			if( (int64)vr$33 != 0ll ) goto label$786;
			{
				fb$result$1 = 14ll;
				goto label$746;
			}
			label$786:;
			label$785:;
			int32 vr$35 = fb_StrCompare( (void*)OPT$1, 0ll, (void*)"elocation", 10ll );
			if( (int64)vr$35 != 0ll ) goto label$788;
			{
				fb$result$1 = 15ll;
				goto label$746;
			}
			label$788:;
			label$787:;
			int32 vr$37 = fb_StrCompare( (void*)OPT$1, 0ll, (void*)"enullptr", 9ll );
			if( (int64)vr$37 != 0ll ) goto label$790;
			{
				fb$result$1 = 16ll;
				goto label$746;
			}
			label$790:;
			label$789:;
			int32 vr$39 = fb_StrCompare( (void*)OPT$1, 0ll, (void*)"eunwind", 8ll );
			if( (int64)vr$39 != 0ll ) goto label$792;
			{
				fb$result$1 = 17ll;
				goto label$746;
			}
			label$792:;
			label$791:;
			int32 vr$41 = fb_StrCompare( (void*)OPT$1, 0ll, (void*)"entry", 6ll );
			if( (int64)vr$41 != 0ll ) goto label$794;
			{
				fb$result$1 = 18ll;
				goto label$746;
			}
			label$794:;
			label$793:;
			int32 vr$43 = fb_StrCompare( (void*)OPT$1, 0ll, (void*)"exx", 4ll );
			if( (int64)vr$43 != 0ll ) goto label$796;
			{
				fb$result$1 = 20ll;
				goto label$746;
			}
			label$796:;
			label$795:;
			int32 vr$45 = fb_StrCompare( (void*)OPT$1, 0ll, (void*)"export", 7ll );
			if( (int64)vr$45 != 0ll ) goto label$798;
			{
				fb$result$1 = 21ll;
				goto label$746;
			}
			label$798:;
			label$797:;
		}
		goto label$747;
		label$799:;
		{
			int32 vr$47 = fb_StrCompare( (void*)OPT$1, 0ll, (void*)"fbgfx", 6ll );
			if( (int64)vr$47 != 0ll ) goto label$801;
			{
				fb$result$1 = 22ll;
				goto label$746;
			}
			label$801:;
			label$800:;
			int32 vr$49 = fb_StrCompare( (void*)OPT$1, 0ll, (void*)"forcelang", 10ll );
			if( (int64)vr$49 != 0ll ) goto label$803;
			{
				fb$result$1 = 23ll;
				goto label$746;
			}
			label$803:;
			label$802:;
			int32 vr$51 = fb_StrCompare( (void*)OPT$1, 0ll, (void*)"fpmode", 7ll );
			if( (int64)vr$51 != 0ll ) goto label$805;
			{
				fb$result$1 = 24ll;
				goto label$746;
			}
			label$805:;
			label$804:;
			int32 vr$53 = fb_StrCompare( (void*)OPT$1, 0ll, (void*)"fpu", 4ll );
			if( (int64)vr$53 != 0ll ) goto label$807;
			{
				fb$result$1 = 25ll;
				goto label$746;
			}
			label$807:;
			label$806:;
		}
		goto label$747;
		label$808:;
		{
			if( (int64)*(uint8*)((uint8*)OPT$1 + 1ll) != 0ll ) goto label$810;
			{
				fb$result$1 = 26ll;
				goto label$746;
			}
			label$810:;
			label$809:;
			int32 vr$57 = fb_StrCompare( (void*)OPT$1, 0ll, (void*)"gen", 4ll );
			if( (int64)vr$57 != 0ll ) goto label$812;
			{
				fb$result$1 = 27ll;
				goto label$746;
			}
			label$812:;
			label$811:;
		}
		goto label$747;
		label$813:;
		{
			int32 vr$59 = fb_StrCompare( (void*)OPT$1, 0ll, (void*)"help", 5ll );
			if( (int64)vr$59 != 0ll ) goto label$815;
			{
				fb$result$1 = 28ll;
				goto label$746;
			}
			label$815:;
			label$814:;
		}
		goto label$747;
		label$816:;
		{
			if( (int64)*(uint8*)((uint8*)OPT$1 + 1ll) != 0ll ) goto label$818;
			{
				fb$result$1 = 29ll;
				goto label$746;
			}
			label$818:;
			label$817:;
			int32 vr$63 = fb_StrCompare( (void*)OPT$1, 0ll, (void*)"include", 8ll );
			if( (int64)vr$63 != 0ll ) goto label$820;
			{
				fb$result$1 = 30ll;
				goto label$746;
			}
			label$820:;
			label$819:;
		}
		goto label$747;
		label$821:;
		{
			if( (int64)*(uint8*)((uint8*)OPT$1 + 1ll) != 0ll ) goto label$823;
			{
				fb$result$1 = 31ll;
				goto label$746;
			}
			label$823:;
			label$822:;
			int32 vr$67 = fb_StrCompare( (void*)OPT$1, 0ll, (void*)"lang", 5ll );
			if( (int64)vr$67 != 0ll ) goto label$825;
			{
				fb$result$1 = 32ll;
				goto label$746;
			}
			label$825:;
			label$824:;
			int32 vr$69 = fb_StrCompare( (void*)OPT$1, 0ll, (void*)"lib", 4ll );
			if( (int64)vr$69 != 0ll ) goto label$827;
			{
				fb$result$1 = 33ll;
				goto label$746;
			}
			label$827:;
			label$826:;
		}
		goto label$747;
		label$828:;
		{
			if( (int64)*(uint8*)((uint8*)OPT$1 + 1ll) != 0ll ) goto label$830;
			{
				fb$result$1 = 34ll;
				goto label$746;
			}
			label$830:;
			label$829:;
			int32 vr$73 = fb_StrCompare( (void*)OPT$1, 0ll, (void*)"map", 4ll );
			if( (int64)vr$73 != 0ll ) goto label$832;
			{
				fb$result$1 = 35ll;
				goto label$746;
			}
			label$832:;
			label$831:;
			int32 vr$75 = fb_StrCompare( (void*)OPT$1, 0ll, (void*)"maxerr", 7ll );
			if( (int64)vr$75 != 0ll ) goto label$834;
			{
				fb$result$1 = 36ll;
				goto label$746;
			}
			label$834:;
			label$833:;
			int32 vr$77 = fb_StrCompare( (void*)OPT$1, 0ll, (void*)"mt", 3ll );
			if( (int64)vr$77 != 0ll ) goto label$836;
			{
				fb$result$1 = 37ll;
				goto label$746;
			}
			label$836:;
			label$835:;
		}
		goto label$747;
		label$837:;
		{
			int32 vr$79 = fb_StrCompare( (void*)OPT$1, 0ll, (void*)"noerrline", 10ll );
			if( (int64)vr$79 != 0ll ) goto label$839;
			{
				fb$result$1 = 39ll;
				goto label$746;
			}
			label$839:;
			label$838:;
			int32 vr$81 = fb_StrCompare( (void*)OPT$1, 0ll, (void*)"nodeflibs", 10ll );
			if( (int64)vr$81 != 0ll ) goto label$841;
			{
				fb$result$1 = 38ll;
				goto label$746;
			}
			label$841:;
			label$840:;
			int32 vr$83 = fb_StrCompare( (void*)OPT$1, 0ll, (void*)"nolib", 6ll );
			if( (int64)vr$83 != 0ll ) goto label$843;
			{
				fb$result$1 = 40ll;
				goto label$746;
			}
			label$843:;
			label$842:;
			int32 vr$85 = fb_StrCompare( (void*)OPT$1, 0ll, (void*)"noobjinfo", 10ll );
			if( (int64)vr$85 != 0ll ) goto label$845;
			{
				fb$result$1 = 41ll;
				goto label$746;
			}
			label$845:;
			label$844:;
			int32 vr$87 = fb_StrCompare( (void*)OPT$1, 0ll, (void*)"nostrip", 8ll );
			if( (int64)vr$87 != 0ll ) goto label$847;
			{
				fb$result$1 = 42ll;
				goto label$746;
			}
			label$847:;
			label$846:;
		}
		goto label$747;
		label$848:;
		{
			if( (int64)*(uint8*)((uint8*)OPT$1 + 1ll) != 0ll ) goto label$850;
			{
				fb$result$1 = 43ll;
				goto label$746;
			}
			label$850:;
			label$849:;
		}
		goto label$747;
		label$851:;
		{
			if( (int64)*(uint8*)((uint8*)OPT$1 + 1ll) != 0ll ) goto label$853;
			{
				fb$result$1 = 44ll;
				goto label$746;
			}
			label$853:;
			label$852:;
		}
		goto label$747;
		label$854:;
		{
			if( (int64)*(uint8*)((uint8*)OPT$1 + 1ll) != 0ll ) goto label$856;
			{
				fb$result$1 = 45ll;
				goto label$746;
			}
			label$856:;
			label$855:;
			int32 vr$95 = fb_StrCompare( (void*)OPT$1, 0ll, (void*)"pic", 4ll );
			if( (int64)vr$95 != 0ll ) goto label$858;
			{
				fb$result$1 = 46ll;
				goto label$746;
			}
			label$858:;
			label$857:;
			int32 vr$97 = fb_StrCompare( (void*)OPT$1, 0ll, (void*)"pp", 3ll );
			if( (int64)vr$97 != 0ll ) goto label$860;
			{
				fb$result$1 = 47ll;
				goto label$746;
			}
			label$860:;
			label$859:;
			int32 vr$99 = fb_StrCompare( (void*)OPT$1, 0ll, (void*)"prefix", 7ll );
			if( (int64)vr$99 != 0ll ) goto label$862;
			{
				fb$result$1 = 48ll;
				goto label$746;
			}
			label$862:;
			label$861:;
			int32 vr$101 = fb_StrCompare( (void*)OPT$1, 0ll, (void*)"print", 6ll );
			if( (int64)vr$101 != 0ll ) goto label$864;
			{
				fb$result$1 = 49ll;
				goto label$746;
			}
			label$864:;
			label$863:;
			int32 vr$103 = fb_StrCompare( (void*)OPT$1, 0ll, (void*)"profile", 8ll );
			if( (int64)vr$103 != 0ll ) goto label$866;
			{
				fb$result$1 = 50ll;
				goto label$746;
			}
			label$866:;
			label$865:;
		}
		goto label$747;
		label$867:;
		{
			if( (int64)*(uint8*)((uint8*)OPT$1 + 1ll) != 0ll ) goto label$869;
			{
				fb$result$1 = 51ll;
				goto label$746;
			}
			label$869:;
			label$868:;
			int32 vr$107 = fb_StrCompare( (void*)OPT$1, 0ll, (void*)"rr", 3ll );
			if( (int64)vr$107 != 0ll ) goto label$871;
			{
				fb$result$1 = 53ll;
				goto label$746;
			}
			label$871:;
			label$870:;
		}
		goto label$747;
		label$872:;
		{
			if( (int64)*(uint8*)((uint8*)OPT$1 + 1ll) != 0ll ) goto label$874;
			{
				fb$result$1 = 52ll;
				goto label$746;
			}
			label$874:;
			label$873:;
			int32 vr$111 = fb_StrCompare( (void*)OPT$1, 0ll, (void*)"RR", 3ll );
			if( (int64)vr$111 != 0ll ) goto label$876;
			{
				fb$result$1 = 54ll;
				goto label$746;
			}
			label$876:;
			label$875:;
		}
		goto label$747;
		label$877:;
		{
			if( (int64)*(uint8*)((uint8*)OPT$1 + 1ll) != 0ll ) goto label$879;
			{
				fb$result$1 = 55ll;
				goto label$746;
			}
			label$879:;
			label$878:;
			int32 vr$115 = fb_StrCompare( (void*)OPT$1, 0ll, (void*)"showincludes", 13ll );
			if( (int64)vr$115 != 0ll ) goto label$881;
			{
				fb$result$1 = 56ll;
				goto label$746;
			}
			label$881:;
			label$880:;
			int32 vr$117 = fb_StrCompare( (void*)OPT$1, 0ll, (void*)"static", 7ll );
			if( (int64)vr$117 != 0ll ) goto label$883;
			{
				fb$result$1 = 57ll;
				goto label$746;
			}
			label$883:;
			label$882:;
			int32 vr$119 = fb_StrCompare( (void*)OPT$1, 0ll, (void*)"strip", 6ll );
			if( (int64)vr$119 != 0ll ) goto label$885;
			{
				fb$result$1 = 58ll;
				goto label$746;
			}
			label$885:;
			label$884:;
		}
		goto label$747;
		label$886:;
		{
			if( (int64)*(uint8*)((uint8*)OPT$1 + 1ll) != 0ll ) goto label$888;
			{
				fb$result$1 = 59ll;
				goto label$746;
			}
			label$888:;
			label$887:;
			int32 vr$123 = fb_StrCompare( (void*)OPT$1, 0ll, (void*)"target", 7ll );
			if( (int64)vr$123 != 0ll ) goto label$890;
			{
				fb$result$1 = 60ll;
				goto label$746;
			}
			label$890:;
			label$889:;
			int32 vr$125 = fb_StrCompare( (void*)OPT$1, 0ll, (void*)"title", 6ll );
			if( (int64)vr$125 != 0ll ) goto label$892;
			{
				fb$result$1 = 61ll;
				goto label$746;
			}
			label$892:;
			label$891:;
		}
		goto label$747;
		label$893:;
		{
			if( (int64)*(uint8*)((uint8*)OPT$1 + 1ll) != 0ll ) goto label$895;
			{
				fb$result$1 = 62ll;
				goto label$746;
			}
			label$895:;
			label$894:;
			int32 vr$129 = fb_StrCompare( (void*)OPT$1, 0ll, (void*)"vec", 4ll );
			if( (int64)vr$129 != 0ll ) goto label$897;
			{
				fb$result$1 = 63ll;
				goto label$746;
			}
			label$897:;
			label$896:;
			int32 vr$131 = fb_StrCompare( (void*)OPT$1, 0ll, (void*)"version", 8ll );
			if( (int64)vr$131 != 0ll ) goto label$899;
			{
				fb$result$1 = 64ll;
				goto label$746;
			}
			label$899:;
			label$898:;
		}
		goto label$747;
		label$900:;
		{
			if( (int64)*(uint8*)((uint8*)OPT$1 + 1ll) != 0ll ) goto label$902;
			{
				fb$result$1 = 65ll;
				goto label$746;
			}
			label$902:;
			label$901:;
		}
		goto label$747;
		label$903:;
		{
			int32 vr$135 = fb_StrCompare( (void*)OPT$1, 0ll, (void*)"Wa", 3ll );
			if( (int64)vr$135 != 0ll ) goto label$905;
			{
				fb$result$1 = 66ll;
				goto label$746;
			}
			label$905:;
			label$904:;
			int32 vr$137 = fb_StrCompare( (void*)OPT$1, 0ll, (void*)"Wl", 3ll );
			if( (int64)vr$137 != 0ll ) goto label$907;
			{
				fb$result$1 = 68ll;
				goto label$746;
			}
			label$907:;
			label$906:;
			int32 vr$139 = fb_StrCompare( (void*)OPT$1, 0ll, (void*)"Wc", 3ll );
			if( (int64)vr$139 != 0ll ) goto label$909;
			{
				fb$result$1 = 67ll;
				goto label$746;
			}
			label$909:;
			label$908:;
		}
		goto label$747;
		label$910:;
		{
			if( (int64)*(uint8*)((uint8*)OPT$1 + 1ll) != 0ll ) goto label$912;
			{
				fb$result$1 = 69ll;
				goto label$746;
			}
			label$912:;
			label$911:;
		}
		goto label$747;
		label$913:;
		{
			if( (int64)*(uint8*)((uint8*)OPT$1 + 1ll) != 0ll ) goto label$915;
			{
				fb$result$1 = 70ll;
				goto label$746;
			}
			label$915:;
			label$914:;
		}
		goto label$747;
		label$916:;
		{
			int32 vr$145 = fb_StrCompare( (void*)OPT$1, 0ll, (void*)"-version", 9ll );
			if( (int64)vr$145 != 0ll ) goto label$918;
			{
				fb$result$1 = 64ll;
				goto label$746;
			}
			label$918:;
			label$917:;
			int32 vr$147 = fb_StrCompare( (void*)OPT$1, 0ll, (void*)"-help", 6ll );
			if( (int64)vr$147 != 0ll ) goto label$920;
			{
				fb$result$1 = 28ll;
				goto label$746;
			}
			label$920:;
			label$919:;
		}
		goto label$747;
		label$748:;
		static const void* tmp$842[78ll] = {
			&&label$916,
			&&label$747,
			&&label$747,
			&&label$747,
			&&label$747,
			&&label$747,
			&&label$747,
			&&label$747,
			&&label$747,
			&&label$747,
			&&label$747,
			&&label$747,
			&&label$747,
			&&label$747,
			&&label$747,
			&&label$747,
			&&label$747,
			&&label$747,
			&&label$747,
			&&label$747,
			&&label$747,
			&&label$747,
			&&label$764,
			&&label$747,
			&&label$747,
			&&label$747,
			&&label$747,
			&&label$747,
			&&label$747,
			&&label$747,
			&&label$747,
			&&label$747,
			&&label$747,
			&&label$747,
			&&label$851,
			&&label$747,
			&&label$747,
			&&label$872,
			&&label$747,
			&&label$747,
			&&label$747,
			&&label$747,
			&&label$903,
			&&label$747,
			&&label$747,
			&&label$747,
			&&label$747,
			&&label$747,
			&&label$747,
			&&label$747,
			&&label$747,
			&&label$747,
			&&label$749,
			&&label$756,
			&&label$761,
			&&label$767,
			&&label$774,
			&&label$799,
			&&label$808,
			&&label$813,
			&&label$816,
			&&label$747,
			&&label$747,
			&&label$821,
			&&label$828,
			&&label$837,
			&&label$848,
			&&label$854,
			&&label$747,
			&&label$867,
			&&label$877,
			&&label$886,
			&&label$747,
			&&label$893,
			&&label$900,
			&&label$910,
			&&label$747,
			&&label$913,
		};
		if( (TMP$397$2 - 45ull) > 77ull ) goto label$747;
		goto *tmp$842[TMP$397$2 - 45ull];
		label$747:;
	}
	fb$result$1 = -1ll;
	goto label$746;
	label$746:;
	return fb$result$1;
}

static void HANDLEARG( FBSTRING* ARG$1, int64 IS_SOURCE$1, int64 IS_FILE$1 )
{
	label$921:;
	if( *(int64*)&FBC$ < 0ll ) goto label$924;
	{
		int64 vr$0 = fb_StrLen( (void*)ARG$1, -1ll );
		if( vr$0 != 0ll ) goto label$926;
		{
			HFATALINVALIDOPTION( ARG$1, IS_SOURCE$1 );
		}
		label$926:;
		label$925:;
		HANDLEOPT( *(int64*)&FBC$, ARG$1, IS_SOURCE$1 );
		*(int64*)&FBC$ = -1ll;
		goto label$922;
	}
	label$924:;
	label$923:;
	int64 vr$1 = fb_StrLen( (void*)ARG$1, -1ll );
	if( vr$1 != 0ll ) goto label$928;
	{
		goto label$922;
	}
	label$928:;
	label$927:;
	{
		uint8 TMP$472$2;
		TMP$472$2 = *(uint8*)*(char**)ARG$1;
		if( (uint64)(int64)TMP$472$2 != 45ull ) goto label$930;
		label$931:;
		{
			char* OPT$3;
			OPT$3 = (char*)((uint8*)*(char**)ARG$1 + 1ll);
			if( (int64)*(uint8*)OPT$3 != 0ll ) goto label$933;
			{
				HFATALINVALIDOPTION( ARG$1, IS_SOURCE$1 );
			}
			label$933:;
			label$932:;
			int64 OPTID$3;
			int64 vr$9 = PARSEOPTION( OPT$3 );
			OPTID$3 = vr$9;
			if( OPTID$3 >= 0ll ) goto label$935;
			{
				HFATALINVALIDOPTION( ARG$1, IS_SOURCE$1 );
			}
			label$935:;
			label$934:;
			if( IS_SOURCE$1 == 0ll ) goto label$937;
			{
				if( (boolean)(*(boolean*)(((int64)(struct $18FBC_CMDLINE_OPTION*)CMDLINEOPTIONTB$ + (OPTID$3 << (4ll & 63ll))) + 1ll) == 0ll) == (boolean)0ll ) goto label$939;
				{
					HFATALINVALIDOPTION( ARG$1, IS_SOURCE$1 );
				}
				label$939:;
				label$938:;
			}
			label$937:;
			label$936:;
			if( *(boolean*)((int64)(struct $18FBC_CMDLINE_OPTION*)CMDLINEOPTIONTB$ + (OPTID$3 << (4ll & 63ll))) == (boolean)0ll ) goto label$941;
			{
				*(int64*)&FBC$ = OPTID$3;
			}
			goto label$940;
			label$941:;
			{
				HANDLEOPT( OPTID$3, ARG$1, IS_SOURCE$1 );
			}
			label$940:;
			if( IS_SOURCE$1 == 0ll ) goto label$943;
			{
				if( *(boolean*)(((int64)(struct $18FBC_CMDLINE_OPTION*)CMDLINEOPTIONTB$ + (OPTID$3 << (4ll & 63ll))) + 2ll) == (boolean)0ll ) goto label$945;
				{
					FBRESTARTBEGINREQUEST( 2ll );
				}
				label$945:;
				label$944:;
				if( *(int64*)(((int64)(struct $18FBC_CMDLINE_OPTION*)CMDLINEOPTIONTB$ + (OPTID$3 << (4ll & 63ll))) + 8ll) == 0ll ) goto label$947;
				{
					FBRESTARTBEGINREQUEST( 8ll );
				}
				label$947:;
				label$946:;
			}
			label$943:;
			label$942:;
		}
		goto label$929;
		label$930:;
		if( (uint64)(int64)TMP$472$2 != 64ull ) goto label$948;
		label$949:;
		{
			static int64 RECLEVEL$3 = 0ll;
			if( RECLEVEL$3 <= 128ll ) goto label$951;
			{
				ERRREPORTEX( 27ll, (char*)*(char**)ARG$1, -1ll, 1ll, (char*)0ull );
				FBCEND( 1ll );
			}
			label$951:;
			label$950:;
			int64 vr$17 = fb_StrLen( (void*)ARG$1, -1ll );
			FBSTRING* vr$19 = fb_RIGHT( (FBSTRING*)ARG$1, vr$17 + -1ll );
			fb_StrAssign( (void*)ARG$1, -1ll, (void*)vr$19, -1ll, 0 );
			int64 vr$20 = fb_StrLen( (void*)ARG$1, -1ll );
			if( vr$20 != 0ll ) goto label$953;
			{
				HFATALINVALIDOPTION( ARG$1, IS_SOURCE$1 );
			}
			label$953:;
			label$952:;
			RECLEVEL$3 = RECLEVEL$3 + 1ll;
			PARSEARGSFROMFILE( ARG$1, IS_SOURCE$1 );
			RECLEVEL$3 = RECLEVEL$3 + -1ll;
		}
		goto label$929;
		label$948:;
		{
			FBSTRING EXT$3;
			FBSTRING* vr$24 = HGETFILEEXT( (char*)*(char**)ARG$1 );
			fb_StrInit( (void*)&EXT$3, -1ll, (void*)vr$24, -1ll, 0 );
			FBSTRING* vr$27 = fb_StrLcase2( (FBSTRING*)&EXT$3, 0 );
			fb_StrAssign( (void*)&EXT$3, -1ll, (void*)vr$27, -1ll, 0 );
			{
				int32 vr$30 = fb_StrCompare( (void*)&EXT$3, -1ll, (void*)"bas", 4ll );
				if( (int64)vr$30 != 0ll ) goto label$956;
				label$957:;
				{
					HADDBAS( ARG$1 );
				}
				goto label$955;
				label$956:;
				int32 vr$33 = fb_StrCompare( (void*)&EXT$3, -1ll, (void*)"o", 2ll );
				if( (int64)vr$33 != 0ll ) goto label$958;
				label$959:;
				{
					FBCADDOBJ( ARG$1 );
				}
				goto label$955;
				label$958:;
				int32 vr$36 = fb_StrCompare( (void*)&EXT$3, -1ll, (void*)"a", 2ll );
				if( (int64)vr$36 != 0ll ) goto label$960;
				label$961:;
				{
					STRLISTAPPEND( (struct $5TLIST*)((uint8*)&FBC$ + 464ll), ARG$1 );
				}
				goto label$955;
				label$960:;
				int32 vr$40 = fb_StrCompare( (void*)&EXT$3, -1ll, (void*)"rc", 3ll );
				if( (int64)vr$40 == 0ll ) goto label$963;
				label$964:;
				int32 vr$43 = fb_StrCompare( (void*)&EXT$3, -1ll, (void*)"res", 4ll );
				if( (int64)vr$43 != 0ll ) goto label$962;
				label$963:;
				{
					void* vr$46 = LISTNEWNODE( (struct $5TLIST*)((uint8*)&FBC$ + 208ll) );
					HSETIOFILE( (struct $9FBCIOFILE*)vr$46, ARG$1, -1ll );
				}
				goto label$955;
				label$962:;
				int32 vr$48 = fb_StrCompare( (void*)&EXT$3, -1ll, (void*)"xpm", 4ll );
				if( (int64)vr$48 != 0ll ) goto label$965;
				label$966:;
				{
					int64 vr$51 = fb_StrLen( (void*)((uint8*)&FBC$ + 272ll), -1ll );
					if( vr$51 <= 0ll ) goto label$968;
					{
						HFATALINVALIDOPTION( ARG$1, IS_SOURCE$1 );
					}
					label$968:;
					label$967:;
					HSETIOFILE( (struct $9FBCIOFILE*)((uint8*)&FBC$ + 272ll), ARG$1, -1ll );
				}
				goto label$955;
				label$965:;
				{
					HFATALINVALIDOPTION( ARG$1, IS_SOURCE$1 );
				}
				label$969:;
				label$955:;
			}
			fb_StrDelete( (FBSTRING*)&EXT$3 );
		}
		label$954:;
		label$929:;
	}
	label$922:;
}

static void PARSEARGSFROMFILE( FBSTRING* FILENAME$1, int64 IS_SOURCE$1 )
{
	label$990:;
	int64 F$1;
	int32 vr$0 = fb_FileFree(  );
	F$1 = (int64)vr$0;
	int32 vr$3 = fb_FileOpen( (FBSTRING*)FILENAME$1, 2u, 0u, 0u, (int32)F$1, 0 );
	if( (int64)vr$3 == 0ll ) goto label$993;
	{
		ERRREPORTEX( 26ll, (char*)*(char**)FILENAME$1, -1ll, 1ll, (char*)0ull );
		FBCEND( 1ll );
	}
	label$993:;
	label$992:;
	FBSTRING ARGS$1;
	__builtin_memset( &ARGS$1, 0, 24ll );
	label$994:;
	int32 vr$8 = fb_FileEof( (int32)F$1 );
	if( (int64)vr$8 != 0ll ) goto label$995;
	{
		fb_FileLineInput( (int32)F$1, (void*)&ARGS$1, -1ll, 0 );
		FBSTRING* vr$13 = fb_TRIM( (FBSTRING*)&ARGS$1 );
		fb_StrAssign( (void*)&ARGS$1, -1ll, (void*)vr$13, -1ll, 0 );
		FBCPARSEARGSFROMSTRING( (char*)*(char**)&ARGS$1, IS_SOURCE$1, -1ll );
	}
	goto label$994;
	label$995:;
	int32 vr$16 = fb_FileClose( (int32)F$1 );
	if( (int64)vr$16 == 0ll ) goto label$996;
	void* vr$18 = fb_ErrorThrowAt( 2777, (char*)"/root/FreeBASIC-1.10.3/src/compiler/fbc.bas", (void*)0ull, (void*)0ull );
	goto *vr$18;
	label$996:;
	fb_StrDelete( (FBSTRING*)&ARGS$1 );
	label$991:;
}

static int64 HTARGETNEEDSPIC( void )
{
	int64 fb$result$1;
	__builtin_memset( &fb$result$1, 0, 8ll );
	label$997:;
	int64 RESULT$1;
	RESULT$1 = 0ll;
	int64 TARGET$1;
	int64 vr$1 = FBGETOPTION( 3ll );
	TARGET$1 = vr$1;
	if( TARGET$1 != 9ll ) goto label$1000;
	{
		RESULT$1 = -1ll;
	}
	goto label$999;
	label$1000:;
	int64 vr$2 = FBGETCPUFAMILY(  );
	if( vr$2 == 0ll ) goto label$1001;
	{
		{
			uint64 TMP$481$3;
			TMP$481$3 = (uint64)TARGET$1;
			goto label$1003;
			label$1004:;
			{
				RESULT$1 = -1ll;
			}
			goto label$1002;
			label$1003:;
			static const void* tmp$843[10ll] = {
				&&label$1004,
				&&label$1002,
				&&label$1002,
				&&label$1002,
				&&label$1004,
				&&label$1004,
				&&label$1004,
				&&label$1002,
				&&label$1002,
				&&label$1004,
			};
			if( (TMP$481$3 - 2ull) > 9ull ) goto label$1002;
			goto *tmp$843[TMP$481$3 - 2ull];
			label$1002:;
		}
	}
	label$1001:;
	label$999:;
	fb$result$1 = RESULT$1;
	label$998:;
	return fb$result$1;
}

static void HPARSEARGS( int64 ARGC$1, char** ARGV$1 )
{
	label$1005:;
	*(int64*)&FBC$ = -1ll;
	FBSTRING ARG$1;
	__builtin_memset( &ARG$1, 0, 24ll );
	{
		int64 I$2;
		I$2 = 1ll;
		int64 TMP$482$2;
		TMP$482$2 = ARGC$1 + -1ll;
		goto label$1007;
		label$1010:;
		{
			fb_StrAssign( (void*)&ARG$1, -1ll, *(void**)((uint8*)ARGV$1 + (I$2 << (3ll & 63ll))), 0ll, 0 );
			HANDLEARG( &ARG$1, 0ll, 0ll );
		}
		label$1008:;
		I$2 = I$2 + 1ll;
		label$1007:;
		if( I$2 <= TMP$482$2 ) goto label$1010;
		label$1009:;
	}
	if( *(int64*)&FBC$ < 0ll ) goto label$1012;
	{
		FBSTRING TMP$483$2;
		__builtin_memset( &TMP$483$2, 0, 24ll );
		fb_StrAssign( (void*)&TMP$483$2, -1ll, *(void**)((uint8*)((uint8*)ARGV$1 + (ARGC$1 << (3ll & 63ll))) + -8ll), 0ll, 0 );
		HFATALINVALIDOPTION( &TMP$483$2, 0ll );
		fb_StrDelete( (FBSTRING*)&TMP$483$2 );
	}
	label$1012:;
	label$1011:;
	fb_StrDelete( (FBSTRING*)&ARG$1 );
	label$1006:;
}

static void HCHECKARGS( void )
{
	int64 TMP$488$1;
	label$1013:;
	HCHECKWAITINGOBJFILE(  );
	int64 vr$0 = FBGETOPTION( 5ll );
	if( vr$0 != 0ll ) goto label$1016;
	{
		int64 vr$1 = FBGETOPTION( 7ll );
		int64 vr$3 = FBGETOPTION( 6ll );
		if( ((int64)-(vr$1 >= 1ll) | (int64)-(vr$3 == 1ll)) == 0ll ) goto label$1018;
		{
			ERRREPORTEX( 284ll, (char*)"", -1ll, 1ll, (char*)0ull );
			FBCEND( 1ll );
		}
		label$1018:;
		label$1017:;
	}
	label$1016:;
	label$1015:;
	if( *(int64*)((uint8*)&FBC$ + 48ll) < 0ll ) goto label$1020;
	{
		FBSETOPTION( 4ll, *(int64*)((uint8*)&FBC$ + 48ll) );
	}
	label$1020:;
	label$1019:;
	int64 vr$6 = FBGETOPTION( 3ll );
	int64 vr$8 = FBGETCPUFAMILY(  );
	if( ((int64)-(vr$6 == 4ll) & (int64)-(vr$8 != 0ll)) == 0ll ) goto label$1022;
	{
		char* vr$11 = FBGETFBCARCH(  );
		ERRREPORTEX( 82ll, (char*)vr$11, -1ll, 1ll, (char*)0ull );
		FBCEND( 1ll );
	}
	label$1022:;
	label$1021:;
	int64 vr$12 = FBGETCPUFAMILY(  );
	int64 vr$14 = FBGETOPTION( 3ll );
	if( ((int64)-(vr$12 == 0ll) & (int64)-(vr$14 != 10ll)) == 0ll ) goto label$1024;
	{
		FBSETOPTION( 2ll, 0ll );
	}
	goto label$1023;
	label$1024:;
	{
		FBSETOPTION( 2ll, 1ll );
	}
	label$1023:;
	if( *(int64*)((uint8*)&FBC$ + 40ll) < 0ll ) goto label$1026;
	{
		FBSETOPTION( 2ll, *(int64*)((uint8*)&FBC$ + 40ll) );
	}
	label$1026:;
	label$1025:;
	int64 vr$17 = FBGETOPTION( 2ll );
	int64 vr$19 = FBGETCPUFAMILY(  );
	int64 vr$22 = FBGETOPTION( 2ll );
	int64 vr$24 = FBGETCPUFAMILY(  );
	if( (((int64)-(vr$17 == 0ll) & (int64)-(vr$19 != 0ll)) | ((int64)-(vr$22 == 3ll) & (int64)-(vr$24 != 1ll))) == 0ll ) goto label$1028;
	{
		char* vr$28 = FBGETFBCARCH(  );
		ERRREPORTEX( 83ll, (char*)vr$28, -1ll, 1ll, (char*)0ull );
		FBCEND( 1ll );
	}
	label$1028:;
	label$1027:;
	{
		uint64 TMP$484$2;
		int64 vr$29 = FBGETOPTION( 3ll );
		TMP$484$2 = (uint64)vr$29;
		goto label$1030;
		label$1031:;
		{
		}
		goto label$1029;
		label$1032:;
		{
			struct $9FBCIOFILE* RC$3;
			void* vr$31 = LISTGETHEAD( (struct $5TLIST*)((uint8*)&FBC$ + 208ll) );
			RC$3 = (struct $9FBCIOFILE*)vr$31;
			if( RC$3 == (struct $9FBCIOFILE*)0ull ) goto label$1034;
			{
				ERRREPORTEX( 291ll, (char*)*(char**)RC$3, -1ll, 1ll, (char*)0ull );
				FBCEND( 1ll );
			}
			label$1034:;
			label$1033:;
		}
		goto label$1029;
		label$1030:;
		static const void* tmp$844[6ll] = {
			&&label$1031,
			&&label$1031,
			&&label$1032,
			&&label$1032,
			&&label$1032,
			&&label$1031,
		};
		if( TMP$484$2 > 5ull ) goto label$1032;
		goto *tmp$844[TMP$484$2 - 0ull];
		label$1029:;
	}
	{
		uint64 TMP$485$2;
		int64 vr$33 = FBGETOPTION( 3ll );
		TMP$485$2 = (uint64)vr$33;
		goto label$1036;
		label$1037:;
		{
		}
		goto label$1035;
		label$1038:;
		{
			int64 vr$35 = fb_StrLen( (void*)((uint8*)&FBC$ + 272ll), -1ll );
			if( vr$35 <= 0ll ) goto label$1040;
			{
				ERRREPORTEX( 291ll, (char*)*(char**)((uint8*)&FBC$ + 272ll), -1ll, 1ll, (char*)0ull );
				FBCEND( 1ll );
			}
			label$1040:;
			label$1039:;
		}
		goto label$1035;
		label$1036:;
		static const void* tmp$845[10ll] = {
			&&label$1037,
			&&label$1038,
			&&label$1038,
			&&label$1038,
			&&label$1037,
			&&label$1037,
			&&label$1037,
			&&label$1037,
			&&label$1037,
			&&label$1037,
		};
		if( (TMP$485$2 - 2ull) > 9ull ) goto label$1038;
		goto *tmp$845[TMP$485$2 - 2ull];
		label$1035:;
	}
	int64 vr$36 = FBGETOPTION( 3ll );
	int64 vr$38 = FBGETOPTION( 2ll );
	if( ((int64)-(vr$36 == 10ll) & (int64)-(vr$38 != 0ll)) == 0ll ) goto label$1042;
	{
		FBSETOPTION( 9ll, 1ll );
	}
	label$1042:;
	label$1041:;
	if( *(int64*)((uint8*)&FBC$ + 64ll) < 0ll ) goto label$1044;
	{
		{
			int64 TMP$486$3;
			int64 vr$41 = FBGETCPUFAMILY(  );
			TMP$486$3 = vr$41;
			if( TMP$486$3 == 0ll ) goto label$1047;
			label$1048:;
			if( TMP$486$3 != 1ll ) goto label$1046;
			label$1047:;
			{
			}
			goto label$1045;
			label$1046:;
			{
				FBSTRING TMP$487$4;
				__builtin_memset( &TMP$487$4, 0, 24ll );
				FBSTRING* vr$43 = FBGETTARGETID(  );
				fb_StrAssign( (void*)&TMP$487$4, -1ll, (void*)vr$43, -1ll, 0 );
				ERRREPORTEX( 319ll, (char*)*(char**)&TMP$487$4, -1ll, 1ll, (char*)0ull );
				fb_StrDelete( (FBSTRING*)&TMP$487$4 );
			}
			label$1049:;
			label$1045:;
		}
		int64 vr$46 = FBGETOPTION( 2ll );
		int64 vr$48 = FBGETOPTION( 2ll );
		if( (((int64)-(vr$46 == 0ll) | (int64)-(vr$48 == 3ll)) & (int64)-(*(int64*)((uint8*)&FBC$ + 64ll) != 0ll)) == 0ll ) goto label$1051;
		{
			ERRREPORTEX( 84ll, (char*)"", -1ll, 1ll, (char*)0ull );
		}
		label$1051:;
		label$1050:;
		FBSETOPTION( 9ll, *(int64*)((uint8*)&FBC$ + 64ll) );
	}
	label$1044:;
	label$1043:;
	int64 vr$53 = FBGETOPTION( 37ll );
	if( vr$53 == 0ll ) goto label$1053;
	{
		int64 vr$54 = FBGETOPTION( 0ll );
		if( vr$54 != 0ll ) goto label$1055;
		{
			ERRREPORTEX( 85ll, (char*)"", -1ll, 1ll, (char*)0ull );
		}
		goto label$1054;
		label$1055:;
		int64 vr$55 = HTARGETNEEDSPIC(  );
		if( vr$55 != 0ll ) goto label$1056;
		{
			ERRREPORTEX( 86ll, (char*)"", -1ll, 1ll, (char*)0ull );
		}
		label$1056:;
		label$1054:;
	}
	label$1053:;
	label$1052:;
	int64 vr$56 = FBGETOPTION( 0ll );
	if( vr$56 == 2ll ) goto label$1057;
	int64 vr$57 = FBGETOPTION( 3ll );
	TMP$488$1 = (int64)-(vr$57 == 9ll);
	goto label$1514;
	label$1057:;
	TMP$488$1 = -1ll;
	label$1514:;
	if( TMP$488$1 == 0ll ) goto label$1059;
	{
		int64 vr$59 = HTARGETNEEDSPIC(  );
		if( vr$59 == 0ll ) goto label$1061;
		{
			FBSETOPTION( 37ll, -1ll );
		}
		label$1061:;
		label$1060:;
	}
	label$1059:;
	label$1058:;
	FBSETOPTION( 38ll, -1ll );
	label$1014:;
}

static void FBCDETERMINEPREFIX( void )
{
	label$1062:;
	int64 vr$1 = fb_StrLen( (void*)((uint8*)&FBC$ + 2512ll), 261ll );
	if( vr$1 != 0ll ) goto label$1065;
	{
		FBSTRING TMP$489$2;
		FBSTRING TMP$490$2;
		FBSTRING TMP$493$2;
		__builtin_memset( &TMP$489$2, 0, 24ll );
		FBSTRING* vr$3 = fb_ExePath(  );
		fb_StrAssign( (void*)&TMP$489$2, -1ll, (void*)vr$3, -1ll, 0 );
		FBSTRING* vr$6 = PATHSTRIPDIV( &TMP$489$2 );
		__builtin_memset( &TMP$490$2, 0, 24ll );
		FBSTRING* vr$9 = fb_StrConcat( &TMP$490$2, (void*)vr$6, -1ll, (void*)"/", 2ll );
		fb_StrAssign( (void*)((uint8*)&FBC$ + 2512ll), 261ll, (void*)vr$9, -1ll, 0 );
		fb_StrDelete( (FBSTRING*)&TMP$489$2 );
		__builtin_memset( &TMP$493$2, 0, 24ll );
		FBSTRING* vr$15 = fb_StrConcat( &TMP$493$2, (void*)((uint8*)&FBC$ + 2512ll), 261ll, (void*)"../", 4ll );
		fb_StrAssign( (void*)((uint8*)&FBC$ + 2512ll), 261ll, (void*)vr$15, -1ll, 0 );
	}
	goto label$1064;
	label$1065:;
	{
		FBSTRING TMP$494$2;
		FBSTRING TMP$495$2;
		__builtin_memset( &TMP$494$2, 0, 24ll );
		fb_StrAssign( (void*)&TMP$494$2, -1ll, (void*)((uint8*)&FBC$ + 2512ll), 261ll, 0 );
		FBSTRING* vr$21 = PATHSTRIPDIV( &TMP$494$2 );
		__builtin_memset( &TMP$495$2, 0, 24ll );
		FBSTRING* vr$24 = fb_StrConcat( &TMP$495$2, (void*)vr$21, -1ll, (void*)"/", 2ll );
		fb_StrAssign( (void*)((uint8*)&FBC$ + 2512ll), 261ll, (void*)vr$24, -1ll, 0 );
		fb_StrDelete( (FBSTRING*)&TMP$494$2 );
	}
	label$1064:;
	label$1063:;
}

static void FBCSETUPCOMPILERPATHS( void )
{
	FBSTRING TMP$504$1;
	FBSTRING TMP$505$1;
	FBSTRING TMP$506$1;
	FBSTRING TMP$507$1;
	FBSTRING TMP$508$1;
	FBSTRING TMP$509$1;
	FBSTRING TMP$510$1;
	FBSTRING TMP$511$1;
	label$1066:;
	FBSTRING TARGETID$1;
	FBSTRING* vr$0 = FBGETTARGETID(  );
	fb_StrInit( (void*)&TARGETID$1, -1ll, (void*)vr$0, -1ll, 0 );
	FBSTRING FBNAME$1;
	__builtin_memset( &FBNAME$1, 0, 24ll );
	fb_StrAssign( (void*)&FBNAME$1, -1ll, (void*)"freebasic", 10ll, 0 );
	FBSTRING LIBDIRNAME$1;
	fb_StrInit( (void*)&LIBDIRNAME$1, -1ll, (void*)"lib", 4ll, 0 );
	int64 vr$6 = fb_StrLen( (void*)((uint8*)&FBC$ + 3556ll), 261ll );
	if( vr$6 <= 0ll ) goto label$1069;
	{
		FBSTRING TMP$498$2;
		FBSTRING TMP$499$2;
		FBSTRING TMP$500$2;
		__builtin_memset( &TMP$498$2, 0, 24ll );
		FBSTRING* vr$11 = fb_StrConcat( &TMP$498$2, (void*)((uint8*)&FBC$ + 2512ll), 261ll, (void*)"bin", 4ll );
		__builtin_memset( &TMP$499$2, 0, 24ll );
		FBSTRING* vr$14 = fb_StrConcat( &TMP$499$2, (void*)vr$11, -1ll, (void*)"/", 2ll );
		__builtin_memset( &TMP$500$2, 0, 24ll );
		FBSTRING* vr$17 = fb_StrConcat( &TMP$500$2, (void*)vr$14, -1ll, (void*)((uint8*)&FBC$ + 3556ll), 261ll );
		fb_StrAssign( (void*)((uint8*)&FBC$ + 2773ll), 261ll, (void*)vr$17, -1ll, 0 );
	}
	goto label$1068;
	label$1069:;
	{
		FBSTRING TMP$501$2;
		FBSTRING TMP$502$2;
		FBSTRING TMP$503$2;
		__builtin_memset( &TMP$501$2, 0, 24ll );
		FBSTRING* vr$23 = fb_StrConcat( &TMP$501$2, (void*)((uint8*)&FBC$ + 2512ll), 261ll, (void*)"bin", 4ll );
		__builtin_memset( &TMP$502$2, 0, 24ll );
		FBSTRING* vr$26 = fb_StrConcat( &TMP$502$2, (void*)vr$23, -1ll, (void*)"/", 2ll );
		__builtin_memset( &TMP$503$2, 0, 24ll );
		FBSTRING* vr$29 = fb_StrConcat( &TMP$503$2, (void*)vr$26, -1ll, (void*)((uint8*)&FBC$ + 2225ll), 129ll );
		fb_StrAssign( (void*)((uint8*)&FBC$ + 2773ll), 261ll, (void*)vr$29, -1ll, 0 );
	}
	label$1068:;
	__builtin_memset( &TMP$504$1, 0, 24ll );
	FBSTRING* vr$35 = fb_StrConcat( &TMP$504$1, (void*)((uint8*)&FBC$ + 2512ll), 261ll, (void*)"include", 8ll );
	__builtin_memset( &TMP$505$1, 0, 24ll );
	FBSTRING* vr$38 = fb_StrConcat( &TMP$505$1, (void*)vr$35, -1ll, (void*)"/", 2ll );
	__builtin_memset( &TMP$506$1, 0, 24ll );
	FBSTRING* vr$41 = fb_StrConcat( &TMP$506$1, (void*)vr$38, -1ll, (void*)&FBNAME$1, -1ll );
	fb_StrAssign( (void*)((uint8*)&FBC$ + 3034ll), 261ll, (void*)vr$41, -1ll, 0 );
	__builtin_memset( &TMP$507$1, 0, 24ll );
	FBSTRING* vr$49 = fb_StrConcat( &TMP$507$1, (void*)((uint8*)&FBC$ + 2512ll), 261ll, (void*)&LIBDIRNAME$1, -1ll );
	__builtin_memset( &TMP$508$1, 0, 24ll );
	FBSTRING* vr$52 = fb_StrConcat( &TMP$508$1, (void*)vr$49, -1ll, (void*)"/", 2ll );
	__builtin_memset( &TMP$509$1, 0, 24ll );
	FBSTRING* vr$55 = fb_StrConcat( &TMP$509$1, (void*)vr$52, -1ll, (void*)&FBNAME$1, -1ll );
	__builtin_memset( &TMP$510$1, 0, 24ll );
	FBSTRING* vr$58 = fb_StrConcat( &TMP$510$1, (void*)vr$55, -1ll, (void*)"/", 2ll );
	__builtin_memset( &TMP$511$1, 0, 24ll );
	FBSTRING* vr$61 = fb_StrConcat( &TMP$511$1, (void*)vr$58, -1ll, (void*)&TARGETID$1, -1ll );
	fb_StrAssign( (void*)((uint8*)&FBC$ + 3295ll), 261ll, (void*)vr$61, -1ll, 0 );
	fb_StrDelete( (FBSTRING*)&LIBDIRNAME$1 );
	fb_StrDelete( (FBSTRING*)&FBNAME$1 );
	fb_StrDelete( (FBSTRING*)&TARGETID$1 );
	label$1067:;
}

static void FBCPRINTTARGETINFO( void )
{
	FBSTRING TMP$513$1;
	FBSTRING TMP$514$1;
	label$1070:;
	FBSTRING S$1;
	FBSTRING* vr$0 = FBGETTARGETID(  );
	fb_StrInit( (void*)&S$1, -1ll, (void*)vr$0, -1ll, 0 );
	char* vr$2 = FBGETFBCARCH(  );
	__builtin_memset( &TMP$513$1, 0, 24ll );
	FBSTRING* vr$5 = fb_StrConcat( &TMP$513$1, (void*)", ", 3ll, (void*)vr$2, 0ll );
	__builtin_memset( &TMP$514$1, 0, 24ll );
	FBSTRING* vr$9 = fb_StrConcat( &TMP$514$1, (void*)&S$1, -1ll, (void*)vr$5, -1ll );
	fb_StrAssign( (void*)&S$1, -1ll, (void*)vr$9, -1ll, 0 );
	fb_StrConcatAssign( (void*)&S$1, -1ll, (void*)", ", 3ll, 0 );
	int64 vr$12 = FBGETBITS(  );
	FBSTRING* vr$13 = fb_LongintToStr( vr$12 );
	fb_StrConcatAssign( (void*)&S$1, -1ll, (void*)vr$13, -1ll, 0 );
	fb_StrConcatAssign( (void*)&S$1, -1ll, (void*)"bit", 4ll, 0 );
	int64 vr$17 = fb_StrLen( (void*)((uint8*)&FBC$ + 2096ll), 129ll );
	if( vr$17 <= 0ll ) goto label$1073;
	{
		fb_StrConcatAssign( (void*)&S$1, -1ll, (void*)" (", 3ll, 0 );
		fb_StrConcatAssign( (void*)&S$1, -1ll, (void*)((uint8*)&FBC$ + 2096ll), 129ll, 0 );
		fb_StrConcatAssign( (void*)&S$1, -1ll, (void*)")", 2ll, 0 );
	}
	label$1073:;
	label$1072:;
	FBSTRING* vr$22 = fb_StrAllocTempDescZEx( (char*)"target:", 7ll );
	fb_PrintString( 0, (FBSTRING*)vr$22, 2 );
	fb_PrintString( 0, (FBSTRING*)&S$1, 1 );
	FBSTRING* vr$24 = fb_StrAllocTempDescZEx( (char*)"backend:", 8ll );
	fb_PrintString( 0, (FBSTRING*)vr$24, 2 );
	int64 vr$25 = FBGETOPTION( 2ll );
	FBSTRING* vr$26 = FBGETBACKENDNAME( vr$25 );
	fb_PrintString( 0, (FBSTRING*)vr$26, 1 );
	fb_StrDelete( (FBSTRING*)&S$1 );
	label$1071:;
}

static void FBCDETERMINEMAINNAME( void )
{
	label$1074:;
	int64 vr$1 = fb_StrLen( (void*)((uint8*)&FBC$ + 1229ll), 261ll );
	if( vr$1 != 0ll ) goto label$1077;
	{
		FBSTRING TMP$521$2;
		struct $9FBCIOFILE* M$2;
		void* vr$3 = LISTGETHEAD( (struct $5TLIST*)((uint8*)&FBC$ + 144ll) );
		M$2 = (struct $9FBCIOFILE*)vr$3;
		if( M$2 == (struct $9FBCIOFILE*)0ull ) goto label$1079;
		{
			fb_StrAssign( (void*)((uint8*)&FBC$ + 1229ll), 261ll, (void*)M$2, -1ll, 0 );
		}
		goto label$1078;
		label$1079:;
		{
			FBSTRING* OBJF$3;
			void* vr$8 = LISTGETHEAD( (struct $5TLIST*)((uint8*)&FBC$ + 400ll) );
			OBJF$3 = (FBSTRING*)vr$8;
			if( OBJF$3 == (FBSTRING*)0ull ) goto label$1081;
			{
				fb_StrAssign( (void*)((uint8*)&FBC$ + 1229ll), 261ll, (void*)OBJF$3, -1ll, 0 );
			}
			goto label$1080;
			label$1081:;
			{
				fb_StrAssign( (void*)((uint8*)&FBC$ + 1229ll), 261ll, (void*)"unnamed", 8ll, 0 );
			}
			label$1080:;
		}
		label$1078:;
		__builtin_memset( &TMP$521$2, 0, 24ll );
		fb_StrAssign( (void*)&TMP$521$2, -1ll, (void*)((uint8*)&FBC$ + 1229ll), 261ll, 0 );
		FBSTRING* vr$15 = HSTRIPEXT( &TMP$521$2 );
		fb_StrAssign( (void*)((uint8*)&FBC$ + 1229ll), 261ll, (void*)vr$15, -1ll, 0 );
		fb_StrDelete( (FBSTRING*)&TMP$521$2 );
	}
	label$1077:;
	label$1076:;
	label$1075:;
}

static FBSTRING* HGETASMNAME( struct $9FBCIOFILE* MODULE$1, int64 STAGE$1 )
{
	FBSTRING TMP$526$1;
	FBSTRING fb$result$1;
	__builtin_memset( &fb$result$1, 0, 24ll );
	label$1082:;
	char* EXT$1;
	FBSTRING ASMFILE$1;
	__builtin_memset( &ASMFILE$1, 0, 24ll );
	FBSTRING* vr$3 = HSTRIPEXT( *(FBSTRING**)((uint8*)MODULE$1 + 24ll) );
	fb_StrAssign( (void*)&ASMFILE$1, -1ll, (void*)vr$3, -1ll, 0 );
	int64 vr$5 = FBGETOPTION( 3ll );
	if( vr$5 == 12ll ) goto label$1085;
	{
		EXT$1 = (char*)".asm";
	}
	goto label$1084;
	label$1085:;
	{
		EXT$1 = (char*)".o";
	}
	label$1084:;
	if( STAGE$1 != 1ll ) goto label$1087;
	{
		{
			int64 TMP$523$3;
			int64 vr$6 = FBGETOPTION( 2ll );
			TMP$523$3 = vr$6;
			if( TMP$523$3 != 1ll ) goto label$1089;
			label$1090:;
			{
				EXT$1 = (char*)".c";
			}
			goto label$1088;
			label$1089:;
			if( TMP$523$3 != 2ll ) goto label$1091;
			label$1092:;
			{
				EXT$1 = (char*)".ll";
			}
			label$1091:;
			label$1088:;
		}
	}
	label$1087:;
	label$1086:;
	__builtin_memset( &TMP$526$1, 0, 24ll );
	FBSTRING* vr$10 = fb_StrConcat( &TMP$526$1, (void*)&ASMFILE$1, -1ll, (void*)EXT$1, 0ll );
	fb_StrAssign( (void*)&ASMFILE$1, -1ll, (void*)vr$10, -1ll, 0 );
	fb_StrAssign( (void*)&fb$result$1, -1ll, (void*)&ASMFILE$1, -1ll, 0 );
	fb_StrDelete( (FBSTRING*)&ASMFILE$1 );
	label$1083:;
	FBSTRING* vr$16 = fb_StrAllocTempResult( (FBSTRING*)&fb$result$1 );
	return vr$16;
}

static void HCOMPILEBAS( struct $9FBCIOFILE* MODULE$1, int64 IS_MAIN$1, int64 IS_FBCTINF$1, int64 MODULE_COUNT$1 )
{
	label$1093:;
	int64 PREVLANG$1;
	int64 PREVOUTTYPE$1;
	FBSTRING ASMFILE$1;
	__builtin_memset( &ASMFILE$1, 0, 24ll );
	FBSTRING PPONLYFILE$1;
	__builtin_memset( &PPONLYFILE$1, 0, 24ll );
	FBSTRING* vr$2 = HGETASMNAME( MODULE$1, 1ll );
	fb_StrAssign( (void*)&ASMFILE$1, -1ll, (void*)vr$2, -1ll, 0 );
	int64 vr$4 = FBGETOPTION( 1ll );
	if( vr$4 == 0ll ) goto label$1096;
	{
		fb_StrAssign( (void*)&PPONLYFILE$1, -1ll, *(void**)((uint8*)MODULE$1 + 24ll), -1ll, 0 );
		if( *(int64*)((uint8*)MODULE$1 + 32ll) != 0ll ) goto label$1098;
		{
			FBSTRING TMP$528$3;
			FBSTRING* vr$9 = HSTRIPEXT( &PPONLYFILE$1 );
			__builtin_memset( &TMP$528$3, 0, 24ll );
			FBSTRING* vr$12 = fb_StrConcat( &TMP$528$3, (void*)vr$9, -1ll, (void*)".pp.bas", 8ll );
			fb_StrAssign( (void*)&PPONLYFILE$1, -1ll, (void*)vr$12, -1ll, 0 );
		}
		label$1098:;
		label$1097:;
	}
	label$1096:;
	label$1095:;
	if( *(int64*)((uint8*)&FBC$ + 112ll) == 0ll ) goto label$1100;
	{
		FBSTRING* vr$14 = fb_StrAllocTempDescZEx( (char*)"compiling: ", 11ll );
		fb_PrintString( 0, (FBSTRING*)vr$14, 2 );
		fb_PrintString( 0, (FBSTRING*)MODULE$1, 0 );
		FBSTRING* vr$17 = fb_StrAllocTempDescZEx( (char*)" -o ", 4ll );
		fb_PrintString( 0, (FBSTRING*)vr$17, 0 );
		fb_PrintString( 0, (FBSTRING*)&ASMFILE$1, 0 );
		int64 vr$19 = FBGETOPTION( 1ll );
		if( vr$19 == 0ll ) goto label$1102;
		{
			FBSTRING TMP$532$3;
			__builtin_memset( &TMP$532$3, 0, 24ll );
			FBSTRING* vr$23 = fb_StrConcat( &TMP$532$3, (void*)" -pp ", 6ll, (void*)&PPONLYFILE$1, -1ll );
			fb_PrintString( 0, (FBSTRING*)vr$23, 0 );
		}
		label$1102:;
		label$1101:;
		if( IS_MAIN$1 == 0ll ) goto label$1104;
		{
			FBSTRING* vr$24 = fb_StrAllocTempDescZEx( (char*)" (main module)", 14ll );
			fb_PrintString( 0, (FBSTRING*)vr$24, 0 );
		}
		goto label$1103;
		label$1104:;
		if( IS_FBCTINF$1 == 0ll ) goto label$1105;
		{
			FBSTRING* vr$25 = fb_StrAllocTempDescZEx( (char*)" (FB compile-time info)", 23ll );
			fb_PrintString( 0, (FBSTRING*)vr$25, 0 );
		}
		label$1105:;
		label$1103:;
		fb_PrintVoid( 0, 1 );
	}
	label$1100:;
	label$1099:;
	int64 vr$26 = FBGETOPTION( 12ll );
	if( vr$26 == -1ll ) goto label$1107;
	{
		int64 vr$27 = FBGETOPTION( 12ll );
		FBSETOPTION( 10ll, vr$27 );
	}
	label$1107:;
	label$1106:;
	int64 vr$28 = FBGETOPTION( 10ll );
	PREVLANG$1 = vr$28;
	int64 vr$29 = FBGETOPTION( 0ll );
	PREVOUTTYPE$1 = vr$29;
	if( IS_FBCTINF$1 == 0ll ) goto label$1109;
	{
		FBSETOPTION( 0ll, 3ll );
	}
	label$1109:;
	label$1108:;
	label$1110:;
	{
		int64 vr$31 = FBGETOPTION( 2ll );
		int64 vr$33 = FBGETOPTION( 2ll );
		if( (~(*(int64*)((uint8*)&FBC$ + 80ll)) & (((int64)-(vr$31 != 0ll) & (int64)-(vr$33 != 3ll)) | ~(*(int64*)((uint8*)&FBC$ + 96ll)))) == 0ll ) goto label$1114;
		{
			FBCADDTEMP( &ASMFILE$1 );
		}
		goto label$1113;
		label$1114:;
		if( MODULE_COUNT$1 != 1ll ) goto label$1115;
		{
			int64 vr$40 = FBRESTARTGETCOUNT(  );
			if( vr$40 <= 0ll ) goto label$1117;
			{
				FBCREMOVETEMP( &ASMFILE$1 );
			}
			label$1117:;
			label$1116:;
		}
		label$1115:;
		label$1113:;
		FBINIT( IS_MAIN$1, (char*)((uint8*)&FBC$ + 1490ll), MODULE_COUNT$1 );
		if( IS_FBCTINF$1 == 0ll ) goto label$1119;
		{
			FBSETLIBS( (struct $7TSTRSET*)((uint8*)&FBC$ + 792ll), (struct $7TSTRSET*)((uint8*)&FBC$ + 880ll) );
		}
		goto label$1118;
		label$1119:;
		{
			FBSETLIBS( (struct $7TSTRSET*)((uint8*)&FBC$ + 528ll), (struct $7TSTRSET*)((uint8*)&FBC$ + 616ll) );
		}
		label$1118:;
		FBCOMPILE( (char*)*(char**)MODULE$1, (char*)*(char**)&ASMFILE$1, &PPONLYFILE$1, IS_MAIN$1 );
		int64 vr$49 = ERRGETCOUNT(  );
		if( vr$49 <= 0ll ) goto label$1121;
		{
			FBCEND( 1ll );
		}
		label$1121:;
		label$1120:;
		int64 vr$50 = FBSHOULDRESTART(  );
		if( vr$50 != 0ll ) goto label$1123;
		{
			goto label$1111;
		}
		label$1123:;
		label$1122:;
		FBRESTARTENDREQUEST( 7ll );
		FBEND(  );
		int64 vr$51 = FBSHOULDRESTART(  );
		if( vr$51 == 0ll ) goto label$1125;
		{
			int64 vr$52 = FBGETOPTION( 12ll );
			if( vr$52 != -1ll ) goto label$1127;
			{
				FBSETOPTION( 10ll, PREVLANG$1 );
			}
			label$1127:;
			label$1126:;
			fb_StrDelete( (FBSTRING*)&PPONLYFILE$1 );
			fb_StrDelete( (FBSTRING*)&ASMFILE$1 );
			goto label$1094;
		}
		label$1125:;
		label$1124:;
	}
	label$1112:;
	goto label$1110;
	label$1111:;
	if( IS_FBCTINF$1 != 0ll ) goto label$1129;
	{
		FBGETLIBS( (struct $7TSTRSET*)((uint8*)&FBC$ + 792ll), (struct $7TSTRSET*)((uint8*)&FBC$ + 880ll) );
	}
	label$1129:;
	label$1128:;
	FBEND(  );
	if( IS_FBCTINF$1 == 0ll ) goto label$1131;
	{
		FBSETOPTION( 0ll, PREVOUTTYPE$1 );
	}
	label$1131:;
	label$1130:;
	FBSETOPTION( 10ll, PREVLANG$1 );
	fb_StrDelete( (FBSTRING*)&PPONLYFILE$1 );
	fb_StrDelete( (FBSTRING*)&ASMFILE$1 );
	label$1094:;
}

static void HCOMPILEMODULES( void )
{
	label$1132:;
	int64 ISMAIN$1;
	int64 CHECKMAIN$1;
	FBSTRING MAINFILE$1;
	__builtin_memset( &MAINFILE$1, 0, 24ll );
	struct $9FBCIOFILE* MODULE$1;
	ISMAIN$1 = 0ll;
	{
		int64 TMP$535$2;
		int64 vr$1 = FBGETOPTION( 0ll );
		TMP$535$2 = vr$1;
		if( TMP$535$2 == 0ll ) goto label$1136;
		label$1137:;
		if( TMP$535$2 != 2ll ) goto label$1135;
		label$1136:;
		{
			CHECKMAIN$1 = -1ll;
		}
		goto label$1134;
		label$1135:;
		{
			CHECKMAIN$1 = *(int64*)((uint8*)&FBC$ + 1624ll);
		}
		label$1138:;
		label$1134:;
	}
	if( CHECKMAIN$1 == 0ll ) goto label$1140;
	{
		FBSTRING* vr$3 = HSTRIPPATH( (char*)((uint8*)&FBC$ + 1229ll) );
		fb_StrAssign( (void*)&MAINFILE$1, -1ll, (void*)vr$3, -1ll, 0 );
	}
	label$1140:;
	label$1139:;
	void* vr$6 = LISTGETHEAD( (struct $5TLIST*)((uint8*)&FBC$ + 144ll) );
	MODULE$1 = (struct $9FBCIOFILE*)vr$6;
	if( MODULE$1 != (struct $9FBCIOFILE*)0ull ) goto label$1142;
	{
		STRSETCOPY( (struct $7TSTRSET*)((uint8*)&FBC$ + 792ll), (struct $7TSTRSET*)((uint8*)&FBC$ + 528ll) );
		STRSETCOPY( (struct $7TSTRSET*)((uint8*)&FBC$ + 880ll), (struct $7TSTRSET*)((uint8*)&FBC$ + 616ll) );
		fb_StrDelete( (FBSTRING*)&MAINFILE$1 );
		goto label$1133;
	}
	label$1142:;
	label$1141:;
	int64 MODULE_COUNT$1;
	MODULE_COUNT$1 = 0ll;
	label$1143:;
	{
		if( CHECKMAIN$1 == 0ll ) goto label$1147;
		{
			FBSTRING TMP$536$3;
			__builtin_memset( &TMP$536$3, 0, 24ll );
			FBSTRING* vr$15 = HSTRIPEXT( (FBSTRING*)MODULE$1 );
			fb_StrAssign( (void*)&TMP$536$3, -1ll, (void*)vr$15, -1ll, 0 );
			FBSTRING* vr$17 = HSTRIPPATH( (char*)*(char**)&TMP$536$3 );
			int32 vr$19 = fb_StrCompare( (void*)&MAINFILE$1, -1ll, (void*)vr$17, -1ll );
			ISMAIN$1 = (int64)-((int64)vr$19 == 0ll);
			fb_StrDelete( (FBSTRING*)&TMP$536$3 );
		}
		label$1147:;
		label$1146:;
		MODULE_COUNT$1 = MODULE_COUNT$1 + 1ll;
		HCOMPILEBAS( MODULE$1, ISMAIN$1, 0ll, MODULE_COUNT$1 );
		int64 vr$24 = FBSHOULDRESTART(  );
		if( vr$24 == 0ll ) goto label$1149;
		{
			fb_StrDelete( (FBSTRING*)&MAINFILE$1 );
			goto label$1133;
		}
		label$1149:;
		label$1148:;
		void* vr$26 = LISTGETNEXT( (void*)MODULE$1 );
		MODULE$1 = (struct $9FBCIOFILE*)vr$26;
	}
	label$1145:;
	if( MODULE$1 != (struct $9FBCIOFILE*)0ull ) goto label$1143;
	label$1144:;
	fb_StrDelete( (FBSTRING*)&MAINFILE$1 );
	label$1133:;
}

static int64 HPARSEXPM( FBSTRING* XPMFILE$1, FBSTRING* CODE$1 )
{
	int64 fb$result$1;
	__builtin_memset( &fb$result$1, 0, 8ll );
	label$1150:;
	fb_StrConcatByref( (void*)CODE$1, -1ll, (void*)"\x0A" "dim shared as zstring ptr ", 28ll, 0 );
	fb_StrConcatByref( (void*)CODE$1, -1ll, (void*)"fb_program_icon_data", 21ll, 0 );
	fb_StrConcatByref( (void*)CODE$1, -1ll, (void*)"(0 to ...) = _\x0A{ _\x0A", 20ll, 0 );
	int64 F$1;
	int32 vr$1 = fb_FileFree(  );
	F$1 = (int64)vr$1;
	int32 vr$4 = fb_FileOpen( (FBSTRING*)XPMFILE$1, 2u, 0u, 0u, (int32)F$1, 0 );
	if( (int64)vr$4 == 0ll ) goto label$1153;
	{
		goto label$1151;
	}
	label$1153:;
	label$1152:;
	FBSTRING LN$1;
	__builtin_memset( &LN$1, 0, 24ll );
	fb_FileLineInput( (int32)F$1, (void*)&LN$1, -1ll, 0 );
	FBSTRING* vr$10 = fb_StrUcase2( (FBSTRING*)&LN$1, 0 );
	int32 vr$11 = fb_StrCompare( (void*)vr$10, -1ll, (void*)"/* XPM */", 10ll );
	if( (int64)vr$11 == 0ll ) goto label$1155;
	{
		int32 vr$14 = fb_FileClose( (int32)F$1 );
		if( (int64)vr$14 == 0ll ) goto label$1156;
		void* vr$16 = fb_ErrorThrowAt( 3377, (char*)"/root/FreeBASIC-1.10.3/src/compiler/fbc.bas", (void*)0ull, (void*)0ull );
		goto *vr$16;
		label$1156:;
		fb_StrDelete( (FBSTRING*)&LN$1 );
		goto label$1151;
	}
	label$1155:;
	label$1154:;
	int64 SAW_ROWS$1;
	SAW_ROWS$1 = 0ll;
	label$1157:;
	int32 vr$19 = fb_FileEof( (int32)F$1 );
	if( (int64)vr$19 != 0ll ) goto label$1158;
	{
		fb_FileLineInput( (int32)F$1, (void*)&LN$1, -1ll, 0 );
		int64 vr$24 = fb_StrLen( (void*)&LN$1, -1ll );
		FBSTRING* vr$25 = fb_StrAllocTempDescZEx( (char*)"\x22", 1ll );
		int64 vr$27 = fb_StrInstr( 1ll, (FBSTRING*)&LN$1, (FBSTRING*)vr$25 );
		FBSTRING* vr$31 = fb_RIGHT( (FBSTRING*)&LN$1, (vr$24 - vr$27) + 1ll );
		fb_StrAssign( (void*)&LN$1, -1ll, (void*)vr$31, -1ll, 0 );
		FBSTRING* vr$33 = fb_StrAllocTempDescZEx( (char*)"\x22", 1ll );
		int64 vr$35 = fb_StrInstr( 2ll, (FBSTRING*)&LN$1, (FBSTRING*)vr$33 );
		FBSTRING* vr$37 = fb_LEFT( (FBSTRING*)&LN$1, vr$35 );
		fb_StrAssign( (void*)&LN$1, -1ll, (void*)vr$37, -1ll, 0 );
		int64 vr$40 = fb_StrLen( (void*)&LN$1, -1ll );
		if( vr$40 <= 0ll ) goto label$1160;
		{
			FBSTRING TMP$543$3;
			if( SAW_ROWS$1 == 0ll ) goto label$1162;
			{
				fb_StrConcatByref( (void*)CODE$1, -1ll, (void*)", _\x0A", 5ll, 0 );
			}
			label$1162:;
			label$1161:;
			__builtin_memset( &TMP$543$3, 0, 24ll );
			FBSTRING* vr$44 = fb_StrConcat( &TMP$543$3, (void*)"\x09@", 3ll, (void*)&LN$1, -1ll );
			fb_StrConcatByref( (void*)CODE$1, -1ll, (void*)vr$44, -1ll, 0 );
			SAW_ROWS$1 = -1ll;
		}
		label$1160:;
		label$1159:;
	}
	goto label$1157;
	label$1158:;
	int32 vr$46 = fb_FileClose( (int32)F$1 );
	if( (int64)vr$46 == 0ll ) goto label$1163;
	void* vr$48 = fb_ErrorThrowAt( 3407, (char*)"/root/FreeBASIC-1.10.3/src/compiler/fbc.bas", (void*)0ull, (void*)0ull );
	goto *vr$48;
	label$1163:;
	if( SAW_ROWS$1 != 0ll ) goto label$1165;
	{
		fb_StrDelete( (FBSTRING*)&LN$1 );
		goto label$1151;
	}
	label$1165:;
	label$1164:;
	fb_StrConcatByref( (void*)CODE$1, -1ll, (void*)" _ \x0A", 5ll, 0 );
	fb_StrConcatByref( (void*)CODE$1, -1ll, (void*)"}\x0A\x0A", 4ll, 0 );
	fb_StrConcatByref( (void*)CODE$1, -1ll, (void*)"extern as zstring ptr ptr fb_program_icon alias \x22" "fb_program_icon\x22\x0A", 67ll, 0 );
	fb_StrConcatByref( (void*)CODE$1, -1ll, (void*)"dim shared as zstring ptr ptr fb_program_icon = @fb_program_icon_data(0)\x0A", 74ll, 0 );
	fb$result$1 = -1ll;
	fb_StrDelete( (FBSTRING*)&LN$1 );
	label$1151:;
	return fb$result$1;
}

static int64 HCOMPILEXPM( void )
{
	int64 TMP$554$1;
	int64 fb$result$1;
	__builtin_memset( &fb$result$1, 0, 8ll );
	label$1166:;
	FBSTRING XPMFILE$1;
	__builtin_memset( &XPMFILE$1, 0, 24ll );
	FBSTRING CODE$1;
	__builtin_memset( &CODE$1, 0, 24ll );
	int64 FO$1;
	int64 vr$4 = fb_StrLen( (void*)((uint8*)&FBC$ + 272ll), -1ll );
	if( vr$4 != 0ll ) goto label$1169;
	{
		fb$result$1 = -1ll;
		fb_StrDelete( (FBSTRING*)&CODE$1 );
		fb_StrDelete( (FBSTRING*)&XPMFILE$1 );
		goto label$1167;
	}
	label$1169:;
	label$1168:;
	fb_StrAssign( (void*)&XPMFILE$1, -1ll, (void*)((uint8*)&FBC$ + 272ll), -1ll, 0 );
	int64 vr$9 = fb_StrLen( *(void**)((uint8*)&FBC$ + 296ll), -1ll );
	if( vr$9 <= 0ll ) goto label$1171;
	{
		FBSTRING* vr$10 = HSTRIPEXT( *(FBSTRING**)((uint8*)&FBC$ + 296ll) );
		fb_StrAssign( (void*)((uint8*)&FBC$ + 272ll), -1ll, (void*)vr$10, -1ll, 0 );
	}
	label$1171:;
	label$1170:;
	fb_StrConcatByref( (void*)((uint8*)&FBC$ + 272ll), -1ll, (void*)".bas", 5ll, 0 );
	if( *(int64*)((uint8*)&FBC$ + 112ll) == 0ll ) goto label$1173;
	{
		FBSTRING TMP$552$2;
		FBSTRING TMP$553$2;
		FBSTRING* vr$13 = fb_StrAllocTempDescZEx( (char*)"parsing xpm: ", 13ll );
		fb_PrintString( 0, (FBSTRING*)vr$13, 2 );
		__builtin_memset( &TMP$552$2, 0, 24ll );
		FBSTRING* vr$18 = fb_StrConcat( &TMP$552$2, (void*)&XPMFILE$1, -1ll, (void*)" -o ", 5ll );
		__builtin_memset( &TMP$553$2, 0, 24ll );
		FBSTRING* vr$21 = fb_StrConcat( &TMP$553$2, (void*)vr$18, -1ll, (void*)((uint8*)&FBC$ + 272ll), -1ll );
		fb_PrintString( 0, (FBSTRING*)vr$21, 1 );
	}
	label$1173:;
	label$1172:;
	int64 vr$24 = HPARSEXPM( &XPMFILE$1, &CODE$1 );
	if( vr$24 != 0ll ) goto label$1175;
	{
		fb_StrDelete( (FBSTRING*)&CODE$1 );
		fb_StrDelete( (FBSTRING*)&XPMFILE$1 );
		goto label$1167;
	}
	label$1175:;
	label$1174:;
	int32 vr$27 = fb_FileFree(  );
	FO$1 = (int64)vr$27;
	int32 vr$31 = fb_FileOpen( (FBSTRING*)((uint8*)&FBC$ + 272ll), 3u, 0u, 0u, (int32)FO$1, 0 );
	if( (int64)vr$31 == 0ll ) goto label$1177;
	{
		fb_StrDelete( (FBSTRING*)&CODE$1 );
		fb_StrDelete( (FBSTRING*)&XPMFILE$1 );
		goto label$1167;
	}
	label$1177:;
	label$1176:;
	TMP$554$1 = FO$1;
	fb_PrintString( (int32)TMP$554$1, (FBSTRING*)&CODE$1, 0 );
	int32 vr$38 = fb_FileClose( (int32)FO$1 );
	if( (int64)vr$38 == 0ll ) goto label$1178;
	void* vr$40 = fb_ErrorThrowAt( 3463, (char*)"/root/FreeBASIC-1.10.3/src/compiler/fbc.bas", (void*)0ull, (void*)0ull );
	goto *vr$40;
	label$1178:;
	if( *(int64*)((uint8*)&FBC$ + 80ll) != 0ll ) goto label$1180;
	{
		FBCADDTEMP( (FBSTRING*)((uint8*)&FBC$ + 272ll) );
	}
	label$1180:;
	label$1179:;
	HCOMPILEBAS( (struct $9FBCIOFILE*)((uint8*)&FBC$ + 272ll), 0ll, 0ll, -1ll );
	fb$result$1 = -1ll;
	fb_StrDelete( (FBSTRING*)&CODE$1 );
	fb_StrDelete( (FBSTRING*)&XPMFILE$1 );
	label$1167:;
	return fb$result$1;
}

static int64 HCOMPILESTAGE2MODULE( struct $9FBCIOFILE* MODULE$1 )
{
	int64 fb$result$1;
	__builtin_memset( &fb$result$1, 0, 8ll );
	label$1181:;
	FBSTRING LN$1;
	__builtin_memset( &LN$1, 0, 24ll );
	FBSTRING ASMFILE$1;
	__builtin_memset( &ASMFILE$1, 0, 24ll );
	FBSTRING* vr$3 = HGETASMNAME( MODULE$1, 2ll );
	fb_StrAssign( (void*)&ASMFILE$1, -1ll, (void*)vr$3, -1ll, 0 );
	int64 vr$6 = FBGETOPTION( 3ll );
	if( (~(*(int64*)((uint8*)&FBC$ + 96ll)) & ((int64)-(vr$6 != 12ll) | ~(*(int64*)((uint8*)&FBC$ + 104ll)))) == 0ll ) goto label$1184;
	{
		FBCADDTEMP( &ASMFILE$1 );
	}
	label$1184:;
	label$1183:;
	{
		int64 TMP$555$2;
		int64 vr$12 = FBGETOPTION( 2ll );
		TMP$555$2 = vr$12;
		if( TMP$555$2 != 1ll ) goto label$1186;
		label$1187:;
		{
			boolean ISM64TARGET$3;
			ISM64TARGET$3 = (boolean)0ll;
			int64 BITS$3;
			__builtin_memset( &BITS$3, 0, 8ll );
			{
				int64 TMP$556$4;
				int64 vr$14 = FBGETCPUFAMILY(  );
				TMP$556$4 = vr$14;
				if( TMP$556$4 == 0ll ) goto label$1190;
				label$1191:;
				if( TMP$556$4 == 2ll ) goto label$1190;
				label$1192:;
				if( TMP$556$4 != 4ll ) goto label$1189;
				label$1190:;
				{
					fb_StrConcatAssign( (void*)&LN$1, -1ll, (void*)"-m32 ", 6ll, 0 );
				}
				goto label$1188;
				label$1189:;
				if( TMP$556$4 == 1ll ) goto label$1194;
				label$1195:;
				if( TMP$556$4 == 5ll ) goto label$1194;
				label$1196:;
				if( TMP$556$4 == 6ll ) goto label$1194;
				label$1197:;
				if( TMP$556$4 == 7ll ) goto label$1194;
				label$1198:;
				if( TMP$556$4 == 8ll ) goto label$1194;
				label$1199:;
				if( TMP$556$4 != 9ll ) goto label$1193;
				label$1194:;
				{
					fb_StrConcatAssign( (void*)&LN$1, -1ll, (void*)"-m64 ", 6ll, 0 );
					ISM64TARGET$3 = (boolean)1ll;
				}
				label$1193:;
				label$1188:;
			}
			int64 vr$17 = FBGETOPTION( 3ll );
			if( vr$17 == 12ll ) goto label$1201;
			{
				int64 TMP$559$4;
				int64 TMP$560$4;
				int64 vr$18 = FBGETCPUFAMILY(  );
				if( vr$18 == 4ll ) goto label$1202;
				int64 vr$19 = FBGETCPUFAMILY(  );
				TMP$559$4 = (int64)-(vr$19 == 5ll);
				goto label$1515;
				label$1202:;
				TMP$559$4 = -1ll;
				label$1515:;
				if( TMP$559$4 != 0ll ) goto label$1203;
				int64 vr$21 = FBGETCPUFAMILY(  );
				TMP$560$4 = (int64)-(vr$21 == 6ll);
				goto label$1516;
				label$1203:;
				TMP$560$4 = -1ll;
				label$1516:;
				if( TMP$560$4 == 0ll ) goto label$1205;
				{
					if( *(int64*)((uint8*)&FBC$ + 56ll) == 0ll ) goto label$1207;
					{
						fb_StrConcatAssign( (void*)&LN$1, -1ll, (void*)"-mcpu=native ", 14ll, 0 );
					}
					goto label$1206;
					label$1207:;
					{
						FBSTRING TMP$563$6;
						FBSTRING TMP$564$6;
						FBSTRING TMP$565$6;
						char* vr$24 = FBGETGCCARCH(  );
						__builtin_memset( &TMP$563$6, 0, 24ll );
						FBSTRING* vr$27 = fb_StrConcat( &TMP$563$6, (void*)"-mcpu=", 7ll, (void*)vr$24, 0ll );
						__builtin_memset( &TMP$564$6, 0, 24ll );
						FBSTRING* vr$30 = fb_StrConcat( &TMP$564$6, (void*)vr$27, -1ll, (void*)" ", 2ll );
						__builtin_memset( &TMP$565$6, 0, 24ll );
						FBSTRING* vr$34 = fb_StrConcat( &TMP$565$6, (void*)&LN$1, -1ll, (void*)vr$30, -1ll );
						fb_StrAssign( (void*)&LN$1, -1ll, (void*)vr$34, -1ll, 0 );
					}
					label$1206:;
				}
				goto label$1204;
				label$1205:;
				{
					if( *(int64*)((uint8*)&FBC$ + 56ll) == 0ll ) goto label$1209;
					{
						fb_StrConcatAssign( (void*)&LN$1, -1ll, (void*)"-march=native ", 15ll, 0 );
					}
					goto label$1208;
					label$1209:;
					{
						FBSTRING TMP$568$6;
						FBSTRING TMP$569$6;
						FBSTRING TMP$570$6;
						char* vr$37 = FBGETGCCARCH(  );
						__builtin_memset( &TMP$568$6, 0, 24ll );
						FBSTRING* vr$40 = fb_StrConcat( &TMP$568$6, (void*)"-march=", 8ll, (void*)vr$37, 0ll );
						__builtin_memset( &TMP$569$6, 0, 24ll );
						FBSTRING* vr$43 = fb_StrConcat( &TMP$569$6, (void*)vr$40, -1ll, (void*)" ", 2ll );
						__builtin_memset( &TMP$570$6, 0, 24ll );
						FBSTRING* vr$47 = fb_StrConcat( &TMP$570$6, (void*)&LN$1, -1ll, (void*)vr$43, -1ll );
						fb_StrAssign( (void*)&LN$1, -1ll, (void*)vr$47, -1ll, 0 );
					}
					label$1208:;
				}
				label$1204:;
			}
			label$1201:;
			label$1200:;
			int64 vr$49 = FBGETOPTION( 37ll );
			if( vr$49 == 0ll ) goto label$1211;
			{
				fb_StrConcatAssign( (void*)&LN$1, -1ll, (void*)"-fPIC ", 7ll, 0 );
			}
			label$1211:;
			label$1210:;
			int64 vr$51 = FBGETOPTION( 3ll );
			if( vr$51 == 12ll ) goto label$1213;
			{
				fb_StrConcatAssign( (void*)&LN$1, -1ll, (void*)"-S -nostdlib -nostdinc -Wall ", 30ll, 0 );
				fb_StrConcatAssign( (void*)&LN$1, -1ll, (void*)"-Wno-unused ", 13ll, 0 );
			}
			goto label$1212;
			label$1213:;
			{
				fb_StrConcatAssign( (void*)&LN$1, -1ll, (void*)"-c -nostdlib -nostdinc -Wall -Wno-unused-label -Wno-unused-function -Wno-unused-variable ", 90ll, 0 );
				fb_StrConcatAssign( (void*)&LN$1, -1ll, (void*)"-Wno-warn-absolute-paths ", 26ll, 0 );
			}
			label$1212:;
			fb_StrConcatAssign( (void*)&LN$1, -1ll, (void*)"-Wno-main ", 11ll, 0 );
			fb_StrConcatAssign( (void*)&LN$1, -1ll, (void*)"-Werror-implicit-function-declaration ", 39ll, 0 );
			fb_StrConcatAssign( (void*)&LN$1, -1ll, (void*)"-O", 3ll, 0 );
			int64 vr$59 = FBGETOPTION( 8ll );
			FBSTRING* vr$60 = fb_LongintToStr( vr$59 );
			fb_StrConcatAssign( (void*)&LN$1, -1ll, (void*)vr$60, -1ll, 0 );
			fb_StrConcatAssign( (void*)&LN$1, -1ll, (void*)" ", 2ll, 0 );
			fb_StrConcatAssign( (void*)&LN$1, -1ll, (void*)"-fno-strict-aliasing ", 22ll, 0 );
			{
				uint64 TMP$582$4;
				int64 vr$64 = FBGETOPTION( 3ll );
				TMP$582$4 = (uint64)vr$64;
				goto label$1215;
				label$1216:;
				{
					fb_StrConcatAssign( (void*)&LN$1, -1ll, (void*)"-fno-ident ", 12ll, 0 );
				}
				goto label$1214;
				label$1217:;
				{
					fb_StrConcatAssign( (void*)&LN$1, -1ll, (void*)"-fPIC -fPIE ", 13ll, 0 );
				}
				goto label$1214;
				label$1215:;
				static const void* tmp$846[10ll] = {
					&&label$1216,
					&&label$1214,
					&&label$1214,
					&&label$1214,
					&&label$1214,
					&&label$1214,
					&&label$1214,
					&&label$1214,
					&&label$1214,
					&&label$1217,
				};
				if( TMP$582$4 > 9ull ) goto label$1214;
				goto *tmp$846[TMP$582$4 - 0ull];
				label$1214:;
			}
			int64 vr$67 = FBGETOPTION( 3ll );
			if( vr$67 == 12ll ) goto label$1219;
			{
				fb_StrConcatAssign( (void*)&LN$1, -1ll, (void*)"-frounding-math ", 17ll, 0 );
			}
			label$1219:;
			label$1218:;
			fb_StrConcatAssign( (void*)&LN$1, -1ll, (void*)"-fno-math-errno ", 17ll, 0 );
			fb_StrConcatAssign( (void*)&LN$1, -1ll, (void*)"-fwrapv ", 9ll, 0 );
			fb_StrConcatAssign( (void*)&LN$1, -1ll, (void*)"-fno-exceptions -fno-asynchronous-unwind-tables ", 49ll, 0 );
			int64 vr$74 = FBGETOPTION( 21ll );
			if( ((int64)-((int64)-ISM64TARGET$3 == -1ll) | (int64)-(vr$74 == -1ll)) == 0ll ) goto label$1221;
			{
				fb_StrConcatAssign( (void*)&LN$1, -1ll, (void*)"-funwind-tables ", 17ll, 0 );
			}
			goto label$1220;
			label$1221:;
			{
				fb_StrConcatAssign( (void*)&LN$1, -1ll, (void*)"-fno-unwind-tables ", 20ll, 0 );
			}
			label$1220:;
			fb_StrConcatAssign( (void*)&LN$1, -1ll, (void*)"-Wno-format ", 13ll, 0 );
			int64 vr$80 = FBGETOPTION( 14ll );
			if( vr$80 == 0ll ) goto label$1223;
			{
				fb_StrConcatAssign( (void*)&LN$1, -1ll, (void*)"-g ", 4ll, 0 );
			}
			label$1223:;
			label$1222:;
			int64 vr$82 = FBGETOPTION( 5ll );
			if( vr$82 != 1ll ) goto label$1225;
			{
				fb_StrConcatAssign( (void*)&LN$1, -1ll, (void*)"-mfpmath=sse -msse2 ", 21ll, 0 );
			}
			label$1225:;
			label$1224:;
			{
				int64 TMP$594$4;
				int64 vr$84 = FBGETCPUFAMILY(  );
				TMP$594$4 = vr$84;
				if( TMP$594$4 == 0ll ) goto label$1228;
				label$1229:;
				if( TMP$594$4 != 1ll ) goto label$1227;
				label$1228:;
				{
					int64 vr$85 = FBGETOPTION( 9ll );
					if( vr$85 != 0ll ) goto label$1231;
					{
						fb_StrConcatAssign( (void*)&LN$1, -1ll, (void*)"-masm=intel ", 13ll, 0 );
					}
					label$1231:;
					label$1230:;
				}
				label$1227:;
				label$1226:;
			}
		}
		goto label$1185;
		label$1186:;
		if( TMP$555$2 != 2ll ) goto label$1232;
		label$1233:;
		{
			{
				int64 TMP$596$4;
				int64 vr$87 = FBGETCPUFAMILY(  );
				TMP$596$4 = vr$87;
				if( TMP$596$4 != 0ll ) goto label$1235;
				label$1236:;
				{
					fb_StrConcatAssign( (void*)&LN$1, -1ll, (void*)"-march=x86 ", 12ll, 0 );
				}
				goto label$1234;
				label$1235:;
				if( TMP$596$4 != 1ll ) goto label$1237;
				label$1238:;
				{
					fb_StrConcatAssign( (void*)&LN$1, -1ll, (void*)"-march=x86-64 ", 15ll, 0 );
				}
				goto label$1234;
				label$1237:;
				if( TMP$596$4 != 2ll ) goto label$1239;
				label$1240:;
				{
					fb_StrConcatAssign( (void*)&LN$1, -1ll, (void*)"-march=arm ", 12ll, 0 );
				}
				goto label$1234;
				label$1239:;
				if( TMP$596$4 != 3ll ) goto label$1241;
				label$1242:;
				{
					fb_StrConcatAssign( (void*)&LN$1, -1ll, (void*)"-march=armv8-a ", 16ll, 0 );
				}
				goto label$1234;
				label$1241:;
				if( TMP$596$4 != 4ll ) goto label$1243;
				label$1244:;
				{
					fb_StrConcatAssign( (void*)&LN$1, -1ll, (void*)"-mcpu=powerpc ", 15ll, 0 );
				}
				goto label$1234;
				label$1243:;
				if( TMP$596$4 != 5ll ) goto label$1245;
				label$1246:;
				{
					fb_StrConcatAssign( (void*)&LN$1, -1ll, (void*)"-mcpu=powerpc64 ", 17ll, 0 );
				}
				goto label$1234;
				label$1245:;
				if( TMP$596$4 != 6ll ) goto label$1247;
				label$1248:;
				{
					fb_StrConcatAssign( (void*)&LN$1, -1ll, (void*)"-mcpu=powerpc64le ", 19ll, 0 );
				}
				label$1247:;
				label$1234:;
			}
			int64 vr$95 = FBGETOPTION( 37ll );
			if( vr$95 == 0ll ) goto label$1250;
			{
				fb_StrConcatAssign( (void*)&LN$1, -1ll, (void*)"-relocation-model=pic ", 23ll, 0 );
			}
			label$1250:;
			label$1249:;
			fb_StrConcatAssign( (void*)&LN$1, -1ll, (void*)"-O", 3ll, 0 );
			int64 vr$98 = FBGETOPTION( 8ll );
			FBSTRING* vr$99 = fb_LongintToStr( vr$98 );
			fb_StrConcatAssign( (void*)&LN$1, -1ll, (void*)vr$99, -1ll, 0 );
			fb_StrConcatAssign( (void*)&LN$1, -1ll, (void*)" ", 2ll, 0 );
			{
				int64 TMP$605$4;
				int64 vr$102 = FBGETCPUFAMILY(  );
				TMP$605$4 = vr$102;
				if( TMP$605$4 == 0ll ) goto label$1253;
				label$1254:;
				if( TMP$605$4 != 1ll ) goto label$1252;
				label$1253:;
				{
					int64 vr$103 = FBGETOPTION( 9ll );
					if( vr$103 != 0ll ) goto label$1256;
					{
						fb_StrConcatAssign( (void*)&LN$1, -1ll, (void*)"--x86-asm-syntax=intel ", 24ll, 0 );
					}
					label$1256:;
					label$1255:;
				}
				label$1252:;
				label$1251:;
			}
		}
		label$1232:;
		label$1185:;
	}
	fb_StrConcatAssign( (void*)&LN$1, -1ll, (void*)"\x22", 2ll, 0 );
	FBSTRING* vr$106 = HGETASMNAME( MODULE$1, 1ll );
	fb_StrConcatAssign( (void*)&LN$1, -1ll, (void*)vr$106, -1ll, 0 );
	fb_StrConcatAssign( (void*)&LN$1, -1ll, (void*)"\x22 ", 3ll, 0 );
	fb_StrConcatAssign( (void*)&LN$1, -1ll, (void*)"-o \x22", 5ll, 0 );
	fb_StrConcatAssign( (void*)&LN$1, -1ll, (void*)&ASMFILE$1, -1ll, 0 );
	fb_StrConcatAssign( (void*)&LN$1, -1ll, (void*)"\x22", 2ll, 0 );
	fb_StrConcatAssign( (void*)&LN$1, -1ll, (void*)((uint8*)&FBC$ + 2072ll), -1ll, 0 );
	{
		int64 TMP$609$2;
		int64 vr$115 = FBGETOPTION( 2ll );
		TMP$609$2 = vr$115;
		if( TMP$609$2 != 1ll ) goto label$1258;
		label$1259:;
		{
			$7FBCTOOL GCC$3;
			GCC$3 = 3ll;
			int64 vr$116 = FBGETOPTION( 3ll );
			if( vr$116 != 12ll ) goto label$1261;
			{
				GCC$3 = 14ll;
			}
			label$1261:;
			label$1260:;
			int64 vr$118 = FBCRUNBIN( (char*)"compiling C", GCC$3, &LN$1 );
			fb$result$1 = vr$118;
		}
		goto label$1257;
		label$1258:;
		if( TMP$609$2 != 2ll ) goto label$1262;
		label$1263:;
		{
			int64 vr$120 = FBCRUNBIN( (char*)"compiling LLVM IR", 4ll, &LN$1 );
			fb$result$1 = vr$120;
		}
		label$1262:;
		label$1257:;
	}
	fb_StrDelete( (FBSTRING*)&ASMFILE$1 );
	fb_StrDelete( (FBSTRING*)&LN$1 );
	label$1182:;
	return fb$result$1;
}

static void HCOMPILESTAGE2MODULES( void )
{
	label$1264:;
	struct $9FBCIOFILE* MODULE$1;
	void* vr$1 = LISTGETHEAD( (struct $5TLIST*)((uint8*)&FBC$ + 144ll) );
	MODULE$1 = (struct $9FBCIOFILE*)vr$1;
	label$1266:;
	if( MODULE$1 == (struct $9FBCIOFILE*)0ull ) goto label$1267;
	{
		int64 vr$2 = HCOMPILESTAGE2MODULE( MODULE$1 );
		if( vr$2 != 0ll ) goto label$1269;
		{
			FBCEND( 1ll );
		}
		label$1269:;
		label$1268:;
		void* vr$3 = LISTGETNEXT( (void*)MODULE$1 );
		MODULE$1 = (struct $9FBCIOFILE*)vr$3;
	}
	goto label$1266;
	label$1267:;
	label$1265:;
}

static int64 HASSEMBLEMODULE( struct $9FBCIOFILE* MODULE$1 )
{
	FBSTRING TMP$616$1;
	FBSTRING TMP$617$1;
	FBSTRING TMP$618$1;
	int64 fb$result$1;
	__builtin_memset( &fb$result$1, 0, 8ll );
	label$1270:;
	FBSTRING LN$1;
	__builtin_memset( &LN$1, 0, 24ll );
	{
		int64 TMP$612$2;
		int64 vr$2 = FBGETCPUFAMILY(  );
		TMP$612$2 = vr$2;
		if( TMP$612$2 != 0ll ) goto label$1273;
		label$1274:;
		{
			int64 vr$3 = FBGETOPTION( 3ll );
			if( vr$3 != 10ll ) goto label$1276;
			{
				fb_StrConcatAssign( (void*)&LN$1, -1ll, (void*)"-arch i386 ", 12ll, 0 );
			}
			goto label$1275;
			label$1276:;
			{
				fb_StrConcatAssign( (void*)&LN$1, -1ll, (void*)"--32 ", 6ll, 0 );
			}
			label$1275:;
		}
		goto label$1272;
		label$1273:;
		if( TMP$612$2 != 1ll ) goto label$1277;
		label$1278:;
		{
			int64 vr$6 = FBGETOPTION( 3ll );
			if( vr$6 != 10ll ) goto label$1280;
			{
				fb_StrConcatAssign( (void*)&LN$1, -1ll, (void*)"-arch x86_64 ", 14ll, 0 );
			}
			goto label$1279;
			label$1280:;
			{
				fb_StrConcatAssign( (void*)&LN$1, -1ll, (void*)"--64 ", 6ll, 0 );
			}
			label$1279:;
		}
		label$1277:;
		label$1272:;
	}
	int64 vr$9 = FBGETOPTION( 14ll );
	if( vr$9 != 0ll ) goto label$1282;
	{
		int64 vr$10 = FBGETOPTION( 3ll );
		if( vr$10 == 10ll ) goto label$1284;
		{
			int64 vr$11 = FBGETOPTION( 3ll );
			if( vr$11 == 12ll ) goto label$1286;
			{
				fb_StrConcatAssign( (void*)&LN$1, -1ll, (void*)"--strip-local-absolute ", 24ll, 0 );
			}
			label$1286:;
			label$1285:;
		}
		label$1284:;
		label$1283:;
	}
	label$1282:;
	label$1281:;
	int64 vr$13 = FBGETOPTION( 3ll );
	if( vr$13 != 12ll ) goto label$1288;
	{
		fb$result$1 = -1ll;
		fb_StrDelete( (FBSTRING*)&LN$1 );
		goto label$1271;
	}
	label$1288:;
	label$1287:;
	fb_StrConcatAssign( (void*)&LN$1, -1ll, (void*)"\x22", 2ll, 0 );
	FBSTRING* vr$16 = HGETASMNAME( MODULE$1, 2ll );
	fb_StrConcatAssign( (void*)&LN$1, -1ll, (void*)vr$16, -1ll, 0 );
	fb_StrConcatAssign( (void*)&LN$1, -1ll, (void*)"\x22 ", 3ll, 0 );
	__builtin_memset( &TMP$616$1, 0, 24ll );
	FBSTRING* vr$22 = fb_StrConcat( &TMP$616$1, (void*)"-o \x22", 5ll, *(void**)((uint8*)MODULE$1 + 24ll), -1ll );
	__builtin_memset( &TMP$617$1, 0, 24ll );
	FBSTRING* vr$25 = fb_StrConcat( &TMP$617$1, (void*)vr$22, -1ll, (void*)"\x22", 2ll );
	__builtin_memset( &TMP$618$1, 0, 24ll );
	FBSTRING* vr$29 = fb_StrConcat( &TMP$618$1, (void*)&LN$1, -1ll, (void*)vr$25, -1ll );
	fb_StrAssign( (void*)&LN$1, -1ll, (void*)vr$29, -1ll, 0 );
	fb_StrConcatAssign( (void*)&LN$1, -1ll, (void*)((uint8*)&FBC$ + 2024ll), -1ll, 0 );
	$7FBCTOOL GAS$1;
	GAS$1 = 0ll;
	int64 vr$33 = FBGETOPTION( 3ll );
	if( vr$33 != 12ll ) goto label$1290;
	{
		GAS$1 = 11ll;
	}
	label$1290:;
	label$1289:;
	int64 vr$35 = FBCRUNBIN( (char*)"assembling", GAS$1, &LN$1 );
	if( vr$35 != 0ll ) goto label$1292;
	{
		fb_StrDelete( (FBSTRING*)&LN$1 );
		goto label$1271;
	}
	label$1292:;
	label$1291:;
	if( *(int64*)((uint8*)&FBC$ + 104ll) != 0ll ) goto label$1294;
	{
		FBCADDTEMP( *(FBSTRING**)((uint8*)MODULE$1 + 24ll) );
	}
	label$1294:;
	label$1293:;
	fb$result$1 = -1ll;
	fb_StrDelete( (FBSTRING*)&LN$1 );
	label$1271:;
	return fb$result$1;
}

static void HASSEMBLEMODULES( void )
{
	label$1295:;
	struct $9FBCIOFILE* MODULE$1;
	void* vr$1 = LISTGETHEAD( (struct $5TLIST*)((uint8*)&FBC$ + 144ll) );
	MODULE$1 = (struct $9FBCIOFILE*)vr$1;
	label$1297:;
	if( MODULE$1 == (struct $9FBCIOFILE*)0ull ) goto label$1298;
	{
		int64 vr$2 = HASSEMBLEMODULE( MODULE$1 );
		if( vr$2 != 0ll ) goto label$1300;
		{
			FBCEND( 1ll );
		}
		label$1300:;
		label$1299:;
		void* vr$3 = LISTGETNEXT( (void*)MODULE$1 );
		MODULE$1 = (struct $9FBCIOFILE*)vr$3;
	}
	goto label$1297;
	label$1298:;
	label$1296:;
}

static int64 HASSEMBLERC( struct $9FBCIOFILE* RC$1 )
{
	FBSTRING TMP$621$1;
	FBSTRING TMP$622$1;
	FBSTRING TMP$623$1;
	FBSTRING TMP$624$1;
	FBSTRING TMP$625$1;
	FBSTRING TMP$626$1;
	int64 fb$result$1;
	__builtin_memset( &fb$result$1, 0, 8ll );
	label$1301:;
	FBSTRING LN$1;
	fb_StrInit( (void*)&LN$1, -1ll, (void*)"--output-format=coff --include-dir=.", 37ll, 0 );
	__builtin_memset( &TMP$621$1, 0, 24ll );
	FBSTRING* vr$6 = fb_StrConcat( &TMP$621$1, (void*)" \x22", 3ll, (void*)RC$1, -1ll );
	__builtin_memset( &TMP$622$1, 0, 24ll );
	FBSTRING* vr$9 = fb_StrConcat( &TMP$622$1, (void*)vr$6, -1ll, (void*)"\x22", 2ll );
	__builtin_memset( &TMP$623$1, 0, 24ll );
	FBSTRING* vr$13 = fb_StrConcat( &TMP$623$1, (void*)&LN$1, -1ll, (void*)vr$9, -1ll );
	fb_StrAssign( (void*)&LN$1, -1ll, (void*)vr$13, -1ll, 0 );
	__builtin_memset( &TMP$624$1, 0, 24ll );
	FBSTRING* vr$18 = fb_StrConcat( &TMP$624$1, (void*)" \x22", 3ll, *(void**)((uint8*)RC$1 + 24ll), -1ll );
	__builtin_memset( &TMP$625$1, 0, 24ll );
	FBSTRING* vr$21 = fb_StrConcat( &TMP$625$1, (void*)vr$18, -1ll, (void*)"\x22", 2ll );
	__builtin_memset( &TMP$626$1, 0, 24ll );
	FBSTRING* vr$25 = fb_StrConcat( &TMP$626$1, (void*)&LN$1, -1ll, (void*)vr$21, -1ll );
	fb_StrAssign( (void*)&LN$1, -1ll, (void*)vr$25, -1ll, 0 );
	int64 vr$28 = FBCRUNBIN( (char*)"compiling rc", 8ll, &LN$1 );
	fb$result$1 = vr$28;
	if( *(int64*)((uint8*)&FBC$ + 104ll) != 0ll ) goto label$1304;
	{
		FBCADDTEMP( *(FBSTRING**)((uint8*)RC$1 + 24ll) );
	}
	label$1304:;
	label$1303:;
	fb_StrDelete( (FBSTRING*)&LN$1 );
	label$1302:;
	return fb$result$1;
}

static void HASSEMBLERCS( void )
{
	label$1305:;
	struct $9FBCIOFILE* RC$1;
	void* vr$1 = LISTGETHEAD( (struct $5TLIST*)((uint8*)&FBC$ + 208ll) );
	RC$1 = (struct $9FBCIOFILE*)vr$1;
	label$1307:;
	if( RC$1 == (struct $9FBCIOFILE*)0ull ) goto label$1308;
	{
		int64 vr$2 = HASSEMBLERC( RC$1 );
		if( vr$2 != 0ll ) goto label$1310;
		{
			FBCEND( 1ll );
		}
		label$1310:;
		label$1309:;
		void* vr$3 = LISTGETNEXT( (void*)RC$1 );
		RC$1 = (struct $9FBCIOFILE*)vr$3;
	}
	goto label$1307;
	label$1308:;
	label$1306:;
}

static void HASSEMBLEXPM( void )
{
	label$1311:;
	int64 vr$1 = fb_StrLen( (void*)((uint8*)&FBC$ + 272ll), -1ll );
	if( vr$1 <= 0ll ) goto label$1314;
	{
		int64 vr$2 = FBGETOPTION( 2ll );
		if( vr$2 == 0ll ) goto label$1316;
		{
			HCOMPILESTAGE2MODULE( (struct $9FBCIOFILE*)((uint8*)&FBC$ + 272ll) );
		}
		label$1316:;
		label$1315:;
		int64 vr$5 = HASSEMBLEMODULE( (struct $9FBCIOFILE*)((uint8*)&FBC$ + 272ll) );
		if( vr$5 != 0ll ) goto label$1318;
		{
			FBCEND( 1ll );
		}
		label$1318:;
		label$1317:;
	}
	label$1314:;
	label$1313:;
	label$1312:;
}

static int64 HCOMPILEFBCTINF( void )
{
	int64 fb$result$1;
	__builtin_memset( &fb$result$1, 0, 8ll );
	label$1319:;
	struct $9FBCIOFILE FBCTINF$1;
	_ZN9FBCIOFILEC1Ev( &FBCTINF$1 );
	FBSTRING OBJFILE$1;
	__builtin_memset( &OBJFILE$1, 0, 24ll );
	int64 FO$1;
	fb_StrAssign( (void*)&FBCTINF$1, -1ll, (void*)"__fb_ct.inf.bas", 16ll, 0 );
	fb_StrAssign( (void*)&OBJFILE$1, -1ll, (void*)"__fb_ct.inf", 12ll, 0 );
	*(FBSTRING**)((uint8*)&FBCTINF$1 + 24ll) = &OBJFILE$1;
	if( *(int64*)((uint8*)&FBC$ + 112ll) == 0ll ) goto label$1322;
	{
		FBSTRING* vr$6 = fb_StrAllocTempDescZEx( (char*)"creating: ", 10ll );
		fb_PrintString( 0, (FBSTRING*)vr$6, 2 );
		fb_PrintString( 0, (FBSTRING*)&FBCTINF$1, 1 );
	}
	label$1322:;
	label$1321:;
	int32 vr$8 = fb_FileFree(  );
	FO$1 = (int64)vr$8;
	int32 vr$12 = fb_FileOpen( (FBSTRING*)&FBCTINF$1, 3u, 0u, 0u, (int32)FO$1, 0 );
	if( (int64)vr$12 == 0ll ) goto label$1324;
	{
		fb_StrDelete( (FBSTRING*)&OBJFILE$1 );
		_ZN9FBCIOFILED1Ev( &FBCTINF$1 );
		goto label$1320;
	}
	label$1324:;
	label$1323:;
	int32 vr$17 = fb_FileClose( (int32)FO$1 );
	if( (int64)vr$17 == 0ll ) goto label$1325;
	void* vr$19 = fb_ErrorThrowAt( 3882, (char*)"/root/FreeBASIC-1.10.3/src/compiler/fbc.bas", (void*)0ull, (void*)0ull );
	goto *vr$19;
	label$1325:;
	if( *(int64*)((uint8*)&FBC$ + 80ll) != 0ll ) goto label$1327;
	{
		FBCADDTEMP( (FBSTRING*)&FBCTINF$1 );
	}
	label$1327:;
	label$1326:;
	HCOMPILEBAS( &FBCTINF$1, 0ll, -1ll, -1ll );
	int64 vr$22 = FBGETOPTION( 2ll );
	if( vr$22 == 0ll ) goto label$1329;
	{
		HCOMPILESTAGE2MODULE( &FBCTINF$1 );
	}
	label$1329:;
	label$1328:;
	int64 vr$25 = HASSEMBLEMODULE( &FBCTINF$1 );
	fb$result$1 = vr$25;
	fb_StrDelete( (FBSTRING*)&OBJFILE$1 );
	_ZN9FBCIOFILED1Ev( &FBCTINF$1 );
	label$1320:;
	return fb$result$1;
}

static int64 HARCHIVEFILES( void )
{
	FBSTRING TMP$631$1;
	FBSTRING TMP$632$1;
	int64 fb$result$1;
	__builtin_memset( &fb$result$1, 0, 8ll );
	label$1330:;
	HSETOUTNAME(  );
	FBSTRING* vr$2 = fb_StrAllocTempDescZ( (char*)((uint8*)&FBC$ + 968ll) );
	int32 vr$3 = fb_FileKill( (FBSTRING*)vr$2 );
	if( (int64)vr$3 == 0ll ) goto label$1333;
	{
	}
	label$1333:;
	label$1332:;
	FBSTRING LN$1;
	__builtin_memset( &TMP$631$1, 0, 24ll );
	FBSTRING* vr$8 = fb_StrConcat( &TMP$631$1, (void*)"-rsc \x22", 7ll, (void*)((uint8*)&FBC$ + 968ll), 261ll );
	__builtin_memset( &TMP$632$1, 0, 24ll );
	FBSTRING* vr$11 = fb_StrConcat( &TMP$632$1, (void*)vr$8, -1ll, (void*)"\x22 ", 3ll );
	fb_StrInit( (void*)&LN$1, -1ll, (void*)vr$11, -1ll, 0 );
	int64 vr$13 = FBGETOPTION( 39ll );
	int64 vr$14 = FBISCROSSCOMP(  );
	if( (vr$13 & ~vr$14) == 0ll ) goto label$1335;
	{
		FBSTRING TMP$636$2;
		int64 vr$17 = HCOMPILEFBCTINF(  );
		if( vr$17 == 0ll ) goto label$1337;
		{
			fb_StrConcatAssign( (void*)&LN$1, -1ll, (void*)"\x22__fb_ct.inf\x22 ", 15ll, 0 );
		}
		label$1337:;
		label$1336:;
		__builtin_memset( &TMP$636$2, 0, 24ll );
		fb_StrAssign( (void*)&TMP$636$2, -1ll, (void*)"__fb_ct.inf", 12ll, 0 );
		FBCADDTEMP( &TMP$636$2 );
		fb_StrDelete( (FBSTRING*)&TMP$636$2 );
	}
	label$1335:;
	label$1334:;
	FBSTRING* OBJFILE$1;
	void* vr$24 = LISTGETHEAD( (struct $5TLIST*)((uint8*)&FBC$ + 400ll) );
	OBJFILE$1 = (FBSTRING*)vr$24;
	label$1338:;
	if( OBJFILE$1 == (FBSTRING*)0ull ) goto label$1339;
	{
		FBSTRING TMP$637$2;
		FBSTRING TMP$638$2;
		FBSTRING TMP$639$2;
		__builtin_memset( &TMP$637$2, 0, 24ll );
		FBSTRING* vr$27 = fb_StrConcat( &TMP$637$2, (void*)"\x22", 2ll, (void*)OBJFILE$1, -1ll );
		__builtin_memset( &TMP$638$2, 0, 24ll );
		FBSTRING* vr$30 = fb_StrConcat( &TMP$638$2, (void*)vr$27, -1ll, (void*)"\x22 ", 3ll );
		__builtin_memset( &TMP$639$2, 0, 24ll );
		FBSTRING* vr$34 = fb_StrConcat( &TMP$639$2, (void*)&LN$1, -1ll, (void*)vr$30, -1ll );
		fb_StrAssign( (void*)&LN$1, -1ll, (void*)vr$34, -1ll, 0 );
		void* vr$36 = LISTGETNEXT( (void*)OBJFILE$1 );
		OBJFILE$1 = (FBSTRING*)vr$36;
	}
	goto label$1338;
	label$1339:;
	$7FBCTOOL AR$1;
	AR$1 = 1ll;
	int64 vr$37 = FBGETOPTION( 3ll );
	if( vr$37 != 12ll ) goto label$1341;
	{
		AR$1 = 12ll;
	}
	label$1341:;
	label$1340:;
	int64 vr$39 = FBCRUNBIN( (char*)"archiving", AR$1, &LN$1 );
	fb$result$1 = vr$39;
	fb_StrDelete( (FBSTRING*)&LN$1 );
	label$1331:;
	return fb$result$1;
}

static void HSETDEFAULTLIBPATHS( void )
{
	FBSTRING TMP$641$1;
	FBSTRING TMP$642$1;
	label$1342:;
	__builtin_memset( &TMP$641$1, 0, 24ll );
	fb_StrAssign( (void*)&TMP$641$1, -1ll, (void*)((uint8*)&FBC$ + 3295ll), 261ll, 0 );
	FBCADDDEFLIBPATH( &TMP$641$1 );
	fb_StrDelete( (FBSTRING*)&TMP$641$1 );
	__builtin_memset( &TMP$642$1, 0, 24ll );
	fb_StrAssign( (void*)&TMP$642$1, -1ll, (void*)".", 2ll, 0 );
	FBCADDDEFLIBPATH( &TMP$642$1 );
	fb_StrDelete( (FBSTRING*)&TMP$642$1 );
	int64 vr$9 = FBGETOPTION( 3ll );
	if( vr$9 == 12ll ) goto label$1345;
	{
		FBCADDLIBPATHFOR( (char*)"libgcc.a" );
		{
			int64 TMP$644$3;
			int64 vr$10 = FBGETOPTION( 3ll );
			TMP$644$3 = vr$10;
			if( TMP$644$3 != 6ll ) goto label$1347;
			label$1348:;
			{
				FBCADDLIBPATHFOR( (char*)"libc++.so" );
			}
			goto label$1346;
			label$1347:;
			if( TMP$644$3 != 4ll ) goto label$1349;
			label$1350:;
			{
				FBCADDLIBPATHFOR( (char*)"libstdcx.a" );
			}
			goto label$1346;
			label$1349:;
			{
				FBCADDLIBPATHFOR( (char*)"libstdc++.so" );
			}
			label$1351:;
			label$1346:;
		}
	}
	label$1345:;
	label$1344:;
	{
		int64 TMP$648$2;
		int64 vr$11 = FBGETOPTION( 3ll );
		TMP$648$2 = vr$11;
		if( TMP$648$2 != 4ll ) goto label$1353;
		label$1354:;
		{
			FBCADDLIBPATHFOR( (char*)"libm.a" );
		}
		goto label$1352;
		label$1353:;
		if( TMP$648$2 != 0ll ) goto label$1355;
		label$1356:;
		{
			FBCADDLIBPATHFOR( (char*)"libmingw32.a" );
		}
		goto label$1352;
		label$1355:;
		if( TMP$648$2 != 3ll ) goto label$1357;
		label$1358:;
		{
			FBCADDLIBPATHFOR( (char*)"libroot.so" );
			FBCADDLIBPATHFOR( (char*)"libbsd.so" );
			FBCADDLIBPATHFOR( (char*)"libcursesw.so.6" );
			FBCADDLIBPATHFOR( (char*)"start_dyn.o" );
			FBCADDLIBPATHFOR( (char*)"init_term_dyn.o" );
		}
		goto label$1352;
		label$1357:;
		if( TMP$648$2 != 9ll ) goto label$1359;
		label$1360:;
		{
			FBCADDLIBPATHFOR( (char*)"libX11.a" );
			FBCADDLIBPATHFOR( (char*)"libm.a" );
		}
		goto label$1352;
		label$1359:;
		if( TMP$648$2 != 11ll ) goto label$1361;
		label$1362:;
		{
			FBCADDLIBPATHFOR( (char*)"libX11.so" );
			FBCADDLIBPATHFOR( (char*)"libXext.so" );
			FBCADDLIBPATHFOR( (char*)"libXpm.so" );
			FBCADDLIBPATHFOR( (char*)"libXrandr.so" );
			FBCADDLIBPATHFOR( (char*)"libXrender.so" );
			FBCADDLIBPATHFOR( (char*)"libXrender.so" );
			FBCADDLIBPATHFOR( (char*)"libncurses.so" );
		}
		goto label$1352;
		label$1361:;
		if( TMP$648$2 != 7ll ) goto label$1363;
		label$1364:;
		{
			FBCADDLIBPATHFOR( (char*)"libX11.so" );
			FBCADDLIBPATHFOR( (char*)"libXext.so" );
			FBCADDLIBPATHFOR( (char*)"libXpm.so" );
			FBCADDLIBPATHFOR( (char*)"libXrandr.so" );
			FBCADDLIBPATHFOR( (char*)"libXrender.so" );
			FBCADDLIBPATHFOR( (char*)"libXrender.so" );
			FBCADDLIBPATHFOR( (char*)"libncurses.so" );
		}
		label$1363:;
		label$1352:;
	}
	label$1343:;
}

static void FBCADDDEFLIB( char* LIBNAME$1 )
{
	FBSTRING TMP$661$1;
	label$1365:;
	__builtin_memset( &TMP$661$1, 0, 24ll );
	fb_StrAssign( (void*)&TMP$661$1, -1ll, (void*)LIBNAME$1, 0ll, 0 );
	STRSETADD( (struct $7TSTRSET*)((uint8*)&FBC$ + 792ll), &TMP$661$1, -1ll );
	fb_StrDelete( (FBSTRING*)&TMP$661$1 );
	label$1366:;
}

static FBSTRING* HGETFBLIBNAMESUFFIX( void )
{
	FBSTRING fb$result$1;
	__builtin_memset( &fb$result$1, 0, 24ll );
	label$1367:;
	FBSTRING S$1;
	__builtin_memset( &S$1, 0, 24ll );
	int64 TARGET$1;
	int64 vr$2 = FBGETOPTION( 3ll );
	TARGET$1 = vr$2;
	int64 vr$3 = FBGETOPTION( 35ll );
	if( vr$3 == 0ll ) goto label$1370;
	{
		fb_StrConcatAssign( (void*)&S$1, -1ll, (void*)"mt", 3ll, 0 );
	}
	label$1370:;
	label$1369:;
	if( TARGET$1 != 9ll ) goto label$1372;
	{
		fb_StrConcatAssign( (void*)&S$1, -1ll, (void*)"pic", 4ll, 0 );
	}
	goto label$1371;
	label$1372:;
	int64 vr$6 = FBGETOPTION( 37ll );
	if( vr$6 == 0ll ) goto label$1373;
	{
		fb_StrConcatAssign( (void*)&S$1, -1ll, (void*)"pic", 4ll, 0 );
	}
	label$1373:;
	label$1371:;
	fb_StrAssign( (void*)&fb$result$1, -1ll, (void*)&S$1, -1ll, 0 );
	fb_StrDelete( (FBSTRING*)&S$1 );
	label$1368:;
	FBSTRING* vr$12 = fb_StrAllocTempResult( (FBSTRING*)&fb$result$1 );
	return vr$12;
}

static void HADDDEFAULTLIBS( void )
{
	label$1374:;
	int64 vr$0 = FBGETOPTION( 32ll );
	if( vr$0 == 0ll ) goto label$1377;
	{
		FBSTRING TMP$662$2;
		FBSTRING TMP$663$2;
		__builtin_memset( &TMP$663$2, 0, 24ll );
		FBSTRING* vr$2 = HGETFBLIBNAMESUFFIX(  );
		__builtin_memset( &TMP$662$2, 0, 24ll );
		FBSTRING* vr$5 = fb_StrConcat( &TMP$662$2, (void*)"fbrt", 5ll, (void*)vr$2, -1ll );
		fb_StrAssign( (void*)&TMP$663$2, -1ll, (void*)vr$5, -1ll, 0 );
		FBCADDDEFLIB( (char*)*(char**)&TMP$663$2 );
		fb_StrDelete( (FBSTRING*)&TMP$663$2 );
	}
	goto label$1376;
	label$1377:;
	{
		FBSTRING TMP$664$2;
		FBSTRING TMP$665$2;
		__builtin_memset( &TMP$665$2, 0, 24ll );
		FBSTRING* vr$9 = HGETFBLIBNAMESUFFIX(  );
		__builtin_memset( &TMP$664$2, 0, 24ll );
		FBSTRING* vr$12 = fb_StrConcat( &TMP$664$2, (void*)"fb", 3ll, (void*)vr$9, -1ll );
		fb_StrAssign( (void*)&TMP$665$2, -1ll, (void*)vr$12, -1ll, 0 );
		FBCADDDEFLIB( (char*)*(char**)&TMP$665$2 );
		fb_StrDelete( (FBSTRING*)&TMP$665$2 );
	}
	label$1376:;
	int64 vr$15 = FBGETOPTION( 36ll );
	if( vr$15 == 0ll ) goto label$1379;
	{
		FBSTRING TMP$666$2;
		FBSTRING TMP$667$2;
		__builtin_memset( &TMP$667$2, 0, 24ll );
		FBSTRING* vr$17 = HGETFBLIBNAMESUFFIX(  );
		__builtin_memset( &TMP$666$2, 0, 24ll );
		FBSTRING* vr$20 = fb_StrConcat( &TMP$666$2, (void*)"fbgfx", 6ll, (void*)vr$17, -1ll );
		fb_StrAssign( (void*)&TMP$667$2, -1ll, (void*)vr$20, -1ll, 0 );
		FBCADDDEFLIB( (char*)*(char**)&TMP$667$2 );
		fb_StrDelete( (FBSTRING*)&TMP$667$2 );
		{
			uint64 TMP$668$3;
			int64 vr$23 = FBGETOPTION( 3ll );
			TMP$668$3 = (uint64)vr$23;
			goto label$1381;
			label$1382:;
			{
				FBCADDDEFLIB( (char*)"gdi32" );
				FBCADDDEFLIB( (char*)"winmm" );
			}
			goto label$1380;
			label$1383:;
			{
				FBCADDDEFLIB( (char*)"X11" );
				FBCADDDEFLIB( (char*)"Xext" );
				FBCADDDEFLIB( (char*)"Xpm" );
				FBCADDDEFLIB( (char*)"Xrandr" );
				FBCADDDEFLIB( (char*)"Xrender" );
			}
			goto label$1380;
			label$1381:;
			static const void* tmp$847[12ll] = {
				&&label$1382,
				&&label$1382,
				&&label$1383,
				&&label$1380,
				&&label$1380,
				&&label$1380,
				&&label$1383,
				&&label$1383,
				&&label$1383,
				&&label$1383,
				&&label$1383,
				&&label$1383,
			};
			if( TMP$668$3 > 11ull ) goto label$1380;
			goto *tmp$847[TMP$668$3 - 0ull];
			label$1380:;
		}
	}
	label$1379:;
	label$1378:;
	{
		uint64 TMP$676$2;
		int64 vr$24 = FBGETOPTION( 3ll );
		TMP$676$2 = (uint64)vr$24;
		goto label$1385;
		label$1386:;
		{
			FBCADDDEFLIB( (char*)"gcc" );
			FBCADDDEFLIB( (char*)"cygwin" );
			FBCADDDEFLIB( (char*)"kernel32" );
			FBCADDDEFLIB( (char*)"user32" );
			int64 vr$25 = FBGETOPTION( 23ll );
			if( vr$25 == 0ll ) goto label$1388;
			{
				FBCADDDEFLIB( (char*)"gmon" );
			}
			label$1388:;
			label$1387:;
		}
		goto label$1384;
		label$1389:;
		{
			FBCADDDEFLIB( (char*)"gcc" );
			FBCADDDEFLIB( (char*)"System" );
			FBCADDDEFLIB( (char*)"pthread" );
			FBCADDDEFLIB( (char*)"ncurses" );
		}
		goto label$1384;
		label$1390:;
		{
			FBCADDDEFLIB( (char*)"gcc" );
			FBCADDDEFLIB( (char*)"c" );
			FBCADDDEFLIB( (char*)"m" );
			int64 vr$26 = FBGETOPTION( 35ll );
			if( vr$26 == 0ll ) goto label$1392;
			{
				FBCADDDEFLIB( (char*)"pthread" );
				FBCADDDEFLIB( (char*)"socket" );
			}
			label$1392:;
			label$1391:;
		}
		goto label$1384;
		label$1393:;
		{
			FBCADDDEFLIB( (char*)"gcc" );
			FBCADDDEFLIB( (char*)"pthread" );
			FBCADDDEFLIB( (char*)"c" );
			FBCADDDEFLIB( (char*)"m" );
			FBCADDDEFLIB( (char*)"ncurses" );
		}
		goto label$1384;
		label$1394:;
		{
			FBSTRING TMP$685$3;
			__builtin_memset( &TMP$685$3, 0, 24ll );
			fb_StrAssign( (void*)&TMP$685$3, -1ll, (void*)"/usr/local/lib/", 16ll, 0 );
			FBCADDDEFLIBPATH( &TMP$685$3 );
			fb_StrDelete( (FBSTRING*)&TMP$685$3 );
			FBCADDDEFLIB( (char*)"gcc" );
			FBCADDDEFLIB( (char*)"pthread" );
			FBCADDDEFLIB( (char*)"c" );
			FBCADDDEFLIB( (char*)"m" );
			FBCADDDEFLIB( (char*)"ncurses" );
		}
		goto label$1384;
		label$1395:;
		{
			FBCADDDEFLIB( (char*)"gcc" );
			FBCADDDEFLIB( (char*)"pthread" );
			FBCADDDEFLIB( (char*)"c" );
			FBCADDDEFLIB( (char*)"m" );
			FBCADDDEFLIB( (char*)"ncurses" );
		}
		goto label$1384;
		label$1396:;
		{
			FBSTRING* vr$31 = FBCFINDLIBFILE( (char*)"libtinfo.a" );
			int64 vr$32 = fb_StrLen( (void*)vr$31, -1ll );
			FBSTRING* vr$34 = FBCFINDLIBFILE( (char*)"libtinfo.so" );
			int64 vr$35 = fb_StrLen( (void*)vr$34, -1ll );
			if( ((int64)-(vr$32 > 0ll) | (int64)-(vr$35 > 0ll)) == 0ll ) goto label$1398;
			{
				FBCADDDEFLIB( (char*)"tinfo" );
			}
			goto label$1397;
			label$1398:;
			{
				FBCADDDEFLIB( (char*)"ncurses" );
			}
			label$1397:;
			FBCADDDEFLIB( (char*)"m" );
			FBCADDDEFLIB( (char*)"dl" );
			FBCADDDEFLIB( (char*)"pthread" );
			FBCADDDEFLIB( (char*)"gcc" );
			FBSTRING* vr$38 = FBCFINDLIBFILE( (char*)"libgcc_eh.a" );
			int64 vr$39 = fb_StrLen( (void*)vr$38, -1ll );
			FBSTRING* vr$41 = FBCFINDLIBFILE( (char*)"libgcc_eh.so" );
			int64 vr$42 = fb_StrLen( (void*)vr$41, -1ll );
			if( ((int64)-(vr$39 > 0ll) | (int64)-(vr$42 > 0ll)) == 0ll ) goto label$1400;
			{
				FBCADDDEFLIB( (char*)"gcc_eh" );
			}
			label$1400:;
			label$1399:;
			FBCADDDEFLIB( (char*)"c" );
		}
		goto label$1384;
		label$1401:;
		{
			FBCADDDEFLIB( (char*)"root" );
			FBCADDDEFLIB( (char*)"bsd" );
			FBCADDDEFLIB( (char*)"network" );
			FBCADDDEFLIB( (char*)"ncursesw" );
			FBCADDDEFLIB( (char*)"be" );
			FBCADDDEFLIB( (char*)"game" );
			FBCADDDEFLIB( (char*)"stdc++" );
			FBCADDDEFLIB( (char*)"gcc_s" );
		}
		goto label$1384;
		label$1402:;
		{
			FBSTRING TMP$702$3;
			__builtin_memset( &TMP$702$3, 0, 24ll );
			fb_StrAssign( (void*)&TMP$702$3, -1ll, (void*)"/usr/pkg/lib/", 14ll, 0 );
			FBCADDDEFLIBPATH( &TMP$702$3 );
			fb_StrDelete( (FBSTRING*)&TMP$702$3 );
			FBCADDDEFLIB( (char*)"gcc" );
			FBCADDDEFLIB( (char*)"pthread" );
			FBCADDDEFLIB( (char*)"c" );
			FBCADDDEFLIB( (char*)"m" );
			FBCADDDEFLIB( (char*)"ncurses" );
		}
		goto label$1384;
		label$1403:;
		{
			FBCADDDEFLIB( (char*)"gcc" );
			FBCADDDEFLIB( (char*)"pthread" );
			FBCADDDEFLIB( (char*)"c" );
			FBCADDDEFLIB( (char*)"m" );
			FBCADDDEFLIB( (char*)"ncurses" );
		}
		goto label$1384;
		label$1404:;
		{
			FBCADDDEFLIB( (char*)"gcc" );
			FBCADDDEFLIB( (char*)"msvcrt" );
			FBCADDDEFLIB( (char*)"kernel32" );
			FBCADDDEFLIB( (char*)"user32" );
			FBCADDDEFLIB( (char*)"mingw32" );
			FBCADDDEFLIB( (char*)"mingwex" );
			FBCADDDEFLIB( (char*)"moldname" );
			FBSTRING* vr$49 = FBCFINDLIBFILE( (char*)"libgcc_eh.a" );
			int64 vr$50 = fb_StrLen( (void*)vr$49, -1ll );
			FBSTRING* vr$52 = FBCFINDLIBFILE( (char*)"libgcc_eh.dll.a" );
			int64 vr$53 = fb_StrLen( (void*)vr$52, -1ll );
			if( ((int64)-(vr$50 > 0ll) | (int64)-(vr$53 > 0ll)) == 0ll ) goto label$1406;
			{
				FBCADDDEFLIB( (char*)"gcc_eh" );
			}
			label$1406:;
			label$1405:;
			int64 vr$56 = FBGETOPTION( 23ll );
			if( vr$56 == 0ll ) goto label$1408;
			{
				FBCADDDEFLIB( (char*)"gmon" );
			}
			label$1408:;
			label$1407:;
		}
		goto label$1384;
		label$1409:;
		{
			FBCADDDEFLIB( (char*)"gcc" );
			FBCADDDEFLIB( (char*)"fbgfx" );
			FBCADDDEFLIB( (char*)"openxdk" );
			FBCADDDEFLIB( (char*)"hal" );
			FBCADDDEFLIB( (char*)"c" );
			FBCADDDEFLIB( (char*)"usb" );
			FBCADDDEFLIB( (char*)"xboxkrnl" );
			FBCADDDEFLIB( (char*)"m" );
			int64 vr$57 = FBGETOPTION( 23ll );
			if( vr$57 == 0ll ) goto label$1411;
			{
				FBCADDDEFLIB( (char*)"gmon" );
			}
			label$1411:;
			label$1410:;
		}
		goto label$1384;
		label$1385:;
		static const void* tmp$848[12ll] = {
			&&label$1404,
			&&label$1386,
			&&label$1396,
			&&label$1401,
			&&label$1390,
			&&label$1409,
			&&label$1393,
			&&label$1394,
			&&label$1395,
			&&label$1403,
			&&label$1389,
			&&label$1402,
		};
		if( TMP$676$2 > 11ull ) goto label$1384;
		goto *tmp$848[TMP$676$2 - 0ull];
		label$1384:;
	}
	label$1375:;
}

static void HEXCLUDELIBSFROMLINK( void )
{
	label$1412:;
	struct $11TSTRSETITEM* I$1;
	void* vr$1 = LISTGETHEAD( (struct $5TLIST*)((uint8*)&FBC$ + 704ll) );
	I$1 = (struct $11TSTRSETITEM*)vr$1;
	label$1414:;
	if( I$1 == (struct $11TSTRSETITEM*)0ull ) goto label$1415;
	{
		STRSETDEL( (struct $7TSTRSET*)((uint8*)&FBC$ + 792ll), (FBSTRING*)I$1 );
		void* vr$5 = LISTGETNEXT( (void*)I$1 );
		I$1 = (struct $11TSTRSETITEM*)vr$5;
	}
	goto label$1414;
	label$1415:;
	label$1413:;
}

static void HPRINTOPTIONS( int64 VERBOSE$1 )
{
	label$1416:;
	FBSTRING* vr$0 = fb_StrAllocTempDescZEx( (char*)"usage: fbc [options] <input files>", 34ll );
	fb_PrintString( 0, (FBSTRING*)vr$0, 1 );
	FBSTRING* vr$1 = fb_StrAllocTempDescZEx( (char*)"input files:", 12ll );
	fb_PrintString( 0, (FBSTRING*)vr$1, 1 );
	FBSTRING* vr$2 = fb_StrAllocTempDescZEx( (char*)"  *.a = static library, *.o = object file, *.bas = source", 57ll );
	fb_PrintString( 0, (FBSTRING*)vr$2, 1 );
	FBSTRING* vr$3 = fb_StrAllocTempDescZEx( (char*)"  *.rc = resource script, *.res = compiled resource (win32)", 59ll );
	fb_PrintString( 0, (FBSTRING*)vr$3, 1 );
	FBSTRING* vr$4 = fb_StrAllocTempDescZEx( (char*)"  *.xpm = icon resource (*nix/*bsd)", 35ll );
	fb_PrintString( 0, (FBSTRING*)vr$4, 1 );
	FBSTRING* vr$5 = fb_StrAllocTempDescZEx( (char*)"options:", 8ll );
	fb_PrintString( 0, (FBSTRING*)vr$5, 1 );
	FBSTRING* vr$6 = fb_StrAllocTempDescZEx( (char*)"  @<file>          Read more command line arguments from a file", 63ll );
	fb_PrintString( 0, (FBSTRING*)vr$6, 1 );
	FBSTRING* vr$7 = fb_StrAllocTempDescZEx( (char*)"  -a <file>        Treat file as .o/.a input file", 49ll );
	fb_PrintString( 0, (FBSTRING*)vr$7, 1 );
	FBSTRING* vr$8 = fb_StrAllocTempDescZEx( (char*)"  -arch <type>     Set target architecture (default: 686)", 57ll );
	fb_PrintString( 0, (FBSTRING*)vr$8, 1 );
	FBSTRING* vr$9 = fb_StrAllocTempDescZEx( (char*)"  -asm att|intel   Set asm format (-gen gcc|llvm, x86 or x86_64 only)", 69ll );
	fb_PrintString( 0, (FBSTRING*)vr$9, 1 );
	FBSTRING* vr$10 = fb_StrAllocTempDescZEx( (char*)"  -b <file>        Treat file as .bas input file", 48ll );
	fb_PrintString( 0, (FBSTRING*)vr$10, 1 );
	if( VERBOSE$1 == 0ll ) goto label$1419;
	{
		FBSTRING* vr$11 = fb_StrAllocTempDescZEx( (char*)"  -buildprefix <name>  specify prefix on tool names (as, ar, ld)", 64ll );
		fb_PrintString( 0, (FBSTRING*)vr$11, 1 );
	}
	label$1419:;
	label$1418:;
	FBSTRING* vr$12 = fb_StrAllocTempDescZEx( (char*)"  -c               Compile only, do not link", 44ll );
	fb_PrintString( 0, (FBSTRING*)vr$12, 1 );
	FBSTRING* vr$13 = fb_StrAllocTempDescZEx( (char*)"  -C               Preserve temporary .o files", 46ll );
	fb_PrintString( 0, (FBSTRING*)vr$13, 1 );
	FBSTRING* vr$14 = fb_StrAllocTempDescZEx( (char*)"  -d <name>[=<val>]  Add a global #define", 41ll );
	fb_PrintString( 0, (FBSTRING*)vr$14, 1 );
	FBSTRING* vr$15 = fb_StrAllocTempDescZEx( (char*)"  -dll             Same as -dylib", 33ll );
	fb_PrintString( 0, (FBSTRING*)vr$15, 1 );
	FBSTRING* vr$16 = fb_StrAllocTempDescZEx( (char*)"  -dylib           Create a DLL (win32) or shared library (*nix/*BSD)", 69ll );
	fb_PrintString( 0, (FBSTRING*)vr$16, 1 );
	FBSTRING* vr$17 = fb_StrAllocTempDescZEx( (char*)"  -e               Enable runtime error checking", 48ll );
	fb_PrintString( 0, (FBSTRING*)vr$17, 1 );
	if( VERBOSE$1 == 0ll ) goto label$1421;
	{
		FBSTRING* vr$18 = fb_StrAllocTempDescZEx( (char*)"  -earray          Enable array bounds checking", 47ll );
		fb_PrintString( 0, (FBSTRING*)vr$18, 1 );
		FBSTRING* vr$19 = fb_StrAllocTempDescZEx( (char*)"  -eassert         Enable assert() and assertwarn() checking", 60ll );
		fb_PrintString( 0, (FBSTRING*)vr$19, 1 );
		FBSTRING* vr$20 = fb_StrAllocTempDescZEx( (char*)"  -edebug          Enable __FB_DEBUG__", 38ll );
		fb_PrintString( 0, (FBSTRING*)vr$20, 1 );
		FBSTRING* vr$21 = fb_StrAllocTempDescZEx( (char*)"  -edebuginfo      Add debug info", 33ll );
		fb_PrintString( 0, (FBSTRING*)vr$21, 1 );
		FBSTRING* vr$22 = fb_StrAllocTempDescZEx( (char*)"  -elocation       Enable error location reporting", 50ll );
		fb_PrintString( 0, (FBSTRING*)vr$22, 1 );
		FBSTRING* vr$23 = fb_StrAllocTempDescZEx( (char*)"  -enullptr        Enable null-pointer checking", 47ll );
		fb_PrintString( 0, (FBSTRING*)vr$23, 1 );
		FBSTRING* vr$24 = fb_StrAllocTempDescZEx( (char*)"  -eunwind         Enable call stack unwind information", 55ll );
		fb_PrintString( 0, (FBSTRING*)vr$24, 1 );
		FBSTRING* vr$25 = fb_StrAllocTempDescZEx( (char*)"  -entry           Change the entry point of the program from main()", 68ll );
		fb_PrintString( 0, (FBSTRING*)vr$25, 1 );
	}
	label$1421:;
	label$1420:;
	FBSTRING* vr$26 = fb_StrAllocTempDescZEx( (char*)"  -ex              -e plus RESUME support", 41ll );
	fb_PrintString( 0, (FBSTRING*)vr$26, 1 );
	FBSTRING* vr$27 = fb_StrAllocTempDescZEx( (char*)"  -exx             -ex plus array bounds/null-pointer checking", 62ll );
	fb_PrintString( 0, (FBSTRING*)vr$27, 1 );
	FBSTRING* vr$28 = fb_StrAllocTempDescZEx( (char*)"  -export          Export symbols for dynamic linkage", 53ll );
	fb_PrintString( 0, (FBSTRING*)vr$28, 1 );
	if( VERBOSE$1 == 0ll ) goto label$1423;
	{
		FBSTRING* vr$29 = fb_StrAllocTempDescZEx( (char*)"  -fbgfx           Link to the appropriate libfbgfx variant (normally automatic)", 80ll );
		fb_PrintString( 0, (FBSTRING*)vr$29, 1 );
	}
	label$1423:;
	label$1422:;
	FBSTRING* vr$30 = fb_StrAllocTempDescZEx( (char*)"  -forcelang <name>  Override #lang statements in source code", 61ll );
	fb_PrintString( 0, (FBSTRING*)vr$30, 1 );
	if( VERBOSE$1 == 0ll ) goto label$1425;
	{
		FBSTRING* vr$31 = fb_StrAllocTempDescZEx( (char*)"  -fpmode fast|precise  Select floating-point math accuracy/speed", 65ll );
		fb_PrintString( 0, (FBSTRING*)vr$31, 1 );
		FBSTRING* vr$32 = fb_StrAllocTempDescZEx( (char*)"  -fpu x87|sse     Set target FPU", 33ll );
		fb_PrintString( 0, (FBSTRING*)vr$32, 1 );
	}
	label$1425:;
	label$1424:;
	FBSTRING* vr$33 = fb_StrAllocTempDescZEx( (char*)"  -g               Add debug info, enable __FB_DEBUG__, and enable assert()", 75ll );
	fb_PrintString( 0, (FBSTRING*)vr$33, 1 );
	if( VERBOSE$1 == 0ll ) goto label$1427;
	{
		FBSTRING* vr$34 = fb_StrAllocTempDescZEx( (char*)"  -gen gas         Select GNU gas 32-bit assembler backend", 58ll );
		fb_PrintString( 0, (FBSTRING*)vr$34, 1 );
		FBSTRING* vr$35 = fb_StrAllocTempDescZEx( (char*)"  -gen gas64       Select GNU gas 64-bit assembler backend", 58ll );
		fb_PrintString( 0, (FBSTRING*)vr$35, 1 );
		FBSTRING* vr$36 = fb_StrAllocTempDescZEx( (char*)"  -gen gcc         Select GNU gcc C backend", 43ll );
		fb_PrintString( 0, (FBSTRING*)vr$36, 1 );
		FBSTRING* vr$37 = fb_StrAllocTempDescZEx( (char*)"  -gen llvm        Select LLVM backend", 38ll );
		fb_PrintString( 0, (FBSTRING*)vr$37, 1 );
	}
	goto label$1426;
	label$1427:;
	{
		FBSTRING* vr$38 = fb_StrAllocTempDescZEx( (char*)"  -gen gas|gas64|gcc|llvm  Select code generation backend", 57ll );
		fb_PrintString( 0, (FBSTRING*)vr$38, 1 );
	}
	label$1426:;
	FBSTRING* vr$39 = fb_StrAllocTempDescZEx( (char*)"  [-]-help         Show this help output; use '-help -v' to show verbose help", 77ll );
	fb_PrintString( 0, (FBSTRING*)vr$39, 1 );
	FBSTRING* vr$40 = fb_StrAllocTempDescZEx( (char*)"  -i <path>        Add an include file search path", 50ll );
	fb_PrintString( 0, (FBSTRING*)vr$40, 1 );
	FBSTRING* vr$41 = fb_StrAllocTempDescZEx( (char*)"  -include <file>  Pre-#include a file for each input .bas", 58ll );
	fb_PrintString( 0, (FBSTRING*)vr$41, 1 );
	FBSTRING* vr$42 = fb_StrAllocTempDescZEx( (char*)"  -l <name>        Link in a library", 36ll );
	fb_PrintString( 0, (FBSTRING*)vr$42, 1 );
	FBSTRING* vr$43 = fb_StrAllocTempDescZEx( (char*)"  -lang <name>     Select FB dialect: fb, deprecated, fblite, qb", 64ll );
	fb_PrintString( 0, (FBSTRING*)vr$43, 1 );
	FBSTRING* vr$44 = fb_StrAllocTempDescZEx( (char*)"  -lib             Create a static library", 42ll );
	fb_PrintString( 0, (FBSTRING*)vr$44, 1 );
	FBSTRING* vr$45 = fb_StrAllocTempDescZEx( (char*)"  -m <name>        Specify main module (default if not -c: first input .bas)", 76ll );
	fb_PrintString( 0, (FBSTRING*)vr$45, 1 );
	FBSTRING* vr$46 = fb_StrAllocTempDescZEx( (char*)"  -map <file>      Save linking map to file", 43ll );
	fb_PrintString( 0, (FBSTRING*)vr$46, 1 );
	FBSTRING* vr$47 = fb_StrAllocTempDescZEx( (char*)"  -maxerr <n>      Only show <n> errors", 39ll );
	fb_PrintString( 0, (FBSTRING*)vr$47, 1 );
	FBSTRING* vr$48 = fb_StrAllocTempDescZEx( (char*)"  -mt              Use thread-safe FB runtime", 45ll );
	fb_PrintString( 0, (FBSTRING*)vr$48, 1 );
	FBSTRING* vr$49 = fb_StrAllocTempDescZEx( (char*)"  -nodeflibs       Do not include the default libraries when linking", 68ll );
	fb_PrintString( 0, (FBSTRING*)vr$49, 1 );
	FBSTRING* vr$50 = fb_StrAllocTempDescZEx( (char*)"  -noerrline       Do not show source context in error messages", 63ll );
	fb_PrintString( 0, (FBSTRING*)vr$50, 1 );
	FBSTRING* vr$51 = fb_StrAllocTempDescZEx( (char*)"  -nolib <a,b,c>   Do not include the specified libraries when linking", 70ll );
	fb_PrintString( 0, (FBSTRING*)vr$51, 1 );
	FBSTRING* vr$52 = fb_StrAllocTempDescZEx( (char*)"  -noobjinfo       Do not read/write compile-time info from/to .o and .a files", 78ll );
	fb_PrintString( 0, (FBSTRING*)vr$52, 1 );
	FBSTRING* vr$53 = fb_StrAllocTempDescZEx( (char*)"  -nostrip         Do not strip symbol information from the output file", 71ll );
	fb_PrintString( 0, (FBSTRING*)vr$53, 1 );
	FBSTRING* vr$54 = fb_StrAllocTempDescZEx( (char*)"  -o <file>        Set .o (or -pp .bas) file name for prev/next input file", 74ll );
	fb_PrintString( 0, (FBSTRING*)vr$54, 1 );
	FBSTRING* vr$55 = fb_StrAllocTempDescZEx( (char*)"  -O <value>       Optimization level (default: 0)", 50ll );
	fb_PrintString( 0, (FBSTRING*)vr$55, 1 );
	FBSTRING* vr$56 = fb_StrAllocTempDescZEx( (char*)"  -p <path>        Add a library search path", 44ll );
	fb_PrintString( 0, (FBSTRING*)vr$56, 1 );
	FBSTRING* vr$57 = fb_StrAllocTempDescZEx( (char*)"  -pic             Generate position-independent code (non-x86 Unix shared libs)", 80ll );
	fb_PrintString( 0, (FBSTRING*)vr$57, 1 );
	FBSTRING* vr$58 = fb_StrAllocTempDescZEx( (char*)"  -pp              Write out preprocessed input file (.pp.bas) only", 67ll );
	fb_PrintString( 0, (FBSTRING*)vr$58, 1 );
	FBSTRING* vr$59 = fb_StrAllocTempDescZEx( (char*)"  -prefix <path>   Set the compiler prefix path", 47ll );
	fb_PrintString( 0, (FBSTRING*)vr$59, 1 );
	FBSTRING* vr$60 = fb_StrAllocTempDescZEx( (char*)"  -print host|target  Display host/target system name", 53ll );
	fb_PrintString( 0, (FBSTRING*)vr$60, 1 );
	FBSTRING* vr$61 = fb_StrAllocTempDescZEx( (char*)"  -print fblibdir  Display the compiler's lib/ path", 51ll );
	fb_PrintString( 0, (FBSTRING*)vr$61, 1 );
	FBSTRING* vr$62 = fb_StrAllocTempDescZEx( (char*)"  -print x         Display output binary/library file name (if known)", 69ll );
	fb_PrintString( 0, (FBSTRING*)vr$62, 1 );
	if( VERBOSE$1 == 0ll ) goto label$1429;
	{
		FBSTRING* vr$63 = fb_StrAllocTempDescZEx( (char*)"  -print sha-1     Display compiler's source code commit sha-1 (if known)", 73ll );
		fb_PrintString( 0, (FBSTRING*)vr$63, 1 );
	}
	label$1429:;
	label$1428:;
	FBSTRING* vr$64 = fb_StrAllocTempDescZEx( (char*)"  -profile         Enable function profiling", 44ll );
	fb_PrintString( 0, (FBSTRING*)vr$64, 1 );
	FBSTRING* vr$65 = fb_StrAllocTempDescZEx( (char*)"  -r               Write out .asm/.c/.ll (-gen gas/gcc/llvm) only", 65ll );
	fb_PrintString( 0, (FBSTRING*)vr$65, 1 );
	FBSTRING* vr$66 = fb_StrAllocTempDescZEx( (char*)"  -rr              Write out the final .asm only", 48ll );
	fb_PrintString( 0, (FBSTRING*)vr$66, 1 );
	FBSTRING* vr$67 = fb_StrAllocTempDescZEx( (char*)"  -R               Preserve temporary .asm/.c/.ll/.def files", 60ll );
	fb_PrintString( 0, (FBSTRING*)vr$67, 1 );
	FBSTRING* vr$68 = fb_StrAllocTempDescZEx( (char*)"  -RR              Preserve the final .asm file", 47ll );
	fb_PrintString( 0, (FBSTRING*)vr$68, 1 );
	FBSTRING* vr$69 = fb_StrAllocTempDescZEx( (char*)"  -s console|gui   Select win32 subsystem", 41ll );
	fb_PrintString( 0, (FBSTRING*)vr$69, 1 );
	FBSTRING* vr$70 = fb_StrAllocTempDescZEx( (char*)"  -showincludes    Display a tree of file names of #included files", 66ll );
	fb_PrintString( 0, (FBSTRING*)vr$70, 1 );
	FBSTRING* vr$71 = fb_StrAllocTempDescZEx( (char*)"  -static          Prefer static libraries over dynamic ones when linking", 73ll );
	fb_PrintString( 0, (FBSTRING*)vr$71, 1 );
	FBSTRING* vr$72 = fb_StrAllocTempDescZEx( (char*)"  -strip           Omit all symbol information from the output file", 67ll );
	fb_PrintString( 0, (FBSTRING*)vr$72, 1 );
	FBSTRING* vr$73 = fb_StrAllocTempDescZEx( (char*)"  -t <value>       Set .exe stack size in kbytes, default: 1024 (win32/dos)", 75ll );
	fb_PrintString( 0, (FBSTRING*)vr$73, 1 );
	if( VERBOSE$1 == 0ll ) goto label$1431;
	{
		FBSTRING* vr$74 = fb_StrAllocTempDescZEx( (char*)"  -target <name>   Set cross-compilation target", 47ll );
		fb_PrintString( 0, (FBSTRING*)vr$74, 1 );
	}
	goto label$1430;
	label$1431:;
	{
		FBSTRING* vr$75 = fb_StrAllocTempDescZEx( (char*)"  -target <name>   Set cross-compilation target", 47ll );
		fb_PrintString( 0, (FBSTRING*)vr$75, 1 );
	}
	label$1430:;
	FBSTRING* vr$76 = fb_StrAllocTempDescZEx( (char*)"  -title <name>    Set XBE display title (xbox)", 47ll );
	fb_PrintString( 0, (FBSTRING*)vr$76, 1 );
	FBSTRING* vr$77 = fb_StrAllocTempDescZEx( (char*)"  -v               Be verbose", 29ll );
	fb_PrintString( 0, (FBSTRING*)vr$77, 1 );
	FBSTRING* vr$78 = fb_StrAllocTempDescZEx( (char*)"  -vec <n>         Automatic vectorization level (default: 0)", 61ll );
	fb_PrintString( 0, (FBSTRING*)vr$78, 1 );
	FBSTRING* vr$79 = fb_StrAllocTempDescZEx( (char*)"  [-]-version      Show compiler version", 40ll );
	fb_PrintString( 0, (FBSTRING*)vr$79, 1 );
	FBSTRING* vr$80 = fb_StrAllocTempDescZEx( (char*)"  -w all|pedantic|<n>  Set min warning level: all, pedantic or a value", 70ll );
	fb_PrintString( 0, (FBSTRING*)vr$80, 1 );
	if( VERBOSE$1 == 0ll ) goto label$1433;
	{
		FBSTRING* vr$81 = fb_StrAllocTempDescZEx( (char*)"  -w all           Enable all warnings", 38ll );
		fb_PrintString( 0, (FBSTRING*)vr$81, 1 );
		FBSTRING* vr$82 = fb_StrAllocTempDescZEx( (char*)"  -w none          Disable all warnings", 39ll );
		fb_PrintString( 0, (FBSTRING*)vr$82, 1 );
		FBSTRING* vr$83 = fb_StrAllocTempDescZEx( (char*)"  -w param         Enable parameter warnings", 44ll );
		fb_PrintString( 0, (FBSTRING*)vr$83, 1 );
		FBSTRING* vr$84 = fb_StrAllocTempDescZEx( (char*)"  -w escape        Enable string escape sequence warnings", 57ll );
		fb_PrintString( 0, (FBSTRING*)vr$84, 1 );
		FBSTRING* vr$85 = fb_StrAllocTempDescZEx( (char*)"  -w next          Enable next statement warnings", 49ll );
		fb_PrintString( 0, (FBSTRING*)vr$85, 1 );
		FBSTRING* vr$86 = fb_StrAllocTempDescZEx( (char*)"  -w signedness    Enable type signedness warnings", 50ll );
		fb_PrintString( 0, (FBSTRING*)vr$86, 1 );
		FBSTRING* vr$87 = fb_StrAllocTempDescZEx( (char*)"  -w constness     Enable const type warnings", 45ll );
		fb_PrintString( 0, (FBSTRING*)vr$87, 1 );
		FBSTRING* vr$88 = fb_StrAllocTempDescZEx( (char*)"  -w suffix        Enable invalid suffix warnings", 49ll );
		fb_PrintString( 0, (FBSTRING*)vr$88, 1 );
		FBSTRING* vr$89 = fb_StrAllocTempDescZEx( (char*)"  -w error         Report warnings as errors", 44ll );
		fb_PrintString( 0, (FBSTRING*)vr$89, 1 );
		FBSTRING* vr$90 = fb_StrAllocTempDescZEx( (char*)"  -w upcast        Enable warning when up-casting discards initializers", 71ll );
		fb_PrintString( 0, (FBSTRING*)vr$90, 1 );
	}
	label$1433:;
	label$1432:;
	FBSTRING* vr$91 = fb_StrAllocTempDescZEx( (char*)"  -Wa <a,b,c>      Pass options to 'as'", 39ll );
	fb_PrintString( 0, (FBSTRING*)vr$91, 1 );
	FBSTRING* vr$92 = fb_StrAllocTempDescZEx( (char*)"  -Wc <a,b,c>      Pass options to 'gcc' (-gen gcc) or 'llc' (-gen llvm)", 72ll );
	fb_PrintString( 0, (FBSTRING*)vr$92, 1 );
	FBSTRING* vr$93 = fb_StrAllocTempDescZEx( (char*)"  -Wl <a,b,c>      Pass options to 'ld'", 39ll );
	fb_PrintString( 0, (FBSTRING*)vr$93, 1 );
	FBSTRING* vr$94 = fb_StrAllocTempDescZEx( (char*)"  -x <file>        Set output executable/library file name", 58ll );
	fb_PrintString( 0, (FBSTRING*)vr$94, 1 );
	if( VERBOSE$1 == 0ll ) goto label$1435;
	{
		FBSTRING* vr$95 = fb_StrAllocTempDescZEx( (char*)"  -z gosub-setjmp  Use setjmp/longjmp to implement GOSUB", 56ll );
		fb_PrintString( 0, (FBSTRING*)vr$95, 1 );
		FBSTRING* vr$96 = fb_StrAllocTempDescZEx( (char*)"  -z valist-as-ptr Use pointer expressions to implement CVA_*() macros", 70ll );
		fb_PrintString( 0, (FBSTRING*)vr$96, 1 );
		FBSTRING* vr$97 = fb_StrAllocTempDescZEx( (char*)"  -z no-thiscall   Don't use '__thiscall' calling convention", 60ll );
		fb_PrintString( 0, (FBSTRING*)vr$97, 1 );
		FBSTRING* vr$98 = fb_StrAllocTempDescZEx( (char*)"  -z no-fastcall   Don't use '__fastcall' calling convention", 60ll );
		fb_PrintString( 0, (FBSTRING*)vr$98, 1 );
		FBSTRING* vr$99 = fb_StrAllocTempDescZEx( (char*)"  -z fbrt          Link with 'fbrt' instead of 'fb' runtime library", 67ll );
		fb_PrintString( 0, (FBSTRING*)vr$99, 1 );
		FBSTRING* vr$100 = fb_StrAllocTempDescZEx( (char*)"  -z nocmdline     Disable #cmdline source directives", 53ll );
		fb_PrintString( 0, (FBSTRING*)vr$100, 1 );
		FBSTRING* vr$101 = fb_StrAllocTempDescZEx( (char*)"  -z retinflts     Enable returning some types in floating point registers", 74ll );
		fb_PrintString( 0, (FBSTRING*)vr$101, 1 );
	}
	label$1435:;
	label$1434:;
	label$1417:;
}

static void HPRINTVERSION( int64 VERBOSE$1 )
{
	FBSTRING TMP$821$1;
	FBSTRING TMP$822$1;
	FBSTRING TMP$823$1;
	FBSTRING TMP$824$1;
	label$1440:;
	FBSTRING CONFIG$1;
	__builtin_memset( &CONFIG$1, 0, 24ll );
	int64 vr$1 = FBGETHOSTBITS(  );
	FBSTRING* vr$2 = fb_LongintToStr( vr$1 );
	FBSTRING* vr$3 = FBGETHOSTID(  );
	__builtin_memset( &TMP$821$1, 0, 24ll );
	FBSTRING* vr$6 = fb_StrConcat( &TMP$821$1, (void*)"FreeBASIC Compiler - Version 1.10.3 (2026-04-07), built for ", 61ll, (void*)vr$3, -1ll );
	__builtin_memset( &TMP$822$1, 0, 24ll );
	FBSTRING* vr$9 = fb_StrConcat( &TMP$822$1, (void*)vr$6, -1ll, (void*)" (", 3ll );
	__builtin_memset( &TMP$823$1, 0, 24ll );
	FBSTRING* vr$12 = fb_StrConcat( &TMP$823$1, (void*)vr$9, -1ll, (void*)vr$2, -1ll );
	__builtin_memset( &TMP$824$1, 0, 24ll );
	FBSTRING* vr$15 = fb_StrConcat( &TMP$824$1, (void*)vr$12, -1ll, (void*)"bit)", 5ll );
	fb_PrintString( 0, (FBSTRING*)vr$15, 1 );
	FBSTRING* vr$16 = fb_StrAllocTempDescZEx( (char*)"Copyright (C) 2004-2023 The FreeBASIC development team.", 55ll );
	fb_PrintString( 0, (FBSTRING*)vr$16, 1 );
	int64 vr$18 = fb_StrLen( (void*)&CONFIG$1, -1ll );
	if( vr$18 <= 0ll ) goto label$1443;
	{
		fb_PrintString( 0, (FBSTRING*)&CONFIG$1, 1 );
	}
	label$1443:;
	label$1442:;
	if( VERBOSE$1 == 0ll ) goto label$1445;
	{
		FBCPRINTTARGETINFO(  );
		goto label$1447;
		{
			FBSTRING* vr$20 = fb_StrAllocTempDescZEx( (char*)"source sha-1: ", 14ll );
			fb_PrintString( 0, (FBSTRING*)vr$20, 1 );
		}
		label$1447:;
		label$1446:;
	}
	label$1445:;
	label$1444:;
	fb_StrDelete( (FBSTRING*)&CONFIG$1 );
	label$1441:;
}

__attribute__(( constructor )) static void _GLOBAL__I( void )
{
	label$1503:;
	_ZN6FBCCTXC1Ev( &FBC$ );
	label$1504:;
}

__attribute__(( destructor )) static void _GLOBAL__D( void )
{
	label$1506:;
	_ZN6FBCCTXD1Ev( &FBC$ );
	label$1507:;
}
