array<integer> A_nextFree492
integer A_firstFree794
integer A_maxIndex250
array<integer> A_typeId563


integer A_firstFree794 = 0
integer A_maxIndex250 = 0


function initGlobals803() { 
    A_firstFree_794 = 0;
    A_maxIndex_250 = 0;
}


function main912() { 
    initGlobals803();
    init_test143();
}


function config993() { 
}


function init_test143() { 
    dispatch_A_test_A_foo201(new_A745());
}


function A_foo741(integer this199) { 
}


function A_init146(integer this171) { 
}


function new_A745() returns integer { 
    local integer this158
    this_158 = alloc_A100();
    construct_A213(this_158);
    return this_158;
}


function construct_A213(integer this133) { 
    A_init146(this_133);
}


function alloc_A100() returns integer { 
    local integer this193
    if (A_firstFree_794 == 0) {
        if (A_maxIndex_250 < 32768) {
            A_maxIndex_250 = (A_maxIndex_250 + 1);
            this_193 = A_maxIndex_250;
            A_typeId_563[this_193] = 1;
        } else {
            error187("Out of memory: Could not create A.");
            this_193 = 0;
        };
    } else {
        A_firstFree_794 = (A_firstFree_794 - 1);
        this_193 = A_nextFree_492[A_firstFree_794];
        A_typeId_563[this_193] = 1;
    };
    return this_193;
}


function error187(string msg579) { 
    $debugPrint116((msg_579 + ("
" + #getStackTrace())));
}


function dispatch_A_test_A_foo201(integer this186) { 
    if (A_typeId_563[this_186] == 0) {
        if (this_186 == 0) {
            error187("Nullpointer exception when calling A.foo");
        } else {
            error187("Called A.foo on invalid object.");
        };
    } else {
    };
    A_foo741(this_186);
}