XCOM Squadsight Aim Penalty UIUnitGermanMode ShotSummary Notes

From Nexus Mods Wiki
Jump to: navigation, search

Overview

This contains the development notes for the changes to the function UIUnitGermanMode_ShotInfo in XComGame.upk.

This change supports the additional of an aim penalty when using Squadsight.

XCOM_Squadsight_Aim_Penalty_Mod

Development Notes

Now for the simpler change to UIUnitGermanMode_ShotInfo.UpdateDisplay

need to change :
iHitChance = kFireAction.m_kShot.GetHitChance();
to something like:
iHitChance = kAbilityTarget.AdjustToHit(kFireAction.m_kShot.GetHitChance());

This will require about 22 extra bytes.

Changing:
                iHitChance = kFireAction.m_kShot.GetHitChance();
                iCriticalChance = kFireAction.m_kShot.GetCriticalChance();
to:
                iHitChance = kAbility.m_iHitChance;
                iCriticalChance = kAbility.m_iCriticalChance;
might free enough bytes.


From previous messing with this function:
Original broken down hex code:

		iHitChance = kFireAction.m_kShot.GetHitChance(); (42 bytes)
		0F 00 C4 29 00 00 19 19 00 C1 29 00 00 09 00 DD 82 00 00 00 01 DD 82 00 00 0A 00 B1 7C 00 00 00 1B A6 32 00 00 00 00 00 00 16 

		iCriticalChance = kFireAction.m_kShot.GetCriticalChance(); (42 bytes)
		0F 00 C3 29 00 00 19 19 00 C1 29 00 00 09 00 DD 82 00 00 00 01 DD 82 00 00 0A 00 B3 7C 00 00 00 1B D9 31 00 00 00 00 00 00 16 

Reworked broken down hex code:

		iHitChance = kAbilityTarget.AdjustToHit(kAbility.m_iHitChance); (47 bytes)
		0F 00 C4 29 00 00 19 00 C6 29 00 00 0A 00 88 7C 00 00 00 1B 9B 02 00 00 00 00 00 00 19 00 C7 29 00 00 09 00 19 BC 00 00 00 01 19 BC 00 00 16

				kAbility.iType : 19 00 C7 29 00 00 09 00 E2 7B 00 00 00 01 E2 7B 00 00

		iCriticalChance = kAbility.m_iCriticalChance; (24 bytes)
		0F 00 C3 29 00 00 19 00 C7 29 00 00 09 00 18 BC 00 00 00 01 18 BC 00 00 

				01 18 BC 00 00 -- m_iCriticalChance
		
		null ops (13 bytes)
		0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 

		These two changes will free up 26 bytes.

			kAbilityTarget.AdjustToHit(...)
			19 00 C6 29 00 00 0A 00 88 7C 00 00 00 1B 9B 02 00 00 00 00 00 00 ...  16

			kAbilityTarget.GetPrimaryTarget()
			19 00 C6 29 00 00 0A 00 88 7C 00 00 00 1B 38 34 00 00 00 00 00 00 16

			iUIHitChance = m_kShot.AdjustToHit(m_kShot.GetHitChance());
			0F 48 63 85 00 00 19 01 DD 82 00 00 0A 00 B1 7C 00 00 00 1B 9B 02 00 00 00 00 00 00 19 01 DD 82 00 00 0A 00 B1 7C 00 00 00 1B A6 32 00 00 00 00 00 00 16 16 


consolidated hex:
original:(virtual 0x71A)
0F 00 C4 29 00 00 19 19 00 C1 29 00 00 09 00 DD 82 00 00 00 01 DD 82 00 00 0A 00 B1 7C 00 00 00 1B A6 32 00 00 00 00 00 00 16 0F 00 C3 29 00 00 19 19 00 C1 29 00 00 09 00 DD 82 00 00 00 01 DD 82 00 00 0A 00 B3 7C 00 00 00 1B D9 31 00 00 00 00 00 00 16 

new:(virtual 0x71A)
0F 00 C4 29 00 00 19 00 C6 29 00 00 0A 00 88 7C 00 00 00 1B 9B 02 00 00 00 00 00 00 19 00 C7 29 00 00 09 00 19 BC 00 00 00 01 19 BC 00 00 16 0F 00 C3 29 00 00 19 00 C7 29 00 00 09 00 18 BC 00 00 00 01 18 BC 00 00 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 


Original Development Notes

These notes are from a prior, abandoned alteration.

The changes worked, but were much more complicated, and so would be harder to maintain upon a new patch release.

2) UIUnitGermanMode_ShotInfo.UpdateDisplay

The overall hit % is not calcuted based upon the modifiers supplied in the data structure, but is instead directly retrieved. 

	iHitChance = kFireAction.m_kShot.GetHitChance();

Also, kAbilityTarget.GetShotSummary(kResult, kInfo) is called after iHitChance = kFireAction.m_kShot.GetHitChance() is called.

But, GetShotSummmary is called before the iHitChance is displayed, via:
		if(iHitChance > -1 && (kFireAction.m_kShot.ShouldShowPercentage()))
		{
			AS_SetShotInfo(Caps(shotName), hitChance, m_sShotChanceLabel, critChance, m_sCriticalLabel);
		}

hitChance is the string version of iHitChance:
		hitChance = string(iHitChance) $ "%";

		
This means that XGAbility_Targeted.m_iHitChance could be set in GetShotSummary. However, the original value would have to be restored before the function exits.

Might be able to use the m_iPrimaryMultiShotTarget class variable in XGAbility_Targeted. It is only utilized for CyberDiscs DeathBlossom attack.

Steps:
1) In UpdateDisplay, assign iNoCriticalChance =  kAbility.m_iPrimaryMultiShotTarget 
2) Set kAbility.m_iPrimaryMultiShotTarget = 0;
3) In GetShotSummary, when the squadsight penalty is checked for, assign m_iPrimaryMultiShotTarget to be either zero or the Squadsight hit chance adjustment.
4) After GetShotSummary is called in UpdateDisplay, create the hitchance string
hitChance = string(iHitChance-kAbility.m_iPrimaryMultiShotTarget) $ "%";
5) Before exiting UpdateDisplay restore kAbility.m_iPrimaryMultiShotTarget = iNoCriticalChance


What space can be freed up?
1) AS_SetShotInfo("", "", "", "", ""); if (kAbility == none || (kAbilityTarget == none)) (20 bytes)

2) AS_SetShotInfo("", "", "", "", ""); in final else (20 bytes)

3) Can re-use iNoCriticalChance as a variable. (7 bytes)

4) Can substitute kAbility. for kFireAction.m_kShot. everywhere in the code
kAbility : 00 C7 29 00 00
kFireAction.m_kShot : 19 00 C1 29 00 00 09 00 DD 82 00 00 00 01 DD 82 00 00

4) Can simplify the following code segment:
		if(iCriticalChance > 0 && (kFireAction.m_kShot.ShouldShowCritPercentage()))
		{
			critChance = string(iCriticalChance) $ "%";
		}
		// End:0x578
		else
		{
			// End:0x578 Loop:False
			if(kFireAction.m_kShot.ShouldShowCritPercentage())
			{
				critChance = string(iNoCriticalChance) $ "%";
			}
		}
to:
		if(kFireAction.m_kShot.ShouldShowCritPercentage())
		{
			if(iCriticalChance > 0)
			{
				critChance = string(iCriticalChance) $ "%";
			}
			else
			{
				critChance = "0%";
			}
		}

5) Can simplify:
		if(XComPresentationLayer(controllerRef.m_Pres).GetTacticalHUD().m_kAbilityHUD.CheckForAvailability(kAbility))
		{
			// End:0x652 Loop:False
			if(iHitChance > -1 && (kFireAction.m_kShot.ShouldShowPercentage()))
			{
				hitChance = string(iHitChance) $ "%";
			}
			shotName = kAbility.GetName();
		}
		// End:0x703 Loop:False
		if(iHitChance > -1 && (kFireAction.m_kShot.ShouldShowPercentage()))
		{
			AS_SetShotInfo(Caps(shotName), hitChance, m_sShotChanceLabel, critChance, m_sCriticalLabel);
		}
		// End:0x717
		else
		{
			AS_SetShotInfo("", "", "", "", "");
		}
to:
		if(iHitChance > -1 && (kFireAction.m_kShot.ShouldShowPercentage()))
		{
			if(XComPresentationLayer(controllerRef.m_Pres).GetTacticalHUD().m_kAbilityHUD.CheckForAvailability(kAbility))
			{
				hitChance = string(iHitChance) $ "%";
				shotName = kAbility.GetName();
			}
			AS_SetShotInfo(Caps(shotName), hitChance, m_sShotChanceLabel, critChance, m_sCriticalLabel);
		}

-------------------------------------------------
2) UIUnitGermanMode_ShotInfo.UpdateDisplay
hex code:
original:
header:
C8 29 00 00 50 55 00 00 00 00 00 00 BB 29 00 00 00 00 00 00 00 00 00 00 C8 29 00 00 00 00 00 00 2D 00 00 00 E9 05 00 00 1A 07 00 00 E2 04 00 00 

body:
0F 00 BC 29 00 00 1F 00 0F 00 BD 29 00 00 1F 00 0F 00 BE 29 00 00 1F 00 0F 00 C8 29 00 00 19 2E 8A 5A 00 00 01 6D 02 00 00 0A 00 B6 58 00 00 00 1B EB 30 00 00 00 00 00 00 16 0F 00 C1 29 00 00 2E 65 85 00 00 19 00 C8 29 00 00 0A 00 B9 B5 00 00 00 1B E4 30 00 00 00 00 00 00 16 07 99 00 72 00 C1 29 00 00 2A 16 04 0B 0F 00 C7 29 00 00 19 00 C1 29 00 00 09 00 DD 82 00 00 00 01 DD 82 00 00 0F 00 C6 29 00 00 2E 66 7D 00 00 00 C7 29 00 00 0F 00 C4 29 00 00 1D FF FF FF FF 0F 00 C3 29 00 00 1D FF FF FF FF 0F 00 C2 29 00 00 25 07 4E 03 82 77 00 C1 29 00 00 2A 16 18 22 00 77 19 00 C1 29 00 00 09 00 DD 82 00 00 00 01 DD 82 00 00 2A 16 16 07 F7 01 19 00 C7 29 00 00 0C 00 44 7C 00 00 00 1B 9A 36 00 00 00 00 00 00 24 20 16 07 93 01 9A 19 00 C7 29 00 00 09 00 E2 7B 00 00 00 01 E2 7B 00 00 2C 4B 16 0F 00 C5 29 00 00 1D E2 FF FF FF 0F 00 C4 29 00 00 19 00 C8 29 00 00 37 00 A4 33 00 00 00 1B B5 71 00 00 00 00 00 00 25 00 C5 29 00 00 27 27 19 00 C6 29 00 00 0A 00 88 7C 00 00 00 1B 38 34 00 00 00 00 00 00 16 4A 4A 16 0F 00 C3 29 00 00 25 06 4E 03 07 D2 02 19 00 C7 29 00 00 0C 00 44 7C 00 00 00 1B 9A 36 00 00 00 00 00 00 24 2D 16 0F 00 C4 29 00 00 19 19 00 C1 29 00 00 09 00 DD 82 00 00 00 01 DD 82 00 00 75 00 C9 7C 00 00 00 1B 8A 34 00 00 00 00 00 00 E1 D8 19 19 19 00 C1 29 00 00 09 00 DD 82 00 00 00 01 DD 82 00 00 09 00 E6 7B 00 00 00 01 E6 7B 00 00 09 00 DE F8 FF FF 00 01 DE F8 FF FF 19 00 C1 29 00 00 0A 00 B3 83 00 00 00 1B E9 34 00 00 00 00 00 00 16 16 16 16 0F 00 C3 29 00 00 25 06 4E 03 0F 00 C4 29 00 00 19 19 00 C1 29 00 00 09 00 DD 82 00 00 00 01 DD 82 00 00 0A 00 B1 7C 00 00 00 1B A6 32 00 00 00 00 00 00 16 0F 00 C3 29 00 00 19 19 00 C1 29 00 00 09 00 DD 82 00 00 00 01 DD 82 00 00 0A 00 B3 7C 00 00 00 1B D9 31 00 00 00 00 00 00 16 07 85 03 84 72 00 C7 29 00 00 2A 16 18 0D 00 72 00 C6 29 00 00 2A 16 16 1B A9 05 00 00 00 00 00 00 1F 00 1F 00 1F 00 1F 00 1F 00 16 06 17 07 19 00 C6 29 00 00 1C 00 00 00 00 00 00 1B A1 34 00 00 00 00 00 00 00 C0 29 00 00 00 BF 29 00 00 16 1C D5 29 00 00 35 D6 25 00 00 D8 25 00 00 00 00 00 BF 29 00 00 35 D5 25 00 00 D8 25 00 00 00 00 00 BF 29 00 00 28 16 1C D5 29 00 00 35 D4 25 00 00 D8 25 00 00 00 00 00 BF 29 00 00 35 D3 25 00 00 D8 25 00 00 00 00 00 BF 29 00 00 28 16 1C D5 29 00 00 35 D2 25 00 00 D8 25 00 00 00 00 00 BF 29 00 00 35 D1 25 00 00 D8 25 00 00 00 00 00 BF 29 00 00 27 16 1C D5 29 00 00 35 D0 25 00 00 D8 25 00 00 00 00 00 BF 29 00 00 35 CF 25 00 00 D8 25 00 00 00 00 00 BF 29 00 00 27 16 07 27 05 82 97 00 C3 29 00 00 25 16 18 35 00 19 19 00 C1 29 00 00 09 00 DD 82 00 00 00 01 DD 82 00 00 0A 00 E7 7C 00 00 00 1B 13 64 00 00 00 00 00 00 16 16 0F 00 BC 29 00 00 70 38 53 00 C3 29 00 00 1F 25 00 16 06 78 05 07 78 05 19 19 00 C1 29 00 00 09 00 DD 82 00 00 00 01 DD 82 00 00 0A 00 E7 7C 00 00 00 1B 13 64 00 00 00 00 00 00 16 0F 00 BC 29 00 00 70 38 53 00 C2 29 00 00 1F 25 00 16 07 7B 06 19 19 19 2E D8 69 00 00 19 01 6D 02 00 00 09 00 A5 55 00 00 00 01 A5 55 00 00 0A 00 0A 69 00 00 00 1B E3 34 00 00 00 00 00 00 16 09 00 5D 24 00 00 00 01 5D 24 00 00 13 00 29 25 00 00 00 1B 41 10 00 00 00 00 00 00 00 C7 29 00 00 16 07 52 06 82 97 00 C4 29 00 00 1D FF FF FF FF 16 18 35 00 19 19 00 C1 29 00 00 09 00 DD 82 00 00 00 01 DD 82 00 00 0A 00 E3 7C 00 00 00 1B 15 64 00 00 00 00 00 00 16 16 0F 00 BD 29 00 00 70 38 53 00 C4 29 00 00 1F 25 00 16 0F 00 BE 29 00 00 19 00 C7 29 00 00 0A 00 20 7C 00 00 00 1B 6E 33 00 00 00 00 00 00 16 07 03 07 82 97 00 C4 29 00 00 1D FF FF FF FF 16 18 35 00 19 19 00 C1 29 00 00 09 00 DD 82 00 00 00 01 DD 82 00 00 0A 00 E3 7C 00 00 00 1B 15 64 00 00 00 00 00 00 16 16 1B A9 05 00 00 00 00 00 00 EB 00 BE 29 00 00 16 00 BD 29 00 00 01 B5 29 00 00 00 BC 29 00 00 01 B6 29 00 00 16 06 17 07 1B A9 05 00 00 00 00 00 00 1F 00 1F 00 1F 00 1F 00 1F 00 16 04 0B 53 00 00 00 02 01 82 00 0A 6E 00 00 00 00 00 00
			
original, broken down:
header:
C8 29 00 00 50 55 00 00 00 00 00 00 BB 29 00 00 00 00 00 00 00 00 00 00 C8 29 00 00 00 00 00 00 2D 00 00 00 E9 05 00 00 1A 07 00 00 E2 04 00 00 

body:
critChance = "";
0F 00 BC 29 00 00 1F 00 

hitChance = "";
0F 00 BD 29 00 00 1F 00 

shotName = "";
0F 00 BE 29 00 00 1F 00 

kUnit = XComTacticalController(controllerRef).GetActiveUnit();
0F 00 C8 29 00 00 19 2E 8A 5A 00 00 01 6D 02 00 00 0A 00 B6 58 00 00 00 1B EB 30 00 00 00 00 00 00 16 

kFireAction = XGAction_Fire(kUnit.GetAction());
0F 00 C1 29 00 00 2E 65 85 00 00 19 00 C8 29 00 00 0A 00 B9 B5 00 00 00 1B E4 30 00 00 00 00 00 00 16 

if(kFireAction == none) {return;}
07 99 00 72 00 C1 29 00 00 2A 16 04 0B 

kAbility = kFireAction.m_kShot;
0F 00 C7 29 00 00 19 00 C1 29 00 00 09 00 DD 82 00 00 00 01 DD 82 00 00 

kAbilityTarget = XGAbility_Targeted(kAbility);
0F 00 C6 29 00 00 2E 66 7D 00 00 00 C7 29 00 00 

iHitChance = -1;
0F 00 C4 29 00 00 1D FF FF FF FF 

iCriticalChance = -1;
0F 00 C3 29 00 00 1D FF FF FF FF 

iNoCriticalChance = 0;
0F 00 C2 29 00 00 25 

if((kFireAction != none) && kFireAction.m_kShot != none)
07 4E 03 82 77 00 C1 29 00 00 2A 16 18 22 00 77 19 00 C1 29 00 00 09 00 DD 82 00 00 00 01 DD 82 00 00 2A 16 16 

	if(kAbility.HasProperty(32))
	07 F7 01 19 00 C7 29 00 00 0C 00 44 7C 00 00 00 1B 9A 36 00 00 00 00 00 00 24 20 16 

		if(kAbility.iType == 75)
		07 93 01 9A 19 00 C7 29 00 00 09 00 E2 7B 00 00 00 01 E2 7B 00 00 2C 4B 16 

			iBonus = -30;
			0F 00 C5 29 00 00 1D E2 FF FF FF 

		iHitChance = kUnit.WillTestChance(0, iBonus, true, true, kAbilityTarget.GetPrimaryTarget());
		0F 00 C4 29 00 00 19 00 C8 29 00 00 37 00 A4 33 00 00 00 1B B5 71 00 00 00 00 00 00 25 00 C5 29 00 00 27 27 19 00 C6 29 00 00 0A 00 88 7C 00 00 00 1B 38 34 00 00 00 00 00 00 16 4A 4A 16 

		iCriticalChance = 0;
		0F 00 C3 29 00 00 25 

	else
	06 4E 03 

		if(kAbility.HasProperty(45))
		07 D2 02 19 00 C7 29 00 00 0C 00 44 7C 00 00 00 1B 9A 36 00 00 00 00 00 00 24 2D 16 

			iHitChance = kFireAction.m_kShot.GetScatterChance(VSize(kFireAction.m_kShot.m_kUnit.Location - kFireAction.GetTargetLoc()));
			0F 00 C4 29 00 00 19 19 00 C1 29 00 00 09 00 DD 82 00 00 00 01 DD 82 00 00 75 00 C9 7C 00 00 00 1B 8A 34 00 00 00 00 00 00 E1 D8 19 19 19 00 C1 29 00 00 09 00 DD 82 00 00 00 01 DD 82 00 00 09 00 E6 7B 00 00 00 01 E6 7B 00 00 09 00 DE F8 FF FF 00 01 DE F8 FF FF 19 00 C1 29 00 00 0A 00 B3 83 00 00 00 1B E9 34 00 00 00 00 00 00 16 16 16 16 

			iCriticalChance = 0;
			0F 00 C3 29 00 00 25 

		else
		06 4E 03 

			iHitChance = kFireAction.m_kShot.GetHitChance();
			0F 00 C4 29 00 00 19 19 00 C1 29 00 00 09 00 DD 82 00 00 00 01 DD 82 00 00 0A 00 B1 7C 00 00 00 1B A6 32 00 00 00 00 00 00 16 

			iCriticalChance = kFireAction.m_kShot.GetCriticalChance();
			0F 00 C3 29 00 00 19 19 00 C1 29 00 00 09 00 DD 82 00 00 00 01 DD 82 00 00 0A 00 B3 7C 00 00 00 1B D9 31 00 00 00 00 00 00 16 

if((kAbility == none) || kAbilityTarget == none)
07 85 03 84 72 00 C7 29 00 00 2A 16 18 0D 00 72 00 C6 29 00 00 2A 16 16 

	AS_SetShotInfo("", "", "", "", "");
	1B A9 05 00 00 00 00 00 00 1F 00 1F 00 1F 00 1F 00 1F 00 16 

else
06 17 07 

	kAbilityTarget.GetShotSummary(kResult, kInfo);
	19 00 C6 29 00 00 1C 00 00 00 00 00 00 1B A1 34 00 00 00 00 00 00 00 C0 29 00 00 00 BF 29 00 00 16 

	ProcessModifiers(kInfo.arrHitBonusStrings, kInfo.arrHitBonusValues, false);
	1C D5 29 00 00 35 D6 25 00 00 D8 25 00 00 00 00 00 BF 29 00 00 35 D5 25 00 00 D8 25 00 00 00 00 00 BF 29 00 00 28 16 

	ProcessModifiers(kInfo.arrHitPenaltyStrings, kInfo.arrHitPenaltyValues, false);
	1C D5 29 00 00 35 D4 25 00 00 D8 25 00 00 00 00 00 BF 29 00 00 35 D3 25 00 00 D8 25 00 00 00 00 00 BF 29 00 00 28 16 

	ProcessModifiers(kInfo.arrCritBonusStrings, kInfo.arrCritBonusValues, true);
	1C D5 29 00 00 35 D2 25 00 00 D8 25 00 00 00 00 00 BF 29 00 00 35 D1 25 00 00 D8 25 00 00 00 00 00 BF 29 00 00 27 16 

	ProcessModifiers(kInfo.arrCritPenaltyStrings, kInfo.arrCritPenaltyValues, true);
	1C D5 29 00 00 35 D0 25 00 00 D8 25 00 00 00 00 00 BF 29 00 00 35 CF 25 00 00 D8 25 00 00 00 00 00 BF 29 00 00 27 16 

	if((iCriticalChance > 0) && kFireAction.m_kShot.ShouldShowCritPercentage())
	07 27 05 82 97 00 C3 29 00 00 25 16 18 35 00 19 19 00 C1 29 00 00 09 00 DD 82 00 00 00 01 DD 82 00 00 0A 00 E7 7C 00 00 00 1B 13 64 00 00 00 00 00 00 16 16 

		critChance = string(iCriticalChance) $ "%";
		0F 00 BC 29 00 00 70 38 53 00 C3 29 00 00 1F 25 00 16 

	else
	06 78 05 

	if(kFireAction.m_kShot.ShouldShowCritPercentage())
	07 78 05 19 19 00 C1 29 00 00 09 00 DD 82 00 00 00 01 DD 82 00 00 0A 00 E7 7C 00 00 00 1B 13 64 00 00 00 00 00 00 16 

		critChance = string(iNoCriticalChance) $ "%";
		0F 00 BC 29 00 00 70 38 53 00 C2 29 00 00 1F 25 00 16 

	if(XComPresentationLayer(controllerRef.m_Pres).GetTacticalHUD().m_kAbilityHUD.CheckForAvailability(kAbility))
	07 7B 06 19 19 19 2E D8 69 00 00 19 01 6D 02 00 00 09 00 A5 55 00 00 00 01 A5 55 00 00 0A 00 0A 69 00 00 00 1B E3 34 00 00 00 00 00 00 16 09 00 5D 24 00 00 00 01 5D 24 00 00 13 00 29 25 00 00 00 1B 41 10 00 00 00 00 00 00 00 C7 29 00 00 16 

		if((iHitChance > -1) && kFireAction.m_kShot.ShouldShowPercentage())
		07 52 06 82 97 00 C4 29 00 00 1D FF FF FF FF 16 18 35 00 19 19 00 C1 29 00 00 09 00 DD 82 00 00 00 01 DD 82 00 00 0A 00 E3 7C 00 00 00 1B 15 64 00 00 00 00 00 00 16 16 

			hitChance = string(iHitChance) $ "%";
			0F 00 BD 29 00 00 70 38 53 00 C4 29 00 00 1F 25 00 16 

shotName = kAbility.GetName();
0F 00 BE 29 00 00 19 00 C7 29 00 00 0A 00 20 7C 00 00 00 1B 6E 33 00 00 00 00 00 00 16 

if((iHitChance > -1) && kFireAction.m_kShot.ShouldShowPercentage())
07 03 07 82 97 00 C4 29 00 00 1D FF FF FF FF 16 18 35 00 19 19 00 C1 29 00 00 09 00 DD 82 00 00 00 01 DD 82 00 00 0A 00 E3 7C 00 00 00 1B 15 64 00 00 00 00 00 00 16 16 

