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

void OOC_SSA__InitNode(OOC_SSA__Node n) {

  return;
  ;
}

static void OOC_SSA__SetUse(OOC_SSA__Result arg, OOC_SSA__Opnd opnd) {
  register OOC_INT64 i0,i1,i2;

  i0 = (OOC_INT64)opnd;
  i1 = (OOC_INT64)arg;
  *(OOC_INT64*)(_check_pointer(i0, 8898)) = i1;
  i2 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i1, 8936))+24);
  *(OOC_INT64*)((_check_pointer(i0, 8920))+32) = i2;
  *(OOC_INT64*)((_check_pointer(i1, 8954))+24) = i0;
  return;
  ;
}

static void OOC_SSA__DeleteUse(OOC_SSA__Opnd opnd) {
  register OOC_INT64 i0,i1,i2;
  OOC_SSA__Opnd prev;

  i0 = (OOC_INT64)opnd;
  i1 = (OOC_INT64)*(OOC_INT64*)(_check_pointer(i0, 9123));
  i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i1, 9128))+24);
  i1 = i1==i0;
  if (i1) goto l12;
  i1 = (OOC_INT64)*(OOC_INT64*)(_check_pointer(i0, 9220));
  i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i1, 9225))+24);
  prev = (OOC_SSA__Opnd)i1;
  i2 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i1, 9253))+32);
  i2 = i2!=i0;
  if (!i2) goto l11;
l6_loop:
  i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i1, 9294))+32);
  prev = (OOC_SSA__Opnd)i1;
  i2 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i1, 9253))+32);
  i2 = i2!=i0;
  if (i2) goto l6_loop;
l11:
  i2 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 9342))+32);
  *(OOC_INT64*)((_check_pointer(i1, 9325))+32) = i2;
  goto l13;
l12:
  i1 = (OOC_INT64)*(OOC_INT64*)(_check_pointer(i0, 9161));
  i2 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 9183))+32);
  *(OOC_INT64*)((_check_pointer(i1, 9166))+24) = i2;
l13:
  *(OOC_INT64*)((_check_pointer(i0, 9369))+32) = 0;
  *(OOC_INT64*)(_check_pointer(i0, 9395)) = 0;
  return;
  ;
}

static void OOC_SSA__InitOpnd(OOC_SSA__Opnd opnd, OOC_SSA__Result arg, OOC_INT8 _class) {
  register OOC_INT64 i0,i1,i2;

  i0 = (OOC_INT64)opnd;
  OOC_SSA__InitNode((OOC_SSA__Node)i0);
  i1 = (OOC_INT64)arg;
  *(OOC_INT64*)(_check_pointer(i0, 9598)) = i1;
  *(OOC_INT64*)((_check_pointer(i0, 9620))+32) = 0;
  *(OOC_INT64*)((_check_pointer(i0, 9646))+16) = 0;
  *(OOC_INT64*)((_check_pointer(i0, 9673))+24) = 0;
  i2 = _class;
  *(OOC_INT8*)((_check_pointer(i0, 9697))+8) = i2;
  OOC_SSA__SetUse((OOC_SSA__Result)i1, (OOC_SSA__Opnd)i0);
  return;
  ;
}

static OOC_SSA__Opnd OOC_SSA__NewOpnd(OOC_SSA__Result arg, OOC_INT8 _class) {
  register OOC_INT64 i0,i1,i2;

  i0 = (OOC_INT64)RT0__NewObject(_td_OOC_SSA__Opnd.baseTypes[0]);
  i1 = (OOC_INT64)arg;
  i2 = _class;
  OOC_SSA__InitOpnd((OOC_SSA__Opnd)i0, (OOC_SSA__Result)i1, i2);
  return (OOC_SSA__Opnd)i0;
  ;
}

static void OOC_SSA__InitTypedOpnd(OOC_SSA__TypedOpnd opnd, OOC_SSA__Result arg, OOC_INT8 _class, OOC_SymbolTable__Type type, OOC_CHAR8 passByReference) {
  register OOC_INT64 i0,i1,i2;

  i0 = (OOC_INT64)opnd;
  i1 = (OOC_INT64)arg;
  i2 = _class;
  OOC_SSA__InitOpnd((OOC_SSA__Opnd)i0, (OOC_SSA__Result)i1, i2);
  i1 = (OOC_INT64)type;
  *(OOC_INT64*)((_check_pointer(i0, 10242))+40) = i1;
  i1 = passByReference;
  *(OOC_UINT8*)((_check_pointer(i0, 10266))+48) = i1;
  return;
  ;
}

static OOC_SSA__Opnd OOC_SSA__NewTypedOpnd(OOC_SSA__Result arg, OOC_INT8 _class, OOC_SymbolTable__Type type, OOC_CHAR8 passByReference) {
  register OOC_INT64 i0,i1,i2,i3,i4;

  i0 = (OOC_INT64)RT0__NewObject(_td_OOC_SSA__TypedOpnd.baseTypes[0]);
  i1 = (OOC_INT64)arg;
  i2 = _class;
  i3 = (OOC_INT64)type;
  i4 = passByReference;
  OOC_SSA__InitTypedOpnd((OOC_SSA__TypedOpnd)i0, (OOC_SSA__Result)i1, i2, (OOC_SymbolTable__Type)i3, i4);
  return (OOC_SSA__Opnd)i0;
  ;
}

void OOC_SSA__OpndDesc_DeleteOpnd(OOC_SSA__Opnd opnd) {
  register OOC_INT64 i0,i1,i2;
  OOC_SSA__Opnd prev;

  i0 = (OOC_INT64)opnd;
  OOC_SSA__DeleteUse((OOC_SSA__Opnd)i0);
  i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 10813))+24);
  i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i1, 10820))+48);
  i1 = i1==i0;
  if (i1) goto l12;
  i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 10917))+24);
  i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i1, 10924))+48);
  prev = (OOC_SSA__Opnd)i1;
  i2 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i1, 10953))+16);
  i2 = i2!=i0;
  if (!i2) goto l11;
l6_loop:
  i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i1, 10995))+16);
  prev = (OOC_SSA__Opnd)i1;
  i2 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i1, 10953))+16);
  i2 = i2!=i0;
  if (i2) goto l6_loop;
l11:
  i2 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 11045))+16);
  *(OOC_INT64*)((_check_pointer(i1, 11027))+16) = i2;
  goto l13;
l12:
  i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 10854))+24);
  i2 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 10879))+16);
  *(OOC_INT64*)((_check_pointer(i1, 10861))+48) = i2;
l13:
  *(OOC_INT64*)((_check_pointer(i0, 11073))+16) = (OOC_INT64)0;
  *(OOC_INT64*)((_check_pointer(i0, 11100))+24) = (OOC_INT64)0;
  return;
  ;
}

void OOC_SSA__OpndDesc_ReplaceArg(OOC_SSA__Opnd opnd, OOC_SSA__Result arg) {
  register OOC_INT64 i0,i1;

  i0 = (OOC_INT64)opnd;
  OOC_SSA__DeleteUse((OOC_SSA__Opnd)i0);
  i1 = (OOC_INT64)arg;
  OOC_SSA__SetUse((OOC_SSA__Result)i1, (OOC_SSA__Opnd)i0);
  return;
  ;
}

OOC_INT32 OOC_SSA__OpndDesc_OpndIndex(OOC_SSA__Opnd opnd) {
  register OOC_INT64 i0,i1,i2,i3;
  OOC_INT32 i;
  OOC_SSA__Opnd ptr;

  i = 0;
  i0 = (OOC_INT64)opnd;
  i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 11976))+24);
  i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i1, 11983))+48);
  ptr = (OOC_SSA__Opnd)i1;
  i2 = i1!=i0;
  if (i2) goto l3;
  i0=0;
  goto l9;
l3:
  i2=i1;i1=0;
l4_loop:
  i1 = i1+1;
  i = i1;
  i2 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i2, 12052))+16);
  ptr = (OOC_SSA__Opnd)i2;
  i3 = i2!=i0;
  if (i3) goto l4_loop;
l8:
  i0=i1;
l9:
  return i0;
  ;
}

OOC_INT32 OOC_SSA__OpndDesc_GetIntConst(OOC_SSA__Opnd opnd) {
  register OOC_INT64 i0;

  i0 = (OOC_INT64)opnd;
  i0 = (OOC_INT64)*(OOC_INT64*)(_check_pointer(i0, 12249));
  i0 = (OOC_INT64)*(OOC_INT64*)((_check_pointer((_type_guard(i0, ((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 12255)))), &_td_OOC_SSA__ConstDesc, 12255)), 12261))+80);
  i0 = Object_BigInt__BigIntDesc_ToLongInt((Object_BigInt__BigInt)(_type_guard(i0, ((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 12276)))), &_td_Object_BigInt__BigIntDesc, 12276)));
  return i0;
  ;
}

OOC_CHAR8 OOC_SSA__OpndDesc_IsScheduleOpnd(OOC_SSA__Opnd opnd) {
  register OOC_INT64 i0;

  i0 = (OOC_INT64)opnd;
  i0 = *(OOC_INT8*)((_check_pointer(i0, 12390))+8);
  switch (i0) {
  case 17:
  case 18:
  case 20:
    return 1u;
    goto l4;
  default:
    return 0u;
    goto l4;
  }
l4:
  _failed_function(12341); return 0;
  ;
}

OOC_CHAR8 OOC_SSA__OpndDesc_IsValueOpnd(OOC_SSA__Opnd opnd) {
  register OOC_INT64 i0;

  i0 = (OOC_INT64)opnd;
  i0 = *(OOC_INT8*)((_check_pointer(i0, 12921))+8);
  switch (i0) {
  case 18:
  case 20:
  case 5:
  case 7:
    return 0u;
    goto l4;
  default:
    return 1u;
    goto l4;
  }
l4:
  _failed_function(12603); return 0;
  ;
}

OOC_CHAR8 OOC_SSA__OpndDesc_IsValueOpndHere(OOC_SSA__Opnd opnd) {
  register OOC_INT64 i0,i1,i2;
  OOC_SSA__Instr instr;

  i0 = (OOC_INT64)opnd;
  i1 = OOC_SSA__OpndDesc_IsValueOpnd((OOC_SSA__Opnd)i0);
  if (i1) goto l3;
  return 0u;
  goto l8;
l3:
  i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 13892))+24);
  instr = (OOC_SSA__Instr)i1;
  i2 = *(OOC_INT8*)((_check_pointer(i1, 14209))+72);
  i2 = i2!=5;
  if (i2) goto l6;
  i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i1, 14244))+48);
  i0 = i1!=i0;
  
  goto l7;
l6:
  i0=1u;
l7:
  return i0;
l8:
  _failed_function(13155); return 0;
  ;
}

static void OOC_SSA__InitResult(OOC_SSA__Result res, OOC_SSA__Instr instr, OOC_INT8 _class, OOC_INT8 subclass) {
  register OOC_INT64 i0,i1;

  i0 = (OOC_INT64)res;
  OOC_SSA__InitNode((OOC_SSA__Node)i0);
  *(OOC_INT64*)(_check_pointer(i0, 14595)) = 0;
  i1 = (OOC_INT64)instr;
  *(OOC_INT64*)((_check_pointer(i0, 14623))+16) = i1;
  i1 = _class;
  *(OOC_INT8*)((_check_pointer(i0, 14648))+8) = i1;
  i1 = subclass;
  *(OOC_INT8*)((_check_pointer(i0, 14673))+9) = i1;
  *(OOC_INT64*)((_check_pointer(i0, 14704))+32) = 0;
  *(OOC_INT32*)((_check_pointer(i0, 14726))+40) = (-1);
  *(OOC_INT64*)((_check_pointer(i0, 14757))+24) = 0;
  return;
  ;
}

OOC_SSA__Result OOC_SSA__NewResult(OOC_SSA__Instr instr, OOC_INT8 _class, OOC_INT8 subclass) {
  register OOC_INT64 i0,i1,i2,i3;

  i0 = (OOC_INT64)RT0__NewObject(_td_OOC_SSA__Result.baseTypes[0]);
  i1 = (OOC_INT64)instr;
  i2 = _class;
  i3 = subclass;
  OOC_SSA__InitResult((OOC_SSA__Result)i0, (OOC_SSA__Instr)i1, i2, i3);
  return (OOC_SSA__Result)i0;
  ;
}

void OOC_SSA__ResultDesc_DeleteResult(OOC_SSA__Result res) {
  register OOC_INT64 i0,i1,i2;
  OOC_SSA__Result prev;

  i0 = (OOC_INT64)res;
  i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 15602))+16);
  prev = (OOC_SSA__Result)i1;
  i2 = (OOC_INT64)*(OOC_INT64*)(_check_pointer(i1, 15626));
  i2 = i2!=i0;
  if (!i2) goto l9;
l4_loop:
  i1 = (OOC_INT64)*(OOC_INT64*)(_check_pointer(i1, 15667));
  prev = (OOC_SSA__Result)i1;
  i2 = (OOC_INT64)*(OOC_INT64*)(_check_pointer(i1, 15626));
  i2 = i2!=i0;
  if (i2) goto l4_loop;
l9:
  i0 = (OOC_INT64)*(OOC_INT64*)(_check_pointer(i0, 15716));
  *(OOC_INT64*)(_check_pointer(i1, 15697)) = i0;
  return;
  ;
}

void OOC_SSA__ResultDesc_ReplaceUses(OOC_SSA__Result res, OOC_SSA__Result with) {
  register OOC_INT64 i0,i1,i2;
  OOC_SSA__Opnd use;
  OOC_SSA__Opnd nextUse;

  i0 = (OOC_INT64)res;
  i0 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 15916))+24);
  use = (OOC_SSA__Opnd)i0;
  i1 = i0!=(OOC_INT64)0;
  if (!i1) goto l8;
  i1 = (OOC_INT64)with;
  
