#include "machine.h"

int node___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)));
_T10:
    popp(FP);
    SP += 4;
    return 0;
} 

int node_put() { 
    pushp(FP);
    FP = SP;
    pushw(R1);
    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)));
    if ( *((WPtr)(((WPtr)(R1)+4))) == (Word)(0) ) goto _T13;
    R1 = *((WPtr)(((WPtr)(FP)+1)));
    pushw(*((WPtr)(((WPtr)(R1)+4))));
    node_put();
_T13:
_T12:
_T11:
    popw(R1);
    popp(FP);
    SP += 1;
    return 0;
} 

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

int SearchList_insert() { 
    pushp(FP);
    FP = SP;
    R1 = *((WPtr)(((WPtr)(FP)+1)));
    pushw(*((WPtr)(((WPtr)(R1)+2))));
    pushw(*((WPtr)(((WPtr)(FP)+3))));
    pushw(*((WPtr)(((WPtr)(FP)+2))));
    pushw((Word)(5));
    py_malloc();
    pushw(R0);
    node___init__();
    R1 = *((WPtr)(((WPtr)(FP)+1)));
    *((WPtr)(((WPtr)(R1)+2))) = R0;
_T15:
    popp(FP);
    SP += 3;
    return 0;
} 

int SearchList_find() { 
    pushp(FP);
    FP = SP;
    SP -= 1;
    pushw(R1);
    R1 = *((WPtr)(((WPtr)(FP)+1)));
    *((WPtr)(((WPtr)(FP)+-1))) = *((WPtr)(((WPtr)(R1)+2)));
_T18:
    R1 = *((WPtr)(((WPtr)(FP)+-1)));
    if ( R1 == (Word)(0) ) goto _T17;
    R1 = *((WPtr)(((WPtr)(FP)+-1)));
    if ( *((WPtr)(((WPtr)(R1)+2))) != *((WPtr)(((WPtr)(FP)+2))) ) goto _T20;
    R1 = *((WPtr)(((WPtr)(FP)+-1)));
    R0 = *((WPtr)(((WPtr)(R1)+3)));
    goto _T16;
_T20:
_T19:
    goto _T18;
_T17:
    R0 = (Word)(0);
    goto _T16;
_T16:
    popw(R1);
    SP += 1;
    popp(FP);
    SP += 2;
    return 0;
} 

int SearchList_put() { 
    pushp(FP);
    FP = SP;
    pushw(R1);
    R1 = *((WPtr)(((WPtr)(FP)+1)));
    if ( *((WPtr)(((WPtr)(R1)+2))) == (Word)(0) ) goto _T23;
    R1 = *((WPtr)(((WPtr)(FP)+1)));
    pushw(*((WPtr)(((WPtr)(R1)+2))));
    node_put();
_T23:
_T22:
_T21:
    popw(R1);
    popp(FP);
    SP += 1;
    return 0;
} 

int main() { 
    pushp(FP);
    FP = SP;
    SP -= 6;
    pushw(R1);
    pushw((Word)(3));
    py_malloc();
    pushw(R0);
    SearchList___init__();
    *((WPtr)(((WPtr)(FP)+-1))) = R0;
    *((WPtr)(((WPtr)(FP)+-2))) = (Word)(1);
Word _T26[]={
    (Word)7,
    (Word)7,
    (Word)74,
    (Word)97,
    (Word)110,
    (Word)117,
    (Word)97,
    (Word)114,
    (Word)121,
    0};
Word _T27[]={
    (Word)8,
    (Word)8,
    (Word)70,
    (Word)101,
    (Word)98,
    (Word)114,
    (Word)117,
    (Word)97,
    (Word)114,
    (Word)121,
    0};
Word _T28[]={
    (Word)5,
    (Word)5,
    (Word)77,
    (Word)97,
    (Word)114,
    (Word)99,
    (Word)104,
    0};
Word _T29[]={
    (Word)5,
    (Word)5,
    (Word)65,
    (Word)112,
    (Word)114,
    (Word)105,
    (Word)108,
    0};
Word _T30[]={
    (Word)3,
    (Word)3,
    (Word)77,
    (Word)97,
    (Word)121,
    0};
Word _T31[]={
    (Word)4,
    (Word)4,
    (Word)74,
    (Word)117,
    (Word)110,
    (Word)101,
    0};
Word _T32[]={
    (Word)4,
    (Word)4,
    (Word)74,
    (Word)117,
    (Word)108,
    (Word)121,
    0};
Word _T33[]={
    (Word)6,
    (Word)6,
    (Word)65,
    (Word)117,
    (Word)103,
    (Word)117,
    (Word)115,
    (Word)116,
    0};
Word _T34[]={
    (Word)9,
    (Word)9,
    (Word)83,
    (Word)101,
    (Word)112,
    (Word)116,
    (Word)101,
    (Word)109,
    (Word)98,
    (Word)101,
    (Word)114,
    0};
Word _T35[]={
    (Word)7,
    (Word)7,
    (Word)79,
    (Word)99,
    (Word)116,
    (Word)111,
    (Word)98,
    (Word)101,
    (Word)114,
    0};
Word _T36[]={
    (Word)8,
    (Word)8,
    (Word)78,
    (Word)111,
    (Word)118,
    (Word)101,
    (Word)109,
    (Word)98,
    (Word)101,
    (Word)114,
    0};
Word _T37[]={
    (Word)8,
    (Word)8,
    (Word)68,
    (Word)101,
    (Word)99,
    (Word)101,
    (Word)109,
    (Word)98,
    (Word)101,
    (Word)114,
    0};
Word _T25[]={
    (Word)12,
    (Word)12,
    (Word)(Word)(_T26),
    (Word)(Word)(_T27),
    (Word)(Word)(_T28),
    (Word)(Word)(_T29),
    (Word)(Word)(_T30),
    (Word)(Word)(_T31),
    (Word)(Word)(_T32),
    (Word)(Word)(_T33),
    (Word)(Word)(_T34),
    (Word)(Word)(_T35),
    (Word)(Word)(_T36),
    (Word)(Word)(_T37),
    0};
    *((WPtr)(((WPtr)(FP)+-3))) = (Word)(_T25);
    *((WPtr)(((WPtr)(FP)+-5))) = ((WPtr)((WPtr)(*((WPtr)(((WPtr)(FP)+-3))))+2))[(Word)(-1)];
    *((WPtr)(((WPtr)(FP)+-6))) = (Word)(0);
_T40:
    if ( *((WPtr)(((WPtr)(FP)+-6))) >= *((WPtr)(((WPtr)(FP)+-5))) ) goto _T38;
    *((WPtr)(((WPtr)(FP)+-4))) = ((WPtr)((WPtr)(*((WPtr)(((WPtr)(FP)+-3))))+2))[*((WPtr)(((WPtr)(FP)+-6)))];
    pushw(*((WPtr)(((WPtr)(FP)+-2))));
    pushw(*((WPtr)(((WPtr)(FP)+-4))));
    pushw(*((WPtr)(((WPtr)(FP)+-1))));
    SearchList_insert();
    R1 = *((WPtr)(((WPtr)(FP)+-2)));
    R1 += (Word)(1);
    *((WPtr)(((WPtr)(FP)+-2))) = R1;
_T39:
    (*((WPtr)(((WPtr)(FP)+-6)))) ++;
    goto _T40;
_T38:
    pushw(*((WPtr)(((WPtr)(FP)+-1))));
    SearchList_put();
_T24:
    popw(R1);
    SP += 6;
    popp(FP);
    return 0;
} 