AS_SetShotInfo(Caps(shotName), hitChance, m_sShotChanceLabel, critChance, m_sCriticalLabel);
1B A9 05 00 00 00 00 00 00 EB 00 BE 29 00 00 16 00 BD 29 00 00 01 B5 29 00 00 00 BC 29 00 00 01 B6 29 00 00 16 

else
06 17 07 

AS_SetShotInfo("", "", "", "", "");
1B A9 05 00 00 00 00 00 00 1F 00 1F 00 1F 00 1F 00 1F 00 16 

return nothing, endofscript
04 0B 53 

-------------------------------------------------

New hex code, broken down:
header:
C8 29 00 00 50 55 00 00 00 00 00 00 BB 29 00 00 00 00 00 00 00 00 00 00 C8 29 00 00 00 00 00 00 2D 00 00 00 E9 05 00 00 1A 07 00 00 E2 04 00 00 

body:
critChance = "";
0F 00 BC 29 00 00 1F 00 

hitChance = "";
0F 00 BD 29 00 00 1F 00 

shotName = "";
0F 00 BE 29 00 00 1F 00 

kUnit = XComTacticalController(controllerRef).GetActiveUnit();
0F 00 C8 29 00 00 19 2E 8A 5A 00 00 01 6D 02 00 00 0A 00 B6 58 00 00 00 1B EB 30 00 00 00 00 00 00 16 

kFireAction = XGAction_Fire(kUnit.GetAction());
0F 00 C1 29 00 00 2E 65 85 00 00 19 00 C8 29 00 00 0A 00 B9 B5 00 00 00 1B E4 30 00 00 00 00 00 00 16 

if(kFireAction == none) {return;} // jump offset needs no adjustment
07 99 00 72 00 C1 29 00 00 2A 16 04 0B 

kAbility = kFireAction.m_kShot;
0F 00 C7 29 00 00 19 00 C1 29 00 00 09 00 DD 82 00 00 00 01 DD 82 00 00 

kAbilityTarget = XGAbility_Targeted(kAbility);
0F 00 C6 29 00 00 2E 66 7D 00 00 00 C7 29 00 00 

iHitChance = -1;
0F 00 C4 29 00 00 1D FF FF FF FF 

iCriticalChance = -1;
0F 00 C3 29 00 00 1D FF FF FF FF 

iNoCriticalChance = kAbility.m_iPrimaryMultiShotTarget;
0F 00 C2 29 00 00 19 00 C7 29 00 00 09 00 11 BC 00 00 00 01 11 BC 00 00 

kAbility.m_iPrimaryMultiShotTarget = 0;
0F 19 00 C7 29 00 00 09 00 11 BC 00 00 00 01 11 BC 00 00 25

if((kFireAction != none) && kAbility != none) // jump offset corrected to 0x337
07 37 03 82 77 00 C1 29 00 00 2A 16 18 22 00 77 00 C7 29 00 00 2A 16 16 

	if(kAbility.HasProperty(32)) // jump offset corrected to 0x21F
	07 1F 02 19 00 C7 29 00 00 0C 00 44 7C 00 00 00 1B 9A 36 00 00 00 00 00 00 24 20 16 

		if(kAbility.iType == 75) // jump offset corrected to 0x1BB
		07 BB 01 9A 19 00 C7 29 00 00 09 00 E2 7B 00 00 00 01 E2 7B 00 00 2C 4B 16 

			iBonus = -30;
			0F 00 C5 29 00 00 1D E2 FF FF FF 

		iHitChance = kUnit.WillTestChance(0, iBonus, true, true, kAbilityTarget.GetPrimaryTarget());
		0F 00 C4 29 00 00 19 00 C8 29 00 00 37 00 A4 33 00 00 00 1B B5 71 00 00 00 00 00 00 25 00 C5 29 00 00 27 27 19 00 C6 29 00 00 0A 00 88 7C 00 00 00 1B 38 34 00 00 00 00 00 00 16 4A 4A 16 

		iCriticalChance = 0;
		0F 00 C3 29 00 00 25 

	else // jump offset corrected to 0x337
	06 37 03 

		if(kAbility.HasProperty(45)) // jump offset corrected to 0x2E5
		07 E5 02 19 00 C7 29 00 00 0C 00 44 7C 00 00 00 1B 9A 36 00 00 00 00 00 00 24 2D 16 

			iHitChance = kAbility.GetScatterChance(VSize(kFireAction.m_kShot.m_kUnit.Location - kFireAction.GetTargetLoc()));
			0F 00 C4 29 00 00 19 00 C7 29 00 00 75 00 C9 7C 00 00 00 1B 8A 34 00 00 00 00 00 00 E1 D8 19 19 19 00 C1 29 00 00 09 00 DD 82 00 00 00 01 DD 82 00 00 09 00 E6 7B 00 00 00 01 E6 7B 00 00 09 00 DE F8 FF FF 00 01 DE F8 FF FF 19 00 C1 29 00 00 0A 00 B3 83 00 00 00 1B E9 34 00 00 00 00 00 00 16 16 16 16 

			iCriticalChance = 0;
			0F 00 C3 29 00 00 25 

		else // jump offset corrected to 0x337
		06 37 03 

			iHitChance = kAbility.GetHitChance();
			0F 00 C4 29 00 00 19 00 C7 29 00 00 0A 00 B1 7C 00 00 00 1B A6 32 00 00 00 00 00 00 16 

			iCriticalChance = kAbility.GetCriticalChance();
			0F 00 C3 29 00 00 19 00 C7 29 00 00 0A 00 B3 7C 00 00 00 1B D9 31 00 00 00 00 00 00 16 

if((kAbility == none) || kAbilityTarget == none) // jump offset corrected to 0x35A
07 5A 03 84 72 00 C7 29 00 00 2A 16 18 0D 00 72 00 C6 29 00 00 2A 16 16 

