0 pushfalse ; положили на стек false; стек: false 1 pushtrue ; положили на стек true; стек: false, true 2 setlocal2 ; положили в регистр 2 значение со стека: local2 = true; стек: false 6 jump LOC_1: ; перешли в LOC_1 8 inclocal 2 9 pop 11 declocal 2 12 greaterequals 13 not 15 kill 2 LOC_1: ; "продолжаем разговор" 16 setlocal3 ; положили в регистр 3 значение со стека: local3 = false; стек: пусто 17 getlocal0 ; положили в стек значение регистра 0, в котором всегда this; стек: this 18 pushscope ; переложили это значение со стека переменных в стек объектов; стек: пусто 20 pushbyte 11 ; положили в стек число 11; стек: 11 21 getlocal1 ; положили в стек значение регистра 1, в котором находится первый и единственный аргумент функции - тот самый seed; стек: 11, seed 22 multiply ; взяли со стека два значения, перемножили их и положили результат в стек; стек: 11 * seed 23 getlocal3 ; положили в стек значение регистра 3 (local3); стек: 11 * seed, false 27 iftrue LOC_2: ; взяли со стека значение, сравнили его с true, и перешли в LOC_2, если они равны (а они не равны - см. инструкцию 16); стек: 11 * seed 29 pushint 1 ; положили в стек значение константы с индексом 1 из пула int-констант - сейчас это 0x0095adb0; стек: 11 * seed, 0x0095adb0 30 modulo ; взяли из стека два значения и положили в него остаток от деления первого значения на второе; стек: (11 * seed) % (0x0095adb0) LOC_2: 31 returnvalue ; вернули из функции значение со стека - 11 * seed % 0x0095adb0 32 returnvoid |