Jump to content

R&D on four enhancements


johnnylump

Recommended Posts

When is a class' INIT function called? Only at the game start? On loading?

 

PLEASE prove me wrong, but I think UpdateShips() is only called from XGItemTree's Init function. If so, this wouldn't work. (Or, weirdly, only after you reload a game.)

I haven't been following this discussion, so I'm not sure if this is what you mean or if it will be useful... :)

 

It looks like the XGItemTree > Init() function is called from XGFacility_Engineering > Init(), which is called from XGHeadQuaters > CreateFacilities().

 

XGFacility_Engineering

function Init(bool bLoadingFromSave)
{
   BaseInit();
   m_kItems = Spawn(class'XGItemTree');
   m_kItems.Init();
   // End:0x6a
   if(m_arrMusingTracker.Length == 0)
   {
       m_arrMusingTracker.Add(6);
   }
}

 

UpdateShips() is called from XGItemTree > Init() > BuildShips() as you mentioned, but it's also called from XGStrategy > ChangeDifficulty().

 

There's a different UpdateShips() function in XGGeoscape as well, which I think is only called from XGGeoscape > GameTick().

 

:)

 

Thanks for these; I'll check them out. Remains unclear if they are consistently called, or only at start game, game load times, or periodically during play.

Link to comment
Share on other sites

  • Replies 44
  • Created
  • Last Reply

Top Posters In This Topic

Help!

 

I've rewritten DealSplashDamage to randomize explosives damage (I hope). I saved some bytes in a couple of places and before I added anything, I tested the more-efficient function successfully ingame.

 

But, when I added the new functionality

   87 35 3a fa ff ff 58 f9 ff ff 00 01 00 e8 6a 00 00 a7 2c 03 16

   ProjDamage.DamageAmount += Rand(3);   

 

The game no longer runs -- I get the same crash as if the virtual size was wrong (Windows looking for error, etc). But the Virtual Size is correct! (That is, it is one more than the endofscript line number in UE Explorer.)

 

Any ideas what rule I'm breaking?

 

This is the entire modified function, upk XComGame, class DealSplashDamage:

 

simulated function bool DealSplashDamage(Actor InstigatedByActor, float DamageAmount, float InDamageRadius, class<DamageType> DamageType, float Momentum, Vector HurtOrigin)
{
   local bool bCausedDamage;
   local DamageEvent ProjDamage;
   local int NumFires, OutFireIntensity, FireIndex;

   // End:0x21
   if(HACK_bMindMergeDeathProjectile && XComProjectile_Ranged(self) != none)
   {
       return false;
   }
   ProjDamage.EventInstigator = m_kFiredFromUnit;
   ProjDamage.DamageCauser = self;
   ProjDamage.Target = ImpactedActor;
   ProjDamage.DamageAmount = int(DamageAmount);
   ProjDamage.DamageAmount += Rand(3);                                    
   ProjDamage.Radius = InDamageRadius;
   ProjDamage.DamageType = DamageType;
   ProjDamage.Momentum = Velocity;
   ProjDamage.HitLocation = HurtOrigin;
   ProjDamage.bIsHit = bIsHit;
   ProjDamage.HitInfo = TracedImpactInfo;
   ProjDamage.bRadialDamage = InDamageRadius > float(0);
   ProjDamage.bCausesSurroundingAreaDamage = class'XComDamageType'.static.CausesSurroundingAreaDamage(DamageType);
   ProjDamage_ProcessIgnoredActors(ProjDamage);
   bCausedDamage = class'XComDamageType'.static.DealDamage(ProjDamage);
   bHurtEntry = false;
   // End:0x503
   if((((Role == ROLE_Authority) && class'XComWorldData'.static.GetWorldData().IsRebuildingTiles()) && class'XComDamageType'.static.DamageTypeSetsFires(DamageType, self, OutFireIntensity)) && class'XComWorldData'.static.GetWorldData().PotentialFireColumns.Length > 0)
   {
       FireIndex = int(InDamageRadius / 96.0);
       J0x366:
       // End:0x503 [Loop If]
       if(FireIndex > -1)
       {
           XComTacticalGRI(class'Engine'.static.GetCurrentWorldInfo().GRI).m_kBattle.m_kVolumeMgr.CreateVolumeByType(3, class'XComWorldData'.static.GetWorldData().PotentialFireColumns[class'XComEngine'.static.SyncRand(class'XComWorldData'.static.GetWorldData().PotentialFireColumns.Length, (string(Name) @ string(GetStateName())) @ string(GetFuncName()))], 48.0, 96.0, OutFireIntensity);
           class'XComWorldData'.static.GetWorldData().PotentialFireColumns.Remove(FireIndex, 1);
           -- FireIndex;
           // [Loop Continue]
           goto J0x366;
       }
   }
   return bCausedDamage;
   //return ReturnValue;    
}

Edited by johnnylump
Link to comment
Share on other sites

Any ideas what rule I'm breaking?

Without seeing the bytecode for the entire function, it's hard to pinpoint what the problem is because sometimes even if the decompiled script looks exactly the same as the original, there can be differences in the bytecode causing issues.

 

1. Does the problem still occur without making the other changes near the bottom?

FireIndex = int(InDamageRadius / 96.0);

etc.

 

2. Can you get it to work by temporarily substituting Rand(3) with something else?

ProjDamage.DamageAmount += 3; // (or an int variable)

3. Does it work if you temporarily remove the if statements at the bottom?

 

Adjust the VS in each case as necessary.

 

Find out what works and what doesn't to help narrow down the possible causes :)

Link to comment
Share on other sites

Any ideas what rule I'm breaking?

Without seeing the bytecode for the entire function, it's hard to pinpoint what the problem is because sometimes even if the decompiled script looks exactly the same as the original, there can be differences in the bytecode causing issues.

 

Thank you for giving this a look. Because you asked for it :)

 


Offset    0  1  2  3  4  5  6  7  8  9  A  B  C  D  E  F   0 1 2 3 4 5 6 7 8 9 A B C D E F 

00000000  02 6B 00 00 50 55 00 00 00 00 00 00 E4 6A 00 00  . k . . P U . . . . . . . j . .
00000010  00 00 00 00 00 00 00 00 F0 6A 00 00 00 00 00 00  . . . . . . . . . j . . . . . .
00000020  FE 04 00 00 77 AB 00 00 19 05 00 00 65 03 00 00  . . . . w . . . . . . . e . . .
00000030  07 21 00 82 2D 01 60 6A 00 00 18 0E 00 77 2E EE  . ! . . - . ` j . . . . . w . .
00000040  6B 00 00 17 2A 16 16 04 28 0F 35 F3 F9 FF FF 58  k . . . * . . . ( . 5 . . . . X
00000050  F9 FF FF 00 01 00 E8 6A 00 00 01 3B 6A 00 00 0F  . . . . . . . j . . . ; j . . .
00000060  35 F4 F9 FF FF 58 F9 FF FF 00 01 00 E8 6A 00 00  5 . . . . X . . . . . . . j . .
00000070  17 0F 35 F2 F9 FF FF 58 F9 FF FF 00 01 00 E8 6A  . . 5 . . . . X . . . . . . . j
00000080  00 00 01 B0 F9 FF FF 0F 35 3A FA FF FF 58 F9 FF  . . . . . . . . 5 : . . . X . .
00000090  FF 00 01 00 E8 6A 00 00 38 44 00 EF 6A 00 00 87  . . . . . j . . 8 D . . j . . .
000000A0  35 3A FA FF FF 58 F9 FF FF 00 01 00 E8 6A 00 00  5 : . . . X . . . . . . . j . .
000000B0  A7 2C 03 16 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0F 35  . , . . . . . . . . . . . . . 5
000000C0  16 FD FF FF 58 F9 FF FF 00 01 00 E8 6A 00 00 00  . . . . X . . . . . . . j . . .
000000D0  EE 6A 00 00 0F 35 71 FD FF FF 58 F9 FF FF 00 01  . j . . . 5 q . . . X . . . . .
000000E0  00 E8 6A 00 00 00 ED 6A 00 00 0F 35 E1 F8 FF FF  . . j . . . . j . . . 5 . . . .
000000F0  58 F9 FF FF 00 01 00 E8 6A 00 00 01 DC F8 FF FF  X . . . . . . . j . . . . . . .
00000100  0F 35 E2 F8 FF FF 58 F9 FF FF 00 01 00 E8 6A 00  . 5 . . . . X . . . . . . . j .
00000110  00 00 EB 6A 00 00 14 2D 35 B3 FF FF FF 58 F9 FF  . . . j . . . - 5 . . . . X . .
00000120  FF 00 01 00 E8 6A 00 00 2D 01 70 6A 00 00 0F 35  . . . . . j . . - . p j . . . 5
00000130  E3 F8 FF FF 58 F9 FF FF 00 01 00 E8 6A 00 00 01  . . . . X . . . . . . . j . . .
00000140  3F 6A 00 00 14 2D 35 B2 FF FF FF 58 F9 FF FF 00  ? j . . . - 5 . . . . X . . . .
00000150  01 00 E8 6A 00 00 B1 00 EE 6A 00 00 38 3F 25 16  . . . j . . . . . j . . 8 ? % .
00000160  14 2D 35 B5 FF FF FF 58 F9 FF FF 00 01 00 E8 6A  . - 5 . . . . X . . . . . . . j
00000170  00 00 12 20 5C 4A 00 00 13 00 38 4A 00 00 00 1B  . . .   \ J . . . . 8 J . . . .
00000180  BC 0F 00 00 00 00 00 00 00 ED 6A 00 00 16 1B 06  . . . . . . . . . . j . . . . .
00000190  5B 00 00 00 00 00 00 00 E8 6A 00 00 16 14 2D 00  [ . . . . . . . . j . . . . - .
000001A0  E9 6A 00 00 12 20 5C 4A 00 00 13 00 41 4A 00 00  . j . . .   \ J . . . . A J . .
000001B0  00 1C 43 4A 00 00 00 E8 6A 00 00 16 14 2D 01 C1  . . C J . . . . j . . . . - . .
000001C0  FF FF FF 28 07 03 05 82 82 82 9A 38 3A 01 C1 FE  . . . ( . . . . . . . 8 : . . .
000001D0  FF FF 38 3A 24 03 16 18 36 00 19 12 20 35 55 00  . . 8 : $ . . . 6 . . .   5 U .
000001E0  00 0A 00 20 55 00 00 00 1B 6F 35 00 00 00 00 00  . . .   U . . . . o 5 . . . . .
000001F0  00 16 0A 00 11 55 00 00 00 1B 36 3E 00 00 00 00  . . . . . U . . . . 6 > . . . .
00000200  00 00 16 16 18 33 00 12 20 5C 4A 00 00 1D 00 3C  . . . . . 3 . .   \ J . . . . <
00000210  4A 00 00 00 1B 36 14 00 00 00 00 00 00 00 ED 6A  J . . . . 6 . . . . . . . . . j
00000220  00 00 17 00 E6 6A 00 00 16 16 18 39 00 97 36 19  . . . . . j . . . . . 9 . . 6 .
00000230  12 20 35 55 00 00 0A 00 20 55 00 00 00 1B 6F 35  .   5 U . . . .   U . . . . o 5
00000240  00 00 00 00 00 00 16 09 00 AC 0B 00 00 00 01 AC  . . . . . . . . . . . . . . . .
00000250  0B 00 00 25 16 16 0F 00 E5 6A 00 00 38 44 AC 00  . . . % . . . . . j . . 8 D . .
00000260  EE 6A 00 00 1E 00 00 C0 42 16 07 03 05 97 00 E5  . j . . . . . . B . . . . . . .
00000270  6A 00 00 1D FF FF FF FF 16 19 19 19 2E 64 2D 00  j . . . . . . . . . . . . d - .
00000280  00 19 12 20 4F FE FF FF 0A 00 D8 F9 FF FF 00 1C  . . .   O . . . . . . . . . . .
00000290  F6 FB FF FF 16 09 00 98 F9 FF FF 00 01 98 F9 FF  . . . . . . . . . . . . . . . .
000002A0  FF 09 00 71 2D 00 00 00 01 71 2D 00 00 09 00 7A  . . . q - . . . . q - . . . . z
000002B0  9C 00 00 00 01 7A 9C 00 00 D7 00 D4 B8 00 00 00  . . . . . z . . . . . . . . . .
000002C0  1B 70 13 00 00 00 00 00 00 24 03 10 12 20 BC 4D  . p . . . . . . . $ . . .   . M
000002D0  00 00 5F 00 6B 4D 00 00 00 1C 6E 4D 00 00 36 19  . . _ . k M . . . . n M . . 6 .
000002E0  12 20 35 55 00 00 0A 00 20 55 00 00 00 1B 6F 35  .   5 U . . . .   U . . . . o 5
000002F0  00 00 00 00 00 00 16 09 00 AC 0B 00 00 00 01 AC  . . . . . . . . . . . . . . . .
00000300  0B 00 00 A8 A8 38 57 01 04 FA FF FF 38 57 61 1C  . . . . . 8 W . . . . . 8 W a .
00000310  16 16 38 57 1C B5 FC FF FF 16 16 16 19 12 20 35  . . 8 W . . . . . . . . . .   5
00000320  55 00 00 0A 00 20 55 00 00 00 1B 6F 35 00 00 00  U . . . .   U . . . . o 5 . . .
00000330  00 00 00 16 09 00 AC 0B 00 00 00 01 AC 0B 00 00  . . . . . . . . . . . . . . . .
00000340  1E 00 00 40 42 1E 00 00 C0 42 00 E6 6A 00 00 4A  . . . @ B . . . . B . . j . . J
00000350  16 40 19 12 20 35 55 00 00 0A 00 20 55 00 00 00  . @ . .   5 U . . . .   U . . .
00000360  1B 6F 35 00 00 00 00 00 00 16 09 00 AC 0B 00 00  . o 5 . . . . . . . . . . . . .
00000370  00 01 AC 0B 00 00 00 E5 6A 00 00 26 16 A4 00 E5  . . . . . . . . j . . & . . . .
00000380  6A 00 00 16 06 66 03 04 2D 00 E9 6A 00 00 04 3A  j . . . . f . . - . . j . . . :
00000390  EA 6A 00 00 53 00 00 00 02 01 82 00 69 14 00 00  . j . . S . . . . . . . i . . .
000003A0  00 00 00 00                                      . . . .                        

 

To orient yourself, all the 0bs come right after the Rand(3) line.

 

1. Does the problem still occur without making the other changes near the bottom?

FireIndex = int(InDamageRadius / 96.0);

etc.

 

No. If I 0b-out ProjDamage.DamageAmount += 3, correct the jumps and virtual size, the function works fine and does what it appears it is supposed to do ingame; that is, explosives do damage and start fires.

 

2. Can you get it to work by temporarily substituting Rand(3) with something else?

ProjDamage.DamageAmount += 3; // (or an int variable)

 

No -- I've tried variations with no Rand statements, just simple ints, and it still didn't work.

 

3. Does it work if you temporarily remove the if statements at the bottom?

 

I haven't tried that. What would that tell us?

 

Adjust the VS in each case as necessary.

 

Find out what works and what doesn't to help narrow down the possible causes :)

 

My guess is there is some rule about affecting ProjDamage, but I don't know what it is. A previous version of this had tried to implement the change this way:

 

ProjDamage.DamageAmount = int(DamageAmount) + Rand (3);

 

but that also caused a startup crash.

 

One guess is that I'm using the wrong "+=" (and wrong "+" in the older version). There's about five options in the bytecode table. I haven't done any trial and error on that because it seems like a low probability. I don't know if there is any meaningful difference between those options.

 

Because I now have a spare local variable (NumFires), I'm going to try to use that as an intermediate variable:

 

NumFires = int(DamageAmount) + Rand(3)

ProjDamage.DamageAmount = NumFires

Edited by johnnylump
Link to comment
Share on other sites

Growing evidence it's in the bytes that handle the math causing the problem

 

0f 00 e7 6a 00 00 26

 

NumFires=1

 

works but replacing first byte (=) with

87 or a1 or b8 or df or 3e -- the five bytes that can mean += in the bytecode chart

and which all decompile as

NumFires+=1

 

crashes on startup

Edited by johnnylump
Link to comment
Share on other sites

Thanks ... I just got to a point where I could test the function, and it doesn't appear to impact grenade or rocket damage. Maybe it's exploding cars or Sectopod cannon spread damage. Or possibly the damage values are overwritten in the native function DealDamage. Doh. Back to the labs ... Edited by johnnylump
Link to comment
Share on other sites

Thanks ... I just got to a point where I could test the function, and it doesn't appear to impact grenade or rocket damage. Maybe it's exploding cars or Sectopod cannon spread damage. Or possibly the damage values are overwritten in the native function DealDamage. Doh. Back to the labs ...

Damn, I hate it when that happens. It seems like about 95% of the time I spend on things are either a dead end or don't work! :wallbash:

 

I just had a quick look into that function though and it is called from XComProjectile_FragGrenade > Explode, so it looks like the right place. Are you certain that function has no effect? How about if you delete the contents of the function and just return true/false; is no damage done?

 

Another idea might be to look into XComProjectile_FragGrenade > ProcessTouch

 

:)

Edited by bokauk
Link to comment
Share on other sites

Thanks ... I just got to a point where I could test the function, and it doesn't appear to impact grenade or rocket damage. Maybe it's exploding cars or Sectopod cannon spread damage. Or possibly the damage values are overwritten in the native function DealDamage. Doh. Back to the labs ...

Damn, I hate it when that happens. It seems like about 95% of the time I spend on things are either a dead end or don't work! :wallbash:

 

I just had a quick look into that function though and it is called from XComProjectile_FragGrenade > Explode, so it looks like the right place. Are you certain that function has no effect? How about if you delete the contents of the function and just return true/false; is no damage done?

 

Another idea might be to look into XComProjectile_FragGrenade > ProcessTouch

 

:)

 

 

Thanks for your sympathy. :) It does *seem* like it should work. I've tested with rockets, alien grenades, frag grenades and exploding cars.

 

The code that has no impact is

NumFires = int(DamageAmount);
NumFires = 1;                                        
ProjDamage.DamageAmount = NumFires;

 

NumFires isn't used for anything else in the function. Only other thing I can think of is that NumFires = 1 (0F 00 e7 6a 00 00 2c 01) isn't coded correctly, but it shows up correctly in the decompiler.

 

Haven't tried more drastic tests. I'll look at the other functions.

Edited by johnnylump
Link to comment
Share on other sites

OK, next up. I've been rewriting XComStrategyGame, class XGInterceptionEngagement, function UpdateWeapons, trying to insert a modifier that increases your interceptors' hit chances for every kill they have.

 

I had a version that started the game but crashed at the beginning of an interception.

 

This was the code for that version:

 

                        I = iShip * m_arrInterceptors[0].m_iConfirmedKills;                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        
                        I *= 2;
                        I += akShipWeapons[iWeapon].iToHit;
                        // End:0x38E
                        if(Rand(100) <= I)
                        {
                            kCombatExchange.bHit = true;
                            kCombatExchange.iDamage = (GetShipDamage(akShipWeapons[iWeapon], kCombatExchange)) + Rand(100);
                        }

 

(I've also added something to randomize the damage a little)

 

I thought the problem might be that

m_arrInterceptors[0].m_iConfirmedKills;

 

needed to be

 

m_kInterception.m_arrInterceptors[0].m_iConfirmedKills

 

as I found other references in the class to m_kInterception.m_arrInterceptors, so I added that in. Problem is now the game won't load at all.

 

The two things I've seen that cause the game to not load are 1) wrong virtual size and 2) missing endparams(bytecode 16) -- and sometimes the missing endparams are not obvious in UExplorer. However, I think I got those right here.

 

Anyway, here's the entire function:

 

 

function UpdateWeapons(float fDeltaT)

{

    local CombatExchange kCombatExchange;
    local array<TShipWeapon> akShipWeapons;
    local array<CombatExchange> akCombatExchange;
    local XGShip kShip;
    local int iShip, iWeapon, I;

    iShip = 0;
    J0x0B:
    // End:0x423 [Loop If]
    if(iShip < (GetNumShips()))
    {
        kShip = GetShip(iShip);
        kShip.UpdateWeapons(fDeltaT);
        // End:0x83
        if(!IsAnyWeaponInRange(iShip))
        {
        }
        // End:0x415
        else
        {
            akShipWeapons = kShip.GetWeapons();
            iWeapon = 0;
            J0xB7:
            // End:0x415 [Loop If]
            if(iWeapon < akShipWeapons.Length)
            {
                // End:0x103
                if(akShipWeapons[iWeapon].eType == 0)
                {
                }
                // End:0x3FF
                else
                {
                    // End:0x138
                    if(kShip.m_afWeaponCooldown[iWeapon] > 0.0)
                    {
                    }
                    // End:0x407
                    else
                    {
                        kShip.m_afWeaponCooldown[iWeapon] += akShipWeapons[iWeapon].fFiringTime;
                        kCombatExchange.iSourceShip = iShip;
                        kCombatExchange.iWeapon = iWeapon;
                        // End:0x245
                        if(iShip == 0)
                        {
                            // End:0x224
                            if(!IsShipDead(m_iUFOTarget))
                            {
                                kCombatExchange.iTargetShip = m_iUFOTarget;
                            }
                            // End:0x242
                            else
                            {
                                kCombatExchange.iTargetShip = 1;
                            }
                        }
                        // End:0x263
                        else
                        {
                            kCombatExchange.iTargetShip = 0;
                        }
                        I = iShip * m_kInterception.m_arrInterceptors[0].m_iConfirmedKills;                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        
                        I *= 2;
                        I += akShipWeapons[iWeapon].iToHit;
                        // End:0x38E
                        if(Rand(100) <= I)
                        {
                            kCombatExchange.bHit = true;
                            kCombatExchange.iDamage = (GetShipDamage(akShipWeapons[iWeapon], kCombatExchange)) + Rand(100);
                        }
                        // End:0x3CB
                        else
                        {
                            kCombatExchange.bHit = false;
                            kCombatExchange.iDamage = 0;
                        }
                        kCombatExchange.fTime = m_fTimeElapsed;
                        akCombatExchange.AddItem(kCombatExchange);
                    }
                }
                // [Loop Continue]
                iWeapon ++ );
            }
        }
        // [Loop Continue]
        iShip ++ );
    }
    I = 0;
    J0x42E:
    // End:0x56B [Loop If]
    if(I < akCombatExchange.Length)
    {
        // End:0x4A8
        if(akCombatExchange[I].iSourceShip == 0)
        {
            m_kCombat.m_aUFOExchanges.AddItem(akCombatExchange[I]);
        }
        // End:0x4DB
        else
        {
            m_kCombat.m_aInterceptorExchanges.AddItem(akCombatExchange[I]);
        }
        // End:0x55D
        if(akCombatExchange[I].bHit)
        {
            m_aiShipHP[akCombatExchange[I].iTargetShip] -= akCombatExchange[I].iDamage;
        }
        // [Loop Continue]
        I ++ );
    }
    //return;    
}

 

And here's the bytecode:

 

 

 
 
Offset    0  1  2  3  4  5  6  7  8  9  A  B  C  D  E  F   0 1 2 3 4 5 6 7 8 9 A B C D E F 
 
00000000  30 34 00 00 AB 1F 00 00 00 00 00 00 26 34 00 00  0 4 . . . . . . . . . . & 4 . .
00000010  00 00 00 00 00 00 00 00 30 34 00 00 00 00 00 00  . . . . . . . . 0 4 . . . . . .
00000020  A1 00 00 00 FA 11 00 00 6E 05 00 00 96 03 00 00  . . . . . . . . n . . . . . . .
00000030  0F 00 2B 34 00 00 25 07 23 04 96 00 2B 34 00 00  . . + 4 . . % . # . . . + 4 . .
00000040  1B DF 0F 00 00 00 00 00 00 16 16 0F 00 2C 34 00  . . . . . . . . . . . . . , 4 .
00000050  00 1B 35 10 00 00 00 00 00 00 00 2B 34 00 00 16  . . 5 . . . . . . . . + 4 . . .
00000060  19 00 2C 34 00 00 13 00 00 00 00 00 00 1B 2C 2C  . . , 4 . . . . . . . . . . , ,
00000070  00 00 00 00 00 00 00 30 34 00 00 16 07 83 00 81  . . . . . . . 0 4 . . . . . . .
00000080  1B 14 14 00 00 00 00 00 00 00 2B 34 00 00 16 16  . . . . . . . . . . + 4 . . . .
00000090  06 15 04 0F 00 2E 34 00 00 19 00 2C 34 00 00 0A  . . . . . . 4 . . . . , 4 . . .
000000A0  00 AE 3D 00 00 00 1B 91 10 00 00 00 00 00 00 16  . . = . . . . . . . . . . . . .
000000B0  0F 00 2A 34 00 00 25 07 15 04 96 00 2A 34 00 00  . . * 4 . . % . . . . . * 4 . .
000000C0  36 00 2E 34 00 00 16 07 03 01 9A 38 3A 35 A7 02  6 . . 4 . . . . . . . 8 : 5 . .
000000D0  00 00 A9 02 00 00 00 00 10 00 2A 34 00 00 00 2E  . . . . . . . . . . * 4 . . . .
000000E0  34 00 00 38 3A 24 00 16 06 FF 03 07 38 01 B1 10  4 . . 8 : $ . . . . . . 8 . . .
000000F0  00 2A 34 00 00 19 00 2C 34 00 00 09 00 76 3D 00  . * 4 . . . . , 4 . . . . v = .
00000100  00 00 01 76 3D 00 00 1E 00 00 00 00 16 06 07 04  . . . v = . . . . . . . . . . .
00000110  B8 10 00 2A 34 00 00 19 00 2C 34 00 00 09 00 76  . . . * 4 . . . . , 4 . . . . v
00000120  3D 00 00 00 01 76 3D 00 00 35 A5 02 00 00 A9 02  = . . . . v = . . 5 . . . . . .
00000130  00 00 00 00 10 00 2A 34 00 00 00 2E 34 00 00 16  . . . . . . * 4 . . . . 4 . . .
00000140  0F 35 E3 0B 00 00 E4 0B 00 00 00 01 00 2F 34 00  . 5 . . . . . . . . . . . / 4 .
00000150  00 00 2B 34 00 00 0F 35 E2 0B 00 00 E4 0B 00 00  . . + 4 . . . 5 . . . . . . . .
00000160  00 01 00 2F 34 00 00 00 2A 34 00 00 07 45 02 9A  . . . / 4 . . . * 4 . . . E . .
00000170  00 2B 34 00 00 25 16 07 24 02 81 1B C5 14 00 00  . + 4 . . % . . $ . . . . . . .
00000180  00 00 00 00 01 D4 0B 00 00 16 16 0F 35 E1 0B 00  . . . . . . . . . . . . 5 . . .
00000190  00 E4 0B 00 00 00 01 00 2F 34 00 00 01 D4 0B 00  . . . . . . . . / 4 . . . . . .
000001A0  00 06 42 02 0F 35 E1 0B 00 00 E4 0B 00 00 00 01  . . B . . 5 . . . . . . . . . .
000001B0  00 2F 34 00 00 26 06 63 02 0F 35 E1 0B 00 00 E4  . / 4 . . & . c . . 5 . . . . .
000001C0  0B 00 00 00 01 00 2F 34 00 00 25 0F 00 29 34 00  . . . . . . / 4 . . % . . ) 4 .
000001D0  00 90 00 2B 34 00 00 19 10 2C 00 19 01 DD 0B 00  . . . + 4 . . . . , . . . . . .
000001E0  00 09 00 EC 33 00 00 00 01 EC 33 00 00 09 00 0F  . . . . 3 . . . . . 3 . . . . .
000001F0  E3 00 00 00 01 0F 3E 00 00 16 0B 0B 0B 0B 0B 0B  . . . . . . > . . . . . . . . .
00000200  0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B  . . . . . . . . . . . . . . . .
00000210  0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 85  . . . . . . . . . . . . . . . .
00000220  00 29 34 00 00 2C 02 16 87 00 29 34 00 00 35 A1  . ) 4 . . , . . . . ) 4 . . 5 .
00000230  02 00 00 A9 02 00 00 00 00 10 00 2A 34 00 00 00  . . . . . . . . . . . * 4 . . .
00000240  2E 34 00 00 16 07 8E 03 98 A7 2C 64 16 00 29 34  . 4 . . . . . . . . , d . . ) 4
00000250  00 00 16 14 2D 35 E0 0B 00 00 E4 0B 00 00 00 01  . . . . - 5 . . . . . . . . . .
00000260  00 2F 34 00 00 27 0F 35 DF 0B 00 00 E4 0B 00 00  . / 4 . . ' . 5 . . . . . . . .
00000270  00 01 00 2F 34 00 00 92 1B 36 10 00 00 00 00 00  . . . / 4 . . . . 6 . . . . . .
00000280  00 10 00 2A 34 00 00 00 2E 34 00 00 00 2F 34 00  . . . * 4 . . . . 4 . . . / 4 .
00000290  00 16 A7 2C 64 16 16 06 CB 03 14 2D 35 E0 0B 00  . . . , d . . . . . . - 5 . . .
000002A0  00 E4 0B 00 00 00 01 00 2F 34 00 00 28 0F 35 DF  . . . . . . . . / 4 . . ( . 5 .
000002B0  0B 00 00 E4 0B 00 00 00 01 00 2F 34 00 00 25 0F  . . . . . . . . . . / 4 . . % .
000002C0  35 DE 0B 00 00 E4 0B 00 00 00 01 00 2F 34 00 00  5 . . . . . . . . . . . / 4 . .
000002D0  01 D9 0B 00 00 55 00 2D 34 00 00 0A 00 00 2F 34  . . . . . U . - 4 . . . . . / 4
000002E0  00 00 16 A5 00 2A 34 00 00 16 06 B7 00 A5 00 2B  . . . . . * 4 . . . . . . . . +
000002F0  34 00 00 16 06 0B 00 0F 00 29 34 00 00 25 07 6B  4 . . . . . . . . ) 4 . . % . k
00000300  05 96 00 29 34 00 00 36 00 2D 34 00 00 16 07 A8  . . . ) 4 . . 6 . - 4 . . . . .
00000310  04 9A 35 E3 0B 00 00 E4 0B 00 00 00 00 10 00 29  . . 5 . . . . . . . . . . . . )
00000320  34 00 00 00 2D 34 00 00 25 16 55 35 CC 0B 00 00  4 . . . - 4 . . % . U 5 . . . .
00000330  CE 0B 00 00 00 00 01 DC 0B 00 00 14 00 10 00 29  . . . . . . . . . . . . . . . )
00000340  34 00 00 00 2D 34 00 00 16 06 DB 04 55 35 CD 0B  4 . . . - 4 . . . . . . U 5 . .
00000350  00 00 CE 0B 00 00 00 00 01 DC 0B 00 00 14 00 10  . . . . . . . . . . . . . . . .
00000360  00 29 34 00 00 00 2D 34 00 00 16 07 5D 05 2D 35  . ) 4 . . . - 4 . . . . ] . - 5
00000370  E0 0B 00 00 E4 0B 00 00 00 00 10 00 29 34 00 00  . . . . . . . . . . . . ) 4 . .
00000380  00 2D 34 00 00 A2 10 35 E1 0B 00 00 E4 0B 00 00  . - 4 . . . . 5 . . . . . . . .
00000390  00 00 10 00 29 34 00 00 00 2D 34 00 00 01 DB 0B  . . . . ) 4 . . . - 4 . . . . .
000003A0  00 00 35 DF 0B 00 00 E4 0B 00 00 00 00 10 00 29  . . 5 . . . . . . . . . . . . )
000003B0  34 00 00 00 2D 34 00 00 16 A5 00 29 34 00 00 16  4 . . . - 4 . . . . . ) 4 . . .
000003C0  06 2E 04 04 0B 53 00 00 00 02 00 82 00 2C 2C 00  . . . . . S . . . . . . . , , .
000003D0  00 00 00 00 00                                   . . . . .                      
 
Edited by johnnylump
Link to comment
Share on other sites

  • Recently Browsing   0 members

    • No registered users viewing this page.

×
×
  • Create New...