Artifact 5ef67634e041a697e6c0df87892d3ea3983f60dc:


0000: 0a 0a 0a 0a 0a 0a 0a 0a 0a 0a 0a 0a 0a 0a 0a 0a  ................
0010: 0a 0a 0a 0a 0a 0a 0a 0a 0a 0a 0a 0a 0a 0a 0a 0a  ................
0020: 0a 0a 0a 0a 0a 0a 0a 0a 0a 0a 0a 0a 0a 0a 0a 0a  ................
0030: 0a 0a 0a 0a 0a 0a 0a 0a 0a 0a 0a 0a 0a 0a 0a 0a  ................
0040: 0a 0a 0a 0a 0a 0a 0a 0a 0a 0a 0a 0a 0a 0a 0a 0a  ................
0050: 0a 0a 0a 0a 0a 0a 0a 0a 0a 0a 0a 0a 0a 0a 0a 0a  ................
0060: 0a 0a 0a 0a 0a 0a 0a 0a 0a 0a 0a 0a 0a 0a 0a 0a  ................
0070: 0a 0a 0a 0a 0a 0a 0a 23 69 66 64 65 66 20 5f 4d  .......#ifdef _M
0080: 53 43 5f 56 45 52 0a 23 64 65 66 69 6e 65 20 43  SC_VER.#define C
0090: 28 65 6e 74 72 79 70 6f 69 6e 74 29 20 65 6e 74  (entrypoint) ent
00a0: 72 79 70 6f 69 6e 74 0a 23 64 65 66 69 6e 65 20  rypoint.#define 
00b0: 4c 28 6c 61 62 65 6c 29 20 4c 23 23 6c 61 62 65  L(label) L##labe
00c0: 6c 0a 23 65 6c 73 65 0a 23 69 66 64 65 66 20 41  l.#else.#ifdef A
00d0: 53 4d 5f 55 4e 44 45 52 53 43 4f 52 45 0a 23 64  SM_UNDERSCORE.#d
00e0: 65 66 69 6e 65 20 43 28 65 6e 74 72 79 70 6f 69  efine C(entrypoi
00f0: 6e 74 29 20 5f 23 23 65 6e 74 72 79 70 6f 69 6e  nt) _##entrypoin
0100: 74 0a 23 64 65 66 69 6e 65 20 4c 28 6c 61 62 65  t.#define L(labe
0110: 6c 29 20 4c 23 23 6c 61 62 65 6c 0a 23 65 6c 73  l) L##label.#els
0120: 65 0a 23 64 65 66 69 6e 65 20 43 28 65 6e 74 72  e.#define C(entr
0130: 79 70 6f 69 6e 74 29 20 65 6e 74 72 79 70 6f 69  ypoint) entrypoi
0140: 6e 74 0a 23 64 65 66 69 6e 65 20 4c 28 6c 61 62  nt.#define L(lab
0150: 65 6c 29 20 2e 4c 23 23 6c 61 62 65 6c 0a 23 65  el) .L##label.#e
0160: 6e 64 69 66 0a 23 65 6e 64 69 66 0a 0a 0a 0a 0a  ndif.#endif.....
0170: 0a 23 69 66 64 65 66 20 5f 4d 53 43 5f 56 45 52  .#ifdef _MSC_VER
0180: 0a 23 64 65 66 69 6e 65 20 49 4e 54 45 4c 5f 53  .#define INTEL_S
0190: 59 4e 54 41 58 0a 23 65 6c 73 65 0a 0a 0a 0a 23  YNTAX.#else....#
01a0: 69 66 64 65 66 20 41 53 4d 5f 55 4e 44 45 52 53  ifdef ASM_UNDERS
01b0: 43 4f 52 45 0a 23 64 65 66 69 6e 65 20 42 53 44  CORE.#define BSD
01c0: 5f 53 59 4e 54 41 58 0a 23 65 6c 73 65 0a 23 64  _SYNTAX.#else.#d
01d0: 65 66 69 6e 65 20 45 4c 46 5f 53 59 4e 54 41 58  efine ELF_SYNTAX
01e0: 0a 23 65 6e 64 69 66 0a 23 65 6e 64 69 66 0a 0a  .#endif.#endif..
01f0: 23 69 66 20 64 65 66 69 6e 65 64 20 28 42 53 44  #if defined (BSD
0200: 5f 53 59 4e 54 41 58 29 20 7c 7c 20 64 65 66 69  _SYNTAX) || defi
0210: 6e 65 64 20 28 45 4c 46 5f 53 59 4e 54 41 58 29  ned (ELF_SYNTAX)
0220: 0a 23 64 65 66 69 6e 65 20 52 28 72 29 20 25 72  .#define R(r) %r
0230: 0a 23 64 65 66 69 6e 65 20 4e 55 4d 28 6e 29 20  .#define NUM(n) 
0240: 24 23 23 6e 0a 23 64 65 66 69 6e 65 20 41 44 44  $##n.#define ADD
0250: 52 28 61 29 20 24 23 23 61 0a 23 64 65 66 69 6e  R(a) $##a.#defin
0260: 65 20 58 31 0a 23 64 65 66 69 6e 65 20 58 32 0a  e X1.#define X2.
0270: 23 64 65 66 69 6e 65 20 58 34 0a 23 64 65 66 69  #define X4.#defi
0280: 6e 65 20 58 38 0a 23 64 65 66 69 6e 65 20 4d 45  ne X8.#define ME
0290: 4d 28 62 61 73 65 29 28 52 28 62 61 73 65 29 29  M(base)(R(base))
02a0: 0a 23 64 65 66 69 6e 65 20 4d 45 4d 5f 44 49 53  .#define MEM_DIS
02b0: 50 28 62 61 73 65 2c 64 69 73 70 6c 61 63 65 6d  P(base,displacem
02c0: 65 6e 74 29 64 69 73 70 6c 61 63 65 6d 65 6e 74  ent)displacement
02d0: 28 52 28 62 61 73 65 29 29 0a 23 64 65 66 69 6e  (R(base)).#defin
02e0: 65 20 4d 45 4d 5f 49 4e 44 45 58 28 62 61 73 65  e MEM_INDEX(base
02f0: 2c 69 6e 64 65 78 29 28 52 28 62 61 73 65 29 2c  ,index)(R(base),
0300: 52 28 69 6e 64 65 78 29 29 0a 23 64 65 66 69 6e  R(index)).#defin
0310: 65 20 4d 45 4d 5f 53 48 49 4e 44 45 58 28 62 61  e MEM_SHINDEX(ba
0320: 73 65 2c 69 6e 64 65 78 2c 73 69 7a 65 29 28 52  se,index,size)(R
0330: 28 62 61 73 65 29 2c 52 28 69 6e 64 65 78 29 2c  (base),R(index),
0340: 73 69 7a 65 29 0a 23 64 65 66 69 6e 65 20 4d 45  size).#define ME
0350: 4d 5f 44 49 53 50 5f 53 48 49 4e 44 45 58 30 28  M_DISP_SHINDEX0(
0360: 64 69 73 70 6c 61 63 65 6d 65 6e 74 2c 69 6e 64  displacement,ind
0370: 65 78 2c 73 69 7a 65 29 64 69 73 70 6c 61 63 65  ex,size)displace
0380: 6d 65 6e 74 28 2c 52 28 69 6e 64 65 78 29 2c 73  ment(,R(index),s
0390: 69 7a 65 29 0a 23 64 65 66 69 6e 65 20 4d 45 4d  ize).#define MEM
03a0: 5f 44 49 53 50 5f 53 48 49 4e 44 45 58 28 62 61  _DISP_SHINDEX(ba
03b0: 73 65 2c 64 69 73 70 6c 61 63 65 6d 65 6e 74 2c  se,displacement,
03c0: 69 6e 64 65 78 2c 73 69 7a 65 29 64 69 73 70 6c  index,size)displ
03d0: 61 63 65 6d 65 6e 74 28 52 28 62 61 73 65 29 2c  acement(R(base),
03e0: 52 28 69 6e 64 65 78 29 2c 73 69 7a 65 29 0a 23  R(index),size).#
03f0: 64 65 66 69 6e 65 20 49 4e 44 49 52 28 76 61 6c  define INDIR(val
0400: 75 65 29 2a 76 61 6c 75 65 0a 23 64 65 66 69 6e  ue)*value.#defin
0410: 65 20 49 4e 53 4e 43 4f 4e 43 28 6d 6e 65 6d 6f  e INSNCONC(mnemo
0420: 6e 69 63 2c 73 69 7a 65 5f 73 75 66 66 69 78 29  nic,size_suffix)
0430: 6d 6e 65 6d 6f 6e 69 63 23 23 73 69 7a 65 5f 73  mnemonic##size_s
0440: 75 66 66 69 78 0a 23 64 65 66 69 6e 65 20 49 4e  uffix.#define IN
0450: 53 4e 31 28 6d 6e 65 6d 6f 6e 69 63 2c 73 69 7a  SN1(mnemonic,siz
0460: 65 5f 73 75 66 66 69 78 2c 64 73 74 29 49 4e 53  e_suffix,dst)INS
0470: 4e 43 4f 4e 43 28 6d 6e 65 6d 6f 6e 69 63 2c 73  NCONC(mnemonic,s
0480: 69 7a 65 5f 73 75 66 66 69 78 29 20 64 73 74 0a  ize_suffix) dst.
0490: 23 64 65 66 69 6e 65 20 49 4e 53 4e 32 28 6d 6e  #define INSN2(mn
04a0: 65 6d 6f 6e 69 63 2c 73 69 7a 65 5f 73 75 66 66  emonic,size_suff
04b0: 69 78 2c 73 72 63 2c 64 73 74 29 49 4e 53 4e 43  ix,src,dst)INSNC
04c0: 4f 4e 43 28 6d 6e 65 6d 6f 6e 69 63 2c 73 69 7a  ONC(mnemonic,siz
04d0: 65 5f 73 75 66 66 69 78 29 20 73 72 63 2c 64 73  e_suffix) src,ds
04e0: 74 0a 23 64 65 66 69 6e 65 20 49 4e 53 4e 32 4d  t.#define INSN2M
04f0: 4f 56 58 28 6d 6e 65 6d 6f 6e 69 63 2c 73 69 7a  OVX(mnemonic,siz
0500: 65 5f 73 75 66 66 69 78 2c 73 72 63 2c 64 73 74  e_suffix,src,dst
0510: 29 49 4e 53 4e 43 4f 4e 43 28 6d 6e 65 6d 6f 6e  )INSNCONC(mnemon
0520: 69 63 2c 73 69 7a 65 5f 73 75 66 66 69 78 23 23  ic,size_suffix##
0530: 6c 29 20 73 72 63 2c 64 73 74 0a 23 69 66 20 64  l) src,dst.#if d
0540: 65 66 69 6e 65 64 28 42 53 44 5f 53 59 4e 54 41  efined(BSD_SYNTA
0550: 58 29 20 7c 7c 20 64 65 66 69 6e 65 64 28 43 4f  X) || defined(CO
0560: 48 45 52 45 4e 54 29 0a 23 64 65 66 69 6e 65 20  HERENT).#define 
0570: 49 4e 53 4e 32 53 48 43 4c 28 6d 6e 65 6d 6f 6e  INSN2SHCL(mnemon
0580: 69 63 2c 73 69 7a 65 5f 73 75 66 66 69 78 2c 73  ic,size_suffix,s
0590: 72 63 2c 64 73 74 29 49 4e 53 4e 43 4f 4e 43 28  rc,dst)INSNCONC(
05a0: 6d 6e 65 6d 6f 6e 69 63 2c 73 69 7a 65 5f 73 75  mnemonic,size_su
05b0: 66 66 69 78 29 20 52 28 63 6c 29 2c 73 72 63 2c  ffix) R(cl),src,
05c0: 64 73 74 0a 23 64 65 66 69 6e 65 20 52 45 50 5a  dst.#define REPZ
05d0: 20 72 65 70 65 20 3b 0a 23 65 6c 73 65 0a 23 64   repe ;.#else.#d
05e0: 65 66 69 6e 65 20 49 4e 53 4e 32 53 48 43 4c 28  efine INSN2SHCL(
05f0: 6d 6e 65 6d 6f 6e 69 63 2c 73 69 7a 65 5f 73 75  mnemonic,size_su
0600: 66 66 69 78 2c 73 72 63 2c 64 73 74 29 49 4e 53  ffix,src,dst)INS
0610: 4e 43 4f 4e 43 28 6d 6e 65 6d 6f 6e 69 63 2c 73  NCONC(mnemonic,s
0620: 69 7a 65 5f 73 75 66 66 69 78 29 20 73 72 63 2c  ize_suffix) src,
0630: 64 73 74 0a 23 64 65 66 69 6e 65 20 52 45 50 5a  dst.#define REPZ
0640: 20 72 65 70 7a 20 3b 0a 23 65 6e 64 69 66 0a 23   repz ;.#endif.#
0650: 64 65 66 69 6e 65 20 52 45 50 20 72 65 70 20 3b  define REP rep ;
0660: 0a 23 69 66 20 64 65 66 69 6e 65 64 28 42 53 44  .#if defined(BSD
0670: 5f 53 59 4e 54 41 58 29 20 26 26 20 21 28 64 65  _SYNTAX) && !(de
0680: 66 69 6e 65 64 28 5f 5f 43 59 47 57 49 4e 33 32  fined(__CYGWIN32
0690: 5f 5f 29 20 7c 7c 20 64 65 66 69 6e 65 64 28 5f  __) || defined(_
06a0: 5f 4d 49 4e 47 57 33 32 5f 5f 29 29 0a 23 64 65  _MINGW32__)).#de
06b0: 66 69 6e 65 20 41 4c 49 47 4e 28 6c 6f 67 29 20  fine ALIGN(log) 
06c0: 2e 61 6c 69 67 6e 20 6c 6f 67 2c 30 78 39 30 0a  .align log,0x90.
06d0: 23 65 6e 64 69 66 0a 23 69 66 20 64 65 66 69 6e  #endif.#if defin
06e0: 65 64 28 45 4c 46 5f 53 59 4e 54 41 58 29 20 7c  ed(ELF_SYNTAX) |
06f0: 7c 20 64 65 66 69 6e 65 64 28 5f 5f 43 59 47 57  | defined(__CYGW
0700: 49 4e 33 32 5f 5f 29 20 7c 7c 20 64 65 66 69 6e  IN32__) || defin
0710: 65 64 28 5f 5f 4d 49 4e 47 57 33 32 5f 5f 29 0a  ed(__MINGW32__).
0720: 23 64 65 66 69 6e 65 20 41 4c 49 47 4e 28 6c 6f  #define ALIGN(lo
0730: 67 29 20 2e 61 6c 69 67 6e 20 31 3c 3c 6c 6f 67  g) .align 1<<log
0740: 0a 23 65 6e 64 69 66 0a 23 65 6e 64 69 66 0a 23  .#endif.#endif.#
0750: 69 66 64 65 66 20 49 4e 54 45 4c 5f 53 59 4e 54  ifdef INTEL_SYNT
0760: 41 58 0a 23 64 65 66 69 6e 65 20 52 28 72 29 20  AX.#define R(r) 
0770: 72 0a 23 64 65 66 69 6e 65 20 4e 55 4d 28 6e 29  r.#define NUM(n)
0780: 20 6e 0a 23 64 65 66 69 6e 65 20 41 44 44 52 28   n.#define ADDR(
0790: 61 29 20 4f 46 46 53 45 54 20 61 0a 23 64 65 66  a) OFFSET a.#def
07a0: 69 6e 65 20 58 31 20 42 59 54 45 20 50 54 52 0a  ine X1 BYTE PTR.
07b0: 23 64 65 66 69 6e 65 20 58 32 20 57 4f 52 44 20  #define X2 WORD 
07c0: 50 54 52 0a 23 64 65 66 69 6e 65 20 58 34 20 44  PTR.#define X4 D
07d0: 57 4f 52 44 20 50 54 52 0a 23 64 65 66 69 6e 65  WORD PTR.#define
07e0: 20 58 38 20 51 57 4f 52 44 20 50 54 52 0a 23 64   X8 QWORD PTR.#d
07f0: 65 66 69 6e 65 20 4d 45 4d 28 62 61 73 65 29 20  efine MEM(base) 
0800: 5b 62 61 73 65 5d 0a 23 64 65 66 69 6e 65 20 4d  [base].#define M
0810: 45 4d 5f 44 49 53 50 28 62 61 73 65 2c 64 69 73  EM_DISP(base,dis
0820: 70 6c 61 63 65 6d 65 6e 74 29 20 5b 62 61 73 65  placement) [base
0830: 2b 28 64 69 73 70 6c 61 63 65 6d 65 6e 74 29 5d  +(displacement)]
0840: 0a 23 64 65 66 69 6e 65 20 4d 45 4d 5f 49 4e 44  .#define MEM_IND
0850: 45 58 28 62 61 73 65 2c 69 6e 64 65 78 29 20 5b  EX(base,index) [
0860: 62 61 73 65 2b 69 6e 64 65 78 5d 0a 23 64 65 66  base+index].#def
0870: 69 6e 65 20 4d 45 4d 5f 53 48 49 4e 44 45 58 28  ine MEM_SHINDEX(
0880: 62 61 73 65 2c 69 6e 64 65 78 2c 73 69 7a 65 29  base,index,size)
0890: 20 5b 62 61 73 65 2b 69 6e 64 65 78 2a 73 69 7a   [base+index*siz
08a0: 65 5d 0a 23 64 65 66 69 6e 65 20 4d 45 4d 5f 44  e].#define MEM_D
08b0: 49 53 50 5f 53 48 49 4e 44 45 58 30 28 64 69 73  ISP_SHINDEX0(dis
08c0: 70 6c 61 63 65 6d 65 6e 74 2c 69 6e 64 65 78 2c  placement,index,
08d0: 73 69 7a 65 29 20 5b 28 64 69 73 70 6c 61 63 65  size) [(displace
08e0: 6d 65 6e 74 29 2b 69 6e 64 65 78 2a 73 69 7a 65  ment)+index*size
08f0: 5d 0a 23 64 65 66 69 6e 65 20 4d 45 4d 5f 44 49  ].#define MEM_DI
0900: 53 50 5f 53 48 49 4e 44 45 58 28 62 61 73 65 2c  SP_SHINDEX(base,
0910: 64 69 73 70 6c 61 63 65 6d 65 6e 74 2c 69 6e 64  displacement,ind
0920: 65 78 2c 73 69 7a 65 29 20 5b 62 61 73 65 2b 28  ex,size) [base+(
0930: 64 69 73 70 6c 61 63 65 6d 65 6e 74 29 2b 69 6e  displacement)+in
0940: 64 65 78 2a 73 69 7a 65 5d 0a 23 64 65 66 69 6e  dex*size].#defin
0950: 65 20 49 4e 44 49 52 28 76 61 6c 75 65 29 76 61  e INDIR(value)va
0960: 6c 75 65 0a 23 64 65 66 69 6e 65 20 49 4e 53 4e  lue.#define INSN
0970: 43 4f 4e 43 28 6d 6e 65 6d 6f 6e 69 63 2c 73 75  CONC(mnemonic,su
0980: 66 66 69 78 29 6d 6e 65 6d 6f 6e 69 63 23 23 73  ffix)mnemonic##s
0990: 75 66 66 69 78 0a 23 64 65 66 69 6e 65 20 49 4e  uffix.#define IN
09a0: 53 4e 31 28 6d 6e 65 6d 6f 6e 69 63 2c 73 69 7a  SN1(mnemonic,siz
09b0: 65 5f 73 75 66 66 69 78 2c 64 73 74 29 6d 6e 65  e_suffix,dst)mne
09c0: 6d 6f 6e 69 63 20 64 73 74 0a 23 64 65 66 69 6e  monic dst.#defin
09d0: 65 20 49 4e 53 4e 32 28 6d 6e 65 6d 6f 6e 69 63  e INSN2(mnemonic
09e0: 2c 73 69 7a 65 5f 73 75 66 66 69 78 2c 73 72 63  ,size_suffix,src
09f0: 2c 64 73 74 29 6d 6e 65 6d 6f 6e 69 63 20 64 73  ,dst)mnemonic ds
0a00: 74 2c 73 72 63 0a 23 64 65 66 69 6e 65 20 49 4e  t,src.#define IN
0a10: 53 4e 32 4d 4f 56 58 28 6d 6e 65 6d 6f 6e 69 63  SN2MOVX(mnemonic
0a20: 2c 73 69 7a 65 5f 73 75 66 66 69 78 2c 73 72 63  ,size_suffix,src
0a30: 2c 64 73 74 29 49 4e 53 4e 43 4f 4e 43 28 6d 6e  ,dst)INSNCONC(mn
0a40: 65 6d 6f 6e 69 63 2c 78 29 20 64 73 74 2c 73 72  emonic,x) dst,sr
0a50: 63 0a 23 64 65 66 69 6e 65 20 49 4e 53 4e 32 53  c.#define INSN2S
0a60: 48 43 4c 28 6d 6e 65 6d 6f 6e 69 63 2c 73 69 7a  HCL(mnemonic,siz
0a70: 65 5f 73 75 66 66 69 78 2c 73 72 63 2c 64 73 74  e_suffix,src,dst
0a80: 29 6d 6e 65 6d 6f 6e 69 63 20 64 73 74 2c 73 72  )mnemonic dst,sr
0a90: 63 2c 52 28 63 6c 29 0a 23 64 65 66 69 6e 65 20  c,R(cl).#define 
0aa0: 52 45 50 5a 20 72 65 70 7a 0a 23 64 65 66 69 6e  REPZ repz.#defin
0ab0: 65 20 52 45 50 20 72 65 70 0a 23 64 65 66 69 6e  e REP rep.#defin
0ac0: 65 20 6d 6f 76 73 6c 20 20 6d 6f 76 73 20 52 28  e movsl  movs R(
0ad0: 65 61 78 29 0a 23 64 65 66 69 6e 65 20 73 74 6f  eax).#define sto
0ae0: 73 6c 20 20 73 74 6f 73 20 52 28 65 61 78 29 0a  sl  stos R(eax).
0af0: 23 64 65 66 69 6e 65 20 73 63 61 73 6c 20 20 73  #define scasl  s
0b00: 63 61 73 20 52 28 65 61 78 29 0a 23 64 65 66 69  cas R(eax).#defi
0b10: 6e 65 20 63 6d 70 73 6c 20 20 63 6d 70 73 64 0a  ne cmpsl  cmpsd.
0b20: 23 69 66 64 65 66 20 5f 4d 53 43 5f 56 45 52 0a  #ifdef _MSC_VER.
0b30: 0a 23 64 65 66 69 6e 65 20 41 4c 49 47 4e 28 6c  .#define ALIGN(l
0b40: 6f 67 29 0a 23 65 6c 73 65 0a 23 64 65 66 69 6e  og).#else.#defin
0b50: 65 20 41 4c 49 47 4e 28 6c 6f 67 29 20 2e 61 6c  e ALIGN(log) .al
0b60: 69 67 6e 20 6c 6f 67 0a 23 65 6e 64 69 66 0a 23  ign log.#endif.#
0b70: 65 6e 64 69 66 0a 0a 23 69 66 64 65 66 20 5f 4d  endif..#ifdef _M
0b80: 53 43 5f 56 45 52 0a 0a 23 64 65 66 69 6e 65 20  SC_VER..#define 
0b90: 54 45 58 54 28 29 0a 23 65 6c 73 65 0a 23 64 65  TEXT().#else.#de
0ba0: 66 69 6e 65 20 54 45 58 54 28 29 20 2e 74 65 78  fine TEXT() .tex
0bb0: 74 0a 23 65 6e 64 69 66 0a 0a 23 69 66 64 65 66  t.#endif..#ifdef
0bc0: 20 5f 4d 53 43 5f 56 45 52 0a 23 64 65 66 69 6e   _MSC_VER.#defin
0bd0: 65 20 47 4c 4f 42 4c 28 6e 61 6d 65 29 0a 23 65  e GLOBL(name).#e
0be0: 6c 73 65 0a 23 64 65 66 69 6e 65 20 47 4c 4f 42  lse.#define GLOB
0bf0: 4c 28 6e 61 6d 65 29 20 2e 67 6c 6f 62 6c 20 6e  L(name) .globl n
0c00: 61 6d 65 0a 23 65 6e 64 69 66 0a 0a 0a 23 69 66  ame.#endif...#if
0c10: 64 65 66 20 5f 4d 53 43 5f 56 45 52 0a 23 64 65  def _MSC_VER.#de
0c20: 66 69 6e 65 20 44 45 43 4c 41 52 45 5f 46 55 4e  fine DECLARE_FUN
0c30: 43 54 49 4f 4e 28 6e 61 6d 65 29 0a 23 65 6c 69  CTION(name).#eli
0c40: 66 20 64 65 66 69 6e 65 64 28 5f 5f 73 76 72 34  f defined(__svr4
0c50: 5f 5f 29 20 7c 7c 20 64 65 66 69 6e 65 64 28 5f  __) || defined(_
0c60: 5f 45 4c 46 5f 5f 29 20 7c 7c 20 64 65 66 69 6e  _ELF__) || defin
0c70: 65 64 28 5f 5f 4e 65 74 42 53 44 5f 5f 29 20 7c  ed(__NetBSD__) |
0c80: 7c 20 64 65 66 69 6e 65 64 28 5f 5f 46 72 65 65  | defined(__Free
0c90: 42 53 44 5f 5f 29 20 7c 7c 20 64 65 66 69 6e 65  BSD__) || define
0ca0: 64 28 5f 5f 4f 70 65 6e 42 53 44 5f 5f 29 20 7c  d(__OpenBSD__) |
0cb0: 7c 20 64 65 66 69 6e 65 64 28 5f 5f 44 72 61 67  | defined(__Drag
0cc0: 6f 6e 46 6c 79 5f 5f 29 20 7c 7c 20 64 65 66 69  onFly__) || defi
0cd0: 6e 65 64 28 5f 5f 52 4f 53 45 5f 5f 29 20 7c 7c  ned(__ROSE__) ||
0ce0: 20 64 65 66 69 6e 65 64 28 5f 53 45 51 55 45 4e   defined(_SEQUEN
0cf0: 54 5f 29 20 7c 7c 20 64 65 66 69 6e 65 64 28 44  T_) || defined(D
0d00: 47 55 58 29 20 7c 7c 20 64 65 66 69 6e 65 64 28  GUX) || defined(
0d10: 5f 53 43 4f 5f 43 4f 46 46 29 20 7c 7c 20 64 65  _SCO_COFF) || de
0d20: 66 69 6e 65 64 28 5f 53 43 4f 5f 45 4c 46 29 0a  fined(_SCO_ELF).
0d30: 23 64 65 66 69 6e 65 20 44 45 43 4c 41 52 45 5f  #define DECLARE_
0d40: 46 55 4e 43 54 49 4f 4e 28 6e 61 6d 65 29 20 2e  FUNCTION(name) .
0d50: 74 79 70 65 20 43 28 6e 61 6d 65 29 2c 40 66 75  type C(name),@fu
0d60: 6e 63 74 69 6f 6e 0a 23 65 6c 73 65 0a 23 64 65  nction.#else.#de
0d70: 66 69 6e 65 20 44 45 43 4c 41 52 45 5f 46 55 4e  fine DECLARE_FUN
0d80: 43 54 49 4f 4e 28 6e 61 6d 65 29 0a 23 65 6e 64  CTION(name).#end
0d90: 69 66 0a 0a 0a 23 69 66 64 65 66 20 5f 4d 53 43  if...#ifdef _MSC
0da0: 5f 56 45 52 0a 0a 0a 0a 0a 23 64 65 66 69 6e 65  _VER.....#define
0db0: 20 46 55 4e 42 45 47 49 4e 28 6e 61 6d 65 29 20   FUNBEGIN(name) 
0dc0: 5f 5f 64 65 63 6c 73 70 65 63 28 6e 61 6b 65 64  __declspec(naked
0dd0: 29 20 76 6f 69 64 20 6e 61 6d 65 20 28 29 20 7b  ) void name () {
0de0: 20 5f 5f 61 73 6d 20 7b 0a 23 64 65 66 69 6e 65   __asm {.#define
0df0: 20 46 55 4e 45 4e 44 28 29 20 20 20 20 20 20 20   FUNEND()       
0e00: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
0e10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
0e20: 20 20 20 20 20 20 20 7d 0a 23 65 6c 73 65 0a 23         }.#else.#
0e30: 64 65 66 69 6e 65 20 46 55 4e 42 45 47 49 4e 28  define FUNBEGIN(
0e40: 6e 61 6d 65 29 20 43 28 6e 61 6d 65 23 23 3a 29  name) C(name##:)
0e50: 0a 23 64 65 66 69 6e 65 20 46 55 4e 45 4e 44 28  .#define FUNEND(
0e60: 29 0a 23 65 6e 64 69 66 0a 0a 23 64 65 66 69 6e  ).#endif..#defin
0e70: 65 20 5f 0a 0a 0a 0a 54 45 58 54 28 29 0a 0a 0a  e _....TEXT()...
0e80: 0a 0a 0a 0a                                      ....