title: What is the jmpq command doing in this example
body: <p>We are using gdb debugger to read assembly functions.</p>
  
  <p>In assembly, we have the following instructions:
  <code>mov    0xc(%rsp),%eax</code>
  <code>jmpq   *0x402390(,%rax,8)</code></p>
  
  <p>At memory location <code>*0x402390</code> we have the value <code>0x8e</code>. In register rax, we have the second integer input for this particular function (could use variable y).</p>
  
  <p>From our analysis, we have deduced that this function takes in three variables <code>(x, y, z)</code> and that they can be found at memory location <code>(rsp)</code>, <code>(rsp + 8)</code>, <code>(rsp + 12)</code> respectively.</p>
  
  <p>We would like to know what is going on in <code>jmpq   *0x402390(,%rax,8)</code>.
  Is it jumping to the instruction at <code>(0x8e + rax*8)</code>? If so, how can we find out what that instruction is called?</p>
  
  <p>This is the full dump of assembler code for the function phase_3:</p>
  
  <p><img src="https://i.stack.imgur.com/GU2IQ.png" alt="Full assembly function"></p>