//////////////////////////////////////////////////////////foxfunc.cpp6 |7 J! r# C4 Q1 }0 Y7 C" [5 u! d
' m5 v. H: `* H8 t( d: z9 B* q//FoxFunc.cpp : Defines the entry point for the DLL application.) U% P/ U+ u" j. Z
//
; z& b& D; q5 Q! ^7 Y* H5 @#include<string.h>7 l9 O% x9 a5 r, m$ E& y
#include<stdio.h>- S( S% K8 f1 u a
#include<io.h>
/ ]. B- p0 n) s" t- D, V#include<math.h>2 A \; C5 s9 c& \
#include<iostream>
4 i. X1 I0 E. X/ L, @#include"stdafx.h"
0 x* I3 q4 N* F# t4 t7 W#include"FoxFunc.h"% U" c7 A$ `: n5 M
usingnamespace std;4 g$ [$ H8 j3 m, ~1 ]( U
BOOLAPIENTRY DllMain( HANDLE hModule, 2 c7 u- A) v% y/ U" g1 `
DWORDul_reason_for_call,
* i: m5 U g9 FLPVOIDlpReserved7 q8 _3 z7 D7 Z4 A C# c! j; v
)& w7 S/ b0 @) o, Y2 q% t
{
- l: \" |' i3 n7 Q# Y/ Bswitch(ul_reason_for_call)
9 u3 v9 w0 p! S( b- ~ u{
1 D/ ^7 u! r: ^- B" P- rcaseDLL_PROCESS_ATTACH:7 G! b N3 Z6 W) L) s
caseDLL_THREAD_ATTACH:
, o+ \, g" C" ^$ G: Q0 C7 e) Z8 s- IcaseDLL_THREAD_DETACH:
) k* \, \, a$ i, ]' w: ncaseDLL_PROCESS_DETACH:% x, w$ M2 r- M6 I/ N& \
break;& e0 N) u1 g) u" x
}; q f9 K7 h) A9 [( x+ T
returnTRUE;3 n- K6 M. I4 |; ?- V1 m9 k
}" K1 ?7 |) |; V+ e& B
//计算收盘价的均价,一个常数参数,表示计算周期
& \( @( z( w9 A7 u8 o0 w- b//调用方法:0 H% L0 o! l' H. K4 S
//"FOXFUNC@MYMACLOSE"(5): o0 }. c( P! q5 c. Z; c7 L
/*
8 X( t9 l% B& ~; V//extern "C" double __cdecl ppow10(double ctemp,doublelength); - - - > wrong, extern "C" is to declare pow10coming from a .dll or .lib
" O3 B6 L% R" u9 ?, R//extern "C" double ppow10(double ctemp,double length); - - -> both are the same
' y/ N, o( B" p; U+ g*/# D6 w+ R- `! f' O1 a
extern"C" double __cdecl ppow10(double ,double );" x7 i7 r) _6 `0 v$ y+ C7 Y4 \
//double ppow10(double ,double ); 7 l! \" C. k5 T. L+ N' B. x
//call pow10() by __cdecl
, `. e# J( C1 `2 A; Y//!!!!!!!! use "C" for Microsoft visual C++ compiler. J' ^# b' Q9 v" a3 [3 S
//!!!!!!!! use "C" for Microsoft visual C++ compiler
0 F5 k# C* P) Q; w) m, \' q//!!!!!!!! use "C" for Microsoft visual C++ compiler+ _, U5 _1 h; {3 d4 |( n6 U
//!!!!!!!! use "C" for Microsoft visual C++ compiler! Q z6 i- }) T7 f& W
//!!!!!!!! use "C" for Microsoft visual C++ compiler3 N+ { @" X( t
__declspec(dllexport)int WINAPI MYMACLOSE(CALCINFO* pData), t: x! o0 { S/ I v+ b
{# [$ {; C- q& \ `6 x
if( // pData->m_pfParam1 && //参数1有效
' n7 e# {; G' Q//pData->m_nParam1Start<0 && //参数1为常数
' c0 S2 z; Q: s7 c4 a) T//pData->m_pfParam2==NULL ) //仅有一个参数
& X" [" _( {$ m; y1 K//pData->m_pfParam1 && pData->m_pfParam2 &&pData->m_pfParam3 && pData->m_pfParam4' b; {" F% r1 C4 z. [% {$ e9 m" C
//&& pData->m_pfParam5 && pData->m_pfParam6 &&pData->m_nParam1Start>=0 &&9 [$ w9 g0 s0 p( t4 ]7 f5 S: t
//pData->m_pfParam7==NULL)2 T! ?! ]4 X* s8 ~6 l' {
//pData->m_pfParam1 && pData->m_pfParam2 &&pData->m_pfParam3 && pData->m_nParam1Start>=0 &&0 c1 B( Q. E+ k' w1 R! W& Y; P
pData->m_pCalcParam[0].m_nParamStart>=0&& pData->m_pCalcParam[1].m_nParamStart>=0
, H5 ]7 j! @( c+ } u+ t3 X&&pData->m_pCalcParam[2].m_nParamStart>=0) b* `' {2 i, s1 X8 I$ U
{+ O6 e5 ~- A" y0 V( A: ?. z* S7 ?
floatfParam = *pData->m_pfParam4; //pointer ,pData->m_pCalcParam[3].m_nParamStart >= 09 |# d) X; v8 _# b' [
intnPeriod = (int)fParam; //参数1* ~) E+ Q9 i* C/ ?0 C ~
//const float* cpParam = pData->m_pfParam2; // cpParam = pointer to
- P& i' p( M: }) S9 w6 b3 \; tconstfloat* cpParam2 =pData->m_pCalcParam[1].m_pfParam; // cpParam =pointer to 5 |* S1 ~6 O% q. X
constfloat* cpParam3 =pData->m_pCalcParam[2].m_pfParam; // cpParam =pointer to " K4 o( D" M$ Q" x5 S$ z0 f6 C
constfloat* cpParam4 =pData->m_pCalcParam[3].m_pfParam; // cpParam =pointer to ( j/ R) A# |" V" l' h7 ]
//const float* cpParam5 =pData->m_pCalcParam[4].m_pfParam; //cpParam = pointer to $ V8 U7 \& a E8 I' z0 q
//in foxtraderoooq:"MYFUNC2010@MYMACLOSE"(c,c,c,6),colorffffff,linethick5;// cpParam5 =pData->m_pCalcParam[4].m_pfParam 4 h" a4 [+ C5 Q0 Y/ f
//pData->m_pCalcParam[5].m_fParam); //value
1 p: H c# K7 `" X h$ x) |+ }//const float* pValue1 = pData->m_pCalcParam[0].m_pfParam;# V% H6 S: i! D5 T) q$ o
//const float* pValue2 = pData->m_pCalcParam[1].m_pfParam;
2 K3 m9 Y; S' c//const float* pValue3 = pData->m_pCalcParam[2].m_pfParam;
6 k% m6 H1 S9 ?3 X//const float* pValue4 = pData->m_pCalcParam[3].m_pfParam;
- l% k! a$ L) Y, y//const float* pValue5 = pData->m_pCalcParam[4].m_pfParam; O( t3 ^9 d/ U$ C
if(nPeriod>0)
' g0 K" A/ l* f; v) X, t8 ?{% V: `# p7 w$ C- W
floatfTotal;
; i* M' r( D9 u7 v$ d9 k% h& J, sinti, j;
) {. W( Z" B7 N& G( Y& Y z9 Eintndata = pData->m_nNumData;; B5 m( H" s9 J) I! w; y
//float yy[5000][1];" S4 G; Q1 o1 W6 F8 L
for( i = nPeriod-1; i < pData->m_nNumData; i++)//计算nPeriod周期的均线,数据从nPeriod-1开始有效2 L' v, @/ s! L2 M/ J! [
{
" k) I2 H. X. QfTotal= 0.0f;
1 S! T3 ~; N( O bdoublelngth=5.0;
: |. i8 ^6 _& ^doublectemp=4.0;5 ?- A8 a# a/ `, R
//float yy1[5000][1];
* I% ^6 h* f9 E& }8 Yfor( j = 0; j < nPeriod; j++ ) //累加% v. R& M- M4 _7 P6 h6 u& A
{: q5 ]. y0 `4 q1 u
fTotal= pData->m_pData.m_fClose; // @@@@@@@ vc++ 2010 cl.exe 使pData->m_pData[i-j].m_fClose错误. Y7 I( m1 w: k
}9 E! n" h1 A" n
//pData->m_pResultBuf = fTotal*1.03; //平均: v$ p B' L5 c2 f' d
fTotal= cpParam3;+ \; R- e s3 h$ `) w
pData->m_pResultBuf= fTotal*1.03; //平均
. m6 }: z q2 V V" j8 j% B//ctemp = (double) pData->m_pResultBuf; // double & - - - >overload a float value , double * - - - > overload a pointer todouble. E9 \/ g2 \8 Q( q8 r" u1 m3 m- h
//pData->m_pResultBuf= (float) ppow10(ctemp,lngth); // float &- - - > overload a float value N( G/ G& D r; [
pData->m_pResultBuf=(float) ppow10( (double) pData->m_pResultBuf,lngth); // float &- - - > overload a float value, (float) = overload
6 C) l& ]6 N' `- l}+ A( q: c0 x! s/ e: T
returnnPeriod-1;9 Q8 n8 ~, T' Z6 I
}9 N P# \: G9 u X, n/ F9 A" v
}
6 F/ P M, @5 e+ [7 Ereturn-1; e! ]8 s9 X2 m$ c% R
}* i+ W( b2 X" q
//计算均价,2个参数,参数1为待求均线的数据,参数2表示计算周期0 s9 Q( |# H! K2 I+ p, q
//调用方法:
9 A' ~' Q: r3 q& f) b) I- Y//"FOXFUNC@MYMAVAR"(CLOSE-OPEN,5)4 \6 j- H3 `5 I! n9 I% f2 K
__declspec(dllexport)int WINAPI MYMAVAR(CALCINFO* pData)3 w6 C8 F% c/ M% m) W& n& u8 z7 Y% V
{6 O- S* q( S: _0 W/ ?$ v3 O
if(pData->m_pfParam1&& pData->m_pfParam2 && //参数1,2有效
( r. s% U* l% f; `pData->m_nParam1Start>=0&& //参数1为序列数' F- O1 v% f9 G) |4 N* o
pData->m_pfParam3==NULL)//有2个参数% o3 f& F: M7 L i) C- W
{
2 T( r3 }9 W) N1 K/ J" U) Dconstfloat* pValue = pData->m_pfParam1; //参数1
3 a' O$ @1 v, C6 \intnFirst = pData->m_nParam1Start; //有效值起始位
8 `, O4 y! I" }9 q. I* Q; VfloatfParam = *pData->m_pfParam2; //参数21 @" R* V, G! q; M6 ?0 `8 m4 @$ u
intnPeriod = (int)fParam; , B1 @4 _- b0 e7 O7 p) H
if(nFirst >= 0 && nPeriod > 0 )! u$ t# G, e7 W5 R, ~) e
{1 x# G* C5 h* G5 ~' F
floatfTotal;# m* c7 y) p- c
inti, j;
9 d+ `# K: \0 A, a! ?for( i = nFirst+nPeriod-1; i < pData->m_nNumData; i++ )$ Y" Z( ^2 ^4 W2 k' W2 {) R) y
{
% D# a3 R" \+ ^& D+ T" QfTotal= 0.0f;3 c: z( B; M; N- w
for( j=0; j < nPeriod; j++ ) //累加
' v! k" j0 k# e* M: E" NfTotal+= pValue[i-j];7 S0 q; M$ e7 y/ U! R U# ?& W
pData->m_pResultBuf= fTotal/nPeriod;//平均! t2 \3 m& A' g; N; x* y" v
}. _6 q8 k1 ^% \3 Q# m% }* q+ X% ]
returnnFirst+nPeriod-1;( V8 d I0 g+ T- C; |
}
% \$ f- V6 ]! b2 ~1 l" b} d$ w& Z* u7 u$ Q, _
return-1;! ~3 I' ~) g* g; @ F7 i- q
}
- N4 P- @" O) v//计算多个序列的均值,5个参数,参数1-4为待求多个序列,参数5用于举例说明数值参数的用法,实际在此例中无需该参数5 x0 R8 B/ X" i$ J9 P
/*& R3 n. j% k0 I1 y$ |+ R
调用方法:" s9 Q& t9 ^+ L. y6 b
MA1:=MA(CLOSE,3);
0 V$ X' Y1 c! v2 v! eMA2:=MA(CLOSE,6);; L' e7 j/ Y( `9 \3 ]# F
MA3:=MA(CLOSE,12);
, C/ n4 Q$ R* |; o+ s: wMA4:=MA(CLOSE,24);, i2 ]7 t- r7 e) N, R
MYBBI:"FOXFUNC@MYBBI"(MA1, MA2, MA3, MA4, 4);
) ]5 n, `# n; Z# i' r7 S1 K7 ^*/
; @6 F0 k2 U6 X! f" f$ l! |6 I__declspec(dllexport)int WINAPI MYBBI(CALCINFO* pData)
" R9 r W o& K' O3 m: M{
4 H/ c3 j" ^4 M5 U7 gif( pData->m_pCalcParam[0].m_nParamStart >= 0 &&/ J6 Y# r/ j! [0 e# b$ o
pData->m_pCalcParam[1].m_nParamStart>= 0 &&# b3 {: M9 |) V# Y
pData->m_pCalcParam[2].m_nParamStart>= 0 &&% S- R0 y; l0 u
pData->m_pCalcParam[3].m_nParamStart>= 0 ) //4个序列都含有效数值, O; r$ m W' n6 {9 ?& U/ m2 O
{& h# @- m4 }! U! d8 i/ M" I d
//计算返回的序列的第一个有效值位置" ]3 Z! p5 h0 w/ M# Q0 B
intnFirst = pData->m_pCalcParam[2].m_nParamStart;//已知返回的序列的第一个有效值位置与第4个序列一致
& u# L" P" b5 Q; z//若不知,则
9 I# E. p6 M% j$ j4 {) R' ^/*
3 ?9 {4 G) P0 |; T. hintnFirst = pData->m_pCalcParam[0].m_nParamStart;, w/ A* D7 t4 p4 Z! ?5 i1 d, u, x
if( nFirst < pData->m_pCalcParam[1].m_nParamStart )
* P; u7 p, h! W9 `nFirst= pData->m_pCalcParam[1].m_nParamStart;
# L {: u; T: @3 O R7 s% aif( nFirst < pData->m_pCalcParam[2].m_nParamStart )
) J- L- t. F$ _) N6 \9 MnFirst= pData->m_pCalcParam[2].m_nParamStart;" Y1 h9 C% V3 l# @$ |: Z; ]
if( nFirst < pData->m_pCalcParam[3].m_nParamStart )
( v: U' f( F5 B- znFirst= pData->m_pCalcParam[3].m_nParamStart;) P4 P& l) I: g' R5 C- e0 g3 |
*/
5 r9 y+ [4 i6 u0 r% o+ E7 ?" w1 Pconstfloat* pValue1 = pData->m_pCalcParam[0].m_pfParam;
2 G; S/ `8 k- I+ jconstfloat* pValue2 = pData->m_pCalcParam[1].m_pfParam; @+ E4 i1 {5 p; ~0 F! y$ K+ b+ g
constfloat* pValue3 = pData->m_pCalcParam[2].m_pfParam;% ?, f: g* a, \3 o
constfloat* pValue4 = pData->m_pCalcParam[3].m_pfParam;$ s2 v# j* I5 z
constfloat* pValue5 = pData->m_pCalcParam[4].m_pfParam;7 K& X% g6 O: q2 ?5 N9 @2 R
constfloat* pValue6 = pData->m_pCalcParam[5].m_pfParam;/ \/ v: V0 Y2 A
//const float* pValue1 = pData->m_pfParam1;
! v6 `- l: G+ s5 S/ r' Z/ _//const float* pValue2 = pData->m_pfParam2;# S- k( K# H" t Y
//const float* pValue3 = pData->m_pfParam3;
, j0 u- K1 M; v//int nNum = (int)(*pData->m_pfParam4);//实际上该例中已知nNum=4,在此用于说明数值参数的用法1 B( y$ Q, ]+ O3 I8 M4 w
intnNum = (int)(pData->m_pCalcParam[6].m_fParam);//实际上该例中已知nNum=4,在此用于说明数值参数的用法% x6 @1 c4 |7 c6 {
for(int i = nFirst; i < pData->m_nNumData; i++ )" ]" u, }6 H5 X. X/ w( o
{
' G+ p9 C% `7 O R; E( a) J5 opData->m_pResultBuf= : C o9 z" W" o5 ?) Q$ h& G: L1 W; ?
//(pValue1 + pValue2 + pValue3 )/nNum;# M; O! P; E- [, y! v& K
(pValue1+ pValue2 + pValue3 + pValue4+pValue5 + pValue6)/nNum;
$ ]& b8 \# g3 F% w}7 G) A! N1 D+ J/ Q. _, d+ F" i: h
returnnFirst;
, h! i0 W% [! d' l+ r}
8 j: G; P; L& hreturn-1;
' a: Q# p, X/ Y/ ]/ S}0 C }; C/ P/ o
7 w7 f) S4 [: ]9 a( Z
7 n; l. ^- b5 m% }/ u1 i% T2 ^* z; c( n' G
//////////////////////////////////////////////////////////////pow10.asm
( k- T) I/ q- E, X: r;*******************************************************
( z- T- d6 a+ j% _. p;* *
( H& T& S7 x* S8 ]/ d;* Delphi Run Library *+ ^4 p: c" O$ o2 `$ H4 q4 C2 o
;* *) S* e# i! `- R. X2 L' [
;* Copyright (c) 1996,98 Inprise Corporation ** e* C+ Q1 N% F* m" ~! b
;*--------------------------------------------------------------------------2 b L- M1 U1 u. f! ]: b' E
;* To compile "tasm32 /ml pow10.asm" *
( D" |: y6 C p1 b w6 ?;*--------------------------------------------------------------------------
9 X7 ]0 ^, E$ P: x+ H- A; D;*******************************************************8 T; f( F# `7 @# f% }
.3865 o ]4 ^ L( \/ m4 Y7 @4 F* t
;.MODEL flat,c (error must be in segement block must have segment
' M) |. j1 g; u( z. t# X$ W;!!!!!11 important if ',c' is not used , must use 'public _ppow10, and'_ppow10 proc'1 f/ o k' G1 d8 |; e
;!!!!!11 important if .MODEL flat,c is not used , must use ;_TEXTSEGMENT WORD PUBLIC* r6 A. P' Z0 q% A( _2 {( c
;'CODE'..._TEXT ENDS and must use 'public _ppow10 and '_ppow10 proc'
: f# Q9 X0 F6 x# p.MODELflat,c ; just use .code, no need for segment,!!!!!11 important if',c' is used , must use 'public ppow10, and 'ppow10 proc'
8 O8 o% y8 i. m7 W;ppow10 PROTO,aVal:PTR REAL8, bVal:PTR REAL8
, _7 V( D4 `7 B6 y l+ e;includeE:\Vsource\masm32\INCLUDE\windows.inc* }2 x$ M+ e2 Q/ L
;includeE:\Vsource\masm32\INCLUDE\user32.inc
+ m3 n- _8 s; B# v$ R0 @5 j;includeE:\Vsource\masm32\INCLUDE\kernel32.inc+ h) T! W$ Y1 e% n: h
PUBLICppow10
6 v) ]$ Y* m. ]7 k7 j.CODE
- r% u: j8 P% e;DllEntryproc hInstance:HINSTANCE, reason:DWORD, reserved1:DWORD# t$ R q9 {+ ^1 s
;.if reason==DLL_PROCESS_ATTACH
8 d2 i1 z" p) o# W( W9 t' S;invoke MessageBox,NULL,addr LoadMsg,addr AppName,MB_OK
t2 h4 a& C5 K7 _;.elseif reason==DLL_PROCESS_DETACH
7 t8 W: @6 {$ s) B: Y9 x" u2 g;invoke MessageBox,NULL,addr UnloadMsg,addr AppName,MB_OK, ^8 u4 g( w* `3 j) I
;.elseif reason==DLL_THREAD_ATTACH
1 z# q1 j) i6 L/ ~1 }( p8 _;invoke MessageBox,NULL,addr ThreadCreated,addr AppName,MB_OK7 G- R- p, n: ~
;.else ; DLL_THREAD_DETACH7 D: b. c+ W8 ]3 O" D% l' J
;invoke MessageBox,NULL,addr ThreadDestroyed,addr AppName,MB_OK0 R2 i$ C, U% q/ {9 K6 J; G. f
;.endif
8 T: l2 h8 _- d4 a7 _8 T% D' E;mov eax,TRUE n1 O# X! {% B8 W
;ret8 x! X' S' X t1 E5 n
;DllEntryEndp/ z% d4 L' Y2 a# ]; ~2 P
;FUNCTION _Ppow10( double val, double pow: ) : Extended;' D4 C; D X; ?- ~
;_TEXTSEGMENT WORD PUBLIC 'CODE'
7 O q+ \! ?0 {* s/ X8 Y, z;ppow10 PROC,aVal:PTR REAL8, bVal:PTR REAL8) y% a8 Y/ S6 [( m
;ppow10 PROC,aVal:* Qword, bVal:Qword
$ M; P6 {: c t* T% V& j: Y" d/ p$ Y+ hppow10PROC near& e2 w6 s4 j' J _7 f4 @8 h2 o5 r+ ~
XUEQU 8 ; for eip & ebp
9 [( p! G' U: ^0 i% fXDEQU 0 ; for edi, esi, ebx, ecx, edx4 Y" ` B& F# H- n# x/ S
fp_powerEQU QWORD PTR [ebp+XU+8]+ B" B7 R% T$ v- y2 A+ L( W
fp_valEQU QWORD PTR [ebp+XU] ( T; C* ] Y2 n( p( x, S
valEQU QWORD PTR [eBP-XD-8] ; USE STACK
( H) t8 W; M7 f7 W) o1 p+ [; |5 YpowerEQU QWORD PTR [eBP-XD-16] ; USE STACK
% ~& W7 h+ {; X; W, Epow10EQU QWORD PTR [eBP-XD-24] ; USE STACK! M$ T, x3 m8 x( h: w
FPower10:
* ~* R1 Q! b6 a$ e5 F2 F7 T5 Opushebp) ?2 S2 \* a9 S6 A! g, k
movebp,esp
) I' K1 _( t& v; F;push edi: _* R# x9 f! W& |
;push esi# k M; U! ~' m& y% Y
;push eax
* P9 t) ~; E# l1 V$ o0 k% t. @! ~;push edx" f" J) S- Y: ~/ D$ B# c
subesp,24: L: i: L# ~1 G/ ]. R, ]
FINIT
+ U: e6 e0 M+ b9 L; Y! Hfldz. p: }" J2 l6 Y, \
fstval7 O. K; t7 [+ c0 }1 L8 |" C( w( _2 R" A
fstpower2 }$ k! r& B4 N- A: g
fstppow10
7 Y% I B9 C- L: e9 \% Z MOV EAX,8 MOV EDX,8; fldpi; o& \- i- v" P7 a
fld fp_val ;st(0)=val; fld aVal;st(0)=val% d8 \+ F( [* b* \% Q
fstval5 ?# S) e8 V d u! ~8 |
;fld Arg2 ;st(0)=power
- g+ Z* p- G/ u# G& M8 y% Z% B1 r;fstp power
0 D) `* @, y1 l1 u c/ r" I;fld val ;st(0)=val
0 C5 Q, ]0 N' C% ] W7 Y;fmul val ;st(0)=val*val
' B$ t9 _2 s3 C;fmul val ;st(0)=val*va*val; H; t' D& ^( Y7 e% T3 z
;fadd st,st(0)
1 X; t; G) I9 w6 ^3 [5 C;fmul qword ptr [ebp+16] ;st(0)=power
* y& \/ d0 z! c! o- ]0 Y9 R1 \+ Z;fadd st,st(0)
3 W3 m; I+ n0 r' M. I4 T2 \6 i;fwait
5 f0 f4 O3 G: s' Yaddesp,24/ {6 f1 a% m% g8 L
;pop edx
) C, i# O N! t. U( j7 t5 u5 g3 s: q;pop eax
5 ]5 e# A3 `3 j;pop esi
0 t- {$ Q! O4 ]( m) r;pop edi
" o$ @! _: ?: M, G9 z ~6 U, gmovesp,ebp
% x. C9 [: o7 S% F# C$ p, Spopebp+ U# E! Y2 g, f+ ]; e! I6 t
;leave ; @@@@@@ important don't use leave in vc++ 2010
# a3 @1 [" m3 S6 Z% n3 h+ ~RET;return value = st(0): z/ \$ y6 J. T' z9 g
ppow10ENDP
9 A: }) _) m3 C7 T6 f;_TEXTENDS: W u0 Y2 v/ y2 F* }: \
END
# \0 y! U9 ?9 z4 k7 z& ];END DllEntry |