l3_loop:
  i2 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 15972))+32);
  nextUse = (OOC_SSA__Opnd)i2;
  OOC_SSA__DeleteUse((OOC_SSA__Opnd)i0);
  OOC_SSA__SetUse((OOC_SSA__Result)i1, (OOC_SSA__Opnd)i0);
  use = (OOC_SSA__Opnd)i2;
  i0 = i2!=(OOC_INT64)0;
  if (!i0) goto l8;
  i0=i2;
  goto l3_loop;
l8:
  return;
  ;
}

OOC_INT32 OOC_SSA__ResultDesc_ResultIndex(OOC_SSA__Result result) {
  register OOC_INT64 i0,i1,i2,i3;
  OOC_INT32 i;
  OOC_SSA__Result ptr;

  i = 0;
  i0 = (OOC_INT64)result;
  i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 16490))+16);
  ptr = (OOC_SSA__Result)i1;
  i2 = i1!=i0;
  if (i2) goto l3;
  i0=0;
  goto l9;
l3:
  i2=i1;i1=0;
l4_loop:
  i1 = i1+1;
  i = i1;
  i2 = (OOC_INT64)*(OOC_INT64*)(_check_pointer(i2, 16558));
  ptr = (OOC_SSA__Result)i2;
  i3 = i2!=i0;
  if (i3) goto l4_loop;
l8:
  i0=i1;
l9:
  return i0;
  ;
}

OOC_SymbolTable__ProcDecl OOC_SSA__ResultDesc_CalledProc(OOC_SSA__Result calledAdr) {
  register OOC_INT64 i0,i1;

  i0 = (OOC_INT64)calledAdr;
  i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 16860))+16);
  i1 = *(OOC_INT8*)((_check_pointer(i1, 16866))+72);
  i1 = i1==3;
  if (i1) goto l7;
  i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 16975))+16);
  i1 = *(OOC_INT8*)((_check_pointer(i1, 16981))+72);
  i1 = i1==1;
  if (i1) goto l5;
  return (OOC_SymbolTable__ProcDecl)(OOC_INT64)0;
  goto l8;
l5:
  i0 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 17034))+16);
  i0 = (OOC_INT64)*(OOC_INT64*)((_check_pointer((_type_guard(i0, ((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 17041)))), &_td_OOC_SSA__DeclRefDesc, 17041)), 17049))+80);
  return (OOC_SymbolTable__ProcDecl)(_type_guard(i0, ((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 17059)))), &_td_OOC_SymbolTable__ProcDeclDesc, 17059));
  goto l8;
l7:
  i0 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 16919))+16);
  i0 = (OOC_INT64)*(OOC_INT64*)((_check_pointer((_type_guard(i0, ((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 16926)))), &_td_OOC_SSA__AddressDesc, 16926)), 16934))+80);
  return (OOC_SymbolTable__ProcDecl)(_type_guard(i0, ((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 16944)))), &_td_OOC_SymbolTable__ProcDeclDesc, 16944));
l8:
  _failed_function(16649); return 0;
  ;
}

OOC_CHAR8 OOC_SSA__ResultDesc_IsBooleanConst(OOC_SSA__Result result, OOC_CHAR8 value) {
  register OOC_INT64 i0,i1,i2;

  i0 = (OOC_INT64)result;
  _assert((OOC_TYPE_TEST(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 17478)))), &_td_OOC_SSA__ConstDesc)), 127, 17463);
  i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer((_type_guard(i0, ((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 17508)))), &_td_OOC_SSA__ConstDesc, 17508)), 17514))+80);
  _assert((OOC_TYPE_TEST(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i1, 17521)))), &_td_Object_BigInt__BigIntDesc)), 127, 17493);
  i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer((_type_guard(i0, ((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 17559)))), &_td_OOC_SSA__ConstDesc, 17559)), 17565))+80);
  i0 = (OOC_INT64)*(OOC_INT64*)((_check_pointer((_type_guard(i0, ((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 17559)))), &_td_OOC_SSA__ConstDesc, 17559)), 17565))+80);
  i2 = (OOC_INT64)Object_BigInt__zero;
  i0 = OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i1, 17571)))), Object__ObjectDesc_Equals)),Object__ObjectDesc_Equals)((Object__Object)i0, (Object__Object)i2);
  i1 = value;
  return (i0!=i1);
  ;
}

void OOC_SSA__ResultDesc_LogId(OOC_SSA__Result result, const OOC_CHAR8 msg__ref[], OOC_LEN msg_0d) {
  register OOC_INT64 i0,i1;
  OOC_ALLOCATE_VPAR(msg,OOC_CHAR8 ,msg_0d)
  OOC_INT32 i;

  OOC_INITIALIZE_VPAR(msg__ref,msg,OOC_CHAR8 ,msg_0d)
  i0 = (OOC_INT64)Log__writer;
  OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 17724)))), TextRider__WriterDesc_WriteString)),TextRider__WriterDesc_WriteString)((TextRider__Writer)i0, (void*)(OOC_INT64)msg, msg_0d);
  i0 = (OOC_INT64)Log__writer;
  OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 17759)))), TextRider__WriterDesc_WriteString)),TextRider__WriterDesc_WriteString)((TextRider__Writer)i0, ": ", 3);
  i0 = (OOC_INT64)Log__writer;
  OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 17827)))), TextRider__WriterDesc_WriteString)),TextRider__WriterDesc_WriteString)((TextRider__Writer)i0, "???", 4);
  i0 = (OOC_INT64)result;
  i0 = OOC_SSA__ResultDesc_ResultIndex((OOC_SSA__Result)i0);
  i = i0;
  i1 = i0!=0;
  if (!i1) goto l4;
  i1 = (OOC_INT64)Log__writer;
  OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i1, 18002)))), TextRider__WriterDesc_WriteChar)),TextRider__WriterDesc_WriteChar)((TextRider__Writer)i1, 46u);
  i1 = (OOC_INT64)Log__writer;
  OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i1, 18037)))), TextRider__WriterDesc_WriteLInt)),TextRider__WriterDesc_WriteLInt)((TextRider__Writer)i1, i0, 0);
l4:
  i0 = (OOC_INT64)Log__writer;
  OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 18080)))), TextRider__WriterDesc_WriteLn)),TextRider__WriterDesc_WriteLn)((TextRider__Writer)i0);
  return;
  ;
}

static void OOC_SSA__InitInstr(OOC_SSA__Instr instr, OOC_INT8 opcode, OOC_INT8 subclass) {
  register OOC_INT64 i0,i1,i2;

  i0 = (OOC_INT64)instr;
  i1 = subclass;
  OOC_SSA__InitResult((OOC_SSA__Result)i0, (OOC_SSA__Instr)i0, (-1), i1);
  *(OOC_INT64*)((_check_pointer(i0, 18349))+48) = (OOC_INT64)0;
  *(OOC_INT64*)((_check_pointer(i0, 18377))+56) = (OOC_INT64)0;
  *(OOC_INT64*)((_check_pointer(i0, 18406))+64) = (OOC_INT64)0;
  i2 = opcode;
  *(OOC_INT8*)((_check_pointer(i0, 18435))+72) = i2;
  *(OOC_INT8*)((_check_pointer(i0, 18464))+9) = i1;
  *(OOC_INT32*)((_check_pointer(i0, 18497))+76) = (-1);
  return;
  ;
}

void OOC_SSA__InstrDesc_SetSubclass(OOC_SSA__Instr instr, OOC_INT8 subclass) {
  register OOC_INT64 i0,i1;

  i0 = (OOC_INT64)instr;
  i1 = subclass;
  *(OOC_INT8*)((_check_pointer(i0, 18682))+9) = i1;
  return;
  ;
}

void OOC_SSA__InstrDesc_SetPos(OOC_SSA__Instr instr, OOC_Scanner_BasicList__Symbol sym) {
  register OOC_INT64 i0,i1;

  i0 = (OOC_INT64)instr;
  i1 = (OOC_INT64)sym;
  i1 = *(OOC_INT32*)((_check_pointer(i1, 18806))+28);
  *(OOC_INT32*)((_check_pointer(i0, 18794))+76) = i1;
  return;
  ;
}

static void OOC_SSA__AddOpnd(OOC_SSA__Instr instr, OOC_SSA__Opnd opnd) {
  register OOC_INT64 i0,i1,i2;
  OOC_SSA__Opnd prev;

  i0 = (OOC_INT64)opnd;
  i1 = (OOC_INT64)instr;
  *(OOC_INT64*)((_check_pointer(i0, 19108))+24) = i1;
  i2 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i1, 19139))+48);
  i2 = i2==(OOC_INT64)0;
  if (i2) goto l12;
  i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i1, 19220))+48);
  prev = (OOC_SSA__Opnd)i1;
  i2 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i1, 19249))+16);
  i2 = i2!=(OOC_INT64)0;
  if (!i2) goto l11;
l6_loop:
  i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i1, 19290))+16);
  prev = (OOC_SSA__Opnd)i1;
  i2 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i1, 19249))+16);
  i2 = i2!=(OOC_INT64)0;
  if (i2) goto l6_loop;
l11:
  *(OOC_INT64*)((_check_pointer(i1, 19322))+16) = i0;
  goto l13;
l12:
  *(OOC_INT64*)((_check_pointer(i1, 19173))+48) = i0;
l13:
  return;
  ;
}

void OOC_SSA__InstrDesc_AddOpnd(OOC_SSA__Instr instr, OOC_SSA__Result arg, OOC_INT8 _class) {
  register OOC_INT64 i0,i1;

  i0 = (OOC_INT64)arg;
  i1 = _class;
  i0 = (OOC_INT64)OOC_SSA__NewOpnd((OOC_SSA__Result)i0, i1);
  i1 = (OOC_INT64)instr;
  OOC_SSA__AddOpnd((OOC_SSA__Instr)i1, (OOC_SSA__Opnd)i0);
  return;
  ;
}

OOC_SSA__Opnd OOC_SSA__InstrDesc_AddOpndFct(OOC_SSA__Instr instr, OOC_SSA__Result arg, OOC_INT8 _class) {
  register OOC_INT64 i0,i1;

  i0 = (OOC_INT64)arg;
  i1 = _class;
  i0 = (OOC_INT64)OOC_SSA__NewOpnd((OOC_SSA__Result)i0, i1);
  i1 = (OOC_INT64)instr;
  OOC_SSA__AddOpnd((OOC_SSA__Instr)i1, (OOC_SSA__Opnd)i0);
  return (OOC_SSA__Opnd)i0;
  ;
}

void OOC_SSA__InstrDesc_AddUniqueOpnd(OOC_SSA__Instr instr, OOC_SSA__Result arg, OOC_INT8 _class) {
  register OOC_INT64 i0,i1,i2,i3;
  OOC_SSA__Opnd opnd;
  OOC_SSA__Opnd prev;

  i0 = (OOC_INT64)instr;
  i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 20291))+48);
  i1 = i1==(OOC_INT64)0;
  if (i1) goto l23;
  i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 20437))+48);
  prev = (OOC_SSA__Opnd)i1;
  i2 = (OOC_INT64)*(OOC_INT64*)(_check_pointer(i1, 20466));
  i3 = (OOC_INT64)arg;
  i2 = i2!=i3;
  if (i2) goto l5;
  i2=0u;
  goto l7;
l5:
  i2 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i1, 20486))+16);
  i2 = i2!=(OOC_INT64)0;
  
l7:
  if (!i2) goto l19;
l10_loop:
  i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i1, 20527))+16);
  prev = (OOC_SSA__Opnd)i1;
  i2 = (OOC_INT64)*(OOC_INT64*)(_check_pointer(i1, 20466));
  i2 = i2!=i3;
  if (i2) goto l13;
  i2=0u;
  goto l15;
l13:
  i2 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i1, 20486))+16);
  i2 = i2!=(OOC_INT64)0;
  
l15:
  if (i2) goto l10_loop;
l19:
  i2 = (OOC_INT64)*(OOC_INT64*)(_check_pointer(i1, 20563));
  i2 = i2!=i3;
  if (!i2) goto l24;
  i2 = _class;
  i2 = (OOC_INT64)OOC_SSA__NewOpnd((OOC_SSA__Result)i3, i2);
  opnd = (OOC_SSA__Opnd)i2;
  *(OOC_INT64*)((_check_pointer(i2, 20631))+24) = i0;
  *(OOC_INT64*)((_check_pointer(i1, 20661))+16) = i2;
  goto l24;
l23:
  i1 = _class;
  i2 = (OOC_INT64)arg;
  i1 = (OOC_INT64)OOC_SSA__NewOpnd((OOC_SSA__Result)i2, i1);
  opnd = (OOC_SSA__Opnd)i1;
  *(OOC_INT64*)((_check_pointer(i1, 20360))+24) = i0;
  *(OOC_INT64*)((_check_pointer(i0, 20389))+48) = i1;
l24:
  return;
  ;
}

void OOC_SSA__InstrDesc_AddTypedOpnd(OOC_SSA__Instr instr, OOC_SSA__Result arg, OOC_INT8 _class, OOC_SymbolTable__Type type, OOC_CHAR8 passByReference) {
  register OOC_INT64 i0,i1,i2,i3;

  i0 = (OOC_INT64)arg;
  i1 = _class;
  i2 = (OOC_INT64)type;
  i3 = passByReference;
  i0 = (OOC_INT64)OOC_SSA__NewTypedOpnd((OOC_SSA__Result)i0, i1, (OOC_SymbolTable__Type)i2, i3);
  i1 = (OOC_INT64)instr;
  OOC_SSA__AddOpnd((OOC_SSA__Instr)i1, (OOC_SSA__Opnd)i0);
  return;
  ;
}

