//////////////////////////////////////////////////////////foxfunc.cpp
$ a' ]; ~: K% K# B& j
8 L7 A, Q) {- l//FoxFunc.cpp : Defines the entry point for the DLL application.# Z; R: F/ M9 ?9 H; Q/ m0 E0 x
//' ]' F3 Q0 Q7 |/ i4 I! r
#include<string.h>; u1 O' j5 V7 l) v' j# X
#include<stdio.h>/ {5 J& L! E4 T$ [3 z/ j& V
#include<io.h>
) e K+ ?2 c% a$ C$ V0 V0 n2 s#include<math.h>
) e" c$ o- e7 k. j#include<iostream>! ?' u( \! j, m' G
#include"stdafx.h"
d: s) t9 n5 S, Q$ h" T- F& N4 e#include"FoxFunc.h"
" w, Q+ v& Y1 Dusingnamespace std;
6 y, @7 l; r1 A5 gBOOLAPIENTRY DllMain( HANDLE hModule,
; w% b0 c5 y! p! J$ ~# B- {; o+ UDWORDul_reason_for_call, 5 K# V( Z) e! W5 y3 B9 F- Y
LPVOIDlpReserved
2 O$ V. a( a, y/ V( @)7 l [: M1 F2 |, y' ]8 r" O5 d
{. A3 k: h6 f0 }5 {1 x7 h) w
switch(ul_reason_for_call)
+ z) x: {8 f0 }3 i) m/ W{' w! f! j7 H9 `0 m5 ]* x g
caseDLL_PROCESS_ATTACH:. ^- G( _+ G9 C( y
caseDLL_THREAD_ATTACH:$ H" D# [ V+ y: x) D% X" _+ F2 {
caseDLL_THREAD_DETACH:8 H& x# h. t9 P: U4 X
caseDLL_PROCESS_DETACH:
+ w1 J6 d9 ~" F2 O2 L! a- d3 Ibreak;
- Q" ~! Z! X5 M3 u}
/ C( z8 s. e. S5 ~/ SreturnTRUE;
, D; Y s" I4 f! L}& x0 T; l. x5 E* W
//计算收盘价的均价,一个常数参数,表示计算周期
/ q# O- _, p" w//调用方法:
' Z W. k3 H! M3 P//"FOXFUNC@MYMACLOSE"(5) v0 {6 F$ H3 l o6 J
/*& c$ j/ @0 K% r" X/ i6 i
//extern "C" double __cdecl ppow10(double ctemp,doublelength); - - - > wrong, extern "C" is to declare pow10coming from a .dll or .lib
- @+ {! q: x* I: a8 l//extern "C" double ppow10(double ctemp,double length); - - -> both are the same
3 q, W9 N5 _" v/ j% ~: e*/( K9 g! R4 D) h$ B3 t
extern"C" double __cdecl ppow10(double ,double );7 k- ~( _# r& K! q1 S8 e) h8 x/ U v
//double ppow10(double ,double );
4 M" H' {( ?4 v8 b+ l& f//call pow10() by __cdecl
1 I w% e& E( W. U4 b6 j _0 t l4 O3 I//!!!!!!!! use "C" for Microsoft visual C++ compiler
- P$ u4 W) i) e7 O! w& }! S# t* z" R( w//!!!!!!!! use "C" for Microsoft visual C++ compiler
! I. ~$ C8 M6 H6 q" Q//!!!!!!!! use "C" for Microsoft visual C++ compiler
: @" d! i8 N7 g( l: p//!!!!!!!! use "C" for Microsoft visual C++ compiler
, W4 o2 n- J- S- L//!!!!!!!! use "C" for Microsoft visual C++ compiler Z6 i4 \+ R7 W
__declspec(dllexport)int WINAPI MYMACLOSE(CALCINFO* pData)$ e# a! O& g3 s R# e7 F( X
{
: k) ~7 E! ?- W" hif( // pData->m_pfParam1 && //参数1有效+ X0 _: S7 C$ R3 m7 W$ f, ?7 f
//pData->m_nParam1Start<0 && //参数1为常数
6 Q7 g- k- i2 V//pData->m_pfParam2==NULL ) //仅有一个参数) w: n" ]# `4 ?4 f# o: @
//pData->m_pfParam1 && pData->m_pfParam2 &&pData->m_pfParam3 && pData->m_pfParam4- f: I2 C" }! a7 M3 X/ f2 V% ^# ?
//&& pData->m_pfParam5 && pData->m_pfParam6 &&pData->m_nParam1Start>=0 &&
* O% ]# f2 J1 ]& T//pData->m_pfParam7==NULL)
/ H7 |" s7 V& W6 R# P7 }//pData->m_pfParam1 && pData->m_pfParam2 &&pData->m_pfParam3 && pData->m_nParam1Start>=0 &&
& T4 O6 t, M5 Q- FpData->m_pCalcParam[0].m_nParamStart>=0&& pData->m_pCalcParam[1].m_nParamStart>=0. I8 N. g$ {5 M5 K; ~2 a' Z$ r
&&pData->m_pCalcParam[2].m_nParamStart>=0) ' I! T: B/ n* U8 n: R1 C( D
{
; s9 u9 N6 m/ Y! }floatfParam = *pData->m_pfParam4; //pointer ,pData->m_pCalcParam[3].m_nParamStart >= 02 @- @0 n1 c+ l, w
intnPeriod = (int)fParam; //参数1; K1 ~: K( h, P+ w2 k
//const float* cpParam = pData->m_pfParam2; // cpParam = pointer to 3 W5 @5 l/ e _: t8 F* P& K% H! u
constfloat* cpParam2 =pData->m_pCalcParam[1].m_pfParam; // cpParam =pointer to 7 P' W1 W; R9 \+ e8 z
constfloat* cpParam3 =pData->m_pCalcParam[2].m_pfParam; // cpParam =pointer to
- @1 c p2 F2 r$ Q% D: g1 _8 rconstfloat* cpParam4 =pData->m_pCalcParam[3].m_pfParam; // cpParam =pointer to & l" \7 d- q# |
//const float* cpParam5 =pData->m_pCalcParam[4].m_pfParam; //cpParam = pointer to
3 ]1 {( U! H- H; I//in foxtraderoooq:"MYFUNC2010@MYMACLOSE"(c,c,c,6),colorffffff,linethick5;// cpParam5 =pData->m_pCalcParam[4].m_pfParam
, f& v/ F" A, P//pData->m_pCalcParam[5].m_fParam); //value" W, K% {$ C( [# k( a9 j
//const float* pValue1 = pData->m_pCalcParam[0].m_pfParam;
# n- i6 n: O2 A% S |//const float* pValue2 = pData->m_pCalcParam[1].m_pfParam;
) J% T v( P3 j# \; R, z//const float* pValue3 = pData->m_pCalcParam[2].m_pfParam;; h' l' u' l; n
//const float* pValue4 = pData->m_pCalcParam[3].m_pfParam;+ U, T. z G! I* O1 p
//const float* pValue5 = pData->m_pCalcParam[4].m_pfParam;
, d1 Y) h6 H/ {9 ^$ hif(nPeriod>0)# c- M( E6 [3 i6 `& w: X
{
# b: O$ K1 n/ UfloatfTotal;6 g/ b7 [0 W7 W9 n u, I2 u
inti, j; H2 J5 n* d3 f2 l
intndata = pData->m_nNumData;
% W" ^. E6 y8 b" B//float yy[5000][1];0 j; w- T8 }+ s* b! a/ p
for( i = nPeriod-1; i < pData->m_nNumData; i++)//计算nPeriod周期的均线,数据从nPeriod-1开始有效+ ?, {! s/ J+ _4 J
{
5 a. ~' C* T7 [1 d' [3 ~fTotal= 0.0f;
( r; S- T7 U4 [3 idoublelngth=5.0;
( K: b- h; `6 X r3 ~ ~doublectemp=4.0;
: w( @3 L1 S/ _" o! @/ M! D/ q//float yy1[5000][1];7 \/ ?- L$ S$ c' S8 y
for( j = 0; j < nPeriod; j++ ) //累加
2 S9 E) E1 t0 L) @# w{9 w. j! K" X) l* H- M, s
fTotal= pData->m_pData.m_fClose; // @@@@@@@ vc++ 2010 cl.exe 使pData->m_pData[i-j].m_fClose错误2 l. v" l) K3 ^* J- c! j
}
8 a4 U3 V8 r4 j( N//pData->m_pResultBuf = fTotal*1.03; //平均
$ m/ U8 F$ y" \) t7 g$ O0 ^fTotal= cpParam3;9 v; h+ } z" \$ Y7 S9 G* @1 M ~
pData->m_pResultBuf= fTotal*1.03; //平均
h& o& N7 E' L; F' x, ?//ctemp = (double) pData->m_pResultBuf; // double & - - - >overload a float value , double * - - - > overload a pointer todouble# R* K) L$ J/ T* j3 O
//pData->m_pResultBuf= (float) ppow10(ctemp,lngth); // float &- - - > overload a float value' u. S/ l& h7 U/ f3 R. M3 S
pData->m_pResultBuf=(float) ppow10( (double) pData->m_pResultBuf,lngth); // float &- - - > overload a float value, (float) = overload
2 D1 X$ V6 x1 ]% P, ]' H}9 K8 L r1 e9 f _! _ D
returnnPeriod-1;+ q. C/ y% l" ~& `( A6 u
}5 c9 P' j; G6 |/ V4 h* q9 G) k
}
* g7 Q" E {% S7 Freturn-1;
Z$ o1 W; l2 B3 Y; G0 `& B}
( x0 d( k! i2 l//计算均价,2个参数,参数1为待求均线的数据,参数2表示计算周期; Z( u+ Y8 ]) T; @( ^
//调用方法:
, \, D* p+ a/ ^# ~//"FOXFUNC@MYMAVAR"(CLOSE-OPEN,5)5 y1 u: x- c5 S( G( Y; m
__declspec(dllexport)int WINAPI MYMAVAR(CALCINFO* pData)8 B1 v/ g \% n% h2 w
{ b4 [6 M$ Q0 D. ? n
if(pData->m_pfParam1&& pData->m_pfParam2 && //参数1,2有效+ Y9 t2 A1 k% F/ u' ?
pData->m_nParam1Start>=0&& //参数1为序列数7 U0 z7 Z6 O1 J1 m( e+ W
pData->m_pfParam3==NULL)//有2个参数
/ B$ c% [8 S9 J{
0 V$ a B% n, X' l" Hconstfloat* pValue = pData->m_pfParam1; //参数1
. D4 ]8 Y# m! {( V, Z$ NintnFirst = pData->m_nParam1Start; //有效值起始位
$ v. n6 P2 a9 Q/ mfloatfParam = *pData->m_pfParam2; //参数2' I7 @7 N) Q$ g, ?8 `, K" ]
intnPeriod = (int)fParam; 0 b- I9 ]- ?) E! `
if(nFirst >= 0 && nPeriod > 0 )
/ I! D3 D% b$ q5 g g{" O: o; K1 k+ Q( o+ O
floatfTotal;
9 [- ?6 U* J3 t6 Pinti, j;
$ n" @( i& q; n. Pfor( i = nFirst+nPeriod-1; i < pData->m_nNumData; i++ )
8 `% k4 D: _' o, B: Y{
+ ^) T, J: f+ o( v% B- S. ?fTotal= 0.0f;) [7 i/ c9 n4 u: ?3 F- |
for( j=0; j < nPeriod; j++ ) //累加
# F/ G" {& m$ o3 a$ }5 ]" ]6 wfTotal+= pValue[i-j];/ _% v6 U. O2 p5 E+ X
pData->m_pResultBuf= fTotal/nPeriod;//平均2 O/ _2 o: b; m( q2 u! ~. G# ?/ D
}
4 R3 f& q' v. O; [5 kreturnnFirst+nPeriod-1;
* [" s' G' C8 L}4 Z9 R9 f! _. v6 L$ H a
}
1 ^ C2 \ Q zreturn-1;- Z6 q- g2 H+ }) y% c
}- q- j0 M5 l2 U3 S1 R; S+ C' k/ N
//计算多个序列的均值,5个参数,参数1-4为待求多个序列,参数5用于举例说明数值参数的用法,实际在此例中无需该参数! g! @: f3 r4 k0 O, G
/*" u) Y9 \8 F+ k& C5 C- G
调用方法:! k5 M! D( \5 S9 F
MA1:=MA(CLOSE,3);- A& A. a: A% F& e9 I5 G
MA2:=MA(CLOSE,6);/ W i% S9 Z; N( w6 o7 @
MA3:=MA(CLOSE,12);
. g F5 V0 b1 A1 Z8 E6 B) pMA4:=MA(CLOSE,24);3 Y# V% T& i( e5 f5 n9 `
MYBBI:"FOXFUNC@MYBBI"(MA1, MA2, MA3, MA4, 4);
* A- k Q$ b' K# a8 V! O$ G*/
4 p$ F; t% V. @__declspec(dllexport)int WINAPI MYBBI(CALCINFO* pData)4 S% d) D- q3 r; a p/ }1 J
{/ ?) o! v" y2 u: N1 t( ^! B o
if( pData->m_pCalcParam[0].m_nParamStart >= 0 &&. I1 D x4 Q: {
pData->m_pCalcParam[1].m_nParamStart>= 0 &&) Q- }9 X' a7 X6 e( F5 d+ F1 Y
pData->m_pCalcParam[2].m_nParamStart>= 0 &&
. C/ n8 O; V6 P- V6 ]; JpData->m_pCalcParam[3].m_nParamStart>= 0 ) //4个序列都含有效数值
4 b+ z) s4 t6 v; t% u" i: L{* Y7 J1 F1 K+ Y- r
//计算返回的序列的第一个有效值位置; ^3 l0 q, ?. J+ T) _
intnFirst = pData->m_pCalcParam[2].m_nParamStart;//已知返回的序列的第一个有效值位置与第4个序列一致
+ ?7 P* [0 W/ i+ x/ U//若不知,则
* w' J2 S( e0 i* G1 V, W/*
" X( [+ M8 t9 H6 jintnFirst = pData->m_pCalcParam[0].m_nParamStart;
$ h' O9 S+ u4 Xif( nFirst < pData->m_pCalcParam[1].m_nParamStart ) ! B) W3 `8 L3 D; a v
nFirst= pData->m_pCalcParam[1].m_nParamStart;
7 o2 x6 U3 p; g) h+ d0 _if( nFirst < pData->m_pCalcParam[2].m_nParamStart ) 1 ^# J. `( c e A% r1 w
nFirst= pData->m_pCalcParam[2].m_nParamStart;, o1 [1 h7 R+ L# J) D) i
if( nFirst < pData->m_pCalcParam[3].m_nParamStart ) * u4 U8 Z. {9 t4 H. |7 h
nFirst= pData->m_pCalcParam[3].m_nParamStart;
4 ]2 d+ v( W! V/ l; F*/
5 Z1 H4 b3 y% P; c+ V6 }3 e- ]4 l2 vconstfloat* pValue1 = pData->m_pCalcParam[0].m_pfParam;. q- Y8 P) T% j( V
constfloat* pValue2 = pData->m_pCalcParam[1].m_pfParam;1 Z4 A& e: K' G( y
constfloat* pValue3 = pData->m_pCalcParam[2].m_pfParam;
- d" ^# c: S+ P" L" pconstfloat* pValue4 = pData->m_pCalcParam[3].m_pfParam;, O4 j4 t1 p6 [7 C$ B0 a4 j1 @9 ?
constfloat* pValue5 = pData->m_pCalcParam[4].m_pfParam;; r7 M( U( `9 w+ a, ]
constfloat* pValue6 = pData->m_pCalcParam[5].m_pfParam;
8 Q, B5 y5 C) m" c% G$ O//const float* pValue1 = pData->m_pfParam1;
5 o) G/ C4 M/ Q( X& K+ G- ?//const float* pValue2 = pData->m_pfParam2;: u6 l7 g, c, A% M u- S& P# v2 E
//const float* pValue3 = pData->m_pfParam3;6 v# J) F2 N n% |! B, m! K
//int nNum = (int)(*pData->m_pfParam4);//实际上该例中已知nNum=4,在此用于说明数值参数的用法/ l* k# p) ? j) j
intnNum = (int)(pData->m_pCalcParam[6].m_fParam);//实际上该例中已知nNum=4,在此用于说明数值参数的用法
- t7 z; @3 l, x" S% vfor(int i = nFirst; i < pData->m_nNumData; i++ )8 [# {( ~5 e# e7 Z. M
{
% z$ Y* p/ k6 t; Z' tpData->m_pResultBuf= ) r+ w7 ~: o f2 I, Y( T" \
//(pValue1 + pValue2 + pValue3 )/nNum;
3 a p; q% D7 g$ w# z' }(pValue1+ pValue2 + pValue3 + pValue4+pValue5 + pValue6)/nNum;/ n g% l* J/ O; G. R* G7 [
}4 b+ l% u, H6 d+ o( G7 y
returnnFirst;6 ? u0 ?) S& F4 y, f# @1 [3 p
}3 |# \3 L& X5 ?# G' ]! x
return-1;5 f5 I0 L; j. G6 D v+ b
}: ?# v: i+ ^: p; J6 |
% S1 [! `! W$ x9 y% L
; ?: H7 K+ o- T+ S$ Y6 ~6 {7 u8 R! u) P9 i0 V9 G! f6 f0 f- v$ t, `
//////////////////////////////////////////////////////////////pow10.asm4 j8 p' L# w8 j1 Y( M& a3 @
;*******************************************************
M* |4 E! \- L" I4 [- t* l;* *
2 T5 Y0 r5 \+ E1 C, h;* Delphi Run Library *
, y& U0 M" C; C0 y' |;* *) K R; p$ X# D) L+ C1 }3 N/ k$ M
;* Copyright (c) 1996,98 Inprise Corporation *
) P' Y. I$ ^" n& N. g6 o# J1 I;*--------------------------------------------------------------------------7 I& s5 M9 W' X
;* To compile "tasm32 /ml pow10.asm" *
/ z5 S" g5 R& M) H' Q; [' |1 M;*--------------------------------------------------------------------------2 B" z8 n" s1 A0 m6 S
;*******************************************************
$ U0 n7 i6 r* v.386
8 J& R) B/ Y+ a$ a;.MODEL flat,c (error must be in segement block must have segment
1 A1 Q* @( x+ S;!!!!!11 important if ',c' is not used , must use 'public _ppow10, and'_ppow10 proc'
: L7 ?2 f+ E, b' Y- K0 w3 d1 M3 Z% Q;!!!!!11 important if .MODEL flat,c is not used , must use ;_TEXTSEGMENT WORD PUBLIC1 }% J" R$ i/ I6 \: T4 S
;'CODE'..._TEXT ENDS and must use 'public _ppow10 and '_ppow10 proc'
: E, Z2 D* B1 g8 x: `.MODELflat,c ; just use .code, no need for segment,!!!!!11 important if',c' is used , must use 'public ppow10, and 'ppow10 proc'
8 g. t* a% \$ b, X+ L;ppow10 PROTO,aVal:PTR REAL8, bVal:PTR REAL8( M9 [: ^0 w- s
;includeE:\Vsource\masm32\INCLUDE\windows.inc) j' o: J" B& U. F: D9 n
;includeE:\Vsource\masm32\INCLUDE\user32.inc0 v% a7 ~* `7 i# p1 I# }! E
;includeE:\Vsource\masm32\INCLUDE\kernel32.inc% J% }7 k7 a6 ]( S
PUBLICppow10
0 R& Q, T& k% ~ e3 I.CODE/ d8 I8 u4 I# w* |! E- I; z, G
;DllEntryproc hInstance:HINSTANCE, reason:DWORD, reserved1:DWORD0 P: D" s d0 c2 l1 R7 H4 }% V
;.if reason==DLL_PROCESS_ATTACH* y, _! ~! K4 `6 ]7 y/ @3 w. ^: F
;invoke MessageBox,NULL,addr LoadMsg,addr AppName,MB_OK6 I0 N4 k0 F8 N, P2 M; u
;.elseif reason==DLL_PROCESS_DETACH4 Y/ W' j' M* E$ I' [ E! _/ Q
;invoke MessageBox,NULL,addr UnloadMsg,addr AppName,MB_OK& p+ K. E9 W+ b/ a) P# X
;.elseif reason==DLL_THREAD_ATTACH
; o( H+ x$ Z& F4 L& ?;invoke MessageBox,NULL,addr ThreadCreated,addr AppName,MB_OK
% ? q, O/ B. m+ o) |;.else ; DLL_THREAD_DETACH
( ?: W# v7 ?2 t& O, u;invoke MessageBox,NULL,addr ThreadDestroyed,addr AppName,MB_OK
6 M8 P: v: l, J. h+ h n;.endif
* Z$ f6 c7 t5 `# A7 ]$ A8 }( y! I0 ];mov eax,TRUE
/ O4 N( L# ^6 c4 e% t;ret
6 W. B6 J% Z D h5 v0 w) f;DllEntryEndp% }% g/ M9 G; K/ f
;FUNCTION _Ppow10( double val, double pow: ) : Extended;' V, t9 i/ k4 d, N0 b% o0 @
;_TEXTSEGMENT WORD PUBLIC 'CODE'5 j2 r# K) c. U; M( M3 C
;ppow10 PROC,aVal:PTR REAL8, bVal:PTR REAL8# C+ |# t( Y J0 e- {: @! ]
;ppow10 PROC,aVal:* Qword, bVal:Qword
3 N' \$ K% Y0 B5 g$ w2 n" sppow10PROC near! N1 M; [6 T2 X. _
XUEQU 8 ; for eip & ebp
" Y9 z( d4 B) g$ ?; h$ ^) sXDEQU 0 ; for edi, esi, ebx, ecx, edx" M4 \; n. K. X, `% B: c, g: @
fp_powerEQU QWORD PTR [ebp+XU+8]( @8 ?& Y: |! q- u
fp_valEQU QWORD PTR [ebp+XU]
' X' g6 x' n8 [/ {/ ^valEQU QWORD PTR [eBP-XD-8] ; USE STACK v+ l; K$ N) E( F
powerEQU QWORD PTR [eBP-XD-16] ; USE STACK
% J H" _: z- r$ _9 D2 M7 xpow10EQU QWORD PTR [eBP-XD-24] ; USE STACK) M- ~# t( f8 X X. S0 T
FPower10:" q4 V6 I$ V+ x2 W/ q4 N5 |+ {* {
pushebp
7 _+ x+ I) o1 g9 k; {& ]movebp,esp6 e0 x7 g D% j& v; g( I6 T- u
;push edi( _- j/ K! r; d; Y# e' g- F7 g# K0 m
;push esi
8 d( p1 L4 z6 p/ j- ?) f% c;push eax
' u/ v- K- }: f! o1 [1 }0 J;push edx
8 n# a1 [3 Y: U& Ysubesp,24
* C- G5 }0 x; F0 M9 _3 X" f+ } GFINIT5 L, W! H4 b1 k, Q# [( b
fldz9 W4 K% i1 I/ p- z G0 S, B! n
fstval
: t; u* B5 n8 C: kfstpower
& k3 z, ~/ j; i% s, i/ x8 Y2 `fstppow100 n3 z4 o, d0 r' r0 k
MOV EAX,8 MOV EDX,8; fldpi
% `! C6 E' {- h( S7 _ fld fp_val ;st(0)=val; fld aVal;st(0)=val+ F9 |8 {( S; H' f9 w5 b6 \
fstval6 X' `: n5 N' _* r* @1 D4 g7 P
;fld Arg2 ;st(0)=power
& q- F4 P! Y- m ]0 {8 x8 A! k/ `2 S;fstp power3 v6 _+ x/ o2 |0 b
;fld val ;st(0)=val* }8 w! z9 x3 n" m: z
;fmul val ;st(0)=val*val
, K+ p' R2 ^2 i0 r;fmul val ;st(0)=val*va*val
9 i7 P K( G4 l8 Q$ |3 W5 O;fadd st,st(0)% R* J9 J: e+ f; N; H
;fmul qword ptr [ebp+16] ;st(0)=power
" L4 c# }: z" k4 k4 u4 l;fadd st,st(0)" M3 ^$ c0 s6 X ~/ j
;fwait1 z! S/ a6 k& h: c0 v/ ]+ ~
addesp,24! _6 e9 \% m# _( |( v( p4 O
;pop edx0 n8 L1 e4 G; K# h4 v R% F
;pop eax
& i0 E i2 X7 ~$ J5 Q;pop esi
! l. I% r; t6 z; A) V- X;pop edi
# Y; J+ `9 {- R7 Vmovesp,ebp
% t, F+ O+ t! d$ o. t. Rpopebp: A! s/ w6 x7 p9 D% O7 n3 E
;leave ; @@@@@@ important don't use leave in vc++ 2010
' h7 M+ e' T( n7 A* aRET;return value = st(0)5 U! |$ _* b8 }
ppow10ENDP- K9 |# i% n# Q
;_TEXTENDS
- y6 V0 a# k6 b" e! `9 PEND
( s9 b% R2 Q2 C, F;END DllEntry |