Advertisement
Guest User

Untitled

a guest
Mar 28th, 2017
613
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 11.43 KB | None | 0 0
  1. int32_t Java_com_xiaomi_miio_JNIBridge_hencrypt(int32_t * a1, int32_t a2, int32_t a3, int32_t a4, int32_t a5, int32_t a6, int32_t a7, int32_t a8, int32_t a9, int32_t a10, int32_t a11, int32_t a12, int32_t a13, int32_t a14, int32_t a15, int32_t a16, int32_t a17, int32_t a18, int32_t a19, int32_t a20, int32_t a21) {
  2.     g22 = (int32_t)a1;
  3.     int32_t v1 = *(int32_t *)(*(int32_t *)0x2184 + 0x2018); // 0x2016
  4.     g23 = v1;
  5.     g20 = *(int32_t *)v1;
  6.     _Z6miio_dPKc(*(int32_t *)0x2188 + 0x201e);
  7.     int32_t v2 = g22; // 0x2026
  8.     g15 = a3;
  9.     g14 = v2;
  10.     g3 = false;
  11.     g2 = v2 < 0;
  12.     g4 = v2 == 0;
  13.     g1 = false;
  14.     int32_t v3 = *(int32_t *)(*(int32_t *)v2 + 124); // 0x202c
  15.     g20 = v3;
  16.     g13 = 0x2031;
  17.     ((int32_t (*)(int32_t, int32_t, int32_t))(v3 & -2))(v2, a3, v3);
  18.     int32_t v4 = g22; // 0x2030
  19.     int32_t v5 = g14; // 0x2036
  20.     g24 = v5;
  21.     int32_t v6 = *(int32_t *)(*(int32_t *)v4 + 376); // 0x203a
  22.     g21 = v6;
  23.     int32_t v7 = *(int32_t *)0x218c + 0x2040; // 0x203c
  24.     g19 = v7;
  25.     g15 = v5;
  26.     int32_t v8 = *(int32_t *)0x2190 + 0x2044; // 0x2040
  27.     g20 = v8;
  28.     g14 = v4;
  29.     g3 = false;
  30.     g2 = v4 < 0;
  31.     g4 = v4 == 0;
  32.     g1 = false;
  33.     g13 = 0x2047;
  34.     ((int32_t (*)(int32_t, int32_t, int32_t, int32_t))(v6 & -2))(v4, v5, v7, v8);
  35.     int32_t v9 = g22; // 0x2046
  36.     int32_t v10 = *(int32_t *)(*(int32_t *)v9 + 376); // 0x204e
  37.     g21 = v10;
  38.     int32_t v11 = g14; // 0x2050
  39.     int32_t v12 = g24; // 0x2052
  40.     g15 = v12;
  41.     int32_t v13 = *(int32_t *)0x2194 + 0x2058; // 0x2054
  42.     g19 = v13;
  43.     int32_t v14 = *(int32_t *)0x2198 + 0x205a; // 0x2056
  44.     g20 = v14;
  45.     g14 = v9;
  46.     g3 = false;
  47.     g2 = v9 < 0;
  48.     g4 = v9 == 0;
  49.     g1 = false;
  50.     g13 = 0x205d;
  51.     ((int32_t (*)(int32_t, int32_t, int32_t, int32_t, int32_t))(v10 & -2))(v9, v12, v13, v14, v11);
  52.     int32_t v15 = g22; // 0x205c
  53.     int32_t v16 = *(int32_t *)(*(int32_t *)v15 + 376); // 0x2064
  54.     g21 = v16;
  55.     int32_t v17 = *(int32_t *)0x21a0 + 0x206a; // 0x2066
  56.     g20 = v17;
  57.     int32_t v18 = g24; // 0x2068
  58.     g15 = v18;
  59.     int32_t v19 = g14; // 0x206a
  60.     int32_t v20 = *(int32_t *)0x219c + 0x2070; // 0x206c
  61.     g19 = v20;
  62.     g14 = v15;
  63.     g3 = false;
  64.     g2 = v15 < 0;
  65.     g4 = v15 == 0;
  66.     g1 = false;
  67.     g13 = 0x2073;
  68.     ((int32_t (*)(int32_t, int32_t, int32_t, int32_t, int32_t))(v16 & -2))(v15, v18, v20, v17, v19);
  69.     g21 = 128;
  70.     int32_t v21 = g14; // 0x2076
  71.     int32_t v22;
  72.     int32_t v23 = &v22; // 0x207a_0
  73.     function_153c();
  74.     int32_t v24 = g22; // 0x2080
  75.     int32_t v25 = *(int32_t *)(*(int32_t *)v24 + 404); // 0x2086
  76.     g20 = v25;
  77.     g14 = v24;
  78.     g3 = false;
  79.     g2 = v24 < 0;
  80.     g4 = v24 == 0;
  81.     g1 = false;
  82.     g19 = v11;
  83.     g15 = a9;
  84.     g13 = 0x2091;
  85.     ((int32_t (*)(int32_t, int32_t, int32_t, int32_t))(v25 & -2))(v24, a9, v11, v25);
  86.     int32_t v26 = g14; // 0x2092
  87.     int32_t v27 = g15; // 0x2094
  88.     function_1500();
  89.     int32_t v28 = g22; // 0x20a4
  90.     g24 = v23;
  91.     int32_t v29 = *(int32_t *)(*(int32_t *)v28 + 400); // 0x20ac
  92.     g20 = v29;
  93.     g15 = a9;
  94.     g19 = v19;
  95.     g14 = v28;
  96.     g3 = false;
  97.     g2 = v28 < 0;
  98.     g4 = v28 == 0;
  99.     g1 = false;
  100.     g13 = 0x20b7;
  101.     ((int32_t (*)(int32_t, int32_t, int32_t, int32_t))(v29 & -2))(v28, a9, v19, v29);
  102.     int32_t v30 = g14; // 0x20b8
  103.     function_1500();
  104.     int32_t v31 = g22; // 0x20c8
  105.     int32_t v32 = *(int32_t *)(*(int32_t *)v31 + 380); // 0x20ce
  106.     g20 = v32;
  107.     g15 = a9;
  108.     g19 = v21;
  109.     g14 = v31;
  110.     g3 = false;
  111.     g2 = v31 < 0;
  112.     g4 = v31 == 0;
  113.     g1 = false;
  114.     g13 = 0x20d9;
  115.     ((int32_t (*)(int32_t, int32_t, int32_t, int32_t))(v32 & -2))(v31, a9, v21, v32);
  116.     int32_t v33 = g22; // 0x20d8
  117.     int32_t v34 = g14; // 0x20dc
  118.     int32_t v35 = *(int32_t *)(*(int32_t *)v33 + 736); // 0x20e0
  119.     g20 = v35;
  120.     g15 = v34;
  121.     g19 = 0;
  122.     g14 = v33;
  123.     g3 = false;
  124.     g2 = v33 < 0;
  125.     g4 = v33 == 0;
  126.     g1 = false;
  127.     g13 = 0x20eb;
  128.     ((int32_t (*)(int32_t, int32_t, int32_t, int32_t))(v35 & -2))(v33, v34, 0, v35);
  129.     int32_t v36 = g22; // 0x20ea
  130.     int32_t v37 = *(int32_t *)v36; // 0x20ea
  131.     g19 = v37;
  132.     int32_t v38 = *(int32_t *)(v37 + 684); // 0x20f0
  133.     g20 = v38;
  134.     int32_t v39 = g14; // 0x20f2
  135.     g15 = v34;
  136.     g14 = v36;
  137.     g3 = false;
  138.     g2 = v36 < 0;
  139.     g4 = v36 == 0;
  140.     g1 = false;
  141.     g13 = 0x20fb;
  142.     ((int32_t (*)(int32_t, int32_t, int32_t, int32_t, int32_t))(v38 & -2))(v36, v34, v37, v38, v39);
  143.     int32_t v40 = &a16; // 0x20fa_0
  144.     g21 = v40;
  145.     function_153c();
  146.     int32_t v41 = _Z5dehexPKciPci(v39, g14, v40, 16, v26, v27, a7); // 0x2110
  147.     g22 = v41;
  148.     g24 = 32;
  149.     _Z6miio_dPKc(v23);
  150.     function_153e();
  151.     _Z13init_msg_headPcyjPKct((char *)&a20, 0, v26, v27, v30);
  152.     int32_t * v42 = (int32_t *)v41; // 0x2138_0
  153.     int32_t v43 = *v42; // 0x2138
  154.     g19 = v43;
  155.     int32_t v44 = *(int32_t *)(v43 + 704); // 0x213e
  156.     g20 = v44;
  157.     int32_t v45 = g24; // 0x2140
  158.     g15 = v45;
  159.     g14 = v41;
  160.     g3 = false;
  161.     g2 = v41 < 0;
  162.     g4 = v41 == 0;
  163.     g1 = false;
  164.     g13 = 0x2147;
  165.     ((int32_t (*)(int32_t, int32_t, int32_t, int32_t))(v44 & -2))(v41, v45, v43, v44);
  166.     int32_t v46 = g14; // 0x214e
  167.     int32_t v47 = *(int32_t *)(*v42 + 832); // 0x2152
  168.     g21 = v47;
  169.     g14 = v41;
  170.     g15 = v46;
  171.     g19 = 0;
  172.     int32_t v48 = g24; // 0x215a
  173.     g20 = v48;
  174.     g3 = false;
  175.     g2 = v48 < 0;
  176.     g4 = v48 == 0;
  177.     g1 = false;
  178.     g13 = 0x215f;
  179.     ((int32_t (*)(int32_t, int32_t, int32_t, int32_t, int32_t))(v47 & -2))(v41, v46, 0, v48, (int32_t)&a20);
  180.     int32_t v49 = *(int32_t *)(*v42 + 768); // 0x2164
  181.     g21 = v49;
  182.     g14 = v41;
  183.     g3 = false;
  184.     g1 = false;
  185.     g19 = v39;
  186.     g20 = 2;
  187.     g2 = false;
  188.     g4 = false;
  189.     g15 = v34;
  190.     g13 = 0x2171;
  191.     ((int32_t (*)(int32_t, int32_t, int32_t, int32_t))(v49 & -2))(v41, v34, v39, 2);
  192.     uint32_t v50;
  193.     g19 = v50;
  194.     int32_t v51 = *(int32_t *)g23; // 0x2172
  195.     g20 = v51;
  196.     g14 = v46;
  197.     uint32_t v52 = -2 - v51 + v50; // 0x2176
  198.     g3 = ((v52 ^ v50) & (v52 ^ -v51)) < 0;
  199.     g2 = v50 - v51 < 0;
  200.     g4 = v50 == v51;
  201.     g1 = v52 <= v50;
  202.     if (v50 != v51) {
  203.         // 0x217a
  204.         function_154a();
  205.         // branch -> 0x217e
  206.     }
  207.     // 0x217e
  208.     int32_t v53;
  209.     g21 = v53;
  210.     int32_t v54;
  211.     g22 = v54;
  212.     int32_t v55;
  213.     g23 = v55;
  214.     int32_t v56;
  215.     g24 = v56;
  216.     int32_t v57;
  217.     ((int32_t (*)())v57)();
  218.     return g14;
  219. }
  220.  
  221. // Address range: 0x21ac - 0x235b
  222. int32_t Java_com_xiaomi_miio_JNIBridge_hdecrypt(int32_t * a1, int32_t a2, int32_t a3, int32_t a4, int32_t a5, int32_t a6, int32_t a7, int32_t a8, int32_t a9, int32_t a10, int32_t a11, int32_t a12, int32_t a13, int32_t a14, int32_t a15, int32_t a16, int32_t a17, int32_t * a18, int32_t a19, int32_t a20, int32_t a21, int32_t a22, int32_t a23, int32_t a24, int32_t a25, int32_t a26, int32_t a27, int32_t a28) {
  223.     g22 = (int32_t)a1;
  224.     int32_t v1 = *(int32_t *)(*(int32_t *)0x2338 + 0x21b8); // 0x21b6
  225.     g23 = v1;
  226.     g20 = *(int32_t *)v1;
  227.     g24 = 0;
  228.     _Z6miio_dPKc(*(int32_t *)0x233c + 0x21be);
  229.     int32_t v2 = g22; // 0x21c8
  230.     int32_t v3 = *(int32_t *)(*(int32_t *)v2 + 736); // 0x21ce
  231.     g20 = v3;
  232.     g15 = a3;
  233.     g19 = 0;
  234.     g14 = v2;
  235.     g3 = false;
  236.     g2 = v2 < 0;
  237.     g4 = v2 == 0;
  238.     g1 = false;
  239.     g13 = 0x21d9;
  240.     ((int32_t (*)(int32_t, int32_t, int32_t, int32_t))(v3 & -2))(v2, a3, 0, v3);
  241.     int32_t v4 = g22; // 0x21d8
  242.     int32_t v5 = *(int32_t *)v4; // 0x21d8
  243.     g19 = v5;
  244.     int32_t v6 = *(int32_t *)(v5 + 684); // 0x21de
  245.     g20 = v6;
  246.     int32_t v7 = g14; // 0x21e0
  247.     g15 = a13;
  248.     g14 = v4;
  249.     g3 = false;
  250.     g2 = v4 < 0;
  251.     g4 = v4 == 0;
  252.     g1 = false;
  253.     g13 = 0x21e9;
  254.     ((int32_t (*)(int32_t, int32_t, int32_t, int32_t, int32_t))(v6 & -2))(v4, a13, v5, v6, v7);
  255.     function_153c();
  256.     function_1502();
  257.     int32_t v8 = &a23; // 0x2202_0
  258.     g21 = v8;
  259.     a21 = 0;
  260.     int32_t v9 = g24; // 0x2210
  261.     int32_t v10 = 0x10000 * v9 / 0x10000;
  262.     a20 = v9;
  263.     function_153e();
  264.     g20 = &a20;
  265.     g15 = &v10;
  266.     g19 = &a21;
  267.     a5 = g21;
  268.     _Z14parse_msg_headPKcRtRyRjPc((char *)v7);
  269.     int32_t v11 = &a27; // 0x2232_0
  270.     function_153c();
  271.     int32_t v12;
  272.     _Z3hexPKciPci(v8, 16, v11, 33, v12, 0, 0, 0, 0, 0);
  273.     a5 = a21;
  274.     function_1502();
  275.     function_1500();
  276.     g21 = &a5;
  277.     g20 = v10 % 0x10000;
  278.     function_1502();
  279.     int32_t v13;
  280.     _Z6miio_dPKc((int32_t)&v13);
  281.     int32_t v14 = g22; // 0x2290
  282.     g14 = v14;
  283.     g3 = false;
  284.     g2 = v14 < 0;
  285.     g4 = v14 == 0;
  286.     g1 = false;
  287.     int32_t v15 = *(int32_t *)(*(int32_t *)v14 + 24); // 0x2296
  288.     g20 = v15;
  289.     int32_t v16 = *(int32_t *)0x2350 + 0x229c; // 0x2298
  290.     g15 = v16;
  291.     g13 = 0x229d;
  292.     ((int32_t (*)(int32_t, int32_t, int32_t))(v15 & -2))(v14, v16, v15);
  293.     int32_t v17 = g22; // 0x229c
  294.     int32_t v18 = g14; // 0x22a2
  295.     int32_t v19 = *(int32_t *)0x2354 + 0x22aa; // 0x22a6
  296.     g19 = v19;
  297.     int32_t v20 = *(int32_t *)0x2358 + 0x22ac; // 0x22a8
  298.     g20 = v20;
  299.     int32_t v21 = *(int32_t *)(*(int32_t *)v17 + 132); // 0x22aa
  300.     g21 = v21;
  301.     g14 = v17;
  302.     g3 = false;
  303.     g2 = v17 < 0;
  304.     g4 = v17 == 0;
  305.     g1 = false;
  306.     g15 = v18;
  307.     g13 = 0x22b3;
  308.     ((int32_t (*)(int32_t, int32_t, int32_t, int32_t))(v21 & -2))(v17, v18, v19, v20);
  309.     int32_t v22 = g23; // 0x22b6
  310.     int32_t v23 = g14; // 0x22b8
  311.     int32_t v24 = g24; // 0x22bc
  312.     g23 = v24;
  313.     if (a21 != v24) {
  314.         // 0x22c4
  315.         g23 = 0;
  316.         // branch -> 0x22ca
  317.     }
  318.     g21 = a20;
  319.     int32_t v25 = g22; // 0x22cc
  320.     int32_t v26 = *(int32_t *)v25; // 0x22cc
  321.     g19 = v26;
  322.     int32_t v27 = *(int32_t *)(v26 + 704); // 0x22d2
  323.     g20 = v27;
  324.     g15 = 32;
  325.     g14 = v25;
  326.     g3 = false;
  327.     g2 = v25 < 0;
  328.     g4 = v25 == 0;
  329.     g1 = false;
  330.     g13 = 0x22dd;
  331.     ((int32_t (*)(int32_t, int32_t, int32_t, int32_t, int32_t))(v27 & -2))(v25, 32, v26, v27, a20);
  332.     int32_t v28 = g22; // 0x22dc
  333.     a5 = v11;
  334.     int32_t v29 = g14; // 0x22e4
  335.     g24 = v29;
  336.     int32_t v30 = *(int32_t *)(*(int32_t *)v28 + 832); // 0x22e8
  337.     g21 = v30;
  338.     g14 = v28;
  339.     g15 = v29;
  340.     g3 = false;
  341.     g1 = false;
  342.     g19 = 0;
  343.     g20 = 32;
  344.     g2 = false;
  345.     g4 = false;
  346.     g13 = 0x22f5;
  347.     ((int32_t (*)(int32_t, int32_t, int32_t, int32_t, int32_t))(v30 & -2))(v28, v29, 0, 32, v11);
  348.     a5 = a21;
  349.     g21 = a20;
  350.     int32_t v31 = g22; // 0x2300
  351.     g3 = false;
  352.     g2 = v31 < 0;
  353.     g4 = v31 == 0;
  354.     g1 = false;
  355.     _ZN7_JNIEnv9NewObjectEP7_jclassP10_jmethodIDz((int32_t *)v31, v18, v23, 0, a21, g23, a20, g24);
  356.     int32_t v32 = g22; // 0x230e
  357.     int32_t v33 = *(int32_t *)(*(int32_t *)v32 + 768); // 0x2314
  358.     g21 = v33;
  359.     g23 = v31;
  360.     g19 = v7;
  361.     g14 = v32;
  362.     g3 = false;
  363.     g1 = false;
  364.     g20 = 2;
  365.     g2 = false;
  366.     g4 = false;
  367.     g15 = a13;
  368.     g13 = 0x2323;
  369.     ((int32_t (*)(int32_t, int32_t, int32_t, int32_t))(v33 & -2))(v32, a13, v7, 2);
  370.     uint32_t v34;
  371.     g19 = v34;
  372.     g14 = v31;
  373.     int32_t v35 = *(int32_t *)v22; // 0x2328
  374.     g20 = v35;
  375.     uint32_t v36 = -2 - v35 + v34; // 0x232a
  376.     g3 = ((v36 ^ v34) & (v36 ^ -v35)) < 0;
  377.     g2 = v34 - v35 < 0;
  378.     g4 = v34 == v35;
  379.     g1 = v36 <= v34;
  380.     if (v34 != v35) {
  381.         // 0x232e
  382.         function_154a();
  383.         // branch -> 0x2332
  384.     }
  385.     // 0x2332
  386.     int32_t v37;
  387.     g21 = v37;
  388.     int32_t v38;
  389.     g22 = v38;
  390.     int32_t v39;
  391.     g23 = v39;
  392.     int32_t v40;
  393.     g24 = v40;
  394.     int32_t v41;
  395.     ((int32_t (*)())v41)();
  396.     return g14;
  397. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement