code: def take_function_register(self, rtype = SharedData.TYPES.NO_TYPE):
          
          reg = SharedData.FUNCTION_REGISTER
          if reg not in self.free_registers:
              self.error("function register already taken")
          self.free_registers.remove(reg)
          self.used_registers.append(reg)
          self.symtab.set_type(reg, rtype)
          return reg
docs: Reserves register for function return value and sets its type