OOC_SSA__Result OOC_SSA__InstrDesc_AddResultSubclass(OOC_SSA__Instr instr, OOC_INT8 _class, OOC_INT8 subclass) {
  register OOC_INT64 i0,i1,i2;
  OOC_SSA__Result res;
  OOC_SSA__Result prev;

  i0 = (OOC_INT64)instr;
  i1 = _class;
  i2 = subclass;
  i1 = (OOC_INT64)OOC_SSA__NewResult((OOC_SSA__Instr)i0, i1, i2);
  res = (OOC_SSA__Result)i1;
  i2 = (OOC_INT64)*(OOC_INT64*)(_check_pointer(i0, 21513));
  i2 = i2==0;
  if (i2) goto l12;
  i0 = (OOC_INT64)*(OOC_INT64*)(_check_pointer(i0, 21597));
  prev = (OOC_SSA__Result)i0;
  i2 = (OOC_INT64)*(OOC_INT64*)(_check_pointer(i0, 21628));
  i2 = i2!=0;
  if (!i2) goto l11;
l6_loop:
  i0 = (OOC_INT64)*(OOC_INT64*)(_check_pointer(i0, 21671));
  prev = (OOC_SSA__Result)i0;
  i2 = (OOC_INT64)*(OOC_INT64*)(_check_pointer(i0, 21628));
  i2 = i2!=0;
  if (i2) goto l6_loop;
l11:
  *(OOC_INT64*)(_check_pointer(i0, 21705)) = i1;
  goto l13;
l12:
  *(OOC_INT64*)(_check_pointer(i0, 21549)) = i1;
l13:
  return (OOC_SSA__Result)i1;
  ;
}

OOC_SSA__Result OOC_SSA__InstrDesc_AddResult(OOC_SSA__Instr instr, OOC_INT8 _class) {
  register OOC_INT64 i0,i1;

  i0 = (OOC_INT64)instr;
  i1 = _class;
  i0 = (OOC_INT64)OOC_SSA__InstrDesc_AddResultSubclass((OOC_SSA__Instr)i0, i1, 0);
  return (OOC_SSA__Result)i0;
  ;
}

OOC_INT32 OOC_SSA__InstrDesc_SizeOpndList(OOC_SSA__Instr instr) {
  register OOC_INT64 i0,i1,i2;
  OOC_INT32 num;
  OOC_SSA__Opnd opnd;

  num = 0;
  i0 = (OOC_INT64)instr;
  i0 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 22266))+48);
  opnd = (OOC_SSA__Opnd)i0;
  i1 = i0!=(OOC_INT64)0;
  if (i1) goto l3;
  i0=0;
  goto l9;
l3:
  i1=i0;i0=0;
l4_loop:
  i0 = i0+1;
  num = i0;
  i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i1, 22339))+16);
  opnd = (OOC_SSA__Opnd)i1;
  i2 = i1!=(OOC_INT64)0;
  if (i2) goto l4_loop;
l9:
  return i0;
  ;
}

OOC_INT32 OOC_SSA__InstrDesc_CountOpndClass(OOC_SSA__Instr instr, OOC_INT8 _class) {
  register OOC_INT64 i0,i1,i2,i3;
  OOC_INT32 num;
  OOC_SSA__Opnd opnd;

  num = 0;
  i0 = (OOC_INT64)instr;
  i0 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 22642))+48);
  opnd = (OOC_SSA__Opnd)i0;
  i1 = i0!=(OOC_INT64)0;
  if (i1) goto l3;
  i0=0;
  goto l13;
l3:
  i1 = _class;
  i2=0;
l4_loop:
  i3 = *(OOC_INT8*)((_check_pointer(i0, 22694))+8);
  i3 = i3==i1;
  if (!i3) goto l8;
  i2 = i2+1;
  num = i2;
  
l8:
  i0 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 22764))+16);
  opnd = (OOC_SSA__Opnd)i0;
  i3 = i0!=(OOC_INT64)0;
  if (i3) goto l4_loop;
l12:
  i0=i2;
l13:
  return i0;
  ;
}

OOC_INT32 OOC_SSA__InstrDesc_SizeResultList(OOC_SSA__Instr instr) {
  register OOC_INT64 i0,i1,i2;
  OOC_INT32 num;
  OOC_SSA__Result res;

  i0 = (OOC_INT64)instr;
  res = (OOC_SSA__Result)i0;
  i1 = i0!=(OOC_INT64)0;
  if (i1) goto l3;
  i0=0;
  goto l9;
l3:
  i1=i0;i0=0;
l4_loop:
  i0 = i0+1;
  num = i0;
  i1 = (OOC_INT64)*(OOC_INT64*)(_check_pointer(i1, 23175));
  res = (OOC_SSA__Result)i1;
  i2 = i1!=(OOC_INT64)0;
  if (i2) goto l4_loop;
l9:
  return i0;
  ;
}

OOC_SSA__Opnd OOC_SSA__InstrDesc_NthOpnd(OOC_SSA__Instr instr, OOC_INT32 nth) {
  register OOC_INT64 i0,i1,i2;
  OOC_SSA__Opnd opnd;

  i0 = (OOC_INT64)instr;
  i0 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 23489))+48);
  opnd = (OOC_SSA__Opnd)i0;
  i1 = nth;
  i2 = i1!=0;
  if (!i2) goto l9;
l4_loop:
  i0 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 23542))+16);
  opnd = (OOC_SSA__Opnd)i0;
  i1 = i1-1;
  nth = i1;
  i2 = i1!=0;
  if (i2) goto l4_loop;
l9:
  return (OOC_SSA__Opnd)i0;
  ;
}

OOC_SSA__Result OOC_SSA__InstrDesc_NthArg(OOC_SSA__Instr instr, OOC_INT32 nth) {
  register OOC_INT64 i0,i1,i2;
  OOC_SSA__Opnd opnd;

  i0 = (OOC_INT64)instr;
  i0 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 23879))+48);
  opnd = (OOC_SSA__Opnd)i0;
  i1 = nth;
  i2 = i1!=0;
  if (!i2) goto l9;
l4_loop:
  i0 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 23932))+16);
  opnd = (OOC_SSA__Opnd)i0;
  i1 = i1-1;
  nth = i1;
  i2 = i1!=0;
  if (i2) goto l4_loop;
l9:
  i0 = (OOC_INT64)*(OOC_INT64*)(_check_pointer(i0, 23984));
  return (OOC_SSA__Result)i0;
  ;
}

OOC_SSA__Opnd OOC_SSA__InstrDesc_LastOpnd(OOC_SSA__Instr instr) {
  register OOC_INT64 i0,i1;
  OOC_SSA__Opnd opnd;

  i0 = (OOC_INT64)instr;
  i0 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 24217))+48);
  opnd = (OOC_SSA__Opnd)i0;
  i1 = i0!=(OOC_INT64)0;
  if (!i1) goto l13;
  i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 24271))+16);
  i1 = i1!=(OOC_INT64)0;
  if (!i1) goto l13;
l7_loop:
  i0 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 24312))+16);
  opnd = (OOC_SSA__Opnd)i0;
  i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 24271))+16);
  i1 = i1!=(OOC_INT64)0;
  if (i1) goto l7_loop;
l13:
  return (OOC_SSA__Opnd)i0;
  ;
}

OOC_SSA__Opnd OOC_SSA__InstrDesc_GetOpndClass(OOC_SSA__Instr instr, OOC_INT8 _class) {
  register OOC_INT64 i0,i1,i2;
  OOC_SSA__Opnd opnd;

  i0 = (OOC_INT64)instr;
  i0 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 24649))+48);
  opnd = (OOC_SSA__Opnd)i0;
  i1 = i0!=(OOC_INT64)0;
  if (i1) goto l3;
  i1=0u;
  goto l5;
l3:
  i1 = *(OOC_INT8*)((_check_pointer(i0, 24691))+8);
  i2 = _class;
  i1 = i1!=i2;
  
l5:
  if (!i1) goto l17;
  i1 = _class;
  
l8_loop:
  i0 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 24729))+16);
  opnd = (OOC_SSA__Opnd)i0;
  i2 = i0!=(OOC_INT64)0;
  if (i2) goto l11;
  i2=0u;
  goto l13;
l11:
  i2 = *(OOC_INT8*)((_check_pointer(i0, 24691))+8);
  i2 = i2!=i1;
  
l13:
  if (i2) goto l8_loop;
l17:
  return (OOC_SSA__Opnd)i0;
  ;
}

OOC_SSA__Result OOC_SSA__InstrDesc_GetArgClass(OOC_SSA__Instr instr, OOC_INT8 _class) {
  register OOC_INT64 i0,i1,i2;
  OOC_SSA__Opnd opnd;

  i0 = (OOC_INT64)instr;
  i0 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 25074))+48);
  opnd = (OOC_SSA__Opnd)i0;
  i1 = i0!=(OOC_INT64)0;
  if (i1) goto l3;
  i1=0u;
  goto l5;
l3:
  i1 = *(OOC_INT8*)((_check_pointer(i0, 25116))+8);
  i2 = _class;
  i1 = i1!=i2;
  
l5:
  if (!i1) goto l17;
  i1 = _class;
  
l8_loop:
  i0 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 25154))+16);
  opnd = (OOC_SSA__Opnd)i0;
  i2 = i0!=(OOC_INT64)0;
  if (i2) goto l11;
  i2=0u;
  goto l13;
l11:
  i2 = *(OOC_INT8*)((_check_pointer(i0, 25116))+8);
  i2 = i2!=i1;
  
l13:
  if (i2) goto l8_loop;
l17:
  i1 = i0==(OOC_INT64)0;
  if (i1) goto l20;
  i0 = (OOC_INT64)*(OOC_INT64*)(_check_pointer(i0, 25243));
  return (OOC_SSA__Result)i0;
  goto l21;
l20:
  return (OOC_SSA__Result)(OOC_INT64)0;
l21:
  _failed_function(24812); return 0;
  ;
}

OOC_SSA__Result OOC_SSA__InstrDesc_GetArgStore(OOC_SSA__Instr instr) {
  register OOC_INT64 i0;

  i0 = (OOC_INT64)instr;
  i0 = (OOC_INT64)OOC_SSA__InstrDesc_GetArgClass((OOC_SSA__Instr)i0, 2);
  return (OOC_SSA__Result)i0;
  ;
}

OOC_SSA__Result OOC_SSA__InstrDesc_NthResult(OOC_SSA__Instr instr, OOC_INT32 nth) {
  register OOC_INT64 i0,i1,i2;
  OOC_SSA__Result res;

  i0 = (OOC_INT64)instr;
  res = (OOC_SSA__Result)i0;
  i1 = nth;
  i2 = i1!=0;
  if (!i2) goto l9;
  
l4_loop:
  i0 = (OOC_INT64)*(OOC_INT64*)(_check_pointer(i0, 25820));
  res = (OOC_SSA__Result)i0;
  i1 = i1-1;
  nth = i1;
  i2 = i1!=0;
  if (i2) goto l4_loop;
l9:
  return (OOC_SSA__Result)i0;
  ;
}

OOC_SSA__Result OOC_SSA__InstrDesc_GetResultClass(OOC_SSA__Instr instr, OOC_INT8 _class) {
  register OOC_INT64 i0,i1,i2;
  OOC_SSA__Result result;

  i0 = (OOC_INT64)instr;
  result = (OOC_SSA__Result)i0;
  i1 = i0!=(OOC_INT64)0;
  if (i1) goto l3;
  i1=0u;
  goto l5;
l3:
  i1 = *(OOC_INT8*)((_check_pointer(i0, 26220))+8);
  i2 = _class;
  i1 = i1!=i2;
  
l5:
  if (!i1) goto l17;
  i1 = _class;
  
l8_loop:
  i0 = (OOC_INT64)*(OOC_INT64*)(_check_pointer(i0, 26262));
  result = (OOC_SSA__Result)i0;
  i2 = i0!=(OOC_INT64)0;
  if (i2) goto l11;
  i2=0u;
  goto l13;
l11:
  i2 = *(OOC_INT8*)((_check_pointer(i0, 26220))+8);
  i2 = i2!=i1;
  
l13:
  if (i2) goto l8_loop;
l17:
  return (OOC_SSA__Result)i0;
  ;
}

OOC_SSA__Result OOC_SSA__InstrDesc_GetResultStore(OOC_SSA__Instr instr) {
  register OOC_INT64 i0,i1;
  OOC_SSA__Result result;

  i0 = (OOC_INT64)instr;
  result = (OOC_SSA__Result)i0;
  i1 = i0!=(OOC_INT64)0;
  if (i1) goto l3;
  i1=0u;
  goto l5;
l3:
  i1 = *(OOC_INT8*)((_check_pointer(i0, 26514))+8);
  i1 = i1!=2;
  
l5:
  if (!i1) goto l17;
l8_loop:
  i0 = (OOC_INT64)*(OOC_INT64*)(_check_pointer(i0, 26568));
  result = (OOC_SSA__Result)i0;
  i1 = i0!=(OOC_INT64)0;
  if (i1) goto l11;
  i1=0u;
  goto l13;
l11:
  i1 = *(OOC_INT8*)((_check_pointer(i0, 26514))+8);
  i1 = i1!=2;
  
l13:
  if (i1) goto l8_loop;
l17:
  return (OOC_SSA__Result)i0;
  ;
}

void OOC_SSA__InstrDesc_GetOpcodeName(OOC_SSA__Instr instr, OOC_CHAR8 name[], OOC_LEN name_0d) {
  register OOC_INT64 i0,i1;

  i0 = (OOC_INT64)instr;
  i1 = *(OOC_INT8*)((_check_pointer(i0, 26911))+72);
  i0 = *(OOC_INT8*)((_check_pointer(i0, 26926))+9);
  OOC_SSA_Opcode__GetName(i1, i0, (void*)(OOC_INT64)name, name_0d);
  return;
  ;
}

