Advertisement
Guest User

Untitled

a guest
May 5th, 2015
261
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.37 KB | None | 0 0
  1. HMODULE __usercall sub_405A58@<eax>(const CHAR *a1@<eax>)
  2. {
  3. LCID v1; // eax@8
  4. HMODULE v2; // ebx@8
  5. unsigned __int32 v4; // [sp-Ch] [bp-134h]@4
  6. CHAR *v5; // [sp-8h] [bp-130h]@4
  7. int v6; // [sp-4h] [bp-12Ch]@4
  8. CHAR Filename[261]; // [sp+7h] [bp-121h]@1
  9. LPSTR lpString1; // [sp+10Ch] [bp-1Ch]@11
  10. DWORD cbData; // [sp+110h] [bp-18h]@4
  11. BYTE Data; // [sp+116h] [bp-12h]@1
  12. char v11; // [sp+11Ah] [bp-Eh]@7
  13. CHAR LCData; // [sp+11Bh] [bp-Dh]@8
  14. char v13; // [sp+11Dh] [bp-Bh]@21
  15. HKEY phkResult; // [sp+120h] [bp-8h]@1
  16. LPCSTR lpString2; // [sp+124h] [bp-4h]@1
  17. int savedregs; // [sp+128h] [bp+0h]@4
  18.  
  19. lpString2 = a1;
  20. GetModuleFileNameA(0, Filename, 0x105u);
  21. Data = 0;
  22. if ( !RegOpenKeyExA(HKEY_CURRENT_USER, "Software\\Borland\\Locales", 0, 0xF0019u, &phkResult)
  23. || !RegOpenKeyExA(HKEY_LOCAL_MACHINE, "Software\\Borland\\Locales", 0, 0xF0019u, &phkResult)
  24. || !RegOpenKeyExA(HKEY_CURRENT_USER, "Software\\Borland\\Delphi\\Locales", 0, 0xF0019u, &phkResult) )
  25. {
  26. v6 = (int)&savedregs;
  27. v5 = (CHAR *)&loc_405B5C;
  28. v4 = __readfsdword(0);
  29. __writefsdword(0, (unsigned int)&v4);
  30. cbData = 5;
  31. sub_405880(Filename, 261);
  32. if ( RegQueryValueExA(phkResult, Filename, 0, 0, &Data, &cbData)
  33. && RegQueryValueExA(phkResult, ValueName, 0, 0, &Data, &cbData) )
  34. Data = 0;
  35. v11 = 0;
  36. __writefsdword(0, v4);
  37. v6 = (int)&loc_405B63;
  38. RegCloseKey(phkResult);
  39. }
  40. lstrcpynA(Filename, lpString2, 261);
  41. v6 = 5;
  42. v5 = &LCData;
  43. v4 = 3;
  44. v1 = GetThreadLocale();
  45. GetLocaleInfoA(v1, v4, v5, v6);
  46. v2 = 0;
  47. if ( Filename[0] && (LCData || Data) )
  48. {
  49. for ( lpString1 = &Filename[lstrlenA(Filename)]; *lpString1 != 46 && Filename != lpString1; --lpString1 )
  50. ;
  51. if ( Filename != lpString1 )
  52. {
  53. ++lpString1;
  54. if ( Data )
  55. {
  56. lstrcpynA(lpString1, (LPCSTR)&Data, 261 - (lpString1 - Filename));
  57. v2 = LoadLibraryExA(Filename, 0, 2u);
  58. }
  59. if ( !v2 )
  60. {
  61. if ( LCData )
  62. {
  63. lstrcpynA(lpString1, &LCData, 261 - (lpString1 - Filename));
  64. v2 = LoadLibraryExA(Filename, 0, 2u);
  65. if ( !v2 )
  66. {
  67. v13 = 0;
  68. lstrcpynA(lpString1, &LCData, 261 - (lpString1 - Filename));
  69. v2 = LoadLibraryExA(Filename, 0, 2u);
  70. }
  71. }
  72. }
  73. }
  74. }
  75. return v2;
  76. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement