#include "machine.h"

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

int Student_print_student() { 
    pushp(FP);
    FP = SP;
    R1 = *((WPtr)(((WPtr)(FP)+1)));
    pushw(*((WPtr)(((WPtr)(R1)+2))));
    put_str();
    R1 = *((WPtr)(((WPtr)(FP)+1)));
    pushw(*((WPtr)(((WPtr)(R1)+3))));
    put_int();
    R1 = *((WPtr)(((WPtr)(FP)+1)));
    pushw(*((WPtr)(((WPtr)(R1)+4))));
    put_bool();
    R1 = *((WPtr)(((WPtr)(FP)+1)));
    pushw(*((WPtr)(((WPtr)(R1)+5))));
    put_int();
    newline();
_T11:
    popp(FP);
    SP += 1;
    return 0;
} 

int Student_set_grad_year() { 
    pushp(FP);
    FP = SP;
    R1 = *((WPtr)(((WPtr)(FP)+1)));
    *((WPtr)(((WPtr)(R1)+5))) = *((WPtr)(((WPtr)(FP)+2)));
_T12:
    popp(FP);
    SP += 2;
    return 0;
} 

int Student_is_passing() { 
    pushp(FP);
    FP = SP;
    pushw(R1);
    R1 = *((WPtr)(((WPtr)(FP)+1)));
    R2 = *((WPtr)(((WPtr)(FP)+1)));
    (*((WPtr)(((WPtr)(R1)+4))))=(*((WPtr)(((WPtr)(R2)+3)))>=(Word)(70));
    R1 = *((WPtr)(((WPtr)(FP)+1)));
    R0 = *((WPtr)(((WPtr)(R1)+4)));
    goto _T13;
_T13:
    popw(R1);
    popp(FP);
    SP += 1;
    return 0;
} 

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

int main() { 
    pushp(FP);
    FP = SP;
    SP -= 6;
    pushw(R1);
    pushw((Word)(2021));
    pushw((Word)(1));
    pushw((Word)(99));
Word _T16[]={
    (Word)14,
    (Word)14,
    (Word)80,
    (Word)101,
    (Word)116,
    (Word)101,
    (Word)114,
    (Word)32,
    (Word)65,
    (Word)110,
    (Word)116,
    (Word)101,
    (Word)97,
    (Word)116,
    (Word)101,
    (Word)114,
    0};
    pushw((Word)(_T16));
    pushw((Word)(6));
    py_malloc();
    pushw(R0);
    Student___init__();
    *((WPtr)(((WPtr)(FP)+-1))) = R0;
    pushw(*((WPtr)(((WPtr)(FP)+-1))));
    Student_print_student();
    pushw((Word)(12));
    make_list();
    pushw(R0);
    pushw((Word)(2021));
    pushw((Word)(1));
    pushw((Word)(99));
Word _T17[]={
    (Word)14,
    (Word)14,
    (Word)80,
    (Word)101,
    (Word)116,
    (Word)101,
    (Word)114,
    (Word)32,
    (Word)65,
    (Word)110,
    (Word)116,
    (Word)101,
    (Word)97,
    (Word)116,
    (Word)101,
    (Word)114,
    0};
    pushw((Word)(_T17));
    pushw((Word)(6));
    py_malloc();
    pushw(R0);
    Student___init__();
    pushw(R0);
    append_with_swapped_args();
    pushw(R0);
    pushw((Word)(2023));
    pushw((Word)(1));
    pushw((Word)(100));
Word _T18[]={
    (Word)10,
    (Word)10,
    (Word)83,
    (Word)97,
    (Word)109,
    (Word)109,
    (Word)121,
    (Word)32,
    (Word)83,
    (Word)108,
    (Word)117,
    (Word)103,
    0};
    pushw((Word)(_T18));
    pushw((Word)(6));
    py_malloc();
    pushw(R0);
    Student___init__();
    pushw(R0);
    append_with_swapped_args();
    pushw(R0);
    pushw((Word)(2022));
    pushw((Word)(1));
    pushw((Word)(80));
Word _T19[]={
    (Word)15,
    (Word)15,
    (Word)71,
    (Word)117,
    (Word)110,
    (Word)114,
    (Word)111,
    (Word)99,
    (Word)107,
    (Word)32,
    (Word)77,
    (Word)117,
    (Word)115,
    (Word)116,
    (Word)97,
    (Word)110,
    (Word)103,
    0};
    pushw((Word)(_T19));
    pushw((Word)(6));
    py_malloc();
    pushw(R0);
    Student___init__();
    pushw(R0);
    append_with_swapped_args();
    pushw(R0);
    pushw((Word)(2023));
    pushw((Word)(1));
    pushw((Word)(101));
Word _T20[]={
    (Word)11,
    (Word)11,
    (Word)75,
    (Word)105,
    (Word)110,
    (Word)103,
    (Word)32,
    (Word)84,
    (Word)114,
    (Word)105,
    (Word)116,
    (Word)111,
    (Word)110,
    0};
    pushw((Word)(_T20));
    pushw((Word)(6));
    py_malloc();
    pushw(R0);
    Student___init__();
    pushw(R0);
    append_with_swapped_args();
    pushw(R0);
    pushw((Word)(2021));
    pushw((Word)(1));
    pushw((Word)(70));
Word _T21[]={
    (Word)9,
    (Word)9,
    (Word)79,
    (Word)115,
    (Word)107,
    (Word)105,
    (Word)32,
    (Word)66,
    (Word)101,
    (Word)97,
    (Word)114,
    0};
    pushw((Word)(_T21));
    pushw((Word)(6));
    py_malloc();
    pushw(R0);
    Student___init__();
    pushw(R0);
    append_with_swapped_args();
    pushw(R0);
    pushw((Word)(2021));
    pushw((Word)(0));
    pushw((Word)(69));
Word _T22[]={
    (Word)12,
    (Word)12,
    (Word)82,
    (Word)117,
    (Word)102,
    (Word)117,
    (Word)115,
    (Word)32,
    (Word)66,
    (Word)111,
    (Word)98,
    (Word)99,
    (Word)97,
    (Word)116,
    0};
    pushw((Word)(_T22));
    pushw((Word)(6));
    py_malloc();
    pushw(R0);
    Student___init__();
    pushw(R0);
    append_with_swapped_args();
    *((WPtr)(((WPtr)(FP)+-2))) = R0;
    *((WPtr)(((WPtr)(FP)+-3))) = *((WPtr)(((WPtr)(FP)+-2)));
    *((WPtr)(((WPtr)(FP)+-5))) = ((WPtr)((WPtr)(*((WPtr)(((WPtr)(FP)+-3))))+2))[(Word)(-1)];
    *((WPtr)(((WPtr)(FP)+-6))) = (Word)(0);
_T25:
    if ( *((WPtr)(((WPtr)(FP)+-6))) >= *((WPtr)(((WPtr)(FP)+-5))) ) goto _T23;
    *((WPtr)(((WPtr)(FP)+-4))) = ((WPtr)((WPtr)(*((WPtr)(((WPtr)(FP)+-3))))+2))[*((WPtr)(((WPtr)(FP)+-6)))];
    pushw(*((WPtr)(((WPtr)(FP)+-4))));
    Student_print_student();
_T24:
    (*((WPtr)(((WPtr)(FP)+-6)))) ++;
    goto _T25;
_T23:
    newline();
    R1 = ((WPtr)((WPtr)(*((WPtr)(((WPtr)(FP)+-2))))+2))[(Word)(0)];
    *((WPtr)(((WPtr)(R1)+3))) -= (Word)(10);
    pushw(*((WPtr)(((WPtr)(R1)+3))));
    pushw(((WPtr)((WPtr)(*((WPtr)(((WPtr)(FP)+-2))))+2))[(Word)(0)]);
    Student_grade();
    pushw(((WPtr)((WPtr)(*((WPtr)(((WPtr)(FP)+-2))))+2))[(Word)(0)]);
    Student_print_student();
    pushw(((WPtr)((WPtr)(*((WPtr)(((WPtr)(FP)+-2))))+2))[(Word)(1)]);
    Student_print_student();
_T15:
    popw(R1);
    SP += 6;
    popp(FP);
    return 0;
} 