OOC_INT8 OOC_SSA__InstrDesc_GetResultType(OOC_SSA__Instr instr) {
  register OOC_INT64 i0,i1;

  i0 = (OOC_INT64)instr;
  i1 = *(OOC_INT8*)((_check_pointer(i0, 27050))+72);
  switch (i1) {
  case 13:
    return 0;
    goto l4;
  default:
    i0 = *(OOC_INT8*)((_check_pointer(i0, 27299))+9);
    return i0;
    goto l4;
  }
l4:
  _failed_function(26992); return 0;
  ;
}

OOC_SSA__Instr OOC_SSA__InstrDesc_GetLoopEnd(OOC_SSA__Instr instr) {
  register OOC_INT64 i0,i1;
  OOC_SSA__Opnd use;
  OOC_SSA__Result res;

  i0 = (OOC_INT64)instr;
  i1 = *(OOC_INT8*)((_check_pointer(i0, 27579))+72);
  switch (i1) {
  case 10:
    i0 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 27633))+24);
    use = (OOC_SSA__Opnd)i0;
    goto l5;
  case 9:
    i0 = (OOC_INT64)OOC_SSA__InstrDesc_GetResultStore((OOC_SSA__Instr)i0);
    res = (OOC_SSA__Result)i0;
    i0 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 27717))+24);
    use = (OOC_SSA__Opnd)i0;
    goto l5;
  default:
    _failed_case(i1, 27569);
    goto l5;
  }
l5:
  i0 = (OOC_INT64)use;
  i1 = i0!=(OOC_INT64)0;
  if (i1) goto l8;
  i0=0u;
  goto l10;
l8:
  i0 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 27765))+24);
  i0 = *(OOC_INT8*)((_check_pointer(i0, 27772))+72);
  i0 = i0!=11;
  
l10:
  if (!i0) goto l21;
l12_loop:
  i0 = (OOC_INT64)use;
  i0 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 27818))+32);
  use = (OOC_SSA__Opnd)i0;
  i1 = i0!=(OOC_INT64)0;
  if (i1) goto l15;
  i0=0u;
  goto l17;
l15:
  i0 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 27765))+24);
  i0 = *(OOC_INT8*)((_check_pointer(i0, 27772))+72);
  i0 = i0!=11;
  
l17:
  if (i0) goto l12_loop;
l21:
  i0 = (OOC_INT64)use;
  i0 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 27852))+24);
  return (OOC_SSA__Instr)i0;
  ;
}

OOC_SSA__Result OOC_SSA__InstrDesc_GetBackwardFeed(OOC_SSA__Instr instr) {
  register OOC_INT64 i0,i1;

  i0 = (OOC_INT64)instr;
  i1 = *(OOC_INT8*)((_check_pointer(i0, 28134))+72);
  i1 = i1==10;
  if (!i1) goto l4;
  i0 = (OOC_INT64)OOC_SSA__InstrDesc_GetLoopEnd((OOC_SSA__Instr)i0);
  instr = (OOC_SSA__Instr)i0;
  
l4:
  i1 = *(OOC_INT8*)((_check_pointer(i0, 28230))+72);
  _assert((i1==11), 127, 28217);
  i0 = (OOC_INT64)OOC_SSA__InstrDesc_GetArgClass((OOC_SSA__Instr)i0, 13);
  return (OOC_SSA__Result)i0;
  ;
}

OOC_SSA__Instr OOC_SSA__InstrDesc_GetLoopStart(OOC_SSA__Instr instr) {
  register OOC_INT64 i0,i1;

  i0 = (OOC_INT64)instr;
  i1 = *(OOC_INT8*)((_check_pointer(i0, 28521))+72);
  _assert((i1==11), 127, 28508);
  i0 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 28565))+48);
  i0 = (OOC_INT64)*(OOC_INT64*)(_check_pointer(i0, 28575));
  return (OOC_SSA__Instr)(_type_guard(i0, ((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 28581)))), &_td_OOC_SSA__InstrDesc, 28581));
  ;
}

OOC_SSA__Instr OOC_SSA__InstrDesc_GetCollectTarget(OOC_SSA__Instr instr) {
  register OOC_INT64 i0,i1;
  OOC_SSA__Result storeOut;
  OOC_SSA__Opnd use;

  i0 = (OOC_INT64)instr;
  i1 = *(OOC_INT8*)((_check_pointer(i0, 28831))+72);
  _assert((i1==6), 127, 28818);
  i0 = (OOC_INT64)OOC_SSA__InstrDesc_GetResultStore((OOC_SSA__Instr)i0);
  storeOut = (OOC_SSA__Result)i0;
  _assert((i0!=(OOC_INT64)0), 127, 28904);
  i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 28949))+24);
  _assert((i1!=(OOC_INT64)0), 127, 28933);
  i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 28987))+24);
  i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i1, 28996))+32);
  _assert((i1==(OOC_INT64)0), 127, 28971);
  i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 29030))+24);
  i1 = *(OOC_INT8*)((_check_pointer(i1, 29039))+8);
  i1 = i1==13;
  if (i1) goto l16;
  i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 29288))+24);
  i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i1, 29297))+24);
  i1 = *(OOC_INT8*)((_check_pointer(i1, 29304))+72);
  i1 = i1==9;
  if (i1) goto l5;
  i0 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 29698))+24);
  i0 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 29707))+24);
  return (OOC_SSA__Instr)i0;
  goto l17;
l5:
  i0 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 29482))+24);
  i0 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 29491))+24);
  i0 = (OOC_INT64)OOC_SSA__InstrDesc_GetResultStore((OOC_SSA__Instr)i0);
  storeOut = (OOC_SSA__Result)i0;
  i0 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 29539))+24);
  use = (OOC_SSA__Opnd)i0;
  i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 29566))+24);
  i1 = *(OOC_INT8*)((_check_pointer(i1, 29573))+72);
  i1 = i1!=11;
  if (!i1) goto l14;
l9_loop:
  i0 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 29621))+32);
  use = (OOC_SSA__Opnd)i0;
  i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 29566))+24);
  i1 = *(OOC_INT8*)((_check_pointer(i1, 29573))+72);
  i1 = i1!=11;
  if (i1) goto l9_loop;
l14:
  i0 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 29659))+24);
  return (OOC_SSA__Instr)i0;
  goto l17;
l16:
  i0 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 29235))+24);
  i0 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 29244))+24);
  i0 = (OOC_INT64)OOC_SSA__InstrDesc_GetLoopStart((OOC_SSA__Instr)i0);
  return (OOC_SSA__Instr)i0;
l17:
  _failed_function(28635); return 0;
  ;
}

OOC_INT32 OOC_SSA__InstrDesc_NumberOfPaths(OOC_SSA__Instr select) {
  register OOC_INT64 i0,i1;

  i0 = (OOC_INT64)select;
  i1 = *(OOC_INT8*)((_check_pointer(i0, 30021))+72);
  switch (i1) {
  case 5:
    i1 = (OOC_INT64)OOC_SSA__InstrDesc_GetOpndClass((OOC_SSA__Instr)i0, 16);
    i1 = i1==(OOC_INT64)0;
    if (i1) goto l5;
    i0 = OOC_SSA__InstrDesc_CountOpndClass((OOC_SSA__Instr)i0, 16);
    return i0;
    goto l10;
l5:
    i0 = OOC_SSA__InstrDesc_CountOpndClass((OOC_SSA__Instr)i0, 1);
    return (i0>>1);
    goto l10;
  case 10:
    return 2;
    goto l10;
  case 11:
    i0 = OOC_SSA__InstrDesc_CountOpndClass((OOC_SSA__Instr)i0, 11);
    return i0;
    goto l10;
  default:
    _failed_case(i1, 30010);
    goto l10;
  }
l10:
  _failed_function(29776); return 0;
  ;
}

OOC_SSA__Instr OOC_SSA__InstrDesc_GetCollect(OOC_SSA__Instr select, OOC_SSA__ProcBlock pb, OOC_INT32 pathNum) {
  register OOC_INT64 i0,i1,i2,i3;
  OOC_SSA__Opnd opnd;
  OOC_SSA__Instr loopEnd;
  OOC_SSA__Instr collect;

  i0 = (OOC_INT64)select;
  i1 = *(OOC_INT8*)((_check_pointer(i0, 31038))+72);
  switch (i1) {
  case 5:
    i1 = pathNum;
    i0 = (OOC_INT64)OOC_SSA__InstrDesc_NthOpnd((OOC_SSA__Instr)i0, (2+i1*2));
    opnd = (OOC_SSA__Opnd)i0;
    goto l10;
  case 11:
    i1 = pathNum;
    i0 = (OOC_INT64)OOC_SSA__InstrDesc_NthOpnd((OOC_SSA__Instr)i0, (i1+2));
    opnd = (OOC_SSA__Opnd)i0;
    i1 = (OOC_INT64)*(OOC_INT64*)(_check_pointer(i0, 31244));
    i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i1, 31248))+16);
    i1 = *(OOC_INT8*)((_check_pointer(i1, 31254))+72);
    _assert((i1==9), 127, 31233);
    i0 = (OOC_INT64)*(OOC_INT64*)(_check_pointer(i0, 31296));
    i0 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 31300))+16);
    i0 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 31306))+48);
    opnd = (OOC_SSA__Opnd)i0;
    goto l10;
  case 10:
    i1 = pathNum;
    i2 = i1==0;
    if (i2) goto l7;
    i0 = (OOC_INT64)OOC_SSA__InstrDesc_GetLoopEnd((OOC_SSA__Instr)i0);
    loopEnd = (OOC_SSA__Instr)i0;
    i0 = (OOC_INT64)OOC_SSA__InstrDesc_GetOpndClass((OOC_SSA__Instr)i0, 13);
    opnd = (OOC_SSA__Opnd)i0;
    
    goto l10;
l7:
    i0 = (OOC_INT64)OOC_SSA__InstrDesc_NthOpnd((OOC_SSA__Instr)i0, i1);
    opnd = (OOC_SSA__Opnd)i0;
    
    goto l10;
  default:
    _failed_case(i1, 31027);
    goto l10;
  }
l10:
  i0 = (OOC_INT64)opnd;
  i1 = (OOC_INT64)*(OOC_INT64*)(_check_pointer(i0, 31567));
  i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i1, 31571))+16);
  i1 = *(OOC_INT8*)((_check_pointer(i1, 31577))+72);
  i1 = i1==6;
  if (i1) goto l13;
  i1 = (OOC_INT64)pb;
  i1 = (OOC_INT64)OOC_SSA__ProcBlockDesc_AddInstr((OOC_SSA__ProcBlock)i1, 6, 0);
  collect = (OOC_SSA__Instr)i1;
  i2 = (OOC_INT64)*(OOC_INT64*)(_check_pointer(i0, 31728));
  i3 = (OOC_INT64)OOC_SSA__InstrDesc_AddResult((OOC_SSA__Instr)i1, 2);
  OOC_SSA__OpndDesc_ReplaceArg((OOC_SSA__Opnd)i0, (OOC_SSA__Result)i3);
  OOC_SSA__InstrDesc_AddOpnd((OOC_SSA__Instr)i1, (OOC_SSA__Result)i2, 2);
  return (OOC_SSA__Instr)i1;
  goto l14;
l13:
  i0 = (OOC_INT64)*(OOC_INT64*)(_check_pointer(i0, 31625));
  i0 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 31629))+16);
  return (OOC_SSA__Instr)i0;
l14:
  _failed_function(30566); return 0;
  ;
}

void OOC_SSA__InstrDesc_LogOpcode(OOC_SSA__Instr instr, const OOC_CHAR8 msg__ref[], OOC_LEN msg_0d) {
  register OOC_INT64 i0;
  OOC_ALLOCATE_VPAR(msg,OOC_CHAR8 ,msg_0d)
  OOC_CHAR8 name[64];

  OOC_INITIALIZE_VPAR(msg__ref,msg,OOC_CHAR8 ,msg_0d)
  i0 = (OOC_INT64)instr;
  OOC_SSA__InstrDesc_GetOpcodeName((OOC_SSA__Instr)i0, (void*)(OOC_INT64)name, 64);
  Log__String((void*)(OOC_INT64)msg, msg_0d, (void*)(OOC_INT64)name, 64);
  return;
  ;
}

OOC_CHAR8 OOC_SSA__InstrDesc_IsConst(OOC_SSA__Instr instr) {
  register OOC_INT64 i0,i1;

  i0 = (OOC_INT64)instr;
  i1 = *(OOC_INT8*)((_check_pointer(i0, 32417))+72);
  i1 = i1==57;
  if (i1) goto l3;
  i1 = OOC_TYPE_TEST(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 32469)))), &_td_OOC_SSA__ConstDesc);
  
  goto l5;
l3:
  i1=1u;
l5:
  if (i1) goto l7;
  i1 = OOC_TYPE_TEST(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 32489)))), &_td_OOC_SSA__DeclRefDesc);
  
  goto l9;
l7:
  i1=1u;
l9:
  if (i1) goto l11;
  i1 = OOC_TYPE_TEST(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 32519)))), &_td_OOC_SSA__TypeRefDesc);
  
  goto l13;
l11:
  i1=1u;
l13:
  if (i1) goto l15;
  i0 = OOC_TYPE_TEST(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 32541)))), &_td_OOC_SSA__AddressDesc);
  
  goto l16;
l15:
  i0=1u;
l16:
  return i0;
  ;
}

OOC_CHAR8 OOC_SSA__InstrDesc_UniqueResult(OOC_SSA__Instr instr) {
  register OOC_INT64 i0;

  i0 = (OOC_INT64)instr;
  i0 = *(OOC_INT8*)((_check_pointer(i0, 32877))+72);
  switch (i0) {
  case 59:
  case 9:
  case 7:
    return 1u;
    goto l4;
  default:
    return 0u;
    goto l4;
  }
l4:
  _failed_function(32595); return 0;
  ;
}

