Advertisement
Pyorot

SS determineReload() partial decompilation

Jul 26th, 2020 (edited)
1,645
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 4.06 KB | None | 0 0
  1. void determineReload(uint room,int param_2)
  2.  
  3. {
  4.   bool bVar1;
  5.   CF *cf;
  6.   Reloader *reloader;
  7.   int iVar2;
  8.   int iVar3;
  9.   int iVar4;
  10.   uint uVar5;
  11.   uint *puVar6;
  12.   void *pvVar7;
  13.   uint *puVar8;
  14.   uint *puVar9;
  15.   uint uVar10;
  16.   undefined2 local_48;
  17.   undefined2 linkAng;
  18.   undefined2 _;
  19.   uint linkX;
  20.   uint linkY;
  21.   uint linkZ;
  22.  
  23.   _savegpr_21();
  24.   iVar2 = *(int *)(param_2 + 8);
  25.   iVar3 = FUN_801b3ea0(DAT_805789c0,room);
  26.   *(undefined2 *)(iVar3 + 0x550) = *(undefined2 *)(param_2 + 4);
  27.   *(int *)(iVar3 + 0x524) = param_2 + iVar2;
  28.   reloader = ReloaderPtr;
  29.   cf = CFptr;
  30.   if (room == (uint)DAT_SpawnSlaveRoom) {
  31.     local_48 = 0;
  32.     linkAng = 0;
  33.     uVar10 = 0x7ffffff;
  34.     iVar2 = 0;
  35.     bVar1 = false;
  36.     _ = 0;
  37.     if (ReloadType == 0) {
  38.       if (ReloaderPtr->t0csFlag == 0) {
  39.         if (ReloaderPtr->t0posFlag == 0) {
  40.           puVar8 = (uint *)FUN_801b6d80(iVar3,(uint)DAT_SpawnSlaveEntrance);
  41.           uVar10 = *puVar8;
  42.           puVar9 = puVar8 + 1;
  43.           puVar8 = puVar8 + 4;
  44.           iVar2 = 1;
  45.         }
  46.         else {
  47.           pvVar7 = get-240(ReloaderPtr);
  48.           linkZ = *(uint *)((int)pvVar7 + 0x34);
  49.           puVar9 = &linkX;
  50.           linkY = *(uint *)((int)pvVar7 + 0x30);
  51.           puVar8 = (uint *)&local_48;
  52.           linkX = *(uint *)((int)pvVar7 + 0x2c);
  53.           linkAng = *(undefined2 *)((int)pvVar7 + 0x38);
  54.           reloader->t0posFlag = 0;
  55.         }
  56.       }
  57.       else {
  58.         bVar1 = true;
  59.         puVar9 = (uint *)get-27c(ReloaderPtr);
  60.         linkAng = *(undefined2 *)(puVar9 + 3);
  61.         puVar8 = (uint *)&local_48;
  62.         uVar10 = puVar9[4];
  63.         reloader->t0csFlag = 0;
  64.       }
  65.     }
  66.     else {
  67.       if (ReloadType == 2) {
  68.         puVar8 = (uint *)getDataCur-001c(CFptr);
  69.         linkZ = puVar8[2];
  70.         linkY = puVar8[1];
  71.         linkX = *puVar8;
  72.         iVar3 = getDataCur-5310(cf);
  73.         linkAng = (undefined2)iVar3;
  74.         puVar9 = &linkX;
  75.         puVar8 = (uint *)&local_48;
  76.         uVar10 = 0x7ffff1b;
  77.       }
  78.       else {
  79.         if (ReloadType == 3) {
  80.           puVar8 = (uint *)getDataCur-0028(CFptr);
  81.           linkZ = puVar8[2];
  82.           linkY = puVar8[1];
  83.           linkX = *puVar8;
  84.           iVar4 = getDataCur-5312(cf);
  85.           linkAng = (undefined2)iVar4;
  86.           puVar9 = &linkX;
  87.           puVar8 = (uint *)&local_48;
  88.           uVar5 = (**(code **)(*DAT_8057865c + 0x2c))(DAT_8057865c,0x2f0);
  89.           if (((uVar5 & 0xffff) == 0) &&
  90.              (uVar5 = (**(code **)(*DAT_8057865c + 0x2c))(DAT_8057865c,0x77), (uVar5 & 0xffff)== 0)
  91.              ) {
  92.             puVar6 = (uint *)FUN_801b6d80(iVar3,(uint)DAT_SpawnSlaveEntrance);
  93.             iVar3 = FUN_8005c6b0(*puVar6);
  94.             if (iVar3 == 1) {
  95.               uVar10 = *puVar6;
  96.             }
  97.           }
  98.         }
  99.         else {
  100.           uVar5 = getDataCur-53a9(CFptr);
  101.           if (((uVar5 & 0xff) == 0) && (ReloadType != 4)) {
  102.             puVar8 = (uint *)getDataCur-0010(cf);
  103.             linkZ = puVar8[2];
  104.             linkY = puVar8[1];
  105.             linkX = *puVar8;
  106.             iVar4 = getDataCur-530e(cf);
  107.             linkAng = (undefined2)iVar4;
  108.             uVar5 = getDataCur-53b5(cf);
  109.             if ((uVar5 & 0xff) == 2) {
  110.               puVar8 = (uint *)FUN_801b6d80(iVar3,(uint)DAT_SpawnSlaveEntrance);
  111.               uVar10 = *puVar8;
  112.             }
  113.             puVar9 = &linkX;
  114.             puVar8 = (uint *)&local_48;
  115.           }
  116.           else {
  117.             puVar8 = (uint *)FUN_801b6d80(iVar3,(uint)DAT_SpawnSlaveEntrance);
  118.             uVar10 = *puVar8;
  119.             puVar9 = puVar8 + 1;
  120.             puVar8 = puVar8 + 4;
  121.           }
  122.         }
  123.       }
  124.       ReloadType = 0;
  125.       if (reloader->t0csFlag != 0) {
  126.         reloader->t0csFlag = 0;
  127.       }
  128.     }
  129.     FUN_8002e780(200,-1,uVar10,puVar9,puVar8,0,0xffffffff);
  130.     if (!bVar1) {
  131.       FUN_801bb0e0(ReloaderPtr,puVar9,puVar8,iVar2);
  132.     }
  133.     FUN_801b3eb0(DAT_805789c0,(byte)room);
  134.     thunk_FUN_802e2a00(0x291,DAT_805789c0,0,0);
  135.     FUN_8019f380();
  136.     FUN_801a77d0();
  137.   }
  138.   _restgpr_21();
  139.   return;
  140. }
  141.  
  142.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement