Value *Main_dupargs
(
    Value * var_0
);
Value *Main_dupargs
(
    Value * var_0
)
{
    Value *primVar_72 = idris2_add_Integer(var_0, idris2_newReference(var_0));
    idris2_removeReference(var_0);
    idris2_removeReference(var_0);
    return primVar_72;
}
Value *Main_last
(
    Value * var_0
,   Value * var_1
);
Value *Main_last
(
    Value * var_0
,   Value * var_1
)
{
    Value * tmp_70 = NULL;                                   // Main:8:8--8:14
    if (NULL == var_0 /* _builtin.NIL [nil] */) {
        tmp_70 = var_1;
    } else if (NULL != var_0 /* _builtin.CONS [cons] */) {
        Value *var_2 = ((Value_Constructor*)var_0)->args[0];
        Value *var_3 = ((Value_Constructor*)var_0)->args[1];
        idris2_newReference(var_2);
        idris2_newReference(var_3);
        idris2_removeReference(var_0);
        idris2_removeReference(var_1);
        Value *closure_71 = (Value *)idris2_mkClosure((Value *(*)())Main_last, 2, 2);
                                                             // Main:10:20--10:24
        ((Value_Closure*)closure_71)->args[0] = var_3;
        ((Value_Closure*)closure_71)->args[1] = var_2;
        tmp_70 = closure_71;
    }
    return tmp_70;
}
Value *Main_main_0
(
    Value * var_4
,   Value * var_3
,   Value * var_2
,   Value * var_1
,   Value * var_0
);
Value *Main_main_1
(
    Value * var_2
,   Value * var_1
,   Value * var_0
);
Value *Main_main_2
(
    Value * var_4
,   Value * var_3
,   Value * var_2
,   Value * var_1
,   Value * var_0
);
Value *Main_main_3
(
    Value * var_4
,   Value * var_3
,   Value * var_2
,   Value * var_1
,   Value * var_0
);
Value *Main_main_4
(
    Value * var_4
,   Value * var_3
,   Value * var_2
,   Value * var_1
,   Value * var_0
);
Value *Main_main_5
(
    Value * var_1
,   Value * var_0
);
Value *Main_main_6
(
    Value * var_6
,   Value * var_5
,   Value * var_4
,   Value * var_3
,   Value * var_2
,   Value * var_1
,   Value * var_0
);
Value *Main_main_7
(
    Value * var_1
,   Value * var_0
);
Value *Main_main_8
(
    Value * var_4
,   Value * var_3
,   Value * var_2
,   Value * var_1
,   Value * var_0
);
Value *Main_main_9
(
    Value * var_1
,   Value * var_0
);
Value *Main_main_10
(
    Value * var_1
,   Value * var_0
);
Value *Main_main_11
(
    Value * var_0
);
Value *Main_main
(
    Value * var_0
);
Value *Main_main
(
    Value * var_0
)
{
    Value *closure_42 = (Value *)idris2_mkClosure((Value *(*)())Main_main_9, 2, 0);
                                                             // Main:14:8--14:12
    Value * var_10 = closure_42;                             // Main:14:3--14:7
    Value *closure_43 = (Value *)idris2_mkClosure((Value *(*)())Main_main_10, 2, 0);
                                                             // Main:14:22--14:23
    Value * var_11 = closure_43;                             // Main:14:3--14:7
    Value * var_8 = (NULL /* _builtin.NIL */);               // Main:15:11--15:13
    Value * var_5 = (NULL /* _builtin.NIL */);               // Prelude.Types:605:11--605:20
    Value *closure_44 = (Value *)idris2_mkClosure((Value *(*)())Main_main_11, 1, 0);
                                                             // Main:15:21--15:22
    Value * var_6 = closure_44;                              // Prelude.Types:605:11--605:20
    Value * var_2 = idris2_trampoline(csegen_44());          // Prelude.Types:1121:1--1138:48
    Value * var_3 = idris2_getPredefinedInteger(1);          // Prelude.Types:1121:1--1138:48
    Value * var_4 = idris2_getPredefinedInteger(5);          // Prelude.Types:1121:1--1138:48
    Value * var_7 = idris2_trampoline(Prelude_Types_rangeFromTo_Range__dollara(var_2, var_3, var_4));
                                                             // Prelude.Types:605:11--605:20
    Value * var_9 = idris2_trampoline(Prelude_Types_List_mapAppend(var_5, var_6, var_7));
                                                             // Main:15:11--15:13
     // constructor _builtin.CONS                            // Main:15:11--15:13
    Value_Constructor* constructor_45 = idris2_newConstructor(2, 1);
                                                             // Main:15:11--15:13
    constructor_45->args[0] = var_8;
    constructor_45->args[1] = var_9;
    Value * var_12 = (Value*)constructor_45;                 // Main:14:3--14:7
    Value * var_13 = idris2_trampoline(Prelude_Basics_flip(var_10, var_11, var_12));
                                                             // Main:14:3--14:7
    Value * var_1 = idris2_apply_closure(var_13, idris2_newReference(var_0));
                                                             // Prelude.IO:31:13--31:20
    idris2_removeReference(var_1);                           // Prelude.IO:31:13--31:20
    Value * var_14 = idris2_mkIntegerLiteral("9999");        // Main:16:13--16:20
    Value * var_15 = idris2_trampoline(Main_dupargs(var_14));
                                                             // Prelude.Show:110:1--112:50
    Value * var_16 = idris2_trampoline(Prelude_Show_show_Show_Integer(var_15));
    Value * var_17 = ((Value*)&idris2_constant_String_46);
    Value *primVar_47 = strAppend(var_16, var_17);
    idris2_removeReference(var_16);
    idris2_removeReference(var_17);
    Value * var_18 = primVar_47;                             // Prelude.IO:98:22--98:34
    Value *closure_48 = (Value *)idris2_mkClosure((Value *(*)())Prelude_IO_prim__putStr, 2, 2);
                                                             // Prelude.IO:98:22--98:34
    ((Value_Closure*)closure_48)->args[0] = var_18;
    ((Value_Closure*)closure_48)->args[1] = var_0;
    return closure_48;
}
Value *Main_main_11
(
    Value * var_0
)
{
    Value * var_1 = idris2_trampoline(csegen_44());          // Prelude.Types:1121:1--1138:48
    Value * var_2 = idris2_getPredefinedInteger(1);          // Prelude.Types:1121:1--1138:48
    Value *closure_49 = (Value *)idris2_mkClosure((Value *(*)())Prelude_Types_rangeFromTo_Range__dollara, 3, 3);
                                                             // Prelude.Types:1121:1--1138:48
    ((Value_Closure*)closure_49)->args[0] = var_1;
    ((Value_Closure*)closure_49)->args[1] = var_2;
    ((Value_Closure*)closure_49)->args[2] = var_0;
    return closure_49;
}
Value *Main_main_10
(
    Value * var_1
,   Value * var_0
)
{
    Value * var_2 = idris2_getPredefinedInteger(0);          // Main:14:25--14:31
    Value * var_3 = idris2_trampoline(Main_last(var_1, var_2));
                                                             // Prelude.Show:110:1--112:50
    Value * var_4 = idris2_trampoline(Prelude_Show_show_Show_Integer(var_3));
    Value * var_5 = ((Value*)&idris2_constant_String_46);
    Value *primVar_50 = strAppend(var_4, var_5);
    idris2_removeReference(var_4);
    idris2_removeReference(var_5);
    Value * var_6 = primVar_50;                              // Prelude.IO:98:22--98:34
    Value *closure_51 = (Value *)idris2_mkClosure((Value *(*)())Prelude_IO_prim__putStr, 2, 2);
                                                             // Prelude.IO:98:22--98:34
    ((Value_Closure*)closure_51)->args[0] = var_6;
    ((Value_Closure*)closure_51)->args[1] = var_0;
    return closure_51;
}
Value *Main_main_9
(
    Value * var_1
,   Value * var_0
)
{
    Value *closure_52 = (Value *)idris2_mkClosure((Value *(*)())Main_main_0, 5, 0);
    Value * var_2 = closure_52;                              // Prelude.IO:19:1--26:30
    Value *closure_53 = (Value *)idris2_mkClosure((Value *(*)())Main_main_1, 3, 0);
    Value * var_3 = closure_53;                              // Prelude.IO:19:1--26:30
    Value *closure_54 = (Value *)idris2_mkClosure((Value *(*)())Main_main_2, 5, 0);
    Value * var_4 = closure_54;                              // Prelude.IO:19:1--26:30
     // constructor Prelude.Interfaces.MkApplicative         // Prelude.IO:19:1--26:30
    Value_Constructor* constructor_55 = idris2_newConstructor(3, 0);
                                                             // Prelude.IO:19:1--26:30
    constructor_55->args[0] = var_2;
    constructor_55->args[1] = var_3;
    constructor_55->args[2] = var_4;
    Value * var_11 = (Value*)constructor_55;                 // Main:14:8--14:12
    Value *closure_56 = (Value *)idris2_mkClosure((Value *(*)())Main_main_3, 5, 0);
    Value * var_5 = closure_56;                              // Prelude.Types:656:1--669:59
    Value *closure_57 = (Value *)idris2_mkClosure((Value *(*)())Main_main_4, 5, 0);
    Value * var_6 = closure_57;                              // Prelude.Types:656:1--669:59
    Value *closure_58 = (Value *)idris2_mkClosure((Value *(*)())Main_main_5, 2, 0);
    Value * var_7 = closure_58;                              // Prelude.Types:656:1--669:59
    Value *closure_59 = (Value *)idris2_mkClosure((Value *(*)())Main_main_6, 7, 0);
    Value * var_8 = closure_59;                              // Prelude.Types:656:1--669:59
    Value *closure_60 = (Value *)idris2_mkClosure((Value *(*)())Main_main_7, 2, 0);
    Value * var_9 = closure_60;                              // Prelude.Types:656:1--669:59
    Value *closure_61 = (Value *)idris2_mkClosure((Value *(*)())Main_main_8, 5, 0);
    Value * var_10 = closure_61;                             // Prelude.Types:656:1--669:59
     // constructor Prelude.Interfaces.MkFoldable            // Prelude.Types:656:1--669:59
    Value_Constructor* constructor_62 = idris2_newConstructor(6, 0);
                                                             // Prelude.Types:656:1--669:59
    constructor_62->args[0] = var_5;
    constructor_62->args[1] = var_6;
    constructor_62->args[2] = var_7;
    constructor_62->args[3] = var_8;
    constructor_62->args[4] = var_9;
    constructor_62->args[5] = var_10;
    Value * var_12 = (Value*)constructor_62;                 // Main:14:8--14:12
    Value *closure_63 = (Value *)idris2_mkClosure((Value *(*)())Prelude_Interfaces_for_, 4, 4);
                                                             // Main:14:8--14:12
    ((Value_Closure*)closure_63)->args[0] = var_11;
    ((Value_Closure*)closure_63)->args[1] = var_12;
    ((Value_Closure*)closure_63)->args[2] = var_1;
    ((Value_Closure*)closure_63)->args[3] = var_0;
    return closure_63;
}
Value *Main_main_8
(
    Value * var_4
,   Value * var_3
,   Value * var_2
,   Value * var_1
,   Value * var_0
)
{
    idris2_removeReference(var_3);
    idris2_removeReference(var_4);
    Value *closure_64 = (Value *)idris2_mkClosure((Value *(*)())Prelude_Types_foldMap_Foldable_List, 3, 3);
                                                             // Prelude.Types:656:1--669:59
    ((Value_Closure*)closure_64)->args[0] = var_2;
    ((Value_Closure*)closure_64)->args[1] = var_1;
    ((Value_Closure*)closure_64)->args[2] = var_0;
    return closure_64;
}
Value *Main_main_7
(
    Value * var_1
,   Value * var_0
)
{
    idris2_removeReference(var_1);
    return var_0;
}
Value *Main_main_6
(
    Value * var_6
,   Value * var_5
,   Value * var_4
,   Value * var_3
,   Value * var_2
,   Value * var_1
,   Value * var_0
)
{
    idris2_removeReference(var_4);
    idris2_removeReference(var_5);
    idris2_removeReference(var_6);
    Value *closure_65 = (Value *)idris2_mkClosure((Value *(*)())Prelude_Types_foldlM_Foldable_List, 4, 4);
                                                             // Prelude.Types:656:1--669:59
    ((Value_Closure*)closure_65)->args[0] = var_3;
    ((Value_Closure*)closure_65)->args[1] = var_2;
    ((Value_Closure*)closure_65)->args[2] = var_1;
    ((Value_Closure*)closure_65)->args[3] = var_0;
    return closure_65;
}
Value *Main_main_5
(
    Value * var_1
,   Value * var_0
)
{
    idris2_removeReference(var_1);
    Value *closure_66 = (Value *)idris2_mkClosure((Value *(*)())Prelude_Types_null_Foldable_List, 1, 1);
                                                             // Prelude.Types:656:1--669:59
    ((Value_Closure*)closure_66)->args[0] = var_0;
    return closure_66;
}
Value *Main_main_4
(
    Value * var_4
,   Value * var_3
,   Value * var_2
,   Value * var_1
,   Value * var_0
)
{
    idris2_removeReference(var_3);
    idris2_removeReference(var_4);
    Value *closure_67 = (Value *)idris2_mkClosure((Value *(*)())Prelude_Types_foldl_Foldable_List, 3, 3);
                                                             // Prelude.Types:656:1--669:59
    ((Value_Closure*)closure_67)->args[0] = var_2;
    ((Value_Closure*)closure_67)->args[1] = var_1;
    ((Value_Closure*)closure_67)->args[2] = var_0;
    return closure_67;
}
Value *Main_main_3
(
    Value * var_4
,   Value * var_3
,   Value * var_2
,   Value * var_1
,   Value * var_0
)
{
    idris2_removeReference(var_3);
    idris2_removeReference(var_4);
    Value *closure_68 = (Value *)idris2_mkClosure((Value *(*)())Prelude_Types_foldr_Foldable_List, 3, 3);
                                                             // Prelude.Types:656:1--669:59
    ((Value_Closure*)closure_68)->args[0] = var_2;
    ((Value_Closure*)closure_68)->args[1] = var_1;
    ((Value_Closure*)closure_68)->args[2] = var_0;
    return closure_68;
}
Value *Main_main_2
(
    Value * var_4
,   Value * var_3
,   Value * var_2
,   Value * var_1
,   Value * var_0
)
{
    idris2_removeReference(var_3);
    idris2_removeReference(var_4);
    Value * var_5 = idris2_apply_closure(var_2, idris2_newReference(var_0));
                                                             // Prelude.IO:24:9--24:16
    Value * var_6 = idris2_apply_closure(var_1, var_0);      // Prelude.IO:25:11--25:18
    return idris2_tailcall_apply_closure(var_5, var_6);
}
Value *Main_main_1
(
    Value * var_2
,   Value * var_1
,   Value * var_0
)
{
    idris2_removeReference(var_0);
    idris2_removeReference(var_2);
    return var_1;
}
Value *Main_main_0
(
    Value * var_4
,   Value * var_3
,   Value * var_2
,   Value * var_1
,   Value * var_0
)
{
    idris2_removeReference(var_3);
    idris2_removeReference(var_4);
    Value *closure_69 = (Value *)idris2_mkClosure((Value *(*)())Prelude_IO_map_Functor_IO, 3, 3);
                                                             // Prelude.IO:15:1--17:38
    ((Value_Closure*)closure_69)->args[0] = var_2;
    ((Value_Closure*)closure_69)->args[1] = var_1;
    ((Value_Closure*)closure_69)->args[2] = var_0;
    return closure_69;
}
