Advertisement
Guest User

Untitled

a guest
Apr 9th, 2014
277
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 16.53 KB | None | 0 0
  1. /* This file has been generated by the Hex-Rays decompiler.
  2.    Copyright (c) 2007-2013 Hex-Rays <info@hex-rays.com>
  3.  
  4.    Detected compiler: GNU C++
  5. */
  6.  
  7. #include <defs.h>
  8.  
  9.  
  10. //-------------------------------------------------------------------------
  11. // Function declarations
  12.  
  13. // int __fastcall _cxa_finalize(_DWORD); weak
  14. // int pthread_key_create(void); weak
  15. // int __fastcall close(_DWORD); weak
  16. // int _errno(void); weak
  17. // char *strerror(int);
  18. // int __fastcall pthread_once(_DWORD, _DWORD); weak
  19. // int __fastcall pthread_getspecific(_DWORD); weak
  20. // void *malloc(size_t);
  21. // int __fastcall pthread_setspecific(_DWORD, _DWORD); weak
  22. // int socket(void); weak
  23. // int snprintf(char *, size_t, const char *, ...);
  24. // int __fastcall _stack_chk_fail(_DWORD, _DWORD); weak
  25. // void *memset(void *, int, size_t);
  26. // void *memcpy(void *, const void *, size_t);
  27. // int __fastcall sendmsg(_DWORD, _DWORD, _DWORD); weak
  28. // int __fastcall recvmsg(_DWORD, _DWORD, _DWORD); weak
  29. // int __fastcall dlopen(_DWORD, _DWORD); weak
  30. // int __fastcall dlsym(_DWORD, _DWORD); weak
  31. // int __fastcall isFeatureEnabled(_DWORD); weak
  32. // int __fastcall pthread_mutex_lock(_DWORD); weak
  33. // int pthread_mutex_unlock(void); weak
  34. // int inet_ntop(void); weak
  35. // int __fastcall getpid(_DWORD); weak
  36. // int __fastcall getsockname(_DWORD, _DWORD, _DWORD); weak
  37. // int __fastcall fcntl(_DWORD, _DWORD); weak
  38. // char *getenv(const char *);
  39. // int strcmp(const char *, const char *);
  40. // char *strchr(const char *, int);
  41. // int __fastcall inet_pton(_DWORD, _DWORD, _DWORD); weak
  42. int sub_9DC();
  43. int sub_A80();
  44. signed int __fastcall sub_B5C(int a1, const void *a2);
  45. void *libnims_init();
  46. int libnims_init_check();
  47. int __fastcall bind(int a1, int a2, int a3);
  48. int __fastcall connect(int a1, int a2, int a3);
  49. int __fastcall getaddrinfo(const char *a1, int a2, int a3, int a4);
  50. int j_j_pthread_key_create();
  51. int j_pthread_key_create();
  52. int j_j_pthread_mutex_unlock();
  53. int j_pthread_mutex_unlock();
  54.  
  55. //-------------------------------------------------------------------------
  56. // Data declarations
  57.  
  58. char byte_A3D[3] = { 'H', '\x03', 'I' }; // weak
  59. _UNKNOWN unk_112C; // weak
  60. void *off_3000 = &off_3000; // weak
  61. _UNKNOWN unk_3004; // weak
  62. int dword_3008; // weak
  63. int (__fastcall *dword_300C)(_DWORD, _DWORD, _DWORD); // weak
  64. int (__fastcall *dword_3010)(_DWORD, _DWORD, _DWORD, _DWORD); // weak
  65. int (__fastcall *dword_3014)(_DWORD, _DWORD, _DWORD); // weak
  66. _UNKNOWN unk_3018; // weak
  67. int dword_301C; // weak
  68. int dword_3020; // weak
  69. int dword_3024; // weak
  70. _UNKNOWN unk_3028; // weak
  71. int dword_3068; // weak
  72. // extern _UNKNOWN _stack_chk_guard; weak
  73.  
  74.  
  75. //----- (000009DC) --------------------------------------------------------
  76. int sub_9DC()
  77. {
  78.   return _cxa_finalize(&off_3000);
  79. }
  80. // 868: using guessed type int __fastcall _cxa_finalize(_DWORD);
  81. // 3000: using guessed type void *off_3000;
  82.  
  83. //----- (00000A80) --------------------------------------------------------
  84. int sub_A80()
  85. {
  86.   int v0; // r5@1
  87.   void *v1; // r0@2
  88.   int v2; // r1@2
  89.   int v3; // r4@4
  90.   int *v4; // r0@6
  91.   int v5; // r0@7
  92.   int *v6; // r0@9
  93.   int result; // r0@11
  94.   signed __int16 v8; // [sp+4h] [bp-8Ch]@7
  95.   __int16 v9; // [sp+6h] [bp-8Ah]@7
  96.   int v10; // [sp+74h] [bp-1Ch]@1
  97.  
  98.   v10 = _stack_chk_guard;
  99.   pthread_once(&unk_3018, byte_A3D);
  100.   v0 = pthread_getspecific(dword_3008);
  101.   if ( !v0 )
  102.   {
  103.     v1 = malloc(4u);
  104.     v0 = (int)v1;
  105.     if ( !v1 )
  106.     {
  107.       v3 = -1;
  108.       goto LABEL_11;
  109.     }
  110.     *(_DWORD *)v1 = -2;
  111.     pthread_setspecific(dword_3008, v1);
  112.   }
  113.   v3 = *(_DWORD *)v0;
  114.   v2 = *(_DWORD *)v0 + 2;
  115.   if ( *(_DWORD *)v0 == -2 )
  116.   {
  117.     v3 = socket();
  118.     if ( v3 == -1 )
  119.     {
  120.       v4 = (int *)_errno();
  121.       strerror(*v4);
  122.     }
  123.     else
  124.     {
  125.       v8 = 1;
  126.       v5 = snprintf((char *)&v9, 0x6Cu, (const char *)&unk_112C, "/data/connectivity/nims");
  127.       if ( dword_3014(v3, &v8, v5 + 2) == -1 )
  128.       {
  129.         v6 = (int *)_errno();
  130.         strerror(*v6);
  131.         close(v3);
  132.         v3 = -1;
  133.       }
  134.       else
  135.       {
  136.         *(_DWORD *)v0 = v3;
  137.       }
  138.     }
  139.   }
  140. LABEL_11:
  141.   result = v3;
  142.   if ( v10 != _stack_chk_guard )
  143.     _stack_chk_fail(v3, v2);
  144.   return result;
  145. }
  146. // 88C: using guessed type int __fastcall close(_DWORD);
  147. // 898: using guessed type int _errno(void);
  148. // 8BC: using guessed type int __fastcall pthread_once(_DWORD, _DWORD);
  149. // 8C8: using guessed type int __fastcall pthread_getspecific(_DWORD);
  150. // 8E0: using guessed type int __fastcall pthread_setspecific(_DWORD, _DWORD);
  151. // 8EC: using guessed type int socket(void);
  152. // 904: using guessed type int __fastcall _stack_chk_fail(_DWORD, _DWORD);
  153. // 3008: using guessed type int dword_3008;
  154. // 3014: using guessed type int (__fastcall *dword_3014)(_DWORD, _DWORD, _DWORD);
  155.  
  156. //----- (00000B5C) --------------------------------------------------------
  157. signed int __fastcall sub_B5C(int a1, const void *a2)
  158. {
  159.   int v2; // r11@1
  160.   const void *v3; // r10@1
  161.   int v4; // r5@1
  162.   signed int result; // r0@2
  163.   int *v6; // r0@4
  164.   int *v7; // r0@6
  165.   __int16 *v8; // [sp+Ch] [bp-84h]@3
  166.   int v9; // [sp+10h] [bp-80h]@3
  167.   char v10; // [sp+14h] [bp-7Ch]@3
  168.   int *v11; // [sp+1Ch] [bp-74h]@3
  169.   int v12; // [sp+20h] [bp-70h]@3
  170.   int *v13; // [sp+24h] [bp-6Ch]@3
  171.   int v14; // [sp+28h] [bp-68h]@3
  172.   int v15; // [sp+30h] [bp-60h]@1
  173.   int v16; // [sp+34h] [bp-5Ch]@3
  174.   int v17; // [sp+38h] [bp-58h]@3
  175.   int v18; // [sp+3Ch] [bp-54h]@3
  176.   __int16 v19; // [sp+40h] [bp-50h]@3
  177.   __int16 v20; // [sp+42h] [bp-4Eh]@3
  178.   int v21; // [sp+44h] [bp-4Ch]@3
  179.   int v22; // [sp+60h] [bp-30h]@3
  180.   int v23; // [sp+64h] [bp-2Ch]@1
  181.  
  182.   v2 = a1;
  183.   v3 = a2;
  184.   v23 = _stack_chk_guard;
  185.   memset(&v15, 0, 0x10u);
  186.   v4 = sub_A80();
  187.   if ( v4 == -1 )
  188.   {
  189.     result = -1;
  190.     goto LABEL_11;
  191.   }
  192.   memset(&v10, 0, 0x1Cu);
  193.   memset(&v19, 0, 0x24u);
  194.   v20 = 36;
  195.   v19 = 1;
  196.   memcpy(&v21, v3, 0x10u);
  197.   v9 = 36;
  198.   v22 = 16;
  199.   v8 = &v19;
  200.   v13 = &v15;
  201.   v11 = (int *)&v8;
  202.   v12 = 1;
  203.   v16 = 1;
  204.   v17 = 1;
  205.   v15 = 16;
  206.   v14 = 16;
  207.   v18 = v2;
  208.   if ( sendmsg(v4, &v10, 0) != 36 )
  209.   {
  210.     v6 = (int *)_errno();
  211.     strerror(*v6);
  212.   }
  213.   memset(&v10, 0, 0x1Cu);
  214.   v12 = 1;
  215.   v9 = 8;
  216.   v11 = (int *)&v8;
  217.   v8 = &v19;
  218.   if ( recvmsg(v4, &v10, 0) == 8 )
  219.   {
  220.     if ( v19 == 1 && v20 == 8 )
  221.     {
  222.       result = v21;
  223.       goto LABEL_11;
  224.     }
  225.   }
  226.   else
  227.   {
  228.     v7 = (int *)_errno();
  229.     strerror(*v7);
  230.   }
  231.   result = -1;
  232. LABEL_11:
  233.   if ( v23 != _stack_chk_guard )
  234.     _stack_chk_fail(result, &_stack_chk_guard);
  235.   return result;
  236. }
  237. // 898: using guessed type int _errno(void);
  238. // 904: using guessed type int __fastcall _stack_chk_fail(_DWORD, _DWORD);
  239. // 928: using guessed type int __fastcall sendmsg(_DWORD, _DWORD, _DWORD);
  240. // 934: using guessed type int __fastcall recvmsg(_DWORD, _DWORD, _DWORD);
  241.  
  242. //----- (00000C5C) --------------------------------------------------------
  243. void *libnims_init()
  244. {
  245.   int v0; // r5@1
  246.   int v1; // r4@1
  247.   int v2; // r0@1
  248.   void *result; // r0@7
  249.  
  250.   dword_3068 = dlopen("/system/lib/libc.so", 0);
  251.   dword_300C = (int (__fastcall *)(_DWORD, _DWORD, _DWORD))dlsym(dword_3068, "bind");
  252.   dword_3014 = (int (__fastcall *)(_DWORD, _DWORD, _DWORD))dlsym(dword_3068, "connect");
  253.   dword_3010 = (int (__fastcall *)(_DWORD, _DWORD, _DWORD, _DWORD))dlsym(dword_3068, "getaddrinfo");
  254.   v0 = isFeatureEnabled(1);
  255.   v1 = isFeatureEnabled(3);
  256.   v2 = isFeatureEnabled(4);
  257.   dword_3020 = 0;
  258.   if ( v0 )
  259.   {
  260.     if ( !v1 && !v2 )
  261.       goto LABEL_7;
  262.     dword_3020 = 1;
  263.   }
  264.   if ( v2 )
  265.     dword_301C = 1;
  266. LABEL_7:
  267.   result = memset(&unk_3028, 0, 0x40u);
  268.   dword_3024 = 1;
  269.   return result;
  270. }
  271. // 940: using guessed type int __fastcall dlopen(_DWORD, _DWORD);
  272. // 94C: using guessed type int __fastcall dlsym(_DWORD, _DWORD);
  273. // 958: using guessed type int __fastcall isFeatureEnabled(_DWORD);
  274. // 300C: using guessed type int (__fastcall *dword_300C)(_DWORD, _DWORD, _DWORD);
  275. // 3010: using guessed type int (__fastcall *dword_3010)(_DWORD, _DWORD, _DWORD, _DWORD);
  276. // 3014: using guessed type int (__fastcall *dword_3014)(_DWORD, _DWORD, _DWORD);
  277. // 301C: using guessed type int dword_301C;
  278. // 3020: using guessed type int dword_3020;
  279. // 3024: using guessed type int dword_3024;
  280. // 3068: using guessed type int dword_3068;
  281.  
  282. //----- (00000D28) --------------------------------------------------------
  283. int libnims_init_check()
  284. {
  285.   pthread_mutex_lock(&unk_3004);
  286.   if ( !dword_3024 )
  287.     libnims_init();
  288.   return j_j_pthread_mutex_unlock();
  289. }
  290. // 964: using guessed type int __fastcall pthread_mutex_lock(_DWORD);
  291. // 3024: using guessed type int dword_3024;
  292.  
  293. //----- (00000D58) --------------------------------------------------------
  294. int __fastcall bind(int a1, int a2, int a3)
  295. {
  296.   int v3; // r4@1
  297.   int v4; // r7@1
  298.   int v5; // r6@1
  299.   int v6; // r0@1
  300.   int *v7; // r0@4
  301.   int v8; // r0@6
  302.   int v9; // r3@6
  303.   int v10; // r6@6
  304.   int result; // r0@9
  305.   int v12; // [sp+34h] [bp-1Ch]@1
  306.  
  307.   v3 = a2;
  308.   v4 = a1;
  309.   v5 = a3;
  310.   v12 = _stack_chk_guard;
  311.   libnims_init_check();
  312.   v6 = *(_WORD *)v3;
  313.   if ( v6 == 2 || v6 == 10 )
  314.   {
  315.     if ( inet_ntop() )
  316.     {
  317.       getpid(__rev16(*(_WORD *)(v3 + 2)));
  318.     }
  319.     else
  320.     {
  321.       v7 = (int *)_errno();
  322.       strerror(*v7);
  323.     }
  324.   }
  325.   v8 = dword_300C(v4, v3, v5);
  326.   v9 = *(_WORD *)v3;
  327.   v10 = v8;
  328.   if ( v9 == 2 || v9 == 10 )
  329.     getpid(v8);
  330.   result = v10;
  331.   if ( v12 != _stack_chk_guard )
  332.     _stack_chk_fail(v10, _stack_chk_guard);
  333.   return result;
  334. }
  335. // 300C: invalid function type has been ignored
  336. // 898: using guessed type int _errno(void);
  337. // 904: using guessed type int __fastcall _stack_chk_fail(_DWORD, _DWORD);
  338. // 97C: using guessed type int inet_ntop(void);
  339. // 988: using guessed type int __fastcall getpid(_DWORD);
  340. // 300C: using guessed type int (__fastcall *dword_300C)(_DWORD, _DWORD, _DWORD);
  341.  
  342. //----- (00000DD8) --------------------------------------------------------
  343. int __fastcall connect(int a1, int a2, int a3)
  344. {
  345.   int v3; // r5@1
  346.   int v4; // r4@1
  347.   int v5; // r6@1
  348.   int (__fastcall *v6)(_DWORD, _DWORD, _DWORD); // r3@2
  349.   signed int v7; // r8@3
  350.   int *v8; // r0@4
  351.   int v9; // r0@9
  352.   __int16 *v10; // r1@9
  353.   int v11; // r3@13
  354.   char v12; // zf@14
  355.   int v13; // r0@18
  356.   int v14; // r3@18
  357.   int v15; // lr@18
  358.   int v16; // r2@18
  359.   int v17; // r12@18
  360.   int result; // r0@21
  361.   int v19; // [sp+4h] [bp-4Ch]@3
  362.   __int16 v20; // [sp+8h] [bp-48h]@18
  363.   __int16 v21; // [sp+Ah] [bp-46h]@18
  364.   int v22; // [sp+Ch] [bp-44h]@18
  365.   __int16 v23; // [sp+18h] [bp-38h]@3
  366.   int v24; // [sp+34h] [bp-1Ch]@1
  367.  
  368.   v3 = a1;
  369.   v4 = a2;
  370.   v5 = a3;
  371.   v24 = _stack_chk_guard;
  372.   libnims_init_check();
  373.   if ( dword_3020 )
  374.   {
  375.     v19 = 28;
  376.     v7 = getsockname(v3, &v23, &v19);
  377.     if ( v7 )
  378.     {
  379.       v8 = (int *)_errno();
  380.       strerror(*v8);
  381.     }
  382.     fcntl(v3, 3);
  383.     if ( v23 == 2 )
  384.     {
  385.       if ( (__rev(*(_DWORD *)(v4 + 4)) & 0xFF000000) != 2130706432 )
  386.       {
  387.         v9 = v3;
  388.         v10 = (__int16 *)v4;
  389. LABEL_19:
  390.         v7 = sub_B5C(v9, v10);
  391. LABEL_20:
  392.         if ( v7 == -2 )
  393.         {
  394.           *(_DWORD *)_errno() = 1;
  395.           result = -1;
  396.           goto LABEL_24;
  397.         }
  398.         goto LABEL_22;
  399.       }
  400.     }
  401.     else
  402.     {
  403.       if ( v23 != 10 )
  404.         goto LABEL_20;
  405.       if ( *(_DWORD *)(v4 + 8) || *(_DWORD *)(v4 + 12) )
  406.         goto LABEL_18;
  407.       v11 = *(_DWORD *)(v4 + 16);
  408.       if ( v11 == -65536 )
  409.       {
  410.         v12 = (__rev(*(_DWORD *)(v4 + 20)) & 0xFF000000) == 2130706432;
  411.       }
  412.       else
  413.       {
  414.         if ( v11 )
  415.         {
  416. LABEL_18:
  417.           v13 = *(_BYTE *)(v4 + 23);
  418.           v14 = *(_BYTE *)(v4 + 22);
  419.           v20 = 2;
  420.           v15 = v14 | (v13 << 8);
  421.           v16 = *(_BYTE *)(v4 + 21);
  422.           v9 = v3;
  423.           v17 = *(_BYTE *)(v4 + 20);
  424.           v21 = *(_WORD *)(v4 + 2);
  425.           v22 = v17 | ((v16 | (v15 << 8)) << 8);
  426.           v10 = &v20;
  427.           goto LABEL_19;
  428.         }
  429.         v12 = *(_DWORD *)(v4 + 20) == 0x1000000;
  430.       }
  431.       if ( !v12 )
  432.         goto LABEL_18;
  433.     }
  434. LABEL_22:
  435.     v6 = dword_3014;
  436.     goto LABEL_23;
  437.   }
  438.   v6 = dword_3014;
  439. LABEL_23:
  440.   result = v6(v3, v4, v5);
  441. LABEL_24:
  442.   if ( v24 != _stack_chk_guard )
  443.     _stack_chk_fail(result, v24);
  444.   return result;
  445. }
  446. // 898: using guessed type int _errno(void);
  447. // 904: using guessed type int __fastcall _stack_chk_fail(_DWORD, _DWORD);
  448. // 994: using guessed type int __fastcall getsockname(_DWORD, _DWORD, _DWORD);
  449. // 9A0: using guessed type int __fastcall fcntl(_DWORD, _DWORD);
  450. // 3014: using guessed type int (__fastcall *dword_3014)(_DWORD, _DWORD, _DWORD);
  451. // 3020: using guessed type int dword_3020;
  452.  
  453. //----- (00000EE4) --------------------------------------------------------
  454. int __fastcall getaddrinfo(const char *a1, int a2, int a3, int a4)
  455. {
  456.   const char *v4; // r4@1
  457.   int v5; // r8@1
  458.   int v6; // r9@1
  459.   int v7; // r5@1
  460.   int (__fastcall *v8)(_DWORD, _DWORD, _DWORD, _DWORD); // r6@3
  461.   char *v9; // r0@4
  462.   signed int v10; // r3@7
  463.   int v11; // r2@10
  464.   char v12; // zf@14
  465.   signed int v13; // r11@15
  466.   size_t v14; // r2@18
  467.   int result; // r0@21
  468.   int v16; // r6@26
  469.   int *v17; // r0@28
  470.   int *v18; // r0@30
  471.   int v19; // [sp-10h] [bp-10h]@20
  472.   int v20; // [sp+4h] [bp+4h]@1
  473.   __int16 v21; // [sp+8h] [bp+8h]@27
  474.   __int16 v22; // [sp+Ah] [bp+Ah]@27
  475.   int v23; // [sp+Ch] [bp+Ch]@27
  476.   __int16 *v24; // [sp+10h] [bp+10h]@27
  477.   int v25; // [sp+14h] [bp+14h]@27
  478.   int v26; // [sp+18h] [bp+18h]@27
  479.   int *v27; // [sp+20h] [bp+20h]@27
  480.   int v28; // [sp+24h] [bp+24h]@27
  481.   int v29; // [sp+34h] [bp+34h]@1
  482.  
  483.   v4 = a1;
  484.   v5 = a4;
  485.   v6 = a2;
  486.   v7 = a3;
  487.   v29 = _stack_chk_guard;
  488.   libnims_init_check();
  489.   v20 = (int)&_stack_chk_guard;
  490.   if ( dword_301C && dword_3020 )
  491.   {
  492.     v9 = getenv("ANDROID_DNS_MODE");
  493.     if ( v9 && !strcmp(v9, "local") )
  494.     {
  495.       v8 = dword_3010;
  496.       goto LABEL_32;
  497.     }
  498.     v10 = (signed int)v4;
  499.     if ( v4 )
  500.       v10 = 1;
  501.     if ( v7 )
  502.       v11 = v10 & 1;
  503.     else
  504.       v11 = 0;
  505.     if ( v11 )
  506.     {
  507.       if ( *(_DWORD *)v7 & 4 )
  508.       {
  509.         v12 = strchr(v4, 58) == 0;
  510.         v13 = v12 ? 2 : 10;
  511.         v14 = v12 ? 4 : 16;
  512.         memset(&v19, 0, v14);
  513.         if ( inet_pton(v13, v4, &v19) == 1 )
  514.         {
  515.           result = dword_3010(v4, v6, v7, v5);
  516.           goto LABEL_33;
  517.         }
  518.       }
  519.     }
  520.     else if ( !v10 )
  521.     {
  522. LABEL_31:
  523.       v8 = dword_3010;
  524.       goto LABEL_32;
  525.     }
  526.     if ( strcmp(v4, "127.0.0.1") )
  527.     {
  528.       if ( strcmp(v4, "localhost") )
  529.       {
  530.         v16 = sub_A80();
  531.         if ( v16 != -1 )
  532.         {
  533.           memset(&v26, 0, 0x1Cu);
  534.           v21 = 2;
  535.           v24 = &v21;
  536.           v28 = 1;
  537.           v23 = 0;
  538.           v22 = 4;
  539.           v25 = 4;
  540.           v27 = (int *)&v24;
  541.           if ( sendmsg(v16, &v26, 0) != 4 )
  542.           {
  543.             v17 = (int *)_errno();
  544.             strerror(*v17);
  545.           }
  546.           memset(&v26, 0, 0x1Cu);
  547.           v28 = 1;
  548.           v25 = 8;
  549.           v27 = (int *)&v24;
  550.           v24 = &v21;
  551.           if ( recvmsg(v16, &v26, 0) != 8 )
  552.           {
  553.             v18 = (int *)_errno();
  554.             strerror(*v18);
  555.           }
  556.         }
  557.       }
  558.     }
  559.     goto LABEL_31;
  560.   }
  561.   v8 = dword_3010;
  562. LABEL_32:
  563.   result = v8(v4, v6, v7, v5);
  564. LABEL_33:
  565.   if ( v29 != *(_DWORD *)v20 )
  566.     _stack_chk_fail(result, *(_DWORD *)v20);
  567.   return result;
  568. }
  569. // 3010: invalid function type has been ignored
  570. // 898: using guessed type int _errno(void);
  571. // 904: using guessed type int __fastcall _stack_chk_fail(_DWORD, _DWORD);
  572. // 928: using guessed type int __fastcall sendmsg(_DWORD, _DWORD, _DWORD);
  573. // 934: using guessed type int __fastcall recvmsg(_DWORD, _DWORD, _DWORD);
  574. // 9D0: using guessed type int __fastcall inet_pton(_DWORD, _DWORD, _DWORD);
  575. // 3010: using guessed type int (__fastcall *dword_3010)(_DWORD, _DWORD, _DWORD, _DWORD);
  576. // 301C: using guessed type int dword_301C;
  577. // 3020: using guessed type int dword_3020;
  578.  
  579. //----- (000010A0) --------------------------------------------------------
  580. int j_j_pthread_key_create()
  581. {
  582.   return j_pthread_key_create();
  583. }
  584.  
  585. //----- (000010A4) --------------------------------------------------------
  586. int j_pthread_key_create()
  587. {
  588.   return pthread_key_create();
  589. }
  590. // 880: using guessed type int pthread_key_create(void);
  591.  
  592. //----- (000010C0) --------------------------------------------------------
  593. int j_j_pthread_mutex_unlock()
  594. {
  595.   return j_pthread_mutex_unlock();
  596. }
  597.  
  598. //----- (000010C4) --------------------------------------------------------
  599. int j_pthread_mutex_unlock()
  600. {
  601.   return pthread_mutex_unlock();
  602. }
  603. // 970: using guessed type int pthread_mutex_unlock(void);
  604.  
  605. // ALL OK, 12 function(s) have been successfully decompiled
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement