//////////////////////////////////////////////////////////foxfunc.cpp
+ ]6 U5 Z7 u Z5 A1 f4 E8 I- `6 b) h( ]- k8 T( R
//FoxFunc.cpp : Defines the entry point for the DLL application.* [1 L% h) v& k: P) F
//- _4 l: X/ t7 S
#include<string.h>; J' q% [5 f" m& \
#include<stdio.h>: W- T+ L* Q3 k( F: O6 `! P& [; ?
#include<io.h>
% a) w- |) g; p8 b( A* @# S6 o# M#include<math.h>
& ^; e/ p6 T6 ]* c) l5 v2 j#include<iostream>
; b+ K# v8 e/ Y3 o) K#include"stdafx.h"
0 \1 I8 Q" D/ F( M) t. }#include"FoxFunc.h"
/ z2 W# O/ }8 Q& t9 Qusingnamespace std;7 \. U, O3 i$ {! u/ h
BOOLAPIENTRY DllMain( HANDLE hModule, & g' r- a2 i6 _! C8 h X
DWORDul_reason_for_call, 6 F7 E0 M8 u! X: E
LPVOIDlpReserved4 x) f3 Y H8 A; C y" u
). o8 G, Q) ]2 o# L, q! c/ o
{
% _, O9 a( y5 T/ o! eswitch(ul_reason_for_call)) E7 U8 ^0 o4 a/ _
{/ }- z7 ], X- L7 U( t
caseDLL_PROCESS_ATTACH:* M8 @& _ I3 g. y
caseDLL_THREAD_ATTACH:4 P* {5 v; r: u) g# B% e
caseDLL_THREAD_DETACH:! r; S8 |4 b r j, u
caseDLL_PROCESS_DETACH:
4 g4 Y7 c* b. Ebreak;
( W1 `! l; ` q; [: `}4 b' C0 i+ x# u7 Q' M R( B m
returnTRUE;7 v: r5 V0 |. e9 M
}
% j, b' \- q' L0 {/ w2 F$ r//计算收盘价的均价,一个常数参数,表示计算周期1 r7 }, q h1 K: ~! F% u6 w9 w
//调用方法:
4 ~+ p( p& U8 ^; O9 [//"FOXFUNC@MYMACLOSE"(5)) G) F1 `. ]! M. c
/*
3 s( H) ^$ [$ j! z9 C+ X! W//extern "C" double __cdecl ppow10(double ctemp,doublelength); - - - > wrong, extern "C" is to declare pow10coming from a .dll or .lib
2 S, X2 c: z- z( U& ^//extern "C" double ppow10(double ctemp,double length); - - -> both are the same x* r) m: ~5 K4 d
*/( m( D, J6 h4 r! G- j! c
extern"C" double __cdecl ppow10(double ,double );
* J* \' K1 a" y//double ppow10(double ,double );
I% w; E$ \' M `% }+ |! a//call pow10() by __cdecl
% `* u8 ~& t$ V& M7 z$ H//!!!!!!!! use "C" for Microsoft visual C++ compiler
- `5 E( |, k1 q' g% _0 ]//!!!!!!!! use "C" for Microsoft visual C++ compiler
! `6 d# K* _$ K) [6 ?7 x//!!!!!!!! use "C" for Microsoft visual C++ compiler% U7 ? e' u* d E$ @- j% i
//!!!!!!!! use "C" for Microsoft visual C++ compiler
0 G! H0 {) V4 z6 N2 p# {" \" r- @//!!!!!!!! use "C" for Microsoft visual C++ compiler
: k4 a4 d# k& t/ h$ B__declspec(dllexport)int WINAPI MYMACLOSE(CALCINFO* pData)
/ i0 L& z D( a9 |/ L/ C5 U{; t' U6 i6 i) X* h
if( // pData->m_pfParam1 && //参数1有效
* o F' ?4 f8 I) O9 t. b& v8 b//pData->m_nParam1Start<0 && //参数1为常数
0 s- e8 H- D3 Q# A9 r/ G( Q//pData->m_pfParam2==NULL ) //仅有一个参数
5 P: U! S* N" [4 g//pData->m_pfParam1 && pData->m_pfParam2 &&pData->m_pfParam3 && pData->m_pfParam4! v8 ^. R# j. @2 Z% o$ h- z# s
//&& pData->m_pfParam5 && pData->m_pfParam6 &&pData->m_nParam1Start>=0 &&. S3 @- \6 O2 M* I% ^5 m' F; o0 m
//pData->m_pfParam7==NULL)
% s: P* \# d+ ?2 {5 p//pData->m_pfParam1 && pData->m_pfParam2 &&pData->m_pfParam3 && pData->m_nParam1Start>=0 &&
9 _$ `6 ]; D* \% D/ [3 {: i5 e' _; P) DpData->m_pCalcParam[0].m_nParamStart>=0&& pData->m_pCalcParam[1].m_nParamStart>=0
3 [' _2 t, K4 t/ s+ h# z5 B&&pData->m_pCalcParam[2].m_nParamStart>=0)
& P/ ^- ]) a3 M: j+ K1 G; E{' l0 M s& g- n- c, F0 h+ N$ \5 p: t: Z
floatfParam = *pData->m_pfParam4; //pointer ,pData->m_pCalcParam[3].m_nParamStart >= 0
1 V, i* N$ ? Z$ M2 O2 \intnPeriod = (int)fParam; //参数1% p3 x/ x3 }; d
//const float* cpParam = pData->m_pfParam2; // cpParam = pointer to . U- V8 a" p' l8 }
constfloat* cpParam2 =pData->m_pCalcParam[1].m_pfParam; // cpParam =pointer to " L1 } V0 {# E1 M S9 }. D
constfloat* cpParam3 =pData->m_pCalcParam[2].m_pfParam; // cpParam =pointer to
8 n& S( e: b: J7 X' N' s3 t# [7 M! Sconstfloat* cpParam4 =pData->m_pCalcParam[3].m_pfParam; // cpParam =pointer to . ~4 Y6 A3 w8 J! p
//const float* cpParam5 =pData->m_pCalcParam[4].m_pfParam; //cpParam = pointer to ) q$ g/ u+ ]. R- j, E; a2 y0 B" w
//in foxtraderoooq:"MYFUNC2010@MYMACLOSE"(c,c,c,6),colorffffff,linethick5;// cpParam5 =pData->m_pCalcParam[4].m_pfParam " Y( l/ O* ^7 L
//pData->m_pCalcParam[5].m_fParam); //value
/ R2 k+ k3 ^( m N6 J) k4 j4 g7 ~//const float* pValue1 = pData->m_pCalcParam[0].m_pfParam;! \2 ?5 t5 W' v s% G9 [/ x
//const float* pValue2 = pData->m_pCalcParam[1].m_pfParam;
# s! B1 C9 {" s# n) v" k, [//const float* pValue3 = pData->m_pCalcParam[2].m_pfParam;
# H- T- m- I7 i7 |//const float* pValue4 = pData->m_pCalcParam[3].m_pfParam;+ @) F( a7 ]- A7 N$ M1 O
//const float* pValue5 = pData->m_pCalcParam[4].m_pfParam;
4 F# W# g, V- s# _) kif(nPeriod>0)
2 B" r" ]1 E; y! z& k |5 [9 C8 G{
1 V3 o/ b" C) tfloatfTotal;3 k7 G v h" ]8 B! L f* P
inti, j;9 N5 d; U8 r) Q& B3 o5 c5 y0 S$ f. U
intndata = pData->m_nNumData;
8 o9 u# m+ V% m1 n- }: v//float yy[5000][1];
. }' j! Z9 s5 X' Pfor( i = nPeriod-1; i < pData->m_nNumData; i++)//计算nPeriod周期的均线,数据从nPeriod-1开始有效 k) O A i) f2 ?2 i, y" X
{
' `1 n/ a" P) v4 J- h3 K; B' M8 ofTotal= 0.0f;& e( }. w! Y* a6 s) H
doublelngth=5.0;; y/ h' V' H! F" e/ p
doublectemp=4.0;, q% {- t/ F$ r5 P
//float yy1[5000][1];) g3 @- n( I8 V- z5 U' B
for( j = 0; j < nPeriod; j++ ) //累加9 }" F- W6 H9 Q+ G' i/ {- n5 P, M2 n
{
: E& b9 V1 b1 X3 A& T \+ qfTotal= pData->m_pData.m_fClose; // @@@@@@@ vc++ 2010 cl.exe 使pData->m_pData[i-j].m_fClose错误3 o$ M: s( o4 _6 ?( z1 i% p( X
}
& y: ^- \+ J# \$ H//pData->m_pResultBuf = fTotal*1.03; //平均' s6 x1 i; h. C- t' |
fTotal= cpParam3;
! a* v# Y1 I, YpData->m_pResultBuf= fTotal*1.03; //平均- R: T8 t' d5 m3 b$ K( G8 q6 E
//ctemp = (double) pData->m_pResultBuf; // double & - - - >overload a float value , double * - - - > overload a pointer todouble
. c* x$ S; ]$ C& \. d3 Q//pData->m_pResultBuf= (float) ppow10(ctemp,lngth); // float &- - - > overload a float value
, W$ k0 h6 Y0 q& J# RpData->m_pResultBuf=(float) ppow10( (double) pData->m_pResultBuf,lngth); // float &- - - > overload a float value, (float) = overload
2 x: p4 c1 K, D4 J}
6 V# c; w3 i. e7 a2 n) q5 z5 OreturnnPeriod-1;( U, b, Z3 Z. ]0 p" }8 s; k
}
$ P7 F3 c2 M( B b# v}
P6 H9 C1 ^2 }; A, z" g& p. Freturn-1;
& _0 v& e7 a' C& e) Q. |% S}
( u3 F, r g; Q) K( Q3 Z! ^+ b& H//计算均价,2个参数,参数1为待求均线的数据,参数2表示计算周期
; ~ E0 W% {& m7 b* _3 p//调用方法:
- S9 t$ ~ D P0 h. v//"FOXFUNC@MYMAVAR"(CLOSE-OPEN,5)
+ i& k3 Y3 J0 a5 E4 R1 a__declspec(dllexport)int WINAPI MYMAVAR(CALCINFO* pData)
/ E( T3 i3 y" Y; j{8 ]6 q9 c" H3 G- h
if(pData->m_pfParam1&& pData->m_pfParam2 && //参数1,2有效2 X; f' |5 g* }/ E# F# K9 X. P
pData->m_nParam1Start>=0&& //参数1为序列数
! G8 V' @2 j1 apData->m_pfParam3==NULL)//有2个参数; P# d1 |) |) B' Z* l
{: N8 v0 g3 X- M# x' J
constfloat* pValue = pData->m_pfParam1; //参数1+ I! d1 j. h4 N( M- o
intnFirst = pData->m_nParam1Start; //有效值起始位
/ Y4 u9 \( Q) |; V: ]( D; @floatfParam = *pData->m_pfParam2; //参数2
1 E3 T) k9 v, J2 {0 yintnPeriod = (int)fParam;
& r9 r2 F. w4 t/ J( Fif(nFirst >= 0 && nPeriod > 0 )
5 } L$ R& w" ^{/ k4 o9 { N) M2 L9 M; y% R
floatfTotal;
5 v& a! O, G& @% r( ]inti, j;* w& N( S, ~# {
for( i = nFirst+nPeriod-1; i < pData->m_nNumData; i++ )/ j/ s( Y* e% d3 q9 T
{& Q* k6 B z% x4 [
fTotal= 0.0f;
7 N' U1 C0 q. c) A0 o& Q3 Ffor( j=0; j < nPeriod; j++ ) //累加: u9 k' @8 ]* o, b; o
fTotal+= pValue[i-j];) J2 y) P5 P3 ]% W4 ~
pData->m_pResultBuf= fTotal/nPeriod;//平均
) w8 J/ R; D4 w8 J3 e}& D( l7 y# o9 f+ {' V2 a0 x1 l
returnnFirst+nPeriod-1;
; s( d3 V8 V" A$ w% d, i5 t- z}
. A8 O+ T$ u& w: H) A, g}8 m5 x0 [5 ^/ f
return-1;1 X8 W. Y7 q% x
}
' Y' }0 p& k; B& a2 d//计算多个序列的均值,5个参数,参数1-4为待求多个序列,参数5用于举例说明数值参数的用法,实际在此例中无需该参数- n, |7 T, G* n! i; T/ }7 _9 y
/*
0 E' Y9 E( M" J3 X调用方法:
^$ w5 v# R! m* h8 @& n9 WMA1:=MA(CLOSE,3);
& f. b) {9 o% \MA2:=MA(CLOSE,6);
5 O h6 `- M2 L- ~6 q7 m, p4 c7 L) vMA3:=MA(CLOSE,12);! i" p z' X4 A
MA4:=MA(CLOSE,24);
. J' R8 J5 i b9 E7 _, lMYBBI:"FOXFUNC@MYBBI"(MA1, MA2, MA3, MA4, 4);
6 H( W' I) X; V8 P( b( U+ S3 M*/
6 }- X( ^2 W% f) V/ \__declspec(dllexport)int WINAPI MYBBI(CALCINFO* pData)3 G" O* c0 [! N+ h* G6 ~
{" y( H2 B+ G1 j
if( pData->m_pCalcParam[0].m_nParamStart >= 0 &&9 T, j" s6 ~# K
pData->m_pCalcParam[1].m_nParamStart>= 0 &&4 m( v ?/ } r) E j
pData->m_pCalcParam[2].m_nParamStart>= 0 &&. [: T9 t4 g9 _2 h
pData->m_pCalcParam[3].m_nParamStart>= 0 ) //4个序列都含有效数值3 _$ i5 D% e' j* |- J6 Z
{ S; n) o# g- ]7 Q3 @' H1 X9 P+ s
//计算返回的序列的第一个有效值位置
/ t5 g7 L2 o; ~! \+ ?$ Y& GintnFirst = pData->m_pCalcParam[2].m_nParamStart;//已知返回的序列的第一个有效值位置与第4个序列一致1 _% A3 o; x- U& v6 X
//若不知,则9 l3 h; B; V0 E7 F7 ?' `
/*% i* ]2 B7 S# T5 d/ H* Y
intnFirst = pData->m_pCalcParam[0].m_nParamStart;6 ?) a+ I$ T7 h+ A+ `8 k' I
if( nFirst < pData->m_pCalcParam[1].m_nParamStart ) : q M& A/ K: ` \( C7 V7 [7 g
nFirst= pData->m_pCalcParam[1].m_nParamStart;
, v: K/ f3 a4 Y/ ?% O, @ L5 Fif( nFirst < pData->m_pCalcParam[2].m_nParamStart ) $ Q9 s6 w$ H# @1 z, `
nFirst= pData->m_pCalcParam[2].m_nParamStart;) o5 o# ]" n c+ c2 @1 V# l
if( nFirst < pData->m_pCalcParam[3].m_nParamStart ) * r" D) ]6 j! H& u+ F; n: O7 W8 z
nFirst= pData->m_pCalcParam[3].m_nParamStart;/ R! Y1 A% y" P6 ^' C& e
*/
; }5 U& U9 x, W( oconstfloat* pValue1 = pData->m_pCalcParam[0].m_pfParam;
2 P7 q* _) j% e! U2 |" u! P* F6 gconstfloat* pValue2 = pData->m_pCalcParam[1].m_pfParam;- Z1 \9 i# u9 |% }$ X4 }
constfloat* pValue3 = pData->m_pCalcParam[2].m_pfParam;5 m8 b6 {1 y' W, L1 W1 R
constfloat* pValue4 = pData->m_pCalcParam[3].m_pfParam;
% S% Q) d) a6 R+ T3 M( Yconstfloat* pValue5 = pData->m_pCalcParam[4].m_pfParam;
3 K1 {4 L( m I- |+ mconstfloat* pValue6 = pData->m_pCalcParam[5].m_pfParam;7 F) O7 j7 `! _
//const float* pValue1 = pData->m_pfParam1;
1 ~8 D3 B* f0 m' K4 c" w6 n//const float* pValue2 = pData->m_pfParam2;
- w/ k @1 E: B4 ?3 ^' T9 r( }//const float* pValue3 = pData->m_pfParam3;
4 D( \, z/ L0 U: P//int nNum = (int)(*pData->m_pfParam4);//实际上该例中已知nNum=4,在此用于说明数值参数的用法
8 \% e- x! x0 E1 tintnNum = (int)(pData->m_pCalcParam[6].m_fParam);//实际上该例中已知nNum=4,在此用于说明数值参数的用法2 d1 V3 _" y4 v+ H4 L* ]7 j; U/ L+ [% n
for(int i = nFirst; i < pData->m_nNumData; i++ )6 e" c" x) |6 ]
{) J4 @+ e9 V- a; d
pData->m_pResultBuf= ( y" \, k" `) H- d1 |9 a# z8 x5 `
//(pValue1 + pValue2 + pValue3 )/nNum;( B, q: n3 u/ V( J; Z3 e0 g
(pValue1+ pValue2 + pValue3 + pValue4+pValue5 + pValue6)/nNum;
" t9 o+ j" A8 _" a" Z/ ^6 f) z3 a}
8 o% i) L: X; o) ^' lreturnnFirst;3 T5 d- q: {) R( N8 `
}6 _- v/ M+ p' X6 x% X' {7 T0 p, \1 H8 A
return-1;
, h4 f3 {- F" q" a# J" g/ \4 |}
: }' Z8 s$ C7 u4 E! P
2 ~: j( \/ o; Y# d9 Y+ O" ?, C3 G9 p: d, P3 Z' ?
8 }) P& U9 i# o6 `3 p2 \
//////////////////////////////////////////////////////////////pow10.asm
, R1 ]$ R! y$ K! H- G+ Z9 i4 Q: D;*******************************************************& _3 i) {0 O& \0 m
;* *; D0 L$ v9 }+ Y' e' i
;* Delphi Run Library *9 K+ P' Y8 r! x6 l
;* *
8 F8 M" S8 a' U- U, [. X;* Copyright (c) 1996,98 Inprise Corporation *" ]. q8 V8 c% F; e. s! W0 ^
;*--------------------------------------------------------------------------7 i S0 Q7 E3 l
;* To compile "tasm32 /ml pow10.asm" *
8 r# y$ L! e3 E% K- B/ D;*--------------------------------------------------------------------------/ M- H" F3 h4 f( ^
;*******************************************************
l8 F/ k; G g) f/ o6 W5 I& t.386
q T r# u* _8 z n6 w ^# I;.MODEL flat,c (error must be in segement block must have segment
1 P& t) @4 z. L3 |2 e;!!!!!11 important if ',c' is not used , must use 'public _ppow10, and'_ppow10 proc') Z2 D7 |" u8 Y3 q2 ], J ^2 z
;!!!!!11 important if .MODEL flat,c is not used , must use ;_TEXTSEGMENT WORD PUBLIC
3 v. q- Z8 Q2 B M3 _6 l6 ?;'CODE'..._TEXT ENDS and must use 'public _ppow10 and '_ppow10 proc'
, W+ E; U' t5 r4 w# U( U4 k+ d.MODELflat,c ; just use .code, no need for segment,!!!!!11 important if',c' is used , must use 'public ppow10, and 'ppow10 proc'1 v: [' K8 D5 @; y
;ppow10 PROTO,aVal:PTR REAL8, bVal:PTR REAL8
% H# p# `3 |) ]9 j6 T; k;includeE:\Vsource\masm32\INCLUDE\windows.inc
" W+ z0 }3 @, j% k$ j- g4 `;includeE:\Vsource\masm32\INCLUDE\user32.inc+ h1 S3 M; J$ H! D& U% p1 s& R, [
;includeE:\Vsource\masm32\INCLUDE\kernel32.inc
' R1 l7 _, P5 {8 X( K) mPUBLICppow108 r' |4 J8 c$ U+ X/ ~9 S
.CODE' L* o, e2 m, N- T
;DllEntryproc hInstance:HINSTANCE, reason:DWORD, reserved1:DWORD
# Z2 E* r+ g( G+ G2 i k6 P; Y;.if reason==DLL_PROCESS_ATTACH. U% m4 L7 F5 _8 S4 v8 x
;invoke MessageBox,NULL,addr LoadMsg,addr AppName,MB_OK J( L$ g0 V3 `! [ V
;.elseif reason==DLL_PROCESS_DETACH
T# i' C" k- \% p" A;invoke MessageBox,NULL,addr UnloadMsg,addr AppName,MB_OK
! W" F8 ^ k( S1 s: D% g;.elseif reason==DLL_THREAD_ATTACH# g% u) w1 o5 O7 D l( t
;invoke MessageBox,NULL,addr ThreadCreated,addr AppName,MB_OK8 v: e% Q; b9 B: l% k' x
;.else ; DLL_THREAD_DETACH+ w. |' k: x f A& e1 H6 O
;invoke MessageBox,NULL,addr ThreadDestroyed,addr AppName,MB_OK
) _2 X* L- h! s: f5 {5 ^! o3 _;.endif
# m) I. C2 r6 L* B+ L. w& z" |;mov eax,TRUE0 M' L. A+ c E% I( D' |
;ret( X& [1 c U, B4 k
;DllEntryEndp
( Z: k: m1 e+ |;FUNCTION _Ppow10( double val, double pow: ) : Extended;
9 P3 A8 N) |8 C" B4 i;_TEXTSEGMENT WORD PUBLIC 'CODE'
8 Z+ z$ L$ c2 t( ?;ppow10 PROC,aVal:PTR REAL8, bVal:PTR REAL8
" N1 X* x$ A+ @ X$ B;ppow10 PROC,aVal:* Qword, bVal:Qword* V" D. p; S; v3 ]
ppow10PROC near4 q$ }6 \- r3 l
XUEQU 8 ; for eip & ebp
# j1 p P |% d% L; J& zXDEQU 0 ; for edi, esi, ebx, ecx, edx4 R" ^3 C9 r, t% i" |
fp_powerEQU QWORD PTR [ebp+XU+8]
' T. Z1 k+ N' E$ {0 ~fp_valEQU QWORD PTR [ebp+XU] ) D) Y! ^- N. X* d& M
valEQU QWORD PTR [eBP-XD-8] ; USE STACK
5 j: b3 b! @# x6 g& Y7 ZpowerEQU QWORD PTR [eBP-XD-16] ; USE STACK
# w6 n5 ?% O4 N8 m! l9 c( S/ npow10EQU QWORD PTR [eBP-XD-24] ; USE STACK: ^; l$ J1 k% h# z* ?3 \
FPower10:' N& Z' w( a; @5 Q- L8 v
pushebp, y' A+ S9 v% }# H: _
movebp,esp
- m) p& {; k4 M6 a( N;push edi1 C- J. K% }5 v" k S1 O' `7 V
;push esi8 a3 T5 n$ c0 a* ^+ {
;push eax+ o; r2 }1 j7 m/ v; A4 {; \, ^. a
;push edx
' K% n# |/ Q2 H% {subesp,248 i& }% a9 O; l
FINIT9 F+ B0 Q6 ~( f4 R1 ?; E/ R
fldz# i$ o$ y" w& x$ x& O
fstval
' U* a( n+ t* s, ?fstpower
0 j; [* B$ a0 ]% sfstppow10+ `! f9 ?) d# y3 \5 k0 k, m
MOV EAX,8 MOV EDX,8; fldpi) e4 _& g7 |# T) G: W& o, f
fld fp_val ;st(0)=val; fld aVal;st(0)=val
" H3 G/ L! y9 L! u u+ L! \fstval
$ t4 O/ ]8 v) R: H/ p, _% c8 n; J" M;fld Arg2 ;st(0)=power* r _. r* O/ n0 @. S2 D
;fstp power
" l) J( ]7 q0 |3 }& O. Z6 D;fld val ;st(0)=val9 Z; `; k0 j( z1 E' ~
;fmul val ;st(0)=val*val" L0 N# K' _8 e: K6 y& ~' t* O8 y
;fmul val ;st(0)=val*va*val
5 j( [! E% Y2 n0 I;fadd st,st(0)
: h7 P8 z9 G" C+ M4 p;fmul qword ptr [ebp+16] ;st(0)=power8 |! s' F, x; y, H. \& X3 I
;fadd st,st(0)' o0 T2 h8 z I% P( J
;fwait9 y+ o, `6 Z7 O& p3 F
addesp,246 U8 p* a" B' ~5 y
;pop edx
: |8 O" S3 m5 G' b1 W. V;pop eax
, P9 O) G& I+ N;pop esi4 X8 j a. P- z& E8 r3 ^: j3 E: w
;pop edi8 Q6 B; w8 Q2 j5 T3 O& o$ H R
movesp,ebp
4 i$ }7 K0 i& g% epopebp& Y. K! q- \* W6 f
;leave ; @@@@@@ important don't use leave in vc++ 2010+ p" b& h- L: z, H9 p6 s% u/ ?, R# L
RET;return value = st(0)
" N _; Z7 q. u/ n w* o eppow10ENDP
( E. i( |. _8 `+ s. l3 Z;_TEXTENDS. S+ j( x' W \
END
- d, g/ V6 p3 z: M6 T( M;END DllEntry |