Advertisement
Guest User

Encrypt function

a guest
Jan 17th, 2019
60
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 7.99 KB | None | 0 0
  1. int __fastcall ECRYPT_encrypt_bytes(int *a1, int a2, int a3, unsigned int a4)
  2. {
  3.   int *v4; // lr
  4.   int v5; // r3
  5.   int v6; // r4
  6.   int v7; // r5
  7.   int v8; // r6
  8.   int v9; // r3
  9.   int v10; // r4
  10.   int v11; // r5
  11.   int v12; // r6
  12.   int v13; // r2
  13.   int v14; // r3
  14.   int v15; // r4
  15.   int v16; // r5
  16.   int v17; // r6
  17.   int v18; // r11
  18.   int v19; // r2
  19.   unsigned int v20; // r12
  20.   int v21; // r0
  21.   int v22; // r9
  22.   int v23; // r1
  23.   int v24; // r4
  24.   int v25; // lr
  25.   unsigned int v26; // r3
  26.   unsigned int v27; // r8
  27.   int v28; // r6
  28.   int v29; // r10
  29.   int v30; // ST38_4
  30.   int v31; // r3
  31.   int v32; // ST24_4
  32.   int v33; // ST18_4
  33.   int v34; // r4
  34.   int v35; // ST34_4
  35.   int v36; // r0
  36.   int v37; // ST30_4
  37.   int v38; // r11
  38.   int v39; // r12
  39.   int v40; // ST20_4
  40.   int v41; // r5
  41.   int v42; // r0
  42.   int v43; // ST2C_4
  43.   int v44; // r0
  44.   int v45; // ST28_4
  45.   int v46; // r9
  46.   int v47; // r2
  47.   int v48; // ST1C_4
  48.   int v49; // r0
  49.   int v50; // lr
  50.   int v51; // r3
  51.   int v52; // ST40_4
  52.   int v53; // r10
  53.   int v54; // r5
  54.   int v55; // r6
  55.   int v56; // r8
  56.   int v57; // lr
  57.   int v58; // r3
  58.   int v59; // r0
  59.   int v60; // r1
  60.   int v61; // r2
  61.   int v62; // r6
  62.   int v63; // r0
  63.   int v64; // r0
  64.   int v65; // r12
  65.   int v66; // r0
  66.   int v67; // r1
  67.   int v68; // r2
  68.   int v69; // r3
  69.   int v70; // r6
  70.   int v71; // r4
  71.   int v72; // r2
  72.   int v73; // r3
  73.   int v74; // r3
  74.   unsigned int v75; // r8
  75.   int v76; // r3
  76.   int v77; // r2
  77.   int v78; // r6
  78.   int v79; // r5
  79.   int v80; // r1
  80.   int v81; // r4
  81.   int v82; // r9
  82.   int v83; // r6
  83.   unsigned int v84; // r10
  84.   int v85; // r1
  85.   int v86; // r6
  86.   int v87; // r5
  87.   int v88; // r0
  88.   int v89; // r3
  89.   int v90; // r6
  90.   int v91; // r2
  91.   int v92; // r0
  92.   int v93; // r0
  93.   signed int v94; // r0
  94.   int v95; // r0
  95.   int v96; // r1
  96.   char *v97; // r2
  97.   int v98; // r0
  98.   int v99; // r0
  99.   int v100; // r0
  100.   int *v102; // [sp+8h] [bp-D8h]
  101.   int v103; // [sp+Ch] [bp-D4h]
  102.   int v104; // [sp+10h] [bp-D0h]
  103.   unsigned int i; // [sp+14h] [bp-CCh]
  104.   int v106; // [sp+24h] [bp-BCh]
  105.   int v107; // [sp+3Ch] [bp-A4h]
  106.   int v108; // [sp+40h] [bp-A0h]
  107.   unsigned int v109; // [sp+44h] [bp-9Ch]
  108.   int v110; // [sp+48h] [bp-98h]
  109.   int v111; // [sp+4Ch] [bp-94h]
  110.   char v112[64]; // [sp+50h] [bp-90h]
  111.   int v113; // [sp+90h] [bp-50h]
  112.   unsigned __int64 v114; // [sp+94h] [bp-4Ch]
  113.   int v115; // [sp+9Ch] [bp-44h]
  114.   int v116; // [sp+A0h] [bp-40h]
  115.   int v117; // [sp+A4h] [bp-3Ch]
  116.   int v118; // [sp+A8h] [bp-38h]
  117.   int v119; // [sp+ACh] [bp-34h]
  118.   unsigned __int64 v120; // [sp+B0h] [bp-30h]
  119.   int v121; // [sp+B8h] [bp-28h]
  120.   int v122; // [sp+BCh] [bp-24h]
  121.   unsigned __int64 v123; // [sp+C0h] [bp-20h]
  122.   int v124; // [sp+C8h] [bp-18h]
  123.   int v125; // [sp+CCh] [bp-14h]
  124.   int v126; // [sp+D0h] [bp-10h]
  125.  
  126.   v4 = a1;
  127.   v102 = a1;
  128.   if ( a4 )
  129.   {
  130.     v103 = a2;
  131.     v104 = a3;
  132.     for ( i = a4; ; i -= 64 )
  133.     {
  134.       v5 = v4[1];
  135.       v6 = v4[2];
  136.       v7 = v4[3];
  137.       v8 = v4[4];
  138.       v113 = *v4;
  139.       v114 = __PAIR__(v6, v5);
  140.       v115 = v7;
  141.       v116 = v8;
  142.       v9 = v4[6];
  143.       v10 = v4[7];
  144.       v11 = v4[8];
  145.       v12 = v4[9];
  146.       v117 = v4[5];
  147.       v118 = v9;
  148.       v119 = v10;
  149.       v120 = __PAIR__(v12, v11);
  150.       v13 = v4[11];
  151.       v14 = v4[12];
  152.       v15 = v4[13];
  153.       v16 = v4[14];
  154.       v17 = v4[15];
  155.       v121 = v4[10];
  156.       v122 = v13;
  157.       v123 = __PAIR__(v15, v14);
  158.       v124 = v16;
  159.       v125 = v17;
  160.       v18 = v13;
  161.       v19 = v17;
  162.       v108 = v113;
  163.       v109 = HIDWORD(v114);
  164.       v20 = v114;
  165.       v111 = v115;
  166.       v110 = v119;
  167.       v21 = 10;
  168.       v107 = v16;
  169.       v22 = v121;
  170.       v23 = v118;
  171.       v24 = HIDWORD(v120);
  172.       v25 = v120;
  173.       v26 = HIDWORD(v123);
  174.       v27 = v123;
  175.       v29 = v117;
  176.       v28 = v116;
  177.       do
  178.       {
  179.         v30 = v21;
  180.         v31 = v26 ^ (v20 + v29);
  181.         v32 = v18;
  182.         v33 = v19;
  183.         v34 = v24 + __ROR4__(v31, 16);
  184.         v35 = v34 ^ v29;
  185.         v36 = v20 + v29 + __ROR4__(v34 ^ v29, 20);
  186.         v37 = v36;
  187.         v38 = v36 ^ __ROR4__(v31, 16);
  188.         v39 = v34 + __ROR4__(v38, 24);
  189.         v40 = v39;
  190.         v41 = (v109 + v23) ^ v107;
  191.         v42 = v22 + __ROR4__(v41, 16);
  192.         v43 = v42;
  193.         v44 = v42 ^ v23;
  194.         v45 = v44;
  195.         v46 = v109 + v23 + __ROR4__(v44, 20);
  196.         v47 = v46 ^ __ROR4__(v41, 16);
  197.         v48 = v47;
  198.         v49 = (v108 + v28) ^ v27;
  199.         v50 = v25 + __ROR4__(v49, 16);
  200.         v51 = v108 + v28 + __ROR4__(v50 ^ v28, 20);
  201.         v52 = v51;
  202.         v53 = v51 ^ __ROR4__(v49, 16);
  203.         v54 = v50 + __ROR4__(v53, 24);
  204.         v55 = v54 ^ __ROR4__(v50 ^ v28, 20);
  205.         v56 = (v111 + v110) ^ v33;
  206.         v57 = v32 + __ROR4__(v56, 16);
  207.         v58 = v111 + v110 + __ROR4__(v57 ^ v110, 20);
  208.         v59 = v58 + __ROR4__(v55, 25);
  209.         v60 = v59 ^ __ROR4__(v47, 24);
  210.         v61 = v39 + __ROR4__(v60, 16);
  211.         v62 = v61 ^ __ROR4__(v55, 25);
  212.         v63 = v59 + __ROR4__(v62, 20);
  213.         v111 = v63;
  214.         v64 = v63 ^ __ROR4__(v60, 16);
  215.         v65 = v61 + __ROR4__(v64, 24);
  216.         v107 = __ROR4__(v64, 24);
  217.         v106 = __ROR4__(v65 ^ __ROR4__(v62, 20), 25);
  218.         v66 = v58 ^ __ROR4__(v56, 16);
  219.         v67 = v57 + __ROR4__(v66, 24);
  220.         v68 = v67 ^ __ROR4__(v57 ^ v110, 20);
  221.         v69 = v46 + __ROR4__(v68, 25);
  222.         v70 = v69 ^ __ROR4__(v38, 24);
  223.         v71 = v54 + __ROR4__(v70, 16);
  224.         v72 = v71 ^ __ROR4__(v68, 25);
  225.         v73 = v69 + __ROR4__(v72, 20);
  226.         v109 = v73;
  227.         v74 = v73 ^ __ROR4__(v70, 16);
  228.         v25 = v71 + __ROR4__(v74, 24);
  229.         v75 = __ROR4__(v74, 24);
  230.         v110 = __ROR4__(v25 ^ __ROR4__(v72, 20), 25);
  231.         v76 = v43 + __ROR4__(v48, 24);
  232.         v77 = v76 ^ __ROR4__(v45, 20);
  233.         v78 = v37 + __ROR4__(v77, 25);
  234.         v79 = v78 ^ __ROR4__(v53, 24);
  235.         v80 = v67 + __ROR4__(v79, 16);
  236.         v81 = v80 ^ __ROR4__(v77, 25);
  237.         v82 = v78 + __ROR4__(v81, 20);
  238.         v83 = v82 ^ __ROR4__(v79, 16);
  239.         v18 = v80 + __ROR4__(v83, 24);
  240.         v84 = __ROR4__(v83, 24);
  241.         v85 = v18 ^ __ROR4__(v81, 20);
  242.         v86 = v40 ^ __ROR4__(v35, 20);
  243.         v24 = v65;
  244.         v20 = v82;
  245.         v87 = v52 + __ROR4__(v86, 25);
  246.         v23 = __ROR4__(v85, 25);
  247.         v88 = v87 ^ __ROR4__(v66, 24);
  248.         v89 = v76 + __ROR4__(v88, 16);
  249.         v90 = v89 ^ __ROR4__(v86, 25);
  250.         v91 = v87 + __ROR4__(v90, 20);
  251.         v108 = v91;
  252.         v92 = v91 ^ __ROR4__(v88, 16);
  253.         v22 = v89 + __ROR4__(v92, 24);
  254.         v19 = __ROR4__(v92, 24);
  255.         v93 = v22 ^ __ROR4__(v90, 20);
  256.         v26 = v75;
  257.         v27 = v84;
  258.         v28 = v106;
  259.         v29 = __ROR4__(v93, 25);
  260.         v21 = v30 - 2;
  261.       }
  262.       while ( v30 - 2 > 2 );
  263.       v114 = __PAIR__(v109, v20);
  264.       v116 = v106;
  265.       v117 = v29;
  266.       v123 = __PAIR__(v26, v27);
  267.       v120 = __PAIR__(v24, v25);
  268.       v118 = v23;
  269.       v124 = v107;
  270.       v4 = v102;
  271.       v121 = v22;
  272.       v115 = v111;
  273.       v119 = v110;
  274.       v125 = v19;
  275.       v122 = v18;
  276.       v113 = *v102 + v108;
  277.       LODWORD(v114) = v102[1] + v20;
  278.       v94 = 2;
  279.       do
  280.       {
  281.         *(&v113 + v94) += v102[v94];
  282.         ++v94;
  283.       }
  284.       while ( v94 != 16 );
  285.       v95 = 0;
  286.       do
  287.       {
  288.         v96 = *(int *)((char *)&v113 + v95);
  289.         v97 = &v112[v95];
  290.         v112[v95] = v96;
  291.         v95 += 4;
  292.         v97[1] = BYTE1(v96);
  293.         v97[2] = BYTE2(v96);
  294.         v97[3] = HIBYTE(v96);
  295.       }
  296.       while ( v95 != 64 );
  297.       v98 = v102[12] + 1;
  298.       v102[12] = v98;
  299.       if ( !v98 )
  300.         ++v102[13];
  301.       if ( i <= 0x40 )
  302.         break;
  303.       v99 = 0;
  304.       do
  305.       {
  306.         *(_BYTE *)(v104 + v99) = *(_BYTE *)(v103 + v99) ^ v112[v99];
  307.         ++v99;
  308.       }
  309.       while ( v99 != 64 );
  310.       v103 += 64;
  311.       v104 += 64;
  312.     }
  313.     if ( i )
  314.     {
  315.       v100 = 0;
  316.       do
  317.       {
  318.         *(_BYTE *)(v104 + v100) = *(_BYTE *)(v103 + v100) ^ v112[v100];
  319.         ++v100;
  320.       }
  321.       while ( i != v100 );
  322.     }
  323.   }
  324.   return _stack_chk_guard - v126;
  325. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement