//////////////////////////////////////////////////////////foxfunc.cpp/ }4 F/ v5 G7 q8 D" r
6 e& ?7 ]( G0 k' u" m//FoxFunc.cpp : Defines the entry point for the DLL application.3 [# {/ _" \- c
//; h1 j$ H! o; v a* G P% y
#include<string.h>
: X, Y6 ]2 A& R#include<stdio.h>6 N! J9 D9 M8 j C V
#include<io.h>
- h! E% r9 s7 V7 I2 M; N#include<math.h>! H& o/ U( w6 f! a) T2 P
#include<iostream>
7 k4 R7 ~5 ]! W#include"stdafx.h"" X% X% s {+ I w; X5 b- ?2 |
#include"FoxFunc.h"
( N1 V& }# `2 x2 o& N6 r" v4 Busingnamespace std;8 |4 ~; r `4 u9 E
BOOLAPIENTRY DllMain( HANDLE hModule,
; v; y# H& ?# c- j9 Z: k; i7 iDWORDul_reason_for_call,
; J. N" F, t/ b2 MLPVOIDlpReserved
' ?: m) x Z& h& R% X% m" L). |+ V9 h; Q1 O+ t4 i5 H# @
{
6 r! G( S9 H1 |$ w6 s+ j" x/ d* S: fswitch(ul_reason_for_call)
5 u6 |8 y- `: k3 t E7 N{: q& h: R; r- U+ d: w. o* n
caseDLL_PROCESS_ATTACH:/ n; _" \" r4 l9 O
caseDLL_THREAD_ATTACH:
, ]3 E9 T5 D YcaseDLL_THREAD_DETACH:
1 n5 _( S: R) qcaseDLL_PROCESS_DETACH:# }6 L T' R* r$ l) a# e
break;
7 D' R% L# X# H/ B n}
% t S; D/ q9 _. v; mreturnTRUE;
* n- ^/ R% [, j$ H}
9 _7 Q6 `2 l& Q" m//计算收盘价的均价,一个常数参数,表示计算周期
3 ~5 F+ T, j! K4 M//调用方法:1 u: ?9 ~( w8 J! V6 C/ W' |, c. |
//"FOXFUNC@MYMACLOSE"(5)9 b0 V+ }- _ v) O$ e5 B
/*" f; l' l7 k2 u/ f3 d7 Y
//extern "C" double __cdecl ppow10(double ctemp,doublelength); - - - > wrong, extern "C" is to declare pow10coming from a .dll or .lib. l9 z) b" f C2 I: o
//extern "C" double ppow10(double ctemp,double length); - - -> both are the same
; \2 Y# b& N. |+ z1 R; ^*/( ~9 ?4 D; ]. G; U& Q
extern"C" double __cdecl ppow10(double ,double );
# G# L3 H& X9 o//double ppow10(double ,double );
$ J4 K, J$ c3 ]4 |, D$ D* [//call pow10() by __cdecl9 v- j5 b/ j7 K( b& e5 P m
//!!!!!!!! use "C" for Microsoft visual C++ compiler+ ?" A( r! q0 J' X+ w
//!!!!!!!! use "C" for Microsoft visual C++ compiler0 u6 J7 i; B8 [$ D+ f/ l( { r
//!!!!!!!! use "C" for Microsoft visual C++ compiler
& P$ q- ~9 K9 d# N$ {$ P//!!!!!!!! use "C" for Microsoft visual C++ compiler% s8 p* l% P7 S7 w
//!!!!!!!! use "C" for Microsoft visual C++ compiler+ K; S8 |9 H' Y' H
__declspec(dllexport)int WINAPI MYMACLOSE(CALCINFO* pData)
8 a, o5 V" f" p& d; o{
3 h- D, S0 p3 Xif( // pData->m_pfParam1 && //参数1有效
7 S3 Z. ~; ^" H# |//pData->m_nParam1Start<0 && //参数1为常数( ^+ C, W. a5 M) g- D$ |0 `( b
//pData->m_pfParam2==NULL ) //仅有一个参数. y! ^( P, s5 M- o4 V5 l, ~
//pData->m_pfParam1 && pData->m_pfParam2 &&pData->m_pfParam3 && pData->m_pfParam4" f% [) j. g/ |! j, z; ~! m+ P
//&& pData->m_pfParam5 && pData->m_pfParam6 &&pData->m_nParam1Start>=0 &&8 J9 H3 p' c1 `' N
//pData->m_pfParam7==NULL)/ z0 K' a' m0 e9 [+ l7 M5 K
//pData->m_pfParam1 && pData->m_pfParam2 &&pData->m_pfParam3 && pData->m_nParam1Start>=0 &&$ ^5 N' X" T R9 g: d1 q
pData->m_pCalcParam[0].m_nParamStart>=0&& pData->m_pCalcParam[1].m_nParamStart>=04 v' {% ~! N, _ P
&&pData->m_pCalcParam[2].m_nParamStart>=0) + r* x& {$ m- k1 O7 `) l" F
{
( }5 z% J0 G$ l8 F6 S5 ]9 mfloatfParam = *pData->m_pfParam4; //pointer ,pData->m_pCalcParam[3].m_nParamStart >= 0
2 g6 ~; r; ^! O9 e* P& aintnPeriod = (int)fParam; //参数1
# |9 T" Q- C \2 h1 L//const float* cpParam = pData->m_pfParam2; // cpParam = pointer to + p9 d& n+ l# o* b4 e
constfloat* cpParam2 =pData->m_pCalcParam[1].m_pfParam; // cpParam =pointer to
" x8 g5 y" r" I3 sconstfloat* cpParam3 =pData->m_pCalcParam[2].m_pfParam; // cpParam =pointer to
' X+ O% J; |+ D. sconstfloat* cpParam4 =pData->m_pCalcParam[3].m_pfParam; // cpParam =pointer to
^( K# z6 b) q//const float* cpParam5 =pData->m_pCalcParam[4].m_pfParam; //cpParam = pointer to & C7 ^+ d+ T( c( V+ u
//in foxtraderoooq:"MYFUNC2010@MYMACLOSE"(c,c,c,6),colorffffff,linethick5;// cpParam5 =pData->m_pCalcParam[4].m_pfParam $ @$ t. o- l) m% A' Y" | ?
//pData->m_pCalcParam[5].m_fParam); //value
0 E% s4 U/ _4 F( L8 C' u//const float* pValue1 = pData->m_pCalcParam[0].m_pfParam;' W) w3 B2 U0 K
//const float* pValue2 = pData->m_pCalcParam[1].m_pfParam;
; ?; c, ?4 N$ @ O. l7 L//const float* pValue3 = pData->m_pCalcParam[2].m_pfParam;. K' B, a- ? I0 ]" E
//const float* pValue4 = pData->m_pCalcParam[3].m_pfParam;. J+ Y9 Z' l u% y. [: i e
//const float* pValue5 = pData->m_pCalcParam[4].m_pfParam;
- D/ c& } L1 i* B: P& fif(nPeriod>0), N/ u! u/ Y! Z/ W7 p$ F
{
: }! e, T) k/ R# efloatfTotal;
" }$ l w: c$ l g `8 Y$ C3 `inti, j;
% G- k# |/ M4 b7 W$ [& Qintndata = pData->m_nNumData;, @, h4 ]2 F% S
//float yy[5000][1];" j! I* Z9 P; _( K! y
for( i = nPeriod-1; i < pData->m_nNumData; i++)//计算nPeriod周期的均线,数据从nPeriod-1开始有效
; ^; O% F$ T5 ^3 U{
0 }5 z$ j `0 W$ |fTotal= 0.0f;3 s! k8 x3 B( v5 n7 _
doublelngth=5.0;
& ^) V$ p$ Y! n' }$ R8 f" kdoublectemp=4.0;- V c/ C( S+ n+ z' k8 i# \: s
//float yy1[5000][1];3 a' U, U1 l7 S" x7 n" P
for( j = 0; j < nPeriod; j++ ) //累加
0 [+ T3 q$ }6 Q0 x4 w{
5 Z+ f( g1 u$ Y6 zfTotal= pData->m_pData.m_fClose; // @@@@@@@ vc++ 2010 cl.exe 使pData->m_pData[i-j].m_fClose错误2 ^) d% A' c* Q, M+ |
}2 b) y$ ]# a- g) U/ T
//pData->m_pResultBuf = fTotal*1.03; //平均+ K6 Y* K/ w5 r* H- v* ^6 c
fTotal= cpParam3;0 B9 _" j: {$ t8 {
pData->m_pResultBuf= fTotal*1.03; //平均" S- a& }% _2 Z6 I' p+ b9 t
//ctemp = (double) pData->m_pResultBuf; // double & - - - >overload a float value , double * - - - > overload a pointer todouble' O+ c4 o) W% p( g5 x
//pData->m_pResultBuf= (float) ppow10(ctemp,lngth); // float &- - - > overload a float value
# K" z$ h- C1 |( w- X) d( P" opData->m_pResultBuf=(float) ppow10( (double) pData->m_pResultBuf,lngth); // float &- - - > overload a float value, (float) = overload4 m2 r3 M4 U- ]. u* u, W2 I. ]
}- C7 b! B8 I8 W! W% @! p, H: S
returnnPeriod-1;0 }8 ~7 g8 _. s8 u. g$ l
}( T/ E) p8 g9 E; S- e
}
$ B5 W& x' c+ S& o) ]+ Oreturn-1;
! W) A) z- }3 \, H! v/ f}: B' E& T8 o o3 V; R- t
//计算均价,2个参数,参数1为待求均线的数据,参数2表示计算周期: w1 l2 U9 b% n5 d, d3 [
//调用方法:
6 Q9 ^! S6 c4 y3 O6 F//"FOXFUNC@MYMAVAR"(CLOSE-OPEN,5)
$ }1 }6 e# x7 F& r# B__declspec(dllexport)int WINAPI MYMAVAR(CALCINFO* pData)
# a' _: ~- z+ x: a2 {. u! o, @, Z{
, ?, l" k" h/ `3 [" @& k( ?if(pData->m_pfParam1&& pData->m_pfParam2 && //参数1,2有效
- f* E0 O. ~+ k5 lpData->m_nParam1Start>=0&& //参数1为序列数
# z8 r6 Y; e8 C( T# ~pData->m_pfParam3==NULL)//有2个参数: _% a$ A* v5 n) t
{
9 u6 T0 k+ v" x; g% t- y( Oconstfloat* pValue = pData->m_pfParam1; //参数1% @; I/ v' [6 [; h1 B3 j/ [' l* R
intnFirst = pData->m_nParam1Start; //有效值起始位) K8 D L; W" I" z, f& ?( M, |
floatfParam = *pData->m_pfParam2; //参数2
F( f6 @: I. r* O4 M& p- mintnPeriod = (int)fParam; 0 X5 X$ J9 u; r
if(nFirst >= 0 && nPeriod > 0 )1 b, k, ~; Z, F0 T& x# ~
{3 |1 H- r4 N0 O A- F
floatfTotal;
: y7 x% s( ^7 |! _4 _+ s$ Einti, j;# G0 y, r" I1 u/ Q0 ^& k" I5 }
for( i = nFirst+nPeriod-1; i < pData->m_nNumData; i++ )2 l* U3 D/ C( k
{! i& p8 }% ~' F. u0 R; T
fTotal= 0.0f;9 w) f/ M0 `% D; @ X* W
for( j=0; j < nPeriod; j++ ) //累加. J% T9 B9 _+ Q0 _2 `* H( K
fTotal+= pValue[i-j];
& t% G7 R! U' Z3 R; M. ]pData->m_pResultBuf= fTotal/nPeriod;//平均. } i9 [, L1 g
}
5 Z P P" ^; K, R$ X. I. NreturnnFirst+nPeriod-1;
! v) X$ k! e. [0 o}
. E4 [& _9 j* O}
# p- ?& @6 \; j y) Xreturn-1;4 t, U: i3 v+ U) u9 x* s
}: j1 S! {- p) F, ~, g
//计算多个序列的均值,5个参数,参数1-4为待求多个序列,参数5用于举例说明数值参数的用法,实际在此例中无需该参数6 i( ^6 O/ {1 l" }+ R
/*
9 U6 N8 W! s3 b4 b5 I, Y" a1 c调用方法:
x: k" _5 \/ Q# l* D6 u M* XMA1:=MA(CLOSE,3);
8 s3 r/ c0 z/ CMA2:=MA(CLOSE,6);
* o6 {$ u- w9 [( Q$ @9 sMA3:=MA(CLOSE,12);
4 o; j: f5 ~( c UMA4:=MA(CLOSE,24);
% u: b& Y( ], k- ]4 ?MYBBI:"FOXFUNC@MYBBI"(MA1, MA2, MA3, MA4, 4);
; n0 |* t8 X& v" n2 ?% ]8 }7 w*/
0 H2 i6 X( l: R9 D( E/ e/ V# S z9 |__declspec(dllexport)int WINAPI MYBBI(CALCINFO* pData)
" y: D: ^1 m" t' f% [. s{2 A) A" ?! X5 _; A, w# A
if( pData->m_pCalcParam[0].m_nParamStart >= 0 &&: W9 e! g$ ~! ]1 H* G) ~
pData->m_pCalcParam[1].m_nParamStart>= 0 &&
0 ~* j1 b$ C3 N3 u& P+ rpData->m_pCalcParam[2].m_nParamStart>= 0 &&
2 c2 P; P# c( L$ t; \7 m4 ^1 bpData->m_pCalcParam[3].m_nParamStart>= 0 ) //4个序列都含有效数值7 X1 H( }# Y# ^; P# X
{
8 K% w; \) o+ e& g9 L//计算返回的序列的第一个有效值位置
4 u% U- v4 J+ J2 OintnFirst = pData->m_pCalcParam[2].m_nParamStart;//已知返回的序列的第一个有效值位置与第4个序列一致+ r/ X) y- Z; `5 o% X. T# ~
//若不知,则6 Q' N6 Z! L0 c- t2 L( D9 }- J; G2 m8 \
/*
8 b# H/ h. C ?1 U& |' kintnFirst = pData->m_pCalcParam[0].m_nParamStart;
3 x4 {* ~* G6 ^! A4 \+ G# eif( nFirst < pData->m_pCalcParam[1].m_nParamStart )
0 O# c) O( g5 f" Z& qnFirst= pData->m_pCalcParam[1].m_nParamStart;1 r; @3 a+ r+ b% \% Q) N
if( nFirst < pData->m_pCalcParam[2].m_nParamStart )
5 C2 ]9 q) C0 N" O; C' ~9 d$ ^' hnFirst= pData->m_pCalcParam[2].m_nParamStart;
7 }, a, t5 l) L) m. x+ eif( nFirst < pData->m_pCalcParam[3].m_nParamStart )
! @, H% p, r! S+ \, {3 W1 C* p& xnFirst= pData->m_pCalcParam[3].m_nParamStart;* G% n' v2 I/ a/ T5 O! N
*/
' y- m: o( e/ E2 R1 D; H9 _constfloat* pValue1 = pData->m_pCalcParam[0].m_pfParam;& Q$ C T; ~$ ~6 G, v
constfloat* pValue2 = pData->m_pCalcParam[1].m_pfParam;
: m$ f1 T5 o! T( H3 u" M, c; lconstfloat* pValue3 = pData->m_pCalcParam[2].m_pfParam;
/ n2 U- [. u* Q4 c- g1 P1 M* Uconstfloat* pValue4 = pData->m_pCalcParam[3].m_pfParam;
& D. r) I# y& Wconstfloat* pValue5 = pData->m_pCalcParam[4].m_pfParam;
2 ]2 y- G6 ]" c4 ~6 hconstfloat* pValue6 = pData->m_pCalcParam[5].m_pfParam;
8 J t+ {6 a1 H; n//const float* pValue1 = pData->m_pfParam1;& Q1 m) r3 R- N* U$ X
//const float* pValue2 = pData->m_pfParam2;$ P9 `2 E( J, g. G! X9 ]1 A
//const float* pValue3 = pData->m_pfParam3;
* E0 }4 `2 S8 i' E- ]! J//int nNum = (int)(*pData->m_pfParam4);//实际上该例中已知nNum=4,在此用于说明数值参数的用法
) ^# P. X+ ^, @intnNum = (int)(pData->m_pCalcParam[6].m_fParam);//实际上该例中已知nNum=4,在此用于说明数值参数的用法
+ `! v3 Q2 k7 h* M: u9 dfor(int i = nFirst; i < pData->m_nNumData; i++ )
1 Y" D* W$ v/ W7 t" Z) n{
2 @7 P, `8 `0 kpData->m_pResultBuf=
8 t" b& c" o/ a( l! N/ L//(pValue1 + pValue2 + pValue3 )/nNum;
) N5 A, H& ~, a9 a0 A! {4 g1 Z(pValue1+ pValue2 + pValue3 + pValue4+pValue5 + pValue6)/nNum;
) | j- V, S% V4 t& {# m' |}
/ w! x8 R, L: ]" P3 `returnnFirst;
' d3 B% Z8 G) S}) s ~" L8 t6 ?
return-1;# r p4 g* h* T, d" w
}8 W3 |0 X( X- ?% b
+ V8 ~% u6 w! _& i! E3 d, ^% _" ^/ A# Q$ f
% @3 O+ s8 b$ M& S3 J" N. l) [//////////////////////////////////////////////////////////////pow10.asm
+ ~8 _& V' G$ z _ \;*******************************************************9 @" k0 w: A+ e" l7 M( X7 z v
;* * O' ]$ |; H" R' x1 x4 O# N- i
;* Delphi Run Library *
. D" T# }9 Z* n9 y( O9 [;* *9 l# P% q7 \% [/ i2 z8 X
;* Copyright (c) 1996,98 Inprise Corporation *
( L4 N0 I4 H: I# r( c# j% F( a Y;*--------------------------------------------------------------------------- Z& I6 p# u3 n! Q* e! d1 N
;* To compile "tasm32 /ml pow10.asm" *
0 ~! L5 h: v% D- i8 o;*--------------------------------------------------------------------------/ J" o1 a/ A" [+ u3 i. V4 r- b
;*******************************************************" w: j6 r! b% n A8 q3 K6 V
.3866 ~; Y/ u( ?2 t& ]" g5 g2 V
;.MODEL flat,c (error must be in segement block must have segment
/ J. |. R: T, j;!!!!!11 important if ',c' is not used , must use 'public _ppow10, and'_ppow10 proc'
, G' X' T$ G% j: D' C8 c- Y;!!!!!11 important if .MODEL flat,c is not used , must use ;_TEXTSEGMENT WORD PUBLIC+ {5 J% Q7 N" U" J ~2 D5 r9 g
;'CODE'..._TEXT ENDS and must use 'public _ppow10 and '_ppow10 proc'
% o" E, B8 @ P.MODELflat,c ; just use .code, no need for segment,!!!!!11 important if',c' is used , must use 'public ppow10, and 'ppow10 proc'
1 {* l1 r7 D3 i# |$ c;ppow10 PROTO,aVal:PTR REAL8, bVal:PTR REAL8
( X/ w' l: n/ P& D. J;includeE:\Vsource\masm32\INCLUDE\windows.inc
( ]5 T3 j0 @7 L& p; i1 `;includeE:\Vsource\masm32\INCLUDE\user32.inc; `. v+ `, W( z0 j
;includeE:\Vsource\masm32\INCLUDE\kernel32.inc; h& a: s. l5 t3 }5 R, @$ N
PUBLICppow10
$ |1 I: K: d( I3 ?6 }# E& U% y.CODE
; ]% }( d0 ]' W9 T# n. w4 h;DllEntryproc hInstance:HINSTANCE, reason:DWORD, reserved1:DWORD) P/ c1 [% A" ^! ^# F3 L G1 ~
;.if reason==DLL_PROCESS_ATTACH5 |: ~% X( {, A4 P0 E
;invoke MessageBox,NULL,addr LoadMsg,addr AppName,MB_OK4 A/ Z& \* a$ a: {. o
;.elseif reason==DLL_PROCESS_DETACH, c! f) E0 i5 U0 V- v! _
;invoke MessageBox,NULL,addr UnloadMsg,addr AppName,MB_OK* D2 i; r1 ~& p/ N4 z: ?* _. {, l
;.elseif reason==DLL_THREAD_ATTACH. [/ e8 P8 r! a' f* }
;invoke MessageBox,NULL,addr ThreadCreated,addr AppName,MB_OK5 M. R* S3 g a4 A" S& g* ~- ^3 ~
;.else ; DLL_THREAD_DETACH% t8 _! q$ z" D# N u
;invoke MessageBox,NULL,addr ThreadDestroyed,addr AppName,MB_OK
. d0 b) A. J9 M/ C- ?7 p+ B& C;.endif
; F p4 i5 ?& R;mov eax,TRUE
2 {- w6 U& l; X6 @+ y;ret1 Y' Q. g6 G/ q/ O7 _6 u
;DllEntryEndp
* t8 b$ M. x% |9 e6 S, B0 P;FUNCTION _Ppow10( double val, double pow: ) : Extended;
3 E6 K/ }% m& C$ ^4 a R4 ^;_TEXTSEGMENT WORD PUBLIC 'CODE'
8 I& k" h3 ?1 G+ o$ \! Y- E B;ppow10 PROC,aVal:PTR REAL8, bVal:PTR REAL8
# y. _7 X: ]8 A;ppow10 PROC,aVal:* Qword, bVal:Qword
- i# V% T" H+ ]2 z9 B% N* Jppow10PROC near
* M( u3 Q1 D& I! g' UXUEQU 8 ; for eip & ebp
a, n. n1 K7 g+ [( P/ Q: d1 bXDEQU 0 ; for edi, esi, ebx, ecx, edx
9 X* K" t$ X8 ?6 B4 p* e3 jfp_powerEQU QWORD PTR [ebp+XU+8]) w7 N" s/ D4 }9 C. h
fp_valEQU QWORD PTR [ebp+XU]
* }' T; }4 n/ X+ F0 g* z+ fvalEQU QWORD PTR [eBP-XD-8] ; USE STACK
1 t5 R8 U+ P, j2 A( k$ \powerEQU QWORD PTR [eBP-XD-16] ; USE STACK' c v6 c; R* f2 `
pow10EQU QWORD PTR [eBP-XD-24] ; USE STACK: w$ }, g' X2 T) t6 `6 l
FPower10:
. |0 n8 R3 F) y) ]pushebp) N ~+ u3 ~6 x! q e: k
movebp,esp% g# Q7 k; a% M2 L, k0 Q: e
;push edi
% K0 A- D4 A3 A& N;push esi) Y% E* }/ l* K/ y) i. a( W
;push eax
7 P0 M; o( U5 M! V& X r8 K;push edx3 i3 p2 y+ E- r
subesp,240 y5 j7 b, T* X9 o0 U$ E
FINIT# d* r( Z3 b- Z4 P9 @4 x) E1 a
fldz
2 L: U& m# G1 yfstval
; _1 H/ q$ s' q! ?/ o; Qfstpower
9 `2 ~9 j5 z. ^2 _- e& {" Q( gfstppow10
2 }; Q0 f3 L0 p9 Q3 Q MOV EAX,8 MOV EDX,8; fldpi- I" I2 m+ U U! }7 }, K
fld fp_val ;st(0)=val; fld aVal;st(0)=val' _5 h% ? P, Y5 M, g- T$ ]* R
fstval
" w6 o8 u. {9 L3 i* u1 v ?' p* M- G;fld Arg2 ;st(0)=power$ G+ ^7 i, @5 w- o( O
;fstp power+ s% N3 ]. U) C& X4 h& d* q0 n
;fld val ;st(0)=val4 y! H; `- O- b- e5 {
;fmul val ;st(0)=val*val
, k, d2 y6 X% D! k( K$ S8 T3 R! X# p, L;fmul val ;st(0)=val*va*val
5 i1 }' ]4 i% P, ]6 z% m2 f8 L;fadd st,st(0)+ Z/ N) r6 i1 c- F! ^' G6 [% C
;fmul qword ptr [ebp+16] ;st(0)=power, J8 D/ C- B1 a( l
;fadd st,st(0) n. H8 m! ^! E) n& g1 F5 A3 P
;fwait
- S# U. E( H- Vaddesp,24
+ m( n }$ q. k# F y3 n# v;pop edx+ @2 f) I) K- F( {, A* R
;pop eax6 D( N2 P& M$ |/ z9 B
;pop esi5 g: c- X; U; V# r. W" P
;pop edi3 F/ s+ S) W2 t) p4 t1 y
movesp,ebp
1 b, O: H; m A& E' C) E) Vpopebp
" P, K, G/ @- y/ }& c;leave ; @@@@@@ important don't use leave in vc++ 2010
7 Z8 c2 z1 m p% f6 O2 cRET;return value = st(0)5 w+ R% \ Y& y& Q s! t
ppow10ENDP9 N7 j9 }* d: o$ Y0 w1 R
;_TEXTENDS! g8 C {& j5 M# @' `; T! z# {
END) g0 d. @" |+ t5 T3 L
;END DllEntry |