OOC_CHAR8 OOC_SSA__InstrDesc_IsSync(OOC_SSA__Instr instr) {
  register OOC_INT64 i0;

  i0 = (OOC_INT64)instr;
  i0 = *(OOC_INT8*)((_check_pointer(i0, 33478))+72);
  switch (i0) {
  case 7:
  case 9:
  case 12:
  case 59:
  case 64:
  case 65:
  case 66:
  case 67:
  case 68:
  case 69:
  case 70:
  case 71:
    return 1u;
    goto l4;
  default:
    return 0u;
    goto l4;
  }
l4:
  _failed_function(33064); return 0;
  ;
}

OOC_CHAR8 OOC_SSA__InstrDesc_IsSwitchStatm(OOC_SSA__Instr instr) {
  register OOC_INT64 i0,i1;

  i0 = (OOC_INT64)instr;
  i1 = *(OOC_INT8*)((_check_pointer(i0, 34077))+72);
  _assert((i1==5), 127, 34064);
  i1 = (OOC_INT64)OOC_SSA__InstrDesc_GetOpndClass((OOC_SSA__Instr)i0, 16);
  i1 = i1!=(OOC_INT64)0;
  if (i1) goto l3;
  i0 = OOC_SSA__InstrDesc_CountOpndClass((OOC_SSA__Instr)i0, 1);
  i0 = i0<4;
  
  goto l4;
l3:
  i0=1u;
l4:
  return i0;
  ;
}

static void OOC_SSA__InitConst(OOC_SSA__Const _const, OOC_INT8 subclass, Object_Boxed__Object value, OOC_SymbolTable__Type stringType) {
  register OOC_INT64 i0,i1;

  i0 = (OOC_INT64)_const;
  i1 = subclass;
  OOC_SSA__InitInstr((OOC_SSA__Instr)i0, 0, i1);
  i1 = (OOC_INT64)value;
  _assert((i1!=(OOC_INT64)0), 127, 34646);
  *(OOC_INT64*)((_check_pointer(i0, 34677))+80) = i1;
  i1 = (OOC_INT64)stringType;
  *(OOC_INT64*)((_check_pointer(i0, 34704))+88) = i1;
  return;
  ;
}

static void OOC_SSA__InitDeclRef(OOC_SSA__DeclRef declRef, OOC_SymbolTable__Declaration decl) {
  register OOC_INT64 i0,i1;

  i0 = (OOC_INT64)declRef;
  OOC_SSA__InitInstr((OOC_SSA__Instr)i0, 1, 0);
  i1 = (OOC_INT64)decl;
  *(OOC_INT64*)((_check_pointer(i0, 34890))+80) = i1;
  return;
  ;
}

static void OOC_SSA__InitTypeRef(OOC_SSA__TypeRef typeRef, OOC_SymbolTable__Type type) {
  register OOC_INT64 i0,i1;

  i0 = (OOC_INT64)typeRef;
  OOC_SSA__InitInstr((OOC_SSA__Instr)i0, 2, 0);
  i1 = (OOC_INT64)type;
  *(OOC_INT64*)((_check_pointer(i0, 35059))+80) = i1;
  return;
  ;
}

static void OOC_SSA__InitAddress(OOC_SSA__Address address, OOC_INT8 opcode, OOC_SymbolTable__Declaration decl) {
  register OOC_INT64 i0,i1;

  i0 = (OOC_INT64)address;
  i1 = opcode;
  OOC_SSA__InitInstr((OOC_SSA__Instr)i0, i1, 9);
  i1 = (OOC_INT64)decl;
  *(OOC_INT64*)((_check_pointer(i0, 35275))+80) = i1;
  return;
  ;
}

static OOC_SSA__Address OOC_SSA__NewAddress(OOC_INT8 opcode, OOC_SymbolTable__Declaration decl) {
  register OOC_INT64 i0,i1,i2;

  i0 = (OOC_INT64)RT0__NewObject(_td_OOC_SSA__Address.baseTypes[0]);
  i1 = opcode;
  i2 = (OOC_INT64)decl;
  OOC_SSA__InitAddress((OOC_SSA__Address)i0, i1, (OOC_SymbolTable__Declaration)i2);
  return (OOC_SSA__Address)i0;
  ;
}

static void OOC_SSA__InitProcBlock(OOC_SSA__ProcBlock pb, OOC_SymbolTable__ProcDecl procDecl, OOC_CHAR8 checkFunctionResult) {
  register OOC_INT64 i0,i1,i2;
  OOC_SSA__Instr enter;
  OOC_SSA__Result initialStore;
  OOC_INT32 i;

  i0 = (OOC_INT64)pb;
  OOC_SSA__InitNode((OOC_SSA__Node)i0);
  *(OOC_INT64*)((_check_pointer(i0, 35821))+24) = (OOC_INT64)0;
  *(OOC_INT64*)((_check_pointer(i0, 35847))+32) = (OOC_INT64)0;
  i1 = (OOC_INT64)procDecl;
  *(OOC_INT64*)((_check_pointer(i0, 35873))+40) = i1;
  i1 = checkFunctionResult;
  *(OOC_UINT8*)((_check_pointer(i0, 35903))+48) = i1;
  i1 = (OOC_INT64)OOC_SSA__ProcBlockDesc_AddInstr((OOC_SSA__ProcBlock)i0, 8, 0);
  *(OOC_INT64*)(_check_pointer(i0, 35960)) = i1;
  i1 = (OOC_INT64)OOC_SSA__ProcBlockDesc_AddInstr((OOC_SSA__ProcBlock)i0, 4, 0);
  enter = (OOC_SSA__Instr)i1;
  i1 = (OOC_INT64)OOC_SSA__InstrDesc_AddResult((OOC_SSA__Instr)i1, 2);
  initialStore = (OOC_SSA__Result)i1;
  i2 = (OOC_INT64)*(OOC_INT64*)(_check_pointer(i0, 36150));
  OOC_SSA__InstrDesc_AddOpnd((OOC_SSA__Instr)i2, (OOC_SSA__Result)i1, 10);
  *(OOC_INT64*)((_check_pointer(i0, 36223))+8) = (OOC_INT64)0;
  *(OOC_INT64*)((_check_pointer(i0, 36251))+16) = (OOC_INT64)0;
  i = 0;
  i1=0;
l1_loop:
  *(OOC_INT64*)(((_check_pointer(i0, 36320))+56)+(_check_index(i1, 12, OOC_UINT32, 36330))*8) = (OOC_INT64)0;
  i1 = i1+1;
  i = i1;
  i2 = i1<=11;
  if (i2) goto l1_loop;
l5:
  i1 = (OOC_INT64)ADT_Dictionary__New();
  *(OOC_INT64*)((_check_pointer(i0, 36357))+152) = i1;
  i1 = (OOC_INT64)ADT_Dictionary__New();
  *(OOC_INT64*)((_check_pointer(i0, 36393))+160) = i1;
  return;
  ;
}

OOC_SSA__ProcBlock OOC_SSA__NewProcBlock(OOC_IR__Procedure proc) {
  register OOC_INT64 i0,i1,i2;
  OOC_SSA__ProcBlock pb;

  i0 = (OOC_INT64)RT0__NewObject(_td_OOC_SSA__ProcBlock.baseTypes[0]);
  pb = (OOC_SSA__ProcBlock)i0;
  i1 = (OOC_INT64)proc;
  i2 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i1, 36628))+8);
  i1 = *(OOC_UINT8*)((_check_pointer(i1, 36640))+24);
  OOC_SSA__InitProcBlock((OOC_SSA__ProcBlock)i0, (OOC_SymbolTable__ProcDecl)i2, i1);
  return (OOC_SSA__ProcBlock)i0;
  ;
}

static void OOC_SSA__AppendInstr(OOC_SSA__ProcBlock pb, OOC_SSA__Instr instr) {
  register OOC_INT64 i0,i1,i2;

  i0 = (OOC_INT64)instr;
  *(OOC_INT64*)((_check_pointer(i0, 36826))+56) = (OOC_INT64)0;
  i1 = (OOC_INT64)pb;
  i2 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i1, 36872))+32);
  *(OOC_INT64*)((_check_pointer(i0, 36855))+64) = i2;
  i2 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i1, 36895))+24);
  i2 = i2==(OOC_INT64)0;
  if (i2) goto l3;
  i2 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i1, 37097))+32);
  *(OOC_INT64*)((_check_pointer(i2, 37108))+56) = i0;
  *(OOC_INT64*)((_check_pointer(i1, 37138))+32) = i0;
  goto l4;
l3:
  *(OOC_INT64*)((_check_pointer(i1, 36969))+24) = i0;
  *(OOC_INT64*)((_check_pointer(i1, 36999))+32) = i0;
l4:
  return;
  ;
}

OOC_SSA__Instr OOC_SSA__ProcBlockDesc_AddInstr(OOC_SSA__ProcBlock pb, OOC_INT8 opcode, OOC_INT8 subclass) {
  register OOC_INT64 i0,i1,i2;

  i0 = (OOC_INT64)RT0__NewObject(_td_OOC_SSA__Instr.baseTypes[0]);
  i1 = opcode;
  i2 = subclass;
  OOC_SSA__InitInstr((OOC_SSA__Instr)i0, i1, i2);
  i1 = (OOC_INT64)pb;
  OOC_SSA__AppendInstr((OOC_SSA__ProcBlock)i1, (OOC_SSA__Instr)i0);
  return (OOC_SSA__Instr)i0;
  ;
}

void OOC_SSA__ProcBlockDesc_DeleteInstr(OOC_SSA__ProcBlock pb, OOC_SSA__Instr instr) {
  register OOC_INT64 i0,i1,i2;

  i0 = (OOC_INT64)instr;
  i1 = OOC_TYPE_TEST(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 38210)))), &_td_OOC_SSA__AddressDesc);
  if (i1) goto l17;
  i1 = OOC_TYPE_TEST(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 38274)))), &_td_OOC_SSA__ConstDesc);
  if (i1) goto l12;
  i1 = OOC_TYPE_TEST(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 38403)))), &_td_OOC_SSA__DeclRefDesc);
  if (i1) goto l10;
  i1 = OOC_TYPE_TEST(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 38467)))), &_td_OOC_SSA__TypeRefDesc);
  if (!i1) goto l18;
  i1 = (OOC_INT64)pb;
  i2 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 38511))+80);
  i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i1, 38488))+152);
  ADT_Dictionary__DictionaryDesc_Delete((ADT_Dictionary__Dictionary)i1, (Object__Object)i2);
  goto l18;
l10:
  i1 = (OOC_INT64)pb;
  i2 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 38447))+80);
  i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i1, 38424))+152);
  ADT_Dictionary__DictionaryDesc_Delete((ADT_Dictionary__Dictionary)i1, (Object__Object)i2);
  goto l18;
l12:
  i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 38300))+88);
  i1 = i1==(OOC_INT64)0;
  if (!i1) goto l18;
  i1 = (OOC_INT64)pb;
  i2 = *(OOC_INT8*)((_check_pointer(i0, 38349))+9);
  i1 = (OOC_INT64)*(OOC_INT64*)(((_check_pointer(i1, 38334))+56)+(_check_index(i2, 12, OOC_UINT8, 38343))*8);
  i2 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 38372))+80);
  ADT_Dictionary__DictionaryDesc_Delete((ADT_Dictionary__Dictionary)i1, (Object__Object)i2);
  goto l18;
l17:
  i1 = (OOC_INT64)pb;
  i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i1, 38231))+160);
  i2 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 38254))+80);
  ADT_Dictionary__DictionaryDesc_Delete((ADT_Dictionary__Dictionary)i1, (Object__Object)i2);
l18:
  i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 38646))+48);
  i1 = i1!=(OOC_INT64)0;
  if (!i1) goto l26;
l21_loop:
  i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 38678))+48);
  OOC_SSA__OpndDesc_DeleteOpnd((OOC_SSA__Opnd)i1);
  i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 38646))+48);
  i1 = i1!=(OOC_INT64)0;
  if (i1) goto l21_loop;
l26:
  i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 38727))+64);
  i1 = i1==(OOC_INT64)0;
  if (i1) goto l29;
  i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 38811))+64);
  i2 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 38842))+56);
  *(OOC_INT64*)((_check_pointer(i1, 38822))+56) = i2;
  goto l30;
l29:
  i1 = (OOC_INT64)pb;
  i2 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 38779))+56);
  *(OOC_INT64*)((_check_pointer(i1, 38759))+24) = i2;
l30:
  i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 38876))+56);
  i1 = i1==(OOC_INT64)0;
  if (i1) goto l33;
  i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 38960))+56);
  i2 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 38991))+64);
  *(OOC_INT64*)((_check_pointer(i1, 38971))+64) = i2;
  goto l34;
l33:
  i1 = (OOC_INT64)pb;
  i2 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 38928))+64);
  *(OOC_INT64*)((_check_pointer(i1, 38908))+32) = i2;
l34:
  *(OOC_INT64*)((_check_pointer(i0, 39021))+56) = (OOC_INT64)0;
  *(OOC_INT64*)((_check_pointer(i0, 39050))+64) = (OOC_INT64)0;
  return;
  ;
}

