Advertisement
Guest User

Untitled

a guest
Sep 22nd, 2019
111
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 13.68 KB | None | 0 0
  1. //
  2. // This file was generated by the Retargetable Decompiler
  3. // Website: https://retdec.com
  4. // Copyright (c) 2019 Retargetable Decompiler <info@retdec.com>
  5. //
  6.  
  7. #include <stdint.h>
  8.  
  9. // ----------------- Float Types Definitions ------------------
  10.  
  11. typedef float float32_t;
  12. typedef double float64_t;
  13.  
  14. // ------------------------ Structures ------------------------
  15.  
  16. struct CPedAcquaintance {
  17.     int32_t e0;
  18.     int32_t e1;
  19.     int32_t e2;
  20.     int32_t e3;
  21.     int32_t e4;
  22. };
  23.  
  24. // ------------------------- Classes --------------------------
  25.  
  26. // __non_rtti_object (base classes: exception, bad_typeid)
  27. // bad_cast (base classes: exception)
  28. // bad_typeid
  29. // exception
  30. // .?AVlogic_error@std@@ (base classes: exception)
  31. // .?AVout_of_range@std@@ (base classes: exception, .?AVlogic_error@std@@)
  32. // b
  33.  
  34. // ------------------- Function Prototypes --------------------
  35.  
  36. int32_t _3f__3f_0CEventAcquaintancePed_40__40_QAE_40_PAVCPed_40__40__40_Z(int32_t a1);
  37. int32_t _3f__3f_0CPedIntelligence_40__40_QAE_40_PAVCPed_40__40__40_Z(int32_t a1);
  38. int32_t _3f__3f_0CPhysical_40__40_QAE_40_XZ(int32_t a1);
  39. int32_t _3f__3f_0CTaskSimpleStandStill_40__40_QAE_40_I_N_NM_40_Z(int32_t a1, char a2, char a3, int32_t a4);
  40. float64_t _3f__3f_2CTask_40__40_YAPAXI_40_Z(void);
  41. int32_t _PedIntelligencePool__allocate(void);
  42. int32_t _pow2(char a1);
  43. int32_t _Z13FindPlayerPedi(int32_t a1);
  44. int32_t _ZN4CPedC2Ej(int32_t pPed, int32_t a2);
  45. int32_t CEventAcquaintancePed__dtor(void);
  46. int32_t CEventGroup__setActorEvent(int32_t a1, char a2);
  47. int32_t CPed_3a__3a_giveWeapon(int32_t a1, int32_t a2, int32_t a3);
  48. int32_t CPedAcquaintance__setForPedTypes(int32_t a1, int32_t a2);
  49. int32_t CPedSound__constructor(void);
  50. int32_t CPedTasks___3f_assignPrimaryTask(int32_t a1, int32_t a2, int32_t a3);
  51. int32_t CPopulation__updatePedCount(int32_t a1, char a2);
  52. int32_t CTask_870ADC__constructor(void);
  53. int32_t dummy_4E6AA0(int32_t a1);
  54. struct CPedAcquaintance * getPedTypeAcquaintancePtr(int32_t a1);
  55. int32_t ida_821216(void);
  56. int32_t ida_821b5e(void);
  57. int32_t ida_821d70(void);
  58. int32_t ida_822e85(void);
  59. int32_t ida_822f45(void);
  60. int32_t ida_822f80(void);
  61. int32_t ida_822fb8(void);
  62. int32_t sub_4E0E80(int32_t a1);
  63. int32_t sub_4F3D60(char * a1, char a2);
  64. int32_t sub_5FD8C0(int32_t a1);
  65. int32_t sub_681B60(int32_t a1, int32_t a2);
  66.  
  67. // --------------------- Global Variables ---------------------
  68.  
  69. int32_t _3f__3f__7CEventAcquaintancePedHate_40__40_6B_40_ = 0x420fb0;
  70. int32_t _3f__3f__7CPed_40__40_6B_40_ = 0x5e8c80;
  71. int32_t _vmt_85F438 = 0x4f2e90; // 0x85F438
  72. int32_t _vmt_86C2A8 = 0x4e1180; // 0x86C2A8
  73. int32_t _vmt_86C2AC = 0x504b70; // 0x86C2AC
  74. char g1 = 0;
  75. int32_t g2;
  76.  
  77. // ------------------------ Functions -------------------------
  78.  
  79. // Address range: 0x5e8030 - 0x5e8613
  80. // Demangled:     CPed::CPed(uint)
  81. int32_t _ZN4CPedC2Ej(int32_t pPed, int32_t a2) {
  82.     int32_t v1 = 0; // esp
  83.     int32_t v2 = __readfsdword(0); // bp-12
  84.     __writefsdword(0, (int32_t)&v2);
  85.     int32_t v3; // ecx
  86.     int32_t result = v3; // esi
  87.     int32_t v4; // edi
  88.     _3f__3f_0CPhysical_40__40_QAE_40_XZ(v4);
  89.     int32_t v5 = result + 312; // ebp
  90.     int32_t v6 = 0; // ebx
  91.     *(int32_t *)result = (int32_t)&_3f__3f__7CPed_40__40_6B_40_;
  92.     *(int32_t *)(v5 + 16) = v6;
  93.     *(int32_t *)v5 = (int32_t)&_vmt_86C2A8;
  94.     *(int32_t *)(v5 + 184) = v6;
  95.     *(int32_t *)(v5 + 168) = (int32_t)&_vmt_85F438;
  96.     *(int16_t *)(v5 + 304) = (int16_t)v6;
  97.     *(int32_t *)(v5 + 328) = v6;
  98.     *(int32_t *)(v5 + 332) = v6;
  99.     *(int32_t *)(v5 + 148) = v6;
  100.     *(char *)(v5 + 124) = (char)v6;
  101.     *(int32_t *)(v5 + 156) = v6;
  102.     *(int32_t *)(v5 + 160) = v6;
  103.     *(int32_t *)(v5 + 164) = v6;
  104.     CPedSound__constructor();
  105.     v4 = result + 916;
  106.     *(int32_t *)(result + 932) = v6;
  107.     *(int32_t *)(v4 + 132) = v6;
  108.     *(int32_t *)(v4 + 136) = v6;
  109.     *(int32_t *)(v4 + 140) = v6;
  110.     *(int32_t *)(v4 + 156) = v6;
  111.     *(char *)(v4 + 126) = (char)v6;
  112.     *(int32_t *)(v4 + 144) = v6;
  113.     *(char *)(v4 + 124) = (char)v6;
  114.     *(char *)(v4 + 125) = (char)v6;
  115.     *(int32_t *)(v4 + 148) = v6;
  116.     *(int32_t *)(v4 + 152) = v6;
  117.     *(int32_t *)v4 = (int32_t)&_vmt_86C2AC;
  118.     *(int32_t *)(v4 + 164) = v6;
  119.     *(char *)(v4 + 160) = (char)v6;
  120.     v3 = 0;
  121.     *(int32_t *)(result + 1240) = v6;
  122.     *(int32_t *)(result + 1244) = v6;
  123.     int32_t v7 = result + 1248; // 0x5e811d
  124.     int32_t v8 = v7; // eax
  125.     *(int32_t *)v7 = v3;
  126.     *(int32_t *)(v8 + 4) = v3;
  127.     *(int32_t *)(v8 + 8) = v3;
  128.     *(int32_t *)(v8 + 12) = v3;
  129.     *(int32_t *)(v8 + 16) = v3;
  130.     sub_5FD8C0(result);
  131.     *(int32_t *)(result + 1344) = 0x42c80000;
  132.     *(int32_t *)(result + 1348) = 0x42c80000;
  133.     *(int32_t *)(result + 1352) = v6;
  134.     *(int32_t *)(result + 1432) = pPed;
  135.     ida_821d70();
  136.     char * v9 = (char *)(result + 54); // 0x5e817d
  137.     int32_t v10 = *(int32_t *)(result + 64); // 0x5e8180
  138.     *v9 = *v9 & -8 | 3;
  139.     *(int32_t *)(result + 64) = v10 | 0x10000010;
  140.     *(char *)(result + 1156) = 1;
  141.     v8 = v6;
  142.     *(int32_t *)(result + 1420) = v6;
  143.     *(int32_t *)(result + 1324) = v6;
  144.     *(int32_t *)(result + 1860) = v6;
  145.     *(int32_t *)(result + 1868) = v6;
  146.     *(int32_t *)(result + 1864) = v6;
  147.     *(int32_t *)(result + 1872) = v6;
  148.     *(int32_t *)(result + 1360) = v6;
  149.     *(int32_t *)(result + 1364) = v6;
  150.     int32_t v11 = result + 1388; // 0x5e81d2
  151.     *(int32_t *)v11 = v8;
  152.     *(int32_t *)(v11 + 4) = v6;
  153.     *(int32_t *)(v11 + 8) = v8;
  154.     int32_t v12 = result + 1400; // 0x5e81e2
  155.     v3 = v12;
  156.     *(int32_t *)v12 = v6;
  157.     *(int32_t *)(v3 + 4) = v8;
  158.     *(int32_t *)(result + 1328) = 1;
  159.     *(int32_t *)(result + 1332) = 1;
  160.     int32_t v13 = *(int32_t *)(result + 1132); // 0x5e8200
  161.     *(int32_t *)(result + 1368) = v6;
  162.     *(int32_t *)(result + 1376) = 0x41700000;
  163.     *(int32_t *)(result + 1380) = 0x3dcccccd;
  164.     *(int32_t *)(result + 1372) = v6;
  165.     *(int32_t *)(result + 1384) = v6;
  166.     *(int32_t *)(v3 + 8) = 0x3f800000;
  167.     *(char *)(result + 1817) = 40;
  168.     *(int32_t *)(result + 1428) = v6;
  169.     *(int32_t *)(result + 296) = v6;
  170.     *(int32_t *)(result + 1336) = v6;
  171.     *(int32_t *)(result + 1840) = v6;
  172.     *(int32_t *)(result + 1844) = 0x3f800000;
  173.     *(int32_t *)(result + 1820) = v6;
  174.     *(int32_t *)(result + 1848) = v6;
  175.     *(int32_t *)(result + 1852) = v6;
  176.     *(int32_t *)(result + 1412) = v6;
  177.     *(int32_t *)(result + 1416) = 0x47c34fff;
  178.     *(int32_t *)(result + 140) = 0x428c0000;
  179.     *(int32_t *)(result + 144) = 0x42c80000;
  180.     *(int32_t *)(result + 152) = 0x3bbb3ee7;
  181.     *(int32_t *)(result + 156) = 0x3d4ccccd;
  182.     *(char *)(result + 1876) = -1;
  183.     *(int32_t *)(result + 1132) = v13 & -0x20000 | 0x2000;
  184.     int32_t v14 = ida_821b5e(); // 0x5e82d9
  185.     int32_t v15 = *(int32_t *)(result + 1132); // 0x5e82de
  186.     int32_t v16 = *(int32_t *)(result + 1140); // 0x5e82e4
  187.     *(int32_t *)(result + 1136) = 0x6100000;
  188.     int32_t v17 = (v15 & 0x1ffff | ((v14 & 3) != 0 ? 0x20000 : 0)) ^ -0x7ffe0000; // 0x5e830d
  189.     *(int32_t *)(result + 1132) = v17;
  190.     int32_t v18 = *(int32_t *)(result + 1144); // 0x5e8315
  191.     *(int32_t *)(result + 1140) = v16 & 0x20000000 | 0x4000000;
  192.     *(int32_t *)(result + 1144) = v18 & -0x3fffe0 | 0x21000;
  193.     dummy_4E6AA0(result);
  194.     sub_4E0E80(result);
  195.     struct CPedAcquaintance * v19 = getPedTypeAcquaintancePtr(*(int32_t *)(result + 1432)); // 0x5e8353
  196.     v8 = (int32_t)v19;
  197.     *(int32_t *)(result + 1248) = v19->e0;
  198.     *(int32_t *)(result + 1252) = *(int32_t *)(v8 + 4);
  199.     *(int32_t *)(result + 1256) = *(int32_t *)(v8 + 8);
  200.     int32_t v20 = *(int32_t *)(v8 + 12); // 0x5e8372
  201.     *(int32_t *)(result + 1260) = v20;
  202.     int32_t v21 = *(int32_t *)(v8 + 16); // 0x5e837b
  203.     *(int32_t *)(result + 1264) = v21;
  204.     *(int32_t *)(result + 1804) = 55;
  205.     *(int32_t *)(result + 1808) = 55;
  206.     *(char *)(result + 1816) = (char)v6;
  207.     int32_t v22 = result + 1444; // 0x5e839e
  208.     v8 = v22;
  209.     *(int32_t *)(v22 - 4) = v6;
  210.     *(int32_t *)v8 = v6;
  211.     *(int32_t *)(v8 + 4) = v6;
  212.     *(int32_t *)(v8 + 8) = v6;
  213.     *(int32_t *)(v8 + 12) = v6;
  214.     int32_t v23 = v8 + 28; // 0x5e83be
  215.     v8 = v23;
  216.     int32_t v24 = 12; // 0x5e83c1
  217.     while (v24 != 0) {
  218.         // 0x5e83b0
  219.         *(int32_t *)(v23 - 4) = v6;
  220.         *(int32_t *)v8 = v6;
  221.         *(int32_t *)(v8 + 4) = v6;
  222.         *(int32_t *)(v8 + 8) = v6;
  223.         *(int32_t *)(v8 + 12) = v6;
  224.         v23 = v8 + 28;
  225.         v8 = v23;
  226.         v24--;
  227.     }
  228.     // 0x5e83c4
  229.     *(char *)(result + 1836) = 1;
  230.     *(char *)(result + 1837) = 4;
  231.     *(char *)(result + 1838) = (char)v6;
  232.     CPed_3a__3a_giveWeapon(v6, v6, 1);
  233.     v4 = -1;
  234.     *(char *)(result + 1818) = 60;
  235.     *(char *)(result + 1888) = -1;
  236.     *(int32_t *)(result + 1892) = v6;
  237.     *(int32_t *)(result + 1896) = v6;
  238.     *(int32_t *)(result + 252) = v6;
  239.     *(int32_t *)(result + 1924) = v6;
  240.     *(char *)(result + 1120) = (char)v6;
  241.     *(int32_t *)(result + 1128) = v6;
  242.     *(int32_t *)(result + 1856) = v4;
  243.     *(int16_t *)(result + 1878) = (int16_t)v6;
  244.     *(char *)(result + 1839) = (char)v6;
  245.     *(int32_t *)(result + 1356) = v6;
  246.     *(int32_t *)(result + 1424) = v6;
  247.     *(int32_t *)(result + 1268) = v6;
  248.     *(int32_t *)(result + 1272) = v6;
  249.     *(int32_t *)(result + 1276) = v6;
  250.     *(int32_t *)(result + 1280) = v6;
  251.     *(int16_t *)(result + 1284) = (int16_t)v6;
  252.     *(int16_t *)(result + 1286) = (int16_t)v6;
  253.     *(int16_t *)(result + 1288) = (int16_t)v6;
  254.     *(int16_t *)(result + 1290) = (int16_t)v6;
  255.     *(int32_t *)(result + 1928) = v6;
  256.     *(int32_t *)(result + 1932) = v6;
  257.     *(int32_t *)(result + 1944) = v4;
  258.     int32_t v25;
  259.     if (_PedIntelligencePool__allocate() == v6) {
  260.         // 0x5e84a1
  261.         v25 = 0;
  262.     } else {
  263.         // 0x5e8497
  264.         v25 = _3f__3f_0CPedIntelligence_40__40_QAE_40_PAVCPed_40__40__40_Z(result);
  265.     }
  266.     // 0x5e84a3
  267.     *(int32_t *)(result + 1148) = v25;
  268.     int32_t v26 = *(int32_t *)(result + 1432); // 0x5e84a9
  269.     *(char *)(v1 + 52) = 4;
  270.     *(int32_t *)(result + 1152) = v6;
  271.     if (v26 != v6) {
  272.         // 0x5e84be
  273.         if (v26 != 1) {
  274.             // 0x5e84c3
  275.             *(int32_t *)(v1 - 4) = 32;
  276.             float64_t v27 = _3f__3f_2CTask_40__40_YAPAXI_40_Z(); // 0x5e84c5
  277.             *(int32_t *)(v1 + 64) = (int32_t)(float32_t)v27;
  278.             *(char *)(v1 + 52) = 6;
  279.             int32_t v28;
  280.             if ((int32_t)(float32_t)v27 == v6) {
  281.                 // 0x5e84e3
  282.                 v28 = 0;
  283.             } else {
  284.                 // 0x5e84da
  285.                 v28 = CTask_870ADC__constructor();
  286.             }
  287.             // 0x5e84e5
  288.             *(int32_t *)(v1 - 4) = 3;
  289.             *(int32_t *)(v1 - 8) = v28;
  290.             *(char *)(v1 + 52) = 4;
  291.             sub_681B60((int32_t)&g2, (int32_t)&g2);
  292.         }
  293.     }
  294.     // 0x5e84fb
  295.     *(int32_t *)(v1 - 4) = 32;
  296.     float64_t v29 = _3f__3f_2CTask_40__40_YAPAXI_40_Z(); // 0x5e84fd
  297.     *(int32_t *)(v1 + 64) = (int32_t)(float32_t)v29;
  298.     *(char *)(v1 + 52) = 7;
  299.     int32_t v30;
  300.     if ((int32_t)(float32_t)v29 == v6) {
  301.         // 0x5e8524
  302.         v30 = 0;
  303.     } else {
  304.         // 0x5e8512
  305.         *(int32_t *)(v1 - 4) = 0x41000000;
  306.         *(int32_t *)(v1 - 8) = v6;
  307.         *(int32_t *)(v1 - 12) = 1;
  308.         *(int32_t *)(v1 - 16) = v6;
  309.         int32_t v31 = _3f__3f_0CTaskSimpleStandStill_40__40_QAE_40_I_N_NM_40_Z((int32_t)&g2, (char)&g2, (char)&g2, (int32_t)&g2); // 0x5e851d
  310.         v30 = v31;
  311.     }
  312.     // 0x5e8526
  313.     *(int32_t *)(v1 - 4) = v6;
  314.     *(int32_t *)(v1 - 8) = 4;
  315.     *(int32_t *)(v1 - 12) = v30;
  316.     *(char *)(v1 + 52) = 4;
  317.     CPedTasks___3f_assignPrimaryTask((int32_t)&g2, (int32_t)&g2, (int32_t)&g2);
  318.     *(int32_t *)(v1 - 4) = v6;
  319.     *(int32_t *)(v1 - 8) = result;
  320.     *(int32_t *)(result + 1880) = v6;
  321.     *(int32_t *)(result + 1936) = 0x3f800000;
  322.     *(int16_t *)(result + 1940) = (int16_t)v4;
  323.     CPopulation__updatePedCount((int32_t)&g2, (char)&g2);
  324.     int32_t * v32 = (int32_t *)(result + 1140); // 0x5e855b
  325.     int32_t v33 = *(int32_t *)(result + 1144); // 0x5e8561
  326.     *v32 = *v32 & -0x20000001;
  327.     *(int32_t *)(result + 1144) = v33 & -33;
  328.     int32_t v34 = v1 + 8; // 0x5e8581
  329.     int32_t v35; // 0x5e85fc
  330.     if (g1 != (char)v6) {
  331.         int32_t v36 = *(int32_t *)(result + 1432); // 0x5e8588
  332.         if (v36 != v6) {
  333.             // 0x5e8592
  334.             if (v36 != 1) {
  335.                 // 0x5e8597
  336.                 *(int32_t *)(v1 + 4) = v6;
  337.                 *(int32_t *)v1 = _pow2((char)&g2);
  338.                 *(int32_t *)(v1 - 4) = 4;
  339.                 CPedAcquaintance__setForPedTypes((int32_t)&g2, (int32_t)&g2);
  340.                 *(int32_t *)(v1 - 4) = v4;
  341.                 *(int32_t *)v1 = _Z13FindPlayerPedi((int32_t)&g2);
  342.                 _3f__3f_0CEventAcquaintancePed_40__40_QAE_40_PAVCPed_40__40__40_Z((int32_t)&g2);
  343.                 v4 = &_3f__3f__7CEventAcquaintancePedHate_40__40_6B_40_;
  344.                 *(int32_t *)(v1 + 20) = (int32_t)&_3f__3f__7CEventAcquaintancePedHate_40__40_6B_40_;
  345.                 *(int32_t *)(v1 - 4) = v6;
  346.                 *(int32_t *)(v1 - 8) = v1 + 20;
  347.                 *(char *)(v1 + 52) = 8;
  348.                 *(int16_t *)(v1 + 42) = 1000;
  349.                 CEventGroup__setActorEvent((int32_t)&g2, (char)&g2);
  350.                 *(char *)(v1 + 52) = 4;
  351.                 *(int32_t *)(v1 + 20) = v4;
  352.                 CEventAcquaintancePed__dtor();
  353.                 v35 = v1;
  354.             } else {
  355.                 v35 = v34;
  356.             }
  357.         } else {
  358.             v35 = v34;
  359.         }
  360.     } else {
  361.         v35 = v34;
  362.     }
  363.     // 0x5e85fc
  364.     __writefsdword(0, *(int32_t *)(v35 + 44));
  365.     return result;
  366. }
  367.  
  368. // --------------- Dynamically Linked Functions ---------------
  369.  
  370. // int32_t unknown_libname_1(void);
  371.  
  372. // --------------------- Meta-Information ---------------------
  373.  
  374. // Detected compiler/packer: securom
  375. // Detected functions: 1
  376. // Decompilation date: 2019-09-22 23:27:14
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement