array<integer> C_nextFree116
integer C_firstFree147
integer C_maxIndex119
array<integer> C_typeId859
integer wurst_stack_depth156
array<string> wurst_stack188


integer C_firstFree147 = 0
integer C_maxIndex119 = 0
integer wurst_stack_depth156 = 0


function initGlobals204() { 
}


function main157() { 
    initGlobals204();
    wurst_stack_188[wurst_stack_depth_156] = "when calling init_test in modules_call_indirect, line 1";
    wurst_stack_depth_156 = (wurst_stack_depth_156 + 1);
    new_C737("when calling new_C in modules_call_indirect, line 13");
    wurst_stack_depth_156 = (wurst_stack_depth_156 - 1);
}


function config944() { 
}


IS_NATIVE function testSuccess125() { 
}


function new_C737(string __wurst_stackPos183) returns integer { 
    local integer this253
    wurst_stack_188[wurst_stack_depth_156] = __wurst_stackPos_183;
    wurst_stack_depth_156 = (wurst_stack_depth_156 + 1);
    wurst_stack_188[wurst_stack_depth_156] = "when calling alloc_C in modules_call_indirect, line 10";
    wurst_stack_depth_156 = (wurst_stack_depth_156 + 1);
    if (C_firstFree_147 == 0) {
        if (C_maxIndex_119 < 32768) {
            C_maxIndex_119 = (C_maxIndex_119 + 1);
            this_253 = C_maxIndex_119;
            C_typeId_859[this_253] = 1;
        } else {
            error910("Out of memory: Could not create C.", "when calling error in modules_call_indirect, line 8");
            this_253 = 0;
        };
    } else {
        C_firstFree_147 = (C_firstFree_147 - 1);
        this_253 = C_nextFree_116[C_firstFree_147];
        C_typeId_859[this_253] = 1;
    };
    wurst_stack_depth_156 = (wurst_stack_depth_156 - 1);
    wurst_stack_188[wurst_stack_depth_156] = "when calling construct_C in modules_call_indirect, line 10";
    wurst_stack_depth_156 = (wurst_stack_depth_156 + 1);
    dispatch_C_test_C_A_foo156(this_253, "when calling foo in modules_call_indirect, line 11");
    wurst_stack_depth_156 = ((wurst_stack_depth_156 - 1) - 1);
    return this_253;
}


function error910(string msg221, string __wurst_stackPos203) { 
    local integer stacktraceIndex680
    local integer stacktraceLimit114
    wurst_stack_188[wurst_stack_depth_156] = __wurst_stackPos_203;
    wurst_stack_depth_156 = (wurst_stack_depth_156 + 1);
    __wurst_stackPos_203 = "";
    stacktraceIndex_680 = wurst_stack_depth_156;
    stacktraceLimit_114 = 0;
    loop {
        stacktraceIndex_680 = (stacktraceIndex_680 - 1);
        stacktraceLimit_114 = (stacktraceLimit_114 + 1);
        exitwhen ((stacktraceLimit_114 > 20) or (stacktraceIndex_680 < 0));
        __wurst_stackPos_203 = (__wurst_stackPos_203 + ("
   " + wurst_stack_188[stacktraceIndex_680]));
    };
    $debugPrint189((msg_221 + ("
" + __wurst_stackPos_203)));
    wurst_stack_depth_156 = (wurst_stack_depth_156 - 1);
}


function dispatch_C_test_C_A_foo156(integer this200, string __wurst_stackPos394) { 
    wurst_stack_188[wurst_stack_depth_156] = __wurst_stackPos_394;
    wurst_stack_depth_156 = (wurst_stack_depth_156 + 1);
    if (C_typeId_859[this_200] == 0) {
        if (this_200 == 0) {
            error910("Nullpointer exception when calling C.foo", "when calling error in modules_call_indirect, line 4");
        } else {
            error910("Called C.foo on invalid object.", "when calling error in modules_call_indirect, line 4");
        };
    } else {
    };
    wurst_stack_188[wurst_stack_depth_156] = "when calling foo in modules_call_indirect, line 4";
    wurst_stack_depth_156 = (wurst_stack_depth_156 + 1);
    wurst_stack_188[wurst_stack_depth_156] = "when calling bar in modules_call_indirect, line 5";
    wurst_stack_depth_156 = (wurst_stack_depth_156 + 1);
    if (C_typeId_859[this_200] == 0) {
        if (this_200 == 0) {
            error910("Nullpointer exception when calling C.bar", "when calling error in modules_call_indirect, line 6");
        } else {
            error910("Called C.bar on invalid object.", "when calling error in modules_call_indirect, line 6");
        };
    } else {
    };
    testSuccess125();
    wurst_stack_depth_156 = (((wurst_stack_depth_156 - 1) - 1) - 1);
}