integer test_x290 array B_nextFree175 integer B_firstFree163 integer B_maxIndex969 array B_typeId664 integer wurst_stack_depth173 array wurst_stack132 integer test_x290 = 2 integer B_firstFree163 = 0 integer B_maxIndex969 = 0 integer wurst_stack_depth173 = 0 function initGlobals211() { } function main201() { initGlobals211(); init_test205("when calling init_test in ondestroy_dynamicdispatch5, line 1"); } function config870() { } function init_test205(string __wurst_stackPos257) { local integer a158 wurst_stack_132[wurst_stack_depth_173] = __wurst_stackPos_257; wurst_stack_depth_173 = (wurst_stack_depth_173 + 1); test_x_290 = 2; a_158 = new_X119("when calling new_X in ondestroy_dynamicdispatch5, line 12"); wurst_stack_132[wurst_stack_depth_173] = "when calling dispatch_X_destroyX in ondestroy_dynamicdispatch5, line 13"; wurst_stack_depth_173 = (wurst_stack_depth_173 + 1); if (B_typeId_664[a_158] == 0) { if (a_158 == 0) { error105("Nullpointer exception when calling X.X", "when calling error in ondestroy_dynamicdispatch5, line 10"); } else { error105("Called X.X on invalid object.", "when calling error in ondestroy_dynamicdispatch5, line 10"); }; } else { }; destroyX505(a_158, "when calling destroyX in ondestroy_dynamicdispatch5, line 10"); wurst_stack_depth_173 = (wurst_stack_depth_173 - 1); if (test_x_290 == 6) { testSuccess903(); } else { }; wurst_stack_depth_173 = (wurst_stack_depth_173 - 1); } IS_NATIVE function testSuccess903() { } function destroyX505(integer this826, string __wurst_stackPos390) { wurst_stack_132[wurst_stack_depth_173] = __wurst_stackPos_390; wurst_stack_depth_173 = (wurst_stack_depth_173 + 1); test_x_290 = ((test_x_290 + 1) * 2); wurst_stack_132[wurst_stack_depth_173] = "when calling dealloc_X in ondestroy_dynamicdispatch5, line 10"; wurst_stack_depth_173 = (wurst_stack_depth_173 + 1); if (B_typeId_664[this_826] == 0) { error105("Double free: object of type X", "when calling error in ondestroy_dynamicdispatch5, line 10"); } else { B_nextFree_175[B_firstFree_163] = this_826; B_firstFree_163 = (B_firstFree_163 + 1); B_typeId_664[this_826] = 0; }; wurst_stack_depth_173 = ((wurst_stack_depth_173 - 1) - 1); } function new_X119(string __wurst_stackPos135) returns integer { local integer this920 wurst_stack_132[wurst_stack_depth_173] = __wurst_stackPos_135; wurst_stack_depth_173 = (wurst_stack_depth_173 + 1); wurst_stack_132[wurst_stack_depth_173] = "when calling alloc_X in ondestroy_dynamicdispatch5, line 10"; wurst_stack_depth_173 = (wurst_stack_depth_173 + 1); if (B_firstFree_163 == 0) { if (B_maxIndex_969 < 32768) { B_maxIndex_969 = (B_maxIndex_969 + 1); this_920 = B_maxIndex_969; B_typeId_664[this_920] = 3; } else { error105("Out of memory: Could not create X.", "when calling error in ondestroy_dynamicdispatch5, line 10"); this_920 = 0; }; } else { B_firstFree_163 = (B_firstFree_163 - 1); this_920 = B_nextFree_175[B_firstFree_163]; B_typeId_664[this_920] = 3; }; wurst_stack_depth_173 = ((wurst_stack_depth_173 - 1) - 1); return this_920; } function error105(string msg140, string __wurst_stackPos103) { local integer stacktraceIndex437 local integer stacktraceLimit375 wurst_stack_132[wurst_stack_depth_173] = __wurst_stackPos_103; wurst_stack_depth_173 = (wurst_stack_depth_173 + 1); __wurst_stackPos_103 = ""; stacktraceIndex_437 = wurst_stack_depth_173; stacktraceLimit_375 = 0; loop { stacktraceIndex_437 = (stacktraceIndex_437 - 1); stacktraceLimit_375 = (stacktraceLimit_375 + 1); exitwhen ((stacktraceLimit_375 > 20) or (stacktraceIndex_437 < 0)); __wurst_stackPos_103 = (__wurst_stackPos_103 + (" " + wurst_stack_132[stacktraceIndex_437])); }; $debugPrint116((msg_140 + (" " + __wurst_stackPos_103))); wurst_stack_depth_173 = (wurst_stack_depth_173 - 1); }