First - it's hard to understand decompiled code :)
this
points to the current Class that is being used - for example if you have member variable with the same name as the param passed to a function, this.param will point to the member variable.
And yes, Classes can be dynamically modified if the class is marked as dynamic (check here: http://help.adobe.com/en_US/ActionScript/3.0_ProgrammingAS3/WS5b3ccc516d4fbf351e63e3d118a9b90204-7f89.html). Every unit is an Object
itself, so it's like adding properties to an object.
So in your case, it is possible that this particular key (this.CbSlotkey()
) is dynamically defined, exactly like other properties are being defined there (_loc_10[_loc_16] = _loc_17[_loc_16];
)
For example, this is a valid AS3:
this['test' + 'Func'] = function() {
trace ('test');
}
this.testFunc(); // traces test
Unfortunately, this means that there's not a lot options to understand what's going on. The best choice is to use debugger and track all those variables and the result of the actions. You may first try to give some proper names to all those messy variables in the code.
Edit: I forgot to mention, that if you call a dynamic non-existent method withing Flash, it will throw a runtime exception. If you try to call a method of non dynamic scope that does not exists, it will throw a compilation error.