OOC_SSA__Const OOC_SSA__ProcBlockDesc_GetConst(OOC_SSA__ProcBlock pb, Object_Boxed__Object value, OOC_INT8 subclass, OOC_SymbolTable__Type stringType) {
  register OOC_INT64 i0,i1,i2,i3,i4;
  Object__Object obj;
  OOC_SSA__Const _const;

  i0 = (OOC_INT64)pb;
  i1 = subclass;
  i2 = (OOC_INT64)*(OOC_INT64*)(((_check_pointer(i0, 40014))+56)+(_check_index(i1, 12, OOC_UINT8, 40024))*8);
  i2 = i2==(OOC_INT64)0;
  if (!i2) goto l3;
  i2 = (OOC_INT64)ADT_Dictionary__New();
  *(OOC_INT64*)(((_check_pointer(i0, 40055))+56)+(_check_index(i1, 12, OOC_UINT8, 40065))*8) = i2;
l3:
  i2 = (OOC_INT64)*(OOC_INT64*)(((_check_pointer(i0, 40120))+56)+(_check_index(i1, 12, OOC_UINT8, 40129))*8);
  i3 = (OOC_INT64)value;
  i2 = ADT_Dictionary__DictionaryDesc_HasKey((ADT_Dictionary__Dictionary)i2, (Object__Object)i3);
  if (i2) goto l9;
  i2 = (OOC_INT64)RT0__NewObject(_td_OOC_SSA__Const.baseTypes[0]);
  _const = (OOC_SSA__Const)i2;
  i4 = (OOC_INT64)stringType;
  OOC_SSA__InitConst((OOC_SSA__Const)i2, i1, (Object_Boxed__Object)i3, (OOC_SymbolTable__Type)i4);
  OOC_SSA__AppendInstr((OOC_SSA__ProcBlock)i0, (OOC_SSA__Instr)i2);
  i4 = i4==(OOC_INT64)0;
  if (!i4) goto l8;
  i0 = (OOC_INT64)*(OOC_INT64*)(((_check_pointer(i0, 40503))+56)+(_check_index(i1, 12, OOC_UINT8, 40513))*8);
  ADT_Dictionary__DictionaryDesc_Set((ADT_Dictionary__Dictionary)i0, (Object__Object)i3, (Object__Object)i2);
l8:
  return (OOC_SSA__Const)i2;
  goto l10;
l9:
  i0 = (OOC_INT64)*(OOC_INT64*)(((_check_pointer(i0, 40174))+56)+(_check_index(i1, 12, OOC_UINT8, 40184))*8);
  i0 = (OOC_INT64)ADT_Dictionary__DictionaryDesc_Get((ADT_Dictionary__Dictionary)i0, (Object__Object)i3);
  obj = (Object__Object)i0;
  return (OOC_SSA__Const)(_type_guard(i0, ((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 40226)))), &_td_OOC_SSA__ConstDesc, 40226));
l10:
  _failed_function(39118); return 0;
  ;
}

OOC_SSA__Const OOC_SSA__ProcBlockDesc_GetConstInt(OOC_SSA__ProcBlock pb, OOC_INT32 _int) {
  register OOC_INT64 i0,i1,i2;

  i0 = _int;
  i0 = (OOC_INT64)Object_BigInt__NewInt(i0);
  i1 = (OOC_INT64)OOC_SymbolTable_Predef__SmallestIntType((Object_BigInt__BigInt)i0);
  i1 = OOC_SSA_Opcode__TypeToSubclass((OOC_SymbolTable__Type)i1);
  i2 = (OOC_INT64)pb;
  i0 = (OOC_INT64)OOC_SSA__ProcBlockDesc_GetConst((OOC_SSA__ProcBlock)i2, (Object_Boxed__Object)i0, i1, (OOC_SymbolTable__Type)(OOC_INT64)0);
  return (OOC_SSA__Const)i0;
  ;
}

OOC_SSA__Const OOC_SSA__ProcBlockDesc_GetConstBool(OOC_SSA__ProcBlock pb, OOC_CHAR8 b) {
  register OOC_INT64 i0,i1;

  i0 = b;
  if (i0) goto l3;
  i0 = (OOC_INT64)Object_BigInt__zero;
  
  goto l4;
l3:
  i0 = (OOC_INT64)Object_BigInt__one;
  
l4:
  i1 = (OOC_INT64)pb;
  i0 = (OOC_INT64)OOC_SSA__ProcBlockDesc_GetConst((OOC_SSA__ProcBlock)i1, (Object_Boxed__Object)i0, 5, (OOC_SymbolTable__Type)(OOC_INT64)0);
  return (OOC_SSA__Const)i0;
  ;
}

OOC_SSA__Const OOC_SSA__ProcBlockDesc_GetConstNil(OOC_SSA__ProcBlock pb) {
  register OOC_INT64 i0,i1,i2;

  i0 = (OOC_INT64)OOC_SymbolTable_Predef__GetType(16);
  i1 = (OOC_INT64)OOC_SSA__nil;
  i0 = OOC_SSA_Opcode__TypeToSubclass((OOC_SymbolTable__Type)i0);
  i2 = (OOC_INT64)pb;
  i0 = (OOC_INT64)OOC_SSA__ProcBlockDesc_GetConst((OOC_SSA__ProcBlock)i2, (Object_Boxed__Object)i1, i0, (OOC_SymbolTable__Type)(OOC_INT64)0);
  return (OOC_SSA__Const)i0;
  ;
}

OOC_SSA__DeclRef OOC_SSA__ProcBlockDesc_GetDeclRef(OOC_SSA__ProcBlock pb, OOC_SymbolTable__Declaration decl) {
  register OOC_INT64 i0,i1,i2;
  Object__Object obj;
  OOC_SSA__DeclRef declRef;

  i0 = (OOC_INT64)pb;
  i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 41630))+152);
  i2 = (OOC_INT64)decl;
  i1 = ADT_Dictionary__DictionaryDesc_HasKey((ADT_Dictionary__Dictionary)i1, (Object__Object)i2);
  if (i1) goto l3;
  i1 = (OOC_INT64)RT0__NewObject(_td_OOC_SSA__DeclRef.baseTypes[0]);
  declRef = (OOC_SSA__DeclRef)i1;
  OOC_SSA__InitDeclRef((OOC_SSA__DeclRef)i1, (OOC_SymbolTable__Declaration)i2);
  OOC_SSA__AppendInstr((OOC_SSA__ProcBlock)i0, (OOC_SSA__Instr)i1);
  i0 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 41829))+152);
  ADT_Dictionary__DictionaryDesc_Set((ADT_Dictionary__Dictionary)i0, (Object__Object)i2, (Object__Object)i1);
  return (OOC_SSA__DeclRef)i1;
  goto l4;
l3:
  i0 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 41674))+152);
  i0 = (OOC_INT64)ADT_Dictionary__DictionaryDesc_Get((ADT_Dictionary__Dictionary)i0, (Object__Object)i2);
  obj = (Object__Object)i0;
  return (OOC_SSA__DeclRef)(_type_guard(i0, ((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 41713)))), &_td_OOC_SSA__DeclRefDesc, 41713));
l4:
  _failed_function(41369); return 0;
  ;
}

OOC_SSA__TypeRef OOC_SSA__ProcBlockDesc_GetTypeRef(OOC_SSA__ProcBlock pb, OOC_SymbolTable__Type type) {
  register OOC_INT64 i0,i1,i2;
  Object__Object obj;
  OOC_SSA__TypeRef typeRef;

  i0 = (OOC_INT64)pb;
  i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 42175))+152);
  i2 = (OOC_INT64)type;
  i1 = ADT_Dictionary__DictionaryDesc_HasKey((ADT_Dictionary__Dictionary)i1, (Object__Object)i2);
  if (i1) goto l3;
  i1 = (OOC_INT64)RT0__NewObject(_td_OOC_SSA__TypeRef.baseTypes[0]);
  typeRef = (OOC_SSA__TypeRef)i1;
  OOC_SSA__InitTypeRef((OOC_SSA__TypeRef)i1, (OOC_SymbolTable__Type)i2);
  OOC_SSA__AppendInstr((OOC_SSA__ProcBlock)i0, (OOC_SSA__Instr)i1);
  i0 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 42374))+152);
  ADT_Dictionary__DictionaryDesc_Set((ADT_Dictionary__Dictionary)i0, (Object__Object)i2, (Object__Object)i1);
  return (OOC_SSA__TypeRef)i1;
  goto l4;
l3:
  i0 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 42219))+152);
  i0 = (OOC_INT64)ADT_Dictionary__DictionaryDesc_Get((ADT_Dictionary__Dictionary)i0, (Object__Object)i2);
  obj = (Object__Object)i0;
  return (OOC_SSA__TypeRef)(_type_guard(i0, ((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 42258)))), &_td_OOC_SSA__TypeRefDesc, 42258));
l4:
  _failed_function(41935); return 0;
  ;
}

void OOC_SSA__ProcBlockDesc_SetAddress(OOC_SSA__ProcBlock pb, OOC_SymbolTable__Declaration decl, OOC_SSA__Address address) {
  register OOC_INT64 i0,i1,i2;

  i0 = (OOC_INT64)pb;
  i0 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 42586))+160);
  i1 = (OOC_INT64)decl;
  i2 = (OOC_INT64)address;
  ADT_Dictionary__DictionaryDesc_Set((ADT_Dictionary__Dictionary)i0, (Object__Object)i1, (Object__Object)i2);
  return;
  ;
}

OOC_SSA__Address OOC_SSA__ProcBlockDesc_GetAddress(OOC_SSA__ProcBlock pb, OOC_SymbolTable__Declaration decl) {
  register OOC_INT64 i0,i1,i2;
  Object__Object obj;

  i0 = (OOC_INT64)pb;
  i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 42923))+160);
  i2 = (OOC_INT64)decl;
  i1 = ADT_Dictionary__DictionaryDesc_HasKey((ADT_Dictionary__Dictionary)i1, (Object__Object)i2);
  if (i1) goto l3;
  i1 = (OOC_INT64)OOC_SSA__NewAddress(3, (OOC_SymbolTable__Declaration)i2);
  OOC_SSA__AppendInstr((OOC_SSA__ProcBlock)i0, (OOC_SSA__Instr)i1);
  OOC_SSA__ProcBlockDesc_SetAddress((OOC_SSA__ProcBlock)i0, (OOC_SymbolTable__Declaration)i2, (OOC_SSA__Address)i1);
  return (OOC_SSA__Address)i1;
  goto l4;
l3:
  i0 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 42967))+160);
  i0 = (OOC_INT64)ADT_Dictionary__DictionaryDesc_Get((ADT_Dictionary__Dictionary)i0, (Object__Object)i2);
  obj = (Object__Object)i0;
  return (OOC_SSA__Address)(_type_guard(i0, ((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 43006)))), &_td_OOC_SSA__AddressDesc, 43006));
l4:
  _failed_function(42662); return 0;
  ;
}

OOC_SSA__Address OOC_SSA__ProcBlockDesc_AddCopyParameter(OOC_SSA__ProcBlock pb, OOC_SymbolTable__VarDecl param, OOC_SSA__Result storeIn, OOC_SSA__Result length, OOC_SSA__Result size) {
  register OOC_INT64 i0,i1,i2;

  i0 = (OOC_INT64)param;
  i1 = (OOC_INT64)OOC_SSA__NewAddress(58, (OOC_SymbolTable__Declaration)i0);
  i2 = (OOC_INT64)storeIn;
  OOC_SSA__InstrDesc_AddOpnd((OOC_SSA__Instr)i1, (OOC_SSA__Result)i2, 2);
  i2 = (OOC_INT64)length;
  OOC_SSA__InstrDesc_AddOpnd((OOC_SSA__Instr)i1, (OOC_SSA__Result)i2, 1);
  i2 = (OOC_INT64)size;
  OOC_SSA__InstrDesc_AddOpnd((OOC_SSA__Instr)i1, (OOC_SSA__Result)i2, 1);
  i2 = (OOC_INT64)pb;
  OOC_SSA__AppendInstr((OOC_SSA__ProcBlock)i2, (OOC_SSA__Instr)i1);
  OOC_SSA__ProcBlockDesc_SetAddress((OOC_SSA__ProcBlock)i2, (OOC_SymbolTable__Declaration)i0, (OOC_SSA__Address)i1);
  return (OOC_SSA__Address)i1;
  ;
}

void OOC_SSA__ProcBlockDesc_SetMarkers(OOC_SSA__ProcBlock pb, OOC_SSA__Node newInfo, OOC_INT32 newMarker) {
  register OOC_INT64 i0,i1,i2,i3,i4;
  OOC_SSA__Instr instr;
  OOC_SSA__Result res;

  i0 = (OOC_INT64)pb;
  i0 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 44262))+24);
  instr = (OOC_SSA__Instr)i0;
  i1 = i0!=(OOC_INT64)0;
  if (!i1) goto l16;
  i2 = (OOC_INT64)newInfo;
  i3 = newMarker;
  
l3_loop:
  res = (OOC_SSA__Result)i0;
  if (!i1) goto l11;
  i1=i0;
l6_loop:
  *(OOC_INT64*)((_check_pointer(i1, 44360))+32) = i2;
  *(OOC_INT32*)((_check_pointer(i1, 44390))+40) = i3;
  i1 = (OOC_INT64)*(OOC_INT64*)(_check_pointer(i1, 44431));
  res = (OOC_SSA__Result)i1;
  i4 = i1!=(OOC_INT64)0;
  if (i4) goto l6_loop;
l11:
  i0 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 44475))+56);
  instr = (OOC_SSA__Instr)i0;
  i1 = i0!=(OOC_INT64)0;
  if (i1) goto l3_loop;
l16:
  return;
  ;
}

