The Complete Damage Formula for Black & White (B/W)

Kaphotics

Remodeling Kitchens
is a Top Researcher Alumnusis a Top Contributor Alumnus
Although the old DP article may have been almost perfect, with a lot of research put into the Battle RNG, we've observed that the current onsite article has a bunch of errors.

While updating it may have been an option, a new article would be more appropriate given the updated mechanics and new moves. We've put a lot of time into drafting this up, in complete secrecy asides from discussing mechanics in #smogonwifi.

Article Preview - only the author desc is changed from the preview and submission.

Note: uses custom css to contain the ARM code the game uses to do operations.

HTML:
[title]
The Complete Damage Formula for Black & White (B/W)

<style type="text/css">
.listing
{
 overflow: auto;
 width: 100%;
 max-height: 333px;
 margin: 5px auto;
 font-size: 90%;
}
.arm .de1, .arm .de2 {color: #000060; font-weight: normal;}
.arm  {white-space: nowrap;border: 1px dotted #a0a0a0; font-family: 'Courier New', Courier, monospace; background-color: #f0f0f0; margin: 0; line-height: 110%; padding: 0;color: #0000bb;}
.arm a:link {color: #006;}
.arm a:hover {background-color: #d6d6e6;}
.arm .head {font-family: Verdana, Arial, sans-serif; color: #808080; font-size: 70%; font-weight: bold; background-color: #f0f0ff; border-bottom: 1px solid #d0d0d0; padding: 2px;}
.arm .foot {font-family: Verdana, Arial, sans-serif; color: #808080; font-size: 70%; font-weight: bold; background-color: #f0f0ff; border-top: 1px solid #d0d0d0; padding: 2px;}
.arm .imp {font-weight: bold; color: red;}
.arm li, .arm .li1 {font-family: 'Courier New', Courier, monospace; color: #000060; background-color: #e0e0e0; padding-bottom: 2px;}
.arm .ln {width:1px;text-align:right;margin:0;padding:0 2px;vertical-align:top;}
.arm .li2 {font-weight: bold; color: #000090; line-height: 90%}
.arm .kw1 {color: #00007f; font-weight: normal; font-style: normal;}
.arm .kw2 {color: #00007f; font-weight: normal; font-style: italic;}
.arm .kw3 {color: #00007f; font-weight: normal; font-style: normal;}
.arm .kw4 {color: #00007f; font-weight: normal; font-style: italic;}
.arm .kw5 {color: #00007f; font-weight: bold; font-style: normal;}
.arm .kw6 {color: #00007f; font-weight: bold; font-style: italic;}
.arm .kw7 {color: #0000ff; font-weight: normal; font-style: normal;}
.arm .kw8 {color: #0000ff; font-weight: normal; font-style: italic;}
.arm .kw9 {color: #00007f; font-weight: normal; font-style: normal;}
.arm .kw10 {color: #00007f; font-weight: normal; font-style: italic;}
.arm .kw11 {color: #b00040; font-weight: normal; font-style: normal;}
.arm .kw12 {color: #b00040; font-weight: normal; font-style: italic;}
.arm .kw13 {color: #00007f; font-weight: normal; font-style: normal;}
.arm .kw14 {color: #00007f; font-weight: bold; font-style: italic;}
.arm .kw15 {color: #00007f; font-weight: normal; font-style: normal;}
.arm .kw16 {color: #00007f; font-weight: bold; font-style: italic;}
.arm .kw17 {color: #b00040; font-weight: normal; font-style: normal;}
.arm .kw18 {color: #b00040; font-weight: normal; font-style: italic;}
.arm .kw19 {color: #b00040; font-weight: normal; font-style: normal;}
.arm .kw20 {color: #b00040; font-weight: normal; font-style: italic;}
.arm .kw21 {color: #b00040; font-weight: normal; font-style: italic;}
.arm .kw22 {color: #b00040; font-weight: normal; font-style: italic;}
.arm .kw23 {color: #b00040; font-weight: normal; font-style: italic;}
.arm .kw24 {color: #b00040; font-weight: normal; font-style: italic;}
.arm .kw25 {color: #b00040; font-weight: normal; font-style: italic;}
.arm .kw26 {color: #b00040; font-weight: normal; font-style: italic;}
.arm .kw27 {color: #b00040; font-weight: normal; font-style: italic;}
.arm .kw28 {color: #b00040; font-weight: normal; font-style: italic;}
.arm .kw29 {color: #b00040; font-weight: normal; font-style: italic;}
.arm .kw30 {color: #b00040; font-weight: normal; font-style: italic;}
.arm .kw31 {color: #b00040; font-weight: normal; font-style: italic;}
.arm .kw32 {color: #b00040; font-weight: normal; font-style: italic;}
.arm .kw33 {color: #b00040; font-weight: normal; font-style: italic;}
.arm .kw34 {color: #b00040; font-weight: normal; font-style: italic;}
.arm .kw35 {color: #46aa03; font-weight: bold;}
.arm .co1 {color: #666666; font-style: italic;font-style: normal;}
.arm .co2 {color: #adadad; font-style: italic;}
.arm .coMULTI {font-style: normal;}
.arm .es0 {color: #000099; font-weight: bold;font-weight: normal;}
.arm .br0 {color: #009900; font-weight: bold;}
.arm .sy0 {color: #339933;}
.arm .st0 {color: #7f007f;}
.arm .nu0 {color: #ff0000;}
.arm .me {1}
.arm span.xtra { display:block; }
	</style>
</head>
<body>
[head]
<meta name="description" content="The Complete Damage Formula for Black &amp; White" />
[page]
<div class="author">By <a href="http://www.pokecheck.org">Xfr</a>, <a href="/forums/member.php?u=54525">Bond697</a> and <a href="/forums/member.php?u=32572">Kaphotics</a>, with help from <a href="/forums/member.php?u=87165">V4Victini</a>.</div>

<ol class="toc">
 <li><a href="#introduction">Introduction</a></li>
 <li>
  <a href="main">Main concepts</a>
  <ol style="list-style: upper-alpha">
   <li><a href="#overview">General flow of damage calculation</a></li>
   <li><a href="#apply-mod">How to apply a modifier</a></li>
   <li><a href="#chain-mod">How to chain modifiers</a></li>
   <li><a href="#mt-mod">The multi-target modifier</a></li>
   <li><a href="#weather-mod">The weather modifier</a></li>
   <li><a href="#crits">Critical hits</a></li>
   <li><a href="#random">The random factor</a></li>
   <li><a href="#stab">STAB</a></li>
   <li><a href="#type-eff">Type effectiveness</a></li>
   <li><a href="#burn">Effect of a burn</a></li>
   <li><a href="#final">Final modifier</a></li>
  </ol>
 </li>
 <li>
  <a href="#base-power">The base power</a>
  <ol style="list-style: upper-alpha">
   <li><a href="#variable-bp">Triggers for variable base power</a></li>
   <li><a href="#bp-mods">Modifiers for the base power</a></li>
  </ol>
 </li>
 <li>
  <a href="#attack">User attack stat</a>
  <ol style="list-style: upper-alpha">
   <li><a href="#attack-base">Base value</a></li>
   <li><a href="#boost-level">Boost level</a></li>
   <li><a href="#attack-mod">Attack modifiers</a></li>
  </ol>
 </li>
 <li>
  <a href="#defense">Target defense stat</a>
  <ol style="list-style: upper-alpha">
   <li><a href="#defense-base">Base value</a></li>
   <li><a href="#boost-def">Boost level</a></li>
   <li><a href="#sand-mod">Sandstorm modifier</a></li>
   <li><a href="#def-mod">Defense modifiers</a></li>
  </ol>
 </li>
 <li><a href="#special-cases">Special cases</a></li>
</ol>

<h2><a name="introduction">Introduction</a></h2>

<p>In generation IV, the damage formula was derived empirically by X-Act from running it countless times, an approach that is both tedious and prone to errors. The good understanding of the ARM code for Black &amp; White allows us to document the damage formula based on the actual source code of the game. It doesn't guarantee that we didn't make any mistake (interpreting assembly language is in itself a tricky task) but having the documented source along with the formula backs up our claims and allows anyone who spots any error to fix it by themselves.</p>

<h2><a name="main">Main concepts</a></h2>

<h3><a name="overview">General flow of damage calculation</a></h3>

<div class="arm listing">
<ol><li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1E94 @ int __cdecl DamageCalc<span class="br0">(</span>void <span class="sy0">*</span>trigger_table<span class="sy0">,</span> void <span class="sy0">**</span>attacking_bpkm<span class="sy0">,</span> void <span class="sy0">**</span>defending_bpkm<span class="sy0">,</span> unsigned __int16 <span class="sy0">*</span>move_id<span class="br0">)</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1E94 DamageCalc<span class="sy0">:</span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; @ CODE XREF<span class="sy0">:</span> MEMORY<span class="sy0">:</span>021C0B28p</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1E94</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1E94 double_damage= <span class="sy0">-</span><span class="nu0">0x30</span></div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021C1E94 p_attacking= <span class="sy0">-</span><span class="nu0">0x2C</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1E94 current_damage= <span class="sy0">-</span><span class="nu0">0x28</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1E94 static_damage= <span class="sy0">-</span><span class="nu0">0x24</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1E94 move_cat= <span class="sy0">-</span><span class="nu0">0x20</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1E94 base_power= <span class="sy0">-</span><span class="nu0">0x1C</span></div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021C1E94 attack_stat= <span class="sy0">-</span><span class="nu0">0x18</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1E94 effectiveness_factor= &nbsp;<span class="nu0">0</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1E94 field_mod= &nbsp;<span class="nu0">4</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1E94 is_critical= &nbsp;<span class="nu0">8</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1E94 rig_mindamage= &nbsp;<span class="nu0">0xC</span></div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021C1E94 p_store_result= &nbsp;<span class="nu0">0x10</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1E94</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1E94 <span class="kw3">PUSH</span> &nbsp; &nbsp;<span class="br0">{</span><span class="kw35">R4</span><span class="sy0">-</span><span class="kw35">R7</span><span class="sy0">,</span><span class="kw35">LR</span><span class="br0">}</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1E96 <span class="kw1">SUB</span> &nbsp; &nbsp; <span class="kw35">SP</span><span class="sy0">,</span> <span class="kw35">SP</span><span class="sy0">,</span> #<span class="nu0">0x1C</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1E98 <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R4</span><span class="sy0">,</span> <span class="kw35">R3</span></div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021C1E9A <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R5</span><span class="sy0">,</span> <span class="kw35">R0</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1E9C <span class="kw3">LDRH</span> &nbsp; &nbsp;<span class="kw35">R0</span><span class="sy0">,</span> <span class="br0">[</span><span class="kw35">R4</span><span class="br0">]</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1E9E <span class="kw3">STR</span> &nbsp; &nbsp; <span class="kw35">R1</span><span class="sy0">,</span> <span class="br0">[</span><span class="kw35">SP</span><span class="sy0">,</span>#<span class="nu0">0x30</span><span class="sy0">+</span>p_attacking<span class="br0">]</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1EA0 <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R7</span><span class="sy0">,</span> <span class="kw35">R2</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1EA2 <span class="kw3">LDR</span> &nbsp; &nbsp; <span class="kw35">R6</span><span class="sy0">,</span> <span class="br0">[</span><span class="kw35">SP</span><span class="sy0">,</span>#<span class="nu0">0x30</span><span class="sy0">+</span>is_critical<span class="br0">]</span></div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021C1EA4 <span class="kw7">BL</span> &nbsp; &nbsp; &nbsp;GetMoveCategory</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1EA8 <span class="kw3">STR</span> &nbsp; &nbsp; <span class="kw35">R0</span><span class="sy0">,</span> <span class="br0">[</span><span class="kw35">SP</span><span class="sy0">,</span>#<span class="nu0">0x30</span><span class="sy0">+</span>move_cat<span class="br0">]</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1EAA <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R0</span><span class="sy0">,</span> #<span class="nu0">0</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1EAC <span class="kw3">STR</span> &nbsp; &nbsp; <span class="kw35">R0</span><span class="sy0">,</span> <span class="br0">[</span><span class="kw35">SP</span><span class="sy0">,</span>#<span class="nu0">0x30</span><span class="sy0">+</span>static_damage<span class="br0">]</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1EAE <span class="kw3">LDR</span> &nbsp; &nbsp; <span class="kw35">R0</span><span class="sy0">,</span> =<span class="nu0">0x1C21</span></div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021C1EB0 <span class="kw7">BL</span> &nbsp; &nbsp; &nbsp;AllocateVolatileVariables</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1EB4 <span class="kw3">LDR</span> &nbsp; &nbsp; <span class="kw35">R1</span><span class="sy0">,</span> <span class="br0">[</span><span class="kw35">SP</span><span class="sy0">,</span>#<span class="nu0">0x30</span><span class="sy0">+</span>effectiveness_factor<span class="br0">]</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1EB6 <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R0</span><span class="sy0">,</span> #<span class="nu0">0x38</span> @ <span class="st0">'8'</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1EB8 <span class="kw7">BL</span> &nbsp; &nbsp; &nbsp;StoreVolatileVariableFlag3e4</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1EBC <span class="kw3">LDR</span> &nbsp; &nbsp; <span class="kw35">R0</span><span class="sy0">,</span> <span class="br0">[</span><span class="kw35">SP</span><span class="sy0">,</span>#<span class="nu0">0x30</span><span class="sy0">+</span>p_attacking<span class="br0">]</span></div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021C1EBE <span class="kw7">BL</span> &nbsp; &nbsp; &nbsp;Dereference25</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1EC2 <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R1</span><span class="sy0">,</span> <span class="kw35">R0</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1EC4 <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R0</span><span class="sy0">,</span> #<span class="nu0">3</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1EC6 <span class="kw7">BL</span> &nbsp; &nbsp; &nbsp;StoreVolatileVariableFlag3e4</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1ECA <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R0</span><span class="sy0">,</span> <span class="kw35">R7</span></div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021C1ECC <span class="kw7">BL</span> &nbsp; &nbsp; &nbsp;Dereference25</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1ED0 <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R1</span><span class="sy0">,</span> <span class="kw35">R0</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1ED2 <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R0</span><span class="sy0">,</span> #<span class="nu0">4</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1ED4 <span class="kw7">BL</span> &nbsp; &nbsp; &nbsp;StoreVolatileVariableFlag3e4</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1ED8 <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R0</span><span class="sy0">,</span> #<span class="nu0">0x45</span> @ <span class="st0">'E'</span></div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021C1EDA <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R1</span><span class="sy0">,</span> <span class="kw35">R6</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1EDC <span class="kw7">BL</span> &nbsp; &nbsp; &nbsp;StoreVolatileVariableFlag3e4</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1EE0 <span class="kw3">LDRB</span> &nbsp; &nbsp;<span class="kw35">R1</span><span class="sy0">,</span> <span class="br0">[</span><span class="kw35">R4</span><span class="sy0">,</span>#<span class="nu0">6</span><span class="br0">]</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1EE2 <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R0</span><span class="sy0">,</span> #<span class="nu0">0x16</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1EE4 <span class="kw7">BL</span> &nbsp; &nbsp; &nbsp;StoreVolatileVariableFlag3e4</div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021C1EE8 <span class="kw3">LDRH</span> &nbsp; &nbsp;<span class="kw35">R1</span><span class="sy0">,</span> <span class="br0">[</span><span class="kw35">R4</span><span class="br0">]</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1EEA <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R0</span><span class="sy0">,</span> #<span class="nu0">0x12</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1EEC <span class="kw7">BL</span> &nbsp; &nbsp; &nbsp;StoreVolatileVariableFlag3e4</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1EF0 <span class="kw3">LDR</span> &nbsp; &nbsp; <span class="kw35">R1</span><span class="sy0">,</span> <span class="br0">[</span><span class="kw35">SP</span><span class="sy0">,</span>#<span class="nu0">0x30</span><span class="sy0">+</span>move_cat<span class="br0">]</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1EF2 <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R0</span><span class="sy0">,</span> #<span class="nu0">0x1A</span></div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021C1EF4 <span class="kw7">BL</span> &nbsp; &nbsp; &nbsp;StoreVolatileVariableFlag3e4</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1EF8 <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R0</span><span class="sy0">,</span> #<span class="nu0">0x37</span> @ <span class="st0">'7'</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1EFA <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R1</span><span class="sy0">,</span> #<span class="nu0">0</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1EFC <span class="kw7">BL</span> &nbsp; &nbsp; &nbsp;InitVolatileVariable</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1F00 <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R0</span><span class="sy0">,</span> <span class="kw35">R5</span></div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021C1F02 <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R1</span><span class="sy0">,</span> #<span class="nu0">0x46</span> @ <span class="st0">'F'</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1F04 <span class="kw7">BL</span> &nbsp; &nbsp; &nbsp;ApplyTriggers</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1F08 <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R0</span><span class="sy0">,</span> #<span class="nu0">0x37</span> @ <span class="st0">'7'</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1F0A <span class="kw7">BL</span> &nbsp; &nbsp; &nbsp;ReadVolatileVariable</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1F0E <span class="kw3">STR</span> &nbsp; &nbsp; <span class="kw35">R0</span><span class="sy0">,</span> <span class="br0">[</span><span class="kw35">SP</span><span class="sy0">,</span>#<span class="nu0">0x30</span><span class="sy0">+</span>current_damage<span class="br0">]</span></div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021C1F10 <span class="kw5">CMP</span> &nbsp; &nbsp; <span class="kw35">R0</span><span class="sy0">,</span> #<span class="nu0">0</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1F12 <span class="kw8">BEQ</span> &nbsp; &nbsp; Bank0</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1F14 <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R0</span><span class="sy0">,</span> #<span class="nu0">1</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1F16 <span class="kw3">STR</span> &nbsp; &nbsp; <span class="kw35">R0</span><span class="sy0">,</span> <span class="br0">[</span><span class="kw35">SP</span><span class="sy0">,</span>#<span class="nu0">0x30</span><span class="sy0">+</span>static_damage<span class="br0">]</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1F18 <span class="kw7">B</span> &nbsp; &nbsp; &nbsp; Bank9</div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021C1F1A @ <span class="sy0">---------------------------------------------------------------------------</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1F1A</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1F1A Bank0<span class="sy0">:</span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;@ CODE XREF<span class="sy0">:</span> DamageCalc<span class="sy0">+</span>7Ej</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1F1A <span class="kw3">LDR</span> &nbsp; &nbsp; <span class="kw35">R1</span><span class="sy0">,</span> <span class="br0">[</span><span class="kw35">SP</span><span class="sy0">,</span>#<span class="nu0">0x30</span><span class="sy0">+</span>p_attacking<span class="br0">]</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1F1C <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R0</span><span class="sy0">,</span> <span class="kw35">R5</span></div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021C1F1E <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R2</span><span class="sy0">,</span> <span class="kw35">R7</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1F20 <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R3</span><span class="sy0">,</span> <span class="kw35">R4</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1F22 <span class="kw7">BL</span> &nbsp; &nbsp; &nbsp;BasePowerMods</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1F26 <span class="kw3">STR</span> &nbsp; &nbsp; <span class="kw35">R0</span><span class="sy0">,</span> <span class="br0">[</span><span class="kw35">SP</span><span class="sy0">,</span>#<span class="nu0">0x30</span><span class="sy0">+</span>base_power<span class="br0">]</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1F28 <span class="kw3">LDR</span> &nbsp; &nbsp; <span class="kw35">R1</span><span class="sy0">,</span> <span class="br0">[</span><span class="kw35">SP</span><span class="sy0">,</span>#<span class="nu0">0x30</span><span class="sy0">+</span>p_attacking<span class="br0">]</span></div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021C1F2A <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R0</span><span class="sy0">,</span> <span class="kw35">R5</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1F2C <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R2</span><span class="sy0">,</span> <span class="kw35">R7</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1F2E <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R3</span><span class="sy0">,</span> <span class="kw35">R4</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1F30 <span class="kw3">STR</span> &nbsp; &nbsp; <span class="kw35">R6</span><span class="sy0">,</span> <span class="br0">[</span><span class="kw35">SP</span><span class="sy0">,</span>#<span class="nu0">0x30</span><span class="sy0">+</span>double_damage<span class="br0">]</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1F32 <span class="kw7">BL</span> &nbsp; &nbsp; &nbsp;BaseAttackMods</div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021C1F36 <span class="kw3">STR</span> &nbsp; &nbsp; <span class="kw35">R0</span><span class="sy0">,</span> <span class="br0">[</span><span class="kw35">SP</span><span class="sy0">,</span>#<span class="nu0">0x30</span><span class="sy0">+</span>attack_stat<span class="br0">]</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1F38 <span class="kw3">LDR</span> &nbsp; &nbsp; <span class="kw35">R1</span><span class="sy0">,</span> <span class="br0">[</span><span class="kw35">SP</span><span class="sy0">,</span>#<span class="nu0">0x30</span><span class="sy0">+</span>p_attacking<span class="br0">]</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1F3A <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R0</span><span class="sy0">,</span> <span class="kw35">R5</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1F3C <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R2</span><span class="sy0">,</span> <span class="kw35">R7</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1F3E <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R3</span><span class="sy0">,</span> <span class="kw35">R4</span></div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021C1F40 <span class="kw3">STR</span> &nbsp; &nbsp; <span class="kw35">R6</span><span class="sy0">,</span> <span class="br0">[</span><span class="kw35">SP</span><span class="sy0">,</span>#<span class="nu0">0x30</span><span class="sy0">+</span>double_damage<span class="br0">]</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1F42 <span class="kw7">BL</span> &nbsp; &nbsp; &nbsp;BaseDefenseMods</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1F46 <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R7</span><span class="sy0">,</span> <span class="kw35">R0</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1F48 <span class="kw3">LDR</span> &nbsp; &nbsp; <span class="kw35">R0</span><span class="sy0">,</span> <span class="br0">[</span><span class="kw35">SP</span><span class="sy0">,</span>#<span class="nu0">0x30</span><span class="sy0">+</span>p_attacking<span class="br0">]</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1F4A <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R1</span><span class="sy0">,</span> #<span class="nu0">0xF</span></div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021C1F4C <span class="kw7">BL</span> &nbsp; &nbsp; &nbsp;GetBpkmStat</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1F50 <span class="kw5">LSLS</span> &nbsp; &nbsp;<span class="kw35">R0</span><span class="sy0">,</span> <span class="kw35">R0</span><span class="sy0">,</span> #<span class="nu0">0x18</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1F52 <span class="kw5">LSRS</span> &nbsp; &nbsp;<span class="kw35">R2</span><span class="sy0">,</span> <span class="kw35">R0</span><span class="sy0">,</span> #<span class="nu0">0x18</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1F54 <span class="kw3">LDR</span> &nbsp; &nbsp; <span class="kw35">R0</span><span class="sy0">,</span> <span class="br0">[</span><span class="kw35">SP</span><span class="sy0">,</span>#<span class="nu0">0x30</span><span class="sy0">+</span>base_power<span class="br0">]</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1F56 <span class="kw3">LDR</span> &nbsp; &nbsp; <span class="kw35">R1</span><span class="sy0">,</span> <span class="br0">[</span><span class="kw35">SP</span><span class="sy0">,</span>#<span class="nu0">0x30</span><span class="sy0">+</span>attack_stat<span class="br0">]</span></div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021C1F58 <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R3</span><span class="sy0">,</span> <span class="kw35">R7</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1F5A <span class="kw7">BL</span> &nbsp; &nbsp; &nbsp;BaseDamageFormula</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1F5E <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R2</span><span class="sy0">,</span> #<span class="nu0">4</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1F60 <span class="kw3">LDR</span> &nbsp; &nbsp; <span class="kw35">R1</span><span class="sy0">,</span> <span class="br0">[</span><span class="kw35">SP</span><span class="sy0">,</span>#<span class="nu0">0x30</span><span class="sy0">+</span>field_mod<span class="br0">]</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1F62 <span class="kw5">LSLS</span> &nbsp; &nbsp;<span class="kw35">R2</span><span class="sy0">,</span> <span class="kw35">R2</span><span class="sy0">,</span> #<span class="nu0">0xA</span></div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021C1F64 <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R7</span><span class="sy0">,</span> <span class="kw35">R0</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1F66 <span class="kw5">CMP</span> &nbsp; &nbsp; <span class="kw35">R1</span><span class="sy0">,</span> <span class="kw35">R2</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1F68 <span class="kw8">BEQ</span> &nbsp; &nbsp; Bank1</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1F6A <span class="kw7">BL</span> &nbsp; &nbsp; &nbsp;ApplyMod</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1F6E <span class="kw5">ADDS</span> &nbsp; &nbsp;<span class="kw35">R7</span><span class="sy0">,</span> <span class="kw35">R0</span><span class="sy0">,</span> #<span class="nu0">0</span></div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021C1F70</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1F70 Bank1<span class="sy0">:</span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;@ CODE XREF<span class="sy0">:</span> DamageCalc<span class="sy0">+</span><span class="kw35">D4</span>j</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1F70 <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R0</span><span class="sy0">,</span> <span class="kw35">R5</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1F72 <span class="kw7">BL</span> &nbsp; &nbsp; &nbsp;WeatherTriggers</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1F76 <span class="kw3">LDRB</span> &nbsp; &nbsp;<span class="kw35">R1</span><span class="sy0">,</span> <span class="br0">[</span><span class="kw35">R4</span><span class="sy0">,</span>#<span class="nu0">6</span><span class="br0">]</span></div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021C1F78 <span class="kw7">BL</span> &nbsp; &nbsp; &nbsp;WeatherMod</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1F7C <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R1</span><span class="sy0">,</span> <span class="kw35">R0</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1F7E <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R0</span><span class="sy0">,</span> <span class="nu0">0x1000</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1F82 <span class="kw5">CMP</span> &nbsp; &nbsp; <span class="kw35">R1</span><span class="sy0">,</span> <span class="kw35">R0</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1F84 <span class="kw8">BEQ</span> &nbsp; &nbsp; Bank2</div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021C1F86 <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R0</span><span class="sy0">,</span> <span class="kw35">R7</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1F88 <span class="kw7">BL</span> &nbsp; &nbsp; &nbsp;ApplyMod</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1F8C <span class="kw5">ADDS</span> &nbsp; &nbsp;<span class="kw35">R7</span><span class="sy0">,</span> <span class="kw35">R0</span><span class="sy0">,</span> #<span class="nu0">0</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1F8E</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1F8E Bank2<span class="sy0">:</span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;@ CODE XREF<span class="sy0">:</span> DamageCalc<span class="sy0">+</span>F0j</div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021C1F8E <span class="kw5">CMP</span> &nbsp; &nbsp; <span class="kw35">R6</span><span class="sy0">,</span> #<span class="nu0">0</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1F90 <span class="kw8">BEQ</span> &nbsp; &nbsp; Bank3</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1F92 <span class="kw5">LSLS</span> &nbsp; &nbsp;<span class="kw35">R7</span><span class="sy0">,</span> <span class="kw35">R7</span><span class="sy0">,</span> #<span class="nu0">1</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1F94</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1F94 Bank3<span class="sy0">:</span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;@ CODE XREF<span class="sy0">:</span> DamageCalc<span class="sy0">+</span>FCj</div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021C1F94 <span class="kw3">LDR</span> &nbsp; &nbsp; <span class="kw35">R0</span><span class="sy0">,</span> <span class="br0">[</span><span class="kw35">R5</span><span class="sy0">,</span>#<span class="nu0">4</span><span class="br0">]</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1F96 <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R1</span><span class="sy0">,</span> #<span class="nu0">7</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1F98 <span class="kw7">BL</span> &nbsp; &nbsp; &nbsp;sub_21B913C</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1F9C <span class="kw5">CMP</span> &nbsp; &nbsp; <span class="kw35">R0</span><span class="sy0">,</span> #<span class="nu0">0</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1F9E <span class="kw8">BNE</span> &nbsp; &nbsp; Bank6</div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021C1FA0 <span class="kw3">LDR</span> &nbsp; &nbsp; <span class="kw35">R0</span><span class="sy0">,</span> <span class="br0">[</span><span class="kw35">SP</span><span class="sy0">,</span>#<span class="nu0">0x30</span><span class="sy0">+</span>rig_mindamage<span class="br0">]</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1FA2 <span class="kw5">CMP</span> &nbsp; &nbsp; <span class="kw35">R0</span><span class="sy0">,</span> #<span class="nu0">0</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1FA4 <span class="kw8">BEQ</span> &nbsp; &nbsp; Bank4</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1FA6 <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R0</span><span class="sy0">,</span> #<span class="nu0">0x55</span> @ <span class="st0">'U'</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1FA8 <span class="kw7">B</span> &nbsp; &nbsp; &nbsp; Bank5</div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021C1FAA @ <span class="sy0">---------------------------------------------------------------------------</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1FAA</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1FAA Bank4<span class="sy0">:</span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;@ CODE XREF<span class="sy0">:</span> DamageCalc<span class="sy0">+</span><span class="nu0">110</span>j</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1FAA <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R0</span><span class="sy0">,</span> #<span class="nu0">0x10</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1FAC <span class="kw7">BL</span> &nbsp; &nbsp; &nbsp;BRand</div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021C1FB0 <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R1</span><span class="sy0">,</span> #<span class="nu0">0x64</span> @ <span class="st0">'d'</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1FB2 <span class="kw5">SUBS</span> &nbsp; &nbsp;<span class="kw35">R0</span><span class="sy0">,</span> <span class="kw35">R1</span><span class="sy0">,</span> <span class="kw35">R0</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1FB4 <span class="kw5">LSLS</span> &nbsp; &nbsp;<span class="kw35">R0</span><span class="sy0">,</span> <span class="kw35">R0</span><span class="sy0">,</span> #<span class="nu0">0x10</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1FB6 <span class="kw5">LSRS</span> &nbsp; &nbsp;<span class="kw35">R0</span><span class="sy0">,</span> <span class="kw35">R0</span><span class="sy0">,</span> #<span class="nu0">0x10</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1FB8</div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021C1FB8 Bank5<span class="sy0">:</span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;@ CODE XREF<span class="sy0">:</span> DamageCalc<span class="sy0">+</span><span class="nu0">114</span>j</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1FB8 <span class="kw1">MULS</span> &nbsp; &nbsp;<span class="kw35">R0</span><span class="sy0">,</span> <span class="kw35">R7</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1FBA <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R1</span><span class="sy0">,</span> #<span class="nu0">0x64</span> @ <span class="st0">'d'</span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; @ divisor</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1FBC <span class="kw7">BLX</span> &nbsp; &nbsp; divmodUnsigned__</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1FC0 <span class="kw5">ADDS</span> &nbsp; &nbsp;<span class="kw35">R7</span><span class="sy0">,</span> <span class="kw35">R0</span><span class="sy0">,</span> #<span class="nu0">0</span></div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021C1FC2</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1FC2 Bank6<span class="sy0">:</span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;@ CODE XREF<span class="sy0">:</span> DamageCalc<span class="sy0">+</span>10Aj</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1FC2 <span class="kw3">LDRB</span> &nbsp; &nbsp;<span class="kw35">R2</span><span class="sy0">,</span> <span class="br0">[</span><span class="kw35">R4</span><span class="sy0">,</span>#<span class="nu0">6</span><span class="br0">]</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1FC4 <span class="kw5">CMP</span> &nbsp; &nbsp; <span class="kw35">R2</span><span class="sy0">,</span> #<span class="nu0">0x11</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1FC6 <span class="kw8">BEQ</span> &nbsp; &nbsp; Bank7</div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021C1FC8 <span class="kw3">LDR</span> &nbsp; &nbsp; <span class="kw35">R1</span><span class="sy0">,</span> <span class="br0">[</span><span class="kw35">SP</span><span class="sy0">,</span>#<span class="nu0">0x30</span><span class="sy0">+</span>p_attacking<span class="br0">]</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1FCA <span class="kw5">ADDS</span> &nbsp; &nbsp;<span class="kw35">R0</span><span class="sy0">,</span> <span class="kw35">R5</span><span class="sy0">,</span> #<span class="nu0">0</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1FCC</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1FCC Bank_STAB<span class="sy0">:</span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;@ CODE XREF<span class="sy0">:</span> MEMORY<span class="sy0">:</span>021C1D6Aj</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1FCC <span class="kw7">BL</span> &nbsp; &nbsp; &nbsp;STAB</div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021C1FD0 <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R1</span><span class="sy0">,</span> <span class="kw35">R0</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1FD2 <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R0</span><span class="sy0">,</span> <span class="kw35">R7</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1FD4 <span class="kw7">BL</span> &nbsp; &nbsp; &nbsp;ApplyMod</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1FD8 <span class="kw5">ADDS</span> &nbsp; &nbsp;<span class="kw35">R7</span><span class="sy0">,</span> <span class="kw35">R0</span><span class="sy0">,</span> #<span class="nu0">0</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1FDA</div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021C1FDA Bank7<span class="sy0">:</span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;@ CODE XREF<span class="sy0">:</span> DamageCalc<span class="sy0">+</span><span class="nu0">132</span>j</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1FDA <span class="kw3">LDR</span> &nbsp; &nbsp; <span class="kw35">R1</span><span class="sy0">,</span> <span class="br0">[</span><span class="kw35">SP</span><span class="sy0">,</span>#<span class="nu0">0x30</span><span class="sy0">+</span>effectiveness_factor<span class="br0">]</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1FDC</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1FDC loc_21C1FDC<span class="sy0">:</span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;@ CODE XREF<span class="sy0">:</span> MEMORY<span class="sy0">:</span>021C1D7Aj</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1FDC <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R0</span><span class="sy0">,</span> <span class="kw35">R7</span></div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021C1FDE <span class="kw7">BL</span> &nbsp; &nbsp; &nbsp;TypeEffectiveness</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1FE2 <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R4</span><span class="sy0">,</span> <span class="kw35">R0</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1FE4 <span class="kw3">LDR</span> &nbsp; &nbsp; <span class="kw35">R0</span><span class="sy0">,</span> <span class="br0">[</span><span class="kw35">SP</span><span class="sy0">,</span>#<span class="nu0">0x30</span><span class="sy0">+</span>move_cat<span class="br0">]</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1FE6 <span class="kw5">CMP</span> &nbsp; &nbsp; <span class="kw35">R0</span><span class="sy0">,</span> #<span class="nu0">1</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1FE8 <span class="kw8">BNE</span> &nbsp; &nbsp; Bank_notnull</div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021C1FEA <span class="kw3">LDR</span> &nbsp; &nbsp; <span class="kw35">R0</span><span class="sy0">,</span> <span class="br0">[</span><span class="kw35">SP</span><span class="sy0">,</span>#<span class="nu0">0x30</span><span class="sy0">+</span>p_attacking<span class="br0">]</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1FEC <span class="kw7">BL</span> &nbsp; &nbsp; &nbsp;GetBpkmStatus</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1FF0 <span class="kw5">CMP</span> &nbsp; &nbsp; <span class="kw35">R0</span><span class="sy0">,</span> #<span class="nu0">4</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1FF2 <span class="kw8">BNE</span> &nbsp; &nbsp; Bank_notnull</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1FF4 <span class="kw3">LDR</span> &nbsp; &nbsp; <span class="kw35">R0</span><span class="sy0">,</span> <span class="br0">[</span><span class="kw35">SP</span><span class="sy0">,</span>#<span class="nu0">0x30</span><span class="sy0">+</span>p_attacking<span class="br0">]</span></div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021C1FF6 <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R1</span><span class="sy0">,</span> #<span class="nu0">0x11</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1FF8 <span class="kw7">BL</span> &nbsp; &nbsp; &nbsp;GetBpkmStat</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1FFC <span class="kw5">CMP</span> &nbsp; &nbsp; <span class="kw35">R0</span><span class="sy0">,</span> #<span class="nu0">0x3E</span> @ <span class="st0">'&gt;'</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1FFE <span class="kw8">BEQ</span> &nbsp; &nbsp; Bank_notnull</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C2000 <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R0</span><span class="sy0">,</span> #<span class="nu0">0x32</span> @ <span class="st0">'2'</span></div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021C2002 <span class="kw1">MULS</span> &nbsp; &nbsp;<span class="kw35">R0</span><span class="sy0">,</span> <span class="kw35">R4</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C2004 <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R1</span><span class="sy0">,</span> #<span class="nu0">0x64</span> @ <span class="st0">'d'</span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; @ divisor</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C2006 <span class="kw7">BLX</span> &nbsp; &nbsp; divmodUnsigned__</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C200A <span class="kw5">ADDS</span> &nbsp; &nbsp;<span class="kw35">R4</span><span class="sy0">,</span> <span class="kw35">R0</span><span class="sy0">,</span> #<span class="nu0">0</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C200C</div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021C200C Bank_notnull<span class="sy0">:</span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; @ CODE XREF<span class="sy0">:</span> DamageCalc<span class="sy0">+</span><span class="nu0">154</span>j</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C200C &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; @ DamageCalc<span class="sy0">+</span>15Ej <span class="sy0">...</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C200C <span class="kw5">CMP</span> &nbsp; &nbsp; <span class="kw35">R4</span><span class="sy0">,</span> #<span class="nu0">0</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C200E <span class="kw8">BNE</span> &nbsp; &nbsp; Bank8</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C2010 <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R4</span><span class="sy0">,</span> #<span class="nu0">1</span></div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021C2012</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C2012 Bank8<span class="sy0">:</span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;@ CODE XREF<span class="sy0">:</span> DamageCalc<span class="sy0">+</span>17Aj</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C2012 <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R1</span><span class="sy0">,</span> <span class="nu0">0x1000</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C2016 <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R0</span><span class="sy0">,</span> #<span class="nu0">0x35</span> @ <span class="st0">'5'</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C2018 <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R2</span><span class="sy0">,</span> #<span class="nu0">0x29</span> @ <span class="st0">')'</span></div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021C201A <span class="kw5">LSLS</span> &nbsp; &nbsp;<span class="kw35">R3</span><span class="sy0">,</span> <span class="kw35">R1</span><span class="sy0">,</span> #<span class="nu0">5</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C201C <span class="kw7">BL</span> &nbsp; &nbsp; &nbsp;StoreVolatileVariableFlag3e3</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C2020 <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R0</span><span class="sy0">,</span> #<span class="nu0">0x32</span> @ <span class="st0">'2'</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C2022 <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R1</span><span class="sy0">,</span> <span class="kw35">R4</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C2024 <span class="kw7">BL</span> &nbsp; &nbsp; &nbsp;InitVolatileVariable</div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021C2028 <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R0</span><span class="sy0">,</span> <span class="kw35">R5</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C202A <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R1</span><span class="sy0">,</span> #<span class="nu0">0x47</span> @ <span class="st0">'G'</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C202C <span class="kw7">BL</span> &nbsp; &nbsp; &nbsp;ApplyTriggers</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C2030 <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R0</span><span class="sy0">,</span> #<span class="nu0">0x35</span> @ <span class="st0">'5'</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C2032 <span class="kw7">BL</span> &nbsp; &nbsp; &nbsp;ReadVolatileVariable</div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021C2036 <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R4</span><span class="sy0">,</span> <span class="kw35">R0</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C2038 <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R0</span><span class="sy0">,</span> #<span class="nu0">0x32</span> @ <span class="st0">'2'</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C203A <span class="kw7">BL</span> &nbsp; &nbsp; &nbsp;ReadVolatileVariable</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C203E <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R1</span><span class="sy0">,</span> <span class="kw35">R4</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C2040 <span class="kw7">BL</span> &nbsp; &nbsp; &nbsp;ApplyMod</div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021C2044 <span class="kw3">STR</span> &nbsp; &nbsp; <span class="kw35">R0</span><span class="sy0">,</span> <span class="br0">[</span><span class="kw35">SP</span><span class="sy0">,</span>#<span class="nu0">0x30</span><span class="sy0">+</span>current_damage<span class="br0">]</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C2046</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C2046 Bank9<span class="sy0">:</span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;@ CODE XREF<span class="sy0">:</span> DamageCalc<span class="sy0">+</span><span class="nu0">84</span>j</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C2046 <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R0</span><span class="sy0">,</span> <span class="kw35">R5</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C2048 <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R1</span><span class="sy0">,</span> #<span class="nu0">0x48</span> @ <span class="st0">'H'</span></div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021C204A <span class="kw7">BL</span> &nbsp; &nbsp; &nbsp;ApplyTriggers</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C204E <span class="kw3">LDR</span> &nbsp; &nbsp; <span class="kw35">R0</span><span class="sy0">,</span> =<span class="nu0">0x1C8D</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C2050 <span class="kw7">BL</span> &nbsp; &nbsp; &nbsp;FreeVolatileVariable</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C2054 <span class="kw3">LDR</span> &nbsp; &nbsp; <span class="kw35">R1</span><span class="sy0">,</span> <span class="br0">[</span><span class="kw35">SP</span><span class="sy0">,</span>#<span class="nu0">0x30</span><span class="sy0">+</span>p_store_result<span class="br0">]</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C2056 <span class="kw3">LDR</span> &nbsp; &nbsp; <span class="kw35">R0</span><span class="sy0">,</span> <span class="br0">[</span><span class="kw35">SP</span><span class="sy0">,</span>#<span class="nu0">0x30</span><span class="sy0">+</span>current_damage<span class="br0">]</span></div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021C2058 <span class="kw3">STRH</span> &nbsp; &nbsp;<span class="kw35">R0</span><span class="sy0">,</span> <span class="br0">[</span><span class="kw35">R1</span><span class="br0">]</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C205A <span class="kw3">LDR</span> &nbsp; &nbsp; <span class="kw35">R0</span><span class="sy0">,</span> <span class="br0">[</span><span class="kw35">SP</span><span class="sy0">,</span>#<span class="nu0">0x30</span><span class="sy0">+</span>static_damage<span class="br0">]</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C205C <span class="kw1">ADD</span> &nbsp; &nbsp; <span class="kw35">SP</span><span class="sy0">,</span> <span class="kw35">SP</span><span class="sy0">,</span> #<span class="nu0">0x1C</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C205E <span class="kw3">POP</span> &nbsp; &nbsp; <span class="br0">{</span><span class="kw35">R4</span><span class="sy0">-</span><span class="kw35">R7</span><span class="sy0">,</span><span class="kw35">PC</span><span class="br0">}</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C205E @ End of function DamageCalc</div></li>
<li class="li2"><div class="de2">&nbsp;</div></li>
</ol>
</div>
<br />

<p>
 Roughly speaking, the damage formula in Pokémon is a big multiplication, each factor representing the user's level and attack
 stat, the foe's defense stat, and a bunch of factors for STAB, held items, abilities and other field effects.
 In a perfect world where ARM CPUs could work on real numbers, it would be possible to multiply each factor in any order
 and get the same result, but in practice the game will round some multiplications and truncate others, meaning that
 in order to get accurate damage results, <i>it is of utmost importance to perform the multiplication in the same order
 as the game and using the same rounding methods</i>. Even though rounding errors might not sound like a big problem, they
 will be amplified at each step, and a few factors such as Reflect and Life Orb in a double battle can cause a significant
 difference between an unrounded and a properly rounded calculation.
</p>
<p>
There are three main parameters for damage calculation: the user's attack stat, the target's defense stat and the move's
base power. To compute these stats, the game starts from a base value and apply a <i>modifier</i> to reflect the various
effects that can alter the base value. This modifier is obtained by running through a list of short functions called triggers
that are called based on the current active effects on field. Different triggers can modify the same modifier before it is
applied, this operation is called <i>chaining</i> and is <a href="#chain-mod">explained below</a>.
</p>

<p>Once the main parameters are set, the general steps of the calculation are as follows:</p>

<pre>BaseDamage = ((((2 × Level) ÷ 5 + 2) * BasePower * [Sp]Atk) ÷ [Sp]Def) ÷ 50 + 2</pre>

<ol>
 <li>Apply the multi-target modifier</li>
 <li>Apply the weather modifier</li>
 <li>In case of a critical hit, double the value</li>
 <li>Alter with a random factor</li>
 <li>Apply STAB modifier</li>
 <li>Alter with type effectiveness</li>
 <li>Alter with user's burn</li>
 <li>Make sure damage is at least 1</li>
 <li>Apply the final modifier</li>
</ol>

<p>
 In this article, ÷ always denotes the in-game unsigned divmod function, i.e. the unrounded/truncated integer division.
 By contrast, "apply a modifier" is a rounded operation explained in the <a href="#apply-mod">next subsection</a>.
</p>

<p>
There are some exceptions to the formula above that correspond to the set of triggers at the very top of the damage function;
they are detailed in <a href="#special-cases">a separate section</a>.
</p>

<h3><a name="apply-mod">How to apply a modifier</a></h3>

<div class="arm listing">
<ol><li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021D7B30 @ int __fastcall ApplyMod<span class="br0">(</span>int base_value<span class="sy0">,</span> int modifier<span class="br0">)</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021D7B30 ApplyMod<span class="sy0">:</span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; @ CODE XREF<span class="sy0">:</span> sub_21BC968<span class="sy0">+</span><span class="nu0">68</span>p</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021D7B30 <span class="kw1">MULS</span> &nbsp; &nbsp;<span class="kw35">R1</span><span class="sy0">,</span> <span class="kw35">R0</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021D7B32 <span class="kw3">LDR</span> &nbsp; &nbsp; <span class="kw35">R0</span><span class="sy0">,</span> =<span class="nu0">0xFFF</span></div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021D7B34 <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R2</span><span class="sy0">,</span> <span class="kw35">R1</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021D7B36 <span class="kw5">ANDS</span> &nbsp; &nbsp;<span class="kw35">R2</span><span class="sy0">,</span> <span class="kw35">R0</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021D7B38 <span class="kw5">LSRS</span> &nbsp; &nbsp;<span class="kw35">R0</span><span class="sy0">,</span> <span class="kw35">R1</span><span class="sy0">,</span> #<span class="nu0">0xC</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021D7B3A <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R1</span><span class="sy0">,</span> <span class="nu0">0x800</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021D7B3E <span class="kw5">CMP</span> &nbsp; &nbsp; <span class="kw35">R2</span><span class="sy0">,</span> <span class="kw35">R1</span></div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021D7B40 <span class="kw8">BLS</span> &nbsp; &nbsp; locret_21D7B44</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021D7B42 <span class="kw5">ADDS</span> &nbsp; &nbsp;<span class="kw35">R0</span><span class="sy0">,</span> <span class="kw35">R0</span><span class="sy0">,</span> #<span class="nu0">1</span></div></li>
</ol>
</div><br />

<p>A modifier is a 16 bit fixed point factor, i.e. a fraction whose divisor is always 0x1000 (4096). For instance, 0x14cc is the modifier for Life Orb (0x14cc/0x1000 is about 1.3). Applying the modifier
<i>M</i> to the damage value <i>D</i> means multiplying <i>D</i> by <i>M</i> and dividing the result by 0x1000; then if the decimal part is &le;0.5, round the result down, otherwise round it up.
Simply put: <pre>D' = round(D * M / 0x1000)</pre></p>

<h3><a name="chain-mod">How to chain modifiers</a></h3>

<div class="arm listing">
<ol><li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021D7724 @ void __fastcall ChainMod<span class="br0">(</span>__int16 Volatile_index<span class="sy0">,</span> int mod<span class="br0">)</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021D7724 ChainMod<span class="sy0">:</span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; @ CODE XREF<span class="sy0">:</span> AccuracyCheck<span class="sy0">+</span>FAp</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021D7724 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; @ MEMORY<span class="sy0">:</span>021D8B5Ep <span class="sy0">...</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021D7724 <span class="kw3">PUSH</span> &nbsp; &nbsp;<span class="br0">{</span><span class="kw35">R3</span><span class="sy0">-</span><span class="kw35">R7</span><span class="sy0">,</span><span class="kw35">LR</span><span class="br0">}</span></div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021D7726 <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R2</span><span class="sy0">,</span> <span class="kw35">R0</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021D7728 <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R7</span><span class="sy0">,</span> <span class="kw35">R1</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021D772A <span class="kw3">LDR</span> &nbsp; &nbsp; <span class="kw35">R0</span><span class="sy0">,</span> =VolatileStore</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021D772C <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R1</span><span class="sy0">,</span> <span class="kw35">R2</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021D772E <span class="kw7">BL</span> &nbsp; &nbsp; &nbsp;sub_21D7808</div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021D7732 <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R5</span><span class="sy0">,</span> <span class="kw35">R0</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021D7734 <span class="kw8">BMI</span> &nbsp; &nbsp; locret_21D7772</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021D7736 <span class="kw3">LDR</span> &nbsp; &nbsp; <span class="kw35">R0</span><span class="sy0">,</span> =VolatileStore</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021D7738 <span class="kw5">ADDS</span> &nbsp; &nbsp;<span class="kw35">R1</span><span class="sy0">,</span> <span class="kw35">R0</span><span class="sy0">,</span> <span class="kw35">R5</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021D773A <span class="kw3">LDR</span> &nbsp; &nbsp; <span class="kw35">R0</span><span class="sy0">,</span> =<span class="nu0">0x544</span></div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021D773C <span class="kw3">LDRB</span> &nbsp; &nbsp;<span class="kw35">R0</span><span class="sy0">,</span> <span class="br0">[</span><span class="kw35">R1</span><span class="sy0">,</span><span class="kw35">R0</span><span class="br0">]</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021D773E <span class="kw5">CMP</span> &nbsp; &nbsp; <span class="kw35">R0</span><span class="sy0">,</span> #<span class="nu0">3</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021D7740 <span class="kw8">BNE</span> &nbsp; &nbsp; locret_21D7772</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021D7742 <span class="kw3">LDR</span> &nbsp; &nbsp; <span class="kw35">R4</span><span class="sy0">,</span> =VolatileStore</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021D7744 <span class="kw5">LSLS</span> &nbsp; &nbsp;<span class="kw35">R6</span><span class="sy0">,</span> <span class="kw35">R5</span><span class="sy0">,</span> #<span class="nu0">2</span></div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021D7746 <span class="kw5">ADDS</span> &nbsp; &nbsp;<span class="kw35">R4</span><span class="sy0">,</span> #<span class="nu0">0xC4</span> @ <span class="st0">'-'</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021D7748 <span class="kw3">LDR</span> &nbsp; &nbsp; <span class="kw35">R0</span><span class="sy0">,</span> <span class="br0">[</span><span class="kw35">R4</span><span class="sy0">,</span><span class="kw35">R6</span><span class="br0">]</span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; @ num1</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021D774A <span class="kw5">ASRS</span> &nbsp; &nbsp;<span class="kw35">R3</span><span class="sy0">,</span> <span class="kw35">R7</span><span class="sy0">,</span> #<span class="nu0">0x1F</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021D774C <span class="kw5">ASRS</span> &nbsp; &nbsp;<span class="kw35">R1</span><span class="sy0">,</span> <span class="kw35">R0</span><span class="sy0">,</span> #<span class="nu0">0x1F</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021D774E <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R2</span><span class="sy0">,</span> <span class="kw35">R7</span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;@ num2</div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021D7750 <span class="kw7">BLX</span> &nbsp; &nbsp; mul64Unsigned__</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021D7754 <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R3</span><span class="sy0">,</span> <span class="kw35">R1</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021D7756 <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R1</span><span class="sy0">,</span> <span class="kw35">R5</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021D7758 <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R5</span><span class="sy0">,</span> #<span class="nu0">2</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021D775A <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R2</span><span class="sy0">,</span> <span class="kw35">R0</span></div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021D775C <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R7</span><span class="sy0">,</span> #<span class="nu0">0</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021D775E <span class="kw5">LSLS</span> &nbsp; &nbsp;<span class="kw35">R5</span><span class="sy0">,</span> <span class="kw35">R5</span><span class="sy0">,</span> #<span class="nu0">0xA</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021D7760 <span class="kw5">ADDS</span> &nbsp; &nbsp;<span class="kw35">R2</span><span class="sy0">,</span> <span class="kw35">R2</span><span class="sy0">,</span> <span class="kw35">R5</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021D7762 <span class="kw5">ADCS</span> &nbsp; &nbsp;<span class="kw35">R3</span><span class="sy0">,</span> <span class="kw35">R7</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021D7764 <span class="kw3">LDR</span> &nbsp; &nbsp; <span class="kw35">R0</span><span class="sy0">,</span> =VolatileStore</div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021D7766 <span class="kw5">LSLS</span> &nbsp; &nbsp;<span class="kw35">R3</span><span class="sy0">,</span> <span class="kw35">R3</span><span class="sy0">,</span> #<span class="nu0">0x14</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021D7768 <span class="kw5">LSRS</span> &nbsp; &nbsp;<span class="kw35">R2</span><span class="sy0">,</span> <span class="kw35">R2</span><span class="sy0">,</span> #<span class="nu0">0xC</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021D776A <span class="kw5">ORRS</span> &nbsp; &nbsp;<span class="kw35">R2</span><span class="sy0">,</span> <span class="kw35">R3</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021D776C <span class="kw7">BL</span> &nbsp; &nbsp; &nbsp;sub_21D782C</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021D7770 <span class="kw3">STR</span> &nbsp; &nbsp; <span class="kw35">R0</span><span class="sy0">,</span> <span class="br0">[</span><span class="kw35">R4</span><span class="sy0">,</span><span class="kw35">R6</span><span class="br0">]</span></div></li>
</ol>
</div><br />

<p>Recall that modifiers for a given parameters are computed by the triggers for that parameter. This means that when multiple triggers apply, you have to chain the modifier for the parameter, starting from 0x1000.
If the current modifier is <i>M</i> and you want to chain with another modifier <i>M'</i>, the resulting modifier would be: <pre>M'' = ((M * M') + 0x800) >> 12</pre></p>

<h3><a name="mt-mod">The multi-target modifier</a></h3>
<div class="arm listing">
<ol><li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C0DCC @ <span class="sy0">---------------------------------------------------------------------------</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C0DBE <span class="kw7">BL</span> &nbsp; &nbsp; &nbsp;sub_21C0EE4</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C0DC2 <span class="kw5">CMP</span> &nbsp; &nbsp; <span class="kw35">R0</span><span class="sy0">,</span> #<span class="nu0">1</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C0DC4 <span class="kw8">BNE</span> &nbsp; &nbsp; loc_21C0DCC</div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021C0DC6 <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R4</span><span class="sy0">,</span> <span class="nu0">0x1000</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C0DCA <span class="kw7">B</span> &nbsp; &nbsp; &nbsp; loc_21C0DD0</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C0DCC @ <span class="sy0">---------------------------------------------------------------------------</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C0DCC loc_21C0DCC<span class="sy0">:</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C0DCC <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R4</span><span class="sy0">,</span> <span class="nu0">0xC00</span></div></li>
</ol></div>
<br />

This modifier doesn't have any trigger and is set to 0xC00 if the move has more than one target and 0x1000 otherwise.
Being a target is independant of all accuracy and effectiveness checks, but a fainted Pokémon on the field will not count
as a target.

<h3><a name="weather-mod">The weather modifier</a></h3>

<div class="arm listing">
<ol><li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021D7C58 @ int __fastcall WeatherMod<span class="br0">(</span>__int16 active_weather<span class="br0">)</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021D7C58 WeatherMod<span class="sy0">:</span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; @ CODE XREF<span class="sy0">:</span> DamageCalc<span class="sy0">+</span>E4p</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021D7C58 <span class="kw5">CMP</span> &nbsp; &nbsp; <span class="kw35">R0</span><span class="sy0">,</span> #<span class="nu0">1</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021D7C5A <span class="kw8">BEQ</span> &nbsp; &nbsp; loc_21D7C62</div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021D7C5C <span class="kw5">CMP</span> &nbsp; &nbsp; <span class="kw35">R0</span><span class="sy0">,</span> #<span class="nu0">2</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021D7C5E <span class="kw8">BEQ</span> &nbsp; &nbsp; loc_21D7C76</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021D7C60 <span class="kw7">B</span> &nbsp; &nbsp; &nbsp; loc_21D7C8A</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021D7C62 @ <span class="sy0">---------------------------------------------------------------------------</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021D7C62</div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021D7C62 loc_21D7C62<span class="sy0">:</span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;@ CODE XREF<span class="sy0">:</span> WeatherMod<span class="sy0">+</span><span class="nu0">2</span>j</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021D7C62 <span class="kw5">CMP</span> &nbsp; &nbsp; <span class="kw35">R1</span><span class="sy0">,</span> #<span class="nu0">9</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021D7C64 <span class="kw8">BNE</span> &nbsp; &nbsp; loc_21D7C6C</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021D7C66 <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R0</span><span class="sy0">,</span> <span class="nu0">0x1800</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021D7C6A <span class="kw7">BX</span> &nbsp; &nbsp; &nbsp;<span class="kw35">LR</span></div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021D7C6C @ <span class="sy0">---------------------------------------------------------------------------</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021D7C6C</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021D7C6C loc_21D7C6C<span class="sy0">:</span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;@ CODE XREF<span class="sy0">:</span> WeatherMod<span class="sy0">+</span>Cj</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021D7C6C <span class="kw5">CMP</span> &nbsp; &nbsp; <span class="kw35">R1</span><span class="sy0">,</span> #<span class="nu0">0xA</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021D7C6E <span class="kw8">BNE</span> &nbsp; &nbsp; loc_21D7C8A</div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021D7C70 <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R0</span><span class="sy0">,</span> <span class="nu0">0x800</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021D7C74 <span class="kw7">BX</span> &nbsp; &nbsp; &nbsp;<span class="kw35">LR</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021D7C76 @ <span class="sy0">---------------------------------------------------------------------------</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021D7C76</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021D7C76 loc_21D7C76<span class="sy0">:</span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;@ CODE XREF<span class="sy0">:</span> WeatherMod<span class="sy0">+</span><span class="nu0">6</span>j</div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021D7C76 <span class="kw5">CMP</span> &nbsp; &nbsp; <span class="kw35">R1</span><span class="sy0">,</span> #<span class="nu0">9</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021D7C78 <span class="kw8">BNE</span> &nbsp; &nbsp; loc_21D7C80</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021D7C7A <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R0</span><span class="sy0">,</span> <span class="nu0">0x800</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021D7C7E <span class="kw7">BX</span> &nbsp; &nbsp; &nbsp;<span class="kw35">LR</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021D7C80 @ <span class="sy0">---------------------------------------------------------------------------</span></div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021D7C80</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021D7C80 loc_21D7C80<span class="sy0">:</span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;@ CODE XREF<span class="sy0">:</span> WeatherMod<span class="sy0">+</span><span class="nu0">20</span>j</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021D7C80 <span class="kw5">CMP</span> &nbsp; &nbsp; <span class="kw35">R1</span><span class="sy0">,</span> #<span class="nu0">0xA</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021D7C82 <span class="kw8">BNE</span> &nbsp; &nbsp; loc_21D7C8A</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021D7C84 <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R0</span><span class="sy0">,</span> <span class="nu0">0x1800</span></div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021D7C88 <span class="kw7">BX</span> &nbsp; &nbsp; &nbsp;<span class="kw35">LR</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021D7C8A @ <span class="sy0">---------------------------------------------------------------------------</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021D7C8A</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021D7C8A loc_21D7C8A<span class="sy0">:</span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;@ CODE XREF<span class="sy0">:</span> WeatherMod<span class="sy0">+</span><span class="nu0">8</span>j</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021D7C8A &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; @ WeatherMod<span class="sy0">+</span><span class="nu0">16</span>j <span class="sy0">...</span></div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021D7C8A <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R0</span><span class="sy0">,</span> <span class="nu0">0x1000</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021D7C8E <span class="kw7">BX</span> &nbsp; &nbsp; &nbsp;<span class="kw35">LR</span></div></li>
</ol>
</div>
<br />

<p>
Even though the weather modifier has its own set of triggers listed below, they never affect the actual value of the
modifier: a water move used during rain or a fire move used during intense sunlight will use 0x1800 as modifier, while a
fire move used during rain or a water move during intense sunlight will use 0x800.
</p>

<table class="sortable">
 <thead>
  <tr>
   <th width="110">Trigger address</th>
   <th>Trigger description</th>
  </tr>
 </thead>
	
 <tbody>
  <tr>
   <td>21d9850</td>
   <td>Cancel weather if any Pokémon on field has Air Lock or Cloud Nine.</td>
  </tr>
  <tr class="a">
   <td>21d9084</td>
   <td>Internal.</td>
  </tr>
 </tbody>
</table>

<h3><a name="crits">Critical hits</a></h3>

<table class="sortable">
 <thead>
  <tr>
   <th width="110">Trigger address</th>
   <th>Trigger description</th>
  </tr>
 </thead>
	
 <tbody>
  <tr>
   <td>21d9be8</td>
   <td>Super Luck: increase user's critical hit level by 1.</td>
  </tr>
  <tr class="a">
   <td>21d9bc4</td>
   <td>Battle Armor / Shell Armor: if the target has either of these abilities, bypass critical hit checks.</td>
  </tr>
  <tr>
   <td>21dae18</td>
   <td>Internal.</td>
  </tr>
  <tr class="a">
   <td>21de5fc</td>
   <td>Stick: if user is Farfetch'd and holds Stick, increase critical hit level by 2.</td>
  </tr>
  <tr>
   <td>21de5b8</td>
   <td>Lucky Punch: if user is Chansey and holds Lucky Punch, increase critical hit level by 2.</td>
  </tr>
  <tr class="a">
   <td>21de584</td>
   <td>Razor Claw: increase holder's critical hit level by 1.</td>
  </tr>
  <tr>
   <td>21e53b4</td>
   <td>Internal.</td>
  </tr>
  <tr class="a">
   <td>6899210</td>
   <td>Lucky Chant: if the user's party is protected by Lucky Chant, bypass critical hit checks.</td>
  </tr>
 </tbody>
</table>

<h3><a name="random">The random factor</a></h3>

<p>Provided the battle isn't rigged to always use minimum damage, the current damage value <i>D</i> is altered using a random number <i>0 &le; R &le; 15</i>:</p>
<pre>D' = (D * (100-R)) &divide; 100</pre>

<h3><a name="stab">STAB</a></h3>

<div class="arm listing">
<ol><li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C760C STAB<span class="sy0">:</span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; @ CODE XREF<span class="sy0">:</span> DamageCalc<span class="sy0">:</span>Bank_STABp</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C760C <span class="kw3">PUSH</span> &nbsp; &nbsp;<span class="br0">{</span><span class="kw35">R3</span><span class="sy0">-</span><span class="kw35">R7</span><span class="sy0">,</span><span class="kw35">LR</span><span class="br0">}</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C760E <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R7</span><span class="sy0">,</span> <span class="kw35">R1</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C7610 <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R5</span><span class="sy0">,</span> <span class="kw35">R0</span></div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021C7612 <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R0</span><span class="sy0">,</span> <span class="kw35">R7</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C7614 <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R1</span><span class="sy0">,</span> <span class="kw35">R2</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C7616 <span class="kw7">BL</span> &nbsp; &nbsp; &nbsp;IsMoveOfUserType</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C761A <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R6</span><span class="sy0">,</span> <span class="kw35">R0</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C761C <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R4</span><span class="sy0">,</span> #<span class="nu0">1</span></div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021C761E <span class="kw3">LDR</span> &nbsp; &nbsp; <span class="kw35">R0</span><span class="sy0">,</span> =<span class="nu0">0x3178</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C7620 <span class="kw5">LSLS</span> &nbsp; &nbsp;<span class="kw35">R4</span><span class="sy0">,</span> <span class="kw35">R4</span><span class="sy0">,</span> #<span class="nu0">0xC</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C7622 <span class="kw7">BL</span> &nbsp; &nbsp; &nbsp;AllocateVolatileVariables</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C7626 <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R0</span><span class="sy0">,</span> <span class="kw35">R7</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C7628 <span class="kw7">BL</span> &nbsp; &nbsp; &nbsp;Dereference25</div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021C762C <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R1</span><span class="sy0">,</span> <span class="kw35">R0</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C762E <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R0</span><span class="sy0">,</span> #<span class="nu0">2</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C7630 <span class="kw7">BL</span> &nbsp; &nbsp; &nbsp;StoreVolatileVariableFlag3e4</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C7634 <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R0</span><span class="sy0">,</span> #<span class="nu0">0x51</span> @ <span class="st0">'Q'</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C7636 <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R1</span><span class="sy0">,</span> <span class="kw35">R6</span></div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021C7638 <span class="kw7">BL</span> &nbsp; &nbsp; &nbsp;StoreVolatileVariableFlag3e1</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C763C <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R0</span><span class="sy0">,</span> <span class="kw35">R5</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C763E <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R1</span><span class="sy0">,</span> #<span class="nu0">0x40</span> @ <span class="st0">'@'</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C7640 <span class="kw7">BL</span> &nbsp; &nbsp; &nbsp;ApplyTriggers</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C7644 <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R0</span><span class="sy0">,</span> #<span class="nu0">0x51</span> @ <span class="st0">'Q'</span></div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021C7646 <span class="kw7">BL</span> &nbsp; &nbsp; &nbsp;ReadVolatileVariable</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C764A <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R1</span><span class="sy0">,</span> <span class="kw35">R0</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C764C <span class="kw8">BEQ</span> &nbsp; &nbsp; loc_21C7652</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C764E <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R4</span><span class="sy0">,</span> <span class="nu0">0x1800</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C7652</div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021C7652 loc_21C7652<span class="sy0">:</span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;@ CODE XREF<span class="sy0">:</span> STAB<span class="sy0">+</span><span class="nu0">40</span>j</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C7652 <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R0</span><span class="sy0">,</span> #<span class="nu0">0x44</span> @ <span class="st0">'D'</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C7654 <span class="kw7">BL</span> &nbsp; &nbsp; &nbsp;StoreVolatileVariableFlag3e4</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C7658 <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R0</span><span class="sy0">,</span> #<span class="nu0">0x35</span> @ <span class="st0">'5'</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C765A <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R1</span><span class="sy0">,</span> <span class="kw35">R4</span></div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021C765C <span class="kw7">BL</span> &nbsp; &nbsp; &nbsp;InitVolatileVariable</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C7660 <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R0</span><span class="sy0">,</span> <span class="kw35">R5</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C7662 <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R1</span><span class="sy0">,</span> #<span class="nu0">0x41</span> @ <span class="st0">'A'</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C7664 <span class="kw7">BL</span> &nbsp; &nbsp; &nbsp;ApplyTriggers</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C7668 <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R0</span><span class="sy0">,</span> #<span class="nu0">0x35</span> @ <span class="st0">'5'</span></div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021C766A <span class="kw7">BL</span> &nbsp; &nbsp; &nbsp;ReadVolatileVariable</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C766E <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R4</span><span class="sy0">,</span> <span class="kw35">R0</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C7670 <span class="kw3">LDR</span> &nbsp; &nbsp; <span class="kw35">R0</span><span class="sy0">,</span> =<span class="nu0">0x3189</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C7672 <span class="kw7">BL</span> &nbsp; &nbsp; &nbsp;FreeVolatileVariable</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C7676 <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R0</span><span class="sy0">,</span> <span class="kw35">R4</span></div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021C7678 <span class="kw3">POP</span> &nbsp; &nbsp; <span class="br0">{</span><span class="kw35">R3</span><span class="sy0">-</span><span class="kw35">R7</span><span class="sy0">,</span><span class="kw35">PC</span><span class="br0">}</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C7678 @ End of function STAB</div></li>
</ol>
</div><br />

<p>If the type of the move match one of its users', the STAB modifier is set to 0x1800. The only trigger for this modifier is listed below.</p>

<table class="sortable">
 <thead>
  <tr>
   <th width="110">Trigger address</th>
   <th>Trigger description</th>
  </tr>
 </thead>
	
 <tbody>
  <tr>
   <td>21D8C2D</td>
   <td>Adaptability: if the user has this ability and move matches one of the user's types, the initial value for the final modifier is set to 0x2000.</td>
  </tr>
 </tbody>
</table>

<h3><a name="type-eff">Type effectiveness</a></h3>

<div class="arm listing">
<ol><li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021D7A8C TypeEffectiveness<span class="sy0">:</span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;@ CODE XREF<span class="sy0">:</span> DamageCalc<span class="sy0">+</span>14Ap</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021D7A8C <span class="kw5">CMP</span> &nbsp; &nbsp; <span class="kw35">R1</span><span class="sy0">,</span> #<span class="nu0">5</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021D7A8E <span class="kw8">BHI</span> &nbsp; &nbsp; locret_21D7ABA</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021D7A90 <span class="kw5">ADDS</span> &nbsp; &nbsp;<span class="kw35">R1</span><span class="sy0">,</span> <span class="kw35">R1</span><span class="sy0">,</span> <span class="kw35">R1</span></div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021D7A92 <span class="kw1">ADD</span> &nbsp; &nbsp; <span class="kw35">R1</span><span class="sy0">,</span> <span class="kw35">PC</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021D7A94 <span class="kw3">LDRH</span> &nbsp; &nbsp;<span class="kw35">R1</span><span class="sy0">,</span> <span class="br0">[</span><span class="kw35">R1</span><span class="sy0">,</span>#<span class="nu0">6</span><span class="br0">]</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021D7A96 <span class="kw5">LSLS</span> &nbsp; &nbsp;<span class="kw35">R1</span><span class="sy0">,</span> <span class="kw35">R1</span><span class="sy0">,</span> #<span class="nu0">0x10</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021D7A98 <span class="kw5">ASRS</span> &nbsp; &nbsp;<span class="kw35">R1</span><span class="sy0">,</span> <span class="kw35">R1</span><span class="sy0">,</span> #<span class="nu0">0x10</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021D7A9A <span class="kw1">ADD</span> &nbsp; &nbsp; <span class="kw35">PC</span><span class="sy0">,</span> <span class="kw35">R1</span></div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021D7A9A @ <span class="sy0">---------------------------------------------------------------------------</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021D7A9C <span class="sy0">.</span>byte &nbsp;<span class="nu0">0xA</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021D7A9D <span class="sy0">.</span>byte &nbsp; &nbsp;<span class="nu0">0</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021D7A9E <span class="sy0">.</span>byte &nbsp;<span class="nu0">0xE</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021D7A9F <span class="sy0">.</span>byte &nbsp; &nbsp;<span class="nu0">0</span></div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021D7AA0 <span class="sy0">.</span>byte <span class="nu0">0x12</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021D7AA1 <span class="sy0">.</span>byte &nbsp; &nbsp;<span class="nu0">0</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021D7AA2 <span class="sy0">.</span>byte <span class="nu0">0x14</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021D7AA3 <span class="sy0">.</span>byte &nbsp; &nbsp;<span class="nu0">0</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021D7AA4 <span class="sy0">.</span>byte <span class="nu0">0x16</span></div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021D7AA5 <span class="sy0">.</span>byte &nbsp; &nbsp;<span class="nu0">0</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021D7AA6 <span class="sy0">.</span>byte <span class="nu0">0x1A</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021D7AA7 <span class="sy0">.</span>byte &nbsp; &nbsp;<span class="nu0">0</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021D7AA8 @ <span class="sy0">---------------------------------------------------------------------------</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021D7AA8 <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R0</span><span class="sy0">,</span> #<span class="nu0">0</span></div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021D7AAA <span class="kw7">BX</span> &nbsp; &nbsp; &nbsp;<span class="kw35">LR</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021D7AAC @ <span class="sy0">---------------------------------------------------------------------------</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021D7AAC <span class="kw5">LSRS</span> &nbsp; &nbsp;<span class="kw35">R0</span><span class="sy0">,</span> <span class="kw35">R0</span><span class="sy0">,</span> #<span class="nu0">2</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021D7AAE <span class="kw7">BX</span> &nbsp; &nbsp; &nbsp;<span class="kw35">LR</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021D7AB0 @ <span class="sy0">---------------------------------------------------------------------------</span></div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021D7AB0 <span class="kw5">LSRS</span> &nbsp; &nbsp;<span class="kw35">R0</span><span class="sy0">,</span> <span class="kw35">R0</span><span class="sy0">,</span> #<span class="nu0">1</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021D7AB2 <span class="kw7">BX</span> &nbsp; &nbsp; &nbsp;<span class="kw35">LR</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021D7AB4 @ <span class="sy0">---------------------------------------------------------------------------</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021D7AB4 <span class="kw5">LSLS</span> &nbsp; &nbsp;<span class="kw35">R0</span><span class="sy0">,</span> <span class="kw35">R0</span><span class="sy0">,</span> #<span class="nu0">1</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021D7AB6 <span class="kw7">BX</span> &nbsp; &nbsp; &nbsp;<span class="kw35">LR</span></div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021D7AB8 @ <span class="sy0">---------------------------------------------------------------------------</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021D7AB8 <span class="kw5">LSLS</span> &nbsp; &nbsp;<span class="kw35">R0</span><span class="sy0">,</span> <span class="kw35">R0</span><span class="sy0">,</span> #<span class="nu0">2</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021D7ABA</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021D7ABA locret_21D7ABA<span class="sy0">:</span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; @ CODE XREF<span class="sy0">:</span> TypeEffectiveness<span class="sy0">+</span><span class="nu0">2</span>j</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021D7ABA <span class="kw7">BX</span> &nbsp; &nbsp; &nbsp;<span class="kw35">LR</span></div></li>
</ol>
</div><br />

<p>Type effectiveness doesn't use a modifier but a simple left (respectively right) shift of one for a simple and two
for a double weakness (respectively resistance), in other words an unrounded division or multiplication by 2 or 4./p>

<h3><a name="burn">Effect of a burn</a></h3>

<p>The effect of a burn is directly taken into account in the damage formula. First, the game checks if the attack is
 physical, then if the user is burned, and finally if its ability is different than Guts. If all conditions are satisfied,
 the current damage is divided by 2 with no rounding.</p>

<h3><a name="final">Final modifier</a></h3>

The final modifier is decided by calling the appropriate triggers, which are listed below. Be sure to chain the modifiers in the order they are listed in.

<table class="sortable">
 <thead>
  <tr>
   <th width="110">Trigger address</th>
   <th width="90">Modifier</th>
   <th>Trigger description</th>
  </tr>
 </thead>
	
 <tbody>
  <tr>
   <td>6898E29</td>
   <td>Variable</td>
   <td>If the target's side is affected by Reflect, the move used was physical, the user's ability isn't Inflitrator and the critical hit flag isn't set.
    <br />The value of the modificator is 0xA8F if there is more than one Pokémon per side of the field and 0x800 otherwise.</td>
  </tr>
  <tr class="a">
   <td>6898E45</td>
   <td>Variable</td>
   <td>Same as above with Light Screen and special moves.</td>
  </tr>
  <tr>
   <td>21DC125</td>
   <td>0x800</td>
   <td>If the target's ability is Multiscale and the target is at full health.</td>
  </tr>
  <tr class="a">
   <td>21D8B3D</td>
   <td>0x2000</td>
   <td>If the user's ability is Tinted Lens and the move wasn't very effective.</td>
  </tr>
  <tr>
   <td>21DC15D</td>
   <td>0xC00</td>
   <td>If one of the target's allies' ability is Friend Guard.</td>
  </tr>
  <tr class="a">
   <td>21D8BA5</td>
   <td>0x1800</td>
   <td>If user has ability Sniper and move was a critical hit.</td>
  </tr>
  <tr>
   <td>21D8B71</td>
   <td>0xC00</td>
   <td>If the target's ability is Solid Rock or Filter and the move was super effective.</td>
  </tr>
  <tr class="a">
   <td>21DBA95</td>
   <td></td>
   <td>Internal.</td>
  </tr>
  <tr>
   <td>21DEC91</td>
   <td>Variable</td>
   <td>If the user is holding the item Metronome. If n is the number of time the current move was used
   successfully and successively, the value of the modifier is 0x1000+n*0x333 if n&le;4 and 0x2000 otherwise.</td>
  </tr>
  <tr class="a">
   <td>21DEBD5</td>
   <td>0x1333</td>
   <td>If the user is holding an expert belt and the move was super effective.</td>
  </tr>
  <tr>
   <td>21DEC65</td>
   <td>0x14CC</td>
   <td>If the user is holding a Life Orb.</td>
  </tr>
  <tr class="a">
   <td>21DDB85</td>
   <td>0x800</td>
   <td>If the target is holding a damage lowering berry of the attack's type. There is one trigger for each type of berry, the others are at:<br : />
    21DDC05, 21DDAE5, 21DDB05, 21DDB25, 21DDB45, 21DDB65, 21DDBA5, 21DDBC5, 21DDBE5, 21DDC25, 21DDC45, 21DDC65, 21DDC85, 21DDCA5, 21DDCC5 and 21DDCE5.</td>
  </tr>
  <tr>
   <td>21E3A25</td>
   <td>0x2000</td>
   <td>If move is Stomp and target has used Minimize.</td>
  </tr>
  <tr class="a">
   <td>21E316D</td>
   <td>0x2000</td>
   <td>If move is Earthquake and target is in the charging turn of Dig.</td>
  </tr>
  <tr>
   <td>21E39E1</td>
   <td>0x2000</td>
   <td>If move is Surf and target is in the charging turn of Dive.</td>
  </tr>
  <tr class="a">
   <td>21E1455</td>
   <td>0x2000</td>
   <td>If move is Steamroller and target has used Minimize.</td>
  </tr>
 </tbody>
</table>

<h2><a name="base-power">The base power</a></h2>

There are two separate sets of triggers for the base power of moves. The first is mainly used for moves
with a variable base power, while the second contains the various modifiers for base power.

<h3><a name="variable-bp">Triggers for variable base power</a></h3>

<table class="sortable">
 <thead>
  <tr>
   <th width="110">Trigger address</th>
   <th width="275">Summary of BP formula</th>
   <th>Move and remarks.</th>
  </tr>
 </thead>
	
 <tbody>
  <tr>
   <td>21d88cc</td>
   <td></td>
   <td>Internal.</td>
  </tr>
  <tr class="a">
   <td>21e2aec</td>
   <td>((255 - Happiness) * 10) &divide; 25</td>
   <td>Frustration: if result is 0 add 1.</td>
  </tr>
  <tr>
   <td>21e2968</td>
   <td>50, 100</td>
   <td>Payback: BP is doubled to 100 if target has moved this turn, 50 otherwise.</td>
  </tr>
  <tr class="a">
   <td>21e2aa0</td>
   <td>(Happiness * 10) &divide; 25</td>
   <td>Return: if result is 0 add 1.</td>
  </tr>
  <tr>
   <td>21e7184</td>
   <td>150, 120, 80, 60</td>
   <td>Electro Ball: Let S = UserModSpeed &divide; TargetModSpeed. BP = {150: R &ge; 4, 120: 3 &le; R &lt; 4, 80: 2 &le; R &lt; 3, 60: otherwise};</td>
  </tr>
  <tr class="a">
   <td>21e283c</td>
   <td>60, 120</td>
   <td>Avalanche: BP is doubled to 120 if the target has inflicted non-effect damage to the user this turn.</td>
  </tr>
  <tr>
   <td>21e27d0</td>
   <td>min(150, 25 * TargetSpd &divide; UserSpd)</td>
   <td>Gyro Ball.</td>
  </tr>
  <tr class="a">
   <td>21e29a8</td>
   <td>(150 * CurrentHP) &divide; MaxHP</td>
   <td>Eruption, Water Spout: if result is 0 set BP to 1.</td>
  </tr>
  <tr>
   <td>21e2de0</td>
   <td>min(120, 60 + 20 * statup_total)</td>
   <td>Punishment: statup_total is the sum of the target's stat levels that are &ge; 0, including accuracy and evasion.</td>
  </tr>
  <tr class="a">
   <td>21e2e48</td>
   <td>20 * 2^(use_counter)</td>
   <td>Fury Cutter: use_counter counts successive and successful previous uses up to a maximum of 3.</td>
  </tr>
  <tr>
   <td>21e2ef4</td>
   <td>20, 40, 60, 80, 100, 120</td>
   <td>Low Kick, Grass Knot: let W be the final weight after modifiers. If W &ge; 200, BP is 120, else if W &ge; 100, BP is 100, else if W &ge; 50, BP is 80, else if W &ge; 25, BP is 60, else BP is 40.</td>
  </tr>
  <tr class="a">
   <td>21e7204</td>
   <td>40, 80, 120, 160, 200</td>
   <td>Echoed Voice: BP increases in the listed order every turn this move is used successively on the user's side of the field.</td>
  </tr>
  <tr>
   <td>21e702c</td>
   <td>50, 100</td>
   <td>Hex: BP is doubled to 100 if target has a status problem.</td>
  </tr>
  <tr class="a">
   <td>21e2a08</td>
   <td>round(120 * TargetHP%) &divide; 100</td>
   <td>Wring Out, Crush Claw: TargetHP% is computed by a fixed point division using 0x1000 as the scaling factor.</td>
  </tr>
  <tr>
   <td>21e2eb0</td>
   <td>50, 100</td>
   <td>Assurance: BP is doubled to 100 if target has already been inflicted non-effect damage this turn.</td>
  </tr>
  <tr class="a">
   <td>21e7104</td>
   <td>120, 100, 80, 60, 40</td>
   <td>Heavy Slam, Heat Crash: let W = UserModWeight &divide; TargetModWeight. BP = {120: W &ge; 5, 100: 4 &le; W &lt; 5, 80: 3 &le; W &lt; 4, 60: 2 &le; W &lt; 3, 40: W &lt; 2}.</td>
  </tr>
  <tr>
   <td>21e70a0</td>
   <td>20 + 20 * statups</td>
   <td>Stored Power: statups is the sum of all positive stat increases, including accuracy and evasion.</td>
  </tr>
  <tr class="a">
   <td>21e706c</td>
   <td>55, 110</td>
   <td>Acrobatics: BP is doubled to 110 if user has no held item.</td>
  </tr>
  <tr>
   <td>21e28b8</td>
   <td>P = (48 * CurrentHP) &divide; MaxHP</td>
   <td>Flail, Reversal: 200 if P &le; 1, 150 if 2 &le; P &le; 4, 100 if 5 &le; P &le; 9, 80 if 10 &le; P &le; 16, 40 if 17 &le; P &le; 32, 20 otherwise.</td>
  </tr>
  <tr class="a">
   <td>21e2d7c</td>
   <td>40, 50, 60, 80, 200</td>
   <td>Trump Card: listed BP correspond to decreasing PP (if PP is &ge; 5 or this move was called by another move BP is 40).</td>
  </tr>
  <tr>
   <td>21e7dd0</td>
   <td>60, 120</td>
   <td>Round: BP is doubled to 120 if used in direct succession of an ally.</td>
  </tr>
  <tr class="a">
   <td>21e2788</td>
   <td>10, 20, 30</td>
   <td>Triple Kick: BP is listed for the successive hits.</td>
  </tr>
  <tr>
   <td>21e2b38</td>
   <td>60, 120</td>
   <td>Wake-Up Slap: BP is doubled to 120 if target is asleep.</td>
  </tr>
  <tr class="a">
   <td>21e2bd4</td>
   <td>60, 120</td>
   <td>SmellingSalt: BP is doubled to 120 is target is paralyzed.</td>
  </tr>
  <tr>
   <td>21e2fd0</td>
   <td>50, 100</td>
   <td>Weather Ball: BP is doubled to 100 in any non-default weather.</td>
  </tr>
  <tr class="a">
   <td>21e302c</td>
   <td>40, 80</td>
   <td>Gust, Twister: BP is doubled to 80 is target is in the charging turn of Bounce, Fly or Sky Drop.</td>
  </tr>
  <tr>
   <td>21e6074</td>
   <td>CurrentPartyMemberAttack &divide; 10 + 5</td>
   <td>Beat Up: this move attacks once for every non fainted member in the user's party, including the user.</td>
  </tr>
  <tr class="a">
   <td>21e3318</td>
   <td>30 + (40 * sum(((IV[i]&gt;&gt;1)&1)&lt;&lt;i)) &divide; 63</td>
   <td>Hidden Power: IV are indexed from 0 and listed as HP, At, Df, Sp, SA, SD.</td>
  </tr>
  <tr>
   <td>21e17d0</td>
   <td>100 * stockpile</td>
   <td>Spit Up: stockpile is the stockpile counter ranging from 0 to 3.</td>
  </tr>
  <tr class="a">
   <td>21e1dbc</td>
   <td>40, 80</td>
   <td>Pursuit: BP is doubled to 80 if target is switching out.</td>
  </tr>
  <tr>
   <td>21e2d40</td>
   <td>40, 80 or 120</td>
   <td>Present: let 0 &le; r &lt; 80 be a random number. If r &lt 40, BP is 40, else if r &lt 70, BP is 80, otherwise BP is 120.</td>
  </tr>
  <tr class="a">
   <td>21e33dc</td>
   <td>Variable</td>
   <td>Natural Gift: base power and type depend on held berry. See 2021030 and 20210E4 for corresponding tables.</td>
  </tr>
  <tr>
   <td>21e398c</td>
   <td>10 + 20 * factor</td>
   <td>Magnitude: let R = rand(100), factor = {0: R &lt; 5, 1: 5 &le; R &lt; 16, 2: 16 &le; R &lt; 35, 3: 35 &le; R &lt; 65, 4: 65 &le; R &lt; 85, 5: 85 &le; R &lt; 95, 6: R &ge; 95}.</td>
  </tr>
  <tr class="a">
   <td>21e2720</td>
   <td>30 * 2 ^ (use_counter + defense_curl)</td>
   <td>Rollout: use_counter counts successive and successful previous uses up to a maximum of 5, defense_curl is 1 if user used Defense Curl previously on field, 0 otherwise.</td>
  </tr>
  <tr>
   <td>21e5d44</td>
   <td>Variable</td>
   <td>Fling: base power depends on the held item. See 21D807C for table of items.</td>
  </tr>
  <tr class="a">
   <td>21e84b8</td>
   <td>150</td>
   <td>Grass/Fire/Water Pledge: if a slower ally used a different Pledge move this turn, it will skip its turn and this move's base power will be set to 150.</td>
  </tr>
 </tbody>
</table>

<h3><a name="bp-mods">Modifiers for the base power</a></h3>

<table class="sortable">
 <thead>
  <tr>
   <th width="110">Trigger address</th>
   <th width="90">Modifier</th>
   <th>Trigger description</th>
  </tr>
 </thead>
	
 <tbody>
  <tr>
   <td>21d9108</td>
   <td>0x1800</td>
   <td>If user has ability Technician and move's base power is &le;60.</td>
  </tr>
  <tr class="a">
   <td>21dc27c</td>
   <td>0x1800</td>
   <td>If user has ability Flare Boost, is burned and uses a special move.</td>
  </tr>
  <tr>
   <td>21dc6c0</td>
   <td>0x14CD</td>
   <td>If user has ability Analytic, move isn't Future Sight or Doom Desire and target has already moved this turn.</td>
  </tr>
  <tr class="a">
   <td>21d9174</td>
   <td>0x1333</td>
   <td>If user has ability Reckless and move has recoil or is either Jump Kick or Hi Jump Kick.</td>
  </tr>
  <tr>
   <td>21d9138</td>
   <td>0x1333</td>
   <td>If the user has ability Iron Fist and move has the "Punching move" (0x7) flag set.</td>
  </tr>
  <tr class="a">
   <td>21dc238</td>
   <td>0x1800</td>
   <td>If user has ability Toxic Boost, is poisoned and move is physical.</td>
  </tr>
  <tr>
   <td>21d9090</td>
   <td>Variable</td>
   <td>If user has ability Rivalry. The value of the modifier is 0x1000 if either the user or target is genderless,
   0x1400 if the user and target are of the same gender and 0xC00 otherwise.</td>
  </tr>
  <tr class="a">
   <td>21dc718</td>
   <td>0x14CD</td>
   <td>If user has ability Sand Force and move is Rock, Ground or Steel type.</td>
  </tr>
  <tr>
   <td>21da864</td>
   <td>0x800</td>
   <td>If target has ability Heatproof and move is Fire type.</td>
  </tr>
  <tr class="a">
   <td>21daa90</td>
   <td>0x1400</td>
   <td>If target has ability Dry Skin and move is Fire type.</td>
  </tr>
  <tr>
   <td>21dbf48</td>
   <td>0x14CD</td>
   <td>If the user has ability Sheer Force and move has a flag (0xA) set.</td>
  </tr>
  <tr class="a">
   <td>21d9dc4</td>
   <td></td>
   <td>Internal.</td>
  </tr>
  <tr>
   <td>Multiple</td>
   <td>0x1333</td>
   <td>Type boosting items, plates, incenses. All are wrappers for the 21DF95C trigger. List of locations:<br />
    21df7a8, 21df878, 21df760, 21df748, 21df778, 21df7c0, 21df860, 21df890, 21df730, 21df908, 21df950, 21df790,
    21df7d8, 21df7f0, 21df808, 21df718, 21df8c0, 21df938, 21df920, 21df8d8, 21df8a8.
   </td>
  </tr>
  <tr class="a">
   <td>21de6ec</td>
   <td>0x1199</td>
   <td>If user holds a Muscle Band and move is phyisical.</td>
  </tr>
  <tr>
   <td>21df994</td>
   <td>0x1333</td>
   <td>If user is Palkia, holds the Lustrous Orb and move is Water or Dragon type.</td>
  </tr>
  <tr class="a">
   <td>21de72c</td>
   <td>0x1199</td>
   <td>If user holds Wise Glasses and move is special.</td>
  </tr>
  <tr>
   <td>21df458</td>
   <td>0x1333</td>
   <td>If user is Giratina, holds the Griseous Orb and move is Dragon or Ghost type.</td>
  </tr>
  <tr class="a">
   <td>21df8f0</td>
   <td>0x1333</td>
   <td>If user holds Odd Incense and move is Psychic type.</td>
  </tr>
  <tr>
   <td>21df9e8</td>
   <td>0x1333</td>
   <td>If user is Dialga, holds the Adamant Orb and move is Steel or Dragon type.</td>
  </tr>
  <tr class="a">
   <td>21e01e4</td>
   <td>0x1800</td>
   <td>If user holds a Normal Gem and move is normal type. Similar triggers for the other types are at:<br />
   21DFF14, 21DFF40, 21DFF6C, 21DFF98, 21DFFC4, 21DFFF0, 21E001C, 21E0048, 21E0074, 21E00A0, 21E00CC, 21E00F8, 21E0124, 21E0150, 21E017C, 21E01A8</td>
  </tr>
  <tr>
   <td>21e2928</td>
   <td>0x2000</td>
   <td>If move is Facade and user is either paralyzed, poisoned or burned.</td>
  </tr>
  <tr class="a">
   <td>21e2a58</td>
   <td>0x2000</td>
   <td>If move is Brine and target's HP is &le; 50%.</td>
  </tr>
  <tr>
   <td>21e6fe8</td>
   <td>0x2000</td>
   <td>If move is Venoshock and target is poisoned.</td>
  </tr>
  <tr class="a">
   <td>21e729c</td>
   <td>0x2000</td>
   <td>If move is Retaliate and a Pokémon from the target's party fainted on the previous turn.</td>
  </tr>
  <tr>
   <td>21e8330</td>
   <td>0x2000</td>
   <td>If move is either Fusion Bolt or Fusion Flare and the previously used move was respectively Fusion Flare or Fusion Bolt.</td>
  </tr>
  <tr class="a">
   <td>21e6f34</td>
   <td>0x1800</td>
   <td>If move was called using Me First.</td>
  </tr>
  <tr>
   <td>21e64a0</td>
   <td>0x800</td>
   <td>If move is SolarBeam in non-sunny, non-default weather.</td>
  </tr>
  <tr class="a">
   <td>21e1f38</td>
   <td>0x2000</td>
   <td>If user used Charge the previous turn and move is Electric type.</td>
  </tr>
  <tr>
   <td>21e5ff0</td>
   <td>0x1800</td>
   <td>If user has been the target of Helping Hand this turn.</td>
  </tr>
  <tr class="a">
   <td>6898158</td>
   <td>0x548</td>
   <td>If Water Sport was used by any Pokémon still on the field and move is Fire type.</td>
  </tr>
  <tr>
   <td>6898110</td>
   <td>0x548</td>
   <td>If Mud Sport was used by any Pokémon still on the field and move is Electric type.</td>
  </tr>
 </tbody>
</table>

<h2><a name="attack">User attack stat</a></h2>

<div class="arm listing">
<ol><li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C7394 BaseAttackMods<span class="sy0">:</span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; @ CODE XREF<span class="sy0">:</span> DamageCalc<span class="sy0">+</span>9Ep</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C7394 <span class="kw3">PUSH</span> &nbsp; &nbsp;<span class="br0">{</span><span class="kw35">R3</span><span class="sy0">-</span><span class="kw35">R7</span><span class="sy0">,</span><span class="kw35">LR</span><span class="br0">}</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C7396 <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R5</span><span class="sy0">,</span> <span class="kw35">R3</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C7398 <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R7</span><span class="sy0">,</span> <span class="kw35">R0</span></div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021C739A <span class="kw3">LDRH</span> &nbsp; &nbsp;<span class="kw35">R0</span><span class="sy0">,</span> <span class="br0">[</span><span class="kw35">R5</span><span class="br0">]</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C739C <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R6</span><span class="sy0">,</span> <span class="kw35">R1</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C739E <span class="kw3">STR</span> &nbsp; &nbsp; <span class="kw35">R2</span><span class="sy0">,</span> <span class="br0">[</span><span class="kw35">SP</span><span class="br0">]</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C73A0 <span class="kw7">BL</span> &nbsp; &nbsp; &nbsp;GetMoveCategory</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C73A4 <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R4</span><span class="sy0">,</span> #<span class="nu0">0xA</span></div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021C73A6 <span class="kw5">CMP</span> &nbsp; &nbsp; <span class="kw35">R0</span><span class="sy0">,</span> #<span class="nu0">2</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C73A8 <span class="kw8">BEQ</span> &nbsp; &nbsp; loc_21C73AC</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C73AA <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R4</span><span class="sy0">,</span> #<span class="nu0">8</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C73AC</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C73AC loc_21C73AC<span class="sy0">:</span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;@ CODE XREF<span class="sy0">:</span> BaseAttackMods<span class="sy0">+</span><span class="nu0">14</span>j</div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021C73AC <span class="kw3">LDR</span> &nbsp; &nbsp; <span class="kw35">R0</span><span class="sy0">,</span> =<span class="nu0">0x30FE</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C73AE <span class="kw7">BL</span> &nbsp; &nbsp; &nbsp;AllocateVolatileVariables</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C73B2 <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R0</span><span class="sy0">,</span> <span class="kw35">R6</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C73B4 <span class="kw7">BL</span> &nbsp; &nbsp; &nbsp;GetPkmId</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C73B8 <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R1</span><span class="sy0">,</span> <span class="kw35">R0</span></div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021C73BA <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R0</span><span class="sy0">,</span> #<span class="nu0">3</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C73BC <span class="kw7">BL</span> &nbsp; &nbsp; &nbsp;StoreVolatileVariableFlag3e4</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C73C0 <span class="kw3">LDR</span> &nbsp; &nbsp; <span class="kw35">R0</span><span class="sy0">,</span> <span class="br0">[</span><span class="kw35">SP</span><span class="br0">]</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C73C2 <span class="kw7">BL</span> &nbsp; &nbsp; &nbsp;GetPkmId</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C73C6 <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R1</span><span class="sy0">,</span> <span class="kw35">R0</span></div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021C73C8 <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R0</span><span class="sy0">,</span> #<span class="nu0">4</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C73CA <span class="kw7">BL</span> &nbsp; &nbsp; &nbsp;StoreVolatileVariableFlag3e4</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C73CE <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R0</span><span class="sy0">,</span> #<span class="nu0">0x3B</span> @ <span class="st0">';'</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C73D0 <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R1</span><span class="sy0">,</span> #<span class="nu0">0x1F</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C73D2 <span class="kw7">BL</span> &nbsp; &nbsp; &nbsp;InitVolatileVariable</div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021C73D6 <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R0</span><span class="sy0">,</span> #<span class="nu0">0x51</span> @ <span class="st0">'Q'</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C73D8 <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R1</span><span class="sy0">,</span> #<span class="nu0">0</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C73DA <span class="kw7">BL</span> &nbsp; &nbsp; &nbsp;InitVolatileVariable</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C73DE <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R0</span><span class="sy0">,</span> <span class="kw35">R7</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C73E0 <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R1</span><span class="sy0">,</span> #<span class="nu0">0x39</span> @ <span class="st0">'9'</span></div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021C73E2 <span class="kw7">BL</span> &nbsp; &nbsp; &nbsp;ApplyTriggers</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C73E6 <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R0</span><span class="sy0">,</span> #<span class="nu0">0x3B</span> @ <span class="st0">';'</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C73E8 <span class="kw7">BL</span> &nbsp; &nbsp; &nbsp;ReadVolatileVariable</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C73EC <span class="kw5">LSLS</span> &nbsp; &nbsp;<span class="kw35">R0</span><span class="sy0">,</span> <span class="kw35">R0</span><span class="sy0">,</span> #<span class="nu0">0x18</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C73EE <span class="kw5">LSRS</span> &nbsp; &nbsp;<span class="kw35">R1</span><span class="sy0">,</span> <span class="kw35">R0</span><span class="sy0">,</span> #<span class="nu0">0x18</span></div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021C73F0 <span class="kw5">CMP</span> &nbsp; &nbsp; <span class="kw35">R1</span><span class="sy0">,</span> #<span class="nu0">0x1F</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C73F2 <span class="kw8">BEQ</span> &nbsp; &nbsp; loc_21C73FC</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C73F4 <span class="kw3">LDR</span> &nbsp; &nbsp; <span class="kw35">R0</span><span class="sy0">,</span> <span class="br0">[</span><span class="kw35">R7</span><span class="sy0">,</span>#<span class="nu0">8</span><span class="br0">]</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C73F6 <span class="kw7">BL</span> &nbsp; &nbsp; &nbsp;GetPartyPkm</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C73FA <span class="kw5">ADDS</span> &nbsp; &nbsp;<span class="kw35">R6</span><span class="sy0">,</span> <span class="kw35">R0</span><span class="sy0">,</span> #<span class="nu0">0</span></div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021C73FC</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C73FC loc_21C73FC<span class="sy0">:</span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;@ CODE XREF<span class="sy0">:</span> BaseAttackMods<span class="sy0">+</span>5Ej</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C73FC <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R0</span><span class="sy0">,</span> #<span class="nu0">0x51</span> @ <span class="st0">'Q'</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C73FE <span class="kw7">BL</span> &nbsp; &nbsp; &nbsp;ReadVolatileVariable</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C7402 <span class="kw5">CMP</span> &nbsp; &nbsp; <span class="kw35">R0</span><span class="sy0">,</span> #<span class="nu0">0</span></div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021C7404 <span class="kw8">BEQ</span> &nbsp; &nbsp; loc_21C7410</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C7406 <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R0</span><span class="sy0">,</span> <span class="kw35">R6</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C7408 <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R1</span><span class="sy0">,</span> <span class="kw35">R4</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C740A <span class="kw7">BL</span> &nbsp; &nbsp; &nbsp;RawBpkmStat</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C740E <span class="kw7">B</span> &nbsp; &nbsp; &nbsp; loc_21C7428</div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021C7410 @ <span class="sy0">---------------------------------------------------------------------------</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C7410</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C7410 loc_21C7410<span class="sy0">:</span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;@ CODE XREF<span class="sy0">:</span> BaseAttackMods<span class="sy0">+</span><span class="nu0">70</span>j</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C7410 <span class="kw3">LDR</span> &nbsp; &nbsp; <span class="kw35">R0</span><span class="sy0">,</span> <span class="br0">[</span><span class="kw35">SP</span><span class="sy0">,</span>#<span class="nu0">0x18</span><span class="br0">]</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C7412 <span class="kw5">CMP</span> &nbsp; &nbsp; <span class="kw35">R0</span><span class="sy0">,</span> #<span class="nu0">0</span></div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021C7414 <span class="kw8">BEQ</span> &nbsp; &nbsp; loc_21C7420</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C7416 <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R0</span><span class="sy0">,</span> <span class="kw35">R6</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C7418 <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R1</span><span class="sy0">,</span> <span class="kw35">R4</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C741A <span class="kw7">BL</span> &nbsp; &nbsp; &nbsp;CritAtkDefLevel</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C741E <span class="kw7">B</span> &nbsp; &nbsp; &nbsp; loc_21C7428</div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021C7420 @ <span class="sy0">---------------------------------------------------------------------------</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C7420</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C7420 loc_21C7420<span class="sy0">:</span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;@ CODE XREF<span class="sy0">:</span> BaseAttackMods<span class="sy0">+</span><span class="nu0">80</span>j</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C7420 <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R0</span><span class="sy0">,</span> <span class="kw35">R6</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C7422 <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R1</span><span class="sy0">,</span> <span class="kw35">R4</span></div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021C7424 <span class="kw7">BL</span> &nbsp; &nbsp; &nbsp;GetBpkmStat</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C7428</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C7428 loc_21C7428<span class="sy0">:</span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;@ CODE XREF<span class="sy0">:</span> BaseAttackMods<span class="sy0">+</span>7Aj</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C7428 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; @ BaseAttackMods<span class="sy0">+</span>8Aj</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C7428 <span class="kw5">LSLS</span> &nbsp; &nbsp;<span class="kw35">R0</span><span class="sy0">,</span> <span class="kw35">R0</span><span class="sy0">,</span> #<span class="nu0">0x10</span></div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021C742A <span class="kw5">LSRS</span> &nbsp; &nbsp;<span class="kw35">R4</span><span class="sy0">,</span> <span class="kw35">R0</span><span class="sy0">,</span> #<span class="nu0">0x10</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C742C <span class="kw3">LDRH</span> &nbsp; &nbsp;<span class="kw35">R1</span><span class="sy0">,</span> <span class="br0">[</span><span class="kw35">R5</span><span class="br0">]</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C742E <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R0</span><span class="sy0">,</span> #<span class="nu0">0x12</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C7430 <span class="kw7">BL</span> &nbsp; &nbsp; &nbsp;StoreVolatileVariableFlag3e4</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C7434 <span class="kw3">LDRB</span> &nbsp; &nbsp;<span class="kw35">R1</span><span class="sy0">,</span> <span class="br0">[</span><span class="kw35">R5</span><span class="sy0">,</span>#<span class="nu0">6</span><span class="br0">]</span></div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021C7436 <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R0</span><span class="sy0">,</span> #<span class="nu0">0x16</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C7438 <span class="kw7">BL</span> &nbsp; &nbsp; &nbsp;StoreVolatileVariableFlag3e4</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C743C <span class="kw3">LDR</span> &nbsp; &nbsp; <span class="kw35">R1</span><span class="sy0">,</span> <span class="br0">[</span><span class="kw35">R5</span><span class="sy0">,</span>#<span class="nu0">8</span><span class="br0">]</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C743E <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R0</span><span class="sy0">,</span> #<span class="nu0">0x1A</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C7440 <span class="kw7">BL</span> &nbsp; &nbsp; &nbsp;StoreVolatileVariableFlag3e4</div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021C7444 <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R0</span><span class="sy0">,</span> #<span class="nu0">0x33</span> @ <span class="st0">'3'</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C7446 <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R1</span><span class="sy0">,</span> <span class="kw35">R4</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C7448 <span class="kw7">BL</span> &nbsp; &nbsp; &nbsp;InitVolatileVariable</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C744C <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R1</span><span class="sy0">,</span> <span class="nu0">0x1000</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C7450 <span class="kw3">LDR</span> &nbsp; &nbsp; <span class="kw35">R2</span><span class="sy0">,</span> =<span class="nu0">0x19A</span></div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021C7452 <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R0</span><span class="sy0">,</span> #<span class="nu0">0x35</span> @ <span class="st0">'5'</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C7454 <span class="kw5">LSLS</span> &nbsp; &nbsp;<span class="kw35">R3</span><span class="sy0">,</span> <span class="kw35">R1</span><span class="sy0">,</span> #<span class="nu0">5</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C7456 <span class="kw7">BL</span> &nbsp; &nbsp; &nbsp;StoreVolatileVariableFlag3e3</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C745A <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R0</span><span class="sy0">,</span> <span class="kw35">R7</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C745C <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R1</span><span class="sy0">,</span> #<span class="nu0">0x3B</span> @ <span class="st0">';'</span></div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021C745E <span class="kw7">BL</span> &nbsp; &nbsp; &nbsp;ApplyTriggers</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C7462 <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R0</span><span class="sy0">,</span> #<span class="nu0">0x33</span> @ <span class="st0">'3'</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C7464 <span class="kw7">BL</span> &nbsp; &nbsp; &nbsp;ReadVolatileVariable</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C7468 <span class="kw5">LSLS</span> &nbsp; &nbsp;<span class="kw35">R0</span><span class="sy0">,</span> <span class="kw35">R0</span><span class="sy0">,</span> #<span class="nu0">0x10</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C746A <span class="kw5">LSRS</span> &nbsp; &nbsp;<span class="kw35">R4</span><span class="sy0">,</span> <span class="kw35">R0</span><span class="sy0">,</span> #<span class="nu0">0x10</span></div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021C746C <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R0</span><span class="sy0">,</span> #<span class="nu0">0x35</span> @ <span class="st0">'5'</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C746E <span class="kw7">BL</span> &nbsp; &nbsp; &nbsp;ReadVolatileVariable</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C7472 <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R1</span><span class="sy0">,</span> <span class="kw35">R0</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C7474 <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R0</span><span class="sy0">,</span> <span class="kw35">R4</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C7476 <span class="kw7">BL</span> &nbsp; &nbsp; &nbsp;ApplyMod</div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021C747A <span class="kw5">LSLS</span> &nbsp; &nbsp;<span class="kw35">R0</span><span class="sy0">,</span> <span class="kw35">R0</span><span class="sy0">,</span> #<span class="nu0">0x10</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C747C <span class="kw5">LSRS</span> &nbsp; &nbsp;<span class="kw35">R4</span><span class="sy0">,</span> <span class="kw35">R0</span><span class="sy0">,</span> #<span class="nu0">0x10</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C747E <span class="kw3">LDR</span> &nbsp; &nbsp; <span class="kw35">R0</span><span class="sy0">,</span> =<span class="nu0">0x3123</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C7480 <span class="kw7">BL</span> &nbsp; &nbsp; &nbsp;FreeVolatileVariable</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C7484 <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R0</span><span class="sy0">,</span> <span class="kw35">R4</span></div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021C7486 <span class="kw3">POP</span> &nbsp; &nbsp; <span class="br0">{</span><span class="kw35">R3</span><span class="sy0">-</span><span class="kw35">R7</span><span class="sy0">,</span><span class="kw35">PC</span><span class="br0">}</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C7486 @ End of function BaseAttackMods</div></li>
</ol>
</div>

<h3><a name="attack-base">Base value</a></h3>

<p>
The first step of computing the attack stat is to decide whether the attack or special attack stat should be used, and
on which Pokémon. By default, the user's attack is used if the move is physical and the special attack otherwise but
this behavior can be altered by the following triggers:
</p>

<table class="sortable">
 <thead>
  <tr>
   <th width="110">Trigger address</th>
   <th>Trigger description</th>
  </tr>
 </thead>
	
 <tbody>
  <tr>
   <td>21da828</td>
   <td>Unaware: if target has ability Unaware do not apply any attack level boosts.</td>
  </tr>
  <tr class="a">
   <td>21d8db0</td>
   <td>Internal.</td>
  </tr>
  <tr>
   <td>21e7320</td>
   <td>Foul Play: use the target's base attack stat instead of the user's.</td>
  </tr>
  <tr class="a">
   <td>21e39b0</td>
   <td>Internal.</td>
  </tr>
 </tbody>
</table>

<h3><a name="boost-level">Boost level</a></h3>

Once the base stat is decided, the stat boost level is applied:
<ol>
 <li>If a trigger decided to skip stat boosts, use the base stat.</li>
 <li>If the hit was critical and the boost level is negative, use the base stat.</li>
 <li>Otherwise, apply the factor corresponding to the boost level according to the table below
  (multiply stat by the dividend first then use unrounded division on divisor).</li>
</ol>

<table class="sortable">
	<thead>
		<tr>
			<th>Stat boost level</th>
			<th>Multiplier</th>
			<th>Decimal Approximate</th>
		</tr>
	</thead>
	<tbody>
		<tr><td>-6</td><td>2/8</td><td>0.25</td></tr>
		<tr class="a"><td>-5</td><td>2/7</td><td>0.2857</td></tr>
		<tr><td>-4</td><td>2/6</td><td>0.3333</td></tr>
		<tr class="a"><td>-3</td><td>2/5</td><td>0.4</td></tr>
		<tr><td>-2</td><td>2/4</td><td>0.5</td></tr>
		<tr class="a"><td>-1</td><td>2/3</td><td>0.6667</td></tr>
		<tr><td>0</td><td>2/2</td><td>1</td></tr>
		<tr class="a"><td>+1</td><td>3/2</td><td>1.5</td></tr>
		<tr><td>+2</td><td>4/2</td><td>2</td></tr>
		<tr class="a"><td>+3</td><td>5/2</td><td>2.5</td></tr>
		<tr><td>+4</td><td>6/2</td><td>3</td></tr>
		<tr class="a"><td>+5</td><td>7/2</td><td>3.5</td></tr>
		<tr><td>+6</td><td>8/2</td><td>4</td></tr>
	</tbody>
</table>

<h3><a name="attack-mod">Attack modifiers</a></h3>

The final attack stat is altered using the following modifiers:

<table class="sortable">
 <thead>
  <tr>
   <th width="110">Trigger address</th>
   <th width="90">Modifier</th>
   <th>Trigger description</th>
  </tr>
 </thead>
	
 <tbody>
  <tr>
   <td>21d871c</td>
   <td>0x800</td>
   <td>If target has ability Thick Fat and move is Ice or Fire type.</td>
  </tr>
  <tr class="a">
   <td>21d8c78</td>
   <td>0x1800</td>
   <td>If user has ability Torrent, has MaxHP &divide; 3 or less HP and move is water type.</td>
  </tr>
  <tr>
   <td>21d8d14</td>
   <td>0x1800</td>
   <td>If user has ability Guts, has a status problem and move is physical.</td>
  </tr>
  <tr class="a">
   <td>21d8cb0</td>
   <td>0x1800</td>
   <td>If user has ability Swarm, has MaxHP &divide; 3 or less HP and move is bug type.</td>
  </tr>
  <tr>
   <td>21d8c94</td>
   <td>0x1800</td>
   <td>If user has ability Overgrow, has MaxHP &divide; 3 or less HP and move is grass type.</td>
  </tr>
  <tr class="a">
   <td>21d8d60</td>
   <td>0x1800</td>
   <td>If user has ability Plus (resp. Minus) and an ally has ability Minus (resp. Plus) and move is special.</td>
  </tr>
  <tr>
   <td>21d8c5c</td>
   <td>0x1800</td>
   <td>If user has ability Blaze, has MaxHP &divide; 3 or less HP and move is fire type.</td>
  </tr>
  <tr class="a">
   <td>21dc0dc</td>
   <td>0x800</td>
   <td>If user has ability Defeatist and CurrentHP &le; MaxHP &divide; 2.</td>
  </tr>
  <tr>
   <td>21d8754</td>
   <td>0x2000</td>
   <td>If user has ability Pure Power or Huge Power.</td>
  </tr>
  <tr class="a">
   <td>21d9954</td>
   <td>0x1800</td>
   <td>If user has ability Solar Power and weather is intense sunlight and move is special.</td>
  </tr>
  <tr>
   <td>21d8894</td>
   <td>0x1800</td>
   <td>If user has ability Hustle and move is physical. This is a special trigger in the sense that instead of chaining it will directly apply the 0x1800 on the current attack stat instead of being chained with others.</td>
  </tr>
  <tr class="a">
   <td>21daf04</td>
   <td>0x1800</td>
   <td>If user has ability Flash Fire activated and move is Fire type.</td>
  </tr>
  <tr>
   <td>21d892c</td>
   <td>0x800</td>
   <td>If user has ability Slow Start, has been on field for less than 5 turns and move is physical.</td>
  </tr>
  <tr class="a">
   <td>21d8fec</td>
   <td>0x1800</td>
   <td>If ally is Cherrim and has ability Flower Gift, weather is intense sunlight and move is physical.</td>
  </tr>
  <tr>
   <td>21db424</td>
   <td></td>
   <td>Internal.</td>
  </tr>
  <tr class="a">
   <td>21de91c</td>
   <td>0x2000</td>
   <td>If user is Cubone or Marowak, holds a Thick Club and move is physical.</td>
  </tr>
  <tr>
   <td>21de76c</td>
   <td>0x2000</td>
   <td>If user is Clamperl, holds a DeepSeaTooth and move is special.</td>
  </tr>
  <tr class="a">
   <td>21df53c</td>
   <td>0x2000</td>
   <td>If user is Pikachu and holds a Light Ball.</td>
  </tr>
  <tr>
   <td>21de898</td>
   <td>0x1800</td>
   <td>If user is Latios or Latias, holds a Soul Dew and move is special.</td>
  </tr>
  <tr class="a">
   <td>21de968</td>
   <td>0x1800</td>
   <td>If user is holding Choice Band and move is physical.</td>
  </tr>
  <tr>
   <td>21de9a0</td>
   <td>0x1800</td>
   <td>If user is holding Choice Specs and move is special.</td>
  </tr>
  <tr class="a">
   <td>21e310c</td>
   <td></td>
   <td>Internal.</td>
  </tr>
 </tbody>
</table>

<h2><a name="defense">Target defense stat</a></h2>

<div class="arm listing">
<ol><li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C7494 BaseDefenseMods<span class="sy0">:</span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;@ CODE XREF<span class="sy0">:</span> DamageCalc<span class="sy0">+</span>AEp</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C7494 <span class="kw3">PUSH</span> &nbsp; &nbsp;<span class="br0">{</span><span class="kw35">R4</span><span class="sy0">-</span><span class="kw35">R7</span><span class="sy0">,</span><span class="kw35">LR</span><span class="br0">}</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C7496 <span class="kw1">SUB</span> &nbsp; &nbsp; <span class="kw35">SP</span><span class="sy0">,</span> <span class="kw35">SP</span><span class="sy0">,</span> #<span class="nu0">0xC</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C7498 <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R6</span><span class="sy0">,</span> <span class="kw35">R3</span></div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021C749A <span class="kw3">STR</span> &nbsp; &nbsp; <span class="kw35">R0</span><span class="sy0">,</span> <span class="br0">[</span><span class="kw35">SP</span><span class="br0">]</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C749C <span class="kw3">LDRH</span> &nbsp; &nbsp;<span class="kw35">R0</span><span class="sy0">,</span> <span class="br0">[</span><span class="kw35">R6</span><span class="br0">]</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C749E <span class="kw3">STR</span> &nbsp; &nbsp; <span class="kw35">R1</span><span class="sy0">,</span> <span class="br0">[</span><span class="kw35">SP</span><span class="sy0">,</span>#<span class="nu0">4</span><span class="br0">]</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C74A0 <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R5</span><span class="sy0">,</span> <span class="kw35">R2</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C74A2 <span class="kw7">BL</span> &nbsp; &nbsp; &nbsp;GetMoveCategory</div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021C74A6 <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R4</span><span class="sy0">,</span> #<span class="nu0">0xB</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C74A8 <span class="kw5">CMP</span> &nbsp; &nbsp; <span class="kw35">R0</span><span class="sy0">,</span> #<span class="nu0">2</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C74AA <span class="kw8">BEQ</span> &nbsp; &nbsp; loc_21C74AE</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C74AC <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R4</span><span class="sy0">,</span> #<span class="nu0">9</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C74AE</div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021C74AE loc_21C74AE<span class="sy0">:</span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;@ CODE XREF<span class="sy0">:</span> BaseDefenseMods<span class="sy0">+</span><span class="nu0">16</span>j</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C74AE <span class="kw3">LDR</span> &nbsp; &nbsp; <span class="kw35">R0</span><span class="sy0">,</span> <span class="br0">[</span><span class="kw35">R6</span><span class="sy0">,</span>#<span class="nu0">8</span><span class="br0">]</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C74B0 <span class="kw3">STR</span> &nbsp; &nbsp; <span class="kw35">R0</span><span class="sy0">,</span> <span class="br0">[</span><span class="kw35">SP</span><span class="sy0">,</span>#<span class="nu0">8</span><span class="br0">]</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C74B2 <span class="kw3">LDR</span> &nbsp; &nbsp; <span class="kw35">R0</span><span class="sy0">,</span> =<span class="nu0">0x3133</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C74B4 <span class="kw7">BL</span> &nbsp; &nbsp; &nbsp;AllocateVolatileVariables</div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021C74B8 <span class="kw3">LDR</span> &nbsp; &nbsp; <span class="kw35">R0</span><span class="sy0">,</span> <span class="br0">[</span><span class="kw35">SP</span><span class="sy0">,</span>#<span class="nu0">4</span><span class="br0">]</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C74BA <span class="kw7">BL</span> &nbsp; &nbsp; &nbsp;GetPkmId</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C74BE <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R1</span><span class="sy0">,</span> <span class="kw35">R0</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C74C0 <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R0</span><span class="sy0">,</span> #<span class="nu0">3</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C74C2 <span class="kw7">BL</span> &nbsp; &nbsp; &nbsp;StoreVolatileVariableFlag3e4</div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021C74C6 <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R0</span><span class="sy0">,</span> <span class="kw35">R5</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C74C8 <span class="kw7">BL</span> &nbsp; &nbsp; &nbsp;GetPkmId</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C74CC <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R1</span><span class="sy0">,</span> <span class="kw35">R0</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C74CE <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R0</span><span class="sy0">,</span> #<span class="nu0">4</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C74D0 <span class="kw7">BL</span> &nbsp; &nbsp; &nbsp;StoreVolatileVariableFlag3e4</div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021C74D4 <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R0</span><span class="sy0">,</span> #<span class="nu0">0x3C</span> @ <span class="st0">'&lt;'</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C74D6 <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R1</span><span class="sy0">,</span> <span class="kw35">R4</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C74D8 <span class="kw7">BL</span> &nbsp; &nbsp; &nbsp;StoreVolatileVariableFlag3e4</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C74DC <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R0</span><span class="sy0">,</span> #<span class="nu0">0x3D</span> @ <span class="st0">'='</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C74DE <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R1</span><span class="sy0">,</span> #<span class="nu0">0</span></div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021C74E0 <span class="kw7">BL</span> &nbsp; &nbsp; &nbsp;InitVolatileVariable</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C74E4 <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R0</span><span class="sy0">,</span> #<span class="nu0">0x51</span> @ <span class="st0">'Q'</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C74E6 <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R1</span><span class="sy0">,</span> #<span class="nu0">0</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C74E8 <span class="kw7">BL</span> &nbsp; &nbsp; &nbsp;StoreVolatileVariableFlag3e1</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C74EC <span class="kw3">LDR</span> &nbsp; &nbsp; <span class="kw35">R0</span><span class="sy0">,</span> <span class="br0">[</span><span class="kw35">SP</span><span class="br0">]</span></div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021C74EE <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R1</span><span class="sy0">,</span> #<span class="nu0">0x3A</span> @ <span class="st0">':'</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C74F0 <span class="kw7">BL</span> &nbsp; &nbsp; &nbsp;ApplyTriggers</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C74F4 <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R0</span><span class="sy0">,</span> #<span class="nu0">0x3D</span> @ <span class="st0">'='</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C74F6 <span class="kw7">BL</span> &nbsp; &nbsp; &nbsp;ReadVolatileVariable</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C74FA <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R1</span><span class="sy0">,</span> #<span class="nu0">1</span></div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021C74FC <span class="kw5">TST</span> &nbsp; &nbsp; <span class="kw35">R0</span><span class="sy0">,</span> <span class="kw35">R1</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C74FE <span class="kw8">BEQ</span> &nbsp; &nbsp; loc_21C7516</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C7500 <span class="kw5">CMP</span> &nbsp; &nbsp; <span class="kw35">R4</span><span class="sy0">,</span> #<span class="nu0">9</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C7502 <span class="kw8">BNE</span> &nbsp; &nbsp; loc_21C7508</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C7504 <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R4</span><span class="sy0">,</span> #<span class="nu0">0xB</span></div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021C7506 <span class="kw7">B</span> &nbsp; &nbsp; &nbsp; loc_21C750A</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C7508 @ <span class="sy0">---------------------------------------------------------------------------</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C7508</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C7508 loc_21C7508<span class="sy0">:</span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;@ CODE XREF<span class="sy0">:</span> BaseDefenseMods<span class="sy0">+</span>6Ej</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C7508 <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R4</span><span class="sy0">,</span> #<span class="nu0">9</span></div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021C750A</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C750A loc_21C750A<span class="sy0">:</span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;@ CODE XREF<span class="sy0">:</span> BaseDefenseMods<span class="sy0">+</span><span class="nu0">72</span>j</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C750A <span class="kw5">CMP</span> &nbsp; &nbsp; <span class="kw35">R4</span><span class="sy0">,</span> #<span class="nu0">9</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C750C <span class="kw8">BNE</span> &nbsp; &nbsp; loc_21C7512</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C750E <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R0</span><span class="sy0">,</span> #<span class="nu0">1</span></div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021C7510 <span class="kw7">B</span> &nbsp; &nbsp; &nbsp; loc_21C7514</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C7512 @ <span class="sy0">---------------------------------------------------------------------------</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C7512</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C7512 loc_21C7512<span class="sy0">:</span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;@ CODE XREF<span class="sy0">:</span> BaseDefenseMods<span class="sy0">+</span><span class="nu0">78</span>j</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C7512 <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R0</span><span class="sy0">,</span> #<span class="nu0">2</span></div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021C7514</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C7514 loc_21C7514<span class="sy0">:</span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;@ CODE XREF<span class="sy0">:</span> BaseDefenseMods<span class="sy0">+</span>7Cj</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C7514 <span class="kw3">STR</span> &nbsp; &nbsp; <span class="kw35">R0</span><span class="sy0">,</span> <span class="br0">[</span><span class="kw35">SP</span><span class="sy0">,</span>#<span class="nu0">8</span><span class="br0">]</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C7516</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C7516 loc_21C7516<span class="sy0">:</span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;@ CODE XREF<span class="sy0">:</span> BaseDefenseMods<span class="sy0">+</span>6Aj</div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021C7516 <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R0</span><span class="sy0">,</span> #<span class="nu0">0x51</span> @ <span class="st0">'Q'</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C7518 <span class="kw7">BL</span> &nbsp; &nbsp; &nbsp;ReadVolatileVariable</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C751C <span class="kw5">LSLS</span> &nbsp; &nbsp;<span class="kw35">R0</span><span class="sy0">,</span> <span class="kw35">R0</span><span class="sy0">,</span> #<span class="nu0">0x18</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C751E <span class="kw5">LSRS</span> &nbsp; &nbsp;<span class="kw35">R7</span><span class="sy0">,</span> <span class="kw35">R0</span><span class="sy0">,</span> #<span class="nu0">0x18</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C7520 <span class="kw3">LDR</span> &nbsp; &nbsp; <span class="kw35">R0</span><span class="sy0">,</span> =<span class="nu0">0x3142</span></div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021C7522 <span class="kw7">BL</span> &nbsp; &nbsp; &nbsp;FreeVolatileVariable</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C7526 <span class="kw5">CMP</span> &nbsp; &nbsp; <span class="kw35">R7</span><span class="sy0">,</span> #<span class="nu0">0</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C7528 <span class="kw8">BEQ</span> &nbsp; &nbsp; loc_21C7534</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C752A <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R0</span><span class="sy0">,</span> <span class="kw35">R5</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C752C <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R1</span><span class="sy0">,</span> <span class="kw35">R4</span></div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021C752E <span class="kw7">BL</span> &nbsp; &nbsp; &nbsp;RawBpkmStat</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C7532 <span class="kw7">B</span> &nbsp; &nbsp; &nbsp; loc_21C754C</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C7534 @ <span class="sy0">---------------------------------------------------------------------------</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C7534</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C7534 loc_21C7534<span class="sy0">:</span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;@ CODE XREF<span class="sy0">:</span> BaseDefenseMods<span class="sy0">+</span><span class="nu0">94</span>j</div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021C7534 <span class="kw3">LDR</span> &nbsp; &nbsp; <span class="kw35">R0</span><span class="sy0">,</span> <span class="br0">[</span><span class="kw35">SP</span><span class="sy0">,</span>#<span class="nu0">0x20</span><span class="br0">]</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C7536 <span class="kw5">CMP</span> &nbsp; &nbsp; <span class="kw35">R0</span><span class="sy0">,</span> #<span class="nu0">0</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C7538 <span class="kw8">BEQ</span> &nbsp; &nbsp; loc_21C7544</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C753A <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R0</span><span class="sy0">,</span> <span class="kw35">R5</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C753C <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R1</span><span class="sy0">,</span> <span class="kw35">R4</span></div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021C753E <span class="kw7">BL</span> &nbsp; &nbsp; &nbsp;CritAtkDefLevel</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C7542 <span class="kw7">B</span> &nbsp; &nbsp; &nbsp; loc_21C754C</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C7544 @ <span class="sy0">---------------------------------------------------------------------------</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C7544</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C7544 loc_21C7544<span class="sy0">:</span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;@ CODE XREF<span class="sy0">:</span> BaseDefenseMods<span class="sy0">+</span><span class="kw35">A4</span>j</div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021C7544 <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R0</span><span class="sy0">,</span> <span class="kw35">R5</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C7546 <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R1</span><span class="sy0">,</span> <span class="kw35">R4</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C7548 <span class="kw7">BL</span> &nbsp; &nbsp; &nbsp;GetBpkmStat</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C754C</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C754C loc_21C754C<span class="sy0">:</span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;@ CODE XREF<span class="sy0">:</span> BaseDefenseMods<span class="sy0">+</span>9Ej</div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021C754C &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; @ BaseDefenseMods<span class="sy0">+</span>AEj</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C754C <span class="kw5">LSLS</span> &nbsp; &nbsp;<span class="kw35">R0</span><span class="sy0">,</span> <span class="kw35">R0</span><span class="sy0">,</span> #<span class="nu0">0x10</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C754E <span class="kw5">LSRS</span> &nbsp; &nbsp;<span class="kw35">R7</span><span class="sy0">,</span> <span class="kw35">R0</span><span class="sy0">,</span> #<span class="nu0">0x10</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C7550 <span class="kw3">LDR</span> &nbsp; &nbsp; <span class="kw35">R0</span><span class="sy0">,</span> <span class="br0">[</span><span class="kw35">SP</span><span class="br0">]</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C7552 <span class="kw7">BL</span> &nbsp; &nbsp; &nbsp;GetActiveWeather</div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021C7556 <span class="kw5">CMP</span> &nbsp; &nbsp; <span class="kw35">R0</span><span class="sy0">,</span> #<span class="nu0">4</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C7558 <span class="kw8">BNE</span> &nbsp; &nbsp; loc_21C7578</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C755A <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R0</span><span class="sy0">,</span> <span class="kw35">R5</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C755C <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R1</span><span class="sy0">,</span> #<span class="nu0">5</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C755E <span class="kw7">BL</span> &nbsp; &nbsp; &nbsp;IsMoveOfUserType</div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021C7562 <span class="kw5">CMP</span> &nbsp; &nbsp; <span class="kw35">R0</span><span class="sy0">,</span> #<span class="nu0">0</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C7564 <span class="kw8">BEQ</span> &nbsp; &nbsp; loc_21C7578</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C7566 <span class="kw5">CMP</span> &nbsp; &nbsp; <span class="kw35">R4</span><span class="sy0">,</span> #<span class="nu0">0xB</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C7568 <span class="kw8">BNE</span> &nbsp; &nbsp; loc_21C7578</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C756A <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R1</span><span class="sy0">,</span> #<span class="nu0">6</span></div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021C756C <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R0</span><span class="sy0">,</span> <span class="kw35">R7</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C756E <span class="kw5">LSLS</span> &nbsp; &nbsp;<span class="kw35">R1</span><span class="sy0">,</span> <span class="kw35">R1</span><span class="sy0">,</span> #<span class="nu0">0xA</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C7570 <span class="kw7">BL</span> &nbsp; &nbsp; &nbsp;ApplyMod</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C7574 <span class="kw5">LSLS</span> &nbsp; &nbsp;<span class="kw35">R0</span><span class="sy0">,</span> <span class="kw35">R0</span><span class="sy0">,</span> #<span class="nu0">0x10</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C7576 <span class="kw5">LSRS</span> &nbsp; &nbsp;<span class="kw35">R7</span><span class="sy0">,</span> <span class="kw35">R0</span><span class="sy0">,</span> #<span class="nu0">0x10</span></div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021C7578</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C7578 loc_21C7578<span class="sy0">:</span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;@ CODE XREF<span class="sy0">:</span> BaseDefenseMods<span class="sy0">+</span>C4j</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C7578 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; @ BaseDefenseMods<span class="sy0">+</span><span class="kw35">D0</span>j <span class="sy0">...</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C7578 <span class="kw3">LDR</span> &nbsp; &nbsp; <span class="kw35">R4</span><span class="sy0">,</span> =<span class="nu0">0x3157</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C757A <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R0</span><span class="sy0">,</span> <span class="kw35">R4</span></div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021C757C <span class="kw7">BL</span> &nbsp; &nbsp; &nbsp;AllocateVolatileVariables</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C7580 <span class="kw3">LDR</span> &nbsp; &nbsp; <span class="kw35">R0</span><span class="sy0">,</span> <span class="br0">[</span><span class="kw35">SP</span><span class="sy0">,</span>#<span class="nu0">4</span><span class="br0">]</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C7582 <span class="kw7">BL</span> &nbsp; &nbsp; &nbsp;GetPkmId</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C7586 <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R1</span><span class="sy0">,</span> <span class="kw35">R0</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C7588 <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R0</span><span class="sy0">,</span> #<span class="nu0">3</span></div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021C758A <span class="kw7">BL</span> &nbsp; &nbsp; &nbsp;StoreVolatileVariableFlag3e4</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C758E <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R0</span><span class="sy0">,</span> <span class="kw35">R5</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C7590 <span class="kw7">BL</span> &nbsp; &nbsp; &nbsp;GetPkmId</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C7594 <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R1</span><span class="sy0">,</span> <span class="kw35">R0</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C7596 <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R0</span><span class="sy0">,</span> #<span class="nu0">4</span></div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021C7598 <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R5</span><span class="sy0">,</span> #<span class="nu0">4</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C759A <span class="kw7">BL</span> &nbsp; &nbsp; &nbsp;StoreVolatileVariableFlag3e4</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C759E <span class="kw3">LDRH</span> &nbsp; &nbsp;<span class="kw35">R1</span><span class="sy0">,</span> <span class="br0">[</span><span class="kw35">R6</span><span class="br0">]</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C75A0 <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R0</span><span class="sy0">,</span> #<span class="nu0">0x12</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C75A2 <span class="kw7">BL</span> &nbsp; &nbsp; &nbsp;StoreVolatileVariableFlag3e4</div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021C75A6 <span class="kw3">LDRB</span> &nbsp; &nbsp;<span class="kw35">R1</span><span class="sy0">,</span> <span class="br0">[</span><span class="kw35">R6</span><span class="sy0">,</span>#<span class="nu0">6</span><span class="br0">]</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C75A8 <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R0</span><span class="sy0">,</span> #<span class="nu0">0x16</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C75AA <span class="kw7">BL</span> &nbsp; &nbsp; &nbsp;StoreVolatileVariableFlag3e4</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C75AE <span class="kw3">LDR</span> &nbsp; &nbsp; <span class="kw35">R1</span><span class="sy0">,</span> <span class="br0">[</span><span class="kw35">SP</span><span class="sy0">,</span>#<span class="nu0">8</span><span class="br0">]</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C75B0 <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R0</span><span class="sy0">,</span> #<span class="nu0">0x1A</span></div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021C75B2 <span class="kw7">BL</span> &nbsp; &nbsp; &nbsp;StoreVolatileVariableFlag3e4</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C75B6 <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R0</span><span class="sy0">,</span> #<span class="nu0">0x34</span> @ <span class="st0">'4'</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C75B8 <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R1</span><span class="sy0">,</span> <span class="kw35">R7</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C75BA <span class="kw7">BL</span> &nbsp; &nbsp; &nbsp;InitVolatileVariable</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C75BE <span class="kw3">LDR</span> &nbsp; &nbsp; <span class="kw35">R2</span><span class="sy0">,</span> =<span class="nu0">0x19A</span></div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021C75C0 <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R0</span><span class="sy0">,</span> #<span class="nu0">0x35</span> @ <span class="st0">'5'</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C75C2 <span class="kw5">LSLS</span> &nbsp; &nbsp;<span class="kw35">R1</span><span class="sy0">,</span> <span class="kw35">R5</span><span class="sy0">,</span> #<span class="nu0">0xA</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C75C4 <span class="kw5">LSLS</span> &nbsp; &nbsp;<span class="kw35">R3</span><span class="sy0">,</span> <span class="kw35">R5</span><span class="sy0">,</span> #<span class="nu0">0xF</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C75C6 <span class="kw7">BL</span> &nbsp; &nbsp; &nbsp;StoreVolatileVariableFlag3e3</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C75CA <span class="kw3">LDR</span> &nbsp; &nbsp; <span class="kw35">R0</span><span class="sy0">,</span> <span class="br0">[</span><span class="kw35">SP</span><span class="br0">]</span></div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021C75CC <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R1</span><span class="sy0">,</span> #<span class="nu0">0x3C</span> @ <span class="st0">'&lt;'</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C75CE <span class="kw7">BL</span> &nbsp; &nbsp; &nbsp;ApplyTriggers</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C75D2 <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R0</span><span class="sy0">,</span> #<span class="nu0">0x34</span> @ <span class="st0">'4'</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C75D4 <span class="kw7">BL</span> &nbsp; &nbsp; &nbsp;ReadVolatileVariable</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C75D8 <span class="kw5">LSLS</span> &nbsp; &nbsp;<span class="kw35">R0</span><span class="sy0">,</span> <span class="kw35">R0</span><span class="sy0">,</span> #<span class="nu0">0x10</span></div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021C75DA <span class="kw5">LSRS</span> &nbsp; &nbsp;<span class="kw35">R5</span><span class="sy0">,</span> <span class="kw35">R0</span><span class="sy0">,</span> #<span class="nu0">0x10</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C75DC <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R0</span><span class="sy0">,</span> #<span class="nu0">0x35</span> @ <span class="st0">'5'</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C75DE <span class="kw7">BL</span> &nbsp; &nbsp; &nbsp;ReadVolatileVariable</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C75E2 <span class="kw5">ADDS</span> &nbsp; &nbsp;<span class="kw35">R4</span><span class="sy0">,</span> #<span class="nu0">0xB</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C75E4 <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R6</span><span class="sy0">,</span> <span class="kw35">R0</span></div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021C75E6 <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R0</span><span class="sy0">,</span> <span class="kw35">R4</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C75E8 <span class="kw7">BL</span> &nbsp; &nbsp; &nbsp;FreeVolatileVariable</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C75EC <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R0</span><span class="sy0">,</span> <span class="kw35">R5</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C75EE <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R1</span><span class="sy0">,</span> <span class="kw35">R6</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C75F0 <span class="kw7">BL</span> &nbsp; &nbsp; &nbsp;ApplyMod</div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021C75F4 <span class="kw5">LSLS</span> &nbsp; &nbsp;<span class="kw35">R0</span><span class="sy0">,</span> <span class="kw35">R0</span><span class="sy0">,</span> #<span class="nu0">0x10</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C75F6 <span class="kw5">LSRS</span> &nbsp; &nbsp;<span class="kw35">R0</span><span class="sy0">,</span> <span class="kw35">R0</span><span class="sy0">,</span> #<span class="nu0">0x10</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C75F8 <span class="kw1">ADD</span> &nbsp; &nbsp; <span class="kw35">SP</span><span class="sy0">,</span> <span class="kw35">SP</span><span class="sy0">,</span> #<span class="nu0">0xC</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C75FA <span class="kw3">POP</span> &nbsp; &nbsp; <span class="br0">{</span><span class="kw35">R4</span><span class="sy0">-</span><span class="kw35">R7</span><span class="sy0">,</span><span class="kw35">PC</span><span class="br0">}</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C75FA @ End of function BaseDefenseMods</div></li>
</ol>
</div>

<h3><a name="defense-base">Base value</a></h3>

<p>
Just like for the attack stat, the first step is to decide which defense stat to use and whether to apply the
active boost level. This is done by the following triggers:
</p>

<table class="sortable">
 <thead>
  <tr>
   <th width="110">Trigger address</th>
   <th>Trigger description</th>
  </tr>
 </thead>
	
 <tbody>
  <tr>
   <td>21da840</td>
   <td>Unaware: if foe has ability Unaware do not apply any Defense level boosts.</td>
  </tr>
  <tr class="a">
   <td>21d8db0</td>
   <td>Internal.</td>
  </tr>
  <tr>
   <td>21e7944</td>
   <td>This triggers is used for special moves that deal physical damage. It replaces the identifier of the base special defense stat with the one for defense.</td>
  </tr>
  <tr class="a">
   <td>21e797c</td>
   <td>Chip Away: ignore defense level boosts if foe has it.</td>
  </tr>
  <tr>
   <td>68981a0</td>
   <td>Wonder Room: has the same effect as 21e7944 but for all Pokémon on field. Will also cancel the effect of 21e7944.</td>
  </tr>
 </tbody>
</table>

<h3><a name="boost-def">Boost level</a></h3>

This works like <a href="#boost-level">attack boosts</a> except the base defense stat is used on critical hits if the boost level is positive.

<h3><a name="sand-mod">Sandstorm modifier</a></h3>

At this point, if the current weather (after triggers) is Sandstorm, the user is Rock type and the
base stat was special attack, apply a 0x1800 modifier to the current defense stat. This is done regardless
of critical hits and before any other modifier.

<h3><a name="def-mod">Defense modifiers</a></h3>

The final defense stat is altered using the following modifiers:

<table class="sortable">
 <thead>
  <tr>
   <th width="110">Trigger address</th>
   <th width="90">Modifier</th>
   <th>Trigger description</th>
  </tr>
 </thead>
	
 <tbody>
  <tr>
   <td>21d91bc</td>
   <td>0x1800</td>
   <td>If target has ability Marvel Scale, has a status problem and move is physical.</td>
  </tr>
  <tr class="a">
   <td>21d903c</td>
   <td>0x1800</td>
   <td>If ally is Cherrim and has ability Flower Gift, weather is intense sunlight and move is special.</td>
  </tr>
  <tr>
   <td>21db8f0</td>
   <td></td>
   <td>Internal.</td>
  </tr>
  <tr class="a">
   <td>21de7bc</td>
   <td>0x1800</td>
   <td>Is target is Clamperl, holds a DeepSeaScale and move is special.</td>
  </tr>
  <tr>
   <td>21de804</td>
   <td>0x1800</td>
   <td>Is target is (untransformed) Ditto, holds Metal Powder and move is physical.</td>
  </tr>
  <tr class="a">
   <td>21dfaa8</td>
   <td>0x1800</td>
   <td>If target is holding Eviolite and is not fully evolved.</td>
  </tr>
  <tr>
   <td>21de8d4</td>
   <td>0x1800</td>
   <td>If target is Latios or Latias holding a Sold Dew and move is special.</td>
  </tr>
 </tbody>
</table>

<h2><a name="special-cases">Special cases</a></h2>

The following moves do not depend on the user's attack or the target's defense and are handled by specific triggers:

<table class="sortable">
 <thead>
  <tr>
   <th width="110">Trigger address</th>
   <th>Trigger description</th>
  </tr>
 </thead>
	
 <tbody>
  <tr class="a">
   <td>21e1608</td>
   <td>Psywave: damage is always max(1, ((rand(101) + 50) * UserLevel) &divide; 100)</td>
  </tr>
  <tr>
   <td>21e15d0</td>
   <td>Night Shade: damage is always UserLevel.</td>
  </tr>
  <tr class="a">
   <td>21e1504</td>
   <td>SonicBoom: damage is always 20.</td>
  </tr>
  <tr>
   <td>21e1498</td>
   <td>Super Fang: damage is always max(1, UserHP &divide; 2).</td>
  </tr>
  <tr class="a">
   <td>21e14e0</td>
   <td>Dragon Rage: damage is always 40.</td>
  </tr>
  <tr>
   <td>21e1578</td>
   <td>Endeavor: damage is always max(1, max(0, TargetHP-UserHP)).</td>
  </tr>
  <tr class="a">
   <td>21e7c98</td>
   <td>Final Gambit: damage is always UserHP.</td>
  </tr>
  <tr>
   <td>21e0838</td>
   <td>Brick Break: cancels the effect of Reflect / Light Screen.</td>
  </tr>
  <tr class="a">
   <td>21e1978</td>
   <td>Counter: if last Pokémon to hit the user was a foe using a physical move, use double the set damage.</td>
  </tr>
  <tr>
   <td>21e19bc</td>
   <td>Mirror Coat: same as Counter for special moves.</td>
  </tr>
  <tr class="a">
   <td>21e1a00</td>
   <td>Metal Burst: same as Counter for both physical and special moves.</td>
  </tr>
  <tr>
   <td>21e3e50</td>
   <td>Bide: store energy for 2+rand(2) turns, then set damage to twice the total damage dealt to user during the charging turns.</td>
  </tr>
 </tbody>
</table>

</body>
</html>
HTML:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">

[title]
The Complete Damage Formula for Black &amp; White (B/W)

<style type="text/css">
.listing
{
 overflow: auto;
 width: 100%;
 max-height: 333px;
 margin: 5px auto;
 font-size: 90%;
}
.arm .de1, .arm .de2 {color: #000060; font-weight: normal;}
.arm  {white-space: nowrap;border: 1px dotted #a0a0a0; font-family: 'Courier New', Courier, monospace; background-color: #f0f0f0; margin: 0; line-height: 110%; padding: 0;color: #0000bb;}
.arm a:link {color: #006;}
.arm a:hover {background-color: #d6d6e6;}
.arm .head {font-family: Verdana, Arial, sans-serif; color: #808080; font-size: 70%; font-weight: bold; background-color: #f0f0ff; border-bottom: 1px solid #d0d0d0; padding: 2px;}
.arm .foot {font-family: Verdana, Arial, sans-serif; color: #808080; font-size: 70%; font-weight: bold; background-color: #f0f0ff; border-top: 1px solid #d0d0d0; padding: 2px;}
.arm .imp {font-weight: bold; color: red;}
.arm li, .arm .li1 {font-family: 'Courier New', Courier, monospace; color: #000060; background-color: #e0e0e0; padding-bottom: 2px;}
.arm .ln {width:1px;text-align:right;margin:0;padding:0 2px;vertical-align:top;}
.arm .li2 {font-weight: bold; color: #000090; line-height: 90%}
.arm .kw1 {color: #00007f; font-weight: normal; font-style: normal;}
.arm .kw2 {color: #00007f; font-weight: normal; font-style: italic;}
.arm .kw3 {color: #00007f; font-weight: normal; font-style: normal;}
.arm .kw4 {color: #00007f; font-weight: normal; font-style: italic;}
.arm .kw5 {color: #00007f; font-weight: bold; font-style: normal;}
.arm .kw6 {color: #00007f; font-weight: bold; font-style: italic;}
.arm .kw7 {color: #0000ff; font-weight: normal; font-style: normal;}
.arm .kw8 {color: #0000ff; font-weight: normal; font-style: italic;}
.arm .kw9 {color: #00007f; font-weight: normal; font-style: normal;}
.arm .kw10 {color: #00007f; font-weight: normal; font-style: italic;}
.arm .kw11 {color: #b00040; font-weight: normal; font-style: normal;}
.arm .kw12 {color: #b00040; font-weight: normal; font-style: italic;}
.arm .kw13 {color: #00007f; font-weight: normal; font-style: normal;}
.arm .kw14 {color: #00007f; font-weight: bold; font-style: italic;}
.arm .kw15 {color: #00007f; font-weight: normal; font-style: normal;}
.arm .kw16 {color: #00007f; font-weight: bold; font-style: italic;}
.arm .kw17 {color: #b00040; font-weight: normal; font-style: normal;}
.arm .kw18 {color: #b00040; font-weight: normal; font-style: italic;}
.arm .kw19 {color: #b00040; font-weight: normal; font-style: normal;}
.arm .kw20 {color: #b00040; font-weight: normal; font-style: italic;}
.arm .kw21 {color: #b00040; font-weight: normal; font-style: italic;}
.arm .kw22 {color: #b00040; font-weight: normal; font-style: italic;}
.arm .kw23 {color: #b00040; font-weight: normal; font-style: italic;}
.arm .kw24 {color: #b00040; font-weight: normal; font-style: italic;}
.arm .kw25 {color: #b00040; font-weight: normal; font-style: italic;}
.arm .kw26 {color: #b00040; font-weight: normal; font-style: italic;}
.arm .kw27 {color: #b00040; font-weight: normal; font-style: italic;}
.arm .kw28 {color: #b00040; font-weight: normal; font-style: italic;}
.arm .kw29 {color: #b00040; font-weight: normal; font-style: italic;}
.arm .kw30 {color: #b00040; font-weight: normal; font-style: italic;}
.arm .kw31 {color: #b00040; font-weight: normal; font-style: italic;}
.arm .kw32 {color: #b00040; font-weight: normal; font-style: italic;}
.arm .kw33 {color: #b00040; font-weight: normal; font-style: italic;}
.arm .kw34 {color: #b00040; font-weight: normal; font-style: italic;}
.arm .kw35 {color: #46aa03; font-weight: bold;}
.arm .co1 {color: #666666; font-style: italic;font-style: normal;}
.arm .co2 {color: #adadad; font-style: italic;}
.arm .coMULTI {font-style: normal;}
.arm .es0 {color: #000099; font-weight: bold;font-weight: normal;}
.arm .br0 {color: #009900; font-weight: bold;}
.arm .sy0 {color: #339933;}
.arm .st0 {color: #7f007f;}
.arm .nu0 {color: #ff0000;}
.arm .me {1}
.arm span.xtra { display:block; }
	</style>
</head>
<body>
[head]
<meta name="description" content="The Complete Damage Formula for Black &amp; White" />
[page]
<div class="author">By <a href="http://www.pokecheck.org">Xfr</a>, <a href="/forums/member.php?u=54525">Bond697</a> and <a href="/forums/member.php?u=32572">Kaphotics</a>, with help from <a href="/forums/member.php?u=87165">V4Victini</a>.</div>

<ol class="toc">
 <li><a href="#introduction">Introduction</a></li>
 <li>
  <a href="main">Main concepts</a>
  <ol style="list-style: upper-alpha">
   <li><a href="#overview">General flow of damage calculation</a></li>
   <li><a href="#apply-mod">How to apply a modifier</a></li>
   <li><a href="#chain-mod">How to chain modifiers</a></li>
   <li><a href="#mt-mod">The multi-target modifier</a></li>
   <li><a href="#weather-mod">The weather modifier</a></li>
   <li><a href="#crits">Critical hits</a></li>
   <li><a href="#random">The random factor</a></li>
   <li><a href="#stab">STAB</a></li>
   <li><a href="#type-eff">Type effectiveness</a></li>
   <li><a href="#burn">Effect of a burn</a></li>
   <li><a href="#final">Final modifier</a></li>
  </ol>
 </li>
 <li>
  <a href="#base-power">The base power</a>
  <ol style="list-style: upper-alpha">
   <li><a href="#variable-bp">Triggers for variable base power</a></li>
   <li><a href="#bp-mods">Modifiers for the base power</a></li>
  </ol>
 </li>
 <li>
  <a href="#attack">User attack stat</a>
  <ol style="list-style: upper-alpha">
   <li><a href="#attack-base">Base value</a></li>
   <li><a href="#boost-level">Boost level</a></li>
   <li><a href="#attack-mod">Attack modifiers</a></li>
  </ol>
 </li>
 <li>
  <a href="#defense">Target defense stat</a>
  <ol style="list-style: upper-alpha">
   <li><a href="#defense-base">Base value</a></li>
   <li><a href="#boost-def">Boost level</a></li>
   <li><a href="#sand-mod">Sandstorm modifier</a></li>
   <li><a href="#def-mod">Defense modifiers</a></li>
  </ol>
 </li>
 <li><a href="#special-cases">Special cases</a></li>
</ol>

<h2><a name="introduction">Introduction</a></h2>

<p>In generation IV, the damage formula was derived empirically by X-Act from running it countless times, an approach that is both tedious and prone to errors. The good understanding of the ARM code for Black &amp; White allows us to document the damage formula based on the actual source code of the game. It doesn't guarantee that we didn't make any mistake (interpreting assembly language is in itself a tricky task) but having the documented source along with the formula backs up our claims and allows anyone who spots any error to fix it by themselves.</p>

<h2><a name="main">Main concepts</a></h2>

<h3><a name="overview">General flow of damage calculation</a></h3>

<div class="arm listing">
<ol><li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1E94 @ int __cdecl DamageCalc<span class="br0">(</span>void <span class="sy0">*</span>trigger_table<span class="sy0">,</span> void <span class="sy0">**</span>attacking_bpkm<span class="sy0">,</span> void <span class="sy0">**</span>defending_bpkm<span class="sy0">,</span> unsigned __int16 <span class="sy0">*</span>move_id<span class="br0">)</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1E94 DamageCalc<span class="sy0">:</span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; @ CODE XREF<span class="sy0">:</span> MEMORY<span class="sy0">:</span>021C0B28p</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1E94</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1E94 double_damage= <span class="sy0">-</span><span class="nu0">0x30</span></div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021C1E94 p_attacking= <span class="sy0">-</span><span class="nu0">0x2C</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1E94 current_damage= <span class="sy0">-</span><span class="nu0">0x28</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1E94 static_damage= <span class="sy0">-</span><span class="nu0">0x24</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1E94 move_cat= <span class="sy0">-</span><span class="nu0">0x20</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1E94 base_power= <span class="sy0">-</span><span class="nu0">0x1C</span></div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021C1E94 attack_stat= <span class="sy0">-</span><span class="nu0">0x18</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1E94 effectiveness_factor= &nbsp;<span class="nu0">0</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1E94 field_mod= &nbsp;<span class="nu0">4</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1E94 is_critical= &nbsp;<span class="nu0">8</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1E94 rig_mindamage= &nbsp;<span class="nu0">0xC</span></div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021C1E94 p_store_result= &nbsp;<span class="nu0">0x10</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1E94</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1E94 <span class="kw3">PUSH</span> &nbsp; &nbsp;<span class="br0">{</span><span class="kw35">R4</span><span class="sy0">-</span><span class="kw35">R7</span><span class="sy0">,</span><span class="kw35">LR</span><span class="br0">}</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1E96 <span class="kw1">SUB</span> &nbsp; &nbsp; <span class="kw35">SP</span><span class="sy0">,</span> <span class="kw35">SP</span><span class="sy0">,</span> #<span class="nu0">0x1C</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1E98 <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R4</span><span class="sy0">,</span> <span class="kw35">R3</span></div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021C1E9A <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R5</span><span class="sy0">,</span> <span class="kw35">R0</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1E9C <span class="kw3">LDRH</span> &nbsp; &nbsp;<span class="kw35">R0</span><span class="sy0">,</span> <span class="br0">[</span><span class="kw35">R4</span><span class="br0">]</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1E9E <span class="kw3">STR</span> &nbsp; &nbsp; <span class="kw35">R1</span><span class="sy0">,</span> <span class="br0">[</span><span class="kw35">SP</span><span class="sy0">,</span>#<span class="nu0">0x30</span><span class="sy0">+</span>p_attacking<span class="br0">]</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1EA0 <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R7</span><span class="sy0">,</span> <span class="kw35">R2</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1EA2 <span class="kw3">LDR</span> &nbsp; &nbsp; <span class="kw35">R6</span><span class="sy0">,</span> <span class="br0">[</span><span class="kw35">SP</span><span class="sy0">,</span>#<span class="nu0">0x30</span><span class="sy0">+</span>is_critical<span class="br0">]</span></div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021C1EA4 <span class="kw7">BL</span> &nbsp; &nbsp; &nbsp;GetMoveCategory</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1EA8 <span class="kw3">STR</span> &nbsp; &nbsp; <span class="kw35">R0</span><span class="sy0">,</span> <span class="br0">[</span><span class="kw35">SP</span><span class="sy0">,</span>#<span class="nu0">0x30</span><span class="sy0">+</span>move_cat<span class="br0">]</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1EAA <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R0</span><span class="sy0">,</span> #<span class="nu0">0</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1EAC <span class="kw3">STR</span> &nbsp; &nbsp; <span class="kw35">R0</span><span class="sy0">,</span> <span class="br0">[</span><span class="kw35">SP</span><span class="sy0">,</span>#<span class="nu0">0x30</span><span class="sy0">+</span>static_damage<span class="br0">]</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1EAE <span class="kw3">LDR</span> &nbsp; &nbsp; <span class="kw35">R0</span><span class="sy0">,</span> =<span class="nu0">0x1C21</span></div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021C1EB0 <span class="kw7">BL</span> &nbsp; &nbsp; &nbsp;AllocateVolatileVariables</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1EB4 <span class="kw3">LDR</span> &nbsp; &nbsp; <span class="kw35">R1</span><span class="sy0">,</span> <span class="br0">[</span><span class="kw35">SP</span><span class="sy0">,</span>#<span class="nu0">0x30</span><span class="sy0">+</span>effectiveness_factor<span class="br0">]</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1EB6 <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R0</span><span class="sy0">,</span> #<span class="nu0">0x38</span> @ <span class="st0">'8'</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1EB8 <span class="kw7">BL</span> &nbsp; &nbsp; &nbsp;StoreVolatileVariableFlag3e4</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1EBC <span class="kw3">LDR</span> &nbsp; &nbsp; <span class="kw35">R0</span><span class="sy0">,</span> <span class="br0">[</span><span class="kw35">SP</span><span class="sy0">,</span>#<span class="nu0">0x30</span><span class="sy0">+</span>p_attacking<span class="br0">]</span></div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021C1EBE <span class="kw7">BL</span> &nbsp; &nbsp; &nbsp;Dereference25</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1EC2 <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R1</span><span class="sy0">,</span> <span class="kw35">R0</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1EC4 <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R0</span><span class="sy0">,</span> #<span class="nu0">3</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1EC6 <span class="kw7">BL</span> &nbsp; &nbsp; &nbsp;StoreVolatileVariableFlag3e4</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1ECA <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R0</span><span class="sy0">,</span> <span class="kw35">R7</span></div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021C1ECC <span class="kw7">BL</span> &nbsp; &nbsp; &nbsp;Dereference25</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1ED0 <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R1</span><span class="sy0">,</span> <span class="kw35">R0</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1ED2 <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R0</span><span class="sy0">,</span> #<span class="nu0">4</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1ED4 <span class="kw7">BL</span> &nbsp; &nbsp; &nbsp;StoreVolatileVariableFlag3e4</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1ED8 <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R0</span><span class="sy0">,</span> #<span class="nu0">0x45</span> @ <span class="st0">'E'</span></div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021C1EDA <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R1</span><span class="sy0">,</span> <span class="kw35">R6</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1EDC <span class="kw7">BL</span> &nbsp; &nbsp; &nbsp;StoreVolatileVariableFlag3e4</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1EE0 <span class="kw3">LDRB</span> &nbsp; &nbsp;<span class="kw35">R1</span><span class="sy0">,</span> <span class="br0">[</span><span class="kw35">R4</span><span class="sy0">,</span>#<span class="nu0">6</span><span class="br0">]</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1EE2 <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R0</span><span class="sy0">,</span> #<span class="nu0">0x16</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1EE4 <span class="kw7">BL</span> &nbsp; &nbsp; &nbsp;StoreVolatileVariableFlag3e4</div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021C1EE8 <span class="kw3">LDRH</span> &nbsp; &nbsp;<span class="kw35">R1</span><span class="sy0">,</span> <span class="br0">[</span><span class="kw35">R4</span><span class="br0">]</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1EEA <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R0</span><span class="sy0">,</span> #<span class="nu0">0x12</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1EEC <span class="kw7">BL</span> &nbsp; &nbsp; &nbsp;StoreVolatileVariableFlag3e4</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1EF0 <span class="kw3">LDR</span> &nbsp; &nbsp; <span class="kw35">R1</span><span class="sy0">,</span> <span class="br0">[</span><span class="kw35">SP</span><span class="sy0">,</span>#<span class="nu0">0x30</span><span class="sy0">+</span>move_cat<span class="br0">]</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1EF2 <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R0</span><span class="sy0">,</span> #<span class="nu0">0x1A</span></div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021C1EF4 <span class="kw7">BL</span> &nbsp; &nbsp; &nbsp;StoreVolatileVariableFlag3e4</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1EF8 <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R0</span><span class="sy0">,</span> #<span class="nu0">0x37</span> @ <span class="st0">'7'</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1EFA <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R1</span><span class="sy0">,</span> #<span class="nu0">0</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1EFC <span class="kw7">BL</span> &nbsp; &nbsp; &nbsp;InitVolatileVariable</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1F00 <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R0</span><span class="sy0">,</span> <span class="kw35">R5</span></div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021C1F02 <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R1</span><span class="sy0">,</span> #<span class="nu0">0x46</span> @ <span class="st0">'F'</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1F04 <span class="kw7">BL</span> &nbsp; &nbsp; &nbsp;ApplyTriggers</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1F08 <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R0</span><span class="sy0">,</span> #<span class="nu0">0x37</span> @ <span class="st0">'7'</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1F0A <span class="kw7">BL</span> &nbsp; &nbsp; &nbsp;ReadVolatileVariable</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1F0E <span class="kw3">STR</span> &nbsp; &nbsp; <span class="kw35">R0</span><span class="sy0">,</span> <span class="br0">[</span><span class="kw35">SP</span><span class="sy0">,</span>#<span class="nu0">0x30</span><span class="sy0">+</span>current_damage<span class="br0">]</span></div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021C1F10 <span class="kw5">CMP</span> &nbsp; &nbsp; <span class="kw35">R0</span><span class="sy0">,</span> #<span class="nu0">0</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1F12 <span class="kw8">BEQ</span> &nbsp; &nbsp; Bank0</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1F14 <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R0</span><span class="sy0">,</span> #<span class="nu0">1</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1F16 <span class="kw3">STR</span> &nbsp; &nbsp; <span class="kw35">R0</span><span class="sy0">,</span> <span class="br0">[</span><span class="kw35">SP</span><span class="sy0">,</span>#<span class="nu0">0x30</span><span class="sy0">+</span>static_damage<span class="br0">]</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1F18 <span class="kw7">B</span> &nbsp; &nbsp; &nbsp; Bank9</div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021C1F1A @ <span class="sy0">---------------------------------------------------------------------------</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1F1A</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1F1A Bank0<span class="sy0">:</span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;@ CODE XREF<span class="sy0">:</span> DamageCalc<span class="sy0">+</span>7Ej</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1F1A <span class="kw3">LDR</span> &nbsp; &nbsp; <span class="kw35">R1</span><span class="sy0">,</span> <span class="br0">[</span><span class="kw35">SP</span><span class="sy0">,</span>#<span class="nu0">0x30</span><span class="sy0">+</span>p_attacking<span class="br0">]</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1F1C <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R0</span><span class="sy0">,</span> <span class="kw35">R5</span></div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021C1F1E <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R2</span><span class="sy0">,</span> <span class="kw35">R7</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1F20 <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R3</span><span class="sy0">,</span> <span class="kw35">R4</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1F22 <span class="kw7">BL</span> &nbsp; &nbsp; &nbsp;BasePowerMods</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1F26 <span class="kw3">STR</span> &nbsp; &nbsp; <span class="kw35">R0</span><span class="sy0">,</span> <span class="br0">[</span><span class="kw35">SP</span><span class="sy0">,</span>#<span class="nu0">0x30</span><span class="sy0">+</span>base_power<span class="br0">]</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1F28 <span class="kw3">LDR</span> &nbsp; &nbsp; <span class="kw35">R1</span><span class="sy0">,</span> <span class="br0">[</span><span class="kw35">SP</span><span class="sy0">,</span>#<span class="nu0">0x30</span><span class="sy0">+</span>p_attacking<span class="br0">]</span></div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021C1F2A <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R0</span><span class="sy0">,</span> <span class="kw35">R5</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1F2C <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R2</span><span class="sy0">,</span> <span class="kw35">R7</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1F2E <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R3</span><span class="sy0">,</span> <span class="kw35">R4</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1F30 <span class="kw3">STR</span> &nbsp; &nbsp; <span class="kw35">R6</span><span class="sy0">,</span> <span class="br0">[</span><span class="kw35">SP</span><span class="sy0">,</span>#<span class="nu0">0x30</span><span class="sy0">+</span>double_damage<span class="br0">]</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1F32 <span class="kw7">BL</span> &nbsp; &nbsp; &nbsp;BaseAttackMods</div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021C1F36 <span class="kw3">STR</span> &nbsp; &nbsp; <span class="kw35">R0</span><span class="sy0">,</span> <span class="br0">[</span><span class="kw35">SP</span><span class="sy0">,</span>#<span class="nu0">0x30</span><span class="sy0">+</span>attack_stat<span class="br0">]</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1F38 <span class="kw3">LDR</span> &nbsp; &nbsp; <span class="kw35">R1</span><span class="sy0">,</span> <span class="br0">[</span><span class="kw35">SP</span><span class="sy0">,</span>#<span class="nu0">0x30</span><span class="sy0">+</span>p_attacking<span class="br0">]</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1F3A <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R0</span><span class="sy0">,</span> <span class="kw35">R5</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1F3C <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R2</span><span class="sy0">,</span> <span class="kw35">R7</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1F3E <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R3</span><span class="sy0">,</span> <span class="kw35">R4</span></div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021C1F40 <span class="kw3">STR</span> &nbsp; &nbsp; <span class="kw35">R6</span><span class="sy0">,</span> <span class="br0">[</span><span class="kw35">SP</span><span class="sy0">,</span>#<span class="nu0">0x30</span><span class="sy0">+</span>double_damage<span class="br0">]</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1F42 <span class="kw7">BL</span> &nbsp; &nbsp; &nbsp;BaseDefenseMods</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1F46 <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R7</span><span class="sy0">,</span> <span class="kw35">R0</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1F48 <span class="kw3">LDR</span> &nbsp; &nbsp; <span class="kw35">R0</span><span class="sy0">,</span> <span class="br0">[</span><span class="kw35">SP</span><span class="sy0">,</span>#<span class="nu0">0x30</span><span class="sy0">+</span>p_attacking<span class="br0">]</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1F4A <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R1</span><span class="sy0">,</span> #<span class="nu0">0xF</span></div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021C1F4C <span class="kw7">BL</span> &nbsp; &nbsp; &nbsp;GetBpkmStat</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1F50 <span class="kw5">LSLS</span> &nbsp; &nbsp;<span class="kw35">R0</span><span class="sy0">,</span> <span class="kw35">R0</span><span class="sy0">,</span> #<span class="nu0">0x18</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1F52 <span class="kw5">LSRS</span> &nbsp; &nbsp;<span class="kw35">R2</span><span class="sy0">,</span> <span class="kw35">R0</span><span class="sy0">,</span> #<span class="nu0">0x18</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1F54 <span class="kw3">LDR</span> &nbsp; &nbsp; <span class="kw35">R0</span><span class="sy0">,</span> <span class="br0">[</span><span class="kw35">SP</span><span class="sy0">,</span>#<span class="nu0">0x30</span><span class="sy0">+</span>base_power<span class="br0">]</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1F56 <span class="kw3">LDR</span> &nbsp; &nbsp; <span class="kw35">R1</span><span class="sy0">,</span> <span class="br0">[</span><span class="kw35">SP</span><span class="sy0">,</span>#<span class="nu0">0x30</span><span class="sy0">+</span>attack_stat<span class="br0">]</span></div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021C1F58 <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R3</span><span class="sy0">,</span> <span class="kw35">R7</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1F5A <span class="kw7">BL</span> &nbsp; &nbsp; &nbsp;BaseDamageFormula</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1F5E <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R2</span><span class="sy0">,</span> #<span class="nu0">4</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1F60 <span class="kw3">LDR</span> &nbsp; &nbsp; <span class="kw35">R1</span><span class="sy0">,</span> <span class="br0">[</span><span class="kw35">SP</span><span class="sy0">,</span>#<span class="nu0">0x30</span><span class="sy0">+</span>field_mod<span class="br0">]</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1F62 <span class="kw5">LSLS</span> &nbsp; &nbsp;<span class="kw35">R2</span><span class="sy0">,</span> <span class="kw35">R2</span><span class="sy0">,</span> #<span class="nu0">0xA</span></div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021C1F64 <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R7</span><span class="sy0">,</span> <span class="kw35">R0</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1F66 <span class="kw5">CMP</span> &nbsp; &nbsp; <span class="kw35">R1</span><span class="sy0">,</span> <span class="kw35">R2</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1F68 <span class="kw8">BEQ</span> &nbsp; &nbsp; Bank1</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1F6A <span class="kw7">BL</span> &nbsp; &nbsp; &nbsp;ApplyMod</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1F6E <span class="kw5">ADDS</span> &nbsp; &nbsp;<span class="kw35">R7</span><span class="sy0">,</span> <span class="kw35">R0</span><span class="sy0">,</span> #<span class="nu0">0</span></div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021C1F70</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1F70 Bank1<span class="sy0">:</span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;@ CODE XREF<span class="sy0">:</span> DamageCalc<span class="sy0">+</span><span class="kw35">D4</span>j</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1F70 <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R0</span><span class="sy0">,</span> <span class="kw35">R5</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1F72 <span class="kw7">BL</span> &nbsp; &nbsp; &nbsp;WeatherTriggers</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1F76 <span class="kw3">LDRB</span> &nbsp; &nbsp;<span class="kw35">R1</span><span class="sy0">,</span> <span class="br0">[</span><span class="kw35">R4</span><span class="sy0">,</span>#<span class="nu0">6</span><span class="br0">]</span></div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021C1F78 <span class="kw7">BL</span> &nbsp; &nbsp; &nbsp;WeatherMod</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1F7C <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R1</span><span class="sy0">,</span> <span class="kw35">R0</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1F7E <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R0</span><span class="sy0">,</span> <span class="nu0">0x1000</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1F82 <span class="kw5">CMP</span> &nbsp; &nbsp; <span class="kw35">R1</span><span class="sy0">,</span> <span class="kw35">R0</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1F84 <span class="kw8">BEQ</span> &nbsp; &nbsp; Bank2</div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021C1F86 <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R0</span><span class="sy0">,</span> <span class="kw35">R7</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1F88 <span class="kw7">BL</span> &nbsp; &nbsp; &nbsp;ApplyMod</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1F8C <span class="kw5">ADDS</span> &nbsp; &nbsp;<span class="kw35">R7</span><span class="sy0">,</span> <span class="kw35">R0</span><span class="sy0">,</span> #<span class="nu0">0</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1F8E</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1F8E Bank2<span class="sy0">:</span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;@ CODE XREF<span class="sy0">:</span> DamageCalc<span class="sy0">+</span>F0j</div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021C1F8E <span class="kw5">CMP</span> &nbsp; &nbsp; <span class="kw35">R6</span><span class="sy0">,</span> #<span class="nu0">0</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1F90 <span class="kw8">BEQ</span> &nbsp; &nbsp; Bank3</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1F92 <span class="kw5">LSLS</span> &nbsp; &nbsp;<span class="kw35">R7</span><span class="sy0">,</span> <span class="kw35">R7</span><span class="sy0">,</span> #<span class="nu0">1</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1F94</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1F94 Bank3<span class="sy0">:</span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;@ CODE XREF<span class="sy0">:</span> DamageCalc<span class="sy0">+</span>FCj</div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021C1F94 <span class="kw3">LDR</span> &nbsp; &nbsp; <span class="kw35">R0</span><span class="sy0">,</span> <span class="br0">[</span><span class="kw35">R5</span><span class="sy0">,</span>#<span class="nu0">4</span><span class="br0">]</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1F96 <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R1</span><span class="sy0">,</span> #<span class="nu0">7</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1F98 <span class="kw7">BL</span> &nbsp; &nbsp; &nbsp;sub_21B913C</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1F9C <span class="kw5">CMP</span> &nbsp; &nbsp; <span class="kw35">R0</span><span class="sy0">,</span> #<span class="nu0">0</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1F9E <span class="kw8">BNE</span> &nbsp; &nbsp; Bank6</div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021C1FA0 <span class="kw3">LDR</span> &nbsp; &nbsp; <span class="kw35">R0</span><span class="sy0">,</span> <span class="br0">[</span><span class="kw35">SP</span><span class="sy0">,</span>#<span class="nu0">0x30</span><span class="sy0">+</span>rig_mindamage<span class="br0">]</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1FA2 <span class="kw5">CMP</span> &nbsp; &nbsp; <span class="kw35">R0</span><span class="sy0">,</span> #<span class="nu0">0</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1FA4 <span class="kw8">BEQ</span> &nbsp; &nbsp; Bank4</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1FA6 <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R0</span><span class="sy0">,</span> #<span class="nu0">0x55</span> @ <span class="st0">'U'</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1FA8 <span class="kw7">B</span> &nbsp; &nbsp; &nbsp; Bank5</div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021C1FAA @ <span class="sy0">---------------------------------------------------------------------------</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1FAA</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1FAA Bank4<span class="sy0">:</span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;@ CODE XREF<span class="sy0">:</span> DamageCalc<span class="sy0">+</span><span class="nu0">110</span>j</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1FAA <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R0</span><span class="sy0">,</span> #<span class="nu0">0x10</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1FAC <span class="kw7">BL</span> &nbsp; &nbsp; &nbsp;BRand</div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021C1FB0 <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R1</span><span class="sy0">,</span> #<span class="nu0">0x64</span> @ <span class="st0">'d'</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1FB2 <span class="kw5">SUBS</span> &nbsp; &nbsp;<span class="kw35">R0</span><span class="sy0">,</span> <span class="kw35">R1</span><span class="sy0">,</span> <span class="kw35">R0</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1FB4 <span class="kw5">LSLS</span> &nbsp; &nbsp;<span class="kw35">R0</span><span class="sy0">,</span> <span class="kw35">R0</span><span class="sy0">,</span> #<span class="nu0">0x10</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1FB6 <span class="kw5">LSRS</span> &nbsp; &nbsp;<span class="kw35">R0</span><span class="sy0">,</span> <span class="kw35">R0</span><span class="sy0">,</span> #<span class="nu0">0x10</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1FB8</div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021C1FB8 Bank5<span class="sy0">:</span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;@ CODE XREF<span class="sy0">:</span> DamageCalc<span class="sy0">+</span><span class="nu0">114</span>j</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1FB8 <span class="kw1">MULS</span> &nbsp; &nbsp;<span class="kw35">R0</span><span class="sy0">,</span> <span class="kw35">R7</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1FBA <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R1</span><span class="sy0">,</span> #<span class="nu0">0x64</span> @ <span class="st0">'d'</span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; @ divisor</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1FBC <span class="kw7">BLX</span> &nbsp; &nbsp; divmodUnsigned__</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1FC0 <span class="kw5">ADDS</span> &nbsp; &nbsp;<span class="kw35">R7</span><span class="sy0">,</span> <span class="kw35">R0</span><span class="sy0">,</span> #<span class="nu0">0</span></div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021C1FC2</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1FC2 Bank6<span class="sy0">:</span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;@ CODE XREF<span class="sy0">:</span> DamageCalc<span class="sy0">+</span>10Aj</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1FC2 <span class="kw3">LDRB</span> &nbsp; &nbsp;<span class="kw35">R2</span><span class="sy0">,</span> <span class="br0">[</span><span class="kw35">R4</span><span class="sy0">,</span>#<span class="nu0">6</span><span class="br0">]</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1FC4 <span class="kw5">CMP</span> &nbsp; &nbsp; <span class="kw35">R2</span><span class="sy0">,</span> #<span class="nu0">0x11</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1FC6 <span class="kw8">BEQ</span> &nbsp; &nbsp; Bank7</div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021C1FC8 <span class="kw3">LDR</span> &nbsp; &nbsp; <span class="kw35">R1</span><span class="sy0">,</span> <span class="br0">[</span><span class="kw35">SP</span><span class="sy0">,</span>#<span class="nu0">0x30</span><span class="sy0">+</span>p_attacking<span class="br0">]</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1FCA <span class="kw5">ADDS</span> &nbsp; &nbsp;<span class="kw35">R0</span><span class="sy0">,</span> <span class="kw35">R5</span><span class="sy0">,</span> #<span class="nu0">0</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1FCC</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1FCC Bank_STAB<span class="sy0">:</span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;@ CODE XREF<span class="sy0">:</span> MEMORY<span class="sy0">:</span>021C1D6Aj</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1FCC <span class="kw7">BL</span> &nbsp; &nbsp; &nbsp;STAB</div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021C1FD0 <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R1</span><span class="sy0">,</span> <span class="kw35">R0</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1FD2 <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R0</span><span class="sy0">,</span> <span class="kw35">R7</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1FD4 <span class="kw7">BL</span> &nbsp; &nbsp; &nbsp;ApplyMod</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1FD8 <span class="kw5">ADDS</span> &nbsp; &nbsp;<span class="kw35">R7</span><span class="sy0">,</span> <span class="kw35">R0</span><span class="sy0">,</span> #<span class="nu0">0</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1FDA</div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021C1FDA Bank7<span class="sy0">:</span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;@ CODE XREF<span class="sy0">:</span> DamageCalc<span class="sy0">+</span><span class="nu0">132</span>j</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1FDA <span class="kw3">LDR</span> &nbsp; &nbsp; <span class="kw35">R1</span><span class="sy0">,</span> <span class="br0">[</span><span class="kw35">SP</span><span class="sy0">,</span>#<span class="nu0">0x30</span><span class="sy0">+</span>effectiveness_factor<span class="br0">]</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1FDC</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1FDC loc_21C1FDC<span class="sy0">:</span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;@ CODE XREF<span class="sy0">:</span> MEMORY<span class="sy0">:</span>021C1D7Aj</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1FDC <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R0</span><span class="sy0">,</span> <span class="kw35">R7</span></div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021C1FDE <span class="kw7">BL</span> &nbsp; &nbsp; &nbsp;TypeEffectiveness</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1FE2 <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R4</span><span class="sy0">,</span> <span class="kw35">R0</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1FE4 <span class="kw3">LDR</span> &nbsp; &nbsp; <span class="kw35">R0</span><span class="sy0">,</span> <span class="br0">[</span><span class="kw35">SP</span><span class="sy0">,</span>#<span class="nu0">0x30</span><span class="sy0">+</span>move_cat<span class="br0">]</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1FE6 <span class="kw5">CMP</span> &nbsp; &nbsp; <span class="kw35">R0</span><span class="sy0">,</span> #<span class="nu0">1</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1FE8 <span class="kw8">BNE</span> &nbsp; &nbsp; Bank_notnull</div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021C1FEA <span class="kw3">LDR</span> &nbsp; &nbsp; <span class="kw35">R0</span><span class="sy0">,</span> <span class="br0">[</span><span class="kw35">SP</span><span class="sy0">,</span>#<span class="nu0">0x30</span><span class="sy0">+</span>p_attacking<span class="br0">]</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1FEC <span class="kw7">BL</span> &nbsp; &nbsp; &nbsp;GetBpkmStatus</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1FF0 <span class="kw5">CMP</span> &nbsp; &nbsp; <span class="kw35">R0</span><span class="sy0">,</span> #<span class="nu0">4</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1FF2 <span class="kw8">BNE</span> &nbsp; &nbsp; Bank_notnull</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1FF4 <span class="kw3">LDR</span> &nbsp; &nbsp; <span class="kw35">R0</span><span class="sy0">,</span> <span class="br0">[</span><span class="kw35">SP</span><span class="sy0">,</span>#<span class="nu0">0x30</span><span class="sy0">+</span>p_attacking<span class="br0">]</span></div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021C1FF6 <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R1</span><span class="sy0">,</span> #<span class="nu0">0x11</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1FF8 <span class="kw7">BL</span> &nbsp; &nbsp; &nbsp;GetBpkmStat</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1FFC <span class="kw5">CMP</span> &nbsp; &nbsp; <span class="kw35">R0</span><span class="sy0">,</span> #<span class="nu0">0x3E</span> @ <span class="st0">'&gt;'</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1FFE <span class="kw8">BEQ</span> &nbsp; &nbsp; Bank_notnull</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C2000 <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R0</span><span class="sy0">,</span> #<span class="nu0">0x32</span> @ <span class="st0">'2'</span></div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021C2002 <span class="kw1">MULS</span> &nbsp; &nbsp;<span class="kw35">R0</span><span class="sy0">,</span> <span class="kw35">R4</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C2004 <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R1</span><span class="sy0">,</span> #<span class="nu0">0x64</span> @ <span class="st0">'d'</span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; @ divisor</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C2006 <span class="kw7">BLX</span> &nbsp; &nbsp; divmodUnsigned__</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C200A <span class="kw5">ADDS</span> &nbsp; &nbsp;<span class="kw35">R4</span><span class="sy0">,</span> <span class="kw35">R0</span><span class="sy0">,</span> #<span class="nu0">0</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C200C</div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021C200C Bank_notnull<span class="sy0">:</span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; @ CODE XREF<span class="sy0">:</span> DamageCalc<span class="sy0">+</span><span class="nu0">154</span>j</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C200C &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; @ DamageCalc<span class="sy0">+</span>15Ej <span class="sy0">...</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C200C <span class="kw5">CMP</span> &nbsp; &nbsp; <span class="kw35">R4</span><span class="sy0">,</span> #<span class="nu0">0</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C200E <span class="kw8">BNE</span> &nbsp; &nbsp; Bank8</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C2010 <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R4</span><span class="sy0">,</span> #<span class="nu0">1</span></div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021C2012</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C2012 Bank8<span class="sy0">:</span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;@ CODE XREF<span class="sy0">:</span> DamageCalc<span class="sy0">+</span>17Aj</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C2012 <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R1</span><span class="sy0">,</span> <span class="nu0">0x1000</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C2016 <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R0</span><span class="sy0">,</span> #<span class="nu0">0x35</span> @ <span class="st0">'5'</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C2018 <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R2</span><span class="sy0">,</span> #<span class="nu0">0x29</span> @ <span class="st0">')'</span></div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021C201A <span class="kw5">LSLS</span> &nbsp; &nbsp;<span class="kw35">R3</span><span class="sy0">,</span> <span class="kw35">R1</span><span class="sy0">,</span> #<span class="nu0">5</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C201C <span class="kw7">BL</span> &nbsp; &nbsp; &nbsp;StoreVolatileVariableFlag3e3</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C2020 <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R0</span><span class="sy0">,</span> #<span class="nu0">0x32</span> @ <span class="st0">'2'</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C2022 <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R1</span><span class="sy0">,</span> <span class="kw35">R4</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C2024 <span class="kw7">BL</span> &nbsp; &nbsp; &nbsp;InitVolatileVariable</div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021C2028 <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R0</span><span class="sy0">,</span> <span class="kw35">R5</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C202A <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R1</span><span class="sy0">,</span> #<span class="nu0">0x47</span> @ <span class="st0">'G'</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C202C <span class="kw7">BL</span> &nbsp; &nbsp; &nbsp;ApplyTriggers</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C2030 <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R0</span><span class="sy0">,</span> #<span class="nu0">0x35</span> @ <span class="st0">'5'</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C2032 <span class="kw7">BL</span> &nbsp; &nbsp; &nbsp;ReadVolatileVariable</div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021C2036 <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R4</span><span class="sy0">,</span> <span class="kw35">R0</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C2038 <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R0</span><span class="sy0">,</span> #<span class="nu0">0x32</span> @ <span class="st0">'2'</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C203A <span class="kw7">BL</span> &nbsp; &nbsp; &nbsp;ReadVolatileVariable</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C203E <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R1</span><span class="sy0">,</span> <span class="kw35">R4</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C2040 <span class="kw7">BL</span> &nbsp; &nbsp; &nbsp;ApplyMod</div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021C2044 <span class="kw3">STR</span> &nbsp; &nbsp; <span class="kw35">R0</span><span class="sy0">,</span> <span class="br0">[</span><span class="kw35">SP</span><span class="sy0">,</span>#<span class="nu0">0x30</span><span class="sy0">+</span>current_damage<span class="br0">]</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C2046</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C2046 Bank9<span class="sy0">:</span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;@ CODE XREF<span class="sy0">:</span> DamageCalc<span class="sy0">+</span><span class="nu0">84</span>j</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C2046 <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R0</span><span class="sy0">,</span> <span class="kw35">R5</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C2048 <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R1</span><span class="sy0">,</span> #<span class="nu0">0x48</span> @ <span class="st0">'H'</span></div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021C204A <span class="kw7">BL</span> &nbsp; &nbsp; &nbsp;ApplyTriggers</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C204E <span class="kw3">LDR</span> &nbsp; &nbsp; <span class="kw35">R0</span><span class="sy0">,</span> =<span class="nu0">0x1C8D</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C2050 <span class="kw7">BL</span> &nbsp; &nbsp; &nbsp;FreeVolatileVariable</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C2054 <span class="kw3">LDR</span> &nbsp; &nbsp; <span class="kw35">R1</span><span class="sy0">,</span> <span class="br0">[</span><span class="kw35">SP</span><span class="sy0">,</span>#<span class="nu0">0x30</span><span class="sy0">+</span>p_store_result<span class="br0">]</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C2056 <span class="kw3">LDR</span> &nbsp; &nbsp; <span class="kw35">R0</span><span class="sy0">,</span> <span class="br0">[</span><span class="kw35">SP</span><span class="sy0">,</span>#<span class="nu0">0x30</span><span class="sy0">+</span>current_damage<span class="br0">]</span></div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021C2058 <span class="kw3">STRH</span> &nbsp; &nbsp;<span class="kw35">R0</span><span class="sy0">,</span> <span class="br0">[</span><span class="kw35">R1</span><span class="br0">]</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C205A <span class="kw3">LDR</span> &nbsp; &nbsp; <span class="kw35">R0</span><span class="sy0">,</span> <span class="br0">[</span><span class="kw35">SP</span><span class="sy0">,</span>#<span class="nu0">0x30</span><span class="sy0">+</span>static_damage<span class="br0">]</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C205C <span class="kw1">ADD</span> &nbsp; &nbsp; <span class="kw35">SP</span><span class="sy0">,</span> <span class="kw35">SP</span><span class="sy0">,</span> #<span class="nu0">0x1C</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C205E <span class="kw3">POP</span> &nbsp; &nbsp; <span class="br0">{</span><span class="kw35">R4</span><span class="sy0">-</span><span class="kw35">R7</span><span class="sy0">,</span><span class="kw35">PC</span><span class="br0">}</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C205E @ End of function DamageCalc</div></li>
<li class="li2"><div class="de2">&nbsp;</div></li>
</ol>
</div>
<br />

<p>
 Roughly speaking, the damage formula in Pokémon is a big multiplication, each factor representing the user's level and attack
 stat, the foe's defense stat, and a bunch of factors for STAB, held items, abilities and other field effects.
 In a perfect world where ARM CPUs could work on real numbers, it would be possible to multiply each factor in any order
 and get the same result, but in practice the game will round some multiplications and truncate others, meaning that
 in order to get accurate damage results, <i>it is of utmost importance to perform the multiplication in the same order
 as the game and using the same rounding methods</i>. Even though rounding errors might not sound like a big problem, they
 will be amplified at each step, and a few factors such as Reflect and Life Orb in a double battle can cause a significant
 difference between an unrounded and a properly rounded calculation.
</p>
<p>
There are three main parameters for damage calculation: the user's attack stat, the target's defense stat and the move's
base power. To compute these stats, the game starts from a base value and apply a <i>modifier</i> to reflect the various
effects that can alter the base value. This modifier is obtained by running through a list of short functions called triggers
that are called based on the current active effects on field. Different triggers can modify the same modifier before it is
applied, this operation is called <i>chaining</i> and is <a href="#chain-mod">explained below</a>.
</p>

<p>Once the main parameters are set, the general steps of the calculation are as follows:</p>

<pre>BaseDamage = ((((2 × Level) ÷ 5 + 2) * BasePower * [Sp]Atk) ÷ [Sp]Def) ÷ 50 + 2</pre>

<ol>
 <li>Apply the multi-target modifier</li>
 <li>Apply the weather modifier</li>
 <li>In case of a critical hit, double the value</li>
 <li>Alter with a random factor</li>
 <li>Apply STAB modifier</li>
 <li>Alter with type effectiveness</li>
 <li>Alter with user's burn</li>
 <li>Make sure damage is at least 1</li>
 <li>Apply the final modifier</li>
</ol>

<p>
 In this article, ÷ always denotes the in-game unsigned divmod function, i.e. the unrounded/truncated integer division.
 By contrast, "apply a modifier" is a rounded operation explained in the <a href="#apply-mod">next subsection</a>.
</p>

<p>
There are some exceptions to the formula above that correspond to the set of triggers at the very top of the damage function;
they are detailed in <a href="#special-cases">a separate section</a>.
</p>

<h3><a name="apply-mod">How to apply a modifier</a></h3>

<div class="arm listing">
<ol><li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021D7B30 @ int __fastcall ApplyMod<span class="br0">(</span>int base_value<span class="sy0">,</span> int modifier<span class="br0">)</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021D7B30 ApplyMod<span class="sy0">:</span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; @ CODE XREF<span class="sy0">:</span> sub_21BC968<span class="sy0">+</span><span class="nu0">68</span>p</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021D7B30 <span class="kw1">MULS</span> &nbsp; &nbsp;<span class="kw35">R1</span><span class="sy0">,</span> <span class="kw35">R0</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021D7B32 <span class="kw3">LDR</span> &nbsp; &nbsp; <span class="kw35">R0</span><span class="sy0">,</span> =<span class="nu0">0xFFF</span></div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021D7B34 <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R2</span><span class="sy0">,</span> <span class="kw35">R1</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021D7B36 <span class="kw5">ANDS</span> &nbsp; &nbsp;<span class="kw35">R2</span><span class="sy0">,</span> <span class="kw35">R0</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021D7B38 <span class="kw5">LSRS</span> &nbsp; &nbsp;<span class="kw35">R0</span><span class="sy0">,</span> <span class="kw35">R1</span><span class="sy0">,</span> #<span class="nu0">0xC</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021D7B3A <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R1</span><span class="sy0">,</span> <span class="nu0">0x800</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021D7B3E <span class="kw5">CMP</span> &nbsp; &nbsp; <span class="kw35">R2</span><span class="sy0">,</span> <span class="kw35">R1</span></div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021D7B40 <span class="kw8">BLS</span> &nbsp; &nbsp; locret_21D7B44</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021D7B42 <span class="kw5">ADDS</span> &nbsp; &nbsp;<span class="kw35">R0</span><span class="sy0">,</span> <span class="kw35">R0</span><span class="sy0">,</span> #<span class="nu0">1</span></div></li>
</ol>
</div><br />

<p>A modifier is a 16 bit fixed point factor, i.e. a fraction whose divisor is always 0x1000 (4096). For instance, 0x14cc is the modifier for Life Orb (0x14cc/0x1000 is about 1.3). Applying the modifier
<i>M</i> to the damage value <i>D</i> means multiplying <i>D</i> by <i>M</i> and dividing the result by 0x1000; then if the decimal part is &le;0.5, round the result down, otherwise round it up.
Simply put: <pre>D' = round(D * M / 0x1000)</pre></p>

<h3><a name="chain-mod">How to chain modifiers</a></h3>

<div class="arm listing">
<ol><li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021D7724 @ void __fastcall ChainMod<span class="br0">(</span>__int16 Volatile_index<span class="sy0">,</span> int mod<span class="br0">)</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021D7724 ChainMod<span class="sy0">:</span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; @ CODE XREF<span class="sy0">:</span> AccuracyCheck<span class="sy0">+</span>FAp</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021D7724 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; @ MEMORY<span class="sy0">:</span>021D8B5Ep <span class="sy0">...</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021D7724 <span class="kw3">PUSH</span> &nbsp; &nbsp;<span class="br0">{</span><span class="kw35">R3</span><span class="sy0">-</span><span class="kw35">R7</span><span class="sy0">,</span><span class="kw35">LR</span><span class="br0">}</span></div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021D7726 <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R2</span><span class="sy0">,</span> <span class="kw35">R0</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021D7728 <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R7</span><span class="sy0">,</span> <span class="kw35">R1</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021D772A <span class="kw3">LDR</span> &nbsp; &nbsp; <span class="kw35">R0</span><span class="sy0">,</span> =VolatileStore</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021D772C <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R1</span><span class="sy0">,</span> <span class="kw35">R2</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021D772E <span class="kw7">BL</span> &nbsp; &nbsp; &nbsp;sub_21D7808</div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021D7732 <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R5</span><span class="sy0">,</span> <span class="kw35">R0</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021D7734 <span class="kw8">BMI</span> &nbsp; &nbsp; locret_21D7772</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021D7736 <span class="kw3">LDR</span> &nbsp; &nbsp; <span class="kw35">R0</span><span class="sy0">,</span> =VolatileStore</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021D7738 <span class="kw5">ADDS</span> &nbsp; &nbsp;<span class="kw35">R1</span><span class="sy0">,</span> <span class="kw35">R0</span><span class="sy0">,</span> <span class="kw35">R5</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021D773A <span class="kw3">LDR</span> &nbsp; &nbsp; <span class="kw35">R0</span><span class="sy0">,</span> =<span class="nu0">0x544</span></div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021D773C <span class="kw3">LDRB</span> &nbsp; &nbsp;<span class="kw35">R0</span><span class="sy0">,</span> <span class="br0">[</span><span class="kw35">R1</span><span class="sy0">,</span><span class="kw35">R0</span><span class="br0">]</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021D773E <span class="kw5">CMP</span> &nbsp; &nbsp; <span class="kw35">R0</span><span class="sy0">,</span> #<span class="nu0">3</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021D7740 <span class="kw8">BNE</span> &nbsp; &nbsp; locret_21D7772</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021D7742 <span class="kw3">LDR</span> &nbsp; &nbsp; <span class="kw35">R4</span><span class="sy0">,</span> =VolatileStore</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021D7744 <span class="kw5">LSLS</span> &nbsp; &nbsp;<span class="kw35">R6</span><span class="sy0">,</span> <span class="kw35">R5</span><span class="sy0">,</span> #<span class="nu0">2</span></div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021D7746 <span class="kw5">ADDS</span> &nbsp; &nbsp;<span class="kw35">R4</span><span class="sy0">,</span> #<span class="nu0">0xC4</span> @ <span class="st0">'-'</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021D7748 <span class="kw3">LDR</span> &nbsp; &nbsp; <span class="kw35">R0</span><span class="sy0">,</span> <span class="br0">[</span><span class="kw35">R4</span><span class="sy0">,</span><span class="kw35">R6</span><span class="br0">]</span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; @ num1</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021D774A <span class="kw5">ASRS</span> &nbsp; &nbsp;<span class="kw35">R3</span><span class="sy0">,</span> <span class="kw35">R7</span><span class="sy0">,</span> #<span class="nu0">0x1F</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021D774C <span class="kw5">ASRS</span> &nbsp; &nbsp;<span class="kw35">R1</span><span class="sy0">,</span> <span class="kw35">R0</span><span class="sy0">,</span> #<span class="nu0">0x1F</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021D774E <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R2</span><span class="sy0">,</span> <span class="kw35">R7</span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;@ num2</div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021D7750 <span class="kw7">BLX</span> &nbsp; &nbsp; mul64Unsigned__</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021D7754 <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R3</span><span class="sy0">,</span> <span class="kw35">R1</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021D7756 <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R1</span><span class="sy0">,</span> <span class="kw35">R5</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021D7758 <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R5</span><span class="sy0">,</span> #<span class="nu0">2</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021D775A <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R2</span><span class="sy0">,</span> <span class="kw35">R0</span></div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021D775C <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R7</span><span class="sy0">,</span> #<span class="nu0">0</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021D775E <span class="kw5">LSLS</span> &nbsp; &nbsp;<span class="kw35">R5</span><span class="sy0">,</span> <span class="kw35">R5</span><span class="sy0">,</span> #<span class="nu0">0xA</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021D7760 <span class="kw5">ADDS</span> &nbsp; &nbsp;<span class="kw35">R2</span><span class="sy0">,</span> <span class="kw35">R2</span><span class="sy0">,</span> <span class="kw35">R5</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021D7762 <span class="kw5">ADCS</span> &nbsp; &nbsp;<span class="kw35">R3</span><span class="sy0">,</span> <span class="kw35">R7</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021D7764 <span class="kw3">LDR</span> &nbsp; &nbsp; <span class="kw35">R0</span><span class="sy0">,</span> =VolatileStore</div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021D7766 <span class="kw5">LSLS</span> &nbsp; &nbsp;<span class="kw35">R3</span><span class="sy0">,</span> <span class="kw35">R3</span><span class="sy0">,</span> #<span class="nu0">0x14</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021D7768 <span class="kw5">LSRS</span> &nbsp; &nbsp;<span class="kw35">R2</span><span class="sy0">,</span> <span class="kw35">R2</span><span class="sy0">,</span> #<span class="nu0">0xC</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021D776A <span class="kw5">ORRS</span> &nbsp; &nbsp;<span class="kw35">R2</span><span class="sy0">,</span> <span class="kw35">R3</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021D776C <span class="kw7">BL</span> &nbsp; &nbsp; &nbsp;sub_21D782C</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021D7770 <span class="kw3">STR</span> &nbsp; &nbsp; <span class="kw35">R0</span><span class="sy0">,</span> <span class="br0">[</span><span class="kw35">R4</span><span class="sy0">,</span><span class="kw35">R6</span><span class="br0">]</span></div></li>
</ol>
</div><br />

<p>Recall that modifiers for a given parameters are computed by the triggers for that parameter. This means that when multiple triggers apply, you have to chain the modifier for the parameter, starting from 0x1000.
If the current modifier is <i>M</i> and you want to chain with another modifier <i>M'</i>, the resulting modifier would be: <pre>M'' = ((M * M') + 0x800) >> 12</pre></p>

<h3><a name="mt-mod">The multi-target modifier</a></h3>
<div class="arm listing">
<ol><li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C0DCC @ <span class="sy0">---------------------------------------------------------------------------</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C0DBE <span class="kw7">BL</span> &nbsp; &nbsp; &nbsp;sub_21C0EE4</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C0DC2 <span class="kw5">CMP</span> &nbsp; &nbsp; <span class="kw35">R0</span><span class="sy0">,</span> #<span class="nu0">1</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C0DC4 <span class="kw8">BNE</span> &nbsp; &nbsp; loc_21C0DCC</div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021C0DC6 <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R4</span><span class="sy0">,</span> <span class="nu0">0x1000</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C0DCA <span class="kw7">B</span> &nbsp; &nbsp; &nbsp; loc_21C0DD0</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C0DCC @ <span class="sy0">---------------------------------------------------------------------------</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C0DCC loc_21C0DCC<span class="sy0">:</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C0DCC <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R4</span><span class="sy0">,</span> <span class="nu0">0xC00</span></div></li>
</ol></div>
<br />

This modifier doesn't have any trigger and is set to 0xC00 if the move has more than one target and 0x1000 otherwise.
Being a target is independant of all accuracy and effectiveness checks, but a fainted Pokémon on the field will not count
as a target.

<h3><a name="weather-mod">The weather modifier</a></h3>

<div class="arm listing">
<ol><li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021D7C58 @ int __fastcall WeatherMod<span class="br0">(</span>__int16 active_weather<span class="br0">)</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021D7C58 WeatherMod<span class="sy0">:</span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; @ CODE XREF<span class="sy0">:</span> DamageCalc<span class="sy0">+</span>E4p</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021D7C58 <span class="kw5">CMP</span> &nbsp; &nbsp; <span class="kw35">R0</span><span class="sy0">,</span> #<span class="nu0">1</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021D7C5A <span class="kw8">BEQ</span> &nbsp; &nbsp; loc_21D7C62</div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021D7C5C <span class="kw5">CMP</span> &nbsp; &nbsp; <span class="kw35">R0</span><span class="sy0">,</span> #<span class="nu0">2</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021D7C5E <span class="kw8">BEQ</span> &nbsp; &nbsp; loc_21D7C76</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021D7C60 <span class="kw7">B</span> &nbsp; &nbsp; &nbsp; loc_21D7C8A</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021D7C62 @ <span class="sy0">---------------------------------------------------------------------------</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021D7C62</div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021D7C62 loc_21D7C62<span class="sy0">:</span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;@ CODE XREF<span class="sy0">:</span> WeatherMod<span class="sy0">+</span><span class="nu0">2</span>j</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021D7C62 <span class="kw5">CMP</span> &nbsp; &nbsp; <span class="kw35">R1</span><span class="sy0">,</span> #<span class="nu0">9</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021D7C64 <span class="kw8">BNE</span> &nbsp; &nbsp; loc_21D7C6C</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021D7C66 <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R0</span><span class="sy0">,</span> <span class="nu0">0x1800</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021D7C6A <span class="kw7">BX</span> &nbsp; &nbsp; &nbsp;<span class="kw35">LR</span></div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021D7C6C @ <span class="sy0">---------------------------------------------------------------------------</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021D7C6C</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021D7C6C loc_21D7C6C<span class="sy0">:</span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;@ CODE XREF<span class="sy0">:</span> WeatherMod<span class="sy0">+</span>Cj</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021D7C6C <span class="kw5">CMP</span> &nbsp; &nbsp; <span class="kw35">R1</span><span class="sy0">,</span> #<span class="nu0">0xA</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021D7C6E <span class="kw8">BNE</span> &nbsp; &nbsp; loc_21D7C8A</div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021D7C70 <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R0</span><span class="sy0">,</span> <span class="nu0">0x800</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021D7C74 <span class="kw7">BX</span> &nbsp; &nbsp; &nbsp;<span class="kw35">LR</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021D7C76 @ <span class="sy0">---------------------------------------------------------------------------</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021D7C76</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021D7C76 loc_21D7C76<span class="sy0">:</span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;@ CODE XREF<span class="sy0">:</span> WeatherMod<span class="sy0">+</span><span class="nu0">6</span>j</div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021D7C76 <span class="kw5">CMP</span> &nbsp; &nbsp; <span class="kw35">R1</span><span class="sy0">,</span> #<span class="nu0">9</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021D7C78 <span class="kw8">BNE</span> &nbsp; &nbsp; loc_21D7C80</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021D7C7A <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R0</span><span class="sy0">,</span> <span class="nu0">0x800</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021D7C7E <span class="kw7">BX</span> &nbsp; &nbsp; &nbsp;<span class="kw35">LR</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021D7C80 @ <span class="sy0">---------------------------------------------------------------------------</span></div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021D7C80</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021D7C80 loc_21D7C80<span class="sy0">:</span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;@ CODE XREF<span class="sy0">:</span> WeatherMod<span class="sy0">+</span><span class="nu0">20</span>j</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021D7C80 <span class="kw5">CMP</span> &nbsp; &nbsp; <span class="kw35">R1</span><span class="sy0">,</span> #<span class="nu0">0xA</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021D7C82 <span class="kw8">BNE</span> &nbsp; &nbsp; loc_21D7C8A</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021D7C84 <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R0</span><span class="sy0">,</span> <span class="nu0">0x1800</span></div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021D7C88 <span class="kw7">BX</span> &nbsp; &nbsp; &nbsp;<span class="kw35">LR</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021D7C8A @ <span class="sy0">---------------------------------------------------------------------------</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021D7C8A</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021D7C8A loc_21D7C8A<span class="sy0">:</span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;@ CODE XREF<span class="sy0">:</span> WeatherMod<span class="sy0">+</span><span class="nu0">8</span>j</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021D7C8A &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; @ WeatherMod<span class="sy0">+</span><span class="nu0">16</span>j <span class="sy0">...</span></div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021D7C8A <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R0</span><span class="sy0">,</span> <span class="nu0">0x1000</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021D7C8E <span class="kw7">BX</span> &nbsp; &nbsp; &nbsp;<span class="kw35">LR</span></div></li>
</ol>
</div>
<br />

<p>
Even though the weather modifier has its own set of triggers listed below, they never affect the actual value of the
modifier: a water move used during rain or a fire move used during intense sunlight will use 0x1800 as modifier, while a
fire move used during rain or a water move during intense sunlight will use 0x800.
</p>

<table class="sortable">
 <thead>
  <tr>
   <th width="110">Trigger address</th>
   <th>Trigger description</th>
  </tr>
 </thead>
	
 <tbody>
  <tr>
   <td>21d9850</td>
   <td>Cancel weather if any Pokémon on field has Air Lock or Cloud Nine.</td>
  </tr>
  <tr class="a">
   <td>21d9084</td>
   <td>Internal.</td>
  </tr>
 </tbody>
</table>

<h3><a name="crits">Critical hits</a></h3>

<table class="sortable">
 <thead>
  <tr>
   <th width="110">Trigger address</th>
   <th>Trigger description</th>
  </tr>
 </thead>
	
 <tbody>
  <tr>
   <td>21d9be8</td>
   <td>Super Luck: increase user's critical hit level by 1.</td>
  </tr>
  <tr class="a">
   <td>21d9bc4</td>
   <td>Battle Armor / Shell Armor: if the target has either of these abilities, bypass critical hit checks.</td>
  </tr>
  <tr>
   <td>21dae18</td>
   <td>Internal.</td>
  </tr>
  <tr class="a">
   <td>21de5fc</td>
   <td>Stick: if user is Farfetch'd and holds Stick, increase critical hit level by 2.</td>
  </tr>
  <tr>
   <td>21de5b8</td>
   <td>Lucky Punch: if user is Chansey and holds Lucky Punch, increase critical hit level by 2.</td>
  </tr>
  <tr class="a">
   <td>21de584</td>
   <td>Razor Claw: increase holder's critical hit level by 1.</td>
  </tr>
  <tr>
   <td>21e53b4</td>
   <td>Internal.</td>
  </tr>
  <tr class="a">
   <td>6899210</td>
   <td>Lucky Chant: if the user's party is protected by Lucky Chant, bypass critical hit checks.</td>
  </tr>
 </tbody>
</table>

<h3><a name="random">The random factor</a></h3>

<p>Provided the battle isn't rigged to always use minimum damage, the current damage value <i>D</i> is altered using a random number <i>0 &le; R &le; 15</i>:</p>
<pre>D' = (D * (100-R)) &divide; 100</pre>

<h3><a name="stab">STAB</a></h3>

<div class="arm listing">
<ol><li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C760C STAB<span class="sy0">:</span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; @ CODE XREF<span class="sy0">:</span> DamageCalc<span class="sy0">:</span>Bank_STABp</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C760C <span class="kw3">PUSH</span> &nbsp; &nbsp;<span class="br0">{</span><span class="kw35">R3</span><span class="sy0">-</span><span class="kw35">R7</span><span class="sy0">,</span><span class="kw35">LR</span><span class="br0">}</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C760E <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R7</span><span class="sy0">,</span> <span class="kw35">R1</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C7610 <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R5</span><span class="sy0">,</span> <span class="kw35">R0</span></div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021C7612 <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R0</span><span class="sy0">,</span> <span class="kw35">R7</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C7614 <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R1</span><span class="sy0">,</span> <span class="kw35">R2</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C7616 <span class="kw7">BL</span> &nbsp; &nbsp; &nbsp;IsMoveOfUserType</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C761A <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R6</span><span class="sy0">,</span> <span class="kw35">R0</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C761C <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R4</span><span class="sy0">,</span> #<span class="nu0">1</span></div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021C761E <span class="kw3">LDR</span> &nbsp; &nbsp; <span class="kw35">R0</span><span class="sy0">,</span> =<span class="nu0">0x3178</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C7620 <span class="kw5">LSLS</span> &nbsp; &nbsp;<span class="kw35">R4</span><span class="sy0">,</span> <span class="kw35">R4</span><span class="sy0">,</span> #<span class="nu0">0xC</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C7622 <span class="kw7">BL</span> &nbsp; &nbsp; &nbsp;AllocateVolatileVariables</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C7626 <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R0</span><span class="sy0">,</span> <span class="kw35">R7</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C7628 <span class="kw7">BL</span> &nbsp; &nbsp; &nbsp;Dereference25</div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021C762C <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R1</span><span class="sy0">,</span> <span class="kw35">R0</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C762E <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R0</span><span class="sy0">,</span> #<span class="nu0">2</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C7630 <span class="kw7">BL</span> &nbsp; &nbsp; &nbsp;StoreVolatileVariableFlag3e4</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C7634 <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R0</span><span class="sy0">,</span> #<span class="nu0">0x51</span> @ <span class="st0">'Q'</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C7636 <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R1</span><span class="sy0">,</span> <span class="kw35">R6</span></div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021C7638 <span class="kw7">BL</span> &nbsp; &nbsp; &nbsp;StoreVolatileVariableFlag3e1</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C763C <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R0</span><span class="sy0">,</span> <span class="kw35">R5</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C763E <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R1</span><span class="sy0">,</span> #<span class="nu0">0x40</span> @ <span class="st0">'@'</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C7640 <span class="kw7">BL</span> &nbsp; &nbsp; &nbsp;ApplyTriggers</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C7644 <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R0</span><span class="sy0">,</span> #<span class="nu0">0x51</span> @ <span class="st0">'Q'</span></div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021C7646 <span class="kw7">BL</span> &nbsp; &nbsp; &nbsp;ReadVolatileVariable</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C764A <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R1</span><span class="sy0">,</span> <span class="kw35">R0</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C764C <span class="kw8">BEQ</span> &nbsp; &nbsp; loc_21C7652</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C764E <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R4</span><span class="sy0">,</span> <span class="nu0">0x1800</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C7652</div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021C7652 loc_21C7652<span class="sy0">:</span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;@ CODE XREF<span class="sy0">:</span> STAB<span class="sy0">+</span><span class="nu0">40</span>j</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C7652 <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R0</span><span class="sy0">,</span> #<span class="nu0">0x44</span> @ <span class="st0">'D'</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C7654 <span class="kw7">BL</span> &nbsp; &nbsp; &nbsp;StoreVolatileVariableFlag3e4</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C7658 <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R0</span><span class="sy0">,</span> #<span class="nu0">0x35</span> @ <span class="st0">'5'</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C765A <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R1</span><span class="sy0">,</span> <span class="kw35">R4</span></div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021C765C <span class="kw7">BL</span> &nbsp; &nbsp; &nbsp;InitVolatileVariable</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C7660 <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R0</span><span class="sy0">,</span> <span class="kw35">R5</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C7662 <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R1</span><span class="sy0">,</span> #<span class="nu0">0x41</span> @ <span class="st0">'A'</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C7664 <span class="kw7">BL</span> &nbsp; &nbsp; &nbsp;ApplyTriggers</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C7668 <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R0</span><span class="sy0">,</span> #<span class="nu0">0x35</span> @ <span class="st0">'5'</span></div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021C766A <span class="kw7">BL</span> &nbsp; &nbsp; &nbsp;ReadVolatileVariable</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C766E <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R4</span><span class="sy0">,</span> <span class="kw35">R0</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C7670 <span class="kw3">LDR</span> &nbsp; &nbsp; <span class="kw35">R0</span><span class="sy0">,</span> =<span class="nu0">0x3189</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C7672 <span class="kw7">BL</span> &nbsp; &nbsp; &nbsp;FreeVolatileVariable</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C7676 <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R0</span><span class="sy0">,</span> <span class="kw35">R4</span></div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021C7678 <span class="kw3">POP</span> &nbsp; &nbsp; <span class="br0">{</span><span class="kw35">R3</span><span class="sy0">-</span><span class="kw35">R7</span><span class="sy0">,</span><span class="kw35">PC</span><span class="br0">}</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C7678 @ End of function STAB</div></li>
</ol>
</div><br />

<p>If the type of the move match one of its users', the STAB modifier is set to 0x1800. The only trigger for this modifier is listed below.</p>

<table class="sortable">
 <thead>
  <tr>
   <th width="110">Trigger address</th>
   <th>Trigger description</th>
  </tr>
 </thead>
	
 <tbody>
  <tr>
   <td>21D8C2D</td>
   <td>Adaptability: if the user has this ability and move matches one of the user's types, the initial value for the final modifier is set to 0x2000.</td>
  </tr>
 </tbody>
</table>

<h3><a name="type-eff">Type effectiveness</a></h3>

<div class="arm listing">
<ol><li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021D7A8C TypeEffectiveness<span class="sy0">:</span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;@ CODE XREF<span class="sy0">:</span> DamageCalc<span class="sy0">+</span>14Ap</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021D7A8C <span class="kw5">CMP</span> &nbsp; &nbsp; <span class="kw35">R1</span><span class="sy0">,</span> #<span class="nu0">5</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021D7A8E <span class="kw8">BHI</span> &nbsp; &nbsp; locret_21D7ABA</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021D7A90 <span class="kw5">ADDS</span> &nbsp; &nbsp;<span class="kw35">R1</span><span class="sy0">,</span> <span class="kw35">R1</span><span class="sy0">,</span> <span class="kw35">R1</span></div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021D7A92 <span class="kw1">ADD</span> &nbsp; &nbsp; <span class="kw35">R1</span><span class="sy0">,</span> <span class="kw35">PC</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021D7A94 <span class="kw3">LDRH</span> &nbsp; &nbsp;<span class="kw35">R1</span><span class="sy0">,</span> <span class="br0">[</span><span class="kw35">R1</span><span class="sy0">,</span>#<span class="nu0">6</span><span class="br0">]</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021D7A96 <span class="kw5">LSLS</span> &nbsp; &nbsp;<span class="kw35">R1</span><span class="sy0">,</span> <span class="kw35">R1</span><span class="sy0">,</span> #<span class="nu0">0x10</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021D7A98 <span class="kw5">ASRS</span> &nbsp; &nbsp;<span class="kw35">R1</span><span class="sy0">,</span> <span class="kw35">R1</span><span class="sy0">,</span> #<span class="nu0">0x10</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021D7A9A <span class="kw1">ADD</span> &nbsp; &nbsp; <span class="kw35">PC</span><span class="sy0">,</span> <span class="kw35">R1</span></div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021D7A9A @ <span class="sy0">---------------------------------------------------------------------------</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021D7A9C <span class="sy0">.</span>byte &nbsp;<span class="nu0">0xA</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021D7A9D <span class="sy0">.</span>byte &nbsp; &nbsp;<span class="nu0">0</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021D7A9E <span class="sy0">.</span>byte &nbsp;<span class="nu0">0xE</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021D7A9F <span class="sy0">.</span>byte &nbsp; &nbsp;<span class="nu0">0</span></div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021D7AA0 <span class="sy0">.</span>byte <span class="nu0">0x12</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021D7AA1 <span class="sy0">.</span>byte &nbsp; &nbsp;<span class="nu0">0</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021D7AA2 <span class="sy0">.</span>byte <span class="nu0">0x14</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021D7AA3 <span class="sy0">.</span>byte &nbsp; &nbsp;<span class="nu0">0</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021D7AA4 <span class="sy0">.</span>byte <span class="nu0">0x16</span></div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021D7AA5 <span class="sy0">.</span>byte &nbsp; &nbsp;<span class="nu0">0</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021D7AA6 <span class="sy0">.</span>byte <span class="nu0">0x1A</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021D7AA7 <span class="sy0">.</span>byte &nbsp; &nbsp;<span class="nu0">0</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021D7AA8 @ <span class="sy0">---------------------------------------------------------------------------</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021D7AA8 <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R0</span><span class="sy0">,</span> #<span class="nu0">0</span></div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021D7AAA <span class="kw7">BX</span> &nbsp; &nbsp; &nbsp;<span class="kw35">LR</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021D7AAC @ <span class="sy0">---------------------------------------------------------------------------</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021D7AAC <span class="kw5">LSRS</span> &nbsp; &nbsp;<span class="kw35">R0</span><span class="sy0">,</span> <span class="kw35">R0</span><span class="sy0">,</span> #<span class="nu0">2</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021D7AAE <span class="kw7">BX</span> &nbsp; &nbsp; &nbsp;<span class="kw35">LR</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021D7AB0 @ <span class="sy0">---------------------------------------------------------------------------</span></div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021D7AB0 <span class="kw5">LSRS</span> &nbsp; &nbsp;<span class="kw35">R0</span><span class="sy0">,</span> <span class="kw35">R0</span><span class="sy0">,</span> #<span class="nu0">1</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021D7AB2 <span class="kw7">BX</span> &nbsp; &nbsp; &nbsp;<span class="kw35">LR</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021D7AB4 @ <span class="sy0">---------------------------------------------------------------------------</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021D7AB4 <span class="kw5">LSLS</span> &nbsp; &nbsp;<span class="kw35">R0</span><span class="sy0">,</span> <span class="kw35">R0</span><span class="sy0">,</span> #<span class="nu0">1</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021D7AB6 <span class="kw7">BX</span> &nbsp; &nbsp; &nbsp;<span class="kw35">LR</span></div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021D7AB8 @ <span class="sy0">---------------------------------------------------------------------------</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021D7AB8 <span class="kw5">LSLS</span> &nbsp; &nbsp;<span class="kw35">R0</span><span class="sy0">,</span> <span class="kw35">R0</span><span class="sy0">,</span> #<span class="nu0">2</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021D7ABA</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021D7ABA locret_21D7ABA<span class="sy0">:</span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; @ CODE XREF<span class="sy0">:</span> TypeEffectiveness<span class="sy0">+</span><span class="nu0">2</span>j</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021D7ABA <span class="kw7">BX</span> &nbsp; &nbsp; &nbsp;<span class="kw35">LR</span></div></li>
</ol>
</div><br />

<p>Type effectiveness doesn't use a modifier but a simple left (respectively right) shift of one for a simple and two
for a double weakness (respectively resistance), in other words an unrounded division or multiplication by 2 or 4./p>

<h3><a name="burn">Effect of a burn</a></h3>

<p>The effect of a burn is directly taken into account in the damage formula. First, the game checks if the attack is
 physical, then if the user is burned, and finally if its ability is different than Guts. If all conditions are satisfied,
 the current damage is divided by 2 with no rounding.</p>

<h3><a name="final">Final modifier</a></h3>

The final modifier is decided by calling the appropriate triggers, which are listed below. Be sure to chain the modifiers in the order they are listed in.

<table class="sortable">
 <thead>
  <tr>
   <th width="110">Trigger address</th>
   <th width="90">Modifier</th>
   <th>Trigger description</th>
  </tr>
 </thead>
	
 <tbody>
  <tr>
   <td>6898E29</td>
   <td>Variable</td>
   <td>If the target's side is affected by Reflect, the move used was physical, the user's ability isn't Inflitrator and the critical hit flag isn't set.
    <br />The value of the modificator is 0xA8F if there is more than one Pokémon per side of the field and 0x800 otherwise.</td>
  </tr>
  <tr class="a">
   <td>6898E45</td>
   <td>Variable</td>
   <td>Same as above with Light Screen and special moves.</td>
  </tr>
  <tr>
   <td>21DC125</td>
   <td>0x800</td>
   <td>If the target's ability is Multiscale and the target is at full health.</td>
  </tr>
  <tr class="a">
   <td>21D8B3D</td>
   <td>0x2000</td>
   <td>If the user's ability is Tinted Lens and the move wasn't very effective.</td>
  </tr>
  <tr>
   <td>21DC15D</td>
   <td>0xC00</td>
   <td>If one of the target's allies' ability is Friend Guard.</td>
  </tr>
  <tr class="a">
   <td>21D8BA5</td>
   <td>0x1800</td>
   <td>If user has ability Sniper and move was a critical hit.</td>
  </tr>
  <tr>
   <td>21D8B71</td>
   <td>0xC00</td>
   <td>If the target's ability is Solid Rock or Filter and the move was super effective.</td>
  </tr>
  <tr class="a">
   <td>21DBA95</td>
   <td></td>
   <td>Internal.</td>
  </tr>
  <tr>
   <td>21DEC91</td>
   <td>Variable</td>
   <td>If the user is holding the item Metronome. If n is the number of time the current move was used
   successfully and successively, the value of the modifier is 0x1000+n*0x333 if n&le;4 and 0x2000 otherwise.</td>
  </tr>
  <tr class="a">
   <td>21DEBD5</td>
   <td>0x1333</td>
   <td>If the user is holding an expert belt and the move was super effective.</td>
  </tr>
  <tr>
   <td>21DEC65</td>
   <td>0x14CC</td>
   <td>If the user is holding a Life Orb.</td>
  </tr>
  <tr class="a">
   <td>21DDB85</td>
   <td>0x800</td>
   <td>If the target is holding a damage lowering berry of the attack's type. There is one trigger for each type of berry, the others are at:<br : />
    21DDC05, 21DDAE5, 21DDB05, 21DDB25, 21DDB45, 21DDB65, 21DDBA5, 21DDBC5, 21DDBE5, 21DDC25, 21DDC45, 21DDC65, 21DDC85, 21DDCA5, 21DDCC5 and 21DDCE5.</td>
  </tr>
  <tr>
   <td>21E3A25</td>
   <td>0x2000</td>
   <td>If move is Stomp and target has used Minimize.</td>
  </tr>
  <tr class="a">
   <td>21E316D</td>
   <td>0x2000</td>
   <td>If move is Earthquake and target is in the charging turn of Dig.</td>
  </tr>
  <tr>
   <td>21E39E1</td>
   <td>0x2000</td>
   <td>If move is Surf and target is in the charging turn of Dive.</td>
  </tr>
  <tr class="a">
   <td>21E1455</td>
   <td>0x2000</td>
   <td>If move is Steamroller and target has used Minimize.</td>
  </tr>
 </tbody>
</table>

<h2><a name="base-power">The base power</a></h2>

There are two separate sets of triggers for the base power of moves. The first is mainly used for moves
with a variable base power, while the second contains the various modifiers for base power.

<h3><a name="variable-bp">Triggers for variable base power</a></h3>

<table class="sortable">
 <thead>
  <tr>
   <th width="110">Trigger address</th>
   <th width="275">Summary of BP formula</th>
   <th>Move and remarks.</th>
  </tr>
 </thead>
	
 <tbody>
  <tr>
   <td>21d88cc</td>
   <td></td>
   <td>Internal.</td>
  </tr>
  <tr class="a">
   <td>21e2aec</td>
   <td>((255 - Happiness) * 10) &divide; 25</td>
   <td>Frustration: if result is 0 add 1.</td>
  </tr>
  <tr>
   <td>21e2968</td>
   <td>50, 100</td>
   <td>Payback: BP is doubled to 100 if target has moved this turn, 50 otherwise.</td>
  </tr>
  <tr class="a">
   <td>21e2aa0</td>
   <td>(Happiness * 10) &divide; 25</td>
   <td>Return: if result is 0 add 1.</td>
  </tr>
  <tr>
   <td>21e7184</td>
   <td>150, 120, 80, 60</td>
   <td>Electro Ball: Let S = UserModSpeed &divide; TargetModSpeed. BP = {150: R &ge; 4, 120: 3 &le; R &lt; 4, 80: 2 &le; R &lt; 3, 60: otherwise};</td>
  </tr>
  <tr class="a">
   <td>21e283c</td>
   <td>60, 120</td>
   <td>Avalanche: BP is doubled to 120 if the target has inflicted non-effect damage to the user this turn.</td>
  </tr>
  <tr>
   <td>21e27d0</td>
   <td>min(150, 25 * TargetSpd &divide; UserSpd)</td>
   <td>Gyro Ball.</td>
  </tr>
  <tr class="a">
   <td>21e29a8</td>
   <td>(150 * CurrentHP) &divide; MaxHP</td>
   <td>Eruption, Water Spout: if result is 0 set BP to 1.</td>
  </tr>
  <tr>
   <td>21e2de0</td>
   <td>min(120, 60 + 20 * statup_total)</td>
   <td>Punishment: statup_total is the sum of the target's stat levels that are &ge; 0, including accuracy and evasion.</td>
  </tr>
  <tr class="a">
   <td>21e2e48</td>
   <td>20 * 2^(use_counter)</td>
   <td>Fury Cutter: use_counter counts successive and successful previous uses up to a maximum of 3.</td>
  </tr>
  <tr>
   <td>21e2ef4</td>
   <td>20, 40, 60, 80, 100, 120</td>
   <td>Low Kick, Grass Knot: let W be the final weight after modifiers. If W &ge; 200, BP is 120, else if W &ge; 100, BP is 100, else if W &ge; 50, BP is 80, else if W &ge; 25, BP is 60, else BP is 40.</td>
  </tr>
  <tr class="a">
   <td>21e7204</td>
   <td>40, 80, 120, 160, 200</td>
   <td>Echoed Voice: BP increases in the listed order every turn this move is used successively on the user's side of the field.</td>
  </tr>
  <tr>
   <td>21e702c</td>
   <td>50, 100</td>
   <td>Hex: BP is doubled to 100 if target has a status problem.</td>
  </tr>
  <tr class="a">
   <td>21e2a08</td>
   <td>round(120 * TargetHP%) &divide; 100</td>
   <td>Wring Out, Crush Claw: TargetHP% is computed by a fixed point division using 0x1000 as the scaling factor.</td>
  </tr>
  <tr>
   <td>21e2eb0</td>
   <td>50, 100</td>
   <td>Assurance: BP is doubled to 100 if target has already been inflicted non-effect damage this turn.</td>
  </tr>
  <tr class="a">
   <td>21e7104</td>
   <td>120, 100, 80, 60, 40</td>
   <td>Heavy Slam, Heat Crash: let W = UserModWeight &divide; TargetModWeight. BP = {120: W &ge; 5, 100: 4 &le; W &lt; 5, 80: 3 &le; W &lt; 4, 60: 2 &le; W &lt; 3, 40: W &lt; 2}.</td>
  </tr>
  <tr>
   <td>21e70a0</td>
   <td>20 + 20 * statups</td>
   <td>Stored Power: statups is the sum of all positive stat increases, including accuracy and evasion.</td>
  </tr>
  <tr class="a">
   <td>21e706c</td>
   <td>55, 110</td>
   <td>Acrobatics: BP is doubled to 110 if user has no held item.</td>
  </tr>
  <tr>
   <td>21e28b8</td>
   <td>P = (48 * CurrentHP) &divide; MaxHP</td>
   <td>Flail, Reversal: 200 if P &le; 1, 150 if 2 &le; P &le; 4, 100 if 5 &le; P &le; 9, 80 if 10 &le; P &le; 16, 40 if 17 &le; P &le; 32, 20 otherwise.</td>
  </tr>
  <tr class="a">
   <td>21e2d7c</td>
   <td>40, 50, 60, 80, 200</td>
   <td>Trump Card: listed BP correspond to decreasing PP (if PP is &ge; 5 or this move was called by another move BP is 40).</td>
  </tr>
  <tr>
   <td>21e7dd0</td>
   <td>60, 120</td>
   <td>Round: BP is doubled to 120 if used in direct succession of an ally.</td>
  </tr>
  <tr class="a">
   <td>21e2788</td>
   <td>10, 20, 30</td>
   <td>Triple Kick: BP is listed for the successive hits.</td>
  </tr>
  <tr>
   <td>21e2b38</td>
   <td>60, 120</td>
   <td>Wake-Up Slap: BP is doubled to 120 if target is asleep.</td>
  </tr>
  <tr class="a">
   <td>21e2bd4</td>
   <td>60, 120</td>
   <td>SmellingSalt: BP is doubled to 120 is target is paralyzed.</td>
  </tr>
  <tr>
   <td>21e2fd0</td>
   <td>50, 100</td>
   <td>Weather Ball: BP is doubled to 100 in any non-default weather.</td>
  </tr>
  <tr class="a">
   <td>21e302c</td>
   <td>40, 80</td>
   <td>Gust, Twister: BP is doubled to 80 is target is in the charging turn of Bounce, Fly or Sky Drop.</td>
  </tr>
  <tr>
   <td>21e6074</td>
   <td>CurrentPartyMemberAttack &divide; 10 + 5</td>
   <td>Beat Up: this move attacks once for every non fainted member in the user's party, including the user.</td>
  </tr>
  <tr class="a">
   <td>21e3318</td>
   <td>30 + (40 * sum(((IV[i]&gt;&gt;1)&1)&lt;&lt;i)) &divide; 63</td>
   <td>Hidden Power: IV are indexed from 0 and listed as HP, At, Df, Sp, SA, SD.</td>
  </tr>
  <tr>
   <td>21e17d0</td>
   <td>100 * stockpile</td>
   <td>Spit Up: stockpile is the stockpile counter ranging from 0 to 3.</td>
  </tr>
  <tr class="a">
   <td>21e1dbc</td>
   <td>40, 80</td>
   <td>Pursuit: BP is doubled to 80 if target is switching out.</td>
  </tr>
  <tr>
   <td>21e2d40</td>
   <td>40, 80 or 120</td>
   <td>Present: let 0 &le; r &lt; 80 be a random number. If r &lt 40, BP is 40, else if r &lt 70, BP is 80, otherwise BP is 120.</td>
  </tr>
  <tr class="a">
   <td>21e33dc</td>
   <td>Variable</td>
   <td>Natural Gift: base power and type depend on held berry. See 2021030 and 20210E4 for corresponding tables.</td>
  </tr>
  <tr>
   <td>21e398c</td>
   <td>10 + 20 * factor</td>
   <td>Magnitude: let R = rand(100), factor = {0: R &lt; 5, 1: 5 &le; R &lt; 16, 2: 16 &le; R &lt; 35, 3: 35 &le; R &lt; 65, 4: 65 &le; R &lt; 85, 5: 85 &le; R &lt; 95, 6: R &ge; 95}.</td>
  </tr>
  <tr class="a">
   <td>21e2720</td>
   <td>30 * 2 ^ (use_counter + defense_curl)</td>
   <td>Rollout: use_counter counts successive and successful previous uses up to a maximum of 5, defense_curl is 1 if user used Defense Curl previously on field, 0 otherwise.</td>
  </tr>
  <tr>
   <td>21e5d44</td>
   <td>Variable</td>
   <td>Fling: base power depends on the held item. See 21D807C for table of items.</td>
  </tr>
  <tr class="a">
   <td>21e84b8</td>
   <td>150</td>
   <td>Grass/Fire/Water Pledge: if a slower ally used a different Pledge move this turn, it will skip its turn and this move's base power will be set to 150.</td>
  </tr>
 </tbody>
</table>

<h3><a name="bp-mods">Modifiers for the base power</a></h3>

<table class="sortable">
 <thead>
  <tr>
   <th width="110">Trigger address</th>
   <th width="90">Modifier</th>
   <th>Trigger description</th>
  </tr>
 </thead>
	
 <tbody>
  <tr>
   <td>21d9108</td>
   <td>0x1800</td>
   <td>If user has ability Technician and move's base power is &le;60.</td>
  </tr>
  <tr class="a">
   <td>21dc27c</td>
   <td>0x1800</td>
   <td>If user has ability Flare Boost, is burned and uses a special move.</td>
  </tr>
  <tr>
   <td>21dc6c0</td>
   <td>0x14CD</td>
   <td>If user has ability Analytic, move isn't Future Sight or Doom Desire and target has already moved this turn.</td>
  </tr>
  <tr class="a">
   <td>21d9174</td>
   <td>0x1333</td>
   <td>If user has ability Reckless and move has recoil or is either Jump Kick or Hi Jump Kick.</td>
  </tr>
  <tr>
   <td>21d9138</td>
   <td>0x1333</td>
   <td>If the user has ability Iron Fist and move has the "Punching move" (0x7) flag set.</td>
  </tr>
  <tr class="a">
   <td>21dc238</td>
   <td>0x1800</td>
   <td>If user has ability Toxic Boost, is poisoned and move is physical.</td>
  </tr>
  <tr>
   <td>21d9090</td>
   <td>Variable</td>
   <td>If user has ability Rivalry. The value of the modifier is 0x1000 if either the user or target is genderless,
   0x1400 if the user and target are of the same gender and 0xC00 otherwise.</td>
  </tr>
  <tr class="a">
   <td>21dc718</td>
   <td>0x14CD</td>
   <td>If user has ability Sand Force and move is Rock, Ground or Steel type.</td>
  </tr>
  <tr>
   <td>21da864</td>
   <td>0x800</td>
   <td>If target has ability Heatproof and move is Fire type.</td>
  </tr>
  <tr class="a">
   <td>21daa90</td>
   <td>0x1400</td>
   <td>If target has ability Dry Skin and move is Fire type.</td>
  </tr>
  <tr>
   <td>21dbf48</td>
   <td>0x14CD</td>
   <td>If the user has ability Sheer Force and move has a flag (0xA) set.</td>
  </tr>
  <tr class="a">
   <td>21d9dc4</td>
   <td></td>
   <td>Internal.</td>
  </tr>
  <tr>
   <td>Multiple</td>
   <td>0x1333</td>
   <td>Type boosting items, plates, incenses. All are wrappers for the 21DF95C trigger. List of locations:<br />
    21df7a8, 21df878, 21df760, 21df748, 21df778, 21df7c0, 21df860, 21df890, 21df730, 21df908, 21df950, 21df790,
    21df7d8, 21df7f0, 21df808, 21df718, 21df8c0, 21df938, 21df920, 21df8d8, 21df8a8.
   </td>
  </tr>
  <tr class="a">
   <td>21de6ec</td>
   <td>0x1199</td>
   <td>If user holds a Muscle Band and move is phyisical.</td>
  </tr>
  <tr>
   <td>21df994</td>
   <td>0x1333</td>
   <td>If user is Palkia, holds the Lustrous Orb and move is Water or Dragon type.</td>
  </tr>
  <tr class="a">
   <td>21de72c</td>
   <td>0x1199</td>
   <td>If user holds Wise Glasses and move is special.</td>
  </tr>
  <tr>
   <td>21df458</td>
   <td>0x1333</td>
   <td>If user is Giratina, holds the Griseous Orb and move is Dragon or Ghost type.</td>
  </tr>
  <tr class="a">
   <td>21df8f0</td>
   <td>0x1333</td>
   <td>If user holds Odd Incense and move is Psychic type.</td>
  </tr>
  <tr>
   <td>21df9e8</td>
   <td>0x1333</td>
   <td>If user is Dialga, holds the Adamant Orb and move is Steel or Dragon type.</td>
  </tr>
  <tr class="a">
   <td>21e01e4</td>
   <td>0x1800</td>
   <td>If user holds a Normal Gem and move is normal type. Similar triggers for the other types are at:<br />
   21DFF14, 21DFF40, 21DFF6C, 21DFF98, 21DFFC4, 21DFFF0, 21E001C, 21E0048, 21E0074, 21E00A0, 21E00CC, 21E00F8, 21E0124, 21E0150, 21E017C, 21E01A8</td>
  </tr>
  <tr>
   <td>21e2928</td>
   <td>0x2000</td>
   <td>If move is Facade and user is either paralyzed, poisoned or burned.</td>
  </tr>
  <tr class="a">
   <td>21e2a58</td>
   <td>0x2000</td>
   <td>If move is Brine and target's HP is &le; 50%.</td>
  </tr>
  <tr>
   <td>21e6fe8</td>
   <td>0x2000</td>
   <td>If move is Venoshock and target is poisoned.</td>
  </tr>
  <tr class="a">
   <td>21e729c</td>
   <td>0x2000</td>
   <td>If move is Retaliate and a Pokémon from the target's party fainted on the previous turn.</td>
  </tr>
  <tr>
   <td>21e8330</td>
   <td>0x2000</td>
   <td>If move is either Fusion Bolt or Fusion Flare and the previously used move was respectively Fusion Flare or Fusion Bolt.</td>
  </tr>
  <tr class="a">
   <td>21e6f34</td>
   <td>0x1800</td>
   <td>If move was called using Me First.</td>
  </tr>
  <tr>
   <td>21e64a0</td>
   <td>0x800</td>
   <td>If move is SolarBeam in non-sunny, non-default weather.</td>
  </tr>
  <tr class="a">
   <td>21e1f38</td>
   <td>0x2000</td>
   <td>If user used Charge the previous turn and move is Electric type.</td>
  </tr>
  <tr>
   <td>21e5ff0</td>
   <td>0x1800</td>
   <td>If user has been the target of Helping Hand this turn.</td>
  </tr>
  <tr class="a">
   <td>6898158</td>
   <td>0x548</td>
   <td>If Water Sport was used by any Pokémon still on the field and move is Fire type.</td>
  </tr>
  <tr>
   <td>6898110</td>
   <td>0x548</td>
   <td>If Mud Sport was used by any Pokémon still on the field and move is Electric type.</td>
  </tr>
 </tbody>
</table>

<h2><a name="attack">User attack stat</a></h2>

<div class="arm listing">
<ol><li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C7394 BaseAttackMods<span class="sy0">:</span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; @ CODE XREF<span class="sy0">:</span> DamageCalc<span class="sy0">+</span>9Ep</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C7394 <span class="kw3">PUSH</span> &nbsp; &nbsp;<span class="br0">{</span><span class="kw35">R3</span><span class="sy0">-</span><span class="kw35">R7</span><span class="sy0">,</span><span class="kw35">LR</span><span class="br0">}</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C7396 <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R5</span><span class="sy0">,</span> <span class="kw35">R3</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C7398 <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R7</span><span class="sy0">,</span> <span class="kw35">R0</span></div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021C739A <span class="kw3">LDRH</span> &nbsp; &nbsp;<span class="kw35">R0</span><span class="sy0">,</span> <span class="br0">[</span><span class="kw35">R5</span><span class="br0">]</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C739C <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R6</span><span class="sy0">,</span> <span class="kw35">R1</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C739E <span class="kw3">STR</span> &nbsp; &nbsp; <span class="kw35">R2</span><span class="sy0">,</span> <span class="br0">[</span><span class="kw35">SP</span><span class="br0">]</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C73A0 <span class="kw7">BL</span> &nbsp; &nbsp; &nbsp;GetMoveCategory</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C73A4 <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R4</span><span class="sy0">,</span> #<span class="nu0">0xA</span></div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021C73A6 <span class="kw5">CMP</span> &nbsp; &nbsp; <span class="kw35">R0</span><span class="sy0">,</span> #<span class="nu0">2</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C73A8 <span class="kw8">BEQ</span> &nbsp; &nbsp; loc_21C73AC</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C73AA <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R4</span><span class="sy0">,</span> #<span class="nu0">8</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C73AC</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C73AC loc_21C73AC<span class="sy0">:</span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;@ CODE XREF<span class="sy0">:</span> BaseAttackMods<span class="sy0">+</span><span class="nu0">14</span>j</div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021C73AC <span class="kw3">LDR</span> &nbsp; &nbsp; <span class="kw35">R0</span><span class="sy0">,</span> =<span class="nu0">0x30FE</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C73AE <span class="kw7">BL</span> &nbsp; &nbsp; &nbsp;AllocateVolatileVariables</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C73B2 <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R0</span><span class="sy0">,</span> <span class="kw35">R6</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C73B4 <span class="kw7">BL</span> &nbsp; &nbsp; &nbsp;GetPkmId</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C73B8 <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R1</span><span class="sy0">,</span> <span class="kw35">R0</span></div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021C73BA <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R0</span><span class="sy0">,</span> #<span class="nu0">3</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C73BC <span class="kw7">BL</span> &nbsp; &nbsp; &nbsp;StoreVolatileVariableFlag3e4</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C73C0 <span class="kw3">LDR</span> &nbsp; &nbsp; <span class="kw35">R0</span><span class="sy0">,</span> <span class="br0">[</span><span class="kw35">SP</span><span class="br0">]</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C73C2 <span class="kw7">BL</span> &nbsp; &nbsp; &nbsp;GetPkmId</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C73C6 <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R1</span><span class="sy0">,</span> <span class="kw35">R0</span></div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021C73C8 <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R0</span><span class="sy0">,</span> #<span class="nu0">4</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C73CA <span class="kw7">BL</span> &nbsp; &nbsp; &nbsp;StoreVolatileVariableFlag3e4</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C73CE <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R0</span><span class="sy0">,</span> #<span class="nu0">0x3B</span> @ <span class="st0">';'</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C73D0 <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R1</span><span class="sy0">,</span> #<span class="nu0">0x1F</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C73D2 <span class="kw7">BL</span> &nbsp; &nbsp; &nbsp;InitVolatileVariable</div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021C73D6 <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R0</span><span class="sy0">,</span> #<span class="nu0">0x51</span> @ <span class="st0">'Q'</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C73D8 <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R1</span><span class="sy0">,</span> #<span class="nu0">0</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C73DA <span class="kw7">BL</span> &nbsp; &nbsp; &nbsp;InitVolatileVariable</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C73DE <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R0</span><span class="sy0">,</span> <span class="kw35">R7</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C73E0 <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R1</span><span class="sy0">,</span> #<span class="nu0">0x39</span> @ <span class="st0">'9'</span></div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021C73E2 <span class="kw7">BL</span> &nbsp; &nbsp; &nbsp;ApplyTriggers</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C73E6 <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R0</span><span class="sy0">,</span> #<span class="nu0">0x3B</span> @ <span class="st0">';'</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C73E8 <span class="kw7">BL</span> &nbsp; &nbsp; &nbsp;ReadVolatileVariable</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C73EC <span class="kw5">LSLS</span> &nbsp; &nbsp;<span class="kw35">R0</span><span class="sy0">,</span> <span class="kw35">R0</span><span class="sy0">,</span> #<span class="nu0">0x18</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C73EE <span class="kw5">LSRS</span> &nbsp; &nbsp;<span class="kw35">R1</span><span class="sy0">,</span> <span class="kw35">R0</span><span class="sy0">,</span> #<span class="nu0">0x18</span></div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021C73F0 <span class="kw5">CMP</span> &nbsp; &nbsp; <span class="kw35">R1</span><span class="sy0">,</span> #<span class="nu0">0x1F</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C73F2 <span class="kw8">BEQ</span> &nbsp; &nbsp; loc_21C73FC</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C73F4 <span class="kw3">LDR</span> &nbsp; &nbsp; <span class="kw35">R0</span><span class="sy0">,</span> <span class="br0">[</span><span class="kw35">R7</span><span class="sy0">,</span>#<span class="nu0">8</span><span class="br0">]</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C73F6 <span class="kw7">BL</span> &nbsp; &nbsp; &nbsp;GetPartyPkm</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C73FA <span class="kw5">ADDS</span> &nbsp; &nbsp;<span class="kw35">R6</span><span class="sy0">,</span> <span class="kw35">R0</span><span class="sy0">,</span> #<span class="nu0">0</span></div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021C73FC</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C73FC loc_21C73FC<span class="sy0">:</span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;@ CODE XREF<span class="sy0">:</span> BaseAttackMods<span class="sy0">+</span>5Ej</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C73FC <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R0</span><span class="sy0">,</span> #<span class="nu0">0x51</span> @ <span class="st0">'Q'</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C73FE <span class="kw7">BL</span> &nbsp; &nbsp; &nbsp;ReadVolatileVariable</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C7402 <span class="kw5">CMP</span> &nbsp; &nbsp; <span class="kw35">R0</span><span class="sy0">,</span> #<span class="nu0">0</span></div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021C7404 <span class="kw8">BEQ</span> &nbsp; &nbsp; loc_21C7410</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C7406 <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R0</span><span class="sy0">,</span> <span class="kw35">R6</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C7408 <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R1</span><span class="sy0">,</span> <span class="kw35">R4</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C740A <span class="kw7">BL</span> &nbsp; &nbsp; &nbsp;RawBpkmStat</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C740E <span class="kw7">B</span> &nbsp; &nbsp; &nbsp; loc_21C7428</div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021C7410 @ <span class="sy0">---------------------------------------------------------------------------</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C7410</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C7410 loc_21C7410<span class="sy0">:</span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;@ CODE XREF<span class="sy0">:</span> BaseAttackMods<span class="sy0">+</span><span class="nu0">70</span>j</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C7410 <span class="kw3">LDR</span> &nbsp; &nbsp; <span class="kw35">R0</span><span class="sy0">,</span> <span class="br0">[</span><span class="kw35">SP</span><span class="sy0">,</span>#<span class="nu0">0x18</span><span class="br0">]</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C7412 <span class="kw5">CMP</span> &nbsp; &nbsp; <span class="kw35">R0</span><span class="sy0">,</span> #<span class="nu0">0</span></div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021C7414 <span class="kw8">BEQ</span> &nbsp; &nbsp; loc_21C7420</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C7416 <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R0</span><span class="sy0">,</span> <span class="kw35">R6</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C7418 <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R1</span><span class="sy0">,</span> <span class="kw35">R4</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C741A <span class="kw7">BL</span> &nbsp; &nbsp; &nbsp;CritAtkDefLevel</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C741E <span class="kw7">B</span> &nbsp; &nbsp; &nbsp; loc_21C7428</div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021C7420 @ <span class="sy0">---------------------------------------------------------------------------</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C7420</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C7420 loc_21C7420<span class="sy0">:</span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;@ CODE XREF<span class="sy0">:</span> BaseAttackMods<span class="sy0">+</span><span class="nu0">80</span>j</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C7420 <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R0</span><span class="sy0">,</span> <span class="kw35">R6</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C7422 <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R1</span><span class="sy0">,</span> <span class="kw35">R4</span></div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021C7424 <span class="kw7">BL</span> &nbsp; &nbsp; &nbsp;GetBpkmStat</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C7428</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C7428 loc_21C7428<span class="sy0">:</span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;@ CODE XREF<span class="sy0">:</span> BaseAttackMods<span class="sy0">+</span>7Aj</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C7428 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; @ BaseAttackMods<span class="sy0">+</span>8Aj</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C7428 <span class="kw5">LSLS</span> &nbsp; &nbsp;<span class="kw35">R0</span><span class="sy0">,</span> <span class="kw35">R0</span><span class="sy0">,</span> #<span class="nu0">0x10</span></div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021C742A <span class="kw5">LSRS</span> &nbsp; &nbsp;<span class="kw35">R4</span><span class="sy0">,</span> <span class="kw35">R0</span><span class="sy0">,</span> #<span class="nu0">0x10</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C742C <span class="kw3">LDRH</span> &nbsp; &nbsp;<span class="kw35">R1</span><span class="sy0">,</span> <span class="br0">[</span><span class="kw35">R5</span><span class="br0">]</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C742E <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R0</span><span class="sy0">,</span> #<span class="nu0">0x12</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C7430 <span class="kw7">BL</span> &nbsp; &nbsp; &nbsp;StoreVolatileVariableFlag3e4</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C7434 <span class="kw3">LDRB</span> &nbsp; &nbsp;<span class="kw35">R1</span><span class="sy0">,</span> <span class="br0">[</span><span class="kw35">R5</span><span class="sy0">,</span>#<span class="nu0">6</span><span class="br0">]</span></div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021C7436 <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R0</span><span class="sy0">,</span> #<span class="nu0">0x16</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C7438 <span class="kw7">BL</span> &nbsp; &nbsp; &nbsp;StoreVolatileVariableFlag3e4</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C743C <span class="kw3">LDR</span> &nbsp; &nbsp; <span class="kw35">R1</span><span class="sy0">,</span> <span class="br0">[</span><span class="kw35">R5</span><span class="sy0">,</span>#<span class="nu0">8</span><span class="br0">]</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C743E <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R0</span><span class="sy0">,</span> #<span class="nu0">0x1A</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C7440 <span class="kw7">BL</span> &nbsp; &nbsp; &nbsp;StoreVolatileVariableFlag3e4</div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021C7444 <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R0</span><span class="sy0">,</span> #<span class="nu0">0x33</span> @ <span class="st0">'3'</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C7446 <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R1</span><span class="sy0">,</span> <span class="kw35">R4</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C7448 <span class="kw7">BL</span> &nbsp; &nbsp; &nbsp;InitVolatileVariable</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C744C <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R1</span><span class="sy0">,</span> <span class="nu0">0x1000</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C7450 <span class="kw3">LDR</span> &nbsp; &nbsp; <span class="kw35">R2</span><span class="sy0">,</span> =<span class="nu0">0x19A</span></div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021C7452 <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R0</span><span class="sy0">,</span> #<span class="nu0">0x35</span> @ <span class="st0">'5'</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C7454 <span class="kw5">LSLS</span> &nbsp; &nbsp;<span class="kw35">R3</span><span class="sy0">,</span> <span class="kw35">R1</span><span class="sy0">,</span> #<span class="nu0">5</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C7456 <span class="kw7">BL</span> &nbsp; &nbsp; &nbsp;StoreVolatileVariableFlag3e3</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C745A <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R0</span><span class="sy0">,</span> <span class="kw35">R7</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C745C <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R1</span><span class="sy0">,</span> #<span class="nu0">0x3B</span> @ <span class="st0">';'</span></div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021C745E <span class="kw7">BL</span> &nbsp; &nbsp; &nbsp;ApplyTriggers</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C7462 <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R0</span><span class="sy0">,</span> #<span class="nu0">0x33</span> @ <span class="st0">'3'</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C7464 <span class="kw7">BL</span> &nbsp; &nbsp; &nbsp;ReadVolatileVariable</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C7468 <span class="kw5">LSLS</span> &nbsp; &nbsp;<span class="kw35">R0</span><span class="sy0">,</span> <span class="kw35">R0</span><span class="sy0">,</span> #<span class="nu0">0x10</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C746A <span class="kw5">LSRS</span> &nbsp; &nbsp;<span class="kw35">R4</span><span class="sy0">,</span> <span class="kw35">R0</span><span class="sy0">,</span> #<span class="nu0">0x10</span></div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021C746C <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R0</span><span class="sy0">,</span> #<span class="nu0">0x35</span> @ <span class="st0">'5'</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C746E <span class="kw7">BL</span> &nbsp; &nbsp; &nbsp;ReadVolatileVariable</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C7472 <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R1</span><span class="sy0">,</span> <span class="kw35">R0</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C7474 <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R0</span><span class="sy0">,</span> <span class="kw35">R4</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C7476 <span class="kw7">BL</span> &nbsp; &nbsp; &nbsp;ApplyMod</div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021C747A <span class="kw5">LSLS</span> &nbsp; &nbsp;<span class="kw35">R0</span><span class="sy0">,</span> <span class="kw35">R0</span><span class="sy0">,</span> #<span class="nu0">0x10</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C747C <span class="kw5">LSRS</span> &nbsp; &nbsp;<span class="kw35">R4</span><span class="sy0">,</span> <span class="kw35">R0</span><span class="sy0">,</span> #<span class="nu0">0x10</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C747E <span class="kw3">LDR</span> &nbsp; &nbsp; <span class="kw35">R0</span><span class="sy0">,</span> =<span class="nu0">0x3123</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C7480 <span class="kw7">BL</span> &nbsp; &nbsp; &nbsp;FreeVolatileVariable</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C7484 <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R0</span><span class="sy0">,</span> <span class="kw35">R4</span></div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021C7486 <span class="kw3">POP</span> &nbsp; &nbsp; <span class="br0">{</span><span class="kw35">R3</span><span class="sy0">-</span><span class="kw35">R7</span><span class="sy0">,</span><span class="kw35">PC</span><span class="br0">}</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C7486 @ End of function BaseAttackMods</div></li>
</ol>
</div>

<h3><a name="attack-base">Base value</a></h3>

<p>
The first step of computing the attack stat is to decide whether the attack or special attack stat should be used, and
on which Pokémon. By default, the user's attack is used if the move is physical and the special attack otherwise but
this behavior can be altered by the following triggers:
</p>

<table class="sortable">
 <thead>
  <tr>
   <th width="110">Trigger address</th>
   <th>Trigger description</th>
  </tr>
 </thead>
	
 <tbody>
  <tr>
   <td>21da828</td>
   <td>Unaware: if target has ability Unaware do not apply any attack level boosts.</td>
  </tr>
  <tr class="a">
   <td>21d8db0</td>
   <td>Internal.</td>
  </tr>
  <tr>
   <td>21e7320</td>
   <td>Foul Play: use the target's base attack stat instead of the user's.</td>
  </tr>
  <tr class="a">
   <td>21e39b0</td>
   <td>Internal.</td>
  </tr>
 </tbody>
</table>

<h3><a name="boost-level">Boost level</a></h3>

Once the base stat is decided, the stat boost level is applied:
<ol>
 <li>If a trigger decided to skip stat boosts, use the base stat.</li>
 <li>If the hit was critical and the boost level is negative, use the base stat.</li>
 <li>Otherwise, apply the factor corresponding to the boost level according to the table below
  (multiply stat by the dividend first then use unrounded division on divisor).</li>
</ol>

<table class="sortable">
	<thead>
		<tr>
			<th>Stat boost level</th>
			<th>Multiplier</th>
			<th>Decimal Approximate</th>
		</tr>
	</thead>
	<tbody>
		<tr><td>-6</td><td>2/8</td><td>0.25</td></tr>
		<tr class="a"><td>-5</td><td>2/7</td><td>0.2857</td></tr>
		<tr><td>-4</td><td>2/6</td><td>0.3333</td></tr>
		<tr class="a"><td>-3</td><td>2/5</td><td>0.4</td></tr>
		<tr><td>-2</td><td>2/4</td><td>0.5</td></tr>
		<tr class="a"><td>-1</td><td>2/3</td><td>0.6667</td></tr>
		<tr><td>0</td><td>2/2</td><td>1</td></tr>
		<tr class="a"><td>+1</td><td>3/2</td><td>1.5</td></tr>
		<tr><td>+2</td><td>4/2</td><td>2</td></tr>
		<tr class="a"><td>+3</td><td>5/2</td><td>2.5</td></tr>
		<tr><td>+4</td><td>6/2</td><td>3</td></tr>
		<tr class="a"><td>+5</td><td>7/2</td><td>3.5</td></tr>
		<tr><td>+6</td><td>8/2</td><td>4</td></tr>
	</tbody>
</table>

<h3><a name="attack-mod">Attack modifiers</a></h3>

The final attack stat is altered using the following modifiers:

<table class="sortable">
 <thead>
  <tr>
   <th width="110">Trigger address</th>
   <th width="90">Modifier</th>
   <th>Trigger description</th>
  </tr>
 </thead>
	
 <tbody>
  <tr>
   <td>21d871c</td>
   <td>0x800</td>
   <td>If target has ability Thick Fat and move is Ice or Fire type.</td>
  </tr>
  <tr class="a">
   <td>21d8c78</td>
   <td>0x1800</td>
   <td>If user has ability Torrent, has MaxHP &divide; 3 or less HP and move is water type.</td>
  </tr>
  <tr>
   <td>21d8d14</td>
   <td>0x1800</td>
   <td>If user has ability Guts, has a status problem and move is physical.</td>
  </tr>
  <tr class="a">
   <td>21d8cb0</td>
   <td>0x1800</td>
   <td>If user has ability Swarm, has MaxHP &divide; 3 or less HP and move is bug type.</td>
  </tr>
  <tr>
   <td>21d8c94</td>
   <td>0x1800</td>
   <td>If user has ability Overgrow, has MaxHP &divide; 3 or less HP and move is grass type.</td>
  </tr>
  <tr class="a">
   <td>21d8d60</td>
   <td>0x1800</td>
   <td>If user has ability Plus (resp. Minus) and an ally has ability Minus (resp. Plus) and move is special.</td>
  </tr>
  <tr>
   <td>21d8c5c</td>
   <td>0x1800</td>
   <td>If user has ability Blaze, has MaxHP &divide; 3 or less HP and move is fire type.</td>
  </tr>
  <tr class="a">
   <td>21dc0dc</td>
   <td>0x800</td>
   <td>If user has ability Defeatist and CurrentHP &le; MaxHP &divide; 2.</td>
  </tr>
  <tr>
   <td>21d8754</td>
   <td>0x2000</td>
   <td>If user has ability Pure Power or Huge Power.</td>
  </tr>
  <tr class="a">
   <td>21d9954</td>
   <td>0x1800</td>
   <td>If user has ability Solar Power and weather is intense sunlight and move is special.</td>
  </tr>
  <tr>
   <td>21d8894</td>
   <td>0x1800</td>
   <td>If user has ability Hustle and move is physical. This is a special trigger in the sense that instead of chaining it will directly apply the 0x1800 on the current attack stat instead of being chained with others.</td>
  </tr>
  <tr class="a">
   <td>21daf04</td>
   <td>0x1800</td>
   <td>If user has ability Flash Fire activated and move is Fire type.</td>
  </tr>
  <tr>
   <td>21d892c</td>
   <td>0x800</td>
   <td>If user has ability Slow Start, has been on field for less than 5 turns and move is physical.</td>
  </tr>
  <tr class="a">
   <td>21d8fec</td>
   <td>0x1800</td>
   <td>If ally is Cherrim and has ability Flower Gift, weather is intense sunlight and move is physical.</td>
  </tr>
  <tr>
   <td>21db424</td>
   <td></td>
   <td>Internal.</td>
  </tr>
  <tr class="a">
   <td>21de91c</td>
   <td>0x2000</td>
   <td>If user is Cubone or Marowak, holds a Thick Club and move is physical.</td>
  </tr>
  <tr>
   <td>21de76c</td>
   <td>0x2000</td>
   <td>If user is Clamperl, holds a DeepSeaTooth and move is special.</td>
  </tr>
  <tr class="a">
   <td>21df53c</td>
   <td>0x2000</td>
   <td>If user is Pikachu and holds a Light Ball.</td>
  </tr>
  <tr>
   <td>21de898</td>
   <td>0x1800</td>
   <td>If user is Latios or Latias, holds a Soul Dew and move is special.</td>
  </tr>
  <tr class="a">
   <td>21de968</td>
   <td>0x1800</td>
   <td>If user is holding Choice Band and move is physical.</td>
  </tr>
  <tr>
   <td>21de9a0</td>
   <td>0x1800</td>
   <td>If user is holding Choice Specs and move is special.</td>
  </tr>
  <tr class="a">
   <td>21e310c</td>
   <td></td>
   <td>Internal.</td>
  </tr>
 </tbody>
</table>

<h2><a name="defense">Target defense stat</a></h2>

<div class="arm listing">
<ol><li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C7494 BaseDefenseMods<span class="sy0">:</span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;@ CODE XREF<span class="sy0">:</span> DamageCalc<span class="sy0">+</span>AEp</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C7494 <span class="kw3">PUSH</span> &nbsp; &nbsp;<span class="br0">{</span><span class="kw35">R4</span><span class="sy0">-</span><span class="kw35">R7</span><span class="sy0">,</span><span class="kw35">LR</span><span class="br0">}</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C7496 <span class="kw1">SUB</span> &nbsp; &nbsp; <span class="kw35">SP</span><span class="sy0">,</span> <span class="kw35">SP</span><span class="sy0">,</span> #<span class="nu0">0xC</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C7498 <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R6</span><span class="sy0">,</span> <span class="kw35">R3</span></div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021C749A <span class="kw3">STR</span> &nbsp; &nbsp; <span class="kw35">R0</span><span class="sy0">,</span> <span class="br0">[</span><span class="kw35">SP</span><span class="br0">]</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C749C <span class="kw3">LDRH</span> &nbsp; &nbsp;<span class="kw35">R0</span><span class="sy0">,</span> <span class="br0">[</span><span class="kw35">R6</span><span class="br0">]</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C749E <span class="kw3">STR</span> &nbsp; &nbsp; <span class="kw35">R1</span><span class="sy0">,</span> <span class="br0">[</span><span class="kw35">SP</span><span class="sy0">,</span>#<span class="nu0">4</span><span class="br0">]</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C74A0 <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R5</span><span class="sy0">,</span> <span class="kw35">R2</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C74A2 <span class="kw7">BL</span> &nbsp; &nbsp; &nbsp;GetMoveCategory</div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021C74A6 <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R4</span><span class="sy0">,</span> #<span class="nu0">0xB</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C74A8 <span class="kw5">CMP</span> &nbsp; &nbsp; <span class="kw35">R0</span><span class="sy0">,</span> #<span class="nu0">2</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C74AA <span class="kw8">BEQ</span> &nbsp; &nbsp; loc_21C74AE</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C74AC <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R4</span><span class="sy0">,</span> #<span class="nu0">9</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C74AE</div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021C74AE loc_21C74AE<span class="sy0">:</span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;@ CODE XREF<span class="sy0">:</span> BaseDefenseMods<span class="sy0">+</span><span class="nu0">16</span>j</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C74AE <span class="kw3">LDR</span> &nbsp; &nbsp; <span class="kw35">R0</span><span class="sy0">,</span> <span class="br0">[</span><span class="kw35">R6</span><span class="sy0">,</span>#<span class="nu0">8</span><span class="br0">]</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C74B0 <span class="kw3">STR</span> &nbsp; &nbsp; <span class="kw35">R0</span><span class="sy0">,</span> <span class="br0">[</span><span class="kw35">SP</span><span class="sy0">,</span>#<span class="nu0">8</span><span class="br0">]</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C74B2 <span class="kw3">LDR</span> &nbsp; &nbsp; <span class="kw35">R0</span><span class="sy0">,</span> =<span class="nu0">0x3133</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C74B4 <span class="kw7">BL</span> &nbsp; &nbsp; &nbsp;AllocateVolatileVariables</div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021C74B8 <span class="kw3">LDR</span> &nbsp; &nbsp; <span class="kw35">R0</span><span class="sy0">,</span> <span class="br0">[</span><span class="kw35">SP</span><span class="sy0">,</span>#<span class="nu0">4</span><span class="br0">]</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C74BA <span class="kw7">BL</span> &nbsp; &nbsp; &nbsp;GetPkmId</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C74BE <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R1</span><span class="sy0">,</span> <span class="kw35">R0</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C74C0 <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R0</span><span class="sy0">,</span> #<span class="nu0">3</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C74C2 <span class="kw7">BL</span> &nbsp; &nbsp; &nbsp;StoreVolatileVariableFlag3e4</div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021C74C6 <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R0</span><span class="sy0">,</span> <span class="kw35">R5</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C74C8 <span class="kw7">BL</span> &nbsp; &nbsp; &nbsp;GetPkmId</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C74CC <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R1</span><span class="sy0">,</span> <span class="kw35">R0</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C74CE <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R0</span><span class="sy0">,</span> #<span class="nu0">4</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C74D0 <span class="kw7">BL</span> &nbsp; &nbsp; &nbsp;StoreVolatileVariableFlag3e4</div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021C74D4 <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R0</span><span class="sy0">,</span> #<span class="nu0">0x3C</span> @ <span class="st0">'&lt;'</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C74D6 <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R1</span><span class="sy0">,</span> <span class="kw35">R4</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C74D8 <span class="kw7">BL</span> &nbsp; &nbsp; &nbsp;StoreVolatileVariableFlag3e4</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C74DC <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R0</span><span class="sy0">,</span> #<span class="nu0">0x3D</span> @ <span class="st0">'='</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C74DE <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R1</span><span class="sy0">,</span> #<span class="nu0">0</span></div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021C74E0 <span class="kw7">BL</span> &nbsp; &nbsp; &nbsp;InitVolatileVariable</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C74E4 <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R0</span><span class="sy0">,</span> #<span class="nu0">0x51</span> @ <span class="st0">'Q'</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C74E6 <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R1</span><span class="sy0">,</span> #<span class="nu0">0</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C74E8 <span class="kw7">BL</span> &nbsp; &nbsp; &nbsp;StoreVolatileVariableFlag3e1</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C74EC <span class="kw3">LDR</span> &nbsp; &nbsp; <span class="kw35">R0</span><span class="sy0">,</span> <span class="br0">[</span><span class="kw35">SP</span><span class="br0">]</span></div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021C74EE <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R1</span><span class="sy0">,</span> #<span class="nu0">0x3A</span> @ <span class="st0">':'</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C74F0 <span class="kw7">BL</span> &nbsp; &nbsp; &nbsp;ApplyTriggers</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C74F4 <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R0</span><span class="sy0">,</span> #<span class="nu0">0x3D</span> @ <span class="st0">'='</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C74F6 <span class="kw7">BL</span> &nbsp; &nbsp; &nbsp;ReadVolatileVariable</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C74FA <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R1</span><span class="sy0">,</span> #<span class="nu0">1</span></div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021C74FC <span class="kw5">TST</span> &nbsp; &nbsp; <span class="kw35">R0</span><span class="sy0">,</span> <span class="kw35">R1</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C74FE <span class="kw8">BEQ</span> &nbsp; &nbsp; loc_21C7516</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C7500 <span class="kw5">CMP</span> &nbsp; &nbsp; <span class="kw35">R4</span><span class="sy0">,</span> #<span class="nu0">9</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C7502 <span class="kw8">BNE</span> &nbsp; &nbsp; loc_21C7508</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C7504 <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R4</span><span class="sy0">,</span> #<span class="nu0">0xB</span></div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021C7506 <span class="kw7">B</span> &nbsp; &nbsp; &nbsp; loc_21C750A</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C7508 @ <span class="sy0">---------------------------------------------------------------------------</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C7508</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C7508 loc_21C7508<span class="sy0">:</span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;@ CODE XREF<span class="sy0">:</span> BaseDefenseMods<span class="sy0">+</span>6Ej</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C7508 <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R4</span><span class="sy0">,</span> #<span class="nu0">9</span></div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021C750A</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C750A loc_21C750A<span class="sy0">:</span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;@ CODE XREF<span class="sy0">:</span> BaseDefenseMods<span class="sy0">+</span><span class="nu0">72</span>j</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C750A <span class="kw5">CMP</span> &nbsp; &nbsp; <span class="kw35">R4</span><span class="sy0">,</span> #<span class="nu0">9</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C750C <span class="kw8">BNE</span> &nbsp; &nbsp; loc_21C7512</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C750E <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R0</span><span class="sy0">,</span> #<span class="nu0">1</span></div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021C7510 <span class="kw7">B</span> &nbsp; &nbsp; &nbsp; loc_21C7514</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C7512 @ <span class="sy0">---------------------------------------------------------------------------</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C7512</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C7512 loc_21C7512<span class="sy0">:</span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;@ CODE XREF<span class="sy0">:</span> BaseDefenseMods<span class="sy0">+</span><span class="nu0">78</span>j</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C7512 <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R0</span><span class="sy0">,</span> #<span class="nu0">2</span></div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021C7514</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C7514 loc_21C7514<span class="sy0">:</span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;@ CODE XREF<span class="sy0">:</span> BaseDefenseMods<span class="sy0">+</span>7Cj</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C7514 <span class="kw3">STR</span> &nbsp; &nbsp; <span class="kw35">R0</span><span class="sy0">,</span> <span class="br0">[</span><span class="kw35">SP</span><span class="sy0">,</span>#<span class="nu0">8</span><span class="br0">]</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C7516</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C7516 loc_21C7516<span class="sy0">:</span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;@ CODE XREF<span class="sy0">:</span> BaseDefenseMods<span class="sy0">+</span>6Aj</div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021C7516 <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R0</span><span class="sy0">,</span> #<span class="nu0">0x51</span> @ <span class="st0">'Q'</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C7518 <span class="kw7">BL</span> &nbsp; &nbsp; &nbsp;ReadVolatileVariable</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C751C <span class="kw5">LSLS</span> &nbsp; &nbsp;<span class="kw35">R0</span><span class="sy0">,</span> <span class="kw35">R0</span><span class="sy0">,</span> #<span class="nu0">0x18</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C751E <span class="kw5">LSRS</span> &nbsp; &nbsp;<span class="kw35">R7</span><span class="sy0">,</span> <span class="kw35">R0</span><span class="sy0">,</span> #<span class="nu0">0x18</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C7520 <span class="kw3">LDR</span> &nbsp; &nbsp; <span class="kw35">R0</span><span class="sy0">,</span> =<span class="nu0">0x3142</span></div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021C7522 <span class="kw7">BL</span> &nbsp; &nbsp; &nbsp;FreeVolatileVariable</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C7526 <span class="kw5">CMP</span> &nbsp; &nbsp; <span class="kw35">R7</span><span class="sy0">,</span> #<span class="nu0">0</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C7528 <span class="kw8">BEQ</span> &nbsp; &nbsp; loc_21C7534</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C752A <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R0</span><span class="sy0">,</span> <span class="kw35">R5</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C752C <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R1</span><span class="sy0">,</span> <span class="kw35">R4</span></div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021C752E <span class="kw7">BL</span> &nbsp; &nbsp; &nbsp;RawBpkmStat</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C7532 <span class="kw7">B</span> &nbsp; &nbsp; &nbsp; loc_21C754C</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C7534 @ <span class="sy0">---------------------------------------------------------------------------</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C7534</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C7534 loc_21C7534<span class="sy0">:</span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;@ CODE XREF<span class="sy0">:</span> BaseDefenseMods<span class="sy0">+</span><span class="nu0">94</span>j</div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021C7534 <span class="kw3">LDR</span> &nbsp; &nbsp; <span class="kw35">R0</span><span class="sy0">,</span> <span class="br0">[</span><span class="kw35">SP</span><span class="sy0">,</span>#<span class="nu0">0x20</span><span class="br0">]</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C7536 <span class="kw5">CMP</span> &nbsp; &nbsp; <span class="kw35">R0</span><span class="sy0">,</span> #<span class="nu0">0</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C7538 <span class="kw8">BEQ</span> &nbsp; &nbsp; loc_21C7544</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C753A <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R0</span><span class="sy0">,</span> <span class="kw35">R5</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C753C <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R1</span><span class="sy0">,</span> <span class="kw35">R4</span></div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021C753E <span class="kw7">BL</span> &nbsp; &nbsp; &nbsp;CritAtkDefLevel</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C7542 <span class="kw7">B</span> &nbsp; &nbsp; &nbsp; loc_21C754C</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C7544 @ <span class="sy0">---------------------------------------------------------------------------</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C7544</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C7544 loc_21C7544<span class="sy0">:</span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;@ CODE XREF<span class="sy0">:</span> BaseDefenseMods<span class="sy0">+</span><span class="kw35">A4</span>j</div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021C7544 <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R0</span><span class="sy0">,</span> <span class="kw35">R5</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C7546 <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R1</span><span class="sy0">,</span> <span class="kw35">R4</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C7548 <span class="kw7">BL</span> &nbsp; &nbsp; &nbsp;GetBpkmStat</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C754C</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C754C loc_21C754C<span class="sy0">:</span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;@ CODE XREF<span class="sy0">:</span> BaseDefenseMods<span class="sy0">+</span>9Ej</div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021C754C &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; @ BaseDefenseMods<span class="sy0">+</span>AEj</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C754C <span class="kw5">LSLS</span> &nbsp; &nbsp;<span class="kw35">R0</span><span class="sy0">,</span> <span class="kw35">R0</span><span class="sy0">,</span> #<span class="nu0">0x10</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C754E <span class="kw5">LSRS</span> &nbsp; &nbsp;<span class="kw35">R7</span><span class="sy0">,</span> <span class="kw35">R0</span><span class="sy0">,</span> #<span class="nu0">0x10</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C7550 <span class="kw3">LDR</span> &nbsp; &nbsp; <span class="kw35">R0</span><span class="sy0">,</span> <span class="br0">[</span><span class="kw35">SP</span><span class="br0">]</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C7552 <span class="kw7">BL</span> &nbsp; &nbsp; &nbsp;GetActiveWeather</div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021C7556 <span class="kw5">CMP</span> &nbsp; &nbsp; <span class="kw35">R0</span><span class="sy0">,</span> #<span class="nu0">4</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C7558 <span class="kw8">BNE</span> &nbsp; &nbsp; loc_21C7578</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C755A <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R0</span><span class="sy0">,</span> <span class="kw35">R5</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C755C <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R1</span><span class="sy0">,</span> #<span class="nu0">5</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C755E <span class="kw7">BL</span> &nbsp; &nbsp; &nbsp;IsMoveOfUserType</div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021C7562 <span class="kw5">CMP</span> &nbsp; &nbsp; <span class="kw35">R0</span><span class="sy0">,</span> #<span class="nu0">0</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C7564 <span class="kw8">BEQ</span> &nbsp; &nbsp; loc_21C7578</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C7566 <span class="kw5">CMP</span> &nbsp; &nbsp; <span class="kw35">R4</span><span class="sy0">,</span> #<span class="nu0">0xB</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C7568 <span class="kw8">BNE</span> &nbsp; &nbsp; loc_21C7578</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C756A <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R1</span><span class="sy0">,</span> #<span class="nu0">6</span></div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021C756C <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R0</span><span class="sy0">,</span> <span class="kw35">R7</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C756E <span class="kw5">LSLS</span> &nbsp; &nbsp;<span class="kw35">R1</span><span class="sy0">,</span> <span class="kw35">R1</span><span class="sy0">,</span> #<span class="nu0">0xA</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C7570 <span class="kw7">BL</span> &nbsp; &nbsp; &nbsp;ApplyMod</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C7574 <span class="kw5">LSLS</span> &nbsp; &nbsp;<span class="kw35">R0</span><span class="sy0">,</span> <span class="kw35">R0</span><span class="sy0">,</span> #<span class="nu0">0x10</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C7576 <span class="kw5">LSRS</span> &nbsp; &nbsp;<span class="kw35">R7</span><span class="sy0">,</span> <span class="kw35">R0</span><span class="sy0">,</span> #<span class="nu0">0x10</span></div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021C7578</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C7578 loc_21C7578<span class="sy0">:</span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;@ CODE XREF<span class="sy0">:</span> BaseDefenseMods<span class="sy0">+</span>C4j</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C7578 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; @ BaseDefenseMods<span class="sy0">+</span><span class="kw35">D0</span>j <span class="sy0">...</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C7578 <span class="kw3">LDR</span> &nbsp; &nbsp; <span class="kw35">R4</span><span class="sy0">,</span> =<span class="nu0">0x3157</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C757A <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R0</span><span class="sy0">,</span> <span class="kw35">R4</span></div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021C757C <span class="kw7">BL</span> &nbsp; &nbsp; &nbsp;AllocateVolatileVariables</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C7580 <span class="kw3">LDR</span> &nbsp; &nbsp; <span class="kw35">R0</span><span class="sy0">,</span> <span class="br0">[</span><span class="kw35">SP</span><span class="sy0">,</span>#<span class="nu0">4</span><span class="br0">]</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C7582 <span class="kw7">BL</span> &nbsp; &nbsp; &nbsp;GetPkmId</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C7586 <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R1</span><span class="sy0">,</span> <span class="kw35">R0</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C7588 <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R0</span><span class="sy0">,</span> #<span class="nu0">3</span></div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021C758A <span class="kw7">BL</span> &nbsp; &nbsp; &nbsp;StoreVolatileVariableFlag3e4</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C758E <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R0</span><span class="sy0">,</span> <span class="kw35">R5</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C7590 <span class="kw7">BL</span> &nbsp; &nbsp; &nbsp;GetPkmId</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C7594 <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R1</span><span class="sy0">,</span> <span class="kw35">R0</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C7596 <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R0</span><span class="sy0">,</span> #<span class="nu0">4</span></div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021C7598 <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R5</span><span class="sy0">,</span> #<span class="nu0">4</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C759A <span class="kw7">BL</span> &nbsp; &nbsp; &nbsp;StoreVolatileVariableFlag3e4</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C759E <span class="kw3">LDRH</span> &nbsp; &nbsp;<span class="kw35">R1</span><span class="sy0">,</span> <span class="br0">[</span><span class="kw35">R6</span><span class="br0">]</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C75A0 <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R0</span><span class="sy0">,</span> #<span class="nu0">0x12</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C75A2 <span class="kw7">BL</span> &nbsp; &nbsp; &nbsp;StoreVolatileVariableFlag3e4</div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021C75A6 <span class="kw3">LDRB</span> &nbsp; &nbsp;<span class="kw35">R1</span><span class="sy0">,</span> <span class="br0">[</span><span class="kw35">R6</span><span class="sy0">,</span>#<span class="nu0">6</span><span class="br0">]</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C75A8 <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R0</span><span class="sy0">,</span> #<span class="nu0">0x16</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C75AA <span class="kw7">BL</span> &nbsp; &nbsp; &nbsp;StoreVolatileVariableFlag3e4</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C75AE <span class="kw3">LDR</span> &nbsp; &nbsp; <span class="kw35">R1</span><span class="sy0">,</span> <span class="br0">[</span><span class="kw35">SP</span><span class="sy0">,</span>#<span class="nu0">8</span><span class="br0">]</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C75B0 <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R0</span><span class="sy0">,</span> #<span class="nu0">0x1A</span></div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021C75B2 <span class="kw7">BL</span> &nbsp; &nbsp; &nbsp;StoreVolatileVariableFlag3e4</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C75B6 <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R0</span><span class="sy0">,</span> #<span class="nu0">0x34</span> @ <span class="st0">'4'</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C75B8 <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R1</span><span class="sy0">,</span> <span class="kw35">R7</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C75BA <span class="kw7">BL</span> &nbsp; &nbsp; &nbsp;InitVolatileVariable</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C75BE <span class="kw3">LDR</span> &nbsp; &nbsp; <span class="kw35">R2</span><span class="sy0">,</span> =<span class="nu0">0x19A</span></div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021C75C0 <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R0</span><span class="sy0">,</span> #<span class="nu0">0x35</span> @ <span class="st0">'5'</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C75C2 <span class="kw5">LSLS</span> &nbsp; &nbsp;<span class="kw35">R1</span><span class="sy0">,</span> <span class="kw35">R5</span><span class="sy0">,</span> #<span class="nu0">0xA</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C75C4 <span class="kw5">LSLS</span> &nbsp; &nbsp;<span class="kw35">R3</span><span class="sy0">,</span> <span class="kw35">R5</span><span class="sy0">,</span> #<span class="nu0">0xF</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C75C6 <span class="kw7">BL</span> &nbsp; &nbsp; &nbsp;StoreVolatileVariableFlag3e3</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C75CA <span class="kw3">LDR</span> &nbsp; &nbsp; <span class="kw35">R0</span><span class="sy0">,</span> <span class="br0">[</span><span class="kw35">SP</span><span class="br0">]</span></div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021C75CC <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R1</span><span class="sy0">,</span> #<span class="nu0">0x3C</span> @ <span class="st0">'&lt;'</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C75CE <span class="kw7">BL</span> &nbsp; &nbsp; &nbsp;ApplyTriggers</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C75D2 <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R0</span><span class="sy0">,</span> #<span class="nu0">0x34</span> @ <span class="st0">'4'</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C75D4 <span class="kw7">BL</span> &nbsp; &nbsp; &nbsp;ReadVolatileVariable</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C75D8 <span class="kw5">LSLS</span> &nbsp; &nbsp;<span class="kw35">R0</span><span class="sy0">,</span> <span class="kw35">R0</span><span class="sy0">,</span> #<span class="nu0">0x10</span></div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021C75DA <span class="kw5">LSRS</span> &nbsp; &nbsp;<span class="kw35">R5</span><span class="sy0">,</span> <span class="kw35">R0</span><span class="sy0">,</span> #<span class="nu0">0x10</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C75DC <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R0</span><span class="sy0">,</span> #<span class="nu0">0x35</span> @ <span class="st0">'5'</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C75DE <span class="kw7">BL</span> &nbsp; &nbsp; &nbsp;ReadVolatileVariable</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C75E2 <span class="kw5">ADDS</span> &nbsp; &nbsp;<span class="kw35">R4</span><span class="sy0">,</span> #<span class="nu0">0xB</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C75E4 <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R6</span><span class="sy0">,</span> <span class="kw35">R0</span></div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021C75E6 <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R0</span><span class="sy0">,</span> <span class="kw35">R4</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C75E8 <span class="kw7">BL</span> &nbsp; &nbsp; &nbsp;FreeVolatileVariable</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C75EC <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R0</span><span class="sy0">,</span> <span class="kw35">R5</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C75EE <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R1</span><span class="sy0">,</span> <span class="kw35">R6</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C75F0 <span class="kw7">BL</span> &nbsp; &nbsp; &nbsp;ApplyMod</div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021C75F4 <span class="kw5">LSLS</span> &nbsp; &nbsp;<span class="kw35">R0</span><span class="sy0">,</span> <span class="kw35">R0</span><span class="sy0">,</span> #<span class="nu0">0x10</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C75F6 <span class="kw5">LSRS</span> &nbsp; &nbsp;<span class="kw35">R0</span><span class="sy0">,</span> <span class="kw35">R0</span><span class="sy0">,</span> #<span class="nu0">0x10</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C75F8 <span class="kw1">ADD</span> &nbsp; &nbsp; <span class="kw35">SP</span><span class="sy0">,</span> <span class="kw35">SP</span><span class="sy0">,</span> #<span class="nu0">0xC</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C75FA <span class="kw3">POP</span> &nbsp; &nbsp; <span class="br0">{</span><span class="kw35">R4</span><span class="sy0">-</span><span class="kw35">R7</span><span class="sy0">,</span><span class="kw35">PC</span><span class="br0">}</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C75FA @ End of function BaseDefenseMods</div></li>
</ol>
</div>

<h3><a name="defense-base">Base value</a></h3>

<p>
Just like for the attack stat, the first step is to decide which defense stat to use and whether to apply the
active boost level. This is done by the following triggers:
</p>

<table class="sortable">
 <thead>
  <tr>
   <th width="110">Trigger address</th>
   <th>Trigger description</th>
  </tr>
 </thead>
	
 <tbody>
  <tr>
   <td>21da840</td>
   <td>Unaware: if foe has ability Unaware do not apply any Defense level boosts.</td>
  </tr>
  <tr class="a">
   <td>21d8db0</td>
   <td>Internal.</td>
  </tr>
  <tr>
   <td>21e7944</td>
   <td>This triggers is used for special moves that deal physical damage. It replaces the identifier of the base special defense stat with the one for defense.</td>
  </tr>
  <tr class="a">
   <td>21e797c</td>
   <td>Chip Away: ignore defense level boosts if foe has it.</td>
  </tr>
  <tr>
   <td>68981a0</td>
   <td>Wonder Room: has the same effect as 21e7944 but for all Pokémon on field. Will also cancel the effect of 21e7944.</td>
  </tr>
 </tbody>
</table>

<h3><a name="boost-def">Boost level</a></h3>

This works like <a href="#boost-level">attack boosts</a> except the base defense stat is used on critical hits if the boost level is positive.

<h3><a name="sand-mod">Sandstorm modifier</a></h3>

At this point, if the current weather (after triggers) is Sandstorm, the user is Rock type and the
base stat was special attack, apply a 0x1800 modifier to the current defense stat. This is done regardless
of critical hits and before any other modifier.

<h3><a name="def-mod">Defense modifiers</a></h3>

The final defense stat is altered using the following modifiers:

<table class="sortable">
 <thead>
  <tr>
   <th width="110">Trigger address</th>
   <th width="90">Modifier</th>
   <th>Trigger description</th>
  </tr>
 </thead>
	
 <tbody>
  <tr>
   <td>21d91bc</td>
   <td>0x1800</td>
   <td>If target has ability Marvel Scale, has a status problem and move is physical.</td>
  </tr>
  <tr class="a">
   <td>21d903c</td>
   <td>0x1800</td>
   <td>If ally is Cherrim and has ability Flower Gift, weather is intense sunlight and move is special.</td>
  </tr>
  <tr>
   <td>21db8f0</td>
   <td></td>
   <td>Internal.</td>
  </tr>
  <tr class="a">
   <td>21de7bc</td>
   <td>0x1800</td>
   <td>Is target is Clamperl, holds a DeepSeaScale and move is special.</td>
  </tr>
  <tr>
   <td>21de804</td>
   <td>0x1800</td>
   <td>Is target is (untransformed) Ditto, holds Metal Powder and move is physical.</td>
  </tr>
  <tr class="a">
   <td>21dfaa8</td>
   <td>0x1800</td>
   <td>If target is holding Eviolite and is not fully evolved.</td>
  </tr>
  <tr>
   <td>21de8d4</td>
   <td>0x1800</td>
   <td>If target is Latios or Latias holding a Sold Dew and move is special.</td>
  </tr>
 </tbody>
</table>

<h2><a name="special-cases">Special cases</a></h2>

The following moves do not depend on the user's attack or the target's defense and are handled by specific triggers:

<table class="sortable">
 <thead>
  <tr>
   <th width="110">Trigger address</th>
   <th>Trigger description</th>
  </tr>
 </thead>
	
 <tbody>
  <tr class="a">
   <td>21e1608</td>
   <td>Psywave: damage is always max(1, ((rand(101) + 50) * UserLevel) &divide; 100)</td>
  </tr>
  <tr>
   <td>21e15d0</td>
   <td>Night Shade: damage is always UserLevel.</td>
  </tr>
  <tr class="a">
   <td>21e1504</td>
   <td>SonicBoom: damage is always 20.</td>
  </tr>
  <tr>
   <td>21e1498</td>
   <td>Super Fang: damage is always max(1, UserHP &divide; 2).</td>
  </tr>
  <tr class="a">
   <td>21e14e0</td>
   <td>Dragon Rage: damage is always 40.</td>
  </tr>
  <tr>
   <td>21e1578</td>
   <td>Endeavor: damage is always max(1, max(0, TargetHP-UserHP)).</td>
  </tr>
  <tr class="a">
   <td>21e7c98</td>
   <td>Final Gambit: damage is always UserHP.</td>
  </tr>
  <tr>
   <td>21e0838</td>
   <td>Brick Break: cancels the effect of Reflect / Light Screen.</td>
  </tr>
  <tr class="a">
   <td>21e1978</td>
   <td>Counter: if last Pokémon to hit the user was a foe using a physical move, use double the set damage.</td>
  </tr>
  <tr>
   <td>21e19bc</td>
   <td>Mirror Coat: same as Counter for special moves.</td>
  </tr>
  <tr class="a">
   <td>21e1a00</td>
   <td>Metal Burst: same as Counter for both physical and special moves.</td>
  </tr>
  <tr>
   <td>21e3e50</td>
   <td>Bide: store energy for 2+rand(2) turns, then set damage to twice the total damage dealt to user during the charging turns.</td>
  </tr>
 </tbody>
</table>

</body>
</html>
 

Nexus

Forever the Recusant
is a Site Content Manager Alumnusis a Senior Staff Member Alumnusis a Contributor Alumnus
k, so I'll post this here and in the GP thread, if some GP members could get on this soon that would be great want to get this up immediately.
 

Nix_Hex

Uangaana kasuttortunga!
is a Site Content Manager Alumnusis a Forum Moderator Alumnusis a Researcher Alumnusis a Top Contributor Alumnusis a Battle Simulator Moderator Alumnus
.
HTML:
[title]
The Complete Damage Formula for Black &amp; White (B/W)

<style type="text/css">
.listing
{
 overflow: auto;
 width: 100%;
 max-height: 333px;
 margin: 5px auto;
 font-size: 90%;
}
.arm .de1, .arm .de2 {color: #000060; font-weight: normal;}
.arm  {white-space: nowrap;border: 1px dotted #a0a0a0; font-family: 'Courier New', Courier, monospace; background-color: #f0f0f0; margin: 0; line-height: 110%; padding: 0;color: #0000bb;}
.arm a:link {color: #006;}
.arm a:hover {background-color: #d6d6e6;}
.arm .head {font-family: Verdana, Arial, sans-serif; color: #808080; font-size: 70%; font-weight: bold; background-color: #f0f0ff; border-bottom: 1px solid #d0d0d0; padding: 2px;}
.arm .foot {font-family: Verdana, Arial, sans-serif; color: #808080; font-size: 70%; font-weight: bold; background-color: #f0f0ff; border-top: 1px solid #d0d0d0; padding: 2px;}
.arm .imp {font-weight: bold; color: red;}
.arm li, .arm .li1 {font-family: 'Courier New', Courier, monospace; color: #000060; background-color: #e0e0e0; padding-bottom: 2px;}
.arm .ln {width:1px;text-align:right;margin:0;padding:0 2px;vertical-align:top;}
.arm .li2 {font-weight: bold; color: #000090; line-height: 90%}
.arm .kw1 {color: #00007f; font-weight: normal; font-style: normal;}
.arm .kw2 {color: #00007f; font-weight: normal; font-style: italic;}
.arm .kw3 {color: #00007f; font-weight: normal; font-style: normal;}
.arm .kw4 {color: #00007f; font-weight: normal; font-style: italic;}
.arm .kw5 {color: #00007f; font-weight: bold; font-style: normal;}
.arm .kw6 {color: #00007f; font-weight: bold; font-style: italic;}
.arm .kw7 {color: #0000ff; font-weight: normal; font-style: normal;}
.arm .kw8 {color: #0000ff; font-weight: normal; font-style: italic;}
.arm .kw9 {color: #00007f; font-weight: normal; font-style: normal;}
.arm .kw10 {color: #00007f; font-weight: normal; font-style: italic;}
.arm .kw11 {color: #b00040; font-weight: normal; font-style: normal;}
.arm .kw12 {color: #b00040; font-weight: normal; font-style: italic;}
.arm .kw13 {color: #00007f; font-weight: normal; font-style: normal;}
.arm .kw14 {color: #00007f; font-weight: bold; font-style: italic;}
.arm .kw15 {color: #00007f; font-weight: normal; font-style: normal;}
.arm .kw16 {color: #00007f; font-weight: bold; font-style: italic;}
.arm .kw17 {color: #b00040; font-weight: normal; font-style: normal;}
.arm .kw18 {color: #b00040; font-weight: normal; font-style: italic;}
.arm .kw19 {color: #b00040; font-weight: normal; font-style: normal;}
.arm .kw20 {color: #b00040; font-weight: normal; font-style: italic;}
.arm .kw21 {color: #b00040; font-weight: normal; font-style: italic;}
.arm .kw22 {color: #b00040; font-weight: normal; font-style: italic;}
.arm .kw23 {color: #b00040; font-weight: normal; font-style: italic;}
.arm .kw24 {color: #b00040; font-weight: normal; font-style: italic;}
.arm .kw25 {color: #b00040; font-weight: normal; font-style: italic;}
.arm .kw26 {color: #b00040; font-weight: normal; font-style: italic;}
.arm .kw27 {color: #b00040; font-weight: normal; font-style: italic;}
.arm .kw28 {color: #b00040; font-weight: normal; font-style: italic;}
.arm .kw29 {color: #b00040; font-weight: normal; font-style: italic;}
.arm .kw30 {color: #b00040; font-weight: normal; font-style: italic;}
.arm .kw31 {color: #b00040; font-weight: normal; font-style: italic;}
.arm .kw32 {color: #b00040; font-weight: normal; font-style: italic;}
.arm .kw33 {color: #b00040; font-weight: normal; font-style: italic;}
.arm .kw34 {color: #b00040; font-weight: normal; font-style: italic;}
.arm .kw35 {color: #46aa03; font-weight: bold;}
.arm .co1 {color: #666666; font-style: italic;font-style: normal;}
.arm .co2 {color: #adadad; font-style: italic;}
.arm .coMULTI {font-style: normal;}
.arm .es0 {color: #000099; font-weight: bold;font-weight: normal;}
.arm .br0 {color: #009900; font-weight: bold;}
.arm .sy0 {color: #339933;}
.arm .st0 {color: #7f007f;}
.arm .nu0 {color: #ff0000;}
.arm .me {1}
.arm span.xtra { display:block; }
    </style>
</head>
<body>
[head]
<meta name="description" content="The Complete Damage Formula for Black &amp; White" />
[page]
<div class="author">By <a href="http://www.pokecheck.org">Xfr</a>, <a href="/forums/member.php?u=54525">Bond697</a> and <a href="/forums/member.php?u=32572">Kaphotics</a>, with help from <a href="/forums/member.php?u=87165">V4Victini</a>.</div>

<ol class="toc">
 <li><a href="#introduction">Introduction</a></li>
 <li>
  <a href="main">Main concepts</a>
  <ol style="list-style: upper-alpha">
   <li><a href="#overview">General flow of damage calculation</a></li>
   <li><a href="#apply-mod">How to apply a modifier</a></li>
   <li><a href="#chain-mod">How to chain modifiers</a></li>
   <li><a href="#mt-mod">The multi-target modifier</a></li>
   <li><a href="#weather-mod">The weather modifier</a></li>
   <li><a href="#crits">Critical hits</a></li>
   <li><a href="#random">The random factor</a></li>
   <li><a href="#stab">STAB</a></li>
   <li><a href="#type-eff">Type effectiveness</a></li>
   <li><a href="#burn">Effect of a burn</a></li>
   <li><a href="#final">Final modifier</a></li>
  </ol>
 </li>
 <li>
  <a href="#base-power">The base power</a>
  <ol style="list-style: upper-alpha">
   <li><a href="#variable-bp">Triggers for variable base power</a></li>
   <li><a href="#bp-mods">Modifiers for the base power</a></li>
  </ol>
 </li>
 <li>
  <a href="#attack">User attack stat</a>
  <ol style="list-style: upper-alpha">
   <li><a href="#attack-base">Base value</a></li>
   <li><a href="#boost-level">Boost level</a></li>
   <li><a href="#attack-mod">Attack modifiers</a></li>
  </ol>
 </li>
 <li>
  <a href="#defense">Target defense stat</a>
  <ol style="list-style: upper-alpha">
   <li><a href="#defense-base">Base value</a></li>
   <li><a href="#boost-def">Boost level</a></li>
   <li><a href="#sand-mod">Sandstorm modifier</a></li>
   <li><a href="#def-mod">Defense modifiers</a></li>
  </ol>
 </li>
 <li><a href="#special-cases">Special cases</a></li>
</ol>

<h2><a name="introduction">Introduction</a></h2>

<p>In Generation IV, the damage formula was derived empirically by X-Act from running it countless times, an approach that is both tedious and prone to errors. The good understanding of the ARM code for Black &amp; White allows us to document the damage formula based on the actual source code of the game. It doesn't guarantee that we didn't make any mistake (interpreting assembly language is in itself a tricky task) but having the documented source along with the formula backs up our claims and allows anyone who spots any error to fix it by themselves.</p>

<h2><a name="main">Main concepts</a></h2>

<h3><a name="overview">General flow of damage calculation</a></h3>

<div class="arm listing">
<ol><li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1E94 @ int __cdecl DamageCalc<span class="br0">(</span>void <span class="sy0">*</span>trigger_table<span class="sy0">,</span> void <span class="sy0">**</span>attacking_bpkm<span class="sy0">,</span> void <span class="sy0">**</span>defending_bpkm<span class="sy0">,</span> unsigned __int16 <span class="sy0">*</span>move_id<span class="br0">)</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1E94 DamageCalc<span class="sy0">:</span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; @ CODE XREF<span class="sy0">:</span> MEMORY<span class="sy0">:</span>021C0B28p</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1E94</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1E94 double_damage= <span class="sy0">-</span><span class="nu0">0x30</span></div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021C1E94 p_attacking= <span class="sy0">-</span><span class="nu0">0x2C</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1E94 current_damage= <span class="sy0">-</span><span class="nu0">0x28</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1E94 static_damage= <span class="sy0">-</span><span class="nu0">0x24</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1E94 move_cat= <span class="sy0">-</span><span class="nu0">0x20</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1E94 base_power= <span class="sy0">-</span><span class="nu0">0x1C</span></div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021C1E94 attack_stat= <span class="sy0">-</span><span class="nu0">0x18</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1E94 effectiveness_factor= &nbsp;<span class="nu0">0</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1E94 field_mod= &nbsp;<span class="nu0">4</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1E94 is_critical= &nbsp;<span class="nu0">8</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1E94 rig_mindamage= &nbsp;<span class="nu0">0xC</span></div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021C1E94 p_store_result= &nbsp;<span class="nu0">0x10</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1E94</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1E94 <span class="kw3">PUSH</span> &nbsp; &nbsp;<span class="br0">{</span><span class="kw35">R4</span><span class="sy0">-</span><span class="kw35">R7</span><span class="sy0">,</span><span class="kw35">LR</span><span class="br0">}</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1E96 <span class="kw1">SUB</span> &nbsp; &nbsp; <span class="kw35">SP</span><span class="sy0">,</span> <span class="kw35">SP</span><span class="sy0">,</span> #<span class="nu0">0x1C</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1E98 <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R4</span><span class="sy0">,</span> <span class="kw35">R3</span></div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021C1E9A <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R5</span><span class="sy0">,</span> <span class="kw35">R0</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1E9C <span class="kw3">LDRH</span> &nbsp; &nbsp;<span class="kw35">R0</span><span class="sy0">,</span> <span class="br0">[</span><span class="kw35">R4</span><span class="br0">]</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1E9E <span class="kw3">STR</span> &nbsp; &nbsp; <span class="kw35">R1</span><span class="sy0">,</span> <span class="br0">[</span><span class="kw35">SP</span><span class="sy0">,</span>#<span class="nu0">0x30</span><span class="sy0">+</span>p_attacking<span class="br0">]</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1EA0 <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R7</span><span class="sy0">,</span> <span class="kw35">R2</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1EA2 <span class="kw3">LDR</span> &nbsp; &nbsp; <span class="kw35">R6</span><span class="sy0">,</span> <span class="br0">[</span><span class="kw35">SP</span><span class="sy0">,</span>#<span class="nu0">0x30</span><span class="sy0">+</span>is_critical<span class="br0">]</span></div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021C1EA4 <span class="kw7">BL</span> &nbsp; &nbsp; &nbsp;GetMoveCategory</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1EA8 <span class="kw3">STR</span> &nbsp; &nbsp; <span class="kw35">R0</span><span class="sy0">,</span> <span class="br0">[</span><span class="kw35">SP</span><span class="sy0">,</span>#<span class="nu0">0x30</span><span class="sy0">+</span>move_cat<span class="br0">]</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1EAA <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R0</span><span class="sy0">,</span> #<span class="nu0">0</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1EAC <span class="kw3">STR</span> &nbsp; &nbsp; <span class="kw35">R0</span><span class="sy0">,</span> <span class="br0">[</span><span class="kw35">SP</span><span class="sy0">,</span>#<span class="nu0">0x30</span><span class="sy0">+</span>static_damage<span class="br0">]</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1EAE <span class="kw3">LDR</span> &nbsp; &nbsp; <span class="kw35">R0</span><span class="sy0">,</span> =<span class="nu0">0x1C21</span></div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021C1EB0 <span class="kw7">BL</span> &nbsp; &nbsp; &nbsp;AllocateVolatileVariables</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1EB4 <span class="kw3">LDR</span> &nbsp; &nbsp; <span class="kw35">R1</span><span class="sy0">,</span> <span class="br0">[</span><span class="kw35">SP</span><span class="sy0">,</span>#<span class="nu0">0x30</span><span class="sy0">+</span>effectiveness_factor<span class="br0">]</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1EB6 <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R0</span><span class="sy0">,</span> #<span class="nu0">0x38</span> @ <span class="st0">'8'</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1EB8 <span class="kw7">BL</span> &nbsp; &nbsp; &nbsp;StoreVolatileVariableFlag3e4</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1EBC <span class="kw3">LDR</span> &nbsp; &nbsp; <span class="kw35">R0</span><span class="sy0">,</span> <span class="br0">[</span><span class="kw35">SP</span><span class="sy0">,</span>#<span class="nu0">0x30</span><span class="sy0">+</span>p_attacking<span class="br0">]</span></div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021C1EBE <span class="kw7">BL</span> &nbsp; &nbsp; &nbsp;Dereference25</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1EC2 <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R1</span><span class="sy0">,</span> <span class="kw35">R0</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1EC4 <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R0</span><span class="sy0">,</span> #<span class="nu0">3</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1EC6 <span class="kw7">BL</span> &nbsp; &nbsp; &nbsp;StoreVolatileVariableFlag3e4</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1ECA <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R0</span><span class="sy0">,</span> <span class="kw35">R7</span></div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021C1ECC <span class="kw7">BL</span> &nbsp; &nbsp; &nbsp;Dereference25</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1ED0 <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R1</span><span class="sy0">,</span> <span class="kw35">R0</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1ED2 <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R0</span><span class="sy0">,</span> #<span class="nu0">4</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1ED4 <span class="kw7">BL</span> &nbsp; &nbsp; &nbsp;StoreVolatileVariableFlag3e4</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1ED8 <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R0</span><span class="sy0">,</span> #<span class="nu0">0x45</span> @ <span class="st0">'E'</span></div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021C1EDA <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R1</span><span class="sy0">,</span> <span class="kw35">R6</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1EDC <span class="kw7">BL</span> &nbsp; &nbsp; &nbsp;StoreVolatileVariableFlag3e4</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1EE0 <span class="kw3">LDRB</span> &nbsp; &nbsp;<span class="kw35">R1</span><span class="sy0">,</span> <span class="br0">[</span><span class="kw35">R4</span><span class="sy0">,</span>#<span class="nu0">6</span><span class="br0">]</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1EE2 <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R0</span><span class="sy0">,</span> #<span class="nu0">0x16</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1EE4 <span class="kw7">BL</span> &nbsp; &nbsp; &nbsp;StoreVolatileVariableFlag3e4</div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021C1EE8 <span class="kw3">LDRH</span> &nbsp; &nbsp;<span class="kw35">R1</span><span class="sy0">,</span> <span class="br0">[</span><span class="kw35">R4</span><span class="br0">]</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1EEA <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R0</span><span class="sy0">,</span> #<span class="nu0">0x12</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1EEC <span class="kw7">BL</span> &nbsp; &nbsp; &nbsp;StoreVolatileVariableFlag3e4</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1EF0 <span class="kw3">LDR</span> &nbsp; &nbsp; <span class="kw35">R1</span><span class="sy0">,</span> <span class="br0">[</span><span class="kw35">SP</span><span class="sy0">,</span>#<span class="nu0">0x30</span><span class="sy0">+</span>move_cat<span class="br0">]</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1EF2 <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R0</span><span class="sy0">,</span> #<span class="nu0">0x1A</span></div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021C1EF4 <span class="kw7">BL</span> &nbsp; &nbsp; &nbsp;StoreVolatileVariableFlag3e4</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1EF8 <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R0</span><span class="sy0">,</span> #<span class="nu0">0x37</span> @ <span class="st0">'7'</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1EFA <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R1</span><span class="sy0">,</span> #<span class="nu0">0</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1EFC <span class="kw7">BL</span> &nbsp; &nbsp; &nbsp;InitVolatileVariable</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1F00 <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R0</span><span class="sy0">,</span> <span class="kw35">R5</span></div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021C1F02 <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R1</span><span class="sy0">,</span> #<span class="nu0">0x46</span> @ <span class="st0">'F'</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1F04 <span class="kw7">BL</span> &nbsp; &nbsp; &nbsp;ApplyTriggers</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1F08 <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R0</span><span class="sy0">,</span> #<span class="nu0">0x37</span> @ <span class="st0">'7'</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1F0A <span class="kw7">BL</span> &nbsp; &nbsp; &nbsp;ReadVolatileVariable</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1F0E <span class="kw3">STR</span> &nbsp; &nbsp; <span class="kw35">R0</span><span class="sy0">,</span> <span class="br0">[</span><span class="kw35">SP</span><span class="sy0">,</span>#<span class="nu0">0x30</span><span class="sy0">+</span>current_damage<span class="br0">]</span></div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021C1F10 <span class="kw5">CMP</span> &nbsp; &nbsp; <span class="kw35">R0</span><span class="sy0">,</span> #<span class="nu0">0</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1F12 <span class="kw8">BEQ</span> &nbsp; &nbsp; Bank0</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1F14 <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R0</span><span class="sy0">,</span> #<span class="nu0">1</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1F16 <span class="kw3">STR</span> &nbsp; &nbsp; <span class="kw35">R0</span><span class="sy0">,</span> <span class="br0">[</span><span class="kw35">SP</span><span class="sy0">,</span>#<span class="nu0">0x30</span><span class="sy0">+</span>static_damage<span class="br0">]</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1F18 <span class="kw7">B</span> &nbsp; &nbsp; &nbsp; Bank9</div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021C1F1A @ <span class="sy0">---------------------------------------------------------------------------</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1F1A</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1F1A Bank0<span class="sy0">:</span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;@ CODE XREF<span class="sy0">:</span> DamageCalc<span class="sy0">+</span>7Ej</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1F1A <span class="kw3">LDR</span> &nbsp; &nbsp; <span class="kw35">R1</span><span class="sy0">,</span> <span class="br0">[</span><span class="kw35">SP</span><span class="sy0">,</span>#<span class="nu0">0x30</span><span class="sy0">+</span>p_attacking<span class="br0">]</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1F1C <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R0</span><span class="sy0">,</span> <span class="kw35">R5</span></div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021C1F1E <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R2</span><span class="sy0">,</span> <span class="kw35">R7</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1F20 <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R3</span><span class="sy0">,</span> <span class="kw35">R4</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1F22 <span class="kw7">BL</span> &nbsp; &nbsp; &nbsp;BasePowerMods</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1F26 <span class="kw3">STR</span> &nbsp; &nbsp; <span class="kw35">R0</span><span class="sy0">,</span> <span class="br0">[</span><span class="kw35">SP</span><span class="sy0">,</span>#<span class="nu0">0x30</span><span class="sy0">+</span>base_power<span class="br0">]</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1F28 <span class="kw3">LDR</span> &nbsp; &nbsp; <span class="kw35">R1</span><span class="sy0">,</span> <span class="br0">[</span><span class="kw35">SP</span><span class="sy0">,</span>#<span class="nu0">0x30</span><span class="sy0">+</span>p_attacking<span class="br0">]</span></div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021C1F2A <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R0</span><span class="sy0">,</span> <span class="kw35">R5</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1F2C <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R2</span><span class="sy0">,</span> <span class="kw35">R7</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1F2E <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R3</span><span class="sy0">,</span> <span class="kw35">R4</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1F30 <span class="kw3">STR</span> &nbsp; &nbsp; <span class="kw35">R6</span><span class="sy0">,</span> <span class="br0">[</span><span class="kw35">SP</span><span class="sy0">,</span>#<span class="nu0">0x30</span><span class="sy0">+</span>double_damage<span class="br0">]</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1F32 <span class="kw7">BL</span> &nbsp; &nbsp; &nbsp;BaseAttackMods</div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021C1F36 <span class="kw3">STR</span> &nbsp; &nbsp; <span class="kw35">R0</span><span class="sy0">,</span> <span class="br0">[</span><span class="kw35">SP</span><span class="sy0">,</span>#<span class="nu0">0x30</span><span class="sy0">+</span>attack_stat<span class="br0">]</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1F38 <span class="kw3">LDR</span> &nbsp; &nbsp; <span class="kw35">R1</span><span class="sy0">,</span> <span class="br0">[</span><span class="kw35">SP</span><span class="sy0">,</span>#<span class="nu0">0x30</span><span class="sy0">+</span>p_attacking<span class="br0">]</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1F3A <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R0</span><span class="sy0">,</span> <span class="kw35">R5</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1F3C <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R2</span><span class="sy0">,</span> <span class="kw35">R7</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1F3E <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R3</span><span class="sy0">,</span> <span class="kw35">R4</span></div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021C1F40 <span class="kw3">STR</span> &nbsp; &nbsp; <span class="kw35">R6</span><span class="sy0">,</span> <span class="br0">[</span><span class="kw35">SP</span><span class="sy0">,</span>#<span class="nu0">0x30</span><span class="sy0">+</span>double_damage<span class="br0">]</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1F42 <span class="kw7">BL</span> &nbsp; &nbsp; &nbsp;BaseDefenseMods</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1F46 <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R7</span><span class="sy0">,</span> <span class="kw35">R0</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1F48 <span class="kw3">LDR</span> &nbsp; &nbsp; <span class="kw35">R0</span><span class="sy0">,</span> <span class="br0">[</span><span class="kw35">SP</span><span class="sy0">,</span>#<span class="nu0">0x30</span><span class="sy0">+</span>p_attacking<span class="br0">]</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1F4A <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R1</span><span class="sy0">,</span> #<span class="nu0">0xF</span></div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021C1F4C <span class="kw7">BL</span> &nbsp; &nbsp; &nbsp;GetBpkmStat</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1F50 <span class="kw5">LSLS</span> &nbsp; &nbsp;<span class="kw35">R0</span><span class="sy0">,</span> <span class="kw35">R0</span><span class="sy0">,</span> #<span class="nu0">0x18</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1F52 <span class="kw5">LSRS</span> &nbsp; &nbsp;<span class="kw35">R2</span><span class="sy0">,</span> <span class="kw35">R0</span><span class="sy0">,</span> #<span class="nu0">0x18</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1F54 <span class="kw3">LDR</span> &nbsp; &nbsp; <span class="kw35">R0</span><span class="sy0">,</span> <span class="br0">[</span><span class="kw35">SP</span><span class="sy0">,</span>#<span class="nu0">0x30</span><span class="sy0">+</span>base_power<span class="br0">]</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1F56 <span class="kw3">LDR</span> &nbsp; &nbsp; <span class="kw35">R1</span><span class="sy0">,</span> <span class="br0">[</span><span class="kw35">SP</span><span class="sy0">,</span>#<span class="nu0">0x30</span><span class="sy0">+</span>attack_stat<span class="br0">]</span></div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021C1F58 <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R3</span><span class="sy0">,</span> <span class="kw35">R7</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1F5A <span class="kw7">BL</span> &nbsp; &nbsp; &nbsp;BaseDamageFormula</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1F5E <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R2</span><span class="sy0">,</span> #<span class="nu0">4</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1F60 <span class="kw3">LDR</span> &nbsp; &nbsp; <span class="kw35">R1</span><span class="sy0">,</span> <span class="br0">[</span><span class="kw35">SP</span><span class="sy0">,</span>#<span class="nu0">0x30</span><span class="sy0">+</span>field_mod<span class="br0">]</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1F62 <span class="kw5">LSLS</span> &nbsp; &nbsp;<span class="kw35">R2</span><span class="sy0">,</span> <span class="kw35">R2</span><span class="sy0">,</span> #<span class="nu0">0xA</span></div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021C1F64 <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R7</span><span class="sy0">,</span> <span class="kw35">R0</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1F66 <span class="kw5">CMP</span> &nbsp; &nbsp; <span class="kw35">R1</span><span class="sy0">,</span> <span class="kw35">R2</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1F68 <span class="kw8">BEQ</span> &nbsp; &nbsp; Bank1</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1F6A <span class="kw7">BL</span> &nbsp; &nbsp; &nbsp;ApplyMod</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1F6E <span class="kw5">ADDS</span> &nbsp; &nbsp;<span class="kw35">R7</span><span class="sy0">,</span> <span class="kw35">R0</span><span class="sy0">,</span> #<span class="nu0">0</span></div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021C1F70</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1F70 Bank1<span class="sy0">:</span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;@ CODE XREF<span class="sy0">:</span> DamageCalc<span class="sy0">+</span><span class="kw35">D4</span>j</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1F70 <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R0</span><span class="sy0">,</span> <span class="kw35">R5</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1F72 <span class="kw7">BL</span> &nbsp; &nbsp; &nbsp;WeatherTriggers</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1F76 <span class="kw3">LDRB</span> &nbsp; &nbsp;<span class="kw35">R1</span><span class="sy0">,</span> <span class="br0">[</span><span class="kw35">R4</span><span class="sy0">,</span>#<span class="nu0">6</span><span class="br0">]</span></div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021C1F78 <span class="kw7">BL</span> &nbsp; &nbsp; &nbsp;WeatherMod</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1F7C <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R1</span><span class="sy0">,</span> <span class="kw35">R0</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1F7E <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R0</span><span class="sy0">,</span> <span class="nu0">0x1000</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1F82 <span class="kw5">CMP</span> &nbsp; &nbsp; <span class="kw35">R1</span><span class="sy0">,</span> <span class="kw35">R0</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1F84 <span class="kw8">BEQ</span> &nbsp; &nbsp; Bank2</div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021C1F86 <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R0</span><span class="sy0">,</span> <span class="kw35">R7</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1F88 <span class="kw7">BL</span> &nbsp; &nbsp; &nbsp;ApplyMod</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1F8C <span class="kw5">ADDS</span> &nbsp; &nbsp;<span class="kw35">R7</span><span class="sy0">,</span> <span class="kw35">R0</span><span class="sy0">,</span> #<span class="nu0">0</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1F8E</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1F8E Bank2<span class="sy0">:</span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;@ CODE XREF<span class="sy0">:</span> DamageCalc<span class="sy0">+</span>F0j</div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021C1F8E <span class="kw5">CMP</span> &nbsp; &nbsp; <span class="kw35">R6</span><span class="sy0">,</span> #<span class="nu0">0</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1F90 <span class="kw8">BEQ</span> &nbsp; &nbsp; Bank3</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1F92 <span class="kw5">LSLS</span> &nbsp; &nbsp;<span class="kw35">R7</span><span class="sy0">,</span> <span class="kw35">R7</span><span class="sy0">,</span> #<span class="nu0">1</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1F94</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1F94 Bank3<span class="sy0">:</span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;@ CODE XREF<span class="sy0">:</span> DamageCalc<span class="sy0">+</span>FCj</div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021C1F94 <span class="kw3">LDR</span> &nbsp; &nbsp; <span class="kw35">R0</span><span class="sy0">,</span> <span class="br0">[</span><span class="kw35">R5</span><span class="sy0">,</span>#<span class="nu0">4</span><span class="br0">]</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1F96 <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R1</span><span class="sy0">,</span> #<span class="nu0">7</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1F98 <span class="kw7">BL</span> &nbsp; &nbsp; &nbsp;sub_21B913C</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1F9C <span class="kw5">CMP</span> &nbsp; &nbsp; <span class="kw35">R0</span><span class="sy0">,</span> #<span class="nu0">0</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1F9E <span class="kw8">BNE</span> &nbsp; &nbsp; Bank6</div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021C1FA0 <span class="kw3">LDR</span> &nbsp; &nbsp; <span class="kw35">R0</span><span class="sy0">,</span> <span class="br0">[</span><span class="kw35">SP</span><span class="sy0">,</span>#<span class="nu0">0x30</span><span class="sy0">+</span>rig_mindamage<span class="br0">]</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1FA2 <span class="kw5">CMP</span> &nbsp; &nbsp; <span class="kw35">R0</span><span class="sy0">,</span> #<span class="nu0">0</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1FA4 <span class="kw8">BEQ</span> &nbsp; &nbsp; Bank4</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1FA6 <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R0</span><span class="sy0">,</span> #<span class="nu0">0x55</span> @ <span class="st0">'U'</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1FA8 <span class="kw7">B</span> &nbsp; &nbsp; &nbsp; Bank5</div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021C1FAA @ <span class="sy0">---------------------------------------------------------------------------</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1FAA</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1FAA Bank4<span class="sy0">:</span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;@ CODE XREF<span class="sy0">:</span> DamageCalc<span class="sy0">+</span><span class="nu0">110</span>j</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1FAA <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R0</span><span class="sy0">,</span> #<span class="nu0">0x10</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1FAC <span class="kw7">BL</span> &nbsp; &nbsp; &nbsp;BRand</div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021C1FB0 <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R1</span><span class="sy0">,</span> #<span class="nu0">0x64</span> @ <span class="st0">'d'</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1FB2 <span class="kw5">SUBS</span> &nbsp; &nbsp;<span class="kw35">R0</span><span class="sy0">,</span> <span class="kw35">R1</span><span class="sy0">,</span> <span class="kw35">R0</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1FB4 <span class="kw5">LSLS</span> &nbsp; &nbsp;<span class="kw35">R0</span><span class="sy0">,</span> <span class="kw35">R0</span><span class="sy0">,</span> #<span class="nu0">0x10</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1FB6 <span class="kw5">LSRS</span> &nbsp; &nbsp;<span class="kw35">R0</span><span class="sy0">,</span> <span class="kw35">R0</span><span class="sy0">,</span> #<span class="nu0">0x10</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1FB8</div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021C1FB8 Bank5<span class="sy0">:</span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;@ CODE XREF<span class="sy0">:</span> DamageCalc<span class="sy0">+</span><span class="nu0">114</span>j</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1FB8 <span class="kw1">MULS</span> &nbsp; &nbsp;<span class="kw35">R0</span><span class="sy0">,</span> <span class="kw35">R7</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1FBA <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R1</span><span class="sy0">,</span> #<span class="nu0">0x64</span> @ <span class="st0">'d'</span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; @ divisor</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1FBC <span class="kw7">BLX</span> &nbsp; &nbsp; divmodUnsigned__</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1FC0 <span class="kw5">ADDS</span> &nbsp; &nbsp;<span class="kw35">R7</span><span class="sy0">,</span> <span class="kw35">R0</span><span class="sy0">,</span> #<span class="nu0">0</span></div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021C1FC2</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1FC2 Bank6<span class="sy0">:</span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;@ CODE XREF<span class="sy0">:</span> DamageCalc<span class="sy0">+</span>10Aj</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1FC2 <span class="kw3">LDRB</span> &nbsp; &nbsp;<span class="kw35">R2</span><span class="sy0">,</span> <span class="br0">[</span><span class="kw35">R4</span><span class="sy0">,</span>#<span class="nu0">6</span><span class="br0">]</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1FC4 <span class="kw5">CMP</span> &nbsp; &nbsp; <span class="kw35">R2</span><span class="sy0">,</span> #<span class="nu0">0x11</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1FC6 <span class="kw8">BEQ</span> &nbsp; &nbsp; Bank7</div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021C1FC8 <span class="kw3">LDR</span> &nbsp; &nbsp; <span class="kw35">R1</span><span class="sy0">,</span> <span class="br0">[</span><span class="kw35">SP</span><span class="sy0">,</span>#<span class="nu0">0x30</span><span class="sy0">+</span>p_attacking<span class="br0">]</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1FCA <span class="kw5">ADDS</span> &nbsp; &nbsp;<span class="kw35">R0</span><span class="sy0">,</span> <span class="kw35">R5</span><span class="sy0">,</span> #<span class="nu0">0</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1FCC</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1FCC Bank_STAB<span class="sy0">:</span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;@ CODE XREF<span class="sy0">:</span> MEMORY<span class="sy0">:</span>021C1D6Aj</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1FCC <span class="kw7">BL</span> &nbsp; &nbsp; &nbsp;STAB</div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021C1FD0 <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R1</span><span class="sy0">,</span> <span class="kw35">R0</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1FD2 <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R0</span><span class="sy0">,</span> <span class="kw35">R7</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1FD4 <span class="kw7">BL</span> &nbsp; &nbsp; &nbsp;ApplyMod</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1FD8 <span class="kw5">ADDS</span> &nbsp; &nbsp;<span class="kw35">R7</span><span class="sy0">,</span> <span class="kw35">R0</span><span class="sy0">,</span> #<span class="nu0">0</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1FDA</div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021C1FDA Bank7<span class="sy0">:</span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;@ CODE XREF<span class="sy0">:</span> DamageCalc<span class="sy0">+</span><span class="nu0">132</span>j</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1FDA <span class="kw3">LDR</span> &nbsp; &nbsp; <span class="kw35">R1</span><span class="sy0">,</span> <span class="br0">[</span><span class="kw35">SP</span><span class="sy0">,</span>#<span class="nu0">0x30</span><span class="sy0">+</span>effectiveness_factor<span class="br0">]</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1FDC</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1FDC loc_21C1FDC<span class="sy0">:</span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;@ CODE XREF<span class="sy0">:</span> MEMORY<span class="sy0">:</span>021C1D7Aj</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1FDC <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R0</span><span class="sy0">,</span> <span class="kw35">R7</span></div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021C1FDE <span class="kw7">BL</span> &nbsp; &nbsp; &nbsp;TypeEffectiveness</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1FE2 <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R4</span><span class="sy0">,</span> <span class="kw35">R0</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1FE4 <span class="kw3">LDR</span> &nbsp; &nbsp; <span class="kw35">R0</span><span class="sy0">,</span> <span class="br0">[</span><span class="kw35">SP</span><span class="sy0">,</span>#<span class="nu0">0x30</span><span class="sy0">+</span>move_cat<span class="br0">]</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1FE6 <span class="kw5">CMP</span> &nbsp; &nbsp; <span class="kw35">R0</span><span class="sy0">,</span> #<span class="nu0">1</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1FE8 <span class="kw8">BNE</span> &nbsp; &nbsp; Bank_notnull</div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021C1FEA <span class="kw3">LDR</span> &nbsp; &nbsp; <span class="kw35">R0</span><span class="sy0">,</span> <span class="br0">[</span><span class="kw35">SP</span><span class="sy0">,</span>#<span class="nu0">0x30</span><span class="sy0">+</span>p_attacking<span class="br0">]</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1FEC <span class="kw7">BL</span> &nbsp; &nbsp; &nbsp;GetBpkmStatus</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1FF0 <span class="kw5">CMP</span> &nbsp; &nbsp; <span class="kw35">R0</span><span class="sy0">,</span> #<span class="nu0">4</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1FF2 <span class="kw8">BNE</span> &nbsp; &nbsp; Bank_notnull</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1FF4 <span class="kw3">LDR</span> &nbsp; &nbsp; <span class="kw35">R0</span><span class="sy0">,</span> <span class="br0">[</span><span class="kw35">SP</span><span class="sy0">,</span>#<span class="nu0">0x30</span><span class="sy0">+</span>p_attacking<span class="br0">]</span></div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021C1FF6 <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R1</span><span class="sy0">,</span> #<span class="nu0">0x11</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1FF8 <span class="kw7">BL</span> &nbsp; &nbsp; &nbsp;GetBpkmStat</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1FFC <span class="kw5">CMP</span> &nbsp; &nbsp; <span class="kw35">R0</span><span class="sy0">,</span> #<span class="nu0">0x3E</span> @ <span class="st0">'&gt;'</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C1FFE <span class="kw8">BEQ</span> &nbsp; &nbsp; Bank_notnull</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C2000 <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R0</span><span class="sy0">,</span> #<span class="nu0">0x32</span> @ <span class="st0">'2'</span></div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021C2002 <span class="kw1">MULS</span> &nbsp; &nbsp;<span class="kw35">R0</span><span class="sy0">,</span> <span class="kw35">R4</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C2004 <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R1</span><span class="sy0">,</span> #<span class="nu0">0x64</span> @ <span class="st0">'d'</span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; @ divisor</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C2006 <span class="kw7">BLX</span> &nbsp; &nbsp; divmodUnsigned__</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C200A <span class="kw5">ADDS</span> &nbsp; &nbsp;<span class="kw35">R4</span><span class="sy0">,</span> <span class="kw35">R0</span><span class="sy0">,</span> #<span class="nu0">0</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C200C</div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021C200C Bank_notnull<span class="sy0">:</span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; @ CODE XREF<span class="sy0">:</span> DamageCalc<span class="sy0">+</span><span class="nu0">154</span>j</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C200C &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; @ DamageCalc<span class="sy0">+</span>15Ej <span class="sy0">...</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C200C <span class="kw5">CMP</span> &nbsp; &nbsp; <span class="kw35">R4</span><span class="sy0">,</span> #<span class="nu0">0</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C200E <span class="kw8">BNE</span> &nbsp; &nbsp; Bank8</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C2010 <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R4</span><span class="sy0">,</span> #<span class="nu0">1</span></div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021C2012</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C2012 Bank8<span class="sy0">:</span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;@ CODE XREF<span class="sy0">:</span> DamageCalc<span class="sy0">+</span>17Aj</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C2012 <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R1</span><span class="sy0">,</span> <span class="nu0">0x1000</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C2016 <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R0</span><span class="sy0">,</span> #<span class="nu0">0x35</span> @ <span class="st0">'5'</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C2018 <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R2</span><span class="sy0">,</span> #<span class="nu0">0x29</span> @ <span class="st0">')'</span></div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021C201A <span class="kw5">LSLS</span> &nbsp; &nbsp;<span class="kw35">R3</span><span class="sy0">,</span> <span class="kw35">R1</span><span class="sy0">,</span> #<span class="nu0">5</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C201C <span class="kw7">BL</span> &nbsp; &nbsp; &nbsp;StoreVolatileVariableFlag3e3</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C2020 <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R0</span><span class="sy0">,</span> #<span class="nu0">0x32</span> @ <span class="st0">'2'</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C2022 <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R1</span><span class="sy0">,</span> <span class="kw35">R4</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C2024 <span class="kw7">BL</span> &nbsp; &nbsp; &nbsp;InitVolatileVariable</div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021C2028 <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R0</span><span class="sy0">,</span> <span class="kw35">R5</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C202A <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R1</span><span class="sy0">,</span> #<span class="nu0">0x47</span> @ <span class="st0">'G'</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C202C <span class="kw7">BL</span> &nbsp; &nbsp; &nbsp;ApplyTriggers</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C2030 <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R0</span><span class="sy0">,</span> #<span class="nu0">0x35</span> @ <span class="st0">'5'</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C2032 <span class="kw7">BL</span> &nbsp; &nbsp; &nbsp;ReadVolatileVariable</div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021C2036 <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R4</span><span class="sy0">,</span> <span class="kw35">R0</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C2038 <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R0</span><span class="sy0">,</span> #<span class="nu0">0x32</span> @ <span class="st0">'2'</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C203A <span class="kw7">BL</span> &nbsp; &nbsp; &nbsp;ReadVolatileVariable</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C203E <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R1</span><span class="sy0">,</span> <span class="kw35">R4</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C2040 <span class="kw7">BL</span> &nbsp; &nbsp; &nbsp;ApplyMod</div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021C2044 <span class="kw3">STR</span> &nbsp; &nbsp; <span class="kw35">R0</span><span class="sy0">,</span> <span class="br0">[</span><span class="kw35">SP</span><span class="sy0">,</span>#<span class="nu0">0x30</span><span class="sy0">+</span>current_damage<span class="br0">]</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C2046</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C2046 Bank9<span class="sy0">:</span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;@ CODE XREF<span class="sy0">:</span> DamageCalc<span class="sy0">+</span><span class="nu0">84</span>j</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C2046 <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R0</span><span class="sy0">,</span> <span class="kw35">R5</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C2048 <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R1</span><span class="sy0">,</span> #<span class="nu0">0x48</span> @ <span class="st0">'H'</span></div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021C204A <span class="kw7">BL</span> &nbsp; &nbsp; &nbsp;ApplyTriggers</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C204E <span class="kw3">LDR</span> &nbsp; &nbsp; <span class="kw35">R0</span><span class="sy0">,</span> =<span class="nu0">0x1C8D</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C2050 <span class="kw7">BL</span> &nbsp; &nbsp; &nbsp;FreeVolatileVariable</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C2054 <span class="kw3">LDR</span> &nbsp; &nbsp; <span class="kw35">R1</span><span class="sy0">,</span> <span class="br0">[</span><span class="kw35">SP</span><span class="sy0">,</span>#<span class="nu0">0x30</span><span class="sy0">+</span>p_store_result<span class="br0">]</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C2056 <span class="kw3">LDR</span> &nbsp; &nbsp; <span class="kw35">R0</span><span class="sy0">,</span> <span class="br0">[</span><span class="kw35">SP</span><span class="sy0">,</span>#<span class="nu0">0x30</span><span class="sy0">+</span>current_damage<span class="br0">]</span></div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021C2058 <span class="kw3">STRH</span> &nbsp; &nbsp;<span class="kw35">R0</span><span class="sy0">,</span> <span class="br0">[</span><span class="kw35">R1</span><span class="br0">]</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C205A <span class="kw3">LDR</span> &nbsp; &nbsp; <span class="kw35">R0</span><span class="sy0">,</span> <span class="br0">[</span><span class="kw35">SP</span><span class="sy0">,</span>#<span class="nu0">0x30</span><span class="sy0">+</span>static_damage<span class="br0">]</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C205C <span class="kw1">ADD</span> &nbsp; &nbsp; <span class="kw35">SP</span><span class="sy0">,</span> <span class="kw35">SP</span><span class="sy0">,</span> #<span class="nu0">0x1C</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C205E <span class="kw3">POP</span> &nbsp; &nbsp; <span class="br0">{</span><span class="kw35">R4</span><span class="sy0">-</span><span class="kw35">R7</span><span class="sy0">,</span><span class="kw35">PC</span><span class="br0">}</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C205E @ End of function DamageCalc</div></li>
<li class="li2"><div class="de2">&nbsp;</div></li>
</ol>
</div>
<br />

<p>
 Roughly speaking, the damage formula in Pokémon is a big multiplication, each factor representing the user's level and attack
 stat, the foe's defense stat, and a bunch of factors for STAB, held items, abilities and other field effects.
 In a perfect world where ARM CPUs could work on real numbers, it would be possible to multiply each factor in any order
 and get the same result, but in practice the game will round some multiplications and truncate others, meaning that
 in order to get accurate damage results, <em>it is of utmost importance to perform the multiplication in the same order
 as the game and using the same rounding methods</em>. Even though rounding errors might not sound like a big problem, they
 will be amplified at each step, and a few factors such as Reflect and Life Orb in a double battle can cause a significant
 difference between an unrounded and a properly rounded calculation.
</p>
<p>
There are three main parameters for damage calculation: the user's attack stat, the target's defense stat and the move's
base power. To compute these stats, the game starts from a base value and apply a <em>modifier</em> to reflect the various
effects that can alter the base value. This modifier is obtained by running through a list of short functions called triggers
that are called based on the current active effects on field. Different triggers can modify the same modifier before it is
applied, this operation is called <em>chaining</em> and is <a href="#chain-mod">explained below</a>.
</p>

<p>Once the main parameters are set, the general steps of the calculation are as follows:</p>

<pre>BaseDamage = ((((2 × Level) ÷ 5 + 2) * BasePower * [Sp]Atk) ÷ [Sp]Def) ÷ 50 + 2</pre>

<ol>
 <li>Apply the multi-target modifier</li>
 <li>Apply the weather modifier</li>
 <li>In case of a critical hit, double the value</li>
 <li>Alter with a random factor</li>
 <li>Apply STAB modifier</li>
 <li>Alter with type effectiveness</li>
 <li>Alter with user's burn</li>
 <li>Make sure damage is at least 1</li>
 <li>Apply the final modifier</li>
</ol>

<p>
 In this article, ÷ always denotes the in-game unsigned divmod function, i.e. the unrounded/truncated integer division.
 By contrast, "apply a modifier" is a rounded operation explained in the <a href="#apply-mod">next subsection</a>.
</p>

<p>
There are some exceptions to the formula above that correspond to the set of triggers at the very top of the damage function;
they are detailed in <a href="#special-cases">a separate section</a>.
</p>

<h3><a name="apply-mod">How to apply a modifier</a></h3>

<div class="arm listing">
<ol><li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021D7B30 @ int __fastcall ApplyMod<span class="br0">(</span>int base_value<span class="sy0">,</span> int modifier<span class="br0">)</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021D7B30 ApplyMod<span class="sy0">:</span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; @ CODE XREF<span class="sy0">:</span> sub_21BC968<span class="sy0">+</span><span class="nu0">68</span>p</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021D7B30 <span class="kw1">MULS</span> &nbsp; &nbsp;<span class="kw35">R1</span><span class="sy0">,</span> <span class="kw35">R0</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021D7B32 <span class="kw3">LDR</span> &nbsp; &nbsp; <span class="kw35">R0</span><span class="sy0">,</span> =<span class="nu0">0xFFF</span></div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021D7B34 <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R2</span><span class="sy0">,</span> <span class="kw35">R1</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021D7B36 <span class="kw5">ANDS</span> &nbsp; &nbsp;<span class="kw35">R2</span><span class="sy0">,</span> <span class="kw35">R0</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021D7B38 <span class="kw5">LSRS</span> &nbsp; &nbsp;<span class="kw35">R0</span><span class="sy0">,</span> <span class="kw35">R1</span><span class="sy0">,</span> #<span class="nu0">0xC</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021D7B3A <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R1</span><span class="sy0">,</span> <span class="nu0">0x800</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021D7B3E <span class="kw5">CMP</span> &nbsp; &nbsp; <span class="kw35">R2</span><span class="sy0">,</span> <span class="kw35">R1</span></div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021D7B40 <span class="kw8">BLS</span> &nbsp; &nbsp; locret_21D7B44</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021D7B42 <span class="kw5">ADDS</span> &nbsp; &nbsp;<span class="kw35">R0</span><span class="sy0">,</span> <span class="kw35">R0</span><span class="sy0">,</span> #<span class="nu0">1</span></div></li>
</ol>
</div><br />

<p>A modifier is a 16 bit fixed point factor, i.e. a fraction whose divisor is always 0x1000 (4096). For instance, 0x14cc is the modifier for Life Orb (0x14cc/0x1000 is about 1.3). Applying the modifier
<em>M</em> to the damage value <em>D</em> means multiplying <em>D</em> by <em>M</em> and dividing the result by 0x1000; then if the decimal part is &le;0.5, round the result down, otherwise round it up.
Simply put: <pre>D' = round(D * M / 0x1000)</pre></p>

<h3><a name="chain-mod">How to chain modifiers</a></h3>

<div class="arm listing">
<ol><li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021D7724 @ void __fastcall ChainMod<span class="br0">(</span>__int16 Volatile_index<span class="sy0">,</span> int mod<span class="br0">)</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021D7724 ChainMod<span class="sy0">:</span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; @ CODE XREF<span class="sy0">:</span> AccuracyCheck<span class="sy0">+</span>FAp</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021D7724 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; @ MEMORY<span class="sy0">:</span>021D8B5Ep <span class="sy0">...</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021D7724 <span class="kw3">PUSH</span> &nbsp; &nbsp;<span class="br0">{</span><span class="kw35">R3</span><span class="sy0">-</span><span class="kw35">R7</span><span class="sy0">,</span><span class="kw35">LR</span><span class="br0">}</span></div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021D7726 <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R2</span><span class="sy0">,</span> <span class="kw35">R0</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021D7728 <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R7</span><span class="sy0">,</span> <span class="kw35">R1</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021D772A <span class="kw3">LDR</span> &nbsp; &nbsp; <span class="kw35">R0</span><span class="sy0">,</span> =VolatileStore</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021D772C <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R1</span><span class="sy0">,</span> <span class="kw35">R2</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021D772E <span class="kw7">BL</span> &nbsp; &nbsp; &nbsp;sub_21D7808</div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021D7732 <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R5</span><span class="sy0">,</span> <span class="kw35">R0</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021D7734 <span class="kw8">BMI</span> &nbsp; &nbsp; locret_21D7772</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021D7736 <span class="kw3">LDR</span> &nbsp; &nbsp; <span class="kw35">R0</span><span class="sy0">,</span> =VolatileStore</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021D7738 <span class="kw5">ADDS</span> &nbsp; &nbsp;<span class="kw35">R1</span><span class="sy0">,</span> <span class="kw35">R0</span><span class="sy0">,</span> <span class="kw35">R5</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021D773A <span class="kw3">LDR</span> &nbsp; &nbsp; <span class="kw35">R0</span><span class="sy0">,</span> =<span class="nu0">0x544</span></div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021D773C <span class="kw3">LDRB</span> &nbsp; &nbsp;<span class="kw35">R0</span><span class="sy0">,</span> <span class="br0">[</span><span class="kw35">R1</span><span class="sy0">,</span><span class="kw35">R0</span><span class="br0">]</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021D773E <span class="kw5">CMP</span> &nbsp; &nbsp; <span class="kw35">R0</span><span class="sy0">,</span> #<span class="nu0">3</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021D7740 <span class="kw8">BNE</span> &nbsp; &nbsp; locret_21D7772</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021D7742 <span class="kw3">LDR</span> &nbsp; &nbsp; <span class="kw35">R4</span><span class="sy0">,</span> =VolatileStore</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021D7744 <span class="kw5">LSLS</span> &nbsp; &nbsp;<span class="kw35">R6</span><span class="sy0">,</span> <span class="kw35">R5</span><span class="sy0">,</span> #<span class="nu0">2</span></div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021D7746 <span class="kw5">ADDS</span> &nbsp; &nbsp;<span class="kw35">R4</span><span class="sy0">,</span> #<span class="nu0">0xC4</span> @ <span class="st0">'-'</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021D7748 <span class="kw3">LDR</span> &nbsp; &nbsp; <span class="kw35">R0</span><span class="sy0">,</span> <span class="br0">[</span><span class="kw35">R4</span><span class="sy0">,</span><span class="kw35">R6</span><span class="br0">]</span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; @ num1</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021D774A <span class="kw5">ASRS</span> &nbsp; &nbsp;<span class="kw35">R3</span><span class="sy0">,</span> <span class="kw35">R7</span><span class="sy0">,</span> #<span class="nu0">0x1F</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021D774C <span class="kw5">ASRS</span> &nbsp; &nbsp;<span class="kw35">R1</span><span class="sy0">,</span> <span class="kw35">R0</span><span class="sy0">,</span> #<span class="nu0">0x1F</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021D774E <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R2</span><span class="sy0">,</span> <span class="kw35">R7</span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;@ num2</div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021D7750 <span class="kw7">BLX</span> &nbsp; &nbsp; mul64Unsigned__</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021D7754 <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R3</span><span class="sy0">,</span> <span class="kw35">R1</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021D7756 <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R1</span><span class="sy0">,</span> <span class="kw35">R5</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021D7758 <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R5</span><span class="sy0">,</span> #<span class="nu0">2</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021D775A <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R2</span><span class="sy0">,</span> <span class="kw35">R0</span></div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021D775C <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R7</span><span class="sy0">,</span> #<span class="nu0">0</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021D775E <span class="kw5">LSLS</span> &nbsp; &nbsp;<span class="kw35">R5</span><span class="sy0">,</span> <span class="kw35">R5</span><span class="sy0">,</span> #<span class="nu0">0xA</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021D7760 <span class="kw5">ADDS</span> &nbsp; &nbsp;<span class="kw35">R2</span><span class="sy0">,</span> <span class="kw35">R2</span><span class="sy0">,</span> <span class="kw35">R5</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021D7762 <span class="kw5">ADCS</span> &nbsp; &nbsp;<span class="kw35">R3</span><span class="sy0">,</span> <span class="kw35">R7</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021D7764 <span class="kw3">LDR</span> &nbsp; &nbsp; <span class="kw35">R0</span><span class="sy0">,</span> =VolatileStore</div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021D7766 <span class="kw5">LSLS</span> &nbsp; &nbsp;<span class="kw35">R3</span><span class="sy0">,</span> <span class="kw35">R3</span><span class="sy0">,</span> #<span class="nu0">0x14</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021D7768 <span class="kw5">LSRS</span> &nbsp; &nbsp;<span class="kw35">R2</span><span class="sy0">,</span> <span class="kw35">R2</span><span class="sy0">,</span> #<span class="nu0">0xC</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021D776A <span class="kw5">ORRS</span> &nbsp; &nbsp;<span class="kw35">R2</span><span class="sy0">,</span> <span class="kw35">R3</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021D776C <span class="kw7">BL</span> &nbsp; &nbsp; &nbsp;sub_21D782C</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021D7770 <span class="kw3">STR</span> &nbsp; &nbsp; <span class="kw35">R0</span><span class="sy0">,</span> <span class="br0">[</span><span class="kw35">R4</span><span class="sy0">,</span><span class="kw35">R6</span><span class="br0">]</span></div></li>
</ol>
</div><br />

<p>Recall that modifiers for a given parameters are computed by the triggers for that parameter. This means that when multiple triggers apply, you have to chain the modifier for the parameter, starting from 0x1000.
If the current modifier is <em>M</em> and you want to chain with another modifier <em>M'</em>, the resulting modifier would be: <pre>M'' = ((M * M') + 0x800) >> 12</pre></p>

<h3><a name="mt-mod">The multi-target modifier</a></h3>
<div class="arm listing">
<ol><li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C0DCC @ <span class="sy0">---------------------------------------------------------------------------</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C0DBE <span class="kw7">BL</span> &nbsp; &nbsp; &nbsp;sub_21C0EE4</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C0DC2 <span class="kw5">CMP</span> &nbsp; &nbsp; <span class="kw35">R0</span><span class="sy0">,</span> #<span class="nu0">1</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C0DC4 <span class="kw8">BNE</span> &nbsp; &nbsp; loc_21C0DCC</div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021C0DC6 <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R4</span><span class="sy0">,</span> <span class="nu0">0x1000</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C0DCA <span class="kw7">B</span> &nbsp; &nbsp; &nbsp; loc_21C0DD0</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C0DCC @ <span class="sy0">---------------------------------------------------------------------------</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C0DCC loc_21C0DCC<span class="sy0">:</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C0DCC <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R4</span><span class="sy0">,</span> <span class="nu0">0xC00</span></div></li>
</ol></div>
<br />

This modifier doesn't have any trigger and is set to 0xC00 if the move has more than one target and 0x1000 otherwise.
Being a target is independant of all accuracy and effectiveness checks, but a fainted Pokémon on the field will not count
as a target.

<h3><a name="weather-mod">The weather modifier</a></h3>

<div class="arm listing">
<ol><li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021D7C58 @ int __fastcall WeatherMod<span class="br0">(</span>__int16 active_weather<span class="br0">)</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021D7C58 WeatherMod<span class="sy0">:</span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; @ CODE XREF<span class="sy0">:</span> DamageCalc<span class="sy0">+</span>E4p</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021D7C58 <span class="kw5">CMP</span> &nbsp; &nbsp; <span class="kw35">R0</span><span class="sy0">,</span> #<span class="nu0">1</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021D7C5A <span class="kw8">BEQ</span> &nbsp; &nbsp; loc_21D7C62</div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021D7C5C <span class="kw5">CMP</span> &nbsp; &nbsp; <span class="kw35">R0</span><span class="sy0">,</span> #<span class="nu0">2</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021D7C5E <span class="kw8">BEQ</span> &nbsp; &nbsp; loc_21D7C76</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021D7C60 <span class="kw7">B</span> &nbsp; &nbsp; &nbsp; loc_21D7C8A</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021D7C62 @ <span class="sy0">---------------------------------------------------------------------------</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021D7C62</div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021D7C62 loc_21D7C62<span class="sy0">:</span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;@ CODE XREF<span class="sy0">:</span> WeatherMod<span class="sy0">+</span><span class="nu0">2</span>j</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021D7C62 <span class="kw5">CMP</span> &nbsp; &nbsp; <span class="kw35">R1</span><span class="sy0">,</span> #<span class="nu0">9</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021D7C64 <span class="kw8">BNE</span> &nbsp; &nbsp; loc_21D7C6C</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021D7C66 <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R0</span><span class="sy0">,</span> <span class="nu0">0x1800</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021D7C6A <span class="kw7">BX</span> &nbsp; &nbsp; &nbsp;<span class="kw35">LR</span></div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021D7C6C @ <span class="sy0">---------------------------------------------------------------------------</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021D7C6C</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021D7C6C loc_21D7C6C<span class="sy0">:</span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;@ CODE XREF<span class="sy0">:</span> WeatherMod<span class="sy0">+</span>Cj</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021D7C6C <span class="kw5">CMP</span> &nbsp; &nbsp; <span class="kw35">R1</span><span class="sy0">,</span> #<span class="nu0">0xA</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021D7C6E <span class="kw8">BNE</span> &nbsp; &nbsp; loc_21D7C8A</div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021D7C70 <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R0</span><span class="sy0">,</span> <span class="nu0">0x800</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021D7C74 <span class="kw7">BX</span> &nbsp; &nbsp; &nbsp;<span class="kw35">LR</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021D7C76 @ <span class="sy0">---------------------------------------------------------------------------</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021D7C76</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021D7C76 loc_21D7C76<span class="sy0">:</span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;@ CODE XREF<span class="sy0">:</span> WeatherMod<span class="sy0">+</span><span class="nu0">6</span>j</div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021D7C76 <span class="kw5">CMP</span> &nbsp; &nbsp; <span class="kw35">R1</span><span class="sy0">,</span> #<span class="nu0">9</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021D7C78 <span class="kw8">BNE</span> &nbsp; &nbsp; loc_21D7C80</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021D7C7A <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R0</span><span class="sy0">,</span> <span class="nu0">0x800</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021D7C7E <span class="kw7">BX</span> &nbsp; &nbsp; &nbsp;<span class="kw35">LR</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021D7C80 @ <span class="sy0">---------------------------------------------------------------------------</span></div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021D7C80</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021D7C80 loc_21D7C80<span class="sy0">:</span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;@ CODE XREF<span class="sy0">:</span> WeatherMod<span class="sy0">+</span><span class="nu0">20</span>j</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021D7C80 <span class="kw5">CMP</span> &nbsp; &nbsp; <span class="kw35">R1</span><span class="sy0">,</span> #<span class="nu0">0xA</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021D7C82 <span class="kw8">BNE</span> &nbsp; &nbsp; loc_21D7C8A</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021D7C84 <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R0</span><span class="sy0">,</span> <span class="nu0">0x1800</span></div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021D7C88 <span class="kw7">BX</span> &nbsp; &nbsp; &nbsp;<span class="kw35">LR</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021D7C8A @ <span class="sy0">---------------------------------------------------------------------------</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021D7C8A</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021D7C8A loc_21D7C8A<span class="sy0">:</span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;@ CODE XREF<span class="sy0">:</span> WeatherMod<span class="sy0">+</span><span class="nu0">8</span>j</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021D7C8A &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; @ WeatherMod<span class="sy0">+</span><span class="nu0">16</span>j <span class="sy0">...</span></div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021D7C8A <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R0</span><span class="sy0">,</span> <span class="nu0">0x1000</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021D7C8E <span class="kw7">BX</span> &nbsp; &nbsp; &nbsp;<span class="kw35">LR</span></div></li>
</ol>
</div>
<br />

<p>
Even though the weather modifier has its own set of triggers listed below, they never affect the actual value of the
modifier: a water move used during rain or a fire move used during intense sunlight will use 0x1800 as modifier, while a
fire move used during rain or a water move during intense sunlight will use 0x800.
</p>

<table class="sortable">
 <thead>
  <tr>
   <th width="110">Trigger address</th>
   <th>Trigger description</th>
  </tr>
 </thead>
    
 <tbody>
  <tr>
   <td>21d9850</td>
   <td>Cancel weather if any Pokémon on field has Air Lock or Cloud Nine.</td>
  </tr>
  <tr class="a">
   <td>21d9084</td>
   <td>Internal.</td>
  </tr>
 </tbody>
</table>

<h3><a name="crits">Critical hits</a></h3>

<table class="sortable">
 <thead>
  <tr>
   <th width="110">Trigger address</th>
   <th>Trigger description</th>
  </tr>
 </thead>
    
 <tbody>
  <tr>
   <td>21d9be8</td>
   <td>Super Luck: increase user's critical hit level by 1.</td>
  </tr>
  <tr class="a">
   <td>21d9bc4</td>
   <td>Battle Armor / Shell Armor: if the target has either of these abilities, bypass critical hit checks.</td>
  </tr>
  <tr>
   <td>21dae18</td>
   <td>Internal.</td>
  </tr>
  <tr class="a">
   <td>21de5fc</td>
   <td>Stick: if user is Farfetch'd and holds Stick, increase critical hit level by 2.</td>
  </tr>
  <tr>
   <td>21de5b8</td>
   <td>Lucky Punch: if user is Chansey and holds Lucky Punch, increase critical hit level by 2.</td>
  </tr>
  <tr class="a">
   <td>21de584</td>
   <td>Razor Claw: increase holder's critical hit level by 1.</td>
  </tr>
  <tr>
   <td>21e53b4</td>
   <td>Internal.</td>
  </tr>
  <tr class="a">
   <td>6899210</td>
   <td>Lucky Chant: if the user's party is protected by Lucky Chant, bypass critical hit checks.</td>
  </tr>
 </tbody>
</table>

<h3><a name="random">The random factor</a></h3>

<p>Provided the battle isn't rigged to always use minimum damage, the current damage value <em>D</em> is altered using a random number <em>0 &le; R &le; 15</em>:</p>
<pre>D' = (D * (100-R)) &divide; 100</pre>

<h3><a name="stab">STAB</a></h3>

<div class="arm listing">
<ol><li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C760C STAB<span class="sy0">:</span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; @ CODE XREF<span class="sy0">:</span> DamageCalc<span class="sy0">:</span>Bank_STABp</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C760C <span class="kw3">PUSH</span> &nbsp; &nbsp;<span class="br0">{</span><span class="kw35">R3</span><span class="sy0">-</span><span class="kw35">R7</span><span class="sy0">,</span><span class="kw35">LR</span><span class="br0">}</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C760E <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R7</span><span class="sy0">,</span> <span class="kw35">R1</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C7610 <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R5</span><span class="sy0">,</span> <span class="kw35">R0</span></div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021C7612 <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R0</span><span class="sy0">,</span> <span class="kw35">R7</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C7614 <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R1</span><span class="sy0">,</span> <span class="kw35">R2</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C7616 <span class="kw7">BL</span> &nbsp; &nbsp; &nbsp;IsMoveOfUserType</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C761A <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R6</span><span class="sy0">,</span> <span class="kw35">R0</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C761C <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R4</span><span class="sy0">,</span> #<span class="nu0">1</span></div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021C761E <span class="kw3">LDR</span> &nbsp; &nbsp; <span class="kw35">R0</span><span class="sy0">,</span> =<span class="nu0">0x3178</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C7620 <span class="kw5">LSLS</span> &nbsp; &nbsp;<span class="kw35">R4</span><span class="sy0">,</span> <span class="kw35">R4</span><span class="sy0">,</span> #<span class="nu0">0xC</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C7622 <span class="kw7">BL</span> &nbsp; &nbsp; &nbsp;AllocateVolatileVariables</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C7626 <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R0</span><span class="sy0">,</span> <span class="kw35">R7</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C7628 <span class="kw7">BL</span> &nbsp; &nbsp; &nbsp;Dereference25</div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021C762C <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R1</span><span class="sy0">,</span> <span class="kw35">R0</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C762E <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R0</span><span class="sy0">,</span> #<span class="nu0">2</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C7630 <span class="kw7">BL</span> &nbsp; &nbsp; &nbsp;StoreVolatileVariableFlag3e4</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C7634 <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R0</span><span class="sy0">,</span> #<span class="nu0">0x51</span> @ <span class="st0">'Q'</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C7636 <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R1</span><span class="sy0">,</span> <span class="kw35">R6</span></div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021C7638 <span class="kw7">BL</span> &nbsp; &nbsp; &nbsp;StoreVolatileVariableFlag3e1</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C763C <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R0</span><span class="sy0">,</span> <span class="kw35">R5</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C763E <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R1</span><span class="sy0">,</span> #<span class="nu0">0x40</span> @ <span class="st0">'@'</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C7640 <span class="kw7">BL</span> &nbsp; &nbsp; &nbsp;ApplyTriggers</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C7644 <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R0</span><span class="sy0">,</span> #<span class="nu0">0x51</span> @ <span class="st0">'Q'</span></div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021C7646 <span class="kw7">BL</span> &nbsp; &nbsp; &nbsp;ReadVolatileVariable</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C764A <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R1</span><span class="sy0">,</span> <span class="kw35">R0</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C764C <span class="kw8">BEQ</span> &nbsp; &nbsp; loc_21C7652</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C764E <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R4</span><span class="sy0">,</span> <span class="nu0">0x1800</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C7652</div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021C7652 loc_21C7652<span class="sy0">:</span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;@ CODE XREF<span class="sy0">:</span> STAB<span class="sy0">+</span><span class="nu0">40</span>j</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C7652 <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R0</span><span class="sy0">,</span> #<span class="nu0">0x44</span> @ <span class="st0">'D'</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C7654 <span class="kw7">BL</span> &nbsp; &nbsp; &nbsp;StoreVolatileVariableFlag3e4</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C7658 <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R0</span><span class="sy0">,</span> #<span class="nu0">0x35</span> @ <span class="st0">'5'</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C765A <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R1</span><span class="sy0">,</span> <span class="kw35">R4</span></div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021C765C <span class="kw7">BL</span> &nbsp; &nbsp; &nbsp;InitVolatileVariable</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C7660 <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R0</span><span class="sy0">,</span> <span class="kw35">R5</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C7662 <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R1</span><span class="sy0">,</span> #<span class="nu0">0x41</span> @ <span class="st0">'A'</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C7664 <span class="kw7">BL</span> &nbsp; &nbsp; &nbsp;ApplyTriggers</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C7668 <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R0</span><span class="sy0">,</span> #<span class="nu0">0x35</span> @ <span class="st0">'5'</span></div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021C766A <span class="kw7">BL</span> &nbsp; &nbsp; &nbsp;ReadVolatileVariable</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C766E <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R4</span><span class="sy0">,</span> <span class="kw35">R0</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C7670 <span class="kw3">LDR</span> &nbsp; &nbsp; <span class="kw35">R0</span><span class="sy0">,</span> =<span class="nu0">0x3189</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C7672 <span class="kw7">BL</span> &nbsp; &nbsp; &nbsp;FreeVolatileVariable</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C7676 <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R0</span><span class="sy0">,</span> <span class="kw35">R4</span></div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021C7678 <span class="kw3">POP</span> &nbsp; &nbsp; <span class="br0">{</span><span class="kw35">R3</span><span class="sy0">-</span><span class="kw35">R7</span><span class="sy0">,</span><span class="kw35">PC</span><span class="br0">}</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C7678 @ End of function STAB</div></li>
</ol>
</div><br />

<p>If the type of the move match one of its users', the STAB modifier is set to 0x1800. The only trigger for this modifier is listed below.</p>

<table class="sortable">
 <thead>
  <tr>
   <th width="110">Trigger address</th>
   <th>Trigger description</th>
  </tr>
 </thead>
    
 <tbody>
  <tr>
   <td>21D8C2D</td>
   <td>Adaptability: if the user has this ability and move matches one of the user's types, the initial value for the final modifier is set to 0x2000.</td>
  </tr>
 </tbody>
</table>

<h3><a name="type-eff">Type effectiveness</a></h3>

<div class="arm listing">
<ol><li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021D7A8C TypeEffectiveness<span class="sy0">:</span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;@ CODE XREF<span class="sy0">:</span> DamageCalc<span class="sy0">+</span>14Ap</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021D7A8C <span class="kw5">CMP</span> &nbsp; &nbsp; <span class="kw35">R1</span><span class="sy0">,</span> #<span class="nu0">5</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021D7A8E <span class="kw8">BHI</span> &nbsp; &nbsp; locret_21D7ABA</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021D7A90 <span class="kw5">ADDS</span> &nbsp; &nbsp;<span class="kw35">R1</span><span class="sy0">,</span> <span class="kw35">R1</span><span class="sy0">,</span> <span class="kw35">R1</span></div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021D7A92 <span class="kw1">ADD</span> &nbsp; &nbsp; <span class="kw35">R1</span><span class="sy0">,</span> <span class="kw35">PC</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021D7A94 <span class="kw3">LDRH</span> &nbsp; &nbsp;<span class="kw35">R1</span><span class="sy0">,</span> <span class="br0">[</span><span class="kw35">R1</span><span class="sy0">,</span>#<span class="nu0">6</span><span class="br0">]</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021D7A96 <span class="kw5">LSLS</span> &nbsp; &nbsp;<span class="kw35">R1</span><span class="sy0">,</span> <span class="kw35">R1</span><span class="sy0">,</span> #<span class="nu0">0x10</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021D7A98 <span class="kw5">ASRS</span> &nbsp; &nbsp;<span class="kw35">R1</span><span class="sy0">,</span> <span class="kw35">R1</span><span class="sy0">,</span> #<span class="nu0">0x10</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021D7A9A <span class="kw1">ADD</span> &nbsp; &nbsp; <span class="kw35">PC</span><span class="sy0">,</span> <span class="kw35">R1</span></div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021D7A9A @ <span class="sy0">---------------------------------------------------------------------------</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021D7A9C <span class="sy0">.</span>byte &nbsp;<span class="nu0">0xA</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021D7A9D <span class="sy0">.</span>byte &nbsp; &nbsp;<span class="nu0">0</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021D7A9E <span class="sy0">.</span>byte &nbsp;<span class="nu0">0xE</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021D7A9F <span class="sy0">.</span>byte &nbsp; &nbsp;<span class="nu0">0</span></div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021D7AA0 <span class="sy0">.</span>byte <span class="nu0">0x12</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021D7AA1 <span class="sy0">.</span>byte &nbsp; &nbsp;<span class="nu0">0</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021D7AA2 <span class="sy0">.</span>byte <span class="nu0">0x14</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021D7AA3 <span class="sy0">.</span>byte &nbsp; &nbsp;<span class="nu0">0</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021D7AA4 <span class="sy0">.</span>byte <span class="nu0">0x16</span></div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021D7AA5 <span class="sy0">.</span>byte &nbsp; &nbsp;<span class="nu0">0</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021D7AA6 <span class="sy0">.</span>byte <span class="nu0">0x1A</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021D7AA7 <span class="sy0">.</span>byte &nbsp; &nbsp;<span class="nu0">0</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021D7AA8 @ <span class="sy0">---------------------------------------------------------------------------</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021D7AA8 <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R0</span><span class="sy0">,</span> #<span class="nu0">0</span></div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021D7AAA <span class="kw7">BX</span> &nbsp; &nbsp; &nbsp;<span class="kw35">LR</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021D7AAC @ <span class="sy0">---------------------------------------------------------------------------</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021D7AAC <span class="kw5">LSRS</span> &nbsp; &nbsp;<span class="kw35">R0</span><span class="sy0">,</span> <span class="kw35">R0</span><span class="sy0">,</span> #<span class="nu0">2</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021D7AAE <span class="kw7">BX</span> &nbsp; &nbsp; &nbsp;<span class="kw35">LR</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021D7AB0 @ <span class="sy0">---------------------------------------------------------------------------</span></div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021D7AB0 <span class="kw5">LSRS</span> &nbsp; &nbsp;<span class="kw35">R0</span><span class="sy0">,</span> <span class="kw35">R0</span><span class="sy0">,</span> #<span class="nu0">1</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021D7AB2 <span class="kw7">BX</span> &nbsp; &nbsp; &nbsp;<span class="kw35">LR</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021D7AB4 @ <span class="sy0">---------------------------------------------------------------------------</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021D7AB4 <span class="kw5">LSLS</span> &nbsp; &nbsp;<span class="kw35">R0</span><span class="sy0">,</span> <span class="kw35">R0</span><span class="sy0">,</span> #<span class="nu0">1</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021D7AB6 <span class="kw7">BX</span> &nbsp; &nbsp; &nbsp;<span class="kw35">LR</span></div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021D7AB8 @ <span class="sy0">---------------------------------------------------------------------------</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021D7AB8 <span class="kw5">LSLS</span> &nbsp; &nbsp;<span class="kw35">R0</span><span class="sy0">,</span> <span class="kw35">R0</span><span class="sy0">,</span> #<span class="nu0">2</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021D7ABA</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021D7ABA locret_21D7ABA<span class="sy0">:</span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; @ CODE XREF<span class="sy0">:</span> TypeEffectiveness<span class="sy0">+</span><span class="nu0">2</span>j</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021D7ABA <span class="kw7">BX</span> &nbsp; &nbsp; &nbsp;<span class="kw35">LR</span></div></li>
</ol>
</div><br />

<p>Type effectiveness doesn't use a modifier but a simple left (respectively right) shift of one for a simple and two
for a double weakness (respectively resistance), in other words an unrounded division or multiplication by 2 or 4./p>

<h3><a name="burn">Effect of a burn</a></h3>

<p>The effect of a burn is directly taken into account in the damage formula. First, the game checks if the attack is
 physical, then if the user is burned, and finally if its ability is different than Guts. If all conditions are satisfied,
 the current damage is divided by 2 with no rounding.</p>

<h3><a name="final">Final modifier</a></h3>

The final modifier is decided by calling the appropriate triggers, which are listed below. Be sure to chain the modifiers in the order they are listed in.

<table class="sortable">
 <thead>
  <tr>
   <th width="110">Trigger address</th>
   <th width="90">Modifier</th>
   <th>Trigger description</th>
  </tr>
 </thead>
    
 <tbody>
  <tr>
   <td>6898E29</td>
   <td>Variable</td>
   <td>If the target's side is affected by Reflect, the move used was physical, the user's ability isn't Inflitrator and the critical hit flag isn't set.
    <br />The value of the modificator is 0xA8F if there is more than one Pokémon per side of the field and 0x800 otherwise.</td>
  </tr>
  <tr class="a">
   <td>6898E45</td>
   <td>Variable</td>
   <td>Same as above with Light Screen and special moves.</td>
  </tr>
  <tr>
   <td>21DC125</td>
   <td>0x800</td>
   <td>If the target's ability is Multiscale and the target is at full health.</td>
  </tr>
  <tr class="a">
   <td>21D8B3D</td>
   <td>0x2000</td>
   <td>If the user's ability is Tinted Lens and the move wasn't very effective.</td>
  </tr>
  <tr>
   <td>21DC15D</td>
   <td>0xC00</td>
   <td>If one of the target's allies' ability is Friend Guard.</td>
  </tr>
  <tr class="a">
   <td>21D8BA5</td>
   <td>0x1800</td>
   <td>If user has ability Sniper and move was a critical hit.</td>
  </tr>
  <tr>
   <td>21D8B71</td>
   <td>0xC00</td>
   <td>If the target's ability is Solid Rock or Filter and the move was super effective.</td>
  </tr>
  <tr class="a">
   <td>21DBA95</td>
   <td></td>
   <td>Internal.</td>
  </tr>
  <tr>
   <td>21DEC91</td>
   <td>Variable</td>
   <td>If the user is holding the item Metronome. If n is the number of time the current move was used
   successfully and successively, the value of the modifier is 0x1000+n*0x333 if n&le;4 and 0x2000 otherwise.</td>
  </tr>
  <tr class="a">
   <td>21DEBD5</td>
   <td>0x1333</td>
   <td>If the user is holding an expert belt and the move was super effective.</td>
  </tr>
  <tr>
   <td>21DEC65</td>
   <td>0x14CC</td>
   <td>If the user is holding a Life Orb.</td>
  </tr>
  <tr class="a">
   <td>21DDB85</td>
   <td>0x800</td>
   <td>If the target is holding a damage lowering berry of the attack's type. There is one trigger for each type of berry, the others are at:<br : />
    21DDC05, 21DDAE5, 21DDB05, 21DDB25, 21DDB45, 21DDB65, 21DDBA5, 21DDBC5, 21DDBE5, 21DDC25, 21DDC45, 21DDC65, 21DDC85, 21DDCA5, 21DDCC5 and 21DDCE5.</td>
  </tr>
  <tr>
   <td>21E3A25</td>
   <td>0x2000</td>
   <td>If move is Stomp and target has used Minimize.</td>
  </tr>
  <tr class="a">
   <td>21E316D</td>
   <td>0x2000</td>
   <td>If move is Earthquake and target is in the charging turn of Dig.</td>
  </tr>
  <tr>
   <td>21E39E1</td>
   <td>0x2000</td>
   <td>If move is Surf and target is in the charging turn of Dive.</td>
  </tr>
  <tr class="a">
   <td>21E1455</td>
   <td>0x2000</td>
   <td>If move is Steamroller and target has used Minimize.</td>
  </tr>
 </tbody>
</table>

<h2><a name="base-power">The base power</a></h2>

There are two separate sets of triggers for the base power of moves. The first is mainly used for moves
with a variable base power, while the second contains the various modifiers for base power.

<h3><a name="variable-bp">Triggers for variable base power</a></h3>

<table class="sortable">
 <thead>
  <tr>
   <th width="110">Trigger address</th>
   <th width="275">Summary of BP formula</th>
   <th>Move and remarks.</th>
  </tr>
 </thead>
    
 <tbody>
  <tr>
   <td>21d88cc</td>
   <td></td>
   <td>Internal.</td>
  </tr>
  <tr class="a">
   <td>21e2aec</td>
   <td>((255 - Happiness) * 10) &divide; 25</td>
   <td>Frustration: if result is 0 add 1.</td>
  </tr>
  <tr>
   <td>21e2968</td>
   <td>50, 100</td>
   <td>Payback: BP is doubled to 100 if target has moved this turn, 50 otherwise.</td>
  </tr>
  <tr class="a">
   <td>21e2aa0</td>
   <td>(Happiness * 10) &divide; 25</td>
   <td>Return: if result is 0 add 1.</td>
  </tr>
  <tr>
   <td>21e7184</td>
   <td>150, 120, 80, 60</td>
   <td>Electro Ball: Let S = UserModSpeed &divide; TargetModSpeed. BP = {150: R &ge; 4, 120: 3 &le; R &lt; 4, 80: 2 &le; R &lt; 3, 60: otherwise};</td>
  </tr>
  <tr class="a">
   <td>21e283c</td>
   <td>60, 120</td>
   <td>Avalanche: BP is doubled to 120 if the target has inflicted non-effect damage to the user this turn.</td>
  </tr>
  <tr>
   <td>21e27d0</td>
   <td>min(150, 25 * TargetSpd &divide; UserSpd)</td>
   <td>Gyro Ball.</td>
  </tr>
  <tr class="a">
   <td>21e29a8</td>
   <td>(150 * CurrentHP) &divide; MaxHP</td>
   <td>Eruption, Water Spout: if result is 0 set BP to 1.</td>
  </tr>
  <tr>
   <td>21e2de0</td>
   <td>min(120, 60 + 20 * statup_total)</td>
   <td>Punishment: statup_total is the sum of the target's stat levels that are &ge; 0, including accuracy and evasion.</td>
  </tr>
  <tr class="a">
   <td>21e2e48</td>
   <td>20 * 2^(use_counter)</td>
   <td>Fury Cutter: use_counter counts successive and successful previous uses up to a maximum of 3.</td>
  </tr>
  <tr>
   <td>21e2ef4</td>
   <td>20, 40, 60, 80, 100, 120</td>
   <td>Low Kick, Grass Knot: let W be the final weight after modifiers. If W &ge; 200, BP is 120, else if W &ge; 100, BP is 100, else if W &ge; 50, BP is 80, else if W &ge; 25, BP is 60, else BP is 40.</td>
  </tr>
  <tr class="a">
   <td>21e7204</td>
   <td>40, 80, 120, 160, 200</td>
   <td>Echoed Voice: BP increases in the listed order every turn this move is used successively on the user's side of the field.</td>
  </tr>
  <tr>
   <td>21e702c</td>
   <td>50, 100</td>
   <td>Hex: BP is doubled to 100 if target has a status problem.</td>
  </tr>
  <tr class="a">
   <td>21e2a08</td>
   <td>round(120 * TargetHP%) &divide; 100</td>
   <td>Wring Out, Crush Claw: TargetHP% is computed by a fixed point division using 0x1000 as the scaling factor.</td>
  </tr>
  <tr>
   <td>21e2eb0</td>
   <td>50, 100</td>
   <td>Assurance: BP is doubled to 100 if target has already been inflicted non-effect damage this turn.</td>
  </tr>
  <tr class="a">
   <td>21e7104</td>
   <td>120, 100, 80, 60, 40</td>
   <td>Heavy Slam, Heat Crash: let W = UserModWeight &divide; TargetModWeight. BP = {120: W &ge; 5, 100: 4 &le; W &lt; 5, 80: 3 &le; W &lt; 4, 60: 2 &le; W &lt; 3, 40: W &lt; 2}.</td>
  </tr>
  <tr>
   <td>21e70a0</td>
   <td>20 + 20 * statups</td>
   <td>Stored Power: statups is the sum of all positive stat increases, including accuracy and evasion.</td>
  </tr>
  <tr class="a">
   <td>21e706c</td>
   <td>55, 110</td>
   <td>Acrobatics: BP is doubled to 110 if user has no held item.</td>
  </tr>
  <tr>
   <td>21e28b8</td>
   <td>P = (48 * CurrentHP) &divide; MaxHP</td>
   <td>Flail, Reversal: 200 if P &le; 1, 150 if 2 &le; P &le; 4, 100 if 5 &le; P &le; 9, 80 if 10 &le; P &le; 16, 40 if 17 &le; P &le; 32, 20 otherwise.</td>
  </tr>
  <tr class="a">
   <td>21e2d7c</td>
   <td>40, 50, 60, 80, 200</td>
   <td>Trump Card: listed BP correspond to decreasing PP (if PP is &ge; 5 or this move was called by another move BP is 40).</td>
  </tr>
  <tr>
   <td>21e7dd0</td>
   <td>60, 120</td>
   <td>Round: BP is doubled to 120 if used in direct succession of an ally.</td>
  </tr>
  <tr class="a">
   <td>21e2788</td>
   <td>10, 20, 30</td>
   <td>Triple Kick: BP is listed for the successive hits.</td>
  </tr>
  <tr>
   <td>21e2b38</td>
   <td>60, 120</td>
   <td>Wake-Up Slap: BP is doubled to 120 if target is asleep.</td>
  </tr>
  <tr class="a">
   <td>21e2bd4</td>
   <td>60, 120</td>
   <td>SmellingSalt: BP is doubled to 120 is target is paralyzed.</td>
  </tr>
  <tr>
   <td>21e2fd0</td>
   <td>50, 100</td>
   <td>Weather Ball: BP is doubled to 100 in any non-default weather.</td>
  </tr>
  <tr class="a">
   <td>21e302c</td>
   <td>40, 80</td>
   <td>Gust, Twister: BP is doubled to 80 is target is in the charging turn of Bounce, Fly or Sky Drop.</td>
  </tr>
  <tr>
   <td>21e6074</td>
   <td>CurrentPartyMemberAttack &divide; 10 + 5</td>
   <td>Beat Up: this move attacks once for every non fainted member in the user's party, including the user.</td>
  </tr>
  <tr class="a">
   <td>21e3318</td>
   <td>30 + (40 * sum(((IV[i]&gt;&gt;1)&1)&lt;&lt;i)) &divide; 63</td>
   <td>Hidden Power: IV are indexed from 0 and listed as HP, At, Df, Sp, SA, SD.</td>
  </tr>
  <tr>
   <td>21e17d0</td>
   <td>100 * stockpile</td>
   <td>Spit Up: stockpile is the stockpile counter ranging from 0 to 3.</td>
  </tr>
  <tr class="a">
   <td>21e1dbc</td>
   <td>40, 80</td>
   <td>Pursuit: BP is doubled to 80 if target is switching out.</td>
  </tr>
  <tr>
   <td>21e2d40</td>
   <td>40, 80 or 120</td>
   <td>Present: let 0 &le; r &lt; 80 be a random number. If r &lt 40, BP is 40, else if r &lt 70, BP is 80, otherwise BP is 120.</td>
  </tr>
  <tr class="a">
   <td>21e33dc</td>
   <td>Variable</td>
   <td>Natural Gift: base power and type depend on held berry. See 2021030 and 20210E4 for corresponding tables.</td>
  </tr>
  <tr>
   <td>21e398c</td>
   <td>10 + 20 * factor</td>
   <td>Magnitude: let R = rand(100), factor = {0: R &lt; 5, 1: 5 &le; R &lt; 16, 2: 16 &le; R &lt; 35, 3: 35 &le; R &lt; 65, 4: 65 &le; R &lt; 85, 5: 85 &le; R &lt; 95, 6: R &ge; 95}.</td>
  </tr>
  <tr class="a">
   <td>21e2720</td>
   <td>30 * 2 ^ (use_counter + defense_curl)</td>
   <td>Rollout: use_counter counts successive and successful previous uses up to a maximum of 5, defense_curl is 1 if user used Defense Curl previously on field, 0 otherwise.</td>
  </tr>
  <tr>
   <td>21e5d44</td>
   <td>Variable</td>
   <td>Fling: base power depends on the held item. See 21D807C for table of items.</td>
  </tr>
  <tr class="a">
   <td>21e84b8</td>
   <td>150</td>
   <td>Grass/Fire/Water Pledge: if a slower ally used a different Pledge move this turn, it will skip its turn and this move's base power will be set to 150.</td>
  </tr>
 </tbody>
</table>

<h3><a name="bp-mods">Modifiers for the base power</a></h3>

<table class="sortable">
 <thead>
  <tr>
   <th width="110">Trigger address</th>
   <th width="90">Modifier</th>
   <th>Trigger description</th>
  </tr>
 </thead>
    
 <tbody>
  <tr>
   <td>21d9108</td>
   <td>0x1800</td>
   <td>If user has ability Technician and move's base power is &le;60.</td>
  </tr>
  <tr class="a">
   <td>21dc27c</td>
   <td>0x1800</td>
   <td>If user has ability Flare Boost, is burned and uses a special move.</td>
  </tr>
  <tr>
   <td>21dc6c0</td>
   <td>0x14CD</td>
   <td>If user has ability Analytic, move isn't Future Sight or Doom Desire and target has already moved this turn.</td>
  </tr>
  <tr class="a">
   <td>21d9174</td>
   <td>0x1333</td>
   <td>If user has ability Reckless and move has recoil or is either Jump Kick or Hi Jump Kick.</td>
  </tr>
  <tr>
   <td>21d9138</td>
   <td>0x1333</td>
   <td>If the user has ability Iron Fist and move has the "Punching move" (0x7) flag set.</td>
  </tr>
  <tr class="a">
   <td>21dc238</td>
   <td>0x1800</td>
   <td>If user has ability Toxic Boost, is poisoned and move is physical.</td>
  </tr>
  <tr>
   <td>21d9090</td>
   <td>Variable</td>
   <td>If user has ability Rivalry. The value of the modifier is 0x1000 if either the user or target is genderless,
   0x1400 if the user and target are of the same gender and 0xC00 otherwise.</td>
  </tr>
  <tr class="a">
   <td>21dc718</td>
   <td>0x14CD</td>
   <td>If user has ability Sand Force and move is Rock, Ground or Steel type.</td>
  </tr>
  <tr>
   <td>21da864</td>
   <td>0x800</td>
   <td>If target has ability Heatproof and move is Fire type.</td>
  </tr>
  <tr class="a">
   <td>21daa90</td>
   <td>0x1400</td>
   <td>If target has ability Dry Skin and move is Fire type.</td>
  </tr>
  <tr>
   <td>21dbf48</td>
   <td>0x14CD</td>
   <td>If the user has ability Sheer Force and move has a flag (0xA) set.</td>
  </tr>
  <tr class="a">
   <td>21d9dc4</td>
   <td></td>
   <td>Internal.</td>
  </tr>
  <tr>
   <td>Multiple</td>
   <td>0x1333</td>
   <td>Type boosting items, plates, incenses. All are wrappers for the 21DF95C trigger. List of locations:<br />
    21df7a8, 21df878, 21df760, 21df748, 21df778, 21df7c0, 21df860, 21df890, 21df730, 21df908, 21df950, 21df790,
    21df7d8, 21df7f0, 21df808, 21df718, 21df8c0, 21df938, 21df920, 21df8d8, 21df8a8.
   </td>
  </tr>
  <tr class="a">
   <td>21de6ec</td>
   <td>0x1199</td>
   <td>If user holds a Muscle Band and move is phyisical.</td>
  </tr>
  <tr>
   <td>21df994</td>
   <td>0x1333</td>
   <td>If user is Palkia, holds the Lustrous Orb and move is Water or Dragon type.</td>
  </tr>
  <tr class="a">
   <td>21de72c</td>
   <td>0x1199</td>
   <td>If user holds Wise Glasses and move is special.</td>
  </tr>
  <tr>
   <td>21df458</td>
   <td>0x1333</td>
   <td>If user is Giratina, holds the Griseous Orb and move is Dragon or Ghost type.</td>
  </tr>
  <tr class="a">
   <td>21df8f0</td>
   <td>0x1333</td>
   <td>If user holds Odd Incense and move is Psychic type.</td>
  </tr>
  <tr>
   <td>21df9e8</td>
   <td>0x1333</td>
   <td>If user is Dialga, holds the Adamant Orb and move is Steel or Dragon type.</td>
  </tr>
  <tr class="a">
   <td>21e01e4</td>
   <td>0x1800</td>
   <td>If user holds a Normal Gem and move is normal type. Similar triggers for the other types are at:<br />
   21DFF14, 21DFF40, 21DFF6C, 21DFF98, 21DFFC4, 21DFFF0, 21E001C, 21E0048, 21E0074, 21E00A0, 21E00CC, 21E00F8, 21E0124, 21E0150, 21E017C, 21E01A8</td>
  </tr>
  <tr>
   <td>21e2928</td>
   <td>0x2000</td>
   <td>If move is Facade and user is either paralyzed, poisoned or burned.</td>
  </tr>
  <tr class="a">
   <td>21e2a58</td>
   <td>0x2000</td>
   <td>If move is Brine and target's HP is &le; 50%.</td>
  </tr>
  <tr>
   <td>21e6fe8</td>
   <td>0x2000</td>
   <td>If move is Venoshock and target is poisoned.</td>
  </tr>
  <tr class="a">
   <td>21e729c</td>
   <td>0x2000</td>
   <td>If move is Retaliate and a Pokémon from the target's party fainted on the previous turn.</td>
  </tr>
  <tr>
   <td>21e8330</td>
   <td>0x2000</td>
   <td>If move is either Fusion Bolt or Fusion Flare and the previously used move was respectively Fusion Flare or Fusion Bolt.</td>
  </tr>
  <tr class="a">
   <td>21e6f34</td>
   <td>0x1800</td>
   <td>If move was called using Me First.</td>
  </tr>
  <tr>
   <td>21e64a0</td>
   <td>0x800</td>
   <td>If move is SolarBeam in non-sunny, non-default weather.</td>
  </tr>
  <tr class="a">
   <td>21e1f38</td>
   <td>0x2000</td>
   <td>If user used Charge the previous turn and move is Electric type.</td>
  </tr>
  <tr>
   <td>21e5ff0</td>
   <td>0x1800</td>
   <td>If user has been the target of Helping Hand this turn.</td>
  </tr>
  <tr class="a">
   <td>6898158</td>
   <td>0x548</td>
   <td>If Water Sport was used by any Pokémon still on the field and move is Fire type.</td>
  </tr>
  <tr>
   <td>6898110</td>
   <td>0x548</td>
   <td>If Mud Sport was used by any Pokémon still on the field and move is Electric type.</td>
  </tr>
 </tbody>
</table>

<h2><a name="attack">User attack stat</a></h2>

<div class="arm listing">
<ol><li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C7394 BaseAttackMods<span class="sy0">:</span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; @ CODE XREF<span class="sy0">:</span> DamageCalc<span class="sy0">+</span>9Ep</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C7394 <span class="kw3">PUSH</span> &nbsp; &nbsp;<span class="br0">{</span><span class="kw35">R3</span><span class="sy0">-</span><span class="kw35">R7</span><span class="sy0">,</span><span class="kw35">LR</span><span class="br0">}</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C7396 <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R5</span><span class="sy0">,</span> <span class="kw35">R3</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C7398 <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R7</span><span class="sy0">,</span> <span class="kw35">R0</span></div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021C739A <span class="kw3">LDRH</span> &nbsp; &nbsp;<span class="kw35">R0</span><span class="sy0">,</span> <span class="br0">[</span><span class="kw35">R5</span><span class="br0">]</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C739C <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R6</span><span class="sy0">,</span> <span class="kw35">R1</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C739E <span class="kw3">STR</span> &nbsp; &nbsp; <span class="kw35">R2</span><span class="sy0">,</span> <span class="br0">[</span><span class="kw35">SP</span><span class="br0">]</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C73A0 <span class="kw7">BL</span> &nbsp; &nbsp; &nbsp;GetMoveCategory</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C73A4 <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R4</span><span class="sy0">,</span> #<span class="nu0">0xA</span></div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021C73A6 <span class="kw5">CMP</span> &nbsp; &nbsp; <span class="kw35">R0</span><span class="sy0">,</span> #<span class="nu0">2</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C73A8 <span class="kw8">BEQ</span> &nbsp; &nbsp; loc_21C73AC</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C73AA <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R4</span><span class="sy0">,</span> #<span class="nu0">8</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C73AC</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C73AC loc_21C73AC<span class="sy0">:</span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;@ CODE XREF<span class="sy0">:</span> BaseAttackMods<span class="sy0">+</span><span class="nu0">14</span>j</div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021C73AC <span class="kw3">LDR</span> &nbsp; &nbsp; <span class="kw35">R0</span><span class="sy0">,</span> =<span class="nu0">0x30FE</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C73AE <span class="kw7">BL</span> &nbsp; &nbsp; &nbsp;AllocateVolatileVariables</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C73B2 <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R0</span><span class="sy0">,</span> <span class="kw35">R6</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C73B4 <span class="kw7">BL</span> &nbsp; &nbsp; &nbsp;GetPkmId</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C73B8 <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R1</span><span class="sy0">,</span> <span class="kw35">R0</span></div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021C73BA <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R0</span><span class="sy0">,</span> #<span class="nu0">3</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C73BC <span class="kw7">BL</span> &nbsp; &nbsp; &nbsp;StoreVolatileVariableFlag3e4</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C73C0 <span class="kw3">LDR</span> &nbsp; &nbsp; <span class="kw35">R0</span><span class="sy0">,</span> <span class="br0">[</span><span class="kw35">SP</span><span class="br0">]</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C73C2 <span class="kw7">BL</span> &nbsp; &nbsp; &nbsp;GetPkmId</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C73C6 <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R1</span><span class="sy0">,</span> <span class="kw35">R0</span></div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021C73C8 <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R0</span><span class="sy0">,</span> #<span class="nu0">4</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C73CA <span class="kw7">BL</span> &nbsp; &nbsp; &nbsp;StoreVolatileVariableFlag3e4</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C73CE <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R0</span><span class="sy0">,</span> #<span class="nu0">0x3B</span> @ <span class="st0">';'</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C73D0 <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R1</span><span class="sy0">,</span> #<span class="nu0">0x1F</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C73D2 <span class="kw7">BL</span> &nbsp; &nbsp; &nbsp;InitVolatileVariable</div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021C73D6 <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R0</span><span class="sy0">,</span> #<span class="nu0">0x51</span> @ <span class="st0">'Q'</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C73D8 <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R1</span><span class="sy0">,</span> #<span class="nu0">0</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C73DA <span class="kw7">BL</span> &nbsp; &nbsp; &nbsp;InitVolatileVariable</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C73DE <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R0</span><span class="sy0">,</span> <span class="kw35">R7</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C73E0 <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R1</span><span class="sy0">,</span> #<span class="nu0">0x39</span> @ <span class="st0">'9'</span></div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021C73E2 <span class="kw7">BL</span> &nbsp; &nbsp; &nbsp;ApplyTriggers</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C73E6 <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R0</span><span class="sy0">,</span> #<span class="nu0">0x3B</span> @ <span class="st0">';'</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C73E8 <span class="kw7">BL</span> &nbsp; &nbsp; &nbsp;ReadVolatileVariable</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C73EC <span class="kw5">LSLS</span> &nbsp; &nbsp;<span class="kw35">R0</span><span class="sy0">,</span> <span class="kw35">R0</span><span class="sy0">,</span> #<span class="nu0">0x18</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C73EE <span class="kw5">LSRS</span> &nbsp; &nbsp;<span class="kw35">R1</span><span class="sy0">,</span> <span class="kw35">R0</span><span class="sy0">,</span> #<span class="nu0">0x18</span></div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021C73F0 <span class="kw5">CMP</span> &nbsp; &nbsp; <span class="kw35">R1</span><span class="sy0">,</span> #<span class="nu0">0x1F</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C73F2 <span class="kw8">BEQ</span> &nbsp; &nbsp; loc_21C73FC</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C73F4 <span class="kw3">LDR</span> &nbsp; &nbsp; <span class="kw35">R0</span><span class="sy0">,</span> <span class="br0">[</span><span class="kw35">R7</span><span class="sy0">,</span>#<span class="nu0">8</span><span class="br0">]</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C73F6 <span class="kw7">BL</span> &nbsp; &nbsp; &nbsp;GetPartyPkm</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C73FA <span class="kw5">ADDS</span> &nbsp; &nbsp;<span class="kw35">R6</span><span class="sy0">,</span> <span class="kw35">R0</span><span class="sy0">,</span> #<span class="nu0">0</span></div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021C73FC</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C73FC loc_21C73FC<span class="sy0">:</span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;@ CODE XREF<span class="sy0">:</span> BaseAttackMods<span class="sy0">+</span>5Ej</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C73FC <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R0</span><span class="sy0">,</span> #<span class="nu0">0x51</span> @ <span class="st0">'Q'</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C73FE <span class="kw7">BL</span> &nbsp; &nbsp; &nbsp;ReadVolatileVariable</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C7402 <span class="kw5">CMP</span> &nbsp; &nbsp; <span class="kw35">R0</span><span class="sy0">,</span> #<span class="nu0">0</span></div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021C7404 <span class="kw8">BEQ</span> &nbsp; &nbsp; loc_21C7410</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C7406 <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R0</span><span class="sy0">,</span> <span class="kw35">R6</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C7408 <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R1</span><span class="sy0">,</span> <span class="kw35">R4</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C740A <span class="kw7">BL</span> &nbsp; &nbsp; &nbsp;RawBpkmStat</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C740E <span class="kw7">B</span> &nbsp; &nbsp; &nbsp; loc_21C7428</div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021C7410 @ <span class="sy0">---------------------------------------------------------------------------</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C7410</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C7410 loc_21C7410<span class="sy0">:</span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;@ CODE XREF<span class="sy0">:</span> BaseAttackMods<span class="sy0">+</span><span class="nu0">70</span>j</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C7410 <span class="kw3">LDR</span> &nbsp; &nbsp; <span class="kw35">R0</span><span class="sy0">,</span> <span class="br0">[</span><span class="kw35">SP</span><span class="sy0">,</span>#<span class="nu0">0x18</span><span class="br0">]</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C7412 <span class="kw5">CMP</span> &nbsp; &nbsp; <span class="kw35">R0</span><span class="sy0">,</span> #<span class="nu0">0</span></div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021C7414 <span class="kw8">BEQ</span> &nbsp; &nbsp; loc_21C7420</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C7416 <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R0</span><span class="sy0">,</span> <span class="kw35">R6</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C7418 <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R1</span><span class="sy0">,</span> <span class="kw35">R4</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C741A <span class="kw7">BL</span> &nbsp; &nbsp; &nbsp;CritAtkDefLevel</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C741E <span class="kw7">B</span> &nbsp; &nbsp; &nbsp; loc_21C7428</div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021C7420 @ <span class="sy0">---------------------------------------------------------------------------</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C7420</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C7420 loc_21C7420<span class="sy0">:</span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;@ CODE XREF<span class="sy0">:</span> BaseAttackMods<span class="sy0">+</span><span class="nu0">80</span>j</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C7420 <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R0</span><span class="sy0">,</span> <span class="kw35">R6</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C7422 <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R1</span><span class="sy0">,</span> <span class="kw35">R4</span></div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021C7424 <span class="kw7">BL</span> &nbsp; &nbsp; &nbsp;GetBpkmStat</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C7428</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C7428 loc_21C7428<span class="sy0">:</span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;@ CODE XREF<span class="sy0">:</span> BaseAttackMods<span class="sy0">+</span>7Aj</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C7428 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; @ BaseAttackMods<span class="sy0">+</span>8Aj</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C7428 <span class="kw5">LSLS</span> &nbsp; &nbsp;<span class="kw35">R0</span><span class="sy0">,</span> <span class="kw35">R0</span><span class="sy0">,</span> #<span class="nu0">0x10</span></div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021C742A <span class="kw5">LSRS</span> &nbsp; &nbsp;<span class="kw35">R4</span><span class="sy0">,</span> <span class="kw35">R0</span><span class="sy0">,</span> #<span class="nu0">0x10</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C742C <span class="kw3">LDRH</span> &nbsp; &nbsp;<span class="kw35">R1</span><span class="sy0">,</span> <span class="br0">[</span><span class="kw35">R5</span><span class="br0">]</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C742E <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R0</span><span class="sy0">,</span> #<span class="nu0">0x12</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C7430 <span class="kw7">BL</span> &nbsp; &nbsp; &nbsp;StoreVolatileVariableFlag3e4</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C7434 <span class="kw3">LDRB</span> &nbsp; &nbsp;<span class="kw35">R1</span><span class="sy0">,</span> <span class="br0">[</span><span class="kw35">R5</span><span class="sy0">,</span>#<span class="nu0">6</span><span class="br0">]</span></div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021C7436 <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R0</span><span class="sy0">,</span> #<span class="nu0">0x16</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C7438 <span class="kw7">BL</span> &nbsp; &nbsp; &nbsp;StoreVolatileVariableFlag3e4</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C743C <span class="kw3">LDR</span> &nbsp; &nbsp; <span class="kw35">R1</span><span class="sy0">,</span> <span class="br0">[</span><span class="kw35">R5</span><span class="sy0">,</span>#<span class="nu0">8</span><span class="br0">]</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C743E <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R0</span><span class="sy0">,</span> #<span class="nu0">0x1A</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C7440 <span class="kw7">BL</span> &nbsp; &nbsp; &nbsp;StoreVolatileVariableFlag3e4</div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021C7444 <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R0</span><span class="sy0">,</span> #<span class="nu0">0x33</span> @ <span class="st0">'3'</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C7446 <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R1</span><span class="sy0">,</span> <span class="kw35">R4</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C7448 <span class="kw7">BL</span> &nbsp; &nbsp; &nbsp;InitVolatileVariable</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C744C <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R1</span><span class="sy0">,</span> <span class="nu0">0x1000</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C7450 <span class="kw3">LDR</span> &nbsp; &nbsp; <span class="kw35">R2</span><span class="sy0">,</span> =<span class="nu0">0x19A</span></div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021C7452 <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R0</span><span class="sy0">,</span> #<span class="nu0">0x35</span> @ <span class="st0">'5'</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C7454 <span class="kw5">LSLS</span> &nbsp; &nbsp;<span class="kw35">R3</span><span class="sy0">,</span> <span class="kw35">R1</span><span class="sy0">,</span> #<span class="nu0">5</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C7456 <span class="kw7">BL</span> &nbsp; &nbsp; &nbsp;StoreVolatileVariableFlag3e3</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C745A <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R0</span><span class="sy0">,</span> <span class="kw35">R7</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C745C <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R1</span><span class="sy0">,</span> #<span class="nu0">0x3B</span> @ <span class="st0">';'</span></div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021C745E <span class="kw7">BL</span> &nbsp; &nbsp; &nbsp;ApplyTriggers</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C7462 <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R0</span><span class="sy0">,</span> #<span class="nu0">0x33</span> @ <span class="st0">'3'</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C7464 <span class="kw7">BL</span> &nbsp; &nbsp; &nbsp;ReadVolatileVariable</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C7468 <span class="kw5">LSLS</span> &nbsp; &nbsp;<span class="kw35">R0</span><span class="sy0">,</span> <span class="kw35">R0</span><span class="sy0">,</span> #<span class="nu0">0x10</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C746A <span class="kw5">LSRS</span> &nbsp; &nbsp;<span class="kw35">R4</span><span class="sy0">,</span> <span class="kw35">R0</span><span class="sy0">,</span> #<span class="nu0">0x10</span></div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021C746C <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R0</span><span class="sy0">,</span> #<span class="nu0">0x35</span> @ <span class="st0">'5'</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C746E <span class="kw7">BL</span> &nbsp; &nbsp; &nbsp;ReadVolatileVariable</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C7472 <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R1</span><span class="sy0">,</span> <span class="kw35">R0</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C7474 <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R0</span><span class="sy0">,</span> <span class="kw35">R4</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C7476 <span class="kw7">BL</span> &nbsp; &nbsp; &nbsp;ApplyMod</div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021C747A <span class="kw5">LSLS</span> &nbsp; &nbsp;<span class="kw35">R0</span><span class="sy0">,</span> <span class="kw35">R0</span><span class="sy0">,</span> #<span class="nu0">0x10</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C747C <span class="kw5">LSRS</span> &nbsp; &nbsp;<span class="kw35">R4</span><span class="sy0">,</span> <span class="kw35">R0</span><span class="sy0">,</span> #<span class="nu0">0x10</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C747E <span class="kw3">LDR</span> &nbsp; &nbsp; <span class="kw35">R0</span><span class="sy0">,</span> =<span class="nu0">0x3123</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C7480 <span class="kw7">BL</span> &nbsp; &nbsp; &nbsp;FreeVolatileVariable</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C7484 <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R0</span><span class="sy0">,</span> <span class="kw35">R4</span></div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021C7486 <span class="kw3">POP</span> &nbsp; &nbsp; <span class="br0">{</span><span class="kw35">R3</span><span class="sy0">-</span><span class="kw35">R7</span><span class="sy0">,</span><span class="kw35">PC</span><span class="br0">}</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C7486 @ End of function BaseAttackMods</div></li>
</ol>
</div>

<h3><a name="attack-base">Base value</a></h3>

<p>
The first step of computing the attack stat is to decide whether the attack or special attack stat should be used, and
on which Pokémon. By default, the user's attack is used if the move is physical and the special attack otherwise but
this behavior can be altered by the following triggers:
</p>

<table class="sortable">
 <thead>
  <tr>
   <th width="110">Trigger address</th>
   <th>Trigger description</th>
  </tr>
 </thead>
    
 <tbody>
  <tr>
   <td>21da828</td>
   <td>Unaware: if target has ability Unaware do not apply any attack level boosts.</td>
  </tr>
  <tr class="a">
   <td>21d8db0</td>
   <td>Internal.</td>
  </tr>
  <tr>
   <td>21e7320</td>
   <td>Foul Play: use the target's base attack stat instead of the user's.</td>
  </tr>
  <tr class="a">
   <td>21e39b0</td>
   <td>Internal.</td>
  </tr>
 </tbody>
</table>

<h3><a name="boost-level">Boost level</a></h3>

Once the base stat is decided, the stat boost level is applied:
<ol>
 <li>If a trigger decided to skip stat boosts, use the base stat.</li>
 <li>If the hit was critical and the boost level is negative, use the base stat.</li>
 <li>Otherwise, apply the factor corresponding to the boost level according to the table below
  (multiply stat by the dividend first then use unrounded division on divisor).</li>
</ol>

<table class="sortable">
    <thead>
        <tr>
            <th>Stat boost level</th>
            <th>Multiplier</th>
            <th>Decimal Approximate</th>
        </tr>
    </thead>
    <tbody>
        <tr><td>-6</td><td>2/8</td><td>0.25</td></tr>
        <tr class="a"><td>-5</td><td>2/7</td><td>0.2857</td></tr>
        <tr><td>-4</td><td>2/6</td><td>0.3333</td></tr>
        <tr class="a"><td>-3</td><td>2/5</td><td>0.4</td></tr>
        <tr><td>-2</td><td>2/4</td><td>0.5</td></tr>
        <tr class="a"><td>-1</td><td>2/3</td><td>0.6667</td></tr>
        <tr><td>0</td><td>2/2</td><td>1</td></tr>
        <tr class="a"><td>+1</td><td>3/2</td><td>1.5</td></tr>
        <tr><td>+2</td><td>4/2</td><td>2</td></tr>
        <tr class="a"><td>+3</td><td>5/2</td><td>2.5</td></tr>
        <tr><td>+4</td><td>6/2</td><td>3</td></tr>
        <tr class="a"><td>+5</td><td>7/2</td><td>3.5</td></tr>
        <tr><td>+6</td><td>8/2</td><td>4</td></tr>
    </tbody>
</table>

<h3><a name="attack-mod">Attack modifiers</a></h3>

The final attack stat is altered using the following modifiers:

<table class="sortable">
 <thead>
  <tr>
   <th width="110">Trigger address</th>
   <th width="90">Modifier</th>
   <th>Trigger description</th>
  </tr>
 </thead>
    
 <tbody>
  <tr>
   <td>21d871c</td>
   <td>0x800</td>
   <td>If target has ability Thick Fat and move is Ice or Fire type.</td>
  </tr>
  <tr class="a">
   <td>21d8c78</td>
   <td>0x1800</td>
   <td>If user has ability Torrent, has MaxHP &divide; 3 or less HP and move is water type.</td>
  </tr>
  <tr>
   <td>21d8d14</td>
   <td>0x1800</td>
   <td>If user has ability Guts, has a status problem and move is physical.</td>
  </tr>
  <tr class="a">
   <td>21d8cb0</td>
   <td>0x1800</td>
   <td>If user has ability Swarm, has MaxHP &divide; 3 or less HP and move is bug type.</td>
  </tr>
  <tr>
   <td>21d8c94</td>
   <td>0x1800</td>
   <td>If user has ability Overgrow, has MaxHP &divide; 3 or less HP and move is grass type.</td>
  </tr>
  <tr class="a">
   <td>21d8d60</td>
   <td>0x1800</td>
   <td>If user has ability Plus (resp. Minus) and an ally has ability Minus (resp. Plus) and move is special.</td>
  </tr>
  <tr>
   <td>21d8c5c</td>
   <td>0x1800</td>
   <td>If user has ability Blaze, has MaxHP &divide; 3 or less HP and move is fire type.</td>
  </tr>
  <tr class="a">
   <td>21dc0dc</td>
   <td>0x800</td>
   <td>If user has ability Defeatist and CurrentHP &le; MaxHP &divide; 2.</td>
  </tr>
  <tr>
   <td>21d8754</td>
   <td>0x2000</td>
   <td>If user has ability Pure Power or Huge Power.</td>
  </tr>
  <tr class="a">
   <td>21d9954</td>
   <td>0x1800</td>
   <td>If user has ability Solar Power and weather is intense sunlight and move is special.</td>
  </tr>
  <tr>
   <td>21d8894</td>
   <td>0x1800</td>
   <td>If user has ability Hustle and move is physical. This is a special trigger in the sense that instead of chaining it will directly apply the 0x1800 on the current attack stat instead of being chained with others.</td>
  </tr>
  <tr class="a">
   <td>21daf04</td>
   <td>0x1800</td>
   <td>If user has ability Flash Fire activated and move is Fire type.</td>
  </tr>
  <tr>
   <td>21d892c</td>
   <td>0x800</td>
   <td>If user has ability Slow Start, has been on field for less than 5 turns and move is physical.</td>
  </tr>
  <tr class="a">
   <td>21d8fec</td>
   <td>0x1800</td>
   <td>If ally is Cherrim and has ability Flower Gift, weather is intense sunlight and move is physical.</td>
  </tr>
  <tr>
   <td>21db424</td>
   <td></td>
   <td>Internal.</td>
  </tr>
  <tr class="a">
   <td>21de91c</td>
   <td>0x2000</td>
   <td>If user is Cubone or Marowak, holds a Thick Club and move is physical.</td>
  </tr>
  <tr>
   <td>21de76c</td>
   <td>0x2000</td>
   <td>If user is Clamperl, holds a DeepSeaTooth and move is special.</td>
  </tr>
  <tr class="a">
   <td>21df53c</td>
   <td>0x2000</td>
   <td>If user is Pikachu and holds a Light Ball.</td>
  </tr>
  <tr>
   <td>21de898</td>
   <td>0x1800</td>
   <td>If user is Latios or Latias, holds a Soul Dew and move is special.</td>
  </tr>
  <tr class="a">
   <td>21de968</td>
   <td>0x1800</td>
   <td>If user is holding Choice Band and move is physical.</td>
  </tr>
  <tr>
   <td>21de9a0</td>
   <td>0x1800</td>
   <td>If user is holding Choice Specs and move is special.</td>
  </tr>
  <tr class="a">
   <td>21e310c</td>
   <td></td>
   <td>Internal.</td>
  </tr>
 </tbody>
</table>

<h2><a name="defense">Target defense stat</a></h2>

<div class="arm listing">
<ol><li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C7494 BaseDefenseMods<span class="sy0">:</span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;@ CODE XREF<span class="sy0">:</span> DamageCalc<span class="sy0">+</span>AEp</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C7494 <span class="kw3">PUSH</span> &nbsp; &nbsp;<span class="br0">{</span><span class="kw35">R4</span><span class="sy0">-</span><span class="kw35">R7</span><span class="sy0">,</span><span class="kw35">LR</span><span class="br0">}</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C7496 <span class="kw1">SUB</span> &nbsp; &nbsp; <span class="kw35">SP</span><span class="sy0">,</span> <span class="kw35">SP</span><span class="sy0">,</span> #<span class="nu0">0xC</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C7498 <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R6</span><span class="sy0">,</span> <span class="kw35">R3</span></div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021C749A <span class="kw3">STR</span> &nbsp; &nbsp; <span class="kw35">R0</span><span class="sy0">,</span> <span class="br0">[</span><span class="kw35">SP</span><span class="br0">]</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C749C <span class="kw3">LDRH</span> &nbsp; &nbsp;<span class="kw35">R0</span><span class="sy0">,</span> <span class="br0">[</span><span class="kw35">R6</span><span class="br0">]</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C749E <span class="kw3">STR</span> &nbsp; &nbsp; <span class="kw35">R1</span><span class="sy0">,</span> <span class="br0">[</span><span class="kw35">SP</span><span class="sy0">,</span>#<span class="nu0">4</span><span class="br0">]</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C74A0 <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R5</span><span class="sy0">,</span> <span class="kw35">R2</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C74A2 <span class="kw7">BL</span> &nbsp; &nbsp; &nbsp;GetMoveCategory</div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021C74A6 <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R4</span><span class="sy0">,</span> #<span class="nu0">0xB</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C74A8 <span class="kw5">CMP</span> &nbsp; &nbsp; <span class="kw35">R0</span><span class="sy0">,</span> #<span class="nu0">2</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C74AA <span class="kw8">BEQ</span> &nbsp; &nbsp; loc_21C74AE</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C74AC <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R4</span><span class="sy0">,</span> #<span class="nu0">9</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C74AE</div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021C74AE loc_21C74AE<span class="sy0">:</span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;@ CODE XREF<span class="sy0">:</span> BaseDefenseMods<span class="sy0">+</span><span class="nu0">16</span>j</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C74AE <span class="kw3">LDR</span> &nbsp; &nbsp; <span class="kw35">R0</span><span class="sy0">,</span> <span class="br0">[</span><span class="kw35">R6</span><span class="sy0">,</span>#<span class="nu0">8</span><span class="br0">]</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C74B0 <span class="kw3">STR</span> &nbsp; &nbsp; <span class="kw35">R0</span><span class="sy0">,</span> <span class="br0">[</span><span class="kw35">SP</span><span class="sy0">,</span>#<span class="nu0">8</span><span class="br0">]</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C74B2 <span class="kw3">LDR</span> &nbsp; &nbsp; <span class="kw35">R0</span><span class="sy0">,</span> =<span class="nu0">0x3133</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C74B4 <span class="kw7">BL</span> &nbsp; &nbsp; &nbsp;AllocateVolatileVariables</div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021C74B8 <span class="kw3">LDR</span> &nbsp; &nbsp; <span class="kw35">R0</span><span class="sy0">,</span> <span class="br0">[</span><span class="kw35">SP</span><span class="sy0">,</span>#<span class="nu0">4</span><span class="br0">]</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C74BA <span class="kw7">BL</span> &nbsp; &nbsp; &nbsp;GetPkmId</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C74BE <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R1</span><span class="sy0">,</span> <span class="kw35">R0</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C74C0 <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R0</span><span class="sy0">,</span> #<span class="nu0">3</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C74C2 <span class="kw7">BL</span> &nbsp; &nbsp; &nbsp;StoreVolatileVariableFlag3e4</div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021C74C6 <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R0</span><span class="sy0">,</span> <span class="kw35">R5</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C74C8 <span class="kw7">BL</span> &nbsp; &nbsp; &nbsp;GetPkmId</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C74CC <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R1</span><span class="sy0">,</span> <span class="kw35">R0</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C74CE <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R0</span><span class="sy0">,</span> #<span class="nu0">4</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C74D0 <span class="kw7">BL</span> &nbsp; &nbsp; &nbsp;StoreVolatileVariableFlag3e4</div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021C74D4 <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R0</span><span class="sy0">,</span> #<span class="nu0">0x3C</span> @ <span class="st0">'&lt;'</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C74D6 <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R1</span><span class="sy0">,</span> <span class="kw35">R4</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C74D8 <span class="kw7">BL</span> &nbsp; &nbsp; &nbsp;StoreVolatileVariableFlag3e4</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C74DC <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R0</span><span class="sy0">,</span> #<span class="nu0">0x3D</span> @ <span class="st0">'='</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C74DE <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R1</span><span class="sy0">,</span> #<span class="nu0">0</span></div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021C74E0 <span class="kw7">BL</span> &nbsp; &nbsp; &nbsp;InitVolatileVariable</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C74E4 <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R0</span><span class="sy0">,</span> #<span class="nu0">0x51</span> @ <span class="st0">'Q'</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C74E6 <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R1</span><span class="sy0">,</span> #<span class="nu0">0</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C74E8 <span class="kw7">BL</span> &nbsp; &nbsp; &nbsp;StoreVolatileVariableFlag3e1</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C74EC <span class="kw3">LDR</span> &nbsp; &nbsp; <span class="kw35">R0</span><span class="sy0">,</span> <span class="br0">[</span><span class="kw35">SP</span><span class="br0">]</span></div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021C74EE <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R1</span><span class="sy0">,</span> #<span class="nu0">0x3A</span> @ <span class="st0">':'</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C74F0 <span class="kw7">BL</span> &nbsp; &nbsp; &nbsp;ApplyTriggers</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C74F4 <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R0</span><span class="sy0">,</span> #<span class="nu0">0x3D</span> @ <span class="st0">'='</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C74F6 <span class="kw7">BL</span> &nbsp; &nbsp; &nbsp;ReadVolatileVariable</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C74FA <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R1</span><span class="sy0">,</span> #<span class="nu0">1</span></div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021C74FC <span class="kw5">TST</span> &nbsp; &nbsp; <span class="kw35">R0</span><span class="sy0">,</span> <span class="kw35">R1</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C74FE <span class="kw8">BEQ</span> &nbsp; &nbsp; loc_21C7516</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C7500 <span class="kw5">CMP</span> &nbsp; &nbsp; <span class="kw35">R4</span><span class="sy0">,</span> #<span class="nu0">9</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C7502 <span class="kw8">BNE</span> &nbsp; &nbsp; loc_21C7508</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C7504 <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R4</span><span class="sy0">,</span> #<span class="nu0">0xB</span></div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021C7506 <span class="kw7">B</span> &nbsp; &nbsp; &nbsp; loc_21C750A</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C7508 @ <span class="sy0">---------------------------------------------------------------------------</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C7508</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C7508 loc_21C7508<span class="sy0">:</span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;@ CODE XREF<span class="sy0">:</span> BaseDefenseMods<span class="sy0">+</span>6Ej</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C7508 <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R4</span><span class="sy0">,</span> #<span class="nu0">9</span></div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021C750A</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C750A loc_21C750A<span class="sy0">:</span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;@ CODE XREF<span class="sy0">:</span> BaseDefenseMods<span class="sy0">+</span><span class="nu0">72</span>j</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C750A <span class="kw5">CMP</span> &nbsp; &nbsp; <span class="kw35">R4</span><span class="sy0">,</span> #<span class="nu0">9</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C750C <span class="kw8">BNE</span> &nbsp; &nbsp; loc_21C7512</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C750E <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R0</span><span class="sy0">,</span> #<span class="nu0">1</span></div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021C7510 <span class="kw7">B</span> &nbsp; &nbsp; &nbsp; loc_21C7514</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C7512 @ <span class="sy0">---------------------------------------------------------------------------</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C7512</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C7512 loc_21C7512<span class="sy0">:</span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;@ CODE XREF<span class="sy0">:</span> BaseDefenseMods<span class="sy0">+</span><span class="nu0">78</span>j</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C7512 <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R0</span><span class="sy0">,</span> #<span class="nu0">2</span></div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021C7514</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C7514 loc_21C7514<span class="sy0">:</span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;@ CODE XREF<span class="sy0">:</span> BaseDefenseMods<span class="sy0">+</span>7Cj</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C7514 <span class="kw3">STR</span> &nbsp; &nbsp; <span class="kw35">R0</span><span class="sy0">,</span> <span class="br0">[</span><span class="kw35">SP</span><span class="sy0">,</span>#<span class="nu0">8</span><span class="br0">]</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C7516</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C7516 loc_21C7516<span class="sy0">:</span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;@ CODE XREF<span class="sy0">:</span> BaseDefenseMods<span class="sy0">+</span>6Aj</div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021C7516 <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R0</span><span class="sy0">,</span> #<span class="nu0">0x51</span> @ <span class="st0">'Q'</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C7518 <span class="kw7">BL</span> &nbsp; &nbsp; &nbsp;ReadVolatileVariable</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C751C <span class="kw5">LSLS</span> &nbsp; &nbsp;<span class="kw35">R0</span><span class="sy0">,</span> <span class="kw35">R0</span><span class="sy0">,</span> #<span class="nu0">0x18</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C751E <span class="kw5">LSRS</span> &nbsp; &nbsp;<span class="kw35">R7</span><span class="sy0">,</span> <span class="kw35">R0</span><span class="sy0">,</span> #<span class="nu0">0x18</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C7520 <span class="kw3">LDR</span> &nbsp; &nbsp; <span class="kw35">R0</span><span class="sy0">,</span> =<span class="nu0">0x3142</span></div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021C7522 <span class="kw7">BL</span> &nbsp; &nbsp; &nbsp;FreeVolatileVariable</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C7526 <span class="kw5">CMP</span> &nbsp; &nbsp; <span class="kw35">R7</span><span class="sy0">,</span> #<span class="nu0">0</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C7528 <span class="kw8">BEQ</span> &nbsp; &nbsp; loc_21C7534</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C752A <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R0</span><span class="sy0">,</span> <span class="kw35">R5</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C752C <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R1</span><span class="sy0">,</span> <span class="kw35">R4</span></div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021C752E <span class="kw7">BL</span> &nbsp; &nbsp; &nbsp;RawBpkmStat</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C7532 <span class="kw7">B</span> &nbsp; &nbsp; &nbsp; loc_21C754C</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C7534 @ <span class="sy0">---------------------------------------------------------------------------</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C7534</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C7534 loc_21C7534<span class="sy0">:</span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;@ CODE XREF<span class="sy0">:</span> BaseDefenseMods<span class="sy0">+</span><span class="nu0">94</span>j</div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021C7534 <span class="kw3">LDR</span> &nbsp; &nbsp; <span class="kw35">R0</span><span class="sy0">,</span> <span class="br0">[</span><span class="kw35">SP</span><span class="sy0">,</span>#<span class="nu0">0x20</span><span class="br0">]</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C7536 <span class="kw5">CMP</span> &nbsp; &nbsp; <span class="kw35">R0</span><span class="sy0">,</span> #<span class="nu0">0</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C7538 <span class="kw8">BEQ</span> &nbsp; &nbsp; loc_21C7544</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C753A <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R0</span><span class="sy0">,</span> <span class="kw35">R5</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C753C <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R1</span><span class="sy0">,</span> <span class="kw35">R4</span></div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021C753E <span class="kw7">BL</span> &nbsp; &nbsp; &nbsp;CritAtkDefLevel</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C7542 <span class="kw7">B</span> &nbsp; &nbsp; &nbsp; loc_21C754C</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C7544 @ <span class="sy0">---------------------------------------------------------------------------</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C7544</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C7544 loc_21C7544<span class="sy0">:</span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;@ CODE XREF<span class="sy0">:</span> BaseDefenseMods<span class="sy0">+</span><span class="kw35">A4</span>j</div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021C7544 <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R0</span><span class="sy0">,</span> <span class="kw35">R5</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C7546 <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R1</span><span class="sy0">,</span> <span class="kw35">R4</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C7548 <span class="kw7">BL</span> &nbsp; &nbsp; &nbsp;GetBpkmStat</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C754C</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C754C loc_21C754C<span class="sy0">:</span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;@ CODE XREF<span class="sy0">:</span> BaseDefenseMods<span class="sy0">+</span>9Ej</div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021C754C &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; @ BaseDefenseMods<span class="sy0">+</span>AEj</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C754C <span class="kw5">LSLS</span> &nbsp; &nbsp;<span class="kw35">R0</span><span class="sy0">,</span> <span class="kw35">R0</span><span class="sy0">,</span> #<span class="nu0">0x10</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C754E <span class="kw5">LSRS</span> &nbsp; &nbsp;<span class="kw35">R7</span><span class="sy0">,</span> <span class="kw35">R0</span><span class="sy0">,</span> #<span class="nu0">0x10</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C7550 <span class="kw3">LDR</span> &nbsp; &nbsp; <span class="kw35">R0</span><span class="sy0">,</span> <span class="br0">[</span><span class="kw35">SP</span><span class="br0">]</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C7552 <span class="kw7">BL</span> &nbsp; &nbsp; &nbsp;GetActiveWeather</div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021C7556 <span class="kw5">CMP</span> &nbsp; &nbsp; <span class="kw35">R0</span><span class="sy0">,</span> #<span class="nu0">4</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C7558 <span class="kw8">BNE</span> &nbsp; &nbsp; loc_21C7578</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C755A <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R0</span><span class="sy0">,</span> <span class="kw35">R5</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C755C <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R1</span><span class="sy0">,</span> #<span class="nu0">5</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C755E <span class="kw7">BL</span> &nbsp; &nbsp; &nbsp;IsMoveOfUserType</div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021C7562 <span class="kw5">CMP</span> &nbsp; &nbsp; <span class="kw35">R0</span><span class="sy0">,</span> #<span class="nu0">0</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C7564 <span class="kw8">BEQ</span> &nbsp; &nbsp; loc_21C7578</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C7566 <span class="kw5">CMP</span> &nbsp; &nbsp; <span class="kw35">R4</span><span class="sy0">,</span> #<span class="nu0">0xB</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C7568 <span class="kw8">BNE</span> &nbsp; &nbsp; loc_21C7578</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C756A <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R1</span><span class="sy0">,</span> #<span class="nu0">6</span></div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021C756C <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R0</span><span class="sy0">,</span> <span class="kw35">R7</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C756E <span class="kw5">LSLS</span> &nbsp; &nbsp;<span class="kw35">R1</span><span class="sy0">,</span> <span class="kw35">R1</span><span class="sy0">,</span> #<span class="nu0">0xA</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C7570 <span class="kw7">BL</span> &nbsp; &nbsp; &nbsp;ApplyMod</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C7574 <span class="kw5">LSLS</span> &nbsp; &nbsp;<span class="kw35">R0</span><span class="sy0">,</span> <span class="kw35">R0</span><span class="sy0">,</span> #<span class="nu0">0x10</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C7576 <span class="kw5">LSRS</span> &nbsp; &nbsp;<span class="kw35">R7</span><span class="sy0">,</span> <span class="kw35">R0</span><span class="sy0">,</span> #<span class="nu0">0x10</span></div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021C7578</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C7578 loc_21C7578<span class="sy0">:</span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;@ CODE XREF<span class="sy0">:</span> BaseDefenseMods<span class="sy0">+</span>C4j</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C7578 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; @ BaseDefenseMods<span class="sy0">+</span><span class="kw35">D0</span>j <span class="sy0">...</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C7578 <span class="kw3">LDR</span> &nbsp; &nbsp; <span class="kw35">R4</span><span class="sy0">,</span> =<span class="nu0">0x3157</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C757A <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R0</span><span class="sy0">,</span> <span class="kw35">R4</span></div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021C757C <span class="kw7">BL</span> &nbsp; &nbsp; &nbsp;AllocateVolatileVariables</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C7580 <span class="kw3">LDR</span> &nbsp; &nbsp; <span class="kw35">R0</span><span class="sy0">,</span> <span class="br0">[</span><span class="kw35">SP</span><span class="sy0">,</span>#<span class="nu0">4</span><span class="br0">]</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C7582 <span class="kw7">BL</span> &nbsp; &nbsp; &nbsp;GetPkmId</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C7586 <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R1</span><span class="sy0">,</span> <span class="kw35">R0</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C7588 <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R0</span><span class="sy0">,</span> #<span class="nu0">3</span></div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021C758A <span class="kw7">BL</span> &nbsp; &nbsp; &nbsp;StoreVolatileVariableFlag3e4</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C758E <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R0</span><span class="sy0">,</span> <span class="kw35">R5</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C7590 <span class="kw7">BL</span> &nbsp; &nbsp; &nbsp;GetPkmId</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C7594 <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R1</span><span class="sy0">,</span> <span class="kw35">R0</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C7596 <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R0</span><span class="sy0">,</span> #<span class="nu0">4</span></div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021C7598 <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R5</span><span class="sy0">,</span> #<span class="nu0">4</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C759A <span class="kw7">BL</span> &nbsp; &nbsp; &nbsp;StoreVolatileVariableFlag3e4</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C759E <span class="kw3">LDRH</span> &nbsp; &nbsp;<span class="kw35">R1</span><span class="sy0">,</span> <span class="br0">[</span><span class="kw35">R6</span><span class="br0">]</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C75A0 <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R0</span><span class="sy0">,</span> #<span class="nu0">0x12</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C75A2 <span class="kw7">BL</span> &nbsp; &nbsp; &nbsp;StoreVolatileVariableFlag3e4</div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021C75A6 <span class="kw3">LDRB</span> &nbsp; &nbsp;<span class="kw35">R1</span><span class="sy0">,</span> <span class="br0">[</span><span class="kw35">R6</span><span class="sy0">,</span>#<span class="nu0">6</span><span class="br0">]</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C75A8 <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R0</span><span class="sy0">,</span> #<span class="nu0">0x16</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C75AA <span class="kw7">BL</span> &nbsp; &nbsp; &nbsp;StoreVolatileVariableFlag3e4</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C75AE <span class="kw3">LDR</span> &nbsp; &nbsp; <span class="kw35">R1</span><span class="sy0">,</span> <span class="br0">[</span><span class="kw35">SP</span><span class="sy0">,</span>#<span class="nu0">8</span><span class="br0">]</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C75B0 <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R0</span><span class="sy0">,</span> #<span class="nu0">0x1A</span></div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021C75B2 <span class="kw7">BL</span> &nbsp; &nbsp; &nbsp;StoreVolatileVariableFlag3e4</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C75B6 <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R0</span><span class="sy0">,</span> #<span class="nu0">0x34</span> @ <span class="st0">'4'</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C75B8 <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R1</span><span class="sy0">,</span> <span class="kw35">R7</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C75BA <span class="kw7">BL</span> &nbsp; &nbsp; &nbsp;InitVolatileVariable</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C75BE <span class="kw3">LDR</span> &nbsp; &nbsp; <span class="kw35">R2</span><span class="sy0">,</span> =<span class="nu0">0x19A</span></div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021C75C0 <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R0</span><span class="sy0">,</span> #<span class="nu0">0x35</span> @ <span class="st0">'5'</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C75C2 <span class="kw5">LSLS</span> &nbsp; &nbsp;<span class="kw35">R1</span><span class="sy0">,</span> <span class="kw35">R5</span><span class="sy0">,</span> #<span class="nu0">0xA</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C75C4 <span class="kw5">LSLS</span> &nbsp; &nbsp;<span class="kw35">R3</span><span class="sy0">,</span> <span class="kw35">R5</span><span class="sy0">,</span> #<span class="nu0">0xF</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C75C6 <span class="kw7">BL</span> &nbsp; &nbsp; &nbsp;StoreVolatileVariableFlag3e3</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C75CA <span class="kw3">LDR</span> &nbsp; &nbsp; <span class="kw35">R0</span><span class="sy0">,</span> <span class="br0">[</span><span class="kw35">SP</span><span class="br0">]</span></div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021C75CC <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R1</span><span class="sy0">,</span> #<span class="nu0">0x3C</span> @ <span class="st0">'&lt;'</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C75CE <span class="kw7">BL</span> &nbsp; &nbsp; &nbsp;ApplyTriggers</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C75D2 <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R0</span><span class="sy0">,</span> #<span class="nu0">0x34</span> @ <span class="st0">'4'</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C75D4 <span class="kw7">BL</span> &nbsp; &nbsp; &nbsp;ReadVolatileVariable</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C75D8 <span class="kw5">LSLS</span> &nbsp; &nbsp;<span class="kw35">R0</span><span class="sy0">,</span> <span class="kw35">R0</span><span class="sy0">,</span> #<span class="nu0">0x10</span></div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021C75DA <span class="kw5">LSRS</span> &nbsp; &nbsp;<span class="kw35">R5</span><span class="sy0">,</span> <span class="kw35">R0</span><span class="sy0">,</span> #<span class="nu0">0x10</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C75DC <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R0</span><span class="sy0">,</span> #<span class="nu0">0x35</span> @ <span class="st0">'5'</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C75DE <span class="kw7">BL</span> &nbsp; &nbsp; &nbsp;ReadVolatileVariable</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C75E2 <span class="kw5">ADDS</span> &nbsp; &nbsp;<span class="kw35">R4</span><span class="sy0">,</span> #<span class="nu0">0xB</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C75E4 <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R6</span><span class="sy0">,</span> <span class="kw35">R0</span></div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021C75E6 <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R0</span><span class="sy0">,</span> <span class="kw35">R4</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C75E8 <span class="kw7">BL</span> &nbsp; &nbsp; &nbsp;FreeVolatileVariable</div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C75EC <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R0</span><span class="sy0">,</span> <span class="kw35">R5</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C75EE <span class="kw5">MOVS</span> &nbsp; &nbsp;<span class="kw35">R1</span><span class="sy0">,</span> <span class="kw35">R6</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C75F0 <span class="kw7">BL</span> &nbsp; &nbsp; &nbsp;ApplyMod</div></li>
<li class="li2"><div class="de2">MEMORY<span class="sy0">:</span>021C75F4 <span class="kw5">LSLS</span> &nbsp; &nbsp;<span class="kw35">R0</span><span class="sy0">,</span> <span class="kw35">R0</span><span class="sy0">,</span> #<span class="nu0">0x10</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C75F6 <span class="kw5">LSRS</span> &nbsp; &nbsp;<span class="kw35">R0</span><span class="sy0">,</span> <span class="kw35">R0</span><span class="sy0">,</span> #<span class="nu0">0x10</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C75F8 <span class="kw1">ADD</span> &nbsp; &nbsp; <span class="kw35">SP</span><span class="sy0">,</span> <span class="kw35">SP</span><span class="sy0">,</span> #<span class="nu0">0xC</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C75FA <span class="kw3">POP</span> &nbsp; &nbsp; <span class="br0">{</span><span class="kw35">R4</span><span class="sy0">-</span><span class="kw35">R7</span><span class="sy0">,</span><span class="kw35">PC</span><span class="br0">}</span></div></li>
<li class="li1"><div class="de1">MEMORY<span class="sy0">:</span>021C75FA @ End of function BaseDefenseMods</div></li>
</ol>
</div>

<h3><a name="defense-base">Base value</a></h3>

<p>
Just like for the attack stat, the first step is to decide which defense stat to use and whether to apply the
active boost level. This is done by the following triggers:
</p>

<table class="sortable">
 <thead>
  <tr>
   <th width="110">Trigger address</th>
   <th>Trigger description</th>
  </tr>
 </thead>
    
 <tbody>
  <tr>
   <td>21da840</td>
   <td>Unaware: if foe has ability Unaware do not apply any Defense level boosts.</td>
  </tr>
  <tr class="a">
   <td>21d8db0</td>
   <td>Internal.</td>
  </tr>
  <tr>
   <td>21e7944</td>
   <td>This triggers is used for special moves that deal physical damage. It replaces the identifier of the base special defense stat with the one for defense.</td>
  </tr>
  <tr class="a">
   <td>21e797c</td>
   <td>Chip Away: ignore defense level boosts if foe has it.</td>
  </tr>
  <tr>
   <td>68981a0</td>
   <td>Wonder Room: has the same effect as 21e7944 but for all Pokémon on field. Will also cancel the effect of 21e7944.</td>
  </tr>
 </tbody>
</table>

<h3><a name="boost-def">Boost level</a></h3>

This works like <a href="#boost-level">attack boosts</a> except the base defense stat is used on critical hits if the boost level is positive.

<h3><a name="sand-mod">Sandstorm modifier</a></h3>

At this point, if the current weather (after triggers) is Sandstorm, the user is Rock type and the
base stat was special attack, apply a 0x1800 modifier to the current defense stat. This is done regardless
of critical hits and before any other modifier.

<h3><a name="def-mod">Defense modifiers</a></h3>

The final defense stat is altered using the following modifiers:

<table class="sortable">
 <thead>
  <tr>
   <th width="110">Trigger address</th>
   <th width="90">Modifier</th>
   <th>Trigger description</th>
  </tr>
 </thead>
    
 <tbody>
  <tr>
   <td>21d91bc</td>
   <td>0x1800</td>
   <td>If target has ability Marvel Scale, has a status problem and move is physical.</td>
  </tr>
  <tr class="a">
   <td>21d903c</td>
   <td>0x1800</td>
   <td>If ally is Cherrim and has ability Flower Gift, weather is intense sunlight and move is special.</td>
  </tr>
  <tr>
   <td>21db8f0</td>
   <td></td>
   <td>Internal.</td>
  </tr>
  <tr class="a">
   <td>21de7bc</td>
   <td>0x1800</td>
   <td>Is target is Clamperl, holds a DeepSeaScale and move is special.</td>
  </tr>
  <tr>
   <td>21de804</td>
   <td>0x1800</td>
   <td>Is target is (untransformed) Ditto, holds Metal Powder and move is physical.</td>
  </tr>
  <tr class="a">
   <td>21dfaa8</td>
   <td>0x1800</td>
   <td>If target is holding Eviolite and is not fully evolved.</td>
  </tr>
  <tr>
   <td>21de8d4</td>
   <td>0x1800</td>
   <td>If target is Latios or Latias holding a Sold Dew and move is special.</td>
  </tr>
 </tbody>
</table>

<h2><a name="special-cases">Special cases</a></h2>

The following moves do not depend on the user's attack or the target's defense and are handled by specific triggers:

<table class="sortable">
 <thead>
  <tr>
   <th width="110">Trigger address</th>
   <th>Trigger description</th>
  </tr>
 </thead>
    
 <tbody>
  <tr class="a">
   <td>21e1608</td>
   <td>Psywave: damage is always max(1, ((rand(101) + 50) * UserLevel) &divide; 100)</td>
  </tr>
  <tr>
   <td>21e15d0</td>
   <td>Night Shade: damage is always UserLevel.</td>
  </tr>
  <tr class="a">
   <td>21e1504</td>
   <td>SonicBoom: damage is always 20.</td>
  </tr>
  <tr>
   <td>21e1498</td>
   <td>Super Fang: damage is always max(1, UserHP &divide; 2).</td>
  </tr>
  <tr class="a">
   <td>21e14e0</td>
   <td>Dragon Rage: damage is always 40.</td>
  </tr>
  <tr>
   <td>21e1578</td>
   <td>Endeavor: damage is always max(1, max(0, TargetHP-UserHP)).</td>
  </tr>
  <tr class="a">
   <td>21e7c98</td>
   <td>Final Gambit: damage is always UserHP.</td>
  </tr>
  <tr>
   <td>21e0838</td>
   <td>Brick Break: cancels the effect of Reflect / Light Screen.</td>
  </tr>
  <tr class="a">
   <td>21e1978</td>
   <td>Counter: if last Pokémon to hit the user was a foe using a physical move, use double the set damage.</td>
  </tr>
  <tr>
   <td>21e19bc</td>
   <td>Mirror Coat: same as Counter for special moves.</td>
  </tr>
  <tr class="a">
   <td>21e1a00</td>
   <td>Metal Burst: same as Counter for both physical and special moves.</td>
  </tr>
  <tr>
   <td>21e3e50</td>
   <td>Bide: store energy for 2+rand(2) turns, then set damage to twice the total damage dealt to user during the charging turns.</td>
  </tr>
 </tbody>
</table>

</body>
</html>
No offense fellow GPers, but I don't trust any of you with a second check. I replaced all the noob html with chaos-approved semantic markup. Just c/p this shit and we're ready to go.

[GP 1/2] [GP 2/2]

uploaded. lock/move pls
 

Nexus

Forever the Recusant
is a Site Content Manager Alumnusis a Senior Staff Member Alumnusis a Contributor Alumnus
hey NixHex, you're not a C&C mod do not upload anything in C&C or any of its subforums k thnx.
 

Users Who Are Viewing This Thread (Users: 1, Guests: 0)

Top