//////////////////////////////////////////////////////////foxfunc.cpp
8 a- k A8 x W1 ?: g
9 E0 X2 _; s7 P) u. h; J" B//FoxFunc.cpp : Defines the entry point for the DLL application.
E0 O4 [- @4 \& R* c8 E; |8 h! k/ _//7 L8 j. P: |- T9 n5 ?
#include<string.h>
6 ^/ I5 \4 Y0 @, z/ j#include<stdio.h>
}4 a% T* _: h w* p) N* n) r+ a" p#include<io.h>7 I) B0 R+ X9 V
#include<math.h>! H4 l* _6 Z7 P/ \6 w& V4 M; P; W
#include<iostream>
# l# @) k8 k: ]2 V4 M$ v* J#include"stdafx.h"
2 q8 M, C5 n$ @; d- i2 M% G }#include"FoxFunc.h"
- L, m* J. n) X( o. H# @& ]# C/ c zusingnamespace std;* e' M4 l) `7 `) z7 ~
BOOLAPIENTRY DllMain( HANDLE hModule, 2 a( i$ R% e( h- @5 u
DWORDul_reason_for_call, 5 o! }; j# d: a: b) b+ s8 R1 ~! \
LPVOIDlpReserved1 T( R, x# w" @- r1 p2 |3 E
)
+ I$ Q4 a" A Q+ Q" M: M{, F: b) e) \% C: K0 S7 k
switch(ul_reason_for_call)
! t/ b0 V! W* M{+ R! _) M! p/ @- U- z! ]" |
caseDLL_PROCESS_ATTACH:
. m) T# O- G1 j/ D9 ?1 p1 u. z+ u0 i7 HcaseDLL_THREAD_ATTACH:
4 a3 u) ^0 H0 c# X6 o) ~caseDLL_THREAD_DETACH:5 ?5 K+ o5 _" U' j' k7 G, M
caseDLL_PROCESS_DETACH:; x9 s1 {: o, Z5 k& q* C
break;
. v" F. v/ P4 ]- k* D' \}
}: k, }: g; L9 jreturnTRUE;
0 i( M7 O- M& ^4 T& E* D}1 d6 z9 B* }. Q/ {* h' ~& Y2 E3 n
//计算收盘价的均价,一个常数参数,表示计算周期, h3 z+ |* S8 K* V+ S6 _( X$ [7 L
//调用方法:
* A7 D% ]5 k. t0 W. O" {( D//"FOXFUNC@MYMACLOSE"(5)
" K. V6 X- [' T7 C* f/ g/ H" l) u6 x/*
. h1 i- x) t5 _4 }//extern "C" double __cdecl ppow10(double ctemp,doublelength); - - - > wrong, extern "C" is to declare pow10coming from a .dll or .lib
/ G, e) P4 B6 ~' e/ R- z9 J//extern "C" double ppow10(double ctemp,double length); - - -> both are the same
; O3 Q/ x$ v! W& F4 Z4 D*/
$ U" s7 ?) W$ E8 o c4 b6 {* aextern"C" double __cdecl ppow10(double ,double );
U. Q3 t$ c- a9 g, x: A+ X' `8 f//double ppow10(double ,double );
' ~; m; g. |! S4 D* v! m//call pow10() by __cdecl
/ o1 J4 M% q! Y. d$ X9 W F//!!!!!!!! use "C" for Microsoft visual C++ compiler
$ ]3 h4 h, R/ \/ r( A4 ^, U: W//!!!!!!!! use "C" for Microsoft visual C++ compiler' z. |' N, x$ H. F4 G/ h
//!!!!!!!! use "C" for Microsoft visual C++ compiler* C! J/ f1 ^% W4 `/ F
//!!!!!!!! use "C" for Microsoft visual C++ compiler
5 n; e: J0 C9 x* D# Y7 p& `/ Q//!!!!!!!! use "C" for Microsoft visual C++ compiler2 y# [6 t/ N5 n! Y5 Q# v' x7 J
__declspec(dllexport)int WINAPI MYMACLOSE(CALCINFO* pData): b% K4 b/ ?3 ], i' F5 u
{1 F' X. \; ]/ I. S- V* i7 V, m
if( // pData->m_pfParam1 && //参数1有效
( A4 z2 x! H: U& C, h/ w//pData->m_nParam1Start<0 && //参数1为常数8 g5 {, |. w, _: l0 E6 {( r! w7 o
//pData->m_pfParam2==NULL ) //仅有一个参数
, O' ]/ B2 v' Q; N1 J0 }2 N6 d//pData->m_pfParam1 && pData->m_pfParam2 &&pData->m_pfParam3 && pData->m_pfParam4
) q# Q; c/ k9 K0 p& A l! a' t/ t0 m9 k//&& pData->m_pfParam5 && pData->m_pfParam6 &&pData->m_nParam1Start>=0 &&: C y! q8 w2 s
//pData->m_pfParam7==NULL)5 k! m8 w( d2 d q9 U6 O! D
//pData->m_pfParam1 && pData->m_pfParam2 &&pData->m_pfParam3 && pData->m_nParam1Start>=0 &&4 g E# S# N, Y$ K' ?5 p2 z
pData->m_pCalcParam[0].m_nParamStart>=0&& pData->m_pCalcParam[1].m_nParamStart>=0
; z; i5 p' f+ j9 r" l) }$ X P- I&&pData->m_pCalcParam[2].m_nParamStart>=0)
f% I5 P$ [6 `% `' P9 a{6 T/ ]5 R# v' v1 @6 l( \
floatfParam = *pData->m_pfParam4; //pointer ,pData->m_pCalcParam[3].m_nParamStart >= 0% B. \3 m: _ n( ^: g7 w! v3 @ ^
intnPeriod = (int)fParam; //参数1
) i( B# g% L) F4 |6 s) H4 w8 U//const float* cpParam = pData->m_pfParam2; // cpParam = pointer to
r3 l7 Z5 i3 \) f mconstfloat* cpParam2 =pData->m_pCalcParam[1].m_pfParam; // cpParam =pointer to . c: S' N% R @; i% ^. S4 D( l+ x
constfloat* cpParam3 =pData->m_pCalcParam[2].m_pfParam; // cpParam =pointer to
5 v: y2 L6 E, n0 J3 Z' S' J+ m; Econstfloat* cpParam4 =pData->m_pCalcParam[3].m_pfParam; // cpParam =pointer to + J ?4 D+ q" z
//const float* cpParam5 =pData->m_pCalcParam[4].m_pfParam; //cpParam = pointer to / A( I' c d! A$ D2 ` R
//in foxtraderoooq:"MYFUNC2010@MYMACLOSE"(c,c,c,6),colorffffff,linethick5;// cpParam5 =pData->m_pCalcParam[4].m_pfParam
$ Z$ j y8 c/ ~. w, ]//pData->m_pCalcParam[5].m_fParam); //value
8 K$ z1 Y( U) I* e: l& f3 U3 E. ?. E" w' x//const float* pValue1 = pData->m_pCalcParam[0].m_pfParam;) ?- W/ P3 u y- ]8 b( }9 D
//const float* pValue2 = pData->m_pCalcParam[1].m_pfParam;+ I* ?: A7 U7 x$ \6 [
//const float* pValue3 = pData->m_pCalcParam[2].m_pfParam;9 B; L# d9 K3 Z3 ?! a
//const float* pValue4 = pData->m_pCalcParam[3].m_pfParam;. B0 D; R- }8 a4 F3 y
//const float* pValue5 = pData->m_pCalcParam[4].m_pfParam;
( G. y; f+ p$ X3 zif(nPeriod>0)# b$ V; ~4 ]5 u" G( ~8 m% `. E
{
9 T' y/ A# [1 mfloatfTotal;4 T# C2 N+ T+ V( P
inti, j;1 N" C# K) U) d5 K* R1 p- M& r& D
intndata = pData->m_nNumData;
1 I7 h4 d% Q4 g' D; m6 B//float yy[5000][1];
, a# ]) f& Z* X: U1 \for( i = nPeriod-1; i < pData->m_nNumData; i++)//计算nPeriod周期的均线,数据从nPeriod-1开始有效
, L2 w, u5 K8 M1 V{) I# h* y% n- ]; I3 b5 ^3 w) z) ^
fTotal= 0.0f;! _9 o; I' T6 L& W
doublelngth=5.0;% g2 v# L, X) C* u# ^2 k
doublectemp=4.0;/ L8 E4 N# D% j1 \
//float yy1[5000][1];2 \. r7 C* ^3 I" D
for( j = 0; j < nPeriod; j++ ) //累加( t- E: L: [( {& W1 k
{
- i/ [ ^% h* h5 LfTotal= pData->m_pData.m_fClose; // @@@@@@@ vc++ 2010 cl.exe 使pData->m_pData[i-j].m_fClose错误
% O# S J B2 l7 M8 ?}
) ?+ {* v# d0 F' V+ `//pData->m_pResultBuf = fTotal*1.03; //平均
1 N! |) z/ O9 E+ M- mfTotal= cpParam3;* k& u! q* e [( m, b
pData->m_pResultBuf= fTotal*1.03; //平均& ]. J) M/ m; E! a/ S) w. W. h" y
//ctemp = (double) pData->m_pResultBuf; // double & - - - >overload a float value , double * - - - > overload a pointer todouble! z' u9 ~% S1 b
//pData->m_pResultBuf= (float) ppow10(ctemp,lngth); // float &- - - > overload a float value
( t: H; c. w. D% U# KpData->m_pResultBuf=(float) ppow10( (double) pData->m_pResultBuf,lngth); // float &- - - > overload a float value, (float) = overload( S! S2 N. B4 W) ?
}
# J" o; R# V. K4 b& o+ VreturnnPeriod-1;! @: O5 [/ x7 Z6 W2 ~9 v
}
5 V' @- z) a+ F. j}& n& {7 X2 _" C/ W4 B& k4 R, V8 a
return-1;0 k- K3 V" I% L
}
1 q) d4 ~6 R4 c8 \- {3 [* C1 R. N- d//计算均价,2个参数,参数1为待求均线的数据,参数2表示计算周期
+ o( s# z' G: X( _3 m//调用方法:
/ Z* m/ F0 |" l+ s' {+ C//"FOXFUNC@MYMAVAR"(CLOSE-OPEN,5)
1 b+ ~+ v- ^5 @0 S `6 L. a__declspec(dllexport)int WINAPI MYMAVAR(CALCINFO* pData)( }- |- h( q3 A- f2 N
{6 L% A: H% U$ P: ~) M2 l
if(pData->m_pfParam1&& pData->m_pfParam2 && //参数1,2有效% a0 Y- {( h1 ^( f
pData->m_nParam1Start>=0&& //参数1为序列数9 V, J' `6 M5 c& d+ `* e; G
pData->m_pfParam3==NULL)//有2个参数9 \+ r( H0 c" o
{
1 q7 ^1 p( G' z& k! Fconstfloat* pValue = pData->m_pfParam1; //参数1( l. c. a7 g# e
intnFirst = pData->m_nParam1Start; //有效值起始位
" X* u9 d6 w cfloatfParam = *pData->m_pfParam2; //参数2
# {% p0 \7 ^; p/ Q7 O. X* zintnPeriod = (int)fParam; C% E _& F, x7 z) G
if(nFirst >= 0 && nPeriod > 0 ). E; r/ n/ m6 R% R5 }' U
{
4 L% J# ~! T# HfloatfTotal;
2 n% x3 D& l' s6 binti, j;
/ Y8 w: i- d4 o# A8 E3 ]6 Tfor( i = nFirst+nPeriod-1; i < pData->m_nNumData; i++ )
8 G. `! R l1 w" q{, ?5 w5 V4 [: W- r* h
fTotal= 0.0f;$ A: J; E& M6 L7 M" i9 a! A- |3 ]. a
for( j=0; j < nPeriod; j++ ) //累加
4 l6 l( G& h$ i* }5 C6 ZfTotal+= pValue[i-j];! e& n# H$ U9 J0 [% q2 ^& c3 c
pData->m_pResultBuf= fTotal/nPeriod;//平均
- k, @4 z$ K. d6 ?, H5 _/ [0 x}
6 O7 d5 q4 R1 qreturnnFirst+nPeriod-1;
) l# B; ^* {0 D0 g: A}
. l/ E6 W: e) r# m. \' H* J/ O1 P}* ` E+ _+ j2 ~5 _. I$ z3 t4 `" C- C9 L
return-1;
% V) v: z3 A0 q* w}
. l! l! C/ p! g- {//计算多个序列的均值,5个参数,参数1-4为待求多个序列,参数5用于举例说明数值参数的用法,实际在此例中无需该参数6 Q# r" m- q$ O3 c C0 J/ o
/*
2 g4 S, O* a' G2 X [调用方法:
( E5 C3 h$ Q6 F% y0 S N& IMA1:=MA(CLOSE,3);
. |8 V9 J5 w4 K" JMA2:=MA(CLOSE,6);
+ w+ B4 r9 J5 ]; |* t0 |, WMA3:=MA(CLOSE,12);
4 O) ]8 V0 v/ @. _6 `4 g5 P0 ]3 aMA4:=MA(CLOSE,24);' Z5 S& d# ?( `/ T$ n6 H v; j
MYBBI:"FOXFUNC@MYBBI"(MA1, MA2, MA3, MA4, 4);5 i9 l1 l) y/ A# ~
*/
2 h; K/ N. B% ]1 m2 t2 B3 P__declspec(dllexport)int WINAPI MYBBI(CALCINFO* pData), V) T8 u5 M- ]: @6 C& c D
{9 O3 U, K% i1 a6 \5 k
if( pData->m_pCalcParam[0].m_nParamStart >= 0 &&
1 d& O% \/ C! y8 H% P9 m EpData->m_pCalcParam[1].m_nParamStart>= 0 &&
7 v2 |! M) G* i4 c" N# ?pData->m_pCalcParam[2].m_nParamStart>= 0 &&
& j3 {, H/ ?. R+ ?) {" z; SpData->m_pCalcParam[3].m_nParamStart>= 0 ) //4个序列都含有效数值2 D2 i; z: B% N# ?" W
{
+ ~( J ]$ g0 H7 l; m" }2 S5 [//计算返回的序列的第一个有效值位置+ X, z. V5 G$ N2 Y0 c8 \
intnFirst = pData->m_pCalcParam[2].m_nParamStart;//已知返回的序列的第一个有效值位置与第4个序列一致
3 u) J' r& C& F//若不知,则 A3 Z+ w3 @. v5 d5 d" C# U1 }
/*
7 C& q& }+ Y$ |! M e% y5 EintnFirst = pData->m_pCalcParam[0].m_nParamStart;5 h6 ^, N' S7 s$ C* K
if( nFirst < pData->m_pCalcParam[1].m_nParamStart )
. j( B. }! {4 a6 o; BnFirst= pData->m_pCalcParam[1].m_nParamStart;/ ^, p6 [. w; g$ Y9 E
if( nFirst < pData->m_pCalcParam[2].m_nParamStart )
" j2 n9 r4 W# \$ ~) unFirst= pData->m_pCalcParam[2].m_nParamStart;
* f8 n0 w2 ?, @if( nFirst < pData->m_pCalcParam[3].m_nParamStart )
6 i# i' d2 d% K3 S) g+ T% S+ inFirst= pData->m_pCalcParam[3].m_nParamStart;) }6 M1 s% }* H/ U: b! J
*/6 Q; X1 t; U* u- B" d& Q, g0 x
constfloat* pValue1 = pData->m_pCalcParam[0].m_pfParam;- h+ s& a+ O9 N: r. H) R) ^7 C
constfloat* pValue2 = pData->m_pCalcParam[1].m_pfParam;
& ~- T; I8 W& B9 P3 G' o0 p% E/ \constfloat* pValue3 = pData->m_pCalcParam[2].m_pfParam;- f; P1 |) N8 |* b! Z: |
constfloat* pValue4 = pData->m_pCalcParam[3].m_pfParam;; K1 O. O* v+ a' `0 [
constfloat* pValue5 = pData->m_pCalcParam[4].m_pfParam;
- f, J8 R9 k" {; Q1 @9 E; lconstfloat* pValue6 = pData->m_pCalcParam[5].m_pfParam;6 c0 ~& ]; }. b8 @+ H
//const float* pValue1 = pData->m_pfParam1;0 C' i f4 C1 @0 t4 z
//const float* pValue2 = pData->m_pfParam2;. L( M' ?- P$ C) Y9 h& p( v
//const float* pValue3 = pData->m_pfParam3;
2 C) G. p# C: D ]//int nNum = (int)(*pData->m_pfParam4);//实际上该例中已知nNum=4,在此用于说明数值参数的用法
; P3 i0 ^# T7 L- D+ S# l$ jintnNum = (int)(pData->m_pCalcParam[6].m_fParam);//实际上该例中已知nNum=4,在此用于说明数值参数的用法* G V5 Q. t! \5 t
for(int i = nFirst; i < pData->m_nNumData; i++ )
, [8 D S* }$ i8 m4 @{
, `- ?5 d/ ]1 |% u# W* v$ q% JpData->m_pResultBuf= 6 ~6 M$ Q1 I- }
//(pValue1 + pValue2 + pValue3 )/nNum;$ h1 C2 z7 S+ q
(pValue1+ pValue2 + pValue3 + pValue4+pValue5 + pValue6)/nNum;
% [7 o; a* D% t0 D, d+ B- ~}
% x6 u* E) R2 E& T: R. u4 i" P# {returnnFirst;
% k6 ~/ }& l t( u ~& t- K! Z}
* P# b% h% K: A( creturn-1;
( B+ f. i! g7 X5 B( I}
! W0 c7 |" I! ?( {5 b9 ]# W1 o0 A; \0 g$ {: O( Q9 e, u: [
, M2 y2 W4 x K% u- ~/ v7 Y2 W
! {# A" k7 N6 }/ G) n
//////////////////////////////////////////////////////////////pow10.asm
4 e" }5 M. a* s( ~4 A9 y5 J8 w;*******************************************************- K* f \3 ?% D3 o* h, V
;* *+ |# |7 q7 N9 G0 T! `9 N
;* Delphi Run Library *4 d" `9 q* h5 Z' G; g
;* *2 Z! X) R% |3 `; _2 A3 Q1 b
;* Copyright (c) 1996,98 Inprise Corporation *9 X$ `- B) }/ K7 e( [' O- k1 t
;*--------------------------------------------------------------------------
3 G' z3 Q( }% R4 d4 @' e& V% Z;* To compile "tasm32 /ml pow10.asm" *
7 r+ V- K/ O# a+ K;*--------------------------------------------------------------------------
) R: u, ?; L; L, w;*******************************************************
J3 E4 b5 _; E! G$ |& }.386
$ U1 }4 M" I4 x) K; ^" m! s& D;.MODEL flat,c (error must be in segement block must have segment
; B4 f" H2 C: Y1 v;!!!!!11 important if ',c' is not used , must use 'public _ppow10, and'_ppow10 proc': G$ p% ?& x1 b/ t$ e$ E% u
;!!!!!11 important if .MODEL flat,c is not used , must use ;_TEXTSEGMENT WORD PUBLIC
# }0 G" J+ E1 ^4 ~, F ];'CODE'..._TEXT ENDS and must use 'public _ppow10 and '_ppow10 proc'
# U r6 |# e$ K- k) r: x8 ]) B' m2 S.MODELflat,c ; just use .code, no need for segment,!!!!!11 important if',c' is used , must use 'public ppow10, and 'ppow10 proc'" B7 t" n! N2 u
;ppow10 PROTO,aVal:PTR REAL8, bVal:PTR REAL8
" Q4 a" |/ V$ {4 y7 ^ a( U# `;includeE:\Vsource\masm32\INCLUDE\windows.inc( W* G3 w$ H/ }: [' T, z6 J
;includeE:\Vsource\masm32\INCLUDE\user32.inc
+ C0 \8 \* f2 D: t4 I+ F& l;includeE:\Vsource\masm32\INCLUDE\kernel32.inc; Z; i8 ]5 G2 T. N% Y
PUBLICppow10: z# Y9 `7 t6 m3 b
.CODE
; v" r I E! @5 z. o;DllEntryproc hInstance:HINSTANCE, reason:DWORD, reserved1:DWORD5 b* H0 g4 [8 N/ y+ | ^. L
;.if reason==DLL_PROCESS_ATTACH2 Q( {+ c+ l, B
;invoke MessageBox,NULL,addr LoadMsg,addr AppName,MB_OK
2 Y; H" } a* k4 e( a# E;.elseif reason==DLL_PROCESS_DETACH
4 s1 k) D7 u7 I0 a;invoke MessageBox,NULL,addr UnloadMsg,addr AppName,MB_OK
1 V1 U/ ~! {" \( ];.elseif reason==DLL_THREAD_ATTACH" Z' ?/ V- O" v3 I
;invoke MessageBox,NULL,addr ThreadCreated,addr AppName,MB_OK
. f; |' \( g' \$ k9 G6 T;.else ; DLL_THREAD_DETACH3 T# z/ r J f* ]$ @+ H
;invoke MessageBox,NULL,addr ThreadDestroyed,addr AppName,MB_OK
8 F" f" ~. Q0 X2 O8 g6 J) q;.endif
_) b7 _% i% |, ~2 z: |: v, K;mov eax,TRUE) ]( M: |1 r7 c% i% B& l/ |
;ret
6 J" F5 j( @( g% d2 m; M) ]8 k% |;DllEntryEndp* b2 e- U9 O6 ?1 X; ^. y
;FUNCTION _Ppow10( double val, double pow: ) : Extended;
2 s, t$ ?0 m2 Z7 r# F+ d5 u, A;_TEXTSEGMENT WORD PUBLIC 'CODE'
% v3 z. U) E. K;ppow10 PROC,aVal:PTR REAL8, bVal:PTR REAL8! t7 @$ q: g1 E( m# p
;ppow10 PROC,aVal:* Qword, bVal:Qword
- x9 L4 w! {# k0 t0 r" R) gppow10PROC near
$ v' R7 |8 v3 V, Y7 {XUEQU 8 ; for eip & ebp * m& ?9 `4 B) |* k# K5 K) ]
XDEQU 0 ; for edi, esi, ebx, ecx, edx
0 X0 K# c5 E$ A1 t) Z1 @fp_powerEQU QWORD PTR [ebp+XU+8]
. r6 w. C5 \) t3 mfp_valEQU QWORD PTR [ebp+XU]
& T- i& M* [3 |. W7 kvalEQU QWORD PTR [eBP-XD-8] ; USE STACK/ ~; u$ ^" G8 x6 p( f# G
powerEQU QWORD PTR [eBP-XD-16] ; USE STACK7 [( E/ P8 `$ C: k$ E5 @" Q F% @
pow10EQU QWORD PTR [eBP-XD-24] ; USE STACK
$ d# C5 x; g; g, V$ P' |FPower10:+ T$ X: I2 P2 K
pushebp
. D% C4 L( \- E9 imovebp,esp) e2 {7 X2 l c8 e# a- b. B
;push edi4 p9 Q0 D7 k H. F6 {1 E
;push esi
$ j8 S& T9 n- I" g" T;push eax
& b: H& ^/ b4 V u;push edx; d. f1 G& h' ^4 {1 E
subesp,24: {0 w( a* W9 `
FINIT
; D8 C! Z/ `1 U3 Tfldz/ o3 E" `8 O/ U6 E* `/ e9 n$ u; v
fstval* q8 ~! m) z/ f( W0 f
fstpower
" ^- E* m% X4 a; y3 L7 ]# Ufstppow10& H. H) P: }* u4 e& Y, |2 N
MOV EAX,8 MOV EDX,8; fldpi
% {; M; z* x5 Q$ A5 p fld fp_val ;st(0)=val; fld aVal;st(0)=val6 B, M, h( [) `- J
fstval$ L0 U0 _+ O5 S1 L! Y1 d, W: R
;fld Arg2 ;st(0)=power
l& r+ c+ D9 ];fstp power
# v; L! d3 Q8 \; I' x1 u;fld val ;st(0)=val
; n8 Y5 ~/ q$ g( a! H7 ]. J l% o;fmul val ;st(0)=val*val
( Q, s0 x- v: W/ [1 Z;fmul val ;st(0)=val*va*val$ j: _" D% h0 {; {0 \
;fadd st,st(0). ?- `: {$ f, {9 l3 A
;fmul qword ptr [ebp+16] ;st(0)=power
% Z8 R: V" H2 J8 O) N4 P/ k;fadd st,st(0). [; Y/ j5 [7 S3 d) O" ?
;fwait0 k1 a9 e/ m; f
addesp,24
- n) o. U3 p: ]" U) l- V3 _$ B% P;pop edx# {6 f" q: `/ i, {" Q. ~
;pop eax
- E0 d, N) M P* x* D. b' ^- V;pop esi9 L7 F* u3 f* k
;pop edi6 @1 C% Y0 ` b& o: j9 `. d, }
movesp,ebp
& S/ h; ^% A/ e0 A6 Z4 h5 `popebp
" Q- E) l# u& Y( Y# [7 P;leave ; @@@@@@ important don't use leave in vc++ 2010
* F3 q, }3 n& a% L6 |) YRET;return value = st(0)
" A4 e) [3 y2 t' E7 i- eppow10ENDP6 C! y% I% [" v7 y' w. B, t
;_TEXTENDS# b2 z6 R/ ^/ R2 c2 ^, ~1 G5 V+ S
END8 @+ H9 @! o0 d$ @
;END DllEntry |