Moolah60

what_did_they_DO

Sep 19th, 2022
830
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 3.90 KB | None | 0 0
  1. evdate_t decode_date(evdate_t param_1)
  2.  
  3. {
  4.   uint uVar1;
  5.   ushort uVar2;
  6.   undefined uVar3;
  7.   int iVar4;
  8.   undefined uVar5;
  9.   evdate_t local_18;
  10.   undefined4 local_14;
  11.  
  12.   local_18 = param_1;
  13.   if ((int)param_1 >> 0x18 == 50) {
  14.     local_18 = (evdate_t)((uint)param_1 & 0xffffff | (uint)DAT_80160f21 << 0x18);
  15.   }
  16.   iVar4 = (int)local_18 >> 0x18;
  17.   if (((int)local_18 << 8) >> 0x18 == 99) {
  18.     uVar1 = FUN_80088a84(iVar4);
  19.     local_18 = (evdate_t)((uint)local_18 & 0xff00ffff | (uVar1 & 0xff) << 0x10);
  20.     iVar4 = (int)local_18 >> 0x18;
  21.   }
  22.   if (99 < iVar4) {
  23.     local_18 = (evdate_t)((uint)local_18 & 0xffff | (uint)*(ushort *)(&DAT_8015fc44 + (iVar4 + -100) * 2) << 0x10);
  24.   }
  25.   if (((uint)local_18 & 0x20) != 0) {
  26.     local_18 = (evdate_t)((uint)local_18 & 0xffffff00 | (uint)*(byte *)(((uint)local_18 & 0x1f) * 2 + -0x7fea03bb) | (uint)local_18 & 0xc0);
  27.   }
  28.   if ((int)local_18 >> 0x18 < 0x50) goto LAB_8008a3b4;
  29.   local_18 = (evdate_t)((uint)local_18 & 0xffffff | (((int)local_18 >> 0x18) + -0x50) * 0x1000000);
  30.   if ((int)local_18 >> 0x18 < 0xd) {
  31.     uVar2 = FUN_80088a38(&local_18);
  32.     local_18 = (evdate_t)((uint)local_18 & 0xffff | (uint)uVar2 << 0x10);
  33.     goto LAB_8008a3b4;
  34.   }
  35.   local_14 = local_14 & 0xffff | 0x1010000;
  36.   uVar2 = FUN_80088a38(&local_14);
  37.   uVar1 = (uint)uVar2 << 0x10;
  38.   local_14 = local_14 & 0xffff | uVar1;
  39.   local_14._1_1_ = (char)uVar2;
  40.   if (local_18.day == 30) {
  41.     uVar3 = 0x1f;
  42.     if (uVar2 != 0x201) {
  43.       local_18 = (evdate_t)(uVar1 & 0xff000000 | (uint)CONCAT12(local_14._1_1_ + -1,local_18._2_2_));
  44.       goto LAB_8008a3b4;
  45.     }
  46.     uVar5 = 1;
  47.   }
  48.   else {
  49.     if (local_18.day == 0x1d) {
  50.       if (uVar2 == 0x202) {
  51.         local_18._1_3_ = CONCAT12(0x1f,local_18._2_2_);
  52.         local_18 = (evdate_t)CONCAT13(1,local_18._1_3_);
  53.       }
  54.       else if (uVar2 == 0x201) {
  55.         local_18._1_3_ = CONCAT12(30,local_18._2_2_);
  56.         local_18 = (evdate_t)CONCAT13(1,local_18._1_3_);
  57.       }
  58.       else {
  59.         local_18 = (evdate_t)(uVar1 & 0xff000000 | (uint)CONCAT12(local_14._1_1_ + -2,local_18._2_2_));
  60.       }
  61.       goto LAB_8008a3b4;
  62.     }
  63.     if (local_18.day != 0x19) goto LAB_8008a3b4;
  64.     if (uVar2 == 0x205) {
  65.       uVar3 = 0x1f;
  66.       uVar5 = 1;
  67.     }
  68.     else {
  69.       if (uVar2 == 0x204) {
  70.         uVar3 = 1;
  71. LAB_8008a354:
  72.         local_18._1_3_ = CONCAT12(30,local_18._2_2_);
  73.         local_18 = (evdate_t)CONCAT13(uVar3,local_18._1_3_);
  74.         goto LAB_8008a3b4;
  75.       }
  76.       if (uVar2 == 0x203) {
  77.         uVar3 = 1;
  78. LAB_8008a36c:
  79.         local_18._1_3_ = CONCAT12(0x1d,local_18._2_2_);
  80.         local_18 = (evdate_t)CONCAT13(uVar3,local_18._1_3_);
  81.         goto LAB_8008a3b4;
  82.       }
  83.       if (uVar2 == 0x202) {
  84.         uVar3 = 0x1c;
  85.         uVar5 = 1;
  86.       }
  87.       else if (uVar2 == 0x201) {
  88.         uVar3 = 0x1b;
  89.         uVar5 = 1;
  90.       }
  91.       else {
  92.         if (uVar2 == 0x105) {
  93.           uVar3 = 0x1f;
  94.         }
  95.         else {
  96.           if (uVar2 == 0x104) {
  97.             uVar3 = 0xc;
  98.             goto LAB_8008a354;
  99.           }
  100.           if (uVar2 == 0x103) {
  101.             uVar3 = 0xc;
  102.             goto LAB_8008a36c;
  103.           }
  104.           if (uVar2 == 0x102) {
  105.             uVar3 = 0x1c;
  106.           }
  107.           else {
  108.             uVar3 = 0x1b;
  109.             if (uVar2 != 0x101) {
  110.               local_18 = (evdate_t)(uVar1 & 0xff000000 | (uint)CONCAT12(local_14._1_1_ + -5,local_18._2_2_));
  111.               goto LAB_8008a3b4;
  112.             }
  113.           }
  114.         }
  115.         uVar5 = 0xc;
  116.       }
  117.     }
  118.   }
  119.   local_18._1_3_ = CONCAT12(uVar3,local_18._2_2_);
  120.   local_18 = (evdate_t)CONCAT13(uVar5,local_18._1_3_);
  121. LAB_8008a3b4:
  122.   iVar4 = ((uint)local_18 >> 0x10) << 0x18;
  123.   if (iVar4 < 0) {
  124.     uVar3 = FUN_80088f78((int)local_18.month,iVar4 >> 0x18);
  125.     local_18._1_3_ = CONCAT12(uVar3,local_18._2_2_);
  126.     local_18 = (evdate_t)((uint)local_18 & 0xff000000 | (uint)local_18._1_3_);
  127.   }
  128.   return local_18;
  129. }
Advertisement
Add Comment
Please, Sign In to add comment