#include "machine.h"

int Game___init__() { 
    pushp(FP);
    FP = SP;
    R1 = (Word)(*((WPtr)(((WPtr)(FP)+1))));
    *((WPtr)(((WPtr)(R1)+2))) = (Word)(*((WPtr)(((WPtr)(FP)+2))));
    R1 = (Word)(*((WPtr)(((WPtr)(FP)+1))));
    *((WPtr)(((WPtr)(R1)+3))) = (Word)((Word)(0));
_T10:
    popp(FP);
    SP += 2;
    return 0;
} 

int Game_place() { 
    pushp(FP);
    FP = SP;
    pushw(R1);
    pushw(R2);
    R1 = (Word)(*((WPtr)(((WPtr)(FP)+1))));
    R1 = (Word)(((WPtr)(*((WPtr)(((WPtr)(R1)+2))))+2));
    R1 = (Word)(((WPtr)(((WPtr)R1)[*((WPtr)(((WPtr)(FP)+2)))])+2));
    R2 = (Word)(*((WPtr)(((WPtr)(FP)+1))));
    ((WPtr)R1)[*((WPtr)(((WPtr)(FP)+3)))] = (Word)(*((WPtr)(((WPtr)(R2)+3))));
_T11:
    popw(R2);
    popw(R1);
    popp(FP);
    SP += 3;
    return 0;
} 

int Game_put() { 
    pushp(FP);
    FP = SP;
    SP -= 8;
Word _T13[]={
    (Word)5,
    (Word)5,
    (Word)45,
    (Word)45,
    (Word)45,
    (Word)45,
    (Word)45,
    0};
    pushw((Word)(_T13));
    put_str();
    R1 = (Word)(*((WPtr)(((WPtr)(FP)+1))));
    *((WPtr)(((WPtr)(FP)+-1))) = (Word)(*((WPtr)(((WPtr)(R1)+2))));
    R1 = (Word)(((WPtr)(*((WPtr)(((WPtr)(FP)+-1))))+2));
    *((WPtr)(((WPtr)(FP)+-3))) = (Word)(((WPtr)R1)[(Word)(-1)]);
    *((WPtr)(((WPtr)(FP)+-4))) = (Word)((Word)(0));
_T16:
    if ( *((WPtr)(((WPtr)(FP)+-4))) >= *((WPtr)(((WPtr)(FP)+-3))) ) goto _T14;
    R1 = (Word)(((WPtr)(*((WPtr)(((WPtr)(FP)+-1))))+2));
    *((WPtr)(((WPtr)(FP)+-2))) = (Word)(((WPtr)R1)[*((WPtr)(((WPtr)(FP)+-4)))]);
    *((WPtr)(((WPtr)(FP)+-5))) = (Word)(*((WPtr)(((WPtr)(FP)+-2))));
    R1 = (Word)(((WPtr)(*((WPtr)(((WPtr)(FP)+-5))))+2));
    *((WPtr)(((WPtr)(FP)+-7))) = (Word)(((WPtr)R1)[(Word)(-1)]);
    *((WPtr)(((WPtr)(FP)+-8))) = (Word)((Word)(0));
_T19:
    if ( *((WPtr)(((WPtr)(FP)+-8))) >= *((WPtr)(((WPtr)(FP)+-7))) ) goto _T17;
    R1 = (Word)(((WPtr)(*((WPtr)(((WPtr)(FP)+-5))))+2));
    *((WPtr)(((WPtr)(FP)+-6))) = (Word)(((WPtr)R1)[*((WPtr)(((WPtr)(FP)+-8)))]);
    pushw(*((WPtr)(((WPtr)(FP)+-6))));
    Put_int();
    pushw((Word)(32));
    put_char();
_T18:
    (*((WPtr)(((WPtr)(FP)+-8)))) ++;
    goto _T19;
_T17:
    newline();
_T15:
    (*((WPtr)(((WPtr)(FP)+-4)))) ++;
    goto _T16;
_T14:
Word _T20[]={
    (Word)5,
    (Word)5,
    (Word)45,
    (Word)45,
    (Word)45,
    (Word)45,
    (Word)45,
    0};
    pushw((Word)(_T20));
    put_str();
_T12:
    SP += 8;
    popp(FP);
    SP += 1;
    return 0;
} 

int main() { 
    pushp(FP);
    FP = SP;
    SP -= 2;
Word _T23[]={
    (Word)3,
    (Word)3,
    (Word)(Word)(0),
    (Word)(Word)(0),
    (Word)(Word)(0),
    0};
Word _T24[]={
    (Word)3,
    (Word)3,
    (Word)(Word)(0),
    (Word)(Word)(0),
    (Word)(Word)(0),
    0};
Word _T25[]={
    (Word)3,
    (Word)3,
    (Word)(Word)(0),
    (Word)(Word)(0),
    (Word)(Word)(0),
    0};
Word _T22[]={
    (Word)3,
    (Word)3,
    (Word)(Word)(_T23),
    (Word)(Word)(_T24),
    (Word)(Word)(_T25),
    0};
    *((WPtr)(((WPtr)(FP)+-1))) = (Word)((Word)(_T22));
    pushw(*((WPtr)(((WPtr)(FP)+-1))));
    pushw((Word)(4));
    py_malloc();
    pushw(R0);
    Game___init__();
    *((WPtr)(((WPtr)(FP)+-2))) = (Word)(R0);
    pushw(*((WPtr)(((WPtr)(FP)+-2))));
    Game_put();
    R1 = (Word)(*((WPtr)(((WPtr)(FP)+-2))));
    *((WPtr)(((WPtr)(R1)+3))) = (Word)((Word)(1));
    pushw((Word)(0));
    pushw((Word)(0));
    pushw(*((WPtr)(((WPtr)(FP)+-2))));
    Game_place();
    R1 = (Word)(*((WPtr)(((WPtr)(FP)+-2))));
    *((WPtr)(((WPtr)(R1)+3))) = (Word)((Word)(2));
    pushw((Word)(2));
    pushw((Word)(0));
    pushw(*((WPtr)(((WPtr)(FP)+-2))));
    Game_place();
    R1 = (Word)(*((WPtr)(((WPtr)(FP)+-2))));
    *((WPtr)(((WPtr)(R1)+3))) = (Word)((Word)(1));
    pushw((Word)(1));
    pushw((Word)(1));
    pushw(*((WPtr)(((WPtr)(FP)+-2))));
    Game_place();
    R1 = (Word)(*((WPtr)(((WPtr)(FP)+-2))));
    *((WPtr)(((WPtr)(R1)+3))) = (Word)((Word)(2));
    pushw((Word)(0));
    pushw((Word)(2));
    pushw(*((WPtr)(((WPtr)(FP)+-2))));
    Game_place();
    R1 = (Word)(*((WPtr)(((WPtr)(FP)+-2))));
    *((WPtr)(((WPtr)(R1)+3))) = (Word)((Word)(1));
    pushw((Word)(2));
    pushw((Word)(2));
    pushw(*((WPtr)(((WPtr)(FP)+-2))));
    Game_place();
    pushw(*((WPtr)(((WPtr)(FP)+-2))));
    Game_put();
_T21:
    SP += 2;
    popp(FP);
    return 0;
} 

