#include <OOC/IR.d>
#include <__oo2c.h>
#include <setjmp.h>

static void OOC_IR__AppendContext(ADT_StringBuffer__StringBuffer buffer, OOC_SymbolTable__Item item) {
  register OOC_INT64 i0,i1,i2;

  i0 = (OOC_INT64)item;
  i1 = OOC_TYPE_TEST(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 39079)))), &_td_OOC_SymbolTable__DeclarationDesc);
  if (i1) goto l3;
  _failed_with(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 39069)))), 39069);
  goto l7;
l3:
  i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 39113))+8);
  i1 = i1!=(OOC_INT64)0;
  if (!i1) goto l6;
  i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 39166))+8);
  i2 = (OOC_INT64)buffer;
  OOC_IR__AppendContext((ADT_StringBuffer__StringBuffer)i2, (OOC_SymbolTable__Item)i1);
l6:
  i1 = (OOC_INT64)buffer;
  i2 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 39217))+40);
  i2 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i2, 39222))+16);
  i0 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 39217))+40);
  i0 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 39222))+16);
  i0 = OOC_ARRAY_LENGTH((_check_pointer(i0, 39226)), 0);
  OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i1, 39199)))), ADT_StringBuffer__StringBufferDesc_AppendLatin1)),ADT_StringBuffer__StringBufferDesc_AppendLatin1)((ADT_StringBuffer__StringBuffer)i1, (void*)(_check_pointer(i2, 39226)), i0);
  OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i1, 39242)))), ADT_StringBuffer__StringBufferDesc_AppendLatin1Char)),ADT_StringBuffer__StringBufferDesc_AppendLatin1Char)((ADT_StringBuffer__StringBuffer)i1, 46u);
l7:
  return;
  ;
}

Object__String OOC_IR__TypeName(OOC_SymbolTable__Type type) {
  register OOC_INT64 i0,i1,i2;
  ADT_StringBuffer__StringBuffer name;

  i0 = (OOC_INT64)ADT_StringBuffer__New((Object__String)((OOC_INT64)_c0));
  name = (ADT_StringBuffer__StringBuffer)i0;
  i1 = (OOC_INT64)type;
  i2 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i1, 39639))+8);
  i2 = i2!=(OOC_INT64)0;
  if (!i2) goto l3;
  i2 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i1, 39686))+8);
  OOC_IR__AppendContext((ADT_StringBuffer__StringBuffer)i0, (OOC_SymbolTable__Item)i2);
l3:
  i2 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i1, 39712))+48);
  i2 = i2!=(OOC_INT64)0;
  if (i2) goto l26;
  i2 = OOC_TYPE_TEST(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i1, 39813)))), &_td_OOC_SymbolTable__PredefTypeDesc);
  if (i2) goto l24;
  i2 = OOC_TYPE_TEST(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i1, 40008)))), &_td_OOC_SymbolTable__PointerDesc);
  if (i2) goto l22;
  i2 = OOC_TYPE_TEST(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i1, 40071)))), &_td_OOC_SymbolTable__FormalParsDesc);
  if (i2) goto l20;
  i2 = OOC_TYPE_TEST(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i1, 40139)))), &_td_OOC_SymbolTable__ArrayDesc);
  if (i2) goto l18;
  i2 = OOC_TYPE_TEST(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i1, 40198)))), &_td_OOC_SymbolTable__RecordDesc);
  if (i2) goto l16;
  _failed_with(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i1, 40191)))), 40191);
  goto l27;
l16:
  OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 40224)))), ADT_StringBuffer__StringBufferDesc_AppendLatin1)),ADT_StringBuffer__StringBufferDesc_AppendLatin1)((ADT_StringBuffer__StringBuffer)i0, "RECORD", 7);
  goto l27;
l18:
  OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 40164)))), ADT_StringBuffer__StringBufferDesc_AppendLatin1)),ADT_StringBuffer__StringBufferDesc_AppendLatin1)((ADT_StringBuffer__StringBuffer)i0, "ARRAY", 6);
  goto l27;
l20:
  OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 40101)))), ADT_StringBuffer__StringBufferDesc_AppendLatin1)),ADT_StringBuffer__StringBufferDesc_AppendLatin1)((ADT_StringBuffer__StringBuffer)i0, "PROCEDURE", 10);
  goto l27;
l22:
  OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 40035)))), ADT_StringBuffer__StringBufferDesc_AppendLatin1)),ADT_StringBuffer__StringBufferDesc_AppendLatin1)((ADT_StringBuffer__StringBuffer)i0, "POINTER", 8);
  goto l27;
l24:
  OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 39907)))), ADT_StringBuffer__StringBufferDesc_AppendLatin1)),ADT_StringBuffer__StringBufferDesc_AppendLatin1)((ADT_StringBuffer__StringBuffer)i0, "PredefType(", 12);
  i1 = *(OOC_INT16*)((_check_pointer(i1, 39962))+72);
  OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 39947)))), ADT_StringBuffer__StringBufferDesc_AppendInt)),ADT_StringBuffer__StringBufferDesc_AppendInt)((ADT_StringBuffer__StringBuffer)i0, i1);
  OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 39978)))), ADT_StringBuffer__StringBufferDesc_AppendLatin1)),ADT_StringBuffer__StringBufferDesc_AppendLatin1)((ADT_StringBuffer__StringBuffer)i0, ")", 2);
  goto l27;
l26:
  i2 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i1, 39761))+48);
  i2 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i2, 39772))+40);
  i2 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i2, 39777))+16);
  i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i1, 39761))+48);
  i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i1, 39772))+40);
  i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i1, 39777))+16);
  i1 = OOC_ARRAY_LENGTH((_check_pointer(i1, 39781)), 0);
  OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 39743)))), ADT_StringBuffer__StringBufferDesc_AppendLatin1)),ADT_StringBuffer__StringBufferDesc_AppendLatin1)((ADT_StringBuffer__StringBuffer)i0, (void*)(_check_pointer(i2, 39781)), i1);
l27:
  i0 = (OOC_INT64)OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 40276)))), ADT_StringBuffer__StringBufferDesc_ToString)),ADT_StringBuffer__StringBufferDesc_ToString)((ADT_StringBuffer__StringBuffer)i0);
  return (Object__String)i0;
  ;
}

static void OOC_IR__LogTypeName(const OOC_CHAR8 message__ref[], OOC_LEN message_0d, OOC_SymbolTable__Type type) {
  register OOC_INT64 i0;
  OOC_ALLOCATE_VPAR(message,OOC_CHAR8 ,message_0d)

  OOC_INITIALIZE_VPAR(message__ref,message,OOC_CHAR8 ,message_0d)
  i0 = (OOC_INT64)type;
  i0 = (OOC_INT64)OOC_IR__TypeName((OOC_SymbolTable__Type)i0);
  Log__Object((void*)(OOC_INT64)message, message_0d, (Object__Object)i0);
  return;
  ;
}

void OOC_IR__ErrorContextDesc_GetTemplate(OOC_IR__ErrorContext context, Msg__Msg msg, Msg__LString templ, OOC_LEN templ_0d) {
  register OOC_INT64 i0,i1;
  OOC_CHAR16 t[128];

  i0 = (OOC_INT64)msg;
  i1 = *(OOC_INT32*)((_check_pointer(i0, 40616))+16);
  switch (i1) {
  case 1:
    _copy_16((const void*)((OOC_CHAR16[]){85,110,100,101,99,108,97,114,101,100,32,105,100,101,110,116,105,102,105,101,114,0}),(void*)(OOC_INT64)t,128);
    goto l76;
  case 2:
    _copy_16((const void*)((OOC_CHAR16[]){69,120,112,101,99,116,101,100,32,105,100,101,110,116,105,102,105,101,114,0}),(void*)(OOC_INT64)t,128);
    goto l76;
  case 3:
    _copy_16((const void*)((OOC_CHAR16[]){78,117,109,98,101,114,32,111,117,116,32,111,102,32,114,97,110,103,101,0}),(void*)(OOC_INT64)t,128);
    goto l76;
  case 4:
    _copy_16((const void*)((OOC_CHAR16[]){67,104,97,114,97,99,116,101,114,32,118,97,108,117,101,32,111,117,116,32,111,102,32,114,97,110,103,101,0}),(void*)(OOC_INT64)t,128);
    goto l76;
  case 5:
    _copy_16((const void*)((OOC_CHAR16[]){73,110,118,97,108,105,100,32,116,121,112,101,32,102,111,114,32,111,112,101,114,97,116,111,114,0}),(void*)(OOC_INT64)t,128);
    goto l76;
  case 6:
    _copy_16((const void*)((OOC_CHAR16[]){85,110,107,110,111,119,110,32,111,112,101,114,97,116,111,114,0}),(void*)(OOC_INT64)t,128);
    goto l76;
  case 7:
    _copy_16((const void*)((OOC_CHAR16[]){73,110,99,111,109,112,97,116,105,98,108,101,32,116,121,112,101,115,32,102,111,114,32,111,112,101,114,97,116,111,114,0}),(void*)(OOC_INT64)t,128);
    goto l76;
  case 8:
    _copy_16((const void*)((OOC_CHAR16[]){68,105,118,105,115,111,114,32,105,115,32,122,101,114,111,0}),(void*)(OOC_INT64)t,128);
    goto l76;
  case 9:
    _copy_16((const void*)((OOC_CHAR16[]){69,120,112,114,101,115,115,105,111,110,32,105,115,32,110,111,116,32,99,111,110,115,116,97,110,116,0}),(void*)(OOC_INT64)t,128);
    goto l76;
  case 10:
    _copy_16((const void*)((OOC_CHAR16[]){86,97,108,117,101,32,111,117,116,32,111,102,32,114,97,110,103,101,0}),(void*)(OOC_INT64)t,128);
    goto l76;
  case 11:
    _copy_16((const void*)((OOC_CHAR16[]){69,120,112,114,101,115,115,105,111,110,32,109,97,121,32,110,111,116,32,98,101,32,112,97,115,115,101,100,32,98,121,32,114,101,102,101,114,101,110,99,101,0}),(void*)(OOC_INT64)t,128);
    goto l76;
  case 12:
    _copy_16((const void*)((OOC_CHAR16[]){65,114,103,117,109,101,110,116,32,110,111,116,32,99,111,109,112,97,116,105,98,108,101,32,119,105,116,104,32,102,111,114,109,97,108,32,116,121,112,101,32,96,36,123,110,97,109,101,125,39,0}),(void*)(OOC_INT64)t,128);
    goto l76;
  case 24:
    _copy_16((const void*)((OOC_CHAR16[]){69,120,112,114,101,115,115,105,111,110,32,110,111,116,32,99,111,109,112,97,116,105,98,108,101,32,119,105,116,104,32,118,97,114,105,97,98,108,101,32,116,121,112,101,32,96,36,123,110,97,109,101,125,39,0}),(void*)(OOC_INT64)t,128);
    goto l76;
  case 13:
    _copy_16((const void*)((OOC_CHAR16[]){87,114,111,110,103,32,110,117,109,98,101,114,32,111,102,32,97,114,103,117,109,101,110,116,115,0}),(void*)(OOC_INT64)t,128);
    goto l76;
  case 14:
    _copy_16((const void*)((OOC_CHAR16[]){73,110,116,101,103,101,114,32,99,111,110,115,116,97,110,116,32,105,110,32,116,104,101,32,114,97,110,103,101,32,96,36,123,115,116,97,114,116,125,32,60,61,32,120,32,60,32,36,123,101,110,100,125,39,32,114,101,113,117,105,114,101,100,0}),(void*)(OOC_INT64)t,128);
    goto l76;
  case 15:
    _copy_16((const void*)((OOC_CHAR16[]){69,120,112,114,101,115,115,105,111,110,32,109,117,115,116,32,98,101,32,97,110,32,97,114,114,97,121,32,118,97,108,117,101,0}),(void*)(OOC_INT64)t,128);
    goto l76;
  case 16:
    _copy_16((const void*)((OOC_CHAR16[]){84,121,112,101,32,110,97,109,101,32,101,120,112,101,99,116,101,100,0}),(void*)(OOC_INT64)t,128);
    goto l76;
  case 17:
    _copy_16((const void*)((OOC_CHAR16[]){84,121,112,101,32,109,117,115,116,32,98,101,32,97,110,32,101,120,116,101,110,115,105,111,110,32,111,102,32,116,104,101,32,108,101,102,116,32,111,112,101,114,97,110,100,39,115,32,116,121,112,101,0}),(void*)(OOC_INT64)t,128);
    goto l76;
  case 18:
    _copy_16((const void*)((OOC_CHAR16[]){77,73,78,47,77,65,88,32,105,115,32,110,111,116,32,97,112,112,108,105,99,97,98,108,101,32,116,111,32,116,104,105,115,32,116,121,112,101,0}),(void*)(OOC_INT64)t,128);
    goto l76;
  case 19:
    _copy_16((const void*)((OOC_CHAR16[]){69,120,112,114,101,115,115,105,111,110,32,109,117,115,116,32,98,101,32,111,102,32,105,110,116,101,103,101,114,32,116,121,112,101,0}),(void*)(OOC_INT64)t,128);
    goto l76;
  case 20:
    _copy_16((const void*)((OOC_CHAR16[]){69,120,112,114,101,115,115,105,111,110,32,109,117,115,116,32,98,101,32,111,102,32,114,101,99,111,114,100,32,116,121,112,101,0}),(void*)(OOC_INT64)t,128);
    goto l76;
  case 21:
    _copy_16((const void*)((OOC_CHAR16[]){69,120,112,114,101,115,115,105,111,110,32,109,117,115,116,32,98,101,32,111,102,32,112,111,105,110,116,101,114,32,116,121,112,101,0}),(void*)(OOC_INT64)t,128);
    goto l76;
  case 22:
    _copy_16((const void*)((OOC_CHAR16[]){69,120,112,114,101,115,115,105,111,110,32,109,117,115,116,32,98,101,32,111,102,32,116,121,112,101,32,66,79,79,76,69,65,78,0}),(void*)(OOC_INT64)t,128);
    goto l76;
  case 23:
    _copy_16((const void*)((OOC_CHAR16[]){79,112,101,114,97,116,111,114,32,109,97,121,32,110,111,116,32,98,101,32,97,112,112,108,105,101,100,32,116,111,32,102,117,110,99,116,105,111,110,32,114,101,115,117,108,116,0}),(void*)(OOC_INT64)t,128);
    goto l76;
  case 25:
    _copy_16((const void*)((OOC_CHAR16[]){69,88,73,84,32,111,117,116,115,105,100,101,32,111,102,32,76,79,79,80,0}),(void*)(OOC_INT64)t,128);
    goto l76;
  case 26:
    _copy_16((const void*)((OOC_CHAR16[]){83,101,108,101,99,116,32,101,120,112,114,101,115,115,105,111,110,32,109,117,115,116,32,98,101,32,105,110,116,101,103,101,114,32,111,114,32,99,104,97,114,97,99,116,101,114,0}),(void*)(OOC_INT64)t,128);
    goto l76;
  case 27:
    _copy_16((const void*)((OOC_CHAR16[]){76,97,98,101,108,32,110,111,116,32,105,110,32,116,121,112,101,32,111,102,32,115,101,108,101,99,116,32,101,120,112,114,101,115,115,105,111,110,0}),(void*)(OOC_INT64)t,128);
    goto l76;
  case 28:
    _copy_16((const void*)((OOC_CHAR16[]){76,97,98,101,108,32,97,108,114,101,97,100,121,32,105,110,32,117,115,101,0}),(void*)(OOC_INT64)t,128);
    goto l76;
  case 29:
    _copy_16((const void*)((OOC_CHAR16[]){84,104,105,115,32,109,117,115,116,32,98,101,32,97,32,118,97,114,105,97,98,108,101,0}),(void*)(OOC_INT64)t,128);
    goto l76;
  case 30:
    _copy_16((const void*)((OOC_CHAR16[]){83,116,101,112,32,118,97,108,117,101,32,110,111,116,32,105,110,32,116,121,112,101,32,111,102,32,108,111,111,112,32,118,97,114,105,97,98,108,101,0}),(void*)(OOC_INT64)t,128);
    goto l76;
  case 31:
    _copy_16((const void*)((OOC_CHAR16[]){83,116,101,112,32,118,97,108,117,101,32,109,117,115,116,32,110,111,116,32,98,101,32,122,101,114,111,0}),(void*)(OOC_INT64)t,128);
    goto l76;
  case 32:
    _copy_16((const void*)((OOC_CHAR16[]){82,69,84,85,82,78,32,109,117,115,116,32,110,111,116,32,112,114,111,118,105,100,101,32,97,32,114,101,115,117,108,116,32,118,97,108,117,101,0}),(void*)(OOC_INT64)t,128);
    goto l76;
  case 33:
    _copy_16((const void*)((OOC_CHAR16[]){82,69,84,85,82,78,32,109,117,115,116,32,112,114,111,118,105,100,101,32,97,32,114,101,115,117,108,116,32,118,97,108,117,101,0}),(void*)(OOC_INT64)t,128);
    goto l76;
  case 34:
    _copy_16((const void*)((OOC_CHAR16[]){84,104,105,115,32,118,97,114,105,97,98,108,101,32,105,115,32,114,101,97,100,45,111,110,108,121,0}),(void*)(OOC_INT64)t,128);
    goto l76;
  case 35:
    _copy_16((const void*)((OOC_CHAR16[]){84,104,105,115,32,109,117,115,116,32,98,101,32,97,32,112,114,111,99,101,100,117,114,101,32,100,101,115,105,103,110,97,116,111,114,0}),(void*)(OOC_INT64)t,128);
    goto l76;
  case 36:
    _copy_16((const void*)((OOC_CHAR16[]){84,104,105,115,32,105,115,32,97,32,102,117,110,99,116,105,111,110,32,112,114,111,99,101,100,117,114,101,0}),(void*)(OOC_INT64)t,128);
    goto l76;
  case 37:
    _copy_16((const void*)((OOC_CHAR16[]){84,104,105,115,32,105,115,32,110,111,116,32,97,32,102,117,110,99,116,105,111,110,32,112,114,111,99,101,100,117,114,101,0}),(void*)(OOC_INT64)t,128);
    goto l76;
  case 38:
    _copy_16((const void*)((OOC_CHAR16[]){84,111,111,32,102,101,119,32,97,114,103,117,109,101,110,116,115,0}),(void*)(OOC_INT64)t,128);
    goto l76;
  case 39:
    _copy_16((const void*)((OOC_CHAR16[]){84,111,111,32,109,97,110,121,32,97,114,103,117,109,101,110,116,115,0}),(void*)(OOC_INT64)t,128);
    goto l76;
  case 40:
    _copy_16((const void*)((OOC_CHAR16[]){65,114,103,117,109,101,110,116,32,110,111,116,32,99,111,109,112,97,116,105,98,108,101,32,119,105,116,104,32,102,111,114,109,97,108,32,86,65,82,32,112,97,114,97,109,101,116,101,114,32,96,36,123,110,97,109,101,125,39,0}),(void*)(OOC_INT64)t,128);
    goto l76;
  case 41:
    _copy_16((const void*)((OOC_CHAR16[]){73,110,116,101,114,110,97,108,32,101,114,114,111,114,58,32,78,97,109,101,32,114,101,100,105,114,101,99,116,105,111,110,32,102,97,105,108,101,100,0}),(void*)(OOC_INT64)t,128);
    goto l76;
  case 42:
    _copy_16((const void*)((OOC_CHAR16[]){84,104,105,115,32,112,97,114,97,109,101,116,101,114,32,105,115,32,114,101,97,100,45,111,110,108,121,0}),(void*)(OOC_INT64)t,128);
    goto l76;
  case 43:
    _copy_16((const void*)((OOC_CHAR16[]){84,104,105,115,32,118,97,114,105,97,98,108,101,32,104,97,115,32,110,111,32,100,121,110,97,109,105,99,32,116,121,112,101,0}),(void*)(OOC_INT64)t,128);
    goto l76;
  case 44:
    _copy_16((const void*)((OOC_CHAR16[]){69,120,112,114,101,115,115,105,111,110,32,109,117,115,116,32,98,101,32,110,117,109,101,114,105,99,0}),(void*)(OOC_INT64)t,128);
    goto l76;
  case 45:
    _copy_16((const void*)((OOC_CHAR16[]){69,120,112,114,101,115,115,105,111,110,32,109,117,115,116,32,98,101,32,97,32,99,104,97,114,97,99,116,101,114,0}),(void*)(OOC_INT64)t,128);
    goto l76;
  case 46:
    _copy_16((const void*)((OOC_CHAR16[]){69,120,112,114,101,115,115,105,111,110,32,109,117,115,116,32,98,101,32,111,102,32,114,101,97,108,32,116,121,112,101,0}),(void*)(OOC_INT64)t,128);
    goto l76;
  case 47:
    _copy_16((const void*)((OOC_CHAR16[]){84,121,112,101,32,104,97,115,32,110,111,32,102,105,120,101,100,32,115,105,122,101,0}),(void*)(OOC_INT64)t,128);
    goto l76;
  case 48:
    _copy_16((const void*)((OOC_CHAR16[]){65,114,103,117,109,101,110,116,32,109,117,115,116,32,98,101,32,97,32,99,104,97,114,97,99,116,101,114,32,97,114,114,97,121,0}),(void*)(OOC_INT64)t,128);
    goto l76;
  case 49:
    _copy_16((const void*)((OOC_CHAR16[]){69,120,112,114,101,115,115,105,111,110,32,109,117,115,116,32,98,101,32,111,102,32,115,101,116,32,116,121,112,101,0}),(void*)(OOC_INT64)t,128);
    goto l76;
  case 50:
    _copy_16((const void*)((OOC_CHAR16[]){84,104,105,115,32,109,117,115,116,32,98,101,32,97,32,112,111,105,110,116,101,114,32,118,97,114,105,97,98,108,101,0}),(void*)(OOC_INT64)t,128);
    goto l76;
  case 51:
    _copy_16((const void*)((OOC_CHAR16[]){84,104,105,115,32,101,120,112,114,101,115,115,105,111,110,32,104,97,115,32,110,111,32,97,100,100,114,101,115,115,0}),(void*)(OOC_INT64)t,128);
    goto l76;
  case 52:
    _copy_16((const void*)((OOC_CHAR16[]){83,105,122,101,32,109,105,115,109,97,116,99,104,32,98,101,116,119,101,101,110,32,116,121,112,101,32,97,110,100,32,101,120,112,114,101,115,115,105,111,110,0}),(void*)(OOC_INT64)t,128);
    goto l76;
  case 53:
    _copy_16((const void*)((OOC_CHAR16[]){87,97,114,110,105,110,103,58,32,85,110,117,115,101,100,32,111,98,106,101,99,116,0}),(void*)(OOC_INT64)t,128);
    goto l76;
  case 54:
    _copy_16((const void*)((OOC_CHAR16[]){76,101,110,103,116,104,32,111,102,32,116,104,105,115,32,97,114,114,97,121,32,118,97,108,117,101,32,99,97,110,110,111,116,32,98,101,32,100,101,116,101,114,109,105,110,101,100,0}),(void*)(OOC_INT64)t,128);
    goto l76;
  case 55:
    _copy_16((const void*)((OOC_CHAR16[]){84,104,105,115,32,118,97,114,105,97,98,108,101,32,104,97,115,32,110,111,32,116,121,112,101,32,116,97,103,0}),(void*)(OOC_INT64)t,128);
    goto l76;
  case 56:
    _copy_16((const void*)((OOC_CHAR16[]){67,97,110,110,111,116,32,99,114,101,97,116,101,32,97,110,32,105,110,115,116,97,110,99,101,32,97,110,32,97,98,115,116,114,97,99,116,32,116,121,112,101,0}),(void*)(OOC_INT64)t,128);
    goto l76;
  case 57:
    _copy_16((const void*)((OOC_CHAR16[]){65,98,115,116,114,97,99,116,32,112,114,111,99,101,100,117,114,101,32,99,97,110,110,111,116,32,104,97,118,101,32,97,32,66,69,71,73,78,32,112,97,114,116,0}),(void*)(OOC_INT64)t,128);
    goto l76;
  case 58:
    _copy_16((const void*)((OOC_CHAR16[]){67,97,108,108,101,100,32,112,114,111,99,101,100,117,114,101,32,105,115,32,100,101,99,108,97,114,101,100,32,97,98,115,116,114,97,99,116,0}),(void*)(OOC_INT64)t,128);
    goto l76;
  case 59:
    _copy_16((const void*)((OOC_CHAR16[]){67,97,108,108,101,100,32,112,114,111,99,101,100,117,114,101,32,110,111,116,32,100,101,102,105,110,101,100,32,105,110,32,98,97,115,101,32,116,121,112,101,0}),(void*)(OOC_INT64)t,128);
    goto l76;
  case 60:
    _copy_16((const void*)((OOC_CHAR16[]){83,117,112,101,114,32,99,97,108,108,32,99,97,110,32,111,110,108,121,32,97,112,112,108,121,32,116,111,32,116,104,101,32,100,105,114,101,99,116,32,98,97,115,101,32,116,121,112,101,0}),(void*)(OOC_INT64)t,128);
    goto l76;
  case 61:
    _copy_16((const void*)((OOC_CHAR16[]){87,97,114,110,105,110,103,58,32,82,101,100,117,110,100,97,110,116,32,116,121,112,101,32,116,101,115,116,0}),(void*)(OOC_INT64)t,128);
    goto l76;
  case 62:
    _copy_16((const void*)((OOC_CHAR16[]){84,121,112,101,32,105,115,32,110,111,116,32,97,110,32,101,120,116,101,110,115,105,111,110,32,111,102,32,96,69,120,99,101,112,116,105,111,110,46,69,120,99,101,112,116,105,111,110,39,0}),(void*)(OOC_INT64)t,128);
    goto l76;
  case 63:
    _copy_16((const void*)((OOC_CHAR16[]){69,120,99,101,112,116,105,111,110,32,96,36,123,109,111,100,117,108,101,125,46,36,123,110,97,109,101,125,39,32,110,101,105,116,104,101,114,32,99,97,117,103,104,116,32,110,111,114,32,112,97,115,115,101,100,32,117,112,0}),(void*)(OOC_INT64)t,128);
    goto l76;
  case 64:
    _copy_16((const void*)((OOC_CHAR16[]){87,97,114,110,105,110,103,58,32,69,120,99,101,112,116,105,111,110,32,96,36,123,109,111,100,117,108,101,125,46,36,123,110,97,109,101,125,39,32,110,111,116,32,99,97,117,103,104,116,0}),(void*)(OOC_INT64)t,128);
    goto l76;
  case 65:
    _copy_16((const void*)((OOC_CHAR16[]){87,97,114,110,105,110,103,58,32,85,110,114,101,97,99,104,97,98,108,101,32,103,117,97,114,100,0}),(void*)(OOC_INT64)t,128);
    goto l76;
  case 66:
    _copy_16((const void*)((OOC_CHAR16[]){87,97,114,110,105,110,103,58,32,84,121,112,101,32,109,97,116,99,104,101,115,32,110,111,110,101,32,111,102,32,116,104,101,32,114,97,105,115,101,100,32,101,120,99,101,112,116,105,111,110,115,0}),(void*)(OOC_INT64)t,128);
    goto l76;
  case 67:
    _copy_16((const void*)((OOC_CHAR16[]){84,121,112,101,32,116,101,115,116,32,114,101,113,117,105,114,101,115,32,115,116,97,116,105,99,32,116,121,112,101,32,105,110,115,116,97,110,99,101,0}),(void*)(OOC_INT64)t,128);
    goto l76;
  case 69:
    _copy_16((const void*)((OOC_CHAR16[]){84,104,105,115,32,105,115,32,110,111,116,32,97,32,112,97,114,97,109,101,116,114,105,99,32,116,121,112,101,0}),(void*)(OOC_INT64)t,128);
    goto l76;
  case 70:
    _copy_16((const void*)((OOC_CHAR16[]){84,111,111,32,102,101,119,32,116,121,112,101,32,97,114,103,117,109,101,110,116,115,0}),(void*)(OOC_INT64)t,128);
    goto l76;
  case 71:
    _copy_16((const void*)((OOC_CHAR16[]){84,111,111,32,109,97,110,121,32,116,121,112,101,32,97,114,103,117,109,101,110,116,115,0}),(void*)(OOC_INT64)t,128);
    goto l76;
  case 72:
    _copy_16((const void*)((OOC_CHAR16[]){84,104,105,115,32,105,115,32,110,111,116,32,97,110,32,101,120,116,101,110,115,105,111,110,32,111,102,32,116,104,101,32,116,121,112,101,32,98,111,117,110,100,0}),(void*)(OOC_INT64)t,128);
    goto l76;
  case 73:
    _copy_16((const void*)((OOC_CHAR16[]){78,111,116,32,97,32,114,101,99,111,114,100,32,112,111,105,110,116,101,114,32,116,121,112,101,0}),(void*)(OOC_INT64)t,128);
    goto l76;
  case 74:
    _copy_16((const void*)((OOC_CHAR16[]){87,97,114,110,105,110,103,58,32,78,111,32,99,97,108,108,32,116,111,32,116,104,101,32,98,97,115,101,32,116,121,112,101,39,115,32,73,78,73,84,32,112,114,111,99,101,100,117,114,101,0}),(void*)(OOC_INT64)t,128);
    goto l76;
  default:
    _failed_case(i1, 40608);
    goto l76;
  }
l76:
  i1 = (OOC_INT64)context;
  OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i1, 45863)))), OOC_Error__ContextDesc_BaseTemplate)),OOC_Error__ContextDesc_BaseTemplate)((OOC_Error__Context)i1, (Msg__Msg)i0, (void*)(OOC_INT64)t, 128, (void*)(OOC_INT64)templ, templ_0d);
  return;
  ;
}

static void OOC_IR__InitGuardedVar(OOC_IR__GuardedVar gv, OOC_SymbolTable__VarDecl var, OOC_SymbolTable__Name name, OOC_SymbolTable__Type type) {
  register OOC_INT64 i0,i1,i2,i3,i4,i5;
  OOC_INT8 exportMark;

  i0 = (OOC_INT64)var;
  i1 = *(OOC_INT8*)((_check_pointer(i0, 46213))+52);
  exportMark = i1;
  i2 = i1==0;
  if (!i2) goto l4;
  exportMark = 2;
  i1=2;
l4:
  i2 = *(OOC_INT32*)((_check_pointer(i0, 46365))+48);
  i3 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 46419))+56);
  i4 = (OOC_INT64)gv;
  i5 = (OOC_INT64)name;
  OOC_SymbolTable__InitDeclaration((OOC_SymbolTable__Declaration)i4, (OOC_SymbolTable__Item)(OOC_INT64)0, (OOC_SymbolTable__Name)i5, i2, i1, (OOC_Doc__Document)i3);
  *(OOC_INT64*)((_check_pointer(i4, 46438))+88) = i0;
  i0 = (OOC_INT64)type;
  *(OOC_INT64*)((_check_pointer(i4, 46457))+96) = i0;
  return;
  ;
}

static OOC_IR__GuardedVar OOC_IR__NewGuardedVar(OOC_SymbolTable__VarDecl var, OOC_SymbolTable__Name name, OOC_SymbolTable__Type type) {
  register OOC_INT64 i0,i1,i2,i3;

  i0 = (OOC_INT64)RT0__NewObject(_td_OOC_IR__GuardedVar.baseTypes[0]);
  i1 = (OOC_INT64)var;
  i2 = (OOC_INT64)name;
  i3 = (OOC_INT64)type;
  OOC_IR__InitGuardedVar((OOC_IR__GuardedVar)i0, (OOC_SymbolTable__VarDecl)i1, (OOC_SymbolTable__Name)i2, (OOC_SymbolTable__Type)i3);
  return (OOC_IR__GuardedVar)i0;
  ;
}

OOC_SymbolTable__Module OOC_IR__GuardedVarDesc_Module(OOC_IR__GuardedVar gv) {
  register OOC_INT64 i0,i1;

  i0 = (OOC_INT64)gv;
  i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 46806))+88);
  i0 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 46806))+88);
  i0 = (OOC_INT64)OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i1, 46811)))), OOC_SymbolTable__ItemDesc_Module)),OOC_SymbolTable__ItemDesc_Module)((OOC_SymbolTable__Item)i0);
  return (OOC_SymbolTable__Module)i0;
  ;
}

void OOC_IR__InitNode(OOC_IR__Node n, OOC_Scanner_BasicList__Symbol sym) {
  register OOC_INT64 i0,i1;

  i0 = (OOC_INT64)n;
  i1 = (OOC_INT64)sym;
  *(OOC_INT64*)(_check_pointer(i0, 46997)) = i1;
  return;
  ;
}

void OOC_IR__NodeDesc_Accept(OOC_IR__Node node, OOC_IR__Visitor v) {

  return;
  ;
}

OOC_IR__Expression OOC_IR__ConstFoldDesc_TryConstFold(OOC_IR__ConstFold c, OOC_IR__Expression expr) {
  register OOC_INT64 i0,i1,i2;

  i0 = (OOC_INT64)c;
  *(OOC_INT64*)((_check_pointer(i0, 47410))+8) = (OOC_INT64)0;
  i1 = (OOC_INT64)expr;
  OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i1, 47434)))), OOC_IR__NodeDesc_Accept)),OOC_IR__NodeDesc_Accept)((OOC_IR__Node)i1, (OOC_IR__Visitor)i0);
  i2 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 47454))+8);
  i2 = i2==(OOC_INT64)0;
  if (i2) goto l3;
  i0 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 47514))+8);
  return (OOC_IR__Expression)i0;
  goto l4;
l3:
  return (OOC_IR__Expression)i1;
l4:
  _failed_function(47125); return 0;
  ;
}

void OOC_IR__BuilderDesc_ErrSym(OOC_IR__Builder b, OOC_INT32 code, OOC_Scanner_BasicList__Symbol sym) {
  register OOC_INT64 i0,i1,i2,i3;
  Msg__Msg e;

  i0 = (OOC_INT64)OOC_IR__irContext;
  i1 = code;
  i0 = (OOC_INT64)OOC_Error__New((OOC_Error__Context)i0, i1);
  e = (Msg__Msg)i0;
  i1 = (OOC_INT64)b;
  i2 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i1, 47702))+40);
  i2 = (OOC_INT64)*(OOC_INT64*)(_check_pointer(i2, 47713));
  i3 = (OOC_INT64)sym;
  i2 = i3!=i2;
  if (!i2) goto l4;
  i2 = *(OOC_INT32*)((_check_pointer(i3, 47799))+28);
  OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 47773)))), Msg__MsgDesc_SetIntAttrib)),Msg__MsgDesc_SetIntAttrib)((Msg__Msg)i0, "pos", 4, i2);
  i2 = *(OOC_INT32*)((_check_pointer(i3, 47841))+32);
  OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 47814)))), Msg__MsgDesc_SetIntAttrib)),Msg__MsgDesc_SetIntAttrib)((Msg__Msg)i0, "line", 5, i2);
  i2 = *(OOC_INT32*)((_check_pointer(i3, 47886))+36);
  OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 47857)))), Msg__MsgDesc_SetIntAttrib)),Msg__MsgDesc_SetIntAttrib)((Msg__Msg)i0, "column", 7, i2);
  i2 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i1, 47904))+16);
  OOC_Error__ListDesc_Append((OOC_Error__List)i2, (Msg__Msg)i0);
l4:
  *(OOC_INT64*)((_check_pointer(i1, 47941))+72) = i0;
  return;
  ;
}

void OOC_IR__BuilderDesc_SetNameToType(OOC_IR__Builder b, OOC_SymbolTable__Type type) {
  register OOC_INT64 i0,i1,i2,i3;
  OOC_SymbolTable__Module module;
  OOC_CHAR8 name[256];

  i0 = (OOC_INT64)type;
  i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 48226))+48);
  i1 = i1!=(OOC_INT64)0;
  if (i1) goto l31;
  i0 = (OOC_INT64)OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 48682)))), OOC_SymbolTable__TypeDesc_Deparam)),OOC_SymbolTable__TypeDesc_Deparam)((OOC_SymbolTable__Type)i0);
  type = (OOC_SymbolTable__Type)i0;
  i1 = OOC_TYPE_TEST(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 48709)))), &_td_OOC_SymbolTable__TypeNameDesc);
  if (i1) goto l29;
  i1 = OOC_TYPE_TEST(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 48859)))), &_td_OOC_SymbolTable__PointerDesc);
  if (i1) goto l27;
  i1 = OOC_TYPE_TEST(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 48915)))), &_td_OOC_SymbolTable__FormalParsDesc);
  if (i1) goto l25;
  i1 = OOC_TYPE_TEST(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 48976)))), &_td_OOC_SymbolTable__ArrayDesc);
  if (i1) goto l23;
  i1 = OOC_TYPE_TEST(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 49028)))), &_td_OOC_SymbolTable__RecordDesc);
  if (i1) goto l21;
  i1 = OOC_TYPE_TEST(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 49082)))), &_td_OOC_SymbolTable__TypeVarDesc);
  if (i1) goto l19;
  i1 = OOC_TYPE_TEST(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 49139)))), &_td_OOC_SymbolTable__PredefTypeDesc);
  if (i1) goto l17;
  _failed_with(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 49133)))), 49133);
  goto l40;
l17:
  _copy_8((const void*)"unknown",(void*)(OOC_INT64)name,256);
  goto l40;
l19:
  _copy_8((const void*)"TYPE_VAR",(void*)(OOC_INT64)name,256);
  goto l40;
l21:
  _copy_8((const void*)"RECORD",(void*)(OOC_INT64)name,256);
  goto l40;
l23:
  _copy_8((const void*)"ARRAY",(void*)(OOC_INT64)name,256);
  goto l40;
l25:
  _copy_8((const void*)"PROCEDURE",(void*)(OOC_INT64)name,256);
  goto l40;
l27:
  _copy_8((const void*)"POINTER",(void*)(OOC_INT64)name,256);
  goto l40;
l29:
  i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 48744))+72);
  i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i1, 48751))+16);
  _copy_8((const void*)(_check_pointer(i1, 48755)),(void*)(OOC_INT64)name,256);
  Strings__Append(".", 2, (void*)(OOC_INT64)name, 256);
  i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 48827))+80);
  i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i1, 48833))+16);
  i0 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 48827))+80);
  i0 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 48833))+16);
  i0 = OOC_ARRAY_LENGTH((_check_pointer(i0, 48837)), 0);
  Strings__Append((void*)(_check_pointer(i1, 48837)), i0, (void*)(OOC_INT64)name, 256);
  goto l40;
l31:
  i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 48270))+48);
  i2 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 48270))+48);
  i1 = (OOC_INT64)OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i1, 48281)))), OOC_SymbolTable__ItemDesc_Module)),OOC_SymbolTable__ItemDesc_Module)((OOC_SymbolTable__Item)i2);
  module = (OOC_SymbolTable__Module)i1;
  i2 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i1, 48308))+40);
  i2 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i2, 48313))+16);
  i2 = _check_pointer(i2, 48317);
  i3 = OOC_ARRAY_LENGTH(i2, 0);
  i2 = *(OOC_UINT8*)(i2+(_check_index(0, i3, OOC_UINT8, 48317)));
  i2 = i2==35u;
  if (i2) goto l34;
  i2 = OOC_TYPE_TEST(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 48337)))), &_td_OOC_SymbolTable__TypeVarDesc);
  
  goto l36;
l34:
  i2=1u;
l36:
  if (i2) goto l38;
  i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i1, 48535))+40);
  i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i1, 48540))+16);
  _copy_8((const void*)(_check_pointer(i1, 48544)),(void*)(OOC_INT64)name,256);
  Strings__Append(".", 2, (void*)(OOC_INT64)name, 256);
  goto l39;
l38:
  _copy_8((const void*)"",(void*)(OOC_INT64)name,256);
l39:
  i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 48625))+48);
  i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i1, 48636))+40);
  i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i1, 48641))+16);
  i0 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 48625))+48);
  i0 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 48636))+40);
  i0 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 48641))+16);
  i0 = OOC_ARRAY_LENGTH((_check_pointer(i0, 48645)), 0);
  Strings__Append((void*)(_check_pointer(i1, 48645)), i0, (void*)(OOC_INT64)name, 256);
l40:
  i0 = (OOC_INT64)b;
  i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 49211))+72);
  i0 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 49211))+72);
  i2 = (OOC_INT64)Msg__GetStringPtr((void*)(OOC_INT64)name, 256);
  OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i1, 49221)))), Msg__MsgDesc_SetStringAttrib)),Msg__MsgDesc_SetStringAttrib)((Msg__Msg)i0, "name", 5, (Msg__StringPtr)i2);
  return;
  ;
}

static OOC_CHAR8 OOC_IR__GetPragmaValue(OOC_IR__Builder b, Config_Section_Options__Option pragma, OOC_INT32 charPos) {
  register OOC_INT64 i0,i1,i2;
  Config__Variable value;

  i0 = (OOC_INT64)b;
  i1 = (OOC_INT64)pragma;
  i0 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 49447))+8);
  i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i1, 49478))+8);
  i2 = charPos;
  i0 = (OOC_INT64)OOC_Config_Pragmas__HistoryDesc_GetValue((OOC_Config_Pragmas__History)i0, (Object__String)i1, i2);
  value = (Config__Variable)i0;
  i0 = *(OOC_UINT8*)(_check_pointer((_type_guard(i0, ((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 49519)))), &_td_Config__BooleanVarDesc, 49519)), 49530));
  return i0;
  ;
}

void OOC_IR__BuilderDesc_WarnSym(OOC_IR__Builder b, OOC_INT32 code, OOC_Scanner_BasicList__Symbol sym) {
  register OOC_INT64 i0,i1,i2,i3;
  Msg__Msg e;

  i0 = (OOC_INT64)OOC_IR__irContext;
  i1 = code;
  i0 = (OOC_INT64)OOC_Error__New((OOC_Error__Context)i0, i1);
  e = (Msg__Msg)i0;
  i1 = (OOC_INT64)sym;
  i2 = *(OOC_INT32*)((_check_pointer(i1, 49728))+28);
  OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 49702)))), Msg__MsgDesc_SetIntAttrib)),Msg__MsgDesc_SetIntAttrib)((Msg__Msg)i0, "pos", 4, i2);
  i2 = *(OOC_INT32*)((_check_pointer(i1, 49768))+32);
  OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 49741)))), Msg__MsgDesc_SetIntAttrib)),Msg__MsgDesc_SetIntAttrib)((Msg__Msg)i0, "line", 5, i2);
  i2 = *(OOC_INT32*)((_check_pointer(i1, 49811))+36);
  OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 49782)))), Msg__MsgDesc_SetIntAttrib)),Msg__MsgDesc_SetIntAttrib)((Msg__Msg)i0, "column", 7, i2);
  i2 = (OOC_INT64)b;
  *(OOC_INT64*)((_check_pointer(i2, 49953))+72) = i0;
  i1 = *(OOC_INT32*)((_check_pointer(i1, 50025))+28);
  i3 = (OOC_INT64)OOC_Config_StdPragmas__warnings;
  i1 = OOC_IR__GetPragmaValue((OOC_IR__Builder)i2, (Config_Section_Options__Option)i3, i1);
  if (!i1) goto l4;
  i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i2, 50043))+16);
  OOC_Error__ListDesc_Append((OOC_Error__List)i1, (Msg__Msg)i0);
l4:
  return;
  ;
}

void OOC_IR__BuilderDesc_WarnName(OOC_IR__Builder b, OOC_INT32 code, OOC_SymbolTable__Name name) {
  register OOC_INT64 i0,i1,i2,i3;
  Msg__Msg e;

  i0 = (OOC_INT64)name;
  i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 50203))+16);
  i1 = _check_pointer(i1, 50207);
  i2 = OOC_ARRAY_LENGTH(i1, 0);
  i1 = *(OOC_UINT8*)(i1+(_check_index(0, i2, OOC_UINT8, 50207)));
  i1 = i1!=45u;
  if (i1) goto l3;
  i1=0u;
  goto l5;
l3:
  i1 = *(OOC_INT32*)(_check_pointer(i0, 50270));
  i2 = (OOC_INT64)OOC_Config_StdPragmas__warnings;
  i3 = (OOC_INT64)b;
  i1 = OOC_IR__GetPragmaValue((OOC_IR__Builder)i3, (Config_Section_Options__Option)i2, i1);
  
l5:
  if (!i1) goto l7;
  i1 = (OOC_INT64)OOC_IR__irContext;
  i2 = code;
  i1 = (OOC_INT64)OOC_Error__New((OOC_Error__Context)i1, i2);
  e = (Msg__Msg)i1;
  i2 = *(OOC_INT32*)(_check_pointer(i0, 50462));
  OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i1, 50435)))), Msg__MsgDesc_SetIntAttrib)),Msg__MsgDesc_SetIntAttrib)((Msg__Msg)i1, "pos", 4, i2);
  i2 = *(OOC_INT32*)((_check_pointer(i0, 50505))+4);
  OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i1, 50477)))), Msg__MsgDesc_SetIntAttrib)),Msg__MsgDesc_SetIntAttrib)((Msg__Msg)i1, "line", 5, i2);
  i0 = *(OOC_INT32*)((_check_pointer(i0, 50551))+8);
  OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i1, 50521)))), Msg__MsgDesc_SetIntAttrib)),Msg__MsgDesc_SetIntAttrib)((Msg__Msg)i1, "column", 7, i0);
  i0 = (OOC_INT64)b;
  i2 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 50569))+16);
  OOC_Error__ListDesc_Append((OOC_Error__List)i2, (Msg__Msg)i1);
  *(OOC_INT64*)((_check_pointer(i0, 50599))+72) = i1;
l7:
  return;
  ;
}

OOC_IR__Const OOC_IR__BuilderDesc_ErrExpr(OOC_IR__Builder b, OOC_INT32 code, OOC_Scanner_BasicList__Symbol sym) {
  register OOC_INT64 i0,i1,i2;

  i0 = (OOC_INT64)b;
  i1 = code;
  i2 = (OOC_INT64)sym;
  OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 50732)))), OOC_IR__BuilderDesc_ErrSym)),OOC_IR__BuilderDesc_ErrSym)((OOC_IR__Builder)i0, i1, (OOC_Scanner_BasicList__Symbol)i2);
  i0 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 50764))+40);
  return (OOC_IR__Const)i0;
  ;
}

OOC_SymbolTable__Name OOC_IR__BuilderDesc_GetName(OOC_IR__Builder b, OOC_Scanner_BasicList__Symbol sym) {
  register OOC_INT64 i0,i1,i2,i3,i4;
  OOC_SymbolTable__Name name;

  i0 = (OOC_INT64)RT0__NewObject(_td_OOC_SymbolTable__Name.baseTypes[0]);
  name = (OOC_SymbolTable__Name)i0;
  i1 = (OOC_INT64)sym;
  i2 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i1, 50927))+16);
  i3 = *(OOC_INT32*)((_check_pointer(i1, 50937))+28);
  i4 = *(OOC_INT32*)((_check_pointer(i1, 50947))+32);
  i1 = *(OOC_INT32*)((_check_pointer(i1, 50958))+36);
  OOC_SymbolTable__InitName((OOC_SymbolTable__Name)i0, (OOC_Scanner_InputBuffer__CharArray)i2, i3, i4, i1);
  return (OOC_SymbolTable__Name)i0;
  ;
}

OOC_SymbolTable__Name OOC_IR__BuilderDesc_GetName2(OOC_IR__Builder b, OOC_Scanner_BasicList__Symbol sym, const OOC_CHAR8 str__ref[], OOC_LEN str_0d) {
  register OOC_INT64 i0,i1,i2,i3,i4;
  OOC_ALLOCATE_VPAR(str,OOC_CHAR8 ,str_0d)
  OOC_Scanner_InputBuffer__CharArray s;
  OOC_SymbolTable__Name name;

  OOC_INITIALIZE_VPAR(str__ref,str,OOC_CHAR8 ,str_0d)
  i0 = Strings__Length((void*)(OOC_INT64)str, str_0d);
  i0 = (OOC_INT64)RT0__NewObject(_td_OOC_Scanner_InputBuffer__CharArray.baseTypes[0], (i0+1));
  s = (OOC_Scanner_InputBuffer__CharArray)i0;
  i1 = OOC_ARRAY_LENGTH((_check_pointer(i0, 51186)), 0);
  _copy_8((const void*)(OOC_INT64)str,(void*)(_check_pointer(i0, 51186)),i1);
  i1 = (OOC_INT64)RT0__NewObject(_td_OOC_SymbolTable__Name.baseTypes[0]);
  name = (OOC_SymbolTable__Name)i1;
  i2 = (OOC_INT64)sym;
  i3 = *(OOC_INT32*)((_check_pointer(i2, 51241))+28);
  i4 = *(OOC_INT32*)((_check_pointer(i2, 51251))+32);
  i2 = *(OOC_INT32*)((_check_pointer(i2, 51262))+36);
  OOC_SymbolTable__InitName((OOC_SymbolTable__Name)i1, (OOC_Scanner_InputBuffer__CharArray)i0, i3, i4, i2);
  return (OOC_SymbolTable__Name)i1;
  ;
}

OOC_SymbolTable__Type OOC_IR__BuilderDesc_AssertType(OOC_IR__Builder b, OOC_IR__Expression expr) {
  register OOC_INT64 i0,i1,i2;

  i0 = (OOC_INT64)expr;
  i1 = OOC_TYPE_TEST(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 51563)))), &_td_OOC_IR__TypeRefDesc);
  if (i1) goto l3;
  i1 = (OOC_INT64)b;
  i2 = (OOC_INT64)*(OOC_INT64*)(_check_pointer(i0, 51683));
  OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i1, 51652)))), OOC_IR__BuilderDesc_ErrSym)),OOC_IR__BuilderDesc_ErrSym)((OOC_IR__Builder)i1, 16, (OOC_Scanner_BasicList__Symbol)i2);
  i0 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 51707))+8);
  return (OOC_SymbolTable__Type)i0;
  goto l4;
l3:
  i0 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 51593))+24);
  return (OOC_SymbolTable__Type)i0;
l4:
  _failed_function(51329); return 0;
  ;
}

OOC_IR__Expression OOC_IR__BuilderDesc_AssertBoolean(OOC_IR__Builder b, OOC_IR__Expression expr) {
  register OOC_INT64 i0,i1;

  i0 = (OOC_INT64)expr;
  i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 51991))+8);
  i1 = OOC_TYPE_TEST(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i1, 51998)))), &_td_OOC_SymbolTable__PredefTypeDesc);
  if (i1) goto l3;
  i1=0u;
  goto l5;
l3:
  i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 52031))+8);
  i1 = *(OOC_INT16*)((_check_pointer((_type_guard(i1, ((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i1, 52042)))), &_td_OOC_SymbolTable__PredefTypeDesc, 52042)), 52053))+72);
  i1 = i1==0;
  
l5:
  if (i1) goto l7;
  i1 = (OOC_INT64)b;
  i0 = (OOC_INT64)*(OOC_INT64*)(_check_pointer(i0, 52150));
  i0 = (OOC_INT64)OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i1, 52123)))), OOC_IR__BuilderDesc_ErrExpr)),OOC_IR__BuilderDesc_ErrExpr)((OOC_IR__Builder)i1, 22, (OOC_Scanner_BasicList__Symbol)i0);
  return (OOC_IR__Expression)i0;
  goto l8;
l7:
  return (OOC_IR__Expression)i0;
l8:
  _failed_function(51765); return 0;
  ;
}

OOC_IR__Expression OOC_IR__BuilderDesc_Fold(OOC_IR__Builder b, OOC_IR__Expression expr) {
  register OOC_INT64 i0,i1,i2;

  i0 = (OOC_INT64)b;
  i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 52269))+24);
  i0 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 52269))+24);
  i2 = (OOC_INT64)expr;
  i0 = (OOC_INT64)OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i1, 52279)))), OOC_IR__ConstFoldDesc_TryConstFold)),OOC_IR__ConstFoldDesc_TryConstFold)((OOC_IR__ConstFold)i0, (OOC_IR__Expression)i2);
  return (OOC_IR__Expression)i0;
  ;
}

static OOC_CHAR8 OOC_IR__IsPredefType(OOC_SymbolTable__Type type, OOC_INT16 id) {
  register OOC_INT64 i0,i1;

  i0 = (OOC_INT64)type;
  i1 = OOC_TYPE_TEST(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 52402)))), &_td_OOC_SymbolTable__PredefTypeDesc);
  if (i1) goto l3;
  i0=0u;
  goto l4;
l3:
  i0 = *(OOC_INT16*)((_check_pointer((_type_guard(i0, ((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 52433)))), &_td_OOC_SymbolTable__PredefTypeDesc, 52433)), 52444))+72);
  i1 = id;
  i0 = i0==i1;
  
l4:
  return i0;
  ;
}

void OOC_IR__BuilderDesc_CheckFunctionOp(OOC_IR__Builder b, OOC_IR__Expression expr, OOC_Scanner_BasicList__Symbol op) {
  register OOC_INT64 i0,i1;

  i0 = (OOC_INT64)expr;
  i1 = OOC_TYPE_TEST(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 53799)))), &_td_OOC_IR__PredefProcDesc);
  if (i1) goto l3;
  i0 = OOC_TYPE_TEST(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 53823)))), &_td_OOC_IR__CallDesc);
  
  goto l5;
l3:
  i0=1u;
l5:
  if (!i0) goto l7;
  i0 = (OOC_INT64)b;
  i1 = (OOC_INT64)op;
  OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 53842)))), OOC_IR__BuilderDesc_ErrSym)),OOC_IR__BuilderDesc_ErrSym)((OOC_IR__Builder)i0, 23, (OOC_Scanner_BasicList__Symbol)i1);
l7:
  return;
  ;
}

void OOC_IR__InitExpression(OOC_IR__Expression expr, OOC_Scanner_BasicList__Symbol sym, OOC_SymbolTable__Type type) {
  register OOC_INT64 i0,i1;

  i0 = (OOC_INT64)expr;
  i1 = (OOC_INT64)sym;
  OOC_IR__InitNode((OOC_IR__Node)i0, (OOC_Scanner_BasicList__Symbol)i1);
  i1 = (OOC_INT64)type;
  *(OOC_INT64*)((_check_pointer(i0, 54132))+8) = i1;
  return;
  ;
}

static void OOC_IR__InitConst(OOC_IR__Const _const, OOC_Scanner_BasicList__Symbol sym, OOC_SymbolTable__Type type, Object_Boxed__Object value) {
  register OOC_INT64 i0,i1,i2;

  i0 = (OOC_INT64)_const;
  i1 = (OOC_INT64)sym;
  i2 = (OOC_INT64)type;
  OOC_IR__InitExpression((OOC_IR__Expression)i0, (OOC_Scanner_BasicList__Symbol)i1, (OOC_SymbolTable__Type)i2);
  i1 = (OOC_INT64)value;
  *(OOC_INT64*)((_check_pointer(i0, 54441))+16) = i1;
  return;
  ;
}

static OOC_IR__Const OOC_IR__NewConst(OOC_Scanner_BasicList__Symbol sym, OOC_SymbolTable__Type type, Object_Boxed__Object value) {
  register OOC_INT64 i0,i1,i2,i3;

  i0 = (OOC_INT64)type;
  _assert((i0!=(OOC_INT64)0), 127, 54611);
  i1 = (OOC_INT64)sym;
  i2 = (OOC_INT64)value;
  i3 = (OOC_INT64)RT0__NewObject(_td_OOC_IR__Const.baseTypes[0]);
  OOC_IR__InitConst((OOC_IR__Const)i3, (OOC_Scanner_BasicList__Symbol)i1, (OOC_SymbolTable__Type)i0, (Object_Boxed__Object)i2);
  return (OOC_IR__Const)i3;
  ;
}

void OOC_IR__VisitorDesc_VisitConst(OOC_IR__Visitor v, OOC_IR__Const _const) {

  return;
  ;
}

void OOC_IR__ConstDesc_Accept(OOC_IR__Const _const, OOC_IR__Visitor v) {
  register OOC_INT64 i0,i1;

  i0 = (OOC_INT64)v;
  i1 = (OOC_INT64)_const;
  OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 54865)))), OOC_IR__VisitorDesc_VisitConst)),OOC_IR__VisitorDesc_VisitConst)((OOC_IR__Visitor)i0, (OOC_IR__Const)i1);
  return;
  ;
}

Object__String OOC_IR__ConstDesc_ToString(OOC_IR__Const _const) {
  register OOC_INT64 i0,i1;

  i0 = (OOC_INT64)_const;
  i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 54968))+16);
  i1 = i1==(OOC_INT64)0;
  if (i1) goto l3;
  i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 55035))+16);
  i0 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 55035))+16);
  i0 = (OOC_INT64)OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i1, 55042)))), Object_Boxed__ObjectDesc_ToString)),Object_Boxed__ObjectDesc_ToString)((Object_Boxed__Object)i0);
  return (Object__String)i0;
  goto l4;
l3:
  return (Object__String)((OOC_INT64)_c1);
l4:
  _failed_function(54926); return 0;
  ;
}

OOC_IR__Const OOC_IR__BuilderDesc_NewConst(OOC_IR__Builder b, OOC_Scanner_BasicList__Symbol sym, OOC_SymbolTable__Type type, Object_Boxed__Object value) {
  register OOC_INT64 i0,i1,i2;

  i0 = (OOC_INT64)sym;
  i1 = (OOC_INT64)type;
  i2 = (OOC_INT64)value;
  i0 = (OOC_INT64)OOC_IR__NewConst((OOC_Scanner_BasicList__Symbol)i0, (OOC_SymbolTable__Type)i1, (Object_Boxed__Object)i2);
  return (OOC_IR__Const)i0;
  ;
}

OOC_IR__Expression OOC_IR__BuilderDesc_NewStringConst(OOC_IR__Builder b, OOC_Scanner_BasicList__Symbol sym) {
  register OOC_INT64 i0,i1,i2,i3;

  i0 = (OOC_INT64)sym;
  i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 55344))+16);
  i1 = _check_pointer(i1, 55349);
  i2 = OOC_ARRAY_LENGTH(i1, 0);
  i1 = *(OOC_UINT8*)(i1+(_check_index(2, i2, OOC_UINT8, 55349)));
  i1 = i1!=0u;
  if (i1) goto l3;
  i1=0u;
  goto l5;
l3:
  i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 55365))+16);
  i1 = _check_pointer(i1, 55370);
  i2 = OOC_ARRAY_LENGTH(i1, 0);
  i1 = *(OOC_UINT8*)(i1+(_check_index(3, i2, OOC_UINT8, 55370)));
  i1 = i1==0u;
  
l5:
  if (i1) goto l7;
  i1 = (OOC_INT64)OOC_SymbolTable_Predef__GetType(13);
  i2 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 55811))+16);
  i3 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 55811))+16);
  i3 = OOC_ARRAY_LENGTH((_check_pointer(i3, 55816)), 0);
  i2 = (OOC_INT64)Object_Boxed__ParseString((void*)(_check_pointer(i2, 55816)), i3);
  i0 = (OOC_INT64)OOC_IR__NewConst((OOC_Scanner_BasicList__Symbol)i0, (OOC_SymbolTable__Type)i1, (Object_Boxed__Object)i2);
  return (OOC_IR__Expression)i0;
  goto l8;
l7:
  i1 = (OOC_INT64)OOC_SymbolTable_Predef__GetType(1);
  i2 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 55684))+16);
  i3 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 55684))+16);
  i3 = OOC_ARRAY_LENGTH((_check_pointer(i3, 55689)), 0);
  i2 = (OOC_INT64)Object_Boxed__ParseString((void*)(_check_pointer(i2, 55689)), i3);
  i0 = (OOC_INT64)OOC_IR__NewConst((OOC_Scanner_BasicList__Symbol)i0, (OOC_SymbolTable__Type)i1, (Object_Boxed__Object)i2);
  return (OOC_IR__Expression)i0;
l8:
  _failed_function(55282); return 0;
  ;
}

OOC_IR__Expression OOC_IR__BuilderDesc_NewIntConst10(OOC_IR__Builder b, OOC_Scanner_BasicList__Symbol sym) {
  register OOC_INT64 i0,i1,i2;
  Object_BigInt__BigInt v;

  i0 = (OOC_INT64)sym;
  i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 55983))+16);
  i2 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 55983))+16);
  i2 = OOC_ARRAY_LENGTH((_check_pointer(i2, 55988)), 0);
  i1 = (OOC_INT64)Object_BigInt__NewLatin1((void*)(_check_pointer(i1, 55988)), i2, 10);
  v = (Object_BigInt__BigInt)i1;
  i2 = i1==(OOC_INT64)0;
  if (i2) goto l3;
  i2 = (OOC_INT64)OOC_SymbolTable_Predef__SmallestIntType((Object_BigInt__BigInt)i1);
  i0 = (OOC_INT64)OOC_IR__NewConst((OOC_Scanner_BasicList__Symbol)i0, (OOC_SymbolTable__Type)i2, (Object_Boxed__Object)i1);
  return (OOC_IR__Expression)i0;
  goto l4;
l3:
  i1 = (OOC_INT64)b;
  OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i1, 56025)))), OOC_IR__BuilderDesc_ErrSym)),OOC_IR__BuilderDesc_ErrSym)((OOC_IR__Builder)i1, 3, (OOC_Scanner_BasicList__Symbol)i0);
  i0 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i1, 56073))+40);
  return (OOC_IR__Expression)i0;
l4:
  _failed_function(55876); return 0;
  ;
}

OOC_IR__Expression OOC_IR__BuilderDesc_NewIntConst16(OOC_IR__Builder b, OOC_Scanner_BasicList__Symbol sym) {
  register OOC_INT64 i0,i1,i2,i3;
  OOC_INT32 epos;

  epos = 0;
  i0 = (OOC_INT64)sym;
  i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 56332))+16);
  i1 = _check_pointer(i1, 56336);
  i2 = OOC_ARRAY_LENGTH(i1, 0);
  i1 = *(OOC_UINT8*)(i1+(_check_index(0, i2, OOC_UINT32, 56336)));
  i1 = i1!=72u;
  if (i1) goto l3;
  i1=0;
  goto l9;
l3:
  i1=0;
l4_loop:
  i1 = i1+1;
  epos = i1;
  i2 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 56332))+16);
  i2 = _check_pointer(i2, 56336);
  i3 = OOC_ARRAY_LENGTH(i2, 0);
  i2 = *(OOC_UINT8*)(i2+(_check_index(i1, i3, OOC_UINT32, 56336)));
  i2 = i2!=72u;
  if (i2) goto l4_loop;
l9:
  i2 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 56414))+16);
  i3 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 56414))+16);
  i3 = OOC_ARRAY_LENGTH((_check_pointer(i3, 56418)), 0);
  i1 = (OOC_INT64)Object_BigInt__NewLatin1Region((void*)(_check_pointer(i2, 56418)), i3, 0, i1, 16);
  i2 = (OOC_INT64)OOC_SymbolTable_Predef__SmallestIntType((Object_BigInt__BigInt)i1);
  i0 = (OOC_INT64)OOC_IR__NewConst((OOC_Scanner_BasicList__Symbol)i0, (OOC_SymbolTable__Type)i2, (Object_Boxed__Object)i1);
  return (OOC_IR__Expression)i0;
  ;
}

OOC_IR__Const OOC_IR__BuilderDesc_AssertConst(OOC_IR__Builder b, OOC_IR__Expression expr) {
  register OOC_INT64 i0,i1;

  i0 = (OOC_INT64)expr;
  i1 = OOC_TYPE_TEST(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 56817)))), &_td_OOC_IR__ConstDesc);
  if (i1) goto l3;
  i1 = (OOC_INT64)b;
  i0 = (OOC_INT64)*(OOC_INT64*)(_check_pointer(i0, 56938));
  i0 = (OOC_INT64)OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i1, 56906)))), OOC_IR__BuilderDesc_ErrExpr)),OOC_IR__BuilderDesc_ErrExpr)((OOC_IR__Builder)i1, 9, (OOC_Scanner_BasicList__Symbol)i0);
  return (OOC_IR__Const)i0;
  goto l4;
l3:
  return (OOC_IR__Const)i0;
l4:
  _failed_function(56536); return 0;
  ;
}

OOC_INT32 OOC_IR__BuilderDesc_AssertIntConst(OOC_IR__Builder b, OOC_IR__Expression expr, OOC_INT32 start, OOC_INT32 end) {
  register OOC_INT64 i0,i1,i2,i3,i4;
  OOC_IR__Const _const;
  OOC_INT32 v;

  i0 = (OOC_INT64)b;
  i1 = (OOC_INT64)expr;
  i1 = (OOC_INT64)OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 57504)))), OOC_IR__BuilderDesc_AssertConst)),OOC_IR__BuilderDesc_AssertConst)((OOC_IR__Builder)i0, (OOC_IR__Expression)i1);
  _const = (OOC_IR__Const)i1;
  i2 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 57543))+40);
  i2 = i1!=i2;
  if (!i2) goto l20;
  i2 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i1, 57593))+8);
  i2 = OOC_SymbolTable_TypeRules__IsIntegerType((OOC_SymbolTable__Type)i2);
  if (!i2) goto l16;
  i2 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i1, 57624))+16);
  i2 = Object_BigInt__BigIntDesc_ToLongInt((Object_BigInt__BigInt)(_type_guard(i2, ((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i2, 57639)))), &_td_Object_BigInt__BigIntDesc, 57639)));
  v = i2;
  i3 = start;
  i3 = i3<=i2;
  if (i3) goto l7;
  i3=0u;
  goto l13;
l7:
  i3 = end;
  i4 = i3==(-2147483647-1);
  if (i4) goto l10;
  i3 = i2<i3;
  
  goto l13;
l10:
  i3=1u;
l13:
  if (!i3) goto l16;
  return i2;
l16:
  i2 = start;
  i3 = end;
  i4 = i2<i3;
  if (!i4) goto l20;
  i1 = (OOC_INT64)*(OOC_INT64*)(_check_pointer(i1, 57898));
  OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 57862)))), OOC_IR__BuilderDesc_ErrSym)),OOC_IR__BuilderDesc_ErrSym)((OOC_IR__Builder)i0, 14, (OOC_Scanner_BasicList__Symbol)i1);
  i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 57915))+72);
  i4 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 57915))+72);
  OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i1, 57926)))), Msg__MsgDesc_SetIntAttrib)),Msg__MsgDesc_SetIntAttrib)((Msg__Msg)i4, "start", 6, i2);
  i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 57968))+72);
  i0 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 57968))+72);
  OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i1, 57979)))), Msg__MsgDesc_SetIntAttrib)),Msg__MsgDesc_SetIntAttrib)((Msg__Msg)i0, "end", 4, i3);
l20:
  i0 = start;
  return i0;
  ;
}

OOC_IR__Expression OOC_IR__BuilderDesc_AssertInteger(OOC_IR__Builder b, OOC_IR__Expression expr) {
  register OOC_INT64 i0,i1,i2,i3;
  Object_BigInt__BigInt v;

  i0 = (OOC_INT64)expr;
  i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 58352))+8);
  i1 = OOC_SymbolTable_TypeRules__IsIntegerType((OOC_SymbolTable__Type)i1);
  i1 = !i1;
  if (!i1) goto l6;
  i1 = (OOC_INT64)b;
  i2 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i1, 58382))+40);
  i2 = i0!=i2;
  if (!i2) goto l5;
  i2 = (OOC_INT64)*(OOC_INT64*)(_check_pointer(i0, 58432));
  OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i1, 58408)))), OOC_IR__BuilderDesc_ErrSym)),OOC_IR__BuilderDesc_ErrSym)((OOC_IR__Builder)i1, 19, (OOC_Scanner_BasicList__Symbol)i2);
l5:
  i1 = (OOC_INT64)Object_BigInt__NewInt(1);
  v = (Object_BigInt__BigInt)i1;
  i2 = (OOC_INT64)*(OOC_INT64*)(_check_pointer(i0, 58505));
  i3 = (OOC_INT64)OOC_SymbolTable_Predef__SmallestIntType((Object_BigInt__BigInt)i1);
  i1 = (OOC_INT64)OOC_IR__NewConst((OOC_Scanner_BasicList__Symbol)i2, (OOC_SymbolTable__Type)i3, (Object_Boxed__Object)i1);
  return (OOC_IR__Expression)i1;
l6:
  return (OOC_IR__Expression)i0;
  ;
}

OOC_IR__Expression OOC_IR__BuilderDesc_AssertReal(OOC_IR__Builder b, OOC_IR__Expression expr) {
  register OOC_INT64 i0,i1,i2,i3;
  Object_Boxed__LongReal v;

  i0 = (OOC_INT64)expr;
  i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 58872))+8);
  i1 = OOC_SymbolTable_TypeRules__IsRealType((OOC_SymbolTable__Type)i1);
  i1 = !i1;
  if (!i1) goto l6;
  i1 = (OOC_INT64)b;
  i2 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i1, 58902))+40);
  i2 = i0!=i2;
  if (!i2) goto l5;
  i2 = (OOC_INT64)*(OOC_INT64*)(_check_pointer(i0, 58949));
  OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i1, 58928)))), OOC_IR__BuilderDesc_ErrSym)),OOC_IR__BuilderDesc_ErrSym)((OOC_IR__Builder)i1, 46, (OOC_Scanner_BasicList__Symbol)i2);
l5:
  i1 = (OOC_INT64)Object_Boxed__NewLongReal(1.0000000000000000);
  v = (Object_Boxed__LongReal)i1;
  i2 = (OOC_INT64)OOC_SymbolTable_Predef__GetType(8);
  i3 = (OOC_INT64)*(OOC_INT64*)(_check_pointer(i0, 59026));
  i1 = (OOC_INT64)OOC_IR__NewConst((OOC_Scanner_BasicList__Symbol)i3, (OOC_SymbolTable__Type)i2, (Object_Boxed__Object)i1);
  return (OOC_IR__Expression)i1;
l6:
  return (OOC_IR__Expression)i0;
  ;
}

OOC_IR__Expression OOC_IR__BuilderDesc_AssertNumeric(OOC_IR__Builder b, OOC_IR__Expression expr) {
  register OOC_INT64 i0,i1,i2,i3;
  Object_BigInt__BigInt v;

  i0 = (OOC_INT64)expr;
  i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 59402))+8);
  i1 = OOC_SymbolTable_TypeRules__IsNumericType((OOC_SymbolTable__Type)i1);
  i1 = !i1;
  if (!i1) goto l6;
  i1 = (OOC_INT64)b;
  i2 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i1, 59432))+40);
  i2 = i0!=i2;
  if (!i2) goto l5;
  i2 = (OOC_INT64)*(OOC_INT64*)(_check_pointer(i0, 59482));
  OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i1, 59458)))), OOC_IR__BuilderDesc_ErrSym)),OOC_IR__BuilderDesc_ErrSym)((OOC_IR__Builder)i1, 44, (OOC_Scanner_BasicList__Symbol)i2);
l5:
  i1 = (OOC_INT64)Object_BigInt__NewInt(1);
  v = (Object_BigInt__BigInt)i1;
  i2 = (OOC_INT64)*(OOC_INT64*)(_check_pointer(i0, 59555));
  i3 = (OOC_INT64)OOC_SymbolTable_Predef__SmallestIntType((Object_BigInt__BigInt)i1);
  i1 = (OOC_INT64)OOC_IR__NewConst((OOC_Scanner_BasicList__Symbol)i2, (OOC_SymbolTable__Type)i3, (Object_Boxed__Object)i1);
  return (OOC_IR__Expression)i1;
l6:
  return (OOC_IR__Expression)i0;
  ;
}

OOC_IR__Expression OOC_IR__BuilderDesc_AssertChar(OOC_IR__Builder b, OOC_IR__Expression expr) {
  register OOC_INT64 i0,i1,i2,i3;
  Object_Boxed__String v;

  i0 = (OOC_INT64)expr;
  i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 59916))+8);
  i1 = OOC_SymbolTable_TypeRules__IsCharType((OOC_SymbolTable__Type)i1);
  i1 = !i1;
  if (!i1) goto l6;
  i1 = (OOC_INT64)b;
  i2 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i1, 59946))+40);
  i2 = i0!=i2;
  if (!i2) goto l5;
  i2 = (OOC_INT64)*(OOC_INT64*)(_check_pointer(i0, 59998));
  OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i1, 59972)))), OOC_IR__BuilderDesc_ErrSym)),OOC_IR__BuilderDesc_ErrSym)((OOC_IR__Builder)i1, 45, (OOC_Scanner_BasicList__Symbol)i2);
l5:
  i1 = (OOC_INT64)Object_Boxed__NewString((Object__String)((OOC_INT64)_c2));
  v = (Object_Boxed__String)i1;
  i2 = (OOC_INT64)OOC_SymbolTable_Predef__GetType(1);
  i3 = (OOC_INT64)*(OOC_INT64*)(_check_pointer(i0, 60075));
  i1 = (OOC_INT64)OOC_IR__NewConst((OOC_Scanner_BasicList__Symbol)i3, (OOC_SymbolTable__Type)i2, (Object_Boxed__Object)i1);
  return (OOC_IR__Expression)i1;
l6:
  return (OOC_IR__Expression)i0;
  ;
}

OOC_IR__Expression OOC_IR__BuilderDesc_AssertSet(OOC_IR__Builder b, OOC_IR__Expression expr) {
  register OOC_INT64 i0,i1,i2,i3;
  Object_Boxed__Set v;

  i0 = (OOC_INT64)expr;
  i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 60401))+8);
  i1 = OOC_SymbolTable_TypeRules__IsSetType((OOC_SymbolTable__Type)i1);
  i1 = !i1;
  if (!i1) goto l6;
  i1 = (OOC_INT64)b;
  i2 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i1, 60431))+40);
  i2 = i0!=i2;
  if (!i2) goto l5;
  i2 = (OOC_INT64)*(OOC_INT64*)(_check_pointer(i0, 60477));
  OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i1, 60457)))), OOC_IR__BuilderDesc_ErrSym)),OOC_IR__BuilderDesc_ErrSym)((OOC_IR__Builder)i1, 49, (OOC_Scanner_BasicList__Symbol)i2);
l5:
  i1 = (OOC_INT64)Object_Boxed__NewSet(0u);
  v = (Object_Boxed__Set)i1;
  i2 = (OOC_INT64)OOC_SymbolTable_Predef__GetType(10);
  i3 = (OOC_INT64)*(OOC_INT64*)(_check_pointer(i0, 60550));
  i1 = (OOC_INT64)OOC_IR__NewConst((OOC_Scanner_BasicList__Symbol)i3, (OOC_SymbolTable__Type)i2, (Object_Boxed__Object)i1);
  return (OOC_IR__Expression)i1;
l6:
  return (OOC_IR__Expression)i0;
  ;
}

OOC_IR__Expression OOC_IR__BuilderDesc_NewRealConst(OOC_IR__Builder b, OOC_Scanner_BasicList__Symbol sym, OOC_INT16 type) {
  register OOC_INT64 i0,i1,i2;
  Object_Boxed__Object v;

  i0 = (OOC_INT64)sym;
  i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 60791))+16);
  i2 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 60791))+16);
  i2 = OOC_ARRAY_LENGTH((_check_pointer(i2, 60796)), 0);
  i1 = (OOC_INT64)Object_Boxed__ParseLongRealLiteral((void*)(_check_pointer(i1, 60796)), i2);
  v = (Object_Boxed__Object)i1;
  i2 = i1==(OOC_INT64)0;
  if (i2) goto l3;
  i2 = type;
  i2 = (OOC_INT64)OOC_SymbolTable_Predef__GetType(i2);
  i0 = (OOC_INT64)OOC_IR__NewConst((OOC_Scanner_BasicList__Symbol)i0, (OOC_SymbolTable__Type)i2, (Object_Boxed__Object)i1);
  return (OOC_IR__Expression)i0;
  goto l4;
l3:
  i1 = (OOC_INT64)b;
  OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i1, 60829)))), OOC_IR__BuilderDesc_ErrSym)),OOC_IR__BuilderDesc_ErrSym)((OOC_IR__Builder)i1, 3, (OOC_Scanner_BasicList__Symbol)i0);
  i0 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i1, 60877))+40);
  return (OOC_IR__Expression)i0;
l4:
  _failed_function(60655); return 0;
  ;
}

OOC_IR__Expression OOC_IR__BuilderDesc_NewCharConst16(OOC_IR__Builder b, OOC_Scanner_BasicList__Symbol sym) {
  register OOC_INT64 i0,i1,i2;
  OOC_INT32 v;
  auto OOC_INT32 OOC_IR__BuilderDesc_NewCharConst16_ValueOf(const OOC_CHAR8 str[], OOC_LEN str_0d);
    
    OOC_INT32 OOC_IR__BuilderDesc_NewCharConst16_ValueOf(const OOC_CHAR8 str[], OOC_LEN str_0d) {
      register OOC_INT64 i0,i1,i2,i3;
      OOC_INT32 i;
      OOC_INT32 hexCount;
      OOC_INT32 ord;
      auto OOC_INT32 OOC_IR__BuilderDesc_NewCharConst16_ValueOf_HexDigit(OOC_CHAR8 ch);
      auto OOC_CHAR8 OOC_IR__BuilderDesc_NewCharConst16_ValueOf_HexToInt(const OOC_CHAR8 str__ref[], OOC_LEN str_0d, OOC_CHAR8 end, OOC_INT32 *result);
        
        OOC_INT32 OOC_IR__BuilderDesc_NewCharConst16_ValueOf_HexDigit(OOC_CHAR8 ch) {
          register OOC_INT64 i0;

          i0 = ch;
          i0 = _cap(i0);
          switch (i0) {
          case 48u ... 57u:
            return (i0-48);
            goto l5;
          case 65u ... 70u:
            return (i0+(-55));
            goto l5;
          default:
            return (-1);
            goto l5;
          }
l5:
          _failed_function(61227); return 0;
          ;
        }

        
        OOC_CHAR8 OOC_IR__BuilderDesc_NewCharConst16_ValueOf_HexToInt(const OOC_CHAR8 str__ref[], OOC_LEN str_0d, OOC_CHAR8 end, OOC_INT32 *result) {
          register OOC_INT64 i0,i1,i2,i3;
          OOC_ALLOCATE_VPAR(str,OOC_CHAR8 ,str_0d)

          OOC_INITIALIZE_VPAR(str__ref,str,OOC_CHAR8 ,str_0d)
          *result = 0;
          i = 0;
          i0 = *(OOC_UINT8*)((OOC_INT64)str+(_check_index(0, str_0d, OOC_UINT32, 61621)));
          i1 = end;
          i0 = i0!=i1;
          if (!i0) goto l11;
          i0=0;
l3_loop:
          i2 = *(OOC_UINT8*)((OOC_INT64)str+(_check_index(i0, str_0d, OOC_UINT32, 61677)));
          i2 = OOC_IR__BuilderDesc_NewCharConst16_ValueOf_HexDigit(i2);
          i3 = *result;
          i2 = ((2147483647-i2)>>4)<i3;
          if (!i2) goto l6;
          return 0u;
l6:
          i0 = *(OOC_UINT8*)((OOC_INT64)str+(_check_index(i0, str_0d, OOC_UINT32, 61788)));
          i0 = OOC_IR__BuilderDesc_NewCharConst16_ValueOf_HexDigit(i0);
          *result = ((i3*16)+i0);
          i0 = i;
          i0 = i0+1;
          i = i0;
          i2 = *(OOC_UINT8*)((OOC_INT64)str+(_check_index(i0, str_0d, OOC_UINT32, 61621)));
          i2 = i2!=i1;
          if (i2) goto l3_loop;
l11:
          return 1u;
          ;
        }


      i = 0;
      hexCount = 0;
      i0 = *(OOC_UINT8*)((OOC_INT64)str+(_check_index(0, str_0d, OOC_UINT32, 61925)));
      i0 = i0!=0u;
      if (i0) goto l3;
      i0=0;i1=0;
      goto l13;
l3:
      i0=0;i1=0;
l4_loop:
      i2 = *(OOC_UINT8*)((OOC_INT64)str+(_check_index(i0, str_0d, OOC_UINT32, 61963)));
      i2 = OOC_IR__BuilderDesc_NewCharConst16_ValueOf_HexDigit(i2);
      i2 = i2>=0;
      if (!i2) goto l8;
      i1 = i1+1;
      hexCount = i1;
      
l8:
      i0 = i0+1;
      i = i0;
      i2 = *(OOC_UINT8*)((OOC_INT64)str+(_check_index(i0, str_0d, OOC_UINT32, 61925)));
      i2 = i2!=0u;
      if (i2) goto l4_loop;
l13:
      i2 = i0==3;
      if (i2) goto l16;
      i2=0u;
      goto l18;
l16:
      i2 = *(OOC_UINT8*)((OOC_INT64)str+(_check_index(0, str_0d, OOC_UINT8, 62067)));
      i3 = *(OOC_UINT8*)((OOC_INT64)str+(_check_index((i0-1), str_0d, OOC_UINT32, 62076)));
      i2 = i2==i3;
      
l18:
      if (i2) goto l20;
      i2=0u;
      goto l26;
l20:
      i2 = *(OOC_UINT8*)((OOC_INT64)str+(_check_index(0, str_0d, OOC_UINT8, 62090)));
      i2 = i2==34u;
      if (i2) goto l23;
      i2 = *(OOC_UINT8*)((OOC_INT64)str+(_check_index(0, str_0d, OOC_UINT8, 62108)));
      i2 = i2==39u;
      
      goto l26;
l23:
      i2=1u;
l26:
      if (i2) goto l52;
      i2 = i0>=2;
      if (i2) goto l30;
      i2=0u;
      goto l32;
l30:
      i2 = *(OOC_UINT8*)((OOC_INT64)str+(_check_index((i0-1), str_0d, OOC_UINT32, 62238)));
      i2 = i2==88u;
      
l32:
      if (i2) goto l34;
      i0=0u;
      goto l36;
l34:
      i0 = (i1+1)==i0;
      
l36:
      if (i0) goto l38;
      return (-1);
      goto l53;
l38:
      i0 = OOC_IR__BuilderDesc_NewCharConst16_ValueOf_HexToInt((void*)(OOC_INT64)str, str_0d, 88u, (void*)(OOC_INT64)&ord);
      if (i0) goto l41;
      i0=0u;
      goto l43;
l41:
      i0 = ord;
      i0 = 0<=i0;
      
l43:
      if (i0) goto l45;
      i0=0u;
      goto l47;
l45:
      i0 = ord;
      i0 = i0<=1114111;
      
l47:
      if (i0) goto l49;
      return (-1);
      goto l53;
l49:
      i0 = ord;
      return i0;
      goto l53;
l52:
      i0 = *(OOC_UINT8*)((OOC_INT64)str+(_check_index(1, str_0d, OOC_UINT8, 62206)));
      return i0;
l53:
      _failed_function(61118); return 0;
      ;
    }


  i0 = (OOC_INT64)sym;
  i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 62705))+16);
  i0 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 62705))+16);
  i0 = OOC_ARRAY_LENGTH((_check_pointer(i0, 62710)), 0);
  i0 = OOC_IR__BuilderDesc_NewCharConst16_ValueOf((void*)(_check_pointer(i1, 62710)), i0);
  v = i0;
  i1 = i0<0;
  if (i1) goto l11;
  i1 = i0<=255;
  if (i1) goto l9;
  i1 = i0<=65535;
  if (i1) goto l7;
  i0 = (OOC_INT64)Object__NewUCS4Char(i0);
  i1=i0;i0=3;
  goto l10;
l7:
  i0 = (OOC_INT64)Object__NewUCS4Char(i0);
  i1=i0;i0=2;
  goto l10;
l9:
  i0 = (OOC_INT64)Object__NewLatin1Char(i0);
  i1=i0;i0=1;
l10:
  i0 = (OOC_INT64)OOC_SymbolTable_Predef__GetType(i0);
  i1 = (OOC_INT64)Object_Boxed__NewString((Object__String)i1);
  i2 = (OOC_INT64)sym;
  i0 = (OOC_INT64)OOC_IR__NewConst((OOC_Scanner_BasicList__Symbol)i2, (OOC_SymbolTable__Type)i0, (Object_Boxed__Object)i1);
  return (OOC_IR__Expression)i0;
  goto l12;
l11:
  i0 = (OOC_INT64)b;
  i1 = (OOC_INT64)sym;
  OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 62741)))), OOC_IR__BuilderDesc_ErrSym)),OOC_IR__BuilderDesc_ErrSym)((OOC_IR__Builder)i0, 4, (OOC_Scanner_BasicList__Symbol)i1);
  i0 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 62792))+40);
  return (OOC_IR__Expression)i0;
l12:
  _failed_function(61004); return 0;
  ;
}

OOC_IR__Expression OOC_IR__BuilderDesc_NewNil(OOC_IR__Builder b, OOC_Scanner_BasicList__Symbol sym) {
  register OOC_INT64 i0,i1;

  i0 = (OOC_INT64)OOC_SymbolTable_Predef__GetType(16);
  i1 = (OOC_INT64)sym;
  i0 = (OOC_INT64)OOC_IR__NewConst((OOC_Scanner_BasicList__Symbol)i1, (OOC_SymbolTable__Type)i0, (Object_Boxed__Object)(OOC_INT64)0);
  return (OOC_IR__Expression)i0;
  ;
}

OOC_IR__Expression OOC_IR__BuilderDesc_NewSize(OOC_IR__Builder b, OOC_Scanner_BasicList__Symbol sym, OOC_IR__Expression type) {
  register OOC_INT64 i0,i1,i2,i3;
  OOC_SymbolTable__Type t;
  OOC_INT32 size;

  i0 = (OOC_INT64)b;
  i1 = (OOC_INT64)type;
  i2 = (OOC_INT64)OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 63541)))), OOC_IR__BuilderDesc_AssertType)),OOC_IR__BuilderDesc_AssertType)((OOC_IR__Builder)i0, (OOC_IR__Expression)i1);
  t = (OOC_SymbolTable__Type)i2;
  i3 = *(OOC_INT32*)((_check_pointer(i2, 63569))+64);
  i3 = i3<0;
  if (i3) goto l3;
  i1 = *(OOC_INT32*)((_check_pointer(i2, 63665))+64);
  size = i1;
  
  goto l4;
l3:
  i1 = (OOC_INT64)*(OOC_INT64*)(_check_pointer(i1, 63617));
  OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 63592)))), OOC_IR__BuilderDesc_ErrSym)),OOC_IR__BuilderDesc_ErrSym)((OOC_IR__Builder)i0, 47, (OOC_Scanner_BasicList__Symbol)i1);
  size = 1;
  i1=1;
l4:
  i2 = (OOC_INT64)OOC_SymbolTable_Predef__GetType(6);
  i1 = (OOC_INT64)Object_BigInt__NewInt(i1);
  i3 = (OOC_INT64)sym;
  i0 = (OOC_INT64)OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 63693)))), OOC_IR__BuilderDesc_NewConst)),OOC_IR__BuilderDesc_NewConst)((OOC_IR__Builder)i0, (OOC_Scanner_BasicList__Symbol)i3, (OOC_SymbolTable__Type)i2, (Object_Boxed__Object)i1);
  return (OOC_IR__Expression)i0;
  ;
}

OOC_IR__Const OOC_IR__BuilderDesc_GetOne(OOC_IR__Builder b, OOC_Scanner_BasicList__Symbol sym, OOC_SymbolTable__Type type) {
  register OOC_INT64 i0,i1,i2,i3;

  i0 = (OOC_INT64)b;
  i1 = (OOC_INT64)Object_BigInt__NewInt(1);
  i2 = (OOC_INT64)sym;
  i3 = (OOC_INT64)type;
  i0 = (OOC_INT64)OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 63880)))), OOC_IR__BuilderDesc_NewConst)),OOC_IR__BuilderDesc_NewConst)((OOC_IR__Builder)i0, (OOC_Scanner_BasicList__Symbol)i2, (OOC_SymbolTable__Type)i3, (Object_Boxed__Object)i1);
  return (OOC_IR__Const)i0;
  ;
}

OOC_IR__Expression OOC_IR__BuilderDesc_ValidSetElement(OOC_IR__Builder b, OOC_IR__Expression expr, OOC_SymbolTable__Type set) {
  register OOC_INT64 i0,i1,i2,i3,i4,i5;
  Object_Boxed__Object val;
  Object_BigInt__BigInt min;
  Object_BigInt__BigInt max;
  Object_BigInt__BigInt element;
  auto OOC_IR__Expression OOC_IR__BuilderDesc_ValidSetElement_MinElement(void);
    
    OOC_IR__Expression OOC_IR__BuilderDesc_ValidSetElement_MinElement(void) {
      register OOC_INT64 i0,i1,i2,i3;

      i0 = (OOC_INT64)b;
      i1 = (OOC_INT64)expr;
      i2 = (OOC_INT64)OOC_SymbolTable_Predef__GetType(4);
      i1 = (OOC_INT64)*(OOC_INT64*)(_check_pointer(i1, 64634));
      i3 = (OOC_INT64)min;
      i0 = (OOC_INT64)OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 64620)))), OOC_IR__BuilderDesc_NewConst)),OOC_IR__BuilderDesc_NewConst)((OOC_IR__Builder)i0, (OOC_Scanner_BasicList__Symbol)i1, (OOC_SymbolTable__Type)i2, (Object_Boxed__Object)i3);
      return (OOC_IR__Expression)i0;
      ;
    }


  i0 = (OOC_INT64)set;
  i1 = (OOC_INT64)OOC_SymbolTable_Predef__GetMin((OOC_SymbolTable__Type)i0);
  val = (Object_Boxed__Object)i1;
  i1 = _type_guard(i1, ((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i1, 64755)))), &_td_Object_BigInt__BigIntDesc, 64755);
  min = (Object_BigInt__BigInt)i1;
  i0 = (OOC_INT64)OOC_SymbolTable_Predef__GetMax((OOC_SymbolTable__Type)i0);
  val = (Object_Boxed__Object)i0;
  i0 = _type_guard(i0, ((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 64813)))), &_td_Object_BigInt__BigIntDesc, 64813);
  max = (Object_BigInt__BigInt)i0;
  i2 = (OOC_INT64)b;
  i3 = (OOC_INT64)expr;
  i3 = (OOC_INT64)OOC_IR__BuilderDesc_AssertInteger((OOC_IR__Builder)i2, (OOC_IR__Expression)i3);
  expr = (OOC_IR__Expression)i3;
  i4 = OOC_TYPE_TEST(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i3, 64872)))), &_td_OOC_IR__ConstDesc);
  if (!i4) goto l10;
  i4 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i3, 64904))+16);
  i4 = _type_guard(i4, ((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i4, 64918)))), &_td_Object_BigInt__BigIntDesc, 64918);
  element = (Object_BigInt__BigInt)i4;
  i5 = Object_BigInt__BigIntDesc_Cmp((Object_BigInt__BigInt)i4, (Object__Object)i1);
  i5 = i5<0;
  if (i5) goto l5;
  i4 = Object_BigInt__BigIntDesc_Cmp((Object_BigInt__BigInt)i4, (Object__Object)i0);
  i4 = i4>0;
  
  goto l7;
l5:
  i4=1u;
l7:
  if (!i4) goto l10;
  i3 = (OOC_INT64)*(OOC_INT64*)(_check_pointer(i3, 65034));
  OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i2, 64999)))), OOC_IR__BuilderDesc_ErrSym)),OOC_IR__BuilderDesc_ErrSym)((OOC_IR__Builder)i2, 14, (OOC_Scanner_BasicList__Symbol)i3);
  i3 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i2, 65051))+72);
  i1 = Object_BigInt__BigIntDesc_ToLongInt((Object_BigInt__BigInt)i1);
  i4 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i2, 65051))+72);
  OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i3, 65062)))), Msg__MsgDesc_SetIntAttrib)),Msg__MsgDesc_SetIntAttrib)((Msg__Msg)i4, "start", 6, i1);
  i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i2, 65114))+72);
  i0 = Object_BigInt__BigIntDesc_ToLongInt((Object_BigInt__BigInt)i0);
  i2 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i2, 65114))+72);
  OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i1, 65125)))), Msg__MsgDesc_SetIntAttrib)),Msg__MsgDesc_SetIntAttrib)((Msg__Msg)i2, "end", 4, (i0+1));
  i0 = (OOC_INT64)OOC_IR__BuilderDesc_ValidSetElement_MinElement();
  return (OOC_IR__Expression)i0;
l10:
  i0 = (OOC_INT64)expr;
  return (OOC_IR__Expression)i0;
  ;
}

void OOC_IR__InitOperator(OOC_IR__Operator op, OOC_Scanner_BasicList__Symbol sym, OOC_SymbolTable__Type type) {
  register OOC_INT64 i0,i1,i2;

  i0 = (OOC_INT64)op;
  i1 = (OOC_INT64)sym;
  i2 = (OOC_INT64)type;
  OOC_IR__InitExpression((OOC_IR__Expression)i0, (OOC_Scanner_BasicList__Symbol)i1, (OOC_SymbolTable__Type)i2);
  return;
  ;
}

static void OOC_IR__InitAbs(OOC_IR__Abs abs, OOC_Scanner_BasicList__Symbol sym, OOC_IR__Expression operand) {
  register OOC_INT64 i0,i1,i2,i3;

  i0 = (OOC_INT64)operand;
  i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 65718))+8);
  i2 = (OOC_INT64)abs;
  i3 = (OOC_INT64)sym;
  OOC_IR__InitOperator((OOC_IR__Operator)i2, (OOC_Scanner_BasicList__Symbol)i3, (OOC_SymbolTable__Type)i1);
  *(OOC_INT64*)((_check_pointer(i2, 65734))+16) = i0;
  return;
  ;
}

OOC_IR__Expression OOC_IR__BuilderDesc_NewAbs(OOC_IR__Builder b, OOC_Scanner_BasicList__Symbol sym, OOC_IR__Expression operand) {
  register OOC_INT64 i0,i1,i2;

  i0 = (OOC_INT64)RT0__NewObject(_td_OOC_IR__Abs.baseTypes[0]);
  i1 = (OOC_INT64)b;
  i2 = (OOC_INT64)operand;
  i1 = (OOC_INT64)OOC_IR__BuilderDesc_AssertNumeric((OOC_IR__Builder)i1, (OOC_IR__Expression)i2);
  i2 = (OOC_INT64)sym;
  OOC_IR__InitAbs((OOC_IR__Abs)i0, (OOC_Scanner_BasicList__Symbol)i2, (OOC_IR__Expression)i1);
  return (OOC_IR__Expression)i0;
  ;
}

void OOC_IR__VisitorDesc_VisitAbs(OOC_IR__Visitor v, OOC_IR__Abs abs) {

  return;
  ;
}

void OOC_IR__AbsDesc_Accept(OOC_IR__Abs abs, OOC_IR__Visitor v) {
  register OOC_INT64 i0,i1;

  i0 = (OOC_INT64)v;
  i1 = (OOC_INT64)abs;
  OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 66103)))), OOC_IR__VisitorDesc_VisitAbs)),OOC_IR__VisitorDesc_VisitAbs)((OOC_IR__Visitor)i0, (OOC_IR__Abs)i1);
  return;
  ;
}

static void OOC_IR__InitAdr(OOC_IR__Adr adr, OOC_Scanner_BasicList__Symbol sym, OOC_IR__Expression design) {
  register OOC_INT64 i0,i1,i2;

  i0 = (OOC_INT64)OOC_SymbolTable_Predef__GetType(12);
  i1 = (OOC_INT64)adr;
  i2 = (OOC_INT64)sym;
  OOC_IR__InitOperator((OOC_IR__Operator)i1, (OOC_Scanner_BasicList__Symbol)i2, (OOC_SymbolTable__Type)i0);
  i0 = (OOC_INT64)design;
  *(OOC_INT64*)((_check_pointer(i1, 66374))+16) = i0;
  return;
  ;
}

OOC_IR__Adr OOC_IR__BuilderDesc_NewAdr(OOC_IR__Builder b, OOC_Scanner_BasicList__Symbol sym, OOC_IR__Expression design) {
  register OOC_INT64 i0,i1,i2;
  OOC_IR__Adr adr;
  auto OOC_IR__Expression OOC_IR__BuilderDesc_NewAdr_AssertAddressable(OOC_IR__Expression expr);
    
    OOC_IR__Expression OOC_IR__BuilderDesc_NewAdr_AssertAddressable(OOC_IR__Expression expr) {
      register OOC_INT64 i0,i1;
      OOC_IR__Expression e;
      OOC_CHAR8 hasAddress;
      OOC_CHAR8 dummy;

      i0 = (OOC_INT64)expr;
      e = (OOC_IR__Expression)i0;
      hasAddress = 1u;
      i1 = OOC_TYPE_TEST(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 66692)))), &_td_OOC_IR__VarDesc);
      if (i1) goto l30;
      i1 = OOC_TYPE_TEST(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 66710)))), &_td_OOC_IR__DerefDesc);
      if (i1) goto l28;
      i1 = OOC_TYPE_TEST(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 66730)))), &_td_OOC_IR__IndexDesc);
      if (i1) goto l26;
      i1 = OOC_TYPE_TEST(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 66750)))), &_td_OOC_IR__SelectFieldDesc);
      if (i1) goto l24;
      i1 = OOC_TYPE_TEST(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 66776)))), &_td_OOC_IR__TypeGuardDesc);
      if (i1) goto l22;
      i1 = OOC_TYPE_TEST(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 66800)))), &_td_OOC_IR__ProcedureRefDesc);
      if (i1) goto l20;
      i1 = OOC_TYPE_TEST(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 66827)))), &_td_OOC_IR__ConstDesc);
      if (i1) goto l15;
      hasAddress = 0u;
      i0=0u;
      goto l31;
l15:
      i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 66867))+8);
      i1 = OOC_SymbolTable_TypeRules__IsCharType((OOC_SymbolTable__Type)i1);
      if (!i1) goto l18;
      i0 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 66939))+8);
      i0 = (OOC_INT64)OOC_SymbolTable_TypeRules__MatchingStringConst((OOC_SymbolTable__Type)i0);
      i1 = (OOC_INT64)b;
      i0 = OOC_IR__BuilderDesc_Widen((OOC_IR__Builder)i1, (void*)(OOC_INT64)&expr, (OOC_SymbolTable__Type)i0);
      dummy = i0;
l18:
      i0 = (OOC_INT64)expr;
      i0 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 67004))+8);
      i0 = OOC_SymbolTable_TypeRules__IsStringConst((OOC_SymbolTable__Type)i0);
      hasAddress = i0;
      
      goto l31;
l20:
      i0=1u;
      goto l31;
l22:
      i0=1u;
      goto l31;
l24:
      i0=1u;
      goto l31;
l26:
      i0=1u;
      goto l31;
l28:
      i0=1u;
      goto l31;
l30:
      i0=1u;
l31:
      i0 = !i0;
      if (!i0) goto l34;
      i0 = (OOC_INT64)b;
      i1 = (OOC_INT64)expr;
      i1 = (OOC_INT64)*(OOC_INT64*)(_check_pointer(i1, 67126));
      OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 67098)))), OOC_IR__BuilderDesc_ErrSym)),OOC_IR__BuilderDesc_ErrSym)((OOC_IR__Builder)i0, 51, (OOC_Scanner_BasicList__Symbol)i1);
l34:
      i0 = (OOC_INT64)expr;
      return (OOC_IR__Expression)i0;
      ;
    }


  i0 = (OOC_INT64)RT0__NewObject(_td_OOC_IR__Adr.baseTypes[0]);
  adr = (OOC_IR__Adr)i0;
  i1 = (OOC_INT64)design;
  i1 = (OOC_INT64)OOC_IR__BuilderDesc_NewAdr_AssertAddressable((OOC_IR__Expression)i1);
  i2 = (OOC_INT64)sym;
  OOC_IR__InitAdr((OOC_IR__Adr)i0, (OOC_Scanner_BasicList__Symbol)i2, (OOC_IR__Expression)i1);
  i0 = (OOC_INT64)adr;
  return (OOC_IR__Adr)i0;
  ;
}

void OOC_IR__VisitorDesc_VisitAdr(OOC_IR__Visitor v, OOC_IR__Adr adr) {

  return;
  ;
}

void OOC_IR__AdrDesc_Accept(OOC_IR__Adr adr, OOC_IR__Visitor v) {
  register OOC_INT64 i0,i1;

  i0 = (OOC_INT64)v;
  i1 = (OOC_INT64)adr;
  OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 67426)))), OOC_IR__VisitorDesc_VisitAdr)),OOC_IR__VisitorDesc_VisitAdr)((OOC_IR__Visitor)i0, (OOC_IR__Adr)i1);
  return;
  ;
}

static void OOC_IR__InitAsh(OOC_IR__Ash ash, OOC_Scanner_BasicList__Symbol sym, OOC_IR__Expression value, OOC_IR__Expression exp) {
  register OOC_INT64 i0,i1,i2;

  i0 = (OOC_INT64)OOC_SymbolTable_Predef__GetType(6);
  i1 = (OOC_INT64)ash;
  i2 = (OOC_INT64)sym;
  OOC_IR__InitOperator((OOC_IR__Operator)i1, (OOC_Scanner_BasicList__Symbol)i2, (OOC_SymbolTable__Type)i0);
  i0 = (OOC_INT64)value;
  *(OOC_INT64*)((_check_pointer(i1, 67705))+16) = i0;
  i0 = (OOC_INT64)exp;
  *(OOC_INT64*)((_check_pointer(i1, 67730))+24) = i0;
  return;
  ;
}

OOC_IR__Expression OOC_IR__BuilderDesc_NewAsh(OOC_IR__Builder b, OOC_Scanner_BasicList__Symbol sym, OOC_IR__Expression value, OOC_IR__Expression exp) {
  register OOC_INT64 i0,i1,i2,i3;

  i0 = (OOC_INT64)RT0__NewObject(_td_OOC_IR__Ash.baseTypes[0]);
  i1 = (OOC_INT64)b;
  i2 = (OOC_INT64)value;
  i2 = (OOC_INT64)OOC_IR__BuilderDesc_AssertInteger((OOC_IR__Builder)i1, (OOC_IR__Expression)i2);
  i3 = (OOC_INT64)exp;
  i1 = (OOC_INT64)OOC_IR__BuilderDesc_AssertInteger((OOC_IR__Builder)i1, (OOC_IR__Expression)i3);
  i3 = (OOC_INT64)sym;
  OOC_IR__InitAsh((OOC_IR__Ash)i0, (OOC_Scanner_BasicList__Symbol)i3, (OOC_IR__Expression)i2, (OOC_IR__Expression)i1);
  return (OOC_IR__Expression)i0;
  ;
}

void OOC_IR__VisitorDesc_VisitAsh(OOC_IR__Visitor v, OOC_IR__Ash ash) {

  return;
  ;
}

void OOC_IR__AshDesc_Accept(OOC_IR__Ash ash, OOC_IR__Visitor v) {
  register OOC_INT64 i0,i1;

  i0 = (OOC_INT64)v;
  i1 = (OOC_INT64)ash;
  OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 68114)))), OOC_IR__VisitorDesc_VisitAsh)),OOC_IR__VisitorDesc_VisitAsh)((OOC_IR__Visitor)i0, (OOC_IR__Ash)i1);
  return;
  ;
}

static void OOC_IR__InitBinaryArith(OOC_IR__BinaryArith op, OOC_Scanner_BasicList__Symbol sym, OOC_INT8 variant, OOC_IR__Expression left, OOC_IR__Expression right, OOC_SymbolTable__Type type) {
  register OOC_INT64 i0,i1,i2;

  i0 = (OOC_INT64)op;
  i1 = (OOC_INT64)sym;
  i2 = (OOC_INT64)type;
  OOC_IR__InitOperator((OOC_IR__Operator)i0, (OOC_Scanner_BasicList__Symbol)i1, (OOC_SymbolTable__Type)i2);
  i1 = variant;
  *(OOC_INT8*)((_check_pointer(i0, 68424))+16) = i1;
  i1 = (OOC_INT64)left;
  *(OOC_INT64*)((_check_pointer(i0, 68451))+24) = i1;
  i1 = (OOC_INT64)right;
  *(OOC_INT64*)((_check_pointer(i0, 68472))+32) = i1;
  return;
  ;
}

OOC_IR__Expression OOC_IR__BuilderDesc_NewBinaryArith(OOC_IR__Builder b, OOC_Scanner_BasicList__Symbol sym, OOC_INT8 variant, OOC_IR__Expression left, OOC_IR__Expression right) {
  register OOC_INT64 i0,i1,i2,i3,i4,i5;
  OOC_IR__BinaryArith op;

  i0 = (OOC_INT64)RT0__NewObject(_td_OOC_IR__BinaryArith.baseTypes[0]);
  op = (OOC_IR__BinaryArith)i0;
  i1 = (OOC_INT64)left;
  i2 = (OOC_INT64)right;
  i3 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i1, 68698))+8);
  i4 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i2, 68710))+8);
  i3 = OOC_SymbolTable_TypeRules__SameType((OOC_SymbolTable__Type)i3, (OOC_SymbolTable__Type)i4);
  _assert(i3, 127, 68675);
  i3 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i1, 68775))+8);
  i4 = (OOC_INT64)sym;
  i5 = variant;
  OOC_IR__InitBinaryArith((OOC_IR__BinaryArith)i0, (OOC_Scanner_BasicList__Symbol)i4, i5, (OOC_IR__Expression)i1, (OOC_IR__Expression)i2, (OOC_SymbolTable__Type)i3);
  return (OOC_IR__Expression)i0;
  ;
}

void OOC_IR__VisitorDesc_VisitBinaryArith(OOC_IR__Visitor v, OOC_IR__BinaryArith op) {

  return;
  ;
}

void OOC_IR__BinaryArithDesc_Accept(OOC_IR__BinaryArith op, OOC_IR__Visitor v) {
  register OOC_INT64 i0,i1;

  i0 = (OOC_INT64)v;
  i1 = (OOC_INT64)op;
  OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 68980)))), OOC_IR__VisitorDesc_VisitBinaryArith)),OOC_IR__VisitorDesc_VisitBinaryArith)((OOC_IR__Visitor)i0, (OOC_IR__BinaryArith)i1);
  return;
  ;
}

static void OOC_IR__InitBooleanOp(OOC_IR__BooleanOp op, OOC_Scanner_BasicList__Symbol sym, OOC_INT8 variant, OOC_IR__Expression left, OOC_IR__Expression right, OOC_SymbolTable__Type type) {
  register OOC_INT64 i0,i1,i2;

  i0 = (OOC_INT64)op;
  i1 = (OOC_INT64)sym;
  i2 = (OOC_INT64)type;
  OOC_IR__InitOperator((OOC_IR__Operator)i0, (OOC_Scanner_BasicList__Symbol)i1, (OOC_SymbolTable__Type)i2);
  i1 = variant;
  *(OOC_INT8*)((_check_pointer(i0, 69291))+16) = i1;
  i1 = (OOC_INT64)left;
  *(OOC_INT64*)((_check_pointer(i0, 69318))+24) = i1;
  i1 = (OOC_INT64)right;
  *(OOC_INT64*)((_check_pointer(i0, 69339))+32) = i1;
  return;
  ;
}

OOC_IR__Expression OOC_IR__BuilderDesc_NewBooleanOp(OOC_IR__Builder b, OOC_Scanner_BasicList__Symbol sym, OOC_INT8 variant, OOC_IR__Expression left, OOC_IR__Expression right) {
  register OOC_INT64 i0,i1,i2,i3,i4,i5;
  OOC_IR__BooleanOp op;

  i0 = (OOC_INT64)RT0__NewObject(_td_OOC_IR__BooleanOp.baseTypes[0]);
  op = (OOC_IR__BooleanOp)i0;
  i1 = (OOC_INT64)left;
  i2 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i1, 69548))+8);
  i2 = *(OOC_INT16*)((_check_pointer((_type_guard(i2, ((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i2, 69559)))), &_td_OOC_SymbolTable__PredefTypeDesc, 69559)), 69570))+72);
  _assert((i2==0), 127, 69536);
  i2 = (OOC_INT64)right;
  i3 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i2, 69611))+8);
  i3 = *(OOC_INT16*)((_check_pointer((_type_guard(i3, ((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i3, 69622)))), &_td_OOC_SymbolTable__PredefTypeDesc, 69622)), 69633))+72);
  _assert((i3==0), 127, 69598);
  i3 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i1, 69711))+8);
  i4 = (OOC_INT64)sym;
  i5 = variant;
  OOC_IR__InitBooleanOp((OOC_IR__BooleanOp)i0, (OOC_Scanner_BasicList__Symbol)i4, i5, (OOC_IR__Expression)i1, (OOC_IR__Expression)i2, (OOC_SymbolTable__Type)i3);
  return (OOC_IR__Expression)i0;
  ;
}

void OOC_IR__VisitorDesc_VisitBooleanOp(OOC_IR__Visitor v, OOC_IR__BooleanOp op) {

  return;
  ;
}

void OOC_IR__BooleanOpDesc_Accept(OOC_IR__BooleanOp op, OOC_IR__Visitor v) {
  register OOC_INT64 i0,i1;

  i0 = (OOC_INT64)v;
  i1 = (OOC_INT64)op;
  OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 69906)))), OOC_IR__VisitorDesc_VisitBooleanOp)),OOC_IR__VisitorDesc_VisitBooleanOp)((OOC_IR__Visitor)i0, (OOC_IR__BooleanOp)i1);
  return;
  ;
}

static void OOC_IR__InitCap(OOC_IR__Cap cap, OOC_Scanner_BasicList__Symbol sym, OOC_IR__Expression expr) {
  register OOC_INT64 i0,i1,i2,i3;

  i0 = (OOC_INT64)expr;
  i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 70147))+8);
  i2 = (OOC_INT64)cap;
  i3 = (OOC_INT64)sym;
  OOC_IR__InitOperator((OOC_IR__Operator)i2, (OOC_Scanner_BasicList__Symbol)i3, (OOC_SymbolTable__Type)i1);
  *(OOC_INT64*)((_check_pointer(i2, 70163))+16) = i0;
  return;
  ;
}

OOC_IR__Expression OOC_IR__BuilderDesc_NewCap(OOC_IR__Builder b, OOC_Scanner_BasicList__Symbol sym, OOC_IR__Expression expr) {
  register OOC_INT64 i0,i1,i2;

  i0 = (OOC_INT64)RT0__NewObject(_td_OOC_IR__Cap.baseTypes[0]);
  i1 = (OOC_INT64)b;
  i2 = (OOC_INT64)expr;
  i1 = (OOC_INT64)OOC_IR__BuilderDesc_AssertChar((OOC_IR__Builder)i1, (OOC_IR__Expression)i2);
  i2 = (OOC_INT64)sym;
  OOC_IR__InitCap((OOC_IR__Cap)i0, (OOC_Scanner_BasicList__Symbol)i2, (OOC_IR__Expression)i1);
  return (OOC_IR__Expression)i0;
  ;
}

void OOC_IR__VisitorDesc_VisitCap(OOC_IR__Visitor v, OOC_IR__Cap cap) {

  return;
  ;
}

void OOC_IR__CapDesc_Accept(OOC_IR__Cap cap, OOC_IR__Visitor v) {
  register OOC_INT64 i0,i1;

  i0 = (OOC_INT64)v;
  i1 = (OOC_INT64)cap;
  OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 70520)))), OOC_IR__VisitorDesc_VisitCap)),OOC_IR__VisitorDesc_VisitCap)((OOC_IR__Visitor)i0, (OOC_IR__Cap)i1);
  return;
  ;
}

static void OOC_IR__InitChangeElement(OOC_IR__ChangeElement ch, OOC_Scanner_BasicList__Symbol sym, OOC_INT8 variant, OOC_IR__Expression set, OOC_IR__Expression element) {
  register OOC_INT64 i0,i1,i2,i3;

  i0 = (OOC_INT64)set;
  i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 70838))+8);
  i2 = (OOC_INT64)ch;
  i3 = (OOC_INT64)sym;
  OOC_IR__InitOperator((OOC_IR__Operator)i2, (OOC_Scanner_BasicList__Symbol)i3, (OOC_SymbolTable__Type)i1);
  i1 = variant;
  *(OOC_INT8*)((_check_pointer(i2, 70853))+16) = i1;
  *(OOC_INT64*)((_check_pointer(i2, 70881))+24) = i0;
  i0 = (OOC_INT64)element;
  *(OOC_INT64*)((_check_pointer(i2, 70901))+32) = i0;
  return;
  ;
}

OOC_IR__Expression OOC_IR__BuilderDesc_NewChangeElement(OOC_IR__Builder b, OOC_Scanner_BasicList__Symbol sym, OOC_INT8 variant, OOC_IR__Expression set, OOC_IR__Expression element) {
  register OOC_INT64 i0,i1,i2,i3,i4;

  i0 = (OOC_INT64)RT0__NewObject(_td_OOC_IR__ChangeElement.baseTypes[0]);
  i1 = (OOC_INT64)sym;
  i2 = variant;
  i3 = (OOC_INT64)set;
  i4 = (OOC_INT64)element;
  OOC_IR__InitChangeElement((OOC_IR__ChangeElement)i0, (OOC_Scanner_BasicList__Symbol)i1, i2, (OOC_IR__Expression)i3, (OOC_IR__Expression)i4);
  return (OOC_IR__Expression)i0;
  ;
}

void OOC_IR__VisitorDesc_VisitChangeElement(OOC_IR__Visitor v, OOC_IR__ChangeElement ch) {

  return;
  ;
}

void OOC_IR__ChangeElementDesc_Accept(OOC_IR__ChangeElement ch, OOC_IR__Visitor v) {
  register OOC_INT64 i0,i1;

  i0 = (OOC_INT64)v;
  i1 = (OOC_INT64)ch;
  OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 71418)))), OOC_IR__VisitorDesc_VisitChangeElement)),OOC_IR__VisitorDesc_VisitChangeElement)((OOC_IR__Visitor)i0, (OOC_IR__ChangeElement)i1);
  return;
  ;
}

static void OOC_IR__InitCompare(OOC_IR__Compare op, OOC_Scanner_BasicList__Symbol sym, OOC_INT8 variant, OOC_IR__Expression left, OOC_IR__Expression right) {
  register OOC_INT64 i0,i1,i2;

  i0 = (OOC_INT64)OOC_SymbolTable_Predef__GetType(0);
  i1 = (OOC_INT64)op;
  i2 = (OOC_INT64)sym;
  OOC_IR__InitOperator((OOC_IR__Operator)i1, (OOC_Scanner_BasicList__Symbol)i2, (OOC_SymbolTable__Type)i0);
  i0 = (OOC_INT64)left;
  *(OOC_INT64*)((_check_pointer(i1, 71734))+24) = i0;
  i0 = (OOC_INT64)right;
  *(OOC_INT64*)((_check_pointer(i1, 71755))+32) = i0;
  i0 = variant;
  *(OOC_INT8*)((_check_pointer(i1, 71778))+16) = i0;
  return;
  ;
}

OOC_IR__Compare OOC_IR__BuilderDesc_NewCompare(OOC_IR__Builder b, OOC_Scanner_BasicList__Symbol sym, OOC_IR__Expression left, OOC_IR__Expression right) {
  register OOC_INT64 i0,i1,i2,i3,i4;
  OOC_INT8 variant;

  i0 = (OOC_INT64)sym;
  i1 = *(OOC_INT8*)((_check_pointer(i0, 72021))+8);
  switch (i1) {
  case 9:
    variant = 10;
    goto l9;
  case 10:
    variant = 11;
    goto l9;
  case 11:
    variant = 12;
    goto l9;
  case 12:
    variant = 13;
    goto l9;
  case 13:
    variant = 14;
    goto l9;
  case 14:
    variant = 15;
    goto l9;
  default:
    _failed_case(i1, 72013);
    goto l9;
  }
l9:
  i1 = (OOC_INT64)left;
  i2 = (OOC_INT64)right;
  i3 = (OOC_INT64)RT0__NewObject(_td_OOC_IR__Compare.baseTypes[0]);
  i4 = variant;
  OOC_IR__InitCompare((OOC_IR__Compare)i3, (OOC_Scanner_BasicList__Symbol)i0, i4, (OOC_IR__Expression)i1, (OOC_IR__Expression)i2);
  return (OOC_IR__Compare)i3;
  ;
}

void OOC_IR__VisitorDesc_VisitCompare(OOC_IR__Visitor v, OOC_IR__Compare op) {

  return;
  ;
}

void OOC_IR__CompareDesc_Accept(OOC_IR__Compare op, OOC_IR__Visitor v) {
  register OOC_INT64 i0,i1;

  i0 = (OOC_INT64)v;
  i1 = (OOC_INT64)op;
  OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 72490)))), OOC_IR__VisitorDesc_VisitCompare)),OOC_IR__VisitorDesc_VisitCompare)((OOC_IR__Visitor)i0, (OOC_IR__Compare)i1);
  return;
  ;
}

static void OOC_IR__InitConcat(OOC_IR__Concat op, OOC_Scanner_BasicList__Symbol sym, OOC_SymbolTable__Type type, OOC_IR__ExpressionList strings) {
  register OOC_INT64 i0,i1,i2;

  i0 = (OOC_INT64)op;
  i1 = (OOC_INT64)sym;
  i2 = (OOC_INT64)type;
  OOC_IR__InitOperator((OOC_IR__Operator)i0, (OOC_Scanner_BasicList__Symbol)i1, (OOC_SymbolTable__Type)i2);
  i1 = (OOC_INT64)strings;
  *(OOC_INT64*)((_check_pointer(i0, 72790))+16) = i1;
  return;
  ;
}

OOC_IR__Concat OOC_IR__BuilderDesc_NewConcat(OOC_IR__Builder b, OOC_Scanner_BasicList__Symbol sym, OOC_IR__ExpressionList strings) {
  register OOC_INT64 i0,i1,i2,i3,i4,i5,i6,i7,i8;
  OOC_INT16 id;
  OOC_INT32 i;
  OOC_SymbolTable__Type type;
  OOC_INT16 tid;
  OOC_CHAR8 dummy;

  id = (-1);
  i0 = (OOC_INT64)strings;
  i = 0;
  i1 = OOC_ARRAY_LENGTH((_check_pointer(i0, 73062)), 0);
  i2 = (OOC_INT64)sym;
  i3 = 0<i1;
  if (i3) goto l3;
  i1=(-1);
  goto l28;
l3:
  i3 = (OOC_INT64)b;
  i4=0;i5=(-1);
l4_loop:
  i6 = _check_pointer(i0, 73091);
  i7 = OOC_ARRAY_LENGTH(i6, 0);
  i6 = (OOC_INT64)*(OOC_INT64*)(i6+(_check_index(i4, i7, OOC_UINT32, 73091))*8);
  i6 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i6, 73094))+8);
  type = (OOC_SymbolTable__Type)i6;
  tid = 32767;
  i7 = OOC_SymbolTable_TypeRules__IsStringConst((OOC_SymbolTable__Type)i6);
  if (i7) goto l18;
  i7 = OOC_SymbolTable_TypeRules__IsCharType((OOC_SymbolTable__Type)i6);
  if (i7) goto l12;
  i6 = OOC_SymbolTable_TypeRules__IsSTRING((OOC_SymbolTable__Type)i6);
  i6 = !i6;
  if (!i6) goto l11;
  OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i3, 73585)))), OOC_IR__BuilderDesc_ErrSym)),OOC_IR__BuilderDesc_ErrSym)((OOC_IR__Builder)i3, 7, (OOC_Scanner_BasicList__Symbol)i2);
l11:
  i6=32767;
  goto l19;
l12:
  i7 = _check_pointer(i0, 73343);
  i8 = OOC_ARRAY_LENGTH(i7, 0);
  i6 = (OOC_INT64)OOC_SymbolTable_TypeRules__MatchingStringConst((OOC_SymbolTable__Type)i6);
  i6 = OOC_IR__BuilderDesc_Widen((OOC_IR__Builder)i3, (void*)(i7+(_check_index(i4, i8, OOC_UINT32, 73343))*8), (OOC_SymbolTable__Type)i6);
  if (i6) goto l15;
  OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i3, 73460)))), OOC_IR__BuilderDesc_ErrSym)),OOC_IR__BuilderDesc_ErrSym)((OOC_IR__Builder)i3, 7, (OOC_Scanner_BasicList__Symbol)i2);
  i6=32767;
  goto l19;
l15:
  i6 = _check_pointer(i0, 73407);
  i7 = OOC_ARRAY_LENGTH(i6, 0);
  i6 = (OOC_INT64)*(OOC_INT64*)(i6+(_check_index(i4, i7, OOC_UINT32, 73407))*8);
  i6 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i6, 73410))+8);
  i6 = *(OOC_INT16*)((_check_pointer((_type_guard(i6, ((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i6, 73420)))), &_td_OOC_SymbolTable__PredefTypeDesc, 73420)), 73431))+72);
  tid = i6;
  
  goto l19;
l18:
  i6 = *(OOC_INT16*)((_check_pointer((_type_guard(i6, ((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i6, 73222)))), &_td_OOC_SymbolTable__PredefTypeDesc, 73222)), 73233))+72);
  tid = i6;
  
l19:
  i7 = i6>i5;
  if (!i7) goto l23;
  id = i6;
  i5=i6;
l23:
  i4 = i4+1;
  i = i4;
  i6 = i4<i1;
  if (i6) goto l4_loop;
l27:
  i1=i5;
l28:
  i3 = i1<32767;
  if (i3) goto l42;
  i1 = (OOC_INT64)b;
  i3 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i1, 73900))+64);
  type = (OOC_SymbolTable__Type)i3;
  i = 0;
  i4 = OOC_ARRAY_LENGTH((_check_pointer(i0, 73944)), 0);
  i5 = 0<i4;
  if (!i5) goto l41;
  i5=0;
l33_loop:
  i6 = _check_pointer(i0, 73987);
  i7 = OOC_ARRAY_LENGTH(i6, 0);
  i6 = (OOC_INT64)*(OOC_INT64*)(i6+(_check_index(i5, i7, OOC_UINT32, 73987))*8);
  i6 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i6, 73990))+8);
  i6 = OOC_SymbolTable_TypeRules__IsStringConst((OOC_SymbolTable__Type)i6);
  if (!i6) goto l36;
  i6 = _check_pointer(i0, 74095);
  i7 = OOC_ARRAY_LENGTH(i6, 0);
  i6 = OOC_IR__BuilderDesc_Widen((OOC_IR__Builder)i1, (void*)(i6+(_check_index(i5, i7, OOC_UINT32, 74095))*8), (OOC_SymbolTable__Type)i3);
  dummy = i6;
  _assert(i6, 127, 74117);
l36:
  i5 = i5+1;
  i = i5;
  i6 = i5<i4;
  if (i6) goto l33_loop;
l41:
  i1=i3;
  goto l51;
l42:
  i1 = (OOC_INT64)OOC_SymbolTable_Predef__GetType(i1);
  type = (OOC_SymbolTable__Type)i1;
  i = 0;
  i3 = OOC_ARRAY_LENGTH((_check_pointer(i0, 73790)), 0);
  i4 = 0<i3;
  if (!i4) goto l51;
  i4 = (OOC_INT64)b;
  i5=0;
l45_loop:
  i6 = _check_pointer(i0, 73830);
  i7 = OOC_ARRAY_LENGTH(i6, 0);
  i6 = OOC_IR__BuilderDesc_Widen((OOC_IR__Builder)i4, (void*)(i6+(_check_index(i5, i7, OOC_UINT32, 73830))*8), (OOC_SymbolTable__Type)i1);
  dummy = i6;
  _assert(i6, 127, 73850);
  i5 = i5+1;
  i = i5;
  i6 = i5<i3;
  if (i6) goto l45_loop;
l51:
  i3 = (OOC_INT64)RT0__NewObject(_td_OOC_IR__Concat.baseTypes[0]);
  OOC_IR__InitConcat((OOC_IR__Concat)i3, (OOC_Scanner_BasicList__Symbol)i2, (OOC_SymbolTable__Type)i1, (OOC_IR__ExpressionList)i0);
  return (OOC_IR__Concat)i3;
  ;
}

void OOC_IR__VisitorDesc_VisitConcat(OOC_IR__Visitor v, OOC_IR__Concat op) {

  return;
  ;
}

void OOC_IR__ConcatDesc_Accept(OOC_IR__Concat op, OOC_IR__Visitor v) {
  register OOC_INT64 i0,i1;

  i0 = (OOC_INT64)v;
  i1 = (OOC_INT64)op;
  OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 74397)))), OOC_IR__VisitorDesc_VisitConcat)),OOC_IR__VisitorDesc_VisitConcat)((OOC_IR__Visitor)i0, (OOC_IR__Concat)i1);
  return;
  ;
}

static void OOC_IR__InitConstructor(OOC_IR__Constructor cons, OOC_Scanner_BasicList__Symbol sym, OOC_IR__NewObject alloc, OOC_IR__Call init) {
  register OOC_INT64 i0,i1,i2,i3;

  i0 = (OOC_INT64)alloc;
  i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 74700))+8);
  i2 = (OOC_INT64)cons;
  i3 = (OOC_INT64)sym;
  OOC_IR__InitOperator((OOC_IR__Operator)i2, (OOC_Scanner_BasicList__Symbol)i3, (OOC_SymbolTable__Type)i1);
  *(OOC_INT64*)((_check_pointer(i2, 74716))+16) = i0;
  i0 = (OOC_INT64)init;
  *(OOC_INT64*)((_check_pointer(i2, 74741))+24) = i0;
  return;
  ;
}

OOC_IR__Expression OOC_IR__BuilderDesc_NewConstructor(OOC_IR__Builder b, OOC_Scanner_BasicList__Symbol sym, OOC_IR__Expression type, OOC_IR__ExpressionList arguments, OOC_SymbolTable__Item context, OOC_Scanner_BasicList__Symbol endOfArgsSym) {
  register OOC_INT64 i0,i1,i2,i3,i4,i5,i6,i7;
  OOC_SymbolTable__Type consType;
  OOC_SymbolTable__Type ptr;
  OOC_SymbolTable__Type qualRecord;
  OOC_SymbolTable__Record consClass;
  OOC_SymbolTable__Name n;
  OOC_SymbolTable__Declaration initDecl;
  OOC_IR__Call init;
  OOC_IR__Expression pseudoDesign;
  OOC_IR__Expression expr;

  i0 = (OOC_INT64)type;
  i1 = (OOC_INT64)b;
  i2 = !(OOC_TYPE_TEST(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 75306)))), &_td_OOC_IR__TypeRefDesc));
  if (i2) goto l3;
  i2 = (OOC_INT64)*(OOC_INT64*)((_check_pointer((_type_guard(i0, ((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 75346)))), &_td_OOC_IR__TypeRefDesc, 75346)), 75354))+24);
  i2 = OOC_SymbolTable_TypeRules__IsRecordPointer((OOC_SymbolTable__Type)i2);
  i2 = !i2;
  
  goto l5;
l3:
  i2=1u;
l5:
  if (!i2) goto l7;
  i2 = (OOC_INT64)*(OOC_INT64*)(_check_pointer(i0, 75419));
  i2 = (OOC_INT64)OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i1, 75384)))), OOC_IR__BuilderDesc_ErrExpr)),OOC_IR__BuilderDesc_ErrExpr)((OOC_IR__Builder)i1, 73, (OOC_Scanner_BasicList__Symbol)i2);
  return (OOC_IR__Expression)i2;
l7:
  i0 = (OOC_INT64)*(OOC_INT64*)((_check_pointer((_type_guard(i0, ((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 75456)))), &_td_OOC_IR__TypeRefDesc, 75456)), 75464))+24);
  i0 = (OOC_INT64)OOC_SymbolTable__Expand((OOC_SymbolTable__Type)i0);
  consType = (OOC_SymbolTable__Type)i0;
  i2 = (OOC_INT64)OOC_SymbolTable_TypeRules__PointerBaseType((OOC_SymbolTable__Type)i0);
  ptr = (OOC_SymbolTable__Type)i2;
  i3 = (OOC_INT64)OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 75580)))), OOC_SymbolTable__TypeDesc_Closure)),OOC_SymbolTable__TypeDesc_Closure)((OOC_SymbolTable__Type)i0, (OOC_SymbolTable__Type)i2);
  qualRecord = (OOC_SymbolTable__Type)i3;
  i2 = (OOC_INT64)OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i2, 75609)))), OOC_SymbolTable__TypeDesc_Deparam)),OOC_SymbolTable__TypeDesc_Deparam)((OOC_SymbolTable__Type)i2);
  ptr = (OOC_SymbolTable__Type)i2;
  i2 = _type_guard(i2, ((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i2, 75646)))), &_td_OOC_SymbolTable__RecordDesc, 75646);
  consClass = (OOC_SymbolTable__Record)i2;
  i4 = (OOC_INT64)sym;
  i5 = (OOC_INT64)OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i1, 75714)))), OOC_IR__BuilderDesc_GetName2)),OOC_IR__BuilderDesc_GetName2)((OOC_IR__Builder)i1, (OOC_Scanner_BasicList__Symbol)i4, "INIT", 5);
  n = (OOC_SymbolTable__Name)i5;
  i6 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i2, 75774))+96);
  i2 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i2, 75774))+96);
  i7 = (OOC_INT64)context;
  i2 = (OOC_INT64)OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i6, 75777)))), OOC_SymbolTable__NamespaceDesc_Identify)),OOC_SymbolTable__NamespaceDesc_Identify)((OOC_SymbolTable__Namespace)i2, (OOC_SymbolTable__Item)i7, (OOC_SymbolTable__Name)i5, 0u);
  initDecl = (OOC_SymbolTable__Declaration)i2;
  i6 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i1, 75832))+32);
  OOC_SymbolTable_Uses__Mark((OOC_SymbolTable__Declaration)i2, (OOC_SymbolTable_Uses__Uses)i6, (OOC_SymbolTable__Name)i5);
  init = (OOC_IR__Call)0;
  i5 = i2==0;
  if (i5) goto l10;
  i5 = !(OOC_TYPE_TEST(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i2, 75898)))), &_td_OOC_SymbolTable__ProcDeclDesc));
  
  goto l12;
l10:
  i5=1u;
l12:
  if (i5) goto l18;
  i5 = (OOC_INT64)OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i1, 76061)))), OOC_IR__BuilderDesc_NewNil)),OOC_IR__BuilderDesc_NewNil)((OOC_IR__Builder)i1, (OOC_Scanner_BasicList__Symbol)i4);
  pseudoDesign = (OOC_IR__Expression)i5;
  i2 = (OOC_INT64)OOC_IR__BuilderDesc_NewSelectProc((OOC_IR__Builder)i1, (OOC_Scanner_BasicList__Symbol)i4, (OOC_IR__Expression)i5, (OOC_SymbolTable__Type)i3, (OOC_SymbolTable__ProcDecl)(_type_guard(i2, ((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i2, 76195)))), &_td_OOC_SymbolTable__ProcDeclDesc, 76195)), (OOC_Scanner_BasicList__Symbol)i4, 1u);
  pseudoDesign = (OOC_IR__Expression)i2;
  i3 = (OOC_INT64)endOfArgsSym;
  i5 = (OOC_INT64)arguments;
  i2 = (OOC_INT64)OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i1, 76233)))), OOC_IR__BuilderDesc_NewCall)),OOC_IR__BuilderDesc_NewCall)((OOC_IR__Builder)i1, (OOC_IR__Expression)i2, (OOC_IR__ExpressionList)i5, 0u, (OOC_SymbolTable__Item)i7, (OOC_Scanner_BasicList__Symbol)i3);
  expr = (OOC_IR__Expression)i2;
  i3 = OOC_TYPE_TEST(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i2, 76313)))), &_td_OOC_IR__CallDesc);
  if (i3) goto l16;
  i2=0;
  goto l22;
l16:
  i2 = _type_guard(i2, ((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i2, 76348)))), &_td_OOC_IR__CallDesc, 76348);
  
  goto l22;
l18:
  i2 = (OOC_INT64)arguments;
  i3 = OOC_ARRAY_LENGTH((_check_pointer(i2, 75943)), 0);
  i3 = i3!=0;
  if (!i3) goto l21;
  i2 = _check_pointer(i2, 76008);
  i3 = OOC_ARRAY_LENGTH(i2, 0);
  i2 = (OOC_INT64)*(OOC_INT64*)(i2+(_check_index(0, i3, OOC_UINT8, 76008))*8);
  i2 = (OOC_INT64)*(OOC_INT64*)(_check_pointer(i2, 76011));
  i2 = (OOC_INT64)OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i1, 75972)))), OOC_IR__BuilderDesc_ErrExpr)),OOC_IR__BuilderDesc_ErrExpr)((OOC_IR__Builder)i1, 39, (OOC_Scanner_BasicList__Symbol)i2);
  return (OOC_IR__Expression)i2;
l21:
  i2=0;
l22:
  i3 = (OOC_INT64)RT0__NewObject(_td_OOC_IR__Constructor.baseTypes[0]);
  i0 = (OOC_INT64)OOC_SymbolTable__Expand((OOC_SymbolTable__Type)i0);
  i0 = (OOC_INT64)OOC_IR__BuilderDesc_NewNewObject((OOC_IR__Builder)i1, (OOC_Scanner_BasicList__Symbol)i4, (OOC_SymbolTable__Type)i0, (OOC_IR__ExpressionList)0);
  OOC_IR__InitConstructor((OOC_IR__Constructor)i3, (OOC_Scanner_BasicList__Symbol)i4, (OOC_IR__NewObject)i0, (OOC_IR__Call)i2);
  return (OOC_IR__Expression)i3;
  ;
}

void OOC_IR__VisitorDesc_VisitConstructor(OOC_IR__Visitor v, OOC_IR__Constructor cons) {

  return;
  ;
}

void OOC_IR__ConstructorDesc_Accept(OOC_IR__Constructor cons, OOC_IR__Visitor v) {
  register OOC_INT64 i0,i1;

  i0 = (OOC_INT64)v;
  i1 = (OOC_INT64)cons;
  OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 76712)))), OOC_IR__VisitorDesc_VisitConstructor)),OOC_IR__VisitorDesc_VisitConstructor)((OOC_IR__Visitor)i0, (OOC_IR__Constructor)i1);
  return;
  ;
}

static void OOC_IR__InitCurrentException(OOC_IR__CurrentException ce, OOC_Scanner_BasicList__Symbol sym, OOC_SymbolTable__Type type) {
  register OOC_INT64 i0,i1,i2;

  i0 = (OOC_INT64)ce;
  i1 = (OOC_INT64)sym;
  i2 = (OOC_INT64)type;
  OOC_IR__InitOperator((OOC_IR__Operator)i0, (OOC_Scanner_BasicList__Symbol)i1, (OOC_SymbolTable__Type)i2);
  *(OOC_INT64*)((_check_pointer(i0, 77030))+16) = (OOC_INT64)0;
  return;
  ;
}

OOC_IR__Expression OOC_IR__BuilderDesc_NewCurrentException(OOC_IR__Builder b, OOC_Scanner_BasicList__Symbol sym, OOC_SymbolTable__Type type) {
  register OOC_INT64 i0,i1,i2;

  i0 = (OOC_INT64)RT0__NewObject(_td_OOC_IR__CurrentException.baseTypes[0]);
  i1 = (OOC_INT64)sym;
  i2 = (OOC_INT64)type;
  OOC_IR__InitCurrentException((OOC_IR__CurrentException)i0, (OOC_Scanner_BasicList__Symbol)i1, (OOC_SymbolTable__Type)i2);
  return (OOC_IR__Expression)i0;
  ;
}

void OOC_IR__VisitorDesc_VisitCurrentException(OOC_IR__Visitor v, OOC_IR__CurrentException ce) {

  return;
  ;
}

void OOC_IR__CurrentExceptionDesc_Accept(OOC_IR__CurrentException ce, OOC_IR__Visitor v) {
  register OOC_INT64 i0,i1;

  i0 = (OOC_INT64)v;
  i1 = (OOC_INT64)ce;
  OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 77517)))), OOC_IR__VisitorDesc_VisitCurrentException)),OOC_IR__VisitorDesc_VisitCurrentException)((OOC_IR__Visitor)i0, (OOC_IR__CurrentException)i1);
  return;
  ;
}

static void OOC_IR__InitDeref(OOC_IR__Deref d, OOC_Scanner_BasicList__Symbol sym, OOC_IR__Expression pointer, OOC_CHAR8 checkPointer) {
  register OOC_INT64 i0,i1,i2,i3;
  OOC_SymbolTable__Type baseType;

  i0 = (OOC_INT64)pointer;
  i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 77874))+8);
  i2 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 77874))+8);
  i1 = (OOC_INT64)OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i1, 77879)))), OOC_SymbolTable__TypeDesc_Deparam)),OOC_SymbolTable__TypeDesc_Deparam)((OOC_SymbolTable__Type)i2);
  baseType = (OOC_SymbolTable__Type)i1;
  i1 = (OOC_INT64)OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i1, 77915)))), OOC_SymbolTable__TypeDesc_Bound)),OOC_SymbolTable__TypeDesc_Bound)((OOC_SymbolTable__Type)i1);
  baseType = (OOC_SymbolTable__Type)i1;
  i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer((_type_guard(i1, ((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i1, 77954)))), &_td_OOC_SymbolTable__PointerDesc, 77954)), 77962))+72);
  baseType = (OOC_SymbolTable__Type)i1;
  i2 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 78011))+8);
  i3 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 78011))+8);
  i1 = (OOC_INT64)OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i2, 78016)))), OOC_SymbolTable__TypeDesc_Closure)),OOC_SymbolTable__TypeDesc_Closure)((OOC_SymbolTable__Type)i3, (OOC_SymbolTable__Type)i1);
  i2 = (OOC_INT64)d;
  i3 = (OOC_INT64)sym;
  OOC_IR__InitOperator((OOC_IR__Operator)i2, (OOC_Scanner_BasicList__Symbol)i3, (OOC_SymbolTable__Type)i1);
  *(OOC_INT64*)((_check_pointer(i2, 78042))+16) = i0;
  i0 = checkPointer;
  *(OOC_UINT8*)((_check_pointer(i2, 78069))+24) = i0;
  return;
  ;
}

OOC_IR__Expression OOC_IR__BuilderDesc_NewDeref(OOC_IR__Builder b, OOC_Scanner_BasicList__Symbol sym, OOC_IR__Expression design) {
  register OOC_INT64 i0,i1,i2,i3,i4,i5;
  OOC_SymbolTable__Type type;
  OOC_SymbolTable__Record _class;
  OOC_IR__Deref i;

  i0 = (OOC_INT64)design;
  i1 = OOC_TYPE_TEST(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 78285)))), &_td_OOC_IR__SelectProcDesc);
  if (i1) goto l7;
  i1 = (OOC_INT64)sym;
  i2 = (OOC_INT64)b;
  OOC_IR__BuilderDesc_CheckFunctionOp((OOC_IR__Builder)i2, (OOC_IR__Expression)i0, (OOC_Scanner_BasicList__Symbol)i1);
  i3 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 79044))+8);
  i4 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 79044))+8);
  i3 = (OOC_INT64)OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i3, 79049)))), OOC_SymbolTable__TypeDesc_Deparam)),OOC_SymbolTable__TypeDesc_Deparam)((OOC_SymbolTable__Type)i4);
  type = (OOC_SymbolTable__Type)i3;
  i3 = (OOC_INT64)OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i3, 79076)))), OOC_SymbolTable__TypeDesc_Bound)),OOC_SymbolTable__TypeDesc_Bound)((OOC_SymbolTable__Type)i3);
  i3 = !(OOC_TYPE_TEST(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i3, 79085)))), &_td_OOC_SymbolTable__PointerDesc));
  if (i3) goto l5;
  i3 = (OOC_INT64)RT0__NewObject(_td_OOC_IR__Deref.baseTypes[0]);
  i = (OOC_IR__Deref)i3;
  i4 = *(OOC_INT32*)((_check_pointer(i1, 79283))+28);
  i5 = (OOC_INT64)OOC_Config_StdPragmas__derefCheck;
  i2 = OOC_IR__GetPragmaValue((OOC_IR__Builder)i2, (Config_Section_Options__Option)i5, i4);
  OOC_IR__InitDeref((OOC_IR__Deref)i3, (OOC_Scanner_BasicList__Symbol)i1, (OOC_IR__Expression)i0, i2);
  return (OOC_IR__Expression)i3;
  goto l19;
l5:
  i0 = (OOC_INT64)*(OOC_INT64*)(_check_pointer(i0, 79149));
  i0 = (OOC_INT64)OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i2, 79122)))), OOC_IR__BuilderDesc_ErrExpr)),OOC_IR__BuilderDesc_ErrExpr)((OOC_IR__Builder)i2, 21, (OOC_Scanner_BasicList__Symbol)i0);
  return (OOC_IR__Expression)i0;
  goto l19;
l7:
  i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 78362))+24);
  i2 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 78362))+24);
  i1 = (OOC_INT64)OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i1, 78373)))), OOC_SymbolTable__TypeDesc_Deparam)),OOC_SymbolTable__TypeDesc_Deparam)((OOC_SymbolTable__Type)i2);
  type = (OOC_SymbolTable__Type)i1;
  i1 = _type_guard(i1, ((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i1, 78409)))), &_td_OOC_SymbolTable__RecordDesc, 78409);
  _class = (OOC_SymbolTable__Record)i1;
  i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i1, 78447))+96);
  i2 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 78508))+40);
  i2 = *(OOC_INT32*)((_check_pointer(i2, 78515))+96);
  i1 = (OOC_INT64)OOC_SymbolTable_Namespace__ExtendedDesc_GetSuperProcByIndex((OOC_SymbolTable_Namespace__Extended)(_type_guard(i1, ((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i1, 78461)))), &_td_OOC_SymbolTable_Namespace__ExtendedDesc, 78461)), i2);
  *(OOC_INT64*)((_check_pointer(i0, 78430))+40) = i1;
  i1 = *(OOC_UINT8*)((_check_pointer(i0, 78545))+57);
  if (i1) goto l17;
  i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 78633))+40);
  i1 = i1==(OOC_INT64)0;
  if (i1) goto l15;
  i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 78747))+40);
  i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i1, 78755))+112);
  *(OOC_INT64*)((_check_pointer(i0, 78731))+8) = i1;
  *(OOC_UINT8*)((_check_pointer(i0, 78783))+56) = 1u;
  *(OOC_UINT8*)((_check_pointer(i0, 78821))+57) = 1u;
  i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 78861))+40);
  i1 = *(OOC_UINT8*)((_check_pointer(i1, 78868))+90);
  if (!i1) goto l14;
  i1 = (OOC_INT64)b;
  i2 = (OOC_INT64)sym;
  OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i1, 78896)))), OOC_IR__BuilderDesc_ErrSym)),OOC_IR__BuilderDesc_ErrSym)((OOC_IR__Builder)i1, 58, (OOC_Scanner_BasicList__Symbol)i2);
l14:
  return (OOC_IR__Expression)i0;
  goto l19;
l15:
  i0 = (OOC_INT64)b;
  i1 = (OOC_INT64)sym;
  i0 = (OOC_INT64)OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 78669)))), OOC_IR__BuilderDesc_ErrExpr)),OOC_IR__BuilderDesc_ErrExpr)((OOC_IR__Builder)i0, 59, (OOC_Scanner_BasicList__Symbol)i1);
  return (OOC_IR__Expression)i0;
  goto l19;
l17:
  i0 = (OOC_INT64)b;
  i1 = (OOC_INT64)sym;
  i0 = (OOC_INT64)OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 78579)))), OOC_IR__BuilderDesc_ErrExpr)),OOC_IR__BuilderDesc_ErrExpr)((OOC_IR__Builder)i0, 60, (OOC_Scanner_BasicList__Symbol)i1);
  return (OOC_IR__Expression)i0;
l19:
  _failed_function(78142); return 0;
  ;
}

void OOC_IR__VisitorDesc_VisitDeref(OOC_IR__Visitor v, OOC_IR__Deref index) {

  return;
  ;
}

void OOC_IR__DerefDesc_Accept(OOC_IR__Deref index, OOC_IR__Visitor v) {
  register OOC_INT64 i0,i1;

  i0 = (OOC_INT64)v;
  i1 = (OOC_INT64)index;
  OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 79486)))), OOC_IR__VisitorDesc_VisitDeref)),OOC_IR__VisitorDesc_VisitDeref)((OOC_IR__Visitor)i0, (OOC_IR__Deref)i1);
  return;
  ;
}

static void OOC_IR__InitEntier(OOC_IR__Entier entier, OOC_Scanner_BasicList__Symbol sym, OOC_IR__Expression expr) {
  register OOC_INT64 i0,i1,i2;

  i0 = (OOC_INT64)OOC_SymbolTable_Predef__GetType(6);
  i1 = (OOC_INT64)entier;
  i2 = (OOC_INT64)sym;
  OOC_IR__InitOperator((OOC_IR__Operator)i1, (OOC_Scanner_BasicList__Symbol)i2, (OOC_SymbolTable__Type)i0);
  i0 = (OOC_INT64)expr;
  *(OOC_INT64*)((_check_pointer(i1, 79781))+16) = i0;
  return;
  ;
}

OOC_IR__Expression OOC_IR__BuilderDesc_NewEntier(OOC_IR__Builder b, OOC_Scanner_BasicList__Symbol sym, OOC_IR__Expression expr) {
  register OOC_INT64 i0,i1,i2;

  i0 = (OOC_INT64)RT0__NewObject(_td_OOC_IR__Entier.baseTypes[0]);
  i1 = (OOC_INT64)b;
  i2 = (OOC_INT64)expr;
  i1 = (OOC_INT64)OOC_IR__BuilderDesc_AssertReal((OOC_IR__Builder)i1, (OOC_IR__Expression)i2);
  i2 = (OOC_INT64)sym;
  OOC_IR__InitEntier((OOC_IR__Entier)i0, (OOC_Scanner_BasicList__Symbol)i2, (OOC_IR__Expression)i1);
  return (OOC_IR__Expression)i0;
  ;
}

void OOC_IR__VisitorDesc_VisitEntier(OOC_IR__Visitor v, OOC_IR__Entier entier) {

  return;
  ;
}

void OOC_IR__EntierDesc_Accept(OOC_IR__Entier entier, OOC_IR__Visitor v) {
  register OOC_INT64 i0,i1;

  i0 = (OOC_INT64)v;
  i1 = (OOC_INT64)entier;
  OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 80183)))), OOC_IR__VisitorDesc_VisitEntier)),OOC_IR__VisitorDesc_VisitEntier)((OOC_IR__Visitor)i0, (OOC_IR__Entier)i1);
  return;
  ;
}

static void OOC_IR__InitIndex(OOC_IR__Index i, OOC_Scanner_BasicList__Symbol sym, OOC_IR__Expression array, OOC_IR__Expression index, OOC_CHAR8 checkIndex) {
  register OOC_INT64 i0,i1,i2,i3;
  OOC_SymbolTable__Type elementType;

  i0 = (OOC_INT64)array;
  i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 80542))+8);
  i2 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 80542))+8);
  i1 = (OOC_INT64)OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i1, 80547)))), OOC_SymbolTable__TypeDesc_Deparam)),OOC_SymbolTable__TypeDesc_Deparam)((OOC_SymbolTable__Type)i2);
  elementType = (OOC_SymbolTable__Type)i1;
  i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer((_type_guard(i1, ((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i1, 80594)))), &_td_OOC_SymbolTable__ArrayDesc, 80594)), 80600))+80);
  elementType = (OOC_SymbolTable__Type)i1;
  i2 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 80650))+8);
  i3 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 80650))+8);
  i1 = (OOC_INT64)OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i2, 80655)))), OOC_SymbolTable__TypeDesc_Closure)),OOC_SymbolTable__TypeDesc_Closure)((OOC_SymbolTable__Type)i3, (OOC_SymbolTable__Type)i1);
  i2 = (OOC_INT64)i;
  i3 = (OOC_INT64)sym;
  OOC_IR__InitOperator((OOC_IR__Operator)i2, (OOC_Scanner_BasicList__Symbol)i3, (OOC_SymbolTable__Type)i1);
  *(OOC_INT64*)((_check_pointer(i2, 80684))+16) = i0;
  i0 = (OOC_INT64)index;
  *(OOC_INT64*)((_check_pointer(i2, 80706))+24) = i0;
  i0 = checkIndex;
  *(OOC_UINT8*)((_check_pointer(i2, 80728))+32) = i0;
  return;
  ;
}

OOC_IR__Expression OOC_IR__BuilderDesc_NewIndex(OOC_IR__Builder b, OOC_Scanner_BasicList__Symbol sym, OOC_IR__Expression array, OOC_IR__Expression index) {
  register OOC_INT64 i0,i1,i2,i3,i4,i5,i6;
  OOC_CHAR8 checkIndex;
  OOC_SymbolTable__Type type;
  OOC_SymbolTable__Array a;

  i0 = (OOC_INT64)sym;
  i1 = *(OOC_INT32*)((_check_pointer(i0, 81031))+28);
  i2 = (OOC_INT64)b;
  i3 = (OOC_INT64)OOC_Config_StdPragmas__indexCheck;
  i1 = OOC_IR__GetPragmaValue((OOC_IR__Builder)i2, (Config_Section_Options__Option)i3, i1);
  checkIndex = i1;
  i3 = (OOC_INT64)array;
  OOC_IR__BuilderDesc_CheckFunctionOp((OOC_IR__Builder)i2, (OOC_IR__Expression)i3, (OOC_Scanner_BasicList__Symbol)i0);
  i4 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i3, 81096))+8);
  i5 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i3, 81096))+8);
  i4 = (OOC_INT64)OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i4, 81101)))), OOC_SymbolTable__TypeDesc_Deparam)),OOC_SymbolTable__TypeDesc_Deparam)((OOC_SymbolTable__Type)i5);
  type = (OOC_SymbolTable__Type)i4;
  i5 = OOC_TYPE_TEST(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i4, 81126)))), &_td_OOC_SymbolTable__PointerDesc);
  if (i5) goto l3;
  {register OOC_INT64 h0=i3;i3=i4;i4=h0;}
  goto l4;
l3:
  i3 = (OOC_INT64)OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i2, 81163)))), OOC_IR__BuilderDesc_NewDeref)),OOC_IR__BuilderDesc_NewDeref)((OOC_IR__Builder)i2, (OOC_Scanner_BasicList__Symbol)i0, (OOC_IR__Expression)i3);
  array = (OOC_IR__Expression)i3;
  i4 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i3, 81207))+8);
  i5 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i3, 81207))+8);
  i4 = (OOC_INT64)OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i4, 81212)))), OOC_SymbolTable__TypeDesc_Deparam)),OOC_SymbolTable__TypeDesc_Deparam)((OOC_SymbolTable__Type)i5);
  type = (OOC_SymbolTable__Type)i4;
  {register OOC_INT64 h0=i3;i3=i4;i4=h0;}
l4:
  i5 = !(OOC_TYPE_TEST(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i3, 81247)))), &_td_OOC_SymbolTable__ArrayDesc));
  if (i5) goto l18;
  i3 = _type_guard(i3, ((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i3, 81336)))), &_td_OOC_SymbolTable__ArrayDesc, 81336);
  a = (OOC_SymbolTable__Array)i3;
  if (i1) goto l9;
  i1=0u;
  goto l10;
l9:
  i1 = *(OOC_UINT8*)((_check_pointer(i3, 81378))+73);
  
l10:
  checkIndex = i1;
  i5 = (OOC_INT64)index;
  i5 = (OOC_INT64)OOC_IR__BuilderDesc_AssertInteger((OOC_IR__Builder)i2, (OOC_IR__Expression)i5);
  index = (OOC_IR__Expression)i5;
  i6 = OOC_TYPE_TEST(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i5, 81448)))), &_td_OOC_IR__ConstDesc);
  if (!i6) goto l17;
  i6 = *(OOC_UINT8*)((_check_pointer(i3, 81474))+72);
  if (i6) goto l15;
  i3 = *(OOC_INT32*)((_check_pointer(i3, 81767))+96);
  i2 = OOC_IR__BuilderDesc_AssertIntConst((OOC_IR__Builder)i2, (OOC_IR__Expression)i5, 0, i3);
  goto l17;
l15:
  i2 = OOC_IR__BuilderDesc_AssertIntConst((OOC_IR__Builder)i2, (OOC_IR__Expression)i5, 0, 2147483647);
l17:
  i2 = (OOC_INT64)RT0__NewObject(_td_OOC_IR__Index.baseTypes[0]);
  OOC_IR__InitIndex((OOC_IR__Index)i2, (OOC_Scanner_BasicList__Symbol)i0, (OOC_IR__Expression)i4, (OOC_IR__Expression)i5, i1);
  return (OOC_IR__Expression)i2;
  goto l19;
l18:
  i0 = (OOC_INT64)OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i2, 81280)))), OOC_IR__BuilderDesc_ErrExpr)),OOC_IR__BuilderDesc_ErrExpr)((OOC_IR__Builder)i2, 15, (OOC_Scanner_BasicList__Symbol)i0);
  return (OOC_IR__Expression)i0;
l19:
  _failed_function(80796); return 0;
  ;
}

void OOC_IR__VisitorDesc_VisitIndex(OOC_IR__Visitor v, OOC_IR__Index index) {

  return;
  ;
}

void OOC_IR__IndexDesc_Accept(OOC_IR__Index index, OOC_IR__Visitor v) {
  register OOC_INT64 i0,i1;

  i0 = (OOC_INT64)v;
  i1 = (OOC_INT64)index;
  OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 82049)))), OOC_IR__VisitorDesc_VisitIndex)),OOC_IR__VisitorDesc_VisitIndex)((OOC_IR__Visitor)i0, (OOC_IR__Index)i1);
  return;
  ;
}

static void OOC_IR__InitLen(OOC_IR__Len len, OOC_Scanner_BasicList__Symbol sym, OOC_INT8 variant, OOC_IR__Expression array, OOC_IR__Expression arrayVariable, OOC_INT32 dim) {
  register OOC_INT64 i0,i1,i2;

  i0 = (OOC_INT64)OOC_SymbolTable_Predef__GetType(6);
  i1 = (OOC_INT64)len;
  i2 = (OOC_INT64)sym;
  OOC_IR__InitOperator((OOC_IR__Operator)i1, (OOC_Scanner_BasicList__Symbol)i2, (OOC_SymbolTable__Type)i0);
  i0 = variant;
  *(OOC_INT8*)((_check_pointer(i1, 82396))+16) = i0;
  i0 = (OOC_INT64)array;
  *(OOC_INT64*)((_check_pointer(i1, 82425))+24) = i0;
  i0 = (OOC_INT64)arrayVariable;
  *(OOC_INT64*)((_check_pointer(i1, 82450))+40) = i0;
  i0 = dim;
  *(OOC_INT32*)((_check_pointer(i1, 82491))+32) = i0;
  return;
  ;
}

OOC_IR__Expression OOC_IR__BuilderDesc_NewLen(OOC_IR__Builder b, OOC_Scanner_BasicList__Symbol sym, OOC_IR__Expression array, OOC_INT32 dim) {
  register OOC_INT64 i0,i1,i2,i3,i4,i5,i6;
  OOC_IR__Len len;
  OOC_IR__Expression arrayVariable;
  OOC_SymbolTable__Type type;
  OOC_INT8 variant;

  i0 = (OOC_INT64)array;
  i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 82769))+8);
  i1 = OOC_SymbolTable_TypeRules__IsArray((OOC_SymbolTable__Type)i1);
  i1 = !i1;
  if (i1) goto l3;
  i1=0u;
  goto l5;
l3:
  i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 82801))+8);
  i1 = OOC_SymbolTable_TypeRules__IsStringConst((OOC_SymbolTable__Type)i1);
  i1 = !i1;
  
l5:
  if (!i1) goto l7;
  i1 = (OOC_INT64)b;
  i2 = (OOC_INT64)*(OOC_INT64*)(_check_pointer(i0, 82843));
  OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i1, 82820)))), OOC_IR__BuilderDesc_ErrSym)),OOC_IR__BuilderDesc_ErrSym)((OOC_IR__Builder)i1, 15, (OOC_Scanner_BasicList__Symbol)i2);
  i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i1, 82864))+40);
  return (OOC_IR__Expression)i1;
l7:
  i1 = (OOC_INT64)RT0__NewObject(_td_OOC_IR__Len.baseTypes[0]);
  len = (OOC_IR__Len)i1;
  arrayVariable = (OOC_IR__Expression)i0;
  i2 = OOC_TYPE_TEST(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 82959)))), &_td_OOC_IR__IndexDesc);
  if (i2) goto l10;
  i2=i0;
  goto l16;
l10:
  i2=i0;
l11_loop:
  i2 = (OOC_INT64)*(OOC_INT64*)((_check_pointer((_type_guard(i2, ((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i2, 83009)))), &_td_OOC_IR__IndexDesc, 83009)), 83015))+16);
  i3 = dim;
  arrayVariable = (OOC_IR__Expression)i2;
  dim = (i3+1);
  i3 = OOC_TYPE_TEST(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i2, 82959)))), &_td_OOC_IR__IndexDesc);
  if (i3) goto l11_loop;
l16:
  i3 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i2, 83076))+8);
  i4 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i2, 83076))+8);
  i3 = (OOC_INT64)OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i3, 83081)))), OOC_SymbolTable__TypeDesc_Deparam)),OOC_SymbolTable__TypeDesc_Deparam)((OOC_SymbolTable__Type)i4);
  type = (OOC_SymbolTable__Type)i3;
  i4 = dim;
  i5 = OOC_TYPE_TEST(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i3, 83106)))), &_td_OOC_SymbolTable__PredefTypeDesc);
  if (i5) goto l31;
  i5 = OOC_TYPE_TEST(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i3, 83178)))), &_td_OOC_SymbolTable__ArrayDesc);
  if (i5) goto l21;
  i5=0u;
  goto l23;
l21:
  i5 = OOC_SymbolTable__ArrayDesc_GetOpenDimensions((OOC_SymbolTable__Array)(_type_guard(i3, ((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i3, 83221)))), &_td_OOC_SymbolTable__ArrayDesc, 83221)));
  i5 = i4>=i5;
  
l23:
  if (i5) goto l29;
  i5 = OOC_TYPE_TEST(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i2, 83311)))), &_td_OOC_IR__VarDesc);
  if (i5) goto l27;
  variant = 19;
  i5=19;
  goto l32;
l27:
  variant = 18;
  i5=18;
  goto l32;
l29:
  variant = 17;
  i5=17;
  goto l32;
l31:
  variant = 16;
  i5=16;
l32:
  i6 = i5==19;
  if (!i6) goto l37;
  i6=1u;
l37:
  if (i6) goto l39;
  i3=0u;
  goto l41;
l39:
  i3 = *(OOC_UINT8*)((_check_pointer((_type_guard(i3, ((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i3, 83506)))), &_td_OOC_SymbolTable__ArrayDesc, 83506)), 83512))+73);
  i3 = !i3;
  
l41:
  if (!i3) goto l43;
  i3 = (OOC_INT64)b;
  i6 = (OOC_INT64)*(OOC_INT64*)(_check_pointer(i0, 83576));
  i3 = (OOC_INT64)OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i3, 83546)))), OOC_IR__BuilderDesc_ErrExpr)),OOC_IR__BuilderDesc_ErrExpr)((OOC_IR__Builder)i3, 54, (OOC_Scanner_BasicList__Symbol)i6);
  return (OOC_IR__Expression)i3;
l43:
  i3 = (OOC_INT64)sym;
  OOC_IR__InitLen((OOC_IR__Len)i1, (OOC_Scanner_BasicList__Symbol)i3, i5, (OOC_IR__Expression)i0, (OOC_IR__Expression)i2, i4);
  return (OOC_IR__Expression)i1;
  ;
}

void OOC_IR__VisitorDesc_VisitLen(OOC_IR__Visitor v, OOC_IR__Len len) {

  return;
  ;
}

void OOC_IR__LenDesc_Accept(OOC_IR__Len len, OOC_IR__Visitor v) {
  register OOC_INT64 i0,i1;

  i0 = (OOC_INT64)v;
  i1 = (OOC_INT64)len;
  OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 83817)))), OOC_IR__VisitorDesc_VisitLen)),OOC_IR__VisitorDesc_VisitLen)((OOC_IR__Visitor)i0, (OOC_IR__Len)i1);
  return;
  ;
}

static void OOC_IR__InitNegate(OOC_IR__Negate neg, OOC_Scanner_BasicList__Symbol sym, OOC_IR__Expression expr) {
  register OOC_INT64 i0,i1,i2,i3;

  i0 = (OOC_INT64)expr;
  i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 84062))+8);
  i2 = (OOC_INT64)neg;
  i3 = (OOC_INT64)sym;
  OOC_IR__InitOperator((OOC_IR__Operator)i2, (OOC_Scanner_BasicList__Symbol)i3, (OOC_SymbolTable__Type)i1);
  *(OOC_INT64*)((_check_pointer(i2, 84078))+16) = i0;
  return;
  ;
}

OOC_IR__Expression OOC_IR__BuilderDesc_NewNegate(OOC_IR__Builder b, OOC_Scanner_BasicList__Symbol sym, OOC_IR__Expression expr) {
  register OOC_INT64 i0,i1,i2;

  i0 = (OOC_INT64)RT0__NewObject(_td_OOC_IR__Negate.baseTypes[0]);
  i1 = (OOC_INT64)sym;
  i2 = (OOC_INT64)expr;
  OOC_IR__InitNegate((OOC_IR__Negate)i0, (OOC_Scanner_BasicList__Symbol)i1, (OOC_IR__Expression)i2);
  return (OOC_IR__Expression)i0;
  ;
}

void OOC_IR__VisitorDesc_VisitNegate(OOC_IR__Visitor v, OOC_IR__Negate neg) {

  return;
  ;
}

void OOC_IR__NegateDesc_Accept(OOC_IR__Negate neg, OOC_IR__Visitor v) {
  register OOC_INT64 i0,i1;

  i0 = (OOC_INT64)v;
  i1 = (OOC_INT64)neg;
  OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 84447)))), OOC_IR__VisitorDesc_VisitNegate)),OOC_IR__VisitorDesc_VisitNegate)((OOC_IR__Visitor)i0, (OOC_IR__Negate)i1);
  return;
  ;
}

static void OOC_IR__InitNewBlock(OOC_IR__NewBlock _new, OOC_Scanner_BasicList__Symbol sym, OOC_SymbolTable__Type type, OOC_IR__Expression size) {
  register OOC_INT64 i0,i1,i2;

  i0 = (OOC_INT64)_new;
  i1 = (OOC_INT64)sym;
  i2 = (OOC_INT64)type;
  OOC_IR__InitOperator((OOC_IR__Operator)i0, (OOC_Scanner_BasicList__Symbol)i1, (OOC_SymbolTable__Type)i2);
  i1 = (OOC_INT64)size;
  *(OOC_INT64*)((_check_pointer(i0, 84751))+16) = i1;
  return;
  ;
}

OOC_IR__Expression OOC_IR__BuilderDesc_NewNewBlock(OOC_IR__Builder b, OOC_Scanner_BasicList__Symbol sym, OOC_SymbolTable__Type type, OOC_IR__Expression size) {
  register OOC_INT64 i0,i1,i2,i3;

  i0 = (OOC_INT64)RT0__NewObject(_td_OOC_IR__NewBlock.baseTypes[0]);
  i1 = (OOC_INT64)sym;
  i2 = (OOC_INT64)type;
  i3 = (OOC_INT64)size;
  OOC_IR__InitNewBlock((OOC_IR__NewBlock)i0, (OOC_Scanner_BasicList__Symbol)i1, (OOC_SymbolTable__Type)i2, (OOC_IR__Expression)i3);
  return (OOC_IR__Expression)i0;
  ;
}

void OOC_IR__VisitorDesc_VisitNewBlock(OOC_IR__Visitor v, OOC_IR__NewBlock _new) {

  return;
  ;
}

void OOC_IR__NewBlockDesc_Accept(OOC_IR__NewBlock _new, OOC_IR__Visitor v) {
  register OOC_INT64 i0,i1;

  i0 = (OOC_INT64)v;
  i1 = (OOC_INT64)_new;
  OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 85194)))), OOC_IR__VisitorDesc_VisitNewBlock)),OOC_IR__VisitorDesc_VisitNewBlock)((OOC_IR__Visitor)i0, (OOC_IR__NewBlock)i1);
  return;
  ;
}

static void OOC_IR__InitNewObject(OOC_IR__NewObject _new, OOC_Scanner_BasicList__Symbol sym, OOC_SymbolTable__Type type, OOC_IR__ExpressionList length) {
  register OOC_INT64 i0,i1,i2;

  i0 = (OOC_INT64)_new;
  i1 = (OOC_INT64)sym;
  i2 = (OOC_INT64)type;
  OOC_IR__InitOperator((OOC_IR__Operator)i0, (OOC_Scanner_BasicList__Symbol)i1, (OOC_SymbolTable__Type)i2);
  i1 = (OOC_INT64)length;
  *(OOC_INT64*)((_check_pointer(i0, 85509))+16) = i1;
  return;
  ;
}

OOC_IR__NewObject OOC_IR__BuilderDesc_NewNewObject(OOC_IR__Builder b, OOC_Scanner_BasicList__Symbol sym, OOC_SymbolTable__Type type, OOC_IR__ExpressionList args) {
  register OOC_INT64 i0,i1,i2,i3,i4,i5,i6,i7,i8,i9;
  OOC_IR__ExpressionList length;
  OOC_INT32 i;

  i0 = (OOC_INT64)args;
  i1 = i0==(OOC_INT64)0;
  if (i1) goto l11;
  i1 = OOC_ARRAY_LENGTH((_check_pointer(i0, 85849)), 0);
  i1 = (OOC_INT64)RT0__NewObject(_td_OOC_IR__ExpressionList.baseTypes[0], (i1-1));
  length = (OOC_IR__ExpressionList)i1;
  i = 0;
  i2 = OOC_ARRAY_LENGTH((_check_pointer(i1, 85887)), 0);
  i3 = 0<i2;
  if (!i3) goto l10;
  i3 = (OOC_INT64)b;
  i4=0;
l5_loop:
  i5 = _check_pointer(i1, 85909);
  i6 = OOC_ARRAY_LENGTH(i5, 0);
  i7 = _check_pointer(i0, 85936);
  i8 = OOC_ARRAY_LENGTH(i7, 0);
  i9 = i4+1;
  i7 = (OOC_INT64)*(OOC_INT64*)(i7+(_check_index(i9, i8, OOC_UINT32, 85936))*8);
  i7 = (OOC_INT64)OOC_IR__BuilderDesc_AssertInteger((OOC_IR__Builder)i3, (OOC_IR__Expression)i7);
  *(OOC_INT64*)(i5+(_check_index(i4, i6, OOC_UINT32, 85909))*8) = i7;
  i = i9;
  i4 = i9<i2;
  if (!i4) goto l10;
  i4=i9;
  goto l5_loop;
l10:
  i0=i1;
  goto l12;
l11:
  i0=(OOC_INT64)0;
l12:
  i1 = (OOC_INT64)sym;
  i2 = (OOC_INT64)type;
  i3 = (OOC_INT64)RT0__NewObject(_td_OOC_IR__NewObject.baseTypes[0]);
  OOC_IR__InitNewObject((OOC_IR__NewObject)i3, (OOC_Scanner_BasicList__Symbol)i1, (OOC_SymbolTable__Type)i2, (OOC_IR__ExpressionList)i0);
  return (OOC_IR__NewObject)i3;
  ;
}

void OOC_IR__VisitorDesc_VisitNewObject(OOC_IR__Visitor v, OOC_IR__NewObject _new) {

  return;
  ;
}

void OOC_IR__NewObjectDesc_Accept(OOC_IR__NewObject _new, OOC_IR__Visitor v) {
  register OOC_INT64 i0,i1;

  i0 = (OOC_INT64)v;
  i1 = (OOC_INT64)_new;
  OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 86218)))), OOC_IR__VisitorDesc_VisitNewObject)),OOC_IR__VisitorDesc_VisitNewObject)((OOC_IR__Visitor)i0, (OOC_IR__NewObject)i1);
  return;
  ;
}

static void OOC_IR__InitNot(OOC_IR__Not neg, OOC_Scanner_BasicList__Symbol sym, OOC_IR__Expression expr) {
  register OOC_INT64 i0,i1,i2,i3;

  i0 = (OOC_INT64)expr;
  i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 86460))+8);
  i2 = (OOC_INT64)neg;
  i3 = (OOC_INT64)sym;
  OOC_IR__InitOperator((OOC_IR__Operator)i2, (OOC_Scanner_BasicList__Symbol)i3, (OOC_SymbolTable__Type)i1);
  *(OOC_INT64*)((_check_pointer(i2, 86476))+16) = i0;
  return;
  ;
}

OOC_IR__Expression OOC_IR__BuilderDesc_NewNot(OOC_IR__Builder b, OOC_Scanner_BasicList__Symbol sym, OOC_IR__Expression expr) {
  register OOC_INT64 i0,i1,i2;

  i0 = (OOC_INT64)RT0__NewObject(_td_OOC_IR__Not.baseTypes[0]);
  i1 = (OOC_INT64)sym;
  i2 = (OOC_INT64)expr;
  OOC_IR__InitNot((OOC_IR__Not)i0, (OOC_Scanner_BasicList__Symbol)i1, (OOC_IR__Expression)i2);
  return (OOC_IR__Expression)i0;
  ;
}

void OOC_IR__VisitorDesc_VisitNot(OOC_IR__Visitor v, OOC_IR__Not neg) {

  return;
  ;
}

void OOC_IR__NotDesc_Accept(OOC_IR__Not neg, OOC_IR__Visitor v) {
  register OOC_INT64 i0,i1;

  i0 = (OOC_INT64)v;
  i1 = (OOC_INT64)neg;
  OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 86818)))), OOC_IR__VisitorDesc_VisitNot)),OOC_IR__VisitorDesc_VisitNot)((OOC_IR__Visitor)i0, (OOC_IR__Not)i1);
  return;
  ;
}

static void OOC_IR__InitOdd(OOC_IR__Odd odd, OOC_Scanner_BasicList__Symbol sym, OOC_IR__Expression expr) {
  register OOC_INT64 i0,i1,i2;

  i0 = (OOC_INT64)OOC_SymbolTable_Predef__GetType(0);
  i1 = (OOC_INT64)odd;
  i2 = (OOC_INT64)sym;
  OOC_IR__InitOperator((OOC_IR__Operator)i1, (OOC_Scanner_BasicList__Symbol)i2, (OOC_SymbolTable__Type)i0);
  i0 = (OOC_INT64)expr;
  *(OOC_INT64*)((_check_pointer(i1, 87091))+16) = i0;
  return;
  ;
}

OOC_IR__Expression OOC_IR__BuilderDesc_NewOdd(OOC_IR__Builder b, OOC_Scanner_BasicList__Symbol sym, OOC_IR__Expression expr) {
  register OOC_INT64 i0,i1,i2;

  i0 = (OOC_INT64)RT0__NewObject(_td_OOC_IR__Odd.baseTypes[0]);
  i1 = (OOC_INT64)b;
  i2 = (OOC_INT64)expr;
  i1 = (OOC_INT64)OOC_IR__BuilderDesc_AssertInteger((OOC_IR__Builder)i1, (OOC_IR__Expression)i2);
  i2 = (OOC_INT64)sym;
  OOC_IR__InitOdd((OOC_IR__Odd)i0, (OOC_Scanner_BasicList__Symbol)i2, (OOC_IR__Expression)i1);
  return (OOC_IR__Expression)i0;
  ;
}

void OOC_IR__VisitorDesc_VisitOdd(OOC_IR__Visitor v, OOC_IR__Odd odd) {

  return;
  ;
}

void OOC_IR__OddDesc_Accept(OOC_IR__Odd odd, OOC_IR__Visitor v) {
  register OOC_INT64 i0,i1;

  i0 = (OOC_INT64)v;
  i1 = (OOC_INT64)odd;
  OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 87451)))), OOC_IR__VisitorDesc_VisitOdd)),OOC_IR__VisitorDesc_VisitOdd)((OOC_IR__Visitor)i0, (OOC_IR__Odd)i1);
  return;
  ;
}

static void OOC_IR__InitSelectField(OOC_IR__SelectField sf, OOC_Scanner_BasicList__Symbol sym, OOC_IR__Expression record, OOC_SymbolTable__FieldDecl field, OOC_Scanner_BasicList__Symbol fieldSym) {
  register OOC_INT64 i0,i1,i2,i3,i4;
  OOC_SymbolTable__Type recordType;
  OOC_SymbolTable__Type ptr;

  i0 = (OOC_INT64)record;
  i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 87865))+8);
  recordType = (OOC_SymbolTable__Type)i1;
  i2 = (OOC_INT64)OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i1, 87893)))), OOC_SymbolTable__TypeDesc_Deparam)),OOC_SymbolTable__TypeDesc_Deparam)((OOC_SymbolTable__Type)i1);
  i3 = (OOC_INT64)field;
  i4 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i3, 87911))+8);
  i2 = i2!=i4;
  if (!i2) goto l9;
l4_loop:
  i2 = (OOC_INT64)OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i1, 87946)))), OOC_SymbolTable__TypeDesc_Deparam)),OOC_SymbolTable__TypeDesc_Deparam)((OOC_SymbolTable__Type)i1);
  ptr = (OOC_SymbolTable__Type)i2;
  i2 = (OOC_INT64)*(OOC_INT64*)((_check_pointer((_type_guard(i2, ((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i2, 88005)))), &_td_OOC_SymbolTable__RecordDesc, 88005)), 88012))+72);
  i1 = (OOC_INT64)OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i1, 87988)))), OOC_SymbolTable__TypeDesc_Closure)),OOC_SymbolTable__TypeDesc_Closure)((OOC_SymbolTable__Type)i1, (OOC_SymbolTable__Type)i2);
  recordType = (OOC_SymbolTable__Type)i1;
  i2 = (OOC_INT64)OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i1, 87893)))), OOC_SymbolTable__TypeDesc_Deparam)),OOC_SymbolTable__TypeDesc_Deparam)((OOC_SymbolTable__Type)i1);
  i4 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i3, 87911))+8);
  i2 = i2!=i4;
  if (i2) goto l4_loop;
l9:
  i2 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i3, 88089))+88);
  i1 = (OOC_INT64)OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i1, 88075)))), OOC_SymbolTable__TypeDesc_Closure)),OOC_SymbolTable__TypeDesc_Closure)((OOC_SymbolTable__Type)i1, (OOC_SymbolTable__Type)i2);
  i2 = (OOC_INT64)sf;
  i4 = (OOC_INT64)sym;
  OOC_IR__InitOperator((OOC_IR__Operator)i2, (OOC_Scanner_BasicList__Symbol)i4, (OOC_SymbolTable__Type)i1);
  *(OOC_INT64*)((_check_pointer(i2, 88104))+16) = i0;
  *(OOC_INT64*)((_check_pointer(i2, 88129))+24) = i3;
  i0 = (OOC_INT64)fieldSym;
  *(OOC_INT64*)((_check_pointer(i2, 88152))+32) = i0;
  return;
  ;
}

OOC_IR__SelectField OOC_IR__BuilderDesc_NewSelectField(OOC_IR__Builder b, OOC_Scanner_BasicList__Symbol sym, OOC_IR__Expression record, OOC_SymbolTable__FieldDecl field, OOC_Scanner_BasicList__Symbol fieldSym) {
  register OOC_INT64 i0,i1,i2,i3,i4;

  i0 = (OOC_INT64)RT0__NewObject(_td_OOC_IR__SelectField.baseTypes[0]);
  i1 = (OOC_INT64)sym;
  i2 = (OOC_INT64)record;
  i3 = (OOC_INT64)field;
  i4 = (OOC_INT64)fieldSym;
  OOC_IR__InitSelectField((OOC_IR__SelectField)i0, (OOC_Scanner_BasicList__Symbol)i1, (OOC_IR__Expression)i2, (OOC_SymbolTable__FieldDecl)i3, (OOC_Scanner_BasicList__Symbol)i4);
  return (OOC_IR__SelectField)i0;
  ;
}

void OOC_IR__VisitorDesc_VisitSelectField(OOC_IR__Visitor v, OOC_IR__SelectField sf) {

  return;
  ;
}

void OOC_IR__SelectFieldDesc_Accept(OOC_IR__SelectField sf, OOC_IR__Visitor v) {
  register OOC_INT64 i0,i1;

  i0 = (OOC_INT64)v;
  i1 = (OOC_INT64)sf;
  OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 88661)))), OOC_IR__VisitorDesc_VisitSelectField)),OOC_IR__VisitorDesc_VisitSelectField)((OOC_IR__Visitor)i0, (OOC_IR__SelectField)i1);
  return;
  ;
}

static void OOC_IR__InitSelectProc(OOC_IR__SelectProc sp, OOC_Scanner_BasicList__Symbol sym, OOC_IR__Expression receiver, OOC_CHAR8 checkPointer, OOC_SymbolTable__Type recordType, OOC_SymbolTable__ProcDecl tbProc, OOC_Scanner_BasicList__Symbol tbProcSym, OOC_CHAR8 isStaticCall) {
  register OOC_INT64 i0,i1,i2,i3,i4;
  OOC_SymbolTable__Type _class;
  OOC_SymbolTable__Type baseRecord;
  OOC_SymbolTable__Type ptr;

  i0 = (OOC_INT64)sp;
  i1 = (OOC_INT64)recordType;
  *(OOC_INT64*)((_check_pointer(i0, 89133))+24) = i1;
  i2 = (OOC_INT64)tbProc;
  i3 = (OOC_INT64)OOC_SymbolTable__ProcDeclDesc_Class((OOC_SymbolTable__ProcDecl)i2);
  _class = (OOC_SymbolTable__Type)i3;
  baseRecord = (OOC_SymbolTable__Type)i1;
  i4 = (OOC_INT64)OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i1, 89303)))), OOC_SymbolTable__TypeDesc_Deparam)),OOC_SymbolTable__TypeDesc_Deparam)((OOC_SymbolTable__Type)i1);
  i4 = i4!=i3;
  if (!i4) goto l9;
l4_loop:
  i4 = (OOC_INT64)OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i1, 89349)))), OOC_SymbolTable__TypeDesc_Deparam)),OOC_SymbolTable__TypeDesc_Deparam)((OOC_SymbolTable__Type)i1);
  ptr = (OOC_SymbolTable__Type)i4;
  i4 = (OOC_INT64)*(OOC_INT64*)((_check_pointer((_type_guard(i4, ((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i4, 89408)))), &_td_OOC_SymbolTable__RecordDesc, 89408)), 89415))+72);
  i1 = (OOC_INT64)OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i1, 89391)))), OOC_SymbolTable__TypeDesc_Closure)),OOC_SymbolTable__TypeDesc_Closure)((OOC_SymbolTable__Type)i1, (OOC_SymbolTable__Type)i4);
  baseRecord = (OOC_SymbolTable__Type)i1;
  i4 = (OOC_INT64)OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i1, 89303)))), OOC_SymbolTable__TypeDesc_Deparam)),OOC_SymbolTable__TypeDesc_Deparam)((OOC_SymbolTable__Type)i1);
  i4 = i4!=i3;
  if (i4) goto l4_loop;
l9:
  i3 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i2, 89489))+112);
  i1 = (OOC_INT64)OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i1, 89474)))), OOC_SymbolTable__TypeDesc_Closure)),OOC_SymbolTable__TypeDesc_Closure)((OOC_SymbolTable__Type)i1, (OOC_SymbolTable__Type)i3);
  i3 = (OOC_INT64)sym;
  OOC_IR__InitOperator((OOC_IR__Operator)i0, (OOC_Scanner_BasicList__Symbol)i3, (OOC_SymbolTable__Type)i1);
  i1 = (OOC_INT64)receiver;
  *(OOC_INT64*)((_check_pointer(i0, 89510))+16) = i1;
  i1 = checkPointer;
  *(OOC_UINT8*)((_check_pointer(i0, 89540))+32) = i1;
  *(OOC_INT64*)((_check_pointer(i0, 89578))+40) = i2;
  i1 = (OOC_INT64)tbProcSym;
  *(OOC_INT64*)((_check_pointer(i0, 89604))+48) = i1;
  i1 = isStaticCall;
  *(OOC_UINT8*)((_check_pointer(i0, 89636))+56) = i1;
  *(OOC_UINT8*)((_check_pointer(i0, 89674))+57) = 0u;
  return;
  ;
}

OOC_IR__SelectProc OOC_IR__BuilderDesc_NewSelectProc(OOC_IR__Builder b, OOC_Scanner_BasicList__Symbol sym, OOC_IR__Expression receiver, OOC_SymbolTable__Type recordType, OOC_SymbolTable__ProcDecl tbProc, OOC_Scanner_BasicList__Symbol tbProcSym, OOC_CHAR8 isStaticCall) {
  register OOC_INT64 i0,i1,i2,i3,i4,i5,i6,i7;

  i0 = (OOC_INT64)sym;
  i1 = *(OOC_INT32*)((_check_pointer(i0, 90170))+28);
  i2 = (OOC_INT64)b;
  i3 = (OOC_INT64)OOC_Config_StdPragmas__derefCheck;
  i1 = OOC_IR__GetPragmaValue((OOC_IR__Builder)i2, (Config_Section_Options__Option)i3, i1);
  i2 = (OOC_INT64)receiver;
  i3 = (OOC_INT64)recordType;
  i4 = (OOC_INT64)tbProc;
  i5 = (OOC_INT64)tbProcSym;
  i6 = isStaticCall;
  i7 = (OOC_INT64)RT0__NewObject(_td_OOC_IR__SelectProc.baseTypes[0]);
  OOC_IR__InitSelectProc((OOC_IR__SelectProc)i7, (OOC_Scanner_BasicList__Symbol)i0, (OOC_IR__Expression)i2, i1, (OOC_SymbolTable__Type)i3, (OOC_SymbolTable__ProcDecl)i4, (OOC_Scanner_BasicList__Symbol)i5, i6);
  return (OOC_IR__SelectProc)i7;
  ;
}

void OOC_IR__VisitorDesc_VisitSelectProc(OOC_IR__Visitor v, OOC_IR__SelectProc sp) {

  return;
  ;
}

void OOC_IR__SelectProcDesc_Accept(OOC_IR__SelectProc sp, OOC_IR__Visitor v) {
  register OOC_INT64 i0,i1;

  i0 = (OOC_INT64)v;
  i1 = (OOC_INT64)sp;
  OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 90504)))), OOC_IR__VisitorDesc_VisitSelectProc)),OOC_IR__VisitorDesc_VisitSelectProc)((OOC_IR__Visitor)i0, (OOC_IR__SelectProc)i1);
  return;
  ;
}

static void OOC_IR__InitSetMember(OOC_IR__SetMember op, OOC_Scanner_BasicList__Symbol sym, OOC_IR__Expression element, OOC_IR__Expression set) {
  register OOC_INT64 i0,i1,i2;

  i0 = (OOC_INT64)OOC_SymbolTable_Predef__GetType(0);
  i1 = (OOC_INT64)op;
  i2 = (OOC_INT64)sym;
  OOC_IR__InitOperator((OOC_IR__Operator)i1, (OOC_Scanner_BasicList__Symbol)i2, (OOC_SymbolTable__Type)i0);
  i0 = (OOC_INT64)element;
  *(OOC_INT64*)((_check_pointer(i1, 90806))+16) = i0;
  i0 = (OOC_INT64)set;
  *(OOC_INT64*)((_check_pointer(i1, 90833))+24) = i0;
  return;
  ;
}

OOC_IR__Expression OOC_IR__BuilderDesc_NewSetMember(OOC_IR__Builder b, OOC_Scanner_BasicList__Symbol sym, OOC_IR__Expression element, OOC_IR__Expression set) {
  register OOC_INT64 i0,i1,i2,i3,i4;
  OOC_IR__SetMember op;

  i0 = (OOC_INT64)RT0__NewObject(_td_OOC_IR__SetMember.baseTypes[0]);
  op = (OOC_IR__SetMember)i0;
  i1 = (OOC_INT64)set;
  i2 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i1, 91065))+8);
  i3 = (OOC_INT64)b;
  i4 = (OOC_INT64)element;
  i2 = (OOC_INT64)OOC_IR__BuilderDesc_ValidSetElement((OOC_IR__Builder)i3, (OOC_IR__Expression)i4, (OOC_SymbolTable__Type)i2);
  i3 = (OOC_INT64)sym;
  OOC_IR__InitSetMember((OOC_IR__SetMember)i0, (OOC_Scanner_BasicList__Symbol)i3, (OOC_IR__Expression)i2, (OOC_IR__Expression)i1);
  return (OOC_IR__Expression)i0;
  ;
}

void OOC_IR__VisitorDesc_VisitSetMember(OOC_IR__Visitor v, OOC_IR__SetMember op) {

  return;
  ;
}

void OOC_IR__SetMemberDesc_Accept(OOC_IR__SetMember op, OOC_IR__Visitor v) {
  register OOC_INT64 i0,i1;

  i0 = (OOC_INT64)v;
  i1 = (OOC_INT64)op;
  OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 91265)))), OOC_IR__VisitorDesc_VisitSetMember)),OOC_IR__VisitorDesc_VisitSetMember)((OOC_IR__Visitor)i0, (OOC_IR__SetMember)i1);
  return;
  ;
}

static void OOC_IR__InitSetOp(OOC_IR__SetOp op, OOC_Scanner_BasicList__Symbol sym, OOC_INT8 variant, OOC_IR__Expression left, OOC_IR__Expression right, OOC_SymbolTable__Type type) {
  register OOC_INT64 i0,i1,i2;

  i0 = (OOC_INT64)op;
  i1 = (OOC_INT64)sym;
  i2 = (OOC_INT64)type;
  OOC_IR__InitOperator((OOC_IR__Operator)i0, (OOC_Scanner_BasicList__Symbol)i1, (OOC_SymbolTable__Type)i2);
  i1 = variant;
  *(OOC_INT8*)((_check_pointer(i0, 91562))+16) = i1;
  i1 = (OOC_INT64)left;
  *(OOC_INT64*)((_check_pointer(i0, 91589))+24) = i1;
  i1 = (OOC_INT64)right;
  *(OOC_INT64*)((_check_pointer(i0, 91610))+32) = i1;
  return;
  ;
}

OOC_IR__Expression OOC_IR__BuilderDesc_NewSetOp(OOC_IR__Builder b, OOC_Scanner_BasicList__Symbol sym, OOC_INT8 variant, OOC_IR__Expression left, OOC_IR__Expression right) {
  register OOC_INT64 i0,i1,i2,i3,i4,i5;
  OOC_IR__SetOp op;

  i0 = (OOC_INT64)RT0__NewObject(_td_OOC_IR__SetOp.baseTypes[0]);
  op = (OOC_IR__SetOp)i0;
  i1 = (OOC_INT64)left;
  i2 = (OOC_INT64)right;
  i3 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i1, 91819))+8);
  i4 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i2, 91831))+8);
  i3 = OOC_SymbolTable_TypeRules__SameType((OOC_SymbolTable__Type)i3, (OOC_SymbolTable__Type)i4);
  _assert(i3, 127, 91796);
  i3 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i1, 91890))+8);
  i4 = (OOC_INT64)sym;
  i5 = variant;
  OOC_IR__InitSetOp((OOC_IR__SetOp)i0, (OOC_Scanner_BasicList__Symbol)i4, i5, (OOC_IR__Expression)i1, (OOC_IR__Expression)i2, (OOC_SymbolTable__Type)i3);
  return (OOC_IR__Expression)i0;
  ;
}

void OOC_IR__VisitorDesc_VisitSetOp(OOC_IR__Visitor v, OOC_IR__SetOp op) {

  return;
  ;
}

void OOC_IR__SetOpDesc_Accept(OOC_IR__SetOp op, OOC_IR__Visitor v) {
  register OOC_INT64 i0,i1;

  i0 = (OOC_INT64)v;
  i1 = (OOC_INT64)op;
  OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 92065)))), OOC_IR__VisitorDesc_VisitSetOp)),OOC_IR__VisitorDesc_VisitSetOp)((OOC_IR__Visitor)i0, (OOC_IR__SetOp)i1);
  return;
  ;
}

static void OOC_IR__InitSetRange(OOC_IR__SetRange range, OOC_Scanner_BasicList__Symbol sym, OOC_IR__Expression from, OOC_IR__Expression to) {
  register OOC_INT64 i0,i1,i2;

  i0 = (OOC_INT64)OOC_SymbolTable_Predef__GetType(10);
  i1 = (OOC_INT64)range;
  i2 = (OOC_INT64)sym;
  OOC_IR__InitOperator((OOC_IR__Operator)i1, (OOC_Scanner_BasicList__Symbol)i2, (OOC_SymbolTable__Type)i0);
  i0 = (OOC_INT64)from;
  *(OOC_INT64*)((_check_pointer(i1, 92385))+16) = i0;
  i0 = (OOC_INT64)to;
  *(OOC_INT64*)((_check_pointer(i1, 92409))+24) = i0;
  return;
  ;
}

OOC_IR__Expression OOC_IR__BuilderDesc_NewSetRange(OOC_IR__Builder b, OOC_Scanner_BasicList__Symbol sym, OOC_IR__Expression from, OOC_IR__Expression to, OOC_CHAR8 isSet) {
  register OOC_INT64 i0,i1,i2,i3;
  OOC_SymbolTable__Type set;

  i0 = (OOC_INT64)OOC_SymbolTable_Predef__GetType(10);
  set = (OOC_SymbolTable__Type)i0;
  i1 = (OOC_INT64)from;
  i2 = i1==(OOC_INT64)0;
  if (i2) goto l3;
  i2=0u;
  goto l5;
l3:
  i2 = (OOC_INT64)to;
  i2 = i2==(OOC_INT64)0;
  
l5:
  if (i2) goto l11;
  i2 = isSet;
  if (i2) goto l9;
  i0=i1;
  goto l10;
l9:
  i2 = (OOC_INT64)b;
  i1 = (OOC_INT64)OOC_IR__BuilderDesc_ValidSetElement((OOC_IR__Builder)i2, (OOC_IR__Expression)i1, (OOC_SymbolTable__Type)i0);
  i3 = (OOC_INT64)to;
  i0 = (OOC_INT64)OOC_IR__BuilderDesc_ValidSetElement((OOC_IR__Builder)i2, (OOC_IR__Expression)i3, (OOC_SymbolTable__Type)i0);
  to = (OOC_IR__Expression)i0;
  i0=i1;
l10:
  i1 = (OOC_INT64)RT0__NewObject(_td_OOC_IR__SetRange.baseTypes[0]);
  i2 = (OOC_INT64)to;
  i3 = (OOC_INT64)sym;
  OOC_IR__InitSetRange((OOC_IR__SetRange)i1, (OOC_Scanner_BasicList__Symbol)i3, (OOC_IR__Expression)i0, (OOC_IR__Expression)i2);
  return (OOC_IR__Expression)i1;
  goto l12;
l11:
  i1 = (OOC_INT64)b;
  i2 = (OOC_INT64)Object_Boxed__NewSet(0u);
  i3 = (OOC_INT64)sym;
  i0 = (OOC_INT64)OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i1, 92706)))), OOC_IR__BuilderDesc_NewConst)),OOC_IR__BuilderDesc_NewConst)((OOC_IR__Builder)i1, (OOC_Scanner_BasicList__Symbol)i3, (OOC_SymbolTable__Type)i0, (Object_Boxed__Object)i2);
  return (OOC_IR__Expression)i0;
l12:
  _failed_function(92464); return 0;
  ;
}

void OOC_IR__VisitorDesc_VisitSetRange(OOC_IR__Visitor v, OOC_IR__SetRange range) {

  return;
  ;
}

void OOC_IR__SetRangeDesc_Accept(OOC_IR__SetRange range, OOC_IR__Visitor v) {
  register OOC_INT64 i0,i1;

  i0 = (OOC_INT64)v;
  i1 = (OOC_INT64)range;
  OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 93201)))), OOC_IR__VisitorDesc_VisitSetRange)),OOC_IR__VisitorDesc_VisitSetRange)((OOC_IR__Visitor)i0, (OOC_IR__SetRange)i1);
  return;
  ;
}

OOC_CHAR8 OOC_IR__SetRangeDesc_IsEmpty(OOC_IR__SetRange range) {
  register OOC_INT64 i0,i1,i2;

  i0 = (OOC_INT64)range;
  i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 93361))+16);
  i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer((_type_guard(i1, ((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i1, 93368)))), &_td_OOC_IR__ConstDesc, 93368)), 93374))+16);
  i2 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 93361))+16);
  i0 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 93393))+24);
  i2 = (OOC_INT64)*(OOC_INT64*)((_check_pointer((_type_guard(i2, ((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i2, 93368)))), &_td_OOC_IR__ConstDesc, 93368)), 93374))+16);
  i0 = (OOC_INT64)*(OOC_INT64*)((_check_pointer((_type_guard(i0, ((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 93398)))), &_td_OOC_IR__ConstDesc, 93398)), 93404))+16);
  i0 = OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i1, 93381)))), Object_Boxed__ObjectDesc_Cmp)),Object_Boxed__ObjectDesc_Cmp)((Object_Boxed__Object)i2, (Object__Object)i0);
  return (i0>0);
  ;
}

OOC_CHAR8 OOC_IR__SetRangeDesc_IntersectsWith(OOC_IR__SetRange range, OOC_IR__SetRange range2) {
  register OOC_INT64 i0,i1,i2,i3,i4;

  i0 = (OOC_INT64)range;
  i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 93631))+24);
  i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer((_type_guard(i1, ((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i1, 93635)))), &_td_OOC_IR__ConstDesc, 93635)), 93641))+16);
  i2 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 93631))+24);
  i3 = (OOC_INT64)range2;
  i4 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i3, 93660))+16);
  i2 = (OOC_INT64)*(OOC_INT64*)((_check_pointer((_type_guard(i2, ((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i2, 93635)))), &_td_OOC_IR__ConstDesc, 93635)), 93641))+16);
  i4 = (OOC_INT64)*(OOC_INT64*)((_check_pointer((_type_guard(i4, ((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i4, 93666)))), &_td_OOC_IR__ConstDesc, 93666)), 93672))+16);
  i1 = OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i1, 93647)))), Object_Boxed__ObjectDesc_Cmp)),Object_Boxed__ObjectDesc_Cmp)((Object_Boxed__Object)i2, (Object__Object)i4);
  i1 = i1<0;
  if (i1) goto l3;
  i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 93704))+16);
  i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer((_type_guard(i1, ((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i1, 93710)))), &_td_OOC_IR__ConstDesc, 93710)), 93716))+16);
  i0 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 93704))+16);
  i2 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i3, 93735))+24);
  i0 = (OOC_INT64)*(OOC_INT64*)((_check_pointer((_type_guard(i0, ((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 93710)))), &_td_OOC_IR__ConstDesc, 93710)), 93716))+16);
  i2 = (OOC_INT64)*(OOC_INT64*)((_check_pointer((_type_guard(i2, ((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i2, 93739)))), &_td_OOC_IR__ConstDesc, 93739)), 93745))+16);
  i0 = OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i1, 93722)))), Object_Boxed__ObjectDesc_Cmp)),Object_Boxed__ObjectDesc_Cmp)((Object_Boxed__Object)i0, (Object__Object)i2);
  i0 = i0>0;
  
  goto l4;
l3:
  i0=1u;
l4:
  return (!i0);
  ;
}

static void OOC_IR__InitShift(OOC_IR__Shift shift, OOC_Scanner_BasicList__Symbol sym, OOC_IR__Expression value, OOC_IR__Expression by, OOC_CHAR8 rotate) {
  register OOC_INT64 i0,i1,i2,i3;

  i0 = (OOC_INT64)value;
  i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 94040))+8);
  i2 = (OOC_INT64)shift;
  i3 = (OOC_INT64)sym;
  OOC_IR__InitOperator((OOC_IR__Operator)i2, (OOC_Scanner_BasicList__Symbol)i3, (OOC_SymbolTable__Type)i1);
  *(OOC_INT64*)((_check_pointer(i2, 94058))+16) = i0;
  i0 = (OOC_INT64)by;
  *(OOC_INT64*)((_check_pointer(i2, 94085))+24) = i0;
  i0 = rotate;
  *(OOC_UINT8*)((_check_pointer(i2, 94106))+32) = i0;
  return;
  ;
}

OOC_IR__Expression OOC_IR__BuilderDesc_NewShift(OOC_IR__Builder b, OOC_Scanner_BasicList__Symbol sym, OOC_IR__Expression value, OOC_IR__Expression by, OOC_CHAR8 rotate) {
  register OOC_INT64 i0,i1,i2,i3,i4;
  OOC_IR__Shift shift;
  auto OOC_IR__Expression OOC_IR__BuilderDesc_NewShift_AssertShiftable(OOC_IR__Expression expr);
    
    OOC_IR__Expression OOC_IR__BuilderDesc_NewShift_AssertShiftable(OOC_IR__Expression expr) {
      register OOC_INT64 i0,i1,i2,i3;
      Object_BigInt__BigInt v;

      i0 = (OOC_INT64)b;
      i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 94425))+40);
      i2 = (OOC_INT64)expr;
      i1 = i2!=i1;
      if (!i1) goto l14;
      i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i2, 94476))+8);
      i1 = OOC_SymbolTable_TypeRules__IsIntegerType((OOC_SymbolTable__Type)i1);
      if (i1) goto l5;
      i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i2, 94517))+8);
      i1 = OOC_SymbolTable_TypeRules__IsCharType((OOC_SymbolTable__Type)i1);
      
      goto l7;
l5:
      i1=1u;
l7:
      if (i1) goto l9;
      i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i2, 94560))+8);
      i1 = OOC_SymbolTable_TypeRules__IsPredefType((OOC_SymbolTable__Type)i1, 11);
      
      goto l10;
l9:
      i1=1u;
l10:
      i1 = !i1;
      if (!i1) goto l14;
      i1 = (OOC_INT64)*(OOC_INT64*)(_check_pointer(i2, 94624));
      OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 94597)))), OOC_IR__BuilderDesc_ErrSym)),OOC_IR__BuilderDesc_ErrSym)((OOC_IR__Builder)i0, 5, (OOC_Scanner_BasicList__Symbol)i1);
      i0 = (OOC_INT64)Object_BigInt__NewInt(1);
      v = (Object_BigInt__BigInt)i0;
      i1 = (OOC_INT64)*(OOC_INT64*)(_check_pointer(i2, 94694));
      i3 = (OOC_INT64)OOC_SymbolTable_Predef__SmallestIntType((Object_BigInt__BigInt)i0);
      i0 = (OOC_INT64)OOC_IR__NewConst((OOC_Scanner_BasicList__Symbol)i1, (OOC_SymbolTable__Type)i3, (Object_Boxed__Object)i0);
      return (OOC_IR__Expression)i0;
l14:
      return (OOC_IR__Expression)i2;
      ;
    }


  i0 = (OOC_INT64)RT0__NewObject(_td_OOC_IR__Shift.baseTypes[0]);
  shift = (OOC_IR__Shift)i0;
  i1 = (OOC_INT64)value;
  i1 = (OOC_INT64)OOC_IR__BuilderDesc_NewShift_AssertShiftable((OOC_IR__Expression)i1);
  i2 = (OOC_INT64)b;
  i3 = (OOC_INT64)by;
  i2 = (OOC_INT64)OOC_IR__BuilderDesc_AssertInteger((OOC_IR__Builder)i2, (OOC_IR__Expression)i3);
  i3 = (OOC_INT64)sym;
  i4 = rotate;
  OOC_IR__InitShift((OOC_IR__Shift)i0, (OOC_Scanner_BasicList__Symbol)i3, (OOC_IR__Expression)i1, (OOC_IR__Expression)i2, i4);
  i0 = (OOC_INT64)shift;
  return (OOC_IR__Expression)i0;
  ;
}

void OOC_IR__VisitorDesc_VisitShift(OOC_IR__Visitor v, OOC_IR__Shift shift) {

  return;
  ;
}

void OOC_IR__ShiftDesc_Accept(OOC_IR__Shift shift, OOC_IR__Visitor v) {
  register OOC_INT64 i0,i1;

  i0 = (OOC_INT64)v;
  i1 = (OOC_INT64)shift;
  OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 95099)))), OOC_IR__VisitorDesc_VisitShift)),OOC_IR__VisitorDesc_VisitShift)((OOC_IR__Visitor)i0, (OOC_IR__Shift)i1);
  return;
  ;
}

static void OOC_IR__InitTypeCast(OOC_IR__TypeCast cast, OOC_Scanner_BasicList__Symbol sym, OOC_SymbolTable__Type type, OOC_IR__Expression expr) {
  register OOC_INT64 i0,i1,i2;

  i0 = (OOC_INT64)cast;
  i1 = (OOC_INT64)sym;
  i2 = (OOC_INT64)type;
  OOC_IR__InitOperator((OOC_IR__Operator)i0, (OOC_Scanner_BasicList__Symbol)i1, (OOC_SymbolTable__Type)i2);
  i1 = (OOC_INT64)expr;
  *(OOC_INT64*)((_check_pointer(i0, 95407))+16) = i1;
  return;
  ;
}

OOC_IR__TypeCast OOC_IR__BuilderDesc_NewTypeCast(OOC_IR__Builder b, OOC_Scanner_BasicList__Symbol sym, OOC_IR__Expression typeExpr, OOC_IR__Expression expr) {
  register OOC_INT64 i0,i1,i2,i3,i4;
  OOC_SymbolTable__Type type;

  i0 = (OOC_INT64)b;
  i1 = (OOC_INT64)typeExpr;
  i1 = (OOC_INT64)OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 95646)))), OOC_IR__BuilderDesc_AssertType)),OOC_IR__BuilderDesc_AssertType)((OOC_IR__Builder)i0, (OOC_IR__Expression)i1);
  i1 = (OOC_INT64)OOC_SymbolTable__Expand((OOC_SymbolTable__Type)i1);
  type = (OOC_SymbolTable__Type)i1;
  i2 = *(OOC_INT32*)((_check_pointer(i1, 95682))+64);
  i2 = i2<0;
  if (i2) goto l3;
  i2 = (OOC_INT64)expr;
  i2 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i2, 95701))+8);
  i2 = *(OOC_INT32*)((_check_pointer(i2, 95706))+64);
  i2 = i2<0;
  
  goto l4;
l3:
  i2=1u;
l4:
  i3 = (OOC_INT64)expr;
  if (i2) goto l7;
  i2 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i3, 95744))+8);
  i4 = *(OOC_INT32*)((_check_pointer(i1, 95732))+64);
  i2 = *(OOC_INT32*)((_check_pointer(i2, 95749))+64);
  i2 = i4!=i2;
  
  goto l9;
l7:
  i2=1u;
l9:
  if (!i2) goto l11;
  i2 = (OOC_INT64)*(OOC_INT64*)(_check_pointer(i3, 95800));
  OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 95768)))), OOC_IR__BuilderDesc_ErrSym)),OOC_IR__BuilderDesc_ErrSym)((OOC_IR__Builder)i0, 52, (OOC_Scanner_BasicList__Symbol)i2);
l11:
  i0 = (OOC_INT64)sym;
  i2 = (OOC_INT64)RT0__NewObject(_td_OOC_IR__TypeCast.baseTypes[0]);
  OOC_IR__InitTypeCast((OOC_IR__TypeCast)i2, (OOC_Scanner_BasicList__Symbol)i0, (OOC_SymbolTable__Type)i1, (OOC_IR__Expression)i3);
  return (OOC_IR__TypeCast)i2;
  ;
}

void OOC_IR__VisitorDesc_VisitTypeCast(OOC_IR__Visitor v, OOC_IR__TypeCast cast) {

  return;
  ;
}

void OOC_IR__TypeCastDesc_Accept(OOC_IR__TypeCast cast, OOC_IR__Visitor v) {
  register OOC_INT64 i0,i1;

  i0 = (OOC_INT64)v;
  i1 = (OOC_INT64)cast;
  OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 96061)))), OOC_IR__VisitorDesc_VisitTypeCast)),OOC_IR__VisitorDesc_VisitTypeCast)((OOC_IR__Visitor)i0, (OOC_IR__TypeCast)i1);
  return;
  ;
}

static void OOC_IR__InitTypeConv(OOC_IR__TypeConv conv, OOC_Scanner_BasicList__Symbol sym, OOC_SymbolTable__Type type, OOC_IR__Expression expr) {
  register OOC_INT64 i0,i1,i2;

  i0 = (OOC_INT64)conv;
  i1 = (OOC_INT64)sym;
  i2 = (OOC_INT64)type;
  OOC_IR__InitOperator((OOC_IR__Operator)i0, (OOC_Scanner_BasicList__Symbol)i1, (OOC_SymbolTable__Type)i2);
  i1 = (OOC_INT64)expr;
  *(OOC_INT64*)((_check_pointer(i0, 96368))+16) = i1;
  return;
  ;
}

OOC_IR__Expression OOC_IR__BuilderDesc_NewTypeConv(OOC_IR__Builder b, OOC_SymbolTable__Type type, OOC_IR__Expression expr) {
  register OOC_INT64 i0,i1,i2,i3;
  OOC_IR__TypeConv conv;

  i0 = (OOC_INT64)expr;
  i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 96535))+8);
  i2 = (OOC_INT64)type;
  i1 = i1==i2;
  if (i1) goto l11;
  i1 = OOC_TYPE_TEST(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 96650)))), &_td_OOC_IR__TypeConvDesc);
  if (i1) goto l5;
  i1=0u;
  goto l7;
l5:
  i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 96691))+8);
  i1 = OOC_SymbolTable_TypeRules__IncludesType((OOC_SymbolTable__Type)i2, (OOC_SymbolTable__Type)i1);
  
l7:
  if (!i1) goto l10;
  i0 = (OOC_INT64)*(OOC_INT64*)((_check_pointer((_type_guard(i0, ((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 96758)))), &_td_OOC_IR__TypeConvDesc, 96758)), 96767))+16);
  expr = (OOC_IR__Expression)i0;
  
l10:
  i1 = (OOC_INT64)RT0__NewObject(_td_OOC_IR__TypeConv.baseTypes[0]);
  conv = (OOC_IR__TypeConv)i1;
  i3 = (OOC_INT64)*(OOC_INT64*)(_check_pointer(i0, 96833));
  OOC_IR__InitTypeConv((OOC_IR__TypeConv)i1, (OOC_Scanner_BasicList__Symbol)i3, (OOC_SymbolTable__Type)i2, (OOC_IR__Expression)i0);
  return (OOC_IR__Expression)i1;
  goto l12;
l11:
  return (OOC_IR__Expression)i0;
l12:
  _failed_function(96429); return 0;
  ;
}

void OOC_IR__VisitorDesc_VisitTypeConv(OOC_IR__Visitor v, OOC_IR__TypeConv conv) {

  return;
  ;
}

void OOC_IR__TypeConvDesc_Accept(OOC_IR__TypeConv conv, OOC_IR__Visitor v) {
  register OOC_INT64 i0,i1;

  i0 = (OOC_INT64)v;
  i1 = (OOC_INT64)conv;
  OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 97050)))), OOC_IR__VisitorDesc_VisitTypeConv)),OOC_IR__VisitorDesc_VisitTypeConv)((OOC_IR__Visitor)i0, (OOC_IR__TypeConv)i1);
  return;
  ;
}

OOC_CHAR8 OOC_IR__BuilderDesc_Widen(OOC_IR__Builder b, OOC_IR__Expression *expr, OOC_SymbolTable__Type type) {
  register OOC_INT64 i0,i1,i2;

  i0 = (OOC_INT64)*expr;
  i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 98534))+8);
  i2 = (OOC_INT64)type;
  _assert((i1!=(OOC_INT64)0), 127, 98522);
  _assert((i2!=(OOC_INT64)0), 127, 98552);
  i0 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 98607))+8);
  i0 = OOC_SymbolTable_TypeRules__SameType((OOC_SymbolTable__Type)i2, (OOC_SymbolTable__Type)i0);
  if (i0) goto l99;
  i0 = (OOC_INT64)*expr;
  i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 98726))+8);
  i1 = OOC_TYPE_TEST(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i1, 98733)))), &_td_OOC_SymbolTable__FormalParsDesc);
  if (i1) goto l93;
  i0 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 99063))+8);
  i0 = OOC_SymbolTable_TypeRules__IncludesType((OOC_SymbolTable__Type)i2, (OOC_SymbolTable__Type)i0);
  if (i0) goto l91;
  i0 = (OOC_INT64)*expr;
  i0 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 99312))+8);
  i0 = OOC_SymbolTable_TypeRules__IsExtensionOf((OOC_SymbolTable__Type)i0, (OOC_SymbolTable__Type)i2);
  if (i0) goto l89;
  i0 = (OOC_INT64)*expr;
  i0 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 99474))+8);
  i0 = OOC_IR__IsPredefType((OOC_SymbolTable__Type)i0, 16);
  if (i0) goto l11;
  i0=0u;
  goto l13;
l11:
  i0 = OOC_SymbolTable_TypeRules__IsNilCompatible((OOC_SymbolTable__Type)i2);
  
l13:
  if (i0) goto l87;
  i0 = OOC_SymbolTable_TypeRules__IsPredefType((OOC_SymbolTable__Type)i2, 12);
  if (i0) goto l17;
  i0=0u;
  goto l19;
l17:
  i0 = (OOC_INT64)*expr;
  i0 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 99704))+8);
  i0 = OOC_SymbolTable_TypeRules__IsPtrCompatible((OOC_SymbolTable__Type)i0);
  
l19:
  if (i0) goto l85;
  i0 = (OOC_INT64)*expr;
  i1 = OOC_TYPE_TEST(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 99805)))), &_td_OOC_IR__ConstDesc);
  if (i1) goto l23;
  i1=0u;
  goto l25;
l23:
  i1 = OOC_SymbolTable_TypeRules__IsStringConst((OOC_SymbolTable__Type)i2);
  
l25:
  if (i1) goto l27;
  i0=0u;
  goto l29;
l27:
  i0 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 99885))+8);
  i0 = (OOC_INT64)OOC_SymbolTable_TypeRules__BaseCharType((OOC_SymbolTable__Type)i0);
  i0 = i0!=(OOC_INT64)0;
  
l29:
  if (i0) goto l31;
  i0=0u;
  goto l33;
l31:
  i0 = (OOC_INT64)OOC_SymbolTable_TypeRules__BaseCharType((OOC_SymbolTable__Type)i2);
  i1 = (OOC_INT64)*expr;
  i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i1, 100000))+8);
  i1 = (OOC_INT64)OOC_SymbolTable_TypeRules__BaseCharType((OOC_SymbolTable__Type)i1);
  i0 = OOC_SymbolTable_TypeRules__IncludesType((OOC_SymbolTable__Type)i0, (OOC_SymbolTable__Type)i1);
  
l33:
  if (i0) goto l83;
  i0 = (OOC_INT64)*expr;
  i1 = OOC_TYPE_TEST(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 100166)))), &_td_OOC_IR__ConstDesc);
  if (i1) goto l37;
  i0=0u;
  goto l39;
l37:
  i0 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 100210))+8);
  i0 = (OOC_INT64)OOC_SymbolTable_TypeRules__BaseCharType((OOC_SymbolTable__Type)i0);
  i0 = i0!=(OOC_INT64)0;
  
l39:
  if (i0) goto l41;
  i0=0u;
  goto l43;
l41:
  i0 = OOC_TYPE_TEST(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i2, 100243)))), &_td_OOC_SymbolTable__ArrayDesc);
  
l43:
  if (i0) goto l45;
  i0=0u;
  goto l47;
l45:
  i0 = (OOC_INT64)*(OOC_INT64*)((_check_pointer((_type_guard(i2, ((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i2, 100293)))), &_td_OOC_SymbolTable__ArrayDesc, 100293)), 100299))+80);
  i0 = OOC_SymbolTable_TypeRules__IsCharType((OOC_SymbolTable__Type)i0);
  
l47:
  if (i0) goto l81;
  i0 = (OOC_INT64)*expr;
  i1 = OOC_TYPE_TEST(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 100472)))), &_td_OOC_IR__ConstDesc);
  if (i1) goto l51;
  i1=0u;
  goto l53;
l51:
  i1 = OOC_SymbolTable_TypeRules__IsObject((OOC_SymbolTable__Type)i2);
  
l53:
  if (i1) goto l55;
  i0=0u;
  goto l57;
l55:
  i0 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 100545))+8);
  i0 = (OOC_INT64)OOC_SymbolTable_TypeRules__BaseCharType((OOC_SymbolTable__Type)i0);
  i0 = i0!=(OOC_INT64)0;
  
l57:
  if (i0) goto l79;
  i0 = OOC_TYPE_TEST(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i2, 100718)))), &_td_OOC_SymbolTable__PointerDesc);
  if (i0) goto l61;
  i0=0u;
  goto l63;
l61:
  i0 = (OOC_INT64)OOC_SymbolTable_TypeRules__PointerBaseType((OOC_SymbolTable__Type)i2);
  i0 = OOC_SymbolTable_TypeRules__IsArrayOfChar((OOC_SymbolTable__Type)i0, 0u);
  
l63:
  if (i0) goto l65;
  i0=0u;
  goto l67;
l65:
  i0 = *(OOC_UINT8*)((_check_pointer((_type_guard(i2, ((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i2, 100817)))), &_td_OOC_SymbolTable__PointerDesc, 100817)), 100825))+88);
  
l67:
  if (i0) goto l69;
  i0=0u;
  goto l75;
l69:
  i0 = (OOC_INT64)OOC_SymbolTable_TypeRules__PointerBaseType((OOC_SymbolTable__Type)i2);
  i1 = (OOC_INT64)b;
  i0 = OOC_IR__BuilderDesc_Widen((OOC_IR__Builder)i1, (void*)(OOC_INT64)expr, (OOC_SymbolTable__Type)i0);
  if (i0) goto l72;
  i0 = (OOC_INT64)*expr;
  i0 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 100937))+8);
  i1 = (OOC_INT64)OOC_SymbolTable_TypeRules__PointerBaseType((OOC_SymbolTable__Type)i2);
  i0 = OOC_SymbolTable_TypeRules__IsArrayCompatible((OOC_SymbolTable__Type)i0, (OOC_SymbolTable__Type)i1);
  
  goto l75;
l72:
  i0=1u;
l75:
  if (i0) goto l77;
  return 0u;
  goto l100;
l77:
  i0 = (OOC_INT64)b;
  i1 = (OOC_INT64)*expr;
  i2 = (OOC_INT64)*(OOC_INT64*)(_check_pointer(i1, 101195));
  i0 = (OOC_INT64)OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 101182)))), OOC_IR__BuilderDesc_NewAdr)),OOC_IR__BuilderDesc_NewAdr)((OOC_IR__Builder)i0, (OOC_Scanner_BasicList__Symbol)i2, (OOC_IR__Expression)i1);
  *expr = (OOC_IR__Expression)i0;
  return 1u;
  goto l100;
l79:
  i0 = (OOC_INT64)b;
  i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 100660))+64);
  i2 = (OOC_INT64)*expr;
  i0 = (OOC_INT64)OOC_IR__BuilderDesc_NewTypeConv((OOC_IR__Builder)i0, (OOC_SymbolTable__Type)i1, (OOC_IR__Expression)i2);
  *expr = (OOC_IR__Expression)i0;
  return 1u;
  goto l100;
l81:
  i0 = (OOC_INT64)*(OOC_INT64*)((_check_pointer((_type_guard(i2, ((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i2, 100432)))), &_td_OOC_SymbolTable__ArrayDesc, 100432)), 100438))+80);
  i0 = (OOC_INT64)OOC_SymbolTable_TypeRules__MatchingStringConst((OOC_SymbolTable__Type)i0);
  i1 = (OOC_INT64)b;
  i0 = OOC_IR__BuilderDesc_Widen((OOC_IR__Builder)i1, (void*)(OOC_INT64)expr, (OOC_SymbolTable__Type)i0);
  return i0;
  goto l100;
l83:
  i0 = (OOC_INT64)b;
  i1 = (OOC_INT64)*expr;
  i1 = (OOC_INT64)OOC_IR__BuilderDesc_NewTypeConv((OOC_IR__Builder)i0, (OOC_SymbolTable__Type)i2, (OOC_IR__Expression)i1);
  i0 = (OOC_INT64)OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 100092)))), OOC_IR__BuilderDesc_Fold)),OOC_IR__BuilderDesc_Fold)((OOC_IR__Builder)i0, (OOC_IR__Expression)i1);
  *expr = (OOC_IR__Expression)i0;
  return 1u;
  goto l100;
l85:
  return 1u;
  goto l100;
l87:
  return 1u;
  goto l100;
l89:
  return 1u;
  goto l100;
l91:
  i0 = (OOC_INT64)b;
  i1 = (OOC_INT64)*expr;
  i1 = (OOC_INT64)OOC_IR__BuilderDesc_NewTypeConv((OOC_IR__Builder)i0, (OOC_SymbolTable__Type)i2, (OOC_IR__Expression)i1);
  i0 = (OOC_INT64)OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 99217)))), OOC_IR__BuilderDesc_Fold)),OOC_IR__BuilderDesc_Fold)((OOC_IR__Builder)i0, (OOC_IR__Expression)i1);
  *expr = (OOC_IR__Expression)i0;
  return 1u;
  goto l100;
l93:
  i1 = OOC_TYPE_TEST(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i2, 98882)))), &_td_OOC_SymbolTable__FormalParsDesc);
  if (i1) goto l96;
  i0=0u;
  goto l97;
l96:
  i0 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 98994))+8);
  i0 = OOC_SymbolTable_TypeRules__FormalParamsMatch((OOC_SymbolTable__Type)(_type_guard(i2, ((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i2, 98944)))), &_td_OOC_SymbolTable__FormalParsDesc, 98944)), (OOC_SymbolTable__FormalPars)(_type_guard(i0, ((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 99005)))), &_td_OOC_SymbolTable__FormalParsDesc, 99005)), 0u);
  
l97:
  return i0;
  goto l100;
l99:
  return 1u;
l100:
  _failed_function(97111); return 0;
  ;
}

OOC_CHAR8 OOC_IR__BuilderDesc_WidenForAssign(OOC_IR__Builder b, OOC_IR__Expression *expr, OOC_SymbolTable__Type type) {
  register OOC_INT64 i0,i1,i2;
  OOC_IR__Expression oldExpr;
  auto OOC_CHAR8 OOC_IR__BuilderDesc_WidenForAssign_LengthOk(void);
    
    OOC_CHAR8 OOC_IR__BuilderDesc_WidenForAssign_LengthOk(void) {
      register OOC_INT64 i0,i1,i2;

      i0 = (OOC_INT64)*expr;
      i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 101806))+8);
      i1 = OOC_SymbolTable_TypeRules__IsStringConst((OOC_SymbolTable__Type)i1);
      if (i1) goto l3;
      return 1u;
      goto l8;
l3:
      i1 = (OOC_INT64)type;
      i2 = *(OOC_UINT8*)((_check_pointer((_type_guard(i1, ((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i1, 101839)))), &_td_OOC_SymbolTable__ArrayDesc, 101839)), 101845))+72);
      if (i2) goto l6;
      i0 = (OOC_INT64)*(OOC_INT64*)((_check_pointer((_type_guard(i0, ((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 101924)))), &_td_OOC_IR__ConstDesc, 101924)), 101930))+16);
      i0 = (OOC_INT64)*(OOC_INT64*)(_check_pointer((_type_guard(i0, ((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 101944)))), &_td_Object_Boxed__StringDesc, 101944)), 101951));
      i0 = *(OOC_INT32*)(_check_pointer(i0, 101958));
      i1 = *(OOC_INT32*)((_check_pointer((_type_guard(i1, ((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i1, 101996)))), &_td_OOC_SymbolTable__ArrayDesc, 101996)), 102002))+96);
      return (i0<i1);
      goto l8;
l6:
      return 0u;
l8:
      _failed_function(101743); return 0;
      ;
    }


  i0 = (OOC_INT64)*expr;
  oldExpr = (OOC_IR__Expression)i0;
  i1 = (OOC_INT64)type;
  i2 = OOC_TYPE_TEST(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i1, 102132)))), &_td_OOC_SymbolTable__TypeVarDesc);
  if (i2) goto l3;
  i2=0u;
  goto l9;
l3:
  i2 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 102171))+8);
  i2 = i1==i2;
  if (i2) goto l6;
  i2 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 102199))+8);
  i2 = OOC_IR__IsPredefType((OOC_SymbolTable__Type)i2, 16);
  
  goto l7;
l6:
  i2=1u;
l7:
  i2 = !i2;
  
l9:
  if (i2) goto l27;
  i2 = OOC_IR__IsPredefType((OOC_SymbolTable__Type)i1, 11);
  if (i2) goto l13;
  i2=0u;
  goto l15;
l13:
  i2 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 102462))+8);
  i2 = OOC_SymbolTable_TypeRules__IsByteCompatible((OOC_SymbolTable__Type)i2);
  
l15:
  if (i2) goto l21;
  i2 = (OOC_INT64)b;
  i1 = OOC_IR__BuilderDesc_Widen((OOC_IR__Builder)i2, (void*)(OOC_INT64)expr, (OOC_SymbolTable__Type)i1);
  if (i1) goto l19;
  i1=0u;
  goto l23;
l19:
  i1 = OOC_IR__BuilderDesc_WidenForAssign_LengthOk();
  
  goto l23;
l21:
  i1=1u;
l23:
  if (i1) goto l25;
  *expr = (OOC_IR__Expression)i0;
  return 0u;
  goto l28;
l25:
  return 1u;
  goto l28;
l27:
  return 0u;
l28:
  _failed_function(101303); return 0;
  ;
}

OOC_CHAR8 OOC_IR__BuilderDesc_WidenToCommon(OOC_IR__Builder b, OOC_IR__Expression *left, OOC_IR__Expression *right) {
  register OOC_INT64 i0,i1,i2;
  auto OOC_SymbolTable__Type OOC_IR__BuilderDesc_WidenToCommon_CommonBase(OOC_SymbolTable__Type t1, OOC_SymbolTable__Type t2);
    
    OOC_SymbolTable__Type OOC_IR__BuilderDesc_WidenToCommon_CommonBase(OOC_SymbolTable__Type t1, OOC_SymbolTable__Type t2) {
      register OOC_INT64 i0,i1,i2;

      i0 = (OOC_INT64)t1;
      i0 = (OOC_INT64)OOC_SymbolTable_TypeRules__BaseCharType((OOC_SymbolTable__Type)i0);
      i1 = (OOC_INT64)t2;
      i1 = (OOC_INT64)OOC_SymbolTable_TypeRules__BaseCharType((OOC_SymbolTable__Type)i1);
      i2 = i0!=(OOC_INT64)0;
      if (i2) goto l3;
      i2=0u;
      goto l5;
l3:
      i2 = i1!=(OOC_INT64)0;
      
l5:
      if (i2) goto l7;
      return (OOC_SymbolTable__Type)(OOC_INT64)0;
      goto l12;
l7:
      i2 = OOC_SymbolTable_TypeRules__IncludesType((OOC_SymbolTable__Type)i1, (OOC_SymbolTable__Type)i0);
      if (!i2) goto l11;
      i0=i1;
l11:
      i0 = (OOC_INT64)OOC_SymbolTable_TypeRules__MatchingStringConst((OOC_SymbolTable__Type)i0);
      return (OOC_SymbolTable__Type)i0;
l12:
      _failed_function(103205); return 0;
      ;
    }


  i0 = (OOC_INT64)*right;
  i0 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 103740))+8);
  i1 = (OOC_INT64)b;
  i0 = OOC_IR__BuilderDesc_Widen((OOC_IR__Builder)i1, (void*)(OOC_INT64)left, (OOC_SymbolTable__Type)i0);
  if (i0) goto l3;
  i0 = (OOC_INT64)*left;
  i0 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 103769))+8);
  i0 = OOC_IR__BuilderDesc_Widen((OOC_IR__Builder)i1, (void*)(OOC_INT64)right, (OOC_SymbolTable__Type)i0);
  
  goto l5;
l3:
  i0=1u;
l5:
  if (i0) goto l21;
  i0 = (OOC_INT64)*left;
  i1 = OOC_TYPE_TEST(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 103812)))), &_td_OOC_IR__ConstDesc);
  if (i1) goto l9;
  i1=0u;
  goto l11;
l9:
  i1 = (OOC_INT64)*right;
  i1 = OOC_TYPE_TEST(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i1, 103831)))), &_td_OOC_IR__ConstDesc);
  
l11:
  if (!i1) goto l22;
  i1 = (OOC_INT64)*right;
  i0 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 103873))+8);
  i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i1, 103885))+8);
  i0 = (OOC_INT64)OOC_IR__BuilderDesc_WidenToCommon_CommonBase((OOC_SymbolTable__Type)i0, (OOC_SymbolTable__Type)i1);
  i1 = i0!=(OOC_INT64)0;
  if (!i1) goto l22;
  i1 = (OOC_INT64)b;
  i2 = OOC_IR__BuilderDesc_Widen((OOC_IR__Builder)i1, (void*)(OOC_INT64)left, (OOC_SymbolTable__Type)i0);
  if (i2) goto l17;
  i0=0u;
  goto l18;
l17:
  i0 = OOC_IR__BuilderDesc_Widen((OOC_IR__Builder)i1, (void*)(OOC_INT64)right, (OOC_SymbolTable__Type)i0);
  
l18:
  _assert(i0, 127, 103978);
  return 1u;
  goto l22;
l21:
  return 1u;
l22:
  return 0u;
  ;
}

static void OOC_IR__MakeAssignmentCompatible(OOC_IR__Builder b, OOC_Scanner_BasicList__Symbol sym, OOC_IR__Expression *expr, OOC_SymbolTable__Type type) {
  register OOC_INT64 i0,i1,i2,i3;

  i0 = (OOC_INT64)b;
  i1 = (OOC_INT64)type;
  i2 = OOC_IR__BuilderDesc_WidenForAssign((OOC_IR__Builder)i0, (void*)(OOC_INT64)expr, (OOC_SymbolTable__Type)i1);
  i2 = !i2;
  if (i2) goto l3;
  i2=0u;
  goto l5;
l3:
  i2 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 104499))+40);
  i3 = (OOC_INT64)*expr;
  i2 = i3!=i2;
  
l5:
  if (!i2) goto l7;
  i2 = (OOC_INT64)sym;
  OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 104523)))), OOC_IR__BuilderDesc_ErrSym)),OOC_IR__BuilderDesc_ErrSym)((OOC_IR__Builder)i0, 24, (OOC_Scanner_BasicList__Symbol)i2);
  OOC_IR__BuilderDesc_SetNameToType((OOC_IR__Builder)i0, (OOC_SymbolTable__Type)i1);
l7:
  return;
  ;
}

static void OOC_IR__InitTypeTag(OOC_IR__TypeTag tag, OOC_Scanner_BasicList__Symbol sym, OOC_IR__Expression design) {
  register OOC_INT64 i0,i1,i2;

  i0 = (OOC_INT64)OOC_SymbolTable_Predef__GetType(7);
  i1 = (OOC_INT64)tag;
  i2 = (OOC_INT64)sym;
  OOC_IR__InitOperator((OOC_IR__Operator)i1, (OOC_Scanner_BasicList__Symbol)i2, (OOC_SymbolTable__Type)i0);
  i0 = (OOC_INT64)design;
  *(OOC_INT64*)((_check_pointer(i1, 104886))+16) = i0;
  return;
  ;
}

OOC_IR__Expression OOC_IR__BuilderDesc_NewTypeTag(OOC_IR__Builder b, OOC_Scanner_BasicList__Symbol sym, OOC_IR__Expression design) {
  register OOC_INT64 i0,i1,i2;
  OOC_SymbolTable__Type type;

  i0 = (OOC_INT64)design;
  i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 105077))+8);
  i2 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 105077))+8);
  i1 = (OOC_INT64)OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i1, 105082)))), OOC_SymbolTable__TypeDesc_Deparam)),OOC_SymbolTable__TypeDesc_Deparam)((OOC_SymbolTable__Type)i2);
  type = (OOC_SymbolTable__Type)i1;
  i2 = !(OOC_TYPE_TEST(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i1, 105108)))), &_td_OOC_SymbolTable__RecordDesc));
  if (i2) goto l3;
  i1 = *(OOC_UINT8*)((_check_pointer((_type_guard(i1, ((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i1, 105136)))), &_td_OOC_SymbolTable__RecordDesc, 105136)), 105143))+70);
  i1 = !i1;
  
  goto l5;
l3:
  i1=1u;
l5:
  if (!i1) goto l7;
  i1 = (OOC_INT64)b;
  i2 = (OOC_INT64)*(OOC_INT64*)(_check_pointer(i0, 105195));
  OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i1, 105170)))), OOC_IR__BuilderDesc_ErrSym)),OOC_IR__BuilderDesc_ErrSym)((OOC_IR__Builder)i1, 55, (OOC_Scanner_BasicList__Symbol)i2);
l7:
  i1 = (OOC_INT64)sym;
  i2 = (OOC_INT64)RT0__NewObject(_td_OOC_IR__TypeTag.baseTypes[0]);
  OOC_IR__InitTypeTag((OOC_IR__TypeTag)i2, (OOC_Scanner_BasicList__Symbol)i1, (OOC_IR__Expression)i0);
  return (OOC_IR__Expression)i2;
  ;
}

void OOC_IR__VisitorDesc_VisitTypeTag(OOC_IR__Visitor v, OOC_IR__TypeTag tag) {

  return;
  ;
}

void OOC_IR__TypeTagDesc_Accept(OOC_IR__TypeTag tag, OOC_IR__Visitor v) {
  register OOC_INT64 i0,i1;

  i0 = (OOC_INT64)v;
  i1 = (OOC_INT64)tag;
  OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 105447)))), OOC_IR__VisitorDesc_VisitTypeTag)),OOC_IR__VisitorDesc_VisitTypeTag)((OOC_IR__Visitor)i0, (OOC_IR__TypeTag)i1);
  return;
  ;
}

static void OOC_IR__InitTypeTest(OOC_IR__TypeTest test, OOC_Scanner_BasicList__Symbol sym, OOC_IR__Expression expr, OOC_SymbolTable__Type referenceType, OOC_CHAR8 checkPointer, OOC_IR__Expression origExpr, OOC_IR__TypeRef origType) {
  register OOC_INT64 i0,i1,i2;

  i0 = (OOC_INT64)OOC_SymbolTable_Predef__GetType(0);
  i1 = (OOC_INT64)test;
  i2 = (OOC_INT64)sym;
  OOC_IR__InitOperator((OOC_IR__Operator)i1, (OOC_Scanner_BasicList__Symbol)i2, (OOC_SymbolTable__Type)i0);
  i0 = (OOC_INT64)expr;
  *(OOC_INT64*)((_check_pointer(i1, 105902))+16) = i0;
  i0 = (OOC_INT64)referenceType;
  *(OOC_INT64*)((_check_pointer(i1, 105926))+24) = i0;
  i0 = checkPointer;
  *(OOC_UINT8*)((_check_pointer(i1, 105968))+32) = i0;
  i0 = (OOC_INT64)origExpr;
  *(OOC_INT64*)((_check_pointer(i1, 106008))+40) = i0;
  i0 = (OOC_INT64)origType;
  *(OOC_INT64*)((_check_pointer(i1, 106040))+48) = i0;
  return;
  ;
}

OOC_IR__Expression OOC_IR__BuilderDesc_NewTypeTest(OOC_IR__Builder b, OOC_Scanner_BasicList__Symbol sym, OOC_IR__Expression expr, OOC_IR__Expression referenceType) {
  register OOC_INT64 i0,i1,i2,i3,i4,i5,i6,i7;
  OOC_SymbolTable__Type refType;
  OOC_IR__Expression origExpr;
  OOC_CHAR8 checkPointer;
  OOC_IR__TypeTest test;
  auto OOC_CHAR8 OOC_IR__BuilderDesc_NewTypeTest_HasDynamicType(OOC_IR__Expression expr);
    
    OOC_CHAR8 OOC_IR__BuilderDesc_NewTypeTest_HasDynamicType(OOC_IR__Expression expr) {
      register OOC_INT64 i0,i1,i2;
      OOC_SymbolTable__Type type;

      i0 = (OOC_INT64)expr;
      i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 106420))+8);
      i2 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 106420))+8);
      i1 = (OOC_INT64)OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i1, 106425)))), OOC_SymbolTable__TypeDesc_Deparam)),OOC_SymbolTable__TypeDesc_Deparam)((OOC_SymbolTable__Type)i2);
      type = (OOC_SymbolTable__Type)i1;
      i2 = OOC_TYPE_TEST(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i1, 106452)))), &_td_OOC_SymbolTable__RecordDesc);
      if (i2) goto l15;
      i0 = OOC_TYPE_TEST(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i1, 106625)))), &_td_OOC_SymbolTable__PointerDesc);
      if (i0) goto l9;
      i0 = OOC_TYPE_TEST(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i1, 106714)))), &_td_OOC_SymbolTable__TypeVarDesc);
      if (i0) goto l7;
      return 0u;
      goto l24;
l7:
      return 1u;
      goto l24;
l9:
      i0 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i1, 106673))+72);
      i0 = OOC_SymbolTable_TypeRules__IsRecord((OOC_SymbolTable__Type)i0);
      if (i0) goto l12;
      i0=0u;
      goto l13;
l12:
      i0 = *(OOC_UINT8*)((_check_pointer(i1, 106691))+89);
      i0 = !i0;
      
l13:
      return i0;
      goto l24;
l15:
      i1 = !(OOC_TYPE_TEST(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 106490)))), &_td_OOC_IR__VarDesc));
      if (i1) goto l22;
      i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer((_type_guard(i0, ((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 106519)))), &_td_OOC_IR__VarDesc, 106519)), 106523))+16);
      i1 = *(OOC_UINT8*)((_check_pointer((_type_guard(i1, ((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i1, 106533)))), &_td_OOC_SymbolTable__VarDeclDesc, 106533)), 106541))+107);
      if (i1) goto l20;
      i0=0u;
      goto l23;
l20:
      i0 = (OOC_INT64)*(OOC_INT64*)((_check_pointer((_type_guard(i0, ((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 106573)))), &_td_OOC_IR__VarDesc, 106573)), 106577))+16);
      i0 = *(OOC_UINT8*)((_check_pointer((_type_guard(i0, ((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 106587)))), &_td_OOC_SymbolTable__VarDeclDesc, 106587)), 106595))+112);
      
      goto l23;
l22:
      i0=1u;
l23:
      return i0;
l24:
      _failed_function(106318); return 0;
      ;
    }


  i0 = (OOC_INT64)b;
  i1 = (OOC_INT64)referenceType;
  i2 = (OOC_INT64)OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 106899)))), OOC_IR__BuilderDesc_AssertType)),OOC_IR__BuilderDesc_AssertType)((OOC_IR__Builder)i0, (OOC_IR__Expression)i1);
  refType = (OOC_SymbolTable__Type)i2;
  i3 = i2==(OOC_INT64)0;
  if (i3) goto l34;
  i3 = OOC_TYPE_TEST(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i2, 107003)))), &_td_OOC_SymbolTable__TypeVarDesc);
  if (i3) goto l32;
  i2 = (OOC_INT64)OOC_SymbolTable__Expand((OOC_SymbolTable__Type)i2);
  i3 = (OOC_INT64)expr;
  i4 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i3, 107144))+8);
  i2 = OOC_SymbolTable_TypeRules__IsInducedExtensionOf((OOC_SymbolTable__Type)i2, (OOC_SymbolTable__Type)i4, 1u);
  i2 = !i2;
  if (i2) goto l30;
  i0 = OOC_IR__BuilderDesc_NewTypeTest_HasDynamicType((OOC_IR__Expression)i3);
  i0 = !i0;
  if (i0) goto l28;
  i0 = (OOC_INT64)refType;
  i1 = (OOC_INT64)OOC_SymbolTable__Expand((OOC_SymbolTable__Type)i0);
  i2 = (OOC_INT64)expr;
  i3 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i2, 107587))+8);
  i1 = OOC_SymbolTable_TypeRules__SameType((OOC_SymbolTable__Type)i1, (OOC_SymbolTable__Type)i3);
  if (!i1) goto l11;
  i1 = (OOC_INT64)referenceType;
  i1 = (OOC_INT64)*(OOC_INT64*)(_check_pointer(i1, 107649));
  i3 = (OOC_INT64)b;
  OOC_IR__BuilderDesc_WarnSym((OOC_IR__Builder)i3, 61, (OOC_Scanner_BasicList__Symbol)i1);
l11:
  origExpr = (OOC_IR__Expression)i2;
  i1 = (OOC_INT64)sym;
  i3 = *(OOC_INT32*)((_check_pointer(i1, 107765))+28);
  i4 = (OOC_INT64)OOC_Config_StdPragmas__derefCheck;
  i5 = (OOC_INT64)b;
  i3 = OOC_IR__GetPragmaValue((OOC_IR__Builder)i5, (Config_Section_Options__Option)i4, i3);
  checkPointer = i3;
  i4 = OOC_TYPE_TEST(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i2, 107788)))), &_td_OOC_IR__DerefDesc);
  if (i4) goto l22;
  i4 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i2, 107858))+8);
  i4 = OOC_TYPE_TEST(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i4, 107864)))), &_td_OOC_SymbolTable__PointerDesc);
  if (i4) goto l16;
  i4 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i2, 107888))+8);
  i4 = OOC_TYPE_TEST(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i4, 107894)))), &_td_OOC_SymbolTable__TypeVarDesc);
  
  goto l18;
l16:
  i4=1u;
l18:
  if (!i4) goto l21;
  i0 = (OOC_INT64)OOC_SymbolTable_TypeRules__PointerBaseType((OOC_SymbolTable__Type)i0);
  refType = (OOC_SymbolTable__Type)i0;
  
l21:
  i4=i0;i0=i2;
  goto l23;
l22:
  i4 = (OOC_INT64)*(OOC_INT64*)((_check_pointer((_type_guard(i2, ((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i2, 107824)))), &_td_OOC_IR__DerefDesc, 107824)), 107830))+16);
  expr = (OOC_IR__Expression)i4;
  {register OOC_INT64 h0=i0;i0=i4;i4=h0;}
l23:
  i5 = (OOC_INT64)RT0__NewObject(_td_OOC_IR__TypeTest.baseTypes[0]);
  test = (OOC_IR__TypeTest)i5;
  i6 = (OOC_INT64)referenceType;
  i7 = OOC_TYPE_TEST(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i6, 108016)))), &_td_OOC_IR__TypeRefDesc);
  if (i7) goto l26;
  i6=(OOC_INT64)0;
  goto l27;
l26:
  i6 = _type_guard(i6, ((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i6, 108066)))), &_td_OOC_IR__TypeRefDesc, 108066);
  
l27:
  OOC_IR__InitTypeTest((OOC_IR__TypeTest)i5, (OOC_Scanner_BasicList__Symbol)i1, (OOC_IR__Expression)i0, (OOC_SymbolTable__Type)i4, i3, (OOC_IR__Expression)i2, (OOC_IR__TypeRef)i6);
  return (OOC_IR__Expression)i5;
  goto l35;
l28:
  i0 = (OOC_INT64)b;
  i1 = (OOC_INT64)expr;
  i1 = (OOC_INT64)*(OOC_INT64*)(_check_pointer(i1, 107525));
  i0 = (OOC_INT64)OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 107495)))), OOC_IR__BuilderDesc_ErrExpr)),OOC_IR__BuilderDesc_ErrExpr)((OOC_IR__Builder)i0, 43, (OOC_Scanner_BasicList__Symbol)i1);
  return (OOC_IR__Expression)i0;
  goto l35;
l30:
  i1 = (OOC_INT64)*(OOC_INT64*)(_check_pointer(i1, 107219));
  i0 = (OOC_INT64)OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 107176)))), OOC_IR__BuilderDesc_ErrExpr)),OOC_IR__BuilderDesc_ErrExpr)((OOC_IR__Builder)i0, 17, (OOC_Scanner_BasicList__Symbol)i1);
  return (OOC_IR__Expression)i0;
  goto l35;
l32:
  i1 = (OOC_INT64)*(OOC_INT64*)(_check_pointer(i1, 107077));
  i0 = (OOC_INT64)OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 107038)))), OOC_IR__BuilderDesc_ErrExpr)),OOC_IR__BuilderDesc_ErrExpr)((OOC_IR__Builder)i0, 67, (OOC_Scanner_BasicList__Symbol)i1);
  return (OOC_IR__Expression)i0;
  goto l35;
l34:
  i0 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 106971))+40);
  return (OOC_IR__Expression)i0;
l35:
  _failed_function(106108); return 0;
  ;
}

void OOC_IR__VisitorDesc_VisitTypeTest(OOC_IR__Visitor v, OOC_IR__TypeTest test) {

  return;
  ;
}

void OOC_IR__TypeTestDesc_Accept(OOC_IR__TypeTest test, OOC_IR__Visitor v) {
  register OOC_INT64 i0,i1;

  i0 = (OOC_INT64)v;
  i1 = (OOC_INT64)test;
  OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 108400)))), OOC_IR__VisitorDesc_VisitTypeTest)),OOC_IR__VisitorDesc_VisitTypeTest)((OOC_IR__Visitor)i0, (OOC_IR__TypeTest)i1);
  return;
  ;
}

static void OOC_IR__InitTypeGuard(OOC_IR__TypeGuard guard, OOC_Scanner_BasicList__Symbol sym, OOC_SymbolTable__Type type, OOC_IR__TypeTest test, OOC_CHAR8 checkPointer, OOC_CHAR8 checkType) {
  register OOC_INT64 i0,i1,i2;

  i0 = (OOC_INT64)guard;
  i1 = (OOC_INT64)sym;
  i2 = (OOC_INT64)type;
  OOC_IR__InitOperator((OOC_IR__Operator)i0, (OOC_Scanner_BasicList__Symbol)i1, (OOC_SymbolTable__Type)i2);
  i1 = (OOC_INT64)test;
  *(OOC_INT64*)((_check_pointer(i0, 108774))+16) = i1;
  i1 = checkPointer;
  *(OOC_UINT8*)((_check_pointer(i0, 108799))+24) = i1;
  i1 = checkType;
  *(OOC_UINT8*)((_check_pointer(i0, 108840))+25) = i1;
  return;
  ;
}

OOC_IR__Expression OOC_IR__BuilderDesc_NewTypeGuard(OOC_IR__Builder b, OOC_Scanner_BasicList__Symbol sym, OOC_IR__Expression design, OOC_IR__TypeRef ref) {
  register OOC_INT64 i0,i1,i2,i3,i4,i5,i6,i7;
  OOC_SymbolTable__Type guardType;
  OOC_IR__Expression test;
  OOC_IR__TypeGuard guard;

  i0 = (OOC_INT64)ref;
  i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 109117))+24);
  guardType = (OOC_SymbolTable__Type)i1;
  i2 = (OOC_INT64)b;
  i3 = (OOC_INT64)design;
  i4 = (OOC_INT64)sym;
  OOC_IR__BuilderDesc_CheckFunctionOp((OOC_IR__Builder)i2, (OOC_IR__Expression)i3, (OOC_Scanner_BasicList__Symbol)i4);
  i0 = (OOC_INT64)OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i2, 109173)))), OOC_IR__BuilderDesc_NewTypeTest)),OOC_IR__BuilderDesc_NewTypeTest)((OOC_IR__Builder)i2, (OOC_Scanner_BasicList__Symbol)i4, (OOC_IR__Expression)i3, (OOC_IR__Expression)i0);
  test = (OOC_IR__Expression)i0;
  i3 = OOC_TYPE_TEST(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 109215)))), &_td_OOC_IR__TypeTestDesc);
  if (i3) goto l3;
  return (OOC_IR__Expression)i0;
  goto l4;
l3:
  i3 = (OOC_INT64)RT0__NewObject(_td_OOC_IR__TypeGuard.baseTypes[0]);
  guard = (OOC_IR__TypeGuard)i3;
  i1 = (OOC_INT64)OOC_SymbolTable__Expand((OOC_SymbolTable__Type)i1);
  i5 = *(OOC_INT32*)((_check_pointer(i4, 109379))+28);
  i6 = (OOC_INT64)OOC_Config_StdPragmas__derefCheck;
  i5 = OOC_IR__GetPragmaValue((OOC_IR__Builder)i2, (Config_Section_Options__Option)i6, i5);
  i6 = *(OOC_INT32*)((_check_pointer(i4, 109447))+28);
  i7 = (OOC_INT64)OOC_Config_StdPragmas__typeGuard;
  i2 = OOC_IR__GetPragmaValue((OOC_IR__Builder)i2, (Config_Section_Options__Option)i7, i6);
  OOC_IR__InitTypeGuard((OOC_IR__TypeGuard)i3, (OOC_Scanner_BasicList__Symbol)i4, (OOC_SymbolTable__Type)i1, (OOC_IR__TypeTest)(_type_guard(i0, ((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 109306)))), &_td_OOC_IR__TypeTestDesc, 109306)), i5, i2);
  return (OOC_IR__Expression)i3;
l4:
  _failed_function(108912); return 0;
  ;
}

void OOC_IR__VisitorDesc_VisitTypeGuard(OOC_IR__Visitor v, OOC_IR__TypeGuard test) {

  return;
  ;
}

void OOC_IR__TypeGuardDesc_Accept(OOC_IR__TypeGuard test, OOC_IR__Visitor v) {
  register OOC_INT64 i0,i1;

  i0 = (OOC_INT64)v;
  i1 = (OOC_INT64)test;
  OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 109678)))), OOC_IR__VisitorDesc_VisitTypeGuard)),OOC_IR__VisitorDesc_VisitTypeGuard)((OOC_IR__Visitor)i0, (OOC_IR__TypeGuard)i1);
  return;
  ;
}

static void OOC_IR__InitReference(OOC_IR__Reference ref, OOC_Scanner_BasicList__Symbol name, OOC_SymbolTable__Type type, OOC_SymbolTable__Declaration decl) {
  register OOC_INT64 i0,i1,i2;

  i0 = (OOC_INT64)ref;
  i1 = (OOC_INT64)name;
  i2 = (OOC_INT64)type;
  OOC_IR__InitExpression((OOC_IR__Expression)i0, (OOC_Scanner_BasicList__Symbol)i1, (OOC_SymbolTable__Type)i2);
  i1 = (OOC_INT64)decl;
  *(OOC_INT64*)((_check_pointer(i0, 110002))+16) = i1;
  return;
  ;
}

static void OOC_IR__InitModuleRef(OOC_IR__ModuleRef modRef, OOC_Scanner_BasicList__Symbol name, OOC_SymbolTable__Type type, OOC_SymbolTable__Module decl) {
  register OOC_INT64 i0,i1,i2,i3;

  i0 = (OOC_INT64)modRef;
  i1 = (OOC_INT64)name;
  i2 = (OOC_INT64)type;
  i3 = (OOC_INT64)decl;
  OOC_IR__InitReference((OOC_IR__Reference)i0, (OOC_Scanner_BasicList__Symbol)i1, (OOC_SymbolTable__Type)i2, (OOC_SymbolTable__Declaration)i3);
  return;
  ;
}

OOC_IR__ModuleRef OOC_IR__BuilderDesc_NewModuleRef(OOC_IR__Builder b, OOC_Scanner_BasicList__Symbol name, OOC_SymbolTable__Module decl) {
  register OOC_INT64 i0,i1,i2,i3;
  OOC_IR__ModuleRef modRef;

  i0 = (OOC_INT64)RT0__NewObject(_td_OOC_IR__ModuleRef.baseTypes[0]);
  modRef = (OOC_IR__ModuleRef)i0;
  i1 = (OOC_INT64)b;
  i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i1, 110515))+56);
  i2 = (OOC_INT64)name;
  i3 = (OOC_INT64)decl;
  OOC_IR__InitModuleRef((OOC_IR__ModuleRef)i0, (OOC_Scanner_BasicList__Symbol)i2, (OOC_SymbolTable__Type)i1, (OOC_SymbolTable__Module)i3);
  return (OOC_IR__ModuleRef)i0;
  ;
}

void OOC_IR__VisitorDesc_VisitModuleRef(OOC_IR__Visitor v, OOC_IR__ModuleRef modRef) {

  return;
  ;
}

void OOC_IR__ModuleRefDesc_Accept(OOC_IR__ModuleRef modRef, OOC_IR__Visitor v) {
  register OOC_INT64 i0,i1;

  i0 = (OOC_INT64)v;
  i1 = (OOC_INT64)modRef;
  OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 110734)))), OOC_IR__VisitorDesc_VisitModuleRef)),OOC_IR__VisitorDesc_VisitModuleRef)((OOC_IR__Visitor)i0, (OOC_IR__ModuleRef)i1);
  return;
  ;
}

static void OOC_IR__InitPredefProc(OOC_IR__PredefProc pproc, OOC_Scanner_BasicList__Symbol name, OOC_SymbolTable__Type type, OOC_SymbolTable__PredefProc decl) {
  register OOC_INT64 i0,i1,i2,i3;

  i0 = (OOC_INT64)pproc;
  i1 = (OOC_INT64)name;
  i2 = (OOC_INT64)type;
  i3 = (OOC_INT64)decl;
  OOC_IR__InitReference((OOC_IR__Reference)i0, (OOC_Scanner_BasicList__Symbol)i1, (OOC_SymbolTable__Type)i2, (OOC_SymbolTable__Declaration)i3);
  return;
  ;
}

static OOC_IR__PredefProc OOC_IR__NewPredefProc(OOC_Scanner_BasicList__Symbol name, OOC_SymbolTable__PredefProc decl) {
  register OOC_INT64 i0,i1,i2;

  i0 = (OOC_INT64)RT0__NewObject(_td_OOC_IR__PredefProc.baseTypes[0]);
  i1 = (OOC_INT64)name;
  i2 = (OOC_INT64)decl;
  OOC_IR__InitPredefProc((OOC_IR__PredefProc)i0, (OOC_Scanner_BasicList__Symbol)i1, (OOC_SymbolTable__Type)(OOC_INT64)0, (OOC_SymbolTable__PredefProc)i2);
  return (OOC_IR__PredefProc)i0;
  ;
}

void OOC_IR__VisitorDesc_VisitPredefProc(OOC_IR__Visitor v, OOC_IR__PredefProc pproc) {

  return;
  ;
}

void OOC_IR__PredefProcDesc_Accept(OOC_IR__PredefProc pproc, OOC_IR__Visitor v) {
  register OOC_INT64 i0,i1;

  i0 = (OOC_INT64)v;
  i1 = (OOC_INT64)pproc;
  OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 111460)))), OOC_IR__VisitorDesc_VisitPredefProc)),OOC_IR__VisitorDesc_VisitPredefProc)((OOC_IR__Visitor)i0, (OOC_IR__PredefProc)i1);
  return;
  ;
}

static void OOC_IR__InitProcedureRef(OOC_IR__ProcedureRef procRef, OOC_Scanner_BasicList__Symbol name, OOC_SymbolTable__ProcDecl decl) {
  register OOC_INT64 i0,i1,i2,i3;

  i0 = (OOC_INT64)decl;
  i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 111747))+112);
  i2 = (OOC_INT64)procRef;
  i3 = (OOC_INT64)name;
  OOC_IR__InitReference((OOC_IR__Reference)i2, (OOC_Scanner_BasicList__Symbol)i3, (OOC_SymbolTable__Type)i1, (OOC_SymbolTable__Declaration)i0);
  return;
  ;
}

static OOC_IR__ProcedureRef OOC_IR__NewProcedureRef(OOC_Scanner_BasicList__Symbol name, OOC_SymbolTable__ProcDecl decl) {
  register OOC_INT64 i0,i1,i2;

  i0 = (OOC_INT64)RT0__NewObject(_td_OOC_IR__ProcedureRef.baseTypes[0]);
  i1 = (OOC_INT64)name;
  i2 = (OOC_INT64)decl;
  OOC_IR__InitProcedureRef((OOC_IR__ProcedureRef)i0, (OOC_Scanner_BasicList__Symbol)i1, (OOC_SymbolTable__ProcDecl)i2);
  return (OOC_IR__ProcedureRef)i0;
  ;
}

void OOC_IR__VisitorDesc_VisitProcedureRef(OOC_IR__Visitor v, OOC_IR__ProcedureRef procRef) {

  return;
  ;
}

void OOC_IR__ProcedureRefDesc_Accept(OOC_IR__ProcedureRef procRef, OOC_IR__Visitor v) {
  register OOC_INT64 i0,i1;

  i0 = (OOC_INT64)v;
  i1 = (OOC_INT64)procRef;
  OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 112189)))), OOC_IR__VisitorDesc_VisitProcedureRef)),OOC_IR__VisitorDesc_VisitProcedureRef)((OOC_IR__Visitor)i0, (OOC_IR__ProcedureRef)i1);
  return;
  ;
}

static void OOC_IR__InitTypeRef(OOC_IR__TypeRef typeRef, OOC_Scanner_BasicList__Symbol name, OOC_SymbolTable__Type type, OOC_SymbolTable__TypeDecl decl, OOC_SymbolTable__Type qualType) {
  register OOC_INT64 i0,i1,i2,i3;

  i0 = (OOC_INT64)typeRef;
  i1 = (OOC_INT64)name;
  i2 = (OOC_INT64)type;
  i3 = (OOC_INT64)decl;
  OOC_IR__InitReference((OOC_IR__Reference)i0, (OOC_Scanner_BasicList__Symbol)i1, (OOC_SymbolTable__Type)i2, (OOC_SymbolTable__Declaration)i3);
  i1 = (OOC_INT64)qualType;
  *(OOC_INT64*)((_check_pointer(i0, 112543))+24) = i1;
  return;
  ;
}

OOC_IR__TypeRef OOC_IR__BuilderDesc_NewTypeRef(OOC_IR__Builder b, OOC_Scanner_BasicList__Symbol name, OOC_SymbolTable__TypeDecl decl) {
  register OOC_INT64 i0,i1,i2,i3,i4,i5,i6,i7,i8,i9;
  OOC_SymbolTable__Type qualType;
  OOC_SymbolTable__TypeRefArray arguments;
  OOC_INT32 i;
  OOC_IR__TypeRef typeRef;

  i0 = (OOC_INT64)decl;
  i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 112794))+88);
  qualType = (OOC_SymbolTable__Type)i1;
  i2 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i1, 112817))+56);
  i2 = i2!=(OOC_INT64)0;
  if (i2) goto l3;
  i2=0u;
  goto l5;
l3:
  i2 = !(OOC_TYPE_TEST(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i1, 112847)))), &_td_OOC_SymbolTable__TypeVarDesc));
  
l5:
  if (!i2) goto l16;
  i2 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i1, 112971))+56);
  i2 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i2, 112980))+40);
  i2 = OOC_ARRAY_LENGTH((_check_pointer(i2, 112987)), 0);
  i2 = (OOC_INT64)RT0__NewObject(_td_OOC_SymbolTable__TypeRefArray.baseTypes[0], i2);
  arguments = (OOC_SymbolTable__TypeRefArray)i2;
  i = 0;
  i3 = OOC_ARRAY_LENGTH((_check_pointer(i2, 113025)), 0);
  i4 = 0<i3;
  if (!i4) goto l15;
  i4 = (OOC_INT64)&_td_OOC_SymbolTable__TypeRef;
  i5=0;
l10_loop:
  i6 = _check_pointer(i2, 113066);
  i7 = OOC_ARRAY_LENGTH(i6, 0);
  i8 = OOC_ARRAY_LENGTH((_check_pointer(i2, 113066)), 0);
  i8 = _check_index(i5, i8, OOC_UINT32, 113066);
  i8 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i1, 113079))+56);
  i8 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i8, 113088))+40);
  i8 = _check_pointer(i8, 113095);
  i9 = OOC_ARRAY_LENGTH(i8, 0);
  i8 = (OOC_INT64)*(OOC_INT64*)(i8+(_check_index(i5, i9, OOC_UINT32, 113095))*8);
  i8 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i8, 113098))+72);
  OOC_SymbolTable__InitTypeRef((void*)(i6+((_check_index(i5, i7, OOC_UINT32, 113066))*16)), (RT0__Struct)i4, (OOC_SymbolTable__Type)i8);
  i5 = i5+1;
  i = i5;
  i6 = i5<i3;
  if (i6) goto l10_loop;
l15:
  i3 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i1, 113165))+40);
  i1 = (OOC_INT64)OOC_SymbolTable__NewQualType((OOC_SymbolTable__Item)(OOC_INT64)0, (OOC_SymbolTable__Position)i3, (OOC_SymbolTable__Type)i1, (OOC_SymbolTable__TypeRefArray)i2);
  qualType = (OOC_SymbolTable__Type)i1;
  
l16:
  i2 = (OOC_INT64)RT0__NewObject(_td_OOC_IR__TypeRef.baseTypes[0]);
  typeRef = (OOC_IR__TypeRef)i2;
  i3 = (OOC_INT64)b;
  i3 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i3, 113296))+48);
  i4 = (OOC_INT64)name;
  OOC_IR__InitTypeRef((OOC_IR__TypeRef)i2, (OOC_Scanner_BasicList__Symbol)i4, (OOC_SymbolTable__Type)i3, (OOC_SymbolTable__TypeDecl)i0, (OOC_SymbolTable__Type)i1);
  return (OOC_IR__TypeRef)i2;
  ;
}

void OOC_IR__VisitorDesc_VisitTypeRef(OOC_IR__Visitor v, OOC_IR__TypeRef typeRef) {

  return;
  ;
}

void OOC_IR__TypeRefDesc_Accept(OOC_IR__TypeRef typeRef, OOC_IR__Visitor v) {
  register OOC_INT64 i0,i1;

  i0 = (OOC_INT64)v;
  i1 = (OOC_INT64)typeRef;
  OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 113515)))), OOC_IR__VisitorDesc_VisitTypeRef)),OOC_IR__VisitorDesc_VisitTypeRef)((OOC_IR__Visitor)i0, (OOC_IR__TypeRef)i1);
  return;
  ;
}

static void OOC_IR__InitVar(OOC_IR__Var var, OOC_Scanner_BasicList__Symbol name, OOC_SymbolTable__Type type, OOC_SymbolTable__VarDecl decl) {
  register OOC_INT64 i0,i1,i2,i3;

  i0 = (OOC_INT64)var;
  i1 = (OOC_INT64)name;
  i2 = (OOC_INT64)type;
  i3 = (OOC_INT64)decl;
  OOC_IR__InitReference((OOC_IR__Reference)i0, (OOC_Scanner_BasicList__Symbol)i1, (OOC_SymbolTable__Type)i2, (OOC_SymbolTable__Declaration)i3);
  return;
  ;
}

OOC_IR__Var OOC_IR__BuilderDesc_NewVar(OOC_IR__Builder b, OOC_Scanner_BasicList__Symbol name, OOC_SymbolTable__VarDecl decl) {
  register OOC_INT64 i0,i1,i2,i3,i4,i5,i6,i7,i8,i9,i10,i11,i12;
  OOC_IR__Var var;
  OOC_SymbolTable__TypeRefArray args;
  OOC_SymbolTable__TypeVarArray params;
  OOC_SymbolTable__TypeRefArray recordArgs;
  OOC_INT32 i;
  OOC_INT32 j;

  i0 = (OOC_INT64)RT0__NewObject(_td_OOC_IR__Var.baseTypes[0]);
  var = (OOC_IR__Var)i0;
  i1 = (OOC_INT64)decl;
  i2 = *(OOC_UINT8*)((_check_pointer(i1, 114081))+105);
  if (i2) goto l3;
  i2=0u;
  goto l5;
l3:
  i2 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i1, 114100))+88);
  i2 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i2, 114105))+56);
  i2 = i2!=(OOC_INT64)0;
  
l5:
  if (i2) goto l7;
  i2 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i1, 115727))+88);
  i2 = (OOC_INT64)OOC_SymbolTable__Expand((OOC_SymbolTable__Type)i2);
  
  goto l53;
l7:
  i2 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i1, 114372))+88);
  i2 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i2, 114377))+56);
  i2 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i2, 114386))+40);
  i2 = OOC_ARRAY_LENGTH((_check_pointer(i2, 114393)), 0);
  i2 = (OOC_INT64)RT0__NewObject(_td_OOC_SymbolTable__TypeRefArray.baseTypes[0], i2);
  args = (OOC_SymbolTable__TypeRefArray)i2;
  i3 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i1, 114412))+88);
  i3 = OOC_TYPE_TEST(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i3, 114418)))), &_td_OOC_SymbolTable__PointerDesc);
  if (i3) goto l10;
  i3=0u;
  goto l12;
l10:
  i3 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i1, 114450))+88);
  i3 = (OOC_INT64)*(OOC_INT64*)((_check_pointer((_type_guard(i3, ((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i3, 114460)))), &_td_OOC_SymbolTable__PointerDesc, 114460)), 114468))+72);
  i3 = OOC_TYPE_TEST(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i3, 114478)))), &_td_OOC_SymbolTable__QualTypeDesc);
  
l12:
  if (i3) goto l22;
  i3 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i1, 115425))+88);
  i3 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i3, 115430))+56);
  i3 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i3, 115439))+40);
  params = (OOC_SymbolTable__TypeVarArray)i3;
  i = 0;
  i4 = OOC_ARRAY_LENGTH((_check_pointer(i2, 115478)), 0);
  i5 = 0<i4;
  if (!i5) goto l52;
  i5 = (OOC_INT64)&_td_OOC_SymbolTable__TypeRef;
  i6=0;
l16_loop:
  i7 = _check_pointer(i2, 115516);
  i8 = OOC_ARRAY_LENGTH(i7, 0);
  i9 = OOC_ARRAY_LENGTH((_check_pointer(i2, 115516)), 0);
  i9 = _check_index(i6, i9, OOC_UINT32, 115516);
  i9 = _check_pointer(i3, 115527);
  i10 = OOC_ARRAY_LENGTH(i9, 0);
  i9 = (OOC_INT64)*(OOC_INT64*)(i9+(_check_index(i6, i10, OOC_UINT32, 115527))*8);
  OOC_SymbolTable__InitTypeRef((void*)(i7+((_check_index(i6, i8, OOC_UINT32, 115516))*16)), (RT0__Struct)i5, (OOC_SymbolTable__Type)i9);
  i6 = i6+1;
  i = i6;
  i7 = i6<i4;
  if (i7) goto l16_loop;
  goto l52;
l22:
  i3 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i1, 114816))+88);
  i3 = (OOC_INT64)*(OOC_INT64*)((_check_pointer((_type_guard(i3, ((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i3, 114826)))), &_td_OOC_SymbolTable__PointerDesc, 114826)), 114834))+72);
  i3 = (OOC_INT64)*(OOC_INT64*)((_check_pointer((_type_guard(i3, ((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i3, 114861)))), &_td_OOC_SymbolTable__QualTypeDesc, 114861)), 114870))+72);
  i3 = (OOC_INT64)*(OOC_INT64*)((_check_pointer((_type_guard(i3, ((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i3, 114884)))), &_td_OOC_SymbolTable__RecordDesc, 114884)), 114891))+56);
  i3 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i3, 114900))+40);
  params = (OOC_SymbolTable__TypeVarArray)i3;
  i4 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i1, 114935))+88);
  i4 = (OOC_INT64)*(OOC_INT64*)((_check_pointer((_type_guard(i4, ((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i4, 114945)))), &_td_OOC_SymbolTable__PointerDesc, 114945)), 114953))+72);
  i4 = (OOC_INT64)*(OOC_INT64*)((_check_pointer((_type_guard(i4, ((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i4, 114967)))), &_td_OOC_SymbolTable__QualTypeDesc, 114967)), 114976))+88);
  recordArgs = (OOC_SymbolTable__TypeRefArray)i4;
  i = 0;
  i5 = OOC_ARRAY_LENGTH((_check_pointer(i2, 115018)), 0);
  i6 = 0<i5;
  if (!i6) goto l52;
  i6 = (OOC_INT64)&_td_OOC_SymbolTable__TypeRef;
  i7=0;
l25_loop:
  j = 0;
  i8 = OOC_ARRAY_LENGTH((_check_pointer(i4, 115079)), 0);
  i8 = 0!=i8;
  if (i8) goto l28;
  i8=0u;
  goto l30;
l28:
  i8 = _check_pointer(i4, 115112);
  i9 = OOC_ARRAY_LENGTH(i8, 0);
  i10 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i1, 115127))+88);
  i10 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i10, 115132))+56);
  i10 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i10, 115141))+40);
  i10 = _check_pointer(i10, 115148);
  i11 = OOC_ARRAY_LENGTH(i10, 0);
  i10 = (OOC_INT64)*(OOC_INT64*)(i10+(_check_index(i7, i11, OOC_UINT32, 115148))*8);
  i8 = (OOC_INT64)*(OOC_INT64*)(i8+((_check_index(0, i9, OOC_UINT32, 115112))*16));
  i8 = i8!=i10;
  
l30:
  if (i8) goto l32;
  i8=0;
  goto l42;
l32:
  i8=0;
l33_loop:
  i8 = i8+1;
  j = i8;
  i9 = OOC_ARRAY_LENGTH((_check_pointer(i4, 115079)), 0);
  i9 = i8!=i9;
  if (i9) goto l36;
  i9=0u;
  goto l38;
l36:
  i9 = _check_pointer(i4, 115112);
  i10 = OOC_ARRAY_LENGTH(i9, 0);
  i11 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i1, 115127))+88);
  i11 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i11, 115132))+56);
  i11 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i11, 115141))+40);
  i11 = _check_pointer(i11, 115148);
  i12 = OOC_ARRAY_LENGTH(i11, 0);
  i11 = (OOC_INT64)*(OOC_INT64*)(i11+(_check_index(i7, i12, OOC_UINT32, 115148))*8);
  i9 = (OOC_INT64)*(OOC_INT64*)(i9+((_check_index(i8, i10, OOC_UINT32, 115112))*16));
  i9 = i9!=i11;
  
l38:
  if (i9) goto l33_loop;
l42:
  i9 = OOC_ARRAY_LENGTH((_check_pointer(i4, 115223)), 0);
  i9 = i8==i9;
  if (i9) goto l45;
  i9 = _check_pointer(i2, 115347);
  i10 = OOC_ARRAY_LENGTH(i9, 0);
  i11 = OOC_ARRAY_LENGTH((_check_pointer(i2, 115347)), 0);
  i11 = _check_index(i7, i11, OOC_UINT32, 115347);
  i11 = _check_pointer(i3, 115358);
  i12 = OOC_ARRAY_LENGTH(i11, 0);
  i8 = (OOC_INT64)*(OOC_INT64*)(i11+(_check_index(i8, i12, OOC_UINT32, 115358))*8);
  OOC_SymbolTable__InitTypeRef((void*)(i9+((_check_index(i7, i10, OOC_UINT32, 115347))*16)), (RT0__Struct)i6, (OOC_SymbolTable__Type)i8);
  goto l46;
l45:
  i8 = _check_pointer(i2, 115264);
  i9 = OOC_ARRAY_LENGTH(i8, 0);
  i10 = OOC_ARRAY_LENGTH((_check_pointer(i2, 115264)), 0);
  i10 = _check_index(i7, i10, OOC_UINT32, 115264);
  i10 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i1, 115273))+88);
  i10 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i10, 115278))+56);
  i10 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i10, 115287))+40);
  i10 = _check_pointer(i10, 115294);
  i11 = OOC_ARRAY_LENGTH(i10, 0);
  i10 = (OOC_INT64)*(OOC_INT64*)(i10+(_check_index(i7, i11, OOC_UINT32, 115294))*8);
  OOC_SymbolTable__InitTypeRef((void*)(i8+((_check_index(i7, i9, OOC_UINT32, 115264))*16)), (RT0__Struct)i6, (OOC_SymbolTable__Type)i10);
l46:
  i7 = i7+1;
  i = i7;
  i8 = i7<i5;
  if (i8) goto l25_loop;
l52:
  i3 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i1, 115595))+88);
  i4 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i1, 115659))+88);
  i4 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i4, 115664))+56);
  i3 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i3, 115600))+40);
  i5 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i1, 115615))+88);
  i4 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i4, 115673))+40);
  i2 = (OOC_INT64)OOC_SymbolTable__NewTypeClosure((OOC_SymbolTable__Position)i3, (OOC_SymbolTable__Type)i5, (OOC_SymbolTable__TypeVarArray)i4, (OOC_SymbolTable__TypeRefArray)i2);
  
l53:
  i2 = (OOC_INT64)OOC_SymbolTable__Expand((OOC_SymbolTable__Type)i2);
  i3 = (OOC_INT64)name;
  OOC_IR__InitVar((OOC_IR__Var)i0, (OOC_Scanner_BasicList__Symbol)i3, (OOC_SymbolTable__Type)i2, (OOC_SymbolTable__VarDecl)i1);
  return (OOC_IR__Var)i0;
  ;
}

void OOC_IR__VisitorDesc_VisitVar(OOC_IR__Visitor v, OOC_IR__Var var) {

  return;
  ;
}

void OOC_IR__VarDesc_Accept(OOC_IR__Var var, OOC_IR__Visitor v) {
  register OOC_INT64 i0,i1;

  i0 = (OOC_INT64)v;
  i1 = (OOC_INT64)var;
  OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 115952)))), OOC_IR__VisitorDesc_VisitVar)),OOC_IR__VisitorDesc_VisitVar)((OOC_IR__Visitor)i0, (OOC_IR__Var)i1);
  return;
  ;
}

void OOC_IR__InitStatement(OOC_IR__Statement statm, OOC_Scanner_BasicList__Symbol sym) {
  register OOC_INT64 i0,i1,i2;

  i0 = (OOC_INT64)OOC_SymbolTable_Predef__GetType(17);
  i1 = (OOC_INT64)statm;
  i2 = (OOC_INT64)sym;
  OOC_IR__InitExpression((OOC_IR__Expression)i1, (OOC_Scanner_BasicList__Symbol)i2, (OOC_SymbolTable__Type)i0);
  return;
  ;
}

static void OOC_IR__InitAssert(OOC_IR__Assert assert, OOC_Scanner_BasicList__Symbol sym, OOC_IR__Expression predicate, OOC_INT32 code, OOC_CHAR8 disabled) {
  register OOC_INT64 i0,i1;

  i0 = (OOC_INT64)assert;
  i1 = (OOC_INT64)sym;
  OOC_IR__InitStatement((OOC_IR__Statement)i0, (OOC_Scanner_BasicList__Symbol)i1);
  i1 = (OOC_INT64)predicate;
  *(OOC_INT64*)((_check_pointer(i0, 116535))+16) = i1;
  i1 = code;
  *(OOC_INT32*)((_check_pointer(i0, 116571))+24) = i1;
  i1 = disabled;
  *(OOC_UINT8*)((_check_pointer(i0, 116597))+28) = i1;
  return;
  ;
}

OOC_IR__Assert OOC_IR__BuilderDesc_NewAssert(OOC_IR__Builder b, OOC_Scanner_BasicList__Symbol sym, OOC_IR__Expression predicate, OOC_IR__Expression code, OOC_CHAR8 disabled) {
  register OOC_INT64 i0,i1,i2,i3,i4;
  OOC_IR__Assert assert;

  i0 = (OOC_INT64)RT0__NewObject(_td_OOC_IR__Assert.baseTypes[0]);
  assert = (OOC_IR__Assert)i0;
  i1 = (OOC_INT64)predicate;
  i2 = i1!=(OOC_INT64)0;
  if (!i2) goto l4;
  i2 = (OOC_INT64)b;
  i1 = (OOC_INT64)OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i2, 116896)))), OOC_IR__BuilderDesc_AssertBoolean)),OOC_IR__BuilderDesc_AssertBoolean)((OOC_IR__Builder)i2, (OOC_IR__Expression)i1);
  
l4:
  i2 = (OOC_INT64)code;
  i3 = i2==(OOC_INT64)0;
  if (i3) goto l7;
  i3 = (OOC_INT64)b;
  i2 = OOC_IR__BuilderDesc_AssertIntConst((OOC_IR__Builder)i3, (OOC_IR__Expression)i2, 0, 128);
  
  goto l8;
l7:
  i2=127;
l8:
  i3 = (OOC_INT64)sym;
  i4 = disabled;
  OOC_IR__InitAssert((OOC_IR__Assert)i0, (OOC_Scanner_BasicList__Symbol)i3, (OOC_IR__Expression)i1, i2, i4);
  return (OOC_IR__Assert)i0;
  ;
}

void OOC_IR__VisitorDesc_VisitAssert(OOC_IR__Visitor v, OOC_IR__Assert assert) {

  return;
  ;
}

void OOC_IR__AssertDesc_Accept(OOC_IR__Assert assert, OOC_IR__Visitor v) {
  register OOC_INT64 i0,i1;

  i0 = (OOC_INT64)v;
  i1 = (OOC_INT64)assert;
  OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 117324)))), OOC_IR__VisitorDesc_VisitAssert)),OOC_IR__VisitorDesc_VisitAssert)((OOC_IR__Visitor)i0, (OOC_IR__Assert)i1);
  return;
  ;
}

void OOC_IR__InitAssignment(OOC_IR__Assignment assignment, OOC_Scanner_BasicList__Symbol sym, OOC_IR__Expression variable, OOC_IR__Expression value) {
  register OOC_INT64 i0,i1;

  i0 = (OOC_INT64)assignment;
  i1 = (OOC_INT64)sym;
  OOC_IR__InitStatement((OOC_IR__Statement)i0, (OOC_Scanner_BasicList__Symbol)i1);
  i1 = (OOC_INT64)variable;
  *(OOC_INT64*)((_check_pointer(i0, 117653))+16) = i1;
  i1 = (OOC_INT64)value;
  *(OOC_INT64*)((_check_pointer(i0, 117691))+24) = i1;
  return;
  ;
}

void OOC_IR__BuilderDesc_AssertVar(OOC_IR__Builder b, OOC_IR__Expression expr) {
  register OOC_INT64 i0,i1,i2,i3;

  i0 = (OOC_INT64)b;
  i1 = (OOC_INT64)expr;
  i2 = (OOC_INT64)*(OOC_INT64*)(_check_pointer(i0, 117819));
  i3 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i1, 117832))+8);
  i2 = OOC_SymbolTable_TypeRules__IsReadOnlyType((OOC_SymbolTable__Module)i2, (OOC_SymbolTable__Type)i3);
  if (i2) goto l36;
  i2 = OOC_TYPE_TEST(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i1, 117915)))), &_td_OOC_IR__VarDesc);
  if (i2) goto l23;
  i2 = OOC_TYPE_TEST(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i1, 118185)))), &_td_OOC_IR__DerefDesc);
  if (i2) goto l37;
  i2 = OOC_TYPE_TEST(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i1, 118265)))), &_td_OOC_IR__IndexDesc);
  if (i2) goto l20;
  i2 = OOC_TYPE_TEST(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i1, 118361)))), &_td_OOC_IR__SelectFieldDesc);
  if (i2) goto l15;
  i2 = OOC_TYPE_TEST(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i1, 118587)))), &_td_OOC_IR__TypeGuardDesc);
  if (i2) goto l13;
  i1 = (OOC_INT64)*(OOC_INT64*)(_check_pointer(i1, 118724));
  OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 118697)))), OOC_IR__BuilderDesc_ErrSym)),OOC_IR__BuilderDesc_ErrSym)((OOC_IR__Builder)i0, 29, (OOC_Scanner_BasicList__Symbol)i1);
  goto l37;
l13:
  i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i1, 118627))+16);
  i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i1, 118633))+16);
  OOC_IR__BuilderDesc_AssertVar((OOC_IR__Builder)i0, (OOC_IR__Expression)i1);
  goto l37;
l15:
  i2 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i1, 118404))+16);
  OOC_IR__BuilderDesc_AssertVar((OOC_IR__Builder)i0, (OOC_IR__Expression)i2);
  i2 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i1, 118492))+24);
  i3 = (OOC_INT64)*(OOC_INT64*)(_check_pointer(i0, 118478));
  i2 = OOC_SymbolTable_TypeRules__IsReadOnly((OOC_SymbolTable__Module)i3, (OOC_SymbolTable__Declaration)i2);
  if (!i2) goto l37;
  i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i1, 118549))+32);
  OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 118517)))), OOC_IR__BuilderDesc_ErrSym)),OOC_IR__BuilderDesc_ErrSym)((OOC_IR__Builder)i0, 34, (OOC_Scanner_BasicList__Symbol)i1);
  goto l37;
l20:
  i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i1, 118302))+16);
  OOC_IR__BuilderDesc_AssertVar((OOC_IR__Builder)i0, (OOC_IR__Expression)i1);
  goto l37;
l23:
  i2 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i1, 117965))+16);
  i3 = (OOC_INT64)*(OOC_INT64*)(_check_pointer(i0, 117951));
  i2 = OOC_SymbolTable_TypeRules__IsReadOnly((OOC_SymbolTable__Module)i3, (OOC_SymbolTable__Declaration)i2);
  if (i2) goto l33;
  i2 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i1, 118048))+16);
  i2 = OOC_TYPE_TEST(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i2, 118054)))), &_td_OOC_SymbolTable__VarDeclDesc);
  if (i2) goto l28;
  i2=0u;
  goto l30;
l28:
  i2 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i1, 118076))+16);
  i2 = *(OOC_UINT8*)((_check_pointer((_type_guard(i2, ((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i2, 118086)))), &_td_OOC_SymbolTable__VarDeclDesc, 118086)), 118094))+110);
  
l30:
  if (!i2) goto l37;
  i1 = (OOC_INT64)*(OOC_INT64*)(_check_pointer(i1, 118153));
  OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 118122)))), OOC_IR__BuilderDesc_ErrSym)),OOC_IR__BuilderDesc_ErrSym)((OOC_IR__Builder)i0, 42, (OOC_Scanner_BasicList__Symbol)i1);
  goto l37;
l33:
  i1 = (OOC_INT64)*(OOC_INT64*)(_check_pointer(i1, 118021));
  OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 117989)))), OOC_IR__BuilderDesc_ErrSym)),OOC_IR__BuilderDesc_ErrSym)((OOC_IR__Builder)i0, 34, (OOC_Scanner_BasicList__Symbol)i1);
  goto l37;
l36:
  i1 = (OOC_INT64)*(OOC_INT64*)(_check_pointer(i1, 117883));
  OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 117851)))), OOC_IR__BuilderDesc_ErrSym)),OOC_IR__BuilderDesc_ErrSym)((OOC_IR__Builder)i0, 34, (OOC_Scanner_BasicList__Symbol)i1);
l37:
  return;
  ;
}

OOC_IR__Statement OOC_IR__BuilderDesc_NewAssignment(OOC_IR__Builder b, OOC_Scanner_BasicList__Symbol sym, OOC_IR__Expression variable, OOC_IR__Expression value) {
  register OOC_INT64 i0,i1,i2,i3,i4;

  i0 = (OOC_INT64)b;
  i1 = (OOC_INT64)variable;
  OOC_IR__BuilderDesc_AssertVar((OOC_IR__Builder)i0, (OOC_IR__Expression)i1);
  i2 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i1, 119026))+8);
  i3 = (OOC_INT64)sym;
  OOC_IR__MakeAssignmentCompatible((OOC_IR__Builder)i0, (OOC_Scanner_BasicList__Symbol)i3, (void*)(OOC_INT64)&value, (OOC_SymbolTable__Type)i2);
  i2 = (OOC_INT64)value;
  i4 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i2, 119065))+8);
  i4 = OOC_SymbolTable_TypeRules__IsStringConst((OOC_SymbolTable__Type)i4);
  if (i4) goto l11;
  i4 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i2, 119285))+8);
  i4 = OOC_TYPE_TEST(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i4, 119292)))), &_td_OOC_SymbolTable__ArrayDesc);
  if (i4) goto l5;
  i4 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i2, 119315))+8);
  i4 = OOC_TYPE_TEST(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i4, 119322)))), &_td_OOC_SymbolTable__RecordDesc);
  
  goto l7;
l5:
  i4=1u;
l7:
  if (i4) goto l9;
  i0 = (OOC_INT64)RT0__NewObject(_td_OOC_IR__Assignment.baseTypes[0]);
  OOC_IR__InitAssignment((OOC_IR__Assignment)i0, (OOC_Scanner_BasicList__Symbol)i3, (OOC_IR__Expression)i1, (OOC_IR__Expression)i2);
  return (OOC_IR__Statement)i0;
  goto l12;
l9:
  i0 = (OOC_INT64)OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 119417)))), OOC_IR__BuilderDesc_NewCopy)),OOC_IR__BuilderDesc_NewCopy)((OOC_IR__Builder)i0, (OOC_Scanner_BasicList__Symbol)i3, (OOC_IR__Expression)i2, (OOC_IR__Expression)i1);
  return (OOC_IR__Statement)i0;
  goto l12;
l11:
  i4 = (OOC_INT64)OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 119238)))), OOC_IR__BuilderDesc_NewLen)),OOC_IR__BuilderDesc_NewLen)((OOC_IR__Builder)i0, (OOC_Scanner_BasicList__Symbol)i3, (OOC_IR__Expression)i1, 0);
  i4 = (OOC_INT64)OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 119229)))), OOC_IR__BuilderDesc_Fold)),OOC_IR__BuilderDesc_Fold)((OOC_IR__Builder)i0, (OOC_IR__Expression)i4);
  i0 = (OOC_INT64)OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 119158)))), OOC_IR__BuilderDesc_NewCopyString)),OOC_IR__BuilderDesc_NewCopyString)((OOC_IR__Builder)i0, (OOC_Scanner_BasicList__Symbol)i3, (OOC_IR__Expression)i2, (OOC_IR__Expression)i1, (OOC_IR__Expression)i4);
  return (OOC_IR__Statement)i0;
l12:
  _failed_function(118793); return 0;
  ;
}

void OOC_IR__VisitorDesc_VisitAssignment(OOC_IR__Visitor v, OOC_IR__Assignment assignment) {

  return;
  ;
}

void OOC_IR__AssignmentDesc_Accept(OOC_IR__Assignment assignment, OOC_IR__Visitor v) {
  register OOC_INT64 i0,i1;

  i0 = (OOC_INT64)v;
  i1 = (OOC_INT64)assignment;
  OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 119767)))), OOC_IR__VisitorDesc_VisitAssignment)),OOC_IR__VisitorDesc_VisitAssignment)((OOC_IR__Visitor)i0, (OOC_IR__Assignment)i1);
  return;
  ;
}

static void OOC_IR__InitAssignOp(OOC_IR__AssignOp ao, OOC_Scanner_BasicList__Symbol sym, OOC_IR__Expression op) {
  register OOC_INT64 i0,i1,i2,i3;

  i0 = (OOC_INT64)op;
  i1 = OOC_TYPE_TEST(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 120009)))), &_td_OOC_IR__BinaryArithDesc);
  if (i1) goto l7;
  i1 = OOC_TYPE_TEST(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 120080)))), &_td_OOC_IR__ChangeElementDesc);
  if (i1) goto l5;
  _failed_with(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 120076)))), 120076);
  goto l8;
l5:
  i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 120132))+24);
  i2 = (OOC_INT64)sym;
  i3 = (OOC_INT64)ao;
  OOC_IR__InitAssignment((OOC_IR__Assignment)i3, (OOC_Scanner_BasicList__Symbol)i2, (OOC_IR__Expression)i1, (OOC_IR__Expression)i0);
  goto l8;
l7:
  i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 120059))+24);
  i2 = (OOC_INT64)sym;
  i3 = (OOC_INT64)ao;
  OOC_IR__InitAssignment((OOC_IR__Assignment)i3, (OOC_Scanner_BasicList__Symbol)i2, (OOC_IR__Expression)i1, (OOC_IR__Expression)i0);
l8:
  return;
  ;
}

OOC_IR__Expression OOC_IR__BuilderDesc_NewAssignOp(OOC_IR__Builder b, OOC_Scanner_BasicList__Symbol sym, OOC_IR__Expression op) {
  register OOC_INT64 i0,i1,i2;

  i0 = (OOC_INT64)op;
  i1 = OOC_TYPE_TEST(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 120294)))), &_td_OOC_IR__ConstDesc);
  if (i1) goto l3;
  i1 = (OOC_INT64)sym;
  i2 = (OOC_INT64)RT0__NewObject(_td_OOC_IR__AssignOp.baseTypes[0]);
  OOC_IR__InitAssignOp((OOC_IR__AssignOp)i2, (OOC_Scanner_BasicList__Symbol)i1, (OOC_IR__Expression)i0);
  return (OOC_IR__Expression)i2;
  goto l4;
l3:
  i0 = (OOC_INT64)b;
  i0 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 120319))+40);
  return (OOC_IR__Expression)i0;
l4:
  _failed_function(120197); return 0;
  ;
}

void OOC_IR__VisitorDesc_VisitAssignOp(OOC_IR__Visitor v, OOC_IR__AssignOp ao) {

  return;
  ;
}

void OOC_IR__AssignOpDesc_Accept(OOC_IR__AssignOp ao, OOC_IR__Visitor v) {
  register OOC_INT64 i0,i1;

  i0 = (OOC_INT64)v;
  i1 = (OOC_INT64)ao;
  OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 120627)))), OOC_IR__VisitorDesc_VisitAssignOp)),OOC_IR__VisitorDesc_VisitAssignOp)((OOC_IR__Visitor)i0, (OOC_IR__AssignOp)i1);
  return;
  ;
}

static void OOC_IR__InitCall(OOC_IR__Call call, OOC_IR__Expression design, OOC_IR__ExpressionList arguments, OOC_SymbolTable__VarDeclArray formalPars) {
  register OOC_INT64 i0,i1,i2,i3;
  OOC_SymbolTable__Type resultType;

  i0 = (OOC_INT64)design;
  i1 = (OOC_INT64)*(OOC_INT64*)(_check_pointer(i0, 120970));
  i2 = (OOC_INT64)call;
  OOC_IR__InitStatement((OOC_IR__Statement)i2, (OOC_Scanner_BasicList__Symbol)i1);
  i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 121035))+8);
  i1 = (OOC_INT64)OOC_SymbolTable_TypeRules__FunctionResultType((OOC_SymbolTable__Type)i1);
  i1 = (OOC_INT64)OOC_SymbolTable__Expand((OOC_SymbolTable__Type)i1);
  resultType = (OOC_SymbolTable__Type)i1;
  i3 = i1!=0;
  if (!i3) goto l4;
  *(OOC_INT64*)((_check_pointer(i2, 121126))+8) = i1;
l4:
  *(OOC_INT64*)((_check_pointer(i2, 121164))+16) = i0;
  i0 = (OOC_INT64)arguments;
  *(OOC_INT64*)((_check_pointer(i2, 121192))+24) = i0;
  i0 = (OOC_INT64)formalPars;
  *(OOC_INT64*)((_check_pointer(i2, 121226))+32) = i0;
  return;
  ;
}

void OOC_IR__VisitorDesc_VisitCall(OOC_IR__Visitor v, OOC_IR__Call call) {

  return;
  ;
}

void OOC_IR__CallDesc_Accept(OOC_IR__Call call, OOC_IR__Visitor v) {
  register OOC_INT64 i0,i1;

  i0 = (OOC_INT64)v;
  i1 = (OOC_INT64)call;
  OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 121406)))), OOC_IR__VisitorDesc_VisitCall)),OOC_IR__VisitorDesc_VisitCall)((OOC_IR__Visitor)i0, (OOC_IR__Call)i1);
  return;
  ;
}

static void OOC_IR__InitCopy(OOC_IR__Copy cp, OOC_Scanner_BasicList__Symbol sym, OOC_IR__Expression source, OOC_IR__Expression dest, OOC_CHAR8 checkDynamicType) {
  register OOC_INT64 i0,i1;

  i0 = (OOC_INT64)cp;
  i1 = (OOC_INT64)sym;
  OOC_IR__InitStatement((OOC_IR__Statement)i0, (OOC_Scanner_BasicList__Symbol)i1);
  i1 = (OOC_INT64)source;
  *(OOC_INT64*)((_check_pointer(i0, 121705))+16) = i1;
  i1 = (OOC_INT64)dest;
  *(OOC_INT64*)((_check_pointer(i0, 121731))+24) = i1;
  i1 = checkDynamicType;
  *(OOC_UINT8*)((_check_pointer(i0, 121753))+32) = i1;
  return;
  ;
}

OOC_IR__Copy OOC_IR__BuilderDesc_NewCopy(OOC_IR__Builder b, OOC_Scanner_BasicList__Symbol sym, OOC_IR__Expression source, OOC_IR__Expression dest) {
  register OOC_INT64 i0,i1,i2,i3,i4;
  auto OOC_CHAR8 OOC_IR__BuilderDesc_NewCopy_HasDynamicType(OOC_IR__Expression dest);
    
    OOC_CHAR8 OOC_IR__BuilderDesc_NewCopy_HasDynamicType(OOC_IR__Expression dest) {
      register OOC_INT64 i0,i1;

      i0 = (OOC_INT64)dest;
      i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 122021))+8);
      i1 = OOC_TYPE_TEST(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i1, 122028)))), &_td_OOC_SymbolTable__RecordDesc);
      if (i1) goto l3;
      i1=0u;
      goto l5;
l3:
      i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 122049))+8);
      i1 = *(OOC_UINT8*)((_check_pointer((_type_guard(i1, ((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i1, 122059)))), &_td_OOC_SymbolTable__RecordDesc, 122059)), 122066))+70);
      
l5:
      if (!i1) goto l14;
      i1 = OOC_TYPE_TEST(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 122103)))), &_td_OOC_IR__DerefDesc);
      if (i1) goto l12;
      i1 = OOC_TYPE_TEST(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 122161)))), &_td_OOC_IR__VarDesc);
      if (!i1) goto l14;
      i0 = (OOC_INT64)*(OOC_INT64*)((_check_pointer((_type_guard(i0, ((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 122196)))), &_td_OOC_IR__VarDesc, 122196)), 122200))+16);
      i0 = *(OOC_UINT8*)((_check_pointer((_type_guard(i0, ((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 122211)))), &_td_OOC_SymbolTable__VarDeclDesc, 122211)), 122219))+107);
      return i0;
      goto l14;
l12:
      return 1u;
l14:
      return 0u;
      ;
    }


  i0 = (OOC_INT64)dest;
  i1 = OOC_IR__BuilderDesc_NewCopy_HasDynamicType((OOC_IR__Expression)i0);
  if (i1) goto l3;
  i1=0u;
  goto l4;
l3:
  i1 = (OOC_INT64)sym;
  i1 = *(OOC_INT32*)((_check_pointer(i1, 122420))+28);
  i2 = (OOC_INT64)b;
  i3 = (OOC_INT64)OOC_Config_StdPragmas__typeGuard;
  i1 = OOC_IR__GetPragmaValue((OOC_IR__Builder)i2, (Config_Section_Options__Option)i3, i1);
  
l4:
  i2 = (OOC_INT64)source;
  i3 = (OOC_INT64)RT0__NewObject(_td_OOC_IR__Copy.baseTypes[0]);
  i4 = (OOC_INT64)sym;
  OOC_IR__InitCopy((OOC_IR__Copy)i3, (OOC_Scanner_BasicList__Symbol)i4, (OOC_IR__Expression)i2, (OOC_IR__Expression)i0, i1);
  return (OOC_IR__Copy)i3;
  ;
}

void OOC_IR__VisitorDesc_VisitCopy(OOC_IR__Visitor v, OOC_IR__Copy cp) {

  return;
  ;
}

void OOC_IR__CopyDesc_Accept(OOC_IR__Copy cp, OOC_IR__Visitor v) {
  register OOC_INT64 i0,i1;

  i0 = (OOC_INT64)v;
  i1 = (OOC_INT64)cp;
  OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 122664)))), OOC_IR__VisitorDesc_VisitCopy)),OOC_IR__VisitorDesc_VisitCopy)((OOC_IR__Visitor)i0, (OOC_IR__Copy)i1);
  return;
  ;
}

static void OOC_IR__InitCopyParameter(OOC_IR__CopyParameter cp, OOC_Scanner_BasicList__Symbol sym, OOC_IR__Var param) {
  register OOC_INT64 i0,i1;

  i0 = (OOC_INT64)cp;
  i1 = (OOC_INT64)sym;
  OOC_IR__InitStatement((OOC_IR__Statement)i0, (OOC_Scanner_BasicList__Symbol)i1);
  i1 = (OOC_INT64)param;
  *(OOC_INT64*)((_check_pointer(i0, 122927))+16) = i1;
  return;
  ;
}

OOC_IR__CopyParameter OOC_IR__BuilderDesc_NewCopyParameter(OOC_IR__Builder b, OOC_Scanner_BasicList__Symbol sym, OOC_IR__Var param) {
  register OOC_INT64 i0,i1,i2;

  i0 = (OOC_INT64)RT0__NewObject(_td_OOC_IR__CopyParameter.baseTypes[0]);
  i1 = (OOC_INT64)sym;
  i2 = (OOC_INT64)param;
  OOC_IR__InitCopyParameter((OOC_IR__CopyParameter)i0, (OOC_Scanner_BasicList__Symbol)i1, (OOC_IR__Var)i2);
  return (OOC_IR__CopyParameter)i0;
  ;
}

void OOC_IR__VisitorDesc_VisitCopyParameter(OOC_IR__Visitor v, OOC_IR__CopyParameter cp) {

  return;
  ;
}

void OOC_IR__CopyParameterDesc_Accept(OOC_IR__CopyParameter cp, OOC_IR__Visitor v) {
  register OOC_INT64 i0,i1;

  i0 = (OOC_INT64)v;
  i1 = (OOC_INT64)cp;
  OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 123351)))), OOC_IR__VisitorDesc_VisitCopyParameter)),OOC_IR__VisitorDesc_VisitCopyParameter)((OOC_IR__Visitor)i0, (OOC_IR__CopyParameter)i1);
  return;
  ;
}

static void OOC_IR__InitCopyString(OOC_IR__CopyString cp, OOC_Scanner_BasicList__Symbol sym, OOC_IR__Expression source, OOC_IR__Expression dest, OOC_IR__Expression maxLength) {
  register OOC_INT64 i0,i1;

  i0 = (OOC_INT64)cp;
  i1 = (OOC_INT64)sym;
  OOC_IR__InitStatement((OOC_IR__Statement)i0, (OOC_Scanner_BasicList__Symbol)i1);
  i1 = (OOC_INT64)source;
  *(OOC_INT64*)((_check_pointer(i0, 123665))+16) = i1;
  i1 = (OOC_INT64)dest;
  *(OOC_INT64*)((_check_pointer(i0, 123691))+24) = i1;
  i1 = (OOC_INT64)maxLength;
  *(OOC_INT64*)((_check_pointer(i0, 123713))+32) = i1;
  return;
  ;
}

OOC_IR__CopyString OOC_IR__BuilderDesc_NewCopyString(OOC_IR__Builder b, OOC_Scanner_BasicList__Symbol sym, OOC_IR__Expression source, OOC_IR__Expression dest, OOC_IR__Expression maxLength) {
  register OOC_INT64 i0,i1,i2,i3,i4;
  OOC_SymbolTable__Type baseChar;
  OOC_CHAR8 ok;
  OOC_IR__CopyString cp;

  i0 = (OOC_INT64)b;
  i1 = (OOC_INT64)dest;
  OOC_IR__BuilderDesc_AssertVar((OOC_IR__Builder)i0, (OOC_IR__Expression)i1);
  i2 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i1, 124031))+8);
  i2 = OOC_SymbolTable_TypeRules__IsArrayOfChar((OOC_SymbolTable__Type)i2, 1u);
  i2 = !i2;
  if (!i2) goto l3;
  i2 = (OOC_INT64)*(OOC_INT64*)(_check_pointer(i1, 124087));
  OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 124056)))), OOC_IR__BuilderDesc_ErrSym)),OOC_IR__BuilderDesc_ErrSym)((OOC_IR__Builder)i0, 48, (OOC_Scanner_BasicList__Symbol)i2);
l3:
  i2 = (OOC_INT64)source;
  i3 = OOC_TYPE_TEST(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i2, 124123)))), &_td_OOC_IR__ConstDesc);
  if (i3) goto l9;
  i3 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i2, 124593))+8);
  i3 = OOC_SymbolTable_TypeRules__IsArrayOfChar((OOC_SymbolTable__Type)i3, 1u);
  i3 = !i3;
  if (!i3) goto l14;
  i2 = (OOC_INT64)*(OOC_INT64*)(_check_pointer(i2, 124651));
  OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 124618)))), OOC_IR__BuilderDesc_ErrSym)),OOC_IR__BuilderDesc_ErrSym)((OOC_IR__Builder)i0, 48, (OOC_Scanner_BasicList__Symbol)i2);
  goto l14;
l9:
  i2 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i1, 124380))+8);
  i2 = (OOC_INT64)OOC_SymbolTable_TypeRules__BaseCharType((OOC_SymbolTable__Type)i2);
  baseChar = (OOC_SymbolTable__Type)i2;
  i3 = i2==0;
  if (i3) goto l12;
  i2 = (OOC_INT64)OOC_SymbolTable_TypeRules__MatchingStringConst((OOC_SymbolTable__Type)i2);
  i2 = OOC_IR__BuilderDesc_Widen((OOC_IR__Builder)i0, (void*)(OOC_INT64)&source, (OOC_SymbolTable__Type)i2);
  ok = i2;
  goto l14;
l12:
  i2 = (OOC_INT64)source;
  i2 = (OOC_INT64)*(OOC_INT64*)(_check_pointer(i2, 124462));
  OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 124429)))), OOC_IR__BuilderDesc_ErrSym)),OOC_IR__BuilderDesc_ErrSym)((OOC_IR__Builder)i0, 48, (OOC_Scanner_BasicList__Symbol)i2);
l14:
  i2 = (OOC_INT64)RT0__NewObject(_td_OOC_IR__CopyString.baseTypes[0]);
  cp = (OOC_IR__CopyString)i2;
  i3 = (OOC_INT64)maxLength;
  i4 = (OOC_INT64)source;
  i0 = (OOC_INT64)OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 124730)))), OOC_IR__BuilderDesc_Fold)),OOC_IR__BuilderDesc_Fold)((OOC_IR__Builder)i0, (OOC_IR__Expression)i3);
  i3 = (OOC_INT64)sym;
  OOC_IR__InitCopyString((OOC_IR__CopyString)i2, (OOC_Scanner_BasicList__Symbol)i3, (OOC_IR__Expression)i4, (OOC_IR__Expression)i1, (OOC_IR__Expression)i0);
  return (OOC_IR__CopyString)i2;
  ;
}

void OOC_IR__VisitorDesc_VisitCopyString(OOC_IR__Visitor v, OOC_IR__CopyString cp) {

  return;
  ;
}

void OOC_IR__CopyStringDesc_Accept(OOC_IR__CopyString cp, OOC_IR__Visitor v) {
  register OOC_INT64 i0,i1;

  i0 = (OOC_INT64)v;
  i1 = (OOC_INT64)cp;
  OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 124942)))), OOC_IR__VisitorDesc_VisitCopyString)),OOC_IR__VisitorDesc_VisitCopyString)((OOC_IR__Visitor)i0, (OOC_IR__CopyString)i1);
  return;
  ;
}

void OOC_IR__InitExit(OOC_IR__Exit exit, OOC_Scanner_BasicList__Symbol sym) {
  register OOC_INT64 i0,i1;

  i0 = (OOC_INT64)exit;
  i1 = (OOC_INT64)sym;
  OOC_IR__InitStatement((OOC_IR__Statement)i0, (OOC_Scanner_BasicList__Symbol)i1);
  *(OOC_INT64*)((_check_pointer(i0, 125179))+16) = (OOC_INT64)0;
  *(OOC_INT32*)((_check_pointer(i0, 125202))+24) = 0;
  return;
  ;
}

OOC_IR__Exit OOC_IR__BuilderDesc_NewExit(OOC_IR__Builder b, OOC_Scanner_BasicList__Symbol sym) {
  register OOC_INT64 i0,i1;

  i0 = (OOC_INT64)RT0__NewObject(_td_OOC_IR__Exit.baseTypes[0]);
  i1 = (OOC_INT64)sym;
  OOC_IR__InitExit((OOC_IR__Exit)i0, (OOC_Scanner_BasicList__Symbol)i1);
  return (OOC_IR__Exit)i0;
  ;
}

void OOC_IR__VisitorDesc_VisitExit(OOC_IR__Visitor v, OOC_IR__Exit exit) {

  return;
  ;
}

void OOC_IR__ExitDesc_Accept(OOC_IR__Exit exit, OOC_IR__Visitor v) {
  register OOC_INT64 i0,i1;

  i0 = (OOC_INT64)v;
  i1 = (OOC_INT64)exit;
  OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 125539)))), OOC_IR__VisitorDesc_VisitExit)),OOC_IR__VisitorDesc_VisitExit)((OOC_IR__Visitor)i0, (OOC_IR__Exit)i1);
  return;
  ;
}

static void OOC_IR__InitForStatm(OOC_IR__ForStatm forStatm, OOC_Scanner_BasicList__Symbol sym, OOC_IR__Expression var, OOC_IR__Expression start, OOC_IR__Expression end, OOC_IR__Expression step, OOC_IR__StatementSeq body) {
  register OOC_INT64 i0,i1;

  i0 = (OOC_INT64)forStatm;
  i1 = (OOC_INT64)sym;
  OOC_IR__InitStatement((OOC_IR__Statement)i0, (OOC_Scanner_BasicList__Symbol)i1);
  i1 = (OOC_INT64)var;
  *(OOC_INT64*)((_check_pointer(i0, 125898))+16) = i1;
  i1 = (OOC_INT64)start;
  *(OOC_INT64*)((_check_pointer(i0, 125924))+24) = i1;
  i1 = (OOC_INT64)end;
  *(OOC_INT64*)((_check_pointer(i0, 125954))+32) = i1;
  i1 = (OOC_INT64)step;
  *(OOC_INT64*)((_check_pointer(i0, 125980))+40) = i1;
  i1 = (OOC_INT64)body;
  *(OOC_INT64*)((_check_pointer(i0, 126008))+48) = i1;
  return;
  ;
}

OOC_IR__ForStatm OOC_IR__BuilderDesc_NewForStatm(OOC_IR__Builder b, OOC_Scanner_BasicList__Symbol sym, OOC_IR__Expression var, OOC_IR__Expression start, OOC_IR__Expression end, OOC_IR__Expression step, OOC_IR__StatementSeq body) {
  register OOC_INT64 i0,i1,i2,i3,i4,i5,i6;

  i0 = (OOC_INT64)step;
  i0 = i0==(OOC_INT64)0;
  if (!i0) goto l3;
  i0 = (OOC_INT64)b;
  i1 = (OOC_INT64)OOC_SymbolTable_Predef__GetType(4);
  i2 = (OOC_INT64)Object_BigInt__NewInt(1);
  i3 = (OOC_INT64)sym;
  i0 = (OOC_INT64)OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 126312)))), OOC_IR__BuilderDesc_NewConst)),OOC_IR__BuilderDesc_NewConst)((OOC_IR__Builder)i0, (OOC_Scanner_BasicList__Symbol)i3, (OOC_SymbolTable__Type)i1, (Object_Boxed__Object)i2);
  step = (OOC_IR__Expression)i0;
l3:
  i0 = (OOC_INT64)var;
  i1 = !(OOC_TYPE_TEST(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 126415)))), &_td_OOC_IR__VarDesc));
  if (i1) goto l21;
  i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 126501))+8);
  i1 = OOC_SymbolTable_TypeRules__IsIntegerType((OOC_SymbolTable__Type)i1);
  i1 = !i1;
  if (i1) goto l19;
  i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 126584))+8);
  i2 = (OOC_INT64)b;
  i1 = OOC_IR__BuilderDesc_Widen((OOC_IR__Builder)i2, (void*)(OOC_INT64)&step, (OOC_SymbolTable__Type)i1);
  i1 = !i1;
  if (i1) goto l17;
  i1 = (OOC_INT64)start;
  i3 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 126709))+8);
  i1 = (OOC_INT64)*(OOC_INT64*)(_check_pointer(i1, 126692));
  OOC_IR__MakeAssignmentCompatible((OOC_IR__Builder)i2, (OOC_Scanner_BasicList__Symbol)i1, (void*)(OOC_INT64)&start, (OOC_SymbolTable__Type)i3);
  i1 = (OOC_INT64)end;
  i3 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 126771))+8);
  i1 = (OOC_INT64)*(OOC_INT64*)(_check_pointer(i1, 126756));
  OOC_IR__MakeAssignmentCompatible((OOC_IR__Builder)i2, (OOC_Scanner_BasicList__Symbol)i1, (void*)(OOC_INT64)&end, (OOC_SymbolTable__Type)i3);
  i1 = (OOC_INT64)step;
  i1 = (OOC_INT64)OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i2, 126795)))), OOC_IR__BuilderDesc_AssertConst)),OOC_IR__BuilderDesc_AssertConst)((OOC_IR__Builder)i2, (OOC_IR__Expression)i1);
  step = (OOC_IR__Expression)i1;
  i3 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i1, 126848))+8);
  i3 = OOC_SymbolTable_TypeRules__IsIntegerType((OOC_SymbolTable__Type)i3);
  if (i3) goto l12;
  i3=0u;
  goto l14;
l12:
  i3 = (OOC_INT64)*(OOC_INT64*)((_check_pointer((_type_guard(i1, ((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i1, 126890)))), &_td_OOC_IR__ConstDesc, 126890)), 126896))+16);
  i4 = (OOC_INT64)Object_BigInt__zero;
  i3 = Object_BigInt__BigIntDesc_Cmp((Object_BigInt__BigInt)i4, (Object__Object)i3);
  i3 = i3==0;
  
l14:
  if (!i3) goto l22;
  i1 = (OOC_INT64)*(OOC_INT64*)(_check_pointer(i1, 126950));
  OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i2, 126924)))), OOC_IR__BuilderDesc_ErrSym)),OOC_IR__BuilderDesc_ErrSym)((OOC_IR__Builder)i2, 31, (OOC_Scanner_BasicList__Symbol)i1);
  goto l22;
l17:
  i1 = (OOC_INT64)step;
  i1 = (OOC_INT64)*(OOC_INT64*)(_check_pointer(i1, 126635));
  OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i2, 126604)))), OOC_IR__BuilderDesc_ErrSym)),OOC_IR__BuilderDesc_ErrSym)((OOC_IR__Builder)i2, 30, (OOC_Scanner_BasicList__Symbol)i1);
  goto l22;
l19:
  i1 = (OOC_INT64)b;
  i2 = (OOC_INT64)*(OOC_INT64*)(_check_pointer(i0, 126546));
  OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i1, 126521)))), OOC_IR__BuilderDesc_ErrSym)),OOC_IR__BuilderDesc_ErrSym)((OOC_IR__Builder)i1, 19, (OOC_Scanner_BasicList__Symbol)i2);
  goto l22;
l21:
  i1 = (OOC_INT64)b;
  i2 = (OOC_INT64)*(OOC_INT64*)(_check_pointer(i0, 126461));
  OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i1, 126435)))), OOC_IR__BuilderDesc_ErrSym)),OOC_IR__BuilderDesc_ErrSym)((OOC_IR__Builder)i1, 29, (OOC_Scanner_BasicList__Symbol)i2);
l22:
  i1 = (OOC_INT64)body;
  i2 = (OOC_INT64)RT0__NewObject(_td_OOC_IR__ForStatm.baseTypes[0]);
  i3 = (OOC_INT64)start;
  i4 = (OOC_INT64)end;
  i5 = (OOC_INT64)step;
  i6 = (OOC_INT64)sym;
  OOC_IR__InitForStatm((OOC_IR__ForStatm)i2, (OOC_Scanner_BasicList__Symbol)i6, (OOC_IR__Expression)i0, (OOC_IR__Expression)i3, (OOC_IR__Expression)i4, (OOC_IR__Expression)i5, (OOC_IR__StatementSeq)i1);
  return (OOC_IR__ForStatm)i2;
  ;
}

void OOC_IR__VisitorDesc_VisitForStatm(OOC_IR__Visitor v, OOC_IR__ForStatm forStatm) {

  return;
  ;
}

void OOC_IR__ForStatmDesc_Accept(OOC_IR__ForStatm forStatm, OOC_IR__Visitor v) {
  register OOC_INT64 i0,i1;

  i0 = (OOC_INT64)v;
  i1 = (OOC_INT64)forStatm;
  OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 127265)))), OOC_IR__VisitorDesc_VisitForStatm)),OOC_IR__VisitorDesc_VisitForStatm)((OOC_IR__Visitor)i0, (OOC_IR__ForStatm)i1);
  return;
  ;
}

static void OOC_IR__InitIfStatm(OOC_IR__IfStatm ifStatm, OOC_Scanner_BasicList__Symbol sym, OOC_IR__Expression guard, OOC_IR__StatementSeq pathTrue, OOC_IR__StatementSeq pathFalse) {
  register OOC_INT64 i0,i1;

  i0 = (OOC_INT64)ifStatm;
  i1 = (OOC_INT64)sym;
  OOC_IR__InitStatement((OOC_IR__Statement)i0, (OOC_Scanner_BasicList__Symbol)i1);
  i1 = (OOC_INT64)guard;
  *(OOC_INT64*)((_check_pointer(i0, 127600))+16) = i1;
  i1 = (OOC_INT64)pathTrue;
  *(OOC_INT64*)((_check_pointer(i0, 127629))+24) = i1;
  i1 = (OOC_INT64)pathFalse;
  *(OOC_INT64*)((_check_pointer(i0, 127664))+32) = i1;
  return;
  ;
}

OOC_IR__IfStatm OOC_IR__BuilderDesc_NewIfStatm(OOC_IR__Builder b, OOC_Scanner_BasicList__Symbol sym, OOC_IR__Expression guard, OOC_IR__StatementSeq pathTrue, OOC_IR__StatementSeq pathFalse) {
  register OOC_INT64 i0,i1,i2,i3,i4;
  OOC_IR__IfStatm ifStatm;

  i0 = (OOC_INT64)RT0__NewObject(_td_OOC_IR__IfStatm.baseTypes[0]);
  ifStatm = (OOC_IR__IfStatm)i0;
  i1 = (OOC_INT64)b;
  i2 = (OOC_INT64)guard;
  i1 = (OOC_INT64)OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i1, 127946)))), OOC_IR__BuilderDesc_AssertBoolean)),OOC_IR__BuilderDesc_AssertBoolean)((OOC_IR__Builder)i1, (OOC_IR__Expression)i2);
  i2 = (OOC_INT64)sym;
  i3 = (OOC_INT64)pathTrue;
  i4 = (OOC_INT64)pathFalse;
  OOC_IR__InitIfStatm((OOC_IR__IfStatm)i0, (OOC_Scanner_BasicList__Symbol)i2, (OOC_IR__Expression)i1, (OOC_IR__StatementSeq)i3, (OOC_IR__StatementSeq)i4);
  return (OOC_IR__IfStatm)i0;
  ;
}

void OOC_IR__VisitorDesc_VisitIfStatm(OOC_IR__Visitor v, OOC_IR__IfStatm ifStatm) {

  return;
  ;
}

void OOC_IR__IfStatmDesc_Accept(OOC_IR__IfStatm ifStatm, OOC_IR__Visitor v) {
  register OOC_INT64 i0,i1;

  i0 = (OOC_INT64)v;
  i1 = (OOC_INT64)ifStatm;
  OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 128184)))), OOC_IR__VisitorDesc_VisitIfStatm)),OOC_IR__VisitorDesc_VisitIfStatm)((OOC_IR__Visitor)i0, (OOC_IR__IfStatm)i1);
  return;
  ;
}

static void OOC_IR__InitCase(OOC_IR__Case _case, OOC_Scanner_BasicList__Symbol sym, OOC_IR__CaseLabels labels, OOC_IR__StatementSeq statmSeq) {
  register OOC_INT64 i0,i1;

  i0 = (OOC_INT64)_case;
  i1 = (OOC_INT64)sym;
  OOC_IR__InitStatement((OOC_IR__Statement)i0, (OOC_Scanner_BasicList__Symbol)i1);
  i1 = (OOC_INT64)labels;
  *(OOC_INT64*)((_check_pointer(i0, 128486))+16) = i1;
  i1 = (OOC_INT64)statmSeq;
  *(OOC_INT64*)((_check_pointer(i0, 128514))+24) = i1;
  return;
  ;
}

OOC_IR__Case OOC_IR__BuilderDesc_NewCase(OOC_IR__Builder b, OOC_Scanner_BasicList__Symbol sym, OOC_IR__CaseLabels labels, OOC_IR__StatementSeq statmSeq) {
  register OOC_INT64 i0,i1,i2,i3,i4,i5;
  OOC_INT32 i;
  OOC_IR__SetRange range;

  i0 = (OOC_INT64)labels;
  i = 0;
  i1 = OOC_ARRAY_LENGTH((_check_pointer(i0, 128781)), 0);
  i2 = 0<i1;
  if (!i2) goto l8;
  i2 = (OOC_INT64)b;
  i3=0;
l3_loop:
  i4 = _check_pointer(i0, 128810);
  i5 = OOC_ARRAY_LENGTH(i4, 0);
  i4 = (OOC_INT64)*(OOC_INT64*)(i4+(_check_index(i3, i5, OOC_UINT32, 128810))*8);
  i4 = _type_guard(i4, ((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i4, 128814)))), &_td_OOC_IR__SetRangeDesc, 128814);
  range = (OOC_IR__SetRange)i4;
  i5 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i4, 128866))+16);
  i5 = (OOC_INT64)OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i2, 128846)))), OOC_IR__BuilderDesc_AssertConst)),OOC_IR__BuilderDesc_AssertConst)((OOC_IR__Builder)i2, (OOC_IR__Expression)i5);
  *(OOC_INT64*)((_check_pointer(i4, 128836))+16) = i5;
  i5 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i4, 128914))+24);
  i5 = (OOC_INT64)OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i2, 128894)))), OOC_IR__BuilderDesc_AssertConst)),OOC_IR__BuilderDesc_AssertConst)((OOC_IR__Builder)i2, (OOC_IR__Expression)i5);
  *(OOC_INT64*)((_check_pointer(i4, 128886))+24) = i5;
  i3 = i3+1;
  i = i3;
  i4 = i3<i1;
  if (i4) goto l3_loop;
l8:
  i1 = (OOC_INT64)sym;
  i2 = (OOC_INT64)statmSeq;
  i3 = (OOC_INT64)RT0__NewObject(_td_OOC_IR__Case.baseTypes[0]);
  OOC_IR__InitCase((OOC_IR__Case)i3, (OOC_Scanner_BasicList__Symbol)i1, (OOC_IR__CaseLabels)i0, (OOC_IR__StatementSeq)i2);
  return (OOC_IR__Case)i3;
  ;
}

void OOC_IR__VisitorDesc_VisitCase(OOC_IR__Visitor v, OOC_IR__Case _case) {

  return;
  ;
}

void OOC_IR__CaseDesc_Accept(OOC_IR__Case _case, OOC_IR__Visitor v) {
  register OOC_INT64 i0,i1;

  i0 = (OOC_INT64)v;
  i1 = (OOC_INT64)_case;
  OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 129162)))), OOC_IR__VisitorDesc_VisitCase)),OOC_IR__VisitorDesc_VisitCase)((OOC_IR__Visitor)i0, (OOC_IR__Case)i1);
  return;
  ;
}

void OOC_IR__CaseDesc_CheckLabels(OOC_IR__Case _case, OOC_IR__Builder b, OOC_SymbolTable__Type type, OOC_IR__CaseList caseList) {
  register OOC_INT64 i0,i1,i2,i3,i4,i5,i6,i7,i8;
  OOC_INT32 deleted;
  OOC_INT32 i;
  OOC_IR__SetRange range;
  OOC_CHAR8 inUse;
  OOC_INT32 j;
  OOC_IR__CaseLabels _new;
  auto OOC_CHAR8 OOC_IR__CaseDesc_CheckLabels_IntersectsWith(OOC_IR__SetRange range, OOC_IR__CaseLabels list, OOC_INT32 end);
    
    OOC_CHAR8 OOC_IR__CaseDesc_CheckLabels_IntersectsWith(OOC_IR__SetRange range, OOC_IR__CaseLabels list, OOC_INT32 end) {
      register OOC_INT64 i0,i1,i2,i3,i4,i5;
      OOC_INT32 i;

      i = 0;
      i0 = end;
      i1 = 0!=i0;
      if (!i1) goto l15;
      i1 = (OOC_INT64)list;
      i2 = (OOC_INT64)range;
      i3=0;
l3_loop:
      i4 = _check_pointer(i1, 129620);
      i5 = OOC_ARRAY_LENGTH(i4, 0);
      i4 = (OOC_INT64)*(OOC_INT64*)(i4+(_check_index(i3, i5, OOC_UINT32, 129620))*8);
      i4 = i4!=(OOC_INT64)0;
      if (i4) goto l6;
      i4=0u;
      goto l8;
l6:
      i4 = _check_pointer(i1, 129660);
      i5 = OOC_ARRAY_LENGTH(i4, 0);
      i4 = (OOC_INT64)*(OOC_INT64*)(i4+(_check_index(i3, i5, OOC_UINT32, 129660))*8);
      i4 = OOC_IR__SetRangeDesc_IntersectsWith((OOC_IR__SetRange)i2, (OOC_IR__SetRange)(_type_guard(i4, ((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i4, 129664)))), &_td_OOC_IR__SetRangeDesc, 129664)));
      
l8:
      if (!i4) goto l10;
      return 1u;
l10:
      i3 = i3+1;
      i = i3;
      i4 = i3!=i0;
      if (i4) goto l3_loop;
l15:
      return 0u;
      ;
    }


  deleted = 0;
  i0 = (OOC_INT64)_case;
  i0 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 129844))+16);
  i0 = OOC_ARRAY_LENGTH((_check_pointer(i0, 129852)), 0);
  i = 0;
  i1 = 0<i0;
  if (!i1) goto l44;
  i1 = !0u;
  i2=0;
l3_loop:
  i3 = (OOC_INT64)_case;
  i4 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i3, 129879))+16);
  i4 = _check_pointer(i4, 129887);
  i5 = OOC_ARRAY_LENGTH(i4, 0);
  i4 = (OOC_INT64)*(OOC_INT64*)(i4+(_check_index(i2, i5, OOC_UINT32, 129887))*8);
  i4 = _type_guard(i4, ((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i4, 129891)))), &_td_OOC_IR__SetRangeDesc, 129891);
  range = (OOC_IR__SetRange)i4;
  i5 = (OOC_INT64)b;
  i6 = (OOC_INT64)type;
  i7 = OOC_IR__BuilderDesc_Widen((OOC_IR__Builder)i5, (void*)((_check_pointer(i4, 129927))+16), (OOC_SymbolTable__Type)i6);
  i7 = !i7;
  if (i7) goto l38;
  i6 = OOC_IR__BuilderDesc_Widen((OOC_IR__Builder)i5, (void*)((_check_pointer(i4, 130106))+24), (OOC_SymbolTable__Type)i6);
  i6 = !i6;
  if (i6) goto l36;
  i4 = OOC_IR__SetRangeDesc_IsEmpty((OOC_IR__SetRange)i4);
  if (i4) goto l34;
  inUse = 0u;
  j = 0;
  i2 = (OOC_INT64)caseList;
  i2 = _check_pointer(i2, 130466);
  i4 = OOC_ARRAY_LENGTH(i2, 0);
  i2 = (OOC_INT64)*(OOC_INT64*)(i2+(_check_index(0, i4, OOC_UINT32, 130466))*8);
  i2 = i2!=i3;
  if (i2) goto l12;
  i2=0u;
  goto l14;
l12:
  i2=i1;
l14:
  if (i2) goto l16;
  i2=0u;
  goto l27;
l16:
  i2=0;
l17_loop:
  i3 = (OOC_INT64)caseList;
  i4 = _check_pointer(i3, 130540);
  i5 = OOC_ARRAY_LENGTH(i4, 0);
  i4 = (OOC_INT64)*(OOC_INT64*)(i4+(_check_index(i2, i5, OOC_UINT32, 130540))*8);
  i3 = _check_pointer(i3, 130601);
  i5 = OOC_ARRAY_LENGTH(i3, 0);
  i2 = (OOC_INT64)*(OOC_INT64*)(i3+(_check_index(i2, i5, OOC_UINT32, 130601))*8);
  i2 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i2, 130604))+16);
  i3 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i4, 130543))+16);
  i2 = OOC_ARRAY_LENGTH((_check_pointer(i2, 130612)), 0);
  i4 = (OOC_INT64)range;
  i2 = OOC_IR__CaseDesc_CheckLabels_IntersectsWith((OOC_IR__SetRange)i4, (OOC_IR__CaseLabels)i3, i2);
  i3 = j;
  inUse = i2;
  i3 = i3+1;
  j = i3;
  i4 = (OOC_INT64)caseList;
  i4 = _check_pointer(i4, 130466);
  i5 = OOC_ARRAY_LENGTH(i4, 0);
  i4 = (OOC_INT64)*(OOC_INT64*)(i4+(_check_index(i3, i5, OOC_UINT32, 130466))*8);
  i5 = (OOC_INT64)_case;
  i4 = i4!=i5;
  if (i4) goto l20;
  i4=0u;
  goto l22;
l20:
  i4 = !i2;
  
l22:
  if (!i4) goto l27;
  i2=i3;
  goto l17_loop;
l27:
  if (i2) goto l29;
  i2 = (OOC_INT64)_case;
  i2 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i2, 130702))+16);
  i3 = i;
  i4 = (OOC_INT64)range;
  i2 = OOC_IR__CaseDesc_CheckLabels_IntersectsWith((OOC_IR__SetRange)i4, (OOC_IR__CaseLabels)i2, i3);
  
  goto l30;
l29:
  i2=1u;
l30:
  inUse = i2;
  if (!i2) goto l39;
  i2 = (OOC_INT64)b;
  i3 = (OOC_INT64)range;
  i3 = (OOC_INT64)*(OOC_INT64*)(_check_pointer(i3, 130780));
  OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i2, 130749)))), OOC_IR__BuilderDesc_ErrSym)),OOC_IR__BuilderDesc_ErrSym)((OOC_IR__Builder)i2, 28, (OOC_Scanner_BasicList__Symbol)i3);
  goto l39;
l34:
  i3 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i3, 130357))+16);
  i3 = _check_pointer(i3, 130365);
  i4 = OOC_ARRAY_LENGTH(i3, 0);
  i5 = deleted;
  *(OOC_INT64*)(i3+(_check_index(i2, i4, OOC_UINT32, 130365))*8) = 0;
  deleted = (i5+1);
  goto l39;
l36:
  i4 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i4, 130165))+24);
  i4 = (OOC_INT64)*(OOC_INT64*)(_check_pointer(i4, 130169));
  OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i5, 130132)))), OOC_IR__BuilderDesc_ErrSym)),OOC_IR__BuilderDesc_ErrSym)((OOC_IR__Builder)i5, 27, (OOC_Scanner_BasicList__Symbol)i4);
  i3 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i3, 130189))+16);
  i3 = _check_pointer(i3, 130197);
  i4 = OOC_ARRAY_LENGTH(i3, 0);
  i5 = deleted;
  *(OOC_INT64*)(i3+(_check_index(i2, i4, OOC_UINT32, 130197))*8) = 0;
  deleted = (i5+1);
  goto l39;
l38:
  i4 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i4, 129988))+16);
  i4 = (OOC_INT64)*(OOC_INT64*)(_check_pointer(i4, 129994));
  OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i5, 129955)))), OOC_IR__BuilderDesc_ErrSym)),OOC_IR__BuilderDesc_ErrSym)((OOC_IR__Builder)i5, 27, (OOC_Scanner_BasicList__Symbol)i4);
  i3 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i3, 130014))+16);
  i3 = _check_pointer(i3, 130022);
  i4 = OOC_ARRAY_LENGTH(i3, 0);
  i5 = deleted;
  *(OOC_INT64*)(i3+(_check_index(i2, i4, OOC_UINT32, 130022))*8) = 0;
  deleted = (i5+1);
l39:
  i2 = i;
  i2 = i2+1;
  i = i2;
  i3 = i2<i0;
  if (i3) goto l3_loop;
l44:
  i0 = deleted;
  i1 = i0!=0;
  if (!i1) goto l60;
  i1 = (OOC_INT64)_case;
  i2 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i1, 130873))+16);
  i2 = OOC_ARRAY_LENGTH((_check_pointer(i2, 130881)), 0);
  i0 = (OOC_INT64)RT0__NewObject(_td_OOC_IR__CaseLabels.baseTypes[0], (i2-i0));
  _new = (OOC_IR__CaseLabels)i0;
  j = (-1);
  i = 0;
  i2 = OOC_ARRAY_LENGTH((_check_pointer(i0, 130937)), 0);
  i3 = 0<i2;
  if (!i3) goto l59;
  i3=(-1);i4=0;
l49_loop:
  
l50_loop:
  i3 = i3+1;
  j = i3;
  i5 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i1, 130998))+16);
  i5 = _check_pointer(i5, 131006);
  i6 = OOC_ARRAY_LENGTH(i5, 0);
  i5 = (OOC_INT64)*(OOC_INT64*)(i5+(_check_index(i3, i6, OOC_UINT32, 131006))*8);
  i5 = i5!=0;
  if (!i5) goto l50_loop;
l54:
  i5 = _check_pointer(i0, 131029);
  i6 = OOC_ARRAY_LENGTH(i5, 0);
  i7 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i1, 131040))+16);
  i7 = _check_pointer(i7, 131048);
  i8 = OOC_ARRAY_LENGTH(i7, 0);
  i7 = (OOC_INT64)*(OOC_INT64*)(i7+(_check_index(i3, i8, OOC_UINT32, 131048))*8);
  *(OOC_INT64*)(i5+(_check_index(i4, i6, OOC_UINT32, 131029))*8) = i7;
  i4 = i4+1;
  i = i4;
  i5 = i4<i2;
  if (i5) goto l49_loop;
l59:
  *(OOC_INT64*)((_check_pointer(i1, 131074))+16) = i0;
l60:
  return;
  ;
}

static void OOC_IR__InitCaseStatm(OOC_IR__CaseStatm caseStatm, OOC_Scanner_BasicList__Symbol sym, OOC_IR__Expression select, OOC_IR__CaseList caseList, OOC_IR__StatementSeq _default, OOC_CHAR8 checkMatch) {
  register OOC_INT64 i0,i1;

  i0 = (OOC_INT64)caseStatm;
  i1 = (OOC_INT64)sym;
  OOC_IR__InitStatement((OOC_IR__Statement)i0, (OOC_Scanner_BasicList__Symbol)i1);
  i1 = (OOC_INT64)select;
  *(OOC_INT64*)((_check_pointer(i0, 131482))+16) = i1;
  i1 = (OOC_INT64)caseList;
  *(OOC_INT64*)((_check_pointer(i0, 131515))+24) = i1;
  i1 = (OOC_INT64)_default;
  *(OOC_INT64*)((_check_pointer(i0, 131552))+32) = i1;
  i1 = checkMatch;
  *(OOC_UINT8*)((_check_pointer(i0, 131587))+40) = i1;
  return;
  ;
}

OOC_IR__CaseStatm OOC_IR__BuilderDesc_NewCaseStatm(OOC_IR__Builder b, OOC_Scanner_BasicList__Symbol sym, OOC_IR__Expression select, OOC_IR__CaseList caseList, OOC_IR__StatementSeq _default) {
  register OOC_INT64 i0,i1,i2,i3,i4,i5,i6,i7,i8;
  OOC_IR__CaseStatm caseStatm;
  OOC_INT32 i;

  i0 = (OOC_INT64)RT0__NewObject(_td_OOC_IR__CaseStatm.baseTypes[0]);
  caseStatm = (OOC_IR__CaseStatm)i0;
  i1 = (OOC_INT64)select;
  i2 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i1, 131916))+8);
  i2 = OOC_SymbolTable_TypeRules__IsValidCaseSelector((OOC_SymbolTable__Type)i2);
  i2 = !i2;
  if (i2) goto l11;
  i2 = (OOC_INT64)caseList;
  i = 0;
  i3 = OOC_ARRAY_LENGTH((_check_pointer(i2, 132023)), 0);
  i4 = 0<i3;
  if (!i4) goto l12;
  i4 = (OOC_INT64)b;
  i5=0;
l5_loop:
  i6 = _check_pointer(i2, 132047);
  i7 = OOC_ARRAY_LENGTH(i6, 0);
  i8 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i1, 132074))+8);
  i6 = (OOC_INT64)*(OOC_INT64*)(i6+(_check_index(i5, i7, OOC_UINT32, 132047))*8);
  OOC_IR__CaseDesc_CheckLabels((OOC_IR__Case)i6, (OOC_IR__Builder)i4, (OOC_SymbolTable__Type)i8, (OOC_IR__CaseList)i2);
  i5 = i5+1;
  i = i5;
  i6 = i5<i3;
  if (i6) goto l5_loop;
  goto l12;
l11:
  i2 = (OOC_INT64)b;
  i3 = (OOC_INT64)*(OOC_INT64*)(_check_pointer(i1, 131973));
  OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i2, 131936)))), OOC_IR__BuilderDesc_ErrSym)),OOC_IR__BuilderDesc_ErrSym)((OOC_IR__Builder)i2, 26, (OOC_Scanner_BasicList__Symbol)i3);
l12:
  i2 = (OOC_INT64)sym;
  i3 = *(OOC_INT32*)((_check_pointer(i2, 132244))+28);
  i4 = (OOC_INT64)OOC_Config_StdPragmas__caseSelectCheck;
  i5 = (OOC_INT64)b;
  i3 = OOC_IR__GetPragmaValue((OOC_IR__Builder)i5, (Config_Section_Options__Option)i4, i3);
  i4 = (OOC_INT64)_default;
  i5 = (OOC_INT64)caseList;
  OOC_IR__InitCaseStatm((OOC_IR__CaseStatm)i0, (OOC_Scanner_BasicList__Symbol)i2, (OOC_IR__Expression)i1, (OOC_IR__CaseList)i5, (OOC_IR__StatementSeq)i4, i3);
  return (OOC_IR__CaseStatm)i0;
  ;
}

void OOC_IR__VisitorDesc_VisitCaseStatm(OOC_IR__Visitor v, OOC_IR__CaseStatm caseStatm) {

  return;
  ;
}

void OOC_IR__CaseStatmDesc_Accept(OOC_IR__CaseStatm caseStatm, OOC_IR__Visitor v) {
  register OOC_INT64 i0,i1;

  i0 = (OOC_INT64)v;
  i1 = (OOC_INT64)caseStatm;
  OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 132460)))), OOC_IR__VisitorDesc_VisitCaseStatm)),OOC_IR__VisitorDesc_VisitCaseStatm)((OOC_IR__Visitor)i0, (OOC_IR__CaseStatm)i1);
  return;
  ;
}

static void OOC_IR__InitLoopStatm(OOC_IR__LoopStatm loopStatm, OOC_Scanner_BasicList__Symbol sym, OOC_IR__StatementSeq body) {
  register OOC_INT64 i0,i1;

  i0 = (OOC_INT64)loopStatm;
  i1 = (OOC_INT64)sym;
  OOC_IR__InitStatement((OOC_IR__Statement)i0, (OOC_Scanner_BasicList__Symbol)i1);
  i1 = (OOC_INT64)body;
  *(OOC_INT64*)((_check_pointer(i0, 132777))+16) = i1;
  return;
  ;
}

OOC_IR__LoopStatm OOC_IR__BuilderDesc_NewLoopStatm(OOC_IR__Builder b, OOC_Scanner_BasicList__Symbol sym, OOC_IR__StatementSeq body) {
  register OOC_INT64 i0,i1,i2;

  i0 = (OOC_INT64)RT0__NewObject(_td_OOC_IR__LoopStatm.baseTypes[0]);
  i1 = (OOC_INT64)sym;
  i2 = (OOC_INT64)body;
  OOC_IR__InitLoopStatm((OOC_IR__LoopStatm)i0, (OOC_Scanner_BasicList__Symbol)i1, (OOC_IR__StatementSeq)i2);
  return (OOC_IR__LoopStatm)i0;
  ;
}

void OOC_IR__VisitorDesc_VisitLoopStatm(OOC_IR__Visitor v, OOC_IR__LoopStatm loopStatm) {

  return;
  ;
}

void OOC_IR__LoopStatmDesc_Accept(OOC_IR__LoopStatm loopStatm, OOC_IR__Visitor v) {
  register OOC_INT64 i0,i1;

  i0 = (OOC_INT64)v;
  i1 = (OOC_INT64)loopStatm;
  OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 133245)))), OOC_IR__VisitorDesc_VisitLoopStatm)),OOC_IR__VisitorDesc_VisitLoopStatm)((OOC_IR__Visitor)i0, (OOC_IR__LoopStatm)i1);
  return;
  ;
}

static void OOC_IR__InitMoveBlock(OOC_IR__MoveBlock move, OOC_Scanner_BasicList__Symbol sym, OOC_IR__Expression source, OOC_IR__Expression dest, OOC_IR__Expression size) {
  register OOC_INT64 i0,i1;

  i0 = (OOC_INT64)move;
  i1 = (OOC_INT64)sym;
  OOC_IR__InitStatement((OOC_IR__Statement)i0, (OOC_Scanner_BasicList__Symbol)i1);
  i1 = (OOC_INT64)source;
  *(OOC_INT64*)((_check_pointer(i0, 133559))+16) = i1;
  i1 = (OOC_INT64)dest;
  *(OOC_INT64*)((_check_pointer(i0, 133587))+24) = i1;
  i1 = (OOC_INT64)size;
  *(OOC_INT64*)((_check_pointer(i0, 133611))+32) = i1;
  return;
  ;
}

OOC_IR__MoveBlock OOC_IR__BuilderDesc_NewMoveBlock(OOC_IR__Builder b, OOC_Scanner_BasicList__Symbol sym, OOC_IR__Expression source, OOC_IR__Expression dest, OOC_IR__Expression size) {
  register OOC_INT64 i0,i1,i2,i3,i4;

  i0 = (OOC_INT64)RT0__NewObject(_td_OOC_IR__MoveBlock.baseTypes[0]);
  i1 = (OOC_INT64)b;
  i2 = (OOC_INT64)source;
  i2 = (OOC_INT64)OOC_IR__BuilderDesc_AssertInteger((OOC_IR__Builder)i1, (OOC_IR__Expression)i2);
  i3 = (OOC_INT64)dest;
  i3 = (OOC_INT64)OOC_IR__BuilderDesc_AssertInteger((OOC_IR__Builder)i1, (OOC_IR__Expression)i3);
  i4 = (OOC_INT64)size;
  i1 = (OOC_INT64)OOC_IR__BuilderDesc_AssertInteger((OOC_IR__Builder)i1, (OOC_IR__Expression)i4);
  i4 = (OOC_INT64)sym;
  OOC_IR__InitMoveBlock((OOC_IR__MoveBlock)i0, (OOC_Scanner_BasicList__Symbol)i4, (OOC_IR__Expression)i2, (OOC_IR__Expression)i3, (OOC_IR__Expression)i1);
  return (OOC_IR__MoveBlock)i0;
  ;
}

void OOC_IR__VisitorDesc_VisitMoveBlock(OOC_IR__Visitor v, OOC_IR__MoveBlock move) {

  return;
  ;
}

void OOC_IR__MoveBlockDesc_Accept(OOC_IR__MoveBlock move, OOC_IR__Visitor v) {
  register OOC_INT64 i0,i1;

  i0 = (OOC_INT64)v;
  i1 = (OOC_INT64)move;
  OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 134196)))), OOC_IR__VisitorDesc_VisitMoveBlock)),OOC_IR__VisitorDesc_VisitMoveBlock)((OOC_IR__Visitor)i0, (OOC_IR__MoveBlock)i1);
  return;
  ;
}

static void OOC_IR__InitRaise(OOC_IR__Raise raise, OOC_Scanner_BasicList__Symbol sym, OOC_IR__Expression exception) {
  register OOC_INT64 i0,i1;

  i0 = (OOC_INT64)raise;
  i1 = (OOC_INT64)sym;
  OOC_IR__InitStatement((OOC_IR__Statement)i0, (OOC_Scanner_BasicList__Symbol)i1);
  i1 = (OOC_INT64)exception;
  *(OOC_INT64*)((_check_pointer(i0, 134462))+16) = i1;
  return;
  ;
}

OOC_IR__Raise OOC_IR__BuilderDesc_NewRaise(OOC_IR__Builder b, OOC_Scanner_BasicList__Symbol sym, OOC_IR__Expression exception) {
  register OOC_INT64 i0,i1,i2;

  i0 = (OOC_INT64)exception;
  i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 134647))+8);
  i1 = OOC_SymbolTable_TypeRules__IsException((OOC_SymbolTable__Type)i1);
  if (i1) goto l3;
  i1 = (OOC_INT64)b;
  i0 = (OOC_INT64)*(OOC_INT64*)(_check_pointer(i0, 134786));
  OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i1, 134755)))), OOC_IR__BuilderDesc_ErrSym)),OOC_IR__BuilderDesc_ErrSym)((OOC_IR__Builder)i1, 62, (OOC_Scanner_BasicList__Symbol)i0);
  return (OOC_IR__Raise)0;
  goto l4;
l3:
  i1 = (OOC_INT64)sym;
  i2 = (OOC_INT64)RT0__NewObject(_td_OOC_IR__Raise.baseTypes[0]);
  OOC_IR__InitRaise((OOC_IR__Raise)i2, (OOC_Scanner_BasicList__Symbol)i1, (OOC_IR__Expression)i0);
  return (OOC_IR__Raise)i2;
l4:
  _failed_function(134529); return 0;
  ;
}

void OOC_IR__VisitorDesc_VisitRaise(OOC_IR__Visitor v, OOC_IR__Raise raise) {

  return;
  ;
}

void OOC_IR__RaiseDesc_Accept(OOC_IR__Raise raise, OOC_IR__Visitor v) {
  register OOC_INT64 i0,i1;

  i0 = (OOC_INT64)v;
  i1 = (OOC_INT64)raise;
  OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 134978)))), OOC_IR__VisitorDesc_VisitRaise)),OOC_IR__VisitorDesc_VisitRaise)((OOC_IR__Visitor)i0, (OOC_IR__Raise)i1);
  return;
  ;
}

static void OOC_IR__InitRepeatStatm(OOC_IR__RepeatStatm repeatStatm, OOC_Scanner_BasicList__Symbol sym, OOC_IR__StatementSeq body, OOC_IR__Expression exitCondition) {
  register OOC_INT64 i0,i1;

  i0 = (OOC_INT64)repeatStatm;
  i1 = (OOC_INT64)sym;
  OOC_IR__InitStatement((OOC_IR__Statement)i0, (OOC_Scanner_BasicList__Symbol)i1);
  i1 = (OOC_INT64)body;
  *(OOC_INT64*)((_check_pointer(i0, 135328))+16) = i1;
  i1 = (OOC_INT64)exitCondition;
  *(OOC_INT64*)((_check_pointer(i0, 135359))+24) = i1;
  return;
  ;
}

OOC_IR__RepeatStatm OOC_IR__BuilderDesc_NewRepeatStatm(OOC_IR__Builder b, OOC_Scanner_BasicList__Symbol sym, OOC_IR__StatementSeq body, OOC_IR__Expression exitCondition) {
  register OOC_INT64 i0,i1,i2,i3;
  OOC_IR__RepeatStatm repeatStatm;

  i0 = (OOC_INT64)RT0__NewObject(_td_OOC_IR__RepeatStatm.baseTypes[0]);
  repeatStatm = (OOC_IR__RepeatStatm)i0;
  i1 = (OOC_INT64)b;
  i2 = (OOC_INT64)exitCondition;
  i1 = (OOC_INT64)OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i1, 135683)))), OOC_IR__BuilderDesc_AssertBoolean)),OOC_IR__BuilderDesc_AssertBoolean)((OOC_IR__Builder)i1, (OOC_IR__Expression)i2);
  i2 = (OOC_INT64)sym;
  i3 = (OOC_INT64)body;
  OOC_IR__InitRepeatStatm((OOC_IR__RepeatStatm)i0, (OOC_Scanner_BasicList__Symbol)i2, (OOC_IR__StatementSeq)i3, (OOC_IR__Expression)i1);
  return (OOC_IR__RepeatStatm)i0;
  ;
}

void OOC_IR__VisitorDesc_VisitRepeatStatm(OOC_IR__Visitor v, OOC_IR__RepeatStatm repeatStatm) {

  return;
  ;
}

void OOC_IR__RepeatStatmDesc_Accept(OOC_IR__RepeatStatm repeatStatm, OOC_IR__Visitor v) {
  register OOC_INT64 i0,i1;

  i0 = (OOC_INT64)v;
  i1 = (OOC_INT64)repeatStatm;
  OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 135940)))), OOC_IR__VisitorDesc_VisitRepeatStatm)),OOC_IR__VisitorDesc_VisitRepeatStatm)((OOC_IR__Visitor)i0, (OOC_IR__RepeatStatm)i1);
  return;
  ;
}

static void OOC_IR__InitReturn(OOC_IR__Return _return, OOC_Scanner_BasicList__Symbol sym, OOC_IR__Expression result) {
  register OOC_INT64 i0,i1;

  i0 = (OOC_INT64)_return;
  i1 = (OOC_INT64)sym;
  OOC_IR__InitStatement((OOC_IR__Statement)i0, (OOC_Scanner_BasicList__Symbol)i1);
  i1 = (OOC_INT64)result;
  *(OOC_INT64*)((_check_pointer(i0, 136218))+16) = i1;
  *(OOC_INT32*)((_check_pointer(i0, 136248))+24) = 0;
  return;
  ;
}

OOC_IR__Return OOC_IR__BuilderDesc_NewReturn(OOC_IR__Builder b, OOC_Scanner_BasicList__Symbol sym, OOC_IR__Expression result) {
  register OOC_INT64 i0,i1,i2;

  i0 = (OOC_INT64)RT0__NewObject(_td_OOC_IR__Return.baseTypes[0]);
  i1 = (OOC_INT64)sym;
  i2 = (OOC_INT64)result;
  OOC_IR__InitReturn((OOC_IR__Return)i0, (OOC_Scanner_BasicList__Symbol)i1, (OOC_IR__Expression)i2);
  return (OOC_IR__Return)i0;
  ;
}

void OOC_IR__VisitorDesc_VisitReturn(OOC_IR__Visitor v, OOC_IR__Return _return) {

  return;
  ;
}

void OOC_IR__ReturnDesc_Accept(OOC_IR__Return _return, OOC_IR__Visitor v) {
  register OOC_INT64 i0,i1;

  i0 = (OOC_INT64)v;
  i1 = (OOC_INT64)_return;
  OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 136645)))), OOC_IR__VisitorDesc_VisitReturn)),OOC_IR__VisitorDesc_VisitReturn)((OOC_IR__Visitor)i0, (OOC_IR__Return)i1);
  return;
  ;
}

static void OOC_IR__InitCatchClause(OOC_IR__CatchClause _catch, OOC_Scanner_BasicList__Symbol sym, OOC_SymbolTable__Type exceptionType, OOC_IR__StatementSeq statmSeq) {
  register OOC_INT64 i0,i1;

  i0 = (OOC_INT64)_catch;
  i1 = (OOC_INT64)sym;
  OOC_IR__InitStatement((OOC_IR__Statement)i0, (OOC_Scanner_BasicList__Symbol)i1);
  i1 = (OOC_INT64)exceptionType;
  *(OOC_INT64*)((_check_pointer(i0, 137001))+16) = i1;
  i1 = (OOC_INT64)statmSeq;
  *(OOC_INT64*)((_check_pointer(i0, 137043))+24) = i1;
  *(OOC_UINT8*)((_check_pointer(i0, 137075))+32) = 0u;
  return;
  ;
}

OOC_IR__CatchClause OOC_IR__BuilderDesc_NewCatchClause(OOC_IR__Builder b, OOC_IR__Expression guardType, OOC_IR__StatementSeq statmSeq) {
  register OOC_INT64 i0,i1,i2,i3,i4,i5;
  OOC_IR__CatchClause _catch;
  OOC_SymbolTable__Type type;

  i0 = (OOC_INT64)RT0__NewObject(_td_OOC_IR__CatchClause.baseTypes[0]);
  _catch = (OOC_IR__CatchClause)i0;
  i1 = (OOC_INT64)b;
  i2 = (OOC_INT64)guardType;
  i3 = (OOC_INT64)OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i1, 137346)))), OOC_IR__BuilderDesc_AssertType)),OOC_IR__BuilderDesc_AssertType)((OOC_IR__Builder)i1, (OOC_IR__Expression)i2);
  type = (OOC_SymbolTable__Type)i3;
  i4 = (OOC_INT64)*(OOC_INT64*)(_check_pointer(i2, 137406));
  i5 = (OOC_INT64)statmSeq;
  OOC_IR__InitCatchClause((OOC_IR__CatchClause)i0, (OOC_Scanner_BasicList__Symbol)i4, (OOC_SymbolTable__Type)i3, (OOC_IR__StatementSeq)i5);
  i3 = OOC_SymbolTable_TypeRules__IsException((OOC_SymbolTable__Type)i3);
  i3 = !i3;
  if (!i3) goto l4;
  i2 = (OOC_INT64)*(OOC_INT64*)(_check_pointer(i2, 137501));
  OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i1, 137470)))), OOC_IR__BuilderDesc_ErrSym)),OOC_IR__BuilderDesc_ErrSym)((OOC_IR__Builder)i1, 62, (OOC_Scanner_BasicList__Symbol)i2);
  *(OOC_UINT8*)((_check_pointer(i0, 137519))+32) = 1u;
l4:
  return (OOC_IR__CatchClause)i0;
  ;
}

void OOC_IR__VisitorDesc_VisitCatchClause(OOC_IR__Visitor v, OOC_IR__CatchClause _catch) {

  return;
  ;
}

void OOC_IR__CatchClauseDesc_Accept(OOC_IR__CatchClause _catch, OOC_IR__Visitor v) {
  register OOC_INT64 i0,i1;

  i0 = (OOC_INT64)v;
  i1 = (OOC_INT64)_catch;
  OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 137801)))), OOC_IR__VisitorDesc_VisitCatchClause)),OOC_IR__VisitorDesc_VisitCatchClause)((OOC_IR__Visitor)i0, (OOC_IR__CatchClause)i1);
  return;
  ;
}

static void OOC_IR__InitTryStatm(OOC_IR__TryStatm tryStatm, OOC_Scanner_BasicList__Symbol sym, OOC_IR__StatementSeq statmSeq, OOC_IR__CatchList catchList) {
  register OOC_INT64 i0,i1;

  i0 = (OOC_INT64)tryStatm;
  i1 = (OOC_INT64)sym;
  OOC_IR__InitStatement((OOC_IR__Statement)i0, (OOC_Scanner_BasicList__Symbol)i1);
  i1 = (OOC_INT64)statmSeq;
  *(OOC_INT64*)((_check_pointer(i0, 138025))+16) = i1;
  i1 = (OOC_INT64)catchList;
  *(OOC_INT64*)((_check_pointer(i0, 138060))+24) = i1;
  *(OOC_INT64*)((_check_pointer(i0, 138097))+32) = (OOC_INT64)0;
  return;
  ;
}

OOC_IR__TryStatm OOC_IR__BuilderDesc_NewTryStatm(OOC_IR__Builder b, OOC_Scanner_BasicList__Symbol sym, OOC_IR__StatementSeq statmSeq, OOC_IR__CatchList catchList) {
  register OOC_INT64 i0,i1,i2,i3,i4,i5,i6,i7;
  OOC_INT32 i;
  OOC_INT32 j;

  i0 = (OOC_INT64)catchList;
  i = 0;
  i1 = OOC_ARRAY_LENGTH((_check_pointer(i0, 138372)), 0);
  i2 = 0<i1;
  if (!i2) goto l28;
  i2 = (OOC_INT64)b;
  i3=0;
l3_loop:
  j = 0;
  i4 = i3!=0;
  if (i4) goto l6;
  i4=0u;
  goto l8;
l6:
  i4 = _check_pointer(i0, 138443);
  i5 = OOC_ARRAY_LENGTH(i4, 0);
  i4 = (OOC_INT64)*(OOC_INT64*)(i4+(_check_index(i3, i5, OOC_UINT32, 138443))*8);
  i5 = _check_pointer(i0, 138511);
  i6 = OOC_ARRAY_LENGTH(i5, 0);
  i5 = (OOC_INT64)*(OOC_INT64*)(i5+(_check_index(0, i6, OOC_UINT32, 138511))*8);
  i4 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i4, 138446))+16);
  i5 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i5, 138514))+16);
  i4 = OOC_SymbolTable_TypeRules__IsExtensionOf((OOC_SymbolTable__Type)i4, (OOC_SymbolTable__Type)i5);
  i4 = !i4;
  
l8:
  if (i4) goto l10;
  i4=0;
  goto l20;
l10:
  i4=0;
l11_loop:
  i4 = i4+1;
  j = i4;
  i5 = i3!=i4;
  if (i5) goto l14;
  i5=0u;
  goto l16;
l14:
  i5 = _check_pointer(i0, 138443);
  i6 = OOC_ARRAY_LENGTH(i5, 0);
  i5 = (OOC_INT64)*(OOC_INT64*)(i5+(_check_index(i3, i6, OOC_UINT32, 138443))*8);
  i6 = _check_pointer(i0, 138511);
  i7 = OOC_ARRAY_LENGTH(i6, 0);
  i6 = (OOC_INT64)*(OOC_INT64*)(i6+(_check_index(i4, i7, OOC_UINT32, 138511))*8);
  i5 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i5, 138446))+16);
  i6 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i6, 138514))+16);
  i5 = OOC_SymbolTable_TypeRules__IsExtensionOf((OOC_SymbolTable__Type)i5, (OOC_SymbolTable__Type)i6);
  i5 = !i5;
  
l16:
  if (i5) goto l11_loop;
l20:
  i4 = i3!=i4;
  if (!i4) goto l23;
  i4 = _check_pointer(i0, 138627);
  i5 = OOC_ARRAY_LENGTH(i4, 0);
  i4 = (OOC_INT64)*(OOC_INT64*)(i4+(_check_index(i3, i5, OOC_UINT32, 138627))*8);
  i4 = (OOC_INT64)*(OOC_INT64*)(_check_pointer(i4, 138630));
  OOC_IR__BuilderDesc_WarnSym((OOC_IR__Builder)i2, 65, (OOC_Scanner_BasicList__Symbol)i4);
  i4 = _check_pointer(i0, 138654);
  i5 = OOC_ARRAY_LENGTH(i4, 0);
  i4 = (OOC_INT64)*(OOC_INT64*)(i4+(_check_index(i3, i5, OOC_UINT32, 138654))*8);
  *(OOC_UINT8*)((_check_pointer(i4, 138657))+32) = 1u;
l23:
  i3 = i3+1;
  i = i3;
  i4 = i3<i1;
  if (i4) goto l3_loop;
l28:
  i1 = (OOC_INT64)sym;
  i2 = (OOC_INT64)statmSeq;
  i3 = (OOC_INT64)RT0__NewObject(_td_OOC_IR__TryStatm.baseTypes[0]);
  OOC_IR__InitTryStatm((OOC_IR__TryStatm)i3, (OOC_Scanner_BasicList__Symbol)i1, (OOC_IR__StatementSeq)i2, (OOC_IR__CatchList)i0);
  return (OOC_IR__TryStatm)i3;
  ;
}

void OOC_IR__VisitorDesc_VisitTryStatm(OOC_IR__Visitor v, OOC_IR__TryStatm tryStatm) {

  return;
  ;
}

void OOC_IR__TryStatmDesc_Accept(OOC_IR__TryStatm tryStatm, OOC_IR__Visitor v) {
  register OOC_INT64 i0,i1;

  i0 = (OOC_INT64)v;
  i1 = (OOC_INT64)tryStatm;
  OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 139005)))), OOC_IR__VisitorDesc_VisitTryStatm)),OOC_IR__VisitorDesc_VisitTryStatm)((OOC_IR__Visitor)i0, (OOC_IR__TryStatm)i1);
  return;
  ;
}

static void OOC_IR__InitWhileStatm(OOC_IR__WhileStatm whileStatm, OOC_Scanner_BasicList__Symbol sym, OOC_IR__Expression guard, OOC_IR__StatementSeq body) {
  register OOC_INT64 i0,i1;

  i0 = (OOC_INT64)whileStatm;
  i1 = (OOC_INT64)sym;
  OOC_IR__InitStatement((OOC_IR__Statement)i0, (OOC_Scanner_BasicList__Symbol)i1);
  i1 = (OOC_INT64)guard;
  *(OOC_INT64*)((_check_pointer(i0, 139346))+16) = i1;
  i1 = (OOC_INT64)body;
  *(OOC_INT64*)((_check_pointer(i0, 139378))+24) = i1;
  return;
  ;
}

OOC_IR__WhileStatm OOC_IR__BuilderDesc_NewWhileStatm(OOC_IR__Builder b, OOC_Scanner_BasicList__Symbol sym, OOC_IR__Expression guard, OOC_IR__StatementSeq body) {
  register OOC_INT64 i0,i1,i2,i3;
  OOC_IR__WhileStatm whileStatm;

  i0 = (OOC_INT64)RT0__NewObject(_td_OOC_IR__WhileStatm.baseTypes[0]);
  whileStatm = (OOC_IR__WhileStatm)i0;
  i1 = (OOC_INT64)b;
  i2 = (OOC_INT64)guard;
  i1 = (OOC_INT64)OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i1, 139661)))), OOC_IR__BuilderDesc_AssertBoolean)),OOC_IR__BuilderDesc_AssertBoolean)((OOC_IR__Builder)i1, (OOC_IR__Expression)i2);
  i2 = (OOC_INT64)sym;
  i3 = (OOC_INT64)body;
  OOC_IR__InitWhileStatm((OOC_IR__WhileStatm)i0, (OOC_Scanner_BasicList__Symbol)i2, (OOC_IR__Expression)i1, (OOC_IR__StatementSeq)i3);
  return (OOC_IR__WhileStatm)i0;
  ;
}

void OOC_IR__VisitorDesc_VisitWhileStatm(OOC_IR__Visitor v, OOC_IR__WhileStatm whileStatm) {

  return;
  ;
}

void OOC_IR__WhileStatmDesc_Accept(OOC_IR__WhileStatm whileStatm, OOC_IR__Visitor v) {
  register OOC_INT64 i0,i1;

  i0 = (OOC_INT64)v;
  i1 = (OOC_INT64)whileStatm;
  OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 139908)))), OOC_IR__VisitorDesc_VisitWhileStatm)),OOC_IR__VisitorDesc_VisitWhileStatm)((OOC_IR__Visitor)i0, (OOC_IR__WhileStatm)i1);
  return;
  ;
}

static void OOC_IR__InitWithStatm(OOC_IR__WithStatm withStatm, OOC_Scanner_BasicList__Symbol sym, OOC_IR__Expression guard, OOC_IR__StatementSeq pathTrue, OOC_IR__StatementSeq pathFalse, OOC_CHAR8 checkMatch) {
  register OOC_INT64 i0,i1;

  i0 = (OOC_INT64)withStatm;
  i1 = (OOC_INT64)sym;
  OOC_IR__InitStatement((OOC_IR__Statement)i0, (OOC_Scanner_BasicList__Symbol)i1);
  i1 = (OOC_INT64)guard;
  *(OOC_INT64*)((_check_pointer(i0, 140307))+16) = i1;
  i1 = (OOC_INT64)pathTrue;
  *(OOC_INT64*)((_check_pointer(i0, 140338))+24) = i1;
  i1 = (OOC_INT64)pathFalse;
  *(OOC_INT64*)((_check_pointer(i0, 140375))+32) = i1;
  i1 = checkMatch;
  *(OOC_UINT8*)((_check_pointer(i0, 140414))+40) = i1;
  return;
  ;
}

OOC_IR__WithStatm OOC_IR__BuilderDesc_NewWithStatm(OOC_IR__Builder b, OOC_Scanner_BasicList__Symbol sym, OOC_IR__Expression guard, OOC_IR__StatementSeq pathTrue, OOC_IR__StatementSeq pathFalse) {
  register OOC_INT64 i0,i1,i2,i3,i4,i5;

  i0 = (OOC_INT64)sym;
  i1 = *(OOC_INT32*)((_check_pointer(i0, 140746))+28);
  i2 = (OOC_INT64)b;
  i3 = (OOC_INT64)OOC_Config_StdPragmas__typeGuard;
  i1 = OOC_IR__GetPragmaValue((OOC_IR__Builder)i2, (Config_Section_Options__Option)i3, i1);
  i2 = (OOC_INT64)guard;
  i3 = (OOC_INT64)pathTrue;
  i4 = (OOC_INT64)pathFalse;
  i5 = (OOC_INT64)RT0__NewObject(_td_OOC_IR__WithStatm.baseTypes[0]);
  OOC_IR__InitWithStatm((OOC_IR__WithStatm)i5, (OOC_Scanner_BasicList__Symbol)i0, (OOC_IR__Expression)i2, (OOC_IR__StatementSeq)i3, (OOC_IR__StatementSeq)i4, i1);
  return (OOC_IR__WithStatm)i5;
  ;
}

void OOC_IR__VisitorDesc_VisitWithStatm(OOC_IR__Visitor v, OOC_IR__WithStatm withStatm) {

  return;
  ;
}

void OOC_IR__WithStatmDesc_Accept(OOC_IR__WithStatm withStatm, OOC_IR__Visitor v) {
  register OOC_INT64 i0,i1;

  i0 = (OOC_INT64)v;
  i1 = (OOC_INT64)withStatm;
  OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 141063)))), OOC_IR__VisitorDesc_VisitWithStatm)),OOC_IR__VisitorDesc_VisitWithStatm)((OOC_IR__Visitor)i0, (OOC_IR__WithStatm)i1);
  return;
  ;
}

void OOC_IR__BuilderDesc_CheckExit(OOC_IR__Builder b, OOC_SymbolTable__ProcDecl procDecl, OOC_IR__StatementSeq statmSeq) {
  register OOC_INT64 i0,i1,i2;
  OOC_IR__LoopStatm currentLoop;
  OOC_IR__TryStatm currentTry;
  OOC_INT32 enclosingTry;
  OOC_INT32 enclosingTryLastLoop;
  OOC_CHAR8 initWithoutSuper;
  OOC_SymbolTable__Record procClass;
  auto void OOC_IR__BuilderDesc_CheckExit_CheckException(OOC_SymbolTable__Type exception, OOC_Scanner_BasicList__Symbol sym);
  auto void OOC_IR__BuilderDesc_CheckExit_CheckStatmSeq(OOC_IR__StatementSeq statmSeq);
    
    void OOC_IR__BuilderDesc_CheckExit_CheckException(OOC_SymbolTable__Type exception, OOC_Scanner_BasicList__Symbol sym) {
      register OOC_INT64 i0,i1,i2,i3,i4,i5;
      OOC_IR__TryStatm _try;
      OOC_INT32 i;
      OOC_SymbolTable__ExceptionNameArray raises;
      OOC_SymbolTable__Module module;

      i0 = (OOC_INT64)currentTry;
      _try = (OOC_IR__TryStatm)i0;
      i1 = (OOC_INT64)exception;
      i2 = i0!=(OOC_INT64)0;
      if (!i2) goto l22;
l3_loop:
      i2 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 142132))+24);
      i = 0;
      i2 = OOC_ARRAY_LENGTH((_check_pointer(i2, 142142)), 0);
      i3 = 0<i2;
      if (!i3) goto l17;
      i3=0;
l6_loop:
      i4 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 142183))+24);
      i4 = _check_pointer(i4, 142193);
      i5 = OOC_ARRAY_LENGTH(i4, 0);
      i4 = (OOC_INT64)*(OOC_INT64*)(i4+(_check_index(i3, i5, OOC_UINT32, 142193))*8);
      i4 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i4, 142196))+16);
      i4 = OOC_SymbolTable_TypeRules__IsExtensionOf((OOC_SymbolTable__Type)i4, (OOC_SymbolTable__Type)i1);
      if (!i4) goto l9;
      i4 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 142273))+24);
      i4 = _check_pointer(i4, 142283);
      i5 = OOC_ARRAY_LENGTH(i4, 0);
      i4 = (OOC_INT64)*(OOC_INT64*)(i4+(_check_index(i3, i5, OOC_UINT32, 142283))*8);
      *(OOC_UINT8*)((_check_pointer(i4, 142286))+32) = 1u;
l9:
      i4 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 142395))+24);
      i4 = _check_pointer(i4, 142405);
      i5 = OOC_ARRAY_LENGTH(i4, 0);
      i4 = (OOC_INT64)*(OOC_INT64*)(i4+(_check_index(i3, i5, OOC_UINT32, 142405))*8);
      i4 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i4, 142408))+16);
      i4 = OOC_SymbolTable_TypeRules__IsExtensionOf((OOC_SymbolTable__Type)i1, (OOC_SymbolTable__Type)i4);
      if (!i4) goto l12;
      i4 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 142444))+24);
      i4 = _check_pointer(i4, 142454);
      i5 = OOC_ARRAY_LENGTH(i4, 0);
      i4 = (OOC_INT64)*(OOC_INT64*)(i4+(_check_index(i3, i5, OOC_UINT32, 142454))*8);
      *(OOC_UINT8*)((_check_pointer(i4, 142457))+32) = 1u;
      return;
l12:
      i3 = i3+1;
      i = i3;
      i4 = i3<i2;
      if (i4) goto l6_loop;
l17:
      i0 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 142543))+32);
      _try = (OOC_IR__TryStatm)i0;
      i2 = i0!=(OOC_INT64)0;
      if (i2) goto l3_loop;
l22:
      i0 = (OOC_INT64)procDecl;
      i2 = i0!=(OOC_INT64)0;
      if (!i2) goto l36;
      i0 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 142633))+112);
      i0 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 142644))+112);
      raises = (OOC_SymbolTable__ExceptionNameArray)i0;
      i2 = OOC_ARRAY_LENGTH((_check_pointer(i0, 142685)), 0);
      i = 0;
      i3 = 0<i2;
      if (!i3) goto l36;
      i3=0;
l27_loop:
      i4 = _check_pointer(i0, 142740);
      i5 = OOC_ARRAY_LENGTH(i4, 0);
      i4 = (OOC_INT64)*(OOC_INT64*)(i4+(_check_index(i3, i5, OOC_UINT32, 142740))*8);
      i4 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i4, 142743))+40);
      i4 = OOC_SymbolTable_TypeRules__IsExtensionOf((OOC_SymbolTable__Type)i1, (OOC_SymbolTable__Type)i4);
      if (!i4) goto l30;
      return;
l30:
      i3 = i3+1;
      i = i3;
      i4 = i3<i2;
      if (i4) goto l27_loop;
l36:
      i0 = (OOC_INT64)procDecl;
      i2 = i0==(OOC_INT64)0;
      if (i2) goto l39;
      i0 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 142868))+8);
      i0 = i0==(OOC_INT64)0;
      
      goto l41;
l39:
      i0=1u;
l41:
      if (i0) goto l43;
      i0 = (OOC_INT64)b;
      i2 = (OOC_INT64)sym;
      OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 142979)))), OOC_IR__BuilderDesc_ErrSym)),OOC_IR__BuilderDesc_ErrSym)((OOC_IR__Builder)i0, 63, (OOC_Scanner_BasicList__Symbol)i2);
      goto l44;
l43:
      i0 = (OOC_INT64)b;
      i2 = (OOC_INT64)sym;
      OOC_IR__BuilderDesc_WarnSym((OOC_IR__Builder)i0, 64, (OOC_Scanner_BasicList__Symbol)i2);
l44:
      i0 = (OOC_INT64)OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i1, 143049)))), OOC_SymbolTable__ItemDesc_Module)),OOC_SymbolTable__ItemDesc_Module)((OOC_SymbolTable__Item)i1);
      module = (OOC_SymbolTable__Module)i0;
      i2 = (OOC_INT64)b;
      i3 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i2, 143067))+72);
      i4 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 143127))+40);
      i4 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i4, 143132))+16);
      i0 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 143127))+40);
      i0 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 143132))+16);
      i0 = OOC_ARRAY_LENGTH((_check_pointer(i0, 143136)), 0);
      i2 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i2, 143067))+72);
      i0 = (OOC_INT64)Msg__GetStringPtr((void*)(_check_pointer(i4, 143136)), i0);
      OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i3, 143077)))), Msg__MsgDesc_SetStringAttrib)),Msg__MsgDesc_SetStringAttrib)((Msg__Msg)i2, "module", 7, (Msg__StringPtr)i0);
      i0 = (OOC_INT64)b;
      i2 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 143148))+72);
      i3 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i1, 143209))+48);
      i3 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i3, 143220))+40);
      i3 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i3, 143225))+16);
      i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i1, 143209))+48);
      i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i1, 143220))+40);
      i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i1, 143225))+16);
      i0 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 143148))+72);
      i1 = OOC_ARRAY_LENGTH((_check_pointer(i1, 143229)), 0);
      i1 = (OOC_INT64)Msg__GetStringPtr((void*)(_check_pointer(i3, 143229)), i1);
      OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i2, 143158)))), Msg__MsgDesc_SetStringAttrib)),Msg__MsgDesc_SetStringAttrib)((Msg__Msg)i0, "name", 5, (Msg__StringPtr)i1);
      return;
      ;
    }

    
    void OOC_IR__BuilderDesc_CheckExit_CheckStatmSeq(OOC_IR__StatementSeq statmSeq) {
      register OOC_INT64 i0,i1,i2,i3;
      OOC_INT32 i;
      auto void OOC_IR__BuilderDesc_CheckExit_CheckStatmSeq_CheckStatm(OOC_IR__Statement statm);
      auto void OOC_IR__BuilderDesc_CheckExit_CheckStatmSeq_CheckExpr(OOC_IR__Expression expr);
      auto void OOC_IR__BuilderDesc_CheckExit_CheckStatmSeq_CheckStatm(OOC_IR__Statement statm);
        
        void OOC_IR__BuilderDesc_CheckExit_CheckStatmSeq_CheckExpr(OOC_IR__Expression expr) {
          register OOC_INT64 i0,i1,i2,i3,i4;
          OOC_INT32 i;

          i0 = (OOC_INT64)expr;
          i1 = i0==(OOC_INT64)0;
          if (!i1) goto l3;
          return;
l3:
          i1 = OOC_TYPE_TEST(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 143566)))), &_td_OOC_IR__ConstDesc);
          if (i1) goto l156;
          i1 = OOC_TYPE_TEST(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 143615)))), &_td_OOC_IR__AbsDesc);
          if (i1) goto l154;
          i1 = OOC_TYPE_TEST(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 143673)))), &_td_OOC_IR__AdrDesc);
          if (i1) goto l152;
          i1 = OOC_TYPE_TEST(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 143730)))), &_td_OOC_IR__AshDesc);
          if (i1) goto l150;
          i1 = OOC_TYPE_TEST(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 143817)))), &_td_OOC_IR__BinaryArithDesc);
          if (i1) goto l148;
          i1 = OOC_TYPE_TEST(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 143913)))), &_td_OOC_IR__BooleanOpDesc);
          if (i1) goto l146;
          i1 = OOC_TYPE_TEST(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 144007)))), &_td_OOC_IR__CapDesc);
          if (i1) goto l144;
          i1 = OOC_TYPE_TEST(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 144065)))), &_td_OOC_IR__CompareDesc);
          if (i1) goto l142;
          i1 = OOC_TYPE_TEST(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 144157)))), &_td_OOC_IR__ConcatDesc);
          if (i1) goto l132;
          i1 = OOC_TYPE_TEST(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 144286)))), &_td_OOC_IR__ConstructorDesc);
          if (i1) goto l130;
          i1 = OOC_TYPE_TEST(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 144382)))), &_td_OOC_IR__CurrentExceptionDesc);
          if (i1) goto l128;
          i1 = OOC_TYPE_TEST(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 144452)))), &_td_OOC_IR__ChangeElementDesc);
          if (i1) goto l126;
          i1 = OOC_TYPE_TEST(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 144551)))), &_td_OOC_IR__DerefDesc);
          if (i1) goto l124;
          i1 = OOC_TYPE_TEST(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 144611)))), &_td_OOC_IR__EntierDesc);
          if (i1) goto l122;
          i1 = OOC_TYPE_TEST(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 144672)))), &_td_OOC_IR__IndexDesc);
          if (i1) goto l120;
          i1 = OOC_TYPE_TEST(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 144763)))), &_td_OOC_IR__LenDesc);
          if (i1) goto l118;
          i1 = OOC_TYPE_TEST(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 144819)))), &_td_OOC_IR__NegateDesc);
          if (i1) goto l116;
          i1 = OOC_TYPE_TEST(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 144880)))), &_td_OOC_IR__NewBlockDesc);
          if (i1) goto l114;
          i1 = OOC_TYPE_TEST(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 144940)))), &_td_OOC_IR__NewObjectDesc);
          if (i1) goto l101;
          i1 = OOC_TYPE_TEST(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 145129)))), &_td_OOC_IR__NotDesc);
          if (i1) goto l99;
          i1 = OOC_TYPE_TEST(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 145187)))), &_td_OOC_IR__OddDesc);
          if (i1) goto l97;
          i1 = OOC_TYPE_TEST(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 145245)))), &_td_OOC_IR__ReferenceDesc);
          if (i1) goto l156;
          i1 = OOC_TYPE_TEST(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 145298)))), &_td_OOC_IR__SelectFieldDesc);
          if (i1) goto l94;
          i1 = OOC_TYPE_TEST(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 145363)))), &_td_OOC_IR__SelectProcDesc);
          if (i1) goto l92;
          i1 = OOC_TYPE_TEST(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 145429)))), &_td_OOC_IR__SetMemberDesc);
          if (i1) goto l90;
          i1 = OOC_TYPE_TEST(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 145524)))), &_td_OOC_IR__SetOpDesc);
          if (i1) goto l88;
          i1 = OOC_TYPE_TEST(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 145614)))), &_td_OOC_IR__SetRangeDesc);
          if (i1) goto l86;
          i1 = OOC_TYPE_TEST(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 145704)))), &_td_OOC_IR__ShiftDesc);
          if (i1) goto l84;
          i1 = OOC_TYPE_TEST(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 145792)))), &_td_OOC_IR__TypeCastDesc);
          if (i1) goto l82;
          i1 = OOC_TYPE_TEST(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 145852)))), &_td_OOC_IR__TypeConvDesc);
          if (i1) goto l80;
          i1 = OOC_TYPE_TEST(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 145912)))), &_td_OOC_IR__TypeTagDesc);
          if (i1) goto l78;
          i1 = OOC_TYPE_TEST(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 145973)))), &_td_OOC_IR__TypeTestDesc);
          if (i1) goto l76;
          i1 = OOC_TYPE_TEST(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 146033)))), &_td_OOC_IR__TypeGuardDesc);
          if (i1) goto l74;
          i1 = OOC_TYPE_TEST(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 146105)))), &_td_OOC_IR__CallDesc);
          if (i1) goto l72;
          _failed_with(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 146099)))), 146099);
          goto l156;
l72:
          OOC_IR__BuilderDesc_CheckExit_CheckStatmSeq_CheckStatm((OOC_IR__Statement)i0);
          goto l156;
l74:
          i0 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 146072))+16);
          OOC_IR__BuilderDesc_CheckExit_CheckStatmSeq_CheckExpr((OOC_IR__Expression)i0);
          goto l156;
l76:
          i0 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 146011))+16);
          OOC_IR__BuilderDesc_CheckExit_CheckStatmSeq_CheckExpr((OOC_IR__Expression)i0);
          goto l156;
l78:
          i0 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 145949))+16);
          OOC_IR__BuilderDesc_CheckExit_CheckStatmSeq_CheckExpr((OOC_IR__Expression)i0);
          goto l156;
l80:
          i0 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 145890))+16);
          OOC_IR__BuilderDesc_CheckExit_CheckStatmSeq_CheckExpr((OOC_IR__Expression)i0);
          goto l156;
l82:
          i0 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 145830))+16);
          OOC_IR__BuilderDesc_CheckExit_CheckStatmSeq_CheckExpr((OOC_IR__Expression)i0);
          goto l156;
l84:
          i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 145739))+16);
          OOC_IR__BuilderDesc_CheckExit_CheckStatmSeq_CheckExpr((OOC_IR__Expression)i1);
          i0 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 145772))+24);
          OOC_IR__BuilderDesc_CheckExit_CheckStatmSeq_CheckExpr((OOC_IR__Expression)i0);
          goto l156;
l86:
          i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 145652))+16);
          OOC_IR__BuilderDesc_CheckExit_CheckStatmSeq_CheckExpr((OOC_IR__Expression)i1);
          i0 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 145684))+24);
          OOC_IR__BuilderDesc_CheckExit_CheckStatmSeq_CheckExpr((OOC_IR__Expression)i0);
          goto l156;
l88:
          i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 145559))+24);
          OOC_IR__BuilderDesc_CheckExit_CheckStatmSeq_CheckExpr((OOC_IR__Expression)i1);
          i0 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 145591))+32);
          OOC_IR__BuilderDesc_CheckExit_CheckStatmSeq_CheckExpr((OOC_IR__Expression)i0);
          goto l156;
l90:
          i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 145468))+16);
          OOC_IR__BuilderDesc_CheckExit_CheckStatmSeq_CheckExpr((OOC_IR__Expression)i1);
          i0 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 145503))+24);
          OOC_IR__BuilderDesc_CheckExit_CheckStatmSeq_CheckExpr((OOC_IR__Expression)i0);
          goto l156;
l92:
          i0 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 145403))+16);
          OOC_IR__BuilderDesc_CheckExit_CheckStatmSeq_CheckExpr((OOC_IR__Expression)i0);
          goto l156;
l94:
          i0 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 145339))+16);
          OOC_IR__BuilderDesc_CheckExit_CheckStatmSeq_CheckExpr((OOC_IR__Expression)i0);
          goto l156;
l97:
          i0 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 145220))+16);
          OOC_IR__BuilderDesc_CheckExit_CheckStatmSeq_CheckExpr((OOC_IR__Expression)i0);
          goto l156;
l99:
          i0 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 145162))+16);
          OOC_IR__BuilderDesc_CheckExit_CheckStatmSeq_CheckExpr((OOC_IR__Expression)i0);
          goto l156;
l101:
          i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 144973))+16);
          i1 = i1!=(OOC_INT64)0;
          if (!i1) goto l156;
          i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 145027))+16);
          i = 0;
          i1 = OOC_ARRAY_LENGTH((_check_pointer(i1, 145034)), 0);
          i2 = 0<i1;
          if (!i2) goto l156;
          i2=0;
l106_loop:
          i3 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 145070))+16);
          i3 = _check_pointer(i3, 145077);
          i4 = OOC_ARRAY_LENGTH(i3, 0);
          i3 = (OOC_INT64)*(OOC_INT64*)(i3+(_check_index(i2, i4, OOC_UINT32, 145077))*8);
          OOC_IR__BuilderDesc_CheckExit_CheckStatmSeq_CheckExpr((OOC_IR__Expression)i3);
          i2 = i2+1;
          i = i2;
          i3 = i2<i1;
          if (i3) goto l106_loop;
          goto l156;
l114:
          i0 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 144918))+16);
          OOC_IR__BuilderDesc_CheckExit_CheckStatmSeq_CheckExpr((OOC_IR__Expression)i0);
          goto l156;
l116:
          i0 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 144855))+16);
          OOC_IR__BuilderDesc_CheckExit_CheckStatmSeq_CheckExpr((OOC_IR__Expression)i0);
          goto l156;
l118:
          i0 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 144796))+24);
          OOC_IR__BuilderDesc_CheckExit_CheckStatmSeq_CheckExpr((OOC_IR__Expression)i0);
          goto l156;
l120:
          i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 144707))+16);
          OOC_IR__BuilderDesc_CheckExit_CheckStatmSeq_CheckExpr((OOC_IR__Expression)i1);
          i0 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 144740))+24);
          OOC_IR__BuilderDesc_CheckExit_CheckStatmSeq_CheckExpr((OOC_IR__Expression)i0);
          goto l156;
l122:
          i0 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 144647))+16);
          OOC_IR__BuilderDesc_CheckExit_CheckStatmSeq_CheckExpr((OOC_IR__Expression)i0);
          goto l156;
l124:
          i0 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 144586))+16);
          OOC_IR__BuilderDesc_CheckExit_CheckStatmSeq_CheckExpr((OOC_IR__Expression)i0);
          goto l156;
l126:
          i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 144495))+24);
          OOC_IR__BuilderDesc_CheckExit_CheckStatmSeq_CheckExpr((OOC_IR__Expression)i1);
          i0 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 144526))+32);
          OOC_IR__BuilderDesc_CheckExit_CheckStatmSeq_CheckExpr((OOC_IR__Expression)i0);
          goto l156;
l128:
          i1 = (OOC_INT64)currentTry;
          *(OOC_INT64*)((_check_pointer(i0, 144418))+16) = i1;
          goto l156;
l130:
          i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 144327))+16);
          OOC_IR__BuilderDesc_CheckExit_CheckStatmSeq_CheckExpr((OOC_IR__Expression)i1);
          i0 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 144360))+24);
          OOC_IR__BuilderDesc_CheckExit_CheckStatmSeq_CheckExpr((OOC_IR__Expression)i0);
          goto l156;
l132:
          i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 144201))+16);
          i = 0;
          i1 = OOC_ARRAY_LENGTH((_check_pointer(i1, 144209)), 0);
          i2 = 0<i1;
          if (!i2) goto l156;
          i2=0;
l135_loop:
          i3 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 144243))+16);
          i3 = _check_pointer(i3, 144251);
          i4 = OOC_ARRAY_LENGTH(i3, 0);
          i3 = (OOC_INT64)*(OOC_INT64*)(i3+(_check_index(i2, i4, OOC_UINT32, 144251))*8);
          OOC_IR__BuilderDesc_CheckExit_CheckStatmSeq_CheckExpr((OOC_IR__Expression)i3);
          i2 = i2+1;
          i = i2;
          i3 = i2<i1;
          if (i3) goto l135_loop;
          goto l156;
l142:
          i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 144102))+24);
          OOC_IR__BuilderDesc_CheckExit_CheckStatmSeq_CheckExpr((OOC_IR__Expression)i1);
          i0 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 144134))+32);
          OOC_IR__BuilderDesc_CheckExit_CheckStatmSeq_CheckExpr((OOC_IR__Expression)i0);
          goto l156;
l144:
          i0 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 144040))+16);
          OOC_IR__BuilderDesc_CheckExit_CheckStatmSeq_CheckExpr((OOC_IR__Expression)i0);
          goto l156;
l146:
          i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 143952))+24);
          OOC_IR__BuilderDesc_CheckExit_CheckStatmSeq_CheckExpr((OOC_IR__Expression)i1);
          i0 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 143984))+32);
          OOC_IR__BuilderDesc_CheckExit_CheckStatmSeq_CheckExpr((OOC_IR__Expression)i0);
          goto l156;
l148:
          i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 143858))+24);
          OOC_IR__BuilderDesc_CheckExit_CheckStatmSeq_CheckExpr((OOC_IR__Expression)i1);
          i0 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 143890))+32);
          OOC_IR__BuilderDesc_CheckExit_CheckStatmSeq_CheckExpr((OOC_IR__Expression)i0);
          goto l156;
l150:
          i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 143763))+16);
          OOC_IR__BuilderDesc_CheckExit_CheckStatmSeq_CheckExpr((OOC_IR__Expression)i1);
          i0 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 143796))+24);
          OOC_IR__BuilderDesc_CheckExit_CheckStatmSeq_CheckExpr((OOC_IR__Expression)i0);
          goto l156;
l152:
          i0 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 143706))+16);
          OOC_IR__BuilderDesc_CheckExit_CheckStatmSeq_CheckExpr((OOC_IR__Expression)i0);
          goto l156;
l154:
          i0 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 143648))+16);
          OOC_IR__BuilderDesc_CheckExit_CheckStatmSeq_CheckExpr((OOC_IR__Expression)i0);
l156:
          return;
          ;
        }

        
        void OOC_IR__BuilderDesc_CheckExit_CheckStatmSeq_CheckStatm(OOC_IR__Statement statm) {
          register OOC_INT64 i0,i1,i2,i3,i4,i5;
          OOC_INT32 i;
          OOC_SymbolTable__Type type;
          OOC_SymbolTable__FormalPars fpars;
          OOC_IR__LoopStatm oldLoop;
          OOC_INT32 oldEnclTryLastLoop;
          auto OOC_CHAR8 OOC_IR__BuilderDesc_CheckExit_CheckStatmSeq_CheckStatm_IsInitSuper(OOC_IR__Expression design);
            
            OOC_CHAR8 OOC_IR__BuilderDesc_CheckExit_CheckStatmSeq_CheckStatm_IsInitSuper(OOC_IR__Expression design) {
              register OOC_INT64 i0,i1,i2;

              i0 = (OOC_INT64)design;
              i1 = OOC_TYPE_TEST(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 146471)))), &_td_OOC_IR__SelectProcDesc);
              if (i1) goto l3;
              return 0u;
              goto l16;
l3:
              i1 = *(OOC_UINT8*)((_check_pointer(i0, 146509))+57);
              i1 = !i1;
              if (i1) goto l6;
              i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 146548))+16);
              i1 = !(OOC_TYPE_TEST(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i1, 146558)))), &_td_OOC_IR__VarDesc));
              
              goto l8;
l6:
              i1=1u;
l8:
              if (i1) goto l10;
              i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 146591))+16);
              i2 = (OOC_INT64)procDecl;
              i2 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i2, 146621))+112);
              i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer((_type_guard(i1, ((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i1, 146601)))), &_td_OOC_IR__VarDesc, 146601)), 146605))+16);
              i2 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i2, 146632))+72);
              i1 = i1!=i2;
              
              goto l12;
l10:
              i1=1u;
l12:
              if (i1) goto l14;
              i0 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 146784))+40);
              i0 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 146791))+40);
              i0 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 146796))+16);
              return ((
              _cmp8((const void*)(_check_pointer(i0, 146800)),(const void*)"INIT"))==0);
              goto l16;
l14:
              return 0u;
l16:
              _failed_function(146394); return 0;
              ;
            }


          i0 = (OOC_INT64)statm;
          i1 = OOC_TYPE_TEST(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 146959)))), &_td_OOC_IR__AssertDesc);
          if (i1) goto l135;
          i1 = OOC_TYPE_TEST(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 147024)))), &_td_OOC_IR__AssignmentDesc);
          if (i1) goto l133;
          i1 = OOC_TYPE_TEST(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 147166)))), &_td_OOC_IR__CallDesc);
          if (i1) goto l108;
          i1 = OOC_TYPE_TEST(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 147677)))), &_td_OOC_IR__CopyDesc);
          if (i1) goto l106;
          i1 = OOC_TYPE_TEST(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 147770)))), &_td_OOC_IR__CopyParameterDesc);
          if (i1) goto l136;
          i1 = OOC_TYPE_TEST(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 147828)))), &_td_OOC_IR__CopyStringDesc);
          if (i1) goto l103;
          i1 = OOC_TYPE_TEST(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 147927)))), &_td_OOC_IR__ExitDesc);
          if (i1) goto l97;
          i1 = OOC_TYPE_TEST(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 148188)))), &_td_OOC_IR__ForStatmDesc);
          if (i1) goto l95;
          i1 = OOC_TYPE_TEST(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 148387)))), &_td_OOC_IR__IfStatmDesc);
          if (i1) goto l93;
          i1 = OOC_TYPE_TEST(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 148536)))), &_td_OOC_IR__CaseDesc);
          if (i1) goto l91;
          i1 = OOC_TYPE_TEST(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 148604)))), &_td_OOC_IR__CaseStatmDesc);
          if (i1) goto l81;
          i1 = OOC_TYPE_TEST(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 148836)))), &_td_OOC_IR__LoopStatmDesc);
          if (i1) goto l79;
          i1 = OOC_TYPE_TEST(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 149161)))), &_td_OOC_IR__MoveBlockDesc);
          if (i1) goto l77;
          i1 = OOC_TYPE_TEST(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 149259)))), &_td_OOC_IR__RaiseDesc);
          if (i1) goto l75;
          i1 = OOC_TYPE_TEST(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 149382)))), &_td_OOC_IR__RepeatStatmDesc);
          if (i1) goto l73;
          i1 = OOC_TYPE_TEST(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 149495)))), &_td_OOC_IR__ReturnDesc);
          if (i1) goto l56;
          i1 = OOC_TYPE_TEST(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 150247)))), &_td_OOC_IR__TryStatmDesc);
          if (i1) goto l43;
          i1 = OOC_TYPE_TEST(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 150790)))), &_td_OOC_IR__WhileStatmDesc);
          if (i1) goto l41;
          i1 = OOC_TYPE_TEST(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 150894)))), &_td_OOC_IR__WithStatmDesc);
          if (i1) goto l39;
          _failed_with(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 150887)))), 150887);
          goto l136;
l39:
          i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 150934))+16);
          OOC_IR__BuilderDesc_CheckExit_CheckStatmSeq_CheckExpr((OOC_IR__Expression)i1);
          i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 150973))+24);
          OOC_IR__BuilderDesc_CheckExit_CheckStatmSeq((OOC_IR__StatementSeq)i1);
          i0 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 151016))+32);
          OOC_IR__BuilderDesc_CheckExit_CheckStatmSeq((OOC_IR__StatementSeq)i0);
          goto l136;
l41:
          i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 150831))+16);
          OOC_IR__BuilderDesc_CheckExit_CheckStatmSeq_CheckExpr((OOC_IR__Expression)i1);
          i0 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 150870))+24);
          OOC_IR__BuilderDesc_CheckExit_CheckStatmSeq((OOC_IR__StatementSeq)i0);
          goto l136;
l43:
          i1 = (OOC_INT64)procDecl;
          i2 = enclosingTry;
          *(OOC_UINT8*)((_check_pointer(i1, 150279))+136) = 1u;
          enclosingTry = (i2+1);
          i1 = (OOC_INT64)currentTry;
          *(OOC_INT64*)((_check_pointer(i0, 150345))+32) = i1;
          currentTry = (OOC_IR__TryStatm)i0;
          i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 150434))+16);
          OOC_IR__BuilderDesc_CheckExit_CheckStatmSeq((OOC_IR__StatementSeq)i1);
          i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 150475))+32);
          i2 = enclosingTry;
          currentTry = (OOC_IR__TryStatm)i1;
          enclosingTry = (i2-1);
          i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 150552))+24);
          i1 = OOC_ARRAY_LENGTH((_check_pointer(i1, 150562)), 0);
          i = 0;
          i2 = 0<i1;
          if (!i2) goto l136;
          i2=0;
l46_loop:
          i3 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 150591))+24);
          i3 = _check_pointer(i3, 150601);
          i4 = OOC_ARRAY_LENGTH(i3, 0);
          i3 = (OOC_INT64)*(OOC_INT64*)(i3+(_check_index(i2, i4, OOC_UINT32, 150601))*8);
          i3 = *(OOC_UINT8*)((_check_pointer(i3, 150604))+32);
          i3 = !i3;
          if (!i3) goto l49;
          i3 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 150667))+24);
          i3 = _check_pointer(i3, 150677);
          i4 = OOC_ARRAY_LENGTH(i3, 0);
          i3 = (OOC_INT64)*(OOC_INT64*)(i3+(_check_index(i2, i4, OOC_UINT32, 150677))*8);
          i3 = (OOC_INT64)*(OOC_INT64*)(_check_pointer(i3, 150680));
          i4 = (OOC_INT64)b;
          OOC_IR__BuilderDesc_WarnSym((OOC_IR__Builder)i4, 66, (OOC_Scanner_BasicList__Symbol)i3);
l49:
          i3 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 150735))+24);
          i3 = _check_pointer(i3, 150745);
          i4 = OOC_ARRAY_LENGTH(i3, 0);
          i3 = (OOC_INT64)*(OOC_INT64*)(i3+(_check_index(i2, i4, OOC_UINT32, 150745))*8);
          i3 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i3, 150748))+24);
          OOC_IR__BuilderDesc_CheckExit_CheckStatmSeq((OOC_IR__StatementSeq)i3);
          i2 = i2+1;
          i = i2;
          i3 = i2<i1;
          if (i3) goto l46_loop;
          goto l136;
l56:
          i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 149532))+16);
          OOC_IR__BuilderDesc_CheckExit_CheckStatmSeq_CheckExpr((OOC_IR__Expression)i1);
          i1 = (OOC_INT64)procDecl;
          i2 = i1==0;
          if (i2) goto l59;
          i2 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i1, 149597))+112);
          i2 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i2, 149609))+80);
          i2 = i2==0;
          
          goto l61;
l59:
          i2=1u;
l61:
          if (i2) goto l67;
          i2 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 149886))+16);
          i2 = i2==0;
          if (i2) goto l65;
          i2 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 150031))+16);
          i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i1, 150120))+112);
          i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i1, 150131))+80);
          i2 = (OOC_INT64)*(OOC_INT64*)(_check_pointer(i2, 150039));
          i3 = (OOC_INT64)b;
          i1 = (OOC_INT64)OOC_SymbolTable__Expand((OOC_SymbolTable__Type)i1);
          OOC_IR__MakeAssignmentCompatible((OOC_IR__Builder)i3, (OOC_Scanner_BasicList__Symbol)i2, (void*)((_check_pointer(i0, 150051))+16), (OOC_SymbolTable__Type)i1);
          goto l71;
l65:
          i1 = (OOC_INT64)b;
          i2 = (OOC_INT64)*(OOC_INT64*)(_check_pointer(i0, 149958));
          OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i1, 149922)))), OOC_IR__BuilderDesc_ErrSym)),OOC_IR__BuilderDesc_ErrSym)((OOC_IR__Builder)i1, 33, (OOC_Scanner_BasicList__Symbol)i2);
          goto l71;
l67:
          i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 149711))+16);
          i1 = i1!=0;
          if (!i1) goto l71;
          i1 = (OOC_INT64)b;
          i2 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 149780))+16);
          i2 = (OOC_INT64)*(OOC_INT64*)(_check_pointer(i2, 149788));
          OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i1, 149747)))), OOC_IR__BuilderDesc_ErrSym)),OOC_IR__BuilderDesc_ErrSym)((OOC_IR__Builder)i1, 32, (OOC_Scanner_BasicList__Symbol)i2);
l71:
          i1 = enclosingTry;
          *(OOC_INT32*)((_check_pointer(i0, 150193))+24) = i1;
          goto l136;
l73:
          i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 149429))+16);
          OOC_IR__BuilderDesc_CheckExit_CheckStatmSeq((OOC_IR__StatementSeq)i1);
          i0 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 149463))+24);
          OOC_IR__BuilderDesc_CheckExit_CheckStatmSeq_CheckExpr((OOC_IR__Expression)i0);
          goto l136;
l75:
          i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 149295))+16);
          OOC_IR__BuilderDesc_CheckExit_CheckStatmSeq_CheckExpr((OOC_IR__Expression)i1);
          i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 149338))+16);
          i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i1, 149348))+8);
          i0 = (OOC_INT64)*(OOC_INT64*)(_check_pointer(i0, 149360));
          OOC_IR__BuilderDesc_CheckExit_CheckException((OOC_SymbolTable__Type)i1, (OOC_Scanner_BasicList__Symbol)i0);
          goto l136;
l77:
          i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 149201))+16);
          OOC_IR__BuilderDesc_CheckExit_CheckStatmSeq_CheckExpr((OOC_IR__Expression)i1);
          i0 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 149236))+24);
          OOC_IR__BuilderDesc_CheckExit_CheckStatmSeq_CheckExpr((OOC_IR__Expression)i0);
          goto l136;
l79:
          i1 = (OOC_INT64)currentLoop;
          oldLoop = (OOC_IR__LoopStatm)i1;
          currentLoop = (OOC_IR__LoopStatm)i0;
          i2 = enclosingTryLastLoop;
          oldEnclTryLastLoop = i2;
          i3 = enclosingTry;
          enclosingTryLastLoop = i3;
          i0 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 149049))+16);
          OOC_IR__BuilderDesc_CheckExit_CheckStatmSeq((OOC_IR__StatementSeq)i0);
          enclosingTryLastLoop = i2;
          currentLoop = (OOC_IR__LoopStatm)i1;
          goto l136;
l81:
          i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 148644))+16);
          OOC_IR__BuilderDesc_CheckExit_CheckStatmSeq_CheckExpr((OOC_IR__Expression)i1);
          i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 148688))+24);
          i1 = OOC_ARRAY_LENGTH((_check_pointer(i1, 148698)), 0);
          i = 0;
          i2 = 0<i1;
          if (!i2) goto l89;
          i2=0;
l84_loop:
          i3 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 148738))+24);
          i3 = _check_pointer(i3, 148748);
          i4 = OOC_ARRAY_LENGTH(i3, 0);
          i3 = (OOC_INT64)*(OOC_INT64*)(i3+(_check_index(i2, i4, OOC_UINT32, 148748))*8);
          i3 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i3, 148751))+24);
          OOC_IR__BuilderDesc_CheckExit_CheckStatmSeq((OOC_IR__StatementSeq)i3);
          i2 = i2+1;
          i = i2;
          i3 = i2<i1;
          if (i3) goto l84_loop;
l89:
          i0 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 148809))+32);
          OOC_IR__BuilderDesc_CheckExit_CheckStatmSeq((OOC_IR__StatementSeq)i0);
          goto l136;
l91:
          i0 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 148576))+24);
          OOC_IR__BuilderDesc_CheckExit_CheckStatmSeq((OOC_IR__StatementSeq)i0);
          goto l136;
l93:
          i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 148425))+16);
          OOC_IR__BuilderDesc_CheckExit_CheckStatmSeq_CheckExpr((OOC_IR__Expression)i1);
          i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 148464))+24);
          OOC_IR__BuilderDesc_CheckExit_CheckStatmSeq((OOC_IR__StatementSeq)i1);
          i0 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 148507))+32);
          OOC_IR__BuilderDesc_CheckExit_CheckStatmSeq((OOC_IR__StatementSeq)i0);
          goto l136;
l95:
          i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 148227))+16);
          OOC_IR__BuilderDesc_CheckExit_CheckStatmSeq_CheckExpr((OOC_IR__Expression)i1);
          i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 148259))+24);
          OOC_IR__BuilderDesc_CheckExit_CheckStatmSeq_CheckExpr((OOC_IR__Expression)i1);
          i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 148293))+32);
          OOC_IR__BuilderDesc_CheckExit_CheckStatmSeq_CheckExpr((OOC_IR__Expression)i1);
          i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 148325))+40);
          OOC_IR__BuilderDesc_CheckExit_CheckStatmSeq_CheckExpr((OOC_IR__Expression)i1);
          i0 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 148363))+48);
          OOC_IR__BuilderDesc_CheckExit_CheckStatmSeq((OOC_IR__StatementSeq)i0);
          goto l136;
l97:
          i1 = (OOC_INT64)currentLoop;
          i2 = i1==0;
          if (i2) goto l100;
          *(OOC_INT64*)((_check_pointer(i0, 148060))+16) = i1;
          goto l101;
l100:
          i1 = (OOC_INT64)b;
          i2 = (OOC_INT64)*(OOC_INT64*)(_check_pointer(i0, 148020));
          OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i1, 147988)))), OOC_IR__BuilderDesc_ErrSym)),OOC_IR__BuilderDesc_ErrSym)((OOC_IR__Builder)i1, 25, (OOC_Scanner_BasicList__Symbol)i2);
l101:
          i1 = enclosingTry;
          i2 = enclosingTryLastLoop;
          *(OOC_INT32*)((_check_pointer(i0, 148113))+24) = (i1-i2);
          goto l136;
l103:
          i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 147869))+16);
          OOC_IR__BuilderDesc_CheckExit_CheckStatmSeq_CheckExpr((OOC_IR__Expression)i1);
          i0 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 147904))+24);
          OOC_IR__BuilderDesc_CheckExit_CheckStatmSeq_CheckExpr((OOC_IR__Expression)i0);
          goto l136;
l106:
          i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 147712))+16);
          OOC_IR__BuilderDesc_CheckExit_CheckStatmSeq_CheckExpr((OOC_IR__Expression)i1);
          i0 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 147747))+24);
          OOC_IR__BuilderDesc_CheckExit_CheckStatmSeq_CheckExpr((OOC_IR__Expression)i0);
          goto l136;
l108:
          i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 147201))+16);
          OOC_IR__BuilderDesc_CheckExit_CheckStatmSeq_CheckExpr((OOC_IR__Expression)i1);
          i1 = initWithoutSuper;
          if (i1) goto l111;
          i1=0u;
          goto l113;
l111:
          i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 147261))+16);
          i1 = OOC_IR__BuilderDesc_CheckExit_CheckStatmSeq_CheckStatm_IsInitSuper((OOC_IR__Expression)i1);
          
l113:
          if (!i1) goto l115;
          initWithoutSuper = 0u;
l115:
          i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 147373))+24);
          i1 = OOC_ARRAY_LENGTH((_check_pointer(i1, 147383)), 0);
          i = 0;
          i2 = 0<i1;
          if (!i2) goto l123;
          i2=0;
l118_loop:
          i3 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 147418))+24);
          i3 = _check_pointer(i3, 147428);
          i4 = OOC_ARRAY_LENGTH(i3, 0);
          i3 = (OOC_INT64)*(OOC_INT64*)(i3+(_check_index(i2, i4, OOC_UINT32, 147428))*8);
          OOC_IR__BuilderDesc_CheckExit_CheckStatmSeq_CheckExpr((OOC_IR__Expression)i3);
          i2 = i2+1;
          i = i2;
          i3 = i2<i1;
          if (i3) goto l118_loop;
l123:
          i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 147473))+16);
          i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i1, 147480))+8);
          i2 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 147473))+16);
          i2 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i2, 147480))+8);
          i1 = (OOC_INT64)OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i1, 147485)))), OOC_SymbolTable__TypeDesc_Deparam)),OOC_SymbolTable__TypeDesc_Deparam)((OOC_SymbolTable__Type)i2);
          type = (OOC_SymbolTable__Type)i1;
          i1 = _type_guard(i1, ((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i1, 147525)))), &_td_OOC_SymbolTable__FormalParsDesc, 147525);
          fpars = (OOC_SymbolTable__FormalPars)i1;
          i2 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i1, 147571))+112);
          i2 = OOC_ARRAY_LENGTH((_check_pointer(i2, 147578)), 0);
          i = 0;
          i3 = 0<i2;
          if (!i3) goto l136;
          i3=0;
l126_loop:
          i4 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i1, 147618))+112);
          i4 = _check_pointer(i4, 147625);
          i5 = OOC_ARRAY_LENGTH(i4, 0);
          i4 = (OOC_INT64)*(OOC_INT64*)(i4+(_check_index(i3, i5, OOC_UINT32, 147625))*8);
          i4 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i4, 147628))+40);
          i5 = (OOC_INT64)*(OOC_INT64*)(_check_pointer(i0, 147640));
          OOC_IR__BuilderDesc_CheckExit_CheckException((OOC_SymbolTable__Type)i4, (OOC_Scanner_BasicList__Symbol)i5);
          i3 = i3+1;
          i = i3;
          i4 = i3<i2;
          if (i4) goto l126_loop;
          goto l136;
l133:
          i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 147106))+16);
          OOC_IR__BuilderDesc_CheckExit_CheckStatmSeq_CheckExpr((OOC_IR__Expression)i1);
          i0 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 147143))+24);
          OOC_IR__BuilderDesc_CheckExit_CheckStatmSeq_CheckExpr((OOC_IR__Expression)i0);
          goto l136;
l135:
          i0 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 146996))+16);
          OOC_IR__BuilderDesc_CheckExit_CheckStatmSeq_CheckExpr((OOC_IR__Expression)i0);
l136:
          return;
          ;
        }


      i0 = (OOC_INT64)statmSeq;
      i1 = i0!=(OOC_INT64)0;
      if (!i1) goto l11;
      i = 0;
      i0 = OOC_ARRAY_LENGTH((_check_pointer(i0, 151146)), 0);
      i1 = 0<i0;
      if (!i1) goto l11;
      i1=0;
l5_loop:
      i2 = (OOC_INT64)statmSeq;
      i2 = _check_pointer(i2, 151184);
      i3 = OOC_ARRAY_LENGTH(i2, 0);
      i1 = (OOC_INT64)*(OOC_INT64*)(i2+(_check_index(i1, i3, OOC_UINT32, 151184))*8);
      OOC_IR__BuilderDesc_CheckExit_CheckStatmSeq_CheckStatm((OOC_IR__Statement)i1);
      i1 = i;
      i1 = i1+1;
      i = i1;
      i2 = i1<i0;
      if (i2) goto l5_loop;
l11:
      return;
      ;
    }


  currentLoop = (OOC_IR__LoopStatm)(OOC_INT64)0;
  currentTry = (OOC_IR__TryStatm)(OOC_INT64)0;
  enclosingTry = 0;
  enclosingTryLastLoop = 0;
  initWithoutSuper = 0u;
  i0 = (OOC_INT64)procDecl;
  i1 = (OOC_INT64)OOC_SymbolTable__ProcDeclDesc_Class((OOC_SymbolTable__ProcDecl)i0);
  procClass = (OOC_SymbolTable__Record)i1;
  i2 = i1!=(OOC_INT64)0;
  if (i2) goto l3;
  i2=0u;
  goto l5;
l3:
  i2 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i1, 151467))+72);
  i2 = i2!=(OOC_INT64)0;
  
l5:
  if (i2) goto l7;
  i2=0u;
  goto l9;
l7:
  i2 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i1, 151504))+72);
  i2 = OOC_TYPE_TEST(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i2, 151514)))), &_td_OOC_SymbolTable__RecordDesc);
  
l9:
  if (i2) goto l11;
  i2=0u;
  goto l13;
l11:
  i2 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 151548))+40);
  i2 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i2, 151553))+16);
  i2 = (
  _cmp8((const void*)(_check_pointer(i2, 151557)),(const void*)"INIT"))==0;
  
l13:
  if (i2) goto l15;
  i0=0u;
  goto l16;
l15:
  i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i1, 151623))+72);
  i0 = *(OOC_INT32*)((_check_pointer(i0, 151599))+96);
  i1 = *(OOC_INT32*)((_check_pointer((_type_guard(i1, ((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i1, 151637)))), &_td_OOC_SymbolTable__RecordDesc, 151637)), 151644))+88);
  i0 = i0<i1;
  
l16:
  initWithoutSuper = i0;
  i0 = (OOC_INT64)statmSeq;
  OOC_IR__BuilderDesc_CheckExit_CheckStatmSeq((OOC_IR__StatementSeq)i0);
  i0 = initWithoutSuper;
  if (!i0) goto l19;
  i0 = (OOC_INT64)procDecl;
  i0 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 151771))+40);
  i1 = (OOC_INT64)b;
  OOC_IR__BuilderDesc_WarnName((OOC_IR__Builder)i1, 74, (OOC_SymbolTable__Name)i0);
l19:
  return;
  ;
}

void OOC_IR__InitProcedure(OOC_IR__Procedure p, OOC_Scanner_BasicList__Symbol sym, OOC_SymbolTable__ProcDecl decl, OOC_IR__StatementSeq statmSeq, OOC_Scanner_BasicList__Symbol endOfProc, OOC_CHAR8 checkFunctionResult) {
  register OOC_INT64 i0,i1;

  i0 = (OOC_INT64)p;
  i1 = (OOC_INT64)sym;
  OOC_IR__InitNode((OOC_IR__Node)i0, (OOC_Scanner_BasicList__Symbol)i1);
  i1 = (OOC_INT64)decl;
  *(OOC_INT64*)((_check_pointer(i0, 152068))+8) = i1;
  i1 = (OOC_INT64)statmSeq;
  *(OOC_INT64*)((_check_pointer(i0, 152089))+16) = i1;
  i1 = (OOC_INT64)endOfProc;
  *(OOC_INT64*)((_check_pointer(i0, 152118))+32) = i1;
  i1 = checkFunctionResult;
  *(OOC_UINT8*)((_check_pointer(i0, 152149))+24) = i1;
  return;
  ;
}

OOC_IR__Procedure OOC_IR__BuilderDesc_NewProcedure(OOC_IR__Builder b, OOC_Scanner_BasicList__Symbol sym, OOC_SymbolTable__ProcDecl decl, OOC_IR__StatementSeq statmSeq, OOC_Scanner_BasicList__Symbol endOfProc, OOC_CHAR8 hasBegin) {
  register OOC_INT64 i0,i1,i2,i3,i4,i5;
  OOC_IR__Procedure p;
  auto OOC_IR__StatementSeq OOC_IR__BuilderDesc_NewProcedure_AddSetupCode(OOC_Scanner_BasicList__Symbol sym, OOC_SymbolTable__ProcDecl decl, OOC_IR__StatementSeq statmSeq);
    
    OOC_IR__StatementSeq OOC_IR__BuilderDesc_NewProcedure_AddSetupCode(OOC_Scanner_BasicList__Symbol sym, OOC_SymbolTable__ProcDecl decl, OOC_IR__StatementSeq statmSeq) {
      register OOC_INT64 i0,i1,i2;
      ADT_ArrayList__ArrayList newStatm;
      OOC_SymbolTable__VarDeclArray formalPars;
      OOC_INT32 fparIndex;
      OOC_SymbolTable__VarDecl fpar;
      auto void OOC_IR__BuilderDesc_NewProcedure_AddSetupCode_AddStatm(OOC_IR__Statement statm);
      auto OOC_IR__StatementSeq OOC_IR__BuilderDesc_NewProcedure_AddSetupCode_Prepend(ADT_ArrayList__ArrayList prefix, OOC_IR__StatementSeq statmSeq);
        
        void OOC_IR__BuilderDesc_NewProcedure_AddSetupCode_AddStatm(OOC_IR__Statement statm) {
          register OOC_INT64 i0,i1;

          i0 = (OOC_INT64)newStatm;
          i1 = i0==(OOC_INT64)0;
          if (!i1) goto l4;
          i0 = (OOC_INT64)ADT_ArrayList__New(4);
          newStatm = (ADT_ArrayList__ArrayList)i0;
          
l4:
          i1 = (OOC_INT64)statm;
          OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 153211)))), ADT_ArrayList__ArrayListDesc_Append)),ADT_ArrayList__ArrayListDesc_Append)((ADT_ArrayList__ArrayList)i0, (Object__Object)i1);
          return;
          ;
        }

        
        OOC_IR__StatementSeq OOC_IR__BuilderDesc_NewProcedure_AddSetupCode_Prepend(ADT_ArrayList__ArrayList prefix, OOC_IR__StatementSeq statmSeq) {
          register OOC_INT64 i0,i1,i2,i3,i4,i5,i6,i7,i8,i9;
          OOC_IR__StatementSeq _new;
          OOC_INT32 i;

          i0 = (OOC_INT64)prefix;
          i1 = (OOC_INT64)statmSeq;
          i2 = *(OOC_INT32*)((_check_pointer(i0, 153437))+8);
          i3 = OOC_ARRAY_LENGTH((_check_pointer(i1, 153457)), 0);
          i2 = (OOC_INT64)RT0__NewObject(_td_OOC_IR__StatementSeq.baseTypes[0], (i2+i3));
          _new = (OOC_IR__StatementSeq)i2;
          i = 0;
          i3 = *(OOC_INT32*)((_check_pointer(i0, 153490))+8);
          i4 = 0<i3;
          if (!i4) goto l8;
          i4=0;
l3_loop:
          i5 = _check_pointer(i2, 153515);
          i6 = OOC_ARRAY_LENGTH(i5, 0);
          i7 = (OOC_INT64)*(OOC_INT64*)(_check_pointer(i0, 153528));
          i7 = _check_pointer(i7, 153535);
          i8 = OOC_ARRAY_LENGTH(i7, 0);
          i7 = (OOC_INT64)*(OOC_INT64*)(i7+(_check_index(i4, i8, OOC_UINT32, 153535))*8);
          *(OOC_INT64*)(i5+(_check_index(i4, i6, OOC_UINT32, 153515))*8) = (_type_guard(i7, ((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i7, 153539)))), &_td_OOC_IR__StatementDesc, 153539));
          i4 = i4+1;
          i = i4;
          i5 = i4<i3;
          if (i5) goto l3_loop;
l8:
          i = 0;
          i3 = OOC_ARRAY_LENGTH((_check_pointer(i1, 153598)), 0);
          i4 = 0<i3;
          if (!i4) goto l16;
          i4=0;
l11_loop:
          i5 = _check_pointer(i2, 153619);
          i6 = *(OOC_INT32*)((_check_pointer(i0, 153628))+8);
          i7 = OOC_ARRAY_LENGTH(i5, 0);
          i8 = _check_pointer(i1, 153647);
          i9 = OOC_ARRAY_LENGTH(i8, 0);
          i8 = (OOC_INT64)*(OOC_INT64*)(i8+(_check_index(i4, i9, OOC_UINT32, 153647))*8);
          *(OOC_INT64*)(i5+(_check_index((i4+i6), i7, OOC_UINT32, 153619))*8) = i8;
          i4 = i4+1;
          i = i4;
          i5 = i4<i3;
          if (i5) goto l11_loop;
l16:
          return (OOC_IR__StatementSeq)i2;
          ;
        }


      newStatm = (ADT_ArrayList__ArrayList)(OOC_INT64)0;
      i0 = (OOC_INT64)decl;
      i0 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 153764))+112);
      i0 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 153776))+96);
      formalPars = (OOC_SymbolTable__VarDeclArray)i0;
      fparIndex = 0;
      i0 = OOC_ARRAY_LENGTH((_check_pointer(i0, 153877)), 0);
      i0 = 0!=i0;
      if (!i0) goto l11;
      i0=0;
l3_loop:
      i1 = (OOC_INT64)formalPars;
      i1 = _check_pointer(i1, 153910);
      i2 = OOC_ARRAY_LENGTH(i1, 0);
      i0 = (OOC_INT64)*(OOC_INT64*)(i1+(_check_index(i0, i2, OOC_UINT32, 153910))*8);
      fpar = (OOC_SymbolTable__VarDecl)i0;
      i1 = *(OOC_UINT8*)((_check_pointer(i0, 153938))+109);
      if (!i1) goto l6;
      i1 = (OOC_INT64)b;
      i0 = (OOC_INT64)OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i1, 154005)))), OOC_IR__BuilderDesc_NewVar)),OOC_IR__BuilderDesc_NewVar)((OOC_IR__Builder)i1, (OOC_Scanner_BasicList__Symbol)(OOC_INT64)0, (OOC_SymbolTable__VarDecl)i0);
      i2 = (OOC_INT64)sym;
      i0 = (OOC_INT64)OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i1, 153979)))), OOC_IR__BuilderDesc_NewCopyParameter)),OOC_IR__BuilderDesc_NewCopyParameter)((OOC_IR__Builder)i1, (OOC_Scanner_BasicList__Symbol)i2, (OOC_IR__Var)i0);
      OOC_IR__BuilderDesc_NewProcedure_AddSetupCode_AddStatm((OOC_IR__Statement)i0);
l6:
      i0 = fparIndex;
      i0 = i0+1;
      fparIndex = i0;
      i1 = (OOC_INT64)formalPars;
      i1 = OOC_ARRAY_LENGTH((_check_pointer(i1, 153877)), 0);
      i1 = i0!=i1;
      if (i1) goto l3_loop;
l11:
      i0 = (OOC_INT64)newStatm;
      i1 = i0==(OOC_INT64)0;
      if (i1) goto l14;
      i1 = (OOC_INT64)statmSeq;
      i0 = (OOC_INT64)OOC_IR__BuilderDesc_NewProcedure_AddSetupCode_Prepend((ADT_ArrayList__ArrayList)i0, (OOC_IR__StatementSeq)i1);
      return (OOC_IR__StatementSeq)i0;
      goto l15;
l14:
      i0 = (OOC_INT64)statmSeq;
      return (OOC_IR__StatementSeq)i0;
l15:
      _failed_function(152555); return 0;
      ;
    }


  i0 = (OOC_INT64)decl;
  i1 = (OOC_INT64)b;
  i2 = (OOC_INT64)sym;
  i3 = *(OOC_UINT8*)((_check_pointer(i0, 154248))+90);
  if (i3) goto l3;
  i3=0u;
  goto l5;
l3:
  i3 = hasBegin;
  
l5:
  if (!i3) goto l7;
  OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i1, 154283)))), OOC_IR__BuilderDesc_ErrSym)),OOC_IR__BuilderDesc_ErrSym)((OOC_IR__Builder)i1, 57, (OOC_Scanner_BasicList__Symbol)i2);
l7:
  i3 = (OOC_INT64)statmSeq;
  OOC_IR__BuilderDesc_CheckExit((OOC_IR__Builder)i1, (OOC_SymbolTable__ProcDecl)i0, (OOC_IR__StatementSeq)i3);
  p = (OOC_IR__Procedure)((OOC_INT64)RT0__NewObject(_td_OOC_IR__Procedure.baseTypes[0]));
  i0 = (OOC_INT64)OOC_IR__BuilderDesc_NewProcedure_AddSetupCode((OOC_Scanner_BasicList__Symbol)i2, (OOC_SymbolTable__ProcDecl)i0, (OOC_IR__StatementSeq)i3);
  statmSeq = (OOC_IR__StatementSeq)i0;
  i1 = (OOC_INT64)decl;
  i2 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i1, 154593))+40);
  i2 = *(OOC_INT32*)(_check_pointer(i2, 154599));
  i3 = (OOC_INT64)OOC_Config_StdPragmas__functionResultCheck;
  i4 = (OOC_INT64)b;
  i2 = OOC_IR__GetPragmaValue((OOC_IR__Builder)i4, (Config_Section_Options__Option)i3, i2);
  i3 = (OOC_INT64)endOfProc;
  i4 = (OOC_INT64)p;
  i5 = (OOC_INT64)sym;
  OOC_IR__InitProcedure((OOC_IR__Procedure)i4, (OOC_Scanner_BasicList__Symbol)i5, (OOC_SymbolTable__ProcDecl)i1, (OOC_IR__StatementSeq)i0, (OOC_Scanner_BasicList__Symbol)i3, i2);
  return (OOC_IR__Procedure)i4;
  ;
}

void OOC_IR__VisitorDesc_VisitProcedure(OOC_IR__Visitor v, OOC_IR__Procedure procedure) {

  return;
  ;
}

void OOC_IR__ProcedureDesc_Accept(OOC_IR__Procedure p, OOC_IR__Visitor v) {
  register OOC_INT64 i0,i1;

  i0 = (OOC_INT64)v;
  i1 = (OOC_INT64)p;
  OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 154799)))), OOC_IR__VisitorDesc_VisitProcedure)),OOC_IR__VisitorDesc_VisitProcedure)((OOC_IR__Visitor)i0, (OOC_IR__Procedure)i1);
  return;
  ;
}

void OOC_IR__InitModule(OOC_IR__Module m, OOC_Scanner_BasicList__Symbol sym, OOC_Scanner_InputBuffer__CharArray name, OOC_IR__ProcedureList procList, OOC_IR__Procedure moduleBody) {
  register OOC_INT64 i0,i1;

  i0 = (OOC_INT64)m;
  i1 = (OOC_INT64)sym;
  OOC_IR__InitNode((OOC_IR__Node)i0, (OOC_Scanner_BasicList__Symbol)i1);
  i1 = (OOC_INT64)name;
  *(OOC_INT64*)((_check_pointer(i0, 155099))+8) = i1;
  i1 = (OOC_INT64)procList;
  *(OOC_INT64*)((_check_pointer(i0, 155120))+16) = i1;
  i1 = (OOC_INT64)moduleBody;
  *(OOC_INT64*)((_check_pointer(i0, 155149))+24) = i1;
  return;
  ;
}

OOC_IR__Module OOC_IR__BuilderDesc_NewModule(OOC_IR__Builder b, OOC_Scanner_BasicList__Symbol sym, OOC_Scanner_InputBuffer__CharArray name, OOC_SymbolTable__Module decl, OOC_IR__ProcedureList procList, OOC_IR__StatementSeq statmSeq, OOC_Scanner_BasicList__Symbol endOfModule) {
  register OOC_INT64 i0,i1,i2,i3,i4,i5,i6;
  OOC_IR__Module m;
  auto void OOC_IR__BuilderDesc_NewModule_UnusedDeclarations(OOC_SymbolTable__Item item);
    
    void OOC_IR__BuilderDesc_NewModule_UnusedDeclarations(OOC_SymbolTable__Item item) {
      register OOC_INT64 i0,i1,i2;
      OOC_SymbolTable__Item nested;

      i0 = (OOC_INT64)item;
      i1 = OOC_TYPE_TEST(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 155590)))), &_td_OOC_SymbolTable__DeclarationDesc);
      if (!i1) goto l38;
      i1 = *(OOC_INT32*)((_check_pointer(i0, 155837))+80);
      i1 = i1==0;
      if (i1) goto l5;
      i1=0u;
      goto l7;
l5:
      i1 = *(OOC_INT8*)((_check_pointer(i0, 155872))+52);
      i1 = i1==0;
      
l7:
      if (i1) goto l9;
      i1=0u;
      goto l15;
l9:
      i1 = !(OOC_TYPE_TEST(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 155928)))), &_td_OOC_SymbolTable__VarDeclDesc));
      if (i1) goto l12;
      i1 = *(OOC_UINT8*)((_check_pointer((_type_guard(i0, ((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 155957)))), &_td_OOC_SymbolTable__VarDeclDesc, 155957)), 155965))+104);
      i1 = !i1;
      
      goto l15;
l12:
      i1=1u;
l15:
      if (i1) goto l17;
      i1=0u;
      goto l23;
l17:
      i1 = !(OOC_TYPE_TEST(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 156000)))), &_td_OOC_SymbolTable__TypeDeclDesc));
      if (i1) goto l20;
      i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 156026))+8);
      i1 = !(OOC_TYPE_TEST(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i1, 156034)))), &_td_OOC_SymbolTable__FormalParsDesc));
      
      goto l23;
l20:
      i1=1u;
l23:
      if (i1) goto l25;
      i1=0u;
      goto l35;
l25:
      i1 = !(OOC_TYPE_TEST(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 156075)))), &_td_OOC_SymbolTable__ProcDeclDesc));
      if (i1) goto l32;
      i1 = *(OOC_UINT8*)((_check_pointer((_type_guard(i0, ((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 156118)))), &_td_OOC_SymbolTable__ProcDeclDesc, 156118)), 156127))+89);
      if (i1) goto l30;
      i1 = OOC_SymbolTable__ProcDeclDesc_IsTypeBound((OOC_SymbolTable__ProcDecl)(_type_guard(i0, ((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 156168)))), &_td_OOC_SymbolTable__ProcDeclDesc, 156168)));
      
      goto l31;
l30:
      i1=1u;
l31:
      i1 = !i1;
      
      goto l35;
l32:
      i1=1u;
l35:
      if (!i1) goto l38;
      i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 156243))+40);
      i2 = (OOC_INT64)b;
      OOC_IR__BuilderDesc_WarnName((OOC_IR__Builder)i2, 53, (OOC_SymbolTable__Name)i1);
l38:
      i0 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 156327))+16);
      nested = (OOC_SymbolTable__Item)i0;
      i1 = i0!=(OOC_INT64)0;
      if (!i1) goto l46;
l41_loop:
      OOC_IR__BuilderDesc_NewModule_UnusedDeclarations((OOC_SymbolTable__Item)i0);
      i0 = (OOC_INT64)*(OOC_INT64*)(_check_pointer(i0, 156431));
      nested = (OOC_SymbolTable__Item)i0;
      i1 = i0!=(OOC_INT64)0;
      if (i1) goto l41_loop;
l46:
      return;
      ;
    }


  i0 = (OOC_INT64)RT0__NewObject(_td_OOC_IR__Module.baseTypes[0]);
  m = (OOC_IR__Module)i0;
  i1 = (OOC_INT64)b;
  i2 = (OOC_INT64)decl;
  i3 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i2, 156587))+152);
  i4 = (OOC_INT64)sym;
  i5 = (OOC_INT64)statmSeq;
  i6 = (OOC_INT64)endOfModule;
  i3 = (OOC_INT64)OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i1, 156562)))), OOC_IR__BuilderDesc_NewProcedure)),OOC_IR__BuilderDesc_NewProcedure)((OOC_IR__Builder)i1, (OOC_Scanner_BasicList__Symbol)i4, (OOC_SymbolTable__ProcDecl)i3, (OOC_IR__StatementSeq)i5, (OOC_Scanner_BasicList__Symbol)i6, 1u);
  i5 = (OOC_INT64)name;
  i6 = (OOC_INT64)procList;
  OOC_IR__InitModule((OOC_IR__Module)i0, (OOC_Scanner_BasicList__Symbol)i4, (OOC_Scanner_InputBuffer__CharArray)i5, (OOC_IR__ProcedureList)i6, (OOC_IR__Procedure)i3);
  i0 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i1, 156671))+16);
  i0 = OOC_Error__ListDesc_NoErrors((OOC_Error__List)i0);
  if (!i0) goto l4;
  OOC_IR__BuilderDesc_NewModule_UnusedDeclarations((OOC_SymbolTable__Item)i2);
l4:
  i0 = (OOC_INT64)m;
  return (OOC_IR__Module)i0;
  ;
}

void OOC_IR__VisitorDesc_VisitModule(OOC_IR__Visitor v, OOC_IR__Module module) {

  return;
  ;
}

void OOC_IR__ModuleDesc_Accept(OOC_IR__Module m, OOC_IR__Visitor v) {
  register OOC_INT64 i0,i1;

  i0 = (OOC_INT64)v;
  i1 = (OOC_INT64)m;
  OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 156910)))), OOC_IR__VisitorDesc_VisitModule)),OOC_IR__VisitorDesc_VisitModule)((OOC_IR__Visitor)i0, (OOC_IR__Module)i1);
  return;
  ;
}

void OOC_IR__ModuleDesc_Destroy(OOC_IR__Module m) {
  register OOC_INT64 i0,i1,i2,i3,i4;
  OOC_INT32 i;
  auto void OOC_IR__ModuleDesc_Destroy_E(OOC_IR__Expression *n);
  auto void OOC_IR__ModuleDesc_Destroy_S(OOC_IR__Statement *n);
  auto void OOC_IR__ModuleDesc_Destroy_EList(OOC_IR__ExpressionList *e);
  auto void OOC_IR__ModuleDesc_Destroy_E(OOC_IR__Expression *n);
  auto void OOC_IR__ModuleDesc_Destroy_SSeq(OOC_IR__StatementSeq *n);
  auto void OOC_IR__ModuleDesc_Destroy_S(OOC_IR__Statement *n);
    
    void OOC_IR__ModuleDesc_Destroy_EList(OOC_IR__ExpressionList *e) {
      register OOC_INT64 i0,i1,i2,i3,i4;
      OOC_INT32 i;

      i0 = (OOC_INT64)*e;
      i1 = i0!=(OOC_INT64)0;
      if (!i1) goto l11;
      i = 0;
      i1 = OOC_ARRAY_LENGTH((_check_pointer(i0, 157328)), 0);
      i2 = 0<i1;
      if (!i2) goto l10;
      i2=0;
l5_loop:
      i3 = _check_pointer(i0, 157349);
      i4 = OOC_ARRAY_LENGTH(i3, 0);
      OOC_IR__ModuleDesc_Destroy_E((void*)(i3+(_check_index(i2, i4, OOC_UINT32, 157349))*8));
      i2 = i2+1;
      i = i2;
      i3 = i2<i1;
      if (i3) goto l5_loop;
l10:
      *e = (OOC_IR__ExpressionList)(OOC_INT64)0;
l11:
      return;
      ;
    }

    
    void OOC_IR__ModuleDesc_Destroy_E(OOC_IR__Expression *n) {
      register OOC_INT64 i0,i1;
      OOC_IR__Expression expr;

      i0 = (OOC_INT64)*n;
      i1 = i0!=(OOC_INT64)0;
      if (!i1) goto l142;
      *(OOC_INT64*)((_check_pointer(i0, 157525))+8) = (OOC_INT64)0;
      i0 = (OOC_INT64)*n;
      i1 = OOC_TYPE_TEST(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 157553)))), &_td_OOC_IR__ConstDesc);
      if (i1) goto l140;
      i1 = OOC_TYPE_TEST(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 157601)))), &_td_OOC_IR__OperatorDesc);
      if (i1) goto l15;
      i1 = OOC_TYPE_TEST(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 159994)))), &_td_OOC_IR__ReferenceDesc);
      if (i1) goto l13;
      i1 = OOC_TYPE_TEST(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 160045)))), &_td_OOC_IR__StatementDesc);
      if (i1) goto l11;
      Log__Type("--- expression type", 20, (void*)i0);
      _assert(0u, 127, 160180);
      goto l141;
l11:
      OOC_IR__ModuleDesc_Destroy_S((void*)(OOC_INT64)n);
      goto l141;
l13:
      *(OOC_INT64*)((_check_pointer(i0, 160020))+16) = (OOC_INT64)0;
      goto l141;
l15:
      i1 = OOC_TYPE_TEST(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 157631)))), &_td_OOC_IR__AbsDesc);
      if (i1) goto l137;
      i1 = OOC_TYPE_TEST(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 157679)))), &_td_OOC_IR__AdrDesc);
      if (i1) goto l135;
      i1 = OOC_TYPE_TEST(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 157726)))), &_td_OOC_IR__AshDesc);
      if (i1) goto l133;
      i1 = OOC_TYPE_TEST(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 157794)))), &_td_OOC_IR__BinaryArithDesc);
      if (i1) goto l131;
      i1 = OOC_TYPE_TEST(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 157871)))), &_td_OOC_IR__BooleanOpDesc);
      if (i1) goto l129;
      i1 = OOC_TYPE_TEST(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 157946)))), &_td_OOC_IR__CapDesc);
      if (i1) goto l127;
      i1 = OOC_TYPE_TEST(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 157994)))), &_td_OOC_IR__CompareDesc);
      if (i1) goto l125;
      i1 = OOC_TYPE_TEST(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 158067)))), &_td_OOC_IR__ConcatDesc);
      if (i1) goto l123;
      i1 = OOC_TYPE_TEST(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 158122)))), &_td_OOC_IR__ConstructorDesc);
      if (i1) goto l121;
      i1 = OOC_TYPE_TEST(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 158306)))), &_td_OOC_IR__CurrentExceptionDesc);
      if (i1) goto l141;
      i1 = OOC_TYPE_TEST(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 158367)))), &_td_OOC_IR__ChangeElementDesc);
      if (i1) goto l118;
      i1 = OOC_TYPE_TEST(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 158447)))), &_td_OOC_IR__DerefDesc);
      if (i1) goto l116;
      i1 = OOC_TYPE_TEST(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 158497)))), &_td_OOC_IR__EntierDesc);
      if (i1) goto l114;
      i1 = OOC_TYPE_TEST(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 158548)))), &_td_OOC_IR__IndexDesc);
      if (i1) goto l112;
      i1 = OOC_TYPE_TEST(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 158620)))), &_td_OOC_IR__LenDesc);
      if (i1) goto l110;
      i1 = OOC_TYPE_TEST(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 158722)))), &_td_OOC_IR__NegateDesc);
      if (i1) goto l108;
      i1 = OOC_TYPE_TEST(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 158773)))), &_td_OOC_IR__NewBlockDesc);
      if (i1) goto l106;
      i1 = OOC_TYPE_TEST(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 158823)))), &_td_OOC_IR__NewObjectDesc);
      if (i1) goto l104;
      i1 = OOC_TYPE_TEST(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 158880)))), &_td_OOC_IR__NotDesc);
      if (i1) goto l102;
      i1 = OOC_TYPE_TEST(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 158928)))), &_td_OOC_IR__OddDesc);
      if (i1) goto l100;
      i1 = OOC_TYPE_TEST(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 158976)))), &_td_OOC_IR__SelectFieldDesc);
      if (i1) goto l98;
      i1 = OOC_TYPE_TEST(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 159090)))), &_td_OOC_IR__SelectProcDesc);
      if (i1) goto l96;
      i1 = OOC_TYPE_TEST(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 159207)))), &_td_OOC_IR__SetMemberDesc);
      if (i1) goto l94;
      i1 = OOC_TYPE_TEST(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 159283)))), &_td_OOC_IR__SetOpDesc);
      if (i1) goto l92;
      i1 = OOC_TYPE_TEST(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 159354)))), &_td_OOC_IR__SetRangeDesc);
      if (i1) goto l90;
      i1 = OOC_TYPE_TEST(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 159425)))), &_td_OOC_IR__ShiftDesc);
      if (i1) goto l88;
      i1 = OOC_TYPE_TEST(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 159494)))), &_td_OOC_IR__TypeCastDesc);
      if (i1) goto l86;
      i1 = OOC_TYPE_TEST(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 159544)))), &_td_OOC_IR__TypeConvDesc);
      if (i1) goto l84;
      i1 = OOC_TYPE_TEST(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 159594)))), &_td_OOC_IR__TypeTagDesc);
      if (i1) goto l82;
      i1 = OOC_TYPE_TEST(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 159645)))), &_td_OOC_IR__TypeTestDesc);
      if (i1) goto l80;
      i1 = OOC_TYPE_TEST(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 159789)))), &_td_OOC_IR__TypeGuardDesc);
      if (i1) goto l78;
      Log__Type("--- operator type", 18, (void*)i0);
      _assert(0u, 127, 159953);
      goto l141;
l78:
      i0 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 159825))+16);
      expr = (OOC_IR__Expression)i0;
      OOC_IR__ModuleDesc_Destroy_E((void*)(OOC_INT64)&expr);
      i0 = (OOC_INT64)*n;
      *(OOC_INT64*)((_check_pointer(i0, 159866))+16) = (OOC_INT64)0;
      goto l141;
l80:
      OOC_IR__ModuleDesc_Destroy_E((void*)((_check_pointer(i0, 159674))+16));
      i0 = (OOC_INT64)*n;
      *(OOC_INT64*)((_check_pointer(i0, 159695))+24) = (OOC_INT64)0;
      i0 = (OOC_INT64)*n;
      OOC_IR__ModuleDesc_Destroy_E((void*)((_check_pointer(i0, 159733))+40));
      i0 = (OOC_INT64)*n;
      *(OOC_INT64*)((_check_pointer(i0, 159758))+48) = (OOC_INT64)0;
      goto l141;
l82:
      OOC_IR__ModuleDesc_Destroy_E((void*)((_check_pointer(i0, 159622))+16));
      goto l141;
l84:
      OOC_IR__ModuleDesc_Destroy_E((void*)((_check_pointer(i0, 159573))+16));
      goto l141;
l86:
      OOC_IR__ModuleDesc_Destroy_E((void*)((_check_pointer(i0, 159523))+16));
      goto l141;
l88:
      OOC_IR__ModuleDesc_Destroy_E((void*)((_check_pointer(i0, 159451))+16));
      i0 = (OOC_INT64)*n;
      OOC_IR__ModuleDesc_Destroy_E((void*)((_check_pointer(i0, 159475))+24));
      goto l141;
l90:
      OOC_IR__ModuleDesc_Destroy_E((void*)((_check_pointer(i0, 159383))+16));
      i0 = (OOC_INT64)*n;
      OOC_IR__ModuleDesc_Destroy_E((void*)((_check_pointer(i0, 159406))+24));
      goto l141;
l92:
      OOC_IR__ModuleDesc_Destroy_E((void*)((_check_pointer(i0, 159309))+24));
      i0 = (OOC_INT64)*n;
      OOC_IR__ModuleDesc_Destroy_E((void*)((_check_pointer(i0, 159332))+32));
      goto l141;
l94:
      OOC_IR__ModuleDesc_Destroy_E((void*)((_check_pointer(i0, 159237))+16));
      i0 = (OOC_INT64)*n;
      OOC_IR__ModuleDesc_Destroy_E((void*)((_check_pointer(i0, 159263))+24));
      goto l141;
l96:
      OOC_IR__ModuleDesc_Destroy_E((void*)((_check_pointer(i0, 159121))+16));
      i0 = (OOC_INT64)*n;
      *(OOC_INT64*)((_check_pointer(i0, 159146))+40) = (OOC_INT64)0;
      i0 = (OOC_INT64)*n;
      *(OOC_INT64*)((_check_pointer(i0, 159175))+48) = (OOC_INT64)0;
      goto l141;
l98:
      OOC_IR__ModuleDesc_Destroy_E((void*)((_check_pointer(i0, 159008))+16));
      i0 = (OOC_INT64)*n;
      *(OOC_INT64*)((_check_pointer(i0, 159031))+24) = (OOC_INT64)0;
      i0 = (OOC_INT64)*n;
      *(OOC_INT64*)((_check_pointer(i0, 159059))+32) = (OOC_INT64)0;
      goto l141;
l100:
      OOC_IR__ModuleDesc_Destroy_E((void*)((_check_pointer(i0, 158952))+16));
      goto l141;
l102:
      OOC_IR__ModuleDesc_Destroy_E((void*)((_check_pointer(i0, 158904))+16));
      goto l141;
l104:
      OOC_IR__ModuleDesc_Destroy_EList((void*)((_check_pointer(i0, 158857))+16));
      goto l141;
l106:
      OOC_IR__ModuleDesc_Destroy_E((void*)((_check_pointer(i0, 158802))+16));
      goto l141;
l108:
      OOC_IR__ModuleDesc_Destroy_E((void*)((_check_pointer(i0, 158749))+16));
      goto l141;
l110:
      OOC_IR__ModuleDesc_Destroy_E((void*)((_check_pointer(i0, 158644))+24));
      i0 = (OOC_INT64)*n;
      OOC_IR__ModuleDesc_Destroy_E((void*)((_check_pointer(i0, 158668))+40));
      i0 = (OOC_INT64)*n;
      *(OOC_INT32*)((_check_pointer(i0, 158698))+32) = 0;
      goto l141;
l112:
      OOC_IR__ModuleDesc_Destroy_E((void*)((_check_pointer(i0, 158574))+16));
      i0 = (OOC_INT64)*n;
      OOC_IR__ModuleDesc_Destroy_E((void*)((_check_pointer(i0, 158598))+24));
      goto l141;
l114:
      OOC_IR__ModuleDesc_Destroy_E((void*)((_check_pointer(i0, 158524))+16));
      goto l141;
l116:
      OOC_IR__ModuleDesc_Destroy_E((void*)((_check_pointer(i0, 158473))+16));
      goto l141;
l118:
      OOC_IR__ModuleDesc_Destroy_E((void*)((_check_pointer(i0, 158401))+24));
      i0 = (OOC_INT64)*n;
      OOC_IR__ModuleDesc_Destroy_E((void*)((_check_pointer(i0, 158423))+32));
      goto l141;
l121:
      i0 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 158160))+16);
      expr = (OOC_IR__Expression)i0;
      OOC_IR__ModuleDesc_Destroy_E((void*)(OOC_INT64)&expr);
      i0 = (OOC_INT64)*n;
      *(OOC_INT64*)((_check_pointer(i0, 158202))+16) = (OOC_INT64)0;
      i0 = (OOC_INT64)*n;
      i0 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 158238))+24);
      expr = (OOC_IR__Expression)i0;
      OOC_IR__ModuleDesc_Destroy_E((void*)(OOC_INT64)&expr);
      i0 = (OOC_INT64)*n;
      *(OOC_INT64*)((_check_pointer(i0, 158279))+24) = (OOC_INT64)0;
      goto l141;
l123:
      OOC_IR__ModuleDesc_Destroy_EList((void*)((_check_pointer(i0, 158098))+16));
      goto l141;
l125:
      OOC_IR__ModuleDesc_Destroy_E((void*)((_check_pointer(i0, 158022))+24));
      i0 = (OOC_INT64)*n;
      OOC_IR__ModuleDesc_Destroy_E((void*)((_check_pointer(i0, 158045))+32));
      goto l141;
l127:
      OOC_IR__ModuleDesc_Destroy_E((void*)((_check_pointer(i0, 157970))+16));
      goto l141;
l129:
      OOC_IR__ModuleDesc_Destroy_E((void*)((_check_pointer(i0, 157901))+24));
      i0 = (OOC_INT64)*n;
      OOC_IR__ModuleDesc_Destroy_E((void*)((_check_pointer(i0, 157924))+32));
      goto l141;
l131:
      OOC_IR__ModuleDesc_Destroy_E((void*)((_check_pointer(i0, 157826))+24));
      i0 = (OOC_INT64)*n;
      OOC_IR__ModuleDesc_Destroy_E((void*)((_check_pointer(i0, 157849))+32));
      goto l141;
l133:
      OOC_IR__ModuleDesc_Destroy_E((void*)((_check_pointer(i0, 157750))+16));
      i0 = (OOC_INT64)*n;
      OOC_IR__ModuleDesc_Destroy_E((void*)((_check_pointer(i0, 157774))+24));
      goto l141;
l135:
      OOC_IR__ModuleDesc_Destroy_E((void*)((_check_pointer(i0, 157703))+16));
      goto l141;
l137:
      OOC_IR__ModuleDesc_Destroy_E((void*)((_check_pointer(i0, 157655))+16));
      goto l141;
l140:
      *(OOC_INT64*)((_check_pointer(i0, 157575))+16) = (OOC_INT64)0;
l141:
      *n = (OOC_IR__Expression)(OOC_INT64)0;
l142:
      return;
      ;
    }

    
    void OOC_IR__ModuleDesc_Destroy_SSeq(OOC_IR__StatementSeq *n) {
      register OOC_INT64 i0,i1,i2,i3,i4;
      OOC_INT32 i;

      i0 = (OOC_INT64)*n;
      i1 = i0!=(OOC_INT64)0;
      if (!i1) goto l11;
      i = 0;
      i1 = OOC_ARRAY_LENGTH((_check_pointer(i0, 160376)), 0);
      i2 = 0<i1;
      if (!i2) goto l11;
      i2=0;
l5_loop:
      i3 = _check_pointer(i0, 160397);
      i4 = OOC_ARRAY_LENGTH(i3, 0);
      OOC_IR__ModuleDesc_Destroy_S((void*)(i3+(_check_index(i2, i4, OOC_UINT32, 160397))*8));
      i2 = i2+1;
      i = i2;
      i3 = i2<i1;
      if (i3) goto l5_loop;
l11:
      return;
      ;
    }

    
    void OOC_IR__ModuleDesc_Destroy_S(OOC_IR__Statement *n) {
      register OOC_INT64 i0,i1,i2,i3,i4;
      OOC_INT32 i;

      i0 = (OOC_INT64)*n;
      i1 = i0!=(OOC_INT64)0;
      if (!i1) goto l93;
      i1 = OOC_TYPE_TEST(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 160552)))), &_td_OOC_IR__AssertDesc);
      if (i1) goto l91;
      i1 = OOC_TYPE_TEST(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 160624)))), &_td_OOC_IR__AssignmentDesc);
      if (i1) goto l89;
      i1 = OOC_TYPE_TEST(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 160698)))), &_td_OOC_IR__CallDesc);
      if (i1) goto l87;
      i1 = OOC_TYPE_TEST(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 160803)))), &_td_OOC_IR__CopyDesc);
      if (i1) goto l85;
      i1 = OOC_TYPE_TEST(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 160868)))), &_td_OOC_IR__CopyParameterDesc);
      if (i1) goto l83;
      i1 = OOC_TYPE_TEST(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 160924)))), &_td_OOC_IR__CopyStringDesc);
      if (i1) goto l81;
      i1 = OOC_TYPE_TEST(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 161021)))), &_td_OOC_IR__ExitDesc);
      if (i1) goto l79;
      i1 = OOC_TYPE_TEST(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 161067)))), &_td_OOC_IR__ForStatmDesc);
      if (i1) goto l77;
      i1 = OOC_TYPE_TEST(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 161199)))), &_td_OOC_IR__IfStatmDesc);
      if (i1) goto l75;
      i1 = OOC_TYPE_TEST(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 161302)))), &_td_OOC_IR__CaseStatmDesc);
      if (i1) goto l64;
      i1 = OOC_TYPE_TEST(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 161585)))), &_td_OOC_IR__LoopStatmDesc);
      if (i1) goto l62;
      i1 = OOC_TYPE_TEST(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 161635)))), &_td_OOC_IR__MoveBlockDesc);
      if (i1) goto l60;
      i1 = OOC_TYPE_TEST(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 161726)))), &_td_OOC_IR__RaiseDesc);
      if (i1) goto l58;
      i1 = OOC_TYPE_TEST(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 161774)))), &_td_OOC_IR__RepeatStatmDesc);
      if (i1) goto l56;
      i1 = OOC_TYPE_TEST(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 161856)))), &_td_OOC_IR__ReturnDesc);
      if (i1) goto l54;
      i1 = OOC_TYPE_TEST(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 161902)))), &_td_OOC_IR__TryStatmDesc);
      if (i1) goto l43;
      i1 = OOC_TYPE_TEST(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 162130)))), &_td_OOC_IR__WhileStatmDesc);
      if (i1) goto l41;
      i1 = OOC_TYPE_TEST(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 162203)))), &_td_OOC_IR__WithStatmDesc);
      if (i1) goto l39;
      _failed_with(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 162200)))), 162200);
      goto l92;
l39:
      OOC_IR__ModuleDesc_Destroy_E((void*)((_check_pointer(i0, 162231))+16));
      OOC_IR__ModuleDesc_Destroy_SSeq((void*)((_check_pointer(i0, 162256))+24));
      OOC_IR__ModuleDesc_Destroy_SSeq((void*)((_check_pointer(i0, 162284))+32));
      goto l92;
l41:
      OOC_IR__ModuleDesc_Destroy_E((void*)((_check_pointer(i0, 162159))+16));
      OOC_IR__ModuleDesc_Destroy_SSeq((void*)((_check_pointer(i0, 162184))+24));
      goto l92;
l43:
      OOC_IR__ModuleDesc_Destroy_SSeq((void*)((_check_pointer(i0, 161932))+16));
      i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 161973))+24);
      i1 = OOC_ARRAY_LENGTH((_check_pointer(i1, 161983)), 0);
      i = 0;
      i2 = 0<i1;
      if (!i2) goto l52;
      i2=0;
l47_loop:
      i0 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 162004))+24);
      i0 = _check_pointer(i0, 162014);
      i3 = OOC_ARRAY_LENGTH(i0, 0);
      i0 = (OOC_INT64)*(OOC_INT64*)(i0+(_check_index(i2, i3, OOC_UINT32, 162014))*8);
      *(OOC_INT64*)((_check_pointer(i0, 162017))+8) = (OOC_INT64)0;
      i0 = (OOC_INT64)*n;
      i3 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 162049))+24);
      i3 = _check_pointer(i3, 162059);
      i4 = OOC_ARRAY_LENGTH(i3, 0);
      i3 = (OOC_INT64)*(OOC_INT64*)(i3+(_check_index(i2, i4, OOC_UINT32, 162059))*8);
      OOC_IR__ModuleDesc_Destroy_SSeq((void*)((_check_pointer(i3, 162062))+24));
      i2 = i2+1;
      i = i2;
      i3 = i2<i1;
      if (i3) goto l47_loop;
l52:
      *(OOC_INT64*)((_check_pointer(i0, 162100))+24) = (OOC_INT64)0;
      goto l92;
l54:
      OOC_IR__ModuleDesc_Destroy_E((void*)((_check_pointer(i0, 161881))+16));
      goto l92;
l56:
      OOC_IR__ModuleDesc_Destroy_SSeq((void*)((_check_pointer(i0, 161807))+16));
      OOC_IR__ModuleDesc_Destroy_E((void*)((_check_pointer(i0, 161828))+24));
      goto l92;
l58:
      OOC_IR__ModuleDesc_Destroy_E((void*)((_check_pointer(i0, 161750))+16));
      goto l92;
l60:
      OOC_IR__ModuleDesc_Destroy_E((void*)((_check_pointer(i0, 161663))+16));
      OOC_IR__ModuleDesc_Destroy_E((void*)((_check_pointer(i0, 161686))+24));
      OOC_IR__ModuleDesc_Destroy_E((void*)((_check_pointer(i0, 161707))+32));
      goto l92;
l62:
      OOC_IR__ModuleDesc_Destroy_SSeq((void*)((_check_pointer(i0, 161616))+16));
      goto l92;
l64:
      OOC_IR__ModuleDesc_Destroy_E((void*)((_check_pointer(i0, 161330))+16));
      i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 161369))+24);
      i1 = OOC_ARRAY_LENGTH((_check_pointer(i1, 161378)), 0);
      i = 0;
      i2 = 0<i1;
      if (!i2) goto l73;
      i2=0;
l68_loop:
      i0 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 161399))+24);
      i0 = _check_pointer(i0, 161408);
      i3 = OOC_ARRAY_LENGTH(i0, 0);
      i0 = (OOC_INT64)*(OOC_INT64*)(i0+(_check_index(i2, i3, OOC_UINT32, 161408))*8);
      *(OOC_INT64*)((_check_pointer(i0, 161411))+16) = (OOC_INT64)0;
      i0 = (OOC_INT64)*n;
      i3 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 161445))+24);
      i3 = _check_pointer(i3, 161454);
      i4 = OOC_ARRAY_LENGTH(i3, 0);
      i3 = (OOC_INT64)*(OOC_INT64*)(i3+(_check_index(i2, i4, OOC_UINT32, 161454))*8);
      OOC_IR__ModuleDesc_Destroy_SSeq((void*)((_check_pointer(i3, 161457))+24));
      i3 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 161482))+24);
      i3 = _check_pointer(i3, 161491);
      i4 = OOC_ARRAY_LENGTH(i3, 0);
      *(OOC_INT64*)(i3+(_check_index(i2, i4, OOC_UINT32, 161491))*8) = (OOC_INT64)0;
      i2 = i2+1;
      i = i2;
      i3 = i2<i1;
      if (i3) goto l68_loop;
l73:
      *(OOC_INT64*)((_check_pointer(i0, 161529))+24) = (OOC_INT64)0;
      i0 = (OOC_INT64)*n;
      OOC_IR__ModuleDesc_Destroy_SSeq((void*)((_check_pointer(i0, 161563))+32));
      goto l92;
l75:
      OOC_IR__ModuleDesc_Destroy_E((void*)((_check_pointer(i0, 161225))+16));
      OOC_IR__ModuleDesc_Destroy_SSeq((void*)((_check_pointer(i0, 161250))+24));
      OOC_IR__ModuleDesc_Destroy_SSeq((void*)((_check_pointer(i0, 161278))+32));
      goto l92;
l77:
      OOC_IR__ModuleDesc_Destroy_E((void*)((_check_pointer(i0, 161094))+16));
      OOC_IR__ModuleDesc_Destroy_E((void*)((_check_pointer(i0, 161114))+24));
      OOC_IR__ModuleDesc_Destroy_E((void*)((_check_pointer(i0, 161136))+32));
      OOC_IR__ModuleDesc_Destroy_E((void*)((_check_pointer(i0, 161156))+40));
      OOC_IR__ModuleDesc_Destroy_SSeq((void*)((_check_pointer(i0, 161180))+48));
      goto l92;
l79:
      *(OOC_INT64*)((_check_pointer(i0, 161042))+16) = (OOC_INT64)0;
      goto l92;
l81:
      OOC_IR__ModuleDesc_Destroy_E((void*)((_check_pointer(i0, 160953))+16));
      OOC_IR__ModuleDesc_Destroy_E((void*)((_check_pointer(i0, 160976))+24));
      OOC_IR__ModuleDesc_Destroy_E((void*)((_check_pointer(i0, 160997))+32));
      goto l92;
l83:
      *(OOC_INT64*)((_check_pointer(i0, 160898))+16) = (OOC_INT64)0;
      goto l92;
l85:
      OOC_IR__ModuleDesc_Destroy_E((void*)((_check_pointer(i0, 160826))+16));
      OOC_IR__ModuleDesc_Destroy_E((void*)((_check_pointer(i0, 160849))+24));
      goto l92;
l87:
      OOC_IR__ModuleDesc_Destroy_E((void*)((_check_pointer(i0, 160721))+16));
      OOC_IR__ModuleDesc_Destroy_EList((void*)((_check_pointer(i0, 160748))+24));
      *(OOC_INT64*)((_check_pointer(i0, 160772))+32) = (OOC_INT64)0;
      goto l92;
l89:
      OOC_IR__ModuleDesc_Destroy_E((void*)((_check_pointer(i0, 160653))+16));
      OOC_IR__ModuleDesc_Destroy_E((void*)((_check_pointer(i0, 160678))+24));
      goto l92;
l91:
      OOC_IR__ModuleDesc_Destroy_E((void*)((_check_pointer(i0, 160577))+16));
      *(OOC_INT32*)((_check_pointer(i0, 160601))+24) = 0;
l92:
      *n = (OOC_IR__Statement)(OOC_INT64)0;
l93:
      return;
      ;
    }


  i0 = (OOC_INT64)m;
  *(OOC_INT64*)((_check_pointer(i0, 162366))+8) = (OOC_INT64)0;
  i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 162403))+16);
  i = 0;
  i1 = OOC_ARRAY_LENGTH((_check_pointer(i1, 162412)), 0);
  i2 = 0<i1;
  if (!i2) goto l9;
  i2=0;
l4_loop:
  i3 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 162427))+16);
  i3 = _check_pointer(i3, 162436);
  i4 = OOC_ARRAY_LENGTH(i3, 0);
  i3 = (OOC_INT64)*(OOC_INT64*)(i3+(_check_index(i2, i4, OOC_UINT32, 162436))*8);
  *(OOC_INT64*)((_check_pointer(i3, 162439))+8) = (OOC_INT64)0;
  i0 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 162465))+16);
  i0 = _check_pointer(i0, 162474);
  i3 = OOC_ARRAY_LENGTH(i0, 0);
  i0 = (OOC_INT64)*(OOC_INT64*)(i0+(_check_index(i2, i3, OOC_UINT32, 162474))*8);
  OOC_IR__ModuleDesc_Destroy_SSeq((void*)((_check_pointer(i0, 162477))+16));
  i0 = (OOC_INT64)m;
  i2 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 162496))+16);
  i2 = _check_pointer(i2, 162505);
  i3 = OOC_ARRAY_LENGTH(i2, 0);
  i4 = i;
  *(OOC_INT64*)(i2+(_check_index(i4, i3, OOC_UINT32, 162505))*8) = (OOC_INT64)0;
  i2 = i4+1;
  i = i2;
  i3 = i2<i1;
  if (i3) goto l4_loop;
l9:
  *(OOC_INT64*)((_check_pointer(i0, 162531))+16) = (OOC_INT64)0;
  i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 162555))+24);
  *(OOC_INT64*)((_check_pointer(i1, 162566))+8) = (OOC_INT64)0;
  i0 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 162590))+24);
  OOC_IR__ModuleDesc_Destroy_SSeq((void*)((_check_pointer(i0, 162601))+16));
  i0 = (OOC_INT64)m;
  *(OOC_INT64*)((_check_pointer(i0, 162618))+24) = (OOC_INT64)0;
  return;
  ;
}

void OOC_IR__InitVisitor(OOC_IR__Visitor v) {

  return;
  ;
}

void OOC_IR__InitConstFold(OOC_IR__ConstFold c, OOC_IR__Builder b) {
  register OOC_INT64 i0,i1;

  i0 = (OOC_INT64)c;
  OOC_IR__InitVisitor((OOC_IR__Visitor)i0);
  i1 = (OOC_INT64)b;
  *(OOC_INT64*)(_check_pointer(i0, 162916)) = i1;
  return;
  ;
}

void OOC_IR__InitBuilder(OOC_IR__Builder b, OOC_SymbolTable__Module module, OOC_SymbolTable_Uses__Uses uses, OOC_Config_Pragmas__History pragmaHistory, OOC_Error__List errList, OOC_IR__ConstFold fold) {
  register OOC_INT64 i0,i1,i2,i3,i4,i5;
  OOC_SymbolTable__Item string;
  auto OOC_IR__TypeType OOC_IR__InitBuilder_NewTypeType(OOC_SymbolTable__Item parent, OOC_SymbolTable__Position position);
  auto OOC_IR__ModuleType OOC_IR__InitBuilder_NewModuleType(OOC_SymbolTable__Item parent, OOC_SymbolTable__Position position);
    
    OOC_IR__TypeType OOC_IR__InitBuilder_NewTypeType(OOC_SymbolTable__Item parent, OOC_SymbolTable__Position position) {
      register OOC_INT64 i0,i1,i2;

      i0 = (OOC_INT64)RT0__NewObject(_td_OOC_IR__TypeType.baseTypes[0]);
      i1 = (OOC_INT64)parent;
      i2 = (OOC_INT64)position;
      OOC_SymbolTable__InitType((OOC_SymbolTable__Type)i0, (OOC_SymbolTable__Item)i1, (OOC_SymbolTable__Position)i2);
      return (OOC_IR__TypeType)i0;
      ;
    }

    
    OOC_IR__ModuleType OOC_IR__InitBuilder_NewModuleType(OOC_SymbolTable__Item parent, OOC_SymbolTable__Position position) {
      register OOC_INT64 i0,i1,i2;

      i0 = (OOC_INT64)RT0__NewObject(_td_OOC_IR__ModuleType.baseTypes[0]);
      i1 = (OOC_INT64)parent;
      i2 = (OOC_INT64)position;
      OOC_SymbolTable__InitType((OOC_SymbolTable__Type)i0, (OOC_SymbolTable__Item)i1, (OOC_SymbolTable__Position)i2);
      return (OOC_IR__ModuleType)i0;
      ;
    }


  i0 = (OOC_INT64)b;
  i1 = (OOC_INT64)module;
  *(OOC_INT64*)(_check_pointer(i0, 163785)) = i1;
  i1 = (OOC_INT64)pragmaHistory;
  *(OOC_INT64*)((_check_pointer(i0, 163810))+8) = i1;
  i1 = (OOC_INT64)errList;
  *(OOC_INT64*)((_check_pointer(i0, 163849))+16) = i1;
  i1 = (OOC_INT64)OOC_Scanner_BasicList__NewSymbol((OOC_Scanner_InputBuffer__CharArray)0, (-1));
  i2 = (OOC_INT64)OOC_SymbolTable_Predef__GetType(17);
  i3 = (OOC_INT64)Object_Boxed__false;
  i1 = (OOC_INT64)OOC_IR__NewConst((OOC_Scanner_BasicList__Symbol)i1, (OOC_SymbolTable__Type)i2, (Object_Boxed__Object)i3);
  *(OOC_INT64*)((_check_pointer(i0, 163876))+40) = i1;
  i1 = (OOC_INT64)OOC_IR__InitBuilder_NewTypeType((OOC_SymbolTable__Item)0, (OOC_SymbolTable__Position)0);
  *(OOC_INT64*)((_check_pointer(i0, 164040))+48) = i1;
  i0 = (OOC_INT64)b;
  i1 = (OOC_INT64)OOC_IR__InitBuilder_NewModuleType((OOC_SymbolTable__Item)0, (OOC_SymbolTable__Position)0);
  *(OOC_INT64*)((_check_pointer(i0, 164083))+56) = i1;
  i0 = (OOC_INT64)b;
  *(OOC_INT64*)((_check_pointer(i0, 164130))+72) = 0;
  i1 = (OOC_INT64)fold;
  *(OOC_INT64*)((_check_pointer(i0, 164155))+24) = i1;
  i2 = (OOC_INT64)uses;
  *(OOC_INT64*)((_check_pointer(i0, 164181))+32) = i2;
  *(OOC_INT64*)(_check_pointer(i1, 164205)) = i0;
  i1 = (OOC_INT64)module;
  i3 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i1, 164275))+88);
  i4 = (OOC_INT64)OOC_SymbolTable_Predef__nameStringModule;
  i5 = (OOC_INT64)OOC_SymbolTable_Predef__nameStringType;
  i1 = (OOC_INT64)OOC_SymbolTable_CreateNamespace__ResolveQualident((OOC_SymbolTable__Namespace)i3, (OOC_SymbolTable__Item)i1, (OOC_SymbolTable_Uses__Uses)i2, (OOC_SymbolTable__Name)i4, (OOC_SymbolTable__Name)i5);
  string = (OOC_SymbolTable__Item)i1;
  i2 = i1==0;
  if (i2) goto l3;
  i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer((_type_guard(i1, ((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i1, 164535)))), &_td_OOC_SymbolTable__TypeDeclDesc, 164535)), 164544))+88);
  *(OOC_INT64*)((_check_pointer(i0, 164508))+64) = i1;
  goto l4;
l3:
  *(OOC_INT64*)((_check_pointer(i0, 164471))+64) = 0;
l4:
  return;
  ;
}

OOC_IR__Builder OOC_IR__NewBuilder(OOC_SymbolTable__Module module, OOC_SymbolTable_Uses__Uses uses, OOC_Config_Pragmas__History pragmaHistory, OOC_Error__List errList, OOC_IR__ConstFold constFold) {
  register OOC_INT64 i0,i1,i2,i3,i4,i5;

  i0 = (OOC_INT64)RT0__NewObject(_td_OOC_IR__Builder.baseTypes[0]);
  i1 = (OOC_INT64)module;
  i2 = (OOC_INT64)uses;
  i3 = (OOC_INT64)pragmaHistory;
  i4 = (OOC_INT64)errList;
  i5 = (OOC_INT64)constFold;
  OOC_IR__InitBuilder((OOC_IR__Builder)i0, (OOC_SymbolTable__Module)i1, (OOC_SymbolTable_Uses__Uses)i2, (OOC_Config_Pragmas__History)i3, (OOC_Error__List)i4, (OOC_IR__ConstFold)i5);
  return (OOC_IR__Builder)i0;
  ;
}

void OOC_IR__BuilderDesc_StartTypeGuard(OOC_IR__Builder b, OOC_IR__TypeTest typeTest, OOC_SymbolTable__Namespace *namespace) {
  register OOC_INT64 i0,i1,i2,i3,i4,i5;
  OOC_SymbolTable__VarDecl var;
  OOC_SymbolTable__DeclarationArray da;
  OOC_SymbolTable_Namespace__Nested nested;

  i0 = (OOC_INT64)typeTest;
  i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 165160))+16);
  i1 = OOC_TYPE_TEST(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i1, 165166)))), &_td_OOC_IR__VarDesc);
  if (i1) goto l3;
  i1 = (OOC_INT64)b;
  i0 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 165570))+16);
  i0 = (OOC_INT64)*(OOC_INT64*)(_check_pointer(i0, 165575));
  OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i1, 165539)))), OOC_IR__BuilderDesc_ErrSym)),OOC_IR__BuilderDesc_ErrSym)((OOC_IR__Builder)i1, 29, (OOC_Scanner_BasicList__Symbol)i0);
  goto l4;
l3:
  i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 165200))+16);
  i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer((_type_guard(i1, ((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i1, 165207)))), &_td_OOC_IR__VarDesc, 165207)), 165211))+16);
  i1 = _type_guard(i1, ((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i1, 165222)))), &_td_OOC_SymbolTable__VarDeclDesc, 165222);
  var = (OOC_SymbolTable__VarDecl)i1;
  i2 = (OOC_INT64)RT0__NewObject(_td_OOC_SymbolTable__DeclarationArray.baseTypes[0], 1);
  da = (OOC_SymbolTable__DeclarationArray)i2;
  i3 = _check_pointer(i2, 165259);
  i4 = OOC_ARRAY_LENGTH(i3, 0);
  i0 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 165334))+48);
  i0 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 165343))+16);
  i5 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i1, 165289))+40);
  i0 = (OOC_INT64)*(OOC_INT64*)((_check_pointer((_type_guard(i0, ((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 165353)))), &_td_OOC_SymbolTable__TypeDeclDesc, 165353)), 165362))+88);
  i0 = (OOC_INT64)OOC_IR__NewGuardedVar((OOC_SymbolTable__VarDecl)i1, (OOC_SymbolTable__Name)i5, (OOC_SymbolTable__Type)i0);
  *(OOC_INT64*)(i3+(_check_index(0, i4, OOC_UINT8, 165259))*8) = i0;
  i0 = (OOC_INT64)OOC_SymbolTable_Namespace__NewNested((OOC_SymbolTable__DeclarationArray)i2, 1);
  nested = (OOC_SymbolTable_Namespace__Nested)i0;
  i1 = (OOC_INT64)*namespace;
  OOC_SymbolTable_Namespace__NestedDesc_SetEnclosingNamespace((OOC_SymbolTable_Namespace__Nested)i0, (OOC_SymbolTable_Namespace__Namespace)(_type_guard(i1, ((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i1, 165472)))), &_td_OOC_SymbolTable_Namespace__NestedDesc, 165472)));
  *namespace = (OOC_SymbolTable__Namespace)i0;
  return;
l4:
  i0 = (OOC_INT64)RT0__NewObject(_td_OOC_SymbolTable__DeclarationArray.baseTypes[0], 0);
  da = (OOC_SymbolTable__DeclarationArray)i0;
  i0 = (OOC_INT64)OOC_SymbolTable_Namespace__NewNested((OOC_SymbolTable__DeclarationArray)i0, 0);
  nested = (OOC_SymbolTable_Namespace__Nested)i0;
  i1 = (OOC_INT64)*namespace;
  OOC_SymbolTable_Namespace__NestedDesc_SetEnclosingNamespace((OOC_SymbolTable_Namespace__Nested)i0, (OOC_SymbolTable_Namespace__Namespace)(_type_guard(i1, ((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i1, 165783)))), &_td_OOC_SymbolTable_Namespace__NestedDesc, 165783)));
  *namespace = (OOC_SymbolTable__Namespace)i0;
  return;
  ;
}

void OOC_IR__BuilderDesc_EndTypeGuard(OOC_IR__Builder b, OOC_SymbolTable__Namespace *namespace) {
  register OOC_INT64 i0;

  i0 = (OOC_INT64)*namespace;
  i0 = (OOC_INT64)*(OOC_INT64*)((_check_pointer((_type_guard(i0, ((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 165955)))), &_td_OOC_SymbolTable_Namespace__NestedDesc, 165955)), 165962))+16);
  *namespace = (OOC_SymbolTable__Namespace)i0;
  return;
  ;
}

void OOC_IR__BuilderDesc_StartExceptionScope(OOC_IR__Builder b, OOC_IR__Expression exceptionType, OOC_Scanner_BasicList__Symbol varName, OOC_SymbolTable__Namespace *namespace) {
  register OOC_INT64 i0,i1,i2,i3,i4,i5,i6;
  OOC_SymbolTable__Type type;
  OOC_SymbolTable__DeclarationArray da;
  OOC_SymbolTable_Namespace__Nested nested;

  i0 = (OOC_INT64)exceptionType;
  i1 = OOC_TYPE_TEST(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 166318)))), &_td_OOC_IR__TypeRefDesc);
  if (i1) goto l3;
  i0 = (OOC_INT64)b;
  i0 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 166393))+40);
  i0 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 166403))+8);
  type = (OOC_SymbolTable__Type)i0;
  
  goto l4;
l3:
  i0 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 166358))+24);
  type = (OOC_SymbolTable__Type)i0;
  
l4:
  i1 = (OOC_INT64)RT0__NewObject(_td_OOC_SymbolTable__DeclarationArray.baseTypes[0], 1);
  da = (OOC_SymbolTable__DeclarationArray)i1;
  i2 = _check_pointer(i1, 166446);
  i3 = OOC_ARRAY_LENGTH(i2, 0);
  i4 = (OOC_INT64)b;
  i5 = (OOC_INT64)varName;
  i6 = (OOC_INT64)OOC_SymbolTable_CreateNamespace__exception;
  i4 = (OOC_INT64)OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i4, 166522)))), OOC_IR__BuilderDesc_GetName)),OOC_IR__BuilderDesc_GetName)((OOC_IR__Builder)i4, (OOC_Scanner_BasicList__Symbol)i5);
  i0 = (OOC_INT64)OOC_IR__NewGuardedVar((OOC_SymbolTable__VarDecl)i6, (OOC_SymbolTable__Name)i4, (OOC_SymbolTable__Type)i0);
  *(OOC_INT64*)(i2+(_check_index(0, i3, OOC_UINT8, 166446))*8) = i0;
  i0 = (OOC_INT64)OOC_SymbolTable_Namespace__NewNested((OOC_SymbolTable__DeclarationArray)i1, 1);
  nested = (OOC_SymbolTable_Namespace__Nested)i0;
  i1 = (OOC_INT64)*namespace;
  OOC_SymbolTable_Namespace__NestedDesc_SetEnclosingNamespace((OOC_SymbolTable_Namespace__Nested)i0, (OOC_SymbolTable_Namespace__Namespace)(_type_guard(i1, ((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i1, 166643)))), &_td_OOC_SymbolTable_Namespace__NestedDesc, 166643)));
  *namespace = (OOC_SymbolTable__Namespace)i0;
  return;
  ;
}

void OOC_IR__BuilderDesc_EndExceptionScope(OOC_IR__Builder b, OOC_SymbolTable__Namespace *namespace) {
  register OOC_INT64 i0;

  i0 = (OOC_INT64)*namespace;
  i0 = (OOC_INT64)*(OOC_INT64*)((_check_pointer((_type_guard(i0, ((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 166824)))), &_td_OOC_SymbolTable_Namespace__NestedDesc, 166824)), 166831))+16);
  *namespace = (OOC_SymbolTable__Namespace)i0;
  return;
  ;
}

OOC_IR__Expression OOC_IR__BuilderDesc_NewIdentRef(OOC_IR__Builder b, OOC_SymbolTable__Namespace baseNS, OOC_SymbolTable__Namespace ns, OOC_SymbolTable__Item context, OOC_Scanner_BasicList__Symbol name) {
  register OOC_INT64 i0,i1,i2,i3,i4,i5;
  OOC_SymbolTable__Name n;
  OOC_SymbolTable__Declaration decl;
  OOC_IR__Var varRef;
  OOC_SymbolTable__Item redirModule;

  i0 = (OOC_INT64)name;
  i1 = *(OOC_INT8*)((_check_pointer(i0, 167167))+8);
  i1 = i1==45;
  if (i1) goto l3;
  i1 = (OOC_INT64)b;
  OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i1, 168732)))), OOC_IR__BuilderDesc_ErrSym)),OOC_IR__BuilderDesc_ErrSym)((OOC_IR__Builder)i1, 2, (OOC_Scanner_BasicList__Symbol)i0);
  i0=i1;
  goto l52;
l3:
  i1 = (OOC_INT64)b;
  i2 = (OOC_INT64)OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i1, 167201)))), OOC_IR__BuilderDesc_GetName)),OOC_IR__BuilderDesc_GetName)((OOC_IR__Builder)i1, (OOC_Scanner_BasicList__Symbol)i0);
  n = (OOC_SymbolTable__Name)i2;
  i3 = (OOC_INT64)ns;
  i4 = (OOC_INT64)context;
  i3 = (OOC_INT64)OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i3, 167233)))), OOC_SymbolTable__NamespaceDesc_Identify)),OOC_SymbolTable__NamespaceDesc_Identify)((OOC_SymbolTable__Namespace)i3, (OOC_SymbolTable__Item)i4, (OOC_SymbolTable__Name)i2, 0u);
  decl = (OOC_SymbolTable__Declaration)i3;
  i5 = i3==(OOC_INT64)0;
  if (i5) goto l50;
  i5 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i1, 167370))+32);
  OOC_SymbolTable_Uses__Mark((OOC_SymbolTable__Declaration)i3, (OOC_SymbolTable_Uses__Uses)i5, (OOC_SymbolTable__Name)i2);
  i2 = OOC_TYPE_TEST(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i3, 167398)))), &_td_OOC_SymbolTable__ConstDeclDesc);
  if (i2) goto l48;
  i2 = OOC_TYPE_TEST(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i3, 167489)))), &_td_OOC_SymbolTable__VarDeclDesc);
  if (i2) goto l46;
  i2 = OOC_TYPE_TEST(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i3, 167560)))), &_td_OOC_IR__GuardedVarDesc);
  if (i2) goto l40;
  i2 = OOC_TYPE_TEST(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i3, 167849)))), &_td_OOC_SymbolTable__TypeDeclDesc);
  if (i2) goto l38;
  i2 = OOC_TYPE_TEST(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i3, 167925)))), &_td_OOC_SymbolTable__PredefProcDesc);
  if (i2) goto l36;
  i2 = OOC_TYPE_TEST(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i3, 168003)))), &_td_OOC_SymbolTable__ProcDeclDesc);
  if (i2) goto l34;
  i2 = OOC_TYPE_TEST(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i3, 168081)))), &_td_OOC_SymbolTable__ImportDesc);
  if (i2) goto l32;
  i2 = OOC_TYPE_TEST(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i3, 168173)))), &_td_OOC_SymbolTable__RedirectDesc);
  if (i2) goto l22;
  Log__Type("Unknown decl in NewIdentRef", 28, (void*)i3);
  _assert(0u, 127, 168678);
  goto l51;
l22:
  i2 = (OOC_INT64)baseNS;
  i5 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i3, 168245))+88);
  i2 = (OOC_INT64)OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i2, 168222)))), OOC_SymbolTable__NamespaceDesc_Identify)),OOC_SymbolTable__NamespaceDesc_Identify)((OOC_SymbolTable__Namespace)i2, (OOC_SymbolTable__Item)i4, (OOC_SymbolTable__Name)i5, 0u);
  redirModule = (OOC_SymbolTable__Item)i2;
  i5 = i2==(OOC_INT64)0;
  if (i5) goto l25;
  i5 = !(OOC_TYPE_TEST(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i2, 168312)))), &_td_OOC_SymbolTable__ImportDesc));
  
  goto l27;
l25:
  i5=1u;
l27:
  if (i5) goto l29;
  i2 = (OOC_INT64)*(OOC_INT64*)((_check_pointer((_type_guard(i2, ((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i2, 168425)))), &_td_OOC_SymbolTable__ImportDesc, 168425)), 168432))+96);
  i2 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i2, 168447))+88);
  ns = (OOC_SymbolTable__Namespace)i2;
  i5 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i3, 168567))+96);
  i5 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i5, 168573))+16);
  i3 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i3, 168567))+96);
  i3 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i3, 168573))+16);
  i3 = OOC_ARRAY_LENGTH((_check_pointer(i3, 168577)), 0);
  i0 = (OOC_INT64)OOC_Scanner_BasicList__CloneSymbol((OOC_Scanner_BasicList__Symbol)i0, (void*)(_check_pointer(i5, 168577)), i3);
  i0 = (OOC_INT64)OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i1, 168472)))), OOC_IR__BuilderDesc_NewIdentRef)),OOC_IR__BuilderDesc_NewIdentRef)((OOC_IR__Builder)i1, (OOC_SymbolTable__Namespace)i2, (OOC_SymbolTable__Namespace)i2, (OOC_SymbolTable__Item)i4, (OOC_Scanner_BasicList__Symbol)i0);
  return (OOC_IR__Expression)i0;
  goto l51;
l29:
  OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i1, 168345)))), OOC_IR__BuilderDesc_ErrSym)),OOC_IR__BuilderDesc_ErrSym)((OOC_IR__Builder)i1, 41, (OOC_Scanner_BasicList__Symbol)i0);
  goto l51;
l32:
  i2 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i3, 168141))+96);
  i0 = (OOC_INT64)OOC_IR__BuilderDesc_NewModuleRef((OOC_IR__Builder)i1, (OOC_Scanner_BasicList__Symbol)i0, (OOC_SymbolTable__Module)i2);
  return (OOC_IR__Expression)i0;
  goto l51;
l34:
  i0 = (OOC_INT64)OOC_IR__NewProcedureRef((OOC_Scanner_BasicList__Symbol)i0, (OOC_SymbolTable__ProcDecl)i3);
  return (OOC_IR__Expression)i0;
  goto l51;
l36:
  i0 = (OOC_INT64)OOC_IR__NewPredefProc((OOC_Scanner_BasicList__Symbol)i0, (OOC_SymbolTable__PredefProc)i3);
  return (OOC_IR__Expression)i0;
  goto l51;
l38:
  i0 = (OOC_INT64)OOC_IR__BuilderDesc_NewTypeRef((OOC_IR__Builder)i1, (OOC_Scanner_BasicList__Symbol)i0, (OOC_SymbolTable__TypeDecl)i3);
  return (OOC_IR__Expression)i0;
  goto l51;
l40:
  i2 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i3, 167594))+88);
  i4 = (OOC_INT64)OOC_SymbolTable_CreateNamespace__exception;
  i2 = i2==i4;
  if (i2) goto l43;
  i2 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i3, 167748))+88);
  i0 = (OOC_INT64)OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i1, 167730)))), OOC_IR__BuilderDesc_NewVar)),OOC_IR__BuilderDesc_NewVar)((OOC_IR__Builder)i1, (OOC_Scanner_BasicList__Symbol)i0, (OOC_SymbolTable__VarDecl)i2);
  varRef = (OOC_IR__Var)i0;
  i2 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i3, 167786))+96);
  *(OOC_INT64*)((_check_pointer(i0, 167773))+8) = i2;
  return (OOC_IR__Expression)i0;
  goto l51;
l43:
  i2 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i3, 167684))+96);
  i0 = (OOC_INT64)OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i1, 167653)))), OOC_IR__BuilderDesc_NewCurrentException)),OOC_IR__BuilderDesc_NewCurrentException)((OOC_IR__Builder)i1, (OOC_Scanner_BasicList__Symbol)i0, (OOC_SymbolTable__Type)i2);
  return (OOC_IR__Expression)i0;
  goto l51;
l46:
  i0 = (OOC_INT64)OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i1, 167524)))), OOC_IR__BuilderDesc_NewVar)),OOC_IR__BuilderDesc_NewVar)((OOC_IR__Builder)i1, (OOC_Scanner_BasicList__Symbol)i0, (OOC_SymbolTable__VarDecl)i3);
  return (OOC_IR__Expression)i0;
  goto l51;
l48:
  i2 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i3, 167454))+96);
  i3 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i3, 167466))+88);
  i0 = (OOC_INT64)OOC_IR__NewConst((OOC_Scanner_BasicList__Symbol)i0, (OOC_SymbolTable__Type)i2, (Object_Boxed__Object)i3);
  return (OOC_IR__Expression)i0;
  goto l51;
l50:
  OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i1, 167301)))), OOC_IR__BuilderDesc_ErrSym)),OOC_IR__BuilderDesc_ErrSym)((OOC_IR__Builder)i1, 1, (OOC_Scanner_BasicList__Symbol)i0);
l51:
  i0=i1;
l52:
  i0 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 168973))+40);
  return (OOC_IR__Expression)i0;
  ;
}

OOC_IR__Expression OOC_IR__BuilderDesc_NewQualident(OOC_IR__Builder b, OOC_SymbolTable__Namespace baseNS, OOC_IR__ModuleRef modref, OOC_SymbolTable__Item context, OOC_Scanner_BasicList__Symbol name) {
  register OOC_INT64 i0,i1,i2,i3,i4;

  i0 = (OOC_INT64)b;
  i1 = (OOC_INT64)modref;
  i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i1, 169258))+16);
  i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer((_type_guard(i1, ((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i1, 169269)))), &_td_OOC_SymbolTable__ModuleDesc, 169269)), 169276))+88);
  i2 = (OOC_INT64)baseNS;
  i3 = (OOC_INT64)context;
  i4 = (OOC_INT64)name;
  i0 = (OOC_INT64)OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 169229)))), OOC_IR__BuilderDesc_NewIdentRef)),OOC_IR__BuilderDesc_NewIdentRef)((OOC_IR__Builder)i0, (OOC_SymbolTable__Namespace)i2, (OOC_SymbolTable__Namespace)i1, (OOC_SymbolTable__Item)i3, (OOC_Scanner_BasicList__Symbol)i4);
  return (OOC_IR__Expression)i0;
  ;
}

OOC_IR__Expression OOC_IR__BuilderDesc_NewTypeVar(OOC_IR__Builder b, OOC_SymbolTable__Namespace baseNS, OOC_IR__TypeRef typeRef, OOC_SymbolTable__Item context, OOC_Scanner_BasicList__Symbol name) {
  register OOC_INT64 i0,i1,i2,i3,i4;
  OOC_SymbolTable__Type type;

  i0 = (OOC_INT64)typeRef;
  i0 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 169567))+16);
  i0 = (OOC_INT64)*(OOC_INT64*)((_check_pointer((_type_guard(i0, ((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 169577)))), &_td_OOC_SymbolTable__TypeDeclDesc, 169577)), 169586))+88);
  type = (OOC_SymbolTable__Type)i0;
  i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 169605))+56);
  i1 = i1==(OOC_INT64)0;
  if (i1) goto l3;
  i1 = (OOC_INT64)b;
  i0 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 169722))+56);
  i0 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 169731))+48);
  i2 = (OOC_INT64)baseNS;
  i3 = (OOC_INT64)context;
  i4 = (OOC_INT64)name;
  i0 = (OOC_INT64)OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i1, 169697)))), OOC_IR__BuilderDesc_NewIdentRef)),OOC_IR__BuilderDesc_NewIdentRef)((OOC_IR__Builder)i1, (OOC_SymbolTable__Namespace)i2, (OOC_SymbolTable__Namespace)i0, (OOC_SymbolTable__Item)i3, (OOC_Scanner_BasicList__Symbol)i4);
  return (OOC_IR__Expression)i0;
  goto l4;
l3:
  i0 = (OOC_INT64)b;
  i1 = (OOC_INT64)name;
  i0 = (OOC_INT64)OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 169641)))), OOC_IR__BuilderDesc_ErrExpr)),OOC_IR__BuilderDesc_ErrExpr)((OOC_IR__Builder)i0, 1, (OOC_Scanner_BasicList__Symbol)i1);
  return (OOC_IR__Expression)i0;
l4:
  _failed_function(169341); return 0;
  ;
}

OOC_IR__Expression OOC_IR__BuilderDesc_NewQualType(OOC_IR__Builder b, OOC_IR__Expression type, OOC_IR__ExpressionList arguments, OOC_Scanner_BasicList__Symbol rParen) {
  register OOC_INT64 i0,i1,i2,i3,i4,i5,i6,i7,i8,i9,i10,i11;
  OOC_SymbolTable__Type qualType;
  OOC_SymbolTable__TypeVarArray params;
  OOC_INT32 i;
  OOC_SymbolTable__Type t;

  i0 = (OOC_INT64)b;
  i1 = (OOC_INT64)type;
  i2 = (OOC_INT64)OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 170066)))), OOC_IR__BuilderDesc_AssertType)),OOC_IR__BuilderDesc_AssertType)((OOC_IR__Builder)i0, (OOC_IR__Expression)i1);
  qualType = (OOC_SymbolTable__Type)i2;
  i3 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i2, 170101))+8);
  i3 = i3==(OOC_INT64)0;
  if (i3) goto l3;
  i2 = (OOC_INT64)*(OOC_INT64*)(_check_pointer(i1, 170773));
  OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 170742)))), OOC_IR__BuilderDesc_ErrSym)),OOC_IR__BuilderDesc_ErrSym)((OOC_IR__Builder)i0, 69, (OOC_Scanner_BasicList__Symbol)i2);
  goto l24;
l3:
  i3 = (OOC_INT64)*(OOC_INT64*)((_check_pointer((_type_guard(i2, ((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i2, 170150)))), &_td_OOC_SymbolTable__QualTypeDesc, 170150)), 170159))+72);
  i3 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i3, 170168))+56);
  i3 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i3, 170177))+40);
  params = (OOC_SymbolTable__TypeVarArray)i3;
  i4 = (OOC_INT64)arguments;
  i5 = OOC_ARRAY_LENGTH((_check_pointer(i3, 170206)), 0);
  i6 = OOC_ARRAY_LENGTH((_check_pointer(i4, 170224)), 0);
  i5 = i5<i6;
  if (i5) goto l22;
  i5 = OOC_ARRAY_LENGTH((_check_pointer(i4, 170338)), 0);
  i6 = OOC_ARRAY_LENGTH((_check_pointer(i3, 170320)), 0);
  i5 = i6>i5;
  if (i5) goto l20;
  i = 0;
  i5 = OOC_ARRAY_LENGTH((_check_pointer(i3, 170432)), 0);
  i6 = 0<i5;
  if (!i6) goto l24;
  i6 = (OOC_INT64)&_td_OOC_SymbolTable__TypeRef;
  i7=0;
l10_loop:
  i8 = _check_pointer(i4, 170464);
  i9 = OOC_ARRAY_LENGTH(i8, 0);
  i8 = (OOC_INT64)*(OOC_INT64*)(i8+(_check_index(i7, i9, OOC_UINT32, 170464))*8);
  i8 = (OOC_INT64)*(OOC_INT64*)((_check_pointer((_type_guard(i8, ((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i8, 170468)))), &_td_OOC_IR__TypeRefDesc, 170468)), 170476))+24);
  t = (OOC_SymbolTable__Type)i8;
  i9 = _check_pointer(i3, 170526);
  i10 = OOC_ARRAY_LENGTH(i9, 0);
  i9 = (OOC_INT64)*(OOC_INT64*)(i9+(_check_index(i7, i10, OOC_UINT32, 170526))*8);
  i9 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i9, 170529))+72);
  i9 = OOC_SymbolTable_TypeRules__IsExtensionOf((OOC_SymbolTable__Type)i8, (OOC_SymbolTable__Type)i9);
  if (i9) goto l13;
  i8 = _check_pointer(i4, 170677);
  i9 = OOC_ARRAY_LENGTH(i8, 0);
  i8 = (OOC_INT64)*(OOC_INT64*)(i8+(_check_index(i7, i9, OOC_UINT32, 170677))*8);
  i8 = (OOC_INT64)*(OOC_INT64*)(_check_pointer(i8, 170680));
  OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 170639)))), OOC_IR__BuilderDesc_ErrSym)),OOC_IR__BuilderDesc_ErrSym)((OOC_IR__Builder)i0, 72, (OOC_Scanner_BasicList__Symbol)i8);
  goto l14;
l13:
  i9 = (OOC_INT64)*(OOC_INT64*)((_check_pointer((_type_guard(i2, ((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i2, 170583)))), &_td_OOC_SymbolTable__QualTypeDesc, 170583)), 170592))+88);
  i9 = _check_pointer(i9, 170602);
  i10 = OOC_ARRAY_LENGTH(i9, 0);
  i11 = (OOC_INT64)*(OOC_INT64*)((_check_pointer((_type_guard(i2, ((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i2, 170583)))), &_td_OOC_SymbolTable__QualTypeDesc, 170583)), 170592))+88);
  i11 = OOC_ARRAY_LENGTH((_check_pointer(i11, 170602)), 0);
  i11 = _check_index(i7, i11, OOC_UINT32, 170602);
  OOC_SymbolTable__InitTypeRef((void*)(i9+((_check_index(i7, i10, OOC_UINT32, 170602))*16)), (RT0__Struct)i6, (OOC_SymbolTable__Type)i8);
l14:
  i7 = i7+1;
  i = i7;
  i8 = i7<i5;
  if (i8) goto l10_loop;
  goto l24;
l20:
  i2 = (OOC_INT64)rParen;
  OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 170356)))), OOC_IR__BuilderDesc_ErrSym)),OOC_IR__BuilderDesc_ErrSym)((OOC_IR__Builder)i0, 70, (OOC_Scanner_BasicList__Symbol)i2);
  goto l24;
l22:
  i2 = _check_pointer(i4, 170276);
  i3 = OOC_ARRAY_LENGTH((_check_pointer(i3, 170287)), 0);
  i4 = OOC_ARRAY_LENGTH(i2, 0);
  i2 = (OOC_INT64)*(OOC_INT64*)(i2+(_check_index(i3, i4, OOC_UINT32, 170276))*8);
  i2 = (OOC_INT64)*(OOC_INT64*)(_check_pointer(i2, 170290));
  OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 170242)))), OOC_IR__BuilderDesc_ErrSym)),OOC_IR__BuilderDesc_ErrSym)((OOC_IR__Builder)i0, 71, (OOC_Scanner_BasicList__Symbol)i2);
l24:
  return (OOC_IR__Expression)i1;
  ;
}

OOC_IR__Expression OOC_IR__BuilderDesc_NewSelect(OOC_IR__Builder b, OOC_Scanner_BasicList__Symbol sym, OOC_IR__Expression var, OOC_SymbolTable__Item context, OOC_Scanner_BasicList__Symbol name) {
  register OOC_INT64 i0,i1,i2,i3,i4,i5,i6,i7,i8;
  OOC_IR__Expression varRef;
  OOC_SymbolTable__Type type;
  OOC_SymbolTable__Name n;
  OOC_SymbolTable__Declaration decl;
  OOC_SymbolTable__ProcDecl procDecl;

  i0 = (OOC_INT64)b;
  i1 = (OOC_INT64)var;
  i2 = (OOC_INT64)sym;
  OOC_IR__BuilderDesc_CheckFunctionOp((OOC_IR__Builder)i0, (OOC_IR__Expression)i1, (OOC_Scanner_BasicList__Symbol)i2);
  i3 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i1, 171204))+8);
  i4 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i1, 171204))+8);
  i3 = (OOC_INT64)OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i3, 171209)))), OOC_SymbolTable__TypeDesc_Bound)),OOC_SymbolTable__TypeDesc_Bound)((OOC_SymbolTable__Type)i4);
  i3 = OOC_TYPE_TEST(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i3, 171218)))), &_td_OOC_SymbolTable__PointerDesc);
  if (i3) goto l3;
  i3 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i1, 171248))+8);
  i4 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i1, 171248))+8);
  i3 = (OOC_INT64)OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i3, 171253)))), OOC_SymbolTable__TypeDesc_Deparam)),OOC_SymbolTable__TypeDesc_Deparam)((OOC_SymbolTable__Type)i4);
  i3 = OOC_TYPE_TEST(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i3, 171264)))), &_td_OOC_SymbolTable__PointerDesc);
  
  goto l5;
l3:
  i3=1u;
l5:
  if (i3) goto l7;
  varRef = (OOC_IR__Expression)i1;
  i3=i1;
  goto l8;
l7:
  i3 = (OOC_INT64)OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 171302)))), OOC_IR__BuilderDesc_NewDeref)),OOC_IR__BuilderDesc_NewDeref)((OOC_IR__Builder)i0, (OOC_Scanner_BasicList__Symbol)i2, (OOC_IR__Expression)i1);
  varRef = (OOC_IR__Expression)i3;
  
l8:
  i4 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i3, 171383))+8);
  i5 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i3, 171383))+8);
  i4 = (OOC_INT64)OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i4, 171388)))), OOC_SymbolTable__TypeDesc_Deparam)),OOC_SymbolTable__TypeDesc_Deparam)((OOC_SymbolTable__Type)i5);
  type = (OOC_SymbolTable__Type)i4;
  i5 = OOC_TYPE_TEST(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i4, 171412)))), &_td_OOC_SymbolTable__RecordDesc);
  if (i5) goto l11;
  i1 = (OOC_INT64)*(OOC_INT64*)(_check_pointer(i3, 172133));
  i0 = (OOC_INT64)OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 172107)))), OOC_IR__BuilderDesc_ErrExpr)),OOC_IR__BuilderDesc_ErrExpr)((OOC_IR__Builder)i0, 20, (OOC_Scanner_BasicList__Symbol)i1);
  return (OOC_IR__Expression)i0;
  goto l28;
l11:
  i5 = (OOC_INT64)name;
  i6 = (OOC_INT64)OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 171443)))), OOC_IR__BuilderDesc_GetName)),OOC_IR__BuilderDesc_GetName)((OOC_IR__Builder)i0, (OOC_Scanner_BasicList__Symbol)i5);
  n = (OOC_SymbolTable__Name)i6;
  i7 = (OOC_INT64)*(OOC_INT64*)((_check_pointer((_type_guard(i4, ((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i4, 171482)))), &_td_OOC_SymbolTable__RecordDesc, 171482)), 171489))+96);
  i4 = (OOC_INT64)*(OOC_INT64*)((_check_pointer((_type_guard(i4, ((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i4, 171482)))), &_td_OOC_SymbolTable__RecordDesc, 171482)), 171489))+96);
  i8 = (OOC_INT64)context;
  i4 = (OOC_INT64)OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i7, 171492)))), OOC_SymbolTable__NamespaceDesc_Identify)),OOC_SymbolTable__NamespaceDesc_Identify)((OOC_SymbolTable__Namespace)i4, (OOC_SymbolTable__Item)i8, (OOC_SymbolTable__Name)i6, 0u);
  decl = (OOC_SymbolTable__Declaration)i4;
  i7 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 171545))+32);
  OOC_SymbolTable_Uses__Mark((OOC_SymbolTable__Declaration)i4, (OOC_SymbolTable_Uses__Uses)i7, (OOC_SymbolTable__Name)i6);
  i6 = i4==(OOC_INT64)0;
  if (i6) goto l26;
  i6 = OOC_TYPE_TEST(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i4, 171655)))), &_td_OOC_SymbolTable__FieldDeclDesc);
  if (i6) goto l24;
  i6 = OOC_TYPE_TEST(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i4, 171771)))), &_td_OOC_SymbolTable__ProcDeclDesc);
  if (i6) goto l18;
  _assert(0u, 127, 172057);
  goto l28;
l18:
  i4 = _type_guard(i4, ((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i4, 171822)))), &_td_OOC_SymbolTable__ProcDeclDesc, 171822);
  procDecl = (OOC_SymbolTable__ProcDecl)i4;
  i3 = _check_pointer(i3, 171882);
  i6 = *(OOC_INT8*)((_check_pointer(i4, 171947))+88);
  i6 = i6==2;
  if (i6) goto l21;
  i6 = *(OOC_UINT8*)((_check_pointer(i4, 172022))+91);
  
  goto l22;
l21:
  i6=1u;
l22:
  i3 = (OOC_INT64)*(OOC_INT64*)(i3+8);
  i0 = (OOC_INT64)OOC_IR__BuilderDesc_NewSelectProc((OOC_IR__Builder)i0, (OOC_Scanner_BasicList__Symbol)i2, (OOC_IR__Expression)i1, (OOC_SymbolTable__Type)i3, (OOC_SymbolTable__ProcDecl)i4, (OOC_Scanner_BasicList__Symbol)i5, i6);
  return (OOC_IR__Expression)i0;
  goto l28;
l24:
  i0 = (OOC_INT64)OOC_IR__BuilderDesc_NewSelectField((OOC_IR__Builder)i0, (OOC_Scanner_BasicList__Symbol)i2, (OOC_IR__Expression)i3, (OOC_SymbolTable__FieldDecl)(_type_guard(i4, ((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i4, 171734)))), &_td_OOC_SymbolTable__FieldDeclDesc, 171734)), (OOC_Scanner_BasicList__Symbol)i5);
  return (OOC_IR__Expression)i0;
  goto l28;
l26:
  i0 = (OOC_INT64)OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 171604)))), OOC_IR__BuilderDesc_ErrExpr)),OOC_IR__BuilderDesc_ErrExpr)((OOC_IR__Builder)i0, 1, (OOC_Scanner_BasicList__Symbol)i5);
  return (OOC_IR__Expression)i0;
l28:
  _failed_function(170849); return 0;
  ;
}

OOC_IR__Expression OOC_IR__BuilderDesc_NewOperator(OOC_IR__Builder b, OOC_Scanner_BasicList__Symbol sym, OOC_IR__Expression left, OOC_IR__Expression right) {
  register OOC_INT64 i0;
  OOC_INT8 id;
  auto OOC_CHAR8 OOC_IR__BuilderDesc_NewOperator_IsPredefClass(OOC_SymbolTable__Type type, OOC_UINT32 classes);
  auto OOC_IR__Expression OOC_IR__BuilderDesc_NewOperator_UnaryOperator(void);
  auto OOC_IR__Expression OOC_IR__BuilderDesc_NewOperator_BinaryOperator(void);
    
    OOC_CHAR8 OOC_IR__BuilderDesc_NewOperator_IsPredefClass(OOC_SymbolTable__Type type, OOC_UINT32 classes) {
      register OOC_INT64 i0,i1;

      i0 = (OOC_INT64)type;
      i1 = OOC_TYPE_TEST(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 173031)))), &_td_OOC_SymbolTable__PredefTypeDesc);
      if (i1) goto l3;
      return 0u;
      goto l4;
l3:
      i0 = *(OOC_INT16*)((_check_pointer(i0, 173068))+72);
      i1 = classes;
      return (_in(i0,i1));
l4:
      _failed_function(172952); return 0;
      ;
    }

    
    OOC_IR__Expression OOC_IR__BuilderDesc_NewOperator_UnaryOperator(void) {
      register OOC_INT64 i0,i1,i2,i3,i4,i5;
      OOC_SymbolTable__Type type;
      OOC_CHAR8 isNumeric;
      OOC_CHAR8 isSet;
      OOC_CHAR8 isBoolean;

      i0 = (OOC_INT64)b;
      i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 173281))+40);
      i2 = (OOC_INT64)left;
      i1 = i2==i1;
      if (i1) goto l3;
      i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 173306))+40);
      i2 = (OOC_INT64)right;
      i1 = i2==i1;
      
      goto l5;
l3:
      i1=1u;
l5:
      if (i1) goto l28;
      i1 = (OOC_INT64)right;
      i2 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i1, 173556))+8);
      type = (OOC_SymbolTable__Type)i2;
      i3 = OOC_SymbolTable_TypeRules__IsNumericType((OOC_SymbolTable__Type)i2);
      isNumeric = i3;
      i4 = OOC_SymbolTable_TypeRules__IsSetType((OOC_SymbolTable__Type)i2);
      isSet = i4;
      i2 = OOC_IR__BuilderDesc_NewOperator_IsPredefClass((OOC_SymbolTable__Type)i2, 1u);
      isBoolean = i2;
      i5 = id;
      switch (i5) {
      case 7:
        if (i3) goto l14;
        if (i4) goto l12;
        i1 = (OOC_INT64)sym;
        i0 = (OOC_INT64)OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 173978)))), OOC_IR__BuilderDesc_ErrExpr)),OOC_IR__BuilderDesc_ErrExpr)((OOC_IR__Builder)i0, 5, (OOC_Scanner_BasicList__Symbol)i1);
        return (OOC_IR__Expression)i0;
        goto l29;
l12:
        i2 = (OOC_INT64)sym;
        i0 = (OOC_INT64)OOC_IR__BuilderDesc_NewNegate((OOC_IR__Builder)i0, (OOC_Scanner_BasicList__Symbol)i2, (OOC_IR__Expression)i1);
        return (OOC_IR__Expression)i0;
        goto l29;
l14:
        i2 = (OOC_INT64)sym;
        i0 = (OOC_INT64)OOC_IR__BuilderDesc_NewNegate((OOC_IR__Builder)i0, (OOC_Scanner_BasicList__Symbol)i2, (OOC_IR__Expression)i1);
        return (OOC_IR__Expression)i0;
        goto l29;
      case 6:
        if (i3) goto l19;
        i1 = (OOC_INT64)sym;
        i0 = (OOC_INT64)OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 174119)))), OOC_IR__BuilderDesc_ErrExpr)),OOC_IR__BuilderDesc_ErrExpr)((OOC_IR__Builder)i0, 5, (OOC_Scanner_BasicList__Symbol)i1);
        return (OOC_IR__Expression)i0;
        goto l29;
l19:
        return (OOC_IR__Expression)i1;
        goto l29;
      case 35:
        if (i2) goto l24;
        i1 = (OOC_INT64)sym;
        i0 = (OOC_INT64)OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 174273)))), OOC_IR__BuilderDesc_ErrExpr)),OOC_IR__BuilderDesc_ErrExpr)((OOC_IR__Builder)i0, 5, (OOC_Scanner_BasicList__Symbol)i1);
        return (OOC_IR__Expression)i0;
        goto l29;
l24:
        i2 = (OOC_INT64)sym;
        i0 = (OOC_INT64)OOC_IR__BuilderDesc_NewNot((OOC_IR__Builder)i0, (OOC_Scanner_BasicList__Symbol)i2, (OOC_IR__Expression)i1);
        return (OOC_IR__Expression)i0;
        goto l29;
      default:
        i1 = (OOC_INT64)sym;
        i0 = (OOC_INT64)OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 174342)))), OOC_IR__BuilderDesc_ErrExpr)),OOC_IR__BuilderDesc_ErrExpr)((OOC_IR__Builder)i0, 6, (OOC_Scanner_BasicList__Symbol)i1);
        return (OOC_IR__Expression)i0;
        goto l29;
      }
l28:
      i0 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 173516))+40);
      return (OOC_IR__Expression)i0;
l29:
      _failed_function(173156); return 0;
      ;
    }

    
    OOC_IR__Expression OOC_IR__BuilderDesc_NewOperator_BinaryOperator(void) {
      register OOC_INT64 i0,i1,i2,i3,i4,i5,i6,i7,i8,i9,i10,i11;
      OOC_SymbolTable__Type nil;
      OOC_SymbolTable__Type real;
      OOC_IR__Expression result;
      OOC_SymbolTable__Type leftType;
      OOC_SymbolTable__Type rightType;
      OOC_CHAR8 isNumeric;
      OOC_CHAR8 isInteger;
      OOC_CHAR8 isSet;
      OOC_CHAR8 isBoolean;
      OOC_CHAR8 isChar;
      OOC_INT8 variant;
      OOC_IR__ExpressionList exprList;
      auto OOC_CHAR8 OOC_IR__BuilderDesc_NewOperator_BinaryOperator_IsString(OOC_SymbolTable__Type type);
        
        OOC_CHAR8 OOC_IR__BuilderDesc_NewOperator_BinaryOperator_IsString(OOC_SymbolTable__Type type) {
          register OOC_INT64 i0,i1;

          i0 = (OOC_INT64)type;
          i1 = OOC_SymbolTable_TypeRules__IsStringConst((OOC_SymbolTable__Type)i0);
          if (i1) goto l7;
          i1 = OOC_TYPE_TEST(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 174774)))), &_td_OOC_SymbolTable__ArrayDesc);
          if (i1) goto l5;
          i0=0u;
          goto l8;
l5:
          i0 = (OOC_INT64)*(OOC_INT64*)((_check_pointer((_type_guard(i0, ((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 174814)))), &_td_OOC_SymbolTable__ArrayDesc, 174814)), 174820))+80);
          i0 = OOC_SymbolTable_TypeRules__IsCharType((OOC_SymbolTable__Type)i0);
          
          goto l8;
l7:
          i0=1u;
l8:
          return i0;
          ;
        }


      i0 = (OOC_INT64)OOC_SymbolTable_Predef__GetType(16);
      nil = (OOC_SymbolTable__Type)i0;
      i1 = (OOC_INT64)OOC_SymbolTable_Predef__GetType(8);
      real = (OOC_SymbolTable__Type)i1;
      result = (OOC_IR__Expression)(OOC_INT64)0;
      i2 = (OOC_INT64)b;
      i3 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i2, 175043))+40);
      i4 = (OOC_INT64)left;
      i3 = i4==i3;
      if (i3) goto l3;
      i3 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i2, 175068))+40);
      i5 = (OOC_INT64)right;
      i3 = i5==i3;
      
      goto l5;
l3:
      i3=1u;
l5:
      if (i3) goto l168;
      i3 = id;
      i5 = i3==15;
      if (i5) goto l9;
      i5=0u;
      goto l11;
l9:
      i5 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i4, 175346))+8);
      i5 = OOC_SymbolTable_TypeRules__IsIntegerType((OOC_SymbolTable__Type)i5);
      
l11:
      if (i5) goto l13;
      i5=0u;
      goto l15;
l13:
      i5 = (OOC_INT64)right;
      i5 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i5, 175380))+8);
      i5 = OOC_SymbolTable_TypeRules__IsSetType((OOC_SymbolTable__Type)i5);
      
l15:
      if (i5) goto l166;
      i3 = i3==16;
      if (i3) goto l164;
      i2 = OOC_IR__BuilderDesc_WidenToCommon((OOC_IR__Builder)i2, (void*)(OOC_INT64)&left, (void*)(OOC_INT64)&right);
      if (i2) goto l33;
      i0 = (OOC_INT64)left;
      i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 178438))+8);
      i1 = OOC_IR__BuilderDesc_NewOperator_BinaryOperator_IsString((OOC_SymbolTable__Type)i1);
      if (i1) goto l23;
      i1=0u;
      goto l25;
l23:
      i1 = (OOC_INT64)right;
      i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i1, 178461))+8);
      i1 = OOC_IR__BuilderDesc_NewOperator_BinaryOperator_IsString((OOC_SymbolTable__Type)i1);
      
l25:
      if (i1) goto l27;
      i0 = (OOC_INT64)b;
      i1 = (OOC_INT64)sym;
      i0 = (OOC_INT64)OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 178692)))), OOC_IR__BuilderDesc_ErrExpr)),OOC_IR__BuilderDesc_ErrExpr)((OOC_IR__Builder)i0, 7, (OOC_Scanner_BasicList__Symbol)i1);
      
      goto l169;
l27:
      i1 = id;
      i1 = _in(i1,32256u);
      if (i1) goto l30;
      i0 = (OOC_INT64)b;
      i1 = (OOC_INT64)sym;
      i0 = (OOC_INT64)OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 178625)))), OOC_IR__BuilderDesc_ErrExpr)),OOC_IR__BuilderDesc_ErrExpr)((OOC_IR__Builder)i0, 5, (OOC_Scanner_BasicList__Symbol)i1);
      
      goto l169;
l30:
      i1 = (OOC_INT64)right;
      i2 = (OOC_INT64)sym;
      i3 = (OOC_INT64)b;
      i0 = (OOC_INT64)OOC_IR__BuilderDesc_NewCompare((OOC_IR__Builder)i3, (OOC_Scanner_BasicList__Symbol)i2, (OOC_IR__Expression)i0, (OOC_IR__Expression)i1);
      
      goto l169;
l33:
      i2 = (OOC_INT64)left;
      i3 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i2, 175585))+8);
      leftType = (OOC_SymbolTable__Type)i3;
      i4 = (OOC_INT64)right;
      i5 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i4, 175610))+8);
      rightType = (OOC_SymbolTable__Type)i5;
      i5 = OOC_SymbolTable_TypeRules__IsNumericType((OOC_SymbolTable__Type)i3);
      isNumeric = i5;
      i6 = OOC_SymbolTable_TypeRules__IsIntegerType((OOC_SymbolTable__Type)i3);
      isInteger = i6;
      i7 = OOC_SymbolTable_TypeRules__IsSetType((OOC_SymbolTable__Type)i3);
      isSet = i7;
      i8 = OOC_IR__BuilderDesc_NewOperator_IsPredefClass((OOC_SymbolTable__Type)i3, 1u);
      isBoolean = i8;
      i9 = OOC_SymbolTable_TypeRules__IsCharType((OOC_SymbolTable__Type)i3);
      isChar = i9;
      i10 = id;
      i11 = _in(i10,194u);
      if (i11) goto l36;
      i11=0u;
      goto l38;
l36:
      i11=i5;
l38:
      if (i11) goto l156;
      i11 = _in(i10,4u);
      if (i11) goto l42;
      i11=0u;
      goto l44;
l42:
      i11=i5;
l44:
      if (i11) goto l152;
      i1 = _in(i10,24u);
      if (i1) goto l48;
      i1=0u;
      goto l50;
l48:
      i1=i6;
l50:
      if (i1) goto l146;
      i1 = _in(i10,198u);
      if (i1) goto l54;
      i1=0u;
      goto l56;
l54:
      i1=i7;
l56:
      if (i1) goto l138;
      i1 = _in(i10,288u);
      if (i1) goto l60;
      i1=0u;
      goto l62;
l60:
      i1=i8;
l62:
      if (i1) goto l132;
      i1 = _in(i10,32256u);
      if (i1) goto l66;
      i6=0u;
      goto l68;
l66:
      i6 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i2, 177492))+8);
      i6 = OOC_IR__BuilderDesc_NewOperator_BinaryOperator_IsString((OOC_SymbolTable__Type)i6);
      
l68:
      if (i6) goto l70;
      i6=0u;
      goto l72;
l70:
      i6 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i4, 177515))+8);
      i6 = OOC_IR__BuilderDesc_NewOperator_BinaryOperator_IsString((OOC_SymbolTable__Type)i6);
      
l72:
      if (i6) goto l130;
      i6 = i10==6;
      if (i6) goto l76;
      i6=0u;
      goto l85;
l76:
      if (i9) goto l78;
      i6 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i2, 177665))+8);
      i6 = OOC_SymbolTable_TypeRules__IsStringConst((OOC_SymbolTable__Type)i6);
      
      goto l80;
l78:
      i6=1u;
l80:
      if (i6) goto l82;
      i6 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i2, 177704))+8);
      i6 = OOC_SymbolTable_TypeRules__IsSTRING((OOC_SymbolTable__Type)i6);
      
      goto l85;
l82:
      i6=1u;
l85:
      if (i6) goto l128;
      if (i1) goto l88;
      i1=0u;
      goto l93;
l88:
      if (i5) goto l90;
      i1=i9;
      goto l93;
l90:
      i1=1u;
l93:
      if (i1) goto l126;
      i1 = _in(i10,1536u);
      if (i1) goto l97;
      i0=0u;
      goto l122;
l97:
      if (i8) goto l99;
      i1=i7;
      goto l101;
l99:
      i1=1u;
l101:
      if (i1) goto l103;
      i1 = i3==i0;
      
      goto l105;
l103:
      i1=1u;
l105:
      if (i1) goto l107;
      i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i4, 178133))+8);
      i0 = i1==i0;
      
      goto l109;
l107:
      i0=1u;
l109:
      if (i0) goto l111;
      i0 = OOC_TYPE_TEST(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i3, 178174)))), &_td_OOC_SymbolTable__PointerDesc);
      
      goto l113;
l111:
      i0=1u;
l113:
      if (i0) goto l115;
      i0 = OOC_TYPE_TEST(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i3, 178218)))), &_td_OOC_SymbolTable__TypeVarDesc);
      
      goto l117;
l115:
      i0=1u;
l117:
      if (i0) goto l119;
      i0 = OOC_TYPE_TEST(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i3, 178262)))), &_td_OOC_SymbolTable__FormalParsDesc);
      
      goto l122;
l119:
      i0=1u;
l122:
      if (i0) goto l124;
      i0 = (OOC_INT64)b;
      i1 = (OOC_INT64)sym;
      i0 = (OOC_INT64)OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 178367)))), OOC_IR__BuilderDesc_ErrExpr)),OOC_IR__BuilderDesc_ErrExpr)((OOC_IR__Builder)i0, 5, (OOC_Scanner_BasicList__Symbol)i1);
      
      goto l169;
l124:
      i0 = (OOC_INT64)sym;
      i1 = (OOC_INT64)b;
      i0 = (OOC_INT64)OOC_IR__BuilderDesc_NewCompare((OOC_IR__Builder)i1, (OOC_Scanner_BasicList__Symbol)i0, (OOC_IR__Expression)i2, (OOC_IR__Expression)i4);
      
      goto l169;
l126:
      i0 = (OOC_INT64)sym;
      i1 = (OOC_INT64)b;
      i0 = (OOC_INT64)OOC_IR__BuilderDesc_NewCompare((OOC_IR__Builder)i1, (OOC_Scanner_BasicList__Symbol)i0, (OOC_IR__Expression)i2, (OOC_IR__Expression)i4);
      
      goto l169;
l128:
      i0 = (OOC_INT64)RT0__NewObject(_td_OOC_IR__ExpressionList.baseTypes[0], 2);
      exprList = (OOC_IR__ExpressionList)i0;
      i1 = _check_pointer(i0, 177759);
      i3 = OOC_ARRAY_LENGTH(i1, 0);
      *(OOC_INT64*)(i1+(_check_index(0, i3, OOC_UINT8, 177759))*8) = i2;
      i1 = _check_pointer(i0, 177788);
      i2 = OOC_ARRAY_LENGTH(i1, 0);
      *(OOC_INT64*)(i1+(_check_index(1, i2, OOC_UINT8, 177788))*8) = i4;
      i1 = (OOC_INT64)sym;
      i2 = (OOC_INT64)b;
      i0 = (OOC_INT64)OOC_IR__BuilderDesc_NewConcat((OOC_IR__Builder)i2, (OOC_Scanner_BasicList__Symbol)i1, (OOC_IR__ExpressionList)i0);
      
      goto l169;
l130:
      i0 = (OOC_INT64)sym;
      i1 = (OOC_INT64)b;
      i0 = (OOC_INT64)OOC_IR__BuilderDesc_NewCompare((OOC_IR__Builder)i1, (OOC_Scanner_BasicList__Symbol)i0, (OOC_IR__Expression)i2, (OOC_IR__Expression)i4);
      
      goto l169;
l132:
      switch (i10) {
      case 5:
        variant = 20;
        goto l136;
      case 8:
        variant = 21;
        goto l136;
      default:
        _failed_case(i10, 177235);
        goto l136;
      }
l136:
      i0 = variant;
      i1 = (OOC_INT64)sym;
      i3 = (OOC_INT64)b;
      i0 = (OOC_INT64)OOC_IR__BuilderDesc_NewBooleanOp((OOC_IR__Builder)i3, (OOC_Scanner_BasicList__Symbol)i1, i0, (OOC_IR__Expression)i2, (OOC_IR__Expression)i4);
      
      goto l169;
l138:
      switch (i10) {
      case 6:
        variant = 6;
        goto l144;
      case 7:
        variant = 7;
        goto l144;
      case 1:
        variant = 8;
        goto l144;
      case 2:
        variant = 9;
        goto l144;
      default:
        _failed_case(i10, 176920);
        goto l144;
      }
l144:
      i0 = (OOC_INT64)b;
      i1 = variant;
      i3 = (OOC_INT64)sym;
      i0 = (OOC_INT64)OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 177127)))), OOC_IR__BuilderDesc_NewSetOp)),OOC_IR__BuilderDesc_NewSetOp)((OOC_IR__Builder)i0, (OOC_Scanner_BasicList__Symbol)i3, i1, (OOC_IR__Expression)i2, (OOC_IR__Expression)i4);
      return (OOC_IR__Expression)i0;
      i0=(OOC_INT64)0;
      goto l169;
l146:
      switch (i10) {
      case 3:
        variant = 2;
        goto l150;
      case 4:
        variant = 5;
        goto l150;
      default:
        _failed_case(i10, 176624);
        goto l150;
      }
l150:
      i0 = variant;
      i1 = (OOC_INT64)sym;
      i3 = (OOC_INT64)b;
      i0 = (OOC_INT64)OOC_IR__BuilderDesc_NewBinaryArith((OOC_IR__Builder)i3, (OOC_Scanner_BasicList__Symbol)i1, i0, (OOC_IR__Expression)i2, (OOC_IR__Expression)i4);
      
      goto l169;
l152:
      if (!i6) goto l154;
      i0 = (OOC_INT64)b;
      i0 = OOC_IR__BuilderDesc_Widen((OOC_IR__Builder)i0, (void*)(OOC_INT64)&left, (OOC_SymbolTable__Type)i1);
      i0 = (OOC_INT64)b;
      i0 = OOC_IR__BuilderDesc_Widen((OOC_IR__Builder)i0, (void*)(OOC_INT64)&right, (OOC_SymbolTable__Type)i1);
l154:
      i0 = (OOC_INT64)b;
      i1 = (OOC_INT64)sym;
      i2 = (OOC_INT64)left;
      i3 = (OOC_INT64)right;
      i0 = (OOC_INT64)OOC_IR__BuilderDesc_NewBinaryArith((OOC_IR__Builder)i0, (OOC_Scanner_BasicList__Symbol)i1, 3, (OOC_IR__Expression)i2, (OOC_IR__Expression)i3);
      
      goto l169;
l156:
      switch (i10) {
      case 6:
        variant = 0;
        goto l161;
      case 7:
        variant = 1;
        goto l161;
      case 1:
        variant = 4;
        goto l161;
      default:
        _failed_case(i10, 175983);
        goto l161;
      }
l161:
      i0 = variant;
      i1 = (OOC_INT64)sym;
      i3 = (OOC_INT64)b;
      i0 = (OOC_INT64)OOC_IR__BuilderDesc_NewBinaryArith((OOC_IR__Builder)i3, (OOC_Scanner_BasicList__Symbol)i1, i0, (OOC_IR__Expression)i2, (OOC_IR__Expression)i4);
      
      goto l169;
l164:
      i0 = (OOC_INT64)right;
      i1 = (OOC_INT64)sym;
      i0 = (OOC_INT64)OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i2, 175487)))), OOC_IR__BuilderDesc_NewTypeTest)),OOC_IR__BuilderDesc_NewTypeTest)((OOC_IR__Builder)i2, (OOC_Scanner_BasicList__Symbol)i1, (OOC_IR__Expression)i4, (OOC_IR__Expression)i0);
      
      goto l169;
l166:
      i0 = (OOC_INT64)right;
      i1 = (OOC_INT64)sym;
      i0 = (OOC_INT64)OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i2, 175409)))), OOC_IR__BuilderDesc_NewSetMember)),OOC_IR__BuilderDesc_NewSetMember)((OOC_IR__Builder)i2, (OOC_Scanner_BasicList__Symbol)i1, (OOC_IR__Expression)i4, (OOC_IR__Expression)i0);
      
      goto l169;
l168:
      i0 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i2, 175288))+40);
      
l169:
      return (OOC_IR__Expression)i0;
      ;
    }


  i0 = (OOC_INT64)sym;
  i0 = *(OOC_INT8*)((_check_pointer(i0, 178798))+8);
  id = i0;
  i0 = (OOC_INT64)left;
  i0 = i0==(OOC_INT64)0;
  if (i0) goto l3;
  i0 = (OOC_INT64)OOC_IR__BuilderDesc_NewOperator_BinaryOperator();
  return (OOC_IR__Expression)i0;
  goto l4;
l3:
  i0 = (OOC_INT64)OOC_IR__BuilderDesc_NewOperator_UnaryOperator();
  return (OOC_IR__Expression)i0;
l4:
  _failed_function(172189); return 0;
  ;
}

OOC_IR__Expression OOC_IR__BuilderDesc_NewCall(OOC_IR__Builder b, OOC_IR__Expression design, OOC_IR__ExpressionList arguments, OOC_CHAR8 isFunctionCall, OOC_SymbolTable__Item context, OOC_Scanner_BasicList__Symbol endOfArgsSym) {
  register OOC_INT64 i0,i1,i2,i3,i4;
  OOC_SymbolTable__PredefProc predefProc;
  OOC_IR__Expression expr;
  OOC_SymbolTable__Type type;
  OOC_IR__Call call;
  OOC_IR__Expression receiver;
  OOC_SymbolTable__VarDeclArray formalPars;
  OOC_INT16 targetType;
  OOC_INT32 dim;
  OOC_INT32 dummy;
  OOC_INT8 op;
  OOC_IR__Expression delta;
  OOC_IR__Expression code;
  Object_Boxed__Object value;
  auto void OOC_IR__BuilderDesc_NewCall_MakeParameterCompatible(OOC_IR__Builder b, OOC_Scanner_BasicList__Symbol sym, OOC_IR__Expression *arg, OOC_SymbolTable__VarDecl fpar, OOC_SymbolTable__Type fparType);
  auto void OOC_IR__BuilderDesc_NewCall_TransformArgs(OOC_Scanner_BasicList__Symbol sym, OOC_Scanner_BasicList__Symbol endOfArgsSym, OOC_SymbolTable__Type formalParsClosure, OOC_IR__Expression receiver, OOC_IR__ExpressionList *arguments, OOC_SymbolTable__VarDeclArray *argFormalPars);
  auto OOC_CHAR8 OOC_IR__BuilderDesc_NewCall_CheckNumberOfArguments(OOC_INT32 min, OOC_INT32 max);
  auto OOC_IR__Expression OOC_IR__BuilderDesc_NewCall_TranslatePredef(OOC_IR__PredefProc design, OOC_INT16 id);
  auto OOC_CHAR8 OOC_IR__BuilderDesc_NewCall_IsStatement(OOC_IR__Expression expr);
    
    void OOC_IR__BuilderDesc_NewCall_MakeParameterCompatible(OOC_IR__Builder b, OOC_Scanner_BasicList__Symbol sym, OOC_IR__Expression *arg, OOC_SymbolTable__VarDecl fpar, OOC_SymbolTable__Type fparType) {
      register OOC_INT64 i0,i1,i2,i3;
      OOC_SymbolTable__Type argType;
      OOC_CHAR8 ok;

      i0 = (OOC_INT64)*arg;
      i0 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 179981))+8);
      argType = (OOC_SymbolTable__Type)i0;
      i1 = (OOC_INT64)fpar;
      i2 = *(OOC_UINT8*)((_check_pointer(i1, 180002))+105);
      if (!i2) goto l4;
      i0 = (OOC_INT64)OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 180045)))), OOC_SymbolTable__TypeDesc_Deparam)),OOC_SymbolTable__TypeDesc_Deparam)((OOC_SymbolTable__Type)i0);
      argType = (OOC_SymbolTable__Type)i0;
      i2 = (OOC_INT64)fparType;
      i2 = (OOC_INT64)OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i2, 180085)))), OOC_SymbolTable__TypeDesc_Deparam)),OOC_SymbolTable__TypeDesc_Deparam)((OOC_SymbolTable__Type)i2);
      fparType = (OOC_SymbolTable__Type)i2;
      
l4:
      i2 = *(OOC_UINT8*)((_check_pointer(i1, 180128))+111);
      if (i2) goto l7;
      i2=0u;
      goto l9;
l7:
      i2 = OOC_SymbolTable_TypeRules__IsPredefType((OOC_SymbolTable__Type)i0, 16);
      
l9:
      if (i2) goto l87;
      i2 = *(OOC_UINT8*)((_check_pointer(i1, 180334))+107);
      if (i2) goto l36;
      i2 = (OOC_INT64)fparType;
      i3 = OOC_SymbolTable_TypeRules__IsOpenArrayType((OOC_SymbolTable__Type)i2);
      if (i3) goto l23;
      i1 = *(OOC_UINT8*)((_check_pointer(i1, 182658))+105);
      if (i1) goto l17;
      i0=0u;
      goto l19;
l17:
      i0 = OOC_SymbolTable_TypeRules__IsExtensionOfNoParams((OOC_SymbolTable__Type)i0, (OOC_SymbolTable__Type)i2);
      
l19:
      if (i0) goto l21;
      i0 = (OOC_INT64)b;
      i0 = OOC_IR__BuilderDesc_WidenForAssign((OOC_IR__Builder)i0, (void*)(OOC_INT64)arg, (OOC_SymbolTable__Type)i2);
      ok = i0;
      
      goto l32;
l21:
      ok = 1u;
      i0=1u;
      goto l32;
l23:
      i0 = OOC_SymbolTable_TypeRules__IsArrayCompatible((OOC_SymbolTable__Type)i0, (OOC_SymbolTable__Type)i2);
      if (i0) goto l26;
      i0 = (OOC_INT64)*(OOC_INT64*)((_check_pointer((_type_guard(i2, ((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i2, 182537)))), &_td_OOC_SymbolTable__ArrayDesc, 182537)), 182543))+80);
      i0 = OOC_IR__IsPredefType((OOC_SymbolTable__Type)i0, 11);
      
      goto l28;
l26:
      i0=1u;
l28:
      if (i0) goto l30;
      i0 = (OOC_INT64)b;
      i0 = OOC_IR__BuilderDesc_Widen((OOC_IR__Builder)i0, (void*)(OOC_INT64)arg, (OOC_SymbolTable__Type)i2);
      
      goto l31;
l30:
      i0=1u;
l31:
      ok = i0;
      
l32:
      i0 = !i0;
      if (!i0) goto l87;
      i0 = (OOC_INT64)b;
      i1 = (OOC_INT64)*arg;
      i1 = (OOC_INT64)*(OOC_INT64*)(_check_pointer(i1, 183056));
      OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 183020)))), OOC_IR__BuilderDesc_ErrSym)),OOC_IR__BuilderDesc_ErrSym)((OOC_IR__Builder)i0, 12, (OOC_Scanner_BasicList__Symbol)i1);
      OOC_IR__BuilderDesc_SetNameToType((OOC_IR__Builder)i0, (OOC_SymbolTable__Type)i2);
      goto l87;
l36:
      i2 = (OOC_INT64)*arg;
      i3 = (OOC_INT64)b;
      OOC_IR__BuilderDesc_AssertVar((OOC_IR__Builder)i3, (OOC_IR__Expression)i2);
      i1 = *(OOC_UINT8*)((_check_pointer(i1, 180428))+105);
      if (i1) goto l39;
      i1=0u;
      goto l41;
l39:
      i1 = OOC_TYPE_TEST(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 180451)))), &_td_OOC_SymbolTable__PointerDesc);
      
l41:
      if (!i1) goto l44;
      i0 = (OOC_INT64)*arg;
      i1 = (OOC_INT64)*(OOC_INT64*)(_check_pointer(i0, 180576));
      i0 = (OOC_INT64)OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i3, 180562)))), OOC_IR__BuilderDesc_NewDeref)),OOC_IR__BuilderDesc_NewDeref)((OOC_IR__Builder)i3, (OOC_Scanner_BasicList__Symbol)i1, (OOC_IR__Expression)i0);
      *arg = (OOC_IR__Expression)i0;
      i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 180612))+8);
      i0 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 180612))+8);
      i0 = (OOC_INT64)OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i1, 180617)))), OOC_SymbolTable__TypeDesc_Deparam)),OOC_SymbolTable__TypeDesc_Deparam)((OOC_SymbolTable__Type)i0);
      argType = (OOC_SymbolTable__Type)i0;
      
l44:
      i1 = (OOC_INT64)fparType;
      i2 = OOC_SymbolTable_TypeRules__SameType((OOC_SymbolTable__Type)i1, (OOC_SymbolTable__Type)i0);
      if (i2) goto l51;
      i2 = OOC_IR__IsPredefType((OOC_SymbolTable__Type)i1, 11);
      if (i2) goto l49;
      i2=0u;
      goto l53;
l49:
      i2 = OOC_SymbolTable_TypeRules__IsByteCompatible((OOC_SymbolTable__Type)i0);
      
      goto l53;
l51:
      i2=1u;
l53:
      if (i2) goto l59;
      i2 = OOC_IR__IsPredefType((OOC_SymbolTable__Type)i1, 12);
      if (i2) goto l57;
      i2=0u;
      goto l61;
l57:
      i2 = OOC_SymbolTable_TypeRules__IsPtrCompatible((OOC_SymbolTable__Type)i0);
      
      goto l61;
l59:
      i2=1u;
l61:
      if (i2) goto l67;
      i2 = OOC_SymbolTable_TypeRules__IsOpenArrayType((OOC_SymbolTable__Type)i1);
      if (i2) goto l65;
      i2=0u;
      goto l69;
l65:
      i2 = (OOC_INT64)*(OOC_INT64*)((_check_pointer((_type_guard(i1, ((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i1, 180970)))), &_td_OOC_SymbolTable__ArrayDesc, 180970)), 180976))+80);
      i2 = OOC_IR__IsPredefType((OOC_SymbolTable__Type)i2, 11);
      
      goto l69;
l67:
      i2=1u;
l69:
      if (i2) goto l87;
      i2 = OOC_TYPE_TEST(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i1, 181242)))), &_td_OOC_SymbolTable__RecordDesc);
      if (i2) goto l80;
      i2 = OOC_SymbolTable_TypeRules__IsOpenArrayType((OOC_SymbolTable__Type)i1);
      if (i2) goto l75;
      i0 = (OOC_INT64)*arg;
      i0 = (OOC_INT64)*(OOC_INT64*)(_check_pointer(i0, 181998));
      OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i3, 181964)))), OOC_IR__BuilderDesc_ErrSym)),OOC_IR__BuilderDesc_ErrSym)((OOC_IR__Builder)i3, 40, (OOC_Scanner_BasicList__Symbol)i0);
      OOC_IR__BuilderDesc_SetNameToType((OOC_IR__Builder)i3, (OOC_SymbolTable__Type)i1);
      goto l87;
l75:
      i0 = OOC_SymbolTable_TypeRules__IsArrayCompatible((OOC_SymbolTable__Type)i0, (OOC_SymbolTable__Type)i1);
      i0 = !i0;
      if (!i0) goto l87;
      i0 = (OOC_INT64)*arg;
      i0 = (OOC_INT64)*(OOC_INT64*)(_check_pointer(i0, 181829));
      OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i3, 181795)))), OOC_IR__BuilderDesc_ErrSym)),OOC_IR__BuilderDesc_ErrSym)((OOC_IR__Builder)i3, 40, (OOC_Scanner_BasicList__Symbol)i0);
      OOC_IR__BuilderDesc_SetNameToType((OOC_IR__Builder)i3, (OOC_SymbolTable__Type)i1);
      goto l87;
l80:
      i0 = OOC_SymbolTable_TypeRules__IsExtensionOfNoParams((OOC_SymbolTable__Type)i0, (OOC_SymbolTable__Type)i1);
      i0 = !i0;
      if (!i0) goto l87;
      i0 = (OOC_INT64)*arg;
      i0 = (OOC_INT64)*(OOC_INT64*)(_check_pointer(i0, 181494));
      OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i3, 181460)))), OOC_IR__BuilderDesc_ErrSym)),OOC_IR__BuilderDesc_ErrSym)((OOC_IR__Builder)i3, 40, (OOC_Scanner_BasicList__Symbol)i0);
      OOC_IR__BuilderDesc_SetNameToType((OOC_IR__Builder)i3, (OOC_SymbolTable__Type)i1);
l87:
      return;
      ;
    }

    
    void OOC_IR__BuilderDesc_NewCall_TransformArgs(OOC_Scanner_BasicList__Symbol sym, OOC_Scanner_BasicList__Symbol endOfArgsSym, OOC_SymbolTable__Type formalParsClosure, OOC_IR__Expression receiver, OOC_IR__ExpressionList *arguments, OOC_SymbolTable__VarDeclArray *argFormalPars) {
      register OOC_INT64 i0,i1,i2,i3,i4,i5,i6,i7;
      ADT_ArrayList__ArrayList newArgs;
      ADT_ArrayList__ArrayList newFPars;
      OOC_INT32 argIndex;
      OOC_INT32 fparIndex;
      OOC_SymbolTable__Type fparType;
      OOC_SymbolTable__FormalPars formalPars;
      OOC_SymbolTable__VarDecl fpar;
      OOC_IR__Expression arg;
      OOC_SymbolTable__Type argType;
      OOC_INT32 i;
      auto OOC_INT32 OOC_IR__BuilderDesc_NewCall_TransformArgs_Dimensions(OOC_SymbolTable__Type type);
        
        OOC_INT32 OOC_IR__BuilderDesc_NewCall_TransformArgs_Dimensions(OOC_SymbolTable__Type type) {
          register OOC_INT64 i0,i1;

          i0 = (OOC_INT64)type;
          i1 = OOC_SymbolTable_TypeRules__IsStringConst((OOC_SymbolTable__Type)i0);
          if (i1) goto l7;
          i1 = OOC_TYPE_TEST(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 184228)))), &_td_OOC_SymbolTable__ArrayDesc);
          if (i1) goto l5;
          return 0;
          goto l8;
l5:
          i0 = OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer((_type_guard(i0, ((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 184273)))), &_td_OOC_SymbolTable__ArrayDesc, 184273)), 184279)))), OOC_SymbolTable__TypeDesc_ArrayDimensions)),OOC_SymbolTable__TypeDesc_ArrayDimensions)((OOC_SymbolTable__Type)(_type_guard(i0, ((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 184273)))), &_td_OOC_SymbolTable__ArrayDesc, 184273)));
          return i0;
          goto l8;
l7:
          return 1;
l8:
          _failed_function(184098); return 0;
          ;
        }


      i0 = (OOC_INT64)*arguments;
      i1 = OOC_ARRAY_LENGTH((_check_pointer(i0, 184429)), 0);
      i1 = (OOC_INT64)ADT_ArrayList__New(i1);
      newArgs = (ADT_ArrayList__ArrayList)i1;
      i1 = OOC_ARRAY_LENGTH((_check_pointer(i0, 184481)), 0);
      i1 = (OOC_INT64)ADT_ArrayList__New(i1);
      newFPars = (ADT_ArrayList__ArrayList)i1;
      i1 = (OOC_INT64)receiver;
      i1 = i1!=(OOC_INT64)0;
      if (i1) goto l3;
      argIndex = 0;
      fparIndex = 0;
      i1=0;i2=0;
      goto l4;
l3:
      argIndex = (-1);
      fparIndex = (-1);
      i1=(-1);i2=(-1);
l4:
      i3 = (OOC_INT64)formalParsClosure;
      i3 = (OOC_INT64)OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i3, 184685)))), OOC_SymbolTable__TypeDesc_Deparam)),OOC_SymbolTable__TypeDesc_Deparam)((OOC_SymbolTable__Type)i3);
      fparType = (OOC_SymbolTable__Type)i3;
      i3 = _type_guard(i3, ((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i3, 184730)))), &_td_OOC_SymbolTable__FormalParsDesc, 184730);
      formalPars = (OOC_SymbolTable__FormalPars)i3;
      i3 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i3, 184783))+96);
      i3 = OOC_ARRAY_LENGTH((_check_pointer(i3, 184791)), 0);
      i3 = i1!=i3;
      if (i3) goto l7;
      i0=0u;
      goto l9;
l7:
      i0 = OOC_ARRAY_LENGTH((_check_pointer(i0, 184835)), 0);
      i0 = i2!=i0;
      
l9:
      if (i0) goto l11;
      i0=i2;
      goto l61;
l11:
      i0=i2;
l12_loop:
      i2 = i0==(-1);
      if (i2) goto l15;
      i2 = (OOC_INT64)formalPars;
      i2 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i2, 184982))+96);
      i2 = _check_pointer(i2, 184990);
      i3 = OOC_ARRAY_LENGTH(i2, 0);
      i1 = (OOC_INT64)*(OOC_INT64*)(i2+(_check_index(i1, i3, OOC_UINT32, 184990))*8);
      fpar = (OOC_SymbolTable__VarDecl)i1;
      i2 = (OOC_INT64)*arguments;
      i2 = _check_pointer(i2, 185029);
      i3 = OOC_ARRAY_LENGTH(i2, 0);
      i0 = (OOC_INT64)*(OOC_INT64*)(i2+(_check_index(i0, i3, OOC_UINT32, 185029))*8);
      arg = (OOC_IR__Expression)i0;
      
      goto l16;
l15:
      i0 = (OOC_INT64)formalPars;
      i0 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 184902))+72);
      fpar = (OOC_SymbolTable__VarDecl)i0;
      i1 = (OOC_INT64)receiver;
      arg = (OOC_IR__Expression)i1;
      {register OOC_INT64 h0=i0;i0=i1;i1=h0;}
l16:
      i2 = (OOC_INT64)formalParsClosure;
      i3 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i1, 185174))+88);
      i0 = (OOC_INT64)*(OOC_INT64*)(_check_pointer(i0, 185093));
      i4 = (OOC_INT64)b;
      i2 = (OOC_INT64)OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i2, 185161)))), OOC_SymbolTable__TypeDesc_Closure)),OOC_SymbolTable__TypeDesc_Closure)((OOC_SymbolTable__Type)i2, (OOC_SymbolTable__Type)i3);
      OOC_IR__BuilderDesc_NewCall_MakeParameterCompatible((OOC_IR__Builder)i4, (OOC_Scanner_BasicList__Symbol)i0, (void*)(OOC_INT64)&arg, (OOC_SymbolTable__VarDecl)i1, (OOC_SymbolTable__Type)i2);
      i0 = *(OOC_UINT8*)((_check_pointer(i1, 185207))+108);
      if (i0) goto l19;
      i0=0u;
      goto l21;
l19:
      i0 = (OOC_INT64)arg;
      i0 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 185260))+8);
      i0 = OOC_SymbolTable_TypeRules__IsPredefType((OOC_SymbolTable__Type)i0, 16);
      i0 = !i0;
      
l21:
      if (i0) goto l23;
      i0 = (OOC_INT64)newArgs;
      i2 = (OOC_INT64)arg;
      OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 185615)))), ADT_ArrayList__ArrayListDesc_Append)),ADT_ArrayList__ArrayListDesc_Append)((ADT_ArrayList__ArrayList)i0, (Object__Object)i2);
      goto l24;
l23:
      i0 = (OOC_INT64)newArgs;
      i2 = (OOC_INT64)b;
      i3 = (OOC_INT64)arg;
      i4 = (OOC_INT64)sym;
      i2 = (OOC_INT64)OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i2, 185563)))), OOC_IR__BuilderDesc_NewAdr)),OOC_IR__BuilderDesc_NewAdr)((OOC_IR__Builder)i2, (OOC_Scanner_BasicList__Symbol)i4, (OOC_IR__Expression)i3);
      OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 185552)))), ADT_ArrayList__ArrayListDesc_Append)),ADT_ArrayList__ArrayListDesc_Append)((ADT_ArrayList__ArrayList)i0, (Object__Object)i2);
l24:
      i0 = (OOC_INT64)newFPars;
      OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 185660)))), ADT_ArrayList__ArrayListDesc_Append)),ADT_ArrayList__ArrayListDesc_Append)((ADT_ArrayList__ArrayList)i0, (Object__Object)i1);
      i2 = *(OOC_UINT8*)((_check_pointer(i1, 185693))+112);
      if (!i2) goto l52;
      i2 = (OOC_INT64)arg;
      i3 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i2, 185739))+8);
      i2 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i2, 185739))+8);
      i2 = (OOC_INT64)OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i3, 185744)))), OOC_SymbolTable__TypeDesc_Deparam)),OOC_SymbolTable__TypeDesc_Deparam)((OOC_SymbolTable__Type)i2);
      argType = (OOC_SymbolTable__Type)i2;
      i3 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i1, 185782))+88);
      i4 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i1, 185782))+88);
      i3 = (OOC_INT64)OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i3, 185787)))), OOC_SymbolTable__TypeDesc_Deparam)),OOC_SymbolTable__TypeDesc_Deparam)((OOC_SymbolTable__Type)i4);
      fparType = (OOC_SymbolTable__Type)i3;
      i4 = OOC_TYPE_TEST(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i3, 185822)))), &_td_OOC_SymbolTable__ArrayDesc);
      if (i4) goto l35;
      i2 = OOC_TYPE_TEST(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i3, 186806)))), &_td_OOC_SymbolTable__RecordDesc);
      if (!i2) goto l52;
      i1 = *(OOC_UINT8*)((_check_pointer(i1, 186841))+107);
      if (!i1) goto l52;
      i1 = (OOC_INT64)newArgs;
      i2 = (OOC_INT64)arg;
      i3 = (OOC_INT64)*(OOC_INT64*)(_check_pointer(i2, 186908));
      i4 = (OOC_INT64)b;
      i2 = (OOC_INT64)OOC_IR__BuilderDesc_NewTypeTag((OOC_IR__Builder)i4, (OOC_Scanner_BasicList__Symbol)i3, (OOC_IR__Expression)i2);
      OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i1, 186880)))), ADT_ArrayList__ArrayListDesc_Append)),ADT_ArrayList__ArrayListDesc_Append)((ADT_ArrayList__ArrayList)i1, (Object__Object)i2);
      OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 186944)))), ADT_ArrayList__ArrayListDesc_Append)),ADT_ArrayList__ArrayListDesc_Append)((ADT_ArrayList__ArrayList)i0, (Object__Object)(OOC_INT64)0);
      goto l52;
l35:
      i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i3, 185874))+80);
      i1 = OOC_IR__IsPredefType((OOC_SymbolTable__Type)i1, 11);
      if (i1) goto l49;
      i0 = OOC_IR__BuilderDesc_NewCall_TransformArgs_Dimensions((OOC_SymbolTable__Type)i2);
      i1 = (OOC_INT64)fparType;
      i2 = OOC_SymbolTable__ArrayDesc_GetOpenDimensions((OOC_SymbolTable__Array)i1);
      i0 = i0>=i2;
      if (!i0) goto l52;
      i0 = OOC_SymbolTable__ArrayDesc_GetOpenDimensions((OOC_SymbolTable__Array)i1);
      i = 0;
      i1 = 0<i0;
      if (!i1) goto l52;
      i1 = (OOC_INT64)newFPars;
      i2 = (OOC_INT64)newArgs;
      i3=0;
l42_loop:
      i4 = (OOC_INT64)b;
      i5 = (OOC_INT64)arg;
      i6 = (OOC_INT64)*(OOC_INT64*)(_check_pointer(i5, 186691));
      i5 = (OOC_INT64)OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i4, 186678)))), OOC_IR__BuilderDesc_NewLen)),OOC_IR__BuilderDesc_NewLen)((OOC_IR__Builder)i4, (OOC_Scanner_BasicList__Symbol)i6, (OOC_IR__Expression)i5, i3);
      i4 = (OOC_INT64)OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i4, 186669)))), OOC_IR__BuilderDesc_Fold)),OOC_IR__BuilderDesc_Fold)((OOC_IR__Builder)i4, (OOC_IR__Expression)i5);
      OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i2, 186658)))), ADT_ArrayList__ArrayListDesc_Append)),ADT_ArrayList__ArrayListDesc_Append)((ADT_ArrayList__ArrayList)i2, (Object__Object)i4);
      OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i1, 186733)))), ADT_ArrayList__ArrayListDesc_Append)),ADT_ArrayList__ArrayListDesc_Append)((ADT_ArrayList__ArrayList)i1, (Object__Object)(OOC_INT64)0);
      i3 = i3+1;
      i = i3;
      i4 = i3<i0;
      if (i4) goto l42_loop;
      goto l52;
l49:
      i1 = (OOC_INT64)newArgs;
      i3 = (OOC_INT64)b;
      i4 = (OOC_INT64)arg;
      i5 = (OOC_INT64)OOC_SymbolTable_Predef__GetType(6);
      i2 = *(OOC_INT32*)((_check_pointer(i2, 186232))+64);
      i4 = (OOC_INT64)*(OOC_INT64*)(_check_pointer(i4, 186080));
      i2 = (OOC_INT64)Object_BigInt__NewInt(i2);
      i2 = (OOC_INT64)OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i3, 186065)))), OOC_IR__BuilderDesc_NewConst)),OOC_IR__BuilderDesc_NewConst)((OOC_IR__Builder)i3, (OOC_Scanner_BasicList__Symbol)i4, (OOC_SymbolTable__Type)i5, (Object_Boxed__Object)i2);
      OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i1, 186054)))), ADT_ArrayList__ArrayListDesc_Append)),ADT_ArrayList__ArrayListDesc_Append)((ADT_ArrayList__ArrayList)i1, (Object__Object)i2);
      OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 186264)))), ADT_ArrayList__ArrayListDesc_Append)),ADT_ArrayList__ArrayListDesc_Append)((ADT_ArrayList__ArrayList)i0, (Object__Object)(OOC_INT64)0);
l52:
      i0 = argIndex;
      i0 = i0+1;
      i1 = fparIndex;
      argIndex = i0;
      i1 = i1+1;
      fparIndex = i1;
      i2 = (OOC_INT64)formalPars;
      i2 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i2, 184783))+96);
      i2 = OOC_ARRAY_LENGTH((_check_pointer(i2, 184791)), 0);
      i2 = i1!=i2;
      if (i2) goto l55;
      i2=0u;
      goto l57;
l55:
      i2 = (OOC_INT64)*arguments;
      i2 = OOC_ARRAY_LENGTH((_check_pointer(i2, 184835)), 0);
      i2 = i0!=i2;
      
l57:
      if (i2) goto l12_loop;
l61:
      i2 = (OOC_INT64)formalPars;
      i3 = (OOC_INT64)newArgs;
      i4 = *(OOC_UINT8*)((_check_pointer(i2, 187195))+104);
      if (!i4) goto l74;
      i4 = (OOC_INT64)*arguments;
      i5 = OOC_ARRAY_LENGTH((_check_pointer(i4, 187260)), 0);
      i5 = i0!=i5;
      if (!i5) goto l74;
      i5 = (OOC_INT64)newFPars;
      
l68_loop:
      i6 = _check_pointer(i4, 187293);
      i7 = OOC_ARRAY_LENGTH(i6, 0);
      i6 = (OOC_INT64)*(OOC_INT64*)(i6+(_check_index(i0, i7, OOC_UINT32, 187293))*8);
      arg = (OOC_IR__Expression)i6;
      OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i3, 187322)))), ADT_ArrayList__ArrayListDesc_Append)),ADT_ArrayList__ArrayListDesc_Append)((ADT_ArrayList__ArrayList)i3, (Object__Object)i6);
      OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i5, 187356)))), ADT_ArrayList__ArrayListDesc_Append)),ADT_ArrayList__ArrayListDesc_Append)((ADT_ArrayList__ArrayList)i5, (Object__Object)(OOC_INT64)0);
      i0 = i0+1;
      argIndex = i0;
      i6 = OOC_ARRAY_LENGTH((_check_pointer(i4, 187260)), 0);
      i6 = i0!=i6;
      if (i6) goto l68_loop;
l74:
      i2 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i2, 187466))+96);
      i2 = OOC_ARRAY_LENGTH((_check_pointer(i2, 187474)), 0);
      i1 = i1!=i2;
      if (i1) goto l80;
      i1 = (OOC_INT64)*arguments;
      i2 = OOC_ARRAY_LENGTH((_check_pointer(i1, 187624)), 0);
      i2 = i0!=i2;
      if (!i2) goto l81;
      i2 = (OOC_INT64)b;
      i1 = _check_pointer(i1, 187731);
      i4 = OOC_ARRAY_LENGTH(i1, 0);
      i0 = (OOC_INT64)*(OOC_INT64*)(i1+(_check_index(i0, i4, OOC_UINT32, 187731))*8);
      i0 = (OOC_INT64)*(OOC_INT64*)(_check_pointer(i0, 187741));
      OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i2, 187694)))), OOC_IR__BuilderDesc_ErrSym)),OOC_IR__BuilderDesc_ErrSym)((OOC_IR__Builder)i2, 39, (OOC_Scanner_BasicList__Symbol)i0);
      goto l81;
l80:
      i0 = (OOC_INT64)b;
      i1 = (OOC_INT64)endOfArgsSym;
      OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 187544)))), OOC_IR__BuilderDesc_ErrSym)),OOC_IR__BuilderDesc_ErrSym)((OOC_IR__Builder)i0, 38, (OOC_Scanner_BasicList__Symbol)i1);
l81:
      i0 = *(OOC_INT32*)((_check_pointer(i3, 187796))+8);
      *arguments = (OOC_IR__ExpressionList)((OOC_INT64)RT0__NewObject(_td_OOC_IR__ExpressionList.baseTypes[0], i0));
      i0 = *(OOC_INT32*)((_check_pointer(i3, 187838))+8);
      *argFormalPars = (OOC_SymbolTable__VarDeclArray)((OOC_INT64)RT0__NewObject(_td_OOC_SymbolTable__VarDeclArray.baseTypes[0], i0));
      i0 = *(OOC_INT32*)((_check_pointer(i3, 187874))+8);
      i = 0;
      i1 = 0<i0;
      if (!i1) goto l93;
      i1 = (OOC_INT64)newFPars;
      i2=0;
l84_loop:
      i4 = (OOC_INT64)*arguments;
      i4 = _check_pointer(i4, 187903);
      i5 = OOC_ARRAY_LENGTH(i4, 0);
      i6 = (OOC_INT64)*(OOC_INT64*)(_check_pointer(i3, 187917));
      i6 = _check_pointer(i6, 187924);
      i7 = OOC_ARRAY_LENGTH(i6, 0);
      i6 = (OOC_INT64)*(OOC_INT64*)(i6+(_check_index(i2, i7, OOC_UINT32, 187924))*8);
      *(OOC_INT64*)(i4+(_check_index(i2, i5, OOC_UINT32, 187903))*8) = (_type_guard(i6, ((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i6, 187928)))), &_td_OOC_IR__ExpressionDesc, 187928));
      i4 = (OOC_INT64)*(OOC_INT64*)(_check_pointer(i1, 187961));
      i4 = _check_pointer(i4, 187968);
      i5 = OOC_ARRAY_LENGTH(i4, 0);
      i4 = (OOC_INT64)*(OOC_INT64*)(i4+(_check_index(i2, i5, OOC_UINT32, 187968))*8);
      i4 = i4==(OOC_INT64)0;
      if (i4) goto l87;
      i4 = (OOC_INT64)*argFormalPars;
      i4 = _check_pointer(i4, 188055);
      i5 = OOC_ARRAY_LENGTH(i4, 0);
      i6 = (OOC_INT64)*(OOC_INT64*)(_check_pointer(i1, 188070));
      i6 = _check_pointer(i6, 188077);
      i7 = OOC_ARRAY_LENGTH(i6, 0);
      i6 = (OOC_INT64)*(OOC_INT64*)(i6+(_check_index(i2, i7, OOC_UINT32, 188077))*8);
      *(OOC_INT64*)(i4+(_check_index(i2, i5, OOC_UINT32, 188055))*8) = (_type_guard(i6, ((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i6, 188085)))), &_td_OOC_SymbolTable__VarDeclDesc, 188085));
      goto l88;
l87:
      i4 = (OOC_INT64)*argFormalPars;
      i4 = _check_pointer(i4, 188007);
      i5 = OOC_ARRAY_LENGTH(i4, 0);
      *(OOC_INT64*)(i4+(_check_index(i2, i5, OOC_UINT32, 188007))*8) = (OOC_INT64)0;
l88:
      i2 = i2+1;
      i = i2;
      i4 = i2<i0;
      if (i4) goto l84_loop;
l93:
      return;
      ;
    }

    
    OOC_CHAR8 OOC_IR__BuilderDesc_NewCall_CheckNumberOfArguments(OOC_INT32 min, OOC_INT32 max) {
      register OOC_INT64 i0,i1,i2;

      i0 = (OOC_INT64)arguments;
      i1 = OOC_ARRAY_LENGTH((_check_pointer(i0, 188242)), 0);
      i2 = min;
      i1 = i1<i2;
      if (i1) goto l3;
      i0 = OOC_ARRAY_LENGTH((_check_pointer(i0, 188270)), 0);
      i1 = max;
      i0 = i0>i1;
      
      goto l5;
l3:
      i0=1u;
l5:
      if (i0) goto l7;
      return 1u;
      goto l8;
l7:
      i0 = (OOC_INT64)b;
      i1 = (OOC_INT64)design;
      i1 = (OOC_INT64)*(OOC_INT64*)(_check_pointer(i1, 188334));
      OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 188294)))), OOC_IR__BuilderDesc_ErrSym)),OOC_IR__BuilderDesc_ErrSym)((OOC_IR__Builder)i0, 13, (OOC_Scanner_BasicList__Symbol)i1);
      return 0u;
l8:
      _failed_function(188155); return 0;
      ;
    }

    
    OOC_IR__Expression OOC_IR__BuilderDesc_NewCall_TranslatePredef(OOC_IR__PredefProc design, OOC_INT16 id) {
      register OOC_INT64 i0,i1,i2,i3,i4,i5,i6,i7;
      auto OOC_IR__ExpressionList OOC_IR__BuilderDesc_NewCall_TranslatePredef_StripFirst(OOC_IR__ExpressionList exprList);
        
        OOC_IR__ExpressionList OOC_IR__BuilderDesc_NewCall_TranslatePredef_StripFirst(OOC_IR__ExpressionList exprList) {
          register OOC_INT64 i0,i1,i2,i3,i4,i5,i6,i7;
          OOC_IR__ExpressionList newList;
          OOC_INT32 i;

          i0 = (OOC_INT64)exprList;
          i1 = OOC_ARRAY_LENGTH((_check_pointer(i0, 188728)), 0);
          i1 = (OOC_INT64)RT0__NewObject(_td_OOC_IR__ExpressionList.baseTypes[0], (i1-1));
          newList = (OOC_IR__ExpressionList)i1;
          i = 1;
          i2 = OOC_ARRAY_LENGTH((_check_pointer(i0, 188769)), 0);
          i3 = 1<i2;
          if (!i3) goto l8;
          i3=1;
l3_loop:
          i4 = _check_pointer(i1, 188794);
          i5 = OOC_ARRAY_LENGTH(i4, 0);
          i6 = _check_pointer(i0, 188811);
          i7 = OOC_ARRAY_LENGTH(i6, 0);
          i6 = (OOC_INT64)*(OOC_INT64*)(i6+(_check_index(i3, i7, OOC_UINT32, 188811))*8);
          *(OOC_INT64*)(i4+(_check_index((i3-1), i5, OOC_UINT32, 188794))*8) = i6;
          i3 = i3+1;
          i = i3;
          i4 = i3<i2;
          if (i4) goto l3_loop;
l8:
          return (OOC_IR__ExpressionList)i1;
          ;
        }


      i0 = id;
      switch (i0) {
      case 0:
        i0 = (OOC_INT64)arguments;
        i1 = OOC_ARRAY_LENGTH((_check_pointer(i0, 188990)), 0);
        i1 = i1>1;
        if (i1) goto l5;
        code = (OOC_IR__Expression)(OOC_INT64)0;
        i1=(OOC_INT64)0;
        goto l6;
l5:
        i1 = _check_pointer(i0, 189030);
        i2 = OOC_ARRAY_LENGTH(i1, 0);
        i1 = (OOC_INT64)*(OOC_INT64*)(i1+(_check_index(1, i2, OOC_UINT8, 189030))*8);
        code = (OOC_IR__Expression)i1;
        
l6:
        i2 = (OOC_INT64)design;
        i0 = _check_pointer(i0, 189135);
        i3 = OOC_ARRAY_LENGTH(i0, 0);
        i4 = (OOC_INT64)*(OOC_INT64*)(_check_pointer(i2, 189212));
        i4 = *(OOC_INT32*)((_check_pointer(i4, 189217))+28);
        i0 = (OOC_INT64)*(OOC_INT64*)(i0+(_check_index(0, i3, OOC_UINT8, 189135))*8);
        i2 = (OOC_INT64)*(OOC_INT64*)(_check_pointer(i2, 189119));
        i3 = (OOC_INT64)OOC_Config_StdPragmas__assertions;
        i5 = (OOC_INT64)b;
        i3 = OOC_IR__GetPragmaValue((OOC_IR__Builder)i5, (Config_Section_Options__Option)i3, i4);
        i0 = (OOC_INT64)OOC_IR__BuilderDesc_NewAssert((OOC_IR__Builder)i5, (OOC_Scanner_BasicList__Symbol)i2, (OOC_IR__Expression)i0, (OOC_IR__Expression)i1, (!i3));
        return (OOC_IR__Expression)i0;
        goto l161;
      case 1:
        i0 = (OOC_INT64)design;
        i1 = (OOC_INT64)arguments;
        i1 = _check_pointer(i1, 189304);
        i2 = OOC_ARRAY_LENGTH(i1, 0);
        i1 = (OOC_INT64)*(OOC_INT64*)(i1+(_check_index(0, i2, OOC_UINT8, 189304))*8);
        i0 = (OOC_INT64)*(OOC_INT64*)(_check_pointer(i0, 189283));
        i2 = (OOC_INT64)b;
        i0 = (OOC_INT64)OOC_IR__BuilderDesc_NewAssert((OOC_IR__Builder)i2, (OOC_Scanner_BasicList__Symbol)i0, (OOC_IR__Expression)(OOC_INT64)0, (OOC_IR__Expression)i1, 0u);
        return (OOC_IR__Expression)i0;
        goto l161;
      case 22:
        i0 = (OOC_INT64)b;
        i1 = (OOC_INT64)design;
        i2 = (OOC_INT64)arguments;
        i3 = _check_pointer(i2, 189394);
        i4 = OOC_ARRAY_LENGTH(i3, 0);
        i5 = _check_pointer(i2, 189408);
        i6 = OOC_ARRAY_LENGTH(i5, 0);
        i2 = _check_pointer(i2, 189479);
        i7 = OOC_ARRAY_LENGTH(i2, 0);
        i3 = (OOC_INT64)*(OOC_INT64*)(i3+(_check_index(0, i4, OOC_UINT8, 189394))*8);
        i4 = (OOC_INT64)*(OOC_INT64*)(i5+(_check_index(1, i6, OOC_UINT8, 189408))*8);
        i2 = (OOC_INT64)*(OOC_INT64*)(i2+(_check_index(1, i7, OOC_UINT8, 189479))*8);
        i5 = (OOC_INT64)*(OOC_INT64*)(_check_pointer(i1, 189463));
        i1 = (OOC_INT64)*(OOC_INT64*)(_check_pointer(i1, 189378));
        i2 = (OOC_INT64)OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 189447)))), OOC_IR__BuilderDesc_NewLen)),OOC_IR__BuilderDesc_NewLen)((OOC_IR__Builder)i0, (OOC_Scanner_BasicList__Symbol)i5, (OOC_IR__Expression)i2, 0);
        i0 = (OOC_INT64)OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 189355)))), OOC_IR__BuilderDesc_NewCopyString)),OOC_IR__BuilderDesc_NewCopyString)((OOC_IR__Builder)i0, (OOC_Scanner_BasicList__Symbol)i1, (OOC_IR__Expression)i3, (OOC_IR__Expression)i4, (OOC_IR__Expression)i2);
        return (OOC_IR__Expression)i0;
        goto l161;
      case 21:
        i0 = (OOC_INT64)arguments;
        i1 = _check_pointer(i0, 189543);
        i2 = OOC_ARRAY_LENGTH(i1, 0);
        i1 = (OOC_INT64)*(OOC_INT64*)(i1+(_check_index(0, i2, OOC_UINT8, 189543))*8);
        i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i1, 189546))+8);
        i0 = _check_pointer(i0, 189543);
        i2 = OOC_ARRAY_LENGTH(i0, 0);
        i0 = (OOC_INT64)*(OOC_INT64*)(i0+(_check_index(0, i2, OOC_UINT8, 189543))*8);
        i0 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 189546))+8);
        i0 = (OOC_INT64)OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i1, 189551)))), OOC_SymbolTable__TypeDesc_Deparam)),OOC_SymbolTable__TypeDesc_Deparam)((OOC_SymbolTable__Type)i0);
        type = (OOC_SymbolTable__Type)i0;
        i1 = (OOC_INT64)b;
        i2 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i1, 189583))+48);
        i2 = i0==i2;
        if (i2) goto l29;
        i0 = OOC_TYPE_TEST(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 189794)))), &_td_OOC_SymbolTable__PointerDesc);
        if (i0) goto l14;
        i0 = (OOC_INT64)arguments;
        i0 = _check_pointer(i0, 190699);
        i2 = OOC_ARRAY_LENGTH(i0, 0);
        i0 = (OOC_INT64)*(OOC_INT64*)(i0+(_check_index(0, i2, OOC_UINT8, 190699))*8);
        i0 = (OOC_INT64)*(OOC_INT64*)(_check_pointer(i0, 190702));
        OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i1, 190667)))), OOC_IR__BuilderDesc_ErrSym)),OOC_IR__BuilderDesc_ErrSym)((OOC_IR__Builder)i1, 50, (OOC_Scanner_BasicList__Symbol)i0);
        goto l30;
l14:
        i0 = (OOC_INT64)arguments;
        i0 = _check_pointer(i0, 189846);
        i2 = OOC_ARRAY_LENGTH(i0, 0);
        i0 = (OOC_INT64)*(OOC_INT64*)(i0+(_check_index(0, i2, OOC_UINT8, 189846))*8);
        OOC_IR__BuilderDesc_AssertVar((OOC_IR__Builder)i1, (OOC_IR__Expression)i0);
        i0 = (OOC_INT64)type;
        i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer((_type_guard(i0, ((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 189879)))), &_td_OOC_SymbolTable__PointerDesc, 189879)), 189887))+72);
        i0 = (OOC_INT64)*(OOC_INT64*)((_check_pointer((_type_guard(i0, ((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 189879)))), &_td_OOC_SymbolTable__PointerDesc, 189879)), 189887))+72);
        i0 = (OOC_INT64)OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i1, 189896)))), OOC_SymbolTable__TypeDesc_Deparam)),OOC_SymbolTable__TypeDesc_Deparam)((OOC_SymbolTable__Type)i0);
        type = (OOC_SymbolTable__Type)i0;
        i1 = OOC_TYPE_TEST(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 189927)))), &_td_OOC_SymbolTable__ArrayDesc);
        if (i1) goto l23;
        i0 = OOC_SymbolTable_TypeRules__VariableInstance((OOC_SymbolTable__Type)i0);
        i0 = !i0;
        if (!i0) goto l19;
        i0 = (OOC_INT64)b;
        i1 = (OOC_INT64)arguments;
        i1 = _check_pointer(i1, 190379);
        i2 = OOC_ARRAY_LENGTH(i1, 0);
        i1 = (OOC_INT64)*(OOC_INT64*)(i1+(_check_index(0, i2, OOC_UINT8, 190379))*8);
        i1 = (OOC_INT64)*(OOC_INT64*)(_check_pointer(i1, 190382));
        OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 190340)))), OOC_IR__BuilderDesc_ErrSym)),OOC_IR__BuilderDesc_ErrSym)((OOC_IR__Builder)i0, 56, (OOC_Scanner_BasicList__Symbol)i1);
l19:
        i0 = OOC_IR__BuilderDesc_NewCall_CheckNumberOfArguments(1, 1);
        if (!i0) goto l30;
        i0 = (OOC_INT64)b;
        i1 = (OOC_INT64)design;
        i2 = (OOC_INT64)arguments;
        i3 = _check_pointer(i2, 190534);
        i4 = OOC_ARRAY_LENGTH(i3, 0);
        i2 = _check_pointer(i2, 190594);
        i5 = OOC_ARRAY_LENGTH(i2, 0);
        i2 = (OOC_INT64)*(OOC_INT64*)(i2+(_check_index(0, i5, OOC_UINT8, 190594))*8);
        i2 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i2, 190597))+8);
        i3 = (OOC_INT64)*(OOC_INT64*)(i3+(_check_index(0, i4, OOC_UINT8, 190534))*8);
        i4 = (OOC_INT64)*(OOC_INT64*)(_check_pointer(i1, 190579));
        i1 = (OOC_INT64)*(OOC_INT64*)(_check_pointer(i1, 190519));
        i2 = (OOC_INT64)OOC_IR__BuilderDesc_NewNewObject((OOC_IR__Builder)i0, (OOC_Scanner_BasicList__Symbol)i4, (OOC_SymbolTable__Type)i2, (OOC_IR__ExpressionList)(OOC_INT64)0);
        i0 = (OOC_INT64)OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 190478)))), OOC_IR__BuilderDesc_NewAssignment)),OOC_IR__BuilderDesc_NewAssignment)((OOC_IR__Builder)i0, (OOC_Scanner_BasicList__Symbol)i1, (OOC_IR__Expression)i3, (OOC_IR__Expression)i2);
        return (OOC_IR__Expression)i0;
        goto l30;
l23:
        i0 = OOC_SymbolTable__ArrayDesc_GetOpenDimensions((OOC_SymbolTable__Array)(_type_guard(i0, ((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 189976)))), &_td_OOC_SymbolTable__ArrayDesc, 189976)));
        i0 = 1+i0;
        dim = i0;
        i0 = OOC_IR__BuilderDesc_NewCall_CheckNumberOfArguments(i0, i0);
        if (!i0) goto l30;
        i0 = (OOC_INT64)b;
        i1 = (OOC_INT64)design;
        i2 = (OOC_INT64)arguments;
        i3 = _check_pointer(i2, 190136);
        i4 = OOC_ARRAY_LENGTH(i3, 0);
        i5 = _check_pointer(i2, 190196);
        i6 = OOC_ARRAY_LENGTH(i5, 0);
        i5 = (OOC_INT64)*(OOC_INT64*)(i5+(_check_index(0, i6, OOC_UINT8, 190196))*8);
        i5 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i5, 190199))+8);
        i3 = (OOC_INT64)*(OOC_INT64*)(i3+(_check_index(0, i4, OOC_UINT8, 190136))*8);
        i4 = (OOC_INT64)*(OOC_INT64*)(_check_pointer(i1, 190181));
        i1 = (OOC_INT64)*(OOC_INT64*)(_check_pointer(i1, 190121));
        i2 = (OOC_INT64)OOC_IR__BuilderDesc_NewNewObject((OOC_IR__Builder)i0, (OOC_Scanner_BasicList__Symbol)i4, (OOC_SymbolTable__Type)i5, (OOC_IR__ExpressionList)i2);
        i0 = (OOC_INT64)OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 190080)))), OOC_IR__BuilderDesc_NewAssignment)),OOC_IR__BuilderDesc_NewAssignment)((OOC_IR__Builder)i0, (OOC_Scanner_BasicList__Symbol)i1, (OOC_IR__Expression)i3, (OOC_IR__Expression)i2);
        return (OOC_IR__Expression)i0;
        goto l30;
l29:
        i0 = (OOC_INT64)design;
        i2 = (OOC_INT64)arguments;
        i3 = _check_pointer(i2, 189654);
        i4 = OOC_ARRAY_LENGTH(i3, 0);
        i3 = (OOC_INT64)*(OOC_INT64*)(i3+(_check_index(0, i4, OOC_UINT8, 189654))*8);
        i0 = (OOC_INT64)*(OOC_INT64*)(_check_pointer(i0, 189639));
        i2 = (OOC_INT64)OOC_IR__BuilderDesc_NewCall_TranslatePredef_StripFirst((OOC_IR__ExpressionList)i2);
        i4 = (OOC_INT64)context;
        i5 = (OOC_INT64)endOfArgsSym;
        i0 = (OOC_INT64)OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i1, 189617)))), OOC_IR__BuilderDesc_NewConstructor)),OOC_IR__BuilderDesc_NewConstructor)((OOC_IR__Builder)i1, (OOC_Scanner_BasicList__Symbol)i0, (OOC_IR__Expression)i3, (OOC_IR__ExpressionList)i2, (OOC_SymbolTable__Item)i4, (OOC_Scanner_BasicList__Symbol)i5);
        return (OOC_IR__Expression)i0;
l30:
        i0 = (OOC_INT64)b;
        i0 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 190738))+40);
        return (OOC_IR__Expression)i0;
        goto l161;
      case 4:
      case 5:
        i0 = (OOC_INT64)arguments;
        i1 = _check_pointer(i0, 190809);
        i2 = OOC_ARRAY_LENGTH(i1, 0);
        i0 = _check_pointer(i0, 190841);
        i3 = OOC_ARRAY_LENGTH(i0, 0);
        i0 = (OOC_INT64)*(OOC_INT64*)(i0+(_check_index(0, i3, OOC_UINT8, 190841))*8);
        i3 = (OOC_INT64)b;
        i0 = (OOC_INT64)OOC_IR__BuilderDesc_AssertInteger((OOC_IR__Builder)i3, (OOC_IR__Expression)i0);
        *(OOC_INT64*)(i1+(_check_index(0, i2, OOC_UINT8, 190809))*8) = i0;
        i0 = (OOC_INT64)arguments;
        i0 = _check_pointer(i0, 190876);
        i1 = OOC_ARRAY_LENGTH(i0, 0);
        i0 = (OOC_INT64)*(OOC_INT64*)(i0+(_check_index(0, i1, OOC_UINT8, 190876))*8);
        i1 = (OOC_INT64)b;
        OOC_IR__BuilderDesc_AssertVar((OOC_IR__Builder)i1, (OOC_IR__Expression)i0);
        i0 = (OOC_INT64)arguments;
        i1 = OOC_ARRAY_LENGTH((_check_pointer(i0, 190908)), 0);
        i1 = i1==1;
        if (i1) goto l34;
        i0 = _check_pointer(i0, 191026);
        i1 = OOC_ARRAY_LENGTH(i0, 0);
        i0 = (OOC_INT64)*(OOC_INT64*)(i0+(_check_index(1, i1, OOC_UINT8, 191026))*8);
        delta = (OOC_IR__Expression)i0;
        goto l35;
l34:
        i1 = (OOC_INT64)design;
        i0 = _check_pointer(i0, 190973);
        i2 = OOC_ARRAY_LENGTH(i0, 0);
        i0 = (OOC_INT64)*(OOC_INT64*)(i0+(_check_index(0, i2, OOC_UINT8, 190973))*8);
        i0 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 190976))+8);
        i1 = (OOC_INT64)*(OOC_INT64*)(_check_pointer(i1, 190957));
        i2 = (OOC_INT64)b;
        i0 = (OOC_INT64)OOC_IR__BuilderDesc_GetOne((OOC_IR__Builder)i2, (OOC_Scanner_BasicList__Symbol)i1, (OOC_SymbolTable__Type)i0);
        delta = (OOC_IR__Expression)i0;
l35:
        i0 = (OOC_INT64)arguments;
        i0 = _check_pointer(i0, 191079);
        i1 = OOC_ARRAY_LENGTH(i0, 0);
        i0 = (OOC_INT64)*(OOC_INT64*)(i0+(_check_index(0, i1, OOC_UINT8, 191079))*8);
        i0 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 191082))+8);
        i1 = (OOC_INT64)b;
        i0 = OOC_IR__BuilderDesc_Widen((OOC_IR__Builder)i1, (void*)(OOC_INT64)&delta, (OOC_SymbolTable__Type)i0);
        if (i0) goto l38;
        i0 = (OOC_INT64)b;
        i1 = (OOC_INT64)delta;
        i1 = (OOC_INT64)*(OOC_INT64*)(_check_pointer(i1, 191469));
        OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 191441)))), OOC_IR__BuilderDesc_ErrSym)),OOC_IR__BuilderDesc_ErrSym)((OOC_IR__Builder)i0, 5, (OOC_Scanner_BasicList__Symbol)i1);
        i0 = (OOC_INT64)b;
        i1 = (OOC_INT64)design;
        i2 = (OOC_INT64)arguments;
        i3 = _check_pointer(i2, 191531);
        i4 = OOC_ARRAY_LENGTH(i3, 0);
        i2 = _check_pointer(i2, 191545);
        i5 = OOC_ARRAY_LENGTH(i2, 0);
        i3 = (OOC_INT64)*(OOC_INT64*)(i3+(_check_index(0, i4, OOC_UINT8, 191531))*8);
        i2 = (OOC_INT64)*(OOC_INT64*)(i2+(_check_index(0, i5, OOC_UINT8, 191545))*8);
        i1 = (OOC_INT64)*(OOC_INT64*)(_check_pointer(i1, 191516));
        i0 = (OOC_INT64)OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 191494)))), OOC_IR__BuilderDesc_NewAssignment)),OOC_IR__BuilderDesc_NewAssignment)((OOC_IR__Builder)i0, (OOC_Scanner_BasicList__Symbol)i1, (OOC_IR__Expression)i3, (OOC_IR__Expression)i2);
        return (OOC_IR__Expression)i0;
        goto l161;
l38:
        i0 = (OOC_INT64)design;
        i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 191114))+16);
        i1 = *(OOC_INT16*)((_check_pointer((_type_guard(i1, ((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i1, 191125)))), &_td_OOC_SymbolTable__PredefProcDesc, 191125)), 191136))+88);
        i1 = i1==4;
        if (i1) goto l41;
        op = 1;
        i1=1;
        goto l42;
l41:
        op = 0;
        i1=0;
l42:
        i2 = (OOC_INT64)arguments;
        i2 = _check_pointer(i2, 191403);
        i3 = OOC_ARRAY_LENGTH(i2, 0);
        i2 = (OOC_INT64)*(OOC_INT64*)(i2+(_check_index(0, i3, OOC_UINT8, 191403))*8);
        i3 = (OOC_INT64)*(OOC_INT64*)(_check_pointer(i0, 191383));
        i0 = (OOC_INT64)*(OOC_INT64*)(_check_pointer(i0, 191285));
        i4 = (OOC_INT64)delta;
        i5 = (OOC_INT64)b;
        i1 = (OOC_INT64)OOC_IR__BuilderDesc_NewBinaryArith((OOC_IR__Builder)i5, (OOC_Scanner_BasicList__Symbol)i3, i1, (OOC_IR__Expression)i2, (OOC_IR__Expression)i4);
        i0 = (OOC_INT64)OOC_IR__BuilderDesc_NewAssignOp((OOC_IR__Builder)i5, (OOC_Scanner_BasicList__Symbol)i0, (OOC_IR__Expression)i1);
        return (OOC_IR__Expression)i0;
        goto l161;
      case 6:
      case 7:
        i0 = (OOC_INT64)arguments;
        i0 = _check_pointer(i0, 191636);
        i1 = OOC_ARRAY_LENGTH(i0, 0);
        i0 = (OOC_INT64)*(OOC_INT64*)(i0+(_check_index(0, i1, OOC_UINT8, 191636))*8);
        i1 = (OOC_INT64)b;
        OOC_IR__BuilderDesc_AssertVar((OOC_IR__Builder)i1, (OOC_IR__Expression)i0);
        i0 = (OOC_INT64)arguments;
        i1 = _check_pointer(i0, 191659);
        i2 = OOC_ARRAY_LENGTH(i1, 0);
        i0 = _check_pointer(i0, 191687);
        i3 = OOC_ARRAY_LENGTH(i0, 0);
        i0 = (OOC_INT64)*(OOC_INT64*)(i0+(_check_index(0, i3, OOC_UINT8, 191687))*8);
        i3 = (OOC_INT64)b;
        i0 = (OOC_INT64)OOC_IR__BuilderDesc_AssertSet((OOC_IR__Builder)i3, (OOC_IR__Expression)i0);
        *(OOC_INT64*)(i1+(_check_index(0, i2, OOC_UINT8, 191659))*8) = i0;
        i0 = (OOC_INT64)arguments;
        i1 = _check_pointer(i0, 191710);
        i2 = OOC_ARRAY_LENGTH(i1, 0);
        i0 = _check_pointer(i0, 191742);
        i3 = OOC_ARRAY_LENGTH(i0, 0);
        i0 = (OOC_INT64)*(OOC_INT64*)(i0+(_check_index(1, i3, OOC_UINT8, 191742))*8);
        i3 = (OOC_INT64)b;
        i0 = (OOC_INT64)OOC_IR__BuilderDesc_AssertInteger((OOC_IR__Builder)i3, (OOC_IR__Expression)i0);
        *(OOC_INT64*)(i1+(_check_index(1, i2, OOC_UINT8, 191710))*8) = i0;
        i0 = (OOC_INT64)design;
        i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 191766))+16);
        i1 = *(OOC_INT16*)((_check_pointer((_type_guard(i1, ((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i1, 191777)))), &_td_OOC_SymbolTable__PredefProcDesc, 191777)), 191788))+88);
        i1 = i1==6;
        if (i1) goto l47;
        op = 23;
        i1=23;
        goto l48;
l47:
        op = 22;
        i1=22;
l48:
        i2 = (OOC_INT64)b;
        i3 = (OOC_INT64)arguments;
        i4 = _check_pointer(i3, 192066);
        i5 = OOC_ARRAY_LENGTH(i4, 0);
        i3 = _check_pointer(i3, 192080);
        i6 = OOC_ARRAY_LENGTH(i3, 0);
        i4 = (OOC_INT64)*(OOC_INT64*)(i4+(_check_index(0, i5, OOC_UINT8, 192066))*8);
        i3 = (OOC_INT64)*(OOC_INT64*)(i3+(_check_index(1, i6, OOC_UINT8, 192080))*8);
        i5 = (OOC_INT64)*(OOC_INT64*)(_check_pointer(i0, 191996));
        i0 = (OOC_INT64)*(OOC_INT64*)(_check_pointer(i0, 191933));
        i1 = (OOC_INT64)OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i2, 191971)))), OOC_IR__BuilderDesc_NewChangeElement)),OOC_IR__BuilderDesc_NewChangeElement)((OOC_IR__Builder)i2, (OOC_Scanner_BasicList__Symbol)i5, i1, (OOC_IR__Expression)i4, (OOC_IR__Expression)i3);
        i0 = (OOC_INT64)OOC_IR__BuilderDesc_NewAssignOp((OOC_IR__Builder)i2, (OOC_Scanner_BasicList__Symbol)i0, (OOC_IR__Expression)i1);
        return (OOC_IR__Expression)i0;
        goto l161;
      case 23:
        i0 = (OOC_INT64)b;
        i1 = (OOC_INT64)design;
        i2 = (OOC_INT64)arguments;
        i2 = _check_pointer(i2, 192157);
        i3 = OOC_ARRAY_LENGTH(i2, 0);
        i2 = (OOC_INT64)*(OOC_INT64*)(i2+(_check_index(0, i3, OOC_UINT8, 192157))*8);
        i1 = (OOC_INT64)*(OOC_INT64*)(_check_pointer(i1, 192142));
        i0 = (OOC_INT64)OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 192126)))), OOC_IR__BuilderDesc_NewRaise)),OOC_IR__BuilderDesc_NewRaise)((OOC_IR__Builder)i0, (OOC_Scanner_BasicList__Symbol)i1, (OOC_IR__Expression)i2);
        return (OOC_IR__Expression)i0;
        goto l161;
      case 2:
        i0 = (OOC_INT64)arguments;
        i1 = OOC_ARRAY_LENGTH((_check_pointer(i0, 192251)), 0);
        i1 = i1!=2;
        if (i1) goto l53;
        i1 = _check_pointer(i0, 192370);
        i2 = OOC_ARRAY_LENGTH(i1, 0);
        i3 = _check_pointer(i0, 192423);
        i4 = OOC_ARRAY_LENGTH(i3, 0);
        i3 = (OOC_INT64)*(OOC_INT64*)(i3+(_check_index(0, i4, OOC_UINT8, 192423))*8);
        i3 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i3, 192426))+8);
        i0 = _check_pointer(i0, 192423);
        i4 = OOC_ARRAY_LENGTH(i0, 0);
        i0 = (OOC_INT64)*(OOC_INT64*)(i0+(_check_index(0, i4, OOC_UINT8, 192423))*8);
        i0 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 192426))+8);
        i1 = (OOC_INT64)*(OOC_INT64*)(i1+(_check_index(1, i2, OOC_UINT8, 192370))*8);
        i2 = (OOC_INT64)b;
        i0 = OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i3, 192432)))), OOC_SymbolTable__TypeDesc_ArrayDimensions)),OOC_SymbolTable__TypeDesc_ArrayDimensions)((OOC_SymbolTable__Type)i0);
        i0 = OOC_IR__BuilderDesc_AssertIntConst((OOC_IR__Builder)i2, (OOC_IR__Expression)i1, 0, i0);
        dim = i0;
        goto l54;
l53:
        dim = 0;
l54:
        i0 = (OOC_INT64)arguments;
        i0 = _check_pointer(i0, 192508);
        i1 = OOC_ARRAY_LENGTH(i0, 0);
        i0 = (OOC_INT64)*(OOC_INT64*)(i0+(_check_index(0, i1, OOC_UINT8, 192508))*8);
        i0 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 192511))+8);
        i0 = OOC_SymbolTable_TypeRules__IsArray((OOC_SymbolTable__Type)i0);
        i0 = !i0;
        if (!i0) goto l57;
        i0 = (OOC_INT64)b;
        i1 = (OOC_INT64)arguments;
        i1 = _check_pointer(i1, 192608);
        i2 = OOC_ARRAY_LENGTH(i1, 0);
        i1 = (OOC_INT64)*(OOC_INT64*)(i1+(_check_index(0, i2, OOC_UINT8, 192608))*8);
        i1 = (OOC_INT64)*(OOC_INT64*)(_check_pointer(i1, 192611));
        OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 192579)))), OOC_IR__BuilderDesc_ErrSym)),OOC_IR__BuilderDesc_ErrSym)((OOC_IR__Builder)i0, 15, (OOC_Scanner_BasicList__Symbol)i1);
l57:
        i0 = (OOC_INT64)b;
        i1 = (OOC_INT64)design;
        i2 = (OOC_INT64)arguments;
        i2 = _check_pointer(i2, 192689);
        i3 = OOC_ARRAY_LENGTH(i2, 0);
        i2 = (OOC_INT64)*(OOC_INT64*)(i2+(_check_index(0, i3, OOC_UINT8, 192689))*8);
        i1 = (OOC_INT64)*(OOC_INT64*)(_check_pointer(i1, 192673));
        i3 = dim;
        i0 = (OOC_INT64)OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 192657)))), OOC_IR__BuilderDesc_NewLen)),OOC_IR__BuilderDesc_NewLen)((OOC_IR__Builder)i0, (OOC_Scanner_BasicList__Symbol)i1, (OOC_IR__Expression)i2, i3);
        return (OOC_IR__Expression)i0;
        goto l161;
      case 20:
      case 19:
        i0 = (OOC_INT64)b;
        i1 = (OOC_INT64)arguments;
        i1 = _check_pointer(i1, 192773);
        i2 = OOC_ARRAY_LENGTH(i1, 0);
        i1 = (OOC_INT64)*(OOC_INT64*)(i1+(_check_index(0, i2, OOC_UINT8, 192773))*8);
        i0 = (OOC_INT64)OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 192750)))), OOC_IR__BuilderDesc_AssertType)),OOC_IR__BuilderDesc_AssertType)((OOC_IR__Builder)i0, (OOC_IR__Expression)i1);
        type = (OOC_SymbolTable__Type)i0;
        i1 = (OOC_INT64)design;
        i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i1, 192797))+16);
        i1 = *(OOC_INT16*)((_check_pointer((_type_guard(i1, ((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i1, 192808)))), &_td_OOC_SymbolTable__PredefProcDesc, 192808)), 192819))+88);
        i1 = i1==20;
        if (i1) goto l61;
        i1 = (OOC_INT64)OOC_SymbolTable_Predef__GetMax((OOC_SymbolTable__Type)i0);
        value = (Object_Boxed__Object)i1;
        
        goto l62;
l61:
        i1 = (OOC_INT64)OOC_SymbolTable_Predef__GetMin((OOC_SymbolTable__Type)i0);
        value = (Object_Boxed__Object)i1;
        
l62:
        i2 = i1==(OOC_INT64)0;
        if (i2) goto l69;
        i2 = OOC_SymbolTable_TypeRules__IsSetType((OOC_SymbolTable__Type)i0);
        if (!i2) goto l68;
        i0 = (OOC_INT64)OOC_SymbolTable_Predef__GetType(4);
        type = (OOC_SymbolTable__Type)i0;
        
l68:
        i2 = (OOC_INT64)b;
        i3 = (OOC_INT64)arguments;
        i3 = _check_pointer(i3, 193222);
        i4 = OOC_ARRAY_LENGTH(i3, 0);
        i3 = (OOC_INT64)*(OOC_INT64*)(i3+(_check_index(0, i4, OOC_UINT8, 193222))*8);
        i3 = (OOC_INT64)*(OOC_INT64*)(_check_pointer(i3, 193225));
        i0 = (OOC_INT64)OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i2, 193201)))), OOC_IR__BuilderDesc_NewConst)),OOC_IR__BuilderDesc_NewConst)((OOC_IR__Builder)i2, (OOC_Scanner_BasicList__Symbol)i3, (OOC_SymbolTable__Type)i0, (Object_Boxed__Object)i1);
        return (OOC_IR__Expression)i0;
        goto l161;
l69:
        i0 = (OOC_INT64)b;
        i1 = (OOC_INT64)arguments;
        i1 = _check_pointer(i1, 193029);
        i2 = OOC_ARRAY_LENGTH(i1, 0);
        i1 = (OOC_INT64)*(OOC_INT64*)(i1+(_check_index(0, i2, OOC_UINT8, 193029))*8);
        i1 = (OOC_INT64)*(OOC_INT64*)(_check_pointer(i1, 193032));
        i0 = (OOC_INT64)OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 192999)))), OOC_IR__BuilderDesc_ErrExpr)),OOC_IR__BuilderDesc_ErrExpr)((OOC_IR__Builder)i0, 18, (OOC_Scanner_BasicList__Symbol)i1);
        return (OOC_IR__Expression)i0;
        goto l161;
      case 3:
        i0 = (OOC_INT64)b;
        i1 = (OOC_INT64)design;
        i2 = (OOC_INT64)arguments;
        i2 = _check_pointer(i2, 193338);
        i3 = OOC_ARRAY_LENGTH(i2, 0);
        i2 = (OOC_INT64)*(OOC_INT64*)(i2+(_check_index(0, i3, OOC_UINT8, 193338))*8);
        i1 = (OOC_INT64)*(OOC_INT64*)(_check_pointer(i1, 193322));
        i0 = (OOC_INT64)OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 193305)))), OOC_IR__BuilderDesc_NewSize)),OOC_IR__BuilderDesc_NewSize)((OOC_IR__Builder)i0, (OOC_Scanner_BasicList__Symbol)i1, (OOC_IR__Expression)i2);
        return (OOC_IR__Expression)i0;
        goto l161;
      case 8:
        i0 = (OOC_INT64)design;
        i1 = (OOC_INT64)arguments;
        i1 = _check_pointer(i1, 193412);
        i2 = OOC_ARRAY_LENGTH(i1, 0);
        i1 = (OOC_INT64)*(OOC_INT64*)(i1+(_check_index(0, i2, OOC_UINT8, 193412))*8);
        i0 = (OOC_INT64)*(OOC_INT64*)(_check_pointer(i0, 193396));
        i2 = (OOC_INT64)b;
        i0 = (OOC_INT64)OOC_IR__BuilderDesc_NewAbs((OOC_IR__Builder)i2, (OOC_Scanner_BasicList__Symbol)i0, (OOC_IR__Expression)i1);
        return (OOC_IR__Expression)i0;
        goto l161;
      case 9:
        i0 = (OOC_INT64)design;
        i1 = (OOC_INT64)arguments;
        i2 = _check_pointer(i1, 193495);
        i3 = OOC_ARRAY_LENGTH(i2, 0);
        i1 = _check_pointer(i1, 193509);
        i4 = OOC_ARRAY_LENGTH(i1, 0);
        i2 = (OOC_INT64)*(OOC_INT64*)(i2+(_check_index(0, i3, OOC_UINT8, 193495))*8);
        i1 = (OOC_INT64)*(OOC_INT64*)(i1+(_check_index(1, i4, OOC_UINT8, 193509))*8);
        i0 = (OOC_INT64)*(OOC_INT64*)(_check_pointer(i0, 193479));
        i3 = (OOC_INT64)b;
        i0 = (OOC_INT64)OOC_IR__BuilderDesc_NewAsh((OOC_IR__Builder)i3, (OOC_Scanner_BasicList__Symbol)i0, (OOC_IR__Expression)i2, (OOC_IR__Expression)i1);
        return (OOC_IR__Expression)i0;
        goto l161;
      case 10:
        i0 = (OOC_INT64)design;
        i1 = (OOC_INT64)arguments;
        i1 = _check_pointer(i1, 193605);
        i2 = OOC_ARRAY_LENGTH(i1, 0);
        i1 = (OOC_INT64)*(OOC_INT64*)(i1+(_check_index(0, i2, OOC_UINT8, 193605))*8);
        i0 = (OOC_INT64)*(OOC_INT64*)(_check_pointer(i0, 193576));
        i2 = (OOC_INT64)b;
        i1 = (OOC_INT64)OOC_IR__BuilderDesc_AssertChar((OOC_IR__Builder)i2, (OOC_IR__Expression)i1);
        i0 = (OOC_INT64)OOC_IR__BuilderDesc_NewCap((OOC_IR__Builder)i2, (OOC_Scanner_BasicList__Symbol)i0, (OOC_IR__Expression)i1);
        return (OOC_IR__Expression)i0;
        goto l161;
      case 11:
        i0 = (OOC_INT64)arguments;
        i1 = _check_pointer(i0, 193655);
        i2 = OOC_ARRAY_LENGTH(i1, 0);
        i1 = (OOC_INT64)*(OOC_INT64*)(i1+(_check_index(0, i2, OOC_UINT8, 193655))*8);
        i1 = OOC_TYPE_TEST(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i1, 193659)))), &_td_OOC_IR__ConstDesc);
        if (i1) goto l78;
        i1=0u;
        goto l80;
l78:
        i1 = _check_pointer(i0, 193697);
        i2 = OOC_ARRAY_LENGTH(i1, 0);
        i1 = (OOC_INT64)*(OOC_INT64*)(i1+(_check_index(0, i2, OOC_UINT8, 193697))*8);
        i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i1, 193700))+8);
        i1 = OOC_SymbolTable_TypeRules__IsIntegerType((OOC_SymbolTable__Type)i1);
        
l80:
        if (i1) goto l95;
        i1 = _check_pointer(i0, 193820);
        i2 = OOC_ARRAY_LENGTH(i1, 0);
        i1 = (OOC_INT64)*(OOC_INT64*)(i1+(_check_index(0, i2, OOC_UINT8, 193820))*8);
        i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i1, 193823))+8);
        i1 = OOC_TYPE_TEST(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i1, 193829)))), &_td_OOC_SymbolTable__PredefTypeDesc);
        if (i1) goto l84;
        i1 = (OOC_INT64)b;
        i0 = _check_pointer(i0, 194567);
        i2 = OOC_ARRAY_LENGTH(i0, 0);
        i0 = (OOC_INT64)*(OOC_INT64*)(i0+(_check_index(0, i2, OOC_UINT8, 194567))*8);
        i0 = (OOC_INT64)*(OOC_INT64*)(_check_pointer(i0, 194570));
        OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i1, 194535)))), OOC_IR__BuilderDesc_ErrSym)),OOC_IR__BuilderDesc_ErrSym)((OOC_IR__Builder)i1, 5, (OOC_Scanner_BasicList__Symbol)i0);
        i0 = (OOC_INT64)arguments;
        i0 = _check_pointer(i0, 194603);
        i1 = OOC_ARRAY_LENGTH(i0, 0);
        i0 = (OOC_INT64)*(OOC_INT64*)(i0+(_check_index(0, i1, OOC_UINT8, 194603))*8);
        return (OOC_IR__Expression)i0;
        goto l161;
l84:
        i1 = _check_pointer(i0, 193877);
        i2 = OOC_ARRAY_LENGTH(i1, 0);
        i1 = (OOC_INT64)*(OOC_INT64*)(i1+(_check_index(0, i2, OOC_UINT8, 193877))*8);
        i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i1, 193880))+8);
        i1 = *(OOC_INT16*)((_check_pointer((_type_guard(i1, ((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i1, 193890)))), &_td_OOC_SymbolTable__PredefTypeDesc, 193890)), 193901))+72);
        switch (i1) {
        case 4:
          targetType = 5;
          
          goto l93;
        case 5:
          targetType = 6;
          
          goto l93;
        case 6:
          targetType = 7;
          
          goto l93;
        case 8:
          targetType = 9;
          
          goto l93;
        case 1:
          targetType = 2;
          
          goto l93;
        case 2:
          targetType = 3;
          
          goto l93;
        default:
          i1 = (OOC_INT64)b;
          i0 = _check_pointer(i0, 194325);
          i2 = OOC_ARRAY_LENGTH(i0, 0);
          i0 = (OOC_INT64)*(OOC_INT64*)(i0+(_check_index(0, i2, OOC_UINT8, 194325))*8);
          i0 = (OOC_INT64)*(OOC_INT64*)(_check_pointer(i0, 194328));
          OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i1, 194293)))), OOC_IR__BuilderDesc_ErrSym)),OOC_IR__BuilderDesc_ErrSym)((OOC_IR__Builder)i1, 5, (OOC_Scanner_BasicList__Symbol)i0);
          i0 = (OOC_INT64)arguments;
          i1 = _check_pointer(i0, 194363);
          i2 = OOC_ARRAY_LENGTH(i1, 0);
          i1 = (OOC_INT64)*(OOC_INT64*)(i1+(_check_index(0, i2, OOC_UINT8, 194363))*8);
          return (OOC_IR__Expression)i1;
          
          goto l93;
        }
l93:
        i1 = targetType;
        i1 = (OOC_INT64)OOC_SymbolTable_Predef__GetType(i1);
        i0 = _check_pointer(i0, 194453);
        i2 = OOC_ARRAY_LENGTH(i0, 0);
        i0 = (OOC_INT64)*(OOC_INT64*)(i0+(_check_index(0, i2, OOC_UINT8, 194453))*8);
        i2 = (OOC_INT64)b;
        i0 = (OOC_INT64)OOC_IR__BuilderDesc_NewTypeConv((OOC_IR__Builder)i2, (OOC_SymbolTable__Type)i1, (OOC_IR__Expression)i0);
        return (OOC_IR__Expression)i0;
        goto l161;
l95:
        i0 = _check_pointer(i0, 193791);
        i1 = OOC_ARRAY_LENGTH(i0, 0);
        i0 = (OOC_INT64)*(OOC_INT64*)(i0+(_check_index(0, i1, OOC_UINT8, 193791))*8);
        return (OOC_IR__Expression)i0;
        goto l161;
      case 12:
        i0 = (OOC_INT64)arguments;
        i1 = _check_pointer(i0, 194673);
        i2 = OOC_ARRAY_LENGTH(i1, 0);
        i1 = (OOC_INT64)*(OOC_INT64*)(i1+(_check_index(0, i2, OOC_UINT8, 194673))*8);
        i1 = OOC_TYPE_TEST(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i1, 194677)))), &_td_OOC_IR__ConstDesc);
        if (i1) goto l100;
        i1=0u;
        goto l102;
l100:
        i1 = _check_pointer(i0, 194715);
        i2 = OOC_ARRAY_LENGTH(i1, 0);
        i1 = (OOC_INT64)*(OOC_INT64*)(i1+(_check_index(0, i2, OOC_UINT8, 194715))*8);
        i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i1, 194718))+8);
        i1 = OOC_SymbolTable_TypeRules__IsIntegerType((OOC_SymbolTable__Type)i1);
        
l102:
        if (i1) goto l117;
        i1 = _check_pointer(i0, 194839);
        i2 = OOC_ARRAY_LENGTH(i1, 0);
        i1 = (OOC_INT64)*(OOC_INT64*)(i1+(_check_index(0, i2, OOC_UINT8, 194839))*8);
        i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i1, 194842))+8);
        i1 = OOC_TYPE_TEST(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i1, 194848)))), &_td_OOC_SymbolTable__PredefTypeDesc);
        if (i1) goto l106;
        i1 = (OOC_INT64)b;
        i0 = _check_pointer(i0, 195576);
        i2 = OOC_ARRAY_LENGTH(i0, 0);
        i0 = (OOC_INT64)*(OOC_INT64*)(i0+(_check_index(0, i2, OOC_UINT8, 195576))*8);
        i0 = (OOC_INT64)*(OOC_INT64*)(_check_pointer(i0, 195579));
        OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i1, 195544)))), OOC_IR__BuilderDesc_ErrSym)),OOC_IR__BuilderDesc_ErrSym)((OOC_IR__Builder)i1, 5, (OOC_Scanner_BasicList__Symbol)i0);
        i0 = (OOC_INT64)arguments;
        i0 = _check_pointer(i0, 195612);
        i1 = OOC_ARRAY_LENGTH(i0, 0);
        i0 = (OOC_INT64)*(OOC_INT64*)(i0+(_check_index(0, i1, OOC_UINT8, 195612))*8);
        return (OOC_IR__Expression)i0;
        goto l161;
l106:
        i1 = _check_pointer(i0, 194896);
        i2 = OOC_ARRAY_LENGTH(i1, 0);
        i1 = (OOC_INT64)*(OOC_INT64*)(i1+(_check_index(0, i2, OOC_UINT8, 194896))*8);
        i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i1, 194899))+8);
        i1 = *(OOC_INT16*)((_check_pointer((_type_guard(i1, ((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i1, 194909)))), &_td_OOC_SymbolTable__PredefTypeDesc, 194909)), 194920))+72);
        switch (i1) {
        case 5:
          targetType = 4;
          
          goto l115;
        case 6:
          targetType = 5;
          
          goto l115;
        case 7:
          targetType = 6;
          
          goto l115;
        case 9:
          targetType = 8;
          
          goto l115;
        case 2:
          targetType = 1;
          
          goto l115;
        case 3:
          targetType = 2;
          
          goto l115;
        default:
          i1 = (OOC_INT64)b;
          i0 = _check_pointer(i0, 195334);
          i2 = OOC_ARRAY_LENGTH(i0, 0);
          i0 = (OOC_INT64)*(OOC_INT64*)(i0+(_check_index(0, i2, OOC_UINT8, 195334))*8);
          i0 = (OOC_INT64)*(OOC_INT64*)(_check_pointer(i0, 195337));
          OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i1, 195302)))), OOC_IR__BuilderDesc_ErrSym)),OOC_IR__BuilderDesc_ErrSym)((OOC_IR__Builder)i1, 5, (OOC_Scanner_BasicList__Symbol)i0);
          i0 = (OOC_INT64)arguments;
          i1 = _check_pointer(i0, 195372);
          i2 = OOC_ARRAY_LENGTH(i1, 0);
          i1 = (OOC_INT64)*(OOC_INT64*)(i1+(_check_index(0, i2, OOC_UINT8, 195372))*8);
          return (OOC_IR__Expression)i1;
          
          goto l115;
        }
l115:
        i1 = targetType;
        i1 = (OOC_INT64)OOC_SymbolTable_Predef__GetType(i1);
        i0 = _check_pointer(i0, 195462);
        i2 = OOC_ARRAY_LENGTH(i0, 0);
        i0 = (OOC_INT64)*(OOC_INT64*)(i0+(_check_index(0, i2, OOC_UINT8, 195462))*8);
        i2 = (OOC_INT64)b;
        i0 = (OOC_INT64)OOC_IR__BuilderDesc_NewTypeConv((OOC_IR__Builder)i2, (OOC_SymbolTable__Type)i1, (OOC_IR__Expression)i0);
        return (OOC_IR__Expression)i0;
        goto l161;
l117:
        i0 = _check_pointer(i0, 194810);
        i1 = OOC_ARRAY_LENGTH(i0, 0);
        i0 = (OOC_INT64)*(OOC_INT64*)(i0+(_check_index(0, i1, OOC_UINT8, 194810))*8);
        return (OOC_IR__Expression)i0;
        goto l161;
      case 13:
        i0 = (OOC_INT64)arguments;
        i1 = _check_pointer(i0, 195676);
        i2 = OOC_ARRAY_LENGTH(i1, 0);
        i0 = _check_pointer(i0, 195708);
        i3 = OOC_ARRAY_LENGTH(i0, 0);
        i0 = (OOC_INT64)*(OOC_INT64*)(i0+(_check_index(0, i3, OOC_UINT8, 195708))*8);
        i3 = (OOC_INT64)b;
        i0 = (OOC_INT64)OOC_IR__BuilderDesc_AssertInteger((OOC_IR__Builder)i3, (OOC_IR__Expression)i0);
        *(OOC_INT64*)(i1+(_check_index(0, i2, OOC_UINT8, 195676))*8) = i0;
        i0 = (OOC_INT64)arguments;
        i1 = _check_pointer(i0, 195735);
        i2 = OOC_ARRAY_LENGTH(i1, 0);
        i1 = (OOC_INT64)*(OOC_INT64*)(i1+(_check_index(0, i2, OOC_UINT8, 195735))*8);
        i1 = OOC_TYPE_TEST(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i1, 195739)))), &_td_OOC_IR__ConstDesc);
        if (!i1) goto l122;
        i0 = _check_pointer(i0, 195949);
        i1 = OOC_ARRAY_LENGTH(i0, 0);
        i0 = (OOC_INT64)*(OOC_INT64*)(i0+(_check_index(0, i1, OOC_UINT8, 195949))*8);
        i1 = (OOC_INT64)b;
        i0 = OOC_IR__BuilderDesc_AssertIntConst((OOC_IR__Builder)i1, (OOC_IR__Expression)i0, 0, 256);
        dummy = i0;
l122:
        i0 = (OOC_INT64)OOC_SymbolTable_Predef__GetType(1);
        i1 = (OOC_INT64)arguments;
        i1 = _check_pointer(i1, 196117);
        i2 = OOC_ARRAY_LENGTH(i1, 0);
        i1 = (OOC_INT64)*(OOC_INT64*)(i1+(_check_index(0, i2, OOC_UINT8, 196117))*8);
        i2 = (OOC_INT64)b;
        i0 = (OOC_INT64)OOC_IR__BuilderDesc_NewTypeConv((OOC_IR__Builder)i2, (OOC_SymbolTable__Type)i0, (OOC_IR__Expression)i1);
        return (OOC_IR__Expression)i0;
        goto l161;
      case 14:
        i0 = (OOC_INT64)arguments;
        i1 = _check_pointer(i0, 196164);
        i2 = OOC_ARRAY_LENGTH(i1, 0);
        i0 = _check_pointer(i0, 196196);
        i3 = OOC_ARRAY_LENGTH(i0, 0);
        i0 = (OOC_INT64)*(OOC_INT64*)(i0+(_check_index(0, i3, OOC_UINT8, 196196))*8);
        i3 = (OOC_INT64)b;
        i0 = (OOC_INT64)OOC_IR__BuilderDesc_AssertInteger((OOC_IR__Builder)i3, (OOC_IR__Expression)i0);
        *(OOC_INT64*)(i1+(_check_index(0, i2, OOC_UINT8, 196164))*8) = i0;
        i0 = (OOC_INT64)arguments;
        i1 = _check_pointer(i0, 196223);
        i2 = OOC_ARRAY_LENGTH(i1, 0);
        i1 = (OOC_INT64)*(OOC_INT64*)(i1+(_check_index(0, i2, OOC_UINT8, 196223))*8);
        i1 = OOC_TYPE_TEST(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i1, 196227)))), &_td_OOC_IR__ConstDesc);
        if (!i1) goto l126;
        i0 = _check_pointer(i0, 196437);
        i1 = OOC_ARRAY_LENGTH(i0, 0);
        i0 = (OOC_INT64)*(OOC_INT64*)(i0+(_check_index(0, i1, OOC_UINT8, 196437))*8);
        i1 = (OOC_INT64)b;
        i0 = OOC_IR__BuilderDesc_AssertIntConst((OOC_IR__Builder)i1, (OOC_IR__Expression)i0, 0, 65536);
        dummy = i0;
l126:
        i0 = (OOC_INT64)OOC_SymbolTable_Predef__GetType(2);
        i1 = (OOC_INT64)arguments;
        i1 = _check_pointer(i1, 196653);
        i2 = OOC_ARRAY_LENGTH(i1, 0);
        i1 = (OOC_INT64)*(OOC_INT64*)(i1+(_check_index(0, i2, OOC_UINT8, 196653))*8);
        i2 = (OOC_INT64)b;
        i0 = (OOC_INT64)OOC_IR__BuilderDesc_NewTypeConv((OOC_IR__Builder)i2, (OOC_SymbolTable__Type)i0, (OOC_IR__Expression)i1);
        return (OOC_IR__Expression)i0;
        goto l161;
      case 15:
        i0 = (OOC_INT64)arguments;
        i1 = _check_pointer(i0, 196709);
        i2 = OOC_ARRAY_LENGTH(i1, 0);
        i0 = _check_pointer(i0, 196741);
        i3 = OOC_ARRAY_LENGTH(i0, 0);
        i0 = (OOC_INT64)*(OOC_INT64*)(i0+(_check_index(0, i3, OOC_UINT8, 196741))*8);
        i3 = (OOC_INT64)b;
        i0 = (OOC_INT64)OOC_IR__BuilderDesc_AssertInteger((OOC_IR__Builder)i3, (OOC_IR__Expression)i0);
        *(OOC_INT64*)(i1+(_check_index(0, i2, OOC_UINT8, 196709))*8) = i0;
        i0 = (OOC_INT64)arguments;
        i1 = _check_pointer(i0, 196768);
        i2 = OOC_ARRAY_LENGTH(i1, 0);
        i1 = (OOC_INT64)*(OOC_INT64*)(i1+(_check_index(0, i2, OOC_UINT8, 196768))*8);
        i1 = OOC_TYPE_TEST(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i1, 196772)))), &_td_OOC_IR__ConstDesc);
        if (!i1) goto l130;
        i0 = _check_pointer(i0, 196982);
        i1 = OOC_ARRAY_LENGTH(i0, 0);
        i0 = (OOC_INT64)*(OOC_INT64*)(i0+(_check_index(0, i1, OOC_UINT8, 196982))*8);
        i1 = (OOC_INT64)b;
        i0 = OOC_IR__BuilderDesc_AssertIntConst((OOC_IR__Builder)i1, (OOC_IR__Expression)i0, 0, 1114111);
        dummy = i0;
l130:
        i0 = (OOC_INT64)OOC_SymbolTable_Predef__GetType(3);
        i1 = (OOC_INT64)arguments;
        i1 = _check_pointer(i1, 197243);
        i2 = OOC_ARRAY_LENGTH(i1, 0);
        i1 = (OOC_INT64)*(OOC_INT64*)(i1+(_check_index(0, i2, OOC_UINT8, 197243))*8);
        i2 = (OOC_INT64)b;
        i0 = (OOC_INT64)OOC_IR__BuilderDesc_NewTypeConv((OOC_IR__Builder)i2, (OOC_SymbolTable__Type)i0, (OOC_IR__Expression)i1);
        return (OOC_IR__Expression)i0;
        goto l161;
      case 16:
        i0 = (OOC_INT64)design;
        i1 = (OOC_INT64)arguments;
        i1 = _check_pointer(i1, 197332);
        i2 = OOC_ARRAY_LENGTH(i1, 0);
        i1 = (OOC_INT64)*(OOC_INT64*)(i1+(_check_index(0, i2, OOC_UINT8, 197332))*8);
        i0 = (OOC_INT64)*(OOC_INT64*)(_check_pointer(i0, 197316));
        i2 = (OOC_INT64)b;
        i0 = (OOC_INT64)OOC_IR__BuilderDesc_NewEntier((OOC_IR__Builder)i2, (OOC_Scanner_BasicList__Symbol)i0, (OOC_IR__Expression)i1);
        return (OOC_IR__Expression)i0;
        goto l161;
      case 17:
        i0 = (OOC_INT64)design;
        i1 = (OOC_INT64)arguments;
        i1 = _check_pointer(i1, 197415);
        i2 = OOC_ARRAY_LENGTH(i1, 0);
        i1 = (OOC_INT64)*(OOC_INT64*)(i1+(_check_index(0, i2, OOC_UINT8, 197415))*8);
        i0 = (OOC_INT64)*(OOC_INT64*)(_check_pointer(i0, 197399));
        i2 = (OOC_INT64)b;
        i0 = (OOC_INT64)OOC_IR__BuilderDesc_NewOdd((OOC_IR__Builder)i2, (OOC_Scanner_BasicList__Symbol)i0, (OOC_IR__Expression)i1);
        return (OOC_IR__Expression)i0;
        goto l161;
      case 18:
        i0 = (OOC_INT64)arguments;
        i1 = _check_pointer(i0, 197471);
        i2 = OOC_ARRAY_LENGTH(i1, 0);
        i1 = (OOC_INT64)*(OOC_INT64*)(i1+(_check_index(0, i2, OOC_UINT8, 197471))*8);
        i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i1, 197474))+8);
        i1 = OOC_TYPE_TEST(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i1, 197480)))), &_td_OOC_SymbolTable__PredefTypeDesc);
        if (i1) goto l136;
        i1=0u;
        goto l142;
l136:
        i1 = _check_pointer(i0, 197523);
        i2 = OOC_ARRAY_LENGTH(i1, 0);
        i1 = (OOC_INT64)*(OOC_INT64*)(i1+(_check_index(0, i2, OOC_UINT8, 197523))*8);
        i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i1, 197526))+8);
        i1 = *(OOC_INT16*)((_check_pointer((_type_guard(i1, ((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i1, 197536)))), &_td_OOC_SymbolTable__PredefTypeDesc, 197536)), 197547))+72);
        i1 = i1==2;
        if (i1) goto l139;
        i1 = _check_pointer(i0, 197595);
        i2 = OOC_ARRAY_LENGTH(i1, 0);
        i1 = (OOC_INT64)*(OOC_INT64*)(i1+(_check_index(0, i2, OOC_UINT8, 197595))*8);
        i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i1, 197598))+8);
        i1 = *(OOC_INT16*)((_check_pointer((_type_guard(i1, ((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i1, 197608)))), &_td_OOC_SymbolTable__PredefTypeDesc, 197608)), 197619))+72);
        i1 = i1==3;
        
        goto l142;
l139:
        i1=1u;
l142:
        if (i1) goto l144;
        targetType = 5;
        i1=5;
        goto l145;
l144:
        targetType = 6;
        i1=6;
l145:
        i1 = (OOC_INT64)OOC_SymbolTable_Predef__GetType(i1);
        i0 = _check_pointer(i0, 197899);
        i2 = OOC_ARRAY_LENGTH(i0, 0);
        i0 = (OOC_INT64)*(OOC_INT64*)(i0+(_check_index(0, i2, OOC_UINT8, 197899))*8);
        i2 = (OOC_INT64)b;
        i0 = (OOC_INT64)OOC_IR__BuilderDesc_AssertChar((OOC_IR__Builder)i2, (OOC_IR__Expression)i0);
        i0 = (OOC_INT64)OOC_IR__BuilderDesc_NewTypeConv((OOC_IR__Builder)i2, (OOC_SymbolTable__Type)i1, (OOC_IR__Expression)i0);
        return (OOC_IR__Expression)i0;
        goto l161;
      case 26:
        i0 = (OOC_INT64)b;
        i1 = (OOC_INT64)design;
        i2 = (OOC_INT64)arguments;
        i3 = _check_pointer(i2, 198053);
        i4 = OOC_ARRAY_LENGTH(i3, 0);
        i5 = _check_pointer(i2, 198067);
        i6 = OOC_ARRAY_LENGTH(i5, 0);
        i2 = _check_pointer(i2, 198081);
        i7 = OOC_ARRAY_LENGTH(i2, 0);
        i3 = (OOC_INT64)*(OOC_INT64*)(i3+(_check_index(0, i4, OOC_UINT8, 198053))*8);
        i4 = (OOC_INT64)*(OOC_INT64*)(i5+(_check_index(1, i6, OOC_UINT8, 198067))*8);
        i2 = (OOC_INT64)*(OOC_INT64*)(i2+(_check_index(2, i7, OOC_UINT8, 198081))*8);
        i1 = (OOC_INT64)*(OOC_INT64*)(_check_pointer(i1, 198005));
        i0 = (OOC_INT64)OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 197983)))), OOC_IR__BuilderDesc_NewMoveBlock)),OOC_IR__BuilderDesc_NewMoveBlock)((OOC_IR__Builder)i0, (OOC_Scanner_BasicList__Symbol)i1, (OOC_IR__Expression)i3, (OOC_IR__Expression)i4, (OOC_IR__Expression)i2);
        return (OOC_IR__Expression)i0;
        goto l161;
      case 27:
        i0 = (OOC_INT64)arguments;
        i1 = _check_pointer(i0, 198143);
        i2 = OOC_ARRAY_LENGTH(i1, 0);
        i1 = (OOC_INT64)*(OOC_INT64*)(i1+(_check_index(0, i2, OOC_UINT8, 198143))*8);
        i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i1, 198146))+8);
        i1 = OOC_TYPE_TEST(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i1, 198152)))), &_td_OOC_SymbolTable__PointerDesc);
        if (i1) goto l150;
        i1 = _check_pointer(i0, 198206);
        i2 = OOC_ARRAY_LENGTH(i1, 0);
        i1 = (OOC_INT64)*(OOC_INT64*)(i1+(_check_index(0, i2, OOC_UINT8, 198206))*8);
        i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i1, 198209))+8);
        i1 = OOC_SymbolTable_TypeRules__IsPredefType((OOC_SymbolTable__Type)i1, 12);
        
        goto l152;
l150:
        i1=1u;
l152:
        if (i1) goto l154;
        i1 = (OOC_INT64)b;
        i0 = _check_pointer(i0, 198517);
        i2 = OOC_ARRAY_LENGTH(i0, 0);
        i0 = (OOC_INT64)*(OOC_INT64*)(i0+(_check_index(0, i2, OOC_UINT8, 198517))*8);
        i0 = (OOC_INT64)*(OOC_INT64*)(_check_pointer(i0, 198520));
        OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i1, 198485)))), OOC_IR__BuilderDesc_ErrSym)),OOC_IR__BuilderDesc_ErrSym)((OOC_IR__Builder)i1, 50, (OOC_Scanner_BasicList__Symbol)i0);
        goto l155;
l154:
        i0 = _check_pointer(i0, 198264);
        i1 = OOC_ARRAY_LENGTH(i0, 0);
        i0 = (OOC_INT64)*(OOC_INT64*)(i0+(_check_index(0, i1, OOC_UINT8, 198264))*8);
        i1 = (OOC_INT64)b;
        OOC_IR__BuilderDesc_AssertVar((OOC_IR__Builder)i1, (OOC_IR__Expression)i0);
        i0 = (OOC_INT64)arguments;
        i1 = _check_pointer(i0, 198297);
        i2 = OOC_ARRAY_LENGTH(i1, 0);
        i1 = (OOC_INT64)*(OOC_INT64*)(i1+(_check_index(0, i2, OOC_UINT8, 198297))*8);
        i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i1, 198300))+8);
        type = (OOC_SymbolTable__Type)i1;
        i1 = (OOC_INT64)b;
        i2 = (OOC_INT64)design;
        i3 = _check_pointer(i0, 198378);
        i4 = OOC_ARRAY_LENGTH(i3, 0);
        i5 = _check_pointer(i0, 198435);
        i6 = OOC_ARRAY_LENGTH(i5, 0);
        i5 = (OOC_INT64)*(OOC_INT64*)(i5+(_check_index(0, i6, OOC_UINT8, 198435))*8);
        i0 = _check_pointer(i0, 198454);
        i6 = OOC_ARRAY_LENGTH(i0, 0);
        i5 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i5, 198438))+8);
        i3 = (OOC_INT64)*(OOC_INT64*)(i3+(_check_index(0, i4, OOC_UINT8, 198378))*8);
        i0 = (OOC_INT64)*(OOC_INT64*)(i0+(_check_index(1, i6, OOC_UINT8, 198454))*8);
        i4 = (OOC_INT64)*(OOC_INT64*)(_check_pointer(i2, 198420));
        i2 = (OOC_INT64)*(OOC_INT64*)(_check_pointer(i2, 198362));
        i0 = (OOC_INT64)OOC_IR__BuilderDesc_NewNewBlock((OOC_IR__Builder)i1, (OOC_Scanner_BasicList__Symbol)i4, (OOC_SymbolTable__Type)i5, (OOC_IR__Expression)i0);
        i0 = (OOC_INT64)OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i1, 198325)))), OOC_IR__BuilderDesc_NewAssignment)),OOC_IR__BuilderDesc_NewAssignment)((OOC_IR__Builder)i1, (OOC_Scanner_BasicList__Symbol)i2, (OOC_IR__Expression)i3, (OOC_IR__Expression)i0);
        return (OOC_IR__Expression)i0;
l155:
        i0 = (OOC_INT64)b;
        i0 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 198556))+40);
        return (OOC_IR__Expression)i0;
        goto l161;
      case 24:
        i0 = (OOC_INT64)OOC_SymbolTable_Predef__GetType(7);
        i1 = (OOC_INT64)b;
        i2 = (OOC_INT64)design;
        i3 = (OOC_INT64)arguments;
        i3 = _check_pointer(i3, 198748);
        i4 = OOC_ARRAY_LENGTH(i3, 0);
        i3 = (OOC_INT64)*(OOC_INT64*)(i3+(_check_index(0, i4, OOC_UINT8, 198748))*8);
        i2 = (OOC_INT64)*(OOC_INT64*)(_check_pointer(i2, 198733));
        i2 = (OOC_INT64)OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i1, 198719)))), OOC_IR__BuilderDesc_NewAdr)),OOC_IR__BuilderDesc_NewAdr)((OOC_IR__Builder)i1, (OOC_Scanner_BasicList__Symbol)i2, (OOC_IR__Expression)i3);
        i0 = (OOC_INT64)OOC_IR__BuilderDesc_NewTypeConv((OOC_IR__Builder)i1, (OOC_SymbolTable__Type)i0, (OOC_IR__Expression)i2);
        return (OOC_IR__Expression)i0;
        goto l161;
      case 25:
        i0 = (OOC_INT64)design;
        i1 = (OOC_INT64)arguments;
        i2 = _check_pointer(i1, 198826);
        i3 = OOC_ARRAY_LENGTH(i2, 0);
        i1 = _check_pointer(i1, 198840);
        i4 = OOC_ARRAY_LENGTH(i1, 0);
        i2 = (OOC_INT64)*(OOC_INT64*)(i2+(_check_index(0, i3, OOC_UINT8, 198826))*8);
        i1 = (OOC_INT64)*(OOC_INT64*)(i1+(_check_index(1, i4, OOC_UINT8, 198840))*8);
        i0 = (OOC_INT64)*(OOC_INT64*)(_check_pointer(i0, 198810));
        i3 = (OOC_INT64)b;
        i0 = (OOC_INT64)OOC_IR__BuilderDesc_NewShift((OOC_IR__Builder)i3, (OOC_Scanner_BasicList__Symbol)i0, (OOC_IR__Expression)i2, (OOC_IR__Expression)i1, 0u);
        return (OOC_IR__Expression)i0;
        goto l161;
      case 29:
        i0 = (OOC_INT64)design;
        i1 = (OOC_INT64)arguments;
        i2 = _check_pointer(i1, 198935);
        i3 = OOC_ARRAY_LENGTH(i2, 0);
        i1 = _check_pointer(i1, 198949);
        i4 = OOC_ARRAY_LENGTH(i1, 0);
        i2 = (OOC_INT64)*(OOC_INT64*)(i2+(_check_index(0, i3, OOC_UINT8, 198935))*8);
        i1 = (OOC_INT64)*(OOC_INT64*)(i1+(_check_index(1, i4, OOC_UINT8, 198949))*8);
        i0 = (OOC_INT64)*(OOC_INT64*)(_check_pointer(i0, 198919));
        i3 = (OOC_INT64)b;
        i0 = (OOC_INT64)OOC_IR__BuilderDesc_NewTypeCast((OOC_IR__Builder)i3, (OOC_Scanner_BasicList__Symbol)i0, (OOC_IR__Expression)i2, (OOC_IR__Expression)i1);
        return (OOC_IR__Expression)i0;
        goto l161;
      case 28:
        i0 = (OOC_INT64)design;
        i1 = (OOC_INT64)arguments;
        i2 = _check_pointer(i1, 199034);
        i3 = OOC_ARRAY_LENGTH(i2, 0);
        i1 = _check_pointer(i1, 199048);
        i4 = OOC_ARRAY_LENGTH(i1, 0);
        i2 = (OOC_INT64)*(OOC_INT64*)(i2+(_check_index(0, i3, OOC_UINT8, 199034))*8);
        i1 = (OOC_INT64)*(OOC_INT64*)(i1+(_check_index(1, i4, OOC_UINT8, 199048))*8);
        i0 = (OOC_INT64)*(OOC_INT64*)(_check_pointer(i0, 199018));
        i3 = (OOC_INT64)b;
        i0 = (OOC_INT64)OOC_IR__BuilderDesc_NewShift((OOC_IR__Builder)i3, (OOC_Scanner_BasicList__Symbol)i0, (OOC_IR__Expression)i2, (OOC_IR__Expression)i1, 1u);
        return (OOC_IR__Expression)i0;
        goto l161;
      default:
        _failed_case(i0, 188896);
        goto l161;
      }
l161:
      _failed_function(188452); return 0;
      ;
    }

    
    OOC_CHAR8 OOC_IR__BuilderDesc_NewCall_IsStatement(OOC_IR__Expression expr) {
      register OOC_INT64 i0,i1;

      i0 = (OOC_INT64)expr;
      i1 = i0==(OOC_INT64)0;
      if (i1) goto l3;
      i1 = (OOC_INT64)OOC_SymbolTable_Predef__GetType(17);
      i0 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 199246))+8);
      i0 = i0==i1;
      
      goto l4;
l3:
      i0=1u;
l4:
      return i0;
      ;
    }


  i0 = (OOC_INT64)design;
  i1 = OOC_TYPE_TEST(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 199331)))), &_td_OOC_IR__PredefProcDesc);
  if (i1) goto l51;
  i1 = (OOC_INT64)b;
  i2 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i1, 200050))+40);
  i2 = i0==i2;
  if (i2) goto l49;
  i2 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 200190))+8);
  i2 = OOC_SymbolTable_TypeRules__IsValidReceiverType((OOC_SymbolTable__Type)i2);
  if (i2) goto l7;
  i2 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 200220))+8);
  i2 = OOC_TYPE_TEST(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i2, 200226)))), &_td_OOC_SymbolTable__TypeVarDesc);
  
  goto l9;
l7:
  i2=1u;
l9:
  if (i2) goto l11;
  i2=0u;
  goto l13;
l11:
  i2 = (OOC_INT64)arguments;
  i2 = OOC_ARRAY_LENGTH((_check_pointer(i2, 200271)), 0);
  i2 = i2==1;
  
l13:
  if (i2) goto l15;
  i2=0u;
  goto l17;
l15:
  i2 = (OOC_INT64)arguments;
  i2 = _check_pointer(i2, 200291);
  i3 = OOC_ARRAY_LENGTH(i2, 0);
  i2 = (OOC_INT64)*(OOC_INT64*)(i2+(_check_index(0, i3, OOC_UINT8, 200291))*8);
  i2 = OOC_TYPE_TEST(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i2, 200295)))), &_td_OOC_IR__TypeRefDesc);
  
l17:
  if (i2) goto l47;
  i2 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i1, 200451))+48);
  i3 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 200442))+8);
  i2 = i3==i2;
  if (i2) goto l45;
  i2 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 200550))+8);
  i3 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 200550))+8);
  i2 = (OOC_INT64)OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i2, 200555)))), OOC_SymbolTable__TypeDesc_Deparam)),OOC_SymbolTable__TypeDesc_Deparam)((OOC_SymbolTable__Type)i3);
  i2 = !(OOC_TYPE_TEST(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i2, 200566)))), &_td_OOC_SymbolTable__FormalParsDesc));
  if (i2) goto l43;
  i2 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 200678))+8);
  i3 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 200678))+8);
  i2 = (OOC_INT64)OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i2, 200683)))), OOC_SymbolTable__TypeDesc_Deparam)),OOC_SymbolTable__TypeDesc_Deparam)((OOC_SymbolTable__Type)i3);
  type = (OOC_SymbolTable__Type)i2;
  i3 = isFunctionCall;
  if (i3) goto l25;
  i4=0u;
  goto l27;
l25:
  i4 = (OOC_INT64)*(OOC_INT64*)((_check_pointer((_type_guard(i2, ((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i2, 200733)))), &_td_OOC_SymbolTable__FormalParsDesc, 200733)), 200744))+80);
  i4 = i4==0;
  
l27:
  if (i4) goto l41;
  i3 = !i3;
  if (i3) goto l31;
  i2=0u;
  goto l33;
l31:
  i2 = (OOC_INT64)*(OOC_INT64*)((_check_pointer((_type_guard(i2, ((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i2, 200875)))), &_td_OOC_SymbolTable__FormalParsDesc, 200875)), 200886))+80);
  i2 = i2!=0;
  
l33:
  if (i2) goto l39;
  call = (OOC_IR__Call)((OOC_INT64)RT0__NewObject(_td_OOC_IR__Call.baseTypes[0]));
  i1 = OOC_TYPE_TEST(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 201030)))), &_td_OOC_IR__SelectProcDesc);
  if (i1) goto l37;
  receiver = (OOC_IR__Expression)0;
  i1=0;
  goto l38;
l37:
  i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer((_type_guard(i0, ((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 201081)))), &_td_OOC_IR__SelectProcDesc, 201081)), 201092))+16);
  receiver = (OOC_IR__Expression)i1;
  
l38:
  i2 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 201219))+8);
  i0 = (OOC_INT64)*(OOC_INT64*)(_check_pointer(i0, 201193));
  i3 = (OOC_INT64)endOfArgsSym;
  OOC_IR__BuilderDesc_NewCall_TransformArgs((OOC_Scanner_BasicList__Symbol)i0, (OOC_Scanner_BasicList__Symbol)i3, (OOC_SymbolTable__Type)i2, (OOC_IR__Expression)i1, (void*)(OOC_INT64)&arguments, (void*)(OOC_INT64)&formalPars);
  i0 = (OOC_INT64)formalPars;
  i1 = (OOC_INT64)call;
  i2 = (OOC_INT64)design;
  i3 = (OOC_INT64)arguments;
  OOC_IR__InitCall((OOC_IR__Call)i1, (OOC_IR__Expression)i2, (OOC_IR__ExpressionList)i3, (OOC_SymbolTable__VarDeclArray)i0);
  return (OOC_IR__Expression)i1;
  goto l70;
l39:
  i0 = (OOC_INT64)*(OOC_INT64*)(_check_pointer(i0, 200966));
  i0 = (OOC_INT64)OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i1, 200928)))), OOC_IR__BuilderDesc_ErrExpr)),OOC_IR__BuilderDesc_ErrExpr)((OOC_IR__Builder)i1, 36, (OOC_Scanner_BasicList__Symbol)i0);
  return (OOC_IR__Expression)i0;
  goto l70;
l41:
  i0 = (OOC_INT64)*(OOC_INT64*)(_check_pointer(i0, 200825));
  i0 = (OOC_INT64)OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i1, 200786)))), OOC_IR__BuilderDesc_ErrExpr)),OOC_IR__BuilderDesc_ErrExpr)((OOC_IR__Builder)i1, 37, (OOC_Scanner_BasicList__Symbol)i0);
  return (OOC_IR__Expression)i0;
  goto l70;
l43:
  i0 = (OOC_INT64)*(OOC_INT64*)(_check_pointer(i0, 200637));
  i0 = (OOC_INT64)OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i1, 200606)))), OOC_IR__BuilderDesc_ErrExpr)),OOC_IR__BuilderDesc_ErrExpr)((OOC_IR__Builder)i1, 35, (OOC_Scanner_BasicList__Symbol)i0);
  return (OOC_IR__Expression)i0;
  goto l70;
l45:
  i2 = (OOC_INT64)endOfArgsSym;
  i3 = (OOC_INT64)arguments;
  i0 = (OOC_INT64)OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i1, 200483)))), OOC_IR__BuilderDesc_NewQualType)),OOC_IR__BuilderDesc_NewQualType)((OOC_IR__Builder)i1, (OOC_IR__Expression)i0, (OOC_IR__ExpressionList)i3, (OOC_Scanner_BasicList__Symbol)i2);
  return (OOC_IR__Expression)i0;
  goto l70;
l47:
  i2 = (OOC_INT64)arguments;
  i3 = _check_pointer(i2, 200351);
  i4 = OOC_ARRAY_LENGTH(i3, 0);
  i3 = (OOC_INT64)*(OOC_INT64*)(i3+(_check_index(0, i4, OOC_UINT8, 200351))*8);
  i2 = _check_pointer(i2, 200408);
  i4 = OOC_ARRAY_LENGTH(i2, 0);
  i2 = (OOC_INT64)*(OOC_INT64*)(i2+(_check_index(0, i4, OOC_UINT8, 200408))*8);
  i3 = (OOC_INT64)*(OOC_INT64*)(_check_pointer(i3, 200354));
  i0 = (OOC_INT64)OOC_IR__BuilderDesc_NewTypeGuard((OOC_IR__Builder)i1, (OOC_Scanner_BasicList__Symbol)i3, (OOC_IR__Expression)i0, (OOC_IR__TypeRef)(_type_guard(i2, ((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i2, 200412)))), &_td_OOC_IR__TypeRefDesc, 200412)));
  return (OOC_IR__Expression)i0;
  goto l70;
l49:
  i0 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i1, 200084))+40);
  return (OOC_IR__Expression)i0;
  goto l70;
l51:
  i0 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 199373))+16);
  i0 = _type_guard(i0, ((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 199384)))), &_td_OOC_SymbolTable__PredefProcDesc, 199384);
  predefProc = (OOC_SymbolTable__PredefProc)i0;
  i1 = *(OOC_INT16*)((_check_pointer(i0, 199441))+90);
  i0 = *(OOC_INT16*)((_check_pointer(i0, 199462))+92);
  i0 = OOC_IR__BuilderDesc_NewCall_CheckNumberOfArguments(i1, i0);
  i0 = !i0;
  if (!i0) goto l54;
  i0 = (OOC_INT64)b;
  i0 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 199678))+40);
  return (OOC_IR__Expression)i0;
l54:
  i0 = (OOC_INT64)predefProc;
  i0 = *(OOC_INT16*)((_check_pointer(i0, 199750))+88);
  i1 = (OOC_INT64)design;
  i0 = (OOC_INT64)OOC_IR__BuilderDesc_NewCall_TranslatePredef((OOC_IR__PredefProc)i1, i0);
  expr = (OOC_IR__Expression)i0;
  i1 = isFunctionCall;
  if (i1) goto l57;
  i2=0u;
  goto l59;
l57:
  i2 = OOC_IR__BuilderDesc_NewCall_IsStatement((OOC_IR__Expression)i0);
  
l59:
  if (i2) goto l68;
  i1 = !i1;
  if (i1) goto l63;
  i1=0u;
  goto l65;
l63:
  i1 = OOC_IR__BuilderDesc_NewCall_IsStatement((OOC_IR__Expression)i0);
  i1 = !i1;
  
l65:
  if (!i1) goto l69;
  i1 = (OOC_INT64)b;
  i2 = (OOC_INT64)design;
  i2 = (OOC_INT64)*(OOC_INT64*)(_check_pointer(i2, 199976));
  i1 = (OOC_INT64)OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i1, 199938)))), OOC_IR__BuilderDesc_ErrExpr)),OOC_IR__BuilderDesc_ErrExpr)((OOC_IR__Builder)i1, 36, (OOC_Scanner_BasicList__Symbol)i2);
  return (OOC_IR__Expression)i1;
  goto l69;
l68:
  i1 = (OOC_INT64)b;
  i2 = (OOC_INT64)design;
  i2 = (OOC_INT64)*(OOC_INT64*)(_check_pointer(i2, 199860));
  i1 = (OOC_INT64)OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i1, 199821)))), OOC_IR__BuilderDesc_ErrExpr)),OOC_IR__BuilderDesc_ErrExpr)((OOC_IR__Builder)i1, 37, (OOC_Scanner_BasicList__Symbol)i2);
  return (OOC_IR__Expression)i1;
l69:
  return (OOC_IR__Expression)i0;
l70:
  _failed_function(178954); return 0;
  ;
}

void OOC_OOC_IR_init(void) {
  register OOC_INT64 i0;
  _c0 = Object__NewLatin1Region("", 1, 0, 0);
  _c1 = Object__NewLatin1Region("NIL", 4, 0, 3);
  _c2 = Object__NewLatin1Char(97u);

  i0 = (OOC_INT64)RT0__NewObject(_td_OOC_IR__ErrorContext.baseTypes[0]);
  OOC_IR__irContext = (OOC_IR__ErrorContext)i0;
  OOC_Error__InitContext((OOC_Error__Context)i0, "OOC:IR", 7);
  return;
  ;
}

/* --- */