OOC_SSA__Instr OOC_SSA__ProcBlockDesc_AddSetInstr(OOC_SSA__ProcBlock pb, OOC_SSA__Instr get, OOC_SSA__Result sourceValue) {
  register OOC_INT64 i0,i1,i2,i3;
  OOC_SSA__Instr set;
  OOC_SSA__Opnd opnd;
  auto OOC_INT8 OOC_SSA__ProcBlockDesc_AddSetInstr_MapOpndClass(OOC_INT8 _class);
    
    OOC_INT8 OOC_SSA__ProcBlockDesc_AddSetInstr_MapOpndClass(OOC_INT8 _class) {
      register OOC_INT64 i0;

      i0 = _class;
      switch (i0) {
      case 4:
        return 6;
        goto l5;
      case 5:
        return 7;
        goto l5;
      default:
        return i0;
        goto l5;
      }
l5:
      _failed_function(44824); return 0;
      ;
    }


  i0 = (OOC_INT64)get;
  i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 45113))+16);
  i1 = *(OOC_INT8*)((_check_pointer(i1, 45120))+72);
  _assert((i1==12), 127, 45102);
  i1 = *(OOC_INT8*)((_check_pointer(i0, 45184))+9);
  i2 = (OOC_INT64)pb;
  i1 = (OOC_INT64)OOC_SSA__ProcBlockDesc_AddInstr((OOC_SSA__ProcBlock)i2, 13, i1);
  set = (OOC_SSA__Instr)i1;
  i0 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 45212))+48);
  opnd = (OOC_SSA__Opnd)i0;
  i2 = i0!=(OOC_INT64)0;
  if (!i2) goto l8;
l3_loop:
  i2 = *(OOC_INT8*)((_check_pointer(i0, 45299))+8);
  i2 = OOC_SSA__ProcBlockDesc_AddSetInstr_MapOpndClass(i2);
  i3 = (OOC_INT64)*(OOC_INT64*)(_check_pointer(i0, 45274));
  OOC_SSA__InstrDesc_AddOpnd((OOC_SSA__Instr)i1, (OOC_SSA__Result)i3, i2);
  i0 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 45328))+16);
  opnd = (OOC_SSA__Opnd)i0;
  i2 = i0!=(OOC_INT64)0;
  if (i2) goto l3_loop;
l8:
  i0 = (OOC_INT64)sourceValue;
  OOC_SSA__InstrDesc_AddOpnd((OOC_SSA__Instr)i1, (OOC_SSA__Result)i0, 8);
  return (OOC_SSA__Instr)i1;
  ;
}

OOC_SSA__Instr OOC_SSA__ProcBlockDesc_AddGetLengthInstr(OOC_SSA__ProcBlock pb, OOC_SSA__Instr get, OOC_INT32 dim, OOC_SymbolTable__Array dimType) {
  register OOC_INT64 i0,i1,i2,i3,i4;
  OOC_SSA__Instr dimension;
  OOC_SSA__DeclRef paramRef;
  OOC_SSA__Instr getLength;
  OOC_INT8 opcode;
  OOC_SSA__Opnd opnd;
  auto OOC_SSA__DeclRef OOC_SSA__ProcBlockDesc_AddGetLengthInstr_VarParamArray(OOC_SSA__Instr get);
  auto OOC_SSA__Instr OOC_SSA__ProcBlockDesc_AddGetLengthInstr_ExistingGetLength(OOC_SSA__Instr varParam, OOC_SSA__Instr dimension);
    
    OOC_SSA__DeclRef OOC_SSA__ProcBlockDesc_AddGetLengthInstr_VarParamArray(OOC_SSA__Instr get) {
      register OOC_INT64 i0,i1;
      OOC_SSA__Opnd opnd;

      i0 = (OOC_INT64)get;
      i0 = (OOC_INT64)OOC_SSA__InstrDesc_GetOpndClass((OOC_SSA__Instr)i0, 5);
      opnd = (OOC_SSA__Opnd)i0;
      i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 46197))+16);
      i1 = i1==(OOC_INT64)0;
      if (i1) goto l3;
      i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 46233))+16);
      i1 = *(OOC_INT8*)((_check_pointer(i1, 46243))+8);
      i1 = i1!=5;
      
      goto l5;
l3:
      i1=1u;
l5:
      if (i1) goto l7;
      i1=0u;
      goto l9;
l7:
      i1 = (OOC_INT64)*(OOC_INT64*)(_check_pointer(i0, 46292));
      i1 = OOC_TYPE_TEST(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i1, 46298)))), &_td_OOC_SSA__DeclRefDesc);
      
l9:
      if (i1) goto l11;
      i1=0u;
      goto l13;
l11:
      i1 = (OOC_INT64)*(OOC_INT64*)(_check_pointer(i0, 46325));
      i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer((_type_guard(i1, ((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i1, 46331)))), &_td_OOC_SSA__DeclRefDesc, 46331)), 46339))+80);
      i1 = *(OOC_UINT8*)((_check_pointer((_type_guard(i1, ((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i1, 46350)))), &_td_OOC_SymbolTable__VarDeclDesc, 46350)), 46358))+104);
      
l13:
      if (i1) goto l15;
      return (OOC_SSA__DeclRef)(OOC_INT64)0;
      goto l16;
l15:
      i0 = (OOC_INT64)*(OOC_INT64*)(_check_pointer(i0, 46396));
      return (OOC_SSA__DeclRef)(_type_guard(i0, ((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 46402)))), &_td_OOC_SSA__DeclRefDesc, 46402));
l16:
      _failed_function(45923); return 0;
      ;
    }

    
    OOC_SSA__Instr OOC_SSA__ProcBlockDesc_AddGetLengthInstr_ExistingGetLength(OOC_SSA__Instr varParam, OOC_SSA__Instr dimension) {
      register OOC_INT64 i0,i1,i2;
      OOC_SSA__Opnd use;

      i0 = (OOC_INT64)varParam;
      i1 = i0!=(OOC_INT64)0;
      if (!i1) goto l18;
      i0 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 46778))+24);
      use = (OOC_SSA__Opnd)i0;
      i1 = i0!=(OOC_INT64)0;
      if (!i1) goto l18;
      i1 = (OOC_INT64)dimension;
      
l5_loop:
      i2 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 46835))+24);
      i2 = *(OOC_INT8*)((_check_pointer(i2, 46842))+72);
      i2 = i2==57;
      if (i2) goto l8;
      i2=0u;
      goto l10;
l8:
      i2 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 46895))+24);
      i2 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i2, 46902))+48);
      i2 = (OOC_INT64)*(OOC_INT64*)(_check_pointer(i2, 46912));
      i2 = i2==i1;
      
l10:
      if (!i2) goto l12;
      i2 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 46958))+24);
      return (OOC_SSA__Instr)i2;
l12:
      i0 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 47002))+32);
      use = (OOC_SSA__Opnd)i0;
      i2 = i0!=(OOC_INT64)0;
      if (i2) goto l5_loop;
l18:
      return (OOC_SSA__Instr)(OOC_INT64)0;
      ;
    }


  i0 = (OOC_INT64)get;
  i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 47108))+16);
  i1 = *(OOC_INT8*)((_check_pointer(i1, 47115))+72);
  _assert((i1==12), 127, 47097);
  i1 = (OOC_INT64)dimType;
  i2 = *(OOC_UINT8*)((_check_pointer(i1, 47153))+72);
  if (i2) goto l3;
  i0 = *(OOC_INT32*)((_check_pointer(i1, 47940))+96);
  i1 = (OOC_INT64)pb;
  i0 = (OOC_INT64)OOC_SSA__ProcBlockDesc_GetConstInt((OOC_SSA__ProcBlock)i1, i0);
  return (OOC_SSA__Instr)i0;
  goto l24;
l3:
  i1 = dim;
  i2 = (OOC_INT64)pb;
  i1 = (OOC_INT64)OOC_SSA__ProcBlockDesc_GetConstInt((OOC_SSA__ProcBlock)i2, i1);
  dimension = (OOC_SSA__Instr)i1;
  i0 = (OOC_INT64)OOC_SSA__ProcBlockDesc_AddGetLengthInstr_VarParamArray((OOC_SSA__Instr)i0);
  paramRef = (OOC_SSA__DeclRef)i0;
  i1 = (OOC_INT64)dimension;
  i2 = (OOC_INT64)OOC_SSA__ProcBlockDesc_AddGetLengthInstr_ExistingGetLength((OOC_SSA__Instr)i0, (OOC_SSA__Instr)i1);
  i3 = i2==(OOC_INT64)0;
  if (i3) goto l6;
  i0=i2;
  goto l23;
l6:
  i0 = i0!=(OOC_INT64)0;
  if (i0) goto l9;
  opcode = 56;
  i0=56;
  goto l10;
l9:
  opcode = 57;
  i0=57;
l10:
  i2 = (OOC_INT64)pb;
  i0 = (OOC_INT64)OOC_SSA__ProcBlockDesc_AddInstr((OOC_SSA__ProcBlock)i2, i0, 3);
  getLength = (OOC_SSA__Instr)i0;
  i2 = (OOC_INT64)get;
  i2 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i2, 47569))+48);
  opnd = (OOC_SSA__Opnd)i2;
  i3 = i2!=(OOC_INT64)0;
  if (!i3) goto l23;
l13_loop:
  i3 = *(OOC_INT8*)((_check_pointer(i2, 47629))+8);
  i3 = i3==2;
  if (i3) goto l16;
  i3 = *(OOC_INT8*)((_check_pointer(i2, 47787))+8);
  i4 = (OOC_INT64)*(OOC_INT64*)(_check_pointer(i2, 47776));
  OOC_SSA__InstrDesc_AddOpnd((OOC_SSA__Instr)i0, (OOC_SSA__Result)i4, i3);
  goto l17;
l16:
  OOC_SSA__InstrDesc_AddOpnd((OOC_SSA__Instr)i0, (OOC_SSA__Result)i1, 15);
l17:
  i2 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i2, 47834))+16);
  opnd = (OOC_SSA__Opnd)i2;
  i3 = i2!=(OOC_INT64)0;
  if (i3) goto l13_loop;
l23:
  return (OOC_SSA__Instr)i0;
l24:
  _failed_function(45464); return 0;
  ;
}

OOC_SSA__Instr OOC_SSA__ProcBlockDesc_SetLoopContext(OOC_SSA__ProcBlock pb, OOC_SSA__Instr loopContext) {
  register OOC_INT64 i0,i1,i2;
  OOC_SSA__Instr old;

  i0 = (OOC_INT64)pb;
  i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 48100))+8);
  old = (OOC_SSA__Instr)i1;
  i2 = (OOC_INT64)loopContext;
  *(OOC_INT64*)((_check_pointer(i0, 48121))+8) = i2;
  return (OOC_SSA__Instr)i1;
  ;
}

OOC_SSA__Instr OOC_SSA__ProcBlockDesc_SetTryContext(OOC_SSA__ProcBlock pb, OOC_SSA__Instr tryContext) {
  register OOC_INT64 i0,i1,i2;
  OOC_SSA__Instr old;

  i0 = (OOC_INT64)pb;
  i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 48301))+16);
  old = (OOC_SSA__Instr)i1;
  i2 = (OOC_INT64)tryContext;
  *(OOC_INT64*)((_check_pointer(i0, 48321))+16) = i2;
  return (OOC_SSA__Instr)i1;
  ;
}

OOC_SSA__Result OOC_SSA__ProcBlockDesc_FixSubclass(OOC_SSA__ProcBlock pb, OOC_SSA__Result arg, OOC_INT8 subclass) {
  register OOC_INT64 i0,i1,i2;

  i0 = (OOC_INT64)arg;
  i1 = *(OOC_INT8*)((_check_pointer(i0, 48727))+9);
  i2 = subclass;
  i1 = i1!=i2;
  if (i1) goto l3;
  return (OOC_SSA__Result)i0;
  goto l12;
l3:
  i1 = OOC_TYPE_TEST(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 48768)))), &_td_OOC_SSA__ConstDesc);
  if (i1) goto l6;
  i1=0u;
  goto l8;
l6:
  i1 = *(OOC_INT8*)((_check_pointer(i0, 48794))+9);
  i1 = (i1<10)==(i2<10);
  
l8:
  if (i1) goto l10;
  i1 = (OOC_INT64)pb;
  i1 = (OOC_INT64)OOC_SSA__ProcBlockDesc_AddInstr((OOC_SSA__ProcBlock)i1, 42, i2);
  OOC_SSA__InstrDesc_AddOpnd((OOC_SSA__Instr)i1, (OOC_SSA__Result)i0, 1);
  return (OOC_SSA__Result)i1;
  goto l12;
l10:
  i0 = (OOC_INT64)*(OOC_INT64*)((_check_pointer((_type_guard(i0, ((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 48891)))), &_td_OOC_SSA__ConstDesc, 48891)), 48897))+80);
  i1 = (OOC_INT64)pb;
  i0 = (OOC_INT64)OOC_SSA__ProcBlockDesc_GetConst((OOC_SSA__ProcBlock)i1, (Object_Boxed__Object)i0, i2, (OOC_SymbolTable__Type)(OOC_INT64)0);
  return (OOC_SSA__Result)i0;
l12:
  _failed_function(48412); return 0;
  ;
}

OOC_SSA__Instr OOC_SSA__ProcBlockDesc_FixSubclassInstr(OOC_SSA__ProcBlock pb, OOC_SSA__Instr instr, OOC_INT8 subclass) {
  register OOC_INT64 i0,i1,i2;
  OOC_SSA__Result res;

  i0 = (OOC_INT64)pb;
  i1 = (OOC_INT64)instr;
  i2 = subclass;
  i0 = (OOC_INT64)OOC_SSA__ProcBlockDesc_FixSubclass((OOC_SSA__ProcBlock)i0, (OOC_SSA__Result)i1, i2);
  res = (OOC_SSA__Result)i0;
  return (OOC_SSA__Instr)(_type_guard(i0, ((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 49350)))), &_td_OOC_SSA__InstrDesc, 49350));
  ;
}

