//////////////////////////////////////////////////////////foxfunc.cpp
9 y$ q6 W3 i# S2 d% B
V" a& c/ c$ \. ?6 o//FoxFunc.cpp : Defines the entry point for the DLL application.& K5 @* Y* K- Z5 Q3 I3 E
//! b* m+ `7 Z$ n, [; @, v! Y$ s
#include<string.h>, C/ S/ U' V" o P" A# E2 o
#include<stdio.h>
6 y) r2 K" _( C9 j) C$ ^# @% |#include<io.h>
4 L$ O/ Z' t/ O" q. z$ v#include<math.h>( x! Z+ X/ O& F% H5 P
#include<iostream>- g- M- \2 j/ f9 ~ J* Y2 J7 O! g4 k) X
#include"stdafx.h"
! O" x& P- Y4 G#include"FoxFunc.h"
7 ?" P4 e& l( p, {* s4 tusingnamespace std;
: c8 q4 _& T, gBOOLAPIENTRY DllMain( HANDLE hModule, , g: a7 r% Q8 @: g
DWORDul_reason_for_call,
3 ?$ G9 x5 {/ L3 z- H. |LPVOIDlpReserved) r9 D* f( X, ]& J9 T
)
1 a* S* p( n% H9 V! [. m{
$ y$ H6 @2 o8 m; q: b8 Mswitch(ul_reason_for_call)
: o% ~( z+ e7 J' A) n{" J8 z8 y4 r% U/ D, S
caseDLL_PROCESS_ATTACH:: I9 Z/ M0 W E% W# v. W. g
caseDLL_THREAD_ATTACH:. A2 J" h1 S" m# I0 m4 d6 _& n
caseDLL_THREAD_DETACH:% L4 w% ^; F% G& h
caseDLL_PROCESS_DETACH:
1 O# A$ L, U" a q: ?0 V! mbreak;
% m2 C( w6 M( N& P}2 c2 Q2 p3 o1 H y: z5 A
returnTRUE;
6 W4 `# J( F" u8 W+ x* ^1 }5 h}
$ P, O3 W* Y1 |//计算收盘价的均价,一个常数参数,表示计算周期
# x) P, `) j; i) M" P8 P! J//调用方法:& I) r u6 c9 P4 {) ~- Z/ L
//"FOXFUNC@MYMACLOSE"(5)6 B# l5 `6 `( U2 d8 X
/* S& n9 F# {- C: @" }8 }
//extern "C" double __cdecl ppow10(double ctemp,doublelength); - - - > wrong, extern "C" is to declare pow10coming from a .dll or .lib( M; X, m) t! e( a4 u }$ F B
//extern "C" double ppow10(double ctemp,double length); - - -> both are the same9 e7 X0 e8 \9 ]# n5 n( {
*/
2 T6 y1 h% }9 j8 H: [# ~extern"C" double __cdecl ppow10(double ,double );8 a ~1 f# m0 b, V0 O
//double ppow10(double ,double ); - u% b u& K. m' \ D
//call pow10() by __cdecl$ i) X" v5 {% K U+ c. V; X; y0 w
//!!!!!!!! use "C" for Microsoft visual C++ compiler
% R3 U! H4 H# _2 Y7 k- r' d6 `//!!!!!!!! use "C" for Microsoft visual C++ compiler
, J1 c" x j U//!!!!!!!! use "C" for Microsoft visual C++ compiler: b' f K- O$ p
//!!!!!!!! use "C" for Microsoft visual C++ compiler
3 Z! B% ?; ]# F" U) r% }//!!!!!!!! use "C" for Microsoft visual C++ compiler
7 L" O# T* ^/ B( O+ S__declspec(dllexport)int WINAPI MYMACLOSE(CALCINFO* pData)/ _( b( o$ T+ ~4 C5 s( P6 q. G- |
{
0 D- x9 [- e/ Vif( // pData->m_pfParam1 && //参数1有效 P: i X9 G9 | k; P# P# [
//pData->m_nParam1Start<0 && //参数1为常数
9 R: |! u$ m7 r" @6 J' _. @//pData->m_pfParam2==NULL ) //仅有一个参数4 z. W9 @& f" L/ P k. x% S
//pData->m_pfParam1 && pData->m_pfParam2 &&pData->m_pfParam3 && pData->m_pfParam4
! @/ z. N L4 o- F//&& pData->m_pfParam5 && pData->m_pfParam6 &&pData->m_nParam1Start>=0 &&
. Q H0 @- k" E9 @//pData->m_pfParam7==NULL)
5 o* s; b! Y I3 y//pData->m_pfParam1 && pData->m_pfParam2 &&pData->m_pfParam3 && pData->m_nParam1Start>=0 &&
/ i: R {( E# T% r2 zpData->m_pCalcParam[0].m_nParamStart>=0&& pData->m_pCalcParam[1].m_nParamStart>=08 l% W* S9 T, \% {
&&pData->m_pCalcParam[2].m_nParamStart>=0) 5 a6 ? \1 j7 w; X
{
! A$ X% c B1 T7 r/ R' pfloatfParam = *pData->m_pfParam4; //pointer ,pData->m_pCalcParam[3].m_nParamStart >= 07 j1 Q, ~& B; J# I! P d7 m8 U9 V
intnPeriod = (int)fParam; //参数18 X& Z7 t$ g' r: Y$ J9 ?
//const float* cpParam = pData->m_pfParam2; // cpParam = pointer to
' i+ t! E( v3 E+ N* @constfloat* cpParam2 =pData->m_pCalcParam[1].m_pfParam; // cpParam =pointer to * z6 p) ~3 c9 T: D
constfloat* cpParam3 =pData->m_pCalcParam[2].m_pfParam; // cpParam =pointer to 6 X/ ], G7 s) F% I( M2 E- D8 A0 h9 O
constfloat* cpParam4 =pData->m_pCalcParam[3].m_pfParam; // cpParam =pointer to
/ [) f: v- t' B7 x" c//const float* cpParam5 =pData->m_pCalcParam[4].m_pfParam; //cpParam = pointer to & p R* o! }( v- z u
//in foxtraderoooq:"MYFUNC2010@MYMACLOSE"(c,c,c,6),colorffffff,linethick5;// cpParam5 =pData->m_pCalcParam[4].m_pfParam # R: @9 P% a7 ~3 A8 c( H. h8 N) d
//pData->m_pCalcParam[5].m_fParam); //value" \3 D/ @$ A2 d% d* M' E/ O
//const float* pValue1 = pData->m_pCalcParam[0].m_pfParam;
8 P0 L) n; ]* P; u6 X1 A5 A//const float* pValue2 = pData->m_pCalcParam[1].m_pfParam;2 ~+ F9 L% i; a3 ~8 R9 e$ J. F
//const float* pValue3 = pData->m_pCalcParam[2].m_pfParam;& Y+ V7 S! [/ I; {
//const float* pValue4 = pData->m_pCalcParam[3].m_pfParam;) t3 q& d7 Z* x0 L, K6 F4 N g
//const float* pValue5 = pData->m_pCalcParam[4].m_pfParam;3 n4 f# U8 ~3 b+ ^( h- T! B
if(nPeriod>0). Z h! O& t3 g( N' r- O
{4 `1 l% m& c, J5 G# j7 {% n
floatfTotal;
5 v0 v$ k! ^8 r: O4 X$ f vinti, j;; A' } l0 P' `: ^
intndata = pData->m_nNumData;8 B+ ?& q' L4 }. R5 |
//float yy[5000][1];* H! ?5 w: ]* s1 A+ C
for( i = nPeriod-1; i < pData->m_nNumData; i++)//计算nPeriod周期的均线,数据从nPeriod-1开始有效0 c! T1 r9 y0 S k+ J: W
{* D, M5 s$ F& W* A$ {& p# L
fTotal= 0.0f;5 n8 ?2 q8 ^5 ^$ a$ U* p# F
doublelngth=5.0;" P8 t+ D1 n: K4 w! ?& }$ M4 E. f: z
doublectemp=4.0;
) m o/ l# \$ T& ]# ]//float yy1[5000][1];
# g( A5 }& x' n4 Afor( j = 0; j < nPeriod; j++ ) //累加
6 U1 R- ]6 Z# O8 l{) U8 B8 d. {& X% E( A9 X Q
fTotal= pData->m_pData.m_fClose; // @@@@@@@ vc++ 2010 cl.exe 使pData->m_pData[i-j].m_fClose错误
* t* m; R" `4 O4 z# [}
! i& I7 e- }( T k* G8 V. k, Q/ K& P//pData->m_pResultBuf = fTotal*1.03; //平均
; L3 K+ {$ o9 V0 mfTotal= cpParam3;
! M$ b1 n2 D) e- X9 }pData->m_pResultBuf= fTotal*1.03; //平均+ j0 V( s+ P2 L$ R8 V8 l u& x6 y0 e1 W
//ctemp = (double) pData->m_pResultBuf; // double & - - - >overload a float value , double * - - - > overload a pointer todouble9 c) x2 i5 @8 V1 S6 A, G$ _: M
//pData->m_pResultBuf= (float) ppow10(ctemp,lngth); // float &- - - > overload a float value5 `: G, n( u! s+ o( h) v2 ^
pData->m_pResultBuf=(float) ppow10( (double) pData->m_pResultBuf,lngth); // float &- - - > overload a float value, (float) = overload% D& M) s L d2 G. N1 ^$ n9 Z
}! f) C/ ~9 S9 j ]& |) |' }% q. `% f
returnnPeriod-1;
: e w7 g. O, V: o& F}
4 G: Q" ^& J( \$ e, H7 f7 _}0 U+ R; R: E, [
return-1;/ F* o: C" z1 B) O3 ~6 i
}0 p' `! Z9 I b9 [; @
//计算均价,2个参数,参数1为待求均线的数据,参数2表示计算周期( O* h- `+ X& J. t* _
//调用方法:
& }* V9 }+ C6 o! K% C//"FOXFUNC@MYMAVAR"(CLOSE-OPEN,5)* ^2 W, C& \/ b! l) B6 \. \2 y4 B
__declspec(dllexport)int WINAPI MYMAVAR(CALCINFO* pData)
; [2 ]3 y! o8 B2 ?3 `' ?0 Y5 W" M{; a, T, O. ^6 U& _; z0 p
if(pData->m_pfParam1&& pData->m_pfParam2 && //参数1,2有效
9 E: h% q( [. L& ]+ u5 L( X5 OpData->m_nParam1Start>=0&& //参数1为序列数
" |0 z0 } W1 o( A1 CpData->m_pfParam3==NULL)//有2个参数' w: `- ?% W9 X9 A" v4 D6 E5 ?
{! ~( R+ X- x+ @; a; b+ r J
constfloat* pValue = pData->m_pfParam1; //参数1
* h/ h4 y& Z) a p3 YintnFirst = pData->m_nParam1Start; //有效值起始位
$ v9 Q, [ i7 P0 M8 FfloatfParam = *pData->m_pfParam2; //参数26 g3 a8 \- F' n
intnPeriod = (int)fParam; + q3 U( ]. Y" _3 h; N4 W
if(nFirst >= 0 && nPeriod > 0 )
0 {6 O6 z& O9 H6 `+ j3 o0 u{
) x3 {: X2 E2 e) P1 H& d8 \9 OfloatfTotal;
/ v% f( E# P5 t5 t6 ginti, j;1 v+ b" S# y0 Q( O8 J
for( i = nFirst+nPeriod-1; i < pData->m_nNumData; i++ )
! ?/ J5 A& \' t, Q{6 X1 u3 u' W. Q6 f9 X9 f+ {: u' Z
fTotal= 0.0f;
0 F4 F( r! d$ V. g8 K9 dfor( j=0; j < nPeriod; j++ ) //累加8 n' L- n( r/ r; Y3 m: A
fTotal+= pValue[i-j];" @1 `$ `! q( S+ s; y# ` p1 m1 X
pData->m_pResultBuf= fTotal/nPeriod;//平均9 D3 P: T4 F( U! Q6 ?0 U! { C
}% I8 r3 |" k- @
returnnFirst+nPeriod-1;! K) x0 Q$ P5 X3 W9 y
}
( H" W- S* X5 b5 s! z" h, h}! X, r- X. I4 |3 g2 [% z+ `
return-1;
% L0 b7 v, W) `% K/ M" t& Q}/ \' G5 e* U5 K. V. T
//计算多个序列的均值,5个参数,参数1-4为待求多个序列,参数5用于举例说明数值参数的用法,实际在此例中无需该参数
' }, ~8 `# e5 Q) S$ j" z/*; Z* h6 ], A4 {6 S$ l
调用方法:
: a5 x: t i g% M, _$ nMA1:=MA(CLOSE,3);6 Y/ T: g$ g9 Y) i1 w& l
MA2:=MA(CLOSE,6);; r) j6 P- N7 i6 E* \# @6 X
MA3:=MA(CLOSE,12); s9 F+ S a# M4 i& S. i
MA4:=MA(CLOSE,24);
, F1 g+ e) x" w. M# dMYBBI:"FOXFUNC@MYBBI"(MA1, MA2, MA3, MA4, 4);* @9 D/ L9 R* S9 e9 M" o4 K
*/& v' l# |4 H* C/ ^; i2 T6 N$ }& m# C
__declspec(dllexport)int WINAPI MYBBI(CALCINFO* pData). s3 y( L) P J6 v# F
{* K) n, e' h5 T
if( pData->m_pCalcParam[0].m_nParamStart >= 0 &&
& Q7 y6 U g3 R' g/ ppData->m_pCalcParam[1].m_nParamStart>= 0 &&
* A% i k5 f- J/ |pData->m_pCalcParam[2].m_nParamStart>= 0 &&
) W, H: T! W. _! D( } \1 Z5 c" v* i4 ApData->m_pCalcParam[3].m_nParamStart>= 0 ) //4个序列都含有效数值
3 h$ g, i. [8 o0 a3 y4 m) e- z{7 F' m, w q: t ?; O
//计算返回的序列的第一个有效值位置7 Z/ {, b7 H2 Y# R; d3 l5 t
intnFirst = pData->m_pCalcParam[2].m_nParamStart;//已知返回的序列的第一个有效值位置与第4个序列一致# b% a b$ M1 X; K6 |
//若不知,则
! ^5 w1 y+ U6 x/*
* T2 x B9 T- h4 ?* I; TintnFirst = pData->m_pCalcParam[0].m_nParamStart;$ Q/ T! S2 M$ e/ O: ~+ V& v
if( nFirst < pData->m_pCalcParam[1].m_nParamStart )
# C6 q8 k9 q- bnFirst= pData->m_pCalcParam[1].m_nParamStart;9 Z' w- m4 S) k
if( nFirst < pData->m_pCalcParam[2].m_nParamStart )
1 J* a% `* W B; q0 e* u: z4 ~nFirst= pData->m_pCalcParam[2].m_nParamStart;
8 A" }* X4 v' ?, p" p/ [% yif( nFirst < pData->m_pCalcParam[3].m_nParamStart )
. D' g5 W. O; \" A" GnFirst= pData->m_pCalcParam[3].m_nParamStart;
# B$ Z! u8 @# o+ a*/+ O: @* w. r( r B! e
constfloat* pValue1 = pData->m_pCalcParam[0].m_pfParam;
' K6 p. d! K' Gconstfloat* pValue2 = pData->m_pCalcParam[1].m_pfParam;. r `7 Z* ?: ]6 L! `
constfloat* pValue3 = pData->m_pCalcParam[2].m_pfParam;' U8 i+ _* k, i4 B$ |4 e
constfloat* pValue4 = pData->m_pCalcParam[3].m_pfParam;/ O$ V9 ~9 b7 m. c
constfloat* pValue5 = pData->m_pCalcParam[4].m_pfParam;6 ]0 r3 P) f$ j# f$ T: e
constfloat* pValue6 = pData->m_pCalcParam[5].m_pfParam;
$ G: U3 i; W, [$ o//const float* pValue1 = pData->m_pfParam1;
4 \, t; h) ~+ Q4 h' k: [4 ?/ z//const float* pValue2 = pData->m_pfParam2;3 L, n* z! s# s1 P
//const float* pValue3 = pData->m_pfParam3;2 ~) `5 P# Y1 J( S6 \, C# G2 R
//int nNum = (int)(*pData->m_pfParam4);//实际上该例中已知nNum=4,在此用于说明数值参数的用法
! [$ u( F& O- u5 x' K6 \- NintnNum = (int)(pData->m_pCalcParam[6].m_fParam);//实际上该例中已知nNum=4,在此用于说明数值参数的用法+ m. t, w8 u+ Y$ X" A. Q8 Z
for(int i = nFirst; i < pData->m_nNumData; i++ )
* m3 Q! D3 m: \{
1 j) ?: H+ t3 P* Z x# J6 {# M/ m0 MpData->m_pResultBuf= / c& _) \+ ]4 P' y k
//(pValue1 + pValue2 + pValue3 )/nNum;: r" I5 h. e5 F l- z
(pValue1+ pValue2 + pValue3 + pValue4+pValue5 + pValue6)/nNum;
; W, u% c6 N$ ]}4 C* C1 n; k! S6 A. I- E9 z
returnnFirst;
+ E3 x& Z4 [# M+ n1 c}7 L) }/ e. u: N O+ ~4 u
return-1;% i' a: F# g9 _" }
}/ e. T& ?5 r9 m" z
) n# ?( L7 K: ]
" p/ E4 S6 x( a" {( M! m& E* d: e; w3 Q9 T& ^
//////////////////////////////////////////////////////////////pow10.asm. t9 u3 ]+ l. a# I+ u
;*******************************************************
0 |& @& y/ C" T. l( s;* *
+ Z9 i& d, |, _8 p: G;* Delphi Run Library *6 G8 D; F. [9 b8 q3 x; X( A( m
;* *6 O* R h0 B+ D" Q
;* Copyright (c) 1996,98 Inprise Corporation *
3 c7 ?6 g$ C3 ~% g/ ]. B* A, ~;*--------------------------------------------------------------------------, _# M$ _) Y1 f' D8 R
;* To compile "tasm32 /ml pow10.asm" */ w# `# O7 s$ Z- l+ \% s9 t
;*--------------------------------------------------------------------------
$ g7 m4 b- Z. i! F1 u;*******************************************************7 h2 V, j( z$ ?2 L. h$ Q; G
.386% C9 d7 n9 g, S; j8 _ [
;.MODEL flat,c (error must be in segement block must have segment
2 h! T# M( Q+ f;!!!!!11 important if ',c' is not used , must use 'public _ppow10, and'_ppow10 proc') [7 {" U, _# c
;!!!!!11 important if .MODEL flat,c is not used , must use ;_TEXTSEGMENT WORD PUBLIC: }. k' L. A8 _0 L8 {+ y
;'CODE'..._TEXT ENDS and must use 'public _ppow10 and '_ppow10 proc'/ f& l) g* j: E D8 D
.MODELflat,c ; just use .code, no need for segment,!!!!!11 important if',c' is used , must use 'public ppow10, and 'ppow10 proc'0 U, }; X0 q6 H; U
;ppow10 PROTO,aVal:PTR REAL8, bVal:PTR REAL86 Z% i" n/ _0 {8 k
;includeE:\Vsource\masm32\INCLUDE\windows.inc
7 M4 o. U) N; k- `3 _. V/ f$ t% F;includeE:\Vsource\masm32\INCLUDE\user32.inc
# D. R1 t& Y) u. R3 h. j;includeE:\Vsource\masm32\INCLUDE\kernel32.inc
4 r& l! r3 _4 I/ I3 M3 z* @PUBLICppow10
* n5 c2 W: N4 x7 ?.CODE
% m- q% j( l9 o; h2 C;DllEntryproc hInstance:HINSTANCE, reason:DWORD, reserved1:DWORD
) w7 f5 [3 u" o9 g, o1 e! h( L- T;.if reason==DLL_PROCESS_ATTACH
5 D5 n m8 }3 @; D3 \( g c+ K0 n;invoke MessageBox,NULL,addr LoadMsg,addr AppName,MB_OK' ?3 l# P r& I, f8 e1 w
;.elseif reason==DLL_PROCESS_DETACH
3 H! P: b( F! m q;invoke MessageBox,NULL,addr UnloadMsg,addr AppName,MB_OK
* t! S) p3 b( j# {0 p) |;.elseif reason==DLL_THREAD_ATTACH. b+ D" s" t6 B
;invoke MessageBox,NULL,addr ThreadCreated,addr AppName,MB_OK) Y: [" d' h z. q2 ~
;.else ; DLL_THREAD_DETACH4 r" J8 l8 q' g! v3 W0 p0 e( @) J7 C
;invoke MessageBox,NULL,addr ThreadDestroyed,addr AppName,MB_OK4 N, v, X* R% h
;.endif+ Z- f- }) c! r' C z$ s
;mov eax,TRUE
: m5 _, |5 \" t1 q; H6 ?;ret2 A. K$ t' i' Q( j' Z0 i! N9 C
;DllEntryEndp* x3 t, p* p& q* M
;FUNCTION _Ppow10( double val, double pow: ) : Extended;: t( Q# T: M* Y5 i3 J
;_TEXTSEGMENT WORD PUBLIC 'CODE': K1 |# L; l+ D1 C7 Y& N
;ppow10 PROC,aVal:PTR REAL8, bVal:PTR REAL8
R6 c. {1 ]/ G;ppow10 PROC,aVal:* Qword, bVal:Qword
: q( M, ~! W% {8 P, @! Wppow10PROC near7 h5 s) ]# d* d) p
XUEQU 8 ; for eip & ebp & B% \4 o5 s1 j( a; ~
XDEQU 0 ; for edi, esi, ebx, ecx, edx
) a# u+ C9 E% y- l+ Z+ Q, kfp_powerEQU QWORD PTR [ebp+XU+8]
* [( D: q a; }7 O3 H0 J5 J& q# {. T4 Wfp_valEQU QWORD PTR [ebp+XU] 6 n! T0 E8 Z! I6 i, T% @
valEQU QWORD PTR [eBP-XD-8] ; USE STACK
5 c* L- q9 k# S% a# A0 OpowerEQU QWORD PTR [eBP-XD-16] ; USE STACK
$ C2 @0 K3 O3 G5 A9 \pow10EQU QWORD PTR [eBP-XD-24] ; USE STACK
# U! @+ E2 n! L. AFPower10:$ y9 _6 K# \2 I' l1 N4 y( G
pushebp
! S, m" F4 V/ m) O2 Z! @movebp,esp
+ z' C9 F9 }9 a. J* v8 r;push edi# @3 ~/ l. L! m* I( X. M- x6 V
;push esi
4 ], ? f+ f" z3 S4 L" J% ^;push eax( `1 @4 j" l- d, p
;push edx% ~/ H$ I9 f) \ g/ R, ^6 C
subesp,24% H0 |, D3 C! P" w2 x W
FINIT
8 j, V9 i0 M; v5 tfldz8 `$ i$ Y* |$ Q( l2 j
fstval# q2 Q/ r+ B! @6 K. v& ]! M& }
fstpower9 U' s+ p6 {: [6 X7 r& a4 _
fstppow10
( x( @3 s3 }0 C5 c7 f MOV EAX,8 MOV EDX,8; fldpi
# @9 Z. e% i2 S/ O# r' C. i fld fp_val ;st(0)=val; fld aVal;st(0)=val
, Q0 ? T9 `4 v/ c/ K6 I' Bfstval- n) O" P/ K+ s; n3 I* ]% ]( c
;fld Arg2 ;st(0)=power+ p d8 |; q; Z7 C7 a
;fstp power
' s! {" K6 s1 N1 V;fld val ;st(0)=val p) U. _- _ A, l# ?) T$ o6 A d
;fmul val ;st(0)=val*val e9 a: h+ B; C$ U& |7 Z
;fmul val ;st(0)=val*va*val, c: F; l4 M% k; P: ~6 C5 f
;fadd st,st(0)+ j! e* m. R2 ?( n
;fmul qword ptr [ebp+16] ;st(0)=power
& T" \+ D- |9 w0 U+ G* i+ }3 w, K;fadd st,st(0)
$ R2 g3 u" }4 `; b; F! V* I;fwait" c0 ] A" L2 c) X1 [1 o' P
addesp,24$ d" H4 U( F' m# Q; h9 b
;pop edx
; z+ R# i! |0 H* n6 j0 `8 u;pop eax
2 Y8 O3 I4 k" k8 F' P6 q$ g7 \;pop esi( M, G& D/ w" _; m1 C6 N
;pop edi
/ b( V) ?$ d) g& {5 }/ Zmovesp,ebp$ e9 ?& v+ L) q$ N) }9 B
popebp2 M/ h& f7 e* K/ R8 _) Q2 b
;leave ; @@@@@@ important don't use leave in vc++ 2010* Q% E3 G3 s: R
RET;return value = st(0)
9 C1 b: a! b5 M9 K8 ?. i5 P$ ^& ?ppow10ENDP
2 F3 l6 m9 t0 o' W0 Z;_TEXTENDS5 \2 t+ ] t) h& q6 p& r7 p: G- J, l3 ?
END' u% C/ s5 r# @9 N3 L) y, p
;END DllEntry |