#ifndef PRL_IAR_FI_H
#define PRL_IAR_FI_H

/* Depending on the code that the compiler maker uses within the assert macro,
 * QAC may issue warnings. It is also possible that when the NDEBUG macro is used
 * to suppress the assertion code, QAC may issue a "no side-effects" warning.
 * To eliminate these, we turn off all warnings for the assert macro.
 */
#pragma PRQA_MACRO_MESSAGES_OFF "assert"


/* Any other items that may be required in a "force-include" file should be placed below. */

/* To prevent #error in IAR Systems/Embedded Workbench\ 8.2/arm/inc/c/stdarg.h */
#ifdef __ICCARM__
#define __ICCARM_OLD_DEFINED_VAARGS__
#endif

#if __QAC_MAJOR__ < 96
/* C99 */
#define _Pragma _ignore_paren
#endif

#if __QAC_MAJOR__ < 95
#define __ALIGNOF__ __alignof__
#else
#define __ALIGNOF__ _Alignof
#endif

#if __QAC_MAJOR__ < 95
#define __noreturn
#else
#define __noreturn _Noreturn
#endif

/* Dedicated section operators */
void *__section_begin(char const * section);
void *__section_end(char const * section);
PRQA_SIZE_T __section_size(char const * section);

#ifdef __ICCARM__

#if __VER__ >= 8042001
/* deal with gnu like stdarg.h introduced in 8.42.1 */
typedef void *           __builtin_va_list;
#define                  __builtin_va_start(ap, parmN)  ((void)((ap)= &(parmN)))
#define                  __builtin_va_arg(ap, type)     (*(type*)(ap))
#define                  __builtin_va_end(ap)           ((void)((ap)=0))
#define                  va_copy(d,s)
#pragma PRQA_MACRO_MESSAGES_OFF "va_end"
#pragma PRQA_MACRO_MESSAGES_OFF "__va_copy"
#endif

#pragma PRQA_NO_RETURN __aeabi_assert

#define __absolute
#define __arm
#define __big_endian
#define __cmse_nonsecure_call
#define __cmse_nonsecure_entry
#define __fiq
#define __interwork
#define __intrinsic
#define __irq
#define __little_endian
#define __nested
#define __no_alloc
#define __no_alloc16
#define __no_alloc_str
#define __no_alloc_str16
#define __no_init
#define __packed
#define __pcrel
#define __ramfunc
#define __ro_placement
#define __root
#define __sbrel
#define __stackless
#define __swi
#define __task
#define __thumb
#define __weak

__FTF float __aeabi_fadd ( float x, float y );
__FTF float __aeabi_fsub ( float x, float y );
__FTF float __aeabi_frsub( float x, float y );
__FTF float __aeabi_fmul ( float x, float y );
__FTF float __aeabi_fdiv ( float x, float y );
__FTF int __aeabi_fcmpeq( float x, float y );
__FTF int __aeabi_fcmplt( float x, float y );
__FTF int __aeabi_fcmple( float x, float y );
__FTF int __aeabi_fcmpgt( float x, float y );
__FTF int __aeabi_fcmpge( float x, float y );
__FTF int __aeabi_fcmpun( float x, float y );
__FTF void __aeabi_cfcmpeq( float x, float y );
__FTF void __aeabi_cfcmple( float x, float y );
__FTF void __aeabi_cfrcmple( float x, float y );
__FTF float __aeabi_i2f( int x );
__FTF float __aeabi_ui2f( unsigned int x );
__FTF int __aeabi_f2iz( float x );
__FTF unsigned int __aeabi_f2uiz( float x );
__FTF float __aeabi_l2f( long long x );
__FTF float __aeabi_ul2f( unsigned long long x );
__FTF long long __aeabi_f2lz( float x );
__FTF unsigned long long __aeabi_f2ulz( float x );
__FTF double __aeabi_dadd( double x, double y );
__FTF double __aeabi_dsub( double x, double y );
__FTF double __aeabi_drsub( double x, double y );
__FTF double __aeabi_dmul( double x, double y );
__FTF double __aeabi_ddiv( double x, double y );
__FTF int __aeabi_dcmpeq( double x, double y );
__FTF int __aeabi_dcmplt( double x, double y );
__FTF int __aeabi_dcmple( double x, double y );
__FTF int __aeabi_dcmpge( double x, double y );
__FTF int __aeabi_dcmpgt( double x, double y );
__FTF int __aeabi_dcmpun( double x, double y );
__FTF void __aeabi_cdcmpeq( double x, double y );
__FTF void __aeabi_cdcmple( double x, double y );
__FTF void __aeabi_cdrcmple( double x, double y );
__FTF double __aeabi_i2d( int x );
__FTF double __aeabi_ui2d( unsigned int x );
__FTF int __aeabi_d2iz( double d );
__FTF unsigned int __aeabi_d2uiz( double d );
__FTF double __aeabi_f2d( float f );
__FTF float __aeabi_d2f( double d );
__FTF double __aeabi_l2d( long long x );
__FTF double __aeabi_ul2d( unsigned long long x );
__FTF long long __aeabi_d2lz( double d );
__FTF unsigned long long __aeabi_d2ulz( double d );
__FTF __fp16 __aeabi_f2h( float f );
__FTF float  __aeabi_h2f( __fp16 f );
__FTF __fp16 __aeabi_d2h( double d );
__FTC long long __aeabi_lmul(long long, long long);
__FTC long long __aeabi_llsl(long long, int);
__FTC long long __aeabi_llsr(long long, int);
__FTC long long __aeabi_lasr(long long, int);
__FTC int __aeabi_lcmp(long long, long long);
__FTC int __aeabi_ulcmp(unsigned long long, unsigned long long);
__EFF_NENW1 __FTC int __aeabi_uread4(void *address);
__EFF_NENR1 __FTC int __aeabi_uwrite4(int value, void *address);
__EFF_NENW1 __FTC long long __aeabi_uread8(void *address);
__EFF_NENR1 __FTC long long __aeabi_uwrite8(long long value, void *address);
__EFF_NENR1NW2 __FTC void __aeabi_memcpy8 (void *d, const void *src, __SIZE_T_TYPE__ n);
__EFF_NENR1NW2 __FTC void __aeabi_memcpy4 (void *d, const void *src, __SIZE_T_TYPE__ n);
__EFF_NENR1NW2 __FTC void __aeabi_memcpy  (void *d, const void *src, __SIZE_T_TYPE__ n);
__EFF_NENR1NW2 __FTC void __aeabi_memmove8(void *d, const void *src, __SIZE_T_TYPE__ n);
__EFF_NENR1NW2 __FTC void __aeabi_memmove4(void *d, const void *src, __SIZE_T_TYPE__ n);
__EFF_NENR1NW2 __FTC void __aeabi_memmove (void *d, const void *src, __SIZE_T_TYPE__ n);
__EFF_NENR1 __FTC void __aeabi_memset8 (void *d, __SIZE_T_TYPE__ n, int c);
__EFF_NENR1 __FTC void __aeabi_memset4 (void *d, __SIZE_T_TYPE__ n, int c);
__EFF_NENR1 __FTC void __aeabi_memset  (void *d, __SIZE_T_TYPE__ n, int c);
__EFF_NENR1 __FTC void __aeabi_memclr8 (void *d, __SIZE_T_TYPE__ n);
__EFF_NENR1 __FTC void __aeabi_memclr4 (void *d, __SIZE_T_TYPE__ n);
__EFF_NENR1 __FTC void __aeabi_memclr  (void *d, __SIZE_T_TYPE__ n);
__FT unsigned int __get_SP( void );
__FT unsigned int __get_LR( void );
__FT unsigned int __get_PC( void );
__FT void __set_SP( unsigned int );
__FT void __set_LR( unsigned int );
__FT unsigned int __get_return_address( void );
__intrinsic int __semihosting( unsigned int id, void *p );
__intrinsic int __semihosting2( unsigned int id, unsigned int id2, void *p );
__EFF_XXX __FT void *__aeabi_read_tp(void); /* return the value of $tp */
#ifndef __iar_fp2bits32
__EFF_XXX __FT unsigned int __iar_fp2bits32(float);
#endif
#ifndef __iar_fp2bits64
__EFF_XXX __FT unsigned long long __iar_fp2bits64(double);
#endif
#ifndef __iar_fpgethi64
__EFF_XXX __FT unsigned int __iar_fpgethi64(double);
#endif
__EFF_XXX __FT unsigned int __iar_fpgetlow64(double);
__EFF_XXX __FT double __iar_fpsethi64(double, unsigned int);
__EFF_XXX __FT double __iar_fpsetlow64(double, unsigned int);
__EFF_XXX __FT float __iar_bits2fp32(unsigned int);
__EFF_XXX __FT double __iar_bits2fp64(unsigned long long);
__FT __noreturn void __stack_chk_fail(void);
#endif /* __ICCARM__ */

#ifdef __ICCAVR__
#pragma PRQA_NO_RETURN __taabi_assert

#define __eeprom
#define __ext_io
#define __far
#define __farflash
#define __farfunc
#define __flash
#define __generic
#define __huge
#define __hugeflash
#define __interrupt
#define __intrinsic
#define __io
#define __monitor
#define __near
#define __nearfunc
#define __nested
#define __no_alloc
#define __no_alloc16
#define __no_alloc_str
#define __no_alloc_str16
#define __no_init
#define __no_runtime_init
#define __raw
#define __regvar
#define __root
#define __ro_placement
#define __task
#define __tiny
#define __tinyflash
#define __version_1
#define __version_2
#define __version_4
#define __x
#define __x_z
#define __z
#define __z_x

#ifdef __TINY_AVR__
__intrinsic   signed int  __reverse_1(  signed int );
__intrinsic unsigned int  __reverse_2(unsigned int );
__intrinsic void __farflash  * __reverse_3(void __farflash  *);
__intrinsic void __hugeflash * __reverse_4(void __hugeflash *);
__intrinsic void __far  * __reverse_5(void __far  *);
__intrinsic void __huge * __reverse_6(void __huge *);
__intrinsic   signed long __reverse_7(  signed long);
__intrinsic unsigned long __reverse_8(unsigned long);
#else
__intrinsic   signed int  __reverse_1(  signed int );
__intrinsic   unsigned int __reverse_2(unsigned int );
__intrinsic void __farflash  * __reverse_3(void __farflash  *);
__intrinsic void __hugeflash * __reverse_4(void __hugeflash *);
__intrinsic void __far  * __reverse_5(void __far  *);
__intrinsic void __huge * __reverse_6(void __huge *);
__intrinsic signed long   __reverse_7(  signed long);
__intrinsic unsigned long __reverse_8(unsigned long);
__intrinsic __x double __dadd(double, double const* );
__intrinsic __x double __dsub(double, double const* );
__intrinsic __x double __dmul(double, double const* );
__intrinsic __x double __ddiv(double, double const* );
__intrinsic __x unsigned char __dcmp_ge(double, double const* );
__intrinsic __x unsigned char __dcmp_lt(double, double const* );
__intrinsic __x unsigned char __dcmp_eq(double, double const* );
__intrinsic __x unsigned char __dcmp_ne(double, double const* );
__intrinsic __z unsigned char __ullcmp_ge(unsigned long long, unsigned long long const* );
__intrinsic __z unsigned char __ullcmp_lt(unsigned long long, unsigned long long const* );
__intrinsic __z unsigned char __ullcmp_eq(unsigned long long, unsigned long long const* );
__intrinsic __z unsigned char __ullcmp_ne(unsigned long long, unsigned long long const* );
__intrinsic __z unsigned char __sllcmp_ge(signed long long, signed long long const* );
__intrinsic __z unsigned char __sllcmp_lt(signed long long, signed long long const* );
__intrinsic __z unsigned char __sllcmp_eq(signed long long, signed long long const* );
__intrinsic __z unsigned char __sllcmp_ne(signed long long, signed long long const* );
__intrinsic __z unsigned long long __ulland(unsigned long long, unsigned long long const* );
__intrinsic __z unsigned long long __ullior(unsigned long long, unsigned long long const* );
__intrinsic __z unsigned long long __ullxor(unsigned long long, unsigned long long const* );
__intrinsic __z unsigned long long __ulladd(unsigned long long, unsigned long long const* );
__intrinsic __z unsigned long long __ullsub(unsigned long long, unsigned long long const* );
__intrinsic __z signed long long __slland(signed long long, signed long long const* );
__intrinsic __z signed long long __sllior(signed long long, signed long long const* );
__intrinsic __z signed long long __sllxor(signed long long, signed long long const* );
__intrinsic __z signed long long __slladd(signed long long, signed long long const* );
__intrinsic __z signed long long __sllsub(signed long long, signed long long const* );
__intrinsic __x unsigned long long __ullmul(unsigned long long, unsigned long long const* );
__intrinsic __x unsigned long long __ulldiv(unsigned long long, unsigned long long const* );
__intrinsic __x unsigned long long __ullmod(unsigned long long, unsigned long long const* );
__intrinsic __x signed long long __sllmul(signed long long, signed long long const* );
__intrinsic __x signed long long __slldiv(signed long long, signed long long const* );
__intrinsic __x signed long long __sllmod(signed long long, signed long long const* );
#endif /* __TINY_AVR__ */
#endif /* __ICCAVR__ */

#ifdef __ICCRL78__
#pragma PRQA_NO_RETURN __rl78abi_assert

#define __callt
#define __far
#define __far_func
#define __huge
#define __interrupt
#define __intrinsic
#define __monitor
#define __near
#define __near_func
#define __no_alloc
#define __no_alloc16
#define __no_alloc_str
#define __no_alloc_str16
#define __no_bit_access
#define __no_init
#define __no_save
#define __packed
#define __root
#define __ro_placement
#define __saddr
#define __sfr
#define __v1_call
#define __v2_call
#define __weak

__intrinsic __FAR_RUNTIME_ATTRIBUTE__ __v1_call long __iar_ladd (long a, long b);
__intrinsic __FAR_RUNTIME_ATTRIBUTE__ __v1_call long __iar_lsub (long a, long b);
__intrinsic __FAR_RUNTIME_ATTRIBUTE__ __v2_call long _COM_lmul  (long a, long b);
__intrinsic __FAR_RUNTIME_ATTRIBUTE__ __v2_call long _COM_sldiv (long a, long b);
__intrinsic __FAR_RUNTIME_ATTRIBUTE__ __v2_call long _COM_uldiv (long a, long b);
__intrinsic __FAR_RUNTIME_ATTRIBUTE__ __v2_call long _COM_slrem (long a, long b);
__intrinsic __FAR_RUNTIME_ATTRIBUTE__ __v2_call long _COM_ulrem (long a, long b);
__intrinsic __FAR_RUNTIME_ATTRIBUTE__ __v1_call char _CmpEq32   (long a, long b);
__intrinsic __FAR_RUNTIME_ATTRIBUTE__ __v1_call char _CmpNe32   (long a, long b);
__intrinsic __FAR_RUNTIME_ATTRIBUTE__ __v1_call char _CmpGes32  (long a, long b);
__intrinsic __FAR_RUNTIME_ATTRIBUTE__ __v1_call char _CmpGeu32  (long a, long b);
__intrinsic __FAR_RUNTIME_ATTRIBUTE__ __v1_call char _CmpLts32  (long a, long b);
__intrinsic __FAR_RUNTIME_ATTRIBUTE__ __v1_call char _CmpLtu32  (long a, long b);
__intrinsic __FAR_RUNTIME_ATTRIBUTE__ __v1_call long __iar_land (long a, long b);
__intrinsic __FAR_RUNTIME_ATTRIBUTE__ __v1_call long __iar_lxor (long a, long b);
__intrinsic __FAR_RUNTIME_ATTRIBUTE__ __v1_call long __iar_lior (long a, long b);
__intrinsic __FAR_RUNTIME_ATTRIBUTE__ __v2_call float _COM_fadd (float a, float b);
__intrinsic __FAR_RUNTIME_ATTRIBUTE__ __v2_call float _COM_fsub (float a, float b);
__intrinsic __FAR_RUNTIME_ATTRIBUTE__ __v2_call float _COM_fmul (float a, float b);
__intrinsic __FAR_RUNTIME_ATTRIBUTE__ __v2_call float _COM_fdiv (float a, float b);
__intrinsic __FAR_RUNTIME_ATTRIBUTE__ __v2_call float __iar_fmex(float a, float b);
__intrinsic __FAR_RUNTIME_ATTRIBUTE__ __v2_call float __iar_fdex(float a, float b);
__intrinsic __FAR_RUNTIME_ATTRIBUTE__ __v2_call signed char _COM_feq (float a, float b);
__intrinsic __FAR_RUNTIME_ATTRIBUTE__ __v2_call signed char _COM_fne (float a, float b);
__intrinsic __FAR_RUNTIME_ATTRIBUTE__ __v2_call signed char _COM_fge (float a, float b);
__intrinsic __FAR_RUNTIME_ATTRIBUTE__ __v2_call signed char _COM_flt (float a, float b);
__intrinsic __FAR_RUNTIME_ATTRIBUTE__ __v2_call signed char _COM_fgt (float a, float b);
__intrinsic __FAR_RUNTIME_ATTRIBUTE__ __v2_call signed char _COM_fle (float a, float b);
__intrinsic __FAR_RUNTIME_ATTRIBUTE__ __v1_call double    __iari_dneg(void __near *p, double a);
__intrinsic __FAR_RUNTIME_ATTRIBUTE__ __v1_call double    __iar_dneg(void __near *p, double a);
__intrinsic __FAR_RUNTIME_ATTRIBUTE__ __v1_call char __iar_deq(double __near const *p, double __near const *q);
__intrinsic __FAR_RUNTIME_ATTRIBUTE__ __v1_call char __iar_dne(double __near const *p, double __near const *q);
__intrinsic __FAR_RUNTIME_ATTRIBUTE__ __v1_call char __iar_dlt(double __near const *p, double __near const *q);
__intrinsic __FAR_RUNTIME_ATTRIBUTE__ __v1_call char __iar_dge(double __near const *p, double __near const *q);
__intrinsic __FAR_RUNTIME_ATTRIBUTE__ __v2_call double __near * __iar_dadd(double __near const *p, double __near const *q, double __near const *r);
__intrinsic __FAR_RUNTIME_ATTRIBUTE__ __v2_call double __near * __iar_dsub(double __near const *p, double __near const *q, double __near const *r);
__intrinsic __FAR_RUNTIME_ATTRIBUTE__ __v2_call double __near * __iar_dmul(double __near const *p, double __near const *q, double __near const *r);
__intrinsic __FAR_RUNTIME_ATTRIBUTE__ __v2_call double __near * __iar_ddiv(double __near const *p, double __near const *q, double __near const *r);
__intrinsic __FAR_RUNTIME_ATTRIBUTE__ __v2_call double __near * __iar_dmex(double __near const *p, double __near const *q, double r);
__intrinsic __FAR_RUNTIME_ATTRIBUTE__ __v2_call double __near * __iar_ddex(double __near const *p, double __near const *q, double r);
__intrinsic __FAR_RUNTIME_ATTRIBUTE__ __v2_call long   __iar_dtosl(double __near const *p);
__intrinsic __FAR_RUNTIME_ATTRIBUTE__ __v2_call long   __iar_dtoul(double __near const *p);
__intrinsic __FAR_RUNTIME_ATTRIBUTE__ __v2_call long long __near * __iar_dtosll(long long __near const *p, double __near const *q);
__intrinsic __FAR_RUNTIME_ATTRIBUTE__ __v2_call long long __near * __iar_dtoull(long long __near const *p, double __near const *q);
__intrinsic __FAR_RUNTIME_ATTRIBUTE__ __v2_call float  __iar_dtof(double __near const *p);
__intrinsic __FAR_RUNTIME_ATTRIBUTE__ __v2_call double __near * __iar_sltod(double __near const *p, long q);
__intrinsic __FAR_RUNTIME_ATTRIBUTE__ __v2_call double __near * __iar_ultod(double __near const *p, long q);
__intrinsic __FAR_RUNTIME_ATTRIBUTE__ __v2_call double __near * __iar_slltod(double __near const *p, long long __near const *q);
__intrinsic __FAR_RUNTIME_ATTRIBUTE__ __v2_call double __near * __iar_ulltod(double __near const *p, long long __near const *q);
__intrinsic __FAR_RUNTIME_ATTRIBUTE__ __v2_call double __near * __iar_ftod(double __near const *p, float q);
__intrinsic __FAR_RUNTIME_ATTRIBUTE__ __v2_call signed char _COM_deq (double a, double b);
__intrinsic __FAR_RUNTIME_ATTRIBUTE__ __v2_call signed char _COM_dne (double a, double b);
__intrinsic __FAR_RUNTIME_ATTRIBUTE__ __v2_call signed char _COM_dge (double a, double b);
__intrinsic __FAR_RUNTIME_ATTRIBUTE__ __v2_call signed char _COM_dlt (double a, double b);
__intrinsic __FAR_RUNTIME_ATTRIBUTE__ __v2_call signed char _COM_dgt (double a, double b);
__intrinsic __FAR_RUNTIME_ATTRIBUTE__ __v2_call signed char _COM_dle (double a, double b);
__intrinsic __FAR_RUNTIME_ATTRIBUTE__ __v2_call signed char _COM_dunordered (double a, double b);
__intrinsic __FAR_RUNTIME_ATTRIBUTE__ __v1_call long long __near * _Add64 (long long __near const *p, long long __near const *q, long long __near const *r);
__intrinsic __FAR_RUNTIME_ATTRIBUTE__ __v1_call long long __near * _Sub64 (long long __near const *p, long long __near const *q, long long __near const *r);
__intrinsic __FAR_RUNTIME_ATTRIBUTE__ __v1_call long long __near * _Mul64 (long long __near const *p, long long __near const *q, long long __near const *r);
__intrinsic __FAR_RUNTIME_ATTRIBUTE__ __v1_call long long __near * _Divs64 (long long __near const *p, long long __near const *q, long long __near const *r);
__intrinsic __FAR_RUNTIME_ATTRIBUTE__ __v1_call long long __near * _Divu64 (long long __near const *p, long long __near const *q, long long __near const *r);
__intrinsic __FAR_RUNTIME_ATTRIBUTE__ __v1_call long long __near * _Mods64 (long long __near const *p, long long __near const *q, long long __near const *r);
__intrinsic __FAR_RUNTIME_ATTRIBUTE__ __v1_call long long __near * _Modu64 (long long __near const *p, long long __near const *q, long long __near const *r);
__intrinsic __FAR_RUNTIME_ATTRIBUTE__ __v1_call long long __near * _And64 (long long __near const *p, long long __near const *q, long long __near const *r);
__intrinsic __FAR_RUNTIME_ATTRIBUTE__ __v1_call long long __near * _Ior64 (long long __near const *p, long long __near const *q, long long __near const *r);
__intrinsic __FAR_RUNTIME_ATTRIBUTE__ __v1_call long long __near * _Xor64 (long long __near const *p, long long __near const *q, long long __near const *r);
__intrinsic __FAR_RUNTIME_ATTRIBUTE__ __v1_call long long __near * _Not64 (long long __near const *p, long long __near const *q);
__intrinsic __FAR_RUNTIME_ATTRIBUTE__ __v1_call long long __near * _Neg64 (long long __near const *p, long long __near const *q);
__intrinsic __FAR_RUNTIME_ATTRIBUTE__ __v1_call long long __near * _Lsl64 (long long __near const *p, long long __near const *q, unsigned char r);
__intrinsic __FAR_RUNTIME_ATTRIBUTE__ __v1_call long long __near * _Asr64 (long long __near const *p, long long __near const *q, unsigned char r);
__intrinsic __FAR_RUNTIME_ATTRIBUTE__ __v1_call long long __near * _Lsr64 (long long __near const *p, long long __near const *q, unsigned char r);
__intrinsic __FAR_RUNTIME_ATTRIBUTE__ __v1_call char _CmpEq64 (long long __near const *p, long long __near const *q);
__intrinsic __FAR_RUNTIME_ATTRIBUTE__ __v1_call char _CmpNe64 (long long __near const *p, long long __near const *q);
__intrinsic __FAR_RUNTIME_ATTRIBUTE__ __v1_call char _CmpLts64 (long long __near const *p, long long __near const *q);
__intrinsic __FAR_RUNTIME_ATTRIBUTE__ __v1_call char _CmpGes64 (long long __near const *p, long long __near const *q);
__intrinsic __FAR_RUNTIME_ATTRIBUTE__ __v1_call char _CmpLtu64 (long long __near const *p, long long __near const *q);
__intrinsic __FAR_RUNTIME_ATTRIBUTE__ __v1_call char _CmpGeu64 (long long __near const *p, long long __near const *q);
__intrinsic __FAR_RUNTIME_ATTRIBUTE__ __v1_call long long __near * _L2LLS (long long __near const *p, signed long q);
__intrinsic __FAR_RUNTIME_ATTRIBUTE__ __v1_call long long __near * _L2LLU (long long __near const *p, unsigned long q);
__intrinsic __FAR_RUNTIME_ATTRIBUTE__ __v1_call long long __near * _F2LLS (long long __near const *p, float q);
__intrinsic __FAR_RUNTIME_ATTRIBUTE__ __v1_call long long __near * _F2LLU (long long __near const *p, float q);
__intrinsic __FAR_RUNTIME_ATTRIBUTE__ __v1_call long _LLS2L (long long __near const *p);
__intrinsic __FAR_RUNTIME_ATTRIBUTE__ __v1_call long _LLU2L (long long __near const *p);
__intrinsic __FAR_RUNTIME_ATTRIBUTE__ __v1_call short _LLS2S (long long __near const *p);
__intrinsic __FAR_RUNTIME_ATTRIBUTE__ __v1_call short _LLU2S (long long __near const *p);
__intrinsic __FAR_RUNTIME_ATTRIBUTE__ __v1_call char _LLU2C (long long __near const *p);
__intrinsic __FAR_RUNTIME_ATTRIBUTE__ __v1_call float _LLS2F (long long __near const *p);
__intrinsic __FAR_RUNTIME_ATTRIBUTE__ __v1_call float _LLU2F (long long __near const *p);
__intrinsic void __IAR_SignExtend( long long __near *d, long long const __near *p, char bit );
__intrinsic __noreturn void __stack_chk_fail(void);
#endif /* __ICCRL78__ */

#ifdef __ICCV850__
#pragma PRQA_NO_RETURN __taabi_assert

#define __brel
#define __brel23
#define __callt
#define __flat
#define __huge
#define __interrupt
#define __intrinsic
#define __monitor
#define __near
#define __no_bit_access
#define __no_init
#define __root
#define __saddr
#define __syscall
#define __task
#define __trap
#endif /* __ICCV850__ */

#ifdef __ICCSTM8__
#pragma PRQA_NO_RETURN __stm8abi_assert

#define __eeprom
#define __far
#define __far_func
#define __huge
#define __huge_func
#define __interrupt
#define __intrinsic
#define __monitor
#define __near
#define __near_func
#define __no_init
#define __ramfunc
#define __root
#define __task
#define __tiny
#define __weak

typedef int __istate_t;

void __disable_interrupt(void);
void __enable_interrupt(void);
__istate_t __get_interrupt_state(void);
void __halt(void);
void __no_operation(void);
void __set_interrupt_state(__istate_t);
void __trap(void);
void __wait_for_exception(void);
void __wait_for_interrupt(void);
#endif /* __ICCSTM8__ */

#ifdef __ICC8051__
#pragma PRQA_NO_RETURN __8051abi_assert

#define __banked_func
#define __banked_func_ext2
#define __bdata
#define __bit
#define __code
#define __data
#define __data_overlay
#define __ext_stack_reentrant
#define __far
#define __far_code
#define __far_func
#define __far_rom
#define __far22
#define __far22_code
#define __far22_rom
#define __generic
#define __huge
#define __huge_code
#define __huge_rom
#define __idata
#define __idata_overlay
#define __idata_reentrant
#define __ixdata
#define __interrupt
#define __intrinsic
#define __monitor
#define __near_func
#define __no_init
#define __overlay_near_func
#define __pdata
#define __pdata_reentrant
#define __root
#define __sfr
#define __task
#define __xdata
#define __xdata_reentrant
#define __xdata_rom

typedef int __istate_t;

void __disable_interrupt(void);
void __enable_interrupt(void);
__istate_t __get_interrupt_state(void);
void __no_operation(void);
char __parity(char);
void __set_interrupt_state(__istate_t);
int __tbac(int bitvar);
#endif /* __ICC8051__ */

#else
#error "Multiple include"
#endif  /* ifndef PRL_IAR_FI_H */

