ttencrypt.py

 avatar
user_5449590
python
2 months ago
95 kB
1
Indexable
Never
import binascii
import gzip
import random
from Crypto.Cipher import AES

class TTEncrypt:
    content = []
    content_raw = []
    CF = 0
    begining = [
        0x74, 
        0x63, 
        0x05, 
        0x10, 
        0, 
        0]
    dword_0 = [
        99,
        124,
        119,
        123,
        242,
        107,
        111,
        197,
        48,
        1,
        103,
        43,
        254,
        215,
        171,
        118,
        202,
        130,
        201,
        125,
        250,
        89,
        71,
        240,
        173,
        212,
        162,
        175,
        156,
        164,
        114,
        192,
        183,
        253,
        147,
        38,
        54,
        63,
        247,
        204,
        52,
        165,
        229,
        241,
        113,
        216,
        49,
        21,
        4,
        199,
        35,
        195,
        24,
        150,
        5,
        154,
        7,
        18,
        128,
        226,
        235,
        39,
        178,
        117,
        9,
        131,
        44,
        26,
        27,
        110,
        90,
        160,
        82,
        59,
        214,
        179,
        41,
        227,
        47,
        132,
        83,
        209,
        0,
        237,
        32,
        252,
        177,
        91,
        106,
        203,
        190,
        57,
        74,
        76,
        88,
        207,
        208,
        239,
        170,
        251,
        67,
        77,
        51,
        133,
        69,
        249,
        2,
        127,
        80,
        60,
        159,
        168,
        81,
        163,
        64,
        143,
        146,
        157,
        56,
        245,
        188,
        182,
        218,
        33,
        16,
        255,
        243,
        210,
        205,
        12,
        19,
        236,
        95,
        151,
        68,
        23,
        196,
        167,
        126,
        61,
        100,
        93,
        25,
        115,
        96,
        129,
        79,
        220,
        34,
        42,
        144,
        136,
        70,
        238,
        184,
        20,
        222,
        94,
        11,
        219,
        224,
        50,
        58,
        10,
        73,
        6,
        36,
        92,
        194,
        211,
        172,
        98,
        145,
        149,
        228,
        121,
        231,
        200,
        55,
        109,
        141,
        213,
        78,
        169,
        108,
        86,
        244,
        234,
        101,
        122,
        174,
        8,
        186,
        120,
        37,
        46,
        28,
        166,
        180,
        198,
        232,
        221,
        116,
        31,
        75,
        189,
        139,
        138,
        112,
        62,
        181,
        102,
        72,
        3,
        246,
        14,
        97,
        53,
        87,
        185,
        134,
        193,
        29,
        158,
        225,
        248,
        152,
        17,
        105,
        217,
        142,
        148,
        155,
        30,
        135,
        233,
        206,
        85,
        40,
        223,
        140,
        161,
        137,
        13,
        191,
        230,
        66,
        104,
        65,
        153,
        45,
        15,
        176,
        84,
        187,
        22,
    ]
    dword_1 = [
        16777216,
        33554432,
        67108864,
        134217728,
        268435456,
        536870912,
        1073741824,
        2147483648,
        452984832,
        905969664,
    ]
    dword_2 = [
        0,
        235474187,
        470948374,
        303765277,
        941896748,
        908933415,
        607530554,
        708780849,
        1883793496,
        2118214995,
        1817866830,
        1649639237,
        1215061108,
        1181045119,
        1417561698,
        1517767529,
        3767586992,
        4003061179,
        4236429990,
        4069246893,
        3635733660,
        3602770327,
        3299278474,
        3400528769,
        2430122216,
        2664543715,
        2362090238,
        2193862645,
        2835123396,
        2801107407,
        3035535058,
        3135740889,
        3678124923,
        3576870512,
        3341394285,
        3374361702,
        3810496343,
        3977675356,
        4279080257,
        4043610186,
        2876494627,
        2776292904,
        3076639029,
        3110650942,
        2472011535,
        2640243204,
        2403728665,
        2169303058,
        1001089995,
        899835584,
        666464733,
        699432150,
        59727847,
        226906860,
        530400753,
        294930682,
        1273168787,
        1172967064,
        1475418501,
        1509430414,
        1942435775,
        2110667444,
        1876241833,
        1641816226,
        2910219766,
        2743034109,
        2976151520,
        3211623147,
        2505202138,
        2606453969,
        2302690252,
        2269728455,
        3711829422,
        3543599269,
        3240894392,
        3475313331,
        3843699074,
        3943906441,
        4178062228,
        4144047775,
        1306967366,
        1139781709,
        1374988112,
        1610459739,
        1975683434,
        2076935265,
        1775276924,
        1742315127,
        1034867998,
        866637845,
        566021896,
        800440835,
        92987698,
        193195065,
        429456164,
        395441711,
        1984812685,
        2017778566,
        1784663195,
        1683407248,
        1315562145,
        1080094634,
        1383856311,
        1551037884,
        101039829,
        135050206,
        437757123,
        337553864,
        1042385657,
        807962610,
        573804783,
        742039012,
        2531067453,
        2564033334,
        2328828971,
        2227573024,
        2935566865,
        2700099354,
        3001755655,
        3168937228,
        3868552805,
        3902563182,
        4203181171,
        4102977912,
        3736164937,
        3501741890,
        3265478751,
        3433712980,
        1106041591,
        1340463100,
        1576976609,
        1408749034,
        2043211483,
        2009195472,
        1708848333,
        1809054150,
        832877231,
        1068351396,
        766945465,
        599762354,
        159417987,
        126454664,
        361929877,
        463180190,
        2709260871,
        2943682380,
        3178106961,
        3009879386,
        2572697195,
        2538681184,
        2236228733,
        2336434550,
        3509871135,
        3745345300,
        3441850377,
        3274667266,
        3910161971,
        3877198648,
        4110568485,
        4211818798,
        2597806476,
        2497604743,
        2261089178,
        2295101073,
        2733856160,
        2902087851,
        3202437046,
        2968011453,
        3936291284,
        3835036895,
        4136440770,
        4169408201,
        3535486456,
        3702665459,
        3467192302,
        3231722213,
        2051518780,
        1951317047,
        1716890410,
        1750902305,
        1113818384,
        1282050075,
        1584504582,
        1350078989,
        168810852,
        67556463,
        371049330,
        404016761,
        841739592,
        1008918595,
        775550814,
        540080725,
        3969562369,
        3801332234,
        4035489047,
        4269907996,
        3569255213,
        3669462566,
        3366754619,
        3332740144,
        2631065433,
        2463879762,
        2160117071,
        2395588676,
        2767645557,
        2868897406,
        3102011747,
        3069049960,
        202008497,
        33778362,
        270040487,
        504459436,
        875451293,
        975658646,
        675039627,
        641025152,
        2084704233,
        1917518562,
        1615861247,
        1851332852,
        1147550661,
        1248802510,
        1484005843,
        1451044056,
        933301370,
        967311729,
        733156972,
        632953703,
        260388950,
        25965917,
        328671808,
        496906059,
        1206477858,
        1239443753,
        1543208500,
        1441952575,
        2144161806,
        1908694277,
        1675577880,
        1842759443,
        3610369226,
        3644379585,
        3408119516,
        3307916247,
        4011190502,
        3776767469,
        4077384432,
        4245618683,
        2809771154,
        2842737049,
        3144396420,
        3043140495,
        2673705150,
        2438237621,
        2203032232,
        2370213795,
    ]
    dword_3 = [
        0,
        185469197,
        370938394,
        487725847,
        741876788,
        657861945,
        975451694,
        824852259,
        1483753576,
        1400783205,
        1315723890,
        1164071807,
        1950903388,
        2135319889,
        1649704518,
        1767536459,
        2967507152,
        3152976349,
        2801566410,
        2918353863,
        2631447780,
        2547432937,
        2328143614,
        2177544179,
        3901806776,
        3818836405,
        4270639778,
        4118987695,
        3299409036,
        3483825537,
        3535072918,
        3652904859,
        2077965243,
        1893020342,
        1841768865,
        1724457132,
        1474502543,
        1559041666,
        1107234197,
        1257309336,
        598438867,
        681933534,
        901210569,
        1052338372,
        261314535,
        77422314,
        428819965,
        310463728,
        3409685355,
        3224740454,
        3710368113,
        3593056380,
        3875770207,
        3960309330,
        4045380933,
        4195456072,
        2471224067,
        2554718734,
        2237133081,
        2388260884,
        3212035895,
        3028143674,
        2842678573,
        2724322336,
        4138563181,
        4255350624,
        3769721975,
        3955191162,
        3667219033,
        3516619604,
        3431546947,
        3347532110,
        2933734917,
        2782082824,
        3099667487,
        3016697106,
        2196052529,
        2313884476,
        2499348523,
        2683765030,
        1179510461,
        1296297904,
        1347548327,
        1533017514,
        1786102409,
        1635502980,
        2087309459,
        2003294622,
        507358933,
        355706840,
        136428751,
        53458370,
        839224033,
        957055980,
        605657339,
        790073846,
        2373340630,
        2256028891,
        2607439820,
        2422494913,
        2706270690,
        2856345839,
        3075636216,
        3160175349,
        3573941694,
        3725069491,
        3273267108,
        3356761769,
        4181598602,
        4063242375,
        4011996048,
        3828103837,
        1033297158,
        915985419,
        730517276,
        545572369,
        296679730,
        446754879,
        129166120,
        213705253,
        1709610350,
        1860738147,
        1945798516,
        2029293177,
        1239331162,
        1120974935,
        1606591296,
        1422699085,
        4148292826,
        4233094615,
        3781033664,
        3931371469,
        3682191598,
        3497509347,
        3446004468,
        3328955385,
        2939266226,
        2755636671,
        3106780840,
        2988687269,
        2198438022,
        2282195339,
        2501218972,
        2652609425,
        1201765386,
        1286567175,
        1371368976,
        1521706781,
        1805211710,
        1620529459,
        2105887268,
        1988838185,
        533804130,
        350174575,
        164439672,
        46346101,
        870912086,
        954669403,
        636813900,
        788204353,
        2358957921,
        2274680428,
        2592523643,
        2441661558,
        2695033685,
        2880240216,
        3065962831,
        3182487618,
        3572145929,
        3756299780,
        3270937875,
        3388507166,
        4174560061,
        4091327024,
        4006521127,
        3854606378,
        1014646705,
        930369212,
        711349675,
        560487590,
        272786309,
        457992840,
        106852767,
        223377554,
        1678381017,
        1862534868,
        1914052035,
        2031621326,
        1211247597,
        1128014560,
        1580087799,
        1428173050,
        32283319,
        182621114,
        401639597,
        486441376,
        768917123,
        651868046,
        1003007129,
        818324884,
        1503449823,
        1385356242,
        1333838021,
        1150208456,
        1973745387,
        2125135846,
        1673061617,
        1756818940,
        2970356327,
        3120694122,
        2802849917,
        2887651696,
        2637442643,
        2520393566,
        2334669897,
        2149987652,
        3917234703,
        3799141122,
        4284502037,
        4100872472,
        3309594171,
        3460984630,
        3545789473,
        3629546796,
        2050466060,
        1899603969,
        1814803222,
        1730525723,
        1443857720,
        1560382517,
        1075025698,
        1260232239,
        575138148,
        692707433,
        878443390,
        1062597235,
        243256656,
        91341917,
        409198410,
        325965383,
        3403100636,
        3252238545,
        3704300486,
        3620022987,
        3874428392,
        3990953189,
        4042459122,
        4227665663,
        2460449204,
        2578018489,
        2226875310,
        2411029155,
        3198115200,
        3046200461,
        2827177882,
        2743944855,
    ]
    dword_4 = [
        0,
        218828297,
        437656594,
        387781147,
        875313188,
        958871085,
        775562294,
        590424639,
        1750626376,
        1699970625,
        1917742170,
        2135253587,
        1551124588,
        1367295589,
        1180849278,
        1265195639,
        3501252752,
        3720081049,
        3399941250,
        3350065803,
        3835484340,
        3919042237,
        4270507174,
        4085369519,
        3102249176,
        3051593425,
        2734591178,
        2952102595,
        2361698556,
        2177869557,
        2530391278,
        2614737639,
        3145456443,
        3060847922,
        2708326185,
        2892417312,
        2404901663,
        2187128086,
        2504130317,
        2555048196,
        3542330227,
        3727205754,
        3375740769,
        3292445032,
        3876557655,
        3926170974,
        4246310725,
        4027744588,
        1808481195,
        1723872674,
        1910319033,
        2094410160,
        1608975247,
        1391201670,
        1173430173,
        1224348052,
        59984867,
        244860394,
        428169201,
        344873464,
        935293895,
        984907214,
        766078933,
        547512796,
        1844882806,
        1627235199,
        2011214180,
        2062270317,
        1507497298,
        1423022939,
        1137477952,
        1321699145,
        95345982,
        145085239,
        532201772,
        313773861,
        830661914,
        1015671571,
        731183368,
        648017665,
        3175501286,
        2957853679,
        2807058932,
        2858115069,
        2305455554,
        2220981195,
        2474404304,
        2658625497,
        3575528878,
        3625268135,
        3473416636,
        3254988725,
        3778151818,
        3963161475,
        4213447064,
        4130281361,
        3599595085,
        3683022916,
        3432737375,
        3247465558,
        3802222185,
        4020912224,
        4172763771,
        4122762354,
        3201631749,
        3017672716,
        2764249623,
        2848461854,
        2331590177,
        2280796200,
        2431590963,
        2648976442,
        104699613,
        188127444,
        472615631,
        287343814,
        840019705,
        1058709744,
        671593195,
        621591778,
        1852171925,
        1668212892,
        1953757831,
        2037970062,
        1514790577,
        1463996600,
        1080017571,
        1297403050,
        3673637356,
        3623636965,
        3235995134,
        3454686199,
        4007360968,
        3822090177,
        4107101658,
        4190530515,
        2997825956,
        3215212461,
        2830708150,
        2779915199,
        2256734592,
        2340947849,
        2627016082,
        2443058075,
        172466556,
        122466165,
        273792366,
        492483431,
        1047239000,
        861968209,
        612205898,
        695634755,
        1646252340,
        1863638845,
        2013908262,
        1963115311,
        1446242576,
        1530455833,
        1277555970,
        1093597963,
        1636604631,
        1820824798,
        2073724613,
        1989249228,
        1436590835,
        1487645946,
        1337376481,
        1119727848,
        164948639,
        81781910,
        331544205,
        516552836,
        1039717051,
        821288114,
        669961897,
        719700128,
        2973530695,
        3157750862,
        2871682645,
        2787207260,
        2232435299,
        2283490410,
        2667994737,
        2450346104,
        3647212047,
        3564045318,
        3279033885,
        3464042516,
        3980931627,
        3762502690,
        4150144569,
        4199882800,
        3070356634,
        3121275539,
        2904027272,
        2686254721,
        2200818878,
        2384911031,
        2570832044,
        2486224549,
        3747192018,
        3528626907,
        3310321856,
        3359936201,
        3950355702,
        3867060991,
        4049844452,
        4234721005,
        1739656202,
        1790575107,
        2108100632,
        1890328081,
        1402811438,
        1586903591,
        1233856572,
        1149249077,
        266959938,
        48394827,
        369057872,
        418672217,
        1002783846,
        919489135,
        567498868,
        752375421,
        209336225,
        24197544,
        376187827,
        459744698,
        945164165,
        895287692,
        574624663,
        793451934,
        1679968233,
        1764313568,
        2117360635,
        1933530610,
        1343127501,
        1560637892,
        1243112415,
        1192455638,
        3704280881,
        3519142200,
        3336358691,
        3419915562,
        3907448597,
        3857572124,
        4075877127,
        4294704398,
        3029510009,
        3113855344,
        2927934315,
        2744104290,
        2159976285,
        2377486676,
        2594734927,
        2544078150,
    ]
    dword_5 = [
        0,
        151849742,
        303699484,
        454499602,
        607398968,
        758720310,
        908999204,
        1059270954,
        1214797936,
        1097159550,
        1517440620,
        1400849762,
        1817998408,
        1699839814,
        2118541908,
        2001430874,
        2429595872,
        2581445614,
        2194319100,
        2345119218,
        3034881240,
        3186202582,
        2801699524,
        2951971274,
        3635996816,
        3518358430,
        3399679628,
        3283088770,
        4237083816,
        4118925222,
        4002861748,
        3885750714,
        1002142683,
        850817237,
        698445255,
        548169417,
        529487843,
        377642221,
        227885567,
        77089521,
        1943217067,
        2061379749,
        1640576439,
        1757691577,
        1474760595,
        1592394909,
        1174215055,
        1290801793,
        2875968315,
        2724642869,
        3111247143,
        2960971305,
        2405426947,
        2253581325,
        2638606623,
        2487810577,
        3808662347,
        3926825029,
        4044981591,
        4162096729,
        3342319475,
        3459953789,
        3576539503,
        3693126241,
        1986918061,
        2137062819,
        1685577905,
        1836772287,
        1381620373,
        1532285339,
        1078185097,
        1229899655,
        1040559837,
        923313619,
        740276417,
        621982671,
        439452389,
        322734571,
        137073913,
        19308535,
        3871163981,
        4021308739,
        4104605777,
        4255800159,
        3263785589,
        3414450555,
        3499326569,
        3651041127,
        2933202493,
        2815956275,
        3167684641,
        3049390895,
        2330014213,
        2213296395,
        2566595609,
        2448830231,
        1305906550,
        1155237496,
        1607244650,
        1455525988,
        1776460110,
        1626319424,
        2079897426,
        1928707164,
        96392454,
        213114376,
        396673818,
        514443284,
        562755902,
        679998000,
        865136418,
        983426092,
        3708173718,
        3557504664,
        3474729866,
        3323011204,
        4180808110,
        4030667424,
        3945269170,
        3794078908,
        2507040230,
        2623762152,
        2272556026,
        2390325492,
        2975484382,
        3092726480,
        2738905026,
        2857194700,
        3973773121,
        3856137295,
        4274053469,
        4157467219,
        3371096953,
        3252932727,
        3673476453,
        3556361835,
        2763173681,
        2915017791,
        3064510765,
        3215307299,
        2156299017,
        2307622919,
        2459735317,
        2610011675,
        2081048481,
        1963412655,
        1846563261,
        1729977011,
        1480485785,
        1362321559,
        1243905413,
        1126790795,
        878845905,
        1030690015,
        645401037,
        796197571,
        274084841,
        425408743,
        38544885,
        188821243,
        3613494426,
        3731654548,
        3313212038,
        3430322568,
        4082475170,
        4200115116,
        3780097726,
        3896688048,
        2668221674,
        2516901860,
        2366882550,
        2216610296,
        3141400786,
        2989552604,
        2837966542,
        2687165888,
        1202797690,
        1320957812,
        1437280870,
        1554391400,
        1669664834,
        1787304780,
        1906247262,
        2022837584,
        265905162,
        114585348,
        499347990,
        349075736,
        736970802,
        585122620,
        972512814,
        821712160,
        2595684844,
        2478443234,
        2293045232,
        2174754046,
        3196267988,
        3079546586,
        2895723464,
        2777952454,
        3537852828,
        3687994002,
        3234156416,
        3385345166,
        4142626212,
        4293295786,
        3841024952,
        3992742070,
        174567692,
        57326082,
        410887952,
        292596766,
        777231668,
        660510266,
        1011452712,
        893681702,
        1108339068,
        1258480242,
        1343618912,
        1494807662,
        1715193156,
        1865862730,
        1948373848,
        2100090966,
        2701949495,
        2818666809,
        3004591147,
        3122358053,
        2235061775,
        2352307457,
        2535604243,
        2653899549,
        3915653703,
        3764988233,
        4219352155,
        4067639125,
        3444575871,
        3294430577,
        3746175075,
        3594982253,
        836553431,
        953270745,
        600235211,
        718002117,
        367585007,
        484830689,
        133361907,
        251657213,
        2041877159,
        1891211689,
        1806599355,
        1654886325,
        1568718495,
        1418573201,
        1335535747,
        1184342925,
    ]
    dword_6 = [
        3328402341,
        4168907908,
        4000806809,
        4135287693,
        4294111757,
        3597364157,
        3731845041,
        2445657428,
        1613770832,
        33620227,
        3462883241,
        1445669757,
        3892248089,
        3050821474,
        1303096294,
        3967186586,
        2412431941,
        528646813,
        2311702848,
        4202528135,
        4026202645,
        2992200171,
        2387036105,
        4226871307,
        1101901292,
        3017069671,
        1604494077,
        1169141738,
        597466303,
        1403299063,
        3832705686,
        2613100635,
        1974974402,
        3791519004,
        1033081774,
        1277568618,
        1815492186,
        2118074177,
        4126668546,
        2211236943,
        1748251740,
        1369810420,
        3521504564,
        4193382664,
        3799085459,
        2883115123,
        1647391059,
        706024767,
        134480908,
        2512897874,
        1176707941,
        2646852446,
        806885416,
        932615841,
        168101135,
        798661301,
        235341577,
        605164086,
        461406363,
        3756188221,
        3454790438,
        1311188841,
        2142417613,
        3933566367,
        302582043,
        495158174,
        1479289972,
        874125870,
        907746093,
        3698224818,
        3025820398,
        1537253627,
        2756858614,
        1983593293,
        3084310113,
        2108928974,
        1378429307,
        3722699582,
        1580150641,
        327451799,
        2790478837,
        3117535592,
        0,
        3253595436,
        1075847264,
        3825007647,
        2041688520,
        3059440621,
        3563743934,
        2378943302,
        1740553945,
        1916352843,
        2487896798,
        2555137236,
        2958579944,
        2244988746,
        3151024235,
        3320835882,
        1336584933,
        3992714006,
        2252555205,
        2588757463,
        1714631509,
        293963156,
        2319795663,
        3925473552,
        67240454,
        4269768577,
        2689618160,
        2017213508,
        631218106,
        1269344483,
        2723238387,
        1571005438,
        2151694528,
        93294474,
        1066570413,
        563977660,
        1882732616,
        4059428100,
        1673313503,
        2008463041,
        2950355573,
        1109467491,
        537923632,
        3858759450,
        4260623118,
        3218264685,
        2177748300,
        403442708,
        638784309,
        3287084079,
        3193921505,
        899127202,
        2286175436,
        773265209,
        2479146071,
        1437050866,
        4236148354,
        2050833735,
        3362022572,
        3126681063,
        840505643,
        3866325909,
        3227541664,
        427917720,
        2655997905,
        2749160575,
        1143087718,
        1412049534,
        999329963,
        193497219,
        2353415882,
        3354324521,
        1807268051,
        672404540,
        2816401017,
        3160301282,
        369822493,
        2916866934,
        3688947771,
        1681011286,
        1949973070,
        336202270,
        2454276571,
        201721354,
        1210328172,
        3093060836,
        2680341085,
        3184776046,
        1135389935,
        3294782118,
        965841320,
        831886756,
        3554993207,
        4068047243,
        3588745010,
        2345191491,
        1849112409,
        3664604599,
        26054028,
        2983581028,
        2622377682,
        1235855840,
        3630984372,
        2891339514,
        4092916743,
        3488279077,
        3395642799,
        4101667470,
        1202630377,
        268961816,
        1874508501,
        4034427016,
        1243948399,
        1546530418,
        941366308,
        1470539505,
        1941222599,
        2546386513,
        3421038627,
        2715671932,
        3899946140,
        1042226977,
        2521517021,
        1639824860,
        227249030,
        260737669,
        3765465232,
        2084453954,
        1907733956,
        3429263018,
        2420656344,
        100860677,
        4160157185,
        470683154,
        3261161891,
        1781871967,
        2924959737,
        1773779408,
        394692241,
        2579611992,
        974986535,
        664706745,
        3655459128,
        3958962195,
        731420851,
        571543859,
        3530123707,
        2849626480,
        126783113,
        865375399,
        765172662,
        1008606754,
        361203602,
        3387549984,
        2278477385,
        2857719295,
        1344809080,
        2782912378,
        59542671,
        1503764984,
        160008576,
        437062935,
        1707065306,
        3622233649,
        2218934982,
        3496503480,
        2185314755,
        697932208,
        1512910199,
        504303377,
        2075177163,
        2824099068,
        1841019862,
        739644986,
    ]
    dword_7 = [
        2781242211,
        2230877308,
        2582542199,
        2381740923,
        234877682,
        3184946027,
        2984144751,
        1418839493,
        1348481072,
        50462977,
        2848876391,
        2102799147,
        434634494,
        1656084439,
        3863849899,
        2599188086,
        1167051466,
        2636087938,
        1082771913,
        2281340285,
        368048890,
        3954334041,
        3381544775,
        201060592,
        3963727277,
        1739838676,
        4250903202,
        3930435503,
        3206782108,
        4149453988,
        2531553906,
        1536934080,
        3262494647,
        484572669,
        2923271059,
        1783375398,
        1517041206,
        1098792767,
        49674231,
        1334037708,
        1550332980,
        4098991525,
        886171109,
        150598129,
        2481090929,
        1940642008,
        1398944049,
        1059722517,
        201851908,
        1385547719,
        1699095331,
        1587397571,
        674240536,
        2704774806,
        252314885,
        3039795866,
        151914247,
        908333586,
        2602270848,
        1038082786,
        651029483,
        1766729511,
        3447698098,
        2682942837,
        454166793,
        2652734339,
        1951935532,
        775166490,
        758520603,
        3000790638,
        4004797018,
        4217086112,
        4137964114,
        1299594043,
        1639438038,
        3464344499,
        2068982057,
        1054729187,
        1901997871,
        2534638724,
        4121318227,
        1757008337,
        0,
        750906861,
        1614815264,
        535035132,
        3363418545,
        3988151131,
        3201591914,
        1183697867,
        3647454910,
        1265776953,
        3734260298,
        3566750796,
        3903871064,
        1250283471,
        1807470800,
        717615087,
        3847203498,
        384695291,
        3313910595,
        3617213773,
        1432761139,
        2484176261,
        3481945413,
        283769337,
        100925954,
        2180939647,
        4037038160,
        1148730428,
        3123027871,
        3813386408,
        4087501137,
        4267549603,
        3229630528,
        2315620239,
        2906624658,
        3156319645,
        1215313976,
        82966005,
        3747855548,
        3245848246,
        1974459098,
        1665278241,
        807407632,
        451280895,
        251524083,
        1841287890,
        1283575245,
        337120268,
        891687699,
        801369324,
        3787349855,
        2721421207,
        3431482436,
        959321879,
        1469301956,
        4065699751,
        2197585534,
        1199193405,
        2898814052,
        3887750493,
        724703513,
        2514908019,
        2696962144,
        2551808385,
        3516813135,
        2141445340,
        1715741218,
        2119445034,
        2872807568,
        2198571144,
        3398190662,
        700968686,
        3547052216,
        1009259540,
        2041044702,
        3803995742,
        487983883,
        1991105499,
        1004265696,
        1449407026,
        1316239930,
        504629770,
        3683797321,
        168560134,
        1816667172,
        3837287516,
        1570751170,
        1857934291,
        4014189740,
        2797888098,
        2822345105,
        2754712981,
        936633572,
        2347923833,
        852879335,
        1133234376,
        1500395319,
        3084545389,
        2348912013,
        1689376213,
        3533459022,
        3762923945,
        3034082412,
        4205598294,
        133428468,
        634383082,
        2949277029,
        2398386810,
        3913789102,
        403703816,
        3580869306,
        2297460856,
        1867130149,
        1918643758,
        607656988,
        4049053350,
        3346248884,
        1368901318,
        600565992,
        2090982877,
        2632479860,
        557719327,
        3717614411,
        3697393085,
        2249034635,
        2232388234,
        2430627952,
        1115438654,
        3295786421,
        2865522278,
        3633334344,
        84280067,
        33027830,
        303828494,
        2747425121,
        1600795957,
        4188952407,
        3496589753,
        2434238086,
        1486471617,
        658119965,
        3106381470,
        953803233,
        334231800,
        3005978776,
        857870609,
        3151128937,
        1890179545,
        2298973838,
        2805175444,
        3056442267,
        574365214,
        2450884487,
        550103529,
        1233637070,
        4289353045,
        2018519080,
        2057691103,
        2399374476,
        4166623649,
        2148108681,
        387583245,
        3664101311,
        836232934,
        3330556482,
        3100665960,
        3280093505,
        2955516313,
        2002398509,
        287182607,
        3413881008,
        4238890068,
        3597515707,
        975967766,
    ]
    dword_8 = [
        1671808611,
        2089089148,
        2006576759,
        2072901243,
        4061003762,
        1807603307,
        1873927791,
        3310653893,
        810573872,
        16974337,
        1739181671,
        729634347,
        4263110654,
        3613570519,
        2883997099,
        1989864566,
        3393556426,
        2191335298,
        3376449993,
        2106063485,
        4195741690,
        1508618841,
        1204391495,
        4027317232,
        2917941677,
        3563566036,
        2734514082,
        2951366063,
        2629772188,
        2767672228,
        1922491506,
        3227229120,
        3082974647,
        4246528509,
        2477669779,
        644500518,
        911895606,
        1061256767,
        4144166391,
        3427763148,
        878471220,
        2784252325,
        3845444069,
        4043897329,
        1905517169,
        3631459288,
        827548209,
        356461077,
        67897348,
        3344078279,
        593839651,
        3277757891,
        405286936,
        2527147926,
        84871685,
        2595565466,
        118033927,
        305538066,
        2157648768,
        3795705826,
        3945188843,
        661212711,
        2999812018,
        1973414517,
        152769033,
        2208177539,
        745822252,
        439235610,
        455947803,
        1857215598,
        1525593178,
        2700827552,
        1391895634,
        994932283,
        3596728278,
        3016654259,
        695947817,
        3812548067,
        795958831,
        2224493444,
        1408607827,
        3513301457,
        0,
        3979133421,
        543178784,
        4229948412,
        2982705585,
        1542305371,
        1790891114,
        3410398667,
        3201918910,
        961245753,
        1256100938,
        1289001036,
        1491644504,
        3477767631,
        3496721360,
        4012557807,
        2867154858,
        4212583931,
        1137018435,
        1305975373,
        861234739,
        2241073541,
        1171229253,
        4178635257,
        33948674,
        2139225727,
        1357946960,
        1011120188,
        2679776671,
        2833468328,
        1374921297,
        2751356323,
        1086357568,
        2408187279,
        2460827538,
        2646352285,
        944271416,
        4110742005,
        3168756668,
        3066132406,
        3665145818,
        560153121,
        271589392,
        4279952895,
        4077846003,
        3530407890,
        3444343245,
        202643468,
        322250259,
        3962553324,
        1608629855,
        2543990167,
        1154254916,
        389623319,
        3294073796,
        2817676711,
        2122513534,
        1028094525,
        1689045092,
        1575467613,
        422261273,
        1939203699,
        1621147744,
        2174228865,
        1339137615,
        3699352540,
        577127458,
        712922154,
        2427141008,
        2290289544,
        1187679302,
        3995715566,
        3100863416,
        339486740,
        3732514782,
        1591917662,
        186455563,
        3681988059,
        3762019296,
        844522546,
        978220090,
        169743370,
        1239126601,
        101321734,
        611076132,
        1558493276,
        3260915650,
        3547250131,
        2901361580,
        1655096418,
        2443721105,
        2510565781,
        3828863972,
        2039214713,
        3878868455,
        3359869896,
        928607799,
        1840765549,
        2374762893,
        3580146133,
        1322425422,
        2850048425,
        1823791212,
        1459268694,
        4094161908,
        3928346602,
        1706019429,
        2056189050,
        2934523822,
        135794696,
        3134549946,
        2022240376,
        628050469,
        779246638,
        472135708,
        2800834470,
        3032970164,
        3327236038,
        3894660072,
        3715932637,
        1956440180,
        522272287,
        1272813131,
        3185336765,
        2340818315,
        2323976074,
        1888542832,
        1044544574,
        3049550261,
        1722469478,
        1222152264,
        50660867,
        4127324150,
        236067854,
        1638122081,
        895445557,
        1475980887,
        3117443513,
        2257655686,
        3243809217,
        489110045,
        2662934430,
        3778599393,
        4162055160,
        2561878936,
        288563729,
        1773916777,
        3648039385,
        2391345038,
        2493985684,
        2612407707,
        505560094,
        2274497927,
        3911240169,
        3460925390,
        1442818645,
        678973480,
        3749357023,
        2358182796,
        2717407649,
        2306869641,
        219617805,
        3218761151,
        3862026214,
        1120306242,
        1756942440,
        1103331905,
        2578459033,
        762796589,
        252780047,
        2966125488,
        1425844308,
        3151392187,
        372911126,
    ]
    dword_9 = [
        1667474886,
        2088535288,
        2004326894,
        2071694838,
        4075949567,
        1802223062,
        1869591006,
        3318043793,
        808472672,
        16843522,
        1734846926,
        724270422,
        4278065639,
        3621216949,
        2880169549,
        1987484396,
        3402253711,
        2189597983,
        3385409673,
        2105378810,
        4210693615,
        1499065266,
        1195886990,
        4042263547,
        2913856577,
        3570689971,
        2728590687,
        2947541573,
        2627518243,
        2762274643,
        1920112356,
        3233831835,
        3082273397,
        4261223649,
        2475929149,
        640051788,
        909531756,
        1061110142,
        4160160501,
        3435941763,
        875846760,
        2779116625,
        3857003729,
        4059105529,
        1903268834,
        3638064043,
        825316194,
        353713962,
        67374088,
        3351728789,
        589522246,
        3284360861,
        404236336,
        2526454071,
        84217610,
        2593830191,
        117901582,
        303183396,
        2155911963,
        3806477791,
        3958056653,
        656894286,
        2998062463,
        1970642922,
        151591698,
        2206440989,
        741110872,
        437923380,
        454765878,
        1852748508,
        1515908788,
        2694904667,
        1381168804,
        993742198,
        3604373943,
        3014905469,
        690584402,
        3823320797,
        791638366,
        2223281939,
        1398011302,
        3520161977,
        0,
        3991743681,
        538992704,
        4244381667,
        2981218425,
        1532751286,
        1785380564,
        3419096717,
        3200178535,
        960056178,
        1246420628,
        1280103576,
        1482221744,
        3486468741,
        3503319995,
        4025428677,
        2863326543,
        4227536621,
        1128514950,
        1296947098,
        859002214,
        2240123921,
        1162203018,
        4193849577,
        33687044,
        2139062782,
        1347481760,
        1010582648,
        2678045221,
        2829640523,
        1364325282,
        2745433693,
        1077985408,
        2408548869,
        2459086143,
        2644360225,
        943212656,
        4126475505,
        3166494563,
        3065430391,
        3671750063,
        555836226,
        269496352,
        4294908645,
        4092792573,
        3537006015,
        3452783745,
        202118168,
        320025894,
        3974901699,
        1600119230,
        2543297077,
        1145359496,
        387397934,
        3301201811,
        2812801621,
        2122220284,
        1027426170,
        1684319432,
        1566435258,
        421079858,
        1936954854,
        1616945344,
        2172753945,
        1330631070,
        3705438115,
        572679748,
        707427924,
        2425400123,
        2290647819,
        1179044492,
        4008585671,
        3099120491,
        336870440,
        3739122087,
        1583276732,
        185277718,
        3688593069,
        3772791771,
        842159716,
        976899700,
        168435220,
        1229577106,
        101059084,
        606366792,
        1549591736,
        3267517855,
        3553849021,
        2897014595,
        1650632388,
        2442242105,
        2509612081,
        3840161747,
        2038008818,
        3890688725,
        3368567691,
        926374254,
        1835907034,
        2374863873,
        3587531953,
        1313788572,
        2846482505,
        1819063512,
        1448540844,
        4109633523,
        3941213647,
        1701162954,
        2054852340,
        2930698567,
        134748176,
        3132806511,
        2021165296,
        623210314,
        774795868,
        471606328,
        2795958615,
        3031746419,
        3334885783,
        3907527627,
        3722280097,
        1953799400,
        522133822,
        1263263126,
        3183336545,
        2341176845,
        2324333839,
        1886425312,
        1044267644,
        3048588401,
        1718004428,
        1212733584,
        50529542,
        4143317495,
        235803164,
        1633788866,
        892690282,
        1465383342,
        3115962473,
        2256965911,
        3250673817,
        488449850,
        2661202215,
        3789633753,
        4177007595,
        2560144171,
        286339874,
        1768537042,
        3654906025,
        2391705863,
        2492770099,
        2610673197,
        505291324,
        2273808917,
        3924369609,
        3469625735,
        1431699370,
        673740880,
        3755965093,
        2358021891,
        2711746649,
        2307489801,
        218961690,
        3217021541,
        3873845719,
        1111672452,
        1751693520,
        1094828930,
        2576986153,
        757954394,
        252645662,
        2964376443,
        1414855848,
        3149649517,
        370555436,
    ]
    LIST_6B0 = [
        4089235720,
        1779033703,
        2227873595,
        3144134277,
        4271175723,
        1013904242,
        1595750129,
        2773480762,
        2917565137,
        1359893119,
        725511199,
        2600822924,
        4215389547,
        528734635,
        327033209,
        1541459225,
    ]
    ord_list = [
        77,
        212,
        194,
        230,
        184,
        49,
        98,
        9,
        14,
        82,
        179,
        199,
        166,
        115,
        59,
        164,
        28,
        178,
        70,
        43,
        130,
        154,
        181,
        138,
        25,
        107,
        57,
        219,
        87,
        23,
        117,
        36,
        244,
        155,
        175,
        127,
        8,
        232,
        214,
        141,
        38,
        167,
        46,
        55,
        193,
        169,
        90,
        47,
        31,
        5,
        165,
        24,
        146,
        174,
        242,
        148,
        151,
        50,
        182,
        42,
        56,
        170,
        221,
        88,
    ]
    rodata = [
        3609767458,
        1116352408,
        602891725,
        1899447441,
        3964484399,
        3049323471,
        2173295548,
        3921009573,
        4081628472,
        961987163,
        3053834265,
        1508970993,
        2937671579,
        2453635748,
        3664609560,
        2870763221,
        2734883394,
        3624381080,
        1164996542,
        310598401,
        1323610764,
        607225278,
        3590304994,
        1426881987,
        4068182383,
        1925078388,
        991336113,
        2162078206,
        633803317,
        2614888103,
        3479774868,
        3248222580,
        2666613458,
        3835390401,
        944711139,
        4022224774,
        2341262773,
        264347078,
        2007800933,
        604807628,
        1495990901,
        770255983,
        1856431235,
        1249150122,
        3175218132,
        1555081692,
        2198950837,
        1996064986,
        3999719339,
        2554220882,
        766784016,
        2821834349,
        2566594879,
        2952996808,
        3203337956,
        3210313671,
        1034457026,
        3336571891,
        2466948901,
        3584528711,
        3758326383,
        113926993,
        168717936,
        338241895,
        1188179964,
        666307205,
        1546045734,
        773529912,
        1522805485,
        1294757372,
        2643833823,
        1396182291,
        2343527390,
        1695183700,
        1014477480,
        1986661051,
        1206759142,
        2177026350,
        344077627,
        2456956037,
        1290863460,
        2730485921,
        3158454273,
        2820302411,
        3505952657,
        3259730800,
        106217008,
        3345764771,
        3606008344,
        3516065817,
        1432725776,
        3600352804,
        1467031594,
        4094571909,
        851169720,
        275423344,
        3100823752,
        430227734,
        1363258195,
        506948616,
        3750685593,
        659060556,
        3785050280,
        883997877,
        3318307427,
        958139571,
        3812723403,
        1322822218,
        2003034995,
        1537002063,
        3602036899,
        1747873779,
        1575990012,
        1955562222,
        1125592928,
        2024104815,
        2716904306,
        2227730452,
        442776044,
        2361852424,
        593698344,
        2428436474,
        3733110249,
        2756734187,
        2999351573,
        3204031479,
        3815920427,
        3329325298,
        3928383900,
        3391569614,
        566280711,
        3515267271,
        3454069534,
        3940187606,
        4000239992,
        4118630271,
        1914138554,
        116418474,
        2731055270,
        174292421,
        3203993006,
        289380356,
        320620315,
        460393269,
        587496836,
        685471733,
        1086792851,
        852142971,
        365543100,
        1017036298,
        2618297676,
        1126000580,
        3409855158,
        1288033470,
        4234509866,
        1501505948,
        987167468,
        1607167915,
        1246189591,
        1816402316,
    ]
    list_9C8 = []

    def encrypt(self, data):
        headers = [31, 139, 8, 0, 0, 0, 0, 0, 0, 0]
        data = gzip.compress(bytes(data.encode("latin-1")), compresslevel=9, mtime=0)
        data = list(data)
        self.setData(data)
        for i in range(len(headers)):
            self.content[i] = headers[i]
        list_0B0 = self.calculate(self.list_9C8) + self.ord_list

        list_5D8 = self.calculate(list_0B0)
        list_378 = []
        list_740 = []
        for i in range(0x10):
            list_378.append(list_5D8[i])
        list_378Array = self.dump_list(list_378)
        for i in range(0x10, 0x20):
            list_740.append(list_5D8[i])

        list_8D8 = self.calculate(self.content)
        list_AB0 = list_8D8 + self.content
        list_AB0List = self.convertLongList(list_AB0)
        differ = 0x10 - len(list_AB0) % 0x10

        for i in range(differ):
            list_AB0List.append(differ)

        list_AB0 = list_AB0List

        list_55C = self.hex_CF8(list_378Array)
        final_list = self.hex_0A2(list_AB0, list_740, list_55C)
        final_list = (self.begining + self.list_9C8) + final_list
        final_list = self.changeLongArrayTobytes(final_list)

        return bytes(i % 256 for i in final_list).hex()

    def decrypt(self, data):
        data = bytearray.fromhex(data)
        data = list(data)
        self.setData(data)
        self.content = self.content_raw[38:]
        self.list_9C8 = self.content_raw[6:38]
        self.content = self.changeByteArrayToLong(self.content)
        list_0B0 = self.calculate(self.list_9C8) + self.ord_list
        list_5D8 = self.calculate(list_0B0)

        list_378 = []
        list_740 = []
        for i in range(0x10):
            list_378.append(list_5D8[i])
        list_378Array = self.dump_list(list_378)
        for i in range(0x10, 0x20):
            list_740.append(list_5D8[i])

        key_longs = self.hex_list(list_378Array)
        decrypted = self.aes_decrypt(bytes(key_longs), bytes(self.content))

        decryptedByteArray = ([0] * 16) + list(decrypted)
        toDecompress = decryptedByteArray[64:]
        result = gzip.decompress(bytes(toDecompress))
        return result.decode()

    def aes_decrypt(self, secretKey, encoded):
        initVector = encoded[0:16]
        data = encoded[16:]
        decryptor = AES.new(secretKey, AES.MODE_CBC, initVector)
        decoded = decryptor.decrypt(data)
        return decoded[: -decoded[-1]]

    def bytearray_decode(self, arrays):
        out = []
        for d in arrays:
            out.append(chr(d))
        return "".join(out)

    def changeLongArrayTobytes(self, array):
        result = []
        for i in range(len(array)):
            if array[i] > 127:
                result.append(array[i] - 256)
            else:
                result.append(array[i])
        return result

    def hex_0A2(self, content, list_740, list_55C):
        result = []
        l55cl = len(list_55C)
        lens = len(content)
        end = lens // 16
        for i in range(end):
            for j in range(16):
                list_740[j] = list_740[j] ^ content[16 * i + j]

            tmp_list = self.dump_list(list_740)
            R6 = tmp_list[3]
            LR = tmp_list[0]
            R8 = tmp_list[1]
            R12 = tmp_list[2]
            R5 = list_55C[0]
            R4 = list_55C[1]
            R1 = list_55C[2]
            R2 = list_55C[3]
            R11 = 0
            v_334 = 0
            R2 = R2 ^ R6
            v_33C = R2
            R1 = R1 ^ R12
            v_338 = R1
            R4 = R4 ^ R8
            R12 = R5 ^ LR
            for j in range(5):
                R3 = v_33C
                R9 = R4
                R0 = int(self.UBFX(R12, 0x10, 8))
                R1 = R3 >> 0x18
                R1 = self.dword_6[R1]
                R0 = self.dword_7[R0]
                R0 = R0 ^ R1
                R1 = int(self.UBFX(R4, 8, 8))
                R8 = v_338
                R1 = self.dword_8[R1]
                LR = list_55C[8 * j + 6]
                R0 = R0 ^ R1
                R1 = int(self.UTFX(R8))
                R1 = self.dword_9[R1]
                R0 = R0 ^ R1
                R1 = list_55C[8 * j + 4]
                v_334 = R1
                R1 = list_55C[8 * j + 5]
                v_330 = R1
                R1 = list_55C[8 * j + 7]
                R11 = R0 ^ R1
                R1 = int(self.UBFX(R3, 0x10, 8))
                R0 = R8 >> 24
                R0 = self.dword_6[R0]
                R1 = self.dword_7[R1]
                R0 = R0 ^ R1
                R1 = int(self.UBFX(R12, 8, 8))
                R1 = self.dword_8[R1]
                R0 = R0 ^ R1
                R1 = int(self.UTFX(R9))
                R1 = self.dword_9[R1]
                R0 = R0 ^ R1
                R1 = int(self.UBFX(R8, 0x10, 8))
                R6 = R0 ^ LR
                R0 = R9 >> 24
                R0 = self.dword_6[R0]
                R1 = self.dword_7[R1]
                R0 = R0 ^ R1
                R1 = int(self.UBFX(R3, 8, 8))
                R1 = self.dword_8[R1]
                R0 = R0 ^ R1
                R1 = int(self.UTFX(R12))
                R1 = self.dword_9[R1]
                R0 = R0 ^ R1
                R1 = v_330
                LR = R0 ^ R1
                R0 = int(self.UTFX(R3))
                R0 = self.dword_9[R0]
                R4 = R12 >> 24

                R1 = int(self.UBFX(R8, 8, 8))
                R4 = self.dword_6[R4]
                R5 = int(self.UBFX(R9, 16, 8))
                R1 = self.dword_8[R1]
                R5 = self.dword_7[R5]
                R5 = R5 ^ R4
                R1 = R1 ^ R5
                R0 = R0 ^ R1
                R1 = v_334
                R1 = R1 ^ R0
                R0 = R1 >> 0x18
                v_334 = R0
                if j == 4:
                    break
                else:
                    R4 = int(self.UBFX(R1, 16, 8))
                    R5 = R11 >> 24
                    R10 = R6
                    R5 = self.dword_6[R5]
                    R4 = self.dword_7[R4]
                    R5 = R5 ^ R4
                    R4 = int(self.UBFX(LR, 8, 8))
                    R4 = self.dword_8[R4]
                    R5 = R5 ^ R4
                    R4 = int(self.UTFX(R10))
                    R4 = self.dword_9[R4]
                    R5 = R5 ^ R4
                    R4 = list_55C[8 * j + 11]
                    R0 = R5 ^ R4
                    v_33C = R0
                    R4 = int(self.UBFX(R11, 16, 8))
                    R5 = R10 >> 24
                    R5 = self.dword_6[R5]
                    R4 = self.dword_7[R4]
                    R5 = R5 ^ R4
                    R4 = int(self.UBFX(R1, 8, 8))
                    R0 = list_55C[8 * j + 9]
                    R9 = list_55C[8 * j + 8]
                    R1 = int(self.UTFX(R1))
                    R4 = self.dword_8[R4]
                    R1 = self.dword_9[R1]
                    R5 = R5 ^ R4
                    R4 = int(self.UTFX(LR))
                    R4 = self.dword_9[R4]
                    R5 = R5 ^ R4
                    R4 = list_55C[8 * j + 10]
                    R4 = R4 ^ R5
                    v_338 = R4
                    R5 = int(self.UBFX(R10, 16, 8))
                    R4 = LR >> 24
                    R4 = self.dword_6[R4]
                    R5 = self.dword_7[R5]
                    R4 = R4 ^ R5
                    R5 = int(self.UBFX(R11, 8, 8))
                    R5 = self.dword_8[R5]
                    R4 = R4 ^ R5
                    R1 = R1 ^ R4
                    R4 = R1 ^ R0
                    R0 = v_334
                    R1 = int(self.UBFX(LR, 16, 8))
                    R5 = int(self.UBFX(R10, 8, 8))
                    R0 = self.dword_6[R0]
                    R1 = self.dword_7[R1]
                    R5 = self.dword_8[R5]
                    R0 = R0 ^ R1
                    R1 = int(self.UTFX(R11))
                    R1 = self.dword_9[R1]
                    R0 = R0 ^ R5
                    R0 = R0 ^ R1
                    R12 = R0 ^ R9
            R2 = R11 >> 24
            R3 = int(self.UBFX(R1, 16, 8))
            R10 = R6
            R0 = R10 >> 24
            R2 = self.dword_0[R2]

            R2 = int(self.parseLong(self.toHex(R2) + "000000", 10, 16))
            R9 = R10
            R3 = self.dword_0[R3]
            R3 = int(self.parseLong(self.toHex(R3) + "0000", 10, 16))
            R0 = self.dword_0[R0]
            R0 = int(self.parseLong(self.toHex(R0) + "000000", 10, 16))
            R2 = R2 ^ R3
            v_350 = R2
            R2 = int(self.UBFX(R11, 0x10, 8))
            R2 = self.dword_0[R2]
            R2 = int(self.parseLong(self.toHex(R2) + "0000", 10, 16))
            R0 = R0 ^ R2
            R2 = int(self.UBFX(R1, 8, 8))
            R1 = int(self.UTFX(R1))
            R2 = self.dword_0[R2]
            R2 = int(self.parseLong(self.toHex(R2) + "00", 10, 16))
            R1 = self.dword_0[R1]
            R0 = R0 ^ R2
            R2 = int(self.UTFX(LR))
            R2 = self.dword_0[R2]
            R12 = R0 ^ R2
            R0 = list_55C[l55cl - 2]
            R10 = list_55C[l55cl - 3]
            R12 = R12 ^ R0
            R2 = list_55C[l55cl - 1]
            R0 = LR >> 24
            v_34C = R2
            R2 = int(self.UBFX(R9, 0x10, 8))
            R0 = self.dword_0[R0]
            R0 = int(self.parseLong(self.toHex(R0) + "000000", 10, 16))
            R2 = self.dword_0[R2]
            R2 = int(self.parseLong(self.toHex(R2) + "0000", 10, 16))
            R0 = R0 ^ R2
            R2 = int(self.UBFX(R11, 8, 8))
            R2 = self.dword_0[R2]
            R2 = int(self.parseLong(self.toHex(R2) + "00", 10, 16))
            R0 = R0 ^ R2
            R0 = R0 ^ R1
            R1 = R0 ^ R10
            R0 = v_334
            R2 = int(self.UBFX(LR, 0x10, 8))
            R0 = self.dword_0[R0]
            R0 = int(self.parseLong(self.toHex(R0) + "000000", 10, 16))
            R2 = self.dword_0[R2]
            R2 = int(self.parseLong(self.toHex(R2) + "0000", 10, 16))
            R0 = R0 ^ R2
            R2 = int(self.UBFX(R9, 8, 8))
            R2 = self.dword_0[R2]
            R2 = int(self.parseLong(self.toHex(R2) + "00", 10, 16))
            R0 = R0 ^ R2
            R2 = int(self.UTFX(R11))
            R2 = self.dword_0[R2]
            R0 = R0 ^ R2
            R2 = int(self.UTFX(R9))
            R2 = self.dword_0[R2]
            R3 = int(self.UBFX(LR, 8, 8))
            R3 = self.dword_0[R3]
            R3 = int(self.parseLong(self.toHex(R3) + "00", 10, 16))
            R5 = v_350
            R6 = list_55C[l55cl - 4]
            R3 = R3 ^ R5
            R2 = R2 ^ R3
            R3 = v_34C
            R0 = R0 ^ R6
            R2 = R2 ^ R3
            list_740 = self.hex_list([R0, R1, R12, R2])
            result = result + list_740

        return result

    def calculate(self, content):
        hex_6A8 = 0
        tmp_list = []
        length = len(content)
        list_6B0 = self.LIST_6B0.copy()

        for item in content:
            tmp_list.append(item)

        divisible = length % 0x80
        tmp = 0x80 - divisible

        if tmp > 0x11:
            tmp_list.append(0x80)
            for i in range(tmp - 0x11):
                tmp_list.append(0)

            for j in range(16):
                tmp_list.append(0)
        else:
            tmp_list.append(128)

            for i in range(128 - 16 + tmp + 1):
                tmp_list.append(0)

            for j in range(16):
                tmp_list.append(0)

        tmp_list_size = len(tmp_list)
        d = tmp_list_size // 0x80
        for i in range(tmp_list_size // 0x80):
            if (tmp_list_size // 128 - 1) == i:
                ending = self.handle_ending(hex_6A8, divisible)
                for j in range(8):
                    index = tmp_list_size - j - 1
                    tmp_list[index] = ending[7 - j]

            param_list = []
            for j in range(32):
                tmpss = ""
                for k in range(4):
                    tmp_string = self.toHex(tmp_list[0x80 * i + 4 * j + k])
                    if len(tmp_string) < 2:
                        tmp_string = "0" + tmp_string

                    tmpss = tmpss + tmp_string

                param_list.append(int(self.parseLong(tmpss, 10, 16)))

            list_3B8 = self.hex_27E(param_list)

            list_6B0 = self.hex_30A(list_6B0, list_3B8)

            hex_6A8 += 0x400

        list_8D8 = self.hex_C52(list_6B0)
        return list_8D8

    def convertLongList(self, content):
        if len(content) == 0:
            return []
        result = []
        for i in content:
            result.append(i)
        return result

    def dump_list(self, content):
        size = len(content)
        ssize = size // 4
        result = []
        for index in range(ssize):
            tmp_string = ""
            for j in range(4):
                tmp = self.toHex(content[4 * index + j])
                if len(tmp) < 2:
                    tmp = "0" + tmp

                tmp_string = tmp_string + tmp
            i = int(self.parseLong(tmp_string, 10, 16))
            result.append(int(i))
        return result

    def hex_CF8(self, param_list):
        list_388 = []
        list_378 = param_list
        for i in range(0xA):
            R3 = list_378[0]
            R8 = list_378[1]
            R9 = list_378[2]
            R5 = list_378[3]
            R6 = int(self.UBFX(R5, 8, 8))
            R6 = self.dword_0[R6]
            R6 = int(self.parseLong(self.toHex(R6) + "0000", 10, 16))
            R4 = int(self.UBFX(R5, 0x10, 8))
            R11 = self.dword_1[i]
            R4 = self.dword_0[R4]
            R4 = int(self.parseLong(self.toHex(R4) + "000000", 10, 16))
            R3 = R3 ^ R4
            R4 = int(self.UTFX(R5))
            R3 = R3 ^ R6
            R4 = self.dword_0[R4]
            R4 = int(self.parseLong(self.toHex(R4) + "00", 10, 16))
            R3 = R3 ^ R4
            R4 = R5 >> 24
            R4 = self.dword_0[R4]
            R3 = R3 ^ R4
            R3 = R3 ^ R11
            R2 = R8 ^ R3
            R4 = R9 ^ R2
            R5 = R5 ^ R4
            list_378 = [R3, R2, R4, R5]
            list_388 = list_388 + list_378
        l388l = len(list_388)
        list_478 = []
        for i in range(0x9):
            R5 = list_388[l388l - 8 - 4 * i]
            R4 = int(self.UBFX(R5, 0x10, 8))
            R6 = R5 >> 0x18
            R6 = self.dword_2[R6]
            R4 = self.dword_3[R4]
            R6 = R6 ^ R4
            R4 = int(self.UBFX(R5, 8, 8))
            R5 = int(self.UTFX(R5))
            R4 = self.dword_4[R4]
            R5 = self.dword_5[R5]
            R6 = R6 ^ R4
            R6 = R6 ^ R5
            list_478.append(R6)
            R6 = list_388[l388l - 7 - 4 * i]
            R1 = int(self.UBFX(R6, 0x10, 8))
            R4 = R6 >> 0x18
            R4 = self.dword_2[R4]
            R1 = self.dword_3[R1]
            R1 = R1 ^ R4
            R4 = int(self.UBFX(R6, 8, 8))
            R4 = self.dword_4[R4]
            R1 = R1 ^ R4
            R4 = int(self.UTFX(R6))
            R4 = self.dword_5[R4]
            R1 = R1 ^ R4
            list_478.append(R1)
            R1 = list_388[l388l - 6 - 4 * i]
            R6 = int(self.UBFX(R1, 0x10, 8))
            R4 = R1 >> 0x18
            R4 = self.dword_2[R4]
            R6 = self.dword_3[R6]
            R4 = R4 ^ R6
            R6 = int(self.UBFX(R1, 8, 8))
            R1 = int(self.UTFX(R1))
            R6 = self.dword_4[R6]
            R1 = self.dword_5[R1]
            R4 = R4 ^ R6
            R1 = R1 ^ R4
            list_478.append(R1)
            R0 = list_388[l388l - 5 - 4 * i]
            R1 = int(self.UTFX(R0))
            R4 = int(self.UBFX(R0, 8, 8))
            R6 = R0 >> 0x18
            R0 = int(self.UBFX(R0, 0x10, 8))
            R6 = self.dword_2[R6]
            R0 = self.dword_3[R0]
            R4 = self.dword_4[R4]
            R1 = self.dword_5[R1]
            R0 = R0 ^ R6
            R0 = R0 ^ R4
            R0 = R0 ^ R1
            list_478.append(R0)
        list_468 = param_list + list_388
        return list_468

    def handle_ending(self, num, r0):
        s = self.toHex(num)
        r1 = None
        r2 = None
        if len(s) <= 8:
            r1 = num
            r2 = 0
        else:
            num_str = self.toHex(num)
            length = len(num)
            r1 = self.parseLong(num_str[: length - 8], 10, 16)
            r2 = self.parseLong(num_str[2 : length - 8], 10, 16)

        r1 = self.ADDS(r1, r0 << 3)
        r2 = self.ADC(r2, r0 >> 29)
        a = self.hex_list([r2, r1])
        return self.hex_list([r2, r1])

    def UTFX(self, num):
        tmp_string = self.toBinaryString(num)
        start = len(tmp_string) - 8
        return self.parseLong(tmp_string[start:], 10, 2)

    def hex_27E(self, param_list):
        r6 = param_list[0]
        r8 = param_list[1]
        for i in range(0x40):
            r0 = param_list[2 * i + 0x1C]
            r5 = param_list[2 * i + 0x1D]
            r4 = self.LSRS(r0, 0x13)
            r3 = self.LSRS(r0, 0x1D)
            lr = r4 | self.check(r5) << 13
            r4 = self.LSLS(r0, 3)
            r4 = r4 | self.check(r5) >> 29
            r3 = r3 | self.check(r5) << 3
            r4 = r4 ^ self.check(r0) >> 6
            lr = lr ^ r4
            r4 = self.LSRS(r5, 6)
            r4 = r4 | self.check(r0) << 26
            r9 = r3 ^ r4
            r4 = self.LSRS(r5, 0x13)
            r0 = r4 | self.check(r0) << 13
            r10 = param_list[2 * i + 0x12]
            r3 = param_list[2 * i + 0x13]
            r5 = param_list[2 * i + 0x2]
            r4 = param_list[2 * i + 0x3]
            r0 = r0 ^ r9
            r3 = self.ADDS(r3, r8)
            r6 = self.ADC(r6, r10)
            r8 = self.ADDS(r3, r0)
            lr = self.ADC(lr, r6)
            r6 = self.LSRS(r4, 7)
            r3 = self.LSRS(r4, 8)
            r6 = r6 | self.check(r5) << 25
            r3 = r3 | self.check(r5) << 24
            r3 = int(self.EORS(r3, r6))
            r6 = self.LSRS(r5, 1)
            r0 = int(self.RRX(r4))
            r0 = int(self.EORS(r0, r3))
            r3 = r6 | self.check(r4) << 31
            r6 = self.LSRS(r5, 8)
            r0 = int(self.ADDS(r0, r8))
            r6 = r6 | self.check(r4) << 24
            r8 = r4
            r6 = r6 ^ self.check(r5) >> 7
            r3 = r3 ^ r6
            r6 = r5

            r3 = self.ADC(r3, lr)
            param_list = param_list + [r3, r0]

        return param_list

    def hex_30A(self, param_list, list_3B8):
        v_3A0 = param_list[7]
        v_3A4 = param_list[6]
        v_374 = param_list[5]
        v_378 = param_list[4]
        LR = param_list[0]
        R12 = param_list[1]
        v_39C = param_list[2]
        v_398 = param_list[3]
        v_3AC = param_list[11]
        v_3A8 = param_list[10]
        R9 = param_list[12]
        R10 = param_list[13]
        R5 = param_list[9]
        R8 = param_list[8]
        R4 = param_list[15]
        R6 = param_list[14]
        for index in range(10):
            v_384 = R5
            R3 = self.rodata[0x10 * index]
            R1 = self.rodata[0x10 * index + 2]
            R2 = self.rodata[0x10 * index + 1]
            R3 = self.ADDS(R3, R6)

            R6 = self.check(R8) >> 14

            v_390 = R1
            R6 = R6 | self.check(R5) << 18

            R1 = self.rodata[0x10 * index + 3]
            R0 = self.rodata[0x10 * index + 4]
            v_36C = R0
            R0 = self.ADC(R2, R4)
            R2 = self.LSRS(R5, 0x12)
            R4 = self.LSRS(R5, 0xE)
            R2 = R2 | self.check(R8) << 14
            R4 = R4 | self.check(R8) << 18
            R2 = self.EORS(R2, R4)
            R4 = self.LSLS(R5, 0x17)
            R4 = R4 | self.check(R8) >> 9
            v_38C = R1
            R2 = self.EORS(R2, R4)
            R4 = self.check(R8) >> 18
            R4 = R4 | self.check(R5) << 14
            R6 = self.EORS(R6, R4)
            R4 = self.LSRS(R5, 9)
            R4 = R4 | self.check(R8) << 23
            v_354 = R8
            R6 = self.EORS(R6, R4)
            R3 = self.ADDS(R3, R6)
            R0 = self.ADCS(R0, R2)
            R2 = list_3B8[0x10 * index + 1]
            R2 = self.ADDS(R2, R3)
            R3 = list_3B8[0x10 * index + 3]
            R6 = list_3B8[0x10 * index]
            v_358 = R10
            R6 = self.ADCS(R6, R0)
            R0 = v_3AC
            v_360 = R3
            R0 = R0 ^ R10
            R3 = list_3B8[0x10 * index + 2]
            R0 = self.ANDS(R0, R5)
            R1 = list_3B8[0x10 * index + 5]
            R4 = R0 ^ R10
            R0 = v_3A8
            v_364 = R1
            R0 = R0 ^ R9
            R1 = v_374
            R0 = R0 & R8
            R8 = v_39C
            R0 = R0 ^ R9
            v_35C = R3
            R10 = self.ADDS(R2, R0)
            R0 = v_398
            R11 = self.ADC(R6, R4)
            R3 = v_378
            R2 = R0 | R12
            R6 = R0 & R12
            R2 = self.ANDS(R2, R1)
            R1 = R0
            R2 = self.ORRS(R2, R6)
            R6 = R8 | LR
            R6 = self.ANDS(R6, R3)
            R3 = R8 & LR
            R3 = self.ORRS(R3, R6)
            R6 = self.check(R12) << 30
            R0 = self.check(R12) >> 28
            R6 = R6 | self.check(LR) >> 2
            R0 = R0 | self.check(LR) << 4
            R4 = self.check(LR) >> 28
            R0 = self.EORS(R0, R6)
            R6 = self.check(R12) << 25
            R6 = R6 | self.check(LR) >> 7
            R4 = R4 | self.check(R12) << 4
            R0 = self.EORS(R0, R6)
            R6 = self.check(R12) >> 2
            R6 = R6 | self.check(LR) << 30
            R3 = self.ADDS(R3, R10)
            R6 = R6 ^ R4
            R4 = self.check(R12) >> 7
            R4 = R4 | self.check(LR) << 25
            R2 = self.ADC(R2, R11)
            R6 = self.EORS(R6, R4)
            v_37C = R12
            R5 = self.ADDS(R3, R6)
            R6 = self.ADC(R2, R0)
            R0 = R6 | R12
            R2 = R6 & R12
            R0 = self.ANDS(R0, R1)
            R3 = self.LSRS(R6, 0x1C)
            R0 = self.ORRS(R0, R2)
            R2 = self.LSLS(R6, 0x1E)
            R2 = R2 | self.check(R5) >> 2
            R3 = R3 | self.check(R5) << 4
            R2 = self.EORS(R2, R3)
            R3 = self.LSLS(R6, 0x19)
            R3 = R3 | self.check(R5) >> 7
            R4 = self.LSRS(R5, 0x1C)
            R3 = self.EORS(R3, R2)
            R2 = self.LSRS(R6, 2)
            R2 = R2 | self.check(R5) << 30
            R4 = R4 | self.check(R6) << 4
            R2 = self.EORS(R2, R4)
            R4 = self.LSRS(R6, 7)
            R4 = R4 | self.check(R5) << 25
            R12 = R6
            R2 = self.EORS(R2, R4)
            R4 = R5 | LR
            R4 = R4 & R8
            R6 = R5 & LR
            R4 = self.ORRS(R4, R6)
            v_388 = R5
            R5 = self.ADDS(R2, R4)
            R0 = self.ADCS(R0, R3)
            v_398 = R1
            R4 = R9
            v_350 = R0
            R0 = v_3A4
            R1 = v_3A0
            v_380 = LR
            LR = self.ADDS(R0, R10)
            R9 = self.ADC(R1, R11)
            R0 = v_3AC
            R6 = self.check(LR) >> 14
            R1 = v_384
            R3 = self.check(R9) >> 18
            R2 = self.check(R9) >> 14
            R3 = R3 | self.check(LR) << 14
            R2 = R2 | self.check(LR) << 18
            R2 = self.EORS(R2, R3)
            R3 = self.check(R9) << 23
            R3 = R3 | self.check(LR) >> 9
            R6 = R6 | self.check(R9) << 18
            R2 = self.EORS(R2, R3)
            R3 = self.check(LR) >> 18
            R3 = R3 | self.check(R9) << 14
            v_39C = R8
            R3 = self.EORS(R3, R6)
            R6 = self.check(R9) >> 9
            R6 = R6 | self.check(LR) << 23
            R8 = v_354
            R3 = self.EORS(R3, R6)
            R6 = R0 ^ R1
            R6 = R6 & R9
            v_370 = R12
            R6 = self.EORS(R6, R0)
            R0 = v_3A8
            R1 = R0 ^ R8
            R1 = R1 & LR
            R1 = self.EORS(R1, R0)
            R0 = v_358
            R1 = self.ADDS(R1, R4)
            R6 = self.ADCS(R6, R0)
            R0 = v_390
            R1 = self.ADDS(R1, R0)
            R0 = v_38C
            R6 = self.ADCS(R6, R0)
            R0 = v_360
            R1 = self.ADDS(R1, R0)
            R0 = v_35C
            R6 = self.ADCS(R6, R0)
            R1 = self.ADDS(R1, R3)
            R3 = self.ADC(R6, R2)
            R2 = v_350
            R0 = self.ADDS(R5, R1)
            R5 = v_37C
            R4 = self.ADC(R2, R3)
            v_390 = R4
            R2 = R4 | R12
            R6 = R4 & R12
            R2 = self.ANDS(R2, R5)
            R5 = self.LSRS(R4, 0x1C)
            R10 = R2 | R6
            R2 = self.LSLS(R4, 0x1E)
            R2 = R2 | self.check(R0) >> 2
            R5 = R5 | self.check(R0) << 4
            R2 = self.EORS(R2, R5)
            R5 = self.LSLS(R4, 0x19)
            R5 = R5 | self.check(R0) >> 7
            R6 = self.LSRS(R0, 0x1C)
            R12 = R2 ^ R5
            R2 = self.LSRS(R4, 2)
            R2 = R2 | self.check(R0) << 30
            R6 = R6 | self.check(R4) << 4
            R2 = self.EORS(R2, R6)
            R6 = self.LSRS(R4, 7)
            R4 = v_388
            R6 = R6 | self.check(R0) << 25
            R5 = v_380
            R2 = self.EORS(R2, R6)
            R6 = R0 | R4
            R4 = self.ANDS(R4, R0)
            R6 = self.ANDS(R6, R5)
            v_38C = R0
            R4 = self.ORRS(R4, R6)
            R6 = LR ^ R8
            R0 = self.ADDS(R2, R4)
            v_3A4 = R0
            R0 = self.ADC(R12, R10)
            v_3A0 = R0
            R0 = v_378
            R10 = self.ADDS(R1, R0)
            R0 = v_374
            R6 = R6 & R10
            R1 = self.ADC(R3, R0)
            R5 = self.check(R10) >> 14
            R0 = v_384
            R6 = R6 ^ R8
            R3 = self.LSRS(R1, 0x12)
            R4 = self.LSRS(R1, 0xE)
            R3 = R3 | self.check(R10) << 14
            R4 = R4 | self.check(R10) << 18
            R3 = self.EORS(R3, R4)
            R4 = self.LSLS(R1, 0x17)
            R4 = R4 | self.check(R10) >> 9
            R5 = R5 | self.check(R1) << 18
            R11 = R3 ^ R4
            R3 = self.check(R10) >> 18
            R3 = R3 | self.check(R1) << 14
            v_378 = R1
            R3 = self.EORS(R3, R5)
            R5 = self.LSRS(R1, 9)
            R5 = R5 | self.check(R10) << 23
            R3 = self.EORS(R3, R5)
            R5 = R9 ^ R0
            R5 = self.ANDS(R5, R1)
            R1 = v_3A8
            R5 = self.EORS(R5, R0)
            R0 = v_36C
            R4 = self.ADDS(R0, R1)
            R2 = self.rodata[0x10 * index + 5]
            R0 = v_3AC
            R2 = self.ADCS(R2, R0)
            R0 = v_364
            R4 = self.ADDS(R4, R0)
            R12 = list_3B8[0x10 * index + 4]
            R0 = v_3A4
            R2 = self.ADC(R2, R12)
            R6 = self.ADDS(R6, R4)
            R2 = self.ADCS(R2, R5)
            R3 = self.ADDS(R3, R6)
            R11 = self.ADC(R11, R2)
            R1 = self.ADDS(R0, R3)
            R0 = v_3A0
            R6 = v_390
            R4 = self.check(R1) >> 28
            R0 = self.ADC(R0, R11)
            R5 = v_370
            R2 = R0 | R6
            R6 = self.ANDS(R6, R0)
            R2 = self.ANDS(R2, R5)
            R5 = self.LSRS(R0, 0x1C)
            R12 = R2 | R6
            R6 = self.LSLS(R0, 0x1E)
            R6 = R6 | self.check(R1) >> 2
            R5 = R5 | self.check(R1) << 4
            R6 = self.EORS(R6, R5)
            R5 = self.LSLS(R0, 0x19)
            R5 = R5 | self.check(R1) >> 7
            R4 = R4 | self.check(R0) << 4
            R6 = self.EORS(R6, R5)
            R5 = self.LSRS(R0, 2)
            R5 = R5 | self.check(R1) << 30
            v_3AC = R0
            R5 = self.EORS(R5, R4)
            R4 = self.LSRS(R0, 7)
            R0 = v_38C
            R4 = R4 | self.check(R1) << 25
            R2 = v_388
            R5 = self.EORS(R5, R4)
            R4 = R1 | R0
            v_3A8 = R1
            R4 = self.ANDS(R4, R2)
            R2 = R1 & R0
            R2 = self.ORRS(R2, R4)
            R0 = self.ADDS(R5, R2)
            v_3A4 = R0
            R0 = self.ADC(R6, R12)
            v_3A0 = R0
            R0 = v_39C
            R2 = v_398
            R0 = self.ADDS(R0, R3)
            v_39C = R0
            R11 = self.ADC(R11, R2)
            R4 = self.LSRS(R0, 0xE)
            R3 = self.check(R11) >> 18
            R6 = self.check(R11) >> 14
            R3 = R3 | self.check(R0) << 14
            R6 = R6 | self.check(R0) << 18
            R3 = self.EORS(R3, R6)
            R6 = self.check(R11) << 23
            R6 = R6 | self.check(R0) >> 9
            R4 = R4 | self.check(R11) << 18
            R1 = self.EORS(R3, R6)
            R6 = self.LSRS(R0, 0x12)
            R6 = R6 | self.check(R11) << 14
            R3 = R10 ^ LR
            R6 = self.EORS(R6, R4)
            R4 = self.check(R11) >> 9
            R3 = self.ANDS(R3, R0)
            R4 = R4 | self.check(R0) << 23
            R5 = R6 ^ R4
            v_398 = R1
            R3 = R3 ^ LR
            R1 = v_378
            R6 = self.rodata[0x10 * index + 6]
            R12 = self.rodata[0x10 * index + 7]
            R4 = R1 ^ R9
            R0 = v_384
            R6 = self.ADDS(R6, R8)
            R4 = R4 & R11
            R12 = self.ADC(R12, R0)
            R4 = R4 ^ R9
            R8 = list_3B8[0x10 * index + 7]
            R2 = list_3B8[0x10 * index + 6]
            R6 = self.ADDS(R6, R8)
            R0 = v_398
            R2 = self.ADC(R2, R12)
            R3 = self.ADDS(R3, R6)
            R2 = self.ADCS(R2, R4)
            R6 = self.ADDS(R3, R5)
            R12 = self.ADC(R2, R0)
            R0 = v_3A4
            R4 = v_390
            R1 = self.ADDS(R0, R6)
            R0 = v_3A0
            v_384 = R1
            R5 = self.ADC(R0, R12)
            R0 = v_3AC
            R8 = self.check(R1) >> 28
            R2 = R5 | R0
            R3 = R8 | self.check(R5) << 4
            R2 = self.ANDS(R2, R4)
            R4 = R5 & R0
            R0 = R2 | R4
            R4 = self.LSLS(R5, 0x1E)
            R2 = self.LSRS(R5, 0x1C)
            R4 = R4 | self.check(R1) >> 2
            R2 = R2 | self.check(R1) << 4
            v_3A0 = R0
            R2 = self.EORS(R2, R4)
            R4 = self.LSLS(R5, 0x19)
            R4 = R4 | self.check(R1) >> 7
            R0 = v_3A8
            R2 = self.EORS(R2, R4)
            R4 = self.LSRS(R5, 2)
            R4 = R4 | self.check(R1) << 30
            R8 = R5
            R3 = self.EORS(R3, R4)
            R4 = self.LSRS(R5, 7)
            R4 = R4 | self.check(R1) << 25
            R5 = v_38C
            R3 = self.EORS(R3, R4)
            R4 = R1 | R0
            R4 = self.ANDS(R4, R5)
            R5 = R1 & R0
            R4 = self.ORRS(R4, R5)
            v_36C = R8
            R0 = self.ADDS(R3, R4)
            v_3A4 = R0
            R0 = v_3A0
            R0 = self.ADCS(R0, R2)
            v_3A0 = R0
            R0 = v_380
            R2 = v_37C
            R0 = self.ADDS(R0, R6)
            R5 = self.ADC(R12, R2)
            v_37C = R5
            R4 = self.LSRS(R0, 0xE)
            v_380 = R0
            R2 = self.LSRS(R5, 0x12)
            R3 = self.LSRS(R5, 0xE)
            R2 = R2 | self.check(R0) << 14
            R3 = R3 | self.check(R0) << 18
            R2 = self.EORS(R2, R3)
            R3 = self.LSLS(R5, 0x17)
            R3 = R3 | self.check(R0) >> 9
            R4 = R4 | self.check(R5) << 18
            R1 = R2 ^ R3
            R3 = self.LSRS(R0, 0x12)
            R3 = R3 | self.check(R5) << 14
            v_398 = R1
            R3 = self.EORS(R3, R4)
            R4 = self.LSRS(R5, 9)
            R1 = v_378
            R4 = R4 | self.check(R0) << 23
            R12 = R3 ^ R4
            R3 = list_3B8[0x10 * index + 9]
            R4 = R11 ^ R1
            R4 = self.ANDS(R4, R5)
            R4 = self.EORS(R4, R1)
            R1 = v_39C
            R5 = R1 ^ R10
            R5 = self.ANDS(R5, R0)
            R5 = R5 ^ R10
            R2 = self.rodata[0x10 * index + 8]
            R0 = self.ADDS(R2, LR)
            R2 = self.rodata[0x10 * index + 9]
            R2 = self.ADC(R2, R9)
            R0 = self.ADDS(R0, R3)
            R3 = list_3B8[0x10 * index + 8]
            R2 = self.ADCS(R2, R3)
            R0 = self.ADDS(R0, R5)
            R2 = self.ADCS(R2, R4)
            R1 = self.ADDS(R0, R12)
            R0 = v_398
            R3 = v_3AC
            R4 = self.ADC(R2, R0)
            R0 = v_3A4
            R6 = self.ADDS(R0, R1)
            R0 = v_3A0
            v_3A4 = R6
            R0 = self.ADCS(R0, R4)
            v_3A0 = R0
            R2 = R0 | R8
            R2 = self.ANDS(R2, R3)
            R3 = R0 & R8
            LR = R2 | R3
            R8 = R6
            R3 = self.LSLS(R0, 0x1E)
            R5 = self.LSRS(R0, 0x1C)
            R3 = R3 | self.check(R8) >> 2
            R5 = R5 | self.check(R8) << 4
            R3 = self.EORS(R3, R5)
            R5 = self.LSLS(R0, 0x19)
            R5 = R5 | self.check(R8) >> 7
            R2 = self.check(R8) >> 28
            R12 = R3 ^ R5
            R5 = self.LSRS(R0, 2)
            R5 = R5 | self.check(R8) << 30
            R2 = R2 | self.check(R0) << 4
            R2 = self.EORS(R2, R5)
            R5 = self.LSRS(R0, 7)
            R3 = v_384
            R5 = R5 | self.check(R8) << 25
            R6 = v_3A8
            R2 = self.EORS(R2, R5)
            R5 = R8 | R3
            R5 = self.ANDS(R5, R6)
            R6 = R8 & R3
            R5 = self.ORRS(R5, R6)
            R0 = self.ADDS(R2, R5)
            v_398 = R0
            R2 = v_388
            R12 = self.ADC(R12, LR)
            R0 = v_370
            R3 = self.ADDS(R1, R2)
            R1 = v_380
            R8 = self.ADC(R4, R0)
            R0 = R3
            R2 = self.check(R8) >> 18
            R3 = self.check(R8) >> 14
            R2 = R2 | self.check(R0) << 14
            R3 = R3 | self.check(R0) << 18
            R2 = self.EORS(R2, R3)
            R3 = self.check(R8) << 23
            R3 = R3 | self.check(R0) >> 9
            R4 = self.LSRS(R0, 0xE)
            LR = R2 ^ R3
            R3 = self.LSRS(R0, 0x12)
            R3 = R3 | self.check(R8) << 14
            R4 = R4 | self.check(R8) << 18
            R3 = self.EORS(R3, R4)
            R4 = self.check(R8) >> 9
            R4 = R4 | self.check(R0) << 23
            R2 = R0
            R0 = v_37C
            R3 = self.EORS(R3, R4)
            v_388 = R2
            R4 = R0 ^ R11
            R0 = v_39C
            R4 = R4 & R8
            R5 = R1 ^ R0
            R4 = R4 ^ R11
            R5 = self.ANDS(R5, R2)
            R5 = self.EORS(R5, R0)
            R6 = self.rodata[0x10 * index + 10]
            R1 = self.ADDS(R6, R10)
            R6 = self.rodata[0x10 * index + 11]
            R0 = v_378
            R6 = self.ADCS(R6, R0)
            R2 = list_3B8[0x10 * index + 11]
            R1 = self.ADDS(R1, R2)
            R2 = list_3B8[0x10 * index + 10]
            R0 = v_398
            R2 = self.ADCS(R2, R6)
            R1 = self.ADDS(R1, R5)
            R2 = self.ADCS(R2, R4)
            R1 = self.ADDS(R1, R3)
            R4 = self.ADC(R2, LR)
            R6 = v_3A0
            R0 = self.ADDS(R0, R1)
            R9 = self.ADC(R12, R4)
            R3 = v_36C
            R2 = R9 | R6
            R5 = self.check(R9) >> 28
            v_374 = R9
            R2 = self.ANDS(R2, R3)
            R3 = R9 & R6
            R10 = R2 | R3
            R3 = self.check(R9) << 30
            R3 = R3 | self.check(R0) >> 2
            R5 = R5 | self.check(R0) << 4
            R3 = self.EORS(R3, R5)
            R5 = self.check(R9) << 25
            R5 = R5 | self.check(R0) >> 7
            R6 = self.LSRS(R0, 0x1C)
            R12 = R3 ^ R5
            R5 = self.check(R9) >> 2
            R5 = R5 | self.check(R0) << 30
            R6 = R6 | self.check(R9) << 4
            R5 = self.EORS(R5, R6)
            R6 = self.check(R9) >> 7
            R3 = v_3A4
            R6 = R6 | self.check(R0) << 25
            R2 = v_384
            R5 = self.EORS(R5, R6)
            R6 = R0 | R3
            R6 = self.ANDS(R6, R2)
            R2 = R0 & R3
            R2 = R2 | R6
            R2 = self.ADDS(R2, R5)
            v_398 = R2
            R2 = self.ADC(R12, R10)
            v_378 = R2
            R2 = v_38C
            R12 = self.ADDS(R1, R2)
            R1 = v_390
            LR = self.ADC(R4, R1)
            R4 = self.check(R12) >> 14
            R1 = self.check(LR) >> 18
            R2 = self.check(LR) >> 14
            R1 = R1 | self.check(R12) << 14
            R2 = R2 | self.check(R12) << 18
            R1 = self.EORS(R1, R2)
            R2 = self.check(LR) << 23
            R2 = R2 | self.check(R12) >> 9
            R4 = R4 | self.check(LR) << 18
            R1 = self.EORS(R1, R2)
            R2 = self.check(R12) >> 18
            R2 = R2 | self.check(LR) << 14
            v_390 = R1
            R2 = self.EORS(R2, R4)
            R4 = self.check(LR) >> 9
            R1 = v_37C
            R4 = R4 | self.check(R12) << 23
            R10 = R2 ^ R4
            R2 = v_388
            R4 = R8 ^ R1
            R4 = R4 & LR
            R4 = self.EORS(R4, R1)
            R1 = v_380
            R5 = R2 ^ R1
            R2 = v_39C
            R5 = R5 & R12
            R5 = self.EORS(R5, R1)
            R6 = self.rodata[0x10 * index + 12]
            R3 = self.rodata[0x10 * index + 13]
            R6 = self.ADDS(R6, R2)
            R3 = self.ADC(R3, R11)
            R1 = list_3B8[0x10 * index + 13]
            R1 = self.ADDS(R1, R6)
            R6 = list_3B8[0x10 * index + 12]
            R3 = self.ADCS(R3, R6)
            R1 = self.ADDS(R1, R5)
            R3 = self.ADCS(R3, R4)
            R5 = self.ADDS(R1, R10)
            R1 = v_390
            R2 = self.ADC(R3, R1)
            R1 = v_398
            R3 = v_3A0
            R10 = self.ADDS(R1, R5)
            R1 = v_378
            v_378 = R0
            R11 = self.ADC(R1, R2)
            R6 = self.check(R10) >> 28
            R1 = R11 | R9
            v_398 = R11
            R1 = self.ANDS(R1, R3)
            R3 = R11 & R9
            R9 = R1 | R3
            R3 = self.check(R11) << 30
            R4 = self.check(R11) >> 28
            R3 = R3 | self.check(R10) >> 2
            R4 = R4 | self.check(R10) << 4
            R6 = R6 | self.check(R11) << 4
            R3 = self.EORS(R3, R4)
            R4 = self.check(R11) << 25
            R4 = R4 | self.check(R10) >> 7
            R1 = v_3A4
            R3 = self.EORS(R3, R4)
            R4 = self.check(R11) >> 2
            R4 = R4 | self.check(R10) << 30
            v_39C = R10
            R4 = self.EORS(R4, R6)
            R6 = self.check(R11) >> 7
            R6 = R6 | self.check(R10) << 25
            R4 = self.EORS(R4, R6)
            R6 = R10 | R0
            R6 = self.ANDS(R6, R1)
            R1 = R10 & R0
            R1 = self.ORRS(R1, R6)
            R10 = LR
            R0 = self.ADDS(R4, R1)
            v_390 = R0
            R0 = self.ADC(R3, R9)
            v_38C = R0
            R0 = v_3A8
            R9 = R12
            R4 = self.ADDS(R5, R0)
            R0 = v_3AC
            v_3A8 = R4
            R0 = self.ADCS(R0, R2)
            R3 = self.LSRS(R4, 0xE)
            v_3AC = R0
            R1 = self.LSRS(R0, 0x12)
            R2 = self.LSRS(R0, 0xE)
            R1 = R1 | self.check(R4) << 14
            R2 = R2 | self.check(R4) << 18
            R1 = self.EORS(R1, R2)
            R2 = self.LSLS(R0, 0x17)
            R2 = R2 | self.check(R4) >> 9
            R3 = R3 | self.check(R0) << 18
            R11 = R1 ^ R2
            R2 = self.LSRS(R4, 0x12)
            R2 = R2 | self.check(R0) << 14
            R2 = self.EORS(R2, R3)
            R3 = self.LSRS(R0, 9)
            R3 = R3 | self.check(R4) << 23
            R2 = self.EORS(R2, R3)
            R3 = LR ^ R8
            R3 = self.ANDS(R3, R0)
            R0 = v_388
            LR = R3 ^ R8
            R5 = R12 ^ R0
            R5 = self.ANDS(R5, R4)
            R3 = R0
            R5 = self.EORS(R5, R0)
            R4 = self.rodata[0x10 * index + 14]
            R6 = self.rodata[0x10 * index + 15]
            R0 = v_380
            R4 = self.ADDS(R4, R0)
            R0 = v_37C
            R6 = self.ADCS(R6, R0)
            R0 = list_3B8[0x10 * index + 14]
            R1 = list_3B8[0x10 * index + 15]
            R1 = self.ADDS(R1, R4)
            R0 = self.ADCS(R0, R6)
            R1 = self.ADDS(R1, R5)
            R0 = self.ADC(R0, LR)
            R1 = self.ADDS(R1, R2)
            R2 = v_390
            R0 = self.ADC(R0, R11)
            R4 = R8
            LR = self.ADDS(R2, R1)
            R2 = v_38C
            R6 = R3
            R12 = self.ADC(R2, R0)
            R2 = v_384
            R8 = self.ADDS(R1, R2)
            R2 = v_36C
            R5 = self.ADC(R0, R2)

        list_638 = [
            self.check(LR),
            self.check(R12),
            self.check(v_39C),
            self.check(v_398),
            self.check(v_378),
            self.check(v_374),
            self.check(v_3A4),
            self.check(v_3A0),
            self.check(R8),
            self.check(R5),
            self.check(v_3A8),
            self.check(v_3AC),
            self.check(R9),
            self.check(R10),
            self.check(R6),
            self.check(R4),
        ]

        for i in range(8):
            R0 = param_list[2 * i]
            R1 = param_list[2 * i + 1]
            R0 = self.ADDS(R0, list_638[2 * i])
            R1 = self.ADCS(R1, list_638[2 * i + 1])
            param_list[2 * i] = R0
            param_list[2 * i + 1] = R1
        return param_list

    def hex_C52(self, list_6B0):
        list_8D8 = []
        for i in range(8):
            tmp = self.hex_list([list_6B0[2 * i + 1], list_6B0[2 * i]])
            list_8D8 = list_8D8 + tmp
        return list_8D8

    def toHex(self, num):
        return format(int(num), "x")

    def check(self, tmp):
        ss = ""
        if tmp < 0:
            ss = self.toHex(4294967296 + int(tmp))
        else:
            ss = self.toHex(tmp)
        if len(ss) > 8:
            size = len(ss)
            start = size - 8
            ss = ss[start:]
            tmp = int(self.parseLong(ss, 10, 16))
        return tmp

    def ADDS(self, a, b):
        c = self.check(a) + self.check(b)
        if len(self.toHex(c)) > 8:
            self.CF = 1
        else:
            self.CF = 0
        result = self.check(c)
        return result

    def ANDS(self, a, b):
        return self.check(a & b)

    def EORS(self, a, b):
        return self.check(a ^ b)

    def ADC(self, a, b):

        c = self.check(a) + self.check(b)
        d = self.check(c + self.CF)
        return d

    def ADCS(self, a, b):
        c = self.check(a) + self.check(b)
        d = self.check(c + self.CF)
        if len(self.toHex(c)) > 8:
            self.CF = 1
        else:
            self.CF = 0
        return d

    def LSLS(self, num, k):
        result = self.bin_type(num)
        self.CF = result[k - 1]
        return self.check(self.check(num) << k)

    def LSRS(self, num, k):
        result = self.bin_type(num)
        self.CF = result[len(result) - k]
        return self.check(self.check(num) >> k)

    def ORRS(self, a, b):
        return self.check(a | b)

    def RRX(self, num):
        result = self.bin_type(num)
        lenght = len(result)
        s = str(self.CF) + result[: lenght - 1 - 0]
        return self.parseLong(s, 10, 2)

    def bin_type(self, num):
        result = ""
        num = self.check(num)
        lst = self.toBinaryString(num)
        for i in range(32):
            if i < len(lst):
                result += str(lst[i])
            else:
                result = "0" + result
        return result

    def UBFX(self, num, lsb, width):
        tmp_string = self.toBinaryString(num)
        while len(tmp_string) < 32:
            tmp_string = "0" + tmp_string
        lens = len(tmp_string)
        start = lens - lsb - width
        end = start - lsb
        a = int(self.parseLong(tmp_string[start : end - start], 10, 2))

        return int(self.parseLong(tmp_string[start : end - start], 10, 2))

    def UFTX(self, num):
        tmp_string = self.toBinaryString(num)
        start = len(tmp_string) - 8
        return self.parseLong(tmp_string[start:], 10, 2)

    def toBinaryString(self, num):
        return "{0:b}".format(num)

    def setData(self, data):
        self.content_raw = data
        self.content = data
        self.list_9C8 = self.hex_9C8()

    def hex_9C8(self):
        result = []
        for i in range(32):
            result.append(self.chooice(0, 0x100))
        return result

    def chooice(self, start, end):
        return int(random.uniform(0, 1) * (end + 1 - start) + start)

    def s2b(self, data):
        arr = []
        for i in range(len(data)):
            arr.append(data[i])
        return arr

    def hex_list(self, content):
        result = []
        for value in content:
            tmp = self.toHex(value)
            while len(tmp) < 8:
                tmp = "0" + tmp
            for i in range(4):
                start = 2 * i
                end = 2 * i + 2
                ss = tmp[start:end]
                result.append(int(self.parseLong(ss, 10, 16)))
        return result

    def parseLong(self, num, to_base=10, from_base=10):
        if isinstance(num, str):
            n = int(num, from_base)
        else:
            n = int(num)
        alphabet = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"
        if n < to_base:
            return alphabet[n]
        else:
            return self.parseLong(n // to_base, to_base) + alphabet[n % to_base]

    def byteArray2str(self, b):
        return binascii.hexlify(bytes(b)).decode()

    def changeByteArrayToLong(self, bytes):
        result = []
        for byte in bytes:
            if byte < 0:
                result.append(byte + 256)
            else:
                result.append(byte)
        return result
Leave a Comment