Advertisement
IAmXeClutch

[Reverse] ProcessUpdateRPF

Nov 19th, 2015
303
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 5.37 KB | None | 0 0
  1. // TU26
  2. void ProcessUpdateRPF()
  3. {
  4.     char* var_130;
  5.    
  6.     sub_83286E78(&unk_839920B8, "update:/update.rpf", 0);
  7.     r9 = r3 & 0xFF;
  8.     if (r9 != 0)
  9.     {
  10.         sub_83287B10(&unk_83B50260, "update:/update.rpf", 1, 0, 0);
  11.         r11 = r3 & 0xFF;
  12.         if (r11 != 0)
  13.         {
  14.             sub_83289018(&unk_83B50260, "update:/");
  15.             r31 = r30;
  16.         }
  17.     }
  18.    
  19.     // the rest is the same as in TU27 except the addresses
  20. }
  21. int sub_83287B10(int unkStruct, char* szFilePath, BOOL unkBool1, BOOL unkBool2, BOOL unkBool3)
  22. {
  23.     auto var_150; // not sure what this is yet
  24.    
  25.     sub_83286C50(&unk_839920B8, var_150, 0x100, szFilePath, &dword_82000E64);
  26.     r10 = sub_83275CA8(var_150);
  27.     r11 = (unkStruct + 0x40);
  28.    
  29.     CTR = 0x1F;
  30.     while (CTR != 0)
  31.     {
  32.         if (r10 != 0 && *(unsigned char*)r10 != 0)
  33.         {
  34.             *(unsigned char*)r11 = *(unsigned char*)r10;
  35.             r11++;
  36.             r10++;
  37.             CTR--;
  38.         }
  39.         else
  40.             break;
  41.     }
  42.    
  43.     r10 += var_150;
  44.     r27 = *(unsigned char*)r11;
  45.     r3 = (unkStruct + 0x60);
  46.     *(DWORD*)(unkStruct + 0x64) = r27;
  47.     r11 = r10;
  48.    
  49.     while (r9 != 0)
  50.     {
  51.         r9 = *(unsigned char*)r10;
  52.         r10++;
  53.     }
  54.    
  55.     r11 -= r10;
  56.     r4 = var_150;
  57.     r11--;
  58.     r5 = r11 & 0xFFFFFFFF;
  59.     sub_83220C78(r3, r4, r5);
  60.     if (sub_83285020(var_150, 1) == 0)
  61.         return 0;
  62.    
  63.     r3 = *(DWORD*)(unkStruct + 0x38);
  64.     if (r25 == 0)
  65.     {
  66.         r11 = *(DWORD*)r3;
  67.         r4 = var_150;
  68.         ((void(*)())(r11 + 0x84))();
  69.         if (r3 == 2)
  70.             r25 = 3;
  71.     }
  72.    
  73.     r3 = *(DWORD*)(unkStruct + 0x38);
  74.     r29 = (unkStruct + 0x28);
  75.     r4 = var_150;
  76.     r6 = *(DWORD*)(unkStruct + 0x70);
  77.     r5 = r29;
  78.     r11 *(DWORD*)r3;
  79.     ((void(*)())(r11 + 0xC))();
  80.     *(DWORD*)(unkStruct + 0x18) = *(DWORD*)(unkStruct + 0x38);
  81.     if (r3 == -1)
  82.         return 0;
  83.     r3 = *(DWORD*)(unkStruct + 0x38);
  84.     r4 = var_150;
  85.     r11 = *(DWORD*)r3;
  86.     ((void(*)())(r11 + 0x58))();
  87.     *(QWORD*)(unkStruct + 0x20) = (QWORD)r3;
  88.     if (r25 != 2)
  89.         goto label_83287D3C;
  90.     r3 = *(DWORD*)(unkStruct + 0x38);
  91.     r4 = var_150;
  92.     r11 = *(DWORD*)r3;
  93.     ((void(*)())(r11 + 0x54))();
  94.     r30 = r3 & 0xFFFFFFFF;
  95.     if (r28 == 0)
  96.     {
  97.         r3 = r30;
  98.         sub_82210208(r3);
  99.         *(DWORD*)(unkStruct + 0x74) = (DWORD)r3;
  100.         r11 = *(DWORD*)(unkStruct + 0x38);
  101.         r6 = r3;
  102.         r7 = r30;
  103.         (QWORD)r5 = *(QWORD*)r29;
  104.         r3 = r11;
  105.         r4 = *(DWORD*)(unkStruct + 0x18);
  106.         r10 = *(DWORD*)r11;
  107.         ((void(*)())(r10 + 0x1C))();
  108.         r3 = *(DWORD*)(unkStruct + 0x38);
  109.         r8 = *(DWORD*)r3;
  110.         r4 = *(DWORD*)(unkStruct + 0x18);
  111.         ((void(*)())(r8 + 0x34))();
  112.     }
  113.     else
  114.         *(DWORD*)(unkStruct + 0x74) = (DWORD)r28;
  115.    
  116.     sub_8223F978(var_150, 0x100, "memory:$%p,%d,%d:%s", *(DWORD*)(unkStruct + 0x74), r30, 0, szFilePath);
  117.     sub_83285020(var_150, 1);
  118.     r3 = *(DWORD*)(unkStruct + 0x18);
  119.     r10 = *(DWORD*)r3;
  120.     r5 = r29;
  121.     r4 = var_150;
  122.     ((void(*)())(r10 + 8))();
  123.     r3 = *(DWORD*)(unkStruct + 0x18);
  124.     if (r28 != 0)
  125.         r27 = *(DWORD*)(unkStruct + 0x74);
  126.    
  127. label_83287D3C:
  128.     r3 = *(DWORD*)(unkStruct + 0x38);
  129.     r11 = *(DWORD*)r3;
  130.     ((void(*)())(r11 + 0xA0))();
  131.     r9 = r3 & 0xFF;
  132.     r3 = *(DWORD*)(unkStruct + 0x38);
  133.     r11 = *(DWORD*)r3;
  134.     if (r9 == 0)
  135.         goto label_83287D94;
  136.     ((void(*)())(r11 + 0xA4))();
  137.     r9 = *(DWORD*)r3;
  138.     r11 = *(DWORD*)(r3 + 0x3C);
  139.     r4 = (r11 + szFilePath);
  140.     ((void(*)())(r9 + 0xE4))();
  141.     *(DWORD*)(unkStruct + 0x30) = *(DWORD*)(r3 + 8);
  142.     goto label_83287DA8;
  143.    
  144. label_83287D94:
  145.     r4 = var_150;
  146.     ((void(*)())(r11 + 0x54))();
  147.     (QWORD)r3 = *(QWORD*)(unkStruct + 0x30);
  148.    
  149. label_83287DA8:
  150.     r3 = *(DWORD*)(unkStruct + 0x38);
  151.     (QWORD)r11 = *(QWORD*)(unkStruct + 0x30);
  152.    
  153.     // the rest is just more and more of this..
  154. }
  155.  
  156. // TU27
  157. void ProcessUpdateRPF()
  158. {
  159.     char* var_130;
  160.    
  161.     sub_83286E78(&unk_83992108, "update:/update.rpf", 0);
  162.     r9 = r3 & 0xFF;
  163.     if (r9 != 0)
  164.     {
  165.         sub_83288788(&unk_83B50360, "update:/update.rpf", 1, 0, 0, 1, 0);
  166.         r11 = r3 & 0xFF;
  167.         if (r11 != 0)
  168.         {
  169.             sub_832898B0(&unk_83B50360, "update:/");
  170.             r31 = r30;
  171.         }
  172.     }
  173.    
  174.     sub_832880D8(&off_83924E58, "update:/", 0, &unk_83B50360);
  175.     sub_83289948(&off_83924E58, "updateCRC:/");
  176.     sub_832880D8(&off_83924A10, "update:/common", 1, &unk_83B50360);
  177.     sub_83289948(&off_83924A10, "common:/");
  178.     sub_832880D8(&off_83924D40, "update:/common", 1, &unk_83B50360);
  179.     sub_83289948(&off_83924D40, "commoncrc:/");
  180.     if (*(unsigned char*)byte_83B50B90 == 0)
  181.     {
  182.         sub_837734E0(&byte_83B50B90, "update:/%s", "xbox360"); // think this is something like sprintf_s..
  183.     }
  184.    
  185.     sub_832880D8(&off_83924900, &byte_83B50B90, 0, &unk_83B50360);
  186.     sub_83289948(&off_83924900, "platform:/");
  187.     if (*(unsigned char*)byte_83B50C90 == 0)
  188.     {
  189.         sub_837734E0(&byte_83B50C90, "update:/%s/audio", "xbox360");
  190.     }
  191.    
  192.     sub_832880D8(&off_83924B20, &byte_83B50C90, 1, &unk_83B50360);
  193.     sub_83289948(&off_83924B20, "audio:/");
  194.     sub_83773440(var_130, 0, 0xFF); // think this is something like memset..
  195.     if (*(unsigned char*)byte_83B50C00 == 0)
  196.     {
  197.         sub_837734E0(&byte_83B50C00, "update:/%s/audio", "xbox360");
  198.     }
  199.    
  200.     sub_837734E0(var_130, "%s/%s", "xbox360", "sfx");
  201.     sub_832880D8(&off_83924C30, var_130, 1, &unk_83B50360);
  202.     sub_83289948(&off_83924C30, "audio:/sfx/");
  203. }
  204. int sub_83288788(int unkStruct, char* szFilePath, BOOL unkBool1, BOOL unkBool2, BOOL unkBool3)
  205. {
  206.     auto var_9E0;
  207.     auto var_9C0;
  208.     auto var_8C0;
  209.     auto var_860;
  210.    
  211.     sub_832878C8(&unk_83992108, var_9C0, 0x100, szFilePath, &dword_82000E74);
  212.     sub_83276DC0(var_9C0);
  213.    
  214.     CTR = 0x1F;
  215.     while (CTR != 0)
  216.     {
  217.         if (r10 != 0 && *(unsigned char*)r10 != 0)
  218.         {
  219.             *(unsigned char*)r11 = *(unsigned char*)r10;
  220.             r11++;
  221.             r10++;
  222.             CTR--;
  223.         }
  224.         else
  225.             break;
  226.     }
  227.    
  228.     // pretty much the same up until loc_83288A28..
  229. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement