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

void OOC_Make__ErrorContextDesc_GetTemplate(OOC_Make__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, 4993))+16);
  switch (i1) {
  case 1:
    _copy_16((const void*)((OOC_CHAR16[]){67,97,110,110,111,116,32,108,111,99,97,116,101,32,109,111,100,117,108,101,32,96,36,123,110,97,109,101,125,39,0}),(void*)(OOC_INT64)t,128);
    goto l5;
  case 2:
    _copy_16((const void*)((OOC_CHAR16[]){77,111,100,117,108,101,32,105,115,32,97,108,114,101,97,100,121,32,112,97,114,116,32,111,102,32,108,105,98,114,97,114,121,32,96,36,123,110,97,109,101,125,39,0}),(void*)(OOC_INT64)t,128);
    goto l5;
  default:
    _failed_case(i1, 4985);
    goto l5;
  }
l5:
  i1 = (OOC_INT64)context;
  OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i1, 5172)))), 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;
  ;
}

void OOC_Make__InitRules(OOC_Make__Rules r) {
  register OOC_INT64 i0,i1;

  i0 = (OOC_INT64)r;
  *(OOC_INT32*)(_check_pointer(i0, 5270)) = 1;
  *(OOC_INT64*)((_check_pointer(i0, 5302))+8) = 0;
  *(OOC_INT64*)((_check_pointer(i0, 5328))+16) = 0;
  *(OOC_INT64*)((_check_pointer(i0, 5357))+24) = 0;
  *(OOC_INT64*)((_check_pointer(i0, 5398))+32) = 0;
  *(OOC_INT64*)((_check_pointer(i0, 5428))+40) = 0;
  i1 = (OOC_INT64)ADT_Dictionary__New();
  *(OOC_INT64*)((_check_pointer(i0, 5450))+48) = i1;
  *(OOC_INT64*)((_check_pointer(i0, 5483))+56) = 0;
  *(OOC_UINT8*)((_check_pointer(i0, 5511))+64) = 1u;
  i1 = (OOC_INT64)StdChannels__stdout;
  *(OOC_INT64*)((_check_pointer(i0, 5545))+72) = i1;
  *(OOC_UINT8*)((_check_pointer(i0, 5581))+80) = 0u;
  *(OOC_UINT8*)((_check_pointer(i0, 5609))+80) = 0u;
  *(OOC_INT64*)((_check_pointer(i0, 5637))+88) = 0;
  return;
  ;
}

OOC_Make__Rules OOC_Make__NewRules(void) {
  register OOC_INT64 i0;

  i0 = (OOC_INT64)RT0__NewObject(_td_OOC_Make__Rules.baseTypes[0]);
  OOC_Make__InitRules((OOC_Make__Rules)i0);
  return (OOC_Make__Rules)i0;
  ;
}

void OOC_Make__RulesDesc_SetBackend(OOC_Make__Rules r, OOC_INT32 backend) {
  register OOC_INT64 i0,i1;

  i0 = (OOC_INT64)r;
  i1 = backend;
  *(OOC_INT32*)(_check_pointer(i0, 5854)) = i1;
  return;
  ;
}

void OOC_Make__RulesDesc_SetLibraryName(OOC_Make__Rules r, Object__String name, Object__String version) {
  register OOC_INT64 i0,i1;

  i0 = (OOC_INT64)r;
  i1 = (OOC_INT64)name;
  *(OOC_INT64*)((_check_pointer(i0, 6084))+8) = i1;
  i1 = (OOC_INT64)version;
  *(OOC_INT64*)((_check_pointer(i0, 6111))+16) = i1;
  return;
  ;
}

void OOC_Make__RulesDesc_SetAllImportsModule(OOC_Make__Rules r, OOC_Repository__Module module) {
  register OOC_INT64 i0,i1;

  i0 = (OOC_INT64)r;
  i1 = (OOC_INT64)module;
  *(OOC_INT64*)((_check_pointer(i0, 6238))+24) = i1;
  return;
  ;
}

void OOC_Make__RulesDesc_SetErrOut(OOC_Make__Rules r, Channel__Channel ch) {
  register OOC_INT64 i0,i1;

  i0 = (OOC_INT64)r;
  i1 = (OOC_INT64)ch;
  *(OOC_INT64*)((_check_pointer(i0, 6368))+72) = i1;
  return;
  ;
}

void OOC_Make__RulesDesc_SetForceUpdate(OOC_Make__Rules r, OOC_CHAR8 forceUpdate) {
  register OOC_INT64 i0,i1;

  i0 = (OOC_INT64)r;
  i1 = forceUpdate;
  *(OOC_UINT8*)((_check_pointer(i0, 6474))+80) = i1;
  return;
  ;
}

OOC_CHAR8 OOC_Make__RulesDesc_UsageTracking(OOC_Make__Rules r, Object__String extIdent) {
  register OOC_INT64 i0,i1,i2;
  OOC_CHAR8 syntaxError;

  i0 = (OOC_INT64)r;
  i1 = (OOC_INT64)extIdent;
  i1 = (OOC_INT64)OOC_SymbolTable_Uses__New((Object__String)i1, (void*)(OOC_INT64)&syntaxError);
  i2 = syntaxError;
  *(OOC_INT64*)((_check_pointer(i0, 6635))+88) = i1;
  return (!i2);
  ;
}

void OOC_Make__RulesDesc_SetExtensionDict(OOC_Make__Rules r, OOC_SymbolTable__ExtensionDict dict) {
  register OOC_INT64 i0,i1;

  i0 = (OOC_INT64)r;
  i1 = (OOC_INT64)dict;
  *(OOC_INT64*)((_check_pointer(i0, 6802))+56) = i1;
  return;
  ;
}

OOC_CHAR8 OOC_Make__RulesDesc_CheckAllImports(OOC_Make__Rules r, OOC_Repository__Module module) {
  register OOC_INT64 i0,i1;

  i0 = (OOC_INT64)r;
  i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 7137))+24);
  i1 = i1==(OOC_INT64)0;
  if (i1) goto l3;
  i0 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 7180))+24);
  i1 = (OOC_INT64)module;
  i0 = i0==i1;
  
  goto l4;
l3:
  i0=1u;
l4:
  return i0;
  ;
}

OOC_Make__ModuleInfo OOC_Make__RulesDesc_GetModuleInfo(OOC_Make__Rules r, OOC_Repository__Module module) {
  register OOC_INT64 i0,i1,i2,i3,i4;
  Object__Object obj;
  OOC_Make__ModuleInfo mInfo;
  OOC_INT32 i;

  i0 = (OOC_INT64)r;
  i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 7393))+48);
  i2 = (OOC_INT64)module;
  i1 = ADT_Dictionary__DictionaryDesc_HasKey((ADT_Dictionary__Dictionary)i1, (Object__Object)i2);
  if (i1) goto l8;
  i1 = (OOC_INT64)RT0__NewObject(_td_OOC_Make__ModuleInfo.baseTypes[0]);
  mInfo = (OOC_Make__ModuleInfo)i1;
  i = 0;
  i3=0;
l3_loop:
  *(OOC_UINT8*)((_check_pointer(i1, 7563))+(_check_index(i3, 22, OOC_UINT32, 7571))) = 0u;
  *(OOC_UINT8*)(((_check_pointer(i1, 7598))+22)+(_check_index(i3, 22, OOC_UINT32, 7611))) = 0u;
  i3 = i3+1;
  i = i3;
  i4 = i3<=21;
  if (i4) goto l3_loop;
l7:
  *(OOC_UINT8*)((_check_pointer(i1, 7647))+44) = 0u;
  *(OOC_UINT8*)((_check_pointer(i1, 7678))+45) = 0u;
  i0 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 7710))+48);
  ADT_Dictionary__DictionaryDesc_Set((ADT_Dictionary__Dictionary)i0, (Object__Object)i2, (Object__Object)i1);
  i0=i1;
  goto l9;
l8:
  i0 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 7434))+48);
  i0 = (OOC_INT64)ADT_Dictionary__DictionaryDesc_Get((ADT_Dictionary__Dictionary)i0, (Object__Object)i2);
  obj = (Object__Object)i0;
  i0 = _type_guard(i0, ((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 7473)))), &_td_OOC_Make__ModuleInfoDesc, 7473);
  
l9:
  return (OOC_Make__ModuleInfo)i0;
  ;
}

static OOC_CHAR8 OOC_Make__Exists(OOC_Repository__Module module, OOC_INT8 fileId) {
  register OOC_INT64 i0,i1,i2;

  i0 = (OOC_INT64)module;
  i1 = fileId;
  i2 = OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 7875)))), OOC_Repository__ModuleDesc_FileExists)),OOC_Repository__ModuleDesc_FileExists)((OOC_Repository__Module)i0, i1);
  if (i2) goto l3;
  i0 = (OOC_INT64)OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 8051)))), OOC_Repository__ModuleDesc_GetURI)),OOC_Repository__ModuleDesc_GetURI)((OOC_Repository__Module)i0, i1, 1u);
  OOC_Logger__ExplainFileMake("file ", 6, (URI__URI)i0, " does not exist", 16);
  return 0u;
  goto l4;
l3:
  i0 = (OOC_INT64)OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 7944)))), OOC_Repository__ModuleDesc_GetURI)),OOC_Repository__ModuleDesc_GetURI)((OOC_Repository__Module)i0, i1, 1u);
  OOC_Logger__ExplainFileMake("file ", 6, (URI__URI)i0, " exists", 8);
  return 1u;
l4:
  _failed_function(7796); return 0;
  ;
}

static OOC_CHAR8 OOC_Make__DerivedIsOlder2(OOC_Repository__Module descendentModule, OOC_INT8 descendent, OOC_Repository__Module ancestorModule, OOC_INT8 ancestor) {
  register OOC_INT64 i0,i1,i2,i3,i4;
  struct Time__TimeStamp tsDesc;
  struct Time__TimeStamp tsAncest;

  i0 = (OOC_INT64)descendentModule;
  i1 = descendent;
  i2 = (OOC_INT64)&_td_Time__TimeStamp;
  OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 8699)))), OOC_Repository__ModuleDesc_GetTimeStamp)),OOC_Repository__ModuleDesc_GetTimeStamp)((OOC_Repository__Module)i0, i1, (void*)(OOC_INT64)&tsDesc, (RT0__Struct)i2);
  i3 = *(OOC_INT32*)(OOC_INT64)&tsDesc;
  i3 = i3==2147483647;
  if (i3) goto l7;
  i3 = (OOC_INT64)ancestorModule;
  i4 = ancestor;
  OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i3, 8953)))), OOC_Repository__ModuleDesc_GetTimeStamp)),OOC_Repository__ModuleDesc_GetTimeStamp)((OOC_Repository__Module)i3, i4, (void*)(OOC_INT64)&tsAncest, (RT0__Struct)i2);
  i2 = OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(i2, Time__TimeStamp_Cmp)),Time__TimeStamp_Cmp)((void*)(OOC_INT64)&tsDesc, (RT0__Struct)i2, (void*)(OOC_INT64)&tsAncest);
  i2 = i2>=0;
  if (i2) goto l5;
  i0 = (OOC_INT64)OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 9289)))), OOC_Repository__ModuleDesc_GetURI)),OOC_Repository__ModuleDesc_GetURI)((OOC_Repository__Module)i0, i1, 1u);
  i1 = (OOC_INT64)OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i3, 9373)))), OOC_Repository__ModuleDesc_GetURI)),OOC_Repository__ModuleDesc_GetURI)((OOC_Repository__Module)i3, i4, 1u);
  OOC_Logger__ExplainFilesMake("ts(", 4, (URI__URI)i0, ") < ts(", 8, (URI__URI)i1, ")", 2);
  return 1u;
  goto l8;
l5:
  i0 = (OOC_INT64)OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 9085)))), OOC_Repository__ModuleDesc_GetURI)),OOC_Repository__ModuleDesc_GetURI)((OOC_Repository__Module)i0, i1, 1u);
  i1 = (OOC_INT64)OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i3, 9170)))), OOC_Repository__ModuleDesc_GetURI)),OOC_Repository__ModuleDesc_GetURI)((OOC_Repository__Module)i3, i4, 1u);
  OOC_Logger__ExplainFilesMake("ts(", 4, (URI__URI)i0, ") >= ts(", 9, (URI__URI)i1, ")", 2);
  return 0u;
  goto l8;
l7:
  i0 = (OOC_INT64)OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 8829)))), OOC_Repository__ModuleDesc_GetURI)),OOC_Repository__ModuleDesc_GetURI)((OOC_Repository__Module)i0, i1, 1u);
  OOC_Logger__ExplainFileMake("file ", 6, (URI__URI)i0, " does not exist", 16);
  return 1u;
l8:
  _failed_function(8148); return 0;
  ;
}

static OOC_CHAR8 OOC_Make__DerivedIsOlder(OOC_Repository__Module module, OOC_INT8 descendent, OOC_INT8 ancestor) {
  register OOC_INT64 i0,i1,i2;

  i0 = (OOC_INT64)module;
  i1 = descendent;
  i2 = ancestor;
  i0 = OOC_Make__DerivedIsOlder2((OOC_Repository__Module)i0, i1, (OOC_Repository__Module)i0, i2);
  return i0;
  ;
}

static OOC_CHAR8 OOC_Make__FingerprintMismatch(OOC_Repository__Module descendentModule, OOC_INT32 descendentFP, OOC_Repository__Module ancestorModule, OOC_INT32 ancestorFP) {
  register OOC_INT64 i0,i1;

  i0 = descendentFP;
  i1 = ancestorFP;
  i0 = i0==i1;
  if (i0) goto l3;
  i0 = (OOC_INT64)descendentModule;
  i0 = (OOC_INT64)OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 10204)))), OOC_Repository__ModuleDesc_GetURI)),OOC_Repository__ModuleDesc_GetURI)((OOC_Repository__Module)i0, 1, 1u);
  i1 = (OOC_INT64)ancestorModule;
  i1 = (OOC_INT64)OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i1, 10293)))), OOC_Repository__ModuleDesc_GetURI)),OOC_Repository__ModuleDesc_GetURI)((OOC_Repository__Module)i1, 1, 1u);
  OOC_Logger__ExplainFilesMake("fp(", 4, (URI__URI)i0, ") # fp(", 8, (URI__URI)i1, ")", 2);
  return 1u;
  goto l4;
l3:
  i0 = (OOC_INT64)descendentModule;
  i0 = (OOC_INT64)OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 9993)))), OOC_Repository__ModuleDesc_GetURI)),OOC_Repository__ModuleDesc_GetURI)((OOC_Repository__Module)i0, 1, 1u);
  i1 = (OOC_INT64)ancestorModule;
  i1 = (OOC_INT64)OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i1, 10082)))), OOC_Repository__ModuleDesc_GetURI)),OOC_Repository__ModuleDesc_GetURI)((OOC_Repository__Module)i1, 1, 1u);
  OOC_Logger__ExplainFilesMake("fp(", 4, (URI__URI)i0, ") = fp(", 8, (URI__URI)i1, ")", 2);
  return 0u;
l4:
  _failed_function(9666); return 0;
  ;
}

static OOC_Error__List OOC_Make__CreateErrList(OOC_Repository__Module module) {
  register OOC_INT64 i0;
  URI__URI uri;

  i0 = (OOC_INT64)module;
  i0 = (OOC_INT64)OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 10495)))), OOC_Repository__ModuleDesc_GetURI)),OOC_Repository__ModuleDesc_GetURI)((OOC_Repository__Module)i0, 0, 1u);
  uri = (URI__URI)i0;
  i0 = (OOC_INT64)OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 10559)))), URI__URIDesc_ToString)),URI__URIDesc_ToString)((URI__URI)i0);
  i0 = (OOC_INT64)OOC_Error__NewList((Object__String)i0);
  return (OOC_Error__List)i0;
  ;
}

void OOC_Make__RulesDesc_WriteErrList(OOC_Make__Rules r, OOC_Error__List errList) {
  register OOC_INT64 i0,i1;

  i0 = (OOC_INT64)errList;
  i1 = *(OOC_INT32*)(_check_pointer(i0, 10676));
  i1 = i1!=0;
  if (!i1) goto l4;
  i1 = (OOC_INT64)r;
  i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i1, 10717))+72);
  OOC_Error__ListDesc_Write((OOC_Error__List)i0, (Channel__Channel)i1);
l4:
  return;
  ;
}

void OOC_Make__RulesDesc_WriteError(OOC_Make__Rules r, OOC_Repository__Module module, Msg__Msg res) {
  register OOC_INT64 i0,i1;
  OOC_Error__List errList;

  i0 = (OOC_INT64)module;
  i0 = (OOC_INT64)OOC_Make__CreateErrList((OOC_Repository__Module)i0);
  errList = (OOC_Error__List)i0;
  i1 = (OOC_INT64)res;
  OOC_Error__ListDesc_Append((OOC_Error__List)i0, (Msg__Msg)i1);
  i1 = (OOC_INT64)r;
  OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i1, 10931)))), OOC_Make__RulesDesc_WriteErrList)),OOC_Make__RulesDesc_WriteErrList)((OOC_Make__Rules)i1, (OOC_Error__List)i0);
  return;
  ;
}

static void OOC_Make__WriteImports(OOC_Repository__Module module) {
  register OOC_INT64 i0,i1,i2,i3,i4,i5;
  OOC_INT32 i;
  OOC_Repository__Module import;

  i0 = (OOC_INT64)module;
  i1 = *(OOC_INT8*)((_check_pointer(i0, 11116))+32);
  _assert((i1>=2), 127, 11103);
  Out__String("> IMPORT of ", 13);
  i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 11197))+8);
  i2 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 11197))+8);
  i2 = OOC_ARRAY_LENGTH((_check_pointer(i2, 11202)), 0);
  Out__String((void*)(_check_pointer(i1, 11202)), i2);
  Out__Ln();
  i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 11242))+40);
  i = 0;
  i1 = OOC_ARRAY_LENGTH((_check_pointer(i1, 11255)), 0);
  i2 = 0<i1;
  if (!i2) goto l12;
  i2=0;
l3_loop:
  i3 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 11315))+40);
  i3 = _check_pointer(i3, 11328);
  i4 = OOC_ARRAY_LENGTH(i3, 0);
  i3 = (OOC_INT64)*(OOC_INT64*)(i3+((_check_index(i2, i4, OOC_UINT32, 11328))*24));
  i3 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i3, 11336))+16);
  i4 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 11315))+40);
  i4 = _check_pointer(i4, 11328);
  i5 = OOC_ARRAY_LENGTH(i4, 0);
  i4 = (OOC_INT64)*(OOC_INT64*)(i4+((_check_index(i2, i5, OOC_UINT32, 11328))*24));
  i4 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i4, 11336))+16);
  i4 = OOC_ARRAY_LENGTH((_check_pointer(i4, 11340)), 0);
  i5 = (OOC_INT64)OOC_Config__repositories;
  i3 = (OOC_INT64)OOC_Config_Repositories__SectionDesc_GetModule((OOC_Config_Repositories__Section)i5, (void*)(_check_pointer(i3, 11340)), i4);
  import = (OOC_Repository__Module)i3;
  i4 = i3==0;
  if (i4) goto l6;
  Out__String("> ", 3);
  i4 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i3, 11547))+8);
  i3 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i3, 11547))+8);
  i3 = OOC_ARRAY_LENGTH((_check_pointer(i3, 11552)), 0);
  Out__String((void*)(_check_pointer(i4, 11552)), i3);
  Out__Ln();
  goto l7;
l6:
  Out__String("> no such module: ", 19);
  i3 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 11440))+40);
  i3 = _check_pointer(i3, 11453);
  i4 = OOC_ARRAY_LENGTH(i3, 0);
  i3 = (OOC_INT64)*(OOC_INT64*)(i3+((_check_index(i2, i4, OOC_UINT32, 11453))*24));
  i3 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i3, 11461))+16);
  i4 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 11440))+40);
  i4 = _check_pointer(i4, 11453);
  i5 = OOC_ARRAY_LENGTH(i4, 0);
  i4 = (OOC_INT64)*(OOC_INT64*)(i4+((_check_index(i2, i5, OOC_UINT32, 11453))*24));
  i4 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i4, 11461))+16);
  i4 = OOC_ARRAY_LENGTH((_check_pointer(i4, 11465)), 0);
  Out__String((void*)(_check_pointer(i3, 11465)), i4);
  Out__Ln();
l7:
  i2 = i2+1;
  i = i2;
  i3 = i2<i1;
  if (i3) goto l3_loop;
l12:
  return;
  ;
}

OOC_CHAR8 OOC_Make__RulesDesc_GetImports(OOC_Make__Rules r, OOC_Repository__Module module) {
  register OOC_INT64 i0,i1,i2,i3;
  OOC_AST__Node ast;
  OOC_SymbolTable__Module symTab;
  OOC_Config_Pragmas__History pragmaHistory;
  OOC_Error__List errList;
  auto void OOC_Make__RulesDesc_GetImports_ResolveNames(void);
    
    void OOC_Make__RulesDesc_GetImports_ResolveNames(void) {
      register OOC_INT64 i0,i1,i2,i3,i4;
      OOC_INT32 i;
      OOC_Repository__Module import;
      auto void OOC_Make__RulesDesc_GetImports_ResolveNames_Err(OOC_INT32 code, OOC_SymbolTable__Name sym);
        
        void OOC_Make__RulesDesc_GetImports_ResolveNames_Err(OOC_INT32 code, OOC_SymbolTable__Name sym) {
          register OOC_INT64 i0,i1,i2,i3;
          Msg__Msg lastError;
          OOC_INT32 pos;

          i0 = (OOC_INT64)OOC_Make__makeContext;
          i1 = code;
          i0 = (OOC_INT64)OOC_Error__New((OOC_Error__Context)i0, i1);
          lastError = (Msg__Msg)i0;
          i1 = (OOC_INT64)sym;
          i2 = *(OOC_INT32*)(_check_pointer(i1, 12491));
          pos = i2;
          i3 = i2<0;
          if (!i3) goto l4;
          pos = 0;
          i2=0;
l4:
          OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 12573)))), Msg__MsgDesc_SetIntAttrib)),Msg__MsgDesc_SetIntAttrib)((Msg__Msg)i0, "pos", 4, i2);
          i2 = *(OOC_INT32*)((_check_pointer(i1, 12646))+4);
          OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 12619)))), Msg__MsgDesc_SetIntAttrib)),Msg__MsgDesc_SetIntAttrib)((Msg__Msg)i0, "line", 5, i2);
          i2 = *(OOC_INT32*)((_check_pointer(i1, 12701))+8);
          OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 12672)))), Msg__MsgDesc_SetIntAttrib)),Msg__MsgDesc_SetIntAttrib)((Msg__Msg)i0, "column", 7, i2);
          i2 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i1, 12776))+16);
          i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i1, 12776))+16);
          i1 = OOC_ARRAY_LENGTH((_check_pointer(i1, 12781)), 0);
          i1 = (OOC_INT64)Msg__GetStringPtr((void*)(_check_pointer(i2, 12781)), i1);
          OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 12729)))), Msg__MsgDesc_SetStringAttrib)),Msg__MsgDesc_SetStringAttrib)((Msg__Msg)i0, "name", 5, (Msg__StringPtr)i1);
          i1 = (OOC_INT64)errList;
          OOC_Error__ListDesc_Append((OOC_Error__List)i1, (Msg__Msg)i0);
          return;
          ;
        }


      i0 = (OOC_INT64)module;
      i0 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 12882))+40);
      i = 0;
      i0 = OOC_ARRAY_LENGTH((_check_pointer(i0, 12895)), 0);
      i1 = 0<i0;
      if (!i1) goto l15;
      i1=0;
l3_loop:
      i2 = (OOC_INT64)module;
      i3 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i2, 12921))+40);
      i3 = _check_pointer(i3, 12934);
      i4 = OOC_ARRAY_LENGTH(i3, 0);
      i3 = *(OOC_UINT8*)((i3+((_check_index(i1, i4, OOC_UINT32, 12934))*24))+16);
      i3 = !i3;
      if (!i3) goto l10;
      i3 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i2, 13008))+40);
      i3 = _check_pointer(i3, 13021);
      i4 = OOC_ARRAY_LENGTH(i3, 0);
      i3 = (OOC_INT64)*(OOC_INT64*)(i3+((_check_index(i1, i4, OOC_UINT32, 13021))*24));
      i3 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i3, 13029))+16);
      i2 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i2, 13008))+40);
      i2 = _check_pointer(i2, 13021);
      i4 = OOC_ARRAY_LENGTH(i2, 0);
      i2 = (OOC_INT64)*(OOC_INT64*)(i2+((_check_index(i1, i4, OOC_UINT32, 13021))*24));
      i2 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i2, 13029))+16);
      i2 = OOC_ARRAY_LENGTH((_check_pointer(i2, 13033)), 0);
      i4 = (OOC_INT64)OOC_Config__repositories;
      i2 = (OOC_INT64)OOC_Config_Repositories__SectionDesc_GetModule((OOC_Config_Repositories__Section)i4, (void*)(_check_pointer(i3, 13033)), i2);
      import = (OOC_Repository__Module)i2;
      i3 = i2==0;
      if (i3) goto l8;
      i3 = (OOC_INT64)module;
      i3 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i3, 13164))+40);
      i3 = _check_pointer(i3, 13177);
      i4 = OOC_ARRAY_LENGTH(i3, 0);
      *(OOC_INT64*)((i3+((_check_index(i1, i4, OOC_UINT32, 13177))*24))+8) = i2;
      goto l10;
l8:
      i2 = (OOC_INT64)module;
      i2 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i2, 13107))+40);
      i2 = _check_pointer(i2, 13120);
      i3 = OOC_ARRAY_LENGTH(i2, 0);
      i1 = (OOC_INT64)*(OOC_INT64*)(i2+((_check_index(i1, i3, OOC_UINT32, 13120))*24));
      OOC_Make__RulesDesc_GetImports_ResolveNames_Err(1, (OOC_SymbolTable__Name)i1);
l10:
      i1 = i;
      i1 = i1+1;
      i = i1;
      i2 = i1<i0;
      if (i2) goto l3_loop;
l15:
      return;
      ;
    }


  i0 = (OOC_INT64)module;
  i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 13312))+8);
  i2 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 13312))+8);
  i2 = OOC_ARRAY_LENGTH((_check_pointer(i2, 13317)), 0);
  OOC_Logger__EnterMake("GetImports", 11, (void*)(_check_pointer(i1, 13317)), i2);
  i1 = *(OOC_INT8*)((_check_pointer(i0, 13335))+32);
  i1 = i1!=1;
  if (i1) goto l14;
  i1 = OOC_Make__Exists((OOC_Repository__Module)i0, 0);
  if (i1) goto l5;
  i1=0u;
  goto l7;
l5:
  i1 = OOC_Make__DerivedIsOlder((OOC_Repository__Module)i0, 1, 0);
  
l7:
  if (i1) goto l9;
  i1 = (OOC_INT64)OOC_Make__CreateErrList((OOC_Repository__Module)i0);
  errList = (OOC_Error__List)i1;
  i1 = (OOC_INT64)OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 14320)))), OOC_Repository__ModuleDesc_ReadSymbolFile)),OOC_Repository__ModuleDesc_ReadSymbolFile)((OOC_Repository__Module)i0);
  symTab = (OOC_SymbolTable__Module)i1;
  i2 = (OOC_INT64)r;
  i2 = OOC_Make__RulesDesc_CheckAllImports((OOC_Make__Rules)i2, (OOC_Repository__Module)i0);
  OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 14358)))), OOC_Repository__ModuleDesc_SetInterfaceData)),OOC_Repository__ModuleDesc_SetInterfaceData)((OOC_Repository__Module)i0, (OOC_SymbolTable__Module)i1, 3, i2);
  i1 = (OOC_INT64)symTab;
  i1 = *(OOC_INT32*)((_check_pointer(i1, 14504))+128);
  OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 14482)))), OOC_Repository__ModuleDesc_SetFingerprint)),OOC_Repository__ModuleDesc_SetFingerprint)((OOC_Repository__Module)i0, i1);
  goto l15;
l9:
  i1 = (OOC_INT64)r;
  i2 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i1, 13861))+8);
  i3 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i1, 13876))+88);
  OOC_Auxiliary_ParseModule__ParseModule((OOC_Repository__Module)i0, 0u, 0u, 0u, 1u, (Object__String)i2, (OOC_SymbolTable_Uses__Uses)i3, (void*)(OOC_INT64)&ast, (void*)(OOC_INT64)&symTab, (void*)(OOC_INT64)&pragmaHistory, (void*)(OOC_INT64)&errList);
  i2 = (OOC_INT64)errList;
  i2 = OOC_Error__ListDesc_NoErrors((OOC_Error__List)i2);
  if (!i2) goto l15;
  i1 = OOC_Make__RulesDesc_CheckAllImports((OOC_Make__Rules)i1, (OOC_Repository__Module)i0);
  i2 = (OOC_INT64)symTab;
  OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 13998)))), OOC_Repository__ModuleDesc_SetInterfaceData)),OOC_Repository__ModuleDesc_SetInterfaceData)((OOC_Repository__Module)i0, (OOC_SymbolTable__Module)i2, 2, i1);
  goto l15;
l14:
  OOC_Logger__ExplainMake("using cached value", 19);
  i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 13471))+8);
  i0 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 13471))+8);
  i0 = OOC_ARRAY_LENGTH((_check_pointer(i0, 13476)), 0);
  i0 = OOC_Logger__ExitMake("GetImports", 11, (void*)(_check_pointer(i1, 13476)), i0, 1u);
  return i0;
l15:
  i0 = (OOC_INT64)errList;
  i0 = OOC_Error__ListDesc_NoErrors((OOC_Error__List)i0);
  if (!i0) goto l18;
  OOC_Make__RulesDesc_GetImports_ResolveNames();
l18:
  i0 = (OOC_INT64)r;
  i1 = (OOC_INT64)errList;
  OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 14601)))), OOC_Make__RulesDesc_WriteErrList)),OOC_Make__RulesDesc_WriteErrList)((OOC_Make__Rules)i0, (OOC_Error__List)i1);
  i0 = (OOC_INT64)module;
  i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 14672))+8);
  i0 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 14672))+8);
  i2 = (OOC_INT64)errList;
  i2 = OOC_Error__ListDesc_NoErrors((OOC_Error__List)i2);
  i0 = OOC_ARRAY_LENGTH((_check_pointer(i0, 14677)), 0);
  i0 = OOC_Logger__ExitMake("GetImports", 11, (void*)(_check_pointer(i1, 14677)), i0, i2);
  return i0;
  ;
}

OOC_INT32 OOC_Make__RulesDesc_SelectBackend(OOC_Make__Rules r, OOC_Repository__Module module) {
  register OOC_INT64 i0,i1,i2;
  OOC_INT32 b;

  i0 = (OOC_INT64)r;
  i1 = *(OOC_INT32*)(_check_pointer(i0, 14955));
  b = i1;
  i2 = (OOC_INT64)module;
  i0 = OOC_Make__RulesDesc_GetImports((OOC_Make__Rules)i0, (OOC_Repository__Module)i2);
  if (i0) goto l3;
  i0=i1;
  goto l16;
l3:
  i0 = i1==3;
  if (i0) goto l6;
  i0=0u;
  goto l12;
l6:
  i0 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i2, 15049))+24);
  i0 = *(OOC_INT8*)((_check_pointer(i0, 15056))+96);
  i0 = i0==2;
  if (i0) goto l9;
  i0 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i2, 15100))+24);
  i0 = *(OOC_INT8*)((_check_pointer(i0, 15107))+96);
  i0 = i0==3;
  
  goto l12;
l9:
  i0=1u;
l12:
  if (i0) goto l14;
  i0=i1;
  goto l16;
l14:
  i0=1;
l16:
  return i0;
  ;
}

OOC_CHAR8 OOC_Make__RulesDesc_CompileModule(OOC_Make__Rules r, OOC_Repository__Module module, OOC_CHAR8 analysisOnly) {
  register OOC_INT64 i0,i1,i2,i3,i4;
  OOC_Make__ModuleInfo mInfo;
  Object__String libraryName;
  OOC_Error__List errList;
  OOC_CHAR8 success;
  auto OOC_Error__List OOC_Make__RulesDesc_CompileModule_DoEmptyBackend(Object__String libraryName);
  auto OOC_Error__List OOC_Make__RulesDesc_CompileModule_DoSSAtoC(Object__String libraryName);
  auto OOC_Error__List OOC_Make__RulesDesc_CompileModule_DoIRtoC(Object__String libraryName);
  auto OOC_Error__List OOC_Make__RulesDesc_CompileModule_DoSSAtoIA32(Object__String libraryName);
    
    OOC_Error__List OOC_Make__RulesDesc_CompileModule_DoEmptyBackend(Object__String libraryName) {
      register OOC_INT64 i0,i1,i2;
      OOC_AST__Node ast;
      OOC_SymbolTable__Module symTab;
      OOC_Config_Pragmas__History pragmaHistory;
      OOC_Error__List errList;

      i0 = (OOC_INT64)r;
      i0 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 15918))+88);
      i1 = (OOC_INT64)module;
      i2 = (OOC_INT64)libraryName;
      OOC_Auxiliary_ParseModule__ParseModule((OOC_Repository__Module)i1, 0u, 1u, 1u, 0u, (Object__String)i2, (OOC_SymbolTable_Uses__Uses)i0, (void*)(OOC_INT64)&ast, (void*)(OOC_INT64)&symTab, (void*)(OOC_INT64)&pragmaHistory, (void*)(OOC_INT64)&errList);
      i0 = (OOC_INT64)errList;
      return (OOC_Error__List)i0;
      ;
    }

    
    OOC_Error__List OOC_Make__RulesDesc_CompileModule_DoSSAtoC(Object__String libraryName) {
      register OOC_INT64 i0,i1,i2,i3,i4,i5,i6;
      OOC_Make_TranslateToC__Translator t;

      i0 = OOC_Make__writeStats;
      i1 = (OOC_INT64)OOC_Make__inspectProc;
      i2 = (OOC_INT64)OOC_Make__inspectStage;
      i0 = (OOC_INT64)OOC_SSA_WriteC__NewTranslator(i0, (StringSearch__Matcher)i1, (StringSearch__Matcher)i2);
      t = (OOC_Make_TranslateToC__Translator)i0;
      i1 = (OOC_INT64)r;
      i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i1, 16275))+88);
      i2 = (OOC_INT64)module;
      i3 = (OOC_INT64)libraryName;
      i4 = analysisOnly;
      i5 = OOC_Make__writeAST;
      i6 = OOC_Make__writeIR;
      i0 = (OOC_INT64)OOC_Make_TranslateToC__Run((OOC_Repository__Module)i2, (Object__String)i3, i4, (OOC_SymbolTable_Uses__Uses)i1, i5, i6, (OOC_Make_TranslateToC__Translator)i0);
      return (OOC_Error__List)i0;
      ;
    }

    
    OOC_Error__List OOC_Make__RulesDesc_CompileModule_DoIRtoC(Object__String libraryName) {
      register OOC_INT64 i0,i1,i2,i3,i4,i5,i6;
      OOC_Make_TranslateToC__Translator t;

      i0 = (OOC_INT64)OOC_C_IRtoC__NewTranslator();
      t = (OOC_Make_TranslateToC__Translator)i0;
      i1 = (OOC_INT64)r;
      i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i1, 16580))+88);
      i2 = (OOC_INT64)module;
      i3 = (OOC_INT64)libraryName;
      i4 = analysisOnly;
      i5 = OOC_Make__writeAST;
      i6 = OOC_Make__writeIR;
      i0 = (OOC_INT64)OOC_Make_TranslateToC__Run((OOC_Repository__Module)i2, (Object__String)i3, i4, (OOC_SymbolTable_Uses__Uses)i1, i5, i6, (OOC_Make_TranslateToC__Translator)i0);
      return (OOC_Error__List)i0;
      ;
    }

    
    OOC_Error__List OOC_Make__RulesDesc_CompileModule_DoSSAtoIA32(Object__String libraryName) {
      register OOC_INT64 i0,i1,i2,i3,i4,i5;
      OOC_Make_TranslateToIA32__Translator t;

      i0 = (OOC_INT64)module;
      i1 = (OOC_INT64)OOC_Make__inspectProc;
      i2 = (OOC_INT64)OOC_Make__inspectStage;
      i0 = (OOC_INT64)OOC_IA32_WriteAssembler__NewTranslator((OOC_Repository__Module)i0, (StringSearch__Matcher)i1, (StringSearch__Matcher)i2);
      t = (OOC_Make_TranslateToIA32__Translator)i0;
      i1 = (OOC_INT64)r;
      i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i1, 16917))+88);
      i2 = (OOC_INT64)libraryName;
      i3 = OOC_Make__writeAST;
      i4 = OOC_Make__writeIR;
      i5 = (OOC_INT64)module;
      i0 = (OOC_INT64)OOC_Make_TranslateToIA32__Run((OOC_Repository__Module)i5, (Object__String)i2, (OOC_SymbolTable_Uses__Uses)i1, i3, i4, (OOC_Make_TranslateToIA32__Translator)i0);
      return (OOC_Error__List)i0;
      ;
    }


  i0 = (OOC_INT64)r;
  i1 = (OOC_INT64)module;
  i2 = (OOC_INT64)OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 17026)))), OOC_Make__RulesDesc_GetModuleInfo)),OOC_Make__RulesDesc_GetModuleInfo)((OOC_Make__Rules)i0, (OOC_Repository__Module)i1);
  mInfo = (OOC_Make__ModuleInfo)i2;
  i3 = *(OOC_UINT8*)((_check_pointer(i2, 17062))+44);
  if (i3) goto l33;
  i2 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i1, 17224))+8);
  i3 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i1, 17224))+8);
  i3 = OOC_ARRAY_LENGTH((_check_pointer(i3, 17229)), 0);
  OOC_Logger__EnterMake("CompileModule", 14, (void*)(_check_pointer(i2, 17229)), i3);
  i2 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 17256))+8);
  libraryName = (Object__String)i2;
  i3 = i2!=(OOC_INT64)0;
  if (i3) goto l5;
  i3=0u;
  goto l7;
l5:
  i3 = (OOC_INT64)*(OOC_INT64*)(_check_pointer(i1, 17308));
  i4 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 17319))+32);
  i3 = i3!=i4;
  
l7:
  if (!i3) goto l10;
  libraryName = (Object__String)(OOC_INT64)0;
  i2=(OOC_INT64)0;
l10:
  i0 = OOC_Make__RulesDesc_SelectBackend((OOC_Make__Rules)i0, (OOC_Repository__Module)i1);
  switch (i0) {
  case 0:
    i0 = (OOC_INT64)OOC_Make__RulesDesc_CompileModule_DoEmptyBackend((Object__String)i2);
    errList = (OOC_Error__List)i0;
    goto l17;
  case 1:
    i0 = (OOC_INT64)OOC_Make__RulesDesc_CompileModule_DoSSAtoC((Object__String)i2);
    errList = (OOC_Error__List)i0;
    goto l17;
  case 2:
    i0 = (OOC_INT64)OOC_Make__RulesDesc_CompileModule_DoIRtoC((Object__String)i2);
    errList = (OOC_Error__List)i0;
    goto l17;
  case 3:
    i0 = (OOC_INT64)OOC_Make__RulesDesc_CompileModule_DoSSAtoIA32((Object__String)i2);
    errList = (OOC_Error__List)i0;
    goto l17;
  default:
    _failed_case(i0, 17660);
    goto l17;
  }
l17:
  i0 = (OOC_INT64)errList;
  i1 = i0==(OOC_INT64)0;
  if (i1) goto l20;
  i1 = OOC_Error__ListDesc_NoErrors((OOC_Error__List)i0);
  
  goto l21;
l20:
  i1=1u;
l21:
  success = i1;
  i2 = (OOC_INT64)r;
  i3 = (OOC_INT64)module;
  if (i1) goto l24;
  i4=0u;
  goto l26;
l24:
  i4 = analysisOnly;
  i4 = !i4;
  
l26:
  if (!i4) goto l32;
  OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i3, 18137)))), OOC_Repository__ModuleDesc_SetInterfaceData)),OOC_Repository__ModuleDesc_SetInterfaceData)((OOC_Repository__Module)i3, (OOC_SymbolTable__Module)(OOC_INT64)0, 1, 1u);
  i1 = OOC_Make__RulesDesc_GetImports((OOC_Make__Rules)i2, (OOC_Repository__Module)i3);
  success = i1;
  if (!i1) goto l32;
  i4 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i3, 18293))+24);
  OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i3, 18269)))), OOC_Repository__ModuleDesc_SetInterfaceData)),OOC_Repository__ModuleDesc_SetInterfaceData)((OOC_Repository__Module)i3, (OOC_SymbolTable__Module)i4, 4, 1u);
l32:
  OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i2, 18363)))), OOC_Make__RulesDesc_WriteErrList)),OOC_Make__RulesDesc_WriteErrList)((OOC_Make__Rules)i2, (OOC_Error__List)i0);
  i0 = (OOC_INT64)mInfo;
  *(OOC_UINT8*)((_check_pointer(i0, 18405))+44) = 1u;
  *(OOC_UINT8*)((_check_pointer(i0, 18435))+45) = i1;
  i0 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i3, 18514))+8);
  i2 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i3, 18514))+8);
  i2 = OOC_ARRAY_LENGTH((_check_pointer(i2, 18519)), 0);
  i0 = OOC_Logger__ExitMake("CompileModule", 14, (void*)(_check_pointer(i0, 18519)), i2, i1);
  return i0;
  goto l34;
l33:
  OOC_Logger__ExplainMake("cached result: CompileModule", 29);
  i0 = *(OOC_UINT8*)((_check_pointer(i2, 17153))+45);
  return i0;
l34:
  _failed_function(15244); return 0;
  ;
}

OOC_CHAR8 OOC_Make__RulesDesc_UpdateSymbolFile(OOC_Make__Rules r, OOC_Repository__Module module) {
  register OOC_INT64 i0,i1,i2,i3,i4,i5,i6,i7,i8;
  OOC_CHAR8 isUpToDate;
  Msg__Msg err;
  Object__CharsLatin1 chars;
  OOC_INT32 i;
  OOC_CHAR8 dummy;
  OOC_Error__List errList;

  i0 = (OOC_INT64)module;
  i1 = *(OOC_INT8*)((_check_pointer(i0, 18799))+32);
  i1 = i1==4;
  if (i1) goto l68;
  i1 = (OOC_INT64)r;
  i2 = OOC_Make__RulesDesc_GetImports((OOC_Make__Rules)i1, (OOC_Repository__Module)i0);
  if (!i2) goto l69;
  i2 = OOC_Make__Exists((OOC_Repository__Module)i0, 0);
  i2 = !i2;
  if (i2) goto l7;
  i2 = OOC_Make__DerivedIsOlder((OOC_Repository__Module)i0, 1, 0);
  i2 = !i2;
  
  goto l8;
l7:
  i2=1u;
l8:
  isUpToDate = i2;
  i3 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i1, 19230))+8);
  i3 = i3!=(OOC_INT64)0;
  if (i3) goto l11;
  i3=0u;
  goto l13;
l11:
  i3 = (OOC_INT64)*(OOC_INT64*)(_check_pointer(i0, 19259));
  i4 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i1, 19270))+32);
  i3 = i3==i4;
  
l13:
  if (!i3) goto l23;
  i3 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 19311))+24);
  i3 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i3, 19318))+104);
  i3 = i3==(OOC_INT64)0;
  if (i3) goto l21;
  i3 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 19614))+24);
  i3 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i3, 19621))+104);
  i4 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 19614))+24);
  i4 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i4, 19621))+104);
  i5 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i1, 19642))+8);
  i3 = OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i3, 19633)))), Object__StringDesc_Equals)),Object__StringDesc_Equals)((Object__String)i4, (Object__Object)i5);
  i3 = !i3;
  if (!i3) goto l23;
  i3 = (OOC_INT64)OOC_Make__makeContext;
  i3 = (OOC_INT64)OOC_Error__New((OOC_Error__Context)i3, 2);
  err = (Msg__Msg)i3;
  i4 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 19933))+24);
  i4 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i4, 19940))+104);
  i4 = (OOC_INT64)Object__String8Desc_CharsLatin1((Object__String8)(_type_guard(i4, ((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i4, 19960)))), &_td_Object__String8Desc, 19960)));
  chars = (Object__CharsLatin1)i4;
  i5 = OOC_ARRAY_LENGTH((_check_pointer(i4, 20046)), 0);
  i4 = (OOC_INT64)Msg__GetStringPtr((void*)(_check_pointer(i4, 20046)), i5);
  OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i3, 19997)))), Msg__MsgDesc_SetStringAttrib)),Msg__MsgDesc_SetStringAttrib)((Msg__Msg)i3, "name", 5, (Msg__StringPtr)i4);
  OOC_Make__RulesDesc_WriteError((OOC_Make__Rules)i1, (OOC_Repository__Module)i0, (Msg__Msg)i3);
  return 0u;
  goto l23;
l21:
  OOC_Logger__ExplainMake("module is not part of a library", 32);
  isUpToDate = 0u;
  i2=0u;
l23:
  i = 0;
  i3 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 20332))+40);
  i3 = OOC_ARRAY_LENGTH((_check_pointer(i3, 20345)), 0);
  i3 = 0!=i3;
  if (!i3) goto l44;
  i3=i2;i2=0;
l27_loop:
  i4 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 20370))+40);
  i4 = _check_pointer(i4, 20383);
  i5 = OOC_ARRAY_LENGTH(i4, 0);
  i4 = *(OOC_UINT8*)((i4+((_check_index(i2, i5, OOC_UINT32, 20383))*24))+16);
  i4 = !i4;
  if (!i4) goto l38;
  i4 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 20429))+40);
  i4 = _check_pointer(i4, 20442);
  i5 = OOC_ARRAY_LENGTH(i4, 0);
  i4 = (OOC_INT64)*(OOC_INT64*)((i4+((_check_index(i2, i5, OOC_UINT32, 20442))*24))+8);
  i4 = OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i1, 20415)))), OOC_Make__RulesDesc_Update)),OOC_Make__RulesDesc_Update)((OOC_Make__Rules)i1, (OOC_Repository__Module)i4, 1);
  if (i4) goto l33;
  return 0u;
  
  goto l38;
l33:
  if (i3) goto l35;
  i3=0u;
  goto l36;
l35:
  i3 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 20869))+40);
  i3 = _check_pointer(i3, 20882);
  i4 = OOC_ARRAY_LENGTH(i3, 0);
  i5 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 20942))+40);
  i5 = _check_pointer(i5, 20955);
  i6 = OOC_ARRAY_LENGTH(i5, 0);
  i7 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 21010))+40);
  i7 = _check_pointer(i7, 21023);
  i8 = OOC_ARRAY_LENGTH(i7, 0);
  i7 = (OOC_INT64)*(OOC_INT64*)((i7+((_check_index(i2, i8, OOC_UINT32, 21023))*24))+8);
  i7 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i7, 21033))+24);
  i3 = *(OOC_INT32*)((i3+((_check_index(i2, i4, OOC_UINT32, 20882))*24))+20);
  i4 = (OOC_INT64)*(OOC_INT64*)((i5+((_check_index(i2, i6, OOC_UINT32, 20955))*24))+8);
  i5 = *(OOC_INT32*)((_check_pointer(i7, 21040))+128);
  i3 = OOC_Make__FingerprintMismatch((OOC_Repository__Module)i0, i3, (OOC_Repository__Module)i4, i5);
  i3 = !i3;
  
l36:
  isUpToDate = i3;
  
l38:
  i2 = i2+1;
  i = i2;
  i4 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 20332))+40);
  i4 = OOC_ARRAY_LENGTH((_check_pointer(i4, 20345)), 0);
  i4 = i2!=i4;
  if (i4) goto l27_loop;
l42:
  i2=i3;
l44:
  if (i2) goto l46;
  i2=0u;
  goto l47;
l46:
  i2 = OOC_Make__Exists((OOC_Repository__Module)i0, 20);
  
l47:
  isUpToDate = i2;
  if (i2) goto l50;
  i2 = OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i1, 22002)))), OOC_Make__RulesDesc_CompileModule)),OOC_Make__RulesDesc_CompileModule)((OOC_Make__Rules)i1, (OOC_Repository__Module)i0, 0u);
  isUpToDate = i2;
  
  goto l59;
l50:
  i3 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 21554))+24);
  _assert((i3!=(OOC_INT64)0), 127, 21541);
  i3 = OOC_Make__RulesDesc_CheckAllImports((OOC_Make__Rules)i1, (OOC_Repository__Module)i0);
  i4 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 21608))+24);
  OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 21584)))), OOC_Repository__ModuleDesc_SetInterfaceData)),OOC_Repository__ModuleDesc_SetInterfaceData)((OOC_Repository__Module)i0, (OOC_SymbolTable__Module)i4, 4, i3);
  i3 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i1, 21715))+88);
  i3 = i3!=(OOC_INT64)0;
  if (i3) goto l53;
  i3=0u;
  goto l55;
l53:
  i3 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i1, 21731))+88);
  i3 = OOC_SymbolTable_Uses__UsesDesc_TrackingDeclarations((OOC_SymbolTable_Uses__Uses)i3);
  
l55:
  if (!i3) goto l59;
  i3 = OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i1, 21925)))), OOC_Make__RulesDesc_CompileModule)),OOC_Make__RulesDesc_CompileModule)((OOC_Make__Rules)i1, (OOC_Repository__Module)i0, 1u);
  dummy = i3;
l59:
  if (i2) goto l61;
  i0=i2;
  goto l66;
l61:
  i3 = (OOC_INT64)OOC_Make__CreateErrList((OOC_Repository__Module)i0);
  errList = (OOC_Error__List)i3;
  i0 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 22158))+24);
  i4 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i1, 22168))+88);
  OOC_SymbolTable_CreateNamespace__CreateNamespace((OOC_SymbolTable__Module)i0, (OOC_SymbolTable_Uses__Uses)i4, (OOC_Error__List)i3);
  OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i1, 22194)))), OOC_Make__RulesDesc_WriteErrList)),OOC_Make__RulesDesc_WriteErrList)((OOC_Make__Rules)i1, (OOC_Error__List)i3);
  i0 = OOC_Error__ListDesc_NoErrors((OOC_Error__List)i3);
  i0 = !i0;
  if (i0) goto l64;
  i0=i2;
  goto l66;
l64:
  OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i1, 22265)))), OOC_Make__RulesDesc_WriteErrList)),OOC_Make__RulesDesc_WriteErrList)((OOC_Make__Rules)i1, (OOC_Error__List)i3);
  i0=0u;
l66:
  return i0;
  goto l69;
l68:
  return 1u;
l69:
  return 0u;
  ;
}

OOC_CHAR8 OOC_Make__RulesDesc_UpdateSymbolTableXML(OOC_Make__Rules r, OOC_Repository__Module module) {

  _assert(0u, 127, 22607);
  _failed_function(22449); return 0;
  ;
}

OOC_CHAR8 OOC_Make__RulesDesc_UpdateInterfaceDescr(OOC_Make__Rules r, OOC_Repository__Module module) {
  register OOC_INT64 i0,i1,i2,i3,i4,i5,i6;
  OOC_CHAR8 success;
  OOC_Error__List errList;
  IO__ByteChannel outputChannel;

  i0 = (OOC_INT64)r;
  i1 = (OOC_INT64)module;
  i2 = OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 22861)))), OOC_Make__RulesDesc_Update)),OOC_Make__RulesDesc_Update)((OOC_Make__Rules)i0, (OOC_Repository__Module)i1, 1);
  success = i2;
  if (i2) goto l3;
  i0=i2;
  goto l8;
l3:
  i3 = OOC_Make__DerivedIsOlder((OOC_Repository__Module)i1, 4, 1);
  if (i3) goto l6;
  i0=i2;
  goto l8;
l6:
  i2 = (OOC_INT64)OOC_Make__CreateErrList((OOC_Repository__Module)i1);
  errList = (OOC_Error__List)i2;
  i3 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i1, 23600))+24);
  i4 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 23610))+88);
  OOC_SymbolTable_CreateNamespace__CreateNamespace((OOC_SymbolTable__Module)i3, (OOC_SymbolTable_Uses__Uses)i4, (OOC_Error__List)i2);
  i3 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i1, 23660))+24);
  OOC_Doc_ResolveRef__Resolve((OOC_SymbolTable__Module)i3, (OOC_Error__List)i2);
  i3 = *(OOC_INT32*)(_check_pointer(i2, 23702));
  _assert((i3==0), 127, 23687);
  i3 = (OOC_INT64)OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i1, 23758)))), OOC_Repository__ModuleDesc_GetOutputChannel)),OOC_Repository__ModuleDesc_GetOutputChannel)((OOC_Repository__Module)i1, 4, 1u);
  outputChannel = (IO__ByteChannel)i3;
  i4 = (OOC_INT64)OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i1, 23887)))), OOC_Repository__ModuleDesc_GetURI)),OOC_Repository__ModuleDesc_GetURI)((OOC_Repository__Module)i1, 4, 0u);
  i5 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 24024))+56);
  i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i1, 23963))+24);
  i6 = (OOC_INT64)OOC_Config__repositories;
  OOC_SymbolTable_InterfaceDescr__Write((IO__ByteChannel)i3, (URI__HierarchicalURI)i4, (OOC_SymbolTable__Module)i1, (OOC_Config_Repositories__Section)i6, (ADT_Dictionary__Dictionary)i5);
  OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i3, 24062)))), IO__ChannelDesc_CloseAndRegister)),IO__ChannelDesc_CloseAndRegister)((IO__Channel)i3);
  OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 24101)))), OOC_Make__RulesDesc_WriteErrList)),OOC_Make__RulesDesc_WriteErrList)((OOC_Make__Rules)i0, (OOC_Error__List)i2);
  i0 = OOC_Error__ListDesc_NoErrors((OOC_Error__List)i2);
  
l8:
  return i0;
  ;
}

OOC_CHAR8 OOC_Make__RulesDesc_UpdateInterfaceXML(OOC_Make__Rules r, OOC_Repository__Module module) {
  register OOC_INT64 i0,i1,i2,i3,i4;
  OOC_CHAR8 success;
  OOC_Error__List errList;
  OOC_AST__Node ast;
  OOC_SymbolTable__Module symTab;
  OOC_Config_Pragmas__History pragmaHistory;
  IO__ByteChannel outputChannel;

  i0 = (OOC_INT64)r;
  i1 = (OOC_INT64)module;
  i2 = OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 24511)))), OOC_Make__RulesDesc_Update)),OOC_Make__RulesDesc_Update)((OOC_Make__Rules)i0, (OOC_Repository__Module)i1, 1);
  success = i2;
  if (i2) goto l3;
  i0=i2;
  goto l11;
l3:
  i3 = OOC_Make__DerivedIsOlder((OOC_Repository__Module)i1, 3, 1);
  if (i3) goto l6;
  i0=i2;
  goto l11;
l6:
  i2 = (OOC_INT64)OOC_Make__CreateErrList((OOC_Repository__Module)i1);
  errList = (OOC_Error__List)i2;
  i2 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 25072))+8);
  i3 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 25087))+88);
  OOC_Auxiliary_ParseModule__ParseModule((OOC_Repository__Module)i1, 0u, 1u, 0u, 0u, (Object__String)i2, (OOC_SymbolTable_Uses__Uses)i3, (void*)(OOC_INT64)&ast, (void*)(OOC_INT64)&symTab, (void*)(OOC_INT64)&pragmaHistory, (void*)(OOC_INT64)&errList);
  i2 = (OOC_INT64)errList;
  i2 = OOC_Error__ListDesc_NoErrors((OOC_Error__List)i2);
  if (!i2) goto l9;
  i2 = (OOC_INT64)OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i1, 25232)))), OOC_Repository__ModuleDesc_GetOutputChannel)),OOC_Repository__ModuleDesc_GetOutputChannel)((OOC_Repository__Module)i1, 3, 1u);
  outputChannel = (IO__ByteChannel)i2;
  i1 = (OOC_INT64)OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i1, 25357)))), OOC_Repository__ModuleDesc_GetURI)),OOC_Repository__ModuleDesc_GetURI)((OOC_Repository__Module)i1, 3, 0u);
  i3 = (OOC_INT64)symTab;
  i4 = (OOC_INT64)OOC_Config__repositories;
  OOC_SymbolTable_InterfaceXML__Write((IO__ByteChannel)i2, (URI__HierarchicalURI)i1, (OOC_SymbolTable__Module)i3, (OOC_Config_Repositories__Section)i4);
  OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i2, 25476)))), IO__ChannelDesc_CloseAndRegister)),IO__ChannelDesc_CloseAndRegister)((IO__Channel)i2);
l9:
  i1 = (OOC_INT64)errList;
  OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 25520)))), OOC_Make__RulesDesc_WriteErrList)),OOC_Make__RulesDesc_WriteErrList)((OOC_Make__Rules)i0, (OOC_Error__List)i1);
  i0 = (OOC_INT64)errList;
  i0 = OOC_Error__ListDesc_NoErrors((OOC_Error__List)i0);
  
l11:
  return i0;
  ;
}

OOC_CHAR8 OOC_Make__RulesDesc_UpdateInterfaceHTML(OOC_Make__Rules r, OOC_Repository__Module module) {
  register OOC_INT64 i0,i1,i2;
  OOC_CHAR8 success;
  OOC_INT32 exit;
  ADT_StringBuffer__StringBuffer sb;
  URI__URI uri;
  Object__String path;
  auto URI__URI OOC_Make__RulesDesc_UpdateInterfaceHTML_GetSystemId(OOC_Config_Repositories__Section repositories);
    
    URI__URI OOC_Make__RulesDesc_UpdateInterfaceHTML_GetSystemId(OOC_Config_Repositories__Section repositories) {
      register OOC_INT64 i0,i1;

      i0 = (OOC_INT64)OOC_Make__stylesheetSystemId;
      i1 = i0==(OOC_INT64)0;
      if (i1) goto l3;
      return (URI__URI)i0;
      goto l7;
l3:
      i0 = (OOC_INT64)repositories;
      i0 = (OOC_INT64)OOC_Config_Repositories__SectionDesc_GetResource((OOC_Config_Repositories__Section)i0, "OOC", 4, "xml/interface-description.xsl", 30);
      OOC_Make__stylesheetSystemId = (URI__URI)i0;
      i0 = i0==(OOC_INT64)0;
      if (!i0) goto l6;
      Out__String("Error: Cannot locate stylesheet xml/interface-description.xsl from package OOC in any of the configured repositories.", 118);
      Out__Ln();
      _halt(1);
l6:
      i0 = (OOC_INT64)OOC_Make__stylesheetSystemId;
      return (URI__URI)i0;
l7:
      _failed_function(25902); return 0;
      ;
    }


  i0 = (OOC_INT64)r;
  i1 = (OOC_INT64)module;
  i0 = OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 26543)))), OOC_Make__RulesDesc_Update)),OOC_Make__RulesDesc_Update)((OOC_Make__Rules)i0, (OOC_Repository__Module)i1, 4);
  success = i0;
  if (!i0) goto l8;
  i2 = OOC_Make__DerivedIsOlder((OOC_Repository__Module)i1, 5, 4);
  if (!i2) goto l8;
  exit = 0;
  i0 = (OOC_INT64)OOC_Config__xsltproc;
  i2 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 26787))+16);
  i0 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 26787))+16);
  i0 = (OOC_INT64)OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i2, 26793)))), Config__VariableDesc_ToString)),Config__VariableDesc_ToString)((Config__Variable)i0);
  i0 = (OOC_INT64)ADT_StringBuffer__New((Object__String)i0);
  sb = (ADT_StringBuffer__StringBuffer)i0;
  OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 26886)))), ADT_StringBuffer__StringBufferDesc_Append)),ADT_StringBuffer__StringBufferDesc_Append)((ADT_StringBuffer__StringBuffer)i0, (Object__Object)((OOC_INT64)_c0));
  i1 = (OOC_INT64)OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i1, 26924)))), OOC_Repository__ModuleDesc_GetURI)),OOC_Repository__ModuleDesc_GetURI)((OOC_Repository__Module)i1, 5, 1u);
  uri = (URI__URI)i1;
  i1 = (OOC_INT64)URI_Scheme_File__URIDesc_GetPath((URI_Scheme_File__URI)(_type_guard(i1, ((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i1, 26988)))), &_td_URI_Scheme_File__URIDesc, 26988)));
  path = (Object__String)i1;
  OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 27014)))), ADT_StringBuffer__StringBufferDesc_Append)),ADT_StringBuffer__StringBufferDesc_Append)((ADT_StringBuffer__StringBuffer)i0, (Object__Object)i1);
  i0 = (OOC_INT64)OS_Path__DirName((Object__String)i1);
  OS_Files__MakeDirs((Object__String)i0, 511);
  i0 = (OOC_INT64)OOC_Config__repositories;
  i0 = (OOC_INT64)OOC_Make__RulesDesc_UpdateInterfaceHTML_GetSystemId((OOC_Config_Repositories__Section)i0);
  uri = (URI__URI)i0;
  i1 = (OOC_INT64)sb;
  OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i1, 27280)))), ADT_StringBuffer__StringBufferDesc_Append)),ADT_StringBuffer__StringBufferDesc_Append)((ADT_StringBuffer__StringBuffer)i1, (Object__Object)((OOC_INT64)_c1));
  i0 = (OOC_INT64)URI_Scheme_File__URIDesc_GetPath((URI_Scheme_File__URI)(_type_guard(i0, ((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 27321)))), &_td_URI_Scheme_File__URIDesc, 27321)));
  OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i1, 27304)))), ADT_StringBuffer__StringBufferDesc_Append)),ADT_StringBuffer__StringBufferDesc_Append)((ADT_StringBuffer__StringBuffer)i1, (Object__Object)i0);
  i0 = (OOC_INT64)module;
  i0 = (OOC_INT64)OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 27406)))), OOC_Repository__ModuleDesc_GetURI)),OOC_Repository__ModuleDesc_GetURI)((OOC_Repository__Module)i0, 4, 1u);
  uri = (URI__URI)i0;
  OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i1, 27456)))), ADT_StringBuffer__StringBufferDesc_Append)),ADT_StringBuffer__StringBufferDesc_Append)((ADT_StringBuffer__StringBuffer)i1, (Object__Object)((OOC_INT64)_c2));
  i0 = (OOC_INT64)URI_Scheme_File__URIDesc_GetPath((URI_Scheme_File__URI)(_type_guard(i0, ((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 27497)))), &_td_URI_Scheme_File__URIDesc, 27497)));
  OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i1, 27480)))), ADT_StringBuffer__StringBufferDesc_Append)),ADT_StringBuffer__StringBufferDesc_Append)((ADT_StringBuffer__StringBuffer)i1, (Object__Object)i0);
  i0 = (OOC_INT64)OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i1, 27540)))), ADT_StringBuffer__StringBufferDesc_ToString)),ADT_StringBuffer__StringBufferDesc_ToString)((ADT_StringBuffer__StringBuffer)i1);
  OOC_Logger__ShellCommand((Object__String)i0);
  i0 = OS_ProcessManagement__system((Object__String)i0);
  i0 = i0==0;
  
l8:
  return i0;
  ;
}

static OOC_CHAR8 OOC_Make__UpdateCompilerOutput(OOC_Make__Rules r, OOC_Repository__Module module, OOC_INT8 fileId) {
  register OOC_INT64 i0,i1,i2;

  i0 = (OOC_INT64)module;
  i1 = OOC_Make__Exists((OOC_Repository__Module)i0, 0);
  if (i1) goto l3;
  i1 = fileId;
  i0 = OOC_Make__Exists((OOC_Repository__Module)i0, i1);
  return i0;
  goto l12;
l3:
  i1 = (OOC_INT64)r;
  i2 = *(OOC_UINT8*)((_check_pointer(i1, 27972))+80);
  if (i2) goto l6;
  i2 = fileId;
  i2 = OOC_Make__DerivedIsOlder((OOC_Repository__Module)i0, i2, 0);
  
  goto l8;
l6:
  i2=1u;
l8:
  if (i2) goto l10;
  return 1u;
  goto l12;
l10:
  i0 = OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i1, 28070)))), OOC_Make__RulesDesc_CompileModule)),OOC_Make__RulesDesc_CompileModule)((OOC_Make__Rules)i1, (OOC_Repository__Module)i0, 0u);
  return i0;
l12:
  _failed_function(27776); return 0;
  ;
}

OOC_CHAR8 OOC_Make__RulesDesc_UpdateHeaderFileC(OOC_Make__Rules r, OOC_Repository__Module module) {
  register OOC_INT64 i0,i1,i2,i3,i4,i5;
  OOC_INT32 i;

  i0 = (OOC_INT64)r;
  i1 = (OOC_INT64)module;
  i2 = OOC_Make__RulesDesc_GetImports((OOC_Make__Rules)i0, (OOC_Repository__Module)i1);
  if (i2) goto l3;
  return 0u;
  goto l19;
l3:
  i2 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i1, 28698))+40);
  i = 0;
  i2 = OOC_ARRAY_LENGTH((_check_pointer(i2, 28711)), 0);
  i3 = 0<i2;
  if (!i3) goto l18;
  i3=0;
l6_loop:
  i4 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i1, 28737))+40);
  i4 = _check_pointer(i4, 28750);
  i5 = OOC_ARRAY_LENGTH(i4, 0);
  i4 = *(OOC_UINT8*)((i4+((_check_index(i3, i5, OOC_UINT32, 28750))*24))+16);
  i4 = !i4;
  if (i4) goto l9;
  i4=0u;
  goto l11;
l9:
  i4 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i1, 28792))+40);
  i4 = _check_pointer(i4, 28805);
  i5 = OOC_ARRAY_LENGTH(i4, 0);
  i4 = (OOC_INT64)*(OOC_INT64*)((i4+((_check_index(i3, i5, OOC_UINT32, 28805))*24))+8);
  i4 = OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 28778)))), OOC_Make__RulesDesc_Update)),OOC_Make__RulesDesc_Update)((OOC_Make__Rules)i0, (OOC_Repository__Module)i4, 13);
  i4 = !i4;
  
l11:
  if (!i4) goto l13;
  return 0u;
l13:
  i3 = i3+1;
  i = i3;
  i4 = i3<i2;
  if (i4) goto l6_loop;
l18:
  i0 = OOC_Make__UpdateCompilerOutput((OOC_Make__Rules)i0, (OOC_Repository__Module)i1, 13);
  return i0;
l19:
  _failed_function(28249); return 0;
  ;
}

OOC_CHAR8 OOC_Make__RulesDesc_UpdateDeclFileC(OOC_Make__Rules r, OOC_Repository__Module module) {
  register OOC_INT64 i0,i1,i2;

  i0 = (OOC_INT64)r;
  i1 = (OOC_INT64)module;
  i2 = OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 29131)))), OOC_Make__RulesDesc_Update)),OOC_Make__RulesDesc_Update)((OOC_Make__Rules)i0, (OOC_Repository__Module)i1, 13);
  if (i2) goto l3;
  i0=0u;
  goto l4;
l3:
  i0 = OOC_Make__UpdateCompilerOutput((OOC_Make__Rules)i0, (OOC_Repository__Module)i1, 12);
  
l4:
  return i0;
  ;
}

OOC_CHAR8 OOC_Make__RulesDesc_UpdateCodeFileC(OOC_Make__Rules r, OOC_Repository__Module module) {
  register OOC_INT64 i0,i1,i2;

  i0 = (OOC_INT64)r;
  i1 = (OOC_INT64)module;
  i2 = OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 29351)))), OOC_Make__RulesDesc_Update)),OOC_Make__RulesDesc_Update)((OOC_Make__Rules)i0, (OOC_Repository__Module)i1, 12);
  if (i2) goto l3;
  return 0u;
  goto l12;
l3:
  i2 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i1, 29406))+24);
  i2 = *(OOC_INT8*)((_check_pointer(i2, 29413))+96);
  i2 = i2==2;
  if (i2) goto l6;
  i2 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i1, 29456))+24);
  i2 = *(OOC_INT8*)((_check_pointer(i2, 29463))+96);
  i2 = i2==3;
  
  goto l8;
l6:
  i2=1u;
l8:
  if (i2) goto l10;
  i0 = OOC_Make__UpdateCompilerOutput((OOC_Make__Rules)i0, (OOC_Repository__Module)i1, 11);
  return i0;
  goto l12;
l10:
  OOC_Logger__ExplainMake("module\047s C code provided by user", 33);
  return 1u;
l12:
  _failed_function(29273); return 0;
  ;
}

OOC_CHAR8 OOC_Make__RulesDesc_UpdateAssemblerFile(OOC_Make__Rules r, OOC_Repository__Module module) {
  register OOC_INT64 i0,i1,i2;

  i0 = (OOC_INT64)r;
  i1 = (OOC_INT64)module;
  i2 = OOC_Make__RulesDesc_GetImports((OOC_Make__Rules)i0, (OOC_Repository__Module)i1);
  if (i2) goto l3;
  return 0u;
  goto l12;
l3:
  i2 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i1, 29873))+24);
  i2 = *(OOC_INT8*)((_check_pointer(i2, 29880))+96);
  i2 = i2==2;
  if (i2) goto l6;
  i2 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i1, 29923))+24);
  i2 = *(OOC_INT8*)((_check_pointer(i2, 29930))+96);
  i2 = i2==3;
  
  goto l8;
l6:
  i2=1u;
l8:
  if (i2) goto l10;
  i0 = OOC_Make__UpdateCompilerOutput((OOC_Make__Rules)i0, (OOC_Repository__Module)i1, 14);
  return i0;
  goto l12;
l10:
  OOC_Logger__ExplainMake("module\047s C code provided by user", 33);
  return 1u;
l12:
  _failed_function(29750); return 0;
  ;
}

OOC_CHAR8 OOC_Make__RulesDesc_UpdateObjectFile(OOC_Make__Rules r, OOC_Repository__Module module) {
  register OOC_INT64 i0,i1,i2;
  OOC_CHAR8 success;

  i0 = OOC_Config_CCompiler__HaveLibtool();
  i0 = !i0;
  if (i0) goto l3;
  i0=0u;
  goto l4;
l3:
  i0 = (OOC_INT64)module;
  i0 = OOC_Make__Exists((OOC_Repository__Module)i0, 0);
  i0 = !i0;
  
l4:
  i1 = (OOC_INT64)module;
  if (i0) goto l7;
  i0=0u;
  goto l9;
l7:
  i0 = OOC_Make__Exists((OOC_Repository__Module)i1, 7);
  
l9:
  if (!i0) goto l11;
  OOC_Logger__ExplainMake("no source code available, and object file exists", 49);
  return 1u;
l11:
  i0 = (OOC_INT64)r;
  i2 = OOC_Make__RulesDesc_SelectBackend((OOC_Make__Rules)i0, (OOC_Repository__Module)i1);
  i2 = i2==3;
  if (i2) goto l22;
  i0 = OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 31801)))), OOC_Make__RulesDesc_Update)),OOC_Make__RulesDesc_Update)((OOC_Make__Rules)i0, (OOC_Repository__Module)i1, 11);
  success = i0;
  if (i0) goto l16;
  i2=0u;
  goto l18;
l16:
  i2 = OOC_Make__DerivedIsOlder((OOC_Repository__Module)i1, 7, 11);
  
l18:
  if (!i2) goto l27;
  OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i1, 31943)))), OOC_Repository__ModuleDesc_CreateOutputDir)),OOC_Repository__ModuleDesc_CreateOutputDir)((OOC_Repository__Module)i1, 7);
  i0 = (OOC_INT64)OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i1, 32027)))), OOC_Repository__ModuleDesc_GetURI)),OOC_Repository__ModuleDesc_GetURI)((OOC_Repository__Module)i1, 11, 1u);
  i1 = (OOC_INT64)OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i1, 32106)))), OOC_Repository__ModuleDesc_GetURI)),OOC_Repository__ModuleDesc_GetURI)((OOC_Repository__Module)i1, 7, 1u);
  i0 = (OOC_INT64)OOC_Config_CCompiler__CompileFileCmd((URI__URI)i0, (URI__URI)i1, 0u);
  OOC_Logger__ShellCommand((Object__String)i0);
  i0 = OS_ProcessManagement__system((Object__String)i0);
  i0 = i0==0;
  
  goto l27;
l22:
  i0 = OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 31337)))), OOC_Make__RulesDesc_Update)),OOC_Make__RulesDesc_Update)((OOC_Make__Rules)i0, (OOC_Repository__Module)i1, 14);
  success = i0;
  i2 = OOC_Make__DerivedIsOlder((OOC_Repository__Module)i1, 7, 14);
  if (!i2) goto l27;
  OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i1, 31468)))), OOC_Repository__ModuleDesc_CreateOutputDir)),OOC_Repository__ModuleDesc_CreateOutputDir)((OOC_Repository__Module)i1, 7);
  i0 = (OOC_INT64)OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i1, 31553)))), OOC_Repository__ModuleDesc_GetURI)),OOC_Repository__ModuleDesc_GetURI)((OOC_Repository__Module)i1, 14, 1u);
  i1 = (OOC_INT64)OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i1, 31630)))), OOC_Repository__ModuleDesc_GetURI)),OOC_Repository__ModuleDesc_GetURI)((OOC_Repository__Module)i1, 7, 1u);
  i0 = (OOC_INT64)OOC_Config_Assembler__AssembleFileCmd((URI__URI)i0, (URI__URI)i1);
  OOC_Logger__ShellCommand((Object__String)i0);
  i0 = OS_ProcessManagement__system((Object__String)i0);
  i0 = i0==0;
  
l27:
  return i0;
  ;
}

OOC_CHAR8 OOC_Make__RulesDesc_UpdateObjectFileLib(OOC_Make__Rules r, OOC_Repository__Module module) {
  register OOC_INT64 i0,i1,i2;
  OOC_CHAR8 success;
  URI__URI outputFile;

  i0 = (OOC_INT64)r;
  i1 = (OOC_INT64)module;
  i0 = OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 32716)))), OOC_Make__RulesDesc_Update)),OOC_Make__RulesDesc_Update)((OOC_Make__Rules)i0, (OOC_Repository__Module)i1, 11);
  success = i0;
  i2 = OOC_Make__DerivedIsOlder((OOC_Repository__Module)i1, 8, 11);
  if (!i2) goto l4;
  OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i1, 32838)))), OOC_Repository__ModuleDesc_CreateOutputDir)),OOC_Repository__ModuleDesc_CreateOutputDir)((OOC_Repository__Module)i1, 7);
  i0 = (OOC_INT64)OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i1, 32902)))), OOC_Repository__ModuleDesc_GetURI)),OOC_Repository__ModuleDesc_GetURI)((OOC_Repository__Module)i1, 8, 1u);
  outputFile = (URI__URI)i0;
  i0 = (OOC_INT64)OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i1, 32983)))), OOC_Repository__ModuleDesc_GetURI)),OOC_Repository__ModuleDesc_GetURI)((OOC_Repository__Module)i1, 11, 1u);
  i1 = (OOC_INT64)OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i1, 33060)))), OOC_Repository__ModuleDesc_GetURI)),OOC_Repository__ModuleDesc_GetURI)((OOC_Repository__Module)i1, 8, 1u);
  i0 = (OOC_INT64)OOC_Config_CCompiler__CompileFileCmd((URI__URI)i0, (URI__URI)i1, 1u);
  OOC_Logger__ShellCommand((Object__String)i0);
  i0 = OS_ProcessManagement__system((Object__String)i0);
  i0 = i0==0;
  
l4:
  return i0;
  ;
}

OOC_CHAR8 OOC_Make__RulesDesc_UpdateMainFileC(OOC_Make__Rules r, OOC_Repository__Module module) {
  register OOC_INT64 i0,i1,i2,i3,i4,i5,i6;
  OOC_CHAR8 success;
  OOC_CHAR8 isUpToDate;
  OOC_INT32 i;

  i0 = (OOC_INT64)r;
  i1 = (OOC_INT64)module;
  i2 = OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 33813)))), OOC_Make__RulesDesc_Update)),OOC_Make__RulesDesc_Update)((OOC_Make__Rules)i0, (OOC_Repository__Module)i1, 1);
  success = i2;
  if (i2) goto l3;
  i0=i2;
  goto l29;
l3:
  i3 = OOC_Make__Exists((OOC_Repository__Module)i1, 15);
  isUpToDate = i3;
  i = 0;
  if (i3) goto l6;
  i4=0u;
  goto l8;
l6:
  i4 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 34003))+40);
  i4 = OOC_ARRAY_LENGTH((_check_pointer(i4, 34011)), 0);
  i4 = 0!=i4;
  
l8:
  if (!i4) goto l24;
  i4=i3;i3=0;
l11_loop:
  i5 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 34099))+40);
  i5 = _check_pointer(i5, 34107);
  i6 = OOC_ARRAY_LENGTH(i5, 0);
  i5 = (OOC_INT64)*(OOC_INT64*)(i5+(_check_index(i3, i6, OOC_UINT32, 34107))*8);
  i3 = i3+1;
  i5 = OOC_Make__DerivedIsOlder2((OOC_Repository__Module)i1, 15, (OOC_Repository__Module)i5, 1);
  if (!i5) goto l15;
  isUpToDate = 0u;
  i4=0u;
l15:
  i = i3;
  if (i4) goto l18;
  i5=0u;
  goto l20;
l18:
  i5 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 34003))+40);
  i5 = OOC_ARRAY_LENGTH((_check_pointer(i5, 34011)), 0);
  i5 = i3!=i5;
  
l20:
  if (i5) goto l11_loop;
l23:
  i3=i4;
l24:
  i3 = !i3;
  if (i3) goto l27;
  i0=i2;
  goto l29;
l27:
  i2 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 34282))+40);
  i0 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 34282))+40);
  i0 = OOC_ARRAY_LENGTH((_check_pointer(i0, 34290)), 0);
  OOC_Make_WriteMainFileC__WriteFile((OOC_Repository__Module)i1, (void*)(_check_pointer(i2, 34290)), i0);
  i0=1u;
l29:
  return i0;
  ;
}

OOC_CHAR8 OOC_Make__RulesDesc_UpdateMainFileAssembler(OOC_Make__Rules r, OOC_Repository__Module module) {
  register OOC_INT64 i0,i1,i2,i3,i4,i5,i6;
  OOC_CHAR8 success;
  OOC_CHAR8 isUpToDate;
  OOC_INT32 i;

  i0 = (OOC_INT64)r;
  i1 = (OOC_INT64)module;
  i2 = OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 34613)))), OOC_Make__RulesDesc_Update)),OOC_Make__RulesDesc_Update)((OOC_Make__Rules)i0, (OOC_Repository__Module)i1, 1);
  success = i2;
  if (!i2) goto l27;
  i3 = OOC_Make__Exists((OOC_Repository__Module)i1, 16);
  isUpToDate = i3;
  i = 0;
  if (i3) goto l5;
  i4=0u;
  goto l7;
l5:
  i4 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 34811))+40);
  i4 = OOC_ARRAY_LENGTH((_check_pointer(i4, 34819)), 0);
  i4 = 0!=i4;
  
l7:
  if (!i4) goto l23;
  i4=i3;i3=0;
l10_loop:
  i5 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 34915))+40);
  i5 = _check_pointer(i5, 34923);
  i6 = OOC_ARRAY_LENGTH(i5, 0);
  i5 = (OOC_INT64)*(OOC_INT64*)(i5+(_check_index(i3, i6, OOC_UINT32, 34923))*8);
  i3 = i3+1;
  i5 = OOC_Make__DerivedIsOlder2((OOC_Repository__Module)i1, 16, (OOC_Repository__Module)i5, 1);
  if (!i5) goto l14;
  isUpToDate = 0u;
  i4=0u;
l14:
  i = i3;
  if (i4) goto l17;
  i5=0u;
  goto l19;
l17:
  i5 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 34811))+40);
  i5 = OOC_ARRAY_LENGTH((_check_pointer(i5, 34819)), 0);
  i5 = i3!=i5;
  
l19:
  if (i5) goto l10_loop;
l22:
  i3=i4;
l23:
  i3 = !i3;
  if (!i3) goto l27;
  i3 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 35106))+40);
  i0 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 35106))+40);
  i0 = OOC_ARRAY_LENGTH((_check_pointer(i0, 35114)), 0);
  OOC_Make_WriteMainFileAssembler__WriteFile((OOC_Repository__Module)i1, (void*)(_check_pointer(i3, 35114)), i0);
l27:
  return i2;
  ;
}

OOC_CHAR8 OOC_Make__RulesDesc_UpdateMainObjectFile(OOC_Make__Rules r, OOC_Repository__Module module) {
  register OOC_INT64 i0,i1,i2;
  OOC_CHAR8 success;

  i0 = (OOC_INT64)r;
  i1 = *(OOC_INT32*)(_check_pointer(i0, 35558));
  i1 = i1==3;
  if (i1) goto l7;
  i1 = (OOC_INT64)module;
  i0 = OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 36121)))), OOC_Make__RulesDesc_Update)),OOC_Make__RulesDesc_Update)((OOC_Make__Rules)i0, (OOC_Repository__Module)i1, 15);
  success = i0;
  i2 = OOC_Make__DerivedIsOlder((OOC_Repository__Module)i1, 17, 15);
  if (!i2) goto l12;
  OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i1, 36248)))), OOC_Repository__ModuleDesc_CreateOutputDir)),OOC_Repository__ModuleDesc_CreateOutputDir)((OOC_Repository__Module)i1, 17);
  i0 = (OOC_INT64)OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i1, 36336)))), OOC_Repository__ModuleDesc_GetURI)),OOC_Repository__ModuleDesc_GetURI)((OOC_Repository__Module)i1, 15, 1u);
  i1 = (OOC_INT64)OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i1, 36415)))), OOC_Repository__ModuleDesc_GetURI)),OOC_Repository__ModuleDesc_GetURI)((OOC_Repository__Module)i1, 17, 1u);
  i0 = (OOC_INT64)OOC_Config_CCompiler__CompileFileCmd((URI__URI)i0, (URI__URI)i1, 0u);
  OOC_Logger__ShellCommand((Object__String)i0);
  i0 = OS_ProcessManagement__system((Object__String)i0);
  i0 = i0==0;
  
  goto l12;
l7:
  i1 = (OOC_INT64)module;
  i0 = OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 35610)))), OOC_Make__RulesDesc_Update)),OOC_Make__RulesDesc_Update)((OOC_Make__Rules)i0, (OOC_Repository__Module)i1, 16);
  success = i0;
  i2 = OOC_Make__DerivedIsOlder((OOC_Repository__Module)i1, 17, 16);
  if (!i2) goto l12;
  OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i1, 35777)))), OOC_Repository__ModuleDesc_CreateOutputDir)),OOC_Repository__ModuleDesc_CreateOutputDir)((OOC_Repository__Module)i1, 17);
  i0 = (OOC_INT64)OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i1, 35866)))), OOC_Repository__ModuleDesc_GetURI)),OOC_Repository__ModuleDesc_GetURI)((OOC_Repository__Module)i1, 16, 1u);
  i1 = (OOC_INT64)OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i1, 35947)))), OOC_Repository__ModuleDesc_GetURI)),OOC_Repository__ModuleDesc_GetURI)((OOC_Repository__Module)i1, 17, 1u);
  i0 = (OOC_INT64)OOC_Config_Assembler__AssembleFileCmd((URI__URI)i0, (URI__URI)i1);
  OOC_Logger__ShellCommand((Object__String)i0);
  i0 = OS_ProcessManagement__system((Object__String)i0);
  i0 = i0==0;
  
l12:
  return i0;
  ;
}

OOC_Make__ModuleList OOC_Make__ModuleClosure(OOC_Repository__Module module, Object__String restrictToLibrary) {
  register OOC_INT64 i0,i1,i2,i3,i4,i5,i6,i7;
  ADT_Dictionary__Dictionary dict;
  ADT_ArrayList__ArrayList list;
  OOC_Make__ModuleList a;
  OOC_INT32 i;
  auto void OOC_Make__ModuleClosure_Closure(OOC_Repository__Module module);
    
    void OOC_Make__ModuleClosure_Closure(OOC_Repository__Module module) {
      register OOC_INT64 i0,i1,i2,i3,i4;
      OOC_INT32 i;

      i0 = (OOC_INT64)restrictToLibrary;
      i1 = i0==(OOC_INT64)0;
      if (i1) goto l3;
      i1 = (OOC_INT64)module;
      i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i1, 37014))+24);
      i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i1, 37021))+104);
      i0 = OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 37000)))), Object__StringDesc_Equals)),Object__StringDesc_Equals)((Object__String)i0, (Object__Object)i1);
      
      goto l5;
l3:
      i0=1u;
l5:
      if (i0) goto l7;
      i0=0u;
      goto l9;
l7:
      i0 = (OOC_INT64)module;
      i1 = (OOC_INT64)dict;
      i0 = ADT_Dictionary__DictionaryDesc_HasKey((ADT_Dictionary__Dictionary)i1, (Object__Object)i0);
      i0 = !i0;
      
l9:
      if (!i0) goto l22;
      i0 = (OOC_INT64)module;
      i1 = (OOC_INT64)dict;
      ADT_Dictionary__DictionaryDesc_Set((ADT_Dictionary__Dictionary)i1, (Object__Object)i0, (Object__Object)(OOC_INT64)0);
      i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 37146))+40);
      i = 0;
      i1 = OOC_ARRAY_LENGTH((_check_pointer(i1, 37159)), 0);
      i2 = 0<i1;
      if (!i2) goto l21;
      i2=0;
l13_loop:
      i3 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 37187))+40);
      i3 = _check_pointer(i3, 37200);
      i4 = OOC_ARRAY_LENGTH(i3, 0);
      i3 = *(OOC_UINT8*)((i3+((_check_index(i2, i4, OOC_UINT32, 37200))*24))+16);
      i3 = !i3;
      if (!i3) goto l16;
      i3 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 37243))+40);
      i3 = _check_pointer(i3, 37256);
      i4 = OOC_ARRAY_LENGTH(i3, 0);
      i3 = (OOC_INT64)*(OOC_INT64*)((i3+((_check_index(i2, i4, OOC_UINT32, 37256))*24))+8);
      _assert((i3!=(OOC_INT64)0), 127, 37230);
      i3 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 37301))+40);
      i3 = _check_pointer(i3, 37314);
      i4 = OOC_ARRAY_LENGTH(i3, 0);
      i3 = (OOC_INT64)*(OOC_INT64*)((i3+((_check_index(i2, i4, OOC_UINT32, 37314))*24))+8);
      OOC_Make__ModuleClosure_Closure((OOC_Repository__Module)i3);
l16:
      i2 = i2+1;
      i = i2;
      i3 = i2<i1;
      if (i3) goto l13_loop;
l21:
      i1 = (OOC_INT64)list;
      OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i1, 37368)))), ADT_ArrayList__ArrayListDesc_Append)),ADT_ArrayList__ArrayListDesc_Append)((ADT_ArrayList__ArrayList)i1, (Object__Object)i0);
l22:
      return;
      ;
    }


  i0 = (OOC_INT64)ADT_Dictionary__New();
  dict = (ADT_Dictionary__Dictionary)i0;
  i0 = (OOC_INT64)ADT_ArrayList__New(16);
  list = (ADT_ArrayList__ArrayList)i0;
  i0 = (OOC_INT64)module;
  OOC_Make__ModuleClosure_Closure((OOC_Repository__Module)i0);
  i0 = (OOC_INT64)list;
  i1 = *(OOC_INT32*)((_check_pointer(i0, 37565))+8);
  i1 = (OOC_INT64)RT0__NewObject(_td_OOC_Make__ModuleList.baseTypes[0], i1);
  a = (OOC_Make__ModuleList)i1;
  i = 0;
  i2 = *(OOC_INT32*)((_check_pointer(i0, 37595))+8);
  i3 = 0<i2;
  if (!i3) goto l8;
  i3=0;
l3_loop:
  i4 = _check_pointer(i1, 37613);
  i5 = OOC_ARRAY_LENGTH(i4, 0);
  i6 = (OOC_INT64)*(OOC_INT64*)(_check_pointer(i0, 37624));
  i6 = _check_pointer(i6, 37630);
  i7 = OOC_ARRAY_LENGTH(i6, 0);
  i6 = (OOC_INT64)*(OOC_INT64*)(i6+(_check_index(i3, i7, OOC_UINT32, 37630))*8);
  *(OOC_INT64*)(i4+(_check_index(i3, i5, OOC_UINT32, 37613))*8) = (_type_guard(i6, ((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i6, 37638)))), &_td_OOC_Repository__ModuleDesc, 37638));
  i3 = i3+1;
  i = i3;
  i4 = i3<i2;
  if (i4) goto l3_loop;
l8:
  return (OOC_Make__ModuleList)i1;
  ;
}

OOC_CHAR8 OOC_Make__RulesDesc_UpdateExecutable(OOC_Make__Rules r, OOC_Repository__Module module) {
  register OOC_INT64 i0,i1,i2,i3,i4,i5,i6;
  OOC_CHAR8 success;
  OOC_CHAR8 isUpToDate;
  OOC_INT32 i;
  ADT_Dictionary__Dictionary dict;
  ADT_ArrayList__ArrayList list;
  auto void OOC_Make__RulesDesc_UpdateExecutable_Closure(OOC_Repository__Module module);
    
    void OOC_Make__RulesDesc_UpdateExecutable_Closure(OOC_Repository__Module module) {
      register OOC_INT64 i0,i1,i2,i3,i4;
      OOC_INT32 i;

      i0 = (OOC_INT64)dict;
      i1 = (OOC_INT64)module;
      i0 = ADT_Dictionary__DictionaryDesc_HasKey((ADT_Dictionary__Dictionary)i0, (Object__Object)i1);
      i0 = !i0;
      if (!i0) goto l14;
      i0 = (OOC_INT64)dict;
      ADT_Dictionary__DictionaryDesc_Set((ADT_Dictionary__Dictionary)i0, (Object__Object)i1, (Object__Object)(OOC_INT64)0);
      i0 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i1, 38382))+40);
      i = 0;
      i0 = OOC_ARRAY_LENGTH((_check_pointer(i0, 38395)), 0);
      i2 = 0<i0;
      if (!i2) goto l13;
      i2=0;
l5_loop:
      i3 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i1, 38423))+40);
      i3 = _check_pointer(i3, 38436);
      i4 = OOC_ARRAY_LENGTH(i3, 0);
      i3 = *(OOC_UINT8*)((i3+((_check_index(i2, i4, OOC_UINT32, 38436))*24))+16);
      i3 = !i3;
      if (!i3) goto l8;
      i3 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i1, 38479))+40);
      i3 = _check_pointer(i3, 38492);
      i4 = OOC_ARRAY_LENGTH(i3, 0);
      i3 = (OOC_INT64)*(OOC_INT64*)((i3+((_check_index(i2, i4, OOC_UINT32, 38492))*24))+8);
      _assert((i3!=(OOC_INT64)0), 127, 38466);
      i3 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i1, 38537))+40);
      i3 = _check_pointer(i3, 38550);
      i4 = OOC_ARRAY_LENGTH(i3, 0);
      i3 = (OOC_INT64)*(OOC_INT64*)((i3+((_check_index(i2, i4, OOC_UINT32, 38550))*24))+8);
      OOC_Make__RulesDesc_UpdateExecutable_Closure((OOC_Repository__Module)i3);
l8:
      i2 = i2+1;
      i = i2;
      i3 = i2<i0;
      if (i3) goto l5_loop;
l13:
      i0 = (OOC_INT64)list;
      OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 38604)))), ADT_ArrayList__ArrayListDesc_Append)),ADT_ArrayList__ArrayListDesc_Append)((ADT_ArrayList__ArrayList)i0, (Object__Object)i1);
l14:
      return;
      ;
    }


  success = 0u;
  i0 = (OOC_INT64)r;
  i1 = (OOC_INT64)module;
  i2 = OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 38734)))), OOC_Make__RulesDesc_Update)),OOC_Make__RulesDesc_Update)((OOC_Make__Rules)i0, (OOC_Repository__Module)i1, 1);
  if (i2) goto l3;
  i0=0u;
  goto l44;
l3:
  i2 = (OOC_INT64)OOC_Make__ModuleClosure((OOC_Repository__Module)i1, (Object__String)(OOC_INT64)0);
  *(OOC_INT64*)((_check_pointer(i0, 39022))+40) = i2;
  isUpToDate = 1u;
  i2 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 39120))+40);
  i = 0;
  i2 = OOC_ARRAY_LENGTH((_check_pointer(i2, 39128)), 0);
  i3 = 0<i2;
  if (i3) goto l6;
  i2=1u;
  goto l32;
l6:
  i3=0;i4=1u;
l7_loop:
  i5 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 39149))+40);
  i5 = _check_pointer(i5, 39157);
  i6 = OOC_ARRAY_LENGTH(i5, 0);
  i5 = (OOC_INT64)*(OOC_INT64*)(i5+(_check_index(i3, i6, OOC_UINT32, 39157))*8);
  i5 = *(OOC_INT8*)((_check_pointer(i5, 39160))+32);
  i5 = i5==4;
  if (i5) goto l10;
  i5=0u;
  goto l12;
l10:
  i5 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 39211))+40);
  i5 = _check_pointer(i5, 39219);
  i6 = OOC_ARRAY_LENGTH(i5, 0);
  i5 = (OOC_INT64)*(OOC_INT64*)(i5+(_check_index(i3, i6, OOC_UINT32, 39219))*8);
  i5 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i5, 39222))+24);
  i5 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i5, 39229))+104);
  i5 = i5!=(OOC_INT64)0;
  
l12:
  if (i5) goto l27;
  i5 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 39407))+40);
  i5 = _check_pointer(i5, 39415);
  i6 = OOC_ARRAY_LENGTH(i5, 0);
  i5 = (OOC_INT64)*(OOC_INT64*)(i5+(_check_index(i3, i6, OOC_UINT32, 39415))*8);
  i5 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i5, 39418))+24);
  i5 = OOC_SymbolTable__ModuleDesc_NoObjectFile((OOC_SymbolTable__Module)i5);
  if (i5) goto l27;
  i5 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 39538))+40);
  i5 = _check_pointer(i5, 39546);
  i6 = OOC_ARRAY_LENGTH(i5, 0);
  i5 = (OOC_INT64)*(OOC_INT64*)(i5+(_check_index(i3, i6, OOC_UINT32, 39546))*8);
  i5 = OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 39529)))), OOC_Make__RulesDesc_Update)),OOC_Make__RulesDesc_Update)((OOC_Make__Rules)i0, (OOC_Repository__Module)i5, 7);
  i5 = !i5;
  if (i5) goto l22;
  i5 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 39687))+40);
  i5 = _check_pointer(i5, 39695);
  i6 = OOC_ARRAY_LENGTH(i5, 0);
  i5 = (OOC_INT64)*(OOC_INT64*)(i5+(_check_index(i3, i6, OOC_UINT32, 39695))*8);
  i5 = OOC_Make__DerivedIsOlder2((OOC_Repository__Module)i1, 18, (OOC_Repository__Module)i5, 7);
  if (!i5) goto l27;
  isUpToDate = 0u;
  i4=0u;
  goto l27;
l22:
  return 0u;
  
l27:
  i3 = i3+1;
  i = i3;
  i5 = i3<i2;
  if (i5) goto l7_loop;
l31:
  i2=i4;
l32:
  i3 = OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 39797)))), OOC_Make__RulesDesc_Update)),OOC_Make__RulesDesc_Update)((OOC_Make__Rules)i0, (OOC_Repository__Module)i1, 17);
  i3 = !i3;
  if (!i3) goto l36;
  return 0u;
l36:
  if (i2) goto l38;
  i2=0u;
  goto l39;
l38:
  i2 = OOC_Make__DerivedIsOlder((OOC_Repository__Module)i1, 18, 17);
  i2 = !i2;
  
l39:
  isUpToDate = i2;
  if (i2) goto l42;
  i2 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 40141))+40);
  i0 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 40141))+40);
  i0 = OOC_ARRAY_LENGTH((_check_pointer(i0, 40149)), 0);
  i0 = OOC_Make_LinkProgramC__Run((OOC_Repository__Module)i1, (void*)(_check_pointer(i2, 40149)), i0, (Object__String)(OOC_INT64)0);
  
  goto l44;
l42:
  i0=1u;
l44:
  return i0;
  ;
}

OOC_CHAR8 OOC_Make__RulesDesc_UpdateLibrary(OOC_Make__Rules r, OOC_Repository__Module module) {
  register OOC_INT64 i0,i1,i2,i3,i4,i5,i6,i7,i8;
  OOC_CHAR8 success;
  OOC_Make__ModuleList closure;
  OOC_CHAR8 isUpToDate;
  OOC_INT32 i;

  i0 = (OOC_INT64)r;
  i1 = (OOC_INT64)module;
  i2 = (OOC_INT64)*(OOC_INT64*)(_check_pointer(i1, 40903));
  *(OOC_INT64*)((_check_pointer(i0, 40877))+32) = i2;
  i2 = OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 41111)))), OOC_Make__RulesDesc_Update)),OOC_Make__RulesDesc_Update)((OOC_Make__Rules)i0, (OOC_Repository__Module)i1, 1);
  success = i2;
  if (i2) goto l3;
  i0=i2;
  goto l32;
l3:
  i3 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 41207))+8);
  i3 = (OOC_INT64)OOC_Make__ModuleClosure((OOC_Repository__Module)i1, (Object__String)i3);
  closure = (OOC_Make__ModuleList)i3;
  *(OOC_INT64*)((_check_pointer(i0, 41229))+40) = i3;
  i4 = OOC_Make__Exists((OOC_Repository__Module)i1, 19);
  isUpToDate = i4;
  i = 0;
  i5 = OOC_ARRAY_LENGTH((_check_pointer(i3, 41395)), 0);
  i6 = 0<i5;
  if (!i6) goto l24;
  i6=i4;i4=0;
l7_loop:
  i7 = _check_pointer(i3, 41421);
  i8 = OOC_ARRAY_LENGTH(i7, 0);
  i7 = (OOC_INT64)*(OOC_INT64*)(i7+(_check_index(i4, i8, OOC_UINT32, 41421))*8);
  i7 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i7, 41424))+24);
  i7 = OOC_SymbolTable__ModuleDesc_NoObjectFile((OOC_SymbolTable__Module)i7);
  if (i7) goto l19;
  i7 = _check_pointer(i3, 41504);
  i8 = OOC_ARRAY_LENGTH(i7, 0);
  i7 = (OOC_INT64)*(OOC_INT64*)(i7+(_check_index(i4, i8, OOC_UINT32, 41504))*8);
  i7 = OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 41489)))), OOC_Make__RulesDesc_Update)),OOC_Make__RulesDesc_Update)((OOC_Make__Rules)i0, (OOC_Repository__Module)i7, 8);
  i7 = !i7;
  if (i7) goto l16;
  i7 = _check_pointer(i3, 41651);
  i8 = OOC_ARRAY_LENGTH(i7, 0);
  i7 = (OOC_INT64)*(OOC_INT64*)(i7+(_check_index(i4, i8, OOC_UINT32, 41651))*8);
  i7 = OOC_Make__DerivedIsOlder2((OOC_Repository__Module)i1, 19, (OOC_Repository__Module)i7, 8);
  if (!i7) goto l19;
  isUpToDate = 0u;
  i6=0u;
  goto l19;
l16:
  return 0u;
  
l19:
  i4 = i4+1;
  i = i4;
  i7 = i4<i5;
  if (i7) goto l7_loop;
l23:
  i4=i6;
l24:
  i5 = !i4;
  if (i5) goto l27;
  i0=i2;
  goto l32;
l27:
  if (i4) goto l29;
  i0 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 42157))+8);
  i2 = OOC_ARRAY_LENGTH((_check_pointer(i3, 42153)), 0);
  i0 = OOC_Make_LinkProgramC__Run((OOC_Repository__Module)i1, (void*)(_check_pointer(i3, 42153)), i2, (Object__String)i0);
  
  goto l32;
l29:
  i0=1u;
l32:
  return i0;
  ;
}

OOC_CHAR8 OOC_Make__RulesDesc_Update(OOC_Make__Rules r, OOC_Repository__Module module, OOC_INT8 fileId) {
  register OOC_INT64 i0,i1,i2,i3,i4,i5;
  OOC_Make__ModuleInfo mInfo;
  OOC_CHAR8 res;

  i0 = (OOC_INT64)r;
  i1 = (OOC_INT64)module;
  i2 = (OOC_INT64)OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 42527)))), OOC_Make__RulesDesc_GetModuleInfo)),OOC_Make__RulesDesc_GetModuleInfo)((OOC_Make__Rules)i0, (OOC_Repository__Module)i1);
  mInfo = (OOC_Make__ModuleInfo)i2;
  i3 = fileId;
  i4 = *(OOC_UINT8*)((_check_pointer(i2, 42563))+(_check_index(i3, 22, OOC_UINT8, 42571)));
  if (i4) goto l26;
  i4 = *(OOC_UINT32*)((_check_pointer(i1, 42738))+48);
  i4 = _in(i3,i4);
  if (i4) goto l24;
  i4 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i1, 42920))+8);
  i5 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i1, 42920))+8);
  i5 = OOC_ARRAY_LENGTH((_check_pointer(i5, 42925)), 0);
  OOC_Logger__EnterMake((void*)(_check_pointer(i4, 42925)), i5, (void*)((OOC_INT64)OOC_Make__fileIdNames+((_check_index(i3, 22, OOC_UINT8, 42939))*24)), 24);
  i4 = *(OOC_UINT32*)((_check_pointer(i1, 42967))+48);
  *(OOC_UINT32*)((_check_pointer(i1, 42967))+48) = (_set_bit(i4,i3));
  switch (i3) {
  case 18:
    i0 = OOC_Make__RulesDesc_UpdateExecutable((OOC_Make__Rules)i0, (OOC_Repository__Module)i1);
    res = i0;
    goto l23;
  case 19:
    i0 = OOC_Make__RulesDesc_UpdateLibrary((OOC_Make__Rules)i0, (OOC_Repository__Module)i1);
    res = i0;
    goto l23;
  case 17:
    i0 = OOC_Make__RulesDesc_UpdateMainObjectFile((OOC_Make__Rules)i0, (OOC_Repository__Module)i1);
    res = i0;
    goto l23;
  case 15:
    i0 = OOC_Make__RulesDesc_UpdateMainFileC((OOC_Make__Rules)i0, (OOC_Repository__Module)i1);
    res = i0;
    goto l23;
  case 16:
    i0 = OOC_Make__RulesDesc_UpdateMainFileAssembler((OOC_Make__Rules)i0, (OOC_Repository__Module)i1);
    res = i0;
    goto l23;
  case 7:
    i0 = OOC_Make__RulesDesc_UpdateObjectFile((OOC_Make__Rules)i0, (OOC_Repository__Module)i1);
    res = i0;
    goto l23;
  case 8:
    i0 = OOC_Make__RulesDesc_UpdateObjectFileLib((OOC_Make__Rules)i0, (OOC_Repository__Module)i1);
    res = i0;
    goto l23;
  case 11:
    i0 = OOC_Make__RulesDesc_UpdateCodeFileC((OOC_Make__Rules)i0, (OOC_Repository__Module)i1);
    res = i0;
    goto l23;
  case 12:
    i0 = OOC_Make__RulesDesc_UpdateDeclFileC((OOC_Make__Rules)i0, (OOC_Repository__Module)i1);
    res = i0;
    goto l23;
  case 13:
    i0 = OOC_Make__RulesDesc_UpdateHeaderFileC((OOC_Make__Rules)i0, (OOC_Repository__Module)i1);
    res = i0;
    goto l23;
  case 14:
    i0 = OOC_Make__RulesDesc_UpdateAssemblerFile((OOC_Make__Rules)i0, (OOC_Repository__Module)i1);
    res = i0;
    goto l23;
  case 4:
    i0 = OOC_Make__RulesDesc_UpdateInterfaceDescr((OOC_Make__Rules)i0, (OOC_Repository__Module)i1);
    res = i0;
    goto l23;
  case 3:
    i0 = OOC_Make__RulesDesc_UpdateInterfaceXML((OOC_Make__Rules)i0, (OOC_Repository__Module)i1);
    res = i0;
    goto l23;
  case 5:
    i0 = OOC_Make__RulesDesc_UpdateInterfaceHTML((OOC_Make__Rules)i0, (OOC_Repository__Module)i1);
    res = i0;
    goto l23;
  case 2:
    i0 = OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 44082)))), OOC_Make__RulesDesc_UpdateSymbolTableXML)),OOC_Make__RulesDesc_UpdateSymbolTableXML)((OOC_Make__Rules)i0, (OOC_Repository__Module)i1);
    res = i0;
    goto l23;
  case 1:
    i0 = OOC_Make__RulesDesc_UpdateSymbolFile((OOC_Make__Rules)i0, (OOC_Repository__Module)i1);
    res = i0;
    goto l23;
  default:
    _failed_case(i3, 42998);
    goto l23;
  }
l23:
  *(OOC_UINT8*)((_check_pointer(i2, 44205))+(_check_index(i3, 22, OOC_UINT8, 44213))) = 1u;
  i0 = res;
  *(OOC_UINT8*)(((_check_pointer(i2, 44242))+22)+(_check_index(i3, 22, OOC_UINT8, 44255))) = i0;
  i2 = *(OOC_UINT32*)((_check_pointer(i1, 44289))+48);
  *(OOC_UINT32*)((_check_pointer(i1, 44289))+48) = (_clear_bit(i2,i3));
  i2 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i1, 44349))+8);
  i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i1, 44349))+8);
  i1 = OOC_ARRAY_LENGTH((_check_pointer(i1, 44354)), 0);
  i0 = OOC_Logger__ExitMake((void*)(_check_pointer(i2, 44354)), i1, (void*)((OOC_INT64)OOC_Make__fileIdNames+((_check_index(i3, 22, OOC_UINT8, 44368))*24)), 24, i0);
  return i0;
  goto l27;
l24:
  Out__String("Error: Cyclic dependency in module ", 36);
  i0 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i1, 42839))+8);
  i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i1, 42839))+8);
  i1 = OOC_ARRAY_LENGTH((_check_pointer(i1, 42844)), 0);
  Out__String((void*)(_check_pointer(i0, 42844)), i1);
  Out__Ln();
  return 0u;
  goto l27;
l26:
  i0 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i1, 42674))+8);
  i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i1, 42674))+8);
  i2 = *(OOC_UINT8*)(((_check_pointer(i2, 42687))+22)+(_check_index(i3, 22, OOC_UINT8, 42700)));
  i1 = OOC_ARRAY_LENGTH((_check_pointer(i1, 42679)), 0);
  i0 = OOC_Logger__CachedMake((void*)((OOC_INT64)OOC_Make__fileIdNames+((_check_index(i3, 22, OOC_UINT8, 42627))*24)), 24, (void*)(_check_pointer(i0, 42679)), i1, i2);
  return i0;
l27:
  _failed_function(42384); return 0;
  ;
}

void OOC_OOC_Make_init(void) {
  register OOC_INT64 i0;
  _c0 = Object__NewLatin1Region(" -o ", 5, 0, 4);
  _c1 = Object__NewLatin1Char(32u);
  _c2 = Object__NewLatin1Char(32u);

  i0 = (OOC_INT64)StringSearch_NoMatch__matcher;
  OOC_Make__inspectProc = (StringSearch__Matcher)i0;
  OOC_Make__inspectStage = (StringSearch__Matcher)i0;
  OOC_Make__writeAST = 0u;
  OOC_Make__writeIR = 0u;
  OOC_Make__writeStats = 0u;
  OOC_Make__stylesheetSystemId = (URI__URI)(OOC_INT64)0;
  _copy_8((const void*)"Executable",(void*)((OOC_INT64)OOC_Make__fileIdNames+((_check_index(18, 22, OOC_UINT8, 44592))*24)),24);
  _copy_8((const void*)"Library",(void*)((OOC_INT64)OOC_Make__fileIdNames+((_check_index(19, 22, OOC_UINT8, 44642))*24)),24);
  _copy_8((const void*)"MainObjectFile",(void*)((OOC_INT64)OOC_Make__fileIdNames+((_check_index(17, 22, OOC_UINT8, 44686))*24)),24);
  _copy_8((const void*)"MainFileC",(void*)((OOC_INT64)OOC_Make__fileIdNames+((_check_index(15, 22, OOC_UINT8, 44744))*24)),24);
  _copy_8((const void*)"ObjectFile",(void*)((OOC_INT64)OOC_Make__fileIdNames+((_check_index(7, 22, OOC_UINT8, 44792))*24)),24);
  _copy_8((const void*)"ObjectFileLib",(void*)((OOC_INT64)OOC_Make__fileIdNames+((_check_index(8, 22, OOC_UINT8, 44842))*24)),24);
  _copy_8((const void*)"CodeFileC",(void*)((OOC_INT64)OOC_Make__fileIdNames+((_check_index(11, 22, OOC_UINT8, 44898))*24)),24);
  _copy_8((const void*)"DeclFileC",(void*)((OOC_INT64)OOC_Make__fileIdNames+((_check_index(12, 22, OOC_UINT8, 44946))*24)),24);
  _copy_8((const void*)"HeaderFileC",(void*)((OOC_INT64)OOC_Make__fileIdNames+((_check_index(13, 22, OOC_UINT8, 44994))*24)),24);
  _copy_8((const void*)"InterfaceDescr",(void*)((OOC_INT64)OOC_Make__fileIdNames+((_check_index(4, 22, OOC_UINT8, 45046))*24)),24);
  _copy_8((const void*)"InterfaceXML",(void*)((OOC_INT64)OOC_Make__fileIdNames+((_check_index(3, 22, OOC_UINT8, 45104))*24)),24);
  _copy_8((const void*)"InterfaceHTML",(void*)((OOC_INT64)OOC_Make__fileIdNames+((_check_index(5, 22, OOC_UINT8, 45158))*24)),24);
  _copy_8((const void*)"SymbolFile",(void*)((OOC_INT64)OOC_Make__fileIdNames+((_check_index(1, 22, OOC_UINT8, 45214))*24)),24);
  _copy_8((const void*)"SymbolTableXML",(void*)((OOC_INT64)OOC_Make__fileIdNames+((_check_index(2, 22, OOC_UINT8, 45264))*24)),24);
  _copy_8((const void*)"AssemblerFile",(void*)((OOC_INT64)OOC_Make__fileIdNames+((_check_index(14, 22, OOC_UINT8, 45322))*24)),24);
  _copy_8((const void*)"MainFileAssembler",(void*)((OOC_INT64)OOC_Make__fileIdNames+((_check_index(16, 22, OOC_UINT8, 45378))*24)),24);
  i0 = (OOC_INT64)RT0__NewObject(_td_OOC_Make__ErrorContext.baseTypes[0]);
  OOC_Make__makeContext = (OOC_Make__ErrorContext)i0;
  OOC_Error__InitContext((OOC_Error__Context)i0, "OOC:Make", 9);
  return;
  ;
}

/* --- */