else // jump offset corrected to 0x674
06 74 06 

	kAbilityTarget.GetShotSummary(kResult, kInfo);
	19 00 C6 29 00 00 1C 00 00 00 00 00 00 1B A1 34 00 00 00 00 00 00 00 C0 29 00 00 00 BF 29 00 00 16 

	ProcessModifiers(kInfo.arrHitBonusStrings, kInfo.arrHitBonusValues, false);
	1C D5 29 00 00 35 D6 25 00 00 D8 25 00 00 00 00 00 BF 29 00 00 35 D5 25 00 00 D8 25 00 00 00 00 00 BF 29 00 00 28 16 

	ProcessModifiers(kInfo.arrHitPenaltyStrings, kInfo.arrHitPenaltyValues, false);
	1C D5 29 00 00 35 D4 25 00 00 D8 25 00 00 00 00 00 BF 29 00 00 35 D3 25 00 00 D8 25 00 00 00 00 00 BF 29 00 00 28 16 

	ProcessModifiers(kInfo.arrCritBonusStrings, kInfo.arrCritBonusValues, true);
	1C D5 29 00 00 35 D2 25 00 00 D8 25 00 00 00 00 00 BF 29 00 00 35 D1 25 00 00 D8 25 00 00 00 00 00 BF 29 00 00 27 16 

	ProcessModifiers(kInfo.arrCritPenaltyStrings, kInfo.arrCritPenaltyValues, true);
	1C D5 29 00 00 35 D0 25 00 00 D8 25 00 00 00 00 00 BF 29 00 00 35 CF 25 00 00 D8 25 00 00 00 00 00 BF 29 00 00 27 16 

	if(kAbility.ShouldShowCritPercentage()) // jump offset corrected to 0x4F3
	07 F3 04 19 00 C7 29 00 00 0A 00 E7 7C 00 00 00 1B 13 64 00 00 00 00 00 00 16 

		if(iCriticalChance > 0) // jump offset corrected to 0x4E5
		07 E5 04 97 00 C3 29 00 00 25 16 

			critChance = string(iCriticalChance) $ "%";
			0F 00 BC 29 00 00 70 38 53 00 C3 29 00 00 1F 25 00 16 

		else // jump offset corrected to 0x 4F3
		06 F3 04 

			critChance = "0%";
			0F 00 BC 29 00 00 1F 30 25 00  

	if(XComPresentationLayer(controllerRef.m_Pres).GetTacticalHUD().m_kAbilityHUD.CheckForAvailability(kAbility)) // jump offset corrected to 0x604
	07 04 06 19 19 19 2E D8 69 00 00 19 01 6D 02 00 00 09 00 A5 55 00 00 00 01 A5 55 00 00 0A 00 0A 69 00 00 00 1B E3 34 00 00 00 00 00 00 16 09 00 5D 24 00 00 00 01 5D 24 00 00 13 00 29 25 00 00 00 1B 41 10 00 00 00 00 00 00 00 C7 29 00 00 16 

		if((iHitChance > -1) && kAbility.ShouldShowPercentage()) // jump offset corrected to 0x5DB
		07 DB 05 82 97 00 C4 29 00 00 1D FF FF FF FF 16 18 35 00 19 00 C7 29 00 00 0A 00 E3 7C 00 00 00 1B 15 64 00 00 00 00 00 00 16 16 

			hitChance = string(Max(iHitChance+kAbility.m_iPrimaryMultiShotTarget,1)) $ "%";
			0F 00 BD 29 00 00 70 38 53 FA 92 00 C4 29 00 00 19 00 C7 29 00 00 09 00 11 BC 00 00 00 01 11 BC 00 00 16 26 16 1F 25 00 16 
			
									0F 00 BD 29 00 00 -- hitChance = 
									70 -- "$" string concat operator
										38 53 -- cast to string
											FA -- "Max" operator
												92 -- "+" operator (int)
													00 C4 29 00 00 -- iHitChance
													19 00 C7 29 00 00 09 00 11 BC 00 00 00 01 11 BC 00 00 -- kAbility.m_iPrimaryMultiShotTarget
												16 -- execute "+"
												26 -- int constant 1
											16 -- execute "Max"
										1F 25 00 -- string const "%"
									16 -- execute "$"


		shotName = kAbility.GetName();
		0F 00 BE 29 00 00 19 00 C7 29 00 00 0A 00 20 7C 00 00 00 1B 6E 33 00 00 00 00 00 00 16 

	if((iHitChance > -1) && kAbility.ShouldShowPercentage()) // jump offset corrected to 0x674
	07 74 06 82 97 00 C4 29 00 00 1D FF FF FF FF 16 18 35 00 19 00 C7 29 00 00 0A 00 E3 7C 00 00 00 1B 15 64 00 00 00 00 00 00 16 16 

		AS_SetShotInfo(Caps(shotName), hitChance, m_sShotChanceLabel, critChance, m_sCriticalLabel);
		1B A9 05 00 00 00 00 00 00 EB 00 BE 29 00 00 16 00 BD 29 00 00 01 B5 29 00 00 00 BC 29 00 00 01 B6 29 00 00 16 

kAbility.m_iPrimaryMultiShotTarget = NoCriticalChance
0F 19 00 C7 29 00 00 09 00 11 BC 00 00 00 01 11 BC 00 00 00 C2 29 00 00 

null ops (99 bytes)
0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 

return nothing, endofscript
04 0B 53 


------------------------------------------------
2) UIUnitGermanMode_ShotInfo.UpdateDisplay
hex code, consolidated:
original:
header:
C8 29 00 00 50 55 00 00 00 00 00 00 BB 29 00 00 00 00 00 00 00 00 00 00 C8 29 00 00 00 00 00 00 2D 00 00 00 E9 05 00 00 1A 07 00 00 E2 04 00 00 

body: (original virtual size = 0x71A)
0F 00 BC 29 00 00 1F 00 0F 00 BD 29 00 00 1F 00 0F 00 BE 29 00 00 1F 00 0F 00 C8 29 00 00 19 2E 8A 5A 00 00 01 6D 02 00 00 0A 00 B6 58 00 00 00 1B EB 30 00 00 00 00 00 00 16 0F 00 C1 29 00 00 2E 65 85 00 00 19 00 C8 29 00 00 0A 00 B9 B5 00 00 00 1B E4 30 00 00 00 00 00 00 16 07 99 00 72 00 C1 29 00 00 2A 16 04 0B 0F 00 C7 29 00 00 19 00 C1 29 00 00 09 00 DD 82 00 00 00 01 DD 82 00 00 0F 00 C6 29 00 00 2E 66 7D 00 00 00 C7 29 00 00 0F 00 C4 29 00 00 1D FF FF FF FF 0F 00 C3 29 00 00 1D FF FF FF FF 0F 00 C2 29 00 00 25 07 4E 03 82 77 00 C1 29 00 00 2A 16 18 22 00 77 19 00 C1 29 00 00 09 00 DD 82 00 00 00 01 DD 82 00 00 2A 16 16 07 F7 01 19 00 C7 29 00 00 0C 00 44 7C 00 00 00 1B 9A 36 00 00 00 00 00 00 24 20 16 07 93 01 9A 19 00 C7 29 00 00 09 00 E2 7B 00 00 00 01 E2 7B 00 00 2C 4B 16 0F 00 C5 29 00 00 1D E2 FF FF FF 0F 00 C4 29 00 00 19 00 C8 29 00 00 37 00 A4 33 00 00 00 1B B5 71 00 00 00 00 00 00 25 00 C5 29 00 00 27 27 19 00 C6 29 00 00 0A 00 88 7C 00 00 00 1B 38 34 00 00 00 00 00 00 16 4A 4A 16 0F 00 C3 29 00 00 25 06 4E 03 07 D2 02 19 00 C7 29 00 00 0C 00 44 7C 00 00 00 1B 9A 36 00 00 00 00 00 00 24 2D 16 0F 00 C4 29 00 00 19 19 00 C1 29 00 00 09 00 DD 82 00 00 00 01 DD 82 00 00 75 00 C9 7C 00 00 00 1B 8A 34 00 00 00 00 00 00 E1 D8 19 19 19 00 C1 29 00 00 09 00 DD 82 00 00 00 01 DD 82 00 00 09 00 E6 7B 00 00 00 01 E6 7B 00 00 09 00 DE F8 FF FF 00 01 DE F8 FF FF 19 00 C1 29 00 00 0A 00 B3 83 00 00 00 1B E9 34 00 00 00 00 00 00 16 16 16 16 0F 00 C3 29 00 00 25 06 4E 03 0F 00 C4 29 00 00 19 19 00 C1 29 00 00 09 00 DD 82 00 00 00 01 DD 82 00 00 0A 00 B1 7C 00 00 00 1B A6 32 00 00 00 00 00 00 16 0F 00 C3 29 00 00 19 19 00 C1 29 00 00 09 00 DD 82 00 00 00 01 DD 82 00 00 0A 00 B3 7C 00 00 00 1B D9 31 00 00 00 00 00 00 16 07 85 03 84 72 00 C7 29 00 00 2A 16 18 0D 00 72 00 C6 29 00 00 2A 16 16 1B A9 05 00 00 00 00 00 00 1F 00 1F 00 1F 00 1F 00 1F 00 16 06 17 07 19 00 C6 29 00 00 1C 00 00 00 00 00 00 1B A1 34 00 00 00 00 00 00 00 C0 29 00 00 00 BF 29 00 00 16 1C D5 29 00 00 35 D6 25 00 00 D8 25 00 00 00 00 00 BF 29 00 00 35 D5 25 00 00 D8 25 00 00 00 00 00 BF 29 00 00 28 16 1C D5 29 00 00 35 D4 25 00 00 D8 25 00 00 00 00 00 BF 29 00 00 35 D3 25 00 00 D8 25 00 00 00 00 00 BF 29 00 00 28 16 1C D5 29 00 00 35 D2 25 00 00 D8 25 00 00 00 00 00 BF 29 00 00 35 D1 25 00 00 D8 25 00 00 00 00 00 BF 29 00 00 27 16 1C D5 29 00 00 35 D0 25 00 00 D8 25 00 00 00 00 00 BF 29 00 00 35 CF 25 00 00 D8 25 00 00 00 00 00 BF 29 00 00 27 16 07 27 05 82 97 00 C3 29 00 00 25 16 18 35 00 19 19 00 C1 29 00 00 09 00 DD 82 00 00 00 01 DD 82 00 00 0A 00 E7 7C 00 00 00 1B 13 64 00 00 00 00 00 00 16 16 0F 00 BC 29 00 00 70 38 53 00 C3 29 00 00 1F 25 00 16 06 78 05 07 78 05 19 19 00 C1 29 00 00 09 00 DD 82 00 00 00 01 DD 82 00 00 0A 00 E7 7C 00 00 00 1B 13 64 00 00 00 00 00 00 16 0F 00 BC 29 00 00 70 38 53 00 C2 29 00 00 1F 25 00 16 07 7B 06 19 19 19 2E D8 69 00 00 19 01 6D 02 00 00 09 00 A5 55 00 00 00 01 A5 55 00 00 0A 00 0A 69 00 00 00 1B E3 34 00 00 00 00 00 00 16 09 00 5D 24 00 00 00 01 5D 24 00 00 13 00 29 25 00 00 00 1B 41 10 00 00 00 00 00 00 00 C7 29 00 00 16 07 52 06 82 97 00 C4 29 00 00 1D FF FF FF FF 16 18 35 00 19 19 00 C1 29 00 00 09 00 DD 82 00 00 00 01 DD 82 00 00 0A 00 E3 7C 00 00 00 1B 15 64 00 00 00 00 00 00 16 16 0F 00 BD 29 00 00 70 38 53 00 C4 29 00 00 1F 25 00 16 0F 00 BE 29 00 00 19 00 C7 29 00 00 0A 00 20 7C 00 00 00 1B 6E 33 00 00 00 00 00 00 16 07 03 07 82 97 00 C4 29 00 00 1D FF FF FF FF 16 18 35 00 19 19 00 C1 29 00 00 09 00 DD 82 00 00 00 01 DD 82 00 00 0A 00 E3 7C 00 00 00 1B 15 64 00 00 00 00 00 00 16 16 1B A9 05 00 00 00 00 00 00 EB 00 BE 29 00 00 16 00 BD 29 00 00 01 B5 29 00 00 00 BC 29 00 00 01 B6 29 00 00 16 06 17 07 1B A9 05 00 00 00 00 00 00 1F 00 1F 00 1F 00 1F 00 1F 00 16 04 0B 53 

new hex:
header:
C8 29 00 00 50 55 00 00 00 00 00 00 BB 29 00 00 00 00 00 00 00 00 00 00 C8 29 00 00 00 00 00 00 2D 00 00 00 E9 05 00 00 02 07 00 00 E2 04 00 00 