static void OOC_SSA__Add(OOC_SSA__Instr *list, OOC_SSA__Instr instr) {
  register OOC_INT64 i0,i1,i2;

  i0 = (OOC_INT64)instr;
  *(OOC_INT64*)((_check_pointer(i0, 49448))+64) = (OOC_INT64)0;
  i1 = (OOC_INT64)*list;
  *(OOC_INT64*)((_check_pointer(i0, 49477))+56) = i1;
  i1 = (OOC_INT64)*list;
  i2 = i1!=(OOC_INT64)0;
  if (!i2) goto l4;
  *(OOC_INT64*)((_check_pointer(i1, 49533))+64) = i0;
l4:
  *list = (OOC_SSA__Instr)i0;
  return;
  ;
}

static void OOC_SSA__Remove(OOC_SSA__Instr *list, OOC_SSA__Instr instr) {
  register OOC_INT64 i0,i1,i2;

  i0 = (OOC_INT64)instr;
  i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 49664))+64);
  i1 = i1==(OOC_INT64)0;
  if (i1) goto l3;
  i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 49739))+64);
  i2 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 49770))+56);
  *(OOC_INT64*)((_check_pointer(i1, 49750))+56) = i2;
  goto l4;
l3:
  i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 49707))+56);
  *list = (OOC_SSA__Instr)i1;
l4:
  i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 49804))+56);
  i1 = i1!=(OOC_INT64)0;
  if (!i1) goto l7;
  i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 49839))+56);
  i0 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 49870))+64);
  *(OOC_INT64*)((_check_pointer(i1, 49850))+64) = i0;
l7:
  return;
  ;
}

OOC_CHAR8 OOC_SSA__ProcBlockDesc_TopSort(OOC_SSA__ProcBlock pb) {
  register OOC_INT64 i0,i1,i2,i3,i4;
  OOC_SSA__Instr ready;
  OOC_SSA__Instr waiting;
  OOC_SSA__Instr instr;
  OOC_SSA__Instr next;
  OOC_INT32 opndCount;
  OOC_SSA__Result res;
  OOC_SSA__Opnd use;

  ready = (OOC_SSA__Instr)(OOC_INT64)0;
  waiting = (OOC_SSA__Instr)(OOC_INT64)0;
  i0 = (OOC_INT64)pb;
  i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 50281))+24);
  instr = (OOC_SSA__Instr)i1;
  i2 = i1!=(OOC_INT64)0;
  if (!i2) goto l12;
l3_loop:
  i2 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i1, 50340))+56);
  next = (OOC_SSA__Instr)i2;
  i3 = OOC_SSA__InstrDesc_SizeOpndList((OOC_SSA__Instr)i1);
  opndCount = i3;
  *(OOC_INT32*)((_check_pointer(i1, 50407))+40) = i3;
  i3 = i3==0;
  if (i3) goto l6;
  OOC_SSA__Add((void*)(OOC_INT64)&waiting, (OOC_SSA__Instr)i1);
  goto l7;
l6:
  OOC_SSA__Add((void*)(OOC_INT64)&ready, (OOC_SSA__Instr)i1);
l7:
  instr = (OOC_SSA__Instr)i2;
  i1 = i2!=(OOC_INT64)0;
  if (!i1) goto l12;
  i1=i2;
  goto l3_loop;
l12:
  *(OOC_INT64*)((_check_pointer(i0, 50574))+24) = (OOC_INT64)0;
  *(OOC_INT64*)((_check_pointer(i0, 50600))+32) = (OOC_INT64)0;
  i1 = (OOC_INT64)ready;
  i1 = i1!=(OOC_INT64)0;
  if (!i1) goto l39;
l15_loop:
  i1 = (OOC_INT64)ready;
  instr = (OOC_SSA__Instr)i1;
  OOC_SSA__Remove((void*)(OOC_INT64)&ready, (OOC_SSA__Instr)i1);
  OOC_SSA__AppendInstr((OOC_SSA__ProcBlock)i0, (OOC_SSA__Instr)i1);
  res = (OOC_SSA__Result)i1;
  i2 = i1!=(OOC_INT64)0;
  if (!i2) goto l34;
l18_loop:
  i2 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i1, 50907))+24);
  use = (OOC_SSA__Opnd)i2;
  i3 = i2!=(OOC_INT64)0;
  if (!i3) goto l29;
l21_loop:
  i3 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i2, 50965))+24);
  i4 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i2, 50965))+24);
  i4 = *(OOC_INT32*)((_check_pointer(i4, 50972))+40);
  *(OOC_INT32*)((_check_pointer(i3, 50972))+40) = (i4-1);
  i3 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i2, 51000))+24);
  i3 = *(OOC_INT32*)((_check_pointer(i3, 51007))+40);
  i3 = i3==0;
  if (!i3) goto l24;
  i3 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i2, 51058))+24);
  OOC_SSA__Remove((void*)(OOC_INT64)&waiting, (OOC_SSA__Instr)i3);
  i3 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i2, 51095))+24);
  OOC_SSA__Add((void*)(OOC_INT64)&ready, (OOC_SSA__Instr)i3);
l24:
  i2 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i2, 51139))+32);
  use = (OOC_SSA__Opnd)i2;
  i3 = i2!=(OOC_INT64)0;
  if (i3) goto l21_loop;
l29:
  i1 = (OOC_INT64)*(OOC_INT64*)(_check_pointer(i1, 51180));
  res = (OOC_SSA__Result)i1;
  i2 = i1!=(OOC_INT64)0;
  if (i2) goto l18_loop;
l34:
  i1 = (OOC_INT64)ready;
  i1 = i1!=(OOC_INT64)0;
  if (i1) goto l15_loop;
l39:
  i0 = (OOC_INT64)waiting;
  return (i0==(OOC_INT64)0);
  ;
}

void OOC_SSA__ProcBlockDesc_Reverse(OOC_SSA__ProcBlock pb) {
  register OOC_INT64 i0,i1,i2;
  OOC_SSA__Instr newList;
  OOC_SSA__Instr instr;
  OOC_SSA__Instr next;

  newList = (OOC_SSA__Instr)(OOC_INT64)0;
  i0 = (OOC_INT64)pb;
  i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 51438))+24);
  instr = (OOC_SSA__Instr)i1;
  i2 = i1!=(OOC_INT64)0;
  if (!i2) goto l8;
l3_loop:
  i2 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i1, 51497))+56);
  next = (OOC_SSA__Instr)i2;
  OOC_SSA__Add((void*)(OOC_INT64)&newList, (OOC_SSA__Instr)i1);
  instr = (OOC_SSA__Instr)i2;
  i1 = i2!=(OOC_INT64)0;
  if (!i1) goto l8;
  i1=i2;
  goto l3_loop;
l8:
  i1 = (OOC_INT64)newList;
  *(OOC_INT64*)((_check_pointer(i0, 51573))+24) = i1;
  return;
  ;
}

OOC_SSA__Instr OOC_SSA__ProcBlockDesc_GetEnter(OOC_SSA__ProcBlock pb) {
  register OOC_INT64 i0,i1;
  OOC_SSA__Instr instr;

  i0 = (OOC_INT64)pb;
  i0 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 51706))+24);
  instr = (OOC_SSA__Instr)i0;
  i1 = i0!=(OOC_INT64)0;
  if (i1) goto l3;
  i1=0u;
  goto l5;
l3:
  i1 = *(OOC_INT8*)((_check_pointer(i0, 51751))+72);
  i1 = i1!=4;
  
l5:
  if (!i1) goto l17;
l8_loop:
  i0 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 51799))+56);
  instr = (OOC_SSA__Instr)i0;
  i1 = i0!=(OOC_INT64)0;
  if (i1) goto l11;
  i1=0u;
  goto l13;
l11:
  i1 = *(OOC_INT8*)((_check_pointer(i0, 51751))+72);
  i1 = i1!=4;
  
l13:
  if (i1) goto l8_loop;
l17:
  return (OOC_SSA__Instr)i0;
  ;
}

void OOC_SSA__ProcBlockDesc_Destroy(OOC_SSA__ProcBlock pb) {
  register OOC_INT64 i0,i1,i2,i3,i4,i5;
  OOC_SSA__Instr instr;
  OOC_SSA__Instr nextInstr;
  OOC_SSA__Opnd opnd;
  OOC_SSA__Opnd nextOpnd;
  OOC_SSA__Result res;
  OOC_SSA__Result nextResult;
  OOC_INT32 i;

  i0 = (OOC_INT64)pb;
  i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 52137))+24);
  instr = (OOC_SSA__Instr)i1;
  i2 = i1!=(OOC_INT64)0;
  if (!i2) goto l27;
l3_loop:
  i3 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i1, 52200))+56);
  nextInstr = (OOC_SSA__Instr)i3;
  i4 = *(OOC_INT8*)((_check_pointer(i1, 52227))+72);
  i4 = i4!=81;
  if (!i4) goto l22;
  i4 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i1, 52363))+48);
  opnd = (OOC_SSA__Opnd)i4;
  i5 = i4!=(OOC_INT64)0;
  if (!i5) goto l13;
l8_loop:
  i5 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i4, 52430))+16);
  nextOpnd = (OOC_SSA__Opnd)i5;
  *(OOC_INT64*)(_check_pointer(i4, 52455)) = (OOC_INT64)0;
  *(OOC_INT64*)((_check_pointer(i4, 52482))+16) = (OOC_INT64)0;
  *(OOC_INT64*)((_check_pointer(i4, 52514))+24) = (OOC_INT64)0;
  *(OOC_INT64*)((_check_pointer(i4, 52543))+32) = (OOC_INT64)0;
  opnd = (OOC_SSA__Opnd)i5;
  i4 = i5!=(OOC_INT64)0;
  if (!i4) goto l13;
  i4=i5;
  goto l8_loop;
l13:
  res = (OOC_SSA__Result)i1;
  if (!i2) goto l21;
  i2=i1;
l16_loop:
  i4 = (OOC_INT64)*(OOC_INT64*)(_check_pointer(i2, 52688));
  nextResult = (OOC_SSA__Result)i4;
  *(OOC_INT64*)(_check_pointer(i2, 52714)) = (OOC_INT64)0;
  *(OOC_INT64*)((_check_pointer(i2, 52747))+16) = (OOC_INT64)0;
  *(OOC_INT64*)((_check_pointer(i2, 52775))+24) = (OOC_INT64)0;
  *(OOC_INT64*)((_check_pointer(i2, 52805))+32) = (OOC_INT64)0;
  *(OOC_INT32*)((_check_pointer(i2, 52832))+40) = 0;
  res = (OOC_SSA__Result)i4;
  i2 = i4!=(OOC_INT64)0;
  if (!i2) goto l21;
  i2=i4;
  goto l16_loop;
l21:
  *(OOC_INT64*)((_check_pointer(i1, 52910))+48) = (OOC_INT64)0;
  *(OOC_INT64*)((_check_pointer(i1, 52941))+56) = (OOC_INT64)0;
  *(OOC_INT64*)((_check_pointer(i1, 52973))+64) = (OOC_INT64)0;
  *(OOC_INT32*)((_check_pointer(i1, 53005))+76) = 0;
l22:
  instr = (OOC_SSA__Instr)i3;
  i1 = i3!=(OOC_INT64)0;
  if (!i1) goto l27;
  i2=i1;i1=i3;
  goto l3_loop;
l27:
  *(OOC_INT64*)(_check_pointer(i0, 53073)) = (OOC_INT64)0;
  *(OOC_INT64*)((_check_pointer(i0, 53101))+8) = (OOC_INT64)0;
  *(OOC_INT64*)((_check_pointer(i0, 53128))+24) = (OOC_INT64)0;
  *(OOC_INT64*)((_check_pointer(i0, 53153))+32) = (OOC_INT64)0;
  *(OOC_INT64*)((_check_pointer(i0, 53178))+40) = (OOC_INT64)0;
  i = 0;
  i1=0;
l28_loop:
  i2 = (OOC_INT64)*(OOC_INT64*)(((_check_pointer(i0, 53248))+56)+(_check_index(i1, 12, OOC_UINT32, 53257))*8);
  i2 = i2!=(OOC_INT64)0;
  if (!i2) goto l31;
  i2 = (OOC_INT64)*(OOC_INT64*)(((_check_pointer(i0, 53283))+56)+(_check_index(i1, 12, OOC_UINT32, 53292))*8);
  ADT_Dictionary__DictionaryDesc_Destroy((ADT_Dictionary__Dictionary)i2);
  *(OOC_INT64*)(((_check_pointer(i0, 53309))+56)+(_check_index(i1, 12, OOC_UINT32, 53318))*8) = (OOC_INT64)0;
l31:
  i1 = i1+1;
  i = i1;
  i2 = i1<=11;
  if (i2) goto l28_loop;
l35:
  i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 53360))+152);
  i1 = i1!=(OOC_INT64)0;
  if (!i1) goto l38;
  i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 53388))+152);
  ADT_Dictionary__DictionaryDesc_Destroy((ADT_Dictionary__Dictionary)i1);
  *(OOC_INT64*)((_check_pointer(i0, 53409))+152) = (OOC_INT64)0;
l38:
  i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 53444))+160);
  i1 = i1!=(OOC_INT64)0;
  if (!i1) goto l41;
  i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 53472))+160);
  ADT_Dictionary__DictionaryDesc_Destroy((ADT_Dictionary__Dictionary)i1);
  *(OOC_INT64*)((_check_pointer(i0, 53493))+160) = (OOC_INT64)0;
l41:
  return;
  ;
}

void OOC_OOC_SSA_init(void) {
  register OOC_INT64 i0,i1;

  i0 = (OOC_INT64)Object_BigInt__zero;
  i0 = (OOC_INT64)Object_BigInt__BigIntDesc_Add((Object_BigInt__BigInt)i0, (Object_BigInt__BigInt)i0);
  i1 = (OOC_INT64)Object_BigInt__zero;
  OOC_SSA__nil = (Object_BigInt__BigInt)i0;
  _assert((i0!=i1), 127, 53610);
  return;
  ;
}

/* --- */
