+AsmBCO asm_BCO_takeMVar ( void )
+{
+ AsmBCO kase, casecont, take;
+
+ take = asmBeginBCO(0 /*NIL*/);
+ emit_i_VAR(take,0);
+ emiti_8(take,i_PRIMOP2,i_takeMVar);
+ emit_i_VAR(take,3);
+ emit_i_VAR(take,1);
+ emit_i_VAR(take,4);
+ emit_i_SLIDE(take,3,4);
+ emiti_(take,i_ENTER);
+ incSp(take,20);
+ asmEndBCO(take);
+
+ casecont = asmBeginBCO(0 /*NIL*/);
+ emiti_(casecont,i_UNPACK);
+ emit_i_VAR(casecont,4);
+ emit_i_VAR(casecont,4);
+ emit_i_VAR(casecont,2);
+ emit_i_CONST(casecont,casecont->object.ptrs.len);
+ asmPtr(casecont,&(take->object));
+ emit_i_SLIDE(casecont,4,5);
+ emiti_(casecont,i_ENTER);
+ incSp(casecont,20);
+ asmEndBCO(casecont);
+
+ kase = asmBeginBCO(0 /*NIL*/);
+ emiti_8(kase,i_ARG_CHECK,3);
+ emit_i_RETADDR(kase,kase->object.ptrs.len);
+ asmPtr(kase,&(casecont->object));
+ emit_i_VAR(kase,2);
+ emiti_(kase,i_ENTER);
+ incSp(kase,20);
+ asmEndBCO(kase);
+
+ return kase;
+}
+
+