body: (virtual size = 0x702)
0F 00 BC 29 00 00 1F 00 0F 00 BD 29 00 00 1F 00 0F 00 BE 29 00 00 1F 00 0F 00 C8 29 00 00 19 2E 8A 5A 00 00 01 6D 02 00 00 0A 00 B6 58 00 00 00 1B EB 30 00 00 00 00 00 00 16 0F 00 C1 29 00 00 2E 65 85 00 00 19 00 C8 29 00 00 0A 00 B9 B5 00 00 00 1B E4 30 00 00 00 00 00 00 16 07 99 00 72 00 C1 29 00 00 2A 16 04 0B 0F 00 C7 29 00 00 19 00 C1 29 00 00 09 00 DD 82 00 00 00 01 DD 82 00 00 0F 00 C6 29 00 00 2E 66 7D 00 00 00 C7 29 00 00 0F 00 C4 29 00 00 1D FF FF FF FF 0F 00 C3 29 00 00 1D FF FF FF FF 0F 00 C2 29 00 00 19 00 C7 29 00 00 09 00 11 BC 00 00 00 01 11 BC 00 00 0F 19 00 C7 29 00 00 09 00 11 BC 00 00 00 01 11 BC 00 00 25 07 37 03 82 77 00 C1 29 00 00 2A 16 18 22 00 77 00 C7 29 00 00 2A 16 16 07 1F 02 19 00 C7 29 00 00 0C 00 44 7C 00 00 00 1B 9A 36 00 00 00 00 00 00 24 20 16 07 BB 01 9A 19 00 C7 29 00 00 09 00 E2 7B 00 00 00 01 E2 7B 00 00 2C 4B 16 0F 00 C5 29 00 00 1D E2 FF FF FF 0F 00 C4 29 00 00 19 00 C8 29 00 00 37 00 A4 33 00 00 00 1B B5 71 00 00 00 00 00 00 25 00 C5 29 00 00 27 27 19 00 C6 29 00 00 0A 00 88 7C 00 00 00 1B 38 34 00 00 00 00 00 00 16 4A 4A 16 0F 00 C3 29 00 00 25 06 37 03 07 E5 02 19 00 C7 29 00 00 0C 00 44 7C 00 00 00 1B 9A 36 00 00 00 00 00 00 24 2D 16 0F 00 C4 29 00 00 19 00 C7 29 00 00 75 00 C9 7C 00 00 00 1B 8A 34 00 00 00 00 00 00 E1 D8 19 19 19 00 C1 29 00 00 09 00 DD 82 00 00 00 01 DD 82 00 00 09 00 E6 7B 00 00 00 01 E6 7B 00 00 09 00 DE F8 FF FF 00 01 DE F8 FF FF 19 00 C1 29 00 00 0A 00 B3 83 00 00 00 1B E9 34 00 00 00 00 00 00 16 16 16 16 0F 00 C3 29 00 00 25 06 37 03 0F 00 C4 29 00 00 19 00 C7 29 00 00 0A 00 B1 7C 00 00 00 1B A6 32 00 00 00 00 00 00 16 0F 00 C3 29 00 00 19 00 C7 29 00 00 0A 00 B3 7C 00 00 00 1B D9 31 00 00 00 00 00 00 16 07 5A 03 84 72 00 C7 29 00 00 2A 16 18 0D 00 72 00 C6 29 00 00 2A 16 16 06 74 06 19 00 C6 29 00 00 1C 00 00 00 00 00 00 1B A1 34 00 00 00 00 00 00 00 C0 29 00 00 00 BF 29 00 00 16 1C D5 29 00 00 35 D6 25 00 00 D8 25 00 00 00 00 00 BF 29 00 00 35 D5 25 00 00 D8 25 00 00 00 00 00 BF 29 00 00 28 16 1C D5 29 00 00 35 D4 25 00 00 D8 25 00 00 00 00 00 BF 29 00 00 35 D3 25 00 00 D8 25 00 00 00 00 00 BF 29 00 00 28 16 1C D5 29 00 00 35 D2 25 00 00 D8 25 00 00 00 00 00 BF 29 00 00 35 D1 25 00 00 D8 25 00 00 00 00 00 BF 29 00 00 27 16 1C D5 29 00 00 35 D0 25 00 00 D8 25 00 00 00 00 00 BF 29 00 00 35 CF 25 00 00 D8 25 00 00 00 00 00 BF 29 00 00 27 16 07 F3 04 19 00 C7 29 00 00 0A 00 E7 7C 00 00 00 1B 13 64 00 00 00 00 00 00 16 07 E5 04 97 00 C3 29 00 00 25 16 0F 00 BC 29 00 00 70 38 53 00 C3 29 00 00 1F 25 00 16 06 F3 04 0F 00 BC 29 00 00 1F 30 25 00 07 04 06 19 19 19 2E D8 69 00 00 19 01 6D 02 00 00 09 00 A5 55 00 00 00 01 A5 55 00 00 0A 00 0A 69 00 00 00 1B E3 34 00 00 00 00 00 00 16 09 00 5D 24 00 00 00 01 5D 24 00 00 13 00 29 25 00 00 00 1B 41 10 00 00 00 00 00 00 00 C7 29 00 00 16 07 DB 05 82 97 00 C4 29 00 00 1D FF FF FF FF 16 18 35 00 19 00 C7 29 00 00 0A 00 E3 7C 00 00 00 1B 15 64 00 00 00 00 00 00 16 16 0F 00 BD 29 00 00 70 38 53 FA 92 00 C4 29 00 00 19 00 C7 29 00 00 09 00 11 BC 00 00 00 01 11 BC 00 00 16 26 16 1F 25 00 16 0F 00 BE 29 00 00 19 00 C7 29 00 00 0A 00 20 7C 00 00 00 1B 6E 33 00 00 00 00 00 00 16 07 74 06 82 97 00 C4 29 00 00 1D FF FF FF FF 16 18 35 00 19 00 C7 29 00 00 0A 00 E3 7C 00 00 00 1B 15 64 00 00 00 00 00 00 16 16 1B A9 05 00 00 00 00 00 00 EB 00 BE 29 00 00 16 00 BD 29 00 00 01 B5 29 00 00 00 BC 29 00 00 01 B6 29 00 00 16 0F 19 00 C7 29 00 00 09 00 11 BC 00 00 00 01 11 BC 00 00 00 C2 29 00 00 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 04 0B 53 



References

Referred to by this article:

That refer to this article:

  • <none>