Subversion Repositories decoder

Rev

Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
2 daniel-mar 1
{Copyright:      Hagen Reddmann  HaReddmann at T-Online dot de
2
 Author:         Hagen Reddmann
3
 Remarks:        freeware, but this Copyright must be included
4
 known Problems: none
5
 Version:        5.1,  Part I from Delphi Encryption Compendium  ( DEC Part I)
6
                 Delphi 5
7
 
8
 * THIS SOFTWARE IS PROVIDED BY THE AUTHORS ''AS IS'' AND ANY EXPRESS
9
 * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
10
 * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
11
 * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHORS OR CONTRIBUTORS BE
12
 * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
13
 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
14
 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
15
 * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
16
 * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
17
 * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
18
 * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
19
 
20
}
21
 
22
{$IFDEF THash_MD2_asm}
23
procedure THash_MD2.DoTransform(Buffer: PLongArray);
24
asm
25
                push    ebx
26
                push    esi
27
                push    edi
28
                push    ebp
29
 
30
                lea  esi, [eax].THash_MD2.FDigest
31
 
32
 
33
                // copying incoming buffer into work buffer
34
                mov  eax, [edx]
35
                mov  ecx, [edx + 4]
36
                mov  ebx, [edx + 8]
37
                mov  edi, [edx + 12]
38
                mov  [esi + 16], eax
39
                mov  [esi + 16 + 4], ecx
40
                mov  [esi + 16 + 8], ebx
41
                mov  [esi + 16 + 12], edi
42
 
43
 
44
                // recalculating message checksum
45
                //  loop unrolled to 4 iterations,
46
                // combined with
47
                //  xor first 16 bytes with second 16 and move res to third
48
                mov   ecx, dword ptr [esi + 60]
49
                mov   edi, -16
50
                shr   ecx, 24
51
 
52
             @checksumloop:
53
 
54
                mov  edx, dword ptr [esi + edi + 16]       // digest
55
                mov  ebp, dword ptr [esi + edi + 16 + 16]  // source data
56
                mov  ebx, dword ptr [esi + edi + 16 + 48]  // checksum
57
 
58
                xor  ecx, ebp
59
                xor  edx, ebp
60
                and  ecx, 0ffh
61
                xor  eax, eax
62
                mov  ecx, dword ptr MD2_PiSubst[ecx*4]
63
                shr  ebp, 8
64
                xor  ecx, ebx
65
                mov  dword ptr [esi + edi + 16 + 32], edx
66
                and  ecx, 0ffh
67
                shr  ebx, 8
68
                or   eax, ecx
69
                shl  eax, 24
70
 
71
                xor  ecx, ebp
72
                and  ecx, 0ffh
73
                shr  ebp, 8
74
                mov  ecx, dword ptr MD2_PiSubst[ecx*4]
75
                xor  ecx, ebx
76
                and  ecx, 0ffh
77
                shr  ebx, 8
78
                or   eax, ecx
79
                ror  eax, 8
80
 
81
                xor  ecx, ebp
82
                and  ecx, 0ffh
83
                shr  ebp, 8
84
                mov  ecx, dword ptr MD2_PiSubst[ecx*4]
85
                xor  ecx, ebx
86
                and  ecx, 0ffh
87
                shr  ebx, 8
88
                or   eax, ecx
89
                ror  eax, 8
90
 
91
                xor  ecx, ebp
92
                and  ecx, 0ffh
93
                mov  ecx, dword ptr MD2_PiSubst[ecx*4]
94
                xor  ecx, ebx
95
                or   eax, ecx
96
                ror  eax, 8
97
 
98
                mov  dword ptr [esi + edi + 16 + 48], eax
99
 
100
                add  edi, 4
101
                jnz  @checksumloop
102
 
103
 
104
                // do 18 rounds of transformation
105
                //  internal loop unrolled
106
 
107
                lea  edi, MD2_PiSubst  // MD2 permutation array pointer
108
                xor  ecx, ecx       // T variable
109
                xor  ebp, ebp       // external 18 rounds loop
110
                mov  ebx, 0ffh      // mask constant
111
 
112
             @roundsloop:
113
 
114
 
115
                // part 1
116
                mov  edx, dword ptr [esi]
117
                mov  ecx, dword ptr [edi + ecx*4]
118
                xor  eax, eax
119
                xor  ecx, edx
120
                shr  edx, 8
121
                and  ecx, ebx
122
                or   eax, ecx
123
 
124
                mov  ecx, dword ptr [edi + ecx*4]
125
                shl  eax, 24
126
                xor  ecx, edx
127
                shr  edx, 8
128
                and  ecx, ebx
129
                or   eax, ecx
130
 
131
                mov  ecx, dword ptr [edi + ecx*4]
132
                ror  eax, 8
133
                xor  ecx, edx
134
                shr  edx, 8
135
                and  ecx, ebx
136
                or   eax, ecx
137
 
138
                mov  ecx, dword ptr [edi + ecx*4]
139
                ror  eax, 8
140
                xor  ecx, edx
141
                or   eax, ecx
142
                ror  eax, 8
143
                mov  dword ptr [esi], eax
144
 
145
                // part 2
146
                mov  edx, dword ptr [esi + 4]
147
                mov  ecx, dword ptr [edi + ecx*4]
148
                xor  eax, eax
149
                xor  ecx, edx
150
                shr  edx, 8
151
                and  ecx, ebx
152
                or   eax, ecx
153
 
154
                mov  ecx, dword ptr [edi + ecx*4]
155
                shl  eax, 24
156
                xor  ecx, edx
157
                shr  edx, 8
158
                and  ecx, ebx
159
                or   eax, ecx
160
 
161
                mov  ecx, dword ptr [edi + ecx*4]
162
                ror  eax, 8
163
                xor  ecx, edx
164
                shr  edx, 8
165
                and  ecx, ebx
166
                or   eax, ecx
167
 
168
                mov  ecx, dword ptr [edi + ecx*4]
169
                ror  eax, 8
170
                xor  ecx, edx
171
                or   eax, ecx
172
                ror  eax, 8
173
                mov  dword ptr [esi + 4], eax
174
 
175
                // part 3
176
                mov  edx, dword ptr [esi + 8]
177
                mov  ecx, dword ptr [edi + ecx*4]
178
                xor  eax, eax
179
                xor  ecx, edx
180
                shr  edx, 8
181
                and  ecx, ebx
182
                or   eax, ecx
183
 
184
                mov  ecx, dword ptr [edi + ecx*4]
185
                shl  eax, 24
186
                xor  ecx, edx
187
                shr  edx, 8
188
                and  ecx, ebx
189
                or   eax, ecx
190
 
191
                mov  ecx, dword ptr [edi + ecx*4]
192
                ror  eax, 8
193
                xor  ecx, edx
194
                shr  edx, 8
195
                and  ecx, ebx
196
                or   eax, ecx
197
 
198
                mov  ecx, dword ptr [edi + ecx*4]
199
                ror  eax, 8
200
                xor  ecx, edx
201
                or   eax, ecx
202
                ror  eax, 8
203
                mov  dword ptr [esi + 8], eax
204
 
205
                // part 4
206
                mov  edx, dword ptr [esi + 12]
207
                mov  ecx, dword ptr [edi + ecx*4]
208
                xor  eax, eax
209
                xor  ecx, edx
210
                shr  edx, 8
211
                and  ecx, ebx
212
                or   eax, ecx
213
 
214
                mov  ecx, dword ptr [edi + ecx*4]
215
                shl  eax, 24
216
                xor  ecx, edx
217
                shr  edx, 8
218
                and  ecx, ebx
219
                or   eax, ecx
220
 
221
                mov  ecx, dword ptr [edi + ecx*4]
222
                ror  eax, 8
223
                xor  ecx, edx
224
                shr  edx, 8
225
                and  ecx, ebx
226
                or   eax, ecx
227
 
228
                mov  ecx, dword ptr [edi + ecx*4]
229
                ror  eax, 8
230
                xor  ecx, edx
231
                or   eax, ecx
232
                ror  eax, 8
233
                mov  dword ptr [esi + 12], eax
234
 
235
                // part 5
236
                mov  edx, dword ptr [esi + 16]
237
                mov  ecx, dword ptr [edi + ecx*4]
238
                xor  eax, eax
239
                xor  ecx, edx
240
                shr  edx, 8
241
                and  ecx, ebx
242
                or   eax, ecx
243
 
244
                mov  ecx, dword ptr [edi + ecx*4]
245
                shl  eax, 24
246
                xor  ecx, edx
247
                shr  edx, 8
248
                and  ecx, ebx
249
                or   eax, ecx
250
 
251
                mov  ecx, dword ptr [edi + ecx*4]
252
                ror  eax, 8
253
                xor  ecx, edx
254
                shr  edx, 8
255
                and  ecx, ebx
256
                or   eax, ecx
257
 
258
                mov  ecx, dword ptr [edi + ecx*4]
259
                ror  eax, 8
260
                xor  ecx, edx
261
                or   eax, ecx
262
                ror  eax, 8
263
                mov  dword ptr [esi + 16], eax
264
 
265
                // part 6
266
                mov  edx, dword ptr [esi + 20]
267
                mov  ecx, dword ptr [edi + ecx*4]
268
                xor  eax, eax
269
                xor  ecx, edx
270
                shr  edx, 8
271
                and  ecx, ebx
272
                or   eax, ecx
273
 
274
                mov  ecx, dword ptr [edi + ecx*4]
275
                shl  eax, 24
276
                xor  ecx, edx
277
                shr  edx, 8
278
                and  ecx, ebx
279
                or   eax, ecx
280
 
281
                mov  ecx, dword ptr [edi + ecx*4]
282
                ror  eax, 8
283
                xor  ecx, edx
284
                shr  edx, 8
285
                and  ecx, ebx
286
                or   eax, ecx
287
 
288
                mov  ecx, dword ptr [edi + ecx*4]
289
                ror  eax, 8
290
                xor  ecx, edx
291
                or   eax, ecx
292
                ror  eax, 8
293
                mov  dword ptr [esi + 20], eax
294
 
295
                // part 7
296
                mov  edx, dword ptr [esi + 24]
297
                mov  ecx, dword ptr [edi + ecx*4]
298
                xor  eax, eax
299
                xor  ecx, edx
300
                shr  edx, 8
301
                and  ecx, ebx
302
                or   eax, ecx
303
 
304
                mov  ecx, dword ptr [edi + ecx*4]
305
                shl  eax, 24
306
                xor  ecx, edx
307
                shr  edx, 8
308
                and  ecx, ebx
309
                or   eax, ecx
310
 
311
                mov  ecx, dword ptr [edi + ecx*4]
312
                ror  eax, 8
313
                xor  ecx, edx
314
                shr  edx, 8
315
                and  ecx, ebx
316
                or   eax, ecx
317
 
318
                mov  ecx, dword ptr [edi + ecx*4]
319
                ror  eax, 8
320
                xor  ecx, edx
321
                or   eax, ecx
322
                ror  eax, 8
323
                mov  dword ptr [esi + 24], eax
324
 
325
                // part 8
326
                mov  edx, dword ptr [esi + 28]
327
                mov  ecx, dword ptr [edi + ecx*4]
328
                xor  eax, eax
329
                xor  ecx, edx
330
                shr  edx, 8
331
                and  ecx, ebx
332
                or   eax, ecx
333
 
334
                mov  ecx, dword ptr [edi + ecx*4]
335
                shl  eax, 24
336
                xor  ecx, edx
337
                shr  edx, 8
338
                and  ecx, ebx
339
                or   eax, ecx
340
 
341
                mov  ecx, dword ptr [edi + ecx*4]
342
                ror  eax, 8
343
                xor  ecx, edx
344
                shr  edx, 8
345
                and  ecx, ebx
346
                or   eax, ecx
347
 
348
                mov  ecx, dword ptr [edi + ecx*4]
349
                ror  eax, 8
350
                xor  ecx, edx
351
                or   eax, ecx
352
                ror  eax, 8
353
                mov  dword ptr [esi + 28], eax
354
 
355
                // part 9
356
                mov  edx, dword ptr [esi + 32]
357
                mov  ecx, dword ptr [edi + ecx*4]
358
                xor  eax, eax
359
                xor  ecx, edx
360
                shr  edx, 8
361
                and  ecx, ebx
362
                or   eax, ecx
363
 
364
                mov  ecx, dword ptr [edi + ecx*4]
365
                shl  eax, 24
366
                xor  ecx, edx
367
                shr  edx, 8
368
                and  ecx, ebx
369
                or   eax, ecx
370
 
371
                mov  ecx, dword ptr [edi + ecx*4]
372
                ror  eax, 8
373
                xor  ecx, edx
374
                shr  edx, 8
375
                and  ecx, ebx
376
                or   eax, ecx
377
 
378
                mov  ecx, dword ptr [edi + ecx*4]
379
                ror  eax, 8
380
                xor  ecx, edx
381
                or   eax, ecx
382
                ror  eax, 8
383
                mov  dword ptr [esi + 32], eax
384
 
385
                // part 10
386
                mov  edx, dword ptr [esi + 36]
387
                mov  ecx, dword ptr [edi + ecx*4]
388
                xor  eax, eax
389
                xor  ecx, edx
390
                shr  edx, 8
391
                and  ecx, ebx
392
                or   eax, ecx
393
 
394
                mov  ecx, dword ptr [edi + ecx*4]
395
                shl  eax, 24
396
                xor  ecx, edx
397
                shr  edx, 8
398
                and  ecx, ebx
399
                or   eax, ecx
400
 
401
                mov  ecx, dword ptr [edi + ecx*4]
402
                ror  eax, 8
403
                xor  ecx, edx
404
                shr  edx, 8
405
                and  ecx, ebx
406
                or   eax, ecx
407
 
408
                mov  ecx, dword ptr [edi + ecx*4]
409
                ror  eax, 8
410
                xor  ecx, edx
411
                or   eax, ecx
412
                ror  eax, 8
413
                mov  dword ptr [esi + 36], eax
414
 
415
                // part 11
416
                mov  edx, dword ptr [esi + 40]
417
                mov  ecx, dword ptr [edi + ecx*4]
418
                xor  eax, eax
419
                xor  ecx, edx
420
                shr  edx, 8
421
                and  ecx, ebx
422
                or   eax, ecx
423
 
424
                mov  ecx, dword ptr [edi + ecx*4]
425
                shl  eax, 24
426
                xor  ecx, edx
427
                shr  edx, 8
428
                and  ecx, ebx
429
                or   eax, ecx
430
 
431
                mov  ecx, dword ptr [edi + ecx*4]
432
                ror  eax, 8
433
                xor  ecx, edx
434
                shr  edx, 8
435
                and  ecx, ebx
436
                or   eax, ecx
437
 
438
                mov  ecx, dword ptr [edi + ecx*4]
439
                ror  eax, 8
440
                xor  ecx, edx
441
                or   eax, ecx
442
                ror  eax, 8
443
                mov  dword ptr [esi + 40], eax
444
 
445
                // part 12
446
                mov  edx, dword ptr [esi + 44]
447
                mov  ecx, dword ptr [edi + ecx*4]
448
                xor  eax, eax
449
                xor  ecx, edx
450
                shr  edx, 8
451
                and  ecx, ebx
452
                or   eax, ecx
453
 
454
                mov  ecx, dword ptr [edi + ecx*4]
455
                shl  eax, 24
456
                xor  ecx, edx
457
                shr  edx, 8
458
                and  ecx, ebx
459
                or   eax, ecx
460
 
461
                mov  ecx, dword ptr [edi + ecx*4]
462
                ror  eax, 8
463
                xor  ecx, edx
464
                shr  edx, 8
465
                and  ecx, ebx
466
                or   eax, ecx
467
 
468
                mov  ecx, dword ptr [edi + ecx*4]
469
                ror  eax, 8
470
                xor  ecx, edx
471
                or   eax, ecx
472
                ror  eax, 8
473
                mov  dword ptr [esi + 44], eax
474
 
475
 
476
                add  ecx, ebp
477
                inc  ebp
478
                and  ecx, ebx
479
                cmp  ebp, 18
480
                jnz  @roundsloop
481
 
482
 
483
                pop  ebp
484
                pop  edi
485
                pop  esi
486
                pop  ebx
487
end;
488
{$ENDIF}
489
 
490
{$IFDEF THash_MD4_asm}
491
procedure THash_MD4.DoTransform(Buffer: PLongArray);
492
asm
493
                push    ebx
494
                push    esi
495
                push    edi
496
                lea     edi, [eax].THash_MD4.FDigest  // let edi points to A,B ..
497
                mov     esi, edx                      // let esi points to Buffer
498
                push    ebp
499
 
500
                mov     eax, [edi]
501
                mov     ebx, [edi+4]
502
                push    edi
503
                mov     ecx, [edi+8]
504
                mov     edx, [edi+0Ch]
505
                mov     edi, ecx
506
                xor     edi, edx
507
                and     edi, ebx
508
                mov     ebp, [esi]
509
                xor     edi, edx
510
                add     eax, ebp
511
                mov     ebp, ebx
512
                add     eax, edi
513
                rol     eax, 3
514
                xor     ebp, ecx
515
                mov     edi, [esi+4]
516
                and     ebp, eax
517
                add     edx, edi
518
                xor     ebp, ecx
519
                mov     edi, eax
520
                add     edx, ebp
521
                xor     edi, ebx
522
                rol     edx, 7
523
                and     edi, edx
524
                mov     ebp, [esi+8]
525
                xor     edi, ebx
526
                add     ecx, ebp
527
                mov     ebp, edx
528
                add     ecx, edi
529
                rol     ecx, 0Bh
530
                xor     ebp, eax
531
                mov     edi, [esi+0Ch]
532
                and     ebp, ecx
533
                add     ebx, edi
534
                xor     ebp, eax
535
                mov     edi, ecx
536
                add     ebx, ebp
537
                xor     edi, edx
538
                ror     ebx, 0Dh
539
                and     edi, ebx
540
                mov     ebp, [esi+10h]
541
                xor     edi, edx
542
                add     eax, ebp
543
                mov     ebp, ebx
544
                add     eax, edi
545
                rol     eax, 3
546
                xor     ebp, ecx
547
                mov     edi, [esi+14h]
548
                and     ebp, eax
549
                add     edx, edi
550
                xor     ebp, ecx
551
                mov     edi, eax
552
                add     edx, ebp
553
                xor     edi, ebx
554
                rol     edx, 7
555
                and     edi, edx
556
                mov     ebp, [esi+18h]
557
                xor     edi, ebx
558
                add     ecx, ebp
559
                mov     ebp, edx
560
                add     ecx, edi
561
                rol     ecx, 0Bh
562
                xor     ebp, eax
563
                mov     edi, [esi+1Ch]
564
                and     ebp, ecx
565
                add     ebx, edi
566
                xor     ebp, eax
567
                mov     edi, ecx
568
                add     ebx, ebp
569
                xor     edi, edx
570
                ror     ebx, 0Dh
571
                and     edi, ebx
572
                mov     ebp, [esi+20h]
573
                xor     edi, edx
574
                add     eax, ebp
575
                mov     ebp, ebx
576
                add     eax, edi
577
                rol     eax, 3
578
                xor     ebp, ecx
579
                mov     edi, [esi+24h]
580
                and     ebp, eax
581
                add     edx, edi
582
                xor     ebp, ecx
583
                mov     edi, eax
584
                add     edx, ebp
585
                xor     edi, ebx
586
                rol     edx, 7
587
                and     edi, edx
588
                mov     ebp, [esi+28h]
589
                xor     edi, ebx
590
                add     ecx, ebp
591
                mov     ebp, edx
592
                add     ecx, edi
593
                rol     ecx, 0Bh
594
                xor     ebp, eax
595
                mov     edi, [esi+2Ch]
596
                and     ebp, ecx
597
                add     ebx, edi
598
                xor     ebp, eax
599
                mov     edi, ecx
600
                add     ebx, ebp
601
                xor     edi, edx
602
                ror     ebx, 0Dh
603
                and     edi, ebx
604
                mov     ebp, [esi+30h]
605
                xor     edi, edx
606
                add     eax, ebp
607
                mov     ebp, ebx
608
                add     eax, edi
609
                rol     eax, 3
610
                xor     ebp, ecx
611
                mov     edi, [esi+34h]
612
                and     ebp, eax
613
                add     edx, edi
614
                xor     ebp, ecx
615
                mov     edi, eax
616
                add     edx, ebp
617
                xor     edi, ebx
618
                rol     edx, 7
619
                and     edi, edx
620
                mov     ebp, [esi+38h]
621
                xor     edi, ebx
622
                add     ecx, ebp
623
                mov     ebp, edx
624
                add     ecx, edi
625
                rol     ecx, 0Bh
626
                xor     ebp, eax
627
                mov     edi, [esi+3Ch]
628
                and     ebp, ecx
629
                add     ebx, edi
630
                xor     ebp, eax
631
                mov     edi, edx
632
                add     ebx, ebp
633
                mov     ebp, edx
634
                ror     ebx, 0Dh
635
                or      edi, ecx
636
                and     ebp, ecx
637
                and     edi, ebx
638
                add     eax, [esi]
639
                or      edi, ebp
640
                mov     ebp, ecx
641
                lea     eax, [eax+edi+5A827999h]
642
                mov     edi, ecx
643
                rol     eax, 3
644
                or      edi, ebx
645
                and     ebp, ebx
646
                and     edi, eax
647
                add     edx, [esi+10h]
648
                or      edi, ebp
649
                mov     ebp, ebx
650
                lea     edx, [edx+edi+5A827999h]
651
                mov     edi, ebx
652
                rol     edx, 5
653
                or      edi, eax
654
                and     ebp, eax
655
                and     edi, edx
656
                add     ecx, [esi+20h]
657
                or      edi, ebp
658
                mov     ebp, eax
659
                lea     ecx, [ecx+edi+5A827999h]
660
                mov     edi, eax
661
                rol     ecx, 9
662
                or      edi, edx
663
                and     ebp, edx
664
                and     edi, ecx
665
                add     ebx, [esi+30h]
666
                or      edi, ebp
667
                mov     ebp, edx
668
                lea     ebx, [ebx+edi+5A827999h]
669
                mov     edi, edx
670
                rol     ebx, 0Dh
671
                or      edi, ecx
672
                and     ebp, ecx
673
                and     edi, ebx
674
                add     eax, [esi+4]
675
                or      edi, ebp
676
                mov     ebp, ecx
677
                lea     eax, [eax+edi+5A827999h]
678
                mov     edi, ecx
679
                rol     eax, 3
680
                or      edi, ebx
681
                and     ebp, ebx
682
                and     edi, eax
683
                add     edx, [esi+14h]
684
                or      edi, ebp
685
                mov     ebp, ebx
686
                lea     edx, [edx+edi+5A827999h]
687
                mov     edi, ebx
688
                rol     edx, 5
689
                or      edi, eax
690
                and     ebp, eax
691
                and     edi, edx
692
                add     ecx, [esi+24h]
693
                or      edi, ebp
694
                mov     ebp, eax
695
                lea     ecx, [ecx+edi+5A827999h]
696
                mov     edi, eax
697
                rol     ecx, 9
698
                or      edi, edx
699
                and     ebp, edx
700
                and     edi, ecx
701
                add     ebx, [esi+34h]
702
                or      edi, ebp
703
                mov     ebp, edx
704
                lea     ebx, [ebx+edi+5A827999h]
705
                mov     edi, edx
706
                rol     ebx, 0Dh
707
                or      edi, ecx
708
                and     ebp, ecx
709
                and     edi, ebx
710
                add     eax, [esi+8]
711
                or      edi, ebp
712
                mov     ebp, ecx
713
                lea     eax, [eax+edi+5A827999h]
714
                mov     edi, ecx
715
                rol     eax, 3
716
                or      edi, ebx
717
                and     ebp, ebx
718
                and     edi, eax
719
                add     edx, [esi+18h]
720
                or      edi, ebp
721
                mov     ebp, ebx
722
                lea     edx, [edx+edi+5A827999h]
723
                mov     edi, ebx
724
                rol     edx, 5
725
                or      edi, eax
726
                and     ebp, eax
727
                and     edi, edx
728
                add     ecx, [esi+28h]
729
                or      edi, ebp
730
                mov     ebp, eax
731
                lea     ecx, [ecx+edi+5A827999h]
732
                mov     edi, eax
733
                rol     ecx, 9
734
                or      edi, edx
735
                and     ebp, edx
736
                and     edi, ecx
737
                add     ebx, [esi+38h]
738
                or      edi, ebp
739
                mov     ebp, edx
740
                lea     ebx, [ebx+edi+5A827999h]
741
                mov     edi, edx
742
                rol     ebx, 0Dh
743
                or      edi, ecx
744
                and     ebp, ecx
745
                and     edi, ebx
746
                add     eax, [esi+0Ch]
747
                or      edi, ebp
748
                mov     ebp, ecx
749
                lea     eax, [eax+edi+5A827999h]
750
                mov     edi, ecx
751
                rol     eax, 3
752
                or      edi, ebx
753
                and     ebp, ebx
754
                and     edi, eax
755
                add     edx, [esi+1Ch]
756
                or      edi, ebp
757
                mov     ebp, ebx
758
                lea     edx, [edx+edi+5A827999h]
759
                mov     edi, ebx
760
                rol     edx, 5
761
                or      edi, eax
762
                and     ebp, eax
763
                and     edi, edx
764
                add     ecx, [esi+2Ch]
765
                or      edi, ebp
766
                mov     ebp, eax
767
                lea     ecx, [ecx+edi+5A827999h]
768
                mov     edi, eax
769
                rol     ecx, 9
770
                or      edi, edx
771
                and     ebp, edx
772
                and     edi, ecx
773
                add     ebx, [esi+3Ch]
774
                or      edi, ebp
775
                mov     ebp, edx
776
                lea     ebx, [ebx+edi+5A827999h]
777
                mov     edi, edx
778
                rol     ebx, 0Dh
779
                xor     edi, ecx
780
                mov     ebp, [esi]
781
                xor     edi, ebx
782
                add     eax, ebp
783
                lea     eax, [eax+edi+6ED9EBA1h]
784
                mov     ebp, ecx
785
                rol     eax, 3
786
                xor     ebp, ebx
787
                mov     edi, [esi+20h]
788
                xor     ebp, eax
789
                add     edx, edi
790
                lea     edx, [edx+ebp+6ED9EBA1h]
791
                mov     edi, ebx
792
                rol     edx, 9
793
                xor     edi, eax
794
                mov     ebp, [esi+10h]
795
                xor     edi, edx
796
                add     ecx, ebp
797
                lea     ecx, [ecx+edi+6ED9EBA1h]
798
                mov     ebp, eax
799
                rol     ecx, 0Bh
800
                xor     ebp, edx
801
                mov     edi, [esi+30h]
802
                xor     ebp, ecx
803
                add     ebx, edi
804
                lea     ebx, [ebx+ebp+6ED9EBA1h]
805
                mov     edi, edx
806
                rol     ebx, 0Fh
807
                xor     edi, ecx
808
                mov     ebp, [esi+8]
809
                xor     edi, ebx
810
                add     eax, ebp
811
                lea     eax, [eax+edi+6ED9EBA1h]
812
                mov     ebp, ecx
813
                rol     eax, 3
814
                xor     ebp, ebx
815
                mov     edi, [esi+28h]
816
                xor     ebp, eax
817
                add     edx, edi
818
                lea     edx, [edx+ebp+6ED9EBA1h]
819
                mov     edi, ebx
820
                rol     edx, 9
821
                xor     edi, eax
822
                mov     ebp, [esi+18h]
823
                xor     edi, edx
824
                add     ecx, ebp
825
                lea     ecx, [ecx+edi+6ED9EBA1h]
826
                mov     ebp, eax
827
                rol     ecx, 0Bh
828
                xor     ebp, edx
829
                mov     edi, [esi+38h]
830
                xor     ebp, ecx
831
                add     ebx, edi
832
                lea     ebx, [ebx+ebp+6ED9EBA1h]
833
                mov     edi, edx
834
                rol     ebx, 0Fh
835
                xor     edi, ecx
836
                mov     ebp, [esi+4]
837
                xor     edi, ebx
838
                add     eax, ebp
839
                lea     eax, [eax+edi+6ED9EBA1h]
840
                mov     ebp, ecx
841
                rol     eax, 3
842
                xor     ebp, ebx
843
                mov     edi, [esi+24h]
844
                xor     ebp, eax
845
                add     edx, edi
846
                lea     edx, [edx+ebp+6ED9EBA1h]
847
                mov     edi, ebx
848
                rol     edx, 9
849
                xor     edi, eax
850
                mov     ebp, [esi+14h]
851
                xor     edi, edx
852
                add     ecx, ebp
853
                lea     ecx, [ecx+edi+6ED9EBA1h]
854
                mov     ebp, eax
855
                rol     ecx, 0Bh
856
                xor     ebp, edx
857
                mov     edi, [esi+34h]
858
                xor     ebp, ecx
859
                add     ebx, edi
860
                lea     ebx, [ebx+ebp+6ED9EBA1h]
861
                mov     edi, edx
862
                rol     ebx, 0Fh
863
                xor     edi, ecx
864
                mov     ebp, [esi+0Ch]
865
                xor     edi, ebx
866
                add     eax, ebp
867
                lea     eax, [eax+edi+6ED9EBA1h]
868
                mov     ebp, ecx
869
                rol     eax, 3
870
                xor     ebp, ebx
871
                mov     edi, [esi+2Ch]
872
                xor     ebp, eax
873
                add     edx, edi
874
                lea     edx, [edx+ebp+6ED9EBA1h]
875
                mov     edi, ebx
876
                rol     edx, 9
877
                xor     edi, eax
878
                mov     ebp, [esi+1Ch]
879
                xor     edi, edx
880
                add     ecx, ebp
881
                lea     ecx, [ecx+edi+6ED9EBA1h]
882
                mov     ebp, eax
883
                rol     ecx, 0Bh
884
                xor     ebp, edx
885
                mov     edi, [esi+3Ch]
886
                xor     ebp, ecx
887
                add     ebx, edi
888
                lea     ebx, [ebx+ebp+6ED9EBA1h]
889
                rol     ebx, 0Fh
890
                pop     edi
891
                add     [edi], eax
892
                add     [edi+4], ebx
893
                add     [edi+8], ecx
894
                add     [edi+0Ch], edx
895
 
896
                pop     ebp
897
                pop     edi
898
                pop     esi
899
                pop     ebx
900
 
901
end;
902
{$ENDIF}
903
 
904
{$IFDEF THash_MD5_asm}
905
procedure THash_MD5.DoTransform(Buffer: PLongArray);
906
asm
907
                push    ebx
908
                push    esi
909
                push    edi
910
                lea     edi, [eax].THash_MD5.FDigest   // let edi points to A,B ..
911
                mov     esi, edx                       // let esi points to Buffer
912
                push    ebp
913
                mov     eax, [edi]
914
                mov     ebx, [edi+4]
915
                push    edi
916
                mov     ecx, [edi+8]
917
                mov     edx, [edi+0Ch]
918
                mov     edi, ecx
919
                mov     ebp, [esi]
920
                xor     edi, edx
921
                lea     eax, [eax+ebp-28955B88h]
922
                and     edi, ebx
923
                mov     ebp, [esi+4]
924
                xor     edi, edx
925
                add     eax, edi
926
                mov     edi, ebx
927
                rol     eax, 7
928
                xor     edi, ecx
929
                add     eax, ebx
930
                lea     edx, [edx+ebp-173848AAh]
931
                and     edi, eax
932
                mov     ebp, [esi+8]
933
                xor     edi, ecx
934
                add     edx, edi
935
                mov     edi, eax
936
                rol     edx, 0Ch
937
                xor     edi, ebx
938
                add     edx, eax
939
                lea     ecx, [ecx+ebp+242070DBh]
940
                and     edi, edx
941
                mov     ebp, [esi+0Ch]
942
                xor     edi, ebx
943
                add     ecx, edi
944
                mov     edi, edx
945
                ror     ecx, 0Fh
946
                xor     edi, eax
947
                add     ecx, edx
948
                lea     ebx, [ebx+ebp-3E423112h]
949
                and     edi, ecx
950
                mov     ebp, [esi+10h]
951
                xor     edi, eax
952
                add     ebx, edi
953
                mov     edi, ecx
954
                ror     ebx, 0Ah
955
                xor     edi, edx
956
                add     ebx, ecx
957
                lea     eax, [eax+ebp-0A83F051h]
958
                and     edi, ebx
959
                mov     ebp, [esi+14h]
960
                xor     edi, edx
961
                add     eax, edi
962
                mov     edi, ebx
963
                rol     eax, 7
964
                xor     edi, ecx
965
                add     eax, ebx
966
                lea     edx, [edx+ebp+4787C62Ah]
967
                and     edi, eax
968
                mov     ebp, [esi+18h]
969
                xor     edi, ecx
970
                add     edx, edi
971
                mov     edi, eax
972
                rol     edx, 0Ch
973
                xor     edi, ebx
974
                add     edx, eax
975
                lea     ecx, [ecx+ebp-57CFB9EDh]
976
                and     edi, edx
977
                mov     ebp, [esi+1Ch]
978
                xor     edi, ebx
979
                add     ecx, edi
980
                mov     edi, edx
981
                ror     ecx, 0Fh
982
                xor     edi, eax
983
                add     ecx, edx
984
                lea     ebx, [ebx+ebp-2B96AFFh]
985
                and     edi, ecx
986
                mov     ebp, [esi+20h]
987
                xor     edi, eax
988
                add     ebx, edi
989
                mov     edi, ecx
990
                ror     ebx, 0Ah
991
                xor     edi, edx
992
                add     ebx, ecx
993
                lea     eax, [eax+ebp+698098D8h]
994
                and     edi, ebx
995
                mov     ebp, [esi+24h]
996
                xor     edi, edx
997
                add     eax, edi
998
                mov     edi, ebx
999
                rol     eax, 7
1000
                xor     edi, ecx
1001
                add     eax, ebx
1002
                lea     edx, [edx+ebp-74BB0851h]
1003
                and     edi, eax
1004
                mov     ebp, [esi+28h]
1005
                xor     edi, ecx
1006
                add     edx, edi
1007
                mov     edi, eax
1008
                rol     edx, 0Ch
1009
                xor     edi, ebx
1010
                add     edx, eax
1011
                lea     ecx, [ecx+ebp-0A44Fh]
1012
                and     edi, edx
1013
                mov     ebp, [esi+2Ch]
1014
                xor     edi, ebx
1015
                add     ecx, edi
1016
                mov     edi, edx
1017
                ror     ecx, 0Fh
1018
                xor     edi, eax
1019
                add     ecx, edx
1020
                lea     ebx, [ebx+ebp-76A32842h]
1021
                and     edi, ecx
1022
                mov     ebp, [esi+30h]
1023
                xor     edi, eax
1024
                add     ebx, edi
1025
                mov     edi, ecx
1026
                ror     ebx, 0Ah
1027
                xor     edi, edx
1028
                add     ebx, ecx
1029
                lea     eax, [eax+ebp+6B901122h]
1030
                and     edi, ebx
1031
                mov     ebp, [esi+34h]
1032
                xor     edi, edx
1033
                add     eax, edi
1034
                mov     edi, ebx
1035
                rol     eax, 7
1036
                xor     edi, ecx
1037
                add     eax, ebx
1038
                lea     edx, [edx+ebp-2678E6Dh]
1039
                and     edi, eax
1040
                mov     ebp, [esi+38h]
1041
                xor     edi, ecx
1042
                add     edx, edi
1043
                mov     edi, eax
1044
                rol     edx, 0Ch
1045
                xor     edi, ebx
1046
                add     edx, eax
1047
                lea     ecx, [ecx+ebp-5986BC72h]
1048
                and     edi, edx
1049
                mov     ebp, [esi+3Ch]
1050
                xor     edi, ebx
1051
                add     ecx, edi
1052
                mov     edi, edx
1053
                ror     ecx, 0Fh
1054
                xor     edi, eax
1055
                add     ecx, edx
1056
                lea     ebx, [ebx+ebp+49B40821h]
1057
                and     edi, ecx
1058
                mov     ebp, [esi+4]
1059
                xor     edi, eax
1060
                add     ebx, edi
1061
                mov     edi, ecx
1062
                ror     ebx, 0Ah
1063
                xor     edi, edx
1064
                add     ebx, ecx
1065
                mov     edi, ecx
1066
                xor     edi, ebx
1067
                lea     eax, [eax+ebp-9E1DA9Eh]
1068
                and     edi, edx
1069
                mov     ebp, [esi+18h]
1070
                xor     edi, ecx
1071
                add     eax, edi
1072
                mov     edi, ebx
1073
                rol     eax, 5
1074
                add     eax, ebx
1075
                xor     edi, eax
1076
                lea     edx, [edx+ebp-3FBF4CC0h]
1077
                and     edi, ecx
1078
                mov     ebp, [esi+2Ch]
1079
                xor     edi, ebx
1080
                add     edx, edi
1081
                mov     edi, eax
1082
                rol     edx, 9
1083
                add     edx, eax
1084
                xor     edi, edx
1085
                lea     ecx, [ecx+ebp+265E5A51h]
1086
                and     edi, ebx
1087
                mov     ebp, [esi]
1088
                xor     edi, eax
1089
                add     ecx, edi
1090
                mov     edi, edx
1091
                rol     ecx, 0Eh
1092
                add     ecx, edx
1093
                xor     edi, ecx
1094
                lea     ebx, [ebx+ebp-16493856h]
1095
                and     edi, eax
1096
                mov     ebp, [esi+14h]
1097
                xor     edi, edx
1098
                add     ebx, edi
1099
                mov     edi, ecx
1100
                ror     ebx, 0Ch
1101
                add     ebx, ecx
1102
                xor     edi, ebx
1103
                lea     eax, [eax+ebp-29D0EFA3h]
1104
                and     edi, edx
1105
                mov     ebp, [esi+28h]
1106
                xor     edi, ecx
1107
                add     eax, edi
1108
                mov     edi, ebx
1109
                rol     eax, 5
1110
                add     eax, ebx
1111
                xor     edi, eax
1112
                lea     edx, [edx+ebp+2441453h]
1113
                and     edi, ecx
1114
                mov     ebp, [esi+3Ch]
1115
                xor     edi, ebx
1116
                add     edx, edi
1117
                mov     edi, eax
1118
                rol     edx, 9
1119
                add     edx, eax
1120
                xor     edi, edx
1121
                lea     ecx, [ecx+ebp-275E197Fh]
1122
                and     edi, ebx
1123
                mov     ebp, [esi+10h]
1124
                xor     edi, eax
1125
                add     ecx, edi
1126
                mov     edi, edx
1127
                rol     ecx, 0Eh
1128
                add     ecx, edx
1129
                xor     edi, ecx
1130
                lea     ebx, [ebx+ebp-182C0438h]
1131
                and     edi, eax
1132
                mov     ebp, [esi+24h]
1133
                xor     edi, edx
1134
                add     ebx, edi
1135
                mov     edi, ecx
1136
                ror     ebx, 0Ch
1137
                add     ebx, ecx
1138
                xor     edi, ebx
1139
                lea     eax, [eax+ebp+21E1CDE6h]
1140
                and     edi, edx
1141
                mov     ebp, [esi+38h]
1142
                xor     edi, ecx
1143
                add     eax, edi
1144
                mov     edi, ebx
1145
                rol     eax, 5
1146
                add     eax, ebx
1147
                xor     edi, eax
1148
                lea     edx, [edx+ebp-3CC8F82Ah]
1149
                and     edi, ecx
1150
                mov     ebp, [esi+0Ch]
1151
                xor     edi, ebx
1152
                add     edx, edi
1153
                mov     edi, eax
1154
                rol     edx, 9
1155
                add     edx, eax
1156
                xor     edi, edx
1157
                lea     ecx, [ecx+ebp-0B2AF279h]
1158
                and     edi, ebx
1159
                mov     ebp, [esi+20h]
1160
                xor     edi, eax
1161
                add     ecx, edi
1162
                mov     edi, edx
1163
                rol     ecx, 0Eh
1164
                add     ecx, edx
1165
                xor     edi, ecx
1166
                lea     ebx, [ebx+ebp+455A14EDh]
1167
                and     edi, eax
1168
                mov     ebp, [esi+34h]
1169
                xor     edi, edx
1170
                add     ebx, edi
1171
                mov     edi, ecx
1172
                ror     ebx, 0Ch
1173
                add     ebx, ecx
1174
                xor     edi, ebx
1175
                lea     eax, [eax+ebp-561C16FBh]
1176
                and     edi, edx
1177
                mov     ebp, [esi+8]
1178
                xor     edi, ecx
1179
                add     eax, edi
1180
                mov     edi, ebx
1181
                rol     eax, 5
1182
                add     eax, ebx
1183
                xor     edi, eax
1184
                lea     edx, [edx+ebp-3105C08h]
1185
                and     edi, ecx
1186
                mov     ebp, [esi+1Ch]
1187
                xor     edi, ebx
1188
                add     edx, edi
1189
                mov     edi, eax
1190
                rol     edx, 9
1191
                add     edx, eax
1192
                xor     edi, edx
1193
                lea     ecx, [ecx+ebp+676F02D9h]
1194
                and     edi, ebx
1195
                mov     ebp, [esi+30h]
1196
                xor     edi, eax
1197
                add     ecx, edi
1198
                mov     edi, edx
1199
                rol     ecx, 0Eh
1200
                add     ecx, edx
1201
                xor     edi, ecx
1202
                lea     ebx, [ebx+ebp-72D5B376h]
1203
                and     edi, eax
1204
                mov     ebp, [esi+14h]
1205
                xor     edi, edx
1206
                add     ebx, edi
1207
                mov     edi, ecx
1208
                ror     ebx, 0Ch
1209
                add     ebx, ecx
1210
                xor     edi, edx
1211
                lea     eax, [eax+ebp-5C6BEh]
1212
                xor     edi, ebx
1213
                mov     ebp, [esi+20h]
1214
                add     eax, edi
1215
                rol     eax, 4
1216
                lea     edx, [edx+ebp-788E097Fh]
1217
                mov     edi, ebx
1218
                add     eax, ebx
1219
                xor     edi, ecx
1220
                mov     ebp, [esi+2Ch]
1221
                xor     edi, eax
1222
                add     edx, edi
1223
                mov     edi, eax
1224
                rol     edx, 0Bh
1225
                add     edx, eax
1226
                xor     edi, ebx
1227
                lea     ecx, [ecx+ebp+6D9D6122h]
1228
                xor     edi, edx
1229
                mov     ebp, [esi+38h]
1230
                add     ecx, edi
1231
                rol     ecx, 10h
1232
                lea     ebx, [ebx+ebp-21AC7F4h]
1233
                mov     edi, edx
1234
                add     ecx, edx
1235
                xor     edi, eax
1236
                mov     ebp, [esi+4]
1237
                xor     edi, ecx
1238
                add     ebx, edi
1239
                mov     edi, ecx
1240
                ror     ebx, 9
1241
                add     ebx, ecx
1242
                xor     edi, edx
1243
                lea     eax, [eax+ebp-5B4115BCh]
1244
                xor     edi, ebx
1245
                mov     ebp, [esi+10h]
1246
                add     eax, edi
1247
                rol     eax, 4
1248
                lea     edx, [edx+ebp+4BDECFA9h]
1249
                mov     edi, ebx
1250
                add     eax, ebx
1251
                xor     edi, ecx
1252
                mov     ebp, [esi+1Ch]
1253
                xor     edi, eax
1254
                add     edx, edi
1255
                mov     edi, eax
1256
                rol     edx, 0Bh
1257
                add     edx, eax
1258
                xor     edi, ebx
1259
                lea     ecx, [ecx+ebp-944B4A0h]
1260
                xor     edi, edx
1261
                mov     ebp, [esi+28h]
1262
                add     ecx, edi
1263
                rol     ecx, 10h
1264
                lea     ebx, [ebx+ebp-41404390h]
1265
                mov     edi, edx
1266
                add     ecx, edx
1267
                xor     edi, eax
1268
                mov     ebp, [esi+34h]
1269
                xor     edi, ecx
1270
                add     ebx, edi
1271
                mov     edi, ecx
1272
                ror     ebx, 9
1273
                add     ebx, ecx
1274
                xor     edi, edx
1275
                lea     eax, [eax+ebp+289B7EC6h]
1276
                xor     edi, ebx
1277
                mov     ebp, [esi]
1278
                add     eax, edi
1279
                rol     eax, 4
1280
                lea     edx, [edx+ebp-155ED806h]
1281
                mov     edi, ebx
1282
                add     eax, ebx
1283
                xor     edi, ecx
1284
                mov     ebp, [esi+0Ch]
1285
                xor     edi, eax
1286
                add     edx, edi
1287
                mov     edi, eax
1288
                rol     edx, 0Bh
1289
                add     edx, eax
1290
                xor     edi, ebx
1291
                lea     ecx, [ecx+ebp-2B10CF7Bh]
1292
                xor     edi, edx
1293
                mov     ebp, [esi+18h]
1294
                add     ecx, edi
1295
                rol     ecx, 10h
1296
                lea     ebx, [ebx+ebp+4881D05h]
1297
                mov     edi, edx
1298
                add     ecx, edx
1299
                xor     edi, eax
1300
                mov     ebp, [esi+24h]
1301
                xor     edi, ecx
1302
                add     ebx, edi
1303
                mov     edi, ecx
1304
                ror     ebx, 9
1305
                add     ebx, ecx
1306
                xor     edi, edx
1307
                lea     eax, [eax+ebp-262B2FC7h]
1308
                xor     edi, ebx
1309
                mov     ebp, [esi+30h]
1310
                add     eax, edi
1311
                rol     eax, 4
1312
                lea     edx, [edx+ebp-1924661Bh]
1313
                mov     edi, ebx
1314
                add     eax, ebx
1315
                xor     edi, ecx
1316
                mov     ebp, [esi+3Ch]
1317
                xor     edi, eax
1318
                add     edx, edi
1319
                mov     edi, eax
1320
                rol     edx, 0Bh
1321
                add     edx, eax
1322
                xor     edi, ebx
1323
                lea     ecx, [ecx+ebp+1FA27CF8h]
1324
                xor     edi, edx
1325
                mov     ebp, [esi+8]
1326
                add     ecx, edi
1327
                rol     ecx, 10h
1328
                lea     ebx, [ebx+ebp-3B53A99Bh]
1329
                mov     edi, edx
1330
                add     ecx, edx
1331
                xor     edi, eax
1332
                mov     ebp, [esi]
1333
                xor     edi, ecx
1334
                add     ebx, edi
1335
                mov     edi, edx
1336
                ror     ebx, 9
1337
                add     ebx, ecx
1338
                xor     edi, 0FFFFFFFFh
1339
                lea     eax, [eax+ebp-0BD6DDBCh]
1340
                or      edi, ebx
1341
                mov     ebp, [esi+1Ch]
1342
                xor     edi, ecx
1343
                add     eax, edi
1344
                mov     edi, ecx
1345
                rol     eax, 6
1346
                add     eax, ebx
1347
                xor     edi, 0FFFFFFFFh
1348
                lea     edx, [edx+ebp+432AFF97h]
1349
                or      edi, eax
1350
                mov     ebp, [esi+38h]
1351
                xor     edi, ebx
1352
                add     edx, edi
1353
                mov     edi, ebx
1354
                rol     edx, 0Ah
1355
                add     edx, eax
1356
                xor     edi, 0FFFFFFFFh
1357
                lea     ecx, [ecx+ebp-546BDC59h]
1358
                or      edi, edx
1359
                mov     ebp, [esi+14h]
1360
                xor     edi, eax
1361
                add     ecx, edi
1362
                mov     edi, eax
1363
                rol     ecx, 0Fh
1364
                add     ecx, edx
1365
                xor     edi, 0FFFFFFFFh
1366
                lea     ebx, [ebx+ebp-36C5FC7h]
1367
                or      edi, ecx
1368
                mov     ebp, [esi+30h]
1369
                xor     edi, edx
1370
                add     ebx, edi
1371
                mov     edi, edx
1372
                ror     ebx, 0Bh
1373
                add     ebx, ecx
1374
                xor     edi, 0FFFFFFFFh
1375
                lea     eax, [eax+ebp+655B59C3h]
1376
                or      edi, ebx
1377
                mov     ebp, [esi+0Ch]
1378
                xor     edi, ecx
1379
                add     eax, edi
1380
                mov     edi, ecx
1381
                rol     eax, 6
1382
                add     eax, ebx
1383
                xor     edi, 0FFFFFFFFh
1384
                lea     edx, [edx+ebp-70F3336Eh]
1385
                or      edi, eax
1386
                mov     ebp, [esi+28h]
1387
                xor     edi, ebx
1388
                add     edx, edi
1389
                mov     edi, ebx
1390
                rol     edx, 0Ah
1391
                add     edx, eax
1392
                xor     edi, 0FFFFFFFFh
1393
                lea     ecx, [ecx+ebp-100B83h]
1394
                or      edi, edx
1395
                mov     ebp, [esi+4]
1396
                xor     edi, eax
1397
                add     ecx, edi
1398
                mov     edi, eax
1399
                rol     ecx, 0Fh
1400
                add     ecx, edx
1401
                xor     edi, 0FFFFFFFFh
1402
                lea     ebx, [ebx+ebp-7A7BA22Fh]
1403
                or      edi, ecx
1404
                mov     ebp, [esi+20h]
1405
                xor     edi, edx
1406
                add     ebx, edi
1407
                mov     edi, edx
1408
                ror     ebx, 0Bh
1409
                add     ebx, ecx
1410
                xor     edi, 0FFFFFFFFh
1411
                lea     eax, [eax+ebp+6FA87E4Fh]
1412
                or      edi, ebx
1413
                mov     ebp, [esi+3Ch]
1414
                xor     edi, ecx
1415
                add     eax, edi
1416
                mov     edi, ecx
1417
                rol     eax, 6
1418
                add     eax, ebx
1419
                xor     edi, 0FFFFFFFFh
1420
                lea     edx, [edx+ebp-1D31920h]
1421
                or      edi, eax
1422
                mov     ebp, [esi+18h]
1423
                xor     edi, ebx
1424
                add     edx, edi
1425
                mov     edi, ebx
1426
                rol     edx, 0Ah
1427
                add     edx, eax
1428
                xor     edi, 0FFFFFFFFh
1429
                lea     ecx, [ecx+ebp-5CFEBCECh]
1430
                or      edi, edx
1431
                mov     ebp, [esi+34h]
1432
                xor     edi, eax
1433
                add     ecx, edi
1434
                mov     edi, eax
1435
                rol     ecx, 0Fh
1436
                add     ecx, edx
1437
                xor     edi, 0FFFFFFFFh
1438
                lea     ebx, [ebx+ebp+4E0811A1h]
1439
                or      edi, ecx
1440
                mov     ebp, [esi+10h]
1441
                xor     edi, edx
1442
                add     ebx, edi
1443
                mov     edi, edx
1444
                ror     ebx, 0Bh
1445
                add     ebx, ecx
1446
                xor     edi, 0FFFFFFFFh
1447
                lea     eax, [eax+ebp-8AC817Eh]
1448
                or      edi, ebx
1449
                mov     ebp, [esi+2Ch]
1450
                xor     edi, ecx
1451
                add     eax, edi
1452
                mov     edi, ecx
1453
                rol     eax, 6
1454
                add     eax, ebx
1455
                xor     edi, 0FFFFFFFFh
1456
                lea     edx, [edx+ebp-42C50DCBh]
1457
                or      edi, eax
1458
                mov     ebp, [esi+8]
1459
                xor     edi, ebx
1460
                add     edx, edi
1461
                mov     edi, ebx
1462
                rol     edx, 0Ah
1463
                add     edx, eax
1464
                xor     edi, 0FFFFFFFFh
1465
                lea     ecx, [ecx+ebp+2AD7D2BBh]
1466
                or      edi, edx
1467
                mov     ebp, [esi+24h]
1468
                xor     edi, eax
1469
                add     ecx, edi
1470
                mov     edi, eax
1471
                rol     ecx, 0Fh
1472
                add     ecx, edx
1473
                xor     edi, 0FFFFFFFFh
1474
                lea     ebx, [ebx+ebp-14792C6Fh]
1475
                or      edi, ecx
1476
                xor     edi, edx
1477
                add     ebx, edi
1478
                ror     ebx, 0Bh
1479
                add     ebx, ecx
1480
                pop     edi
1481
                add     [edi], eax
1482
                add     [edi+4], ebx
1483
                add     [edi+8], ecx
1484
                add     [edi+0Ch], edx
1485
 
1486
 
1487
                pop     ebp
1488
                pop     edi
1489
                pop     esi
1490
                pop     ebx
1491
end;
1492
{$ENDIF}
1493
 
1494
{$IFDEF THash_RipeMD128_asm}
1495
procedure THash_RipeMD128.DoTransform(Buffer: PLongArray);
1496
asm
1497
                push    ebx
1498
                push    esi
1499
                push    edi
1500
                lea     edi, [eax].THash_RipeMD128.FDigest
1501
                mov     esi, edx
1502
                push    ebp
1503
 
1504
                mov     eax, [edi]
1505
                mov     ebx, [edi+4]
1506
                push    edi
1507
                mov     ecx, [edi+8]
1508
                mov     edx, [edi+0Ch]
1509
                add     esp, 0FFFFFFF0h
1510
                mov     edi, edx
1511
                xor     edi, ecx
1512
                mov     ebp, [esi]
1513
                xor     edi, ebx
1514
                add     eax, ebp
1515
                add     eax, edi
1516
                mov     edi, ecx
1517
                rol     eax, 0Bh
1518
                xor     edi, ebx
1519
                mov     ebp, [esi+4]
1520
                xor     edi, eax
1521
                add     edx, ebp
1522
                add     edx, edi
1523
                mov     edi, ebx
1524
                rol     edx, 0Eh
1525
                xor     edi, eax
1526
                mov     ebp, [esi+8]
1527
                xor     edi, edx
1528
                add     ecx, ebp
1529
                add     ecx, edi
1530
                mov     edi, eax
1531
                rol     ecx, 0Fh
1532
                xor     edi, edx
1533
                mov     ebp, [esi+0Ch]
1534
                xor     edi, ecx
1535
                add     ebx, ebp
1536
                add     ebx, edi
1537
                mov     edi, edx
1538
                rol     ebx, 0Ch
1539
                xor     edi, ecx
1540
                mov     ebp, [esi+10h]
1541
                xor     edi, ebx
1542
                add     eax, ebp
1543
                add     eax, edi
1544
                mov     edi, ecx
1545
                rol     eax, 5
1546
                xor     edi, ebx
1547
                mov     ebp, [esi+14h]
1548
                xor     edi, eax
1549
                add     edx, ebp
1550
                add     edx, edi
1551
                mov     edi, ebx
1552
                rol     edx, 8
1553
                xor     edi, eax
1554
                mov     ebp, [esi+18h]
1555
                xor     edi, edx
1556
                add     ecx, ebp
1557
                add     ecx, edi
1558
                mov     edi, eax
1559
                rol     ecx, 7
1560
                xor     edi, edx
1561
                mov     ebp, [esi+1Ch]
1562
                xor     edi, ecx
1563
                add     ebx, ebp
1564
                add     ebx, edi
1565
                mov     edi, edx
1566
                rol     ebx, 9
1567
                xor     edi, ecx
1568
                mov     ebp, [esi+20h]
1569
                xor     edi, ebx
1570
                add     eax, ebp
1571
                add     eax, edi
1572
                mov     edi, ecx
1573
                rol     eax, 0Bh
1574
                xor     edi, ebx
1575
                mov     ebp, [esi+24h]
1576
                xor     edi, eax
1577
                add     edx, ebp
1578
                add     edx, edi
1579
                mov     edi, ebx
1580
                rol     edx, 0Dh
1581
                xor     edi, eax
1582
                mov     ebp, [esi+28h]
1583
                xor     edi, edx
1584
                add     ecx, ebp
1585
                add     ecx, edi
1586
                mov     edi, eax
1587
                rol     ecx, 0Eh
1588
                xor     edi, edx
1589
                mov     ebp, [esi+2Ch]
1590
                xor     edi, ecx
1591
                add     ebx, ebp
1592
                add     ebx, edi
1593
                mov     edi, edx
1594
                rol     ebx, 0Fh
1595
                xor     edi, ecx
1596
                mov     ebp, [esi+30h]
1597
                xor     edi, ebx
1598
                add     eax, ebp
1599
                add     eax, edi
1600
                mov     edi, ecx
1601
                rol     eax, 6
1602
                xor     edi, ebx
1603
                mov     ebp, [esi+34h]
1604
                xor     edi, eax
1605
                add     edx, ebp
1606
                add     edx, edi
1607
                mov     edi, ebx
1608
                rol     edx, 7
1609
                xor     edi, eax
1610
                mov     ebp, [esi+38h]
1611
                xor     edi, edx
1612
                add     ecx, ebp
1613
                add     ecx, edi
1614
                mov     edi, eax
1615
                rol     ecx, 9
1616
                xor     edi, edx
1617
                mov     ebp, [esi+3Ch]
1618
                xor     edi, ecx
1619
                add     ebx, ebp
1620
                add     ebx, edi
1621
                rol     ebx, 8
1622
                mov     ebp, [esi+1Ch]
1623
                mov     edi, ecx
1624
                xor     edi, edx
1625
                lea     eax, [eax+ebp+5A827999h]
1626
                and     edi, ebx
1627
                mov     ebp, ebx
1628
                xor     edi, edx
1629
                xor     ebp, ecx
1630
                add     eax, edi
1631
                mov     edi, [esi+10h]
1632
                rol     eax, 7
1633
                and     ebp, eax
1634
                lea     edx, [edx+edi+5A827999h]
1635
                xor     ebp, ecx
1636
                mov     edi, eax
1637
                add     edx, ebp
1638
                mov     ebp, [esi+34h]
1639
                rol     edx, 6
1640
                xor     edi, ebx
1641
                lea     ecx, [ecx+ebp+5A827999h]
1642
                and     edi, edx
1643
                mov     ebp, edx
1644
                xor     edi, ebx
1645
                xor     ebp, eax
1646
                add     ecx, edi
1647
                mov     edi, [esi+4]
1648
                rol     ecx, 8
1649
                and     ebp, ecx
1650
                lea     ebx, [ebx+edi+5A827999h]
1651
                xor     ebp, eax
1652
                mov     edi, ecx
1653
                add     ebx, ebp
1654
                mov     ebp, [esi+28h]
1655
                rol     ebx, 0Dh
1656
                xor     edi, edx
1657
                lea     eax, [eax+ebp+5A827999h]
1658
                and     edi, ebx
1659
                mov     ebp, ebx
1660
                xor     edi, edx
1661
                xor     ebp, ecx
1662
                add     eax, edi
1663
                mov     edi, [esi+18h]
1664
                rol     eax, 0Bh
1665
                and     ebp, eax
1666
                lea     edx, [edx+edi+5A827999h]
1667
                xor     ebp, ecx
1668
                mov     edi, eax
1669
                add     edx, ebp
1670
                mov     ebp, [esi+3Ch]
1671
                rol     edx, 9
1672
                xor     edi, ebx
1673
                lea     ecx, [ecx+ebp+5A827999h]
1674
                and     edi, edx
1675
                mov     ebp, edx
1676
                xor     edi, ebx
1677
                xor     ebp, eax
1678
                add     ecx, edi
1679
                mov     edi, [esi+0Ch]
1680
                rol     ecx, 7
1681
                and     ebp, ecx
1682
                lea     ebx, [ebx+edi+5A827999h]
1683
                xor     ebp, eax
1684
                mov     edi, ecx
1685
                add     ebx, ebp
1686
                mov     ebp, [esi+30h]
1687
                rol     ebx, 0Fh
1688
                xor     edi, edx
1689
                lea     eax, [eax+ebp+5A827999h]
1690
                and     edi, ebx
1691
                mov     ebp, ebx
1692
                xor     edi, edx
1693
                xor     ebp, ecx
1694
                add     eax, edi
1695
                mov     edi, [esi]
1696
                rol     eax, 7
1697
                and     ebp, eax
1698
                lea     edx, [edx+edi+5A827999h]
1699
                xor     ebp, ecx
1700
                mov     edi, eax
1701
                add     edx, ebp
1702
                mov     ebp, [esi+24h]
1703
                rol     edx, 0Ch
1704
                xor     edi, ebx
1705
                lea     ecx, [ecx+ebp+5A827999h]
1706
                and     edi, edx
1707
                mov     ebp, edx
1708
                xor     edi, ebx
1709
                xor     ebp, eax
1710
                add     ecx, edi
1711
                mov     edi, [esi+14h]
1712
                rol     ecx, 0Fh
1713
                and     ebp, ecx
1714
                lea     ebx, [ebx+edi+5A827999h]
1715
                xor     ebp, eax
1716
                mov     edi, ecx
1717
                add     ebx, ebp
1718
                mov     ebp, [esi+8]
1719
                rol     ebx, 9
1720
                xor     edi, edx
1721
                lea     eax, [eax+ebp+5A827999h]
1722
                and     edi, ebx
1723
                mov     ebp, ebx
1724
                xor     edi, edx
1725
                xor     ebp, ecx
1726
                add     eax, edi
1727
                mov     edi, [esi+38h]
1728
                rol     eax, 0Bh
1729
                and     ebp, eax
1730
                lea     edx, [edx+edi+5A827999h]
1731
                xor     ebp, ecx
1732
                mov     edi, eax
1733
                add     edx, ebp
1734
                mov     ebp, [esi+2Ch]
1735
                rol     edx, 7
1736
                xor     edi, ebx
1737
                lea     ecx, [ecx+ebp+5A827999h]
1738
                and     edi, edx
1739
                mov     ebp, edx
1740
                xor     edi, ebx
1741
                xor     ebp, eax
1742
                add     ecx, edi
1743
                mov     edi, [esi+20h]
1744
                rol     ecx, 0Dh
1745
                and     ebp, ecx
1746
                lea     ebx, [ebx+edi+5A827999h]
1747
                xor     ebp, eax
1748
                add     ebx, ebp
1749
                rol     ebx, 0Ch
1750
                mov     edi, ecx
1751
                mov     ebp, [esi+0Ch]
1752
                xor     edi, 0FFFFFFFFh
1753
                lea     eax, [eax+ebp+6ED9EBA1h]
1754
                or      edi, ebx
1755
                mov     ebp, ebx
1756
                xor     edi, edx
1757
                xor     ebp, 0FFFFFFFFh
1758
                add     eax, edi
1759
                mov     edi, [esi+28h]
1760
                rol     eax, 0Bh
1761
                or      ebp, eax
1762
                lea     edx, [edx+edi+6ED9EBA1h]
1763
                xor     ebp, ecx
1764
                mov     edi, eax
1765
                add     edx, ebp
1766
                mov     ebp, [esi+38h]
1767
                rol     edx, 0Dh
1768
                xor     edi, 0FFFFFFFFh
1769
                lea     ecx, [ecx+ebp+6ED9EBA1h]
1770
                or      edi, edx
1771
                mov     ebp, edx
1772
                xor     edi, ebx
1773
                xor     ebp, 0FFFFFFFFh
1774
                add     ecx, edi
1775
                mov     edi, [esi+10h]
1776
                rol     ecx, 6
1777
                or      ebp, ecx
1778
                lea     ebx, [ebx+edi+6ED9EBA1h]
1779
                xor     ebp, eax
1780
                mov     edi, ecx
1781
                add     ebx, ebp
1782
                mov     ebp, [esi+24h]
1783
                rol     ebx, 7
1784
                xor     edi, 0FFFFFFFFh
1785
                lea     eax, [eax+ebp+6ED9EBA1h]
1786
                or      edi, ebx
1787
                mov     ebp, ebx
1788
                xor     edi, edx
1789
                xor     ebp, 0FFFFFFFFh
1790
                add     eax, edi
1791
                mov     edi, [esi+3Ch]
1792
                rol     eax, 0Eh
1793
                or      ebp, eax
1794
                lea     edx, [edx+edi+6ED9EBA1h]
1795
                xor     ebp, ecx
1796
                mov     edi, eax
1797
                add     edx, ebp
1798
                mov     ebp, [esi+20h]
1799
                rol     edx, 9
1800
                xor     edi, 0FFFFFFFFh
1801
                lea     ecx, [ecx+ebp+6ED9EBA1h]
1802
                or      edi, edx
1803
                mov     ebp, edx
1804
                xor     edi, ebx
1805
                xor     ebp, 0FFFFFFFFh
1806
                add     ecx, edi
1807
                mov     edi, [esi+4]
1808
                rol     ecx, 0Dh
1809
                or      ebp, ecx
1810
                lea     ebx, [ebx+edi+6ED9EBA1h]
1811
                xor     ebp, eax
1812
                mov     edi, ecx
1813
                add     ebx, ebp
1814
                mov     ebp, [esi+8]
1815
                rol     ebx, 0Fh
1816
                xor     edi, 0FFFFFFFFh
1817
                lea     eax, [eax+ebp+6ED9EBA1h]
1818
                or      edi, ebx
1819
                mov     ebp, ebx
1820
                xor     edi, edx
1821
                xor     ebp, 0FFFFFFFFh
1822
                add     eax, edi
1823
                mov     edi, [esi+1Ch]
1824
                rol     eax, 0Eh
1825
                or      ebp, eax
1826
                lea     edx, [edx+edi+6ED9EBA1h]
1827
                xor     ebp, ecx
1828
                mov     edi, eax
1829
                add     edx, ebp
1830
                mov     ebp, [esi]
1831
                rol     edx, 8
1832
                xor     edi, 0FFFFFFFFh
1833
                lea     ecx, [ecx+ebp+6ED9EBA1h]
1834
                or      edi, edx
1835
                mov     ebp, edx
1836
                xor     edi, ebx
1837
                xor     ebp, 0FFFFFFFFh
1838
                add     ecx, edi
1839
                mov     edi, [esi+18h]
1840
                rol     ecx, 0Dh
1841
                or      ebp, ecx
1842
                lea     ebx, [ebx+edi+6ED9EBA1h]
1843
                xor     ebp, eax
1844
                mov     edi, ecx
1845
                add     ebx, ebp
1846
                mov     ebp, [esi+34h]
1847
                rol     ebx, 6
1848
                xor     edi, 0FFFFFFFFh
1849
                lea     eax, [eax+ebp+6ED9EBA1h]
1850
                or      edi, ebx
1851
                mov     ebp, ebx
1852
                xor     edi, edx
1853
                xor     ebp, 0FFFFFFFFh
1854
                add     eax, edi
1855
                mov     edi, [esi+2Ch]
1856
                rol     eax, 5
1857
                or      ebp, eax
1858
                lea     edx, [edx+edi+6ED9EBA1h]
1859
                xor     ebp, ecx
1860
                mov     edi, eax
1861
                add     edx, ebp
1862
                mov     ebp, [esi+14h]
1863
                rol     edx, 0Ch
1864
                xor     edi, 0FFFFFFFFh
1865
                lea     ecx, [ecx+ebp+6ED9EBA1h]
1866
                or      edi, edx
1867
                mov     ebp, edx
1868
                xor     edi, ebx
1869
                xor     ebp, 0FFFFFFFFh
1870
                add     ecx, edi
1871
                mov     edi, [esi+30h]
1872
                rol     ecx, 7
1873
                or      ebp, ecx
1874
                lea     ebx, [ebx+edi+6ED9EBA1h]
1875
                xor     ebp, eax
1876
                mov     edi, ecx
1877
                add     ebx, ebp
1878
                mov     ebp, [esi+4]
1879
                rol     ebx, 5
1880
                xor     edi, ebx
1881
                lea     eax, [eax+ebp-70E44324h]
1882
                and     edi, edx
1883
                mov     ebp, [esi+24h]
1884
                xor     edi, ecx
1885
                add     eax, edi
1886
                mov     edi, ebx
1887
                rol     eax, 0Bh
1888
                xor     edi, eax
1889
                lea     edx, [edx+ebp-70E44324h]
1890
                and     edi, ecx
1891
                mov     ebp, [esi+2Ch]
1892
                xor     edi, ebx
1893
                add     edx, edi
1894
                mov     edi, eax
1895
                rol     edx, 0Ch
1896
                xor     edi, edx
1897
                lea     ecx, [ecx+ebp-70E44324h]
1898
                and     edi, ebx
1899
                mov     ebp, [esi+28h]
1900
                xor     edi, eax
1901
                add     ecx, edi
1902
                mov     edi, edx
1903
                rol     ecx, 0Eh
1904
                xor     edi, ecx
1905
                lea     ebx, [ebx+ebp-70E44324h]
1906
                and     edi, eax
1907
                mov     ebp, [esi]
1908
                xor     edi, edx
1909
                add     ebx, edi
1910
                mov     edi, ecx
1911
                rol     ebx, 0Fh
1912
                xor     edi, ebx
1913
                lea     eax, [eax+ebp-70E44324h]
1914
                and     edi, edx
1915
                mov     ebp, [esi+20h]
1916
                xor     edi, ecx
1917
                add     eax, edi
1918
                mov     edi, ebx
1919
                rol     eax, 0Eh
1920
                xor     edi, eax
1921
                lea     edx, [edx+ebp-70E44324h]
1922
                and     edi, ecx
1923
                mov     ebp, [esi+30h]
1924
                xor     edi, ebx
1925
                add     edx, edi
1926
                mov     edi, eax
1927
                rol     edx, 0Fh
1928
                xor     edi, edx
1929
                lea     ecx, [ecx+ebp-70E44324h]
1930
                and     edi, ebx
1931
                mov     ebp, [esi+10h]
1932
                xor     edi, eax
1933
                add     ecx, edi
1934
                mov     edi, edx
1935
                rol     ecx, 9
1936
                xor     edi, ecx
1937
                lea     ebx, [ebx+ebp-70E44324h]
1938
                and     edi, eax
1939
                mov     ebp, [esi+34h]
1940
                xor     edi, edx
1941
                add     ebx, edi
1942
                mov     edi, ecx
1943
                rol     ebx, 8
1944
                xor     edi, ebx
1945
                lea     eax, [eax+ebp-70E44324h]
1946
                and     edi, edx
1947
                mov     ebp, [esi+0Ch]
1948
                xor     edi, ecx
1949
                add     eax, edi
1950
                mov     edi, ebx
1951
                rol     eax, 9
1952
                xor     edi, eax
1953
                lea     edx, [edx+ebp-70E44324h]
1954
                and     edi, ecx
1955
                mov     ebp, [esi+1Ch]
1956
                xor     edi, ebx
1957
                add     edx, edi
1958
                mov     edi, eax
1959
                rol     edx, 0Eh
1960
                xor     edi, edx
1961
                lea     ecx, [ecx+ebp-70E44324h]
1962
                and     edi, ebx
1963
                mov     ebp, [esi+3Ch]
1964
                xor     edi, eax
1965
                add     ecx, edi
1966
                mov     edi, edx
1967
                rol     ecx, 5
1968
                xor     edi, ecx
1969
                lea     ebx, [ebx+ebp-70E44324h]
1970
                and     edi, eax
1971
                mov     ebp, [esi+38h]
1972
                xor     edi, edx
1973
                add     ebx, edi
1974
                mov     edi, ecx
1975
                rol     ebx, 6
1976
                xor     edi, ebx
1977
                lea     eax, [eax+ebp-70E44324h]
1978
                and     edi, edx
1979
                mov     ebp, [esi+14h]
1980
                xor     edi, ecx
1981
                add     eax, edi
1982
                mov     edi, ebx
1983
                rol     eax, 8
1984
                xor     edi, eax
1985
                lea     edx, [edx+ebp-70E44324h]
1986
                and     edi, ecx
1987
                mov     ebp, [esi+18h]
1988
                xor     edi, ebx
1989
                add     edx, edi
1990
                mov     edi, eax
1991
                rol     edx, 6
1992
                xor     edi, edx
1993
                lea     ecx, [ecx+ebp-70E44324h]
1994
                and     edi, ebx
1995
                mov     ebp, [esi+8]
1996
                xor     edi, eax
1997
                add     ecx, edi
1998
                mov     edi, edx
1999
                rol     ecx, 5
2000
                xor     edi, ecx
2001
                lea     ebx, [ebx+ebp-70E44324h]
2002
                and     edi, eax
2003
                xor     edi, edx
2004
                add     ebx, edi
2005
                rol     ebx, 0Ch
2006
                mov     edi, [esp+10h]
2007
                mov     [esp], eax
2008
                mov     [esp+4], ebx
2009
                mov     eax, [edi]
2010
                mov     ebx, [edi+4]
2011
                mov     [esp+8], ecx
2012
                mov     ecx, [edi+8]
2013
                mov     ebp, [esi+14h]
2014
                mov     [esp+0Ch], edx
2015
                mov     edx, [edi+0Ch]
2016
                mov     edi, ecx
2017
                xor     edi, ebx
2018
                lea     eax, [eax+ebp+50A28BE6h]
2019
                and     edi, edx
2020
                mov     ebp, [esi+38h]
2021
                xor     edi, ecx
2022
                add     eax, edi
2023
                mov     edi, ebx
2024
                rol     eax, 8
2025
                xor     edi, eax
2026
                lea     edx, [edx+ebp+50A28BE6h]
2027
                and     edi, ecx
2028
                mov     ebp, [esi+1Ch]
2029
                xor     edi, ebx
2030
                add     edx, edi
2031
                mov     edi, eax
2032
                rol     edx, 9
2033
                xor     edi, edx
2034
                lea     ecx, [ecx+ebp+50A28BE6h]
2035
                and     edi, ebx
2036
                mov     ebp, [esi]
2037
                xor     edi, eax
2038
                add     ecx, edi
2039
                mov     edi, edx
2040
                rol     ecx, 9
2041
                xor     edi, ecx
2042
                lea     ebx, [ebx+ebp+50A28BE6h]
2043
                and     edi, eax
2044
                mov     ebp, [esi+24h]
2045
                xor     edi, edx
2046
                add     ebx, edi
2047
                mov     edi, ecx
2048
                rol     ebx, 0Bh
2049
                xor     edi, ebx
2050
                lea     eax, [eax+ebp+50A28BE6h]
2051
                and     edi, edx
2052
                mov     ebp, [esi+8]
2053
                xor     edi, ecx
2054
                add     eax, edi
2055
                mov     edi, ebx
2056
                rol     eax, 0Dh
2057
                xor     edi, eax
2058
                lea     edx, [edx+ebp+50A28BE6h]
2059
                and     edi, ecx
2060
                mov     ebp, [esi+2Ch]
2061
                xor     edi, ebx
2062
                add     edx, edi
2063
                mov     edi, eax
2064
                rol     edx, 0Fh
2065
                xor     edi, edx
2066
                lea     ecx, [ecx+ebp+50A28BE6h]
2067
                and     edi, ebx
2068
                mov     ebp, [esi+10h]
2069
                xor     edi, eax
2070
                add     ecx, edi
2071
                mov     edi, edx
2072
                rol     ecx, 0Fh
2073
                xor     edi, ecx
2074
                lea     ebx, [ebx+ebp+50A28BE6h]
2075
                and     edi, eax
2076
                mov     ebp, [esi+34h]
2077
                xor     edi, edx
2078
                add     ebx, edi
2079
                mov     edi, ecx
2080
                rol     ebx, 5
2081
                xor     edi, ebx
2082
                lea     eax, [eax+ebp+50A28BE6h]
2083
                and     edi, edx
2084
                mov     ebp, [esi+18h]
2085
                xor     edi, ecx
2086
                add     eax, edi
2087
                mov     edi, ebx
2088
                rol     eax, 7
2089
                xor     edi, eax
2090
                lea     edx, [edx+ebp+50A28BE6h]
2091
                and     edi, ecx
2092
                mov     ebp, [esi+3Ch]
2093
                xor     edi, ebx
2094
                add     edx, edi
2095
                mov     edi, eax
2096
                rol     edx, 7
2097
                xor     edi, edx
2098
                lea     ecx, [ecx+ebp+50A28BE6h]
2099
                and     edi, ebx
2100
                mov     ebp, [esi+20h]
2101
                xor     edi, eax
2102
                add     ecx, edi
2103
                mov     edi, edx
2104
                rol     ecx, 8
2105
                xor     edi, ecx
2106
                lea     ebx, [ebx+ebp+50A28BE6h]
2107
                and     edi, eax
2108
                mov     ebp, [esi+4]
2109
                xor     edi, edx
2110
                add     ebx, edi
2111
                mov     edi, ecx
2112
                rol     ebx, 0Bh
2113
                xor     edi, ebx
2114
                lea     eax, [eax+ebp+50A28BE6h]
2115
                and     edi, edx
2116
                mov     ebp, [esi+28h]
2117
                xor     edi, ecx
2118
                add     eax, edi
2119
                mov     edi, ebx
2120
                rol     eax, 0Eh
2121
                xor     edi, eax
2122
                lea     edx, [edx+ebp+50A28BE6h]
2123
                and     edi, ecx
2124
                mov     ebp, [esi+0Ch]
2125
                xor     edi, ebx
2126
                add     edx, edi
2127
                mov     edi, eax
2128
                rol     edx, 0Eh
2129
                xor     edi, edx
2130
                lea     ecx, [ecx+ebp+50A28BE6h]
2131
                and     edi, ebx
2132
                mov     ebp, [esi+30h]
2133
                xor     edi, eax
2134
                add     ecx, edi
2135
                mov     edi, edx
2136
                rol     ecx, 0Ch
2137
                xor     edi, ecx
2138
                lea     ebx, [ebx+ebp+50A28BE6h]
2139
                and     edi, eax
2140
                mov     ebp, [esi+18h]
2141
                xor     edi, edx
2142
                add     ebx, edi
2143
                mov     edi, ecx
2144
                rol     ebx, 6
2145
                xor     edi, 0FFFFFFFFh
2146
                lea     eax, [eax+ebp+5C4DD124h]
2147
                or      edi, ebx
2148
                mov     ebp, ebx
2149
                xor     edi, edx
2150
                xor     ebp, 0FFFFFFFFh
2151
                add     eax, edi
2152
                mov     edi, [esi+2Ch]
2153
                rol     eax, 9
2154
                or      ebp, eax
2155
                lea     edx, [edx+edi+5C4DD124h]
2156
                xor     ebp, ecx
2157
                mov     edi, eax
2158
                add     edx, ebp
2159
                mov     ebp, [esi+0Ch]
2160
                rol     edx, 0Dh
2161
                xor     edi, 0FFFFFFFFh
2162
                lea     ecx, [ecx+ebp+5C4DD124h]
2163
                or      edi, edx
2164
                mov     ebp, edx
2165
                xor     edi, ebx
2166
                xor     ebp, 0FFFFFFFFh
2167
                add     ecx, edi
2168
                mov     edi, [esi+1Ch]
2169
                rol     ecx, 0Fh
2170
                or      ebp, ecx
2171
                lea     ebx, [ebx+edi+5C4DD124h]
2172
                xor     ebp, eax
2173
                mov     edi, ecx
2174
                add     ebx, ebp
2175
                mov     ebp, [esi]
2176
                rol     ebx, 7
2177
                xor     edi, 0FFFFFFFFh
2178
                lea     eax, [eax+ebp+5C4DD124h]
2179
                or      edi, ebx
2180
                mov     ebp, ebx
2181
                xor     edi, edx
2182
                xor     ebp, 0FFFFFFFFh
2183
                add     eax, edi
2184
                mov     edi, [esi+34h]
2185
                rol     eax, 0Ch
2186
                or      ebp, eax
2187
                lea     edx, [edx+edi+5C4DD124h]
2188
                xor     ebp, ecx
2189
                mov     edi, eax
2190
                add     edx, ebp
2191
                mov     ebp, [esi+14h]
2192
                rol     edx, 8
2193
                xor     edi, 0FFFFFFFFh
2194
                lea     ecx, [ecx+ebp+5C4DD124h]
2195
                or      edi, edx
2196
                mov     ebp, edx
2197
                xor     edi, ebx
2198
                xor     ebp, 0FFFFFFFFh
2199
                add     ecx, edi
2200
                mov     edi, [esi+28h]
2201
                rol     ecx, 9
2202
                or      ebp, ecx
2203
                lea     ebx, [ebx+edi+5C4DD124h]
2204
                xor     ebp, eax
2205
                mov     edi, ecx
2206
                add     ebx, ebp
2207
                mov     ebp, [esi+38h]
2208
                rol     ebx, 0Bh
2209
                xor     edi, 0FFFFFFFFh
2210
                lea     eax, [eax+ebp+5C4DD124h]
2211
                or      edi, ebx
2212
                mov     ebp, ebx
2213
                xor     edi, edx
2214
                xor     ebp, 0FFFFFFFFh
2215
                add     eax, edi
2216
                mov     edi, [esi+3Ch]
2217
                rol     eax, 7
2218
                or      ebp, eax
2219
                lea     edx, [edx+edi+5C4DD124h]
2220
                xor     ebp, ecx
2221
                mov     edi, eax
2222
                add     edx, ebp
2223
                mov     ebp, [esi+20h]
2224
                rol     edx, 7
2225
                xor     edi, 0FFFFFFFFh
2226
                lea     ecx, [ecx+ebp+5C4DD124h]
2227
                or      edi, edx
2228
                mov     ebp, edx
2229
                xor     edi, ebx
2230
                xor     ebp, 0FFFFFFFFh
2231
                add     ecx, edi
2232
                mov     edi, [esi+30h]
2233
                rol     ecx, 0Ch
2234
                or      ebp, ecx
2235
                lea     ebx, [ebx+edi+5C4DD124h]
2236
                xor     ebp, eax
2237
                mov     edi, ecx
2238
                add     ebx, ebp
2239
                mov     ebp, [esi+10h]
2240
                rol     ebx, 7
2241
                xor     edi, 0FFFFFFFFh
2242
                lea     eax, [eax+ebp+5C4DD124h]
2243
                or      edi, ebx
2244
                mov     ebp, ebx
2245
                xor     edi, edx
2246
                xor     ebp, 0FFFFFFFFh
2247
                add     eax, edi
2248
                mov     edi, [esi+24h]
2249
                rol     eax, 6
2250
                or      ebp, eax
2251
                lea     edx, [edx+edi+5C4DD124h]
2252
                xor     ebp, ecx
2253
                mov     edi, eax
2254
                add     edx, ebp
2255
                mov     ebp, [esi+4]
2256
                rol     edx, 0Fh
2257
                xor     edi, 0FFFFFFFFh
2258
                lea     ecx, [ecx+ebp+5C4DD124h]
2259
                or      edi, edx
2260
                mov     ebp, edx
2261
                xor     edi, ebx
2262
                xor     ebp, 0FFFFFFFFh
2263
                add     ecx, edi
2264
                mov     edi, [esi+8]
2265
                rol     ecx, 0Dh
2266
                or      ebp, ecx
2267
                lea     ebx, [ebx+edi+5C4DD124h]
2268
                xor     ebp, eax
2269
                mov     edi, ecx
2270
                add     ebx, ebp
2271
                mov     ebp, [esi+3Ch]
2272
                rol     ebx, 0Bh
2273
                xor     edi, edx
2274
                lea     eax, [eax+ebp+6D703EF3h]
2275
                and     edi, ebx
2276
                mov     ebp, ebx
2277
                xor     edi, edx
2278
                xor     ebp, ecx
2279
                add     eax, edi
2280
                mov     edi, [esi+14h]
2281
                rol     eax, 9
2282
                and     ebp, eax
2283
                lea     edx, [edx+edi+6D703EF3h]
2284
                xor     ebp, ecx
2285
                mov     edi, eax
2286
                add     edx, ebp
2287
                mov     ebp, [esi+4]
2288
                rol     edx, 7
2289
                xor     edi, ebx
2290
                lea     ecx, [ecx+ebp+6D703EF3h]
2291
                and     edi, edx
2292
                mov     ebp, edx
2293
                xor     edi, ebx
2294
                xor     ebp, eax
2295
                add     ecx, edi
2296
                mov     edi, [esi+0Ch]
2297
                rol     ecx, 0Fh
2298
                and     ebp, ecx
2299
                lea     ebx, [ebx+edi+6D703EF3h]
2300
                xor     ebp, eax
2301
                mov     edi, ecx
2302
                add     ebx, ebp
2303
                mov     ebp, [esi+1Ch]
2304
                rol     ebx, 0Bh
2305
                xor     edi, edx
2306
                lea     eax, [eax+ebp+6D703EF3h]
2307
                and     edi, ebx
2308
                mov     ebp, ebx
2309
                xor     edi, edx
2310
                xor     ebp, ecx
2311
                add     eax, edi
2312
                mov     edi, [esi+38h]
2313
                rol     eax, 8
2314
                and     ebp, eax
2315
                lea     edx, [edx+edi+6D703EF3h]
2316
                xor     ebp, ecx
2317
                mov     edi, eax
2318
                add     edx, ebp
2319
                mov     ebp, [esi+18h]
2320
                rol     edx, 6
2321
                xor     edi, ebx
2322
                lea     ecx, [ecx+ebp+6D703EF3h]
2323
                and     edi, edx
2324
                mov     ebp, edx
2325
                xor     edi, ebx
2326
                xor     ebp, eax
2327
                add     ecx, edi
2328
                mov     edi, [esi+24h]
2329
                rol     ecx, 6
2330
                and     ebp, ecx
2331
                lea     ebx, [ebx+edi+6D703EF3h]
2332
                xor     ebp, eax
2333
                mov     edi, ecx
2334
                add     ebx, ebp
2335
                mov     ebp, [esi+2Ch]
2336
                rol     ebx, 0Eh
2337
                xor     edi, edx
2338
                lea     eax, [eax+ebp+6D703EF3h]
2339
                and     edi, ebx
2340
                mov     ebp, ebx
2341
                xor     edi, edx
2342
                xor     ebp, ecx
2343
                add     eax, edi
2344
                mov     edi, [esi+20h]
2345
                rol     eax, 0Ch
2346
                and     ebp, eax
2347
                lea     edx, [edx+edi+6D703EF3h]
2348
                xor     ebp, ecx
2349
                mov     edi, eax
2350
                add     edx, ebp
2351
                mov     ebp, [esi+30h]
2352
                rol     edx, 0Dh
2353
                xor     edi, ebx
2354
                lea     ecx, [ecx+ebp+6D703EF3h]
2355
                and     edi, edx
2356
                mov     ebp, edx
2357
                xor     edi, ebx
2358
                xor     ebp, eax
2359
                add     ecx, edi
2360
                mov     edi, [esi+8]
2361
                rol     ecx, 5
2362
                and     ebp, ecx
2363
                lea     ebx, [ebx+edi+6D703EF3h]
2364
                xor     ebp, eax
2365
                mov     edi, ecx
2366
                add     ebx, ebp
2367
                mov     ebp, [esi+28h]
2368
                rol     ebx, 0Eh
2369
                xor     edi, edx
2370
                lea     eax, [eax+ebp+6D703EF3h]
2371
                and     edi, ebx
2372
                mov     ebp, ebx
2373
                xor     edi, edx
2374
                xor     ebp, ecx
2375
                add     eax, edi
2376
                mov     edi, [esi]
2377
                rol     eax, 0Dh
2378
                and     ebp, eax
2379
                lea     edx, [edx+edi+6D703EF3h]
2380
                xor     ebp, ecx
2381
                mov     edi, eax
2382
                add     edx, ebp
2383
                mov     ebp, [esi+10h]
2384
                rol     edx, 0Dh
2385
                xor     edi, ebx
2386
                lea     ecx, [ecx+ebp+6D703EF3h]
2387
                and     edi, edx
2388
                mov     ebp, edx
2389
                xor     edi, ebx
2390
                xor     ebp, eax
2391
                add     ecx, edi
2392
                mov     edi, [esi+34h]
2393
                rol     ecx, 7
2394
                and     ebp, ecx
2395
                lea     ebx, [ebx+edi+6D703EF3h]
2396
                xor     ebp, eax
2397
                add     ebx, ebp
2398
                rol     ebx, 5
2399
                mov     edi, edx
2400
                xor     edi, ecx
2401
                mov     ebp, [esi+20h]
2402
                xor     edi, ebx
2403
                add     eax, ebp
2404
                add     eax, edi
2405
                mov     edi, ecx
2406
                rol     eax, 0Fh
2407
                xor     edi, ebx
2408
                mov     ebp, [esi+18h]
2409
                xor     edi, eax
2410
                add     edx, ebp
2411
                add     edx, edi
2412
                mov     edi, ebx
2413
                rol     edx, 5
2414
                xor     edi, eax
2415
                mov     ebp, [esi+10h]
2416
                xor     edi, edx
2417
                add     ecx, ebp
2418
                add     ecx, edi
2419
                mov     edi, eax
2420
                rol     ecx, 8
2421
                xor     edi, edx
2422
                mov     ebp, [esi+4]
2423
                xor     edi, ecx
2424
                add     ebx, ebp
2425
                add     ebx, edi
2426
                mov     edi, edx
2427
                rol     ebx, 0Bh
2428
                xor     edi, ecx
2429
                mov     ebp, [esi+0Ch]
2430
                xor     edi, ebx
2431
                add     eax, ebp
2432
                add     eax, edi
2433
                mov     edi, ecx
2434
                rol     eax, 0Eh
2435
                xor     edi, ebx
2436
                mov     ebp, [esi+2Ch]
2437
                xor     edi, eax
2438
                add     edx, ebp
2439
                add     edx, edi
2440
                mov     edi, ebx
2441
                rol     edx, 0Eh
2442
                xor     edi, eax
2443
                mov     ebp, [esi+3Ch]
2444
                xor     edi, edx
2445
                add     ecx, ebp
2446
                add     ecx, edi
2447
                mov     edi, eax
2448
                rol     ecx, 6
2449
                xor     edi, edx
2450
                mov     ebp, [esi]
2451
                xor     edi, ecx
2452
                add     ebx, ebp
2453
                add     ebx, edi
2454
                mov     edi, edx
2455
                rol     ebx, 0Eh
2456
                xor     edi, ecx
2457
                mov     ebp, [esi+14h]
2458
                xor     edi, ebx
2459
                add     eax, ebp
2460
                add     eax, edi
2461
                mov     edi, ecx
2462
                rol     eax, 6
2463
                xor     edi, ebx
2464
                mov     ebp, [esi+30h]
2465
                xor     edi, eax
2466
                add     edx, ebp
2467
                add     edx, edi
2468
                mov     edi, ebx
2469
                rol     edx, 9
2470
                xor     edi, eax
2471
                mov     ebp, [esi+8]
2472
                xor     edi, edx
2473
                add     ecx, ebp
2474
                add     ecx, edi
2475
                mov     edi, eax
2476
                rol     ecx, 0Ch
2477
                xor     edi, edx
2478
                mov     ebp, [esi+34h]
2479
                xor     edi, ecx
2480
                add     ebx, ebp
2481
                add     ebx, edi
2482
                mov     edi, edx
2483
                rol     ebx, 9
2484
                xor     edi, ecx
2485
                mov     ebp, [esi+24h]
2486
                xor     edi, ebx
2487
                add     eax, ebp
2488
                add     eax, edi
2489
                mov     edi, ecx
2490
                rol     eax, 0Ch
2491
                xor     edi, ebx
2492
                mov     ebp, [esi+1Ch]
2493
                xor     edi, eax
2494
                add     edx, ebp
2495
                add     edx, edi
2496
                mov     edi, ebx
2497
                rol     edx, 5
2498
                xor     edi, eax
2499
                mov     ebp, [esi+28h]
2500
                xor     edi, edx
2501
                add     ecx, ebp
2502
                add     ecx, edi
2503
                mov     edi, eax
2504
                rol     ecx, 0Fh
2505
                xor     edi, edx
2506
                mov     ebp, [esi+38h]
2507
                xor     edi, ecx
2508
                add     ebx, ebp
2509
                add     ebx, edi
2510
                rol     ebx, 8
2511
                mov     edi, [esp+10h]
2512
                mov     ebp, [esp+8]
2513
                mov     esi, [esp+0Ch]
2514
                add     edx, ebp
2515
                add     eax, esi
2516
                mov     ebp, [edi+4]
2517
                mov     esi, [edi+8]
2518
                add     edx, ebp
2519
                add     eax, esi
2520
                mov     [edi+4], eax
2521
                mov     ebp, [esp]
2522
                mov     esi, [esp+4]
2523
                add     ebx, ebp
2524
                add     ecx, esi
2525
                mov     ebp, [edi+0Ch]
2526
                mov     esi, [edi]
2527
                add     ebx, ebp
2528
                add     ecx, esi
2529
                mov     [edi+8], ebx
2530
                add     esp, 14h
2531
                mov     [edi+0Ch], ecx
2532
                mov     [edi], edx
2533
 
2534
 
2535
                pop     ebp
2536
                pop     edi
2537
                pop     esi
2538
                pop     ebx
2539
end;
2540
{$ENDIF}
2541
 
2542
{$IFDEF THash_RipeMD160_asm}
2543
procedure THash_RipeMD160.DoTransform(Buffer: PLongArray);
2544
asm
2545
                push    ebx
2546
                push    esi
2547
                push    edi
2548
                lea     edi, [eax].THash_RipeMD160.FDigest
2549
                mov     esi, edx
2550
                push    ebp
2551
 
2552
                mov     eax, [edi]
2553
                mov     ebx, [edi+4]
2554
                push    edi
2555
                mov     ecx, [edi+8]
2556
                mov     edx, [edi+0Ch]
2557
                mov     ebp, [edi+10h]
2558
                add     esp, 0FFFFFFECh
2559
                mov     edi, edx
2560
                xor     edi, ecx
2561
                xor     edi, ebx
2562
                add     eax, [esi]
2563
                rol     ecx, 0Ah
2564
                add     eax, edi
2565
                mov     edi, ecx
2566
                rol     eax, 0Bh
2567
                add     eax, ebp
2568
                xor     edi, ebx
2569
                xor     edi, eax
2570
                add     ebp, [esi+4]
2571
                rol     ebx, 0Ah
2572
                add     ebp, edi
2573
                mov     edi, ebx
2574
                rol     ebp, 0Eh
2575
                add     ebp, edx
2576
                xor     edi, eax
2577
                xor     edi, ebp
2578
                add     edx, [esi+8]
2579
                rol     eax, 0Ah
2580
                add     edx, edi
2581
                mov     edi, eax
2582
                rol     edx, 0Fh
2583
                add     edx, ecx
2584
                xor     edi, ebp
2585
                xor     edi, edx
2586
                add     ecx, [esi+0Ch]
2587
                rol     ebp, 0Ah
2588
                add     ecx, edi
2589
                mov     edi, ebp
2590
                rol     ecx, 0Ch
2591
                add     ecx, ebx
2592
                xor     edi, edx
2593
                xor     edi, ecx
2594
                add     ebx, [esi+10h]
2595
                rol     edx, 0Ah
2596
                add     ebx, edi
2597
                mov     edi, edx
2598
                rol     ebx, 5
2599
                add     ebx, eax
2600
                xor     edi, ecx
2601
                xor     edi, ebx
2602
                add     eax, [esi+14h]
2603
                rol     ecx, 0Ah
2604
                add     eax, edi
2605
                mov     edi, ecx
2606
                rol     eax, 8
2607
                add     eax, ebp
2608
                xor     edi, ebx
2609
                xor     edi, eax
2610
                add     ebp, [esi+18h]
2611
                rol     ebx, 0Ah
2612
                add     ebp, edi
2613
                mov     edi, ebx
2614
                rol     ebp, 7
2615
                add     ebp, edx
2616
                xor     edi, eax
2617
                xor     edi, ebp
2618
                add     edx, [esi+1Ch]
2619
                rol     eax, 0Ah
2620
                add     edx, edi
2621
                mov     edi, eax
2622
                rol     edx, 9
2623
                add     edx, ecx
2624
                xor     edi, ebp
2625
                xor     edi, edx
2626
                add     ecx, [esi+20h]
2627
                rol     ebp, 0Ah
2628
                add     ecx, edi
2629
                mov     edi, ebp
2630
                rol     ecx, 0Bh
2631
                add     ecx, ebx
2632
                xor     edi, edx
2633
                xor     edi, ecx
2634
                add     ebx, [esi+24h]
2635
                rol     edx, 0Ah
2636
                add     ebx, edi
2637
                mov     edi, edx
2638
                rol     ebx, 0Dh
2639
                add     ebx, eax
2640
                xor     edi, ecx
2641
                xor     edi, ebx
2642
                add     eax, [esi+28h]
2643
                rol     ecx, 0Ah
2644
                add     eax, edi
2645
                mov     edi, ecx
2646
                rol     eax, 0Eh
2647
                add     eax, ebp
2648
                xor     edi, ebx
2649
                xor     edi, eax
2650
                add     ebp, [esi+2Ch]
2651
                rol     ebx, 0Ah
2652
                add     ebp, edi
2653
                mov     edi, ebx
2654
                rol     ebp, 0Fh
2655
                add     ebp, edx
2656
                xor     edi, eax
2657
                xor     edi, ebp
2658
                add     edx, [esi+30h]
2659
                rol     eax, 0Ah
2660
                add     edx, edi
2661
                mov     edi, eax
2662
                rol     edx, 6
2663
                add     edx, ecx
2664
                xor     edi, ebp
2665
                xor     edi, edx
2666
                add     ecx, [esi+34h]
2667
                rol     ebp, 0Ah
2668
                add     ecx, edi
2669
                mov     edi, ebp
2670
                rol     ecx, 7
2671
                add     ecx, ebx
2672
                xor     edi, edx
2673
                xor     edi, ecx
2674
                add     ebx, [esi+38h]
2675
                rol     edx, 0Ah
2676
                add     ebx, edi
2677
                mov     edi, edx
2678
                rol     ebx, 9
2679
                add     ebx, eax
2680
                xor     edi, ecx
2681
                xor     edi, ebx
2682
                add     eax, [esi+3Ch]
2683
                rol     ecx, 0Ah
2684
                add     eax, edi
2685
                mov     edi, ecx
2686
                rol     eax, 8
2687
                add     eax, ebp
2688
                xor     edi, ebx
2689
                add     ebp, [esi+1Ch]
2690
                and     edi, eax
2691
                xor     edi, ecx
2692
                rol     ebx, 0Ah
2693
                lea     ebp, [ebp+edi+5A827999h]
2694
                mov     edi, ebx
2695
                rol     ebp, 7
2696
                add     ebp, edx
2697
                xor     edi, eax
2698
                add     edx, [esi+10h]
2699
                and     edi, ebp
2700
                xor     edi, ebx
2701
                rol     eax, 0Ah
2702
                lea     edx, [edx+edi+5A827999h]
2703
                mov     edi, eax
2704
                rol     edx, 6
2705
                add     edx, ecx
2706
                xor     edi, ebp
2707
                add     ecx, [esi+34h]
2708
                and     edi, edx
2709
                xor     edi, eax
2710
                rol     ebp, 0Ah
2711
                lea     ecx, [ecx+edi+5A827999h]
2712
                mov     edi, ebp
2713
                rol     ecx, 8
2714
                add     ecx, ebx
2715
                xor     edi, edx
2716
                add     ebx, [esi+4]
2717
                and     edi, ecx
2718
                xor     edi, ebp
2719
                rol     edx, 0Ah
2720
                lea     ebx, [ebx+edi+5A827999h]
2721
                mov     edi, edx
2722
                rol     ebx, 0Dh
2723
                add     ebx, eax
2724
                xor     edi, ecx
2725
                add     eax, [esi+28h]
2726
                and     edi, ebx
2727
                xor     edi, edx
2728
                rol     ecx, 0Ah
2729
                lea     eax, [eax+edi+5A827999h]
2730
                mov     edi, ecx
2731
                rol     eax, 0Bh
2732
                add     eax, ebp
2733
                xor     edi, ebx
2734
                add     ebp, [esi+18h]
2735
                and     edi, eax
2736
                xor     edi, ecx
2737
                rol     ebx, 0Ah
2738
                lea     ebp, [ebp+edi+5A827999h]
2739
                mov     edi, ebx
2740
                rol     ebp, 9
2741
                add     ebp, edx
2742
                xor     edi, eax
2743
                add     edx, [esi+3Ch]
2744
                and     edi, ebp
2745
                xor     edi, ebx
2746
                rol     eax, 0Ah
2747
                lea     edx, [edx+edi+5A827999h]
2748
                mov     edi, eax
2749
                rol     edx, 7
2750
                add     edx, ecx
2751
                xor     edi, ebp
2752
                add     ecx, [esi+0Ch]
2753
                and     edi, edx
2754
                xor     edi, eax
2755
                rol     ebp, 0Ah
2756
                lea     ecx, [ecx+edi+5A827999h]
2757
                mov     edi, ebp
2758
                rol     ecx, 0Fh
2759
                add     ecx, ebx
2760
                xor     edi, edx
2761
                add     ebx, [esi+30h]
2762
                and     edi, ecx
2763
                xor     edi, ebp
2764
                rol     edx, 0Ah
2765
                lea     ebx, [ebx+edi+5A827999h]
2766
                mov     edi, edx
2767
                rol     ebx, 7
2768
                add     ebx, eax
2769
                xor     edi, ecx
2770
                add     eax, [esi]
2771
                and     edi, ebx
2772
                xor     edi, edx
2773
                rol     ecx, 0Ah
2774
                lea     eax, [eax+edi+5A827999h]
2775
                mov     edi, ecx
2776
                rol     eax, 0Ch
2777
                add     eax, ebp
2778
                xor     edi, ebx
2779
                add     ebp, [esi+24h]
2780
                and     edi, eax
2781
                xor     edi, ecx
2782
                rol     ebx, 0Ah
2783
                lea     ebp, [ebp+edi+5A827999h]
2784
                mov     edi, ebx
2785
                rol     ebp, 0Fh
2786
                add     ebp, edx
2787
                xor     edi, eax
2788
                add     edx, [esi+14h]
2789
                and     edi, ebp
2790
                xor     edi, ebx
2791
                rol     eax, 0Ah
2792
                lea     edx, [edx+edi+5A827999h]
2793
                mov     edi, eax
2794
                rol     edx, 9
2795
                add     edx, ecx
2796
                xor     edi, ebp
2797
                add     ecx, [esi+8]
2798
                and     edi, edx
2799
                xor     edi, eax
2800
                rol     ebp, 0Ah
2801
                lea     ecx, [ecx+edi+5A827999h]
2802
                mov     edi, ebp
2803
                rol     ecx, 0Bh
2804
                add     ecx, ebx
2805
                xor     edi, edx
2806
                add     ebx, [esi+38h]
2807
                and     edi, ecx
2808
                xor     edi, ebp
2809
                rol     edx, 0Ah
2810
                lea     ebx, [ebx+edi+5A827999h]
2811
                mov     edi, edx
2812
                rol     ebx, 7
2813
                add     ebx, eax
2814
                xor     edi, ecx
2815
                add     eax, [esi+2Ch]
2816
                and     edi, ebx
2817
                xor     edi, edx
2818
                rol     ecx, 0Ah
2819
                lea     eax, [eax+edi+5A827999h]
2820
                mov     edi, ecx
2821
                rol     eax, 0Dh
2822
                add     eax, ebp
2823
                xor     edi, ebx
2824
                add     ebp, [esi+20h]
2825
                and     edi, eax
2826
                xor     edi, ecx
2827
                rol     ebx, 0Ah
2828
                lea     ebp, [ebp+edi+5A827999h]
2829
                mov     edi, ebx
2830
                rol     ebp, 0Ch
2831
                add     ebp, edx
2832
                mov     edi, eax
2833
                xor     edi, 0FFFFFFFFh
2834
                or      edi, ebp
2835
                add     edx, [esi+0Ch]
2836
                xor     edi, ebx
2837
                rol     eax, 0Ah
2838
                lea     edx, [edx+edi+6ED9EBA1h]
2839
                mov     edi, ebp
2840
                rol     edx, 0Bh
2841
                xor     edi, 0FFFFFFFFh
2842
                add     edx, ecx
2843
                or      edi, edx
2844
                add     ecx, [esi+28h]
2845
                xor     edi, eax
2846
                rol     ebp, 0Ah
2847
                lea     ecx, [ecx+edi+6ED9EBA1h]
2848
                mov     edi, edx
2849
                rol     ecx, 0Dh
2850
                xor     edi, 0FFFFFFFFh
2851
                add     ecx, ebx
2852
                or      edi, ecx
2853
                add     ebx, [esi+38h]
2854
                xor     edi, ebp
2855
                rol     edx, 0Ah
2856
                lea     ebx, [ebx+edi+6ED9EBA1h]
2857
                mov     edi, ecx
2858
                rol     ebx, 6
2859
                xor     edi, 0FFFFFFFFh
2860
                add     ebx, eax
2861
                or      edi, ebx
2862
                add     eax, [esi+10h]
2863
                xor     edi, edx
2864
                rol     ecx, 0Ah
2865
                lea     eax, [eax+edi+6ED9EBA1h]
2866
                mov     edi, ebx
2867
                rol     eax, 7
2868
                xor     edi, 0FFFFFFFFh
2869
                add     eax, ebp
2870
                or      edi, eax
2871
                add     ebp, [esi+24h]
2872
                xor     edi, ecx
2873
                rol     ebx, 0Ah
2874
                lea     ebp, [ebp+edi+6ED9EBA1h]
2875
                mov     edi, eax
2876
                rol     ebp, 0Eh
2877
                xor     edi, 0FFFFFFFFh
2878
                add     ebp, edx
2879
                or      edi, ebp
2880
                add     edx, [esi+3Ch]
2881
                xor     edi, ebx
2882
                rol     eax, 0Ah
2883
                lea     edx, [edx+edi+6ED9EBA1h]
2884
                mov     edi, ebp
2885
                rol     edx, 9
2886
                xor     edi, 0FFFFFFFFh
2887
                add     edx, ecx
2888
                or      edi, edx
2889
                add     ecx, [esi+20h]
2890
                xor     edi, eax
2891
                rol     ebp, 0Ah
2892
                lea     ecx, [ecx+edi+6ED9EBA1h]
2893
                mov     edi, edx
2894
                rol     ecx, 0Dh
2895
                xor     edi, 0FFFFFFFFh
2896
                add     ecx, ebx
2897
                or      edi, ecx
2898
                add     ebx, [esi+4]
2899
                xor     edi, ebp
2900
                rol     edx, 0Ah
2901
                lea     ebx, [ebx+edi+6ED9EBA1h]
2902
                mov     edi, ecx
2903
                rol     ebx, 0Fh
2904
                xor     edi, 0FFFFFFFFh
2905
                add     ebx, eax
2906
                or      edi, ebx
2907
                add     eax, [esi+8]
2908
                xor     edi, edx
2909
                rol     ecx, 0Ah
2910
                lea     eax, [eax+edi+6ED9EBA1h]
2911
                mov     edi, ebx
2912
                rol     eax, 0Eh
2913
                xor     edi, 0FFFFFFFFh
2914
                add     eax, ebp
2915
                or      edi, eax
2916
                add     ebp, [esi+1Ch]
2917
                xor     edi, ecx
2918
                rol     ebx, 0Ah
2919
                lea     ebp, [ebp+edi+6ED9EBA1h]
2920
                mov     edi, eax
2921
                rol     ebp, 8
2922
                xor     edi, 0FFFFFFFFh
2923
                add     ebp, edx
2924
                or      edi, ebp
2925
                add     edx, [esi]
2926
                xor     edi, ebx
2927
                rol     eax, 0Ah
2928
                lea     edx, [edx+edi+6ED9EBA1h]
2929
                mov     edi, ebp
2930
                rol     edx, 0Dh
2931
                xor     edi, 0FFFFFFFFh
2932
                add     edx, ecx
2933
                or      edi, edx
2934
                add     ecx, [esi+18h]
2935
                xor     edi, eax
2936
                rol     ebp, 0Ah
2937
                lea     ecx, [ecx+edi+6ED9EBA1h]
2938
                mov     edi, edx
2939
                rol     ecx, 6
2940
                xor     edi, 0FFFFFFFFh
2941
                add     ecx, ebx
2942
                or      edi, ecx
2943
                add     ebx, [esi+34h]
2944
                xor     edi, ebp
2945
                rol     edx, 0Ah
2946
                lea     ebx, [ebx+edi+6ED9EBA1h]
2947
                mov     edi, ecx
2948
                rol     ebx, 5
2949
                xor     edi, 0FFFFFFFFh
2950
                add     ebx, eax
2951
                or      edi, ebx
2952
                add     eax, [esi+2Ch]
2953
                xor     edi, edx
2954
                rol     ecx, 0Ah
2955
                lea     eax, [eax+edi+6ED9EBA1h]
2956
                mov     edi, ebx
2957
                rol     eax, 0Ch
2958
                xor     edi, 0FFFFFFFFh
2959
                add     eax, ebp
2960
                or      edi, eax
2961
                add     ebp, [esi+14h]
2962
                xor     edi, ecx
2963
                rol     ebx, 0Ah
2964
                lea     ebp, [ebp+edi+6ED9EBA1h]
2965
                mov     edi, eax
2966
                rol     ebp, 7
2967
                xor     edi, 0FFFFFFFFh
2968
                add     ebp, edx
2969
                or      edi, ebp
2970
                add     edx, [esi+30h]
2971
                xor     edi, ebx
2972
                rol     eax, 0Ah
2973
                lea     edx, [edx+edi+6ED9EBA1h]
2974
                mov     edi, ebp
2975
                rol     edx, 5
2976
                xor     edi, 0FFFFFFFFh
2977
                add     edx, ecx
2978
                mov     edi, ebp
2979
                xor     edi, edx
2980
                and     edi, eax
2981
                add     ecx, [esi+4]
2982
                xor     edi, ebp
2983
                rol     ebp, 0Ah
2984
                lea     ecx, [ecx+edi-70E44324h]
2985
                mov     edi, edx
2986
                rol     ecx, 0Bh
2987
                add     ecx, ebx
2988
                xor     edi, ecx
2989
                and     edi, ebp
2990
                add     ebx, [esi+24h]
2991
                xor     edi, edx
2992
                rol     edx, 0Ah
2993
                lea     ebx, [ebx+edi-70E44324h]
2994
                mov     edi, ecx
2995
                rol     ebx, 0Ch
2996
                add     ebx, eax
2997
                xor     edi, ebx
2998
                and     edi, edx
2999
                add     eax, [esi+2Ch]
3000
                xor     edi, ecx
3001
                rol     ecx, 0Ah
3002
                lea     eax, [eax+edi-70E44324h]
3003
                mov     edi, ebx
3004
                rol     eax, 0Eh
3005
                add     eax, ebp
3006
                xor     edi, eax
3007
                and     edi, ecx
3008
                add     ebp, [esi+28h]
3009
                xor     edi, ebx
3010
                rol     ebx, 0Ah
3011
                lea     ebp, [ebp+edi-70E44324h]
3012
                mov     edi, eax
3013
                rol     ebp, 0Fh
3014
                add     ebp, edx
3015
                xor     edi, ebp
3016
                and     edi, ebx
3017
                add     edx, [esi]
3018
                xor     edi, eax
3019
                rol     eax, 0Ah
3020
                lea     edx, [edx+edi-70E44324h]
3021
                mov     edi, ebp
3022
                rol     edx, 0Eh
3023
                add     edx, ecx
3024
                xor     edi, edx
3025
                and     edi, eax
3026
                add     ecx, [esi+20h]
3027
                xor     edi, ebp
3028
                rol     ebp, 0Ah
3029
                lea     ecx, [ecx+edi-70E44324h]
3030
                mov     edi, edx
3031
                rol     ecx, 0Fh
3032
                add     ecx, ebx
3033
                xor     edi, ecx
3034
                and     edi, ebp
3035
                add     ebx, [esi+30h]
3036
                xor     edi, edx
3037
                rol     edx, 0Ah
3038
                lea     ebx, [ebx+edi-70E44324h]
3039
                mov     edi, ecx
3040
                rol     ebx, 9
3041
                add     ebx, eax
3042
                xor     edi, ebx
3043
                and     edi, edx
3044
                add     eax, [esi+10h]
3045
                xor     edi, ecx
3046
                rol     ecx, 0Ah
3047
                lea     eax, [eax+edi-70E44324h]
3048
                mov     edi, ebx
3049
                rol     eax, 8
3050
                add     eax, ebp
3051
                xor     edi, eax
3052
                and     edi, ecx
3053
                add     ebp, [esi+34h]
3054
                xor     edi, ebx
3055
                rol     ebx, 0Ah
3056
                lea     ebp, [ebp+edi-70E44324h]
3057
                mov     edi, eax
3058
                rol     ebp, 9
3059
                add     ebp, edx
3060
                xor     edi, ebp
3061
                and     edi, ebx
3062
                add     edx, [esi+0Ch]
3063
                xor     edi, eax
3064
                rol     eax, 0Ah
3065
                lea     edx, [edx+edi-70E44324h]
3066
                mov     edi, ebp
3067
                rol     edx, 0Eh
3068
                add     edx, ecx
3069
                xor     edi, edx
3070
                and     edi, eax
3071
                add     ecx, [esi+1Ch]
3072
                xor     edi, ebp
3073
                rol     ebp, 0Ah
3074
                lea     ecx, [ecx+edi-70E44324h]
3075
                mov     edi, edx
3076
                rol     ecx, 5
3077
                add     ecx, ebx
3078
                xor     edi, ecx
3079
                and     edi, ebp
3080
                add     ebx, [esi+3Ch]
3081
                xor     edi, edx
3082
                rol     edx, 0Ah
3083
                lea     ebx, [ebx+edi-70E44324h]
3084
                mov     edi, ecx
3085
                rol     ebx, 6
3086
                add     ebx, eax
3087
                xor     edi, ebx
3088
                and     edi, edx
3089
                add     eax, [esi+38h]
3090
                xor     edi, ecx
3091
                rol     ecx, 0Ah
3092
                lea     eax, [eax+edi-70E44324h]
3093
                mov     edi, ebx
3094
                rol     eax, 8
3095
                add     eax, ebp
3096
                xor     edi, eax
3097
                and     edi, ecx
3098
                add     ebp, [esi+14h]
3099
                xor     edi, ebx
3100
                rol     ebx, 0Ah
3101
                lea     ebp, [ebp+edi-70E44324h]
3102
                mov     edi, eax
3103
                rol     ebp, 6
3104
                add     ebp, edx
3105
                xor     edi, ebp
3106
                and     edi, ebx
3107
                add     edx, [esi+18h]
3108
                xor     edi, eax
3109
                rol     eax, 0Ah
3110
                lea     edx, [edx+edi-70E44324h]
3111
                mov     edi, ebp
3112
                rol     edx, 5
3113
                add     edx, ecx
3114
                xor     edi, edx
3115
                and     edi, eax
3116
                add     ecx, [esi+8]
3117
                xor     edi, ebp
3118
                rol     ebp, 0Ah
3119
                lea     ecx, [ecx+edi-70E44324h]
3120
                mov     edi, edx
3121
                rol     ecx, 0Ch
3122
                add     ecx, ebx
3123
                mov     edi, ebp
3124
                xor     edi, 0FFFFFFFFh
3125
                or      edi, edx
3126
                add     ebx, [esi+10h]
3127
                xor     edi, ecx
3128
                rol     edx, 0Ah
3129
                lea     ebx, [ebx+edi-56AC02B2h]
3130
                mov     edi, edx
3131
                rol     ebx, 9
3132
                add     ebx, eax
3133
                xor     edi, 0FFFFFFFFh
3134
                or      edi, ecx
3135
                add     eax, [esi]
3136
                xor     edi, ebx
3137
                rol     ecx, 0Ah
3138
                lea     eax, [eax+edi-56AC02B2h]
3139
                mov     edi, ecx
3140
                rol     eax, 0Fh
3141
                add     eax, ebp
3142
                xor     edi, 0FFFFFFFFh
3143
                or      edi, ebx
3144
                add     ebp, [esi+14h]
3145
                xor     edi, eax
3146
                rol     ebx, 0Ah
3147
                lea     ebp, [ebp+edi-56AC02B2h]
3148
                mov     edi, ebx
3149
                rol     ebp, 5
3150
                add     ebp, edx
3151
                xor     edi, 0FFFFFFFFh
3152
                or      edi, eax
3153
                add     edx, [esi+24h]
3154
                xor     edi, ebp
3155
                rol     eax, 0Ah
3156
                lea     edx, [edx+edi-56AC02B2h]
3157
                mov     edi, eax
3158
                rol     edx, 0Bh
3159
                add     edx, ecx
3160
                xor     edi, 0FFFFFFFFh
3161
                or      edi, ebp
3162
                add     ecx, [esi+1Ch]
3163
                xor     edi, edx
3164
                rol     ebp, 0Ah
3165
                lea     ecx, [ecx+edi-56AC02B2h]
3166
                mov     edi, ebp
3167
                rol     ecx, 6
3168
                add     ecx, ebx
3169
                xor     edi, 0FFFFFFFFh
3170
                or      edi, edx
3171
                add     ebx, [esi+30h]
3172
                xor     edi, ecx
3173
                rol     edx, 0Ah
3174
                lea     ebx, [ebx+edi-56AC02B2h]
3175
                mov     edi, edx
3176
                rol     ebx, 8
3177
                add     ebx, eax
3178
                xor     edi, 0FFFFFFFFh
3179
                or      edi, ecx
3180
                add     eax, [esi+8]
3181
                xor     edi, ebx
3182
                rol     ecx, 0Ah
3183
                lea     eax, [eax+edi-56AC02B2h]
3184
                mov     edi, ecx
3185
                rol     eax, 0Dh
3186
                add     eax, ebp
3187
                xor     edi, 0FFFFFFFFh
3188
                or      edi, ebx
3189
                add     ebp, [esi+28h]
3190
                xor     edi, eax
3191
                rol     ebx, 0Ah
3192
                lea     ebp, [ebp+edi-56AC02B2h]
3193
                mov     edi, ebx
3194
                rol     ebp, 0Ch
3195
                add     ebp, edx
3196
                xor     edi, 0FFFFFFFFh
3197
                or      edi, eax
3198
                add     edx, [esi+38h]
3199
                xor     edi, ebp
3200
                rol     eax, 0Ah
3201
                lea     edx, [edx+edi-56AC02B2h]
3202
                mov     edi, eax
3203
                rol     edx, 5
3204
                add     edx, ecx
3205
                xor     edi, 0FFFFFFFFh
3206
                or      edi, ebp
3207
                add     ecx, [esi+4]
3208
                xor     edi, edx
3209
                rol     ebp, 0Ah
3210
                lea     ecx, [ecx+edi-56AC02B2h]
3211
                mov     edi, ebp
3212
                rol     ecx, 0Ch
3213
                add     ecx, ebx
3214
                xor     edi, 0FFFFFFFFh
3215
                or      edi, edx
3216
                add     ebx, [esi+0Ch]
3217
                xor     edi, ecx
3218
                rol     edx, 0Ah
3219
                lea     ebx, [ebx+edi-56AC02B2h]
3220
                mov     edi, edx
3221
                rol     ebx, 0Dh
3222
                add     ebx, eax
3223
                xor     edi, 0FFFFFFFFh
3224
                or      edi, ecx
3225
                add     eax, [esi+20h]
3226
                xor     edi, ebx
3227
                rol     ecx, 0Ah
3228
                lea     eax, [eax+edi-56AC02B2h]
3229
                mov     edi, ecx
3230
                rol     eax, 0Eh
3231
                add     eax, ebp
3232
                xor     edi, 0FFFFFFFFh
3233
                or      edi, ebx
3234
                add     ebp, [esi+2Ch]
3235
                xor     edi, eax
3236
                rol     ebx, 0Ah
3237
                lea     ebp, [ebp+edi-56AC02B2h]
3238
                mov     edi, ebx
3239
                rol     ebp, 0Bh
3240
                add     ebp, edx
3241
                xor     edi, 0FFFFFFFFh
3242
                or      edi, eax
3243
                add     edx, [esi+18h]
3244
                xor     edi, ebp
3245
                rol     eax, 0Ah
3246
                lea     edx, [edx+edi-56AC02B2h]
3247
                mov     edi, eax
3248
                rol     edx, 8
3249
                add     edx, ecx
3250
                xor     edi, 0FFFFFFFFh
3251
                or      edi, ebp
3252
                add     ecx, [esi+3Ch]
3253
                xor     edi, edx
3254
                rol     ebp, 0Ah
3255
                lea     ecx, [ecx+edi-56AC02B2h]
3256
                mov     edi, ebp
3257
                rol     ecx, 5
3258
                add     ecx, ebx
3259
                xor     edi, 0FFFFFFFFh
3260
                or      edi, edx
3261
                add     ebx, [esi+34h]
3262
                xor     edi, ecx
3263
                rol     edx, 0Ah
3264
                lea     ebx, [ebx+edi-56AC02B2h]
3265
                mov     edi, edx
3266
                rol     ebx, 6
3267
                add     ebx, eax
3268
                mov     edi, [esp+14h]
3269
                mov     [esp], eax
3270
                mov     [esp+4], ebx
3271
                mov     eax, [edi]
3272
                mov     ebx, [edi+4]
3273
                mov     [esp+8], ecx
3274
                mov     [esp+0Ch], edx
3275
                mov     ecx, [edi+8]
3276
                mov     edx, [edi+0Ch]
3277
                mov     [esp+10h], ebp
3278
                mov     ebp, [edi+10h]
3279
                mov     edi, edx
3280
                xor     edi, 0FFFFFFFFh
3281
                or      edi, ecx
3282
                add     eax, [esi+14h]
3283
                xor     edi, ebx
3284
                rol     ecx, 0Ah
3285
                lea     eax, [eax+edi+50A28BE6h]
3286
                mov     edi, ecx
3287
                rol     eax, 8
3288
                add     eax, ebp
3289
                xor     edi, 0FFFFFFFFh
3290
                or      edi, ebx
3291
                add     ebp, [esi+38h]
3292
                xor     edi, eax
3293
                rol     ebx, 0Ah
3294
                lea     ebp, [ebp+edi+50A28BE6h]
3295
                mov     edi, ebx
3296
                rol     ebp, 9
3297
                add     ebp, edx
3298
                xor     edi, 0FFFFFFFFh
3299
                or      edi, eax
3300
                add     edx, [esi+1Ch]
3301
                xor     edi, ebp
3302
                rol     eax, 0Ah
3303
                lea     edx, [edx+edi+50A28BE6h]
3304
                mov     edi, eax
3305
                rol     edx, 9
3306
                add     edx, ecx
3307
                xor     edi, 0FFFFFFFFh
3308
                or      edi, ebp
3309
                add     ecx, [esi]
3310
                xor     edi, edx
3311
                rol     ebp, 0Ah
3312
                lea     ecx, [ecx+edi+50A28BE6h]
3313
                mov     edi, ebp
3314
                rol     ecx, 0Bh
3315
                add     ecx, ebx
3316
                xor     edi, 0FFFFFFFFh
3317
                or      edi, edx
3318
                add     ebx, [esi+24h]
3319
                xor     edi, ecx
3320
                rol     edx, 0Ah
3321
                lea     ebx, [ebx+edi+50A28BE6h]
3322
                mov     edi, edx
3323
                rol     ebx, 0Dh
3324
                add     ebx, eax
3325
                xor     edi, 0FFFFFFFFh
3326
                or      edi, ecx
3327
                add     eax, [esi+8]
3328
                xor     edi, ebx
3329
                rol     ecx, 0Ah
3330
                lea     eax, [eax+edi+50A28BE6h]
3331
                mov     edi, ecx
3332
                rol     eax, 0Fh
3333
                add     eax, ebp
3334
                xor     edi, 0FFFFFFFFh
3335
                or      edi, ebx
3336
                add     ebp, [esi+2Ch]
3337
                xor     edi, eax
3338
                rol     ebx, 0Ah
3339
                lea     ebp, [ebp+edi+50A28BE6h]
3340
                mov     edi, ebx
3341
                rol     ebp, 0Fh
3342
                add     ebp, edx
3343
                xor     edi, 0FFFFFFFFh
3344
                or      edi, eax
3345
                add     edx, [esi+10h]
3346
                xor     edi, ebp
3347
                rol     eax, 0Ah
3348
                lea     edx, [edx+edi+50A28BE6h]
3349
                mov     edi, eax
3350
                rol     edx, 5
3351
                add     edx, ecx
3352
                xor     edi, 0FFFFFFFFh
3353
                or      edi, ebp
3354
                add     ecx, [esi+34h]
3355
                xor     edi, edx
3356
                rol     ebp, 0Ah
3357
                lea     ecx, [ecx+edi+50A28BE6h]
3358
                mov     edi, ebp
3359
                rol     ecx, 7
3360
                add     ecx, ebx
3361
                xor     edi, 0FFFFFFFFh
3362
                or      edi, edx
3363
                add     ebx, [esi+18h]
3364
                xor     edi, ecx
3365
                rol     edx, 0Ah
3366
                lea     ebx, [ebx+edi+50A28BE6h]
3367
                mov     edi, edx
3368
                rol     ebx, 7
3369
                add     ebx, eax
3370
                xor     edi, 0FFFFFFFFh
3371
                or      edi, ecx
3372
                add     eax, [esi+3Ch]
3373
                xor     edi, ebx
3374
                rol     ecx, 0Ah
3375
                lea     eax, [eax+edi+50A28BE6h]
3376
                mov     edi, ecx
3377
                rol     eax, 8
3378
                add     eax, ebp
3379
                xor     edi, 0FFFFFFFFh
3380
                or      edi, ebx
3381
                add     ebp, [esi+20h]
3382
                xor     edi, eax
3383
                rol     ebx, 0Ah
3384
                lea     ebp, [ebp+edi+50A28BE6h]
3385
                mov     edi, ebx
3386
                rol     ebp, 0Bh
3387
                add     ebp, edx
3388
                xor     edi, 0FFFFFFFFh
3389
                or      edi, eax
3390
                add     edx, [esi+4]
3391
                xor     edi, ebp
3392
                rol     eax, 0Ah
3393
                lea     edx, [edx+edi+50A28BE6h]
3394
                mov     edi, eax
3395
                rol     edx, 0Eh
3396
                add     edx, ecx
3397
                xor     edi, 0FFFFFFFFh
3398
                or      edi, ebp
3399
                add     ecx, [esi+28h]
3400
                xor     edi, edx
3401
                rol     ebp, 0Ah
3402
                lea     ecx, [ecx+edi+50A28BE6h]
3403
                mov     edi, ebp
3404
                rol     ecx, 0Eh
3405
                add     ecx, ebx
3406
                xor     edi, 0FFFFFFFFh
3407
                or      edi, edx
3408
                add     ebx, [esi+0Ch]
3409
                xor     edi, ecx
3410
                rol     edx, 0Ah
3411
                lea     ebx, [ebx+edi+50A28BE6h]
3412
                mov     edi, edx
3413
                rol     ebx, 0Ch
3414
                add     ebx, eax
3415
                xor     edi, 0FFFFFFFFh
3416
                or      edi, ecx
3417
                add     eax, [esi+30h]
3418
                xor     edi, ebx
3419
                rol     ecx, 0Ah
3420
                lea     eax, [eax+edi+50A28BE6h]
3421
                mov     edi, ecx
3422
                rol     eax, 6
3423
                add     eax, ebp
3424
                mov     edi, ebx
3425
                xor     edi, eax
3426
                and     edi, ecx
3427
                add     ebp, [esi+18h]
3428
                xor     edi, ebx
3429
                rol     ebx, 0Ah
3430
                lea     ebp, [ebp+edi+5C4DD124h]
3431
                mov     edi, eax
3432
                rol     ebp, 9
3433
                add     ebp, edx
3434
                xor     edi, ebp
3435
                and     edi, ebx
3436
                add     edx, [esi+2Ch]
3437
                xor     edi, eax
3438
                rol     eax, 0Ah
3439
                lea     edx, [edx+edi+5C4DD124h]
3440
                mov     edi, ebp
3441
                rol     edx, 0Dh
3442
                add     edx, ecx
3443
                xor     edi, edx
3444
                and     edi, eax
3445
                add     ecx, [esi+0Ch]
3446
                xor     edi, ebp
3447
                rol     ebp, 0Ah
3448
                lea     ecx, [ecx+edi+5C4DD124h]
3449
                mov     edi, edx
3450
                rol     ecx, 0Fh
3451
                add     ecx, ebx
3452
                xor     edi, ecx
3453
                and     edi, ebp
3454
                add     ebx, [esi+1Ch]
3455
                xor     edi, edx
3456
                rol     edx, 0Ah
3457
                lea     ebx, [ebx+edi+5C4DD124h]
3458
                mov     edi, ecx
3459
                rol     ebx, 7
3460
                add     ebx, eax
3461
                xor     edi, ebx
3462
                and     edi, edx
3463
                add     eax, [esi]
3464
                xor     edi, ecx
3465
                rol     ecx, 0Ah
3466
                lea     eax, [eax+edi+5C4DD124h]
3467
                mov     edi, ebx
3468
                rol     eax, 0Ch
3469
                add     eax, ebp
3470
                xor     edi, eax
3471
                and     edi, ecx
3472
                add     ebp, [esi+34h]
3473
                xor     edi, ebx
3474
                rol     ebx, 0Ah
3475
                lea     ebp, [ebp+edi+5C4DD124h]
3476
                mov     edi, eax
3477
                rol     ebp, 8
3478
                add     ebp, edx
3479
                xor     edi, ebp
3480
                and     edi, ebx
3481
                add     edx, [esi+14h]
3482
                xor     edi, eax
3483
                rol     eax, 0Ah
3484
                lea     edx, [edx+edi+5C4DD124h]
3485
                mov     edi, ebp
3486
                rol     edx, 9
3487
                add     edx, ecx
3488
                xor     edi, edx
3489
                and     edi, eax
3490
                add     ecx, [esi+28h]
3491
                xor     edi, ebp
3492
                rol     ebp, 0Ah
3493
                lea     ecx, [ecx+edi+5C4DD124h]
3494
                mov     edi, edx
3495
                rol     ecx, 0Bh
3496
                add     ecx, ebx
3497
                xor     edi, ecx
3498
                and     edi, ebp
3499
                add     ebx, [esi+38h]
3500
                xor     edi, edx
3501
                rol     edx, 0Ah
3502
                lea     ebx, [ebx+edi+5C4DD124h]
3503
                mov     edi, ecx
3504
                rol     ebx, 7
3505
                add     ebx, eax
3506
                xor     edi, ebx
3507
                and     edi, edx
3508
                add     eax, [esi+3Ch]
3509
                xor     edi, ecx
3510
                rol     ecx, 0Ah
3511
                lea     eax, [eax+edi+5C4DD124h]
3512
                mov     edi, ebx
3513
                rol     eax, 7
3514
                add     eax, ebp
3515
                xor     edi, eax
3516
                and     edi, ecx
3517
                add     ebp, [esi+20h]
3518
                xor     edi, ebx
3519
                rol     ebx, 0Ah
3520
                lea     ebp, [ebp+edi+5C4DD124h]
3521
                mov     edi, eax
3522
                rol     ebp, 0Ch
3523
                add     ebp, edx
3524
                xor     edi, ebp
3525
                and     edi, ebx
3526
                add     edx, [esi+30h]
3527
                xor     edi, eax
3528
                rol     eax, 0Ah
3529
                lea     edx, [edx+edi+5C4DD124h]
3530
                mov     edi, ebp
3531
                rol     edx, 7
3532
                add     edx, ecx
3533
                xor     edi, edx
3534
                and     edi, eax
3535
                add     ecx, [esi+10h]
3536
                xor     edi, ebp
3537
                rol     ebp, 0Ah
3538
                lea     ecx, [ecx+edi+5C4DD124h]
3539
                mov     edi, edx
3540
                rol     ecx, 6
3541
                add     ecx, ebx
3542
                xor     edi, ecx
3543
                and     edi, ebp
3544
                add     ebx, [esi+24h]
3545
                xor     edi, edx
3546
                rol     edx, 0Ah
3547
                lea     ebx, [ebx+edi+5C4DD124h]
3548
                mov     edi, ecx
3549
                rol     ebx, 0Fh
3550
                add     ebx, eax
3551
                xor     edi, ebx
3552
                and     edi, edx
3553
                add     eax, [esi+4]
3554
                xor     edi, ecx
3555
                rol     ecx, 0Ah
3556
                lea     eax, [eax+edi+5C4DD124h]
3557
                mov     edi, ebx
3558
                rol     eax, 0Dh
3559
                add     eax, ebp
3560
                xor     edi, eax
3561
                and     edi, ecx
3562
                add     ebp, [esi+8]
3563
                xor     edi, ebx
3564
                rol     ebx, 0Ah
3565
                lea     ebp, [ebp+edi+5C4DD124h]
3566
                mov     edi, eax
3567
                rol     ebp, 0Bh
3568
                add     ebp, edx
3569
                mov     edi, eax
3570
                xor     edi, 0FFFFFFFFh
3571
                or      edi, ebp
3572
                add     edx, [esi+3Ch]
3573
                xor     edi, ebx
3574
                rol     eax, 0Ah
3575
                lea     edx, [edx+edi+6D703EF3h]
3576
                mov     edi, ebp
3577
                rol     edx, 9
3578
                xor     edi, 0FFFFFFFFh
3579
                add     edx, ecx
3580
                or      edi, edx
3581
                add     ecx, [esi+14h]
3582
                xor     edi, eax
3583
                rol     ebp, 0Ah
3584
                lea     ecx, [ecx+edi+6D703EF3h]
3585
                mov     edi, edx
3586
                rol     ecx, 7
3587
                xor     edi, 0FFFFFFFFh
3588
                add     ecx, ebx
3589
                or      edi, ecx
3590
                add     ebx, [esi+4]
3591
                xor     edi, ebp
3592
                rol     edx, 0Ah
3593
                lea     ebx, [ebx+edi+6D703EF3h]
3594
                mov     edi, ecx
3595
                rol     ebx, 0Fh
3596
                xor     edi, 0FFFFFFFFh
3597
                add     ebx, eax
3598
                or      edi, ebx
3599
                add     eax, [esi+0Ch]
3600
                xor     edi, edx
3601
                rol     ecx, 0Ah
3602
                lea     eax, [eax+edi+6D703EF3h]
3603
                mov     edi, ebx
3604
                rol     eax, 0Bh
3605
                xor     edi, 0FFFFFFFFh
3606
                add     eax, ebp
3607
                or      edi, eax
3608
                add     ebp, [esi+1Ch]
3609
                xor     edi, ecx
3610
                rol     ebx, 0Ah
3611
                lea     ebp, [ebp+edi+6D703EF3h]
3612
                mov     edi, eax
3613
                rol     ebp, 8
3614
                xor     edi, 0FFFFFFFFh
3615
                add     ebp, edx
3616
                or      edi, ebp
3617
                add     edx, [esi+38h]
3618
                xor     edi, ebx
3619
                rol     eax, 0Ah
3620
                lea     edx, [edx+edi+6D703EF3h]
3621
                mov     edi, ebp
3622
                rol     edx, 6
3623
                xor     edi, 0FFFFFFFFh
3624
                add     edx, ecx
3625
                or      edi, edx
3626
                add     ecx, [esi+18h]
3627
                xor     edi, eax
3628
                rol     ebp, 0Ah
3629
                lea     ecx, [ecx+edi+6D703EF3h]
3630
                mov     edi, edx
3631
                rol     ecx, 6
3632
                xor     edi, 0FFFFFFFFh
3633
                add     ecx, ebx
3634
                or      edi, ecx
3635
                add     ebx, [esi+24h]
3636
                xor     edi, ebp
3637
                rol     edx, 0Ah
3638
                lea     ebx, [ebx+edi+6D703EF3h]
3639
                mov     edi, ecx
3640
                rol     ebx, 0Eh
3641
                xor     edi, 0FFFFFFFFh
3642
                add     ebx, eax
3643
                or      edi, ebx
3644
                add     eax, [esi+2Ch]
3645
                xor     edi, edx
3646
                rol     ecx, 0Ah
3647
                lea     eax, [eax+edi+6D703EF3h]
3648
                mov     edi, ebx
3649
                rol     eax, 0Ch
3650
                xor     edi, 0FFFFFFFFh
3651
                add     eax, ebp
3652
                or      edi, eax
3653
                add     ebp, [esi+20h]
3654
                xor     edi, ecx
3655
                rol     ebx, 0Ah
3656
                lea     ebp, [ebp+edi+6D703EF3h]
3657
                mov     edi, eax
3658
                rol     ebp, 0Dh
3659
                xor     edi, 0FFFFFFFFh
3660
                add     ebp, edx
3661
                or      edi, ebp
3662
                add     edx, [esi+30h]
3663
                xor     edi, ebx
3664
                rol     eax, 0Ah
3665
                lea     edx, [edx+edi+6D703EF3h]
3666
                mov     edi, ebp
3667
                rol     edx, 5
3668
                xor     edi, 0FFFFFFFFh
3669
                add     edx, ecx
3670
                or      edi, edx
3671
                add     ecx, [esi+8]
3672
                xor     edi, eax
3673
                rol     ebp, 0Ah
3674
                lea     ecx, [ecx+edi+6D703EF3h]
3675
                mov     edi, edx
3676
                rol     ecx, 0Eh
3677
                xor     edi, 0FFFFFFFFh
3678
                add     ecx, ebx
3679
                or      edi, ecx
3680
                add     ebx, [esi+28h]
3681
                xor     edi, ebp
3682
                rol     edx, 0Ah
3683
                lea     ebx, [ebx+edi+6D703EF3h]
3684
                mov     edi, ecx
3685
                rol     ebx, 0Dh
3686
                xor     edi, 0FFFFFFFFh
3687
                add     ebx, eax
3688
                or      edi, ebx
3689
                add     eax, [esi]
3690
                xor     edi, edx
3691
                rol     ecx, 0Ah
3692
                lea     eax, [eax+edi+6D703EF3h]
3693
                mov     edi, ebx
3694
                rol     eax, 0Dh
3695
                xor     edi, 0FFFFFFFFh
3696
                add     eax, ebp
3697
                or      edi, eax
3698
                add     ebp, [esi+10h]
3699
                xor     edi, ecx
3700
                rol     ebx, 0Ah
3701
                lea     ebp, [ebp+edi+6D703EF3h]
3702
                mov     edi, eax
3703
                rol     ebp, 7
3704
                xor     edi, 0FFFFFFFFh
3705
                add     ebp, edx
3706
                or      edi, ebp
3707
                add     edx, [esi+34h]
3708
                xor     edi, ebx
3709
                rol     eax, 0Ah
3710
                lea     edx, [edx+edi+6D703EF3h]
3711
                mov     edi, ebp
3712
                rol     edx, 5
3713
                xor     edi, 0FFFFFFFFh
3714
                add     edx, ecx
3715
                mov     edi, eax
3716
                xor     edi, ebp
3717
                add     ecx, [esi+20h]
3718
                and     edi, edx
3719
                xor     edi, eax
3720
                rol     ebp, 0Ah
3721
                lea     ecx, [ecx+edi+7A6D76E9h]
3722
                mov     edi, ebp
3723
                rol     ecx, 0Fh
3724
                add     ecx, ebx
3725
                xor     edi, edx
3726
                add     ebx, [esi+18h]
3727
                and     edi, ecx
3728
                xor     edi, ebp
3729
                rol     edx, 0Ah
3730
                lea     ebx, [ebx+edi+7A6D76E9h]
3731
                mov     edi, edx
3732
                rol     ebx, 5
3733
                add     ebx, eax
3734
                xor     edi, ecx
3735
                add     eax, [esi+10h]
3736
                and     edi, ebx
3737
                xor     edi, edx
3738
                rol     ecx, 0Ah
3739
                lea     eax, [eax+edi+7A6D76E9h]
3740
                mov     edi, ecx
3741
                rol     eax, 8
3742
                add     eax, ebp
3743
                xor     edi, ebx
3744
                add     ebp, [esi+4]
3745
                and     edi, eax
3746
                xor     edi, ecx
3747
                rol     ebx, 0Ah
3748
                lea     ebp, [ebp+edi+7A6D76E9h]
3749
                mov     edi, ebx
3750
                rol     ebp, 0Bh
3751
                add     ebp, edx
3752
                xor     edi, eax
3753
                add     edx, [esi+0Ch]
3754
                and     edi, ebp
3755
                xor     edi, ebx
3756
                rol     eax, 0Ah
3757
                lea     edx, [edx+edi+7A6D76E9h]
3758
                mov     edi, eax
3759
                rol     edx, 0Eh
3760
                add     edx, ecx
3761
                xor     edi, ebp
3762
                add     ecx, [esi+2Ch]
3763
                and     edi, edx
3764
                xor     edi, eax
3765
                rol     ebp, 0Ah
3766
                lea     ecx, [ecx+edi+7A6D76E9h]
3767
                mov     edi, ebp
3768
                rol     ecx, 0Eh
3769
                add     ecx, ebx
3770
                xor     edi, edx
3771
                add     ebx, [esi+3Ch]
3772
                and     edi, ecx
3773
                xor     edi, ebp
3774
                rol     edx, 0Ah
3775
                lea     ebx, [ebx+edi+7A6D76E9h]
3776
                mov     edi, edx
3777
                rol     ebx, 6
3778
                add     ebx, eax
3779
                xor     edi, ecx
3780
                add     eax, [esi]
3781
                and     edi, ebx
3782
                xor     edi, edx
3783
                rol     ecx, 0Ah
3784
                lea     eax, [eax+edi+7A6D76E9h]
3785
                mov     edi, ecx
3786
                rol     eax, 0Eh
3787
                add     eax, ebp
3788
                xor     edi, ebx
3789
                add     ebp, [esi+14h]
3790
                and     edi, eax
3791
                xor     edi, ecx
3792
                rol     ebx, 0Ah
3793
                lea     ebp, [ebp+edi+7A6D76E9h]
3794
                mov     edi, ebx
3795
                rol     ebp, 6
3796
                add     ebp, edx
3797
                xor     edi, eax
3798
                add     edx, [esi+30h]
3799
                and     edi, ebp
3800
                xor     edi, ebx
3801
                rol     eax, 0Ah
3802
                lea     edx, [edx+edi+7A6D76E9h]
3803
                mov     edi, eax
3804
                rol     edx, 9
3805
                add     edx, ecx
3806
                xor     edi, ebp
3807
                add     ecx, [esi+8]
3808
                and     edi, edx
3809
                xor     edi, eax
3810
                rol     ebp, 0Ah
3811
                lea     ecx, [ecx+edi+7A6D76E9h]
3812
                mov     edi, ebp
3813
                rol     ecx, 0Ch
3814
                add     ecx, ebx
3815
                xor     edi, edx
3816
                add     ebx, [esi+34h]
3817
                and     edi, ecx
3818
                xor     edi, ebp
3819
                rol     edx, 0Ah
3820
                lea     ebx, [ebx+edi+7A6D76E9h]
3821
                mov     edi, edx
3822
                rol     ebx, 9
3823
                add     ebx, eax
3824
                xor     edi, ecx
3825
                add     eax, [esi+24h]
3826
                and     edi, ebx
3827
                xor     edi, edx
3828
                rol     ecx, 0Ah
3829
                lea     eax, [eax+edi+7A6D76E9h]
3830
                mov     edi, ecx
3831
                rol     eax, 0Ch
3832
                add     eax, ebp
3833
                xor     edi, ebx
3834
                add     ebp, [esi+1Ch]
3835
                and     edi, eax
3836
                xor     edi, ecx
3837
                rol     ebx, 0Ah
3838
                lea     ebp, [ebp+edi+7A6D76E9h]
3839
                mov     edi, ebx
3840
                rol     ebp, 5
3841
                add     ebp, edx
3842
                xor     edi, eax
3843
                add     edx, [esi+28h]
3844
                and     edi, ebp
3845
                xor     edi, ebx
3846
                rol     eax, 0Ah
3847
                lea     edx, [edx+edi+7A6D76E9h]
3848
                mov     edi, eax
3849
                rol     edx, 0Fh
3850
                add     edx, ecx
3851
                xor     edi, ebp
3852
                add     ecx, [esi+38h]
3853
                and     edi, edx
3854
                xor     edi, eax
3855
                rol     ebp, 0Ah
3856
                lea     ecx, [ecx+edi+7A6D76E9h]
3857
                mov     edi, ebp
3858
                rol     ecx, 8
3859
                add     ecx, ebx
3860
                xor     edi, edx
3861
                xor     edi, ecx
3862
                add     ebx, [esi+30h]
3863
                rol     edx, 0Ah
3864
                add     ebx, edi
3865
                mov     edi, edx
3866
                rol     ebx, 8
3867
                add     ebx, eax
3868
                xor     edi, ecx
3869
                xor     edi, ebx
3870
                add     eax, [esi+3Ch]
3871
                rol     ecx, 0Ah
3872
                add     eax, edi
3873
                mov     edi, ecx
3874
                rol     eax, 5
3875
                add     eax, ebp
3876
                xor     edi, ebx
3877
                xor     edi, eax
3878
                add     ebp, [esi+28h]
3879
                rol     ebx, 0Ah
3880
                add     ebp, edi
3881
                mov     edi, ebx
3882
                rol     ebp, 0Ch
3883
                add     ebp, edx
3884
                xor     edi, eax
3885
                xor     edi, ebp
3886
                add     edx, [esi+10h]
3887
                rol     eax, 0Ah
3888
                add     edx, edi
3889
                mov     edi, eax
3890
                rol     edx, 9
3891
                add     edx, ecx
3892
                xor     edi, ebp
3893
                xor     edi, edx
3894
                add     ecx, [esi+4]
3895
                rol     ebp, 0Ah
3896
                add     ecx, edi
3897
                mov     edi, ebp
3898
                rol     ecx, 0Ch
3899
                add     ecx, ebx
3900
                xor     edi, edx
3901
                xor     edi, ecx
3902
                add     ebx, [esi+14h]
3903
                rol     edx, 0Ah
3904
                add     ebx, edi
3905
                mov     edi, edx
3906
                rol     ebx, 5
3907
                add     ebx, eax
3908
                xor     edi, ecx
3909
                xor     edi, ebx
3910
                add     eax, [esi+20h]
3911
                rol     ecx, 0Ah
3912
                add     eax, edi
3913
                mov     edi, ecx
3914
                rol     eax, 0Eh
3915
                add     eax, ebp
3916
                xor     edi, ebx
3917
                xor     edi, eax
3918
                add     ebp, [esi+1Ch]
3919
                rol     ebx, 0Ah
3920
                add     ebp, edi
3921
                mov     edi, ebx
3922
                rol     ebp, 6
3923
                add     ebp, edx
3924
                xor     edi, eax
3925
                xor     edi, ebp
3926
                add     edx, [esi+18h]
3927
                rol     eax, 0Ah
3928
                add     edx, edi
3929
                mov     edi, eax
3930
                rol     edx, 8
3931
                add     edx, ecx
3932
                xor     edi, ebp
3933
                xor     edi, edx
3934
                add     ecx, [esi+8]
3935
                rol     ebp, 0Ah
3936
                add     ecx, edi
3937
                mov     edi, ebp
3938
                rol     ecx, 0Dh
3939
                add     ecx, ebx
3940
                xor     edi, edx
3941
                xor     edi, ecx
3942
                add     ebx, [esi+34h]
3943
                rol     edx, 0Ah
3944
                add     ebx, edi
3945
                mov     edi, edx
3946
                rol     ebx, 6
3947
                add     ebx, eax
3948
                xor     edi, ecx
3949
                xor     edi, ebx
3950
                add     eax, [esi+38h]
3951
                rol     ecx, 0Ah
3952
                add     eax, edi
3953
                mov     edi, ecx
3954
                rol     eax, 5
3955
                add     eax, ebp
3956
                xor     edi, ebx
3957
                xor     edi, eax
3958
                add     ebp, [esi]
3959
                rol     ebx, 0Ah
3960
                add     ebp, edi
3961
                mov     edi, ebx
3962
                rol     ebp, 0Fh
3963
                add     ebp, edx
3964
                xor     edi, eax
3965
                xor     edi, ebp
3966
                add     edx, [esi+0Ch]
3967
                rol     eax, 0Ah
3968
                add     edx, edi
3969
                mov     edi, eax
3970
                rol     edx, 0Dh
3971
                add     edx, ecx
3972
                xor     edi, ebp
3973
                xor     edi, edx
3974
                add     ecx, [esi+24h]
3975
                rol     ebp, 0Ah
3976
                add     ecx, edi
3977
                mov     edi, ebp
3978
                rol     ecx, 0Bh
3979
                add     ecx, ebx
3980
                xor     edi, edx
3981
                xor     edi, ecx
3982
                add     ebx, [esi+2Ch]
3983
                rol     edx, 0Ah
3984
                add     ebx, edi
3985
                mov     edi, edx
3986
                rol     ebx, 0Bh
3987
                add     ebx, eax
3988
                mov     edi, [esp+14h]
3989
                add     edx, [esp+8]
3990
                mov     esi, [edi+4]
3991
                add     ebp, [esp+0Ch]
3992
                add     edx, esi
3993
                mov     esi, [esp+10h]
3994
                add     ecx, [edi]
3995
                mov     [edi], edx
3996
                mov     edx, [edi+8]
3997
                add     eax, esi
3998
                mov     esi, [edi+0Ch]
3999
                add     ebp, edx
4000
                mov     edx, [esp]
4001
                mov     [edi+4], ebp
4002
                add     eax, esi
4003
                mov     esi, [edi+10h]
4004
                add     ebx, edx
4005
                mov     edx, [esp+4]
4006
                mov     [edi+8], eax
4007
                add     ebx, esi
4008
                add     ecx, edx
4009
                mov     [edi+0Ch], ebx
4010
                add     esp, 18h
4011
                mov     [edi+10h], ecx
4012
 
4013
 
4014
                pop     ebp
4015
                pop     edi
4016
                pop     esi
4017
                pop     ebx
4018
end;
4019
{$ENDIF}
4020
 
4021
{$IFDEF THash_RipeMD256_asm}
4022
procedure THash_RipeMD256.DoTransform(Buffer: PLongArray);
4023
asm
4024
                push    ebx
4025
                push    esi
4026
                push    edi
4027
                lea     edi, [eax].THash_RipeMD256.FDigest
4028
                mov     esi, edx
4029
                push    ebp
4030
 
4031
                mov     eax, [edi]
4032
                mov     ebx, [edi+4]
4033
                push    edi
4034
                mov     ecx, [edi+8]
4035
                mov     edx, [edi+0Ch]
4036
                add     esp, 0FFFFFFE0h
4037
                mov     edi, ecx
4038
                xor     edi, edx
4039
                mov     ebp, [esi]
4040
                xor     edi, ebx
4041
                add     eax, ebp
4042
                add     eax, edi
4043
                mov     edi, ebx
4044
                rol     eax, 0Bh
4045
                xor     edi, ecx
4046
                mov     ebp, [esi+4]
4047
                xor     edi, eax
4048
                add     edx, ebp
4049
                add     edx, edi
4050
                mov     edi, eax
4051
                rol     edx, 0Eh
4052
                xor     edi, ebx
4053
                mov     ebp, [esi+8]
4054
                xor     edi, edx
4055
                add     ecx, ebp
4056
                add     ecx, edi
4057
                mov     edi, edx
4058
                rol     ecx, 0Fh
4059
                xor     edi, eax
4060
                mov     ebp, [esi+0Ch]
4061
                xor     edi, ecx
4062
                add     ebx, ebp
4063
                add     ebx, edi
4064
                mov     edi, ecx
4065
                rol     ebx, 0Ch
4066
                xor     edi, edx
4067
                mov     ebp, [esi+10h]
4068
                xor     edi, ebx
4069
                add     eax, ebp
4070
                add     eax, edi
4071
                mov     edi, ebx
4072
                rol     eax, 5
4073
                xor     edi, ecx
4074
                mov     ebp, [esi+14h]
4075
                xor     edi, eax
4076
                add     edx, ebp
4077
                add     edx, edi
4078
                mov     edi, eax
4079
                rol     edx, 8
4080
                xor     edi, ebx
4081
                mov     ebp, [esi+18h]
4082
                xor     edi, edx
4083
                add     ecx, ebp
4084
                add     ecx, edi
4085
                mov     edi, edx
4086
                rol     ecx, 7
4087
                xor     edi, eax
4088
                mov     ebp, [esi+1Ch]
4089
                xor     edi, ecx
4090
                add     ebx, ebp
4091
                add     ebx, edi
4092
                mov     edi, ecx
4093
                rol     ebx, 9
4094
                xor     edi, edx
4095
                mov     ebp, [esi+20h]
4096
                xor     edi, ebx
4097
                add     eax, ebp
4098
                add     eax, edi
4099
                mov     edi, ebx
4100
                rol     eax, 0Bh
4101
                xor     edi, ecx
4102
                mov     ebp, [esi+24h]
4103
                xor     edi, eax
4104
                add     edx, ebp
4105
                add     edx, edi
4106
                mov     edi, eax
4107
                rol     edx, 0Dh
4108
                xor     edi, ebx
4109
                mov     ebp, [esi+28h]
4110
                xor     edi, edx
4111
                add     ecx, ebp
4112
                add     ecx, edi
4113
                mov     edi, edx
4114
                rol     ecx, 0Eh
4115
                xor     edi, eax
4116
                mov     ebp, [esi+2Ch]
4117
                xor     edi, ecx
4118
                add     ebx, ebp
4119
                add     ebx, edi
4120
                mov     edi, ecx
4121
                rol     ebx, 0Fh
4122
                xor     edi, edx
4123
                mov     ebp, [esi+30h]
4124
                xor     edi, ebx
4125
                add     eax, ebp
4126
                add     eax, edi
4127
                mov     edi, ebx
4128
                rol     eax, 6
4129
                xor     edi, ecx
4130
                mov     ebp, [esi+34h]
4131
                xor     edi, eax
4132
                add     edx, ebp
4133
                add     edx, edi
4134
                mov     edi, eax
4135
                rol     edx, 7
4136
                xor     edi, ebx
4137
                mov     ebp, [esi+38h]
4138
                xor     edi, edx
4139
                add     ecx, ebp
4140
                add     ecx, edi
4141
                mov     edi, edx
4142
                rol     ecx, 9
4143
                xor     edi, eax
4144
                mov     ebp, [esi+3Ch]
4145
                xor     edi, ecx
4146
                add     ebx, ebp
4147
                add     ebx, edi
4148
                rol     ebx, 8
4149
                mov     edi, [esp+20h]
4150
                mov     [esp], eax
4151
                mov     [esp+4], ebx
4152
                mov     ebp, [esi+14h]
4153
                mov     eax, [edi+10h]
4154
                mov     [esp+8], ecx
4155
                mov     ebx, [edi+14h]
4156
                mov     ecx, [edi+18h]
4157
                mov     [esp+0Ch], edx
4158
                mov     edx, [edi+1Ch]
4159
                mov     edi, ecx
4160
                xor     edi, ebx
4161
                lea     eax, [eax+ebp+50A28BE6h]
4162
                and     edi, edx
4163
                mov     ebp, [esi+38h]
4164
                xor     edi, ecx
4165
                add     eax, edi
4166
                mov     edi, ebx
4167
                rol     eax, 8
4168
                xor     edi, eax
4169
                lea     edx, [edx+ebp+50A28BE6h]
4170
                and     edi, ecx
4171
                mov     ebp, [esi+1Ch]
4172
                xor     edi, ebx
4173
                add     edx, edi
4174
                mov     edi, eax
4175
                rol     edx, 9
4176
                xor     edi, edx
4177
                lea     ecx, [ecx+ebp+50A28BE6h]
4178
                and     edi, ebx
4179
                mov     ebp, [esi]
4180
                xor     edi, eax
4181
                add     ecx, edi
4182
                mov     edi, edx
4183
                rol     ecx, 9
4184
                xor     edi, ecx
4185
                lea     ebx, [ebx+ebp+50A28BE6h]
4186
                and     edi, eax
4187
                mov     ebp, [esi+24h]
4188
                xor     edi, edx
4189
                add     ebx, edi
4190
                mov     edi, ecx
4191
                rol     ebx, 0Bh
4192
                xor     edi, ebx
4193
                lea     eax, [eax+ebp+50A28BE6h]
4194
                and     edi, edx
4195
                mov     ebp, [esi+8]
4196
                xor     edi, ecx
4197
                add     eax, edi
4198
                mov     edi, ebx
4199
                rol     eax, 0Dh
4200
                xor     edi, eax
4201
                lea     edx, [edx+ebp+50A28BE6h]
4202
                and     edi, ecx
4203
                mov     ebp, [esi+2Ch]
4204
                xor     edi, ebx
4205
                add     edx, edi
4206
                mov     edi, eax
4207
                rol     edx, 0Fh
4208
                xor     edi, edx
4209
                lea     ecx, [ecx+ebp+50A28BE6h]
4210
                and     edi, ebx
4211
                mov     ebp, [esi+10h]
4212
                xor     edi, eax
4213
                add     ecx, edi
4214
                mov     edi, edx
4215
                rol     ecx, 0Fh
4216
                xor     edi, ecx
4217
                lea     ebx, [ebx+ebp+50A28BE6h]
4218
                and     edi, eax
4219
                mov     ebp, [esi+34h]
4220
                xor     edi, edx
4221
                add     ebx, edi
4222
                mov     edi, ecx
4223
                rol     ebx, 5
4224
                xor     edi, ebx
4225
                lea     eax, [eax+ebp+50A28BE6h]
4226
                and     edi, edx
4227
                mov     ebp, [esi+18h]
4228
                xor     edi, ecx
4229
                add     eax, edi
4230
                mov     edi, ebx
4231
                rol     eax, 7
4232
                xor     edi, eax
4233
                lea     edx, [edx+ebp+50A28BE6h]
4234
                and     edi, ecx
4235
                mov     ebp, [esi+3Ch]
4236
                xor     edi, ebx
4237
                add     edx, edi
4238
                mov     edi, eax
4239
                rol     edx, 7
4240
                xor     edi, edx
4241
                lea     ecx, [ecx+ebp+50A28BE6h]
4242
                and     edi, ebx
4243
                mov     ebp, [esi+20h]
4244
                xor     edi, eax
4245
                add     ecx, edi
4246
                mov     edi, edx
4247
                rol     ecx, 8
4248
                xor     edi, ecx
4249
                lea     ebx, [ebx+ebp+50A28BE6h]
4250
                and     edi, eax
4251
                mov     ebp, [esi+4]
4252
                xor     edi, edx
4253
                add     ebx, edi
4254
                mov     edi, ecx
4255
                rol     ebx, 0Bh
4256
                xor     edi, ebx
4257
                lea     eax, [eax+ebp+50A28BE6h]
4258
                and     edi, edx
4259
                mov     ebp, [esi+28h]
4260
                xor     edi, ecx
4261
                add     eax, edi
4262
                mov     edi, ebx
4263
                rol     eax, 0Eh
4264
                xor     edi, eax
4265
                lea     edx, [edx+ebp+50A28BE6h]
4266
                and     edi, ecx
4267
                mov     ebp, [esi+0Ch]
4268
                xor     edi, ebx
4269
                add     edx, edi
4270
                mov     edi, eax
4271
                rol     edx, 0Eh
4272
                xor     edi, edx
4273
                lea     ecx, [ecx+ebp+50A28BE6h]
4274
                and     edi, ebx
4275
                mov     ebp, [esi+30h]
4276
                xor     edi, eax
4277
                add     ecx, edi
4278
                mov     edi, edx
4279
                rol     ecx, 0Ch
4280
                xor     edi, ecx
4281
                lea     ebx, [ebx+ebp+50A28BE6h]
4282
                and     edi, eax
4283
                mov     ebp, [esi+1Ch]
4284
                xor     edi, edx
4285
                add     ebx, edi
4286
                rol     ebx, 6
4287
                mov     [esp+14h], ebx
4288
                mov     ebx, [esp+4]
4289
                mov     [esp+1Ch], edx
4290
                mov     [esp+18h], ecx
4291
                mov     edx, [esp]
4292
                mov     ecx, [esp+8]
4293
                mov     [esp+10h], edx
4294
                mov     edx, [esp+0Ch]
4295
                mov     edi, ecx
4296
                xor     edi, edx
4297
                lea     eax, [eax+ebp+5A827999h]
4298
                and     edi, ebx
4299
                mov     ebp, ebx
4300
                xor     edi, edx
4301
                xor     ebp, ecx
4302
                add     eax, edi
4303
                mov     edi, [esi+10h]
4304
                rol     eax, 7
4305
                and     ebp, eax
4306
                lea     edx, [edx+edi+5A827999h]
4307
                xor     ebp, ecx
4308
                mov     edi, eax
4309
                add     edx, ebp
4310
                mov     ebp, [esi+34h]
4311
                rol     edx, 6
4312
                xor     edi, ebx
4313
                lea     ecx, [ecx+ebp+5A827999h]
4314
                and     edi, edx
4315
                mov     ebp, edx
4316
                xor     edi, ebx
4317
                xor     ebp, eax
4318
                add     ecx, edi
4319
                mov     edi, [esi+4]
4320
                rol     ecx, 8
4321
                and     ebp, ecx
4322
                lea     ebx, [ebx+edi+5A827999h]
4323
                xor     ebp, eax
4324
                mov     edi, ecx
4325
                add     ebx, ebp
4326
                mov     ebp, [esi+28h]
4327
                rol     ebx, 0Dh
4328
                xor     edi, edx
4329
                lea     eax, [eax+ebp+5A827999h]
4330
                and     edi, ebx
4331
                mov     ebp, ebx
4332
                xor     edi, edx
4333
                xor     ebp, ecx
4334
                add     eax, edi
4335
                mov     edi, [esi+18h]
4336
                rol     eax, 0Bh
4337
                and     ebp, eax
4338
                lea     edx, [edx+edi+5A827999h]
4339
                xor     ebp, ecx
4340
                mov     edi, eax
4341
                add     edx, ebp
4342
                mov     ebp, [esi+3Ch]
4343
                rol     edx, 9
4344
                xor     edi, ebx
4345
                lea     ecx, [ecx+ebp+5A827999h]
4346
                and     edi, edx
4347
                mov     ebp, edx
4348
                xor     edi, ebx
4349
                xor     ebp, eax
4350
                add     ecx, edi
4351
                mov     edi, [esi+0Ch]
4352
                rol     ecx, 7
4353
                and     ebp, ecx
4354
                lea     ebx, [ebx+edi+5A827999h]
4355
                xor     ebp, eax
4356
                mov     edi, ecx
4357
                add     ebx, ebp
4358
                mov     ebp, [esi+30h]
4359
                rol     ebx, 0Fh
4360
                xor     edi, edx
4361
                lea     eax, [eax+ebp+5A827999h]
4362
                and     edi, ebx
4363
                mov     ebp, ebx
4364
                xor     edi, edx
4365
                xor     ebp, ecx
4366
                add     eax, edi
4367
                mov     edi, [esi]
4368
                rol     eax, 7
4369
                and     ebp, eax
4370
                lea     edx, [edx+edi+5A827999h]
4371
                xor     ebp, ecx
4372
                mov     edi, eax
4373
                add     edx, ebp
4374
                mov     ebp, [esi+24h]
4375
                rol     edx, 0Ch
4376
                xor     edi, ebx
4377
                lea     ecx, [ecx+ebp+5A827999h]
4378
                and     edi, edx
4379
                mov     ebp, edx
4380
                xor     edi, ebx
4381
                xor     ebp, eax
4382
                add     ecx, edi
4383
                mov     edi, [esi+14h]
4384
                rol     ecx, 0Fh
4385
                and     ebp, ecx
4386
                lea     ebx, [ebx+edi+5A827999h]
4387
                xor     ebp, eax
4388
                mov     edi, ecx
4389
                add     ebx, ebp
4390
                mov     ebp, [esi+8]
4391
                rol     ebx, 9
4392
                xor     edi, edx
4393
                lea     eax, [eax+ebp+5A827999h]
4394
                and     edi, ebx
4395
                mov     ebp, ebx
4396
                xor     edi, edx
4397
                xor     ebp, ecx
4398
                add     eax, edi
4399
                mov     edi, [esi+38h]
4400
                rol     eax, 0Bh
4401
                and     ebp, eax
4402
                lea     edx, [edx+edi+5A827999h]
4403
                xor     ebp, ecx
4404
                mov     edi, eax
4405
                add     edx, ebp
4406
                mov     ebp, [esi+2Ch]
4407
                rol     edx, 7
4408
                xor     edi, ebx
4409
                lea     ecx, [ecx+ebp+5A827999h]
4410
                and     edi, edx
4411
                mov     ebp, edx
4412
                xor     edi, ebx
4413
                xor     ebp, eax
4414
                add     ecx, edi
4415
                mov     edi, [esi+20h]
4416
                rol     ecx, 0Dh
4417
                and     ebp, ecx
4418
                lea     ebx, [ebx+edi+5A827999h]
4419
                xor     ebp, eax
4420
                add     ebx, ebp
4421
                mov     ebp, [esi+18h]
4422
                rol     ebx, 0Ch
4423
                mov     [esp], eax
4424
                mov     [esp+4], ebx
4425
                mov     eax, [esp+10h]
4426
                mov     ebx, [esp+14h]
4427
                mov     [esp+8], ecx
4428
                mov     ecx, [esp+18h]
4429
                mov     [esp+0Ch], edx
4430
                mov     edx, [esp+1Ch]
4431
                mov     edi, ecx
4432
                xor     edi, 0FFFFFFFFh
4433
                lea     eax, [eax+ebp+5C4DD124h]
4434
                or      edi, ebx
4435
                mov     ebp, [esi+2Ch]
4436
                xor     edi, edx
4437
                add     eax, edi
4438
                mov     edi, ebx
4439
                rol     eax, 9
4440
                xor     edi, 0FFFFFFFFh
4441
                lea     edx, [edx+ebp+5C4DD124h]
4442
                or      edi, eax
4443
                mov     ebp, [esi+0Ch]
4444
                xor     edi, ecx
4445
                add     edx, edi
4446
                mov     edi, eax
4447
                rol     edx, 0Dh
4448
                xor     edi, 0FFFFFFFFh
4449
                lea     ecx, [ecx+ebp+5C4DD124h]
4450
                or      edi, edx
4451
                mov     ebp, [esi+1Ch]
4452
                xor     edi, ebx
4453
                add     ecx, edi
4454
                mov     edi, edx
4455
                rol     ecx, 0Fh
4456
                xor     edi, 0FFFFFFFFh
4457
                lea     ebx, [ebx+ebp+5C4DD124h]
4458
                or      edi, ecx
4459
                mov     ebp, [esi]
4460
                xor     edi, eax
4461
                add     ebx, edi
4462
                mov     edi, ecx
4463
                rol     ebx, 7
4464
                xor     edi, 0FFFFFFFFh
4465
                lea     eax, [eax+ebp+5C4DD124h]
4466
                or      edi, ebx
4467
                mov     ebp, [esi+34h]
4468
                xor     edi, edx
4469
                add     eax, edi
4470
                mov     edi, ebx
4471
                rol     eax, 0Ch
4472
                xor     edi, 0FFFFFFFFh
4473
                lea     edx, [edx+ebp+5C4DD124h]
4474
                or      edi, eax
4475
                mov     ebp, [esi+14h]
4476
                xor     edi, ecx
4477
                add     edx, edi
4478
                mov     edi, eax
4479
                rol     edx, 8
4480
                xor     edi, 0FFFFFFFFh
4481
                lea     ecx, [ecx+ebp+5C4DD124h]
4482
                or      edi, edx
4483
                mov     ebp, [esi+28h]
4484
                xor     edi, ebx
4485
                add     ecx, edi
4486
                mov     edi, edx
4487
                rol     ecx, 9
4488
                xor     edi, 0FFFFFFFFh
4489
                lea     ebx, [ebx+ebp+5C4DD124h]
4490
                or      edi, ecx
4491
                mov     ebp, [esi+38h]
4492
                xor     edi, eax
4493
                add     ebx, edi
4494
                mov     edi, ecx
4495
                rol     ebx, 0Bh
4496
                xor     edi, 0FFFFFFFFh
4497
                lea     eax, [eax+ebp+5C4DD124h]
4498
                or      edi, ebx
4499
                mov     ebp, [esi+3Ch]
4500
                xor     edi, edx
4501
                add     eax, edi
4502
                mov     edi, ebx
4503
                rol     eax, 7
4504
                xor     edi, 0FFFFFFFFh
4505
                lea     edx, [edx+ebp+5C4DD124h]
4506
                or      edi, eax
4507
                mov     ebp, [esi+20h]
4508
                xor     edi, ecx
4509
                add     edx, edi
4510
                mov     edi, eax
4511
                rol     edx, 7
4512
                xor     edi, 0FFFFFFFFh
4513
                lea     ecx, [ecx+ebp+5C4DD124h]
4514
                or      edi, edx
4515
                mov     ebp, [esi+30h]
4516
                xor     edi, ebx
4517
                add     ecx, edi
4518
                mov     edi, edx
4519
                rol     ecx, 0Ch
4520
                xor     edi, 0FFFFFFFFh
4521
                lea     ebx, [ebx+ebp+5C4DD124h]
4522
                or      edi, ecx
4523
                mov     ebp, [esi+10h]
4524
                xor     edi, eax
4525
                add     ebx, edi
4526
                mov     edi, ecx
4527
                rol     ebx, 7
4528
                xor     edi, 0FFFFFFFFh
4529
                lea     eax, [eax+ebp+5C4DD124h]
4530
                or      edi, ebx
4531
                mov     ebp, [esi+24h]
4532
                xor     edi, edx
4533
                add     eax, edi
4534
                mov     edi, ebx
4535
                rol     eax, 6
4536
                xor     edi, 0FFFFFFFFh
4537
                lea     edx, [edx+ebp+5C4DD124h]
4538
                or      edi, eax
4539
                mov     ebp, [esi+4]
4540
                xor     edi, ecx
4541
                add     edx, edi
4542
                mov     edi, eax
4543
                rol     edx, 0Fh
4544
                xor     edi, 0FFFFFFFFh
4545
                lea     ecx, [ecx+ebp+5C4DD124h]
4546
                or      edi, edx
4547
                mov     ebp, [esi+8]
4548
                xor     edi, ebx
4549
                add     ecx, edi
4550
                mov     edi, edx
4551
                rol     ecx, 0Dh
4552
                xor     edi, 0FFFFFFFFh
4553
                lea     ebx, [ebx+ebp+5C4DD124h]
4554
                or      edi, ecx
4555
                mov     ebp, [esi+0Ch]
4556
                xor     edi, eax
4557
                add     ebx, edi
4558
                rol     ebx, 0Bh
4559
                mov     [esp+10h], eax
4560
                mov     [esp+18h], ecx
4561
                mov     eax, [esp]
4562
                mov     ecx, [esp+8]
4563
                mov     [esp+1Ch], edx
4564
                mov     edx, [esp+4]
4565
                mov     [esp+14h], edx
4566
                mov     edx, [esp+0Ch]
4567
                mov     edi, ecx
4568
                xor     edi, 0FFFFFFFFh
4569
                lea     eax, [eax+ebp+6ED9EBA1h]
4570
                or      edi, ebx
4571
                mov     ebp, [esi+28h]
4572
                xor     edi, edx
4573
                add     eax, edi
4574
                mov     edi, ebx
4575
                rol     eax, 0Bh
4576
                xor     edi, 0FFFFFFFFh
4577
                lea     edx, [edx+ebp+6ED9EBA1h]
4578
                or      edi, eax
4579
                mov     ebp, [esi+38h]
4580
                xor     edi, ecx
4581
                add     edx, edi
4582
                mov     edi, eax
4583
                rol     edx, 0Dh
4584
                xor     edi, 0FFFFFFFFh
4585
                lea     ecx, [ecx+ebp+6ED9EBA1h]
4586
                or      edi, edx
4587
                mov     ebp, [esi+10h]
4588
                xor     edi, ebx
4589
                add     ecx, edi
4590
                mov     edi, edx
4591
                rol     ecx, 6
4592
                xor     edi, 0FFFFFFFFh
4593
                lea     ebx, [ebx+ebp+6ED9EBA1h]
4594
                or      edi, ecx
4595
                mov     ebp, [esi+24h]
4596
                xor     edi, eax
4597
                add     ebx, edi
4598
                mov     edi, ecx
4599
                rol     ebx, 7
4600
                xor     edi, 0FFFFFFFFh
4601
                lea     eax, [eax+ebp+6ED9EBA1h]
4602
                or      edi, ebx
4603
                mov     ebp, [esi+3Ch]
4604
                xor     edi, edx
4605
                add     eax, edi
4606
                mov     edi, ebx
4607
                rol     eax, 0Eh
4608
                xor     edi, 0FFFFFFFFh
4609
                lea     edx, [edx+ebp+6ED9EBA1h]
4610
                or      edi, eax
4611
                mov     ebp, [esi+20h]
4612
                xor     edi, ecx
4613
                add     edx, edi
4614
                mov     edi, eax
4615
                rol     edx, 9
4616
                xor     edi, 0FFFFFFFFh
4617
                lea     ecx, [ecx+ebp+6ED9EBA1h]
4618
                or      edi, edx
4619
                mov     ebp, [esi+4]
4620
                xor     edi, ebx
4621
                add     ecx, edi
4622
                mov     edi, edx
4623
                rol     ecx, 0Dh
4624
                xor     edi, 0FFFFFFFFh
4625
                lea     ebx, [ebx+ebp+6ED9EBA1h]
4626
                or      edi, ecx
4627
                mov     ebp, [esi+8]
4628
                xor     edi, eax
4629
                add     ebx, edi
4630
                mov     edi, ecx
4631
                rol     ebx, 0Fh
4632
                xor     edi, 0FFFFFFFFh
4633
                lea     eax, [eax+ebp+6ED9EBA1h]
4634
                or      edi, ebx
4635
                mov     ebp, [esi+1Ch]
4636
                xor     edi, edx
4637
                add     eax, edi
4638
                mov     edi, ebx
4639
                rol     eax, 0Eh
4640
                xor     edi, 0FFFFFFFFh
4641
                lea     edx, [edx+ebp+6ED9EBA1h]
4642
                or      edi, eax
4643
                mov     ebp, [esi]
4644
                xor     edi, ecx
4645
                add     edx, edi
4646
                mov     edi, eax
4647
                rol     edx, 8
4648
                xor     edi, 0FFFFFFFFh
4649
                lea     ecx, [ecx+ebp+6ED9EBA1h]
4650
                or      edi, edx
4651
                mov     ebp, [esi+18h]
4652
                xor     edi, ebx
4653
                add     ecx, edi
4654
                mov     edi, edx
4655
                rol     ecx, 0Dh
4656
                xor     edi, 0FFFFFFFFh
4657
                lea     ebx, [ebx+ebp+6ED9EBA1h]
4658
                or      edi, ecx
4659
                mov     ebp, [esi+34h]
4660
                xor     edi, eax
4661
                add     ebx, edi
4662
                mov     edi, ecx
4663
                rol     ebx, 6
4664
                xor     edi, 0FFFFFFFFh
4665
                lea     eax, [eax+ebp+6ED9EBA1h]
4666
                or      edi, ebx
4667
                mov     ebp, [esi+2Ch]
4668
                xor     edi, edx
4669
                add     eax, edi
4670
                mov     edi, ebx
4671
                rol     eax, 5
4672
                xor     edi, 0FFFFFFFFh
4673
                lea     edx, [edx+ebp+6ED9EBA1h]
4674
                or      edi, eax
4675
                mov     ebp, [esi+14h]
4676
                xor     edi, ecx
4677
                add     edx, edi
4678
                mov     edi, eax
4679
                rol     edx, 0Ch
4680
                xor     edi, 0FFFFFFFFh
4681
                lea     ecx, [ecx+ebp+6ED9EBA1h]
4682
                or      edi, edx
4683
                mov     ebp, [esi+30h]
4684
                xor     edi, ebx
4685
                add     ecx, edi
4686
                mov     edi, edx
4687
                rol     ecx, 7
4688
                xor     edi, 0FFFFFFFFh
4689
                lea     ebx, [ebx+ebp+6ED9EBA1h]
4690
                or      edi, ecx
4691
                mov     ebp, [esi+3Ch]
4692
                xor     edi, eax
4693
                add     ebx, edi
4694
                rol     ebx, 5
4695
                mov     [esp], eax
4696
                mov     [esp+4], ebx
4697
                mov     eax, [esp+10h]
4698
                mov     ebx, [esp+14h]
4699
                mov     [esp+8], ecx
4700
                mov     ecx, [esp+18h]
4701
                mov     [esp+0Ch], edx
4702
                mov     edx, [esp+1Ch]
4703
                mov     edi, ecx
4704
                xor     edi, edx
4705
                lea     eax, [eax+ebp+6D703EF3h]
4706
                and     edi, ebx
4707
                mov     ebp, ebx
4708
                xor     edi, edx
4709
                xor     ebp, ecx
4710
                add     eax, edi
4711
                mov     edi, [esi+14h]
4712
                rol     eax, 9
4713
                and     ebp, eax
4714
                lea     edx, [edx+edi+6D703EF3h]
4715
                xor     ebp, ecx
4716
                mov     edi, eax
4717
                add     edx, ebp
4718
                mov     ebp, [esi+4]
4719
                rol     edx, 7
4720
                xor     edi, ebx
4721
                lea     ecx, [ecx+ebp+6D703EF3h]
4722
                and     edi, edx
4723
                mov     ebp, edx
4724
                xor     edi, ebx
4725
                xor     ebp, eax
4726
                add     ecx, edi
4727
                mov     edi, [esi+0Ch]
4728
                rol     ecx, 0Fh
4729
                and     ebp, ecx
4730
                lea     ebx, [ebx+edi+6D703EF3h]
4731
                xor     ebp, eax
4732
                mov     edi, ecx
4733
                add     ebx, ebp
4734
                mov     ebp, [esi+1Ch]
4735
                rol     ebx, 0Bh
4736
                xor     edi, edx
4737
                lea     eax, [eax+ebp+6D703EF3h]
4738
                and     edi, ebx
4739
                mov     ebp, ebx
4740
                xor     edi, edx
4741
                xor     ebp, ecx
4742
                add     eax, edi
4743
                mov     edi, [esi+38h]
4744
                rol     eax, 8
4745
                and     ebp, eax
4746
                lea     edx, [edx+edi+6D703EF3h]
4747
                xor     ebp, ecx
4748
                mov     edi, eax
4749
                add     edx, ebp
4750
                mov     ebp, [esi+18h]
4751
                rol     edx, 6
4752
                xor     edi, ebx
4753
                lea     ecx, [ecx+ebp+6D703EF3h]
4754
                and     edi, edx
4755
                mov     ebp, edx
4756
                xor     edi, ebx
4757
                xor     ebp, eax
4758
                add     ecx, edi
4759
                mov     edi, [esi+24h]
4760
                rol     ecx, 6
4761
                and     ebp, ecx
4762
                lea     ebx, [ebx+edi+6D703EF3h]
4763
                xor     ebp, eax
4764
                mov     edi, ecx
4765
                add     ebx, ebp
4766
                mov     ebp, [esi+2Ch]
4767
                rol     ebx, 0Eh
4768
                xor     edi, edx
4769
                lea     eax, [eax+ebp+6D703EF3h]
4770
                and     edi, ebx
4771
                mov     ebp, ebx
4772
                xor     edi, edx
4773
                xor     ebp, ecx
4774
                add     eax, edi
4775
                mov     edi, [esi+20h]
4776
                rol     eax, 0Ch
4777
                and     ebp, eax
4778
                lea     edx, [edx+edi+6D703EF3h]
4779
                xor     ebp, ecx
4780
                mov     edi, eax
4781
                add     edx, ebp
4782
                mov     ebp, [esi+30h]
4783
                rol     edx, 0Dh
4784
                xor     edi, ebx
4785
                lea     ecx, [ecx+ebp+6D703EF3h]
4786
                and     edi, edx
4787
                mov     ebp, edx
4788
                xor     edi, ebx
4789
                xor     ebp, eax
4790
                add     ecx, edi
4791
                mov     edi, [esi+8]
4792
                rol     ecx, 5
4793
                and     ebp, ecx
4794
                lea     ebx, [ebx+edi+6D703EF3h]
4795
                xor     ebp, eax
4796
                mov     edi, ecx
4797
                add     ebx, ebp
4798
                mov     ebp, [esi+28h]
4799
                rol     ebx, 0Eh
4800
                xor     edi, edx
4801
                lea     eax, [eax+ebp+6D703EF3h]
4802
                and     edi, ebx
4803
                mov     ebp, ebx
4804
                xor     edi, edx
4805
                xor     ebp, ecx
4806
                add     eax, edi
4807
                mov     edi, [esi]
4808
                rol     eax, 0Dh
4809
                and     ebp, eax
4810
                lea     edx, [edx+edi+6D703EF3h]
4811
                xor     ebp, ecx
4812
                mov     edi, eax
4813
                add     edx, ebp
4814
                mov     ebp, [esi+10h]
4815
                rol     edx, 0Dh
4816
                xor     edi, ebx
4817
                lea     ecx, [ecx+ebp+6D703EF3h]
4818
                and     edi, edx
4819
                mov     ebp, edx
4820
                xor     edi, ebx
4821
                xor     ebp, eax
4822
                add     ecx, edi
4823
                mov     edi, [esi+34h]
4824
                rol     ecx, 7
4825
                and     ebp, ecx
4826
                lea     ebx, [ebx+edi+6D703EF3h]
4827
                xor     ebp, eax
4828
                add     ebx, ebp
4829
                mov     ebp, [esi+4]
4830
                rol     ebx, 5
4831
                mov     [esp+10h], eax
4832
                mov     [esp+14h], ebx
4833
                mov     eax, [esp]
4834
                mov     ebx, [esp+4]
4835
                mov     [esp+1Ch], edx
4836
                mov     edx, [esp+8]
4837
                mov     [esp+18h], edx
4838
                mov     edx, [esp+0Ch]
4839
                mov     edi, ecx
4840
                xor     edi, ebx
4841
                lea     eax, [eax+ebp-70E44324h]
4842
                and     edi, edx
4843
                mov     ebp, [esi+24h]
4844
                xor     edi, ecx
4845
                add     eax, edi
4846
                mov     edi, ebx
4847
                rol     eax, 0Bh
4848
                xor     edi, eax
4849
                lea     edx, [edx+ebp-70E44324h]
4850
                and     edi, ecx
4851
                mov     ebp, [esi+2Ch]
4852
                xor     edi, ebx
4853
                add     edx, edi
4854
                mov     edi, eax
4855
                rol     edx, 0Ch
4856
                xor     edi, edx
4857
                lea     ecx, [ecx+ebp-70E44324h]
4858
                and     edi, ebx
4859
                mov     ebp, [esi+28h]
4860
                xor     edi, eax
4861
                add     ecx, edi
4862
                mov     edi, edx
4863
                rol     ecx, 0Eh
4864
                xor     edi, ecx
4865
                lea     ebx, [ebx+ebp-70E44324h]
4866
                and     edi, eax
4867
                mov     ebp, [esi]
4868
                xor     edi, edx
4869
                add     ebx, edi
4870
                mov     edi, ecx
4871
                rol     ebx, 0Fh
4872
                xor     edi, ebx
4873
                lea     eax, [eax+ebp-70E44324h]
4874
                and     edi, edx
4875
                mov     ebp, [esi+20h]
4876
                xor     edi, ecx
4877
                add     eax, edi
4878
                mov     edi, ebx
4879
                rol     eax, 0Eh
4880
                xor     edi, eax
4881
                lea     edx, [edx+ebp-70E44324h]
4882
                and     edi, ecx
4883
                mov     ebp, [esi+30h]
4884
                xor     edi, ebx
4885
                add     edx, edi
4886
                mov     edi, eax
4887
                rol     edx, 0Fh
4888
                xor     edi, edx
4889
                lea     ecx, [ecx+ebp-70E44324h]
4890
                and     edi, ebx
4891
                mov     ebp, [esi+10h]
4892
                xor     edi, eax
4893
                add     ecx, edi
4894
                mov     edi, edx
4895
                rol     ecx, 9
4896
                xor     edi, ecx
4897
                lea     ebx, [ebx+ebp-70E44324h]
4898
                and     edi, eax
4899
                mov     ebp, [esi+34h]
4900
                xor     edi, edx
4901
                add     ebx, edi
4902
                mov     edi, ecx
4903
                rol     ebx, 8
4904
                xor     edi, ebx
4905
                lea     eax, [eax+ebp-70E44324h]
4906
                and     edi, edx
4907
                mov     ebp, [esi+0Ch]
4908
                xor     edi, ecx
4909
                add     eax, edi
4910
                mov     edi, ebx
4911
                rol     eax, 9
4912
                xor     edi, eax
4913
                lea     edx, [edx+ebp-70E44324h]
4914
                and     edi, ecx
4915
                mov     ebp, [esi+1Ch]
4916
                xor     edi, ebx
4917
                add     edx, edi
4918
                mov     edi, eax
4919
                rol     edx, 0Eh
4920
                xor     edi, edx
4921
                lea     ecx, [ecx+ebp-70E44324h]
4922
                and     edi, ebx
4923
                mov     ebp, [esi+3Ch]
4924
                xor     edi, eax
4925
                add     ecx, edi
4926
                mov     edi, edx
4927
                rol     ecx, 5
4928
                xor     edi, ecx
4929
                lea     ebx, [ebx+ebp-70E44324h]
4930
                and     edi, eax
4931
                mov     ebp, [esi+38h]
4932
                xor     edi, edx
4933
                add     ebx, edi
4934
                mov     edi, ecx
4935
                rol     ebx, 6
4936
                xor     edi, ebx
4937
                lea     eax, [eax+ebp-70E44324h]
4938
                and     edi, edx
4939
                mov     ebp, [esi+14h]
4940
                xor     edi, ecx
4941
                add     eax, edi
4942
                mov     edi, ebx
4943
                rol     eax, 8
4944
                xor     edi, eax
4945
                lea     edx, [edx+ebp-70E44324h]
4946
                and     edi, ecx
4947
                mov     ebp, [esi+18h]
4948
                xor     edi, ebx
4949
                add     edx, edi
4950
                mov     edi, eax
4951
                rol     edx, 6
4952
                xor     edi, edx
4953
                lea     ecx, [ecx+ebp-70E44324h]
4954
                and     edi, ebx
4955
                mov     ebp, [esi+8]
4956
                xor     edi, eax
4957
                add     ecx, edi
4958
                mov     edi, edx
4959
                rol     ecx, 5
4960
                xor     edi, ecx
4961
                lea     ebx, [ebx+ebp-70E44324h]
4962
                and     edi, eax
4963
                mov     ebp, [esi+20h]
4964
                xor     edi, edx
4965
                add     ebx, edi
4966
                rol     ebx, 0Ch
4967
                mov     [esp], eax
4968
                mov     [esp+4], ebx
4969
                mov     eax, [esp+10h]
4970
                mov     ebx, [esp+14h]
4971
                mov     [esp+8], ecx
4972
                mov     ecx, [esp+18h]
4973
                mov     edi, ecx
4974
                mov     [esp+0Ch], edx
4975
                mov     edx, [esp+1Ch]
4976
                xor     edi, edx
4977
                mov     ebp, [esi+20h]
4978
                xor     edi, ebx
4979
                add     eax, ebp
4980
                add     eax, edi
4981
                mov     edi, ebx
4982
                rol     eax, 0Fh
4983
                xor     edi, ecx
4984
                mov     ebp, [esi+18h]
4985
                xor     edi, eax
4986
                add     edx, ebp
4987
                add     edx, edi
4988
                mov     edi, eax
4989
                rol     edx, 5
4990
                xor     edi, ebx
4991
                mov     ebp, [esi+10h]
4992
                xor     edi, edx
4993
                add     ecx, ebp
4994
                add     ecx, edi
4995
                mov     edi, edx
4996
                rol     ecx, 8
4997
                xor     edi, eax
4998
                mov     ebp, [esi+4]
4999
                xor     edi, ecx
5000
                add     ebx, ebp
5001
                add     ebx, edi
5002
                mov     edi, ecx
5003
                rol     ebx, 0Bh
5004
                xor     edi, edx
5005
                mov     ebp, [esi+0Ch]
5006
                xor     edi, ebx
5007
                add     eax, ebp
5008
                add     eax, edi
5009
                mov     edi, ebx
5010
                rol     eax, 0Eh
5011
                xor     edi, ecx
5012
                mov     ebp, [esi+2Ch]
5013
                xor     edi, eax
5014
                add     edx, ebp
5015
                add     edx, edi
5016
                mov     edi, eax
5017
                rol     edx, 0Eh
5018
                xor     edi, ebx
5019
                mov     ebp, [esi+3Ch]
5020
                xor     edi, edx
5021
                add     ecx, ebp
5022
                add     ecx, edi
5023
                mov     edi, edx
5024
                rol     ecx, 6
5025
                xor     edi, eax
5026
                mov     ebp, [esi]
5027
                xor     edi, ecx
5028
                add     ebx, ebp
5029
                add     ebx, edi
5030
                mov     edi, ecx
5031
                rol     ebx, 0Eh
5032
                xor     edi, edx
5033
                mov     ebp, [esi+14h]
5034
                xor     edi, ebx
5035
                add     eax, ebp
5036
                add     eax, edi
5037
                mov     edi, ebx
5038
                rol     eax, 6
5039
                xor     edi, ecx
5040
                mov     ebp, [esi+30h]
5041
                xor     edi, eax
5042
                add     edx, ebp
5043
                add     edx, edi
5044
                mov     edi, eax
5045
                rol     edx, 9
5046
                xor     edi, ebx
5047
                mov     ebp, [esi+8]
5048
                xor     edi, edx
5049
                add     ecx, ebp
5050
                add     ecx, edi
5051
                mov     edi, edx
5052
                rol     ecx, 0Ch
5053
                xor     edi, eax
5054
                mov     ebp, [esi+34h]
5055
                xor     edi, ecx
5056
                add     ebx, ebp
5057
                add     ebx, edi
5058
                mov     edi, ecx
5059
                rol     ebx, 9
5060
                xor     edi, edx
5061
                mov     ebp, [esi+24h]
5062
                xor     edi, ebx
5063
                add     eax, ebp
5064
                add     eax, edi
5065
                mov     edi, ebx
5066
                rol     eax, 0Ch
5067
                xor     edi, ecx
5068
                mov     ebp, [esi+1Ch]
5069
                xor     edi, eax
5070
                add     edx, ebp
5071
                add     edx, edi
5072
                mov     edi, eax
5073
                rol     edx, 5
5074
                xor     edi, ebx
5075
                mov     ebp, [esi+28h]
5076
                xor     edi, edx
5077
                add     ecx, ebp
5078
                add     ecx, edi
5079
                mov     edi, edx
5080
                rol     ecx, 0Fh
5081
                xor     edi, eax
5082
                mov     ebp, [esi+38h]
5083
                xor     edi, ecx
5084
                add     ebx, ebp
5085
                add     ebx, edi
5086
                mov     edi, ecx
5087
                rol     ebx, 8
5088
                mov     edi, [esp+20h]
5089
                add     [edi+0Ch], edx
5090
                add     [edi+10h], eax
5091
                add     [edi+14h], ebx
5092
                mov     eax, [esp]
5093
                mov     ebx, [esp+4]
5094
                add     [edi+18h], ecx
5095
                mov     ecx, [esp+8]
5096
                mov     edx, [esp+0Ch]
5097
                add     [edi], eax
5098
                add     esp, 24h
5099
                add     [edi+4], ebx
5100
                add     [edi+8], ecx
5101
                add     [edi+1Ch], edx
5102
 
5103
 
5104
                pop     ebp
5105
                pop     edi
5106
                pop     esi
5107
                pop     ebx
5108
end;
5109
{$ENDIF}
5110
 
5111
{$IFDEF THash_RipeMD320_asm}
5112
procedure THash_RipeMD320.DoTransform(Buffer: PLongArray);
5113
asm
5114
                push    ebx
5115
                push    esi
5116
                push    edi
5117
                lea     edi, [eax].THash_RipeMD320.FDigest
5118
                mov     esi, edx
5119
                push    ebp
5120
                mov     eax, [edi]
5121
                mov     ebx, [edi+4]
5122
                push    edi
5123
                mov     ecx, [edi+8]
5124
                mov     edx, [edi+0Ch]
5125
                add     esp, 0FFFFFFD8h
5126
                mov     ebp, [edi+10h]
5127
                mov     edi, edx
5128
                xor     edi, ecx
5129
                xor     edi, ebx
5130
                add     eax, [esi]
5131
                rol     ecx, 0Ah
5132
                add     eax, edi
5133
                mov     edi, ecx
5134
                rol     eax, 0Bh
5135
                add     eax, ebp
5136
                xor     edi, ebx
5137
                xor     edi, eax
5138
                add     ebp, [esi+4]
5139
                rol     ebx, 0Ah
5140
                add     ebp, edi
5141
                mov     edi, ebx
5142
                rol     ebp, 0Eh
5143
                add     ebp, edx
5144
                xor     edi, eax
5145
                xor     edi, ebp
5146
                add     edx, [esi+8]
5147
                rol     eax, 0Ah
5148
                add     edx, edi
5149
                mov     edi, eax
5150
                rol     edx, 0Fh
5151
                add     edx, ecx
5152
                xor     edi, ebp
5153
                xor     edi, edx
5154
                add     ecx, [esi+0Ch]
5155
                rol     ebp, 0Ah
5156
                add     ecx, edi
5157
                mov     edi, ebp
5158
                rol     ecx, 0Ch
5159
                add     ecx, ebx
5160
                xor     edi, edx
5161
                xor     edi, ecx
5162
                add     ebx, [esi+10h]
5163
                rol     edx, 0Ah
5164
                add     ebx, edi
5165
                mov     edi, edx
5166
                rol     ebx, 5
5167
                add     ebx, eax
5168
                xor     edi, ecx
5169
                xor     edi, ebx
5170
                add     eax, [esi+14h]
5171
                rol     ecx, 0Ah
5172
                add     eax, edi
5173
                mov     edi, ecx
5174
                rol     eax, 8
5175
                add     eax, ebp
5176
                xor     edi, ebx
5177
                xor     edi, eax
5178
                add     ebp, [esi+18h]
5179
                rol     ebx, 0Ah
5180
                add     ebp, edi
5181
                mov     edi, ebx
5182
                rol     ebp, 7
5183
                add     ebp, edx
5184
                xor     edi, eax
5185
                xor     edi, ebp
5186
                add     edx, [esi+1Ch]
5187
                rol     eax, 0Ah
5188
                add     edx, edi
5189
                mov     edi, eax
5190
                rol     edx, 9
5191
                add     edx, ecx
5192
                xor     edi, ebp
5193
                xor     edi, edx
5194
                add     ecx, [esi+20h]
5195
                rol     ebp, 0Ah
5196
                add     ecx, edi
5197
                mov     edi, ebp
5198
                rol     ecx, 0Bh
5199
                add     ecx, ebx
5200
                xor     edi, edx
5201
                xor     edi, ecx
5202
                add     ebx, [esi+24h]
5203
                rol     edx, 0Ah
5204
                add     ebx, edi
5205
                mov     edi, edx
5206
                rol     ebx, 0Dh
5207
                add     ebx, eax
5208
                xor     edi, ecx
5209
                xor     edi, ebx
5210
                add     eax, [esi+28h]
5211
                rol     ecx, 0Ah
5212
                add     eax, edi
5213
                mov     edi, ecx
5214
                rol     eax, 0Eh
5215
                add     eax, ebp
5216
                xor     edi, ebx
5217
                xor     edi, eax
5218
                add     ebp, [esi+2Ch]
5219
                rol     ebx, 0Ah
5220
                add     ebp, edi
5221
                mov     edi, ebx
5222
                rol     ebp, 0Fh
5223
                add     ebp, edx
5224
                xor     edi, eax
5225
                xor     edi, ebp
5226
                add     edx, [esi+30h]
5227
                rol     eax, 0Ah
5228
                add     edx, edi
5229
                mov     edi, eax
5230
                rol     edx, 6
5231
                add     edx, ecx
5232
                xor     edi, ebp
5233
                xor     edi, edx
5234
                add     ecx, [esi+34h]
5235
                rol     ebp, 0Ah
5236
                add     ecx, edi
5237
                mov     edi, ebp
5238
                rol     ecx, 7
5239
                add     ecx, ebx
5240
                xor     edi, edx
5241
                xor     edi, ecx
5242
                add     ebx, [esi+38h]
5243
                rol     edx, 0Ah
5244
                add     ebx, edi
5245
                mov     edi, edx
5246
                rol     ebx, 9
5247
                add     ebx, eax
5248
                xor     edi, ecx
5249
                xor     edi, ebx
5250
                add     eax, [esi+3Ch]
5251
                rol     ecx, 0Ah
5252
                add     eax, edi
5253
                rol     eax, 8
5254
                add     eax, ebp
5255
                mov     edi, [esp+28h]
5256
                mov     [esp], eax
5257
                mov     [esp+4], ebx
5258
                mov     eax, [edi+14h]
5259
                mov     ebx, [edi+18h]
5260
                mov     [esp+8], ecx
5261
                mov     [esp+0Ch], edx
5262
                mov     ecx, [edi+1Ch]
5263
                mov     edx, [edi+20h]
5264
                mov     [esp+10h], ebp
5265
                mov     ebp, [edi+24h]
5266
                mov     edi, edx
5267
                xor     edi, 0FFFFFFFFh
5268
                or      edi, ecx
5269
                add     eax, [esi+14h]
5270
                xor     edi, ebx
5271
                rol     ecx, 0Ah
5272
                lea     eax, [eax+edi+50A28BE6h]
5273
                mov     edi, ecx
5274
                rol     eax, 8
5275
                add     eax, ebp
5276
                xor     edi, 0FFFFFFFFh
5277
                or      edi, ebx
5278
                add     ebp, [esi+38h]
5279
                xor     edi, eax
5280
                rol     ebx, 0Ah
5281
                lea     ebp, [ebp+edi+50A28BE6h]
5282
                mov     edi, ebx
5283
                rol     ebp, 9
5284
                add     ebp, edx
5285
                xor     edi, 0FFFFFFFFh
5286
                or      edi, eax
5287
                add     edx, [esi+1Ch]
5288
                xor     edi, ebp
5289
                rol     eax, 0Ah
5290
                lea     edx, [edx+edi+50A28BE6h]
5291
                mov     edi, eax
5292
                rol     edx, 9
5293
                add     edx, ecx
5294
                xor     edi, 0FFFFFFFFh
5295
                or      edi, ebp
5296
                add     ecx, [esi]
5297
                xor     edi, edx
5298
                rol     ebp, 0Ah
5299
                lea     ecx, [ecx+edi+50A28BE6h]
5300
                mov     edi, ebp
5301
                rol     ecx, 0Bh
5302
                add     ecx, ebx
5303
                xor     edi, 0FFFFFFFFh
5304
                or      edi, edx
5305
                add     ebx, [esi+24h]
5306
                xor     edi, ecx
5307
                rol     edx, 0Ah
5308
                lea     ebx, [ebx+edi+50A28BE6h]
5309
                mov     edi, edx
5310
                rol     ebx, 0Dh
5311
                add     ebx, eax
5312
                xor     edi, 0FFFFFFFFh
5313
                or      edi, ecx
5314
                add     eax, [esi+8]
5315
                xor     edi, ebx
5316
                rol     ecx, 0Ah
5317
                lea     eax, [eax+edi+50A28BE6h]
5318
                mov     edi, ecx
5319
                rol     eax, 0Fh
5320
                add     eax, ebp
5321
                xor     edi, 0FFFFFFFFh
5322
                or      edi, ebx
5323
                add     ebp, [esi+2Ch]
5324
                xor     edi, eax
5325
                rol     ebx, 0Ah
5326
                lea     ebp, [ebp+edi+50A28BE6h]
5327
                mov     edi, ebx
5328
                rol     ebp, 0Fh
5329
                add     ebp, edx
5330
                xor     edi, 0FFFFFFFFh
5331
                or      edi, eax
5332
                add     edx, [esi+10h]
5333
                xor     edi, ebp
5334
                rol     eax, 0Ah
5335
                lea     edx, [edx+edi+50A28BE6h]
5336
                mov     edi, eax
5337
                rol     edx, 5
5338
                add     edx, ecx
5339
                xor     edi, 0FFFFFFFFh
5340
                or      edi, ebp
5341
                add     ecx, [esi+34h]
5342
                xor     edi, edx
5343
                rol     ebp, 0Ah
5344
                lea     ecx, [ecx+edi+50A28BE6h]
5345
                mov     edi, ebp
5346
                rol     ecx, 7
5347
                add     ecx, ebx
5348
                xor     edi, 0FFFFFFFFh
5349
                or      edi, edx
5350
                add     ebx, [esi+18h]
5351
                xor     edi, ecx
5352
                rol     edx, 0Ah
5353
                lea     ebx, [ebx+edi+50A28BE6h]
5354
                mov     edi, edx
5355
                rol     ebx, 7
5356
                add     ebx, eax
5357
                xor     edi, 0FFFFFFFFh
5358
                or      edi, ecx
5359
                add     eax, [esi+3Ch]
5360
                xor     edi, ebx
5361
                rol     ecx, 0Ah
5362
                lea     eax, [eax+edi+50A28BE6h]
5363
                mov     edi, ecx
5364
                rol     eax, 8
5365
                add     eax, ebp
5366
                xor     edi, 0FFFFFFFFh
5367
                or      edi, ebx
5368
                add     ebp, [esi+20h]
5369
                xor     edi, eax
5370
                rol     ebx, 0Ah
5371
                lea     ebp, [ebp+edi+50A28BE6h]
5372
                mov     edi, ebx
5373
                rol     ebp, 0Bh
5374
                add     ebp, edx
5375
                xor     edi, 0FFFFFFFFh
5376
                or      edi, eax
5377
                add     edx, [esi+4]
5378
                xor     edi, ebp
5379
                rol     eax, 0Ah
5380
                lea     edx, [edx+edi+50A28BE6h]
5381
                mov     edi, eax
5382
                rol     edx, 0Eh
5383
                add     edx, ecx
5384
                xor     edi, 0FFFFFFFFh
5385
                or      edi, ebp
5386
                add     ecx, [esi+28h]
5387
                xor     edi, edx
5388
                rol     ebp, 0Ah
5389
                lea     ecx, [ecx+edi+50A28BE6h]
5390
                mov     edi, ebp
5391
                rol     ecx, 0Eh
5392
                add     ecx, ebx
5393
                xor     edi, 0FFFFFFFFh
5394
                or      edi, edx
5395
                add     ebx, [esi+0Ch]
5396
                xor     edi, ecx
5397
                rol     edx, 0Ah
5398
                lea     ebx, [ebx+edi+50A28BE6h]
5399
                mov     edi, edx
5400
                rol     ebx, 0Ch
5401
                add     ebx, eax
5402
                xor     edi, 0FFFFFFFFh
5403
                or      edi, ecx
5404
                add     eax, [esi+30h]
5405
                xor     edi, ebx
5406
                rol     ecx, 0Ah
5407
                lea     eax, [eax+edi+50A28BE6h]
5408
                rol     eax, 6
5409
                add     eax, ebp
5410
                mov     [esp+18h], ebx
5411
                mov     [esp+1Ch], ecx
5412
                mov     ebx, [esp+4]
5413
                mov     ecx, [esp+8]
5414
                mov     [esp+20h], edx
5415
                mov     [esp+24h], ebp
5416
                mov     edx, [esp+0Ch]
5417
                mov     ebp, [esp]
5418
                mov     [esp+14h], ebp
5419
                mov     ebp, [esp+10h]
5420
                mov     edi, ecx
5421
                xor     edi, ebx
5422
                add     ebp, [esi+1Ch]
5423
                and     edi, eax
5424
                xor     edi, ecx
5425
                rol     ebx, 0Ah
5426
                lea     ebp, [ebp+edi+5A827999h]
5427
                mov     edi, ebx
5428
                rol     ebp, 7
5429
                add     ebp, edx
5430
                xor     edi, eax
5431
                add     edx, [esi+10h]
5432
                and     edi, ebp
5433
                xor     edi, ebx
5434
                rol     eax, 0Ah
5435
                lea     edx, [edx+edi+5A827999h]
5436
                mov     edi, eax
5437
                rol     edx, 6
5438
                add     edx, ecx
5439
                xor     edi, ebp
5440
                add     ecx, [esi+34h]
5441
                and     edi, edx
5442
                xor     edi, eax
5443
                rol     ebp, 0Ah
5444
                lea     ecx, [ecx+edi+5A827999h]
5445
                mov     edi, ebp
5446
                rol     ecx, 8
5447
                add     ecx, ebx
5448
                xor     edi, edx
5449
                add     ebx, [esi+4]
5450
                and     edi, ecx
5451
                xor     edi, ebp
5452
                rol     edx, 0Ah
5453
                lea     ebx, [ebx+edi+5A827999h]
5454
                mov     edi, edx
5455
                rol     ebx, 0Dh
5456
                add     ebx, eax
5457
                xor     edi, ecx
5458
                add     eax, [esi+28h]
5459
                and     edi, ebx
5460
                xor     edi, edx
5461
                rol     ecx, 0Ah
5462
                lea     eax, [eax+edi+5A827999h]
5463
                mov     edi, ecx
5464
                rol     eax, 0Bh
5465
                add     eax, ebp
5466
                xor     edi, ebx
5467
                add     ebp, [esi+18h]
5468
                and     edi, eax
5469
                xor     edi, ecx
5470
                rol     ebx, 0Ah
5471
                lea     ebp, [ebp+edi+5A827999h]
5472
                mov     edi, ebx
5473
                rol     ebp, 9
5474
                add     ebp, edx
5475
                xor     edi, eax
5476
                add     edx, [esi+3Ch]
5477
                and     edi, ebp
5478
                xor     edi, ebx
5479
                rol     eax, 0Ah
5480
                lea     edx, [edx+edi+5A827999h]
5481
                mov     edi, eax
5482
                rol     edx, 7
5483
                add     edx, ecx
5484
                xor     edi, ebp
5485
                add     ecx, [esi+0Ch]
5486
                and     edi, edx
5487
                xor     edi, eax
5488
                rol     ebp, 0Ah
5489
                lea     ecx, [ecx+edi+5A827999h]
5490
                mov     edi, ebp
5491
                rol     ecx, 0Fh
5492
                add     ecx, ebx
5493
                xor     edi, edx
5494
                add     ebx, [esi+30h]
5495
                and     edi, ecx
5496
                xor     edi, ebp
5497
                rol     edx, 0Ah
5498
                lea     ebx, [ebx+edi+5A827999h]
5499
                mov     edi, edx
5500
                rol     ebx, 7
5501
                add     ebx, eax
5502
                xor     edi, ecx
5503
                add     eax, [esi]
5504
                and     edi, ebx
5505
                xor     edi, edx
5506
                rol     ecx, 0Ah
5507
                lea     eax, [eax+edi+5A827999h]
5508
                mov     edi, ecx
5509
                rol     eax, 0Ch
5510
                add     eax, ebp
5511
                xor     edi, ebx
5512
                add     ebp, [esi+24h]
5513
                and     edi, eax
5514
                xor     edi, ecx
5515
                rol     ebx, 0Ah
5516
                lea     ebp, [ebp+edi+5A827999h]
5517
                mov     edi, ebx
5518
                rol     ebp, 0Fh
5519
                add     ebp, edx
5520
                xor     edi, eax
5521
                add     edx, [esi+14h]
5522
                and     edi, ebp
5523
                xor     edi, ebx
5524
                rol     eax, 0Ah
5525
                lea     edx, [edx+edi+5A827999h]
5526
                mov     edi, eax
5527
                rol     edx, 9
5528
                add     edx, ecx
5529
                xor     edi, ebp
5530
                add     ecx, [esi+8]
5531
                and     edi, edx
5532
                xor     edi, eax
5533
                rol     ebp, 0Ah
5534
                lea     ecx, [ecx+edi+5A827999h]
5535
                mov     edi, ebp
5536
                rol     ecx, 0Bh
5537
                add     ecx, ebx
5538
                xor     edi, edx
5539
                add     ebx, [esi+38h]
5540
                and     edi, ecx
5541
                xor     edi, ebp
5542
                rol     edx, 0Ah
5543
                lea     ebx, [ebx+edi+5A827999h]
5544
                mov     edi, edx
5545
                rol     ebx, 7
5546
                add     ebx, eax
5547
                xor     edi, ecx
5548
                add     eax, [esi+2Ch]
5549
                and     edi, ebx
5550
                xor     edi, edx
5551
                rol     ecx, 0Ah
5552
                lea     eax, [eax+edi+5A827999h]
5553
                mov     edi, ecx
5554
                rol     eax, 0Dh
5555
                add     eax, ebp
5556
                xor     edi, ebx
5557
                add     ebp, [esi+20h]
5558
                and     edi, eax
5559
                xor     edi, ecx
5560
                rol     ebx, 0Ah
5561
                lea     ebp, [ebp+edi+5A827999h]
5562
                rol     ebp, 0Ch
5563
                add     ebp, edx
5564
                mov     [esp], eax
5565
                mov     [esp+4], ebx
5566
                mov     eax, [esp+14h]
5567
                mov     ebx, [esp+18h]
5568
                mov     [esp+8], ecx
5569
                mov     [esp+0Ch], edx
5570
                mov     ecx, [esp+1Ch]
5571
                mov     edx, [esp+20h]
5572
                mov     [esp+10h], ebp
5573
                mov     ebp, [esp+24h]
5574
                mov     edi, ebx
5575
                xor     edi, eax
5576
                and     edi, ecx
5577
                add     ebp, [esi+18h]
5578
                xor     edi, ebx
5579
                rol     ebx, 0Ah
5580
                lea     ebp, [ebp+edi+5C4DD124h]
5581
                mov     edi, eax
5582
                rol     ebp, 9
5583
                add     ebp, edx
5584
                xor     edi, ebp
5585
                and     edi, ebx
5586
                add     edx, [esi+2Ch]
5587
                xor     edi, eax
5588
                rol     eax, 0Ah
5589
                lea     edx, [edx+edi+5C4DD124h]
5590
                mov     edi, ebp
5591
                rol     edx, 0Dh
5592
                add     edx, ecx
5593
                xor     edi, edx
5594
                and     edi, eax
5595
                add     ecx, [esi+0Ch]
5596
                xor     edi, ebp
5597
                rol     ebp, 0Ah
5598
                lea     ecx, [ecx+edi+5C4DD124h]
5599
                mov     edi, edx
5600
                rol     ecx, 0Fh
5601
                add     ecx, ebx
5602
                xor     edi, ecx
5603
                and     edi, ebp
5604
                add     ebx, [esi+1Ch]
5605
                xor     edi, edx
5606
                rol     edx, 0Ah
5607
                lea     ebx, [ebx+edi+5C4DD124h]
5608
                mov     edi, ecx
5609
                rol     ebx, 7
5610
                add     ebx, eax
5611
                xor     edi, ebx
5612
                and     edi, edx
5613
                add     eax, [esi]
5614
                xor     edi, ecx
5615
                rol     ecx, 0Ah
5616
                lea     eax, [eax+edi+5C4DD124h]
5617
                mov     edi, ebx
5618
                rol     eax, 0Ch
5619
                add     eax, ebp
5620
                xor     edi, eax
5621
                and     edi, ecx
5622
                add     ebp, [esi+34h]
5623
                xor     edi, ebx
5624
                rol     ebx, 0Ah
5625
                lea     ebp, [ebp+edi+5C4DD124h]
5626
                mov     edi, eax
5627
                rol     ebp, 8
5628
                add     ebp, edx
5629
                xor     edi, ebp
5630
                and     edi, ebx
5631
                add     edx, [esi+14h]
5632
                xor     edi, eax
5633
                rol     eax, 0Ah
5634
                lea     edx, [edx+edi+5C4DD124h]
5635
                mov     edi, ebp
5636
                rol     edx, 9
5637
                add     edx, ecx
5638
                xor     edi, edx
5639
                and     edi, eax
5640
                add     ecx, [esi+28h]
5641
                xor     edi, ebp
5642
                rol     ebp, 0Ah
5643
                lea     ecx, [ecx+edi+5C4DD124h]
5644
                mov     edi, edx
5645
                rol     ecx, 0Bh
5646
                add     ecx, ebx
5647
                xor     edi, ecx
5648
                and     edi, ebp
5649
                add     ebx, [esi+38h]
5650
                xor     edi, edx
5651
                rol     edx, 0Ah
5652
                lea     ebx, [ebx+edi+5C4DD124h]
5653
                mov     edi, ecx
5654
                rol     ebx, 7
5655
                add     ebx, eax
5656
                xor     edi, ebx
5657
                and     edi, edx
5658
                add     eax, [esi+3Ch]
5659
                xor     edi, ecx
5660
                rol     ecx, 0Ah
5661
                lea     eax, [eax+edi+5C4DD124h]
5662
                mov     edi, ebx
5663
                rol     eax, 7
5664
                add     eax, ebp
5665
                xor     edi, eax
5666
                and     edi, ecx
5667
                add     ebp, [esi+20h]
5668
                xor     edi, ebx
5669
                rol     ebx, 0Ah
5670
                lea     ebp, [ebp+edi+5C4DD124h]
5671
                mov     edi, eax
5672
                rol     ebp, 0Ch
5673
                add     ebp, edx
5674
                xor     edi, ebp
5675
                and     edi, ebx
5676
                add     edx, [esi+30h]
5677
                xor     edi, eax
5678
                rol     eax, 0Ah
5679
                lea     edx, [edx+edi+5C4DD124h]
5680
                mov     edi, ebp
5681
                rol     edx, 7
5682
                add     edx, ecx
5683
                xor     edi, edx
5684
                and     edi, eax
5685
                add     ecx, [esi+10h]
5686
                xor     edi, ebp
5687
                rol     ebp, 0Ah
5688
                lea     ecx, [ecx+edi+5C4DD124h]
5689
                mov     edi, edx
5690
                rol     ecx, 6
5691
                add     ecx, ebx
5692
                xor     edi, ecx
5693
                and     edi, ebp
5694
                add     ebx, [esi+24h]
5695
                xor     edi, edx
5696
                rol     edx, 0Ah
5697
                lea     ebx, [ebx+edi+5C4DD124h]
5698
                mov     edi, ecx
5699
                rol     ebx, 0Fh
5700
                add     ebx, eax
5701
                xor     edi, ebx
5702
                and     edi, edx
5703
                add     eax, [esi+4]
5704
                xor     edi, ecx
5705
                rol     ecx, 0Ah
5706
                lea     eax, [eax+edi+5C4DD124h]
5707
                mov     edi, ebx
5708
                rol     eax, 0Dh
5709
                add     eax, ebp
5710
                xor     edi, eax
5711
                and     edi, ecx
5712
                add     ebp, [esi+8]
5713
                xor     edi, ebx
5714
                rol     ebx, 0Ah
5715
                lea     ebp, [ebp+edi+5C4DD124h]
5716
                rol     ebp, 0Bh
5717
                add     ebp, edx
5718
                mov     [esp+14h], eax
5719
                mov     [esp+1Ch], ecx
5720
                mov     eax, [esp]
5721
                mov     ecx, [esp+8]
5722
                mov     [esp+20h], edx
5723
                mov     [esp+24h], ebp
5724
                mov     edx, [esp+0Ch]
5725
                mov     ebp, [esp+4]
5726
                mov     [esp+18h], ebp
5727
                mov     ebp, [esp+10h]
5728
                mov     edi, eax
5729
                xor     edi, 0FFFFFFFFh
5730
                or      edi, ebp
5731
                add     edx, [esi+0Ch]
5732
                xor     edi, ebx
5733
                rol     eax, 0Ah
5734
                lea     edx, [edx+edi+6ED9EBA1h]
5735
                mov     edi, ebp
5736
                rol     edx, 0Bh
5737
                add     edx, ecx
5738
                xor     edi, 0FFFFFFFFh
5739
                or      edi, edx
5740
                add     ecx, [esi+28h]
5741
                xor     edi, eax
5742
                rol     ebp, 0Ah
5743
                lea     ecx, [ecx+edi+6ED9EBA1h]
5744
                mov     edi, edx
5745
                rol     ecx, 0Dh
5746
                add     ecx, ebx
5747
                xor     edi, 0FFFFFFFFh
5748
                or      edi, ecx
5749
                add     ebx, [esi+38h]
5750
                xor     edi, ebp
5751
                rol     edx, 0Ah
5752
                lea     ebx, [ebx+edi+6ED9EBA1h]
5753
                mov     edi, ecx
5754
                rol     ebx, 6
5755
                add     ebx, eax
5756
                xor     edi, 0FFFFFFFFh
5757
                or      edi, ebx
5758
                add     eax, [esi+10h]
5759
                xor     edi, edx
5760
                rol     ecx, 0Ah
5761
                lea     eax, [eax+edi+6ED9EBA1h]
5762
                mov     edi, ebx
5763
                rol     eax, 7
5764
                add     eax, ebp
5765
                xor     edi, 0FFFFFFFFh
5766
                or      edi, eax
5767
                add     ebp, [esi+24h]
5768
                xor     edi, ecx
5769
                rol     ebx, 0Ah
5770
                lea     ebp, [ebp+edi+6ED9EBA1h]
5771
                mov     edi, eax
5772
                rol     ebp, 0Eh
5773
                add     ebp, edx
5774
                xor     edi, 0FFFFFFFFh
5775
                or      edi, ebp
5776
                add     edx, [esi+3Ch]
5777
                xor     edi, ebx
5778
                rol     eax, 0Ah
5779
                lea     edx, [edx+edi+6ED9EBA1h]
5780
                mov     edi, ebp
5781
                rol     edx, 9
5782
                add     edx, ecx
5783
                xor     edi, 0FFFFFFFFh
5784
                or      edi, edx
5785
                add     ecx, [esi+20h]
5786
                xor     edi, eax
5787
                rol     ebp, 0Ah
5788
                lea     ecx, [ecx+edi+6ED9EBA1h]
5789
                mov     edi, edx
5790
                rol     ecx, 0Dh
5791
                add     ecx, ebx
5792
                xor     edi, 0FFFFFFFFh
5793
                or      edi, ecx
5794
                add     ebx, [esi+4]
5795
                xor     edi, ebp
5796
                rol     edx, 0Ah
5797
                lea     ebx, [ebx+edi+6ED9EBA1h]
5798
                mov     edi, ecx
5799
                rol     ebx, 0Fh
5800
                add     ebx, eax
5801
                xor     edi, 0FFFFFFFFh
5802
                or      edi, ebx
5803
                add     eax, [esi+8]
5804
                xor     edi, edx
5805
                rol     ecx, 0Ah
5806
                lea     eax, [eax+edi+6ED9EBA1h]
5807
                mov     edi, ebx
5808
                rol     eax, 0Eh
5809
                add     eax, ebp
5810
                xor     edi, 0FFFFFFFFh
5811
                or      edi, eax
5812
                add     ebp, [esi+1Ch]
5813
                xor     edi, ecx
5814
                rol     ebx, 0Ah
5815
                lea     ebp, [ebp+edi+6ED9EBA1h]
5816
                mov     edi, eax
5817
                rol     ebp, 8
5818
                add     ebp, edx
5819
                xor     edi, 0FFFFFFFFh
5820
                or      edi, ebp
5821
                add     edx, [esi]
5822
                xor     edi, ebx
5823
                rol     eax, 0Ah
5824
                lea     edx, [edx+edi+6ED9EBA1h]
5825
                mov     edi, ebp
5826
                rol     edx, 0Dh
5827
                add     edx, ecx
5828
                xor     edi, 0FFFFFFFFh
5829
                or      edi, edx
5830
                add     ecx, [esi+18h]
5831
                xor     edi, eax
5832
                rol     ebp, 0Ah
5833
                lea     ecx, [ecx+edi+6ED9EBA1h]
5834
                mov     edi, edx
5835
                rol     ecx, 6
5836
                add     ecx, ebx
5837
                xor     edi, 0FFFFFFFFh
5838
                or      edi, ecx
5839
                add     ebx, [esi+34h]
5840
                xor     edi, ebp
5841
                rol     edx, 0Ah
5842
                lea     ebx, [ebx+edi+6ED9EBA1h]
5843
                mov     edi, ecx
5844
                rol     ebx, 5
5845
                add     ebx, eax
5846
                xor     edi, 0FFFFFFFFh
5847
                or      edi, ebx
5848
                add     eax, [esi+2Ch]
5849
                xor     edi, edx
5850
                rol     ecx, 0Ah
5851
                lea     eax, [eax+edi+6ED9EBA1h]
5852
                mov     edi, ebx
5853
                rol     eax, 0Ch
5854
                add     eax, ebp
5855
                xor     edi, 0FFFFFFFFh
5856
                or      edi, eax
5857
                add     ebp, [esi+14h]
5858
                xor     edi, ecx
5859
                rol     ebx, 0Ah
5860
                lea     ebp, [ebp+edi+6ED9EBA1h]
5861
                mov     edi, eax
5862
                rol     ebp, 7
5863
                add     ebp, edx
5864
                xor     edi, 0FFFFFFFFh
5865
                or      edi, ebp
5866
                add     edx, [esi+30h]
5867
                xor     edi, ebx
5868
                rol     eax, 0Ah
5869
                lea     edx, [edx+edi+6ED9EBA1h]
5870
                rol     edx, 5
5871
                add     edx, ecx
5872
                mov     [esp], eax
5873
                mov     [esp+4], ebx
5874
                mov     eax, [esp+14h]
5875
                mov     ebx, [esp+18h]
5876
                mov     [esp+8], ecx
5877
                mov     [esp+0Ch], edx
5878
                mov     ecx, [esp+1Ch]
5879
                mov     edx, [esp+20h]
5880
                mov     [esp+10h], ebp
5881
                mov     ebp, [esp+24h]
5882
                mov     edi, eax
5883
                xor     edi, 0FFFFFFFFh
5884
                or      edi, ebp
5885
                add     edx, [esi+3Ch]
5886
                xor     edi, ebx
5887
                rol     eax, 0Ah
5888
                lea     edx, [edx+edi+6D703EF3h]
5889
                mov     edi, ebp
5890
                rol     edx, 9
5891
                add     edx, ecx
5892
                xor     edi, 0FFFFFFFFh
5893
                or      edi, edx
5894
                add     ecx, [esi+14h]
5895
                xor     edi, eax
5896
                rol     ebp, 0Ah
5897
                lea     ecx, [ecx+edi+6D703EF3h]
5898
                mov     edi, edx
5899
                rol     ecx, 7
5900
                add     ecx, ebx
5901
                xor     edi, 0FFFFFFFFh
5902
                or      edi, ecx
5903
                add     ebx, [esi+4]
5904
                xor     edi, ebp
5905
                rol     edx, 0Ah
5906
                lea     ebx, [ebx+edi+6D703EF3h]
5907
                mov     edi, ecx
5908
                rol     ebx, 0Fh
5909
                add     ebx, eax
5910
                xor     edi, 0FFFFFFFFh
5911
                or      edi, ebx
5912
                add     eax, [esi+0Ch]
5913
                xor     edi, edx
5914
                rol     ecx, 0Ah
5915
                lea     eax, [eax+edi+6D703EF3h]
5916
                mov     edi, ebx
5917
                rol     eax, 0Bh
5918
                add     eax, ebp
5919
                xor     edi, 0FFFFFFFFh
5920
                or      edi, eax
5921
                add     ebp, [esi+1Ch]
5922
                xor     edi, ecx
5923
                rol     ebx, 0Ah
5924
                lea     ebp, [ebp+edi+6D703EF3h]
5925
                mov     edi, eax
5926
                rol     ebp, 8
5927
                add     ebp, edx
5928
                xor     edi, 0FFFFFFFFh
5929
                or      edi, ebp
5930
                add     edx, [esi+38h]
5931
                xor     edi, ebx
5932
                rol     eax, 0Ah
5933
                lea     edx, [edx+edi+6D703EF3h]
5934
                mov     edi, ebp
5935
                rol     edx, 6
5936
                add     edx, ecx
5937
                xor     edi, 0FFFFFFFFh
5938
                or      edi, edx
5939
                add     ecx, [esi+18h]
5940
                xor     edi, eax
5941
                rol     ebp, 0Ah
5942
                lea     ecx, [ecx+edi+6D703EF3h]
5943
                mov     edi, edx
5944
                rol     ecx, 6
5945
                add     ecx, ebx
5946
                xor     edi, 0FFFFFFFFh
5947
                or      edi, ecx
5948
                add     ebx, [esi+24h]
5949
                xor     edi, ebp
5950
                rol     edx, 0Ah
5951
                lea     ebx, [ebx+edi+6D703EF3h]
5952
                mov     edi, ecx
5953
                rol     ebx, 0Eh
5954
                add     ebx, eax
5955
                xor     edi, 0FFFFFFFFh
5956
                or      edi, ebx
5957
                add     eax, [esi+2Ch]
5958
                xor     edi, edx
5959
                rol     ecx, 0Ah
5960
                lea     eax, [eax+edi+6D703EF3h]
5961
                mov     edi, ebx
5962
                rol     eax, 0Ch
5963
                add     eax, ebp
5964
                xor     edi, 0FFFFFFFFh
5965
                or      edi, eax
5966
                add     ebp, [esi+20h]
5967
                xor     edi, ecx
5968
                rol     ebx, 0Ah
5969
                lea     ebp, [ebp+edi+6D703EF3h]
5970
                mov     edi, eax
5971
                rol     ebp, 0Dh
5972
                add     ebp, edx
5973
                xor     edi, 0FFFFFFFFh
5974
                or      edi, ebp
5975
                add     edx, [esi+30h]
5976
                xor     edi, ebx
5977
                rol     eax, 0Ah
5978
                lea     edx, [edx+edi+6D703EF3h]
5979
                mov     edi, ebp
5980
                rol     edx, 5
5981
                add     edx, ecx
5982
                xor     edi, 0FFFFFFFFh
5983
                or      edi, edx
5984
                add     ecx, [esi+8]
5985
                xor     edi, eax
5986
                rol     ebp, 0Ah
5987
                lea     ecx, [ecx+edi+6D703EF3h]
5988
                mov     edi, edx
5989
                rol     ecx, 0Eh
5990
                add     ecx, ebx
5991
                xor     edi, 0FFFFFFFFh
5992
                or      edi, ecx
5993
                add     ebx, [esi+28h]
5994
                xor     edi, ebp
5995
                rol     edx, 0Ah
5996
                lea     ebx, [ebx+edi+6D703EF3h]
5997
                mov     edi, ecx
5998
                rol     ebx, 0Dh
5999
                add     ebx, eax
6000
                xor     edi, 0FFFFFFFFh
6001
                or      edi, ebx
6002
                add     eax, [esi]
6003
                xor     edi, edx
6004
                rol     ecx, 0Ah
6005
                lea     eax, [eax+edi+6D703EF3h]
6006
                mov     edi, ebx
6007
                rol     eax, 0Dh
6008
                add     eax, ebp
6009
                xor     edi, 0FFFFFFFFh
6010
                or      edi, eax
6011
                add     ebp, [esi+10h]
6012
                xor     edi, ecx
6013
                rol     ebx, 0Ah
6014
                lea     ebp, [ebp+edi+6D703EF3h]
6015
                mov     edi, eax
6016
                rol     ebp, 7
6017
                add     ebp, edx
6018
                xor     edi, 0FFFFFFFFh
6019
                or      edi, ebp
6020
                add     edx, [esi+34h]
6021
                xor     edi, ebx
6022
                rol     eax, 0Ah
6023
                lea     edx, [edx+edi+6D703EF3h]
6024
                rol     edx, 5
6025
                add     edx, ecx
6026
                mov     [esp+14h], eax
6027
                mov     [esp+18h], ebx
6028
                mov     eax, [esp]
6029
                mov     ebx, [esp+4]
6030
                mov     [esp+20h], edx
6031
                mov     [esp+24h], ebp
6032
                mov     edx, [esp+0Ch]
6033
                mov     ebp, [esp+8]
6034
                mov     [esp+1Ch], ebp
6035
                mov     ebp, [esp+10h]
6036
                mov     edi, ebp
6037
                xor     edi, edx
6038
                and     edi, eax
6039
                add     ecx, [esi+4]
6040
                xor     edi, ebp
6041
                rol     ebp, 0Ah
6042
                lea     ecx, [ecx+edi-70E44324h]
6043
                mov     edi, edx
6044
                rol     ecx, 0Bh
6045
                add     ecx, ebx
6046
                xor     edi, ecx
6047
                and     edi, ebp
6048
                add     ebx, [esi+24h]
6049
                xor     edi, edx
6050
                rol     edx, 0Ah
6051
                lea     ebx, [ebx+edi-70E44324h]
6052
                mov     edi, ecx
6053
                rol     ebx, 0Ch
6054
                add     ebx, eax
6055
                xor     edi, ebx
6056
                and     edi, edx
6057
                add     eax, [esi+2Ch]
6058
                xor     edi, ecx
6059
                rol     ecx, 0Ah
6060
                lea     eax, [eax+edi-70E44324h]
6061
                mov     edi, ebx
6062
                rol     eax, 0Eh
6063
                add     eax, ebp
6064
                xor     edi, eax
6065
                and     edi, ecx
6066
                add     ebp, [esi+28h]
6067
                xor     edi, ebx
6068
                rol     ebx, 0Ah
6069
                lea     ebp, [ebp+edi-70E44324h]
6070
                mov     edi, eax
6071
                rol     ebp, 0Fh
6072
                add     ebp, edx
6073
                xor     edi, ebp
6074
                and     edi, ebx
6075
                add     edx, [esi]
6076
                xor     edi, eax
6077
                rol     eax, 0Ah
6078
                lea     edx, [edx+edi-70E44324h]
6079
                mov     edi, ebp
6080
                rol     edx, 0Eh
6081
                add     edx, ecx
6082
                xor     edi, edx
6083
                and     edi, eax
6084
                add     ecx, [esi+20h]
6085
                xor     edi, ebp
6086
                rol     ebp, 0Ah
6087
                lea     ecx, [ecx+edi-70E44324h]
6088
                mov     edi, edx
6089
                rol     ecx, 0Fh
6090
                add     ecx, ebx
6091
                xor     edi, ecx
6092
                and     edi, ebp
6093
                add     ebx, [esi+30h]
6094
                xor     edi, edx
6095
                rol     edx, 0Ah
6096
                lea     ebx, [ebx+edi-70E44324h]
6097
                mov     edi, ecx
6098
                rol     ebx, 9
6099
                add     ebx, eax
6100
                xor     edi, ebx
6101
                and     edi, edx
6102
                add     eax, [esi+10h]
6103
                xor     edi, ecx
6104
                rol     ecx, 0Ah
6105
                lea     eax, [eax+edi-70E44324h]
6106
                mov     edi, ebx
6107
                rol     eax, 8
6108
                add     eax, ebp
6109
                xor     edi, eax
6110
                and     edi, ecx
6111
                add     ebp, [esi+34h]
6112
                xor     edi, ebx
6113
                rol     ebx, 0Ah
6114
                lea     ebp, [ebp+edi-70E44324h]
6115
                mov     edi, eax
6116
                rol     ebp, 9
6117
                add     ebp, edx
6118
                xor     edi, ebp
6119
                and     edi, ebx
6120
                add     edx, [esi+0Ch]
6121
                xor     edi, eax
6122
                rol     eax, 0Ah
6123
                lea     edx, [edx+edi-70E44324h]
6124
                mov     edi, ebp
6125
                rol     edx, 0Eh
6126
                add     edx, ecx
6127
                xor     edi, edx
6128
                and     edi, eax
6129
                add     ecx, [esi+1Ch]
6130
                xor     edi, ebp
6131
                rol     ebp, 0Ah
6132
                lea     ecx, [ecx+edi-70E44324h]
6133
                mov     edi, edx
6134
                rol     ecx, 5
6135
                add     ecx, ebx
6136
                xor     edi, ecx
6137
                and     edi, ebp
6138
                add     ebx, [esi+3Ch]
6139
                xor     edi, edx
6140
                rol     edx, 0Ah
6141
                lea     ebx, [ebx+edi-70E44324h]
6142
                mov     edi, ecx
6143
                rol     ebx, 6
6144
                add     ebx, eax
6145
                xor     edi, ebx
6146
                and     edi, edx
6147
                add     eax, [esi+38h]
6148
                xor     edi, ecx
6149
                rol     ecx, 0Ah
6150
                lea     eax, [eax+edi-70E44324h]
6151
                mov     edi, ebx
6152
                rol     eax, 8
6153
                add     eax, ebp
6154
                xor     edi, eax
6155
                and     edi, ecx
6156
                add     ebp, [esi+14h]
6157
                xor     edi, ebx
6158
                rol     ebx, 0Ah
6159
                lea     ebp, [ebp+edi-70E44324h]
6160
                mov     edi, eax
6161
                rol     ebp, 6
6162
                add     ebp, edx
6163
                xor     edi, ebp
6164
                and     edi, ebx
6165
                add     edx, [esi+18h]
6166
                xor     edi, eax
6167
                rol     eax, 0Ah
6168
                lea     edx, [edx+edi-70E44324h]
6169
                mov     edi, ebp
6170
                rol     edx, 5
6171
                add     edx, ecx
6172
                xor     edi, edx
6173
                and     edi, eax
6174
                add     ecx, [esi+8]
6175
                xor     edi, ebp
6176
                rol     ebp, 0Ah
6177
                lea     ecx, [ecx+edi-70E44324h]
6178
                rol     ecx, 0Ch
6179
                add     ecx, ebx
6180
                mov     [esp], eax
6181
                mov     [esp+4], ebx
6182
                mov     eax, [esp+14h]
6183
                mov     ebx, [esp+18h]
6184
                mov     [esp+8], ecx
6185
                mov     [esp+0Ch], edx
6186
                mov     ecx, [esp+1Ch]
6187
                mov     edx, [esp+20h]
6188
                mov     [esp+10h], ebp
6189
                mov     ebp, [esp+24h]
6190
                mov     edi, eax
6191
                xor     edi, ebp
6192
                add     ecx, [esi+20h]
6193
                and     edi, edx
6194
                xor     edi, eax
6195
                rol     ebp, 0Ah
6196
                lea     ecx, [ecx+edi+7A6D76E9h]
6197
                mov     edi, ebp
6198
                rol     ecx, 0Fh
6199
                add     ecx, ebx
6200
                xor     edi, edx
6201
                add     ebx, [esi+18h]
6202
                and     edi, ecx
6203
                xor     edi, ebp
6204
                rol     edx, 0Ah
6205
                lea     ebx, [ebx+edi+7A6D76E9h]
6206
                mov     edi, edx
6207
                rol     ebx, 5
6208
                add     ebx, eax
6209
                xor     edi, ecx
6210
                add     eax, [esi+10h]
6211
                and     edi, ebx
6212
                xor     edi, edx
6213
                rol     ecx, 0Ah
6214
                lea     eax, [eax+edi+7A6D76E9h]
6215
                mov     edi, ecx
6216
                rol     eax, 8
6217
                add     eax, ebp
6218
                xor     edi, ebx
6219
                add     ebp, [esi+4]
6220
                and     edi, eax
6221
                xor     edi, ecx
6222
                rol     ebx, 0Ah
6223
                lea     ebp, [ebp+edi+7A6D76E9h]
6224
                mov     edi, ebx
6225
                rol     ebp, 0Bh
6226
                add     ebp, edx
6227
                xor     edi, eax
6228
                add     edx, [esi+0Ch]
6229
                and     edi, ebp
6230
                xor     edi, ebx
6231
                rol     eax, 0Ah
6232
                lea     edx, [edx+edi+7A6D76E9h]
6233
                mov     edi, eax
6234
                rol     edx, 0Eh
6235
                add     edx, ecx
6236
                xor     edi, ebp
6237
                add     ecx, [esi+2Ch]
6238
                and     edi, edx
6239
                xor     edi, eax
6240
                rol     ebp, 0Ah
6241
                lea     ecx, [ecx+edi+7A6D76E9h]
6242
                mov     edi, ebp
6243
                rol     ecx, 0Eh
6244
                add     ecx, ebx
6245
                xor     edi, edx
6246
                add     ebx, [esi+3Ch]
6247
                and     edi, ecx
6248
                xor     edi, ebp
6249
                rol     edx, 0Ah
6250
                lea     ebx, [ebx+edi+7A6D76E9h]
6251
                mov     edi, edx
6252
                rol     ebx, 6
6253
                add     ebx, eax
6254
                xor     edi, ecx
6255
                add     eax, [esi]
6256
                and     edi, ebx
6257
                xor     edi, edx
6258
                rol     ecx, 0Ah
6259
                lea     eax, [eax+edi+7A6D76E9h]
6260
                mov     edi, ecx
6261
                rol     eax, 0Eh
6262
                add     eax, ebp
6263
                xor     edi, ebx
6264
                add     ebp, [esi+14h]
6265
                and     edi, eax
6266
                xor     edi, ecx
6267
                rol     ebx, 0Ah
6268
                lea     ebp, [ebp+edi+7A6D76E9h]
6269
                mov     edi, ebx
6270
                rol     ebp, 6
6271
                add     ebp, edx
6272
                xor     edi, eax
6273
                add     edx, [esi+30h]
6274
                and     edi, ebp
6275
                xor     edi, ebx
6276
                rol     eax, 0Ah
6277
                lea     edx, [edx+edi+7A6D76E9h]
6278
                mov     edi, eax
6279
                rol     edx, 9
6280
                add     edx, ecx
6281
                xor     edi, ebp
6282
                add     ecx, [esi+8]
6283
                and     edi, edx
6284
                xor     edi, eax
6285
                rol     ebp, 0Ah
6286
                lea     ecx, [ecx+edi+7A6D76E9h]
6287
                mov     edi, ebp
6288
                rol     ecx, 0Ch
6289
                add     ecx, ebx
6290
                xor     edi, edx
6291
                add     ebx, [esi+34h]
6292
                and     edi, ecx
6293
                xor     edi, ebp
6294
                rol     edx, 0Ah
6295
                lea     ebx, [ebx+edi+7A6D76E9h]
6296
                mov     edi, edx
6297
                rol     ebx, 9
6298
                add     ebx, eax
6299
                xor     edi, ecx
6300
                add     eax, [esi+24h]
6301
                and     edi, ebx
6302
                xor     edi, edx
6303
                rol     ecx, 0Ah
6304
                lea     eax, [eax+edi+7A6D76E9h]
6305
                mov     edi, ecx
6306
                rol     eax, 0Ch
6307
                add     eax, ebp
6308
                xor     edi, ebx
6309
                add     ebp, [esi+1Ch]
6310
                and     edi, eax
6311
                xor     edi, ecx
6312
                rol     ebx, 0Ah
6313
                lea     ebp, [ebp+edi+7A6D76E9h]
6314
                mov     edi, ebx
6315
                rol     ebp, 5
6316
                add     ebp, edx
6317
                xor     edi, eax
6318
                add     edx, [esi+28h]
6319
                and     edi, ebp
6320
                xor     edi, ebx
6321
                rol     eax, 0Ah
6322
                lea     edx, [edx+edi+7A6D76E9h]
6323
                mov     edi, eax
6324
                rol     edx, 0Fh
6325
                add     edx, ecx
6326
                xor     edi, ebp
6327
                add     ecx, [esi+38h]
6328
                and     edi, edx
6329
                xor     edi, eax
6330
                rol     ebp, 0Ah
6331
                lea     ecx, [ecx+edi+7A6D76E9h]
6332
                rol     ecx, 8
6333
                add     ecx, ebx
6334
                mov     [esp+14h], eax
6335
                mov     [esp+18h], ebx
6336
                mov     eax, [esp]
6337
                mov     ebx, [esp+4]
6338
                mov     [esp+1Ch], ecx
6339
                mov     [esp+24h], ebp
6340
                mov     ecx, [esp+8]
6341
                mov     ebp, [esp+0Ch]
6342
                mov     [esp+20h], ebp
6343
                mov     ebp, [esp+10h]
6344
                mov     edi, ebp
6345
                xor     edi, 0FFFFFFFFh
6346
                or      edi, edx
6347
                add     ebx, [esi+10h]
6348
                xor     edi, ecx
6349
                rol     edx, 0Ah
6350
                lea     ebx, [ebx+edi-56AC02B2h]
6351
                mov     edi, edx
6352
                rol     ebx, 9
6353
                add     ebx, eax
6354
                xor     edi, 0FFFFFFFFh
6355
                or      edi, ecx
6356
                add     eax, [esi]
6357
                xor     edi, ebx
6358
                rol     ecx, 0Ah
6359
                lea     eax, [eax+edi-56AC02B2h]
6360
                mov     edi, ecx
6361
                rol     eax, 0Fh
6362
                add     eax, ebp
6363
                xor     edi, 0FFFFFFFFh
6364
                or      edi, ebx
6365
                add     ebp, [esi+14h]
6366
                xor     edi, eax
6367
                rol     ebx, 0Ah
6368
                lea     ebp, [ebp+edi-56AC02B2h]
6369
                mov     edi, ebx
6370
                rol     ebp, 5
6371
                add     ebp, edx
6372
                xor     edi, 0FFFFFFFFh
6373
                or      edi, eax
6374
                add     edx, [esi+24h]
6375
                xor     edi, ebp
6376
                rol     eax, 0Ah
6377
                lea     edx, [edx+edi-56AC02B2h]
6378
                mov     edi, eax
6379
                rol     edx, 0Bh
6380
                add     edx, ecx
6381
                xor     edi, 0FFFFFFFFh
6382
                or      edi, ebp
6383
                add     ecx, [esi+1Ch]
6384
                xor     edi, edx
6385
                rol     ebp, 0Ah
6386
                lea     ecx, [ecx+edi-56AC02B2h]
6387
                mov     edi, ebp
6388
                rol     ecx, 6
6389
                add     ecx, ebx
6390
                xor     edi, 0FFFFFFFFh
6391
                or      edi, edx
6392
                add     ebx, [esi+30h]
6393
                xor     edi, ecx
6394
                rol     edx, 0Ah
6395
                lea     ebx, [ebx+edi-56AC02B2h]
6396
                mov     edi, edx
6397
                rol     ebx, 8
6398
                add     ebx, eax
6399
                xor     edi, 0FFFFFFFFh
6400
                or      edi, ecx
6401
                add     eax, [esi+8]
6402
                xor     edi, ebx
6403
                rol     ecx, 0Ah
6404
                lea     eax, [eax+edi-56AC02B2h]
6405
                mov     edi, ecx
6406
                rol     eax, 0Dh
6407
                add     eax, ebp
6408
                xor     edi, 0FFFFFFFFh
6409
                or      edi, ebx
6410
                add     ebp, [esi+28h]
6411
                xor     edi, eax
6412
                rol     ebx, 0Ah
6413
                lea     ebp, [ebp+edi-56AC02B2h]
6414
                mov     edi, ebx
6415
                rol     ebp, 0Ch
6416
                add     ebp, edx
6417
                xor     edi, 0FFFFFFFFh
6418
                or      edi, eax
6419
                add     edx, [esi+38h]
6420
                xor     edi, ebp
6421
                rol     eax, 0Ah
6422
                lea     edx, [edx+edi-56AC02B2h]
6423
                mov     edi, eax
6424
                rol     edx, 5
6425
                add     edx, ecx
6426
                xor     edi, 0FFFFFFFFh
6427
                or      edi, ebp
6428
                add     ecx, [esi+4]
6429
                xor     edi, edx
6430
                rol     ebp, 0Ah
6431
                lea     ecx, [ecx+edi-56AC02B2h]
6432
                mov     edi, ebp
6433
                rol     ecx, 0Ch
6434
                add     ecx, ebx
6435
                xor     edi, 0FFFFFFFFh
6436
                or      edi, edx
6437
                add     ebx, [esi+0Ch]
6438
                xor     edi, ecx
6439
                rol     edx, 0Ah
6440
                lea     ebx, [ebx+edi-56AC02B2h]
6441
                mov     edi, edx
6442
                rol     ebx, 0Dh
6443
                add     ebx, eax
6444
                xor     edi, 0FFFFFFFFh
6445
                or      edi, ecx
6446
                add     eax, [esi+20h]
6447
                xor     edi, ebx
6448
                rol     ecx, 0Ah
6449
                lea     eax, [eax+edi-56AC02B2h]
6450
                mov     edi, ecx
6451
                rol     eax, 0Eh
6452
                add     eax, ebp
6453
                xor     edi, 0FFFFFFFFh
6454
                or      edi, ebx
6455
                add     ebp, [esi+2Ch]
6456
                xor     edi, eax
6457
                rol     ebx, 0Ah
6458
                lea     ebp, [ebp+edi-56AC02B2h]
6459
                mov     edi, ebx
6460
                rol     ebp, 0Bh
6461
                add     ebp, edx
6462
                xor     edi, 0FFFFFFFFh
6463
                or      edi, eax
6464
                add     edx, [esi+18h]
6465
                xor     edi, ebp
6466
                rol     eax, 0Ah
6467
                lea     edx, [edx+edi-56AC02B2h]
6468
                mov     edi, eax
6469
                rol     edx, 8
6470
                add     edx, ecx
6471
                xor     edi, 0FFFFFFFFh
6472
                or      edi, ebp
6473
                add     ecx, [esi+3Ch]
6474
                xor     edi, edx
6475
                rol     ebp, 0Ah
6476
                lea     ecx, [ecx+edi-56AC02B2h]
6477
                mov     edi, ebp
6478
                rol     ecx, 5
6479
                add     ecx, ebx
6480
                xor     edi, 0FFFFFFFFh
6481
                or      edi, edx
6482
                add     ebx, [esi+34h]
6483
                xor     edi, ecx
6484
                rol     edx, 0Ah
6485
                lea     ebx, [ebx+edi-56AC02B2h]
6486
                rol     ebx, 6
6487
                add     ebx, eax
6488
                mov     [esp], eax
6489
                mov     [esp+4], ebx
6490
                mov     eax, [esp+14h]
6491
                mov     ebx, [esp+18h]
6492
                mov     [esp+8], ecx
6493
                mov     [esp+0Ch], edx
6494
                mov     ecx, [esp+1Ch]
6495
                mov     edx, [esp+20h]
6496
                mov     [esp+10h], ebp
6497
                mov     ebp, [esp+24h]
6498
                mov     edi, ebp
6499
                xor     edi, edx
6500
                xor     edi, ecx
6501
                add     ebx, [esi+30h]
6502
                rol     edx, 0Ah
6503
                add     ebx, edi
6504
                mov     edi, edx
6505
                rol     ebx, 8
6506
                add     ebx, eax
6507
                xor     edi, ecx
6508
                xor     edi, ebx
6509
                add     eax, [esi+3Ch]
6510
                rol     ecx, 0Ah
6511
                add     eax, edi
6512
                mov     edi, ecx
6513
                rol     eax, 5
6514
                add     eax, ebp
6515
                xor     edi, ebx
6516
                xor     edi, eax
6517
                add     ebp, [esi+28h]
6518
                rol     ebx, 0Ah
6519
                add     ebp, edi
6520
                mov     edi, ebx
6521
                rol     ebp, 0Ch
6522
                add     ebp, edx
6523
                xor     edi, eax
6524
                xor     edi, ebp
6525
                add     edx, [esi+10h]
6526
                rol     eax, 0Ah
6527
                add     edx, edi
6528
                mov     edi, eax
6529
                rol     edx, 9
6530
                add     edx, ecx
6531
                xor     edi, ebp
6532
                xor     edi, edx
6533
                add     ecx, [esi+4]
6534
                rol     ebp, 0Ah
6535
                add     ecx, edi
6536
                mov     edi, ebp
6537
                rol     ecx, 0Ch
6538
                add     ecx, ebx
6539
                xor     edi, edx
6540
                xor     edi, ecx
6541
                add     ebx, [esi+14h]
6542
                rol     edx, 0Ah
6543
                add     ebx, edi
6544
                mov     edi, edx
6545
                rol     ebx, 5
6546
                add     ebx, eax
6547
                xor     edi, ecx
6548
                xor     edi, ebx
6549
                add     eax, [esi+20h]
6550
                rol     ecx, 0Ah
6551
                add     eax, edi
6552
                mov     edi, ecx
6553
                rol     eax, 0Eh
6554
                add     eax, ebp
6555
                xor     edi, ebx
6556
                xor     edi, eax
6557
                add     ebp, [esi+1Ch]
6558
                rol     ebx, 0Ah
6559
                add     ebp, edi
6560
                mov     edi, ebx
6561
                rol     ebp, 6
6562
                add     ebp, edx
6563
                xor     edi, eax
6564
                xor     edi, ebp
6565
                add     edx, [esi+18h]
6566
                rol     eax, 0Ah
6567
                add     edx, edi
6568
                mov     edi, eax
6569
                rol     edx, 8
6570
                add     edx, ecx
6571
                xor     edi, ebp
6572
                xor     edi, edx
6573
                add     ecx, [esi+8]
6574
                rol     ebp, 0Ah
6575
                add     ecx, edi
6576
                mov     edi, ebp
6577
                rol     ecx, 0Dh
6578
                add     ecx, ebx
6579
                xor     edi, edx
6580
                xor     edi, ecx
6581
                add     ebx, [esi+34h]
6582
                rol     edx, 0Ah
6583
                add     ebx, edi
6584
                mov     edi, edx
6585
                rol     ebx, 6
6586
                add     ebx, eax
6587
                xor     edi, ecx
6588
                xor     edi, ebx
6589
                add     eax, [esi+38h]
6590
                rol     ecx, 0Ah
6591
                add     eax, edi
6592
                mov     edi, ecx
6593
                rol     eax, 5
6594
                add     eax, ebp
6595
                xor     edi, ebx
6596
                xor     edi, eax
6597
                add     ebp, [esi]
6598
                rol     ebx, 0Ah
6599
                add     ebp, edi
6600
                mov     edi, ebx
6601
                rol     ebp, 0Fh
6602
                add     ebp, edx
6603
                xor     edi, eax
6604
                xor     edi, ebp
6605
                add     edx, [esi+0Ch]
6606
                rol     eax, 0Ah
6607
                add     edx, edi
6608
                mov     edi, eax
6609
                rol     edx, 0Dh
6610
                add     edx, ecx
6611
                xor     edi, ebp
6612
                xor     edi, edx
6613
                add     ecx, [esi+24h]
6614
                rol     ebp, 0Ah
6615
                add     ecx, edi
6616
                mov     edi, ebp
6617
                rol     ecx, 0Bh
6618
                add     ecx, ebx
6619
                xor     edi, edx
6620
                xor     edi, ecx
6621
                add     ebx, [esi+2Ch]
6622
                rol     edx, 0Ah
6623
                add     ebx, edi
6624
                rol     ebx, 0Bh
6625
                add     ebx, eax
6626
                mov     edi, [esp+28h]
6627
                add     [edi+10h], ebp
6628
                add     [edi+14h], eax
6629
                add     [edi+18h], ebx
6630
                mov     eax, [esp]
6631
                mov     ebx, [esp+4]
6632
                add     [edi+1Ch], ecx
6633
                mov     ebp, [esp+10h]
6634
                add     [edi+20h], edx
6635
                mov     ecx, [esp+8]
6636
                mov     edx, [esp+0Ch]
6637
                add     [edi], eax
6638
                add     [edi+4], ebx
6639
                add     esp, 2Ch
6640
                add     [edi+8], ecx
6641
                add     [edi+0Ch], edx
6642
                add     [edi+24h], ebp
6643
                pop     ebp
6644
                pop     edi
6645
                pop     esi
6646
                pop     ebx
6647
end;
6648
{$ENDIF}
6649
 
6650
{$IFDEF THash_SHA_asm}
6651
procedure SHABuffer(W,S: PLongArray; Rotate: Boolean);
6652
var
6653
  I: Integer;
6654
  T: LongWord;
6655
begin
6656
  SwapLongBuffer(S[0], W[0], 16);
6657
  if Rotate then
6658
    for I := 16 to 79 do
6659
    begin
6660
      T := W[I - 3] xor W[I - 8] xor W[I - 14] xor W[I - 16];
6661
      W[I] := T shl 1 or T shr 31;
6662
    end
6663
  else
6664
    for I := 16 to 79 do
6665
    begin
6666
      T := W[I - 3] xor W[I - 8] xor W[I - 14] xor W[I - 16];
6667
      W[I] := T;
6668
    end
6669
end;
6670
 
6671
procedure THash_SHA.DoTransform(Buffer: PLongArray);
6672
var
6673
  W: array[0..79] of LongWord;
6674
begin
6675
  SHABuffer(@W, Buffer, ClassType <> THash_SHA);
6676
  asm
6677
                push    ebx
6678
                mov     eax, Self
6679
                push    esi
6680
                push    edi
6681
                lea     edi, [eax].THash_SHA.FDigest
6682
                lea     esi, W
6683
                push    ebp
6684
 
6685
                sub     esp, 8
6686
                mov     eax, [edi]
6687
                mov     ebx, [edi+4]
6688
                mov     ecx, [edi+8]
6689
                mov     [esp], edi
6690
                mov     edx, [edi+0Ch]
6691
                mov     ebp, [edi+10h]
6692
                mov     [esp+4], esi
6693
                mov     edi, ecx
6694
                xor     edi, edx
6695
                and     edi, ebx
6696
                add     ebp, [esi]
6697
                xor     edi, edx
6698
                ror     ebx, 2
6699
                lea     ebp, [ebp+edi+5A827999h]
6700
                mov     edi, eax
6701
                rol     edi, 5
6702
                add     ebp, edi
6703
                mov     edi, ecx
6704
                xor     edi, ebx
6705
                and     edi, eax
6706
                add     edx, [esi+4]
6707
                xor     edi, ecx
6708
                ror     eax, 2
6709
                lea     edx, [edx+edi+5A827999h]
6710
                mov     edi, ebp
6711
                rol     edi, 5
6712
                add     edx, edi
6713
                mov     edi, ebx
6714
                xor     edi, eax
6715
                and     edi, ebp
6716
                add     ecx, [esi+8]
6717
                xor     edi, ebx
6718
                ror     ebp, 2
6719
                lea     ecx, [ecx+edi+5A827999h]
6720
                mov     edi, edx
6721
                rol     edi, 5
6722
                add     ecx, edi
6723
                mov     edi, eax
6724
                xor     edi, ebp
6725
                and     edi, edx
6726
                add     ebx, [esi+0Ch]
6727
                xor     edi, eax
6728
                ror     edx, 2
6729
                lea     ebx, [ebx+edi+5A827999h]
6730
                mov     edi, ecx
6731
                rol     edi, 5
6732
                add     ebx, edi
6733
                mov     edi, ebp
6734
                xor     edi, edx
6735
                and     edi, ecx
6736
                add     eax, [esi+10h]
6737
                xor     edi, ebp
6738
                ror     ecx, 2
6739
                lea     eax, [eax+edi+5A827999h]
6740
                mov     edi, ebx
6741
                rol     edi, 5
6742
                add     eax, edi
6743
                mov     edi, edx
6744
                xor     edi, ecx
6745
                and     edi, ebx
6746
                add     ebp, [esi+14h]
6747
                xor     edi, edx
6748
                ror     ebx, 2
6749
                lea     ebp, [ebp+edi+5A827999h]
6750
                mov     edi, eax
6751
                rol     edi, 5
6752
                add     ebp, edi
6753
                mov     edi, ecx
6754
                xor     edi, ebx
6755
                and     edi, eax
6756
                add     edx, [esi+18h]
6757
                xor     edi, ecx
6758
                ror     eax, 2
6759
                lea     edx, [edx+edi+5A827999h]
6760
                mov     edi, ebp
6761
                rol     edi, 5
6762
                add     edx, edi
6763
                mov     edi, ebx
6764
                xor     edi, eax
6765
                and     edi, ebp
6766
                add     ecx, [esi+1Ch]
6767
                xor     edi, ebx
6768
                ror     ebp, 2
6769
                lea     ecx, [ecx+edi+5A827999h]
6770
                mov     edi, edx
6771
                rol     edi, 5
6772
                add     ecx, edi
6773
                mov     edi, eax
6774
                xor     edi, ebp
6775
                and     edi, edx
6776
                add     ebx, [esi+20h]
6777
                xor     edi, eax
6778
                ror     edx, 2
6779
                lea     ebx, [ebx+edi+5A827999h]
6780
                mov     edi, ecx
6781
                rol     edi, 5
6782
                add     ebx, edi
6783
                mov     edi, ebp
6784
                xor     edi, edx
6785
                and     edi, ecx
6786
                add     eax, [esi+24h]
6787
                xor     edi, ebp
6788
                ror     ecx, 2
6789
                lea     eax, [eax+edi+5A827999h]
6790
                mov     edi, ebx
6791
                rol     edi, 5
6792
                add     eax, edi
6793
                mov     edi, edx
6794
                xor     edi, ecx
6795
                and     edi, ebx
6796
                add     ebp, [esi+28h]
6797
                xor     edi, edx
6798
                ror     ebx, 2
6799
                lea     ebp, [ebp+edi+5A827999h]
6800
                mov     edi, eax
6801
                rol     edi, 5
6802
                add     ebp, edi
6803
                mov     edi, ecx
6804
                xor     edi, ebx
6805
                and     edi, eax
6806
                add     edx, [esi+2Ch]
6807
                xor     edi, ecx
6808
                ror     eax, 2
6809
                lea     edx, [edx+edi+5A827999h]
6810
                mov     edi, ebp
6811
                rol     edi, 5
6812
                add     edx, edi
6813
                mov     edi, ebx
6814
                xor     edi, eax
6815
                and     edi, ebp
6816
                add     ecx, [esi+30h]
6817
                xor     edi, ebx
6818
                ror     ebp, 2
6819
                lea     ecx, [ecx+edi+5A827999h]
6820
                mov     edi, edx
6821
                rol     edi, 5
6822
                add     ecx, edi
6823
                mov     edi, eax
6824
                xor     edi, ebp
6825
                and     edi, edx
6826
                add     ebx, [esi+34h]
6827
                xor     edi, eax
6828
                ror     edx, 2
6829
                lea     ebx, [ebx+edi+5A827999h]
6830
                mov     edi, ecx
6831
                rol     edi, 5
6832
                add     ebx, edi
6833
                mov     edi, ebp
6834
                xor     edi, edx
6835
                and     edi, ecx
6836
                add     eax, [esi+38h]
6837
                xor     edi, ebp
6838
                ror     ecx, 2
6839
                lea     eax, [eax+edi+5A827999h]
6840
                mov     edi, ebx
6841
                rol     edi, 5
6842
                add     eax, edi
6843
                mov     edi, edx
6844
                xor     edi, ecx
6845
                and     edi, ebx
6846
                add     ebp, [esi+3Ch]
6847
                xor     edi, edx
6848
                ror     ebx, 2
6849
                lea     ebp, [ebp+edi+5A827999h]
6850
                mov     edi, eax
6851
                rol     edi, 5
6852
                add     ebp, edi
6853
                mov     edi, ecx
6854
                xor     edi, ebx
6855
                and     edi, eax
6856
                add     edx, [esi+40h]
6857
                xor     edi, ecx
6858
                ror     eax, 2
6859
                lea     edx, [edx+edi+5A827999h]
6860
                mov     edi, ebp
6861
                rol     edi, 5
6862
                add     edx, edi
6863
                mov     edi, ebx
6864
                xor     edi, eax
6865
                and     edi, ebp
6866
                add     ecx, [esi+44h]
6867
                xor     edi, ebx
6868
                ror     ebp, 2
6869
                lea     ecx, [ecx+edi+5A827999h]
6870
                mov     edi, edx
6871
                rol     edi, 5
6872
                add     ecx, edi
6873
                mov     edi, eax
6874
                xor     edi, ebp
6875
                and     edi, edx
6876
                add     ebx, [esi+48h]
6877
                xor     edi, eax
6878
                ror     edx, 2
6879
                lea     ebx, [ebx+edi+5A827999h]
6880
                mov     edi, ecx
6881
                rol     edi, 5
6882
                add     ebx, edi
6883
                mov     edi, ebp
6884
                xor     edi, edx
6885
                and     edi, ecx
6886
                add     eax, [esi+4Ch]
6887
                xor     edi, ebp
6888
                ror     ecx, 2
6889
                lea     eax, [eax+edi+5A827999h]
6890
                mov     edi, ebx
6891
                rol     edi, 5
6892
                add     eax, edi
6893
                mov     edi, edx
6894
                xor     edi, ecx
6895
                xor     edi, ebx
6896
                add     ebp, edi
6897
                mov     edi, [esi+50h]
6898
                ror     ebx, 2
6899
                lea     ebp, [ebp+edi+6ED9EBA1h]
6900
                mov     edi, eax
6901
                rol     edi, 5
6902
                add     ebp, edi
6903
                mov     edi, ecx
6904
                xor     edi, ebx
6905
                xor     edi, eax
6906
                add     edx, edi
6907
                mov     edi, [esi+54h]
6908
                ror     eax, 2
6909
                lea     edx, [edx+edi+6ED9EBA1h]
6910
                mov     edi, ebp
6911
                rol     edi, 5
6912
                add     edx, edi
6913
                mov     edi, ebx
6914
                xor     edi, eax
6915
                xor     edi, ebp
6916
                add     ecx, edi
6917
                mov     edi, [esi+58h]
6918
                ror     ebp, 2
6919
                lea     ecx, [ecx+edi+6ED9EBA1h]
6920
                mov     edi, edx
6921
                rol     edi, 5
6922
                add     ecx, edi
6923
                mov     edi, eax
6924
                xor     edi, ebp
6925
                xor     edi, edx
6926
                add     ebx, edi
6927
                mov     edi, [esi+5Ch]
6928
                ror     edx, 2
6929
                lea     ebx, [ebx+edi+6ED9EBA1h]
6930
                mov     edi, ecx
6931
                rol     edi, 5
6932
                add     ebx, edi
6933
                mov     edi, ebp
6934
                xor     edi, edx
6935
                xor     edi, ecx
6936
                add     eax, edi
6937
                mov     edi, [esi+60h]
6938
                ror     ecx, 2
6939
                lea     eax, [eax+edi+6ED9EBA1h]
6940
                mov     edi, ebx
6941
                rol     edi, 5
6942
                add     eax, edi
6943
                mov     edi, edx
6944
                xor     edi, ecx
6945
                xor     edi, ebx
6946
                add     ebp, edi
6947
                mov     edi, [esi+64h]
6948
                ror     ebx, 2
6949
                lea     ebp, [ebp+edi+6ED9EBA1h]
6950
                mov     edi, eax
6951
                rol     edi, 5
6952
                add     ebp, edi
6953
                mov     edi, ecx
6954
                xor     edi, ebx
6955
                xor     edi, eax
6956
                add     edx, edi
6957
                mov     edi, [esi+68h]
6958
                ror     eax, 2
6959
                lea     edx, [edx+edi+6ED9EBA1h]
6960
                mov     edi, ebp
6961
                rol     edi, 5
6962
                add     edx, edi
6963
                mov     edi, ebx
6964
                xor     edi, eax
6965
                xor     edi, ebp
6966
                add     ecx, edi
6967
                mov     edi, [esi+6Ch]
6968
                ror     ebp, 2
6969
                lea     ecx, [ecx+edi+6ED9EBA1h]
6970
                mov     edi, edx
6971
                rol     edi, 5
6972
                add     ecx, edi
6973
                mov     edi, eax
6974
                xor     edi, ebp
6975
                xor     edi, edx
6976
                add     ebx, edi
6977
                mov     edi, [esi+70h]
6978
                ror     edx, 2
6979
                lea     ebx, [ebx+edi+6ED9EBA1h]
6980
                mov     edi, ecx
6981
                rol     edi, 5
6982
                add     ebx, edi
6983
                mov     edi, ebp
6984
                xor     edi, edx
6985
                xor     edi, ecx
6986
                add     eax, edi
6987
                mov     edi, [esi+74h]
6988
                ror     ecx, 2
6989
                lea     eax, [eax+edi+6ED9EBA1h]
6990
                mov     edi, ebx
6991
                rol     edi, 5
6992
                add     eax, edi
6993
                mov     edi, edx
6994
                xor     edi, ecx
6995
                xor     edi, ebx
6996
                add     ebp, edi
6997
                mov     edi, [esi+78h]
6998
                ror     ebx, 2
6999
                lea     ebp, [ebp+edi+6ED9EBA1h]
7000
                mov     edi, eax
7001
                rol     edi, 5
7002
                add     ebp, edi
7003
                mov     edi, ecx
7004
                xor     edi, ebx
7005
                xor     edi, eax
7006
                add     edx, edi
7007
                mov     edi, [esi+7Ch]
7008
                ror     eax, 2
7009
                lea     edx, [edx+edi+6ED9EBA1h]
7010
                mov     edi, ebp
7011
                rol     edi, 5
7012
                add     edx, edi
7013
                mov     edi, ebx
7014
                xor     edi, eax
7015
                xor     edi, ebp
7016
                add     ecx, edi
7017
                mov     edi, [esi+80h]
7018
                ror     ebp, 2
7019
                lea     ecx, [ecx+edi+6ED9EBA1h]
7020
                mov     edi, edx
7021
                rol     edi, 5
7022
                add     ecx, edi
7023
                mov     edi, eax
7024
                xor     edi, ebp
7025
                xor     edi, edx
7026
                add     ebx, edi
7027
                mov     edi, [esi+84h]
7028
                ror     edx, 2
7029
                lea     ebx, [ebx+edi+6ED9EBA1h]
7030
                mov     edi, ecx
7031
                rol     edi, 5
7032
                add     ebx, edi
7033
                mov     edi, ebp
7034
                xor     edi, edx
7035
                xor     edi, ecx
7036
                add     eax, edi
7037
                mov     edi, [esi+88h]
7038
                ror     ecx, 2
7039
                lea     eax, [eax+edi+6ED9EBA1h]
7040
                mov     edi, ebx
7041
                rol     edi, 5
7042
                add     eax, edi
7043
                mov     edi, edx
7044
                xor     edi, ecx
7045
                xor     edi, ebx
7046
                add     ebp, edi
7047
                mov     edi, [esi+8Ch]
7048
                ror     ebx, 2
7049
                lea     ebp, [ebp+edi+6ED9EBA1h]
7050
                mov     edi, eax
7051
                rol     edi, 5
7052
                add     ebp, edi
7053
                mov     edi, ecx
7054
                xor     edi, ebx
7055
                xor     edi, eax
7056
                add     edx, edi
7057
                mov     edi, [esi+90h]
7058
                ror     eax, 2
7059
                lea     edx, [edx+edi+6ED9EBA1h]
7060
                mov     edi, ebp
7061
                rol     edi, 5
7062
                add     edx, edi
7063
                mov     edi, ebx
7064
                xor     edi, eax
7065
                xor     edi, ebp
7066
                add     ecx, edi
7067
                mov     edi, [esi+94h]
7068
                ror     ebp, 2
7069
                lea     ecx, [ecx+edi+6ED9EBA1h]
7070
                mov     edi, edx
7071
                rol     edi, 5
7072
                add     ecx, edi
7073
                mov     edi, eax
7074
                xor     edi, ebp
7075
                xor     edi, edx
7076
                add     ebx, edi
7077
                mov     edi, [esi+98h]
7078
                ror     edx, 2
7079
                lea     ebx, [ebx+edi+6ED9EBA1h]
7080
                mov     edi, ecx
7081
                rol     edi, 5
7082
                add     ebx, edi
7083
                mov     edi, ebp
7084
                xor     edi, edx
7085
                xor     edi, ecx
7086
                add     eax, edi
7087
                mov     edi, [esi+9Ch]
7088
                ror     ecx, 2
7089
                lea     eax, [eax+edi+6ED9EBA1h]
7090
                mov     edi, ebx
7091
                rol     edi, 5
7092
                add     eax, edi
7093
                mov     edi, edx
7094
                xor     edi, ecx
7095
                mov     esi, ecx
7096
                mov     edi, ecx
7097
                or      esi, edx
7098
                and     edi, edx
7099
                and     esi, ebx
7100
                or      esi, edi
7101
                mov     edi, eax
7102
                add     ebp, esi
7103
                mov     esi, [esp+4]
7104
                rol     edi, 5
7105
                add     ebp, edi
7106
                mov     edi, [esi+0A0h]
7107
                ror     ebx, 2
7108
                lea     ebp, [ebp+edi-70E44324h]
7109
                mov     esi, ebx
7110
                mov     edi, ebx
7111
                or      esi, ecx
7112
                and     edi, ecx
7113
                and     esi, eax
7114
                or      esi, edi
7115
                mov     edi, ebp
7116
                add     edx, esi
7117
                mov     esi, [esp+4]
7118
                rol     edi, 5
7119
                add     edx, edi
7120
                mov     edi, [esi+0A4h]
7121
                ror     eax, 2
7122
                lea     edx, [edx+edi-70E44324h]
7123
                mov     esi, eax
7124
                mov     edi, eax
7125
                or      esi, ebx
7126
                and     edi, ebx
7127
                and     esi, ebp
7128
                or      esi, edi
7129
                mov     edi, edx
7130
                add     ecx, esi
7131
                mov     esi, [esp+4]
7132
                rol     edi, 5
7133
                add     ecx, edi
7134
                mov     edi, [esi+0A8h]
7135
                ror     ebp, 2
7136
                lea     ecx, [ecx+edi-70E44324h]
7137
                mov     esi, ebp
7138
                mov     edi, ebp
7139
                or      esi, eax
7140
                and     edi, eax
7141
                and     esi, edx
7142
                or      esi, edi
7143
                mov     edi, ecx
7144
                add     ebx, esi
7145
                mov     esi, [esp+4]
7146
                rol     edi, 5
7147
                add     ebx, edi
7148
                mov     edi, [esi+0ACh]
7149
                ror     edx, 2
7150
                lea     ebx, [ebx+edi-70E44324h]
7151
                mov     esi, edx
7152
                mov     edi, edx
7153
                or      esi, ebp
7154
                and     edi, ebp
7155
                and     esi, ecx
7156
                or      esi, edi
7157
                mov     edi, ebx
7158
                add     eax, esi
7159
                mov     esi, [esp+4]
7160
                rol     edi, 5
7161
                add     eax, edi
7162
                mov     edi, [esi+0B0h]
7163
                ror     ecx, 2
7164
                lea     eax, [eax+edi-70E44324h]
7165
                mov     esi, ecx
7166
                mov     edi, ecx
7167
                or      esi, edx
7168
                and     edi, edx
7169
                and     esi, ebx
7170
                or      esi, edi
7171
                mov     edi, eax
7172
                add     ebp, esi
7173
                mov     esi, [esp+4]
7174
                rol     edi, 5
7175
                add     ebp, edi
7176
                mov     edi, [esi+0B4h]
7177
                ror     ebx, 2
7178
                lea     ebp, [ebp+edi-70E44324h]
7179
                mov     esi, ebx
7180
                mov     edi, ebx
7181
                or      esi, ecx
7182
                and     edi, ecx
7183
                and     esi, eax
7184
                or      esi, edi
7185
                mov     edi, ebp
7186
                add     edx, esi
7187
                mov     esi, [esp+4]
7188
                rol     edi, 5
7189
                add     edx, edi
7190
                mov     edi, [esi+0B8h]
7191
                ror     eax, 2
7192
                lea     edx, [edx+edi-70E44324h]
7193
                mov     esi, eax
7194
                mov     edi, eax
7195
                or      esi, ebx
7196
                and     edi, ebx
7197
                and     esi, ebp
7198
                or      esi, edi
7199
                mov     edi, edx
7200
                add     ecx, esi
7201
                mov     esi, [esp+4]
7202
                rol     edi, 5
7203
                add     ecx, edi
7204
                mov     edi, [esi+0BCh]
7205
                ror     ebp, 2
7206
                lea     ecx, [ecx+edi-70E44324h]
7207
                mov     esi, ebp
7208
                mov     edi, ebp
7209
                or      esi, eax
7210
                and     edi, eax
7211
                and     esi, edx
7212
                or      esi, edi
7213
                mov     edi, ecx
7214
                add     ebx, esi
7215
                mov     esi, [esp+4]
7216
                rol     edi, 5
7217
                add     ebx, edi
7218
                mov     edi, [esi+0C0h]
7219
                ror     edx, 2
7220
                lea     ebx, [ebx+edi-70E44324h]
7221
                mov     esi, edx
7222
                mov     edi, edx
7223
                or      esi, ebp
7224
                and     edi, ebp
7225
                and     esi, ecx
7226
                or      esi, edi
7227
                mov     edi, ebx
7228
                add     eax, esi
7229
                mov     esi, [esp+4]
7230
                rol     edi, 5
7231
                add     eax, edi
7232
                mov     edi, [esi+0C4h]
7233
                ror     ecx, 2
7234
                lea     eax, [eax+edi-70E44324h]
7235
                mov     esi, ecx
7236
                mov     edi, ecx
7237
                or      esi, edx
7238
                and     edi, edx
7239
                and     esi, ebx
7240
                or      esi, edi
7241
                mov     edi, eax
7242
                add     ebp, esi
7243
                mov     esi, [esp+4]
7244
                rol     edi, 5
7245
                add     ebp, edi
7246
                mov     edi, [esi+0C8h]
7247
                ror     ebx, 2
7248
                lea     ebp, [ebp+edi-70E44324h]
7249
                mov     esi, ebx
7250
                mov     edi, ebx
7251
                or      esi, ecx
7252
                and     edi, ecx
7253
                and     esi, eax
7254
                or      esi, edi
7255
                mov     edi, ebp
7256
                add     edx, esi
7257
                mov     esi, [esp+4]
7258
                rol     edi, 5
7259
                add     edx, edi
7260
                mov     edi, [esi+0CCh]
7261
                ror     eax, 2
7262
                lea     edx, [edx+edi-70E44324h]
7263
                mov     esi, eax
7264
                mov     edi, eax
7265
                or      esi, ebx
7266
                and     edi, ebx
7267
                and     esi, ebp
7268
                or      esi, edi
7269
                mov     edi, edx
7270
                add     ecx, esi
7271
                mov     esi, [esp+4]
7272
                rol     edi, 5
7273
                add     ecx, edi
7274
                mov     edi, [esi+0D0h]
7275
                ror     ebp, 2
7276
                lea     ecx, [ecx+edi-70E44324h]
7277
                mov     esi, ebp
7278
                mov     edi, ebp
7279
                or      esi, eax
7280
                and     edi, eax
7281
                and     esi, edx
7282
                or      esi, edi
7283
                mov     edi, ecx
7284
                add     ebx, esi
7285
                mov     esi, [esp+4]
7286
                rol     edi, 5
7287
                add     ebx, edi
7288
                mov     edi, [esi+0D4h]
7289
                ror     edx, 2
7290
                lea     ebx, [ebx+edi-70E44324h]
7291
                mov     esi, edx
7292
                mov     edi, edx
7293
                or      esi, ebp
7294
                and     edi, ebp
7295
                and     esi, ecx
7296
                or      esi, edi
7297
                mov     edi, ebx
7298
                add     eax, esi
7299
                mov     esi, [esp+4]
7300
                rol     edi, 5
7301
                add     eax, edi
7302
                mov     edi, [esi+0D8h]
7303
                ror     ecx, 2
7304
                lea     eax, [eax+edi-70E44324h]
7305
                mov     esi, ecx
7306
                mov     edi, ecx
7307
                or      esi, edx
7308
                and     edi, edx
7309
                and     esi, ebx
7310
                or      esi, edi
7311
                mov     edi, eax
7312
                add     ebp, esi
7313
                mov     esi, [esp+4]
7314
                rol     edi, 5
7315
                add     ebp, edi
7316
                mov     edi, [esi+0DCh]
7317
                ror     ebx, 2
7318
                lea     ebp, [ebp+edi-70E44324h]
7319
                mov     esi, ebx
7320
                mov     edi, ebx
7321
                or      esi, ecx
7322
                and     edi, ecx
7323
                and     esi, eax
7324
                or      esi, edi
7325
                mov     edi, ebp
7326
                add     edx, esi
7327
                mov     esi, [esp+4]
7328
                rol     edi, 5
7329
                add     edx, edi
7330
                mov     edi, [esi+0E0h]
7331
                ror     eax, 2
7332
                lea     edx, [edx+edi-70E44324h]
7333
                mov     esi, eax
7334
                mov     edi, eax
7335
                or      esi, ebx
7336
                and     edi, ebx
7337
                and     esi, ebp
7338
                or      esi, edi
7339
                mov     edi, edx
7340
                add     ecx, esi
7341
                mov     esi, [esp+4]
7342
                rol     edi, 5
7343
                add     ecx, edi
7344
                mov     edi, [esi+0E4h]
7345
                ror     ebp, 2
7346
                lea     ecx, [ecx+edi-70E44324h]
7347
                mov     esi, ebp
7348
                mov     edi, ebp
7349
                or      esi, eax
7350
                and     edi, eax
7351
                and     esi, edx
7352
                or      esi, edi
7353
                mov     edi, ecx
7354
                add     ebx, esi
7355
                mov     esi, [esp+4]
7356
                rol     edi, 5
7357
                add     ebx, edi
7358
                mov     edi, [esi+0E8h]
7359
                ror     edx, 2
7360
                lea     ebx, [ebx+edi-70E44324h]
7361
                mov     esi, edx
7362
                mov     edi, edx
7363
                or      esi, ebp
7364
                and     edi, ebp
7365
                and     esi, ecx
7366
                or      esi, edi
7367
                mov     edi, ebx
7368
                add     eax, esi
7369
                mov     esi, [esp+4]
7370
                rol     edi, 5
7371
                add     eax, edi
7372
                mov     edi, [esi+0ECh]
7373
                ror     ecx, 2
7374
                lea     eax, [eax+edi-70E44324h]
7375
                mov     edi, ecx
7376
                xor     edi, edx
7377
                xor     edi, ebx
7378
                add     ebp, edi
7379
                mov     edi, [esi+0F0h]
7380
                ror     ebx, 2
7381
                lea     ebp, [ebp+edi-359D3E2Ah]
7382
                mov     edi, eax
7383
                rol     edi, 5
7384
                add     ebp, edi
7385
                mov     edi, ecx
7386
                xor     edi, ebx
7387
                xor     edi, eax
7388
                add     edx, edi
7389
                mov     edi, [esi+0F4h]
7390
                ror     eax, 2
7391
                lea     edx, [edx+edi-359D3E2Ah]
7392
                mov     edi, ebp
7393
                rol     edi, 5
7394
                add     edx, edi
7395
                mov     edi, ebx
7396
                xor     edi, eax
7397
                xor     edi, ebp
7398
                add     ecx, edi
7399
                mov     edi, [esi+0F8h]
7400
                ror     ebp, 2
7401
                lea     ecx, [ecx+edi-359D3E2Ah]
7402
                mov     edi, edx
7403
                rol     edi, 5
7404
                add     ecx, edi
7405
                mov     edi, eax
7406
                xor     edi, ebp
7407
                xor     edi, edx
7408
                add     ebx, edi
7409
                mov     edi, [esi+0FCh]
7410
                ror     edx, 2
7411
                lea     ebx, [ebx+edi-359D3E2Ah]
7412
                mov     edi, ecx
7413
                rol     edi, 5
7414
                add     ebx, edi
7415
                mov     edi, ebp
7416
                xor     edi, edx
7417
                xor     edi, ecx
7418
                add     eax, edi
7419
                mov     edi, [esi+100h]
7420
                ror     ecx, 2
7421
                lea     eax, [eax+edi-359D3E2Ah]
7422
                mov     edi, ebx
7423
                rol     edi, 5
7424
                add     eax, edi
7425
                mov     edi, edx
7426
                xor     edi, ecx
7427
                xor     edi, ebx
7428
                add     ebp, edi
7429
                mov     edi, [esi+104h]
7430
                ror     ebx, 2
7431
                lea     ebp, [ebp+edi-359D3E2Ah]
7432
                mov     edi, eax
7433
                rol     edi, 5
7434
                add     ebp, edi
7435
                mov     edi, ecx
7436
                xor     edi, ebx
7437
                xor     edi, eax
7438
                add     edx, edi
7439
                mov     edi, [esi+108h]
7440
                ror     eax, 2
7441
                lea     edx, [edx+edi-359D3E2Ah]
7442
                mov     edi, ebp
7443
                rol     edi, 5
7444
                add     edx, edi
7445
                mov     edi, ebx
7446
                xor     edi, eax
7447
                xor     edi, ebp
7448
                add     ecx, edi
7449
                mov     edi, [esi+10Ch]
7450
                ror     ebp, 2
7451
                lea     ecx, [ecx+edi-359D3E2Ah]
7452
                mov     edi, edx
7453
                rol     edi, 5
7454
                add     ecx, edi
7455
                mov     edi, eax
7456
                xor     edi, ebp
7457
                xor     edi, edx
7458
                add     ebx, edi
7459
                mov     edi, [esi+110h]
7460
                ror     edx, 2
7461
                lea     ebx, [ebx+edi-359D3E2Ah]
7462
                mov     edi, ecx
7463
                rol     edi, 5
7464
                add     ebx, edi
7465
                mov     edi, ebp
7466
                xor     edi, edx
7467
                xor     edi, ecx
7468
                add     eax, edi
7469
                mov     edi, [esi+114h]
7470
                ror     ecx, 2
7471
                lea     eax, [eax+edi-359D3E2Ah]
7472
                mov     edi, ebx
7473
                rol     edi, 5
7474
                add     eax, edi
7475
                mov     edi, edx
7476
                xor     edi, ecx
7477
                xor     edi, ebx
7478
                add     ebp, edi
7479
                mov     edi, [esi+118h]
7480
                ror     ebx, 2
7481
                lea     ebp, [ebp+edi-359D3E2Ah]
7482
                mov     edi, eax
7483
                rol     edi, 5
7484
                add     ebp, edi
7485
                mov     edi, ecx
7486
                xor     edi, ebx
7487
                xor     edi, eax
7488
                add     edx, edi
7489
                mov     edi, [esi+11Ch]
7490
                ror     eax, 2
7491
                lea     edx, [edx+edi-359D3E2Ah]
7492
                mov     edi, ebp
7493
                rol     edi, 5
7494
                add     edx, edi
7495
                mov     edi, ebx
7496
                xor     edi, eax
7497
                xor     edi, ebp
7498
                add     ecx, edi
7499
                mov     edi, [esi+120h]
7500
                ror     ebp, 2
7501
                lea     ecx, [ecx+edi-359D3E2Ah]
7502
                mov     edi, edx
7503
                rol     edi, 5
7504
                add     ecx, edi
7505
                mov     edi, eax
7506
                xor     edi, ebp
7507
                xor     edi, edx
7508
                add     ebx, edi
7509
                mov     edi, [esi+124h]
7510
                ror     edx, 2
7511
                lea     ebx, [ebx+edi-359D3E2Ah]
7512
                mov     edi, ecx
7513
                rol     edi, 5
7514
                add     ebx, edi
7515
                mov     edi, ebp
7516
                xor     edi, edx
7517
                xor     edi, ecx
7518
                add     eax, edi
7519
                mov     edi, [esi+128h]
7520
                ror     ecx, 2
7521
                lea     eax, [eax+edi-359D3E2Ah]
7522
                mov     edi, ebx
7523
                rol     edi, 5
7524
                add     eax, edi
7525
                mov     edi, edx
7526
                xor     edi, ecx
7527
                xor     edi, ebx
7528
                add     ebp, edi
7529
                mov     edi, [esi+12Ch]
7530
                ror     ebx, 2
7531
                lea     ebp, [ebp+edi-359D3E2Ah]
7532
                mov     edi, eax
7533
                rol     edi, 5
7534
                add     ebp, edi
7535
                mov     edi, ecx
7536
                xor     edi, ebx
7537
                xor     edi, eax
7538
                add     edx, edi
7539
                mov     edi, [esi+130h]
7540
                ror     eax, 2
7541
                lea     edx, [edx+edi-359D3E2Ah]
7542
                mov     edi, ebp
7543
                rol     edi, 5
7544
                add     edx, edi
7545
                mov     edi, ebx
7546
                xor     edi, eax
7547
                xor     edi, ebp
7548
                add     ecx, edi
7549
                mov     edi, [esi+134h]
7550
                ror     ebp, 2
7551
                lea     ecx, [ecx+edi-359D3E2Ah]
7552
                mov     edi, edx
7553
                rol     edi, 5
7554
                add     ecx, edi
7555
                mov     edi, eax
7556
                xor     edi, ebp
7557
                xor     edi, edx
7558
                add     ebx, edi
7559
                mov     edi, [esi+138h]
7560
                ror     edx, 2
7561
                lea     ebx, [ebx+edi-359D3E2Ah]
7562
                mov     edi, ecx
7563
                rol     edi, 5
7564
                add     ebx, edi
7565
                mov     edi, ebp
7566
                xor     edi, edx
7567
                xor     edi, ecx
7568
                add     eax, edi
7569
                mov     edi, [esi+13Ch]
7570
                ror     ecx, 2
7571
                lea     eax, [eax+edi-359D3E2Ah]
7572
                mov     edi, ebx
7573
                rol     edi, 5
7574
                add     eax, edi
7575
                mov     edi, [esp]
7576
                add     esp, 8
7577
                add     [edi], eax
7578
                mov     eax, [edi+4]
7579
                mov     esi, [edi+8]
7580
                add     ebx, eax
7581
                mov     eax, [edi+0Ch]
7582
                add     ecx, esi
7583
                mov     esi, [edi+10h]
7584
                mov     [edi+4], ebx
7585
                add     edx, eax
7586
                add     ebp, esi
7587
                mov     [edi+8], ecx
7588
                mov     [edi+0Ch], edx
7589
                mov     [edi+10h], ebp
7590
 
7591
                pop     ebp
7592
                pop     edi
7593
                pop     esi
7594
                pop     ebx
7595
  end;
7596
end;
7597
{$ENDIF}
7598
 
7599
{$IFDEF THash_SHA256_asm}
7600
procedure SHA256Buffer(S, D: Pointer); assembler;
7601
asm
7602
                push ebx
7603
                push edi
7604
                mov  edi, eax
7605
                push esi
7606
                mov  esi, edx
7607
 
7608
                mov     eax, [esi]
7609
                mov     ebx, [esi+4]
7610
                bswap   eax
7611
                mov     ecx, [esi+8]
7612
                mov     edx, [esi+0Ch]
7613
                bswap   ebx
7614
                bswap   ecx
7615
                bswap   edx
7616
                mov     [edi], eax
7617
                mov     [edi+4], ebx
7618
                mov     [edi+8], ecx
7619
                mov     [edi+0Ch], edx
7620
                mov     eax, [esi+10h]
7621
                mov     ebx, [esi+14h]
7622
                bswap   eax
7623
                mov     ecx, [esi+18h]
7624
                mov     edx, [esi+1Ch]
7625
                bswap   ebx
7626
                bswap   ecx
7627
                bswap   edx
7628
                mov     [edi+10h], eax
7629
                mov     [edi+14h], ebx
7630
                mov     [edi+18h], ecx
7631
                mov     [edi+1Ch], edx
7632
                mov     eax, [esi+20h]
7633
                mov     ebx, [esi+24h]
7634
                bswap   eax
7635
                mov     ecx, [esi+28h]
7636
                mov     edx, [esi+2Ch]
7637
                bswap   ebx
7638
                bswap   ecx
7639
                bswap   edx
7640
                mov     [edi+20h], eax
7641
                mov     [edi+24h], ebx
7642
                mov     [edi+28h], ecx
7643
                mov     [edi+2Ch], edx
7644
                mov     eax, [esi+30h]
7645
                mov     ebx, [esi+34h]
7646
                bswap   eax
7647
                mov     ecx, [esi+38h]
7648
                mov     edx, [esi+3Ch]
7649
                bswap   ebx
7650
                bswap   ecx
7651
                bswap   edx
7652
                mov     [edi+30h], eax
7653
                mov     [edi+34h], ebx
7654
                mov     [edi+38h], ecx
7655
                mov     [edi+3Ch], edx
7656
 
7657
 
7658
                pop  esi
7659
                pop  edi
7660
                pop  ebx
7661
end;
7662
 
7663
procedure THash_SHA256.DoTransform(Buffer: PLongArray);
7664
var
7665
  W: array[0..63] of LongWord;
7666
begin
7667
  // swap first 16 uint32
7668
  SHA256Buffer(@W, Buffer);
7669
  asm
7670
    push    ebx
7671
    push    esi
7672
    push    edi
7673
    push    ebp
7674
 
7675
    mov     eax, Self
7676
    lea     edi, [eax].THash_SHA256.FDigest
7677
    lea     esi, W
7678
 
7679
                mov     eax, esp
7680
                add     esp, 0FFFFFFD4h
7681
                and     esp, 0FFFFFFC0h
7682
                mov     [esp+20h], esi
7683
                mov     [esp+24h], edi
7684
                mov     [esp+28h], eax
7685
                mov     edi, [esi]
7686
                mov     eax, [esi+4]
7687
                mov     edx, [esi+24h]
7688
                mov     ebx, [esi+38h]
7689
                mov     ecx, eax
7690
                ror     ecx, 7
7691
                shr     eax, 3
7692
                mov     ebp, ebx
7693
                shr     ebx, 0Ah
7694
                xor     eax, ecx
7695
                ror     ecx, 0Bh
7696
                rol     ebp, 0Fh
7697
                xor     eax, ecx
7698
                xor     ebx, ebp
7699
                ror     ebp, 2
7700
                xor     ebx, ebp
7701
                add     edx, edi
7702
                add     eax, ebx
7703
                mov     edi, [esi+4]
7704
                add     edx, eax
7705
                mov     eax, [esi+8]
7706
                mov     [esi+40h], edx
7707
                mov     edx, [esi+28h]
7708
                mov     ebx, [esi+3Ch]
7709
                mov     ecx, eax
7710
                ror     ecx, 7
7711
                shr     eax, 3
7712
                mov     ebp, ebx
7713
                shr     ebx, 0Ah
7714
                xor     eax, ecx
7715
                ror     ecx, 0Bh
7716
                rol     ebp, 0Fh
7717
                xor     eax, ecx
7718
                xor     ebx, ebp
7719
                ror     ebp, 2
7720
                xor     ebx, ebp
7721
                add     edx, edi
7722
                add     eax, ebx
7723
                mov     edi, [esi+8]
7724
                add     edx, eax
7725
                mov     eax, [esi+0Ch]
7726
                mov     [esi+44h], edx
7727
                mov     edx, [esi+2Ch]
7728
                mov     ebx, [esi+40h]
7729
                mov     ecx, eax
7730
                ror     ecx, 7
7731
                shr     eax, 3
7732
                mov     ebp, ebx
7733
                shr     ebx, 0Ah
7734
                xor     eax, ecx
7735
                ror     ecx, 0Bh
7736
                rol     ebp, 0Fh
7737
                xor     eax, ecx
7738
                xor     ebx, ebp
7739
                ror     ebp, 2
7740
                xor     ebx, ebp
7741
                add     edx, edi
7742
                add     eax, ebx
7743
                mov     edi, [esi+0Ch]
7744
                add     edx, eax
7745
                mov     eax, [esi+10h]
7746
                mov     [esi+48h], edx
7747
                mov     edx, [esi+30h]
7748
                mov     ebx, [esi+44h]
7749
                mov     ecx, eax
7750
                ror     ecx, 7
7751
                shr     eax, 3
7752
                mov     ebp, ebx
7753
                shr     ebx, 0Ah
7754
                xor     eax, ecx
7755
                ror     ecx, 0Bh
7756
                rol     ebp, 0Fh
7757
                xor     eax, ecx
7758
                xor     ebx, ebp
7759
                ror     ebp, 2
7760
                xor     ebx, ebp
7761
                add     edx, edi
7762
                add     eax, ebx
7763
                mov     edi, [esi+10h]
7764
                add     edx, eax
7765
                mov     eax, [esi+14h]
7766
                mov     [esi+4Ch], edx
7767
                mov     edx, [esi+34h]
7768
                mov     ebx, [esi+48h]
7769
                mov     ecx, eax
7770
                ror     ecx, 7
7771
                shr     eax, 3
7772
                mov     ebp, ebx
7773
                shr     ebx, 0Ah
7774
                xor     eax, ecx
7775
                ror     ecx, 0Bh
7776
                rol     ebp, 0Fh
7777
                xor     eax, ecx
7778
                xor     ebx, ebp
7779
                ror     ebp, 2
7780
                xor     ebx, ebp
7781
                add     edx, edi
7782
                add     eax, ebx
7783
                mov     edi, [esi+14h]
7784
                add     edx, eax
7785
                mov     eax, [esi+18h]
7786
                mov     [esi+50h], edx
7787
                mov     edx, [esi+38h]
7788
                mov     ebx, [esi+4Ch]
7789
                mov     ecx, eax
7790
                ror     ecx, 7
7791
                shr     eax, 3
7792
                mov     ebp, ebx
7793
                shr     ebx, 0Ah
7794
                xor     eax, ecx
7795
                ror     ecx, 0Bh
7796
                rol     ebp, 0Fh
7797
                xor     eax, ecx
7798
                xor     ebx, ebp
7799
                ror     ebp, 2
7800
                xor     ebx, ebp
7801
                add     edx, edi
7802
                add     eax, ebx
7803
                mov     edi, [esi+18h]
7804
                add     edx, eax
7805
                mov     eax, [esi+1Ch]
7806
                mov     [esi+54h], edx
7807
                mov     edx, [esi+3Ch]
7808
                mov     ebx, [esi+50h]
7809
                mov     ecx, eax
7810
                ror     ecx, 7
7811
                shr     eax, 3
7812
                mov     ebp, ebx
7813
                shr     ebx, 0Ah
7814
                xor     eax, ecx
7815
                ror     ecx, 0Bh
7816
                rol     ebp, 0Fh
7817
                xor     eax, ecx
7818
                xor     ebx, ebp
7819
                ror     ebp, 2
7820
                xor     ebx, ebp
7821
                add     edx, edi
7822
                add     eax, ebx
7823
                mov     edi, [esi+1Ch]
7824
                add     edx, eax
7825
                mov     eax, [esi+20h]
7826
                mov     [esi+58h], edx
7827
                mov     edx, [esi+40h]
7828
                mov     ebx, [esi+54h]
7829
                mov     ecx, eax
7830
                ror     ecx, 7
7831
                shr     eax, 3
7832
                mov     ebp, ebx
7833
                shr     ebx, 0Ah
7834
                xor     eax, ecx
7835
                ror     ecx, 0Bh
7836
                rol     ebp, 0Fh
7837
                xor     eax, ecx
7838
                xor     ebx, ebp
7839
                ror     ebp, 2
7840
                xor     ebx, ebp
7841
                add     edx, edi
7842
                add     eax, ebx
7843
                mov     edi, [esi+20h]
7844
                add     edx, eax
7845
                mov     eax, [esi+24h]
7846
                mov     [esi+5Ch], edx
7847
                mov     edx, [esi+44h]
7848
                mov     ebx, [esi+58h]
7849
                mov     ecx, eax
7850
                ror     ecx, 7
7851
                shr     eax, 3
7852
                mov     ebp, ebx
7853
                shr     ebx, 0Ah
7854
                xor     eax, ecx
7855
                ror     ecx, 0Bh
7856
                rol     ebp, 0Fh
7857
                xor     eax, ecx
7858
                xor     ebx, ebp
7859
                ror     ebp, 2
7860
                xor     ebx, ebp
7861
                add     edx, edi
7862
                add     eax, ebx
7863
                mov     edi, [esi+24h]
7864
                add     edx, eax
7865
                mov     eax, [esi+28h]
7866
                mov     [esi+60h], edx
7867
                mov     edx, [esi+48h]
7868
                mov     ebx, [esi+5Ch]
7869
                mov     ecx, eax
7870
                ror     ecx, 7
7871
                shr     eax, 3
7872
                mov     ebp, ebx
7873
                shr     ebx, 0Ah
7874
                xor     eax, ecx
7875
                ror     ecx, 0Bh
7876
                rol     ebp, 0Fh
7877
                xor     eax, ecx
7878
                xor     ebx, ebp
7879
                ror     ebp, 2
7880
                xor     ebx, ebp
7881
                add     edx, edi
7882
                add     eax, ebx
7883
                mov     edi, [esi+28h]
7884
                add     edx, eax
7885
                mov     eax, [esi+2Ch]
7886
                mov     [esi+64h], edx
7887
                mov     edx, [esi+4Ch]
7888
                mov     ebx, [esi+60h]
7889
                mov     ecx, eax
7890
                ror     ecx, 7
7891
                shr     eax, 3
7892
                mov     ebp, ebx
7893
                shr     ebx, 0Ah
7894
                xor     eax, ecx
7895
                ror     ecx, 0Bh
7896
                rol     ebp, 0Fh
7897
                xor     eax, ecx
7898
                xor     ebx, ebp
7899
                ror     ebp, 2
7900
                xor     ebx, ebp
7901
                add     edx, edi
7902
                add     eax, ebx
7903
                mov     edi, [esi+2Ch]
7904
                add     edx, eax
7905
                mov     eax, [esi+30h]
7906
                mov     [esi+68h], edx
7907
                mov     edx, [esi+50h]
7908
                mov     ebx, [esi+64h]
7909
                mov     ecx, eax
7910
                ror     ecx, 7
7911
                shr     eax, 3
7912
                mov     ebp, ebx
7913
                shr     ebx, 0Ah
7914
                xor     eax, ecx
7915
                ror     ecx, 0Bh
7916
                rol     ebp, 0Fh
7917
                xor     eax, ecx
7918
                xor     ebx, ebp
7919
                ror     ebp, 2
7920
                xor     ebx, ebp
7921
                add     edx, edi
7922
                add     eax, ebx
7923
                mov     edi, [esi+30h]
7924
                add     edx, eax
7925
                mov     eax, [esi+34h]
7926
                mov     [esi+6Ch], edx
7927
                mov     edx, [esi+54h]
7928
                mov     ebx, [esi+68h]
7929
                mov     ecx, eax
7930
                ror     ecx, 7
7931
                shr     eax, 3
7932
                mov     ebp, ebx
7933
                shr     ebx, 0Ah
7934
                xor     eax, ecx
7935
                ror     ecx, 0Bh
7936
                rol     ebp, 0Fh
7937
                xor     eax, ecx
7938
                xor     ebx, ebp
7939
                ror     ebp, 2
7940
                xor     ebx, ebp
7941
                add     edx, edi
7942
                add     eax, ebx
7943
                mov     edi, [esi+34h]
7944
                add     edx, eax
7945
                mov     eax, [esi+38h]
7946
                mov     [esi+70h], edx
7947
                mov     edx, [esi+58h]
7948
                mov     ebx, [esi+6Ch]
7949
                mov     ecx, eax
7950
                ror     ecx, 7
7951
                shr     eax, 3
7952
                mov     ebp, ebx
7953
                shr     ebx, 0Ah
7954
                xor     eax, ecx
7955
                ror     ecx, 0Bh
7956
                rol     ebp, 0Fh
7957
                xor     eax, ecx
7958
                xor     ebx, ebp
7959
                ror     ebp, 2
7960
                xor     ebx, ebp
7961
                add     edx, edi
7962
                add     eax, ebx
7963
                mov     edi, [esi+38h]
7964
                add     edx, eax
7965
                mov     eax, [esi+3Ch]
7966
                mov     [esi+74h], edx
7967
                mov     edx, [esi+5Ch]
7968
                mov     ebx, [esi+70h]
7969
                mov     ecx, eax
7970
                ror     ecx, 7
7971
                shr     eax, 3
7972
                mov     ebp, ebx
7973
                shr     ebx, 0Ah
7974
                xor     eax, ecx
7975
                ror     ecx, 0Bh
7976
                rol     ebp, 0Fh
7977
                xor     eax, ecx
7978
                xor     ebx, ebp
7979
                ror     ebp, 2
7980
                xor     ebx, ebp
7981
                add     edx, edi
7982
                add     eax, ebx
7983
                mov     edi, [esi+3Ch]
7984
                add     edx, eax
7985
                mov     eax, [esi+40h]
7986
                mov     [esi+78h], edx
7987
                mov     edx, [esi+60h]
7988
                mov     ebx, [esi+74h]
7989
                mov     ecx, eax
7990
                ror     ecx, 7
7991
                shr     eax, 3
7992
                mov     ebp, ebx
7993
                shr     ebx, 0Ah
7994
                xor     eax, ecx
7995
                ror     ecx, 0Bh
7996
                rol     ebp, 0Fh
7997
                xor     eax, ecx
7998
                xor     ebx, ebp
7999
                ror     ebp, 2
8000
                xor     ebx, ebp
8001
                add     edx, edi
8002
                add     eax, ebx
8003
                mov     edi, [esi+40h]
8004
                add     edx, eax
8005
                mov     eax, [esi+44h]
8006
                mov     [esi+7Ch], edx
8007
                mov     edx, [esi+64h]
8008
                mov     ebx, [esi+78h]
8009
                mov     ecx, eax
8010
                ror     ecx, 7
8011
                shr     eax, 3
8012
                mov     ebp, ebx
8013
                shr     ebx, 0Ah
8014
                xor     eax, ecx
8015
                ror     ecx, 0Bh
8016
                rol     ebp, 0Fh
8017
                xor     eax, ecx
8018
                xor     ebx, ebp
8019
                ror     ebp, 2
8020
                xor     ebx, ebp
8021
                add     edx, edi
8022
                add     eax, ebx
8023
                mov     edi, [esi+44h]
8024
                add     edx, eax
8025
                mov     eax, [esi+48h]
8026
                mov     [esi+80h], edx
8027
                mov     edx, [esi+68h]
8028
                mov     ebx, [esi+7Ch]
8029
                mov     ecx, eax
8030
                ror     ecx, 7
8031
                shr     eax, 3
8032
                mov     ebp, ebx
8033
                shr     ebx, 0Ah
8034
                xor     eax, ecx
8035
                ror     ecx, 0Bh
8036
                rol     ebp, 0Fh
8037
                xor     eax, ecx
8038
                xor     ebx, ebp
8039
                ror     ebp, 2
8040
                xor     ebx, ebp
8041
                add     edx, edi
8042
                add     eax, ebx
8043
                mov     edi, [esi+48h]
8044
                add     edx, eax
8045
                mov     eax, [esi+4Ch]
8046
                mov     [esi+84h], edx
8047
                mov     edx, [esi+6Ch]
8048
                mov     ebx, [esi+80h]
8049
                mov     ecx, eax
8050
                ror     ecx, 7
8051
                shr     eax, 3
8052
                mov     ebp, ebx
8053
                shr     ebx, 0Ah
8054
                xor     eax, ecx
8055
                ror     ecx, 0Bh
8056
                rol     ebp, 0Fh
8057
                xor     eax, ecx
8058
                xor     ebx, ebp
8059
                ror     ebp, 2
8060
                xor     ebx, ebp
8061
                add     edx, edi
8062
                add     eax, ebx
8063
                mov     edi, [esi+4Ch]
8064
                add     edx, eax
8065
                mov     eax, [esi+50h]
8066
                mov     [esi+88h], edx
8067
                mov     edx, [esi+70h]
8068
                mov     ebx, [esi+84h]
8069
                mov     ecx, eax
8070
                ror     ecx, 7
8071
                shr     eax, 3
8072
                mov     ebp, ebx
8073
                shr     ebx, 0Ah
8074
                xor     eax, ecx
8075
                ror     ecx, 0Bh
8076
                rol     ebp, 0Fh
8077
                xor     eax, ecx
8078
                xor     ebx, ebp
8079
                ror     ebp, 2
8080
                xor     ebx, ebp
8081
                add     edx, edi
8082
                add     eax, ebx
8083
                mov     edi, [esi+50h]
8084
                add     edx, eax
8085
                mov     eax, [esi+54h]
8086
                mov     [esi+8Ch], edx
8087
                mov     edx, [esi+74h]
8088
                mov     ebx, [esi+88h]
8089
                mov     ecx, eax
8090
                ror     ecx, 7
8091
                shr     eax, 3
8092
                mov     ebp, ebx
8093
                shr     ebx, 0Ah
8094
                xor     eax, ecx
8095
                ror     ecx, 0Bh
8096
                rol     ebp, 0Fh
8097
                xor     eax, ecx
8098
                xor     ebx, ebp
8099
                ror     ebp, 2
8100
                xor     ebx, ebp
8101
                add     edx, edi
8102
                add     eax, ebx
8103
                mov     edi, [esi+54h]
8104
                add     edx, eax
8105
                mov     eax, [esi+58h]
8106
                mov     [esi+90h], edx
8107
                mov     edx, [esi+78h]
8108
                mov     ebx, [esi+8Ch]
8109
                mov     ecx, eax
8110
                ror     ecx, 7
8111
                shr     eax, 3
8112
                mov     ebp, ebx
8113
                shr     ebx, 0Ah
8114
                xor     eax, ecx
8115
                ror     ecx, 0Bh
8116
                rol     ebp, 0Fh
8117
                xor     eax, ecx
8118
                xor     ebx, ebp
8119
                ror     ebp, 2
8120
                xor     ebx, ebp
8121
                add     edx, edi
8122
                add     eax, ebx
8123
                mov     edi, [esi+58h]
8124
                add     edx, eax
8125
                mov     eax, [esi+5Ch]
8126
                mov     [esi+94h], edx
8127
                mov     edx, [esi+7Ch]
8128
                mov     ebx, [esi+90h]
8129
                mov     ecx, eax
8130
                ror     ecx, 7
8131
                shr     eax, 3
8132
                mov     ebp, ebx
8133
                shr     ebx, 0Ah
8134
                xor     eax, ecx
8135
                ror     ecx, 0Bh
8136
                rol     ebp, 0Fh
8137
                xor     eax, ecx
8138
                xor     ebx, ebp
8139
                ror     ebp, 2
8140
                xor     ebx, ebp
8141
                add     edx, edi
8142
                add     eax, ebx
8143
                mov     edi, [esi+5Ch]
8144
                add     edx, eax
8145
                mov     eax, [esi+60h]
8146
                mov     [esi+98h], edx
8147
                mov     edx, [esi+80h]
8148
                mov     ebx, [esi+94h]
8149
                mov     ecx, eax
8150
                ror     ecx, 7
8151
                shr     eax, 3
8152
                mov     ebp, ebx
8153
                shr     ebx, 0Ah
8154
                xor     eax, ecx
8155
                ror     ecx, 0Bh
8156
                rol     ebp, 0Fh
8157
                xor     eax, ecx
8158
                xor     ebx, ebp
8159
                ror     ebp, 2
8160
                xor     ebx, ebp
8161
                add     edx, edi
8162
                add     eax, ebx
8163
                mov     edi, [esi+60h]
8164
                add     edx, eax
8165
                mov     eax, [esi+64h]
8166
                mov     [esi+9Ch], edx
8167
                mov     edx, [esi+84h]
8168
                mov     ebx, [esi+98h]
8169
                mov     ecx, eax
8170
                ror     ecx, 7
8171
                shr     eax, 3
8172
                mov     ebp, ebx
8173
                shr     ebx, 0Ah
8174
                xor     eax, ecx
8175
                ror     ecx, 0Bh
8176
                rol     ebp, 0Fh
8177
                xor     eax, ecx
8178
                xor     ebx, ebp
8179
                ror     ebp, 2
8180
                xor     ebx, ebp
8181
                add     edx, edi
8182
                add     eax, ebx
8183
                mov     edi, [esi+64h]
8184
                add     edx, eax
8185
                mov     eax, [esi+68h]
8186
                mov     [esi+0A0h], edx
8187
                mov     edx, [esi+88h]
8188
                mov     ebx, [esi+9Ch]
8189
                mov     ecx, eax
8190
                ror     ecx, 7
8191
                shr     eax, 3
8192
                mov     ebp, ebx
8193
                shr     ebx, 0Ah
8194
                xor     eax, ecx
8195
                ror     ecx, 0Bh
8196
                rol     ebp, 0Fh
8197
                xor     eax, ecx
8198
                xor     ebx, ebp
8199
                ror     ebp, 2
8200
                xor     ebx, ebp
8201
                add     edx, edi
8202
                add     eax, ebx
8203
                mov     edi, [esi+68h]
8204
                add     edx, eax
8205
                mov     eax, [esi+6Ch]
8206
                mov     [esi+0A4h], edx
8207
                mov     edx, [esi+8Ch]
8208
                mov     ebx, [esi+0A0h]
8209
                mov     ecx, eax
8210
                ror     ecx, 7
8211
                shr     eax, 3
8212
                mov     ebp, ebx
8213
                shr     ebx, 0Ah
8214
                xor     eax, ecx
8215
                ror     ecx, 0Bh
8216
                rol     ebp, 0Fh
8217
                xor     eax, ecx
8218
                xor     ebx, ebp
8219
                ror     ebp, 2
8220
                xor     ebx, ebp
8221
                add     edx, edi
8222
                add     eax, ebx
8223
                mov     edi, [esi+6Ch]
8224
                add     edx, eax
8225
                mov     eax, [esi+70h]
8226
                mov     [esi+0A8h], edx
8227
                mov     edx, [esi+90h]
8228
                mov     ebx, [esi+0A4h]
8229
                mov     ecx, eax
8230
                ror     ecx, 7
8231
                shr     eax, 3
8232
                mov     ebp, ebx
8233
                shr     ebx, 0Ah
8234
                xor     eax, ecx
8235
                ror     ecx, 0Bh
8236
                rol     ebp, 0Fh
8237
                xor     eax, ecx
8238
                xor     ebx, ebp
8239
                ror     ebp, 2
8240
                xor     ebx, ebp
8241
                add     edx, edi
8242
                add     eax, ebx
8243
                mov     edi, [esi+70h]
8244
                add     edx, eax
8245
                mov     eax, [esi+74h]
8246
                mov     [esi+0ACh], edx
8247
                mov     edx, [esi+94h]
8248
                mov     ebx, [esi+0A8h]
8249
                mov     ecx, eax
8250
                ror     ecx, 7
8251
                shr     eax, 3
8252
                mov     ebp, ebx
8253
                shr     ebx, 0Ah
8254
                xor     eax, ecx
8255
                ror     ecx, 0Bh
8256
                rol     ebp, 0Fh
8257
                xor     eax, ecx
8258
                xor     ebx, ebp
8259
                ror     ebp, 2
8260
                xor     ebx, ebp
8261
                add     edx, edi
8262
                add     eax, ebx
8263
                mov     edi, [esi+74h]
8264
                add     edx, eax
8265
                mov     eax, [esi+78h]
8266
                mov     [esi+0B0h], edx
8267
                mov     edx, [esi+98h]
8268
                mov     ebx, [esi+0ACh]
8269
                mov     ecx, eax
8270
                ror     ecx, 7
8271
                shr     eax, 3
8272
                mov     ebp, ebx
8273
                shr     ebx, 0Ah
8274
                xor     eax, ecx
8275
                ror     ecx, 0Bh
8276
                rol     ebp, 0Fh
8277
                xor     eax, ecx
8278
                xor     ebx, ebp
8279
                ror     ebp, 2
8280
                xor     ebx, ebp
8281
                add     edx, edi
8282
                add     eax, ebx
8283
                mov     edi, [esi+78h]
8284
                add     edx, eax
8285
                mov     eax, [esi+7Ch]
8286
                mov     [esi+0B4h], edx
8287
                mov     edx, [esi+9Ch]
8288
                mov     ebx, [esi+0B0h]
8289
                mov     ecx, eax
8290
                ror     ecx, 7
8291
                shr     eax, 3
8292
                mov     ebp, ebx
8293
                shr     ebx, 0Ah
8294
                xor     eax, ecx
8295
                ror     ecx, 0Bh
8296
                rol     ebp, 0Fh
8297
                xor     eax, ecx
8298
                xor     ebx, ebp
8299
                ror     ebp, 2
8300
                xor     ebx, ebp
8301
                add     edx, edi
8302
                add     eax, ebx
8303
                mov     edi, [esi+7Ch]
8304
                add     edx, eax
8305
                mov     eax, [esi+80h]
8306
                mov     [esi+0B8h], edx
8307
                mov     edx, [esi+0A0h]
8308
                mov     ebx, [esi+0B4h]
8309
                mov     ecx, eax
8310
                ror     ecx, 7
8311
                shr     eax, 3
8312
                mov     ebp, ebx
8313
                shr     ebx, 0Ah
8314
                xor     eax, ecx
8315
                ror     ecx, 0Bh
8316
                rol     ebp, 0Fh
8317
                xor     eax, ecx
8318
                xor     ebx, ebp
8319
                ror     ebp, 2
8320
                xor     ebx, ebp
8321
                add     edx, edi
8322
                add     eax, ebx
8323
                mov     edi, [esi+80h]
8324
                add     edx, eax
8325
                mov     eax, [esi+84h]
8326
                mov     [esi+0BCh], edx
8327
                mov     edx, [esi+0A4h]
8328
                mov     ebx, [esi+0B8h]
8329
                mov     ecx, eax
8330
                ror     ecx, 7
8331
                shr     eax, 3
8332
                mov     ebp, ebx
8333
                shr     ebx, 0Ah
8334
                xor     eax, ecx
8335
                ror     ecx, 0Bh
8336
                rol     ebp, 0Fh
8337
                xor     eax, ecx
8338
                xor     ebx, ebp
8339
                ror     ebp, 2
8340
                xor     ebx, ebp
8341
                add     edx, edi
8342
                add     eax, ebx
8343
                mov     edi, [esi+84h]
8344
                add     edx, eax
8345
                mov     eax, [esi+88h]
8346
                mov     [esi+0C0h], edx
8347
                mov     edx, [esi+0A8h]
8348
                mov     ebx, [esi+0BCh]
8349
                mov     ecx, eax
8350
                ror     ecx, 7
8351
                shr     eax, 3
8352
                mov     ebp, ebx
8353
                shr     ebx, 0Ah
8354
                xor     eax, ecx
8355
                ror     ecx, 0Bh
8356
                rol     ebp, 0Fh
8357
                xor     eax, ecx
8358
                xor     ebx, ebp
8359
                ror     ebp, 2
8360
                xor     ebx, ebp
8361
                add     edx, edi
8362
                add     eax, ebx
8363
                mov     edi, [esi+88h]
8364
                add     edx, eax
8365
                mov     eax, [esi+8Ch]
8366
                mov     [esi+0C4h], edx
8367
                mov     edx, [esi+0ACh]
8368
                mov     ebx, [esi+0C0h]
8369
                mov     ecx, eax
8370
                ror     ecx, 7
8371
                shr     eax, 3
8372
                mov     ebp, ebx
8373
                shr     ebx, 0Ah
8374
                xor     eax, ecx
8375
                ror     ecx, 0Bh
8376
                rol     ebp, 0Fh
8377
                xor     eax, ecx
8378
                xor     ebx, ebp
8379
                ror     ebp, 2
8380
                xor     ebx, ebp
8381
                add     edx, edi
8382
                add     eax, ebx
8383
                mov     edi, [esi+8Ch]
8384
                add     edx, eax
8385
                mov     eax, [esi+90h]
8386
                mov     [esi+0C8h], edx
8387
                mov     edx, [esi+0B0h]
8388
                mov     ebx, [esi+0C4h]
8389
                mov     ecx, eax
8390
                ror     ecx, 7
8391
                shr     eax, 3
8392
                mov     ebp, ebx
8393
                shr     ebx, 0Ah
8394
                xor     eax, ecx
8395
                ror     ecx, 0Bh
8396
                rol     ebp, 0Fh
8397
                xor     eax, ecx
8398
                xor     ebx, ebp
8399
                ror     ebp, 2
8400
                xor     ebx, ebp
8401
                add     edx, edi
8402
                add     eax, ebx
8403
                mov     edi, [esi+90h]
8404
                add     edx, eax
8405
                mov     eax, [esi+94h]
8406
                mov     [esi+0CCh], edx
8407
                mov     edx, [esi+0B4h]
8408
                mov     ebx, [esi+0C8h]
8409
                mov     ecx, eax
8410
                ror     ecx, 7
8411
                shr     eax, 3
8412
                mov     ebp, ebx
8413
                shr     ebx, 0Ah
8414
                xor     eax, ecx
8415
                ror     ecx, 0Bh
8416
                rol     ebp, 0Fh
8417
                xor     eax, ecx
8418
                xor     ebx, ebp
8419
                ror     ebp, 2
8420
                xor     ebx, ebp
8421
                add     edx, edi
8422
                add     eax, ebx
8423
                mov     edi, [esi+94h]
8424
                add     edx, eax
8425
                mov     eax, [esi+98h]
8426
                mov     [esi+0D0h], edx
8427
                mov     edx, [esi+0B8h]
8428
                mov     ebx, [esi+0CCh]
8429
                mov     ecx, eax
8430
                ror     ecx, 7
8431
                shr     eax, 3
8432
                mov     ebp, ebx
8433
                shr     ebx, 0Ah
8434
                xor     eax, ecx
8435
                ror     ecx, 0Bh
8436
                rol     ebp, 0Fh
8437
                xor     eax, ecx
8438
                xor     ebx, ebp
8439
                ror     ebp, 2
8440
                xor     ebx, ebp
8441
                add     edx, edi
8442
                add     eax, ebx
8443
                mov     edi, [esi+98h]
8444
                add     edx, eax
8445
                mov     eax, [esi+9Ch]
8446
                mov     [esi+0D4h], edx
8447
                mov     edx, [esi+0BCh]
8448
                mov     ebx, [esi+0D0h]
8449
                mov     ecx, eax
8450
                ror     ecx, 7
8451
                shr     eax, 3
8452
                mov     ebp, ebx
8453
                shr     ebx, 0Ah
8454
                xor     eax, ecx
8455
                ror     ecx, 0Bh
8456
                rol     ebp, 0Fh
8457
                xor     eax, ecx
8458
                xor     ebx, ebp
8459
                ror     ebp, 2
8460
                xor     ebx, ebp
8461
                add     edx, edi
8462
                add     eax, ebx
8463
                mov     edi, [esi+9Ch]
8464
                add     edx, eax
8465
                mov     eax, [esi+0A0h]
8466
                mov     [esi+0D8h], edx
8467
                mov     edx, [esi+0C0h]
8468
                mov     ebx, [esi+0D4h]
8469
                mov     ecx, eax
8470
                ror     ecx, 7
8471
                shr     eax, 3
8472
                mov     ebp, ebx
8473
                shr     ebx, 0Ah
8474
                xor     eax, ecx
8475
                ror     ecx, 0Bh
8476
                rol     ebp, 0Fh
8477
                xor     eax, ecx
8478
                xor     ebx, ebp
8479
                ror     ebp, 2
8480
                xor     ebx, ebp
8481
                add     edx, edi
8482
                add     eax, ebx
8483
                mov     edi, [esi+0A0h]
8484
                add     edx, eax
8485
                mov     eax, [esi+0A4h]
8486
                mov     [esi+0DCh], edx
8487
                mov     edx, [esi+0C4h]
8488
                mov     ebx, [esi+0D8h]
8489
                mov     ecx, eax
8490
                ror     ecx, 7
8491
                shr     eax, 3
8492
                mov     ebp, ebx
8493
                shr     ebx, 0Ah
8494
                xor     eax, ecx
8495
                ror     ecx, 0Bh
8496
                rol     ebp, 0Fh
8497
                xor     eax, ecx
8498
                xor     ebx, ebp
8499
                ror     ebp, 2
8500
                xor     ebx, ebp
8501
                add     edx, edi
8502
                add     eax, ebx
8503
                mov     edi, [esi+0A4h]
8504
                add     edx, eax
8505
                mov     eax, [esi+0A8h]
8506
                mov     [esi+0E0h], edx
8507
                mov     edx, [esi+0C8h]
8508
                mov     ebx, [esi+0DCh]
8509
                mov     ecx, eax
8510
                ror     ecx, 7
8511
                shr     eax, 3
8512
                mov     ebp, ebx
8513
                shr     ebx, 0Ah
8514
                xor     eax, ecx
8515
                ror     ecx, 0Bh
8516
                rol     ebp, 0Fh
8517
                xor     eax, ecx
8518
                xor     ebx, ebp
8519
                ror     ebp, 2
8520
                xor     ebx, ebp
8521
                add     edx, edi
8522
                add     eax, ebx
8523
                mov     edi, [esi+0A8h]
8524
                add     edx, eax
8525
                mov     eax, [esi+0ACh]
8526
                mov     [esi+0E4h], edx
8527
                mov     edx, [esi+0CCh]
8528
                mov     ebx, [esi+0E0h]
8529
                mov     ecx, eax
8530
                ror     ecx, 7
8531
                shr     eax, 3
8532
                mov     ebp, ebx
8533
                shr     ebx, 0Ah
8534
                xor     eax, ecx
8535
                ror     ecx, 0Bh
8536
                rol     ebp, 0Fh
8537
                xor     eax, ecx
8538
                xor     ebx, ebp
8539
                ror     ebp, 2
8540
                xor     ebx, ebp
8541
                add     edx, edi
8542
                add     eax, ebx
8543
                mov     edi, [esi+0ACh]
8544
                add     edx, eax
8545
                mov     eax, [esi+0B0h]
8546
                mov     [esi+0E8h], edx
8547
                mov     edx, [esi+0D0h]
8548
                mov     ebx, [esi+0E4h]
8549
                mov     ecx, eax
8550
                ror     ecx, 7
8551
                shr     eax, 3
8552
                mov     ebp, ebx
8553
                shr     ebx, 0Ah
8554
                xor     eax, ecx
8555
                ror     ecx, 0Bh
8556
                rol     ebp, 0Fh
8557
                xor     eax, ecx
8558
                xor     ebx, ebp
8559
                ror     ebp, 2
8560
                xor     ebx, ebp
8561
                add     edx, edi
8562
                add     eax, ebx
8563
                mov     edi, [esi+0B0h]
8564
                add     edx, eax
8565
                mov     eax, [esi+0B4h]
8566
                mov     [esi+0ECh], edx
8567
                mov     edx, [esi+0D4h]
8568
                mov     ebx, [esi+0E8h]
8569
                mov     ecx, eax
8570
                ror     ecx, 7
8571
                shr     eax, 3
8572
                mov     ebp, ebx
8573
                shr     ebx, 0Ah
8574
                xor     eax, ecx
8575
                ror     ecx, 0Bh
8576
                rol     ebp, 0Fh
8577
                xor     eax, ecx
8578
                xor     ebx, ebp
8579
                ror     ebp, 2
8580
                xor     ebx, ebp
8581
                add     edx, edi
8582
                add     eax, ebx
8583
                mov     edi, [esi+0B4h]
8584
                add     edx, eax
8585
                mov     eax, [esi+0B8h]
8586
                mov     [esi+0F0h], edx
8587
                mov     edx, [esi+0D8h]
8588
                mov     ebx, [esi+0ECh]
8589
                mov     ecx, eax
8590
                ror     ecx, 7
8591
                shr     eax, 3
8592
                mov     ebp, ebx
8593
                shr     ebx, 0Ah
8594
                xor     eax, ecx
8595
                ror     ecx, 0Bh
8596
                rol     ebp, 0Fh
8597
                xor     eax, ecx
8598
                xor     ebx, ebp
8599
                ror     ebp, 2
8600
                xor     ebx, ebp
8601
                add     edx, edi
8602
                add     eax, ebx
8603
                mov     edi, [esi+0B8h]
8604
                add     edx, eax
8605
                mov     eax, [esi+0BCh]
8606
                mov     [esi+0F4h], edx
8607
                mov     edx, [esi+0DCh]
8608
                mov     ebx, [esi+0F0h]
8609
                mov     ecx, eax
8610
                ror     ecx, 7
8611
                shr     eax, 3
8612
                mov     ebp, ebx
8613
                shr     ebx, 0Ah
8614
                xor     eax, ecx
8615
                ror     ecx, 0Bh
8616
                rol     ebp, 0Fh
8617
                xor     eax, ecx
8618
                xor     ebx, ebp
8619
                ror     ebp, 2
8620
                xor     ebx, ebp
8621
                add     edx, edi
8622
                add     eax, ebx
8623
                mov     edi, [esi+0BCh]
8624
                add     edx, eax
8625
                mov     eax, [esi+0C0h]
8626
                mov     [esi+0F8h], edx
8627
                mov     edx, [esi+0E0h]
8628
                mov     ebx, [esi+0F4h]
8629
                mov     ecx, eax
8630
                ror     ecx, 7
8631
                shr     eax, 3
8632
                mov     ebp, ebx
8633
                shr     ebx, 0Ah
8634
                xor     eax, ecx
8635
                ror     ecx, 0Bh
8636
                rol     ebp, 0Fh
8637
                xor     eax, ecx
8638
                xor     ebx, ebp
8639
                ror     ebp, 2
8640
                xor     ebx, ebp
8641
                add     edx, edi
8642
                add     eax, ebx
8643
                mov     edi, [esi+0C0h]
8644
                add     edx, eax
8645
                mov     eax, [esi+0C4h]
8646
                mov     [esi+0FCh], edx
8647
                mov     edi, [esp+24h]
8648
                mov     eax, [edi]
8649
                mov     ebx, [edi+4]
8650
                mov     ecx, [edi+8]
8651
                mov     edx, [edi+0Ch]
8652
                mov     [esp], eax
8653
                mov     [esp+4], ebx
8654
                mov     [esp+8], ecx
8655
                mov     [esp+0Ch], edx
8656
                mov     eax, [edi+10h]
8657
                mov     ebx, [edi+14h]
8658
                mov     ecx, [edi+18h]
8659
                mov     edx, [edi+1Ch]
8660
                mov     [esp+10h], eax
8661
                mov     [esp+14h], ebx
8662
                mov     [esp+18h], ecx
8663
                mov     [esp+1Ch], edx
8664
                mov     ebp, eax
8665
                mov     edi, eax
8666
                ror     ebp, 6
8667
                rol     edi, 7
8668
                xor     edi, ebp
8669
                ror     ebp, 5
8670
                xor     edi, ebp
8671
                mov     ebp, ebx
8672
                xor     ebp, ecx
8673
                and     ebp, eax
8674
                lea     edx, [edi+edx+428A2F98h]
8675
                mov     edi, [esp+4]
8676
                xor     ebp, ecx
8677
                add     edx, [esi]
8678
                add     edx, ebp
8679
                mov     ebp, [esp+8]
8680
                mov     eax, edi
8681
                and     edi, ebp
8682
                or      eax, ebp
8683
                mov     ebp, [esp]
8684
                and     eax, ebp
8685
                ror     ebp, 2
8686
                or      eax, edi
8687
                mov     edi, ebp
8688
                rol     edi, 0Ch
8689
                add     eax, edx
8690
                xor     ebp, edi
8691
                add     edx, [esp+0Ch]
8692
                rol     edi, 9
8693
                xor     ebp, edi
8694
                mov     [esp+0Ch], edx
8695
                add     eax, ebp
8696
                mov     [esp+1Ch], eax
8697
                mov     eax, [esp+10h]
8698
                mov     ebp, edx
8699
                mov     edi, edx
8700
                ror     ebp, 6
8701
                rol     edi, 7
8702
                xor     edi, ebp
8703
                ror     ebp, 5
8704
                xor     edi, ebp
8705
                mov     ebp, eax
8706
                xor     ebp, ebx
8707
                and     ebp, edx
8708
                lea     ecx, [edi+ecx+71374491h]
8709
                mov     edi, [esp]
8710
                xor     ebp, ebx
8711
                add     ecx, [esi+4]
8712
                add     ecx, ebp
8713
                mov     ebp, [esp+4]
8714
                mov     edx, edi
8715
                and     edi, ebp
8716
                or      edx, ebp
8717
                mov     ebp, [esp+1Ch]
8718
                and     edx, ebp
8719
                ror     ebp, 2
8720
                or      edx, edi
8721
                mov     edi, ebp
8722
                rol     edi, 0Ch
8723
                add     edx, ecx
8724
                xor     ebp, edi
8725
                add     ecx, [esp+8]
8726
                rol     edi, 9
8727
                xor     ebp, edi
8728
                mov     [esp+8], ecx
8729
                add     edx, ebp
8730
                mov     [esp+18h], edx
8731
                mov     edx, [esp+0Ch]
8732
                mov     ebp, ecx
8733
                mov     edi, ecx
8734
                ror     ebp, 6
8735
                rol     edi, 7
8736
                xor     edi, ebp
8737
                ror     ebp, 5
8738
                xor     edi, ebp
8739
                mov     ebp, edx
8740
                xor     ebp, eax
8741
                and     ebp, ecx
8742
                lea     ebx, [edi+ebx-4A3F0431h]
8743
                mov     edi, [esp+1Ch]
8744
                xor     ebp, eax
8745
                add     ebx, [esi+8]
8746
                add     ebx, ebp
8747
                mov     ebp, [esp]
8748
                mov     ecx, edi
8749
                and     edi, ebp
8750
                or      ecx, ebp
8751
                mov     ebp, [esp+18h]
8752
                and     ecx, ebp
8753
                ror     ebp, 2
8754
                or      ecx, edi
8755
                mov     edi, ebp
8756
                rol     edi, 0Ch
8757
                add     ecx, ebx
8758
                xor     ebp, edi
8759
                add     ebx, [esp+4]
8760
                rol     edi, 9
8761
                xor     ebp, edi
8762
                mov     [esp+4], ebx
8763
                add     ecx, ebp
8764
                mov     [esp+14h], ecx
8765
                mov     ecx, [esp+8]
8766
                mov     ebp, ebx
8767
                mov     edi, ebx
8768
                ror     ebp, 6
8769
                rol     edi, 7
8770
                xor     edi, ebp
8771
                ror     ebp, 5
8772
                xor     edi, ebp
8773
                mov     ebp, ecx
8774
                xor     ebp, edx
8775
                and     ebp, ebx
8776
                lea     eax, [edi+eax-164A245Bh]
8777
                mov     edi, [esp+18h]
8778
                xor     ebp, edx
8779
                add     eax, [esi+0Ch]
8780
                add     eax, ebp
8781
                mov     ebp, [esp+1Ch]
8782
                mov     ebx, edi
8783
                and     edi, ebp
8784
                or      ebx, ebp
8785
                mov     ebp, [esp+14h]
8786
                and     ebx, ebp
8787
                ror     ebp, 2
8788
                or      ebx, edi
8789
                mov     edi, ebp
8790
                rol     edi, 0Ch
8791
                add     ebx, eax
8792
                xor     ebp, edi
8793
                add     eax, [esp]
8794
                rol     edi, 9
8795
                xor     ebp, edi
8796
                mov     [esp], eax
8797
                add     ebx, ebp
8798
                mov     [esp+10h], ebx
8799
                mov     ebx, [esp+4]
8800
                mov     ebp, eax
8801
                mov     edi, eax
8802
                ror     ebp, 6
8803
                rol     edi, 7
8804
                xor     edi, ebp
8805
                ror     ebp, 5
8806
                xor     edi, ebp
8807
                mov     ebp, ebx
8808
                xor     ebp, ecx
8809
                and     ebp, eax
8810
                lea     edx, [edi+edx+3956C25Bh]
8811
                mov     edi, [esp+14h]
8812
                xor     ebp, ecx
8813
                add     edx, [esi+10h]
8814
                add     edx, ebp
8815
                mov     ebp, [esp+18h]
8816
                mov     eax, edi
8817
                and     edi, ebp
8818
                or      eax, ebp
8819
                mov     ebp, [esp+10h]
8820
                and     eax, ebp
8821
                ror     ebp, 2
8822
                or      eax, edi
8823
                mov     edi, ebp
8824
                rol     edi, 0Ch
8825
                add     eax, edx
8826
                xor     ebp, edi
8827
                add     edx, [esp+1Ch]
8828
                rol     edi, 9
8829
                xor     ebp, edi
8830
                mov     [esp+1Ch], edx
8831
                add     eax, ebp
8832
                mov     [esp+0Ch], eax
8833
                mov     eax, [esp]
8834
                mov     ebp, edx
8835
                mov     edi, edx
8836
                ror     ebp, 6
8837
                rol     edi, 7
8838
                xor     edi, ebp
8839
                ror     ebp, 5
8840
                xor     edi, ebp
8841
                mov     ebp, eax
8842
                xor     ebp, ebx
8843
                and     ebp, edx
8844
                lea     ecx, [edi+ecx+59F111F1h]
8845
                mov     edi, [esp+10h]
8846
                xor     ebp, ebx
8847
                add     ecx, [esi+14h]
8848
                add     ecx, ebp
8849
                mov     ebp, [esp+14h]
8850
                mov     edx, edi
8851
                and     edi, ebp
8852
                or      edx, ebp
8853
                mov     ebp, [esp+0Ch]
8854
                and     edx, ebp
8855
                ror     ebp, 2
8856
                or      edx, edi
8857
                mov     edi, ebp
8858
                rol     edi, 0Ch
8859
                add     edx, ecx
8860
                xor     ebp, edi
8861
                add     ecx, [esp+18h]
8862
                rol     edi, 9
8863
                xor     ebp, edi
8864
                mov     [esp+18h], ecx
8865
                add     edx, ebp
8866
                mov     [esp+8], edx
8867
                mov     edx, [esp+1Ch]
8868
                mov     ebp, ecx
8869
                mov     edi, ecx
8870
                ror     ebp, 6
8871
                rol     edi, 7
8872
                xor     edi, ebp
8873
                ror     ebp, 5
8874
                xor     edi, ebp
8875
                mov     ebp, edx
8876
                xor     ebp, eax
8877
                and     ebp, ecx
8878
                lea     ebx, [edi+ebx-6DC07D5Ch]
8879
                mov     edi, [esp+0Ch]
8880
                xor     ebp, eax
8881
                add     ebx, [esi+18h]
8882
                add     ebx, ebp
8883
                mov     ebp, [esp+10h]
8884
                mov     ecx, edi
8885
                and     edi, ebp
8886
                or      ecx, ebp
8887
                mov     ebp, [esp+8]
8888
                and     ecx, ebp
8889
                ror     ebp, 2
8890
                or      ecx, edi
8891
                mov     edi, ebp
8892
                rol     edi, 0Ch
8893
                add     ecx, ebx
8894
                xor     ebp, edi
8895
                add     ebx, [esp+14h]
8896
                rol     edi, 9
8897
                xor     ebp, edi
8898
                mov     [esp+14h], ebx
8899
                add     ecx, ebp
8900
                mov     [esp+4], ecx
8901
                mov     ecx, [esp+18h]
8902
                mov     ebp, ebx
8903
                mov     edi, ebx
8904
                ror     ebp, 6
8905
                rol     edi, 7
8906
                xor     edi, ebp
8907
                ror     ebp, 5
8908
                xor     edi, ebp
8909
                mov     ebp, ecx
8910
                xor     ebp, edx
8911
                and     ebp, ebx
8912
                lea     eax, [edi+eax-54E3A12Bh]
8913
                mov     edi, [esp+8]
8914
                xor     ebp, edx
8915
                add     eax, [esi+1Ch]
8916
                add     eax, ebp
8917
                mov     ebp, [esp+0Ch]
8918
                mov     ebx, edi
8919
                and     edi, ebp
8920
                or      ebx, ebp
8921
                mov     ebp, [esp+4]
8922
                and     ebx, ebp
8923
                ror     ebp, 2
8924
                or      ebx, edi
8925
                mov     edi, ebp
8926
                rol     edi, 0Ch
8927
                add     ebx, eax
8928
                xor     ebp, edi
8929
                add     eax, [esp+10h]
8930
                rol     edi, 9
8931
                xor     ebp, edi
8932
                mov     [esp+10h], eax
8933
                add     ebx, ebp
8934
                mov     [esp], ebx
8935
                mov     ebx, [esp+14h]
8936
                mov     ebp, eax
8937
                mov     edi, eax
8938
                ror     ebp, 6
8939
                rol     edi, 7
8940
                xor     edi, ebp
8941
                ror     ebp, 5
8942
                xor     edi, ebp
8943
                mov     ebp, ebx
8944
                xor     ebp, ecx
8945
                and     ebp, eax
8946
                lea     edx, [edi+edx-27F85568h]
8947
                mov     edi, [esp+4]
8948
                xor     ebp, ecx
8949
                add     edx, [esi+20h]
8950
                add     edx, ebp
8951
                mov     ebp, [esp+8]
8952
                mov     eax, edi
8953
                and     edi, ebp
8954
                or      eax, ebp
8955
                mov     ebp, [esp]
8956
                and     eax, ebp
8957
                ror     ebp, 2
8958
                or      eax, edi
8959
                mov     edi, ebp
8960
                rol     edi, 0Ch
8961
                add     eax, edx
8962
                xor     ebp, edi
8963
                add     edx, [esp+0Ch]
8964
                rol     edi, 9
8965
                xor     ebp, edi
8966
                mov     [esp+0Ch], edx
8967
                add     eax, ebp
8968
                mov     [esp+1Ch], eax
8969
                mov     eax, [esp+10h]
8970
                mov     ebp, edx
8971
                mov     edi, edx
8972
                ror     ebp, 6
8973
                rol     edi, 7
8974
                xor     edi, ebp
8975
                ror     ebp, 5
8976
                xor     edi, ebp
8977
                mov     ebp, eax
8978
                xor     ebp, ebx
8979
                and     ebp, edx
8980
                lea     ecx, [edi+ecx+12835B01h]
8981
                mov     edi, [esp]
8982
                xor     ebp, ebx
8983
                add     ecx, [esi+24h]
8984
                add     ecx, ebp
8985
                mov     ebp, [esp+4]
8986
                mov     edx, edi
8987
                and     edi, ebp
8988
                or      edx, ebp
8989
                mov     ebp, [esp+1Ch]
8990
                and     edx, ebp
8991
                ror     ebp, 2
8992
                or      edx, edi
8993
                mov     edi, ebp
8994
                rol     edi, 0Ch
8995
                add     edx, ecx
8996
                xor     ebp, edi
8997
                add     ecx, [esp+8]
8998
                rol     edi, 9
8999
                xor     ebp, edi
9000
                mov     [esp+8], ecx
9001
                add     edx, ebp
9002
                mov     [esp+18h], edx
9003
                mov     edx, [esp+0Ch]
9004
                mov     ebp, ecx
9005
                mov     edi, ecx
9006
                ror     ebp, 6
9007
                rol     edi, 7
9008
                xor     edi, ebp
9009
                ror     ebp, 5
9010
                xor     edi, ebp
9011
                mov     ebp, edx
9012
                xor     ebp, eax
9013
                and     ebp, ecx
9014
                lea     ebx, [edi+ebx+243185BEh]
9015
                mov     edi, [esp+1Ch]
9016
                xor     ebp, eax
9017
                add     ebx, [esi+28h]
9018
                add     ebx, ebp
9019
                mov     ebp, [esp]
9020
                mov     ecx, edi
9021
                and     edi, ebp
9022
                or      ecx, ebp
9023
                mov     ebp, [esp+18h]
9024
                and     ecx, ebp
9025
                ror     ebp, 2
9026
                or      ecx, edi
9027
                mov     edi, ebp
9028
                rol     edi, 0Ch
9029
                add     ecx, ebx
9030
                xor     ebp, edi
9031
                add     ebx, [esp+4]
9032
                rol     edi, 9
9033
                xor     ebp, edi
9034
                mov     [esp+4], ebx
9035
                add     ecx, ebp
9036
                mov     [esp+14h], ecx
9037
                mov     ecx, [esp+8]
9038
                mov     ebp, ebx
9039
                mov     edi, ebx
9040
                ror     ebp, 6
9041
                rol     edi, 7
9042
                xor     edi, ebp
9043
                ror     ebp, 5
9044
                xor     edi, ebp
9045
                mov     ebp, ecx
9046
                xor     ebp, edx
9047
                and     ebp, ebx
9048
                lea     eax, [edi+eax+550C7DC3h]
9049
                mov     edi, [esp+18h]
9050
                xor     ebp, edx
9051
                add     eax, [esi+2Ch]
9052
                add     eax, ebp
9053
                mov     ebp, [esp+1Ch]
9054
                mov     ebx, edi
9055
                and     edi, ebp
9056
                or      ebx, ebp
9057
                mov     ebp, [esp+14h]
9058
                and     ebx, ebp
9059
                ror     ebp, 2
9060
                or      ebx, edi
9061
                mov     edi, ebp
9062
                rol     edi, 0Ch
9063
                add     ebx, eax
9064
                xor     ebp, edi
9065
                add     eax, [esp]
9066
                rol     edi, 9
9067
                xor     ebp, edi
9068
                mov     [esp], eax
9069
                add     ebx, ebp
9070
                mov     [esp+10h], ebx
9071
                mov     ebx, [esp+4]
9072
                mov     ebp, eax
9073
                mov     edi, eax
9074
                ror     ebp, 6
9075
                rol     edi, 7
9076
                xor     edi, ebp
9077
                ror     ebp, 5
9078
                xor     edi, ebp
9079
                mov     ebp, ebx
9080
                xor     ebp, ecx
9081
                and     ebp, eax
9082
                lea     edx, [edi+edx+72BE5D74h]
9083
                mov     edi, [esp+14h]
9084
                xor     ebp, ecx
9085
                add     edx, [esi+30h]
9086
                add     edx, ebp
9087
                mov     ebp, [esp+18h]
9088
                mov     eax, edi
9089
                and     edi, ebp
9090
                or      eax, ebp
9091
                mov     ebp, [esp+10h]
9092
                and     eax, ebp
9093
                ror     ebp, 2
9094
                or      eax, edi
9095
                mov     edi, ebp
9096
                rol     edi, 0Ch
9097
                add     eax, edx
9098
                xor     ebp, edi
9099
                add     edx, [esp+1Ch]
9100
                rol     edi, 9
9101
                xor     ebp, edi
9102
                mov     [esp+1Ch], edx
9103
                add     eax, ebp
9104
                mov     [esp+0Ch], eax
9105
                mov     eax, [esp]
9106
                mov     ebp, edx
9107
                mov     edi, edx
9108
                ror     ebp, 6
9109
                rol     edi, 7
9110
                xor     edi, ebp
9111
                ror     ebp, 5
9112
                xor     edi, ebp
9113
                mov     ebp, eax
9114
                xor     ebp, ebx
9115
                and     ebp, edx
9116
                lea     ecx, [edi+ecx-7F214E02h]
9117
                mov     edi, [esp+10h]
9118
                xor     ebp, ebx
9119
                add     ecx, [esi+34h]
9120
                add     ecx, ebp
9121
                mov     ebp, [esp+14h]
9122
                mov     edx, edi
9123
                and     edi, ebp
9124
                or      edx, ebp
9125
                mov     ebp, [esp+0Ch]
9126
                and     edx, ebp
9127
                ror     ebp, 2
9128
                or      edx, edi
9129
                mov     edi, ebp
9130
                rol     edi, 0Ch
9131
                add     edx, ecx
9132
                xor     ebp, edi
9133
                add     ecx, [esp+18h]
9134
                rol     edi, 9
9135
                xor     ebp, edi
9136
                mov     [esp+18h], ecx
9137
                add     edx, ebp
9138
                mov     [esp+8], edx
9139
                mov     edx, [esp+1Ch]
9140
                mov     ebp, ecx
9141
                mov     edi, ecx
9142
                ror     ebp, 6
9143
                rol     edi, 7
9144
                xor     edi, ebp
9145
                ror     ebp, 5
9146
                xor     edi, ebp
9147
                mov     ebp, edx
9148
                xor     ebp, eax
9149
                and     ebp, ecx
9150
                lea     ebx, [edi+ebx-6423F959h]
9151
                mov     edi, [esp+0Ch]
9152
                xor     ebp, eax
9153
                add     ebx, [esi+38h]
9154
                add     ebx, ebp
9155
                mov     ebp, [esp+10h]
9156
                mov     ecx, edi
9157
                and     edi, ebp
9158
                or      ecx, ebp
9159
                mov     ebp, [esp+8]
9160
                and     ecx, ebp
9161
                ror     ebp, 2
9162
                or      ecx, edi
9163
                mov     edi, ebp
9164
                rol     edi, 0Ch
9165
                add     ecx, ebx
9166
                xor     ebp, edi
9167
                add     ebx, [esp+14h]
9168
                rol     edi, 9
9169
                xor     ebp, edi
9170
                mov     [esp+14h], ebx
9171
                add     ecx, ebp
9172
                mov     [esp+4], ecx
9173
                mov     ecx, [esp+18h]
9174
                mov     ebp, ebx
9175
                mov     edi, ebx
9176
                ror     ebp, 6
9177
                rol     edi, 7
9178
                xor     edi, ebp
9179
                ror     ebp, 5
9180
                xor     edi, ebp
9181
                mov     ebp, ecx
9182
                xor     ebp, edx
9183
                and     ebp, ebx
9184
                lea     eax, [edi+eax-3E640E8Ch]
9185
                mov     edi, [esp+8]
9186
                xor     ebp, edx
9187
                add     eax, [esi+3Ch]
9188
                add     eax, ebp
9189
                mov     ebp, [esp+0Ch]
9190
                mov     ebx, edi
9191
                and     edi, ebp
9192
                or      ebx, ebp
9193
                mov     ebp, [esp+4]
9194
                and     ebx, ebp
9195
                ror     ebp, 2
9196
                or      ebx, edi
9197
                mov     edi, ebp
9198
                rol     edi, 0Ch
9199
                add     ebx, eax
9200
                xor     ebp, edi
9201
                add     eax, [esp+10h]
9202
                rol     edi, 9
9203
                xor     ebp, edi
9204
                mov     [esp+10h], eax
9205
                add     ebx, ebp
9206
                mov     [esp], ebx
9207
                mov     ebx, [esp+14h]
9208
                mov     ebp, eax
9209
                mov     edi, eax
9210
                ror     ebp, 6
9211
                rol     edi, 7
9212
                xor     edi, ebp
9213
                ror     ebp, 5
9214
                xor     edi, ebp
9215
                mov     ebp, ebx
9216
                xor     ebp, ecx
9217
                and     ebp, eax
9218
                lea     edx, [edi+edx-1B64963Fh]
9219
                mov     edi, [esp+4]
9220
                xor     ebp, ecx
9221
                add     edx, [esi+40h]
9222
                add     edx, ebp
9223
                mov     ebp, [esp+8]
9224
                mov     eax, edi
9225
                and     edi, ebp
9226
                or      eax, ebp
9227
                mov     ebp, [esp]
9228
                and     eax, ebp
9229
                ror     ebp, 2
9230
                or      eax, edi
9231
                mov     edi, ebp
9232
                rol     edi, 0Ch
9233
                add     eax, edx
9234
                xor     ebp, edi
9235
                add     edx, [esp+0Ch]
9236
                rol     edi, 9
9237
                xor     ebp, edi
9238
                mov     [esp+0Ch], edx
9239
                add     eax, ebp
9240
                mov     [esp+1Ch], eax
9241
                mov     eax, [esp+10h]
9242
                mov     ebp, edx
9243
                mov     edi, edx
9244
                ror     ebp, 6
9245
                rol     edi, 7
9246
                xor     edi, ebp
9247
                ror     ebp, 5
9248
                xor     edi, ebp
9249
                mov     ebp, eax
9250
                xor     ebp, ebx
9251
                and     ebp, edx
9252
                lea     ecx, [edi+ecx-1041B87Ah]
9253
                mov     edi, [esp]
9254
                xor     ebp, ebx
9255
                add     ecx, [esi+44h]
9256
                add     ecx, ebp
9257
                mov     ebp, [esp+4]
9258
                mov     edx, edi
9259
                and     edi, ebp
9260
                or      edx, ebp
9261
                mov     ebp, [esp+1Ch]
9262
                and     edx, ebp
9263
                ror     ebp, 2
9264
                or      edx, edi
9265
                mov     edi, ebp
9266
                rol     edi, 0Ch
9267
                add     edx, ecx
9268
                xor     ebp, edi
9269
                add     ecx, [esp+8]
9270
                rol     edi, 9
9271
                xor     ebp, edi
9272
                mov     [esp+8], ecx
9273
                add     edx, ebp
9274
                mov     [esp+18h], edx
9275
                mov     edx, [esp+0Ch]
9276
                mov     ebp, ecx
9277
                mov     edi, ecx
9278
                ror     ebp, 6
9279
                rol     edi, 7
9280
                xor     edi, ebp
9281
                ror     ebp, 5
9282
                xor     edi, ebp
9283
                mov     ebp, edx
9284
                xor     ebp, eax
9285
                and     ebp, ecx
9286
                lea     ebx, [edi+ebx+0FC19DC6h]
9287
                mov     edi, [esp+1Ch]
9288
                xor     ebp, eax
9289
                add     ebx, [esi+48h]
9290
                add     ebx, ebp
9291
                mov     ebp, [esp]
9292
                mov     ecx, edi
9293
                and     edi, ebp
9294
                or      ecx, ebp
9295
                mov     ebp, [esp+18h]
9296
                and     ecx, ebp
9297
                ror     ebp, 2
9298
                or      ecx, edi
9299
                mov     edi, ebp
9300
                rol     edi, 0Ch
9301
                add     ecx, ebx
9302
                xor     ebp, edi
9303
                add     ebx, [esp+4]
9304
                rol     edi, 9
9305
                xor     ebp, edi
9306
                mov     [esp+4], ebx
9307
                add     ecx, ebp
9308
                mov     [esp+14h], ecx
9309
                mov     ecx, [esp+8]
9310
                mov     ebp, ebx
9311
                mov     edi, ebx
9312
                ror     ebp, 6
9313
                rol     edi, 7
9314
                xor     edi, ebp
9315
                ror     ebp, 5
9316
                xor     edi, ebp
9317
                mov     ebp, ecx
9318
                xor     ebp, edx
9319
                and     ebp, ebx
9320
                lea     eax, [edi+eax+240CA1CCh]
9321
                mov     edi, [esp+18h]
9322
                xor     ebp, edx
9323
                add     eax, [esi+4Ch]
9324
                add     eax, ebp
9325
                mov     ebp, [esp+1Ch]
9326
                mov     ebx, edi
9327
                and     edi, ebp
9328
                or      ebx, ebp
9329
                mov     ebp, [esp+14h]
9330
                and     ebx, ebp
9331
                ror     ebp, 2
9332
                or      ebx, edi
9333
                mov     edi, ebp
9334
                rol     edi, 0Ch
9335
                add     ebx, eax
9336
                xor     ebp, edi
9337
                add     eax, [esp]
9338
                rol     edi, 9
9339
                xor     ebp, edi
9340
                mov     [esp], eax
9341
                add     ebx, ebp
9342
                mov     [esp+10h], ebx
9343
                mov     ebx, [esp+4]
9344
                mov     ebp, eax
9345
                mov     edi, eax
9346
                ror     ebp, 6
9347
                rol     edi, 7
9348
                xor     edi, ebp
9349
                ror     ebp, 5
9350
                xor     edi, ebp
9351
                mov     ebp, ebx
9352
                xor     ebp, ecx
9353
                and     ebp, eax
9354
                lea     edx, [edi+edx+2DE92C6Fh]
9355
                mov     edi, [esp+14h]
9356
                xor     ebp, ecx
9357
                add     edx, [esi+50h]
9358
                add     edx, ebp
9359
                mov     ebp, [esp+18h]
9360
                mov     eax, edi
9361
                and     edi, ebp
9362
                or      eax, ebp
9363
                mov     ebp, [esp+10h]
9364
                and     eax, ebp
9365
                ror     ebp, 2
9366
                or      eax, edi
9367
                mov     edi, ebp
9368
                rol     edi, 0Ch
9369
                add     eax, edx
9370
                xor     ebp, edi
9371
                add     edx, [esp+1Ch]
9372
                rol     edi, 9
9373
                xor     ebp, edi
9374
                mov     [esp+1Ch], edx
9375
                add     eax, ebp
9376
                mov     [esp+0Ch], eax
9377
                mov     eax, [esp]
9378
                mov     ebp, edx
9379
                mov     edi, edx
9380
                ror     ebp, 6
9381
                rol     edi, 7
9382
                xor     edi, ebp
9383
                ror     ebp, 5
9384
                xor     edi, ebp
9385
                mov     ebp, eax
9386
                xor     ebp, ebx
9387
                and     ebp, edx
9388
                lea     ecx, [edi+ecx+4A7484AAh]
9389
                mov     edi, [esp+10h]
9390
                xor     ebp, ebx
9391
                add     ecx, [esi+54h]
9392
                add     ecx, ebp
9393
                mov     ebp, [esp+14h]
9394
                mov     edx, edi
9395
                and     edi, ebp
9396
                or      edx, ebp
9397
                mov     ebp, [esp+0Ch]
9398
                and     edx, ebp
9399
                ror     ebp, 2
9400
                or      edx, edi
9401
                mov     edi, ebp
9402
                rol     edi, 0Ch
9403
                add     edx, ecx
9404
                xor     ebp, edi
9405
                add     ecx, [esp+18h]
9406
                rol     edi, 9
9407
                xor     ebp, edi
9408
                mov     [esp+18h], ecx
9409
                add     edx, ebp
9410
                mov     [esp+8], edx
9411
                mov     edx, [esp+1Ch]
9412
                mov     ebp, ecx
9413
                mov     edi, ecx
9414
                ror     ebp, 6
9415
                rol     edi, 7
9416
                xor     edi, ebp
9417
                ror     ebp, 5
9418
                xor     edi, ebp
9419
                mov     ebp, edx
9420
                xor     ebp, eax
9421
                and     ebp, ecx
9422
                lea     ebx, [edi+ebx+5CB0A9DCh]
9423
                mov     edi, [esp+0Ch]
9424
                xor     ebp, eax
9425
                add     ebx, [esi+58h]
9426
                add     ebx, ebp
9427
                mov     ebp, [esp+10h]
9428
                mov     ecx, edi
9429
                and     edi, ebp
9430
                or      ecx, ebp
9431
                mov     ebp, [esp+8]
9432
                and     ecx, ebp
9433
                ror     ebp, 2
9434
                or      ecx, edi
9435
                mov     edi, ebp
9436
                rol     edi, 0Ch
9437
                add     ecx, ebx
9438
                xor     ebp, edi
9439
                add     ebx, [esp+14h]
9440
                rol     edi, 9
9441
                xor     ebp, edi
9442
                mov     [esp+14h], ebx
9443
                add     ecx, ebp
9444
                mov     [esp+4], ecx
9445
                mov     ecx, [esp+18h]
9446
                mov     ebp, ebx
9447
                mov     edi, ebx
9448
                ror     ebp, 6
9449
                rol     edi, 7
9450
                xor     edi, ebp
9451
                ror     ebp, 5
9452
                xor     edi, ebp
9453
                mov     ebp, ecx
9454
                xor     ebp, edx
9455
                and     ebp, ebx
9456
                lea     eax, [edi+eax+76F988DAh]
9457
                mov     edi, [esp+8]
9458
                xor     ebp, edx
9459
                add     eax, [esi+5Ch]
9460
                add     eax, ebp
9461
                mov     ebp, [esp+0Ch]
9462
                mov     ebx, edi
9463
                and     edi, ebp
9464
                or      ebx, ebp
9465
                mov     ebp, [esp+4]
9466
                and     ebx, ebp
9467
                ror     ebp, 2
9468
                or      ebx, edi
9469
                mov     edi, ebp
9470
                rol     edi, 0Ch
9471
                add     ebx, eax
9472
                xor     ebp, edi
9473
                add     eax, [esp+10h]
9474
                rol     edi, 9
9475
                xor     ebp, edi
9476
                mov     [esp+10h], eax
9477
                add     ebx, ebp
9478
                mov     [esp], ebx
9479
                mov     ebx, [esp+14h]
9480
                mov     ebp, eax
9481
                mov     edi, eax
9482
                ror     ebp, 6
9483
                rol     edi, 7
9484
                xor     edi, ebp
9485
                ror     ebp, 5
9486
                xor     edi, ebp
9487
                mov     ebp, ebx
9488
                xor     ebp, ecx
9489
                and     ebp, eax
9490
                lea     edx, [edi+edx-67C1AEAEh]
9491
                mov     edi, [esp+4]
9492
                xor     ebp, ecx
9493
                add     edx, [esi+60h]
9494
                add     edx, ebp
9495
                mov     ebp, [esp+8]
9496
                mov     eax, edi
9497
                and     edi, ebp
9498
                or      eax, ebp
9499
                mov     ebp, [esp]
9500
                and     eax, ebp
9501
                ror     ebp, 2
9502
                or      eax, edi
9503
                mov     edi, ebp
9504
                rol     edi, 0Ch
9505
                add     eax, edx
9506
                xor     ebp, edi
9507
                add     edx, [esp+0Ch]
9508
                rol     edi, 9
9509
                xor     ebp, edi
9510
                mov     [esp+0Ch], edx
9511
                add     eax, ebp
9512
                mov     [esp+1Ch], eax
9513
                mov     eax, [esp+10h]
9514
                mov     ebp, edx
9515
                mov     edi, edx
9516
                ror     ebp, 6
9517
                rol     edi, 7
9518
                xor     edi, ebp
9519
                ror     ebp, 5
9520
                xor     edi, ebp
9521
                mov     ebp, eax
9522
                xor     ebp, ebx
9523
                and     ebp, edx
9524
                lea     ecx, [edi+ecx-57CE3993h]
9525
                mov     edi, [esp]
9526
                xor     ebp, ebx
9527
                add     ecx, [esi+64h]
9528
                add     ecx, ebp
9529
                mov     ebp, [esp+4]
9530
                mov     edx, edi
9531
                and     edi, ebp
9532
                or      edx, ebp
9533
                mov     ebp, [esp+1Ch]
9534
                and     edx, ebp
9535
                ror     ebp, 2
9536
                or      edx, edi
9537
                mov     edi, ebp
9538
                rol     edi, 0Ch
9539
                add     edx, ecx
9540
                xor     ebp, edi
9541
                add     ecx, [esp+8]
9542
                rol     edi, 9
9543
                xor     ebp, edi
9544
                mov     [esp+8], ecx
9545
                add     edx, ebp
9546
                mov     [esp+18h], edx
9547
                mov     edx, [esp+0Ch]
9548
                mov     ebp, ecx
9549
                mov     edi, ecx
9550
                ror     ebp, 6
9551
                rol     edi, 7
9552
                xor     edi, ebp
9553
                ror     ebp, 5
9554
                xor     edi, ebp
9555
                mov     ebp, edx
9556
                xor     ebp, eax
9557
                and     ebp, ecx
9558
                lea     ebx, [edi+ebx-4FFCD838h]
9559
                mov     edi, [esp+1Ch]
9560
                xor     ebp, eax
9561
                add     ebx, [esi+68h]
9562
                add     ebx, ebp
9563
                mov     ebp, [esp]
9564
                mov     ecx, edi
9565
                and     edi, ebp
9566
                or      ecx, ebp
9567
                mov     ebp, [esp+18h]
9568
                and     ecx, ebp
9569
                ror     ebp, 2
9570
                or      ecx, edi
9571
                mov     edi, ebp
9572
                rol     edi, 0Ch
9573
                add     ecx, ebx
9574
                xor     ebp, edi
9575
                add     ebx, [esp+4]
9576
                rol     edi, 9
9577
                xor     ebp, edi
9578
                mov     [esp+4], ebx
9579
                add     ecx, ebp
9580
                mov     [esp+14h], ecx
9581
                mov     ecx, [esp+8]
9582
                mov     ebp, ebx
9583
                mov     edi, ebx
9584
                ror     ebp, 6
9585
                rol     edi, 7
9586
                xor     edi, ebp
9587
                ror     ebp, 5
9588
                xor     edi, ebp
9589
                mov     ebp, ecx
9590
                xor     ebp, edx
9591
                and     ebp, ebx
9592
                lea     eax, [edi+eax-40A68039h]
9593
                mov     edi, [esp+18h]
9594
                xor     ebp, edx
9595
                add     eax, [esi+6Ch]
9596
                add     eax, ebp
9597
                mov     ebp, [esp+1Ch]
9598
                mov     ebx, edi
9599
                and     edi, ebp
9600
                or      ebx, ebp
9601
                mov     ebp, [esp+14h]
9602
                and     ebx, ebp
9603
                ror     ebp, 2
9604
                or      ebx, edi
9605
                mov     edi, ebp
9606
                rol     edi, 0Ch
9607
                add     ebx, eax
9608
                xor     ebp, edi
9609
                add     eax, [esp]
9610
                rol     edi, 9
9611
                xor     ebp, edi
9612
                mov     [esp], eax
9613
                add     ebx, ebp
9614
                mov     [esp+10h], ebx
9615
                mov     ebx, [esp+4]
9616
                mov     ebp, eax
9617
                mov     edi, eax
9618
                ror     ebp, 6
9619
                rol     edi, 7
9620
                xor     edi, ebp
9621
                ror     ebp, 5
9622
                xor     edi, ebp
9623
                mov     ebp, ebx
9624
                xor     ebp, ecx
9625
                and     ebp, eax
9626
                lea     edx, [edi+edx-391FF40Dh]
9627
                mov     edi, [esp+14h]
9628
                xor     ebp, ecx
9629
                add     edx, [esi+70h]
9630
                add     edx, ebp
9631
                mov     ebp, [esp+18h]
9632
                mov     eax, edi
9633
                and     edi, ebp
9634
                or      eax, ebp
9635
                mov     ebp, [esp+10h]
9636
                and     eax, ebp
9637
                ror     ebp, 2
9638
                or      eax, edi
9639
                mov     edi, ebp
9640
                rol     edi, 0Ch
9641
                add     eax, edx
9642
                xor     ebp, edi
9643
                add     edx, [esp+1Ch]
9644
                rol     edi, 9
9645
                xor     ebp, edi
9646
                mov     [esp+1Ch], edx
9647
                add     eax, ebp
9648
                mov     [esp+0Ch], eax
9649
                mov     eax, [esp]
9650
                mov     ebp, edx
9651
                mov     edi, edx
9652
                ror     ebp, 6
9653
                rol     edi, 7
9654
                xor     edi, ebp
9655
                ror     ebp, 5
9656
                xor     edi, ebp
9657
                mov     ebp, eax
9658
                xor     ebp, ebx
9659
                and     ebp, edx
9660
                lea     ecx, [edi+ecx-2A586EB9h]
9661
                mov     edi, [esp+10h]
9662
                xor     ebp, ebx
9663
                add     ecx, [esi+74h]
9664
                add     ecx, ebp
9665
                mov     ebp, [esp+14h]
9666
                mov     edx, edi
9667
                and     edi, ebp
9668
                or      edx, ebp
9669
                mov     ebp, [esp+0Ch]
9670
                and     edx, ebp
9671
                ror     ebp, 2
9672
                or      edx, edi
9673
                mov     edi, ebp
9674
                rol     edi, 0Ch
9675
                add     edx, ecx
9676
                xor     ebp, edi
9677
                add     ecx, [esp+18h]
9678
                rol     edi, 9
9679
                xor     ebp, edi
9680
                mov     [esp+18h], ecx
9681
                add     edx, ebp
9682
                mov     [esp+8], edx
9683
                mov     edx, [esp+1Ch]
9684
                mov     ebp, ecx
9685
                mov     edi, ecx
9686
                ror     ebp, 6
9687
                rol     edi, 7
9688
                xor     edi, ebp
9689
                ror     ebp, 5
9690
                xor     edi, ebp
9691
                mov     ebp, edx
9692
                xor     ebp, eax
9693
                and     ebp, ecx
9694
                lea     ebx, [edi+ebx+6CA6351h]
9695
                mov     edi, [esp+0Ch]
9696
                xor     ebp, eax
9697
                add     ebx, [esi+78h]
9698
                add     ebx, ebp
9699
                mov     ebp, [esp+10h]
9700
                mov     ecx, edi
9701
                and     edi, ebp
9702
                or      ecx, ebp
9703
                mov     ebp, [esp+8]
9704
                and     ecx, ebp
9705
                ror     ebp, 2
9706
                or      ecx, edi
9707
                mov     edi, ebp
9708
                rol     edi, 0Ch
9709
                add     ecx, ebx
9710
                xor     ebp, edi
9711
                add     ebx, [esp+14h]
9712
                rol     edi, 9
9713
                xor     ebp, edi
9714
                mov     [esp+14h], ebx
9715
                add     ecx, ebp
9716
                mov     [esp+4], ecx
9717
                mov     ecx, [esp+18h]
9718
                mov     ebp, ebx
9719
                mov     edi, ebx
9720
                ror     ebp, 6
9721
                rol     edi, 7
9722
                xor     edi, ebp
9723
                ror     ebp, 5
9724
                xor     edi, ebp
9725
                mov     ebp, ecx
9726
                xor     ebp, edx
9727
                and     ebp, ebx
9728
                lea     eax, [edi+eax+14292967h]
9729
                mov     edi, [esp+8]
9730
                xor     ebp, edx
9731
                add     eax, [esi+7Ch]
9732
                add     eax, ebp
9733
                mov     ebp, [esp+0Ch]
9734
                mov     ebx, edi
9735
                and     edi, ebp
9736
                or      ebx, ebp
9737
                mov     ebp, [esp+4]
9738
                and     ebx, ebp
9739
                ror     ebp, 2
9740
                or      ebx, edi
9741
                mov     edi, ebp
9742
                rol     edi, 0Ch
9743
                add     ebx, eax
9744
                xor     ebp, edi
9745
                add     eax, [esp+10h]
9746
                rol     edi, 9
9747
                xor     ebp, edi
9748
                mov     [esp+10h], eax
9749
                add     ebx, ebp
9750
                mov     [esp], ebx
9751
                mov     ebx, [esp+14h]
9752
                mov     ebp, eax
9753
                mov     edi, eax
9754
                ror     ebp, 6
9755
                rol     edi, 7
9756
                xor     edi, ebp
9757
                ror     ebp, 5
9758
                xor     edi, ebp
9759
                mov     ebp, ebx
9760
                xor     ebp, ecx
9761
                and     ebp, eax
9762
                lea     edx, [edi+edx+27B70A85h]
9763
                mov     edi, [esp+4]
9764
                xor     ebp, ecx
9765
                add     edx, [esi+80h]
9766
                add     edx, ebp
9767
                mov     ebp, [esp+8]
9768
                mov     eax, edi
9769
                and     edi, ebp
9770
                or      eax, ebp
9771
                mov     ebp, [esp]
9772
                and     eax, ebp
9773
                ror     ebp, 2
9774
                or      eax, edi
9775
                mov     edi, ebp
9776
                rol     edi, 0Ch
9777
                add     eax, edx
9778
                xor     ebp, edi
9779
                add     edx, [esp+0Ch]
9780
                rol     edi, 9
9781
                xor     ebp, edi
9782
                mov     [esp+0Ch], edx
9783
                add     eax, ebp
9784
                mov     [esp+1Ch], eax
9785
                mov     eax, [esp+10h]
9786
                mov     ebp, edx
9787
                mov     edi, edx
9788
                ror     ebp, 6
9789
                rol     edi, 7
9790
                xor     edi, ebp
9791
                ror     ebp, 5
9792
                xor     edi, ebp
9793
                mov     ebp, eax
9794
                xor     ebp, ebx
9795
                and     ebp, edx
9796
                lea     ecx, [edi+ecx+2E1B2138h]
9797
                mov     edi, [esp]
9798
                xor     ebp, ebx
9799
                add     ecx, [esi+84h]
9800
                add     ecx, ebp
9801
                mov     ebp, [esp+4]
9802
                mov     edx, edi
9803
                and     edi, ebp
9804
                or      edx, ebp
9805
                mov     ebp, [esp+1Ch]
9806
                and     edx, ebp
9807
                ror     ebp, 2
9808
                or      edx, edi
9809
                mov     edi, ebp
9810
                rol     edi, 0Ch
9811
                add     edx, ecx
9812
                xor     ebp, edi
9813
                add     ecx, [esp+8]
9814
                rol     edi, 9
9815
                xor     ebp, edi
9816
                mov     [esp+8], ecx
9817
                add     edx, ebp
9818
                mov     [esp+18h], edx
9819
                mov     edx, [esp+0Ch]
9820
                mov     ebp, ecx
9821
                mov     edi, ecx
9822
                ror     ebp, 6
9823
                rol     edi, 7
9824
                xor     edi, ebp
9825
                ror     ebp, 5
9826
                xor     edi, ebp
9827
                mov     ebp, edx
9828
                xor     ebp, eax
9829
                and     ebp, ecx
9830
                lea     ebx, [edi+ebx+4D2C6DFCh]
9831
                mov     edi, [esp+1Ch]
9832
                xor     ebp, eax
9833
                add     ebx, [esi+88h]
9834
                add     ebx, ebp
9835
                mov     ebp, [esp]
9836
                mov     ecx, edi
9837
                and     edi, ebp
9838
                or      ecx, ebp
9839
                mov     ebp, [esp+18h]
9840
                and     ecx, ebp
9841
                ror     ebp, 2
9842
                or      ecx, edi
9843
                mov     edi, ebp
9844
                rol     edi, 0Ch
9845
                add     ecx, ebx
9846
                xor     ebp, edi
9847
                add     ebx, [esp+4]
9848
                rol     edi, 9
9849
                xor     ebp, edi
9850
                mov     [esp+4], ebx
9851
                add     ecx, ebp
9852
                mov     [esp+14h], ecx
9853
                mov     ecx, [esp+8]
9854
                mov     ebp, ebx
9855
                mov     edi, ebx
9856
                ror     ebp, 6
9857
                rol     edi, 7
9858
                xor     edi, ebp
9859
                ror     ebp, 5
9860
                xor     edi, ebp
9861
                mov     ebp, ecx
9862
                xor     ebp, edx
9863
                and     ebp, ebx
9864
                lea     eax, [edi+eax+53380D13h]
9865
                mov     edi, [esp+18h]
9866
                xor     ebp, edx
9867
                add     eax, [esi+8Ch]
9868
                add     eax, ebp
9869
                mov     ebp, [esp+1Ch]
9870
                mov     ebx, edi
9871
                and     edi, ebp
9872
                or      ebx, ebp
9873
                mov     ebp, [esp+14h]
9874
                and     ebx, ebp
9875
                ror     ebp, 2
9876
                or      ebx, edi
9877
                mov     edi, ebp
9878
                rol     edi, 0Ch
9879
                add     ebx, eax
9880
                xor     ebp, edi
9881
                add     eax, [esp]
9882
                rol     edi, 9
9883
                xor     ebp, edi
9884
                mov     [esp], eax
9885
                add     ebx, ebp
9886
                mov     [esp+10h], ebx
9887
                mov     ebx, [esp+4]
9888
                mov     ebp, eax
9889
                mov     edi, eax
9890
                ror     ebp, 6
9891
                rol     edi, 7
9892
                xor     edi, ebp
9893
                ror     ebp, 5
9894
                xor     edi, ebp
9895
                mov     ebp, ebx
9896
                xor     ebp, ecx
9897
                and     ebp, eax
9898
                lea     edx, [edi+edx+650A7354h]
9899
                mov     edi, [esp+14h]
9900
                xor     ebp, ecx
9901
                add     edx, [esi+90h]
9902
                add     edx, ebp
9903
                mov     ebp, [esp+18h]
9904
                mov     eax, edi
9905
                and     edi, ebp
9906
                or      eax, ebp
9907
                mov     ebp, [esp+10h]
9908
                and     eax, ebp
9909
                ror     ebp, 2
9910
                or      eax, edi
9911
                mov     edi, ebp
9912
                rol     edi, 0Ch
9913
                add     eax, edx
9914
                xor     ebp, edi
9915
                add     edx, [esp+1Ch]
9916
                rol     edi, 9
9917
                xor     ebp, edi
9918
                mov     [esp+1Ch], edx
9919
                add     eax, ebp
9920
                mov     [esp+0Ch], eax
9921
                mov     eax, [esp]
9922
                mov     ebp, edx
9923
                mov     edi, edx
9924
                ror     ebp, 6
9925
                rol     edi, 7
9926
                xor     edi, ebp
9927
                ror     ebp, 5
9928
                xor     edi, ebp
9929
                mov     ebp, eax
9930
                xor     ebp, ebx
9931
                and     ebp, edx
9932
                lea     ecx, [edi+ecx+766A0ABBh]
9933
                mov     edi, [esp+10h]
9934
                xor     ebp, ebx
9935
                add     ecx, [esi+94h]
9936
                add     ecx, ebp
9937
                mov     ebp, [esp+14h]
9938
                mov     edx, edi
9939
                and     edi, ebp
9940
                or      edx, ebp
9941
                mov     ebp, [esp+0Ch]
9942
                and     edx, ebp
9943
                ror     ebp, 2
9944
                or      edx, edi
9945
                mov     edi, ebp
9946
                rol     edi, 0Ch
9947
                add     edx, ecx
9948
                xor     ebp, edi
9949
                add     ecx, [esp+18h]
9950
                rol     edi, 9
9951
                xor     ebp, edi
9952
                mov     [esp+18h], ecx
9953
                add     edx, ebp
9954
                mov     [esp+8], edx
9955
                mov     edx, [esp+1Ch]
9956
                mov     ebp, ecx
9957
                mov     edi, ecx
9958
                ror     ebp, 6
9959
                rol     edi, 7
9960
                xor     edi, ebp
9961
                ror     ebp, 5
9962
                xor     edi, ebp
9963
                mov     ebp, edx
9964
                xor     ebp, eax
9965
                and     ebp, ecx
9966
                lea     ebx, [edi+ebx-7E3D36D2h]
9967
                mov     edi, [esp+0Ch]
9968
                xor     ebp, eax
9969
                add     ebx, [esi+98h]
9970
                add     ebx, ebp
9971
                mov     ebp, [esp+10h]
9972
                mov     ecx, edi
9973
                and     edi, ebp
9974
                or      ecx, ebp
9975
                mov     ebp, [esp+8]
9976
                and     ecx, ebp
9977
                ror     ebp, 2
9978
                or      ecx, edi
9979
                mov     edi, ebp
9980
                rol     edi, 0Ch
9981
                add     ecx, ebx
9982
                xor     ebp, edi
9983
                add     ebx, [esp+14h]
9984
                rol     edi, 9
9985
                xor     ebp, edi
9986
                mov     [esp+14h], ebx
9987
                add     ecx, ebp
9988
                mov     [esp+4], ecx
9989
                mov     ecx, [esp+18h]
9990
                mov     ebp, ebx
9991
                mov     edi, ebx
9992
                ror     ebp, 6
9993
                rol     edi, 7
9994
                xor     edi, ebp
9995
                ror     ebp, 5
9996
                xor     edi, ebp
9997
                mov     ebp, ecx
9998
                xor     ebp, edx
9999
                and     ebp, ebx
10000
                lea     eax, [edi+eax-6D8DD37Bh]
10001
                mov     edi, [esp+8]
10002
                xor     ebp, edx
10003
                add     eax, [esi+9Ch]
10004
                add     eax, ebp
10005
                mov     ebp, [esp+0Ch]
10006
                mov     ebx, edi
10007
                and     edi, ebp
10008
                or      ebx, ebp
10009
                mov     ebp, [esp+4]
10010
                and     ebx, ebp
10011
                ror     ebp, 2
10012
                or      ebx, edi
10013
                mov     edi, ebp
10014
                rol     edi, 0Ch
10015
                add     ebx, eax
10016
                xor     ebp, edi
10017
                add     eax, [esp+10h]
10018
                rol     edi, 9
10019
                xor     ebp, edi
10020
                mov     [esp+10h], eax
10021
                add     ebx, ebp
10022
                mov     [esp], ebx
10023
                mov     ebx, [esp+14h]
10024
                mov     ebp, eax
10025
                mov     edi, eax
10026
                ror     ebp, 6
10027
                rol     edi, 7
10028
                xor     edi, ebp
10029
                ror     ebp, 5
10030
                xor     edi, ebp
10031
                mov     ebp, ebx
10032
                xor     ebp, ecx
10033
                and     ebp, eax
10034
                lea     edx, [edi+edx-5D40175Fh]
10035
                mov     edi, [esp+4]
10036
                xor     ebp, ecx
10037
                add     edx, [esi+0A0h]
10038
                add     edx, ebp
10039
                mov     ebp, [esp+8]
10040
                mov     eax, edi
10041
                and     edi, ebp
10042
                or      eax, ebp
10043
                mov     ebp, [esp]
10044
                and     eax, ebp
10045
                ror     ebp, 2
10046
                or      eax, edi
10047
                mov     edi, ebp
10048
                rol     edi, 0Ch
10049
                add     eax, edx
10050
                xor     ebp, edi
10051
                add     edx, [esp+0Ch]
10052
                rol     edi, 9
10053
                xor     ebp, edi
10054
                mov     [esp+0Ch], edx
10055
                add     eax, ebp
10056
                mov     [esp+1Ch], eax
10057
                mov     eax, [esp+10h]
10058
                mov     ebp, edx
10059
                mov     edi, edx
10060
                ror     ebp, 6
10061
                rol     edi, 7
10062
                xor     edi, ebp
10063
                ror     ebp, 5
10064
                xor     edi, ebp
10065
                mov     ebp, eax
10066
                xor     ebp, ebx
10067
                and     ebp, edx
10068
                lea     ecx, [edi+ecx-57E599B5h]
10069
                mov     edi, [esp]
10070
                xor     ebp, ebx
10071
                add     ecx, [esi+0A4h]
10072
                add     ecx, ebp
10073
                mov     ebp, [esp+4]
10074
                mov     edx, edi
10075
                and     edi, ebp
10076
                or      edx, ebp
10077
                mov     ebp, [esp+1Ch]
10078
                and     edx, ebp
10079
                ror     ebp, 2
10080
                or      edx, edi
10081
                mov     edi, ebp
10082
                rol     edi, 0Ch
10083
                add     edx, ecx
10084
                xor     ebp, edi
10085
                add     ecx, [esp+8]
10086
                rol     edi, 9
10087
                xor     ebp, edi
10088
                mov     [esp+8], ecx
10089
                add     edx, ebp
10090
                mov     [esp+18h], edx
10091
                mov     edx, [esp+0Ch]
10092
                mov     ebp, ecx
10093
                mov     edi, ecx
10094
                ror     ebp, 6
10095
                rol     edi, 7
10096
                xor     edi, ebp
10097
                ror     ebp, 5
10098
                xor     edi, ebp
10099
                mov     ebp, edx
10100
                xor     ebp, eax
10101
                and     ebp, ecx
10102
                lea     ebx, [edi+ebx-3DB47490h]
10103
                mov     edi, [esp+1Ch]
10104
                xor     ebp, eax
10105
                add     ebx, [esi+0A8h]
10106
                add     ebx, ebp
10107
                mov     ebp, [esp]
10108
                mov     ecx, edi
10109
                and     edi, ebp
10110
                or      ecx, ebp
10111
                mov     ebp, [esp+18h]
10112
                and     ecx, ebp
10113
                ror     ebp, 2
10114
                or      ecx, edi
10115
                mov     edi, ebp
10116
                rol     edi, 0Ch
10117
                add     ecx, ebx
10118
                xor     ebp, edi
10119
                add     ebx, [esp+4]
10120
                rol     edi, 9
10121
                xor     ebp, edi
10122
                mov     [esp+4], ebx
10123
                add     ecx, ebp
10124
                mov     [esp+14h], ecx
10125
                mov     ecx, [esp+8]
10126
                mov     ebp, ebx
10127
                mov     edi, ebx
10128
                ror     ebp, 6
10129
                rol     edi, 7
10130
                xor     edi, ebp
10131
                ror     ebp, 5
10132
                xor     edi, ebp
10133
                mov     ebp, ecx
10134
                xor     ebp, edx
10135
                and     ebp, ebx
10136
                lea     eax, [edi+eax-3893AE5Dh]
10137
                mov     edi, [esp+18h]
10138
                xor     ebp, edx
10139
                add     eax, [esi+0ACh]
10140
                add     eax, ebp
10141
                mov     ebp, [esp+1Ch]
10142
                mov     ebx, edi
10143
                and     edi, ebp
10144
                or      ebx, ebp
10145
                mov     ebp, [esp+14h]
10146
                and     ebx, ebp
10147
                ror     ebp, 2
10148
                or      ebx, edi
10149
                mov     edi, ebp
10150
                rol     edi, 0Ch
10151
                add     ebx, eax
10152
                xor     ebp, edi
10153
                add     eax, [esp]
10154
                rol     edi, 9
10155
                xor     ebp, edi
10156
                mov     [esp], eax
10157
                add     ebx, ebp
10158
                mov     [esp+10h], ebx
10159
                mov     ebx, [esp+4]
10160
                mov     ebp, eax
10161
                mov     edi, eax
10162
                ror     ebp, 6
10163
                rol     edi, 7
10164
                xor     edi, ebp
10165
                ror     ebp, 5
10166
                xor     edi, ebp
10167
                mov     ebp, ebx
10168
                xor     ebp, ecx
10169
                and     ebp, eax
10170
                lea     edx, [edi+edx-2E6D17E7h]
10171
                mov     edi, [esp+14h]
10172
                xor     ebp, ecx
10173
                add     edx, [esi+0B0h]
10174
                add     edx, ebp
10175
                mov     ebp, [esp+18h]
10176
                mov     eax, edi
10177
                and     edi, ebp
10178
                or      eax, ebp
10179
                mov     ebp, [esp+10h]
10180
                and     eax, ebp
10181
                ror     ebp, 2
10182
                or      eax, edi
10183
                mov     edi, ebp
10184
                rol     edi, 0Ch
10185
                add     eax, edx
10186
                xor     ebp, edi
10187
                add     edx, [esp+1Ch]
10188
                rol     edi, 9
10189
                xor     ebp, edi
10190
                mov     [esp+1Ch], edx
10191
                add     eax, ebp
10192
                mov     [esp+0Ch], eax
10193
                mov     eax, [esp]
10194
                mov     ebp, edx
10195
                mov     edi, edx
10196
                ror     ebp, 6
10197
                rol     edi, 7
10198
                xor     edi, ebp
10199
                ror     ebp, 5
10200
                xor     edi, ebp
10201
                mov     ebp, eax
10202
                xor     ebp, ebx
10203
                and     ebp, edx
10204
                lea     ecx, [edi+ecx-2966F9DCh]
10205
                mov     edi, [esp+10h]
10206
                xor     ebp, ebx
10207
                add     ecx, [esi+0B4h]
10208
                add     ecx, ebp
10209
                mov     ebp, [esp+14h]
10210
                mov     edx, edi
10211
                and     edi, ebp
10212
                or      edx, ebp
10213
                mov     ebp, [esp+0Ch]
10214
                and     edx, ebp
10215
                ror     ebp, 2
10216
                or      edx, edi
10217
                mov     edi, ebp
10218
                rol     edi, 0Ch
10219
                add     edx, ecx
10220
                xor     ebp, edi
10221
                add     ecx, [esp+18h]
10222
                rol     edi, 9
10223
                xor     ebp, edi
10224
                mov     [esp+18h], ecx
10225
                add     edx, ebp
10226
                mov     [esp+8], edx
10227
                mov     edx, [esp+1Ch]
10228
                mov     ebp, ecx
10229
                mov     edi, ecx
10230
                ror     ebp, 6
10231
                rol     edi, 7
10232
                xor     edi, ebp
10233
                ror     ebp, 5
10234
                xor     edi, ebp
10235
                mov     ebp, edx
10236
                xor     ebp, eax
10237
                and     ebp, ecx
10238
                lea     ebx, [edi+ebx-0BF1CA7Bh]
10239
                mov     edi, [esp+0Ch]
10240
                xor     ebp, eax
10241
                add     ebx, [esi+0B8h]
10242
                add     ebx, ebp
10243
                mov     ebp, [esp+10h]
10244
                mov     ecx, edi
10245
                and     edi, ebp
10246
                or      ecx, ebp
10247
                mov     ebp, [esp+8]
10248
                and     ecx, ebp
10249
                ror     ebp, 2
10250
                or      ecx, edi
10251
                mov     edi, ebp
10252
                rol     edi, 0Ch
10253
                add     ecx, ebx
10254
                xor     ebp, edi
10255
                add     ebx, [esp+14h]
10256
                rol     edi, 9
10257
                xor     ebp, edi
10258
                mov     [esp+14h], ebx
10259
                add     ecx, ebp
10260
                mov     [esp+4], ecx
10261
                mov     ecx, [esp+18h]
10262
                mov     ebp, ebx
10263
                mov     edi, ebx
10264
                ror     ebp, 6
10265
                rol     edi, 7
10266
                xor     edi, ebp
10267
                ror     ebp, 5
10268
                xor     edi, ebp
10269
                mov     ebp, ecx
10270
                xor     ebp, edx
10271
                and     ebp, ebx
10272
                lea     eax, [edi+eax+106AA070h]
10273
                mov     edi, [esp+8]
10274
                xor     ebp, edx
10275
                add     eax, [esi+0BCh]
10276
                add     eax, ebp
10277
                mov     ebp, [esp+0Ch]
10278
                mov     ebx, edi
10279
                and     edi, ebp
10280
                or      ebx, ebp
10281
                mov     ebp, [esp+4]
10282
                and     ebx, ebp
10283
                ror     ebp, 2
10284
                or      ebx, edi
10285
                mov     edi, ebp
10286
                rol     edi, 0Ch
10287
                add     ebx, eax
10288
                xor     ebp, edi
10289
                add     eax, [esp+10h]
10290
                rol     edi, 9
10291
                xor     ebp, edi
10292
                mov     [esp+10h], eax
10293
                add     ebx, ebp
10294
                mov     [esp], ebx
10295
                mov     ebx, [esp+14h]
10296
                mov     ebp, eax
10297
                mov     edi, eax
10298
                ror     ebp, 6
10299
                rol     edi, 7
10300
                xor     edi, ebp
10301
                ror     ebp, 5
10302
                xor     edi, ebp
10303
                mov     ebp, ebx
10304
                xor     ebp, ecx
10305
                and     ebp, eax
10306
                lea     edx, [edi+edx+19A4C116h]
10307
                mov     edi, [esp+4]
10308
                xor     ebp, ecx
10309
                add     edx, [esi+0C0h]
10310
                add     edx, ebp
10311
                mov     ebp, [esp+8]
10312
                mov     eax, edi
10313
                and     edi, ebp
10314
                or      eax, ebp
10315
                mov     ebp, [esp]
10316
                and     eax, ebp
10317
                ror     ebp, 2
10318
                or      eax, edi
10319
                mov     edi, ebp
10320
                rol     edi, 0Ch
10321
                add     eax, edx
10322
                xor     ebp, edi
10323
                add     edx, [esp+0Ch]
10324
                rol     edi, 9
10325
                xor     ebp, edi
10326
                mov     [esp+0Ch], edx
10327
                add     eax, ebp
10328
                mov     [esp+1Ch], eax
10329
                mov     eax, [esp+10h]
10330
                mov     ebp, edx
10331
                mov     edi, edx
10332
                ror     ebp, 6
10333
                rol     edi, 7
10334
                xor     edi, ebp
10335
                ror     ebp, 5
10336
                xor     edi, ebp
10337
                mov     ebp, eax
10338
                xor     ebp, ebx
10339
                and     ebp, edx
10340
                lea     ecx, [edi+ecx+1E376C08h]
10341
                mov     edi, [esp]
10342
                xor     ebp, ebx
10343
                add     ecx, [esi+0C4h]
10344
                add     ecx, ebp
10345
                mov     ebp, [esp+4]
10346
                mov     edx, edi
10347
                and     edi, ebp
10348
                or      edx, ebp
10349
                mov     ebp, [esp+1Ch]
10350
                and     edx, ebp
10351
                ror     ebp, 2
10352
                or      edx, edi
10353
                mov     edi, ebp
10354
                rol     edi, 0Ch
10355
                add     edx, ecx
10356
                xor     ebp, edi
10357
                add     ecx, [esp+8]
10358
                rol     edi, 9
10359
                xor     ebp, edi
10360
                mov     [esp+8], ecx
10361
                add     edx, ebp
10362
                mov     [esp+18h], edx
10363
                mov     edx, [esp+0Ch]
10364
                mov     ebp, ecx
10365
                mov     edi, ecx
10366
                ror     ebp, 6
10367
                rol     edi, 7
10368
                xor     edi, ebp
10369
                ror     ebp, 5
10370
                xor     edi, ebp
10371
                mov     ebp, edx
10372
                xor     ebp, eax
10373
                and     ebp, ecx
10374
                lea     ebx, [edi+ebx+2748774Ch]
10375
                mov     edi, [esp+1Ch]
10376
                xor     ebp, eax
10377
                add     ebx, [esi+0C8h]
10378
                add     ebx, ebp
10379
                mov     ebp, [esp]
10380
                mov     ecx, edi
10381
                and     edi, ebp
10382
                or      ecx, ebp
10383
                mov     ebp, [esp+18h]
10384
                and     ecx, ebp
10385
                ror     ebp, 2
10386
                or      ecx, edi
10387
                mov     edi, ebp
10388
                rol     edi, 0Ch
10389
                add     ecx, ebx
10390
                xor     ebp, edi
10391
                add     ebx, [esp+4]
10392
                rol     edi, 9
10393
                xor     ebp, edi
10394
                mov     [esp+4], ebx
10395
                add     ecx, ebp
10396
                mov     [esp+14h], ecx
10397
                mov     ecx, [esp+8]
10398
                mov     ebp, ebx
10399
                mov     edi, ebx
10400
                ror     ebp, 6
10401
                rol     edi, 7
10402
                xor     edi, ebp
10403
                ror     ebp, 5
10404
                xor     edi, ebp
10405
                mov     ebp, ecx
10406
                xor     ebp, edx
10407
                and     ebp, ebx
10408
                lea     eax, [edi+eax+34B0BCB5h]
10409
                mov     edi, [esp+18h]
10410
                xor     ebp, edx
10411
                add     eax, [esi+0CCh]
10412
                add     eax, ebp
10413
                mov     ebp, [esp+1Ch]
10414
                mov     ebx, edi
10415
                and     edi, ebp
10416
                or      ebx, ebp
10417
                mov     ebp, [esp+14h]
10418
                and     ebx, ebp
10419
                ror     ebp, 2
10420
                or      ebx, edi
10421
                mov     edi, ebp
10422
                rol     edi, 0Ch
10423
                add     ebx, eax
10424
                xor     ebp, edi
10425
                add     eax, [esp]
10426
                rol     edi, 9
10427
                xor     ebp, edi
10428
                mov     [esp], eax
10429
                add     ebx, ebp
10430
                mov     [esp+10h], ebx
10431
                mov     ebx, [esp+4]
10432
                mov     ebp, eax
10433
                mov     edi, eax
10434
                ror     ebp, 6
10435
                rol     edi, 7
10436
                xor     edi, ebp
10437
                ror     ebp, 5
10438
                xor     edi, ebp
10439
                mov     ebp, ebx
10440
                xor     ebp, ecx
10441
                and     ebp, eax
10442
                lea     edx, [edi+edx+391C0CB3h]
10443
                mov     edi, [esp+14h]
10444
                xor     ebp, ecx
10445
                add     edx, [esi+0D0h]
10446
                add     edx, ebp
10447
                mov     ebp, [esp+18h]
10448
                mov     eax, edi
10449
                and     edi, ebp
10450
                or      eax, ebp
10451
                mov     ebp, [esp+10h]
10452
                and     eax, ebp
10453
                ror     ebp, 2
10454
                or      eax, edi
10455
                mov     edi, ebp
10456
                rol     edi, 0Ch
10457
                add     eax, edx
10458
                xor     ebp, edi
10459
                add     edx, [esp+1Ch]
10460
                rol     edi, 9
10461
                xor     ebp, edi
10462
                mov     [esp+1Ch], edx
10463
                add     eax, ebp
10464
                mov     [esp+0Ch], eax
10465
                mov     eax, [esp]
10466
                mov     ebp, edx
10467
                mov     edi, edx
10468
                ror     ebp, 6
10469
                rol     edi, 7
10470
                xor     edi, ebp
10471
                ror     ebp, 5
10472
                xor     edi, ebp
10473
                mov     ebp, eax
10474
                xor     ebp, ebx
10475
                and     ebp, edx
10476
                lea     ecx, [edi+ecx+4ED8AA4Ah]
10477
                mov     edi, [esp+10h]
10478
                xor     ebp, ebx
10479
                add     ecx, [esi+0D4h]
10480
                add     ecx, ebp
10481
                mov     ebp, [esp+14h]
10482
                mov     edx, edi
10483
                and     edi, ebp
10484
                or      edx, ebp
10485
                mov     ebp, [esp+0Ch]
10486
                and     edx, ebp
10487
                ror     ebp, 2
10488
                or      edx, edi
10489
                mov     edi, ebp
10490
                rol     edi, 0Ch
10491
                add     edx, ecx
10492
                xor     ebp, edi
10493
                add     ecx, [esp+18h]
10494
                rol     edi, 9
10495
                xor     ebp, edi
10496
                mov     [esp+18h], ecx
10497
                add     edx, ebp
10498
                mov     [esp+8], edx
10499
                mov     edx, [esp+1Ch]
10500
                mov     ebp, ecx
10501
                mov     edi, ecx
10502
                ror     ebp, 6
10503
                rol     edi, 7
10504
                xor     edi, ebp
10505
                ror     ebp, 5
10506
                xor     edi, ebp
10507
                mov     ebp, edx
10508
                xor     ebp, eax
10509
                and     ebp, ecx
10510
                lea     ebx, [edi+ebx+5B9CCA4Fh]
10511
                mov     edi, [esp+0Ch]
10512
                xor     ebp, eax
10513
                add     ebx, [esi+0D8h]
10514
                add     ebx, ebp
10515
                mov     ebp, [esp+10h]
10516
                mov     ecx, edi
10517
                and     edi, ebp
10518
                or      ecx, ebp
10519
                mov     ebp, [esp+8]
10520
                and     ecx, ebp
10521
                ror     ebp, 2
10522
                or      ecx, edi
10523
                mov     edi, ebp
10524
                rol     edi, 0Ch
10525
                add     ecx, ebx
10526
                xor     ebp, edi
10527
                add     ebx, [esp+14h]
10528
                rol     edi, 9
10529
                xor     ebp, edi
10530
                mov     [esp+14h], ebx
10531
                add     ecx, ebp
10532
                mov     [esp+4], ecx
10533
                mov     ecx, [esp+18h]
10534
                mov     ebp, ebx
10535
                mov     edi, ebx
10536
                ror     ebp, 6
10537
                rol     edi, 7
10538
                xor     edi, ebp
10539
                ror     ebp, 5
10540
                xor     edi, ebp
10541
                mov     ebp, ecx
10542
                xor     ebp, edx
10543
                and     ebp, ebx
10544
                lea     eax, [edi+eax+682E6FF3h]
10545
                mov     edi, [esp+8]
10546
                xor     ebp, edx
10547
                add     eax, [esi+0DCh]
10548
                add     eax, ebp
10549
                mov     ebp, [esp+0Ch]
10550
                mov     ebx, edi
10551
                and     edi, ebp
10552
                or      ebx, ebp
10553
                mov     ebp, [esp+4]
10554
                and     ebx, ebp
10555
                ror     ebp, 2
10556
                or      ebx, edi
10557
                mov     edi, ebp
10558
                rol     edi, 0Ch
10559
                add     ebx, eax
10560
                xor     ebp, edi
10561
                add     eax, [esp+10h]
10562
                rol     edi, 9
10563
                xor     ebp, edi
10564
                mov     [esp+10h], eax
10565
                add     ebx, ebp
10566
                mov     [esp], ebx
10567
                mov     ebx, [esp+14h]
10568
                mov     ebp, eax
10569
                mov     edi, eax
10570
                ror     ebp, 6
10571
                rol     edi, 7
10572
                xor     edi, ebp
10573
                ror     ebp, 5
10574
                xor     edi, ebp
10575
                mov     ebp, ebx
10576
                xor     ebp, ecx
10577
                and     ebp, eax
10578
                lea     edx, [edi+edx+748F82EEh]
10579
                mov     edi, [esp+4]
10580
                xor     ebp, ecx
10581
                add     edx, [esi+0E0h]
10582
                add     edx, ebp
10583
                mov     ebp, [esp+8]
10584
                mov     eax, edi
10585
                and     edi, ebp
10586
                or      eax, ebp
10587
                mov     ebp, [esp]
10588
                and     eax, ebp
10589
                ror     ebp, 2
10590
                or      eax, edi
10591
                mov     edi, ebp
10592
                rol     edi, 0Ch
10593
                add     eax, edx
10594
                xor     ebp, edi
10595
                add     edx, [esp+0Ch]
10596
                rol     edi, 9
10597
                xor     ebp, edi
10598
                mov     [esp+0Ch], edx
10599
                add     eax, ebp
10600
                mov     [esp+1Ch], eax
10601
                mov     eax, [esp+10h]
10602
                mov     ebp, edx
10603
                mov     edi, edx
10604
                ror     ebp, 6
10605
                rol     edi, 7
10606
                xor     edi, ebp
10607
                ror     ebp, 5
10608
                xor     edi, ebp
10609
                mov     ebp, eax
10610
                xor     ebp, ebx
10611
                and     ebp, edx
10612
                lea     ecx, [edi+ecx+78A5636Fh]
10613
                mov     edi, [esp]
10614
                xor     ebp, ebx
10615
                add     ecx, [esi+0E4h]
10616
                add     ecx, ebp
10617
                mov     ebp, [esp+4]
10618
                mov     edx, edi
10619
                and     edi, ebp
10620
                or      edx, ebp
10621
                mov     ebp, [esp+1Ch]
10622
                and     edx, ebp
10623
                ror     ebp, 2
10624
                or      edx, edi
10625
                mov     edi, ebp
10626
                rol     edi, 0Ch
10627
                add     edx, ecx
10628
                xor     ebp, edi
10629
                add     ecx, [esp+8]
10630
                rol     edi, 9
10631
                xor     ebp, edi
10632
                mov     [esp+8], ecx
10633
                add     edx, ebp
10634
                mov     [esp+18h], edx
10635
                mov     edx, [esp+0Ch]
10636
                mov     ebp, ecx
10637
                mov     edi, ecx
10638
                ror     ebp, 6
10639
                rol     edi, 7
10640
                xor     edi, ebp
10641
                ror     ebp, 5
10642
                xor     edi, ebp
10643
                mov     ebp, edx
10644
                xor     ebp, eax
10645
                and     ebp, ecx
10646
                lea     ebx, [edi+ebx-7B3787ECh]
10647
                mov     edi, [esp+1Ch]
10648
                xor     ebp, eax
10649
                add     ebx, [esi+0E8h]
10650
                add     ebx, ebp
10651
                mov     ebp, [esp]
10652
                mov     ecx, edi
10653
                and     edi, ebp
10654
                or      ecx, ebp
10655
                mov     ebp, [esp+18h]
10656
                and     ecx, ebp
10657
                ror     ebp, 2
10658
                or      ecx, edi
10659
                mov     edi, ebp
10660
                rol     edi, 0Ch
10661
                add     ecx, ebx
10662
                xor     ebp, edi
10663
                add     ebx, [esp+4]
10664
                rol     edi, 9
10665
                xor     ebp, edi
10666
                mov     [esp+4], ebx
10667
                add     ecx, ebp
10668
                mov     [esp+14h], ecx
10669
                mov     ecx, [esp+8]
10670
                mov     ebp, ebx
10671
                mov     edi, ebx
10672
                ror     ebp, 6
10673
                rol     edi, 7
10674
                xor     edi, ebp
10675
                ror     ebp, 5
10676
                xor     edi, ebp
10677
                mov     ebp, ecx
10678
                xor     ebp, edx
10679
                and     ebp, ebx
10680
                lea     eax, [edi+eax-7338FDF8h]
10681
                mov     edi, [esp+18h]
10682
                xor     ebp, edx
10683
                add     eax, [esi+0ECh]
10684
                add     eax, ebp
10685
                mov     ebp, [esp+1Ch]
10686
                mov     ebx, edi
10687
                and     edi, ebp
10688
                or      ebx, ebp
10689
                mov     ebp, [esp+14h]
10690
                and     ebx, ebp
10691
                ror     ebp, 2
10692
                or      ebx, edi
10693
                mov     edi, ebp
10694
                rol     edi, 0Ch
10695
                add     ebx, eax
10696
                xor     ebp, edi
10697
                add     eax, [esp]
10698
                rol     edi, 9
10699
                xor     ebp, edi
10700
                mov     [esp], eax
10701
                add     ebx, ebp
10702
                mov     [esp+10h], ebx
10703
                mov     ebx, [esp+4]
10704
                mov     ebp, eax
10705
                mov     edi, eax
10706
                ror     ebp, 6
10707
                rol     edi, 7
10708
                xor     edi, ebp
10709
                ror     ebp, 5
10710
                xor     edi, ebp
10711
                mov     ebp, ebx
10712
                xor     ebp, ecx
10713
                and     ebp, eax
10714
                lea     edx, [edi+edx-6F410006h]
10715
                mov     edi, [esp+14h]
10716
                xor     ebp, ecx
10717
                add     edx, [esi+0F0h]
10718
                add     edx, ebp
10719
                mov     ebp, [esp+18h]
10720
                mov     eax, edi
10721
                and     edi, ebp
10722
                or      eax, ebp
10723
                mov     ebp, [esp+10h]
10724
                and     eax, ebp
10725
                ror     ebp, 2
10726
                or      eax, edi
10727
                mov     edi, ebp
10728
                rol     edi, 0Ch
10729
                add     eax, edx
10730
                xor     ebp, edi
10731
                add     edx, [esp+1Ch]
10732
                rol     edi, 9
10733
                xor     ebp, edi
10734
                mov     [esp+1Ch], edx
10735
                add     eax, ebp
10736
                mov     [esp+0Ch], eax
10737
                mov     eax, [esp]
10738
                mov     ebp, edx
10739
                mov     edi, edx
10740
                ror     ebp, 6
10741
                rol     edi, 7
10742
                xor     edi, ebp
10743
                ror     ebp, 5
10744
                xor     edi, ebp
10745
                mov     ebp, eax
10746
                xor     ebp, ebx
10747
                and     ebp, edx
10748
                lea     ecx, [edi+ecx-5BAF9315h]
10749
                mov     edi, [esp+10h]
10750
                xor     ebp, ebx
10751
                add     ecx, [esi+0F4h]
10752
                add     ecx, ebp
10753
                mov     ebp, [esp+14h]
10754
                mov     edx, edi
10755
                and     edi, ebp
10756
                or      edx, ebp
10757
                mov     ebp, [esp+0Ch]
10758
                and     edx, ebp
10759
                ror     ebp, 2
10760
                or      edx, edi
10761
                mov     edi, ebp
10762
                rol     edi, 0Ch
10763
                add     edx, ecx
10764
                xor     ebp, edi
10765
                add     ecx, [esp+18h]
10766
                rol     edi, 9
10767
                xor     ebp, edi
10768
                mov     [esp+18h], ecx
10769
                add     edx, ebp
10770
                mov     [esp+8], edx
10771
                mov     edx, [esp+1Ch]
10772
                mov     ebp, ecx
10773
                mov     edi, ecx
10774
                ror     ebp, 6
10775
                rol     edi, 7
10776
                xor     edi, ebp
10777
                ror     ebp, 5
10778
                xor     edi, ebp
10779
                mov     ebp, edx
10780
                xor     ebp, eax
10781
                and     ebp, ecx
10782
                lea     ebx, [edi+ebx-41065C09h]
10783
                mov     edi, [esp+0Ch]
10784
                xor     ebp, eax
10785
                add     ebx, [esi+0F8h]
10786
                add     ebx, ebp
10787
                mov     ebp, [esp+10h]
10788
                mov     ecx, edi
10789
                and     edi, ebp
10790
                or      ecx, ebp
10791
                mov     ebp, [esp+8]
10792
                and     ecx, ebp
10793
                ror     ebp, 2
10794
                or      ecx, edi
10795
                mov     edi, ebp
10796
                rol     edi, 0Ch
10797
                add     ecx, ebx
10798
                xor     ebp, edi
10799
                add     ebx, [esp+14h]
10800
                rol     edi, 9
10801
                xor     ebp, edi
10802
                mov     [esp+14h], ebx
10803
                add     ecx, ebp
10804
                mov     [esp+4], ecx
10805
                mov     ecx, [esp+18h]
10806
                mov     ebp, ebx
10807
                mov     edi, ebx
10808
                ror     ebp, 6
10809
                rol     edi, 7
10810
                xor     edi, ebp
10811
                ror     ebp, 5
10812
                xor     edi, ebp
10813
                mov     ebp, ecx
10814
                xor     ebp, edx
10815
                and     ebp, ebx
10816
                lea     eax, [edi+eax-398E870Eh]
10817
                mov     edi, [esp+8]
10818
                xor     ebp, edx
10819
                add     eax, [esi+0FCh]
10820
                add     eax, ebp
10821
                mov     ebp, [esp+0Ch]
10822
                mov     ebx, edi
10823
                and     edi, ebp
10824
                or      ebx, ebp
10825
                mov     ebp, [esp+4]
10826
                and     ebx, ebp
10827
                ror     ebp, 2
10828
                or      ebx, edi
10829
                mov     edi, ebp
10830
                rol     edi, 0Ch
10831
                add     ebx, eax
10832
                xor     ebp, edi
10833
                add     eax, [esp+10h]
10834
                rol     edi, 9
10835
                xor     ebp, edi
10836
                mov     [esp+10h], eax
10837
                add     ebx, ebp
10838
                mov     [esp], ebx
10839
                mov     ebx, [esp+14h]
10840
                mov     edi, [esp+24h]
10841
                add     [edi+10h], eax
10842
                add     [edi+14h], ebx
10843
                add     [edi+18h], ecx
10844
                add     [edi+1Ch], edx
10845
                mov     eax, [esp]
10846
                mov     ebx, [esp+4]
10847
                mov     ecx, [esp+8]
10848
                mov     edx, [esp+0Ch]
10849
                mov     ebp, [esp+28h]
10850
                add     [edi], eax
10851
                add     [edi+4], ebx
10852
                mov     esp, ebp
10853
                add     [edi+8], ecx
10854
                add     [edi+0Ch], edx
10855
                pop     ebp
10856
                pop     edi
10857
                pop     esi
10858
                pop     ebx
10859
  end;
10860
end;
10861
{$ENDIF}
10862
 
10863
{$IFDEF THash_SHA384_asm}
10864
procedure SHA384Buffer(S, D: Pointer); assembler;
10865
asm
10866
                push ebx
10867
                push edi
10868
                mov  edi, eax
10869
                push esi
10870
                mov  esi, edx
10871
 
10872
                mov     eax, [esi]
10873
                mov     ebx, [esi+4]
10874
                bswap   eax
10875
                bswap   ebx
10876
                mov     ecx, [esi+8]
10877
                mov     edx, [esi+0Ch]
10878
                bswap   ecx
10879
                bswap   edx
10880
                mov     [edi], ebx
10881
                mov     [edi+4], eax
10882
                mov     [edi+8], edx
10883
                mov     [edi+0Ch], ecx
10884
                mov     eax, [esi+10h]
10885
                mov     ebx, [esi+14h]
10886
                bswap   eax
10887
                bswap   ebx
10888
                mov     ecx, [esi+18h]
10889
                mov     edx, [esi+1Ch]
10890
                bswap   ecx
10891
                bswap   edx
10892
                mov     [edi+10h], ebx
10893
                mov     [edi+14h], eax
10894
                mov     [edi+18h], edx
10895
                mov     [edi+1Ch], ecx
10896
                mov     eax, [esi+20h]
10897
                mov     ebx, [esi+24h]
10898
                bswap   eax
10899
                bswap   ebx
10900
                mov     ecx, [esi+28h]
10901
                mov     edx, [esi+2Ch]
10902
                bswap   ecx
10903
                bswap   edx
10904
                mov     [edi+20h], ebx
10905
                mov     [edi+24h], eax
10906
                mov     [edi+28h], edx
10907
                mov     [edi+2Ch], ecx
10908
                mov     eax, [esi+30h]
10909
                mov     ebx, [esi+34h]
10910
                bswap   eax
10911
                bswap   ebx
10912
                mov     ecx, [esi+38h]
10913
                mov     edx, [esi+3Ch]
10914
                bswap   ecx
10915
                bswap   edx
10916
                mov     [edi+30h], ebx
10917
                mov     [edi+34h], eax
10918
                mov     [edi+38h], edx
10919
                mov     [edi+3Ch], ecx
10920
 
10921
 
10922
 
10923
                pop  esi
10924
                pop  edi
10925
                pop  ebx
10926
end;
10927
 
10928
procedure THash_SHA384.DoTransform(Buffer: PLongArray);
10929
var
10930
  W: array [0..159] of LongWord;
10931
begin
10932
  // swap first 16 uint64
10933
  SHA384Buffer(@W[0],  @Buffer[0]);
10934
  SHA384Buffer(Pointer(LongInt(@W[0]) + 16*4), Pointer(LongInt(@Buffer[0]) + 16*4));
10935
  asm
10936
    push    ebx
10937
    push    esi
10938
    push    edi
10939
    push    ebp
10940
 
10941
    mov     eax, Self
10942
    lea     edi, [eax].THash_SHA512.FDigest
10943
    lea     esi, W
10944
    lea     ebp, SHA_512K
10945
 
10946
  //  {$INCLUDE sha512t.inc}  // include sha512 asm transform code
10947
 
10948
                sub     esp, 60h
10949
                mov     [esp+54h], ebp
10950
                mov     [esp+5Ch], edi
10951
                mov     [esp+58h], esi
10952
                mov     dword ptr [esp+50h], 10h
10953
 
10954
@@buffexpand_loop:
10955
                mov     ebp, [esi+8]
10956
                mov     eax, [esi+0Ch]
10957
                mov     ecx, ebp
10958
                mov     edi, eax
10959
                shl     eax, 18h
10960
                mov     edx, edi
10961
                shr     ecx, 1
10962
                mov     ebx, eax
10963
                shl     edx, 1Fh
10964
                shl     ebx, 1
10965
                or      edx, ecx
10966
                shr     ecx, 6
10967
                or      ebx, ecx
10968
                shr     ecx, 1
10969
                xor     edx, ebx
10970
                shl     ebp, 18h
10971
                or      eax, ecx
10972
                shr     edi, 1
10973
                mov     ecx, ebp
10974
                shl     ecx, 7
10975
                or      ecx, edi
10976
                shr     edi, 6
10977
                xor     edx, eax
10978
                xor     ecx, edi
10979
                mov     [esp+40h], edx
10980
                shr     edi, 1
10981
                or      ebp, edi
10982
                xor     ecx, ebp
10983
                mov     ebp, [esi+70h]
10984
                mov     edi, [esi+74h]
10985
                mov     [esp+44h], ecx
10986
                mov     ecx, ebp
10987
                mov     edx, edi
10988
                shl     ecx, 3
10989
                mov     eax, ebp
10990
                shr     edx, 1Dh
10991
                mov     ebx, edi
10992
                shr     eax, 6
10993
                or      edx, ecx
10994
                shl     ebx, 1Ah
10995
                or      eax, ebx
10996
                mov     ebx, edi
10997
                xor     edx, eax
10998
                shr     eax, 0Dh
10999
                mov     ecx, ebp
11000
                shl     ebx, 0Dh
11001
                or      eax, ebx
11002
                shr     ecx, 1Dh
11003
                xor     eax, edx
11004
                mov     edx, edi
11005
                shl     edx, 3
11006
                shr     edi, 6
11007
                or      edx, ecx
11008
                xor     edx, edi
11009
                shr     edi, 0Dh
11010
                mov     ecx, eax
11011
                shl     ebp, 0Dh
11012
                mov     eax, [esp+40h]
11013
                or      edi, ebp
11014
                mov     ebx, [esp+44h]
11015
                xor     edx, edi
11016
                mov     ebp, [esi]
11017
                mov     edi, [esi+4]
11018
                add     eax, ecx
11019
                adc     ebx, edx
11020
                add     eax, ebp
11021
                adc     ebx, edi
11022
                mov     ebp, [esi+48h]
11023
                mov     edi, [esi+4Ch]
11024
                add     eax, ebp
11025
                adc     ebx, edi
11026
                mov     [esi+80h], eax
11027
                mov     [esi+84h], ebx
11028
                mov     ebp, [esi+10h]
11029
                mov     eax, [esi+14h]
11030
                mov     ecx, ebp
11031
                mov     edi, eax
11032
                shl     eax, 18h
11033
                mov     edx, edi
11034
                shr     ecx, 1
11035
                mov     ebx, eax
11036
                shl     edx, 1Fh
11037
                shl     ebx, 1
11038
                or      edx, ecx
11039
                shr     ecx, 6
11040
                or      ebx, ecx
11041
                shr     ecx, 1
11042
                xor     edx, ebx
11043
                shl     ebp, 18h
11044
                or      eax, ecx
11045
                shr     edi, 1
11046
                mov     ecx, ebp
11047
                shl     ecx, 7
11048
                or      ecx, edi
11049
                shr     edi, 6
11050
                xor     edx, eax
11051
                xor     ecx, edi
11052
                mov     [esp+40h], edx
11053
                shr     edi, 1
11054
                or      ebp, edi
11055
                xor     ecx, ebp
11056
                mov     ebp, [esi+78h]
11057
                mov     edi, [esi+7Ch]
11058
                mov     [esp+44h], ecx
11059
                mov     ecx, ebp
11060
                mov     edx, edi
11061
                shl     ecx, 3
11062
                mov     eax, ebp
11063
                shr     edx, 1Dh
11064
                mov     ebx, edi
11065
                shr     eax, 6
11066
                or      edx, ecx
11067
                shl     ebx, 1Ah
11068
                or      eax, ebx
11069
                mov     ebx, edi
11070
                xor     edx, eax
11071
                shr     eax, 0Dh
11072
                mov     ecx, ebp
11073
                shl     ebx, 0Dh
11074
                or      eax, ebx
11075
                shr     ecx, 1Dh
11076
                xor     eax, edx
11077
                mov     edx, edi
11078
                shl     edx, 3
11079
                shr     edi, 6
11080
                or      edx, ecx
11081
                xor     edx, edi
11082
                shr     edi, 0Dh
11083
                mov     ecx, eax
11084
                shl     ebp, 0Dh
11085
                mov     eax, [esp+40h]
11086
                or      edi, ebp
11087
                mov     ebx, [esp+44h]
11088
                xor     edx, edi
11089
                mov     ebp, [esi+8]
11090
                mov     edi, [esi+0Ch]
11091
                add     eax, ecx
11092
                adc     ebx, edx
11093
                add     eax, ebp
11094
                adc     ebx, edi
11095
                mov     ebp, [esi+50h]
11096
                mov     edi, [esi+54h]
11097
                add     eax, ebp
11098
                adc     ebx, edi
11099
                mov     [esi+88h], eax
11100
                mov     [esi+8Ch], ebx
11101
                add     esi, 10h
11102
                add     dword ptr [esp+50h], 2
11103
                cmp     dword ptr [esp+50h], 50h 
11104
                jnz     @@buffexpand_loop
11105
                mov     edi, [esp+5Ch]
11106
                mov     esi, [esp+58h]
11107
                mov     eax, [edi]
11108
                mov     ebx, [edi+4]
11109
                mov     ecx, [edi+8]
11110
                mov     edx, [edi+0Ch]
11111
                mov     [esp], eax
11112
                mov     [esp+4], ebx
11113
                mov     [esp+8], ecx
11114
                mov     [esp+0Ch], edx
11115
                mov     eax, [edi+10h]
11116
                mov     ebx, [edi+14h]
11117
                mov     ecx, [edi+18h]
11118
                mov     edx, [edi+1Ch]
11119
                mov     [esp+10h], eax
11120
                mov     [esp+14h], ebx
11121
                mov     [esp+18h], ecx
11122
                mov     [esp+1Ch], edx
11123
                mov     eax, [edi+20h]
11124
                mov     ebx, [edi+24h]
11125
                mov     ecx, [edi+28h]
11126
                mov     edx, [edi+2Ch]
11127
                mov     [esp+20h], eax
11128
                mov     [esp+24h], ebx
11129
                mov     [esp+28h], ecx
11130
                mov     [esp+2Ch], edx
11131
                mov     eax, [edi+30h]
11132
                mov     ebx, [edi+34h]
11133
                mov     ecx, [edi+38h]
11134
                mov     edx, [edi+3Ch]
11135
                mov     [esp+30h], eax
11136
                mov     [esp+34h], ebx
11137
                xor     eax, eax
11138
                mov     [esp+38h], ecx
11139
                mov     [esp+3Ch], edx
11140
                mov     [esp+50h], eax
11141
 
11142
@@body_loop:                            
11143
                mov     eax, [esp+20h]
11144
                mov     ebx, [esp+24h]
11145
                mov     ecx, eax
11146
                mov     edx, ebx
11147
                shr     ecx, 0Eh
11148
                mov     ebp, eax
11149
                shl     edx, 12h
11150
                mov     edi, ebx
11151
                shr     ebp, 12h
11152
                or      ecx, edx
11153
                shl     edi, 0Eh
11154
                or      ebp, edi
11155
                mov     edx, ebx
11156
                xor     ebp, ecx
11157
                mov     ecx, eax
11158
                shl     ecx, 17h
11159
                shr     edx, 9
11160
                or      ecx, edx
11161
                mov     edx, eax
11162
                xor     ebp, ecx
11163
                mov     ecx, ebx
11164
                mov     [esp+40h], ebp
11165
                shr     ecx, 0Eh
11166
                mov     ebp, ebx
11167
                shl     edx, 12h
11168
                mov     edi, eax
11169
                shr     ebp, 12h
11170
                or      ecx, edx
11171
                shl     edi, 0Eh
11172
                or      ebp, edi
11173
                mov     edx, eax
11174
                xor     ebp, ecx
11175
                mov     ecx, ebx
11176
                shl     ecx, 17h
11177
                shr     edx, 9
11178
                or      ecx, edx
11179
                mov     edx, [esp+2Ch]
11180
                xor     ebp, ecx
11181
                mov     ecx, [esp+28h]
11182
                mov     [esp+44h], ebp
11183
                mov     ebp, [esp+30h]
11184
                mov     edi, [esp+34h]
11185
                xor     ecx, ebp
11186
                xor     edx, edi
11187
                and     ecx, eax
11188
                and     edx, ebx
11189
                xor     ecx, ebp
11190
                xor     edx, edi
11191
                add     ecx, [esp+40h]
11192
                mov     eax, [esp+38h]
11193
                adc     edx, [esp+44h]
11194
                mov     ebx, [esp+3Ch]
11195
                add     ecx, eax
11196
                mov     edi, [esp+50h]
11197
                adc     edx, ebx
11198
                mov     ebp, [esp+54h]
11199
                shl     edi, 3
11200
                add     edi, 0
11201
                shl     edi, 3
11202
                mov     eax, [edi+ebp]
11203
                mov     ebx, [edi+ebp+4]
11204
                add     ecx, eax
11205
                mov     eax, [esi+edi]
11206
                adc     edx, ebx
11207
                mov     ebx, [esi+edi+4]
11208
                add     ecx, eax
11209
                mov     eax, [esp]
11210
                adc     edx, ebx
11211
                mov     ebx, [esp+4]
11212
                mov     [esp+40h], ecx
11213
                mov     [esp+44h], edx
11214
                mov     ecx, eax
11215
                mov     edx, ebx
11216
                shr     ecx, 1Ch
11217
                mov     ebp, eax
11218
                shl     edx, 4
11219
                mov     edi, ebx
11220
                shl     ebp, 1Eh
11221
                or      ecx, edx
11222
                shr     edi, 2
11223
                or      ebp, edi
11224
                mov     edx, ebx
11225
                xor     ebp, ecx
11226
                mov     ecx, eax
11227
                shr     edx, 7
11228
                shl     ecx, 19h
11229
                or      ecx, edx
11230
                mov     edx, eax
11231
                xor     ebp, ecx
11232
                mov     ecx, ebx
11233
                mov     [esp+48h], ebp
11234
                shr     ecx, 1Ch
11235
                mov     ebp, ebx
11236
                shl     edx, 4
11237
                mov     edi, eax
11238
                shl     ebp, 1Eh
11239
                or      ecx, edx
11240
                shr     edi, 2
11241
                or      ebp, edi
11242
                mov     edx, eax
11243
                xor     ebp, ecx
11244
                mov     ecx, ebx
11245
                shl     ecx, 19h
11246
                shr     edx, 7
11247
                or      ecx, edx
11248
                mov     edx, [esp+0Ch]
11249
                xor     ebp, ecx
11250
                mov     ecx, [esp+8]
11251
                mov     [esp+4Ch], ebp
11252
                mov     ebp, [esp+10h]
11253
                mov     edi, [esp+14h]
11254
                or      ecx, ebp
11255
                or      edx, edi
11256
                and     eax, ecx
11257
                and     ebx, edx
11258
                mov     ecx, [esp+8]
11259
                mov     edx, [esp+0Ch]
11260
                and     ebp, ecx
11261
                and     edi, edx
11262
                or      eax, ebp
11263
                or      ebx, edi
11264
                mov     ecx, [esp+48h]
11265
                mov     edx, [esp+4Ch]
11266
                add     eax, ecx
11267
                mov     ebp, [esp+40h]
11268
                adc     ebx, edx
11269
                mov     ecx, [esp+18h]
11270
                mov     edx, [esp+1Ch]
11271
                mov     edi, [esp+44h]
11272
                add     ecx, ebp
11273
                adc     edx, edi
11274
                mov     [esp+18h], ecx
11275
                mov     [esp+1Ch], edx
11276
                add     ebp, eax
11277
                adc     edi, ebx
11278
                mov     [esp+38h], ebp
11279
                mov     [esp+3Ch], edi
11280
                mov     eax, [esp+18h]
11281
                mov     ebx, [esp+1Ch]
11282
                mov     ecx, eax
11283
                mov     edx, ebx
11284
                shr     ecx, 0Eh
11285
                mov     ebp, eax
11286
                shl     edx, 12h
11287
                mov     edi, ebx
11288
                shr     ebp, 12h
11289
                or      ecx, edx
11290
                shl     edi, 0Eh
11291
                or      ebp, edi
11292
                mov     edx, ebx
11293
                xor     ebp, ecx
11294
                mov     ecx, eax
11295
                shl     ecx, 17h
11296
                shr     edx, 9
11297
                or      ecx, edx
11298
                mov     edx, eax
11299
                xor     ebp, ecx
11300
                mov     ecx, ebx
11301
                mov     [esp+40h], ebp
11302
                shr     ecx, 0Eh
11303
                mov     ebp, ebx
11304
                shl     edx, 12h
11305
                mov     edi, eax
11306
                shr     ebp, 12h
11307
                or      ecx, edx
11308
                shl     edi, 0Eh
11309
                or      ebp, edi
11310
                mov     edx, eax
11311
                xor     ebp, ecx
11312
                mov     ecx, ebx
11313
                shl     ecx, 17h
11314
                shr     edx, 9
11315
                or      ecx, edx
11316
                mov     edx, [esp+24h]
11317
                xor     ebp, ecx
11318
                mov     ecx, [esp+20h]
11319
                mov     [esp+44h], ebp
11320
                mov     ebp, [esp+28h]
11321
                mov     edi, [esp+2Ch]
11322
                xor     ecx, ebp
11323
                xor     edx, edi
11324
                and     ecx, eax
11325
                and     edx, ebx
11326
                xor     ecx, ebp
11327
                xor     edx, edi
11328
                add     ecx, [esp+40h]
11329
                mov     eax, [esp+30h]
11330
                adc     edx, [esp+44h]
11331
                mov     ebx, [esp+34h]
11332
                add     ecx, eax
11333
                mov     edi, [esp+50h]
11334
                adc     edx, ebx
11335
                mov     ebp, [esp+54h]
11336
                shl     edi, 3
11337
                add     edi, 1
11338
                shl     edi, 3
11339
                mov     eax, [edi+ebp]
11340
                mov     ebx, [edi+ebp+4]
11341
                add     ecx, eax
11342
                mov     eax, [esi+edi]
11343
                adc     edx, ebx
11344
                mov     ebx, [esi+edi+4]
11345
                add     ecx, eax
11346
                mov     eax, [esp+38h]
11347
                adc     edx, ebx
11348
                mov     ebx, [esp+3Ch]
11349
                mov     [esp+40h], ecx
11350
                mov     [esp+44h], edx
11351
                mov     ecx, eax
11352
                mov     edx, ebx
11353
                shr     ecx, 1Ch
11354
                mov     ebp, eax
11355
                shl     edx, 4
11356
                mov     edi, ebx
11357
                shl     ebp, 1Eh
11358
                or      ecx, edx
11359
                shr     edi, 2
11360
                or      ebp, edi
11361
                mov     edx, ebx
11362
                xor     ebp, ecx
11363
                mov     ecx, eax
11364
                shr     edx, 7
11365
                shl     ecx, 19h
11366
                or      ecx, edx
11367
                mov     edx, eax
11368
                xor     ebp, ecx
11369
                mov     ecx, ebx
11370
                mov     [esp+48h], ebp
11371
                shr     ecx, 1Ch
11372
                mov     ebp, ebx
11373
                shl     edx, 4
11374
                mov     edi, eax
11375
                shl     ebp, 1Eh
11376
                or      ecx, edx
11377
                shr     edi, 2
11378
                or      ebp, edi
11379
                mov     edx, eax
11380
                xor     ebp, ecx
11381
                mov     ecx, ebx
11382
                shl     ecx, 19h
11383
                shr     edx, 7
11384
                or      ecx, edx
11385
                mov     edx, [esp+4]
11386
                xor     ebp, ecx
11387
                mov     ecx, [esp]
11388
                mov     [esp+4Ch], ebp
11389
                mov     ebp, [esp+8]
11390
                mov     edi, [esp+0Ch]
11391
                or      ecx, ebp
11392
                or      edx, edi
11393
                and     eax, ecx
11394
                and     ebx, edx
11395
                mov     ecx, [esp]
11396
                mov     edx, [esp+4]
11397
                and     ebp, ecx
11398
                and     edi, edx
11399
                or      eax, ebp
11400
                or      ebx, edi
11401
                mov     ecx, [esp+48h]
11402
                mov     edx, [esp+4Ch]
11403
                add     eax, ecx
11404
                mov     ebp, [esp+40h]
11405
                adc     ebx, edx
11406
                mov     ecx, [esp+10h]
11407
                mov     edx, [esp+14h]
11408
                mov     edi, [esp+44h]
11409
                add     ecx, ebp
11410
                adc     edx, edi
11411
                mov     [esp+10h], ecx
11412
                mov     [esp+14h], edx
11413
                add     ebp, eax
11414
                adc     edi, ebx
11415
                mov     [esp+30h], ebp
11416
                mov     [esp+34h], edi
11417
                mov     eax, [esp+10h]
11418
                mov     ebx, [esp+14h]
11419
                mov     ecx, eax
11420
                mov     edx, ebx
11421
                shr     ecx, 0Eh
11422
                mov     ebp, eax
11423
                shl     edx, 12h
11424
                mov     edi, ebx
11425
                shr     ebp, 12h
11426
                or      ecx, edx
11427
                shl     edi, 0Eh
11428
                or      ebp, edi
11429
                mov     edx, ebx
11430
                xor     ebp, ecx
11431
                mov     ecx, eax
11432
                shl     ecx, 17h
11433
                shr     edx, 9
11434
                or      ecx, edx
11435
                mov     edx, eax
11436
                xor     ebp, ecx
11437
                mov     ecx, ebx
11438
                mov     [esp+40h], ebp
11439
                shr     ecx, 0Eh
11440
                mov     ebp, ebx
11441
                shl     edx, 12h
11442
                mov     edi, eax
11443
                shr     ebp, 12h
11444
                or      ecx, edx
11445
                shl     edi, 0Eh
11446
                or      ebp, edi
11447
                mov     edx, eax
11448
                xor     ebp, ecx
11449
                mov     ecx, ebx
11450
                shl     ecx, 17h
11451
                shr     edx, 9
11452
                or      ecx, edx
11453
                mov     edx, [esp+1Ch]
11454
                xor     ebp, ecx
11455
                mov     ecx, [esp+18h]
11456
                mov     [esp+44h], ebp
11457
                mov     ebp, [esp+20h]
11458
                mov     edi, [esp+24h]
11459
                xor     ecx, ebp
11460
                xor     edx, edi
11461
                and     ecx, eax
11462
                and     edx, ebx
11463
                xor     ecx, ebp
11464
                xor     edx, edi
11465
                add     ecx, [esp+40h]
11466
                mov     eax, [esp+28h]
11467
                adc     edx, [esp+44h]
11468
                mov     ebx, [esp+2Ch]
11469
                add     ecx, eax
11470
                mov     edi, [esp+50h]
11471
                adc     edx, ebx
11472
                mov     ebp, [esp+54h]
11473
                shl     edi, 3
11474
                add     edi, 2
11475
                shl     edi, 3
11476
                mov     eax, [edi+ebp]
11477
                mov     ebx, [edi+ebp+4]
11478
                add     ecx, eax
11479
                mov     eax, [esi+edi]
11480
                adc     edx, ebx
11481
                mov     ebx, [esi+edi+4]
11482
                add     ecx, eax
11483
                mov     eax, [esp+30h]
11484
                adc     edx, ebx
11485
                mov     ebx, [esp+34h]
11486
                mov     [esp+40h], ecx
11487
                mov     [esp+44h], edx
11488
                mov     ecx, eax
11489
                mov     edx, ebx
11490
                shr     ecx, 1Ch
11491
                mov     ebp, eax
11492
                shl     edx, 4
11493
                mov     edi, ebx
11494
                shl     ebp, 1Eh
11495
                or      ecx, edx
11496
                shr     edi, 2
11497
                or      ebp, edi
11498
                mov     edx, ebx
11499
                xor     ebp, ecx
11500
                mov     ecx, eax
11501
                shr     edx, 7
11502
                shl     ecx, 19h
11503
                or      ecx, edx
11504
                mov     edx, eax
11505
                xor     ebp, ecx
11506
                mov     ecx, ebx
11507
                mov     [esp+48h], ebp
11508
                shr     ecx, 1Ch
11509
                mov     ebp, ebx
11510
                shl     edx, 4
11511
                mov     edi, eax
11512
                shl     ebp, 1Eh
11513
                or      ecx, edx
11514
                shr     edi, 2
11515
                or      ebp, edi
11516
                mov     edx, eax
11517
                xor     ebp, ecx
11518
                mov     ecx, ebx
11519
                shl     ecx, 19h
11520
                shr     edx, 7
11521
                or      ecx, edx
11522
                mov     edx, [esp+3Ch]
11523
                xor     ebp, ecx
11524
                mov     ecx, [esp+38h]
11525
                mov     [esp+4Ch], ebp
11526
                mov     ebp, [esp]
11527
                mov     edi, [esp+4]
11528
                or      ecx, ebp
11529
                or      edx, edi
11530
                and     eax, ecx
11531
                and     ebx, edx
11532
                mov     ecx, [esp+38h]
11533
                mov     edx, [esp+3Ch]
11534
                and     ebp, ecx
11535
                and     edi, edx
11536
                or      eax, ebp
11537
                or      ebx, edi
11538
                mov     ecx, [esp+48h]
11539
                mov     edx, [esp+4Ch]
11540
                add     eax, ecx
11541
                mov     ebp, [esp+40h]
11542
                adc     ebx, edx
11543
                mov     ecx, [esp+8]
11544
                mov     edx, [esp+0Ch]
11545
                mov     edi, [esp+44h]
11546
                add     ecx, ebp
11547
                adc     edx, edi
11548
                mov     [esp+8], ecx
11549
                mov     [esp+0Ch], edx
11550
                add     ebp, eax
11551
                adc     edi, ebx
11552
                mov     [esp+28h], ebp
11553
                mov     [esp+2Ch], edi
11554
                mov     eax, [esp+8]
11555
                mov     ebx, [esp+0Ch]
11556
                mov     ecx, eax
11557
                mov     edx, ebx
11558
                shr     ecx, 0Eh
11559
                mov     ebp, eax
11560
                shl     edx, 12h
11561
                mov     edi, ebx
11562
                shr     ebp, 12h
11563
                or      ecx, edx
11564
                shl     edi, 0Eh
11565
                or      ebp, edi
11566
                mov     edx, ebx
11567
                xor     ebp, ecx
11568
                mov     ecx, eax
11569
                shl     ecx, 17h
11570
                shr     edx, 9
11571
                or      ecx, edx
11572
                mov     edx, eax
11573
                xor     ebp, ecx
11574
                mov     ecx, ebx
11575
                mov     [esp+40h], ebp
11576
                shr     ecx, 0Eh
11577
                mov     ebp, ebx
11578
                shl     edx, 12h
11579
                mov     edi, eax
11580
                shr     ebp, 12h
11581
                or      ecx, edx
11582
                shl     edi, 0Eh
11583
                or      ebp, edi
11584
                mov     edx, eax
11585
                xor     ebp, ecx
11586
                mov     ecx, ebx
11587
                shl     ecx, 17h
11588
                shr     edx, 9
11589
                or      ecx, edx
11590
                mov     edx, [esp+14h]
11591
                xor     ebp, ecx
11592
                mov     ecx, [esp+10h]
11593
                mov     [esp+44h], ebp
11594
                mov     ebp, [esp+18h]
11595
                mov     edi, [esp+1Ch]
11596
                xor     ecx, ebp
11597
                xor     edx, edi
11598
                and     ecx, eax
11599
                and     edx, ebx
11600
                xor     ecx, ebp
11601
                xor     edx, edi
11602
                add     ecx, [esp+40h]
11603
                mov     eax, [esp+20h]
11604
                adc     edx, [esp+44h]
11605
                mov     ebx, [esp+24h]
11606
                add     ecx, eax
11607
                mov     edi, [esp+50h]
11608
                adc     edx, ebx
11609
                mov     ebp, [esp+54h]
11610
                shl     edi, 3
11611
                add     edi, 3
11612
                shl     edi, 3
11613
                mov     eax, [edi+ebp]
11614
                mov     ebx, [edi+ebp+4]
11615
                add     ecx, eax
11616
                mov     eax, [esi+edi]
11617
                adc     edx, ebx
11618
                mov     ebx, [esi+edi+4]
11619
                add     ecx, eax
11620
                mov     eax, [esp+28h]
11621
                adc     edx, ebx
11622
                mov     ebx, [esp+2Ch]
11623
                mov     [esp+40h], ecx
11624
                mov     [esp+44h], edx
11625
                mov     ecx, eax
11626
                mov     edx, ebx
11627
                shr     ecx, 1Ch
11628
                mov     ebp, eax
11629
                shl     edx, 4
11630
                mov     edi, ebx
11631
                shl     ebp, 1Eh
11632
                or      ecx, edx
11633
                shr     edi, 2
11634
                or      ebp, edi
11635
                mov     edx, ebx
11636
                xor     ebp, ecx
11637
                mov     ecx, eax
11638
                shr     edx, 7
11639
                shl     ecx, 19h
11640
                or      ecx, edx
11641
                mov     edx, eax
11642
                xor     ebp, ecx
11643
                mov     ecx, ebx
11644
                mov     [esp+48h], ebp
11645
                shr     ecx, 1Ch
11646
                mov     ebp, ebx
11647
                shl     edx, 4
11648
                mov     edi, eax
11649
                shl     ebp, 1Eh
11650
                or      ecx, edx
11651
                shr     edi, 2
11652
                or      ebp, edi
11653
                mov     edx, eax
11654
                xor     ebp, ecx
11655
                mov     ecx, ebx
11656
                shl     ecx, 19h
11657
                shr     edx, 7
11658
                or      ecx, edx
11659
                mov     edx, [esp+34h]
11660
                xor     ebp, ecx
11661
                mov     ecx, [esp+30h]
11662
                mov     [esp+4Ch], ebp
11663
                mov     ebp, [esp+38h]
11664
                mov     edi, [esp+3Ch]
11665
                or      ecx, ebp
11666
                or      edx, edi
11667
                and     eax, ecx
11668
                and     ebx, edx
11669
                mov     ecx, [esp+30h]
11670
                mov     edx, [esp+34h]
11671
                and     ebp, ecx
11672
                and     edi, edx
11673
                or      eax, ebp
11674
                or      ebx, edi
11675
                mov     ecx, [esp+48h]
11676
                mov     edx, [esp+4Ch]
11677
                add     eax, ecx
11678
                mov     ebp, [esp+40h]
11679
                adc     ebx, edx
11680
                mov     ecx, [esp]
11681
                mov     edx, [esp+4]
11682
                mov     edi, [esp+44h]
11683
                add     ecx, ebp
11684
                adc     edx, edi
11685
                mov     [esp], ecx
11686
                mov     [esp+4], edx
11687
                add     ebp, eax
11688
                adc     edi, ebx
11689
                mov     [esp+20h], ebp
11690
                mov     [esp+24h], edi
11691
                mov     eax, [esp]
11692
                mov     ebx, [esp+4]
11693
                mov     ecx, eax
11694
                mov     edx, ebx
11695
                shr     ecx, 0Eh
11696
                mov     ebp, eax
11697
                shl     edx, 12h
11698
                mov     edi, ebx
11699
                shr     ebp, 12h
11700
                or      ecx, edx
11701
                shl     edi, 0Eh
11702
                or      ebp, edi
11703
                mov     edx, ebx
11704
                xor     ebp, ecx
11705
                mov     ecx, eax
11706
                shl     ecx, 17h
11707
                shr     edx, 9
11708
                or      ecx, edx
11709
                mov     edx, eax
11710
                xor     ebp, ecx
11711
                mov     ecx, ebx
11712
                mov     [esp+40h], ebp
11713
                shr     ecx, 0Eh
11714
                mov     ebp, ebx
11715
                shl     edx, 12h
11716
                mov     edi, eax
11717
                shr     ebp, 12h
11718
                or      ecx, edx
11719
                shl     edi, 0Eh
11720
                or      ebp, edi
11721
                mov     edx, eax
11722
                xor     ebp, ecx
11723
                mov     ecx, ebx
11724
                shl     ecx, 17h
11725
                shr     edx, 9
11726
                or      ecx, edx
11727
                mov     edx, [esp+0Ch]
11728
                xor     ebp, ecx
11729
                mov     ecx, [esp+8]
11730
                mov     [esp+44h], ebp
11731
                mov     ebp, [esp+10h]
11732
                mov     edi, [esp+14h]
11733
                xor     ecx, ebp
11734
                xor     edx, edi
11735
                and     ecx, eax
11736
                and     edx, ebx
11737
                xor     ecx, ebp
11738
                xor     edx, edi
11739
                add     ecx, [esp+40h]
11740
                mov     eax, [esp+18h]
11741
                adc     edx, [esp+44h]
11742
                mov     ebx, [esp+1Ch]
11743
                add     ecx, eax
11744
                mov     edi, [esp+50h]
11745
                adc     edx, ebx
11746
                mov     ebp, [esp+54h]
11747
                shl     edi, 3
11748
                add     edi, 4
11749
                shl     edi, 3
11750
                mov     eax, [edi+ebp]
11751
                mov     ebx, [edi+ebp+4]
11752
                add     ecx, eax
11753
                mov     eax, [esi+edi]
11754
                adc     edx, ebx
11755
                mov     ebx, [esi+edi+4]
11756
                add     ecx, eax
11757
                mov     eax, [esp+20h]
11758
                adc     edx, ebx
11759
                mov     ebx, [esp+24h]
11760
                mov     [esp+40h], ecx
11761
                mov     [esp+44h], edx
11762
                mov     ecx, eax
11763
                mov     edx, ebx
11764
                shr     ecx, 1Ch
11765
                mov     ebp, eax
11766
                shl     edx, 4
11767
                mov     edi, ebx
11768
                shl     ebp, 1Eh
11769
                or      ecx, edx
11770
                shr     edi, 2
11771
                or      ebp, edi
11772
                mov     edx, ebx
11773
                xor     ebp, ecx
11774
                mov     ecx, eax
11775
                shr     edx, 7
11776
                shl     ecx, 19h
11777
                or      ecx, edx
11778
                mov     edx, eax
11779
                xor     ebp, ecx
11780
                mov     ecx, ebx
11781
                mov     [esp+48h], ebp
11782
                shr     ecx, 1Ch
11783
                mov     ebp, ebx
11784
                shl     edx, 4
11785
                mov     edi, eax
11786
                shl     ebp, 1Eh
11787
                or      ecx, edx
11788
                shr     edi, 2
11789
                or      ebp, edi
11790
                mov     edx, eax
11791
                xor     ebp, ecx
11792
                mov     ecx, ebx
11793
                shl     ecx, 19h
11794
                shr     edx, 7
11795
                or      ecx, edx
11796
                mov     edx, [esp+2Ch]
11797
                xor     ebp, ecx
11798
                mov     ecx, [esp+28h]
11799
                mov     [esp+4Ch], ebp
11800
                mov     ebp, [esp+30h]
11801
                mov     edi, [esp+34h]
11802
                or      ecx, ebp
11803
                or      edx, edi
11804
                and     eax, ecx
11805
                and     ebx, edx
11806
                mov     ecx, [esp+28h]
11807
                mov     edx, [esp+2Ch]
11808
                and     ebp, ecx
11809
                and     edi, edx
11810
                or      eax, ebp
11811
                or      ebx, edi
11812
                mov     ecx, [esp+48h]
11813
                mov     edx, [esp+4Ch]
11814
                add     eax, ecx
11815
                mov     ebp, [esp+40h]
11816
                adc     ebx, edx
11817
                mov     ecx, [esp+38h]
11818
                mov     edx, [esp+3Ch]
11819
                mov     edi, [esp+44h]
11820
                add     ecx, ebp
11821
                adc     edx, edi
11822
                mov     [esp+38h], ecx
11823
                mov     [esp+3Ch], edx
11824
                add     ebp, eax
11825
                adc     edi, ebx
11826
                mov     [esp+18h], ebp
11827
                mov     [esp+1Ch], edi
11828
                mov     eax, [esp+38h]
11829
                mov     ebx, [esp+3Ch]
11830
                mov     ecx, eax
11831
                mov     edx, ebx
11832
                shr     ecx, 0Eh
11833
                mov     ebp, eax
11834
                shl     edx, 12h
11835
                mov     edi, ebx
11836
                shr     ebp, 12h
11837
                or      ecx, edx
11838
                shl     edi, 0Eh
11839
                or      ebp, edi
11840
                mov     edx, ebx
11841
                xor     ebp, ecx
11842
                mov     ecx, eax
11843
                shl     ecx, 17h
11844
                shr     edx, 9
11845
                or      ecx, edx
11846
                mov     edx, eax
11847
                xor     ebp, ecx
11848
                mov     ecx, ebx
11849
                mov     [esp+40h], ebp
11850
                shr     ecx, 0Eh
11851
                mov     ebp, ebx
11852
                shl     edx, 12h
11853
                mov     edi, eax
11854
                shr     ebp, 12h
11855
                or      ecx, edx
11856
                shl     edi, 0Eh
11857
                or      ebp, edi
11858
                mov     edx, eax
11859
                xor     ebp, ecx
11860
                mov     ecx, ebx
11861
                shl     ecx, 17h
11862
                shr     edx, 9
11863
                or      ecx, edx
11864
                mov     edx, [esp+4]
11865
                xor     ebp, ecx
11866
                mov     ecx, [esp]
11867
                mov     [esp+44h], ebp
11868
                mov     ebp, [esp+8]
11869
                mov     edi, [esp+0Ch]
11870
                xor     ecx, ebp
11871
                xor     edx, edi
11872
                and     ecx, eax
11873
                and     edx, ebx
11874
                xor     ecx, ebp
11875
                xor     edx, edi
11876
                add     ecx, [esp+40h]
11877
                mov     eax, [esp+10h]
11878
                adc     edx, [esp+44h]
11879
                mov     ebx, [esp+14h]
11880
                add     ecx, eax
11881
                mov     edi, [esp+50h]
11882
                adc     edx, ebx
11883
                mov     ebp, [esp+54h]
11884
                shl     edi, 3
11885
                add     edi, 5
11886
                shl     edi, 3
11887
                mov     eax, [edi+ebp]
11888
                mov     ebx, [edi+ebp+4]
11889
                add     ecx, eax
11890
                mov     eax, [esi+edi]
11891
                adc     edx, ebx
11892
                mov     ebx, [esi+edi+4]
11893
                add     ecx, eax
11894
                mov     eax, [esp+18h]
11895
                adc     edx, ebx
11896
                mov     ebx, [esp+1Ch]
11897
                mov     [esp+40h], ecx
11898
                mov     [esp+44h], edx
11899
                mov     ecx, eax
11900
                mov     edx, ebx
11901
                shr     ecx, 1Ch
11902
                mov     ebp, eax
11903
                shl     edx, 4
11904
                mov     edi, ebx
11905
                shl     ebp, 1Eh
11906
                or      ecx, edx
11907
                shr     edi, 2
11908
                or      ebp, edi
11909
                mov     edx, ebx
11910
                xor     ebp, ecx
11911
                mov     ecx, eax
11912
                shr     edx, 7
11913
                shl     ecx, 19h
11914
                or      ecx, edx
11915
                mov     edx, eax
11916
                xor     ebp, ecx
11917
                mov     ecx, ebx
11918
                mov     [esp+48h], ebp
11919
                shr     ecx, 1Ch
11920
                mov     ebp, ebx
11921
                shl     edx, 4
11922
                mov     edi, eax
11923
                shl     ebp, 1Eh
11924
                or      ecx, edx
11925
                shr     edi, 2
11926
                or      ebp, edi
11927
                mov     edx, eax
11928
                xor     ebp, ecx
11929
                mov     ecx, ebx
11930
                shl     ecx, 19h
11931
                shr     edx, 7
11932
                or      ecx, edx
11933
                mov     edx, [esp+24h]
11934
                xor     ebp, ecx
11935
                mov     ecx, [esp+20h]
11936
                mov     [esp+4Ch], ebp
11937
                mov     ebp, [esp+28h]
11938
                mov     edi, [esp+2Ch]
11939
                or      ecx, ebp
11940
                or      edx, edi
11941
                and     eax, ecx
11942
                and     ebx, edx
11943
                mov     ecx, [esp+20h]
11944
                mov     edx, [esp+24h]
11945
                and     ebp, ecx
11946
                and     edi, edx
11947
                or      eax, ebp
11948
                or      ebx, edi
11949
                mov     ecx, [esp+48h]
11950
                mov     edx, [esp+4Ch]
11951
                add     eax, ecx
11952
                mov     ebp, [esp+40h]
11953
                adc     ebx, edx
11954
                mov     ecx, [esp+30h]
11955
                mov     edx, [esp+34h]
11956
                mov     edi, [esp+44h]
11957
                add     ecx, ebp
11958
                adc     edx, edi
11959
                mov     [esp+30h], ecx
11960
                mov     [esp+34h], edx
11961
                add     ebp, eax
11962
                adc     edi, ebx
11963
                mov     [esp+10h], ebp
11964
                mov     [esp+14h], edi
11965
                mov     eax, [esp+30h]
11966
                mov     ebx, [esp+34h]
11967
                mov     ecx, eax
11968
                mov     edx, ebx
11969
                shr     ecx, 0Eh
11970
                mov     ebp, eax
11971
                shl     edx, 12h
11972
                mov     edi, ebx
11973
                shr     ebp, 12h
11974
                or      ecx, edx
11975
                shl     edi, 0Eh
11976
                or      ebp, edi
11977
                mov     edx, ebx
11978
                xor     ebp, ecx
11979
                mov     ecx, eax
11980
                shl     ecx, 17h
11981
                shr     edx, 9
11982
                or      ecx, edx
11983
                mov     edx, eax
11984
                xor     ebp, ecx
11985
                mov     ecx, ebx
11986
                mov     [esp+40h], ebp
11987
                shr     ecx, 0Eh
11988
                mov     ebp, ebx
11989
                shl     edx, 12h
11990
                mov     edi, eax
11991
                shr     ebp, 12h
11992
                or      ecx, edx
11993
                shl     edi, 0Eh
11994
                or      ebp, edi
11995
                mov     edx, eax
11996
                xor     ebp, ecx
11997
                mov     ecx, ebx
11998
                shl     ecx, 17h
11999
                shr     edx, 9
12000
                or      ecx, edx
12001
                mov     edx, [esp+3Ch]
12002
                xor     ebp, ecx
12003
                mov     ecx, [esp+38h]
12004
                mov     [esp+44h], ebp
12005
                mov     ebp, [esp]
12006
                mov     edi, [esp+4]
12007
                xor     ecx, ebp
12008
                xor     edx, edi
12009
                and     ecx, eax
12010
                and     edx, ebx
12011
                xor     ecx, ebp
12012
                xor     edx, edi
12013
                add     ecx, [esp+40h]
12014
                mov     eax, [esp+8]
12015
                adc     edx, [esp+44h]
12016
                mov     ebx, [esp+0Ch]
12017
                add     ecx, eax
12018
                mov     edi, [esp+50h]
12019
                adc     edx, ebx
12020
                mov     ebp, [esp+54h]
12021
                shl     edi, 3
12022
                add     edi, 6
12023
                shl     edi, 3
12024
                mov     eax, [edi+ebp]
12025
                mov     ebx, [edi+ebp+4]
12026
                add     ecx, eax
12027
                mov     eax, [esi+edi]
12028
                adc     edx, ebx
12029
                mov     ebx, [esi+edi+4]
12030
                add     ecx, eax
12031
                mov     eax, [esp+10h]
12032
                adc     edx, ebx
12033
                mov     ebx, [esp+14h]
12034
                mov     [esp+40h], ecx
12035
                mov     [esp+44h], edx
12036
                mov     ecx, eax
12037
                mov     edx, ebx
12038
                shr     ecx, 1Ch
12039
                mov     ebp, eax
12040
                shl     edx, 4
12041
                mov     edi, ebx
12042
                shl     ebp, 1Eh
12043
                or      ecx, edx
12044
                shr     edi, 2
12045
                or      ebp, edi
12046
                mov     edx, ebx
12047
                xor     ebp, ecx
12048
                mov     ecx, eax
12049
                shr     edx, 7
12050
                shl     ecx, 19h
12051
                or      ecx, edx
12052
                mov     edx, eax
12053
                xor     ebp, ecx
12054
                mov     ecx, ebx
12055
                mov     [esp+48h], ebp
12056
                shr     ecx, 1Ch
12057
                mov     ebp, ebx
12058
                shl     edx, 4
12059
                mov     edi, eax
12060
                shl     ebp, 1Eh
12061
                or      ecx, edx
12062
                shr     edi, 2
12063
                or      ebp, edi
12064
                mov     edx, eax
12065
                xor     ebp, ecx
12066
                mov     ecx, ebx
12067
                shl     ecx, 19h
12068
                shr     edx, 7
12069
                or      ecx, edx
12070
                mov     edx, [esp+1Ch]
12071
                xor     ebp, ecx
12072
                mov     ecx, [esp+18h]
12073
                mov     [esp+4Ch], ebp
12074
                mov     ebp, [esp+20h]
12075
                mov     edi, [esp+24h]
12076
                or      ecx, ebp
12077
                or      edx, edi
12078
                and     eax, ecx
12079
                and     ebx, edx
12080
                mov     ecx, [esp+18h]
12081
                mov     edx, [esp+1Ch]
12082
                and     ebp, ecx
12083
                and     edi, edx
12084
                or      eax, ebp
12085
                or      ebx, edi
12086
                mov     ecx, [esp+48h]
12087
                mov     edx, [esp+4Ch]
12088
                add     eax, ecx
12089
                mov     ebp, [esp+40h]
12090
                adc     ebx, edx
12091
                mov     ecx, [esp+28h]
12092
                mov     edx, [esp+2Ch]
12093
                mov     edi, [esp+44h]
12094
                add     ecx, ebp
12095
                adc     edx, edi
12096
                mov     [esp+28h], ecx
12097
                mov     [esp+2Ch], edx
12098
                add     ebp, eax
12099
                adc     edi, ebx
12100
                mov     [esp+8], ebp
12101
                mov     [esp+0Ch], edi
12102
                mov     eax, [esp+28h]
12103
                mov     ebx, [esp+2Ch]
12104
                mov     ecx, eax
12105
                mov     edx, ebx
12106
                shr     ecx, 0Eh
12107
                mov     ebp, eax
12108
                shl     edx, 12h
12109
                mov     edi, ebx
12110
                shr     ebp, 12h
12111
                or      ecx, edx
12112
                shl     edi, 0Eh
12113
                or      ebp, edi
12114
                mov     edx, ebx
12115
                xor     ebp, ecx
12116
                mov     ecx, eax
12117
                shl     ecx, 17h
12118
                shr     edx, 9
12119
                or      ecx, edx
12120
                mov     edx, eax
12121
                xor     ebp, ecx
12122
                mov     ecx, ebx
12123
                mov     [esp+40h], ebp
12124
                shr     ecx, 0Eh
12125
                mov     ebp, ebx
12126
                shl     edx, 12h
12127
                mov     edi, eax
12128
                shr     ebp, 12h
12129
                or      ecx, edx
12130
                shl     edi, 0Eh
12131
                or      ebp, edi
12132
                mov     edx, eax
12133
                xor     ebp, ecx
12134
                mov     ecx, ebx
12135
                shl     ecx, 17h
12136
                shr     edx, 9
12137
                or      ecx, edx
12138
                mov     edx, [esp+34h]
12139
                xor     ebp, ecx
12140
                mov     ecx, [esp+30h]
12141
                mov     [esp+44h], ebp
12142
                mov     ebp, [esp+38h]
12143
                mov     edi, [esp+3Ch]
12144
                xor     ecx, ebp
12145
                xor     edx, edi
12146
                and     ecx, eax
12147
                and     edx, ebx
12148
                xor     ecx, ebp
12149
                xor     edx, edi
12150
                add     ecx, [esp+40h]
12151
                mov     eax, [esp]
12152
                adc     edx, [esp+44h]
12153
                mov     ebx, [esp+4]
12154
                add     ecx, eax
12155
                mov     edi, [esp+50h]
12156
                adc     edx, ebx
12157
                mov     ebp, [esp+54h]
12158
                shl     edi, 3
12159
                add     edi, 7
12160
                shl     edi, 3
12161
                mov     eax, [edi+ebp]
12162
                mov     ebx, [edi+ebp+4]
12163
                add     ecx, eax
12164
                mov     eax, [esi+edi]
12165
                adc     edx, ebx
12166
                mov     ebx, [esi+edi+4]
12167
                add     ecx, eax
12168
                mov     eax, [esp+8]
12169
                adc     edx, ebx
12170
                mov     ebx, [esp+0Ch]
12171
                mov     [esp+40h], ecx
12172
                mov     [esp+44h], edx
12173
                mov     ecx, eax
12174
                mov     edx, ebx
12175
                shr     ecx, 1Ch
12176
                mov     ebp, eax
12177
                shl     edx, 4
12178
                mov     edi, ebx
12179
                shl     ebp, 1Eh
12180
                or      ecx, edx
12181
                shr     edi, 2
12182
                or      ebp, edi
12183
                mov     edx, ebx
12184
                xor     ebp, ecx
12185
                mov     ecx, eax
12186
                shr     edx, 7
12187
                shl     ecx, 19h
12188
                or      ecx, edx
12189
                mov     edx, eax
12190
                xor     ebp, ecx
12191
                mov     ecx, ebx
12192
                mov     [esp+48h], ebp
12193
                shr     ecx, 1Ch
12194
                mov     ebp, ebx
12195
                shl     edx, 4
12196
                mov     edi, eax
12197
                shl     ebp, 1Eh
12198
                or      ecx, edx
12199
                shr     edi, 2
12200
                or      ebp, edi
12201
                mov     edx, eax
12202
                xor     ebp, ecx
12203
                mov     ecx, ebx
12204
                shl     ecx, 19h
12205
                shr     edx, 7
12206
                or      ecx, edx
12207
                mov     edx, [esp+14h]
12208
                xor     ebp, ecx
12209
                mov     ecx, [esp+10h]
12210
                mov     [esp+4Ch], ebp
12211
                mov     ebp, [esp+18h]
12212
                mov     edi, [esp+1Ch]
12213
                or      ecx, ebp
12214
                or      edx, edi
12215
                and     eax, ecx
12216
                and     ebx, edx
12217
                mov     ecx, [esp+10h]
12218
                mov     edx, [esp+14h]
12219
                and     ebp, ecx
12220
                and     edi, edx
12221
                or      eax, ebp
12222
                or      ebx, edi
12223
                mov     ecx, [esp+48h]
12224
                mov     edx, [esp+4Ch]
12225
                add     eax, ecx
12226
                mov     ebp, [esp+40h]
12227
                adc     ebx, edx
12228
                mov     ecx, [esp+20h]
12229
                mov     edx, [esp+24h]
12230
                mov     edi, [esp+44h]
12231
                add     ecx, ebp
12232
                adc     edx, edi
12233
                mov     [esp+20h], ecx
12234
                mov     [esp+24h], edx
12235
                add     ebp, eax
12236
                adc     edi, ebx
12237
                mov     [esp], ebp
12238
                mov     [esp+4], edi
12239
                inc     dword ptr [esp+50h]
12240
                cmp     dword ptr [esp+50h], 0Ah
12241
                jnz     @@body_loop
12242
                mov     edi, [esp+5Ch]
12243
                mov     eax, [esp]
12244
                mov     ebx, [esp+4]
12245
                mov     ecx, [esp+8]
12246
                mov     edx, [esp+0Ch]
12247
                add     [edi], eax
12248
                adc     [edi+4], ebx
12249
                add     [edi+8], ecx
12250
                adc     [edi+0Ch], edx
12251
                mov     eax, [esp+10h]
12252
                mov     ebx, [esp+14h]
12253
                mov     ecx, [esp+18h]
12254
                mov     edx, [esp+1Ch]
12255
                add     [edi+10h], eax
12256
                adc     [edi+14h], ebx
12257
                add     [edi+18h], ecx
12258
                adc     [edi+1Ch], edx
12259
                mov     eax, [esp+20h]
12260
                mov     ebx, [esp+24h]
12261
                mov     ecx, [esp+28h]
12262
                mov     edx, [esp+2Ch]
12263
                add     [edi+20h], eax
12264
                adc     [edi+24h], ebx
12265
                add     [edi+28h], ecx
12266
                adc     [edi+2Ch], edx
12267
                mov     eax, [esp+30h]
12268
                mov     ebx, [esp+34h]
12269
                mov     ecx, [esp+38h]
12270
                mov     edx, [esp+3Ch]
12271
                add     [edi+30h], eax
12272
                adc     [edi+34h], ebx
12273
                add     [edi+38h], ecx
12274
                adc     [edi+3Ch], edx
12275
                add     esp, 60h
12276
 
12277
 
12278
    pop     ebp
12279
    pop     edi
12280
    pop     esi
12281
    pop     ebx
12282
  end;
12283
end;
12284
{$ENDIF}
12285
 
12286
{$IFDEF THashBaseHaval_asm}
12287
procedure THashBaseHaval.DoTransform3(Buffer: PLongArray);
12288
asm
12289
                push    ebx
12290
                push    esi
12291
                push    edi
12292
                lea     edi, [eax].THashBaseHaval.FDigest
12293
                mov     esi, edx
12294
                push    ebp
12295
                mov     ebp, esp
12296
                add     esp, 0FFFFFFD4h
12297
                and     esp, 0FFFFFFC0h
12298
                mov     eax, [edi]
12299
                mov     ebx, [edi+4]
12300
                mov     [esp+20h], esi
12301
                mov     [esp+24h], edi
12302
                mov     [esp+28h], ebp
12303
                mov     [esp], eax
12304
                mov     [esp+4], ebx
12305
                mov     ecx, [edi+8]
12306
                mov     edx, [edi+0Ch]
12307
                mov     [esp+8], ecx
12308
                mov     [esp+0Ch], edx
12309
                mov     eax, [edi+10h]
12310
                mov     ebx, [edi+14h]
12311
                mov     [esp+10h], eax
12312
                mov     [esp+14h], ebx
12313
                mov     ecx, [edi+18h]
12314
                mov     edx, [edi+1Ch]
12315
                mov     [esp+18h], ecx
12316
                mov     [esp+1Ch], edx
12317
                mov     eax, edx
12318
                mov     ebp, [esp]
12319
                mov     ebx, [esp+0Ch]
12320
                mov     ecx, [esp+10h]
12321
                ror     eax, 0Bh
12322
                xor     ebx, ecx
12323
                mov     edi, [esp+4]
12324
                and     ebx, [esp+8]
12325
                and     edi, [esp+14h]
12326
                xor     ecx, ebx
12327
                and     ebp, [esp+18h]
12328
                xor     edi, ecx
12329
                mov     edx, [esi]
12330
                xor     ebp, edi
12331
                add     eax, edx
12332
                ror     ebp, 7
12333
                add     ebp, eax
12334
                mov     eax, [esp+18h]
12335
                mov     [esp+1Ch], ebp
12336
                mov     ebx, [esp+8]
12337
                mov     ecx, [esp+0Ch]
12338
                ror     eax, 0Bh
12339
                xor     ebx, ecx
12340
                mov     edi, [esp]
12341
                and     ebx, [esp+4]
12342
                and     edi, [esp+10h]
12343
                xor     ecx, ebx
12344
                and     ebp, [esp+14h]
12345
                xor     edi, ecx
12346
                mov     edx, [esi+4]
12347
                xor     ebp, edi
12348
                add     eax, edx
12349
                ror     ebp, 7
12350
                add     ebp, eax
12351
                mov     eax, [esp+14h]
12352
                mov     [esp+18h], ebp
12353
                mov     ebx, [esp+4]
12354
                mov     ecx, [esp+8]
12355
                ror     eax, 0Bh
12356
                xor     ebx, ecx
12357
                mov     edi, [esp+1Ch]
12358
                and     ebx, [esp]
12359
                and     edi, [esp+0Ch]
12360
                xor     ecx, ebx
12361
                and     ebp, [esp+10h]
12362
                xor     edi, ecx
12363
                mov     edx, [esi+8]
12364
                xor     ebp, edi
12365
                add     eax, edx
12366
                ror     ebp, 7
12367
                add     ebp, eax
12368
                mov     eax, [esp+10h]
12369
                mov     [esp+14h], ebp
12370
                mov     ebx, [esp]
12371
                mov     ecx, [esp+4]
12372
                ror     eax, 0Bh
12373
                xor     ebx, ecx
12374
                mov     edi, [esp+18h]
12375
                and     ebx, [esp+1Ch]
12376
                and     edi, [esp+8]
12377
                xor     ecx, ebx
12378
                and     ebp, [esp+0Ch]
12379
                xor     edi, ecx
12380
                mov     edx, [esi+0Ch]
12381
                xor     ebp, edi
12382
                add     eax, edx
12383
                ror     ebp, 7
12384
                add     ebp, eax
12385
                mov     eax, [esp+0Ch]
12386
                mov     [esp+10h], ebp
12387
                mov     ebx, [esp+1Ch]
12388
                mov     ecx, [esp]
12389
                ror     eax, 0Bh
12390
                xor     ebx, ecx
12391
                mov     edi, [esp+14h]
12392
                and     ebx, [esp+18h]
12393
                and     edi, [esp+4]
12394
                xor     ecx, ebx
12395
                and     ebp, [esp+8]
12396
                xor     edi, ecx
12397
                mov     edx, [esi+10h]
12398
                xor     ebp, edi
12399
                add     eax, edx
12400
                ror     ebp, 7
12401
                add     ebp, eax
12402
                mov     eax, [esp+8]
12403
                mov     [esp+0Ch], ebp
12404
                mov     ebx, [esp+18h]
12405
                mov     ecx, [esp+1Ch]
12406
                ror     eax, 0Bh
12407
                xor     ebx, ecx
12408
                mov     edi, [esp+10h]
12409
                and     ebx, [esp+14h]
12410
                and     edi, [esp]
12411
                xor     ecx, ebx
12412
                and     ebp, [esp+4]
12413
                xor     edi, ecx
12414
                mov     edx, [esi+14h]
12415
                xor     ebp, edi
12416
                add     eax, edx
12417
                ror     ebp, 7
12418
                add     ebp, eax
12419
                mov     eax, [esp+4]
12420
                mov     [esp+8], ebp
12421
                mov     ebx, [esp+14h]
12422
                mov     ecx, [esp+18h]
12423
                ror     eax, 0Bh
12424
                xor     ebx, ecx
12425
                mov     edi, [esp+0Ch]
12426
                and     ebx, [esp+10h]
12427
                and     edi, [esp+1Ch]
12428
                xor     ecx, ebx
12429
                and     ebp, [esp]
12430
                xor     edi, ecx
12431
                mov     edx, [esi+18h]
12432
                xor     ebp, edi
12433
                add     eax, edx
12434
                ror     ebp, 7
12435
                add     ebp, eax
12436
                mov     eax, [esp]
12437
                mov     [esp+4], ebp
12438
                mov     ebx, [esp+10h]
12439
                mov     ecx, [esp+14h]
12440
                ror     eax, 0Bh
12441
                xor     ebx, ecx
12442
                mov     edi, [esp+8]
12443
                and     ebx, [esp+0Ch]
12444
                and     edi, [esp+18h]
12445
                xor     ecx, ebx
12446
                and     ebp, [esp+1Ch]
12447
                xor     edi, ecx
12448
                mov     edx, [esi+1Ch]
12449
                xor     ebp, edi
12450
                add     eax, edx
12451
                ror     ebp, 7
12452
                add     ebp, eax
12453
                mov     eax, [esp+1Ch]
12454
                mov     [esp], ebp
12455
                mov     ebx, [esp+0Ch]
12456
                mov     ecx, [esp+10h]
12457
                ror     eax, 0Bh
12458
                xor     ebx, ecx
12459
                mov     edi, [esp+4]
12460
                and     ebx, [esp+8]
12461
                and     edi, [esp+14h]
12462
                xor     ecx, ebx
12463
                and     ebp, [esp+18h]
12464
                xor     edi, ecx
12465
                mov     edx, [esi+20h]
12466
                xor     ebp, edi
12467
                add     eax, edx
12468
                ror     ebp, 7
12469
                add     ebp, eax
12470
                mov     eax, [esp+18h]
12471
                mov     [esp+1Ch], ebp
12472
                mov     ebx, [esp+8]
12473
                mov     ecx, [esp+0Ch]
12474
                ror     eax, 0Bh
12475
                xor     ebx, ecx
12476
                mov     edi, [esp]
12477
                and     ebx, [esp+4]
12478
                and     edi, [esp+10h]
12479
                xor     ecx, ebx
12480
                and     ebp, [esp+14h]
12481
                xor     edi, ecx
12482
                mov     edx, [esi+24h]
12483
                xor     ebp, edi
12484
                add     eax, edx
12485
                ror     ebp, 7
12486
                add     ebp, eax
12487
                mov     eax, [esp+14h]
12488
                mov     [esp+18h], ebp
12489
                mov     ebx, [esp+4]
12490
                mov     ecx, [esp+8]
12491
                ror     eax, 0Bh
12492
                xor     ebx, ecx
12493
                mov     edi, [esp+1Ch]
12494
                and     ebx, [esp]
12495
                and     edi, [esp+0Ch]
12496
                xor     ecx, ebx
12497
                and     ebp, [esp+10h]
12498
                xor     edi, ecx
12499
                mov     edx, [esi+28h]
12500
                xor     ebp, edi
12501
                add     eax, edx
12502
                ror     ebp, 7
12503
                add     ebp, eax
12504
                mov     eax, [esp+10h]
12505
                mov     [esp+14h], ebp
12506
                mov     ebx, [esp]
12507
                mov     ecx, [esp+4]
12508
                ror     eax, 0Bh
12509
                xor     ebx, ecx
12510
                mov     edi, [esp+18h]
12511
                and     ebx, [esp+1Ch]
12512
                and     edi, [esp+8]
12513
                xor     ecx, ebx
12514
                and     ebp, [esp+0Ch]
12515
                xor     edi, ecx
12516
                mov     edx, [esi+2Ch]
12517
                xor     ebp, edi
12518
                add     eax, edx
12519
                ror     ebp, 7
12520
                add     ebp, eax
12521
                mov     eax, [esp+0Ch]
12522
                mov     [esp+10h], ebp
12523
                mov     ebx, [esp+1Ch]
12524
                mov     ecx, [esp]
12525
                ror     eax, 0Bh
12526
                xor     ebx, ecx
12527
                mov     edi, [esp+14h]
12528
                and     ebx, [esp+18h]
12529
                and     edi, [esp+4]
12530
                xor     ecx, ebx
12531
                and     ebp, [esp+8]
12532
                xor     edi, ecx
12533
                mov     edx, [esi+30h]
12534
                xor     ebp, edi
12535
                add     eax, edx
12536
                ror     ebp, 7
12537
                add     ebp, eax
12538
                mov     eax, [esp+8]
12539
                mov     [esp+0Ch], ebp
12540
                mov     ebx, [esp+18h]
12541
                mov     ecx, [esp+1Ch]
12542
                ror     eax, 0Bh
12543
                xor     ebx, ecx
12544
                mov     edi, [esp+10h]
12545
                and     ebx, [esp+14h]
12546
                and     edi, [esp]
12547
                xor     ecx, ebx
12548
                and     ebp, [esp+4]
12549
                xor     edi, ecx
12550
                mov     edx, [esi+34h]
12551
                xor     ebp, edi
12552
                add     eax, edx
12553
                ror     ebp, 7
12554
                add     ebp, eax
12555
                mov     eax, [esp+4]
12556
                mov     [esp+8], ebp
12557
                mov     ebx, [esp+14h]
12558
                mov     ecx, [esp+18h]
12559
                ror     eax, 0Bh
12560
                xor     ebx, ecx
12561
                mov     edi, [esp+0Ch]
12562
                and     ebx, [esp+10h]
12563
                and     edi, [esp+1Ch]
12564
                xor     ecx, ebx
12565
                and     ebp, [esp]
12566
                xor     edi, ecx
12567
                mov     edx, [esi+38h]
12568
                xor     ebp, edi
12569
                add     eax, edx
12570
                ror     ebp, 7
12571
                add     ebp, eax
12572
                mov     eax, [esp]
12573
                mov     [esp+4], ebp
12574
                mov     ebx, [esp+10h]
12575
                mov     ecx, [esp+14h]
12576
                ror     eax, 0Bh
12577
                xor     ebx, ecx
12578
                mov     edi, [esp+8]
12579
                and     ebx, [esp+0Ch]
12580
                and     edi, [esp+18h]
12581
                xor     ecx, ebx
12582
                and     ebp, [esp+1Ch]
12583
                xor     edi, ecx
12584
                mov     edx, [esi+3Ch]
12585
                xor     ebp, edi
12586
                add     eax, edx
12587
                ror     ebp, 7
12588
                add     ebp, eax
12589
                mov     eax, [esp+1Ch]
12590
                mov     [esp], ebp
12591
                mov     ebx, [esp+0Ch]
12592
                mov     ecx, [esp+10h]
12593
                ror     eax, 0Bh
12594
                xor     ebx, ecx
12595
                mov     edi, [esp+4]
12596
                and     ebx, [esp+8]
12597
                and     edi, [esp+14h]
12598
                xor     ecx, ebx
12599
                and     ebp, [esp+18h]
12600
                xor     edi, ecx
12601
                mov     edx, [esi+40h]
12602
                xor     ebp, edi
12603
                add     eax, edx
12604
                ror     ebp, 7
12605
                add     ebp, eax
12606
                mov     eax, [esp+18h]
12607
                mov     [esp+1Ch], ebp
12608
                mov     ebx, [esp+8]
12609
                mov     ecx, [esp+0Ch]
12610
                ror     eax, 0Bh
12611
                xor     ebx, ecx
12612
                mov     edi, [esp]
12613
                and     ebx, [esp+4]
12614
                and     edi, [esp+10h]
12615
                xor     ecx, ebx
12616
                and     ebp, [esp+14h]
12617
                xor     edi, ecx
12618
                mov     edx, [esi+44h]
12619
                xor     ebp, edi
12620
                add     eax, edx
12621
                ror     ebp, 7
12622
                add     ebp, eax
12623
                mov     eax, [esp+14h]
12624
                mov     [esp+18h], ebp
12625
                mov     ebx, [esp+4]
12626
                mov     ecx, [esp+8]
12627
                ror     eax, 0Bh
12628
                xor     ebx, ecx
12629
                mov     edi, [esp+1Ch]
12630
                and     ebx, [esp]
12631
                and     edi, [esp+0Ch]
12632
                xor     ecx, ebx
12633
                and     ebp, [esp+10h]
12634
                xor     edi, ecx
12635
                mov     edx, [esi+48h]
12636
                xor     ebp, edi
12637
                add     eax, edx
12638
                ror     ebp, 7
12639
                add     ebp, eax
12640
                mov     eax, [esp+10h]
12641
                mov     [esp+14h], ebp
12642
                mov     ebx, [esp]
12643
                mov     ecx, [esp+4]
12644
                ror     eax, 0Bh
12645
                xor     ebx, ecx
12646
                mov     edi, [esp+18h]
12647
                and     ebx, [esp+1Ch]
12648
                and     edi, [esp+8]
12649
                xor     ecx, ebx
12650
                and     ebp, [esp+0Ch]
12651
                xor     edi, ecx
12652
                mov     edx, [esi+4Ch]
12653
                xor     ebp, edi
12654
                add     eax, edx
12655
                ror     ebp, 7
12656
                add     ebp, eax
12657
                mov     eax, [esp+0Ch]
12658
                mov     [esp+10h], ebp
12659
                mov     ebx, [esp+1Ch]
12660
                mov     ecx, [esp]
12661
                ror     eax, 0Bh
12662
                xor     ebx, ecx
12663
                mov     edi, [esp+14h]
12664
                and     ebx, [esp+18h]
12665
                and     edi, [esp+4]
12666
                xor     ecx, ebx
12667
                and     ebp, [esp+8]
12668
                xor     edi, ecx
12669
                mov     edx, [esi+50h]
12670
                xor     ebp, edi
12671
                add     eax, edx
12672
                ror     ebp, 7
12673
                add     ebp, eax
12674
                mov     eax, [esp+8]
12675
                mov     [esp+0Ch], ebp
12676
                mov     ebx, [esp+18h]
12677
                mov     ecx, [esp+1Ch]
12678
                ror     eax, 0Bh
12679
                xor     ebx, ecx
12680
                mov     edi, [esp+10h]
12681
                and     ebx, [esp+14h]
12682
                and     edi, [esp]
12683
                xor     ecx, ebx
12684
                and     ebp, [esp+4]
12685
                xor     edi, ecx
12686
                mov     edx, [esi+54h]
12687
                xor     ebp, edi
12688
                add     eax, edx
12689
                ror     ebp, 7
12690
                add     ebp, eax
12691
                mov     eax, [esp+4]
12692
                mov     [esp+8], ebp
12693
                mov     ebx, [esp+14h]
12694
                mov     ecx, [esp+18h]
12695
                ror     eax, 0Bh
12696
                xor     ebx, ecx
12697
                mov     edi, [esp+0Ch]
12698
                and     ebx, [esp+10h]
12699
                and     edi, [esp+1Ch]
12700
                xor     ecx, ebx
12701
                and     ebp, [esp]
12702
                xor     edi, ecx
12703
                mov     edx, [esi+58h]
12704
                xor     ebp, edi
12705
                add     eax, edx
12706
                ror     ebp, 7
12707
                add     ebp, eax
12708
                mov     eax, [esp]
12709
                mov     [esp+4], ebp
12710
                mov     ebx, [esp+10h]
12711
                mov     ecx, [esp+14h]
12712
                ror     eax, 0Bh
12713
                xor     ebx, ecx
12714
                mov     edi, [esp+8]
12715
                and     ebx, [esp+0Ch]
12716
                and     edi, [esp+18h]
12717
                xor     ecx, ebx
12718
                and     ebp, [esp+1Ch]
12719
                xor     edi, ecx
12720
                mov     edx, [esi+5Ch]
12721
                xor     ebp, edi
12722
                add     eax, edx
12723
                ror     ebp, 7
12724
                add     ebp, eax
12725
                mov     eax, [esp+1Ch]
12726
                mov     [esp], ebp
12727
                mov     ebx, [esp+0Ch]
12728
                mov     ecx, [esp+10h]
12729
                ror     eax, 0Bh
12730
                xor     ebx, ecx
12731
                mov     edi, [esp+4]
12732
                and     ebx, [esp+8]
12733
                and     edi, [esp+14h]
12734
                xor     ecx, ebx
12735
                and     ebp, [esp+18h]
12736
                xor     edi, ecx
12737
                mov     edx, [esi+60h]
12738
                xor     ebp, edi
12739
                add     eax, edx
12740
                ror     ebp, 7
12741
                add     ebp, eax
12742
                mov     eax, [esp+18h]
12743
                mov     [esp+1Ch], ebp
12744
                mov     ebx, [esp+8]
12745
                mov     ecx, [esp+0Ch]
12746
                ror     eax, 0Bh
12747
                xor     ebx, ecx
12748
                mov     edi, [esp]
12749
                and     ebx, [esp+4]
12750
                and     edi, [esp+10h]
12751
                xor     ecx, ebx
12752
                and     ebp, [esp+14h]
12753
                xor     edi, ecx
12754
                mov     edx, [esi+64h]
12755
                xor     ebp, edi
12756
                add     eax, edx
12757
                ror     ebp, 7
12758
                add     ebp, eax
12759
                mov     eax, [esp+14h]
12760
                mov     [esp+18h], ebp
12761
                mov     ebx, [esp+4]
12762
                mov     ecx, [esp+8]
12763
                ror     eax, 0Bh
12764
                xor     ebx, ecx
12765
                mov     edi, [esp+1Ch]
12766
                and     ebx, [esp]
12767
                and     edi, [esp+0Ch]
12768
                xor     ecx, ebx
12769
                and     ebp, [esp+10h]
12770
                xor     edi, ecx
12771
                mov     edx, [esi+68h]
12772
                xor     ebp, edi
12773
                add     eax, edx
12774
                ror     ebp, 7
12775
                add     ebp, eax
12776
                mov     eax, [esp+10h]
12777
                mov     [esp+14h], ebp
12778
                mov     ebx, [esp]
12779
                mov     ecx, [esp+4]
12780
                ror     eax, 0Bh
12781
                xor     ebx, ecx
12782
                mov     edi, [esp+18h]
12783
                and     ebx, [esp+1Ch]
12784
                and     edi, [esp+8]
12785
                xor     ecx, ebx
12786
                and     ebp, [esp+0Ch]
12787
                xor     edi, ecx
12788
                mov     edx, [esi+6Ch]
12789
                xor     ebp, edi
12790
                add     eax, edx
12791
                ror     ebp, 7
12792
                add     ebp, eax
12793
                mov     eax, [esp+0Ch]
12794
                mov     [esp+10h], ebp
12795
                mov     ebx, [esp+1Ch]
12796
                mov     ecx, [esp]
12797
                ror     eax, 0Bh
12798
                xor     ebx, ecx
12799
                mov     edi, [esp+14h]
12800
                and     ebx, [esp+18h]
12801
                and     edi, [esp+4]
12802
                xor     ecx, ebx
12803
                and     ebp, [esp+8]
12804
                xor     edi, ecx
12805
                mov     edx, [esi+70h]
12806
                xor     ebp, edi
12807
                add     eax, edx
12808
                ror     ebp, 7
12809
                add     ebp, eax
12810
                mov     eax, [esp+8]
12811
                mov     [esp+0Ch], ebp
12812
                mov     ebx, [esp+18h]
12813
                mov     ecx, [esp+1Ch]
12814
                ror     eax, 0Bh
12815
                xor     ebx, ecx
12816
                mov     edi, [esp+10h]
12817
                and     ebx, [esp+14h]
12818
                and     edi, [esp]
12819
                xor     ecx, ebx
12820
                and     ebp, [esp+4]
12821
                xor     edi, ecx
12822
                mov     edx, [esi+74h]
12823
                xor     ebp, edi
12824
                add     eax, edx
12825
                ror     ebp, 7
12826
                add     ebp, eax
12827
                mov     eax, [esp+4]
12828
                mov     [esp+8], ebp
12829
                mov     ebx, [esp+14h]
12830
                mov     ecx, [esp+18h]
12831
                ror     eax, 0Bh
12832
                xor     ebx, ecx
12833
                mov     edi, [esp+0Ch]
12834
                and     ebx, [esp+10h]
12835
                and     edi, [esp+1Ch]
12836
                xor     ecx, ebx
12837
                and     ebp, [esp]
12838
                xor     edi, ecx
12839
                mov     edx, [esi+78h]
12840
                xor     ebp, edi
12841
                add     eax, edx
12842
                ror     ebp, 7
12843
                add     ebp, eax
12844
                mov     eax, [esp]
12845
                mov     [esp+4], ebp
12846
                mov     ebx, [esp+10h]
12847
                mov     ecx, [esp+14h]
12848
                ror     eax, 0Bh
12849
                xor     ebx, ecx
12850
                mov     edi, [esp+8]
12851
                and     ebx, [esp+0Ch]
12852
                and     edi, [esp+18h]
12853
                xor     ecx, ebx
12854
                and     ebp, [esp+1Ch]
12855
                xor     edi, ecx
12856
                mov     edx, [esi+7Ch]
12857
                xor     ebp, edi
12858
                add     eax, edx
12859
                ror     ebp, 7
12860
                add     ebp, eax
12861
                mov     eax, [esp+1Ch]
12862
                mov     [esp], ebp
12863
                mov     ebp, [esp]
12864
                mov     ebx, [esp+4]
12865
                mov     edi, [esp+8]
12866
                xor     ebp, 0FFFFFFFFh
12867
                mov     ecx, [esp+0Ch]
12868
                and     ebx, edi
12869
                mov     edx, [esp+18h]
12870
                and     ebp, ecx
12871
                xor     ebx, [esp+10h]
12872
                xor     ebp, edx
12873
                xor     ecx, edi
12874
                xor     ebx, ebp
12875
                and     ecx, [esp+4]
12876
                and     ebx, [esp+14h]
12877
                ror     eax, 0Bh
12878
                xor     ecx, edx
12879
                mov     ebp, [esi+14h]
12880
                xor     ecx, ebx
12881
                and     edi, [esp]
12882
                xor     ecx, edi
12883
                lea     ebp, [eax+ebp+452821E6h]
12884
                ror     ecx, 7
12885
                add     ebp, ecx
12886
                mov     eax, [esp+18h]
12887
                mov     [esp+1Ch], ebp
12888
                mov     ebx, [esp]
12889
                mov     edi, [esp+4]
12890
                xor     ebp, 0FFFFFFFFh
12891
                mov     ecx, [esp+8]
12892
                and     ebx, edi
12893
                mov     edx, [esp+14h]
12894
                and     ebp, ecx
12895
                xor     ebx, [esp+0Ch]
12896
                xor     ebp, edx
12897
                xor     ecx, edi
12898
                xor     ebx, ebp
12899
                and     ecx, [esp]
12900
                and     ebx, [esp+10h]
12901
                ror     eax, 0Bh
12902
                xor     ecx, edx
12903
                mov     ebp, [esi+38h]
12904
                xor     ecx, ebx
12905
                and     edi, [esp+1Ch]
12906
                xor     ecx, edi
12907
                lea     ebp, [eax+ebp+38D01377h]
12908
                ror     ecx, 7
12909
                add     ebp, ecx
12910
                mov     eax, [esp+14h]
12911
                mov     [esp+18h], ebp
12912
                mov     ebx, [esp+1Ch]
12913
                mov     edi, [esp]
12914
                xor     ebp, 0FFFFFFFFh
12915
                mov     ecx, [esp+4]
12916
                and     ebx, edi
12917
                mov     edx, [esp+10h]
12918
                and     ebp, ecx
12919
                xor     ebx, [esp+8]
12920
                xor     ebp, edx
12921
                xor     ecx, edi
12922
                xor     ebx, ebp
12923
                and     ecx, [esp+1Ch]
12924
                and     ebx, [esp+0Ch]
12925
                ror     eax, 0Bh
12926
                xor     ecx, edx
12927
                mov     ebp, [esi+68h]
12928
                xor     ecx, ebx
12929
                and     edi, [esp+18h]
12930
                xor     ecx, edi
12931
                lea     ebp, [eax+ebp-41AB9931h]
12932
                ror     ecx, 7
12933
                add     ebp, ecx
12934
                mov     eax, [esp+10h]
12935
                mov     [esp+14h], ebp
12936
                mov     ebx, [esp+18h]
12937
                mov     edi, [esp+1Ch]
12938
                xor     ebp, 0FFFFFFFFh
12939
                mov     ecx, [esp]
12940
                and     ebx, edi
12941
                mov     edx, [esp+0Ch]
12942
                and     ebp, ecx
12943
                xor     ebx, [esp+4]
12944
                xor     ebp, edx
12945
                xor     ecx, edi
12946
                xor     ebx, ebp
12947
                and     ecx, [esp+18h]
12948
                and     ebx, [esp+8]
12949
                ror     eax, 0Bh
12950
                xor     ecx, edx
12951
                mov     ebp, [esi+48h]
12952
                xor     ecx, ebx
12953
                and     edi, [esp+14h]
12954
                xor     ecx, edi
12955
                lea     ebp, [eax+ebp+34E90C6Ch]
12956
                ror     ecx, 7
12957
                add     ebp, ecx
12958
                mov     eax, [esp+0Ch]
12959
                mov     [esp+10h], ebp
12960
                mov     ebx, [esp+14h]
12961
                mov     edi, [esp+18h]
12962
                xor     ebp, 0FFFFFFFFh
12963
                mov     ecx, [esp+1Ch]
12964
                and     ebx, edi
12965
                mov     edx, [esp+8]
12966
                and     ebp, ecx
12967
                xor     ebx, [esp]
12968
                xor     ebp, edx
12969
                xor     ecx, edi
12970
                xor     ebx, ebp
12971
                and     ecx, [esp+14h]
12972
                and     ebx, [esp+4]
12973
                ror     eax, 0Bh
12974
                xor     ecx, edx
12975
                mov     ebp, [esi+2Ch]
12976
                xor     ecx, ebx
12977
                and     edi, [esp+10h]
12978
                xor     ecx, edi
12979
                lea     ebp, [eax+ebp-3F53D649h]
12980
                ror     ecx, 7
12981
                add     ebp, ecx
12982
                mov     eax, [esp+8]
12983
                mov     [esp+0Ch], ebp
12984
                mov     ebx, [esp+10h]
12985
                mov     edi, [esp+14h]
12986
                xor     ebp, 0FFFFFFFFh
12987
                mov     ecx, [esp+18h]
12988
                and     ebx, edi
12989
                mov     edx, [esp+4]
12990
                and     ebp, ecx
12991
                xor     ebx, [esp+1Ch]
12992
                xor     ebp, edx
12993
                xor     ecx, edi
12994
                xor     ebx, ebp
12995
                and     ecx, [esp+10h]
12996
                and     ebx, [esp]
12997
                ror     eax, 0Bh
12998
                xor     ecx, edx
12999
                mov     ebp, [esi+70h]
13000
                xor     ecx, ebx
13001
                and     edi, [esp+0Ch]
13002
                xor     ecx, edi
13003
                lea     ebp, [eax+ebp-3683AF23h]
13004
                ror     ecx, 7
13005
                add     ebp, ecx
13006
                mov     eax, [esp+4]
13007
                mov     [esp+8], ebp
13008
                mov     ebx, [esp+0Ch]
13009
                mov     edi, [esp+10h]
13010
                xor     ebp, 0FFFFFFFFh
13011
                mov     ecx, [esp+14h]
13012
                and     ebx, edi
13013
                mov     edx, [esp]
13014
                and     ebp, ecx
13015
                xor     ebx, [esp+18h]
13016
                xor     ebp, edx
13017
                xor     ecx, edi
13018
                xor     ebx, ebp
13019
                and     ecx, [esp+0Ch]
13020
                and     ebx, [esp+1Ch]
13021
                ror     eax, 0Bh
13022
                xor     ecx, edx
13023
                mov     ebp, [esi+1Ch]
13024
                xor     ecx, ebx
13025
                and     edi, [esp+8]
13026
                xor     ecx, edi
13027
                lea     ebp, [eax+ebp+3F84D5B5h]
13028
                ror     ecx, 7
13029
                add     ebp, ecx
13030
                mov     eax, [esp]
13031
                mov     [esp+4], ebp
13032
                mov     ebx, [esp+8]
13033
                mov     edi, [esp+0Ch]
13034
                xor     ebp, 0FFFFFFFFh
13035
                mov     ecx, [esp+10h]
13036
                and     ebx, edi
13037
                mov     edx, [esp+1Ch]
13038
                and     ebp, ecx
13039
                xor     ebx, [esp+14h]
13040
                xor     ebp, edx
13041
                xor     ecx, edi
13042
                xor     ebx, ebp
13043
                and     ecx, [esp+8]
13044
                and     ebx, [esp+18h]
13045
                ror     eax, 0Bh
13046
                xor     ecx, edx
13047
                mov     ebp, [esi+40h]
13048
                xor     ecx, ebx
13049
                and     edi, [esp+4]
13050
                xor     ecx, edi
13051
                lea     ebp, [eax+ebp-4AB8F6E9h]
13052
                ror     ecx, 7
13053
                add     ebp, ecx
13054
                mov     eax, [esp+1Ch]
13055
                mov     [esp], ebp
13056
                mov     ebx, [esp+4]
13057
                mov     edi, [esp+8]
13058
                xor     ebp, 0FFFFFFFFh
13059
                mov     ecx, [esp+0Ch]
13060
                and     ebx, edi
13061
                mov     edx, [esp+18h]
13062
                and     ebp, ecx
13063
                xor     ebx, [esp+10h]
13064
                xor     ebp, edx
13065
                xor     ecx, edi
13066
                xor     ebx, ebp
13067
                and     ecx, [esp+4]
13068
                and     ebx, [esp+14h]
13069
                ror     eax, 0Bh
13070
                xor     ecx, edx
13071
                mov     ebp, [esi]
13072
                xor     ecx, ebx
13073
                and     edi, [esp]
13074
                xor     ecx, edi
13075
                lea     ebp, [eax+ebp-6DE92A27h]
13076
                ror     ecx, 7
13077
                add     ebp, ecx
13078
                mov     eax, [esp+18h]
13079
                mov     [esp+1Ch], ebp
13080
                mov     ebx, [esp]
13081
                mov     edi, [esp+4]
13082
                xor     ebp, 0FFFFFFFFh
13083
                mov     ecx, [esp+8]
13084
                and     ebx, edi
13085
                mov     edx, [esp+14h]
13086
                and     ebp, ecx
13087
                xor     ebx, [esp+0Ch]
13088
                xor     ebp, edx
13089
                xor     ecx, edi
13090
                xor     ebx, ebp
13091
                and     ecx, [esp]
13092
                and     ebx, [esp+10h]
13093
                ror     eax, 0Bh
13094
                xor     ecx, edx
13095
                mov     ebp, [esi+5Ch]
13096
                xor     ecx, ebx
13097
                and     edi, [esp+1Ch]
13098
                xor     ecx, edi
13099
                lea     ebp, [eax+ebp-768604E5h]
13100
                ror     ecx, 7
13101
                add     ebp, ecx
13102
                mov     eax, [esp+14h]
13103
                mov     [esp+18h], ebp
13104
                mov     ebx, [esp+1Ch]
13105
                mov     edi, [esp]
13106
                xor     ebp, 0FFFFFFFFh
13107
                mov     ecx, [esp+4]
13108
                and     ebx, edi
13109
                mov     edx, [esp+10h]
13110
                and     ebp, ecx
13111
                xor     ebx, [esp+8]
13112
                xor     ebp, edx
13113
                xor     ecx, edi
13114
                xor     ebx, ebp
13115
                and     ecx, [esp+1Ch]
13116
                and     ebx, [esp+0Ch]
13117
                ror     eax, 0Bh
13118
                xor     ecx, edx
13119
                mov     ebp, [esi+50h]
13120
                xor     ecx, ebx
13121
                and     edi, [esp+18h]
13122
                xor     ecx, edi
13123
                lea     ebp, [eax+ebp-2ECEF45Ah]
13124
                ror     ecx, 7
13125
                add     ebp, ecx
13126
                mov     eax, [esp+10h]
13127
                mov     [esp+14h], ebp
13128
                mov     ebx, [esp+18h]
13129
                mov     edi, [esp+1Ch]
13130
                xor     ebp, 0FFFFFFFFh
13131
                mov     ecx, [esp]
13132
                and     ebx, edi
13133
                mov     edx, [esp+0Ch]
13134
                and     ebp, ecx
13135
                xor     ebx, [esp+4]
13136
                xor     ebp, edx
13137
                xor     ecx, edi
13138
                xor     ebx, ebp
13139
                and     ecx, [esp+18h]
13140
                and     ebx, [esp+8]
13141
                ror     eax, 0Bh
13142
                xor     ecx, edx
13143
                mov     ebp, [esi+58h]
13144
                xor     ecx, ebx
13145
                and     edi, [esp+14h]
13146
                xor     ecx, edi
13147
                lea     ebp, [eax+ebp-67204A54h]
13148
                ror     ecx, 7
13149
                add     ebp, ecx
13150
                mov     eax, [esp+0Ch]
13151
                mov     [esp+10h], ebp
13152
                mov     ebx, [esp+14h]
13153
                mov     edi, [esp+18h]
13154
                xor     ebp, 0FFFFFFFFh
13155
                mov     ecx, [esp+1Ch]
13156
                and     ebx, edi
13157
                mov     edx, [esp+8]
13158
                and     ebp, ecx
13159
                xor     ebx, [esp]
13160
                xor     ebp, edx
13161
                xor     ecx, edi
13162
                xor     ebx, ebp
13163
                and     ecx, [esp+14h]
13164
                and     ebx, [esp+4]
13165
                ror     eax, 0Bh
13166
                xor     ecx, edx
13167
                mov     ebp, [esi+4]
13168
                xor     ecx, ebx
13169
                and     edi, [esp+10h]
13170
                xor     ecx, edi
13171
                lea     ebp, [eax+ebp+2FFD72DBh]
13172
                ror     ecx, 7
13173
                add     ebp, ecx
13174
                mov     eax, [esp+8]
13175
                mov     [esp+0Ch], ebp
13176
                mov     ebx, [esp+10h]
13177
                mov     edi, [esp+14h]
13178
                xor     ebp, 0FFFFFFFFh
13179
                mov     ecx, [esp+18h]
13180
                and     ebx, edi
13181
                mov     edx, [esp+4]
13182
                and     ebp, ecx
13183
                xor     ebx, [esp+1Ch]
13184
                xor     ebp, edx
13185
                xor     ecx, edi
13186
                xor     ebx, ebp
13187
                and     ecx, [esp+10h]
13188
                and     ebx, [esp]
13189
                ror     eax, 0Bh
13190
                xor     ecx, edx
13191
                mov     ebp, [esi+28h]
13192
                xor     ecx, ebx
13193
                and     edi, [esp+0Ch]
13194
                xor     ecx, edi
13195
                lea     ebp, [eax+ebp-2FE52049h]
13196
                ror     ecx, 7
13197
                add     ebp, ecx
13198
                mov     eax, [esp+4]
13199
                mov     [esp+8], ebp
13200
                mov     ebx, [esp+0Ch]
13201
                mov     edi, [esp+10h]
13202
                xor     ebp, 0FFFFFFFFh
13203
                mov     ecx, [esp+14h]
13204
                and     ebx, edi
13205
                mov     edx, [esp]
13206
                and     ebp, ecx
13207
                xor     ebx, [esp+18h]
13208
                xor     ebp, edx
13209
                xor     ecx, edi
13210
                xor     ebx, ebp
13211
                and     ecx, [esp+0Ch]
13212
                and     ebx, [esp+1Ch]
13213
                ror     eax, 0Bh
13214
                xor     ecx, edx
13215
                mov     ebp, [esi+10h]
13216
                xor     ecx, ebx
13217
                and     edi, [esp+8]
13218
                xor     ecx, edi
13219
                lea     ebp, [eax+ebp-471E5013h]
13220
                ror     ecx, 7
13221
                add     ebp, ecx
13222
                mov     eax, [esp]
13223
                mov     [esp+4], ebp
13224
                mov     ebx, [esp+8]
13225
                mov     edi, [esp+0Ch]
13226
                xor     ebp, 0FFFFFFFFh
13227
                mov     ecx, [esp+10h]
13228
                and     ebx, edi
13229
                mov     edx, [esp+1Ch]
13230
                and     ebp, ecx
13231
                xor     ebx, [esp+14h]
13232
                xor     ebp, edx
13233
                xor     ecx, edi
13234
                xor     ebx, ebp
13235
                and     ecx, [esp+8]
13236
                and     ebx, [esp+18h]
13237
                ror     eax, 0Bh
13238
                xor     ecx, edx
13239
                mov     ebp, [esi+20h]
13240
                xor     ecx, ebx
13241
                and     edi, [esp+4]
13242
                xor     ecx, edi
13243
                lea     ebp, [eax+ebp+6A267E96h]
13244
                ror     ecx, 7
13245
                add     ebp, ecx
13246
                mov     eax, [esp+1Ch]
13247
                mov     [esp], ebp
13248
                mov     ebx, [esp+4]
13249
                mov     edi, [esp+8]
13250
                xor     ebp, 0FFFFFFFFh
13251
                mov     ecx, [esp+0Ch]
13252
                and     ebx, edi
13253
                mov     edx, [esp+18h]
13254
                and     ebp, ecx
13255
                xor     ebx, [esp+10h]
13256
                xor     ebp, edx
13257
                xor     ecx, edi
13258
                xor     ebx, ebp
13259
                and     ecx, [esp+4]
13260
                and     ebx, [esp+14h]
13261
                ror     eax, 0Bh
13262
                xor     ecx, edx
13263
                mov     ebp, [esi+78h]
13264
                xor     ecx, ebx
13265
                and     edi, [esp]
13266
                xor     ecx, edi
13267
                lea     ebp, [eax+ebp-45836FBBh]
13268
                ror     ecx, 7
13269
                add     ebp, ecx
13270
                mov     eax, [esp+18h]
13271
                mov     [esp+1Ch], ebp
13272
                mov     ebx, [esp]
13273
                mov     edi, [esp+4]
13274
                xor     ebp, 0FFFFFFFFh
13275
                mov     ecx, [esp+8]
13276
                and     ebx, edi
13277
                mov     edx, [esp+14h]
13278
                and     ebp, ecx
13279
                xor     ebx, [esp+0Ch]
13280
                xor     ebp, edx
13281
                xor     ecx, edi
13282
                xor     ebx, ebp
13283
                and     ecx, [esp]
13284
                and     ebx, [esp+10h]
13285
                ror     eax, 0Bh
13286
                xor     ecx, edx
13287
                mov     ebp, [esi+0Ch]
13288
                xor     ecx, ebx
13289
                and     edi, [esp+1Ch]
13290
                xor     ecx, edi
13291
                lea     ebp, [eax+ebp-0ED38067h]
13292
                ror     ecx, 7
13293
                add     ebp, ecx
13294
                mov     eax, [esp+14h]
13295
                mov     [esp+18h], ebp
13296
                mov     ebx, [esp+1Ch]
13297
                mov     edi, [esp]
13298
                xor     ebp, 0FFFFFFFFh
13299
                mov     ecx, [esp+4]
13300
                and     ebx, edi
13301
                mov     edx, [esp+10h]
13302
                and     ebp, ecx
13303
                xor     ebx, [esp+8]
13304
                xor     ebp, edx
13305
                xor     ecx, edi
13306
                xor     ebx, ebp
13307
                and     ecx, [esp+1Ch]
13308
                and     ebx, [esp+0Ch]
13309
                ror     eax, 0Bh
13310
                xor     ecx, edx
13311
                mov     ebp, [esi+54h]
13312
                xor     ecx, ebx
13313
                and     edi, [esp+18h]
13314
                xor     ecx, edi
13315
                lea     ebp, [eax+ebp+24A19947h]
13316
                ror     ecx, 7
13317
                add     ebp, ecx
13318
                mov     eax, [esp+10h]
13319
                mov     [esp+14h], ebp
13320
                mov     ebx, [esp+18h]
13321
                mov     edi, [esp+1Ch]
13322
                xor     ebp, 0FFFFFFFFh
13323
                mov     ecx, [esp]
13324
                and     ebx, edi
13325
                mov     edx, [esp+0Ch]
13326
                and     ebp, ecx
13327
                xor     ebx, [esp+4]
13328
                xor     ebp, edx
13329
                xor     ecx, edi
13330
                xor     ebx, ebp
13331
                and     ecx, [esp+18h]
13332
                and     ebx, [esp+8]
13333
                ror     eax, 0Bh
13334
                xor     ecx, edx
13335
                mov     ebp, [esi+24h]
13336
                xor     ecx, ebx
13337
                and     edi, [esp+14h]
13338
                xor     ecx, edi
13339
                lea     ebp, [eax+ebp-4C6E9309h]
13340
                ror     ecx, 7
13341
                add     ebp, ecx
13342
                mov     eax, [esp+0Ch]
13343
                mov     [esp+10h], ebp
13344
                mov     ebx, [esp+14h]
13345
                mov     edi, [esp+18h]
13346
                xor     ebp, 0FFFFFFFFh
13347
                mov     ecx, [esp+1Ch]
13348
                and     ebx, edi
13349
                mov     edx, [esp+8]
13350
                and     ebp, ecx
13351
                xor     ebx, [esp]
13352
                xor     ebp, edx
13353
                xor     ecx, edi
13354
                xor     ebx, ebp
13355
                and     ecx, [esp+14h]
13356
                and     ebx, [esp+4]
13357
                ror     eax, 0Bh
13358
                xor     ecx, edx
13359
                mov     ebp, [esi+44h]
13360
                xor     ecx, ebx
13361
                and     edi, [esp+10h]
13362
                xor     ecx, edi
13363
                lea     ebp, [eax+ebp+801F2E2h]
13364
                ror     ecx, 7
13365
                add     ebp, ecx
13366
                mov     eax, [esp+8]
13367
                mov     [esp+0Ch], ebp
13368
                mov     ebx, [esp+10h]
13369
                mov     edi, [esp+14h]
13370
                xor     ebp, 0FFFFFFFFh
13371
                mov     ecx, [esp+18h]
13372
                and     ebx, edi
13373
                mov     edx, [esp+4]
13374
                and     ebp, ecx
13375
                xor     ebx, [esp+1Ch]
13376
                xor     ebp, edx
13377
                xor     ecx, edi
13378
                xor     ebx, ebp
13379
                and     ecx, [esp+10h]
13380
                and     ebx, [esp]
13381
                ror     eax, 0Bh
13382
                xor     ecx, edx
13383
                mov     ebp, [esi+60h]
13384
                xor     ecx, ebx
13385
                and     edi, [esp+0Ch]
13386
                xor     ecx, edi
13387
                lea     ebp, [eax+ebp-7A7103EAh]
13388
                ror     ecx, 7
13389
                add     ebp, ecx
13390
                mov     eax, [esp+4]
13391
                mov     [esp+8], ebp
13392
                mov     ebx, [esp+0Ch]
13393
                mov     edi, [esp+10h]
13394
                xor     ebp, 0FFFFFFFFh
13395
                mov     ecx, [esp+14h]
13396
                and     ebx, edi
13397
                mov     edx, [esp]
13398
                and     ebp, ecx
13399
                xor     ebx, [esp+18h]
13400
                xor     ebp, edx
13401
                xor     ecx, edi
13402
                xor     ebx, ebp
13403
                and     ecx, [esp+0Ch]
13404
                and     ebx, [esp+1Ch]
13405
                ror     eax, 0Bh
13406
                xor     ecx, edx
13407
                mov     ebp, [esi+74h]
13408
                xor     ecx, ebx
13409
                and     edi, [esp+8]
13410
                xor     ecx, edi
13411
                lea     ebp, [eax+ebp+636920D8h]
13412
                ror     ecx, 7
13413
                add     ebp, ecx
13414
                mov     eax, [esp]
13415
                mov     [esp+4], ebp
13416
                mov     ebx, [esp+8]
13417
                mov     edi, [esp+0Ch]
13418
                xor     ebp, 0FFFFFFFFh
13419
                mov     ecx, [esp+10h]
13420
                and     ebx, edi
13421
                mov     edx, [esp+1Ch]
13422
                and     ebp, ecx
13423
                xor     ebx, [esp+14h]
13424
                xor     ebp, edx
13425
                xor     ecx, edi
13426
                xor     ebx, ebp
13427
                and     ecx, [esp+8]
13428
                and     ebx, [esp+18h]
13429
                ror     eax, 0Bh
13430
                xor     ecx, edx
13431
                mov     ebp, [esi+18h]
13432
                xor     ecx, ebx
13433
                and     edi, [esp+4]
13434
                xor     ecx, edi
13435
                lea     ebp, [eax+ebp+71574E69h]
13436
                ror     ecx, 7
13437
                add     ebp, ecx
13438
                mov     eax, [esp+1Ch]
13439
                mov     [esp], ebp
13440
                mov     ebx, [esp+4]
13441
                mov     edi, [esp+8]
13442
                xor     ebp, 0FFFFFFFFh
13443
                mov     ecx, [esp+0Ch]
13444
                and     ebx, edi
13445
                mov     edx, [esp+18h]
13446
                and     ebp, ecx
13447
                xor     ebx, [esp+10h]
13448
                xor     ebp, edx
13449
                xor     ecx, edi
13450
                xor     ebx, ebp
13451
                and     ecx, [esp+4]
13452
                and     ebx, [esp+14h]
13453
                ror     eax, 0Bh
13454
                xor     ecx, edx
13455
                mov     ebp, [esi+4Ch]
13456
                xor     ecx, ebx
13457
                and     edi, [esp]
13458
                xor     ecx, edi
13459
                lea     ebp, [eax+ebp-5BA7015Dh]
13460
                ror     ecx, 7
13461
                add     ebp, ecx
13462
                mov     eax, [esp+18h]
13463
                mov     [esp+1Ch], ebp
13464
                mov     ebx, [esp]
13465
                mov     edi, [esp+4]
13466
                xor     ebp, 0FFFFFFFFh
13467
                mov     ecx, [esp+8]
13468
                and     ebx, edi
13469
                mov     edx, [esp+14h]
13470
                and     ebp, ecx
13471
                xor     ebx, [esp+0Ch]
13472
                xor     ebp, edx
13473
                xor     ecx, edi
13474
                xor     ebx, ebp
13475
                and     ecx, [esp]
13476
                and     ebx, [esp+10h]
13477
                ror     eax, 0Bh
13478
                xor     ecx, edx
13479
                mov     ebp, [esi+30h]
13480
                xor     ecx, ebx
13481
                and     edi, [esp+1Ch]
13482
                xor     ecx, edi
13483
                lea     ebp, [eax+ebp-0B6CC282h]
13484
                ror     ecx, 7
13485
                add     ebp, ecx
13486
                mov     eax, [esp+14h]
13487
                mov     [esp+18h], ebp
13488
                mov     ebx, [esp+1Ch]
13489
                mov     edi, [esp]
13490
                xor     ebp, 0FFFFFFFFh
13491
                mov     ecx, [esp+4]
13492
                and     ebx, edi
13493
                mov     edx, [esp+10h]
13494
                and     ebp, ecx
13495
                xor     ebx, [esp+8]
13496
                xor     ebp, edx
13497
                xor     ecx, edi
13498
                xor     ebx, ebp
13499
                and     ecx, [esp+1Ch]
13500
                and     ebx, [esp+0Ch]
13501
                ror     eax, 0Bh
13502
                xor     ecx, edx
13503
                mov     ebp, [esi+3Ch]
13504
                xor     ecx, ebx
13505
                and     edi, [esp+18h]
13506
                xor     ecx, edi
13507
                lea     ebp, [eax+ebp+0D95748Fh]
13508
                ror     ecx, 7
13509
                add     ebp, ecx
13510
                mov     eax, [esp+10h]
13511
                mov     [esp+14h], ebp
13512
                mov     ebx, [esp+18h]
13513
                mov     edi, [esp+1Ch]
13514
                xor     ebp, 0FFFFFFFFh
13515
                mov     ecx, [esp]
13516
                and     ebx, edi
13517
                mov     edx, [esp+0Ch]
13518
                and     ebp, ecx
13519
                xor     ebx, [esp+4]
13520
                xor     ebp, edx
13521
                xor     ecx, edi
13522
                xor     ebx, ebp
13523
                and     ecx, [esp+18h]
13524
                and     ebx, [esp+8]
13525
                ror     eax, 0Bh
13526
                xor     ecx, edx
13527
                mov     ebp, [esi+34h]
13528
                xor     ecx, ebx
13529
                and     edi, [esp+14h]
13530
                xor     ecx, edi
13531
                lea     ebp, [eax+ebp+728EB658h]
13532
                ror     ecx, 7
13533
                add     ebp, ecx
13534
                mov     eax, [esp+0Ch]
13535
                mov     [esp+10h], ebp
13536
                mov     ebx, [esp+14h]
13537
                mov     edi, [esp+18h]
13538
                xor     ebp, 0FFFFFFFFh
13539
                mov     ecx, [esp+1Ch]
13540
                and     ebx, edi
13541
                mov     edx, [esp+8]
13542
                and     ebp, ecx
13543
                xor     ebx, [esp]
13544
                xor     ebp, edx
13545
                xor     ecx, edi
13546
                xor     ebx, ebp
13547
                and     ecx, [esp+14h]
13548
                and     ebx, [esp+4]
13549
                ror     eax, 0Bh
13550
                xor     ecx, edx
13551
                mov     ebp, [esi+8]
13552
                xor     ecx, ebx
13553
                and     edi, [esp+10h]
13554
                xor     ecx, edi
13555
                lea     ebp, [eax+ebp+718BCD58h]
13556
                ror     ecx, 7
13557
                add     ebp, ecx
13558
                mov     eax, [esp+8]
13559
                mov     [esp+0Ch], ebp
13560
                mov     ebx, [esp+10h]
13561
                mov     edi, [esp+14h]
13562
                xor     ebp, 0FFFFFFFFh
13563
                mov     ecx, [esp+18h]
13564
                and     ebx, edi
13565
                mov     edx, [esp+4]
13566
                and     ebp, ecx
13567
                xor     ebx, [esp+1Ch]
13568
                xor     ebp, edx
13569
                xor     ecx, edi
13570
                xor     ebx, ebp
13571
                and     ecx, [esp+10h]
13572
                and     ebx, [esp]
13573
                ror     eax, 0Bh
13574
                xor     ecx, edx
13575
                mov     ebp, [esi+64h]
13576
                xor     ecx, ebx
13577
                and     edi, [esp+0Ch]
13578
                xor     ecx, edi
13579
                lea     ebp, [eax+ebp-7DEAB512h]
13580
                ror     ecx, 7
13581
                add     ebp, ecx
13582
                mov     eax, [esp+4]
13583
                mov     [esp+8], ebp
13584
                mov     ebx, [esp+0Ch]
13585
                mov     edi, [esp+10h]
13586
                xor     ebp, 0FFFFFFFFh
13587
                mov     ecx, [esp+14h]
13588
                and     ebx, edi
13589
                mov     edx, [esp]
13590
                and     ebp, ecx
13591
                xor     ebx, [esp+18h]
13592
                xor     ebp, edx
13593
                xor     ecx, edi
13594
                xor     ebx, ebp
13595
                and     ecx, [esp+0Ch]
13596
                and     ebx, [esp+1Ch]
13597
                ror     eax, 0Bh
13598
                xor     ecx, edx
13599
                mov     ebp, [esi+7Ch]
13600
                xor     ecx, ebx
13601
                and     edi, [esp+8]
13602
                xor     ecx, edi
13603
                lea     ebp, [eax+ebp+7B54A41Dh]
13604
                ror     ecx, 7
13605
                add     ebp, ecx
13606
                mov     eax, [esp]
13607
                mov     [esp+4], ebp
13608
                mov     ebx, [esp+8]
13609
                mov     edi, [esp+0Ch]
13610
                xor     ebp, 0FFFFFFFFh
13611
                mov     ecx, [esp+10h]
13612
                and     ebx, edi
13613
                mov     edx, [esp+1Ch]
13614
                and     ebp, ecx
13615
                xor     ebx, [esp+14h]
13616
                xor     ebp, edx
13617
                xor     ecx, edi
13618
                xor     ebx, ebp
13619
                and     ecx, [esp+8]
13620
                and     ebx, [esp+18h]
13621
                ror     eax, 0Bh
13622
                xor     ecx, edx
13623
                mov     ebp, [esi+6Ch]
13624
                xor     ecx, ebx
13625
                and     edi, [esp+4]
13626
                xor     ecx, edi
13627
                lea     ebp, [eax+ebp-3DA5A64Bh]
13628
                ror     ecx, 7
13629
                add     ebp, ecx
13630
                mov     eax, [esp+1Ch]
13631
                mov     [esp], ebp
13632
                mov     ebx, [esp+10h]
13633
                mov     ecx, [esp+14h]
13634
                mov     edi, ebx
13635
                and     ebx, [esp+4]
13636
                and     edi, ecx
13637
                xor     ebx, ebp
13638
                ror     eax, 0Bh
13639
                xor     edi, ebp
13640
                mov     ebp, [esi+4Ch]
13641
                xor     edi, [esp+18h]
13642
                and     ecx, [esp+8]
13643
                and     edi, [esp+0Ch]
13644
                xor     ecx, ebx
13645
                lea     ebp, [eax+ebp-63CF2AC7h]
13646
                xor     ecx, edi
13647
                ror     ecx, 7
13648
                add     ebp, ecx
13649
                mov     eax, [esp+18h]
13650
                mov     [esp+1Ch], ebp
13651
                mov     ebx, [esp+0Ch]
13652
                mov     ecx, [esp+10h]
13653
                mov     edi, ebx
13654
                and     ebx, [esp]
13655
                and     edi, ecx
13656
                xor     ebx, ebp
13657
                ror     eax, 0Bh
13658
                xor     edi, ebp
13659
                mov     ebp, [esi+24h]
13660
                xor     edi, [esp+14h]
13661
                and     ecx, [esp+4]
13662
                and     edi, [esp+8]
13663
                xor     ecx, ebx
13664
                lea     ebp, [eax+ebp+2AF26013h]
13665
                xor     ecx, edi
13666
                ror     ecx, 7
13667
                add     ebp, ecx
13668
                mov     eax, [esp+14h]
13669
                mov     [esp+18h], ebp
13670
                mov     ebx, [esp+8]
13671
                mov     ecx, [esp+0Ch]
13672
                mov     edi, ebx
13673
                and     ebx, [esp+1Ch]
13674
                and     edi, ecx
13675
                xor     ebx, ebp
13676
                ror     eax, 0Bh
13677
                xor     edi, ebp
13678
                mov     ebp, [esi+10h]
13679
                xor     edi, [esp+10h]
13680
                and     ecx, [esp]
13681
                and     edi, [esp+4]
13682
                xor     ecx, ebx
13683
                lea     ebp, [eax+ebp-3A2E4FDDh]
13684
                xor     ecx, edi
13685
                ror     ecx, 7
13686
                add     ebp, ecx
13687
                mov     eax, [esp+10h]
13688
                mov     [esp+14h], ebp
13689
                mov     ebx, [esp+4]
13690
                mov     ecx, [esp+8]
13691
                mov     edi, ebx
13692
                and     ebx, [esp+18h]
13693
                and     edi, ecx
13694
                xor     ebx, ebp
13695
                ror     eax, 0Bh
13696
                xor     edi, ebp
13697
                mov     ebp, [esi+50h]
13698
                xor     edi, [esp+0Ch]
13699
                and     ecx, [esp+1Ch]
13700
                and     edi, [esp]
13701
                xor     ecx, ebx
13702
                lea     ebp, [eax+ebp+286085F0h]
13703
                xor     ecx, edi
13704
                ror     ecx, 7
13705
                add     ebp, ecx
13706
                mov     eax, [esp+0Ch]
13707
                mov     [esp+10h], ebp
13708
                mov     ebx, [esp]
13709
                mov     ecx, [esp+4]
13710
                mov     edi, ebx
13711
                and     ebx, [esp+14h]
13712
                and     edi, ecx
13713
                xor     ebx, ebp
13714
                ror     eax, 0Bh
13715
                xor     edi, ebp
13716
                mov     ebp, [esi+70h]
13717
                xor     edi, [esp+8]
13718
                and     ecx, [esp+18h]
13719
                and     edi, [esp+1Ch]
13720
                xor     ecx, ebx
13721
                lea     ebp, [eax+ebp-35BE86E8h]
13722
                xor     ecx, edi
13723
                ror     ecx, 7
13724
                add     ebp, ecx
13725
                mov     eax, [esp+8]
13726
                mov     [esp+0Ch], ebp
13727
                mov     ebx, [esp+1Ch]
13728
                mov     ecx, [esp]
13729
                mov     edi, ebx
13730
                and     ebx, [esp+10h]
13731
                and     edi, ecx
13732
                xor     ebx, ebp
13733
                ror     eax, 0Bh
13734
                xor     edi, ebp
13735
                mov     ebp, [esi+44h]
13736
                xor     edi, [esp+4]
13737
                and     ecx, [esp+14h]
13738
                and     edi, [esp+18h]
13739
                xor     ecx, ebx
13740
                lea     ebp, [eax+ebp-4724C711h]
13741
                xor     ecx, edi
13742
                ror     ecx, 7
13743
                add     ebp, ecx
13744
                mov     eax, [esp+4]
13745
                mov     [esp+8], ebp
13746
                mov     ebx, [esp+18h]
13747
                mov     ecx, [esp+1Ch]
13748
                mov     edi, ebx
13749
                and     ebx, [esp+0Ch]
13750
                and     edi, ecx
13751
                xor     ebx, ebp
13752
                ror     eax, 0Bh
13753
                xor     edi, ebp
13754
                mov     ebp, [esi+20h]
13755
                xor     edi, [esp]
13756
                and     ecx, [esp+10h]
13757
                and     edi, [esp+14h]
13758
                xor     ecx, ebx
13759
                lea     ebp, [eax+ebp-71862350h]
13760
                xor     ecx, edi
13761
                ror     ecx, 7
13762
                add     ebp, ecx
13763
                mov     eax, [esp]
13764
                mov     [esp+4], ebp
13765
                mov     ebx, [esp+14h]
13766
                mov     ecx, [esp+18h]
13767
                mov     edi, ebx
13768
                and     ebx, [esp+8]
13769
                and     edi, ecx
13770
                xor     ebx, ebp
13771
                ror     eax, 0Bh
13772
                xor     edi, ebp
13773
                mov     ebp, [esi+58h]
13774
                xor     edi, [esp+1Ch]
13775
                and     ecx, [esp+0Ch]
13776
                and     edi, [esp+10h]
13777
                xor     ecx, ebx
13778
                lea     ebp, [eax+ebp+603A180Eh]
13779
                xor     ecx, edi
13780
                ror     ecx, 7
13781
                add     ebp, ecx
13782
                mov     eax, [esp+1Ch]
13783
                mov     [esp], ebp
13784
                mov     ebx, [esp+10h]
13785
                mov     ecx, [esp+14h]
13786
                mov     edi, ebx
13787
                and     ebx, [esp+4]
13788
                and     edi, ecx
13789
                xor     ebx, ebp
13790
                ror     eax, 0Bh
13791
                xor     edi, ebp
13792
                mov     ebp, [esi+74h]
13793
                xor     edi, [esp+18h]
13794
                and     ecx, [esp+8]
13795
                and     edi, [esp+0Ch]
13796
                xor     ecx, ebx
13797
                lea     ebp, [eax+ebp+6C9E0E8Bh]
13798
                xor     ecx, edi
13799
                ror     ecx, 7
13800
                add     ebp, ecx
13801
                mov     eax, [esp+18h]
13802
                mov     [esp+1Ch], ebp
13803
                mov     ebx, [esp+0Ch]
13804
                mov     ecx, [esp+10h]
13805
                mov     edi, ebx
13806
                and     ebx, [esp]
13807
                and     edi, ecx
13808
                xor     ebx, ebp
13809
                ror     eax, 0Bh
13810
                xor     edi, ebp
13811
                mov     ebp, [esi+38h]
13812
                xor     edi, [esp+14h]
13813
                and     ecx, [esp+4]
13814
                and     edi, [esp+8]
13815
                xor     ecx, ebx
13816
                lea     ebp, [eax+ebp-4FE175C2h]
13817
                xor     ecx, edi
13818
                ror     ecx, 7
13819
                add     ebp, ecx
13820
                mov     eax, [esp+14h]
13821
                mov     [esp+18h], ebp
13822
                mov     ebx, [esp+8]
13823
                mov     ecx, [esp+0Ch]
13824
                mov     edi, ebx
13825
                and     ebx, [esp+1Ch]
13826
                and     edi, ecx
13827
                xor     ebx, ebp
13828
                ror     eax, 0Bh
13829
                xor     edi, ebp
13830
                mov     ebp, [esi+64h]
13831
                xor     edi, [esp+10h]
13832
                and     ecx, [esp]
13833
                and     edi, [esp+4]
13834
                xor     ecx, ebx
13835
                lea     ebp, [eax+ebp-28EA883Fh]
13836
                xor     ecx, edi
13837
                ror     ecx, 7
13838
                add     ebp, ecx
13839
                mov     eax, [esp+10h]
13840
                mov     [esp+14h], ebp
13841
                mov     ebx, [esp+4]
13842
                mov     ecx, [esp+8]
13843
                mov     edi, ebx
13844
                and     ebx, [esp+18h]
13845
                and     edi, ecx
13846
                xor     ebx, ebp
13847
                ror     eax, 0Bh
13848
                xor     edi, ebp
13849
                mov     ebp, [esi+30h]
13850
                xor     edi, [esp+0Ch]
13851
                and     ecx, [esp+1Ch]
13852
                and     edi, [esp]
13853
                xor     ecx, ebx
13854
                lea     ebp, [eax+ebp-42CEB4D9h]
13855
                xor     ecx, edi
13856
                ror     ecx, 7
13857
                add     ebp, ecx
13858
                mov     eax, [esp+0Ch]
13859
                mov     [esp+10h], ebp
13860
                mov     ebx, [esp]
13861
                mov     ecx, [esp+4]
13862
                mov     edi, ebx
13863
                and     ebx, [esp+14h]
13864
                and     edi, ecx
13865
                xor     ebx, ebp
13866
                ror     eax, 0Bh
13867
                xor     edi, ebp
13868
                mov     ebp, [esi+60h]
13869
                xor     edi, [esp+8]
13870
                and     ecx, [esp+18h]
13871
                and     edi, [esp+1Ch]
13872
                xor     ecx, ebx
13873
                lea     ebp, [eax+ebp+78AF2FDAh]
13874
                xor     ecx, edi
13875
                ror     ecx, 7
13876
                add     ebp, ecx
13877
                mov     eax, [esp+8]
13878
                mov     [esp+0Ch], ebp
13879
                mov     ebx, [esp+1Ch]
13880
                mov     ecx, [esp]
13881
                mov     edi, ebx
13882
                and     ebx, [esp+10h]
13883
                and     edi, ecx
13884
                xor     ebx, ebp
13885
                ror     eax, 0Bh
13886
                xor     edi, ebp
13887
                mov     ebp, [esi+78h]
13888
                xor     edi, [esp+4]
13889
                and     ecx, [esp+14h]
13890
                and     edi, [esp+18h]
13891
                xor     ecx, ebx
13892
                lea     ebp, [eax+ebp+55605C60h]
13893
                xor     ecx, edi
13894
                ror     ecx, 7
13895
                add     ebp, ecx
13896
                mov     eax, [esp+4]
13897
                mov     [esp+8], ebp
13898
                mov     ebx, [esp+18h]
13899
                mov     ecx, [esp+1Ch]
13900
                mov     edi, ebx
13901
                and     ebx, [esp+0Ch]
13902
                and     edi, ecx
13903
                xor     ebx, ebp
13904
                ror     eax, 0Bh
13905
                xor     edi, ebp
13906
                mov     ebp, [esi+40h]
13907
                xor     edi, [esp]
13908
                and     ecx, [esp+10h]
13909
                and     edi, [esp+14h]
13910
                xor     ecx, ebx
13911
                lea     ebp, [eax+ebp-19AADA0Dh]
13912
                xor     ecx, edi
13913
                ror     ecx, 7
13914
                add     ebp, ecx
13915
                mov     eax, [esp]
13916
                mov     [esp+4], ebp
13917
                mov     ebx, [esp+14h]
13918
                mov     ecx, [esp+18h]
13919
                mov     edi, ebx
13920
                and     ebx, [esp+8]
13921
                and     edi, ecx
13922
                xor     ebx, ebp
13923
                ror     eax, 0Bh
13924
                xor     edi, ebp
13925
                mov     ebp, [esi+68h]
13926
                xor     edi, [esp+1Ch]
13927
                and     ecx, [esp+0Ch]
13928
                and     edi, [esp+10h]
13929
                xor     ecx, ebx
13930
                lea     ebp, [eax+ebp-55AA546Ch]
13931
                xor     ecx, edi
13932
                ror     ecx, 7
13933
                add     ebp, ecx
13934
                mov     eax, [esp+1Ch]
13935
                mov     [esp], ebp
13936
                mov     ebx, [esp+10h]
13937
                mov     ecx, [esp+14h]
13938
                mov     edi, ebx
13939
                and     ebx, [esp+4]
13940
                and     edi, ecx
13941
                xor     ebx, ebp
13942
                ror     eax, 0Bh
13943
                xor     edi, ebp
13944
                mov     ebp, [esi+7Ch]
13945
                xor     edi, [esp+18h]
13946
                and     ecx, [esp+8]
13947
                and     edi, [esp+0Ch]
13948
                xor     ecx, ebx
13949
                lea     ebp, [eax+ebp+57489862h]
13950
                xor     ecx, edi
13951
                ror     ecx, 7
13952
                add     ebp, ecx
13953
                mov     eax, [esp+18h]
13954
                mov     [esp+1Ch], ebp
13955
                mov     ebx, [esp+0Ch]
13956
                mov     ecx, [esp+10h]
13957
                mov     edi, ebx
13958
                and     ebx, [esp]
13959
                and     edi, ecx
13960
                xor     ebx, ebp
13961
                ror     eax, 0Bh
13962
                xor     edi, ebp
13963
                mov     ebp, [esi+3Ch]
13964
                xor     edi, [esp+14h]
13965
                and     ecx, [esp+4]
13966
                and     edi, [esp+8]
13967
                xor     ecx, ebx
13968
                lea     ebp, [eax+ebp+63E81440h]
13969
                xor     ecx, edi
13970
                ror     ecx, 7
13971
                add     ebp, ecx
13972
                mov     eax, [esp+14h]
13973
                mov     [esp+18h], ebp
13974
                mov     ebx, [esp+8]
13975
                mov     ecx, [esp+0Ch]
13976
                mov     edi, ebx
13977
                and     ebx, [esp+1Ch]
13978
                and     edi, ecx
13979
                xor     ebx, ebp
13980
                ror     eax, 0Bh
13981
                xor     edi, ebp
13982
                mov     ebp, [esi+1Ch]
13983
                xor     edi, [esp+10h]
13984
                and     ecx, [esp]
13985
                and     edi, [esp+4]
13986
                xor     ecx, ebx
13987
                lea     ebp, [eax+ebp+55CA396Ah]
13988
                xor     ecx, edi
13989
                ror     ecx, 7
13990
                add     ebp, ecx
13991
                mov     eax, [esp+10h]
13992
                mov     [esp+14h], ebp
13993
                mov     ebx, [esp+4]
13994
                mov     ecx, [esp+8]
13995
                mov     edi, ebx
13996
                and     ebx, [esp+18h]
13997
                and     edi, ecx
13998
                xor     ebx, ebp
13999
                ror     eax, 0Bh
14000
                xor     edi, ebp
14001
                mov     ebp, [esi+0Ch]
14002
                xor     edi, [esp+0Ch]
14003
                and     ecx, [esp+1Ch]
14004
                and     edi, [esp]
14005
                xor     ecx, ebx
14006
                lea     ebp, [eax+ebp+2AAB10B6h]
14007
                xor     ecx, edi
14008
                ror     ecx, 7
14009
                add     ebp, ecx
14010
                mov     eax, [esp+0Ch]
14011
                mov     [esp+10h], ebp
14012
                mov     ebx, [esp]
14013
                mov     ecx, [esp+4]
14014
                mov     edi, ebx
14015
                and     ebx, [esp+14h]
14016
                and     edi, ecx
14017
                xor     ebx, ebp
14018
                ror     eax, 0Bh
14019
                xor     edi, ebp
14020
                mov     ebp, [esi+4]
14021
                xor     edi, [esp+8]
14022
                and     ecx, [esp+18h]
14023
                and     edi, [esp+1Ch]
14024
                xor     ecx, ebx
14025
                lea     ebp, [eax+ebp-4B33A3CCh]
14026
                xor     ecx, edi
14027
                ror     ecx, 7
14028
                add     ebp, ecx
14029
                mov     eax, [esp+8]
14030
                mov     [esp+0Ch], ebp
14031
                mov     ebx, [esp+1Ch]
14032
                mov     ecx, [esp]
14033
                mov     edi, ebx
14034
                and     ebx, [esp+10h]
14035
                and     edi, ecx
14036
                xor     ebx, ebp
14037
                ror     eax, 0Bh
14038
                xor     edi, ebp
14039
                mov     ebp, [esi]
14040
                xor     edi, [esp+4]
14041
                and     ecx, [esp+14h]
14042
                and     edi, [esp+18h]
14043
                xor     ecx, ebx
14044
                lea     ebp, [eax+ebp+1141E8CEh]
14045
                xor     ecx, edi
14046
                ror     ecx, 7
14047
                add     ebp, ecx
14048
                mov     eax, [esp+4]
14049
                mov     [esp+8], ebp
14050
                mov     ebx, [esp+18h]
14051
                mov     ecx, [esp+1Ch]
14052
                mov     edi, ebx
14053
                and     ebx, [esp+0Ch]
14054
                and     edi, ecx
14055
                xor     ebx, ebp
14056
                ror     eax, 0Bh
14057
                xor     edi, ebp
14058
                mov     ebp, [esi+48h]
14059
                xor     edi, [esp]
14060
                and     ecx, [esp+10h]
14061
                and     edi, [esp+14h]
14062
                xor     ecx, ebx
14063
                lea     ebp, [eax+ebp-5EAB7951h]
14064
                xor     ecx, edi
14065
                ror     ecx, 7
14066
                add     ebp, ecx
14067
                mov     eax, [esp]
14068
                mov     [esp+4], ebp
14069
                mov     ebx, [esp+14h]
14070
                mov     ecx, [esp+18h]
14071
                mov     edi, ebx
14072
                and     ebx, [esp+8]
14073
                and     edi, ecx
14074
                xor     ebx, ebp
14075
                ror     eax, 0Bh
14076
                xor     edi, ebp
14077
                mov     ebp, [esi+6Ch]
14078
                xor     edi, [esp+1Ch]
14079
                and     ecx, [esp+0Ch]
14080
                and     edi, [esp+10h]
14081
                xor     ecx, ebx
14082
                lea     ebp, [eax+ebp+7C72E993h]
14083
                xor     ecx, edi
14084
                ror     ecx, 7
14085
                add     ebp, ecx
14086
                mov     eax, [esp+1Ch]
14087
                mov     [esp], ebp
14088
                mov     ebx, [esp+10h]
14089
                mov     ecx, [esp+14h]
14090
                mov     edi, ebx
14091
                and     ebx, [esp+4]
14092
                and     edi, ecx
14093
                xor     ebx, ebp
14094
                ror     eax, 0Bh
14095
                xor     edi, ebp
14096
                mov     ebp, [esi+34h]
14097
                xor     edi, [esp+18h]
14098
                and     ecx, [esp+8]
14099
                and     edi, [esp+0Ch]
14100
                xor     ecx, ebx
14101
                lea     ebp, [eax+ebp-4C11EBEFh]
14102
                xor     ecx, edi
14103
                ror     ecx, 7
14104
                add     ebp, ecx
14105
                mov     eax, [esp+18h]
14106
                mov     [esp+1Ch], ebp
14107
                mov     ebx, [esp+0Ch]
14108
                mov     ecx, [esp+10h]
14109
                mov     edi, ebx
14110
                and     ebx, [esp]
14111
                and     edi, ecx
14112
                xor     ebx, ebp
14113
                ror     eax, 0Bh
14114
                xor     edi, ebp
14115
                mov     ebp, [esi+18h]
14116
                xor     edi, [esp+14h]
14117
                and     ecx, [esp+4]
14118
                and     edi, [esp+8]
14119
                xor     ecx, ebx
14120
                lea     ebp, [eax+ebp+636FBC2Ah]
14121
                xor     ecx, edi
14122
                ror     ecx, 7
14123
                add     ebp, ecx
14124
                mov     eax, [esp+14h]
14125
                mov     [esp+18h], ebp
14126
                mov     ebx, [esp+8]
14127
                mov     ecx, [esp+0Ch]
14128
                mov     edi, ebx
14129
                and     ebx, [esp+1Ch]
14130
                and     edi, ecx
14131
                xor     ebx, ebp
14132
                ror     eax, 0Bh
14133
                xor     edi, ebp
14134
                mov     ebp, [esi+54h]
14135
                xor     edi, [esp+10h]
14136
                and     ecx, [esp]
14137
                and     edi, [esp+4]
14138
                xor     ecx, ebx
14139
                lea     ebp, [eax+ebp+2BA9C55Dh]
14140
                xor     ecx, edi
14141
                ror     ecx, 7
14142
                add     ebp, ecx
14143
                mov     eax, [esp+10h]
14144
                mov     [esp+14h], ebp
14145
                mov     ebx, [esp+4]
14146
                mov     ecx, [esp+8]
14147
                mov     edi, ebx
14148
                and     ebx, [esp+18h]
14149
                and     edi, ecx
14150
                xor     ebx, ebp
14151
                ror     eax, 0Bh
14152
                xor     edi, ebp
14153
                mov     ebp, [esi+28h]
14154
                xor     edi, [esp+0Ch]
14155
                and     ecx, [esp+1Ch]
14156
                and     edi, [esp]
14157
                xor     ecx, ebx
14158
                lea     ebp, [eax+ebp+741831F6h]
14159
                xor     ecx, edi
14160
                ror     ecx, 7
14161
                add     ebp, ecx
14162
                mov     eax, [esp+0Ch]
14163
                mov     [esp+10h], ebp
14164
                mov     ebx, [esp]
14165
                mov     ecx, [esp+4]
14166
                mov     edi, ebx
14167
                and     ebx, [esp+14h]
14168
                and     edi, ecx
14169
                xor     ebx, ebp
14170
                ror     eax, 0Bh
14171
                xor     edi, ebp
14172
                mov     ebp, [esi+5Ch]
14173
                xor     edi, [esp+8]
14174
                and     ecx, [esp+18h]
14175
                and     edi, [esp+1Ch]
14176
                xor     ecx, ebx
14177
                lea     ebp, [eax+ebp-31A3C1EAh]
14178
                xor     ecx, edi
14179
                ror     ecx, 7
14180
                add     ebp, ecx
14181
                mov     eax, [esp+8]
14182
                mov     [esp+0Ch], ebp
14183
                mov     ebx, [esp+1Ch]
14184
                mov     ecx, [esp]
14185
                mov     edi, ebx
14186
                and     ebx, [esp+10h]
14187
                and     edi, ecx
14188
                xor     ebx, ebp
14189
                ror     eax, 0Bh
14190
                xor     edi, ebp
14191
                mov     ebp, [esi+2Ch]
14192
                xor     edi, [esp+4]
14193
                and     ecx, [esp+14h]
14194
                and     edi, [esp+18h]
14195
                xor     ecx, ebx
14196
                lea     ebp, [eax+ebp-64786CE2h]
14197
                xor     ecx, edi
14198
                ror     ecx, 7
14199
                add     ebp, ecx
14200
                mov     eax, [esp+4]
14201
                mov     [esp+8], ebp
14202
                mov     ebx, [esp+18h]
14203
                mov     ecx, [esp+1Ch]
14204
                mov     edi, ebx
14205
                and     ebx, [esp+0Ch]
14206
                and     edi, ecx
14207
                xor     ebx, ebp
14208
                ror     eax, 0Bh
14209
                xor     edi, ebp
14210
                mov     ebp, [esi+14h]
14211
                xor     edi, [esp]
14212
                and     ecx, [esp+10h]
14213
                and     edi, [esp+14h]
14214
                xor     ecx, ebx
14215
                lea     ebp, [eax+ebp-502945CDh]
14216
                xor     ecx, edi
14217
                ror     ecx, 7
14218
                add     ebp, ecx
14219
                mov     eax, [esp]
14220
                mov     [esp+4], ebp
14221
                mov     ebx, [esp+14h]
14222
                mov     ecx, [esp+18h]
14223
                mov     edi, ebx
14224
                and     ebx, [esp+8]
14225
                and     edi, ecx
14226
                xor     ebx, ebp
14227
                ror     eax, 0Bh
14228
                xor     edi, ebp
14229
                mov     ebp, [esi+8]
14230
                xor     edi, [esp+1Ch]
14231
                and     ecx, [esp+0Ch]
14232
                and     edi, [esp+10h]
14233
                xor     ecx, ebx
14234
                lea     ebp, [eax+ebp+6C24CF5Ch]
14235
                xor     ecx, edi
14236
                ror     ecx, 7
14237
                add     ebp, ecx
14238
                mov     eax, [esp+1Ch]
14239
                mov     [esp], ebp
14240
                mov     edi, [esp+24h]
14241
                mov     eax, [esp]
14242
                mov     ebx, [esp+4]
14243
                add     [edi], eax
14244
                add     [edi+4], ebx
14245
                mov     ecx, [esp+8]
14246
                mov     edx, [esp+0Ch]
14247
                add     [edi+8], ecx
14248
                add     [edi+0Ch], edx
14249
                mov     eax, [esp+10h]
14250
                mov     ebx, [esp+14h]
14251
                add     [edi+10h], eax
14252
                add     [edi+14h], ebx
14253
                mov     ebp, [esp+28h]
14254
                mov     ecx, [esp+18h]
14255
                mov     edx, [esp+1Ch]
14256
                mov     esp, ebp
14257
                add     [edi+18h], ecx
14258
                add     [edi+1Ch], edx
14259
                pop     ebp
14260
                pop     edi
14261
                pop     esi
14262
                pop     ebx
14263
end;
14264
 
14265
procedure THashBaseHaval.DoTransform4(Buffer: PLongArray);
14266
asm
14267
                push    ebx
14268
                push    esi
14269
                push    edi
14270
                lea     edi, [eax].THashBaseHaval.FDigest
14271
                mov     esi, edx
14272
                push    ebp
14273
                mov     ebp, esp
14274
                add     esp, 0FFFFFFD4h
14275
                and     esp, 0FFFFFFC0h
14276
                mov     eax, [edi]
14277
                mov     ebx, [edi+4]
14278
                mov     [esp+20h], esi
14279
                mov     [esp+24h], edi
14280
                mov     [esp+28h], ebp
14281
                mov     [esp], eax
14282
                mov     [esp+4], ebx
14283
                mov     ecx, [edi+8]
14284
                mov     edx, [edi+0Ch]
14285
                mov     [esp+8], ecx
14286
                mov     [esp+0Ch], edx
14287
                mov     eax, [edi+10h]
14288
                mov     ebx, [edi+14h]
14289
                mov     [esp+10h], eax
14290
                mov     [esp+14h], ebx
14291
                mov     ecx, [edi+18h]
14292
                mov     edx, [edi+1Ch]
14293
                mov     [esp+18h], ecx
14294
                mov     [esp+1Ch], edx
14295
                mov     eax, edx
14296
                mov     ebp, [esp+18h]
14297
                mov     ebx, [esp+4]
14298
                mov     ecx, [esp]
14299
                ror     eax, 0Bh
14300
                xor     ebx, ecx
14301
                mov     edi, [esp+8]
14302
                and     ebx, [esp+0Ch]
14303
                and     edi, [esp+10h]
14304
                xor     ecx, ebx
14305
                and     ebp, [esp+14h]
14306
                xor     edi, ecx
14307
                mov     edx, [esi]
14308
                xor     ebp, edi
14309
                add     eax, edx
14310
                ror     ebp, 7
14311
                add     ebp, eax
14312
                mov     eax, [esp+18h]
14313
                mov     [esp+1Ch], ebp
14314
                mov     ebp, [esp+14h]
14315
                mov     ebx, [esp]
14316
                mov     ecx, [esp+1Ch]
14317
                ror     eax, 0Bh
14318
                xor     ebx, ecx
14319
                mov     edi, [esp+4]
14320
                and     ebx, [esp+8]
14321
                and     edi, [esp+0Ch]
14322
                xor     ecx, ebx
14323
                and     ebp, [esp+10h]
14324
                xor     edi, ecx
14325
                mov     edx, [esi+4]
14326
                xor     ebp, edi
14327
                add     eax, edx
14328
                ror     ebp, 7
14329
                add     ebp, eax
14330
                mov     eax, [esp+14h]
14331
                mov     [esp+18h], ebp
14332
                mov     ebp, [esp+10h]
14333
                mov     ebx, [esp+1Ch]
14334
                mov     ecx, [esp+18h]
14335
                ror     eax, 0Bh
14336
                xor     ebx, ecx
14337
                mov     edi, [esp]
14338
                and     ebx, [esp+4]
14339
                and     edi, [esp+8]
14340
                xor     ecx, ebx
14341
                and     ebp, [esp+0Ch]
14342
                xor     edi, ecx
14343
                mov     edx, [esi+8]
14344
                xor     ebp, edi
14345
                add     eax, edx
14346
                ror     ebp, 7
14347
                add     ebp, eax
14348
                mov     eax, [esp+10h]
14349
                mov     [esp+14h], ebp
14350
                mov     ebp, [esp+0Ch]
14351
                mov     ebx, [esp+18h]
14352
                mov     ecx, [esp+14h]
14353
                ror     eax, 0Bh
14354
                xor     ebx, ecx
14355
                mov     edi, [esp+1Ch]
14356
                and     ebx, [esp]
14357
                and     edi, [esp+4]
14358
                xor     ecx, ebx
14359
                and     ebp, [esp+8]
14360
                xor     edi, ecx
14361
                mov     edx, [esi+0Ch]
14362
                xor     ebp, edi
14363
                add     eax, edx
14364
                ror     ebp, 7
14365
                add     ebp, eax
14366
                mov     eax, [esp+0Ch]
14367
                mov     [esp+10h], ebp
14368
                mov     ebp, [esp+8]
14369
                mov     ebx, [esp+14h]
14370
                mov     ecx, [esp+10h]
14371
                ror     eax, 0Bh
14372
                xor     ebx, ecx
14373
                mov     edi, [esp+18h]
14374
                and     ebx, [esp+1Ch]
14375
                and     edi, [esp]
14376
                xor     ecx, ebx
14377
                and     ebp, [esp+4]
14378
                xor     edi, ecx
14379
                mov     edx, [esi+10h]
14380
                xor     ebp, edi
14381
                add     eax, edx
14382
                ror     ebp, 7
14383
                add     ebp, eax
14384
                mov     eax, [esp+8]
14385
                mov     [esp+0Ch], ebp
14386
                mov     ebp, [esp+4]
14387
                mov     ebx, [esp+10h]
14388
                mov     ecx, [esp+0Ch]
14389
                ror     eax, 0Bh
14390
                xor     ebx, ecx
14391
                mov     edi, [esp+14h]
14392
                and     ebx, [esp+18h]
14393
                and     edi, [esp+1Ch]
14394
                xor     ecx, ebx
14395
                and     ebp, [esp]
14396
                xor     edi, ecx
14397
                mov     edx, [esi+14h]
14398
                xor     ebp, edi
14399
                add     eax, edx
14400
                ror     ebp, 7
14401
                add     ebp, eax
14402
                mov     eax, [esp+4]
14403
                mov     [esp+8], ebp
14404
                mov     ebp, [esp]
14405
                mov     ebx, [esp+0Ch]
14406
                mov     ecx, [esp+8]
14407
                ror     eax, 0Bh
14408
                xor     ebx, ecx
14409
                mov     edi, [esp+10h]
14410
                and     ebx, [esp+14h]
14411
                and     edi, [esp+18h]
14412
                xor     ecx, ebx
14413
                and     ebp, [esp+1Ch]
14414
                xor     edi, ecx
14415
                mov     edx, [esi+18h]
14416
                xor     ebp, edi
14417
                add     eax, edx
14418
                ror     ebp, 7
14419
                add     ebp, eax
14420
                mov     eax, [esp]
14421
                mov     [esp+4], ebp
14422
                mov     ebp, [esp+1Ch]
14423
                mov     ebx, [esp+8]
14424
                mov     ecx, [esp+4]
14425
                ror     eax, 0Bh
14426
                xor     ebx, ecx
14427
                mov     edi, [esp+0Ch]
14428
                and     ebx, [esp+10h]
14429
                and     edi, [esp+14h]
14430
                xor     ecx, ebx
14431
                and     ebp, [esp+18h]
14432
                xor     edi, ecx
14433
                mov     edx, [esi+1Ch]
14434
                xor     ebp, edi
14435
                add     eax, edx
14436
                ror     ebp, 7
14437
                add     ebp, eax
14438
                mov     eax, [esp+1Ch]
14439
                mov     [esp], ebp
14440
                mov     ebp, [esp+18h]
14441
                mov     ebx, [esp+4]
14442
                mov     ecx, [esp]
14443
                ror     eax, 0Bh
14444
                xor     ebx, ecx
14445
                mov     edi, [esp+8]
14446
                and     ebx, [esp+0Ch]
14447
                and     edi, [esp+10h]
14448
                xor     ecx, ebx
14449
                and     ebp, [esp+14h]
14450
                xor     edi, ecx
14451
                mov     edx, [esi+20h]
14452
                xor     ebp, edi
14453
                add     eax, edx
14454
                ror     ebp, 7
14455
                add     ebp, eax
14456
                mov     eax, [esp+18h]
14457
                mov     [esp+1Ch], ebp
14458
                mov     ebp, [esp+14h]
14459
                mov     ebx, [esp]
14460
                mov     ecx, [esp+1Ch]
14461
                ror     eax, 0Bh
14462
                xor     ebx, ecx
14463
                mov     edi, [esp+4]
14464
                and     ebx, [esp+8]
14465
                and     edi, [esp+0Ch]
14466
                xor     ecx, ebx
14467
                and     ebp, [esp+10h]
14468
                xor     edi, ecx
14469
                mov     edx, [esi+24h]
14470
                xor     ebp, edi
14471
                add     eax, edx
14472
                ror     ebp, 7
14473
                add     ebp, eax
14474
                mov     eax, [esp+14h]
14475
                mov     [esp+18h], ebp
14476
                mov     ebp, [esp+10h]
14477
                mov     ebx, [esp+1Ch]
14478
                mov     ecx, [esp+18h]
14479
                ror     eax, 0Bh
14480
                xor     ebx, ecx
14481
                mov     edi, [esp]
14482
                and     ebx, [esp+4]
14483
                and     edi, [esp+8]
14484
                xor     ecx, ebx
14485
                and     ebp, [esp+0Ch]
14486
                xor     edi, ecx
14487
                mov     edx, [esi+28h]
14488
                xor     ebp, edi
14489
                add     eax, edx
14490
                ror     ebp, 7
14491
                add     ebp, eax
14492
                mov     eax, [esp+10h]
14493
                mov     [esp+14h], ebp
14494
                mov     ebp, [esp+0Ch]
14495
                mov     ebx, [esp+18h]
14496
                mov     ecx, [esp+14h]
14497
                ror     eax, 0Bh
14498
                xor     ebx, ecx
14499
                mov     edi, [esp+1Ch]
14500
                and     ebx, [esp]
14501
                and     edi, [esp+4]
14502
                xor     ecx, ebx
14503
                and     ebp, [esp+8]
14504
                xor     edi, ecx
14505
                mov     edx, [esi+2Ch]
14506
                xor     ebp, edi
14507
                add     eax, edx
14508
                ror     ebp, 7
14509
                add     ebp, eax
14510
                mov     eax, [esp+0Ch]
14511
                mov     [esp+10h], ebp
14512
                mov     ebp, [esp+8]
14513
                mov     ebx, [esp+14h]
14514
                mov     ecx, [esp+10h]
14515
                ror     eax, 0Bh
14516
                xor     ebx, ecx
14517
                mov     edi, [esp+18h]
14518
                and     ebx, [esp+1Ch]
14519
                and     edi, [esp]
14520
                xor     ecx, ebx
14521
                and     ebp, [esp+4]
14522
                xor     edi, ecx
14523
                mov     edx, [esi+30h]
14524
                xor     ebp, edi
14525
                add     eax, edx
14526
                ror     ebp, 7
14527
                add     ebp, eax
14528
                mov     eax, [esp+8]
14529
                mov     [esp+0Ch], ebp
14530
                mov     ebp, [esp+4]
14531
                mov     ebx, [esp+10h]
14532
                mov     ecx, [esp+0Ch]
14533
                ror     eax, 0Bh
14534
                xor     ebx, ecx
14535
                mov     edi, [esp+14h]
14536
                and     ebx, [esp+18h]
14537
                and     edi, [esp+1Ch]
14538
                xor     ecx, ebx
14539
                and     ebp, [esp]
14540
                xor     edi, ecx
14541
                mov     edx, [esi+34h]
14542
                xor     ebp, edi
14543
                add     eax, edx
14544
                ror     ebp, 7
14545
                add     ebp, eax
14546
                mov     eax, [esp+4]
14547
                mov     [esp+8], ebp
14548
                mov     ebp, [esp]
14549
                mov     ebx, [esp+0Ch]
14550
                mov     ecx, [esp+8]
14551
                ror     eax, 0Bh
14552
                xor     ebx, ecx
14553
                mov     edi, [esp+10h]
14554
                and     ebx, [esp+14h]
14555
                and     edi, [esp+18h]
14556
                xor     ecx, ebx
14557
                and     ebp, [esp+1Ch]
14558
                xor     edi, ecx
14559
                mov     edx, [esi+38h]
14560
                xor     ebp, edi
14561
                add     eax, edx
14562
                ror     ebp, 7
14563
                add     ebp, eax
14564
                mov     eax, [esp]
14565
                mov     [esp+4], ebp
14566
                mov     ebp, [esp+1Ch]
14567
                mov     ebx, [esp+8]
14568
                mov     ecx, [esp+4]
14569
                ror     eax, 0Bh
14570
                xor     ebx, ecx
14571
                mov     edi, [esp+0Ch]
14572
                and     ebx, [esp+10h]
14573
                and     edi, [esp+14h]
14574
                xor     ecx, ebx
14575
                and     ebp, [esp+18h]
14576
                xor     edi, ecx
14577
                mov     edx, [esi+3Ch]
14578
                xor     ebp, edi
14579
                add     eax, edx
14580
                ror     ebp, 7
14581
                add     ebp, eax
14582
                mov     eax, [esp+1Ch]
14583
                mov     [esp], ebp
14584
                mov     ebp, [esp+18h]
14585
                mov     ebx, [esp+4]
14586
                mov     ecx, [esp]
14587
                ror     eax, 0Bh
14588
                xor     ebx, ecx
14589
                mov     edi, [esp+8]
14590
                and     ebx, [esp+0Ch]
14591
                and     edi, [esp+10h]
14592
                xor     ecx, ebx
14593
                and     ebp, [esp+14h]
14594
                xor     edi, ecx
14595
                mov     edx, [esi+40h]
14596
                xor     ebp, edi
14597
                add     eax, edx
14598
                ror     ebp, 7
14599
                add     ebp, eax
14600
                mov     eax, [esp+18h]
14601
                mov     [esp+1Ch], ebp
14602
                mov     ebp, [esp+14h]
14603
                mov     ebx, [esp]
14604
                mov     ecx, [esp+1Ch]
14605
                ror     eax, 0Bh
14606
                xor     ebx, ecx
14607
                mov     edi, [esp+4]
14608
                and     ebx, [esp+8]
14609
                and     edi, [esp+0Ch]
14610
                xor     ecx, ebx
14611
                and     ebp, [esp+10h]
14612
                xor     edi, ecx
14613
                mov     edx, [esi+44h]
14614
                xor     ebp, edi
14615
                add     eax, edx
14616
                ror     ebp, 7
14617
                add     ebp, eax
14618
                mov     eax, [esp+14h]
14619
                mov     [esp+18h], ebp
14620
                mov     ebp, [esp+10h]
14621
                mov     ebx, [esp+1Ch]
14622
                mov     ecx, [esp+18h]
14623
                ror     eax, 0Bh
14624
                xor     ebx, ecx
14625
                mov     edi, [esp]
14626
                and     ebx, [esp+4]
14627
                and     edi, [esp+8]
14628
                xor     ecx, ebx
14629
                and     ebp, [esp+0Ch]
14630
                xor     edi, ecx
14631
                mov     edx, [esi+48h]
14632
                xor     ebp, edi
14633
                add     eax, edx
14634
                ror     ebp, 7
14635
                add     ebp, eax
14636
                mov     eax, [esp+10h]
14637
                mov     [esp+14h], ebp
14638
                mov     ebp, [esp+0Ch]
14639
                mov     ebx, [esp+18h]
14640
                mov     ecx, [esp+14h]
14641
                ror     eax, 0Bh
14642
                xor     ebx, ecx
14643
                mov     edi, [esp+1Ch]
14644
                and     ebx, [esp]
14645
                and     edi, [esp+4]
14646
                xor     ecx, ebx
14647
                and     ebp, [esp+8]
14648
                xor     edi, ecx
14649
                mov     edx, [esi+4Ch]
14650
                xor     ebp, edi
14651
                add     eax, edx
14652
                ror     ebp, 7
14653
                add     ebp, eax
14654
                mov     eax, [esp+0Ch]
14655
                mov     [esp+10h], ebp
14656
                mov     ebp, [esp+8]
14657
                mov     ebx, [esp+14h]
14658
                mov     ecx, [esp+10h]
14659
                ror     eax, 0Bh
14660
                xor     ebx, ecx
14661
                mov     edi, [esp+18h]
14662
                and     ebx, [esp+1Ch]
14663
                and     edi, [esp]
14664
                xor     ecx, ebx
14665
                and     ebp, [esp+4]
14666
                xor     edi, ecx
14667
                mov     edx, [esi+50h]
14668
                xor     ebp, edi
14669
                add     eax, edx
14670
                ror     ebp, 7
14671
                add     ebp, eax
14672
                mov     eax, [esp+8]
14673
                mov     [esp+0Ch], ebp
14674
                mov     ebp, [esp+4]
14675
                mov     ebx, [esp+10h]
14676
                mov     ecx, [esp+0Ch]
14677
                ror     eax, 0Bh
14678
                xor     ebx, ecx
14679
                mov     edi, [esp+14h]
14680
                and     ebx, [esp+18h]
14681
                and     edi, [esp+1Ch]
14682
                xor     ecx, ebx
14683
                and     ebp, [esp]
14684
                xor     edi, ecx
14685
                mov     edx, [esi+54h]
14686
                xor     ebp, edi
14687
                add     eax, edx
14688
                ror     ebp, 7
14689
                add     ebp, eax
14690
                mov     eax, [esp+4]
14691
                mov     [esp+8], ebp
14692
                mov     ebp, [esp]
14693
                mov     ebx, [esp+0Ch]
14694
                mov     ecx, [esp+8]
14695
                ror     eax, 0Bh
14696
                xor     ebx, ecx
14697
                mov     edi, [esp+10h]
14698
                and     ebx, [esp+14h]
14699
                and     edi, [esp+18h]
14700
                xor     ecx, ebx
14701
                and     ebp, [esp+1Ch]
14702
                xor     edi, ecx
14703
                mov     edx, [esi+58h]
14704
                xor     ebp, edi
14705
                add     eax, edx
14706
                ror     ebp, 7
14707
                add     ebp, eax
14708
                mov     eax, [esp]
14709
                mov     [esp+4], ebp
14710
                mov     ebp, [esp+1Ch]
14711
                mov     ebx, [esp+8]
14712
                mov     ecx, [esp+4]
14713
                ror     eax, 0Bh
14714
                xor     ebx, ecx
14715
                mov     edi, [esp+0Ch]
14716
                and     ebx, [esp+10h]
14717
                and     edi, [esp+14h]
14718
                xor     ecx, ebx
14719
                and     ebp, [esp+18h]
14720
                xor     edi, ecx
14721
                mov     edx, [esi+5Ch]
14722
                xor     ebp, edi
14723
                add     eax, edx
14724
                ror     ebp, 7
14725
                add     ebp, eax
14726
                mov     eax, [esp+1Ch]
14727
                mov     [esp], ebp
14728
                mov     ebp, [esp+18h]
14729
                mov     ebx, [esp+4]
14730
                mov     ecx, [esp]
14731
                ror     eax, 0Bh
14732
                xor     ebx, ecx
14733
                mov     edi, [esp+8]
14734
                and     ebx, [esp+0Ch]
14735
                and     edi, [esp+10h]
14736
                xor     ecx, ebx
14737
                and     ebp, [esp+14h]
14738
                xor     edi, ecx
14739
                mov     edx, [esi+60h]
14740
                xor     ebp, edi
14741
                add     eax, edx
14742
                ror     ebp, 7
14743
                add     ebp, eax
14744
                mov     eax, [esp+18h]
14745
                mov     [esp+1Ch], ebp
14746
                mov     ebp, [esp+14h]
14747
                mov     ebx, [esp]
14748
                mov     ecx, [esp+1Ch]
14749
                ror     eax, 0Bh
14750
                xor     ebx, ecx
14751
                mov     edi, [esp+4]
14752
                and     ebx, [esp+8]
14753
                and     edi, [esp+0Ch]
14754
                xor     ecx, ebx
14755
                and     ebp, [esp+10h]
14756
                xor     edi, ecx
14757
                mov     edx, [esi+64h]
14758
                xor     ebp, edi
14759
                add     eax, edx
14760
                ror     ebp, 7
14761
                add     ebp, eax
14762
                mov     eax, [esp+14h]
14763
                mov     [esp+18h], ebp
14764
                mov     ebp, [esp+10h]
14765
                mov     ebx, [esp+1Ch]
14766
                mov     ecx, [esp+18h]
14767
                ror     eax, 0Bh
14768
                xor     ebx, ecx
14769
                mov     edi, [esp]
14770
                and     ebx, [esp+4]
14771
                and     edi, [esp+8]
14772
                xor     ecx, ebx
14773
                and     ebp, [esp+0Ch]
14774
                xor     edi, ecx
14775
                mov     edx, [esi+68h]
14776
                xor     ebp, edi
14777
                add     eax, edx
14778
                ror     ebp, 7
14779
                add     ebp, eax
14780
                mov     eax, [esp+10h]
14781
                mov     [esp+14h], ebp
14782
                mov     ebp, [esp+0Ch]
14783
                mov     ebx, [esp+18h]
14784
                mov     ecx, [esp+14h]
14785
                ror     eax, 0Bh
14786
                xor     ebx, ecx
14787
                mov     edi, [esp+1Ch]
14788
                and     ebx, [esp]
14789
                and     edi, [esp+4]
14790
                xor     ecx, ebx
14791
                and     ebp, [esp+8]
14792
                xor     edi, ecx
14793
                mov     edx, [esi+6Ch]
14794
                xor     ebp, edi
14795
                add     eax, edx
14796
                ror     ebp, 7
14797
                add     ebp, eax
14798
                mov     eax, [esp+0Ch]
14799
                mov     [esp+10h], ebp
14800
                mov     ebp, [esp+8]
14801
                mov     ebx, [esp+14h]
14802
                mov     ecx, [esp+10h]
14803
                ror     eax, 0Bh
14804
                xor     ebx, ecx
14805
                mov     edi, [esp+18h]
14806
                and     ebx, [esp+1Ch]
14807
                and     edi, [esp]
14808
                xor     ecx, ebx
14809
                and     ebp, [esp+4]
14810
                xor     edi, ecx
14811
                mov     edx, [esi+70h]
14812
                xor     ebp, edi
14813
                add     eax, edx
14814
                ror     ebp, 7
14815
                add     ebp, eax
14816
                mov     eax, [esp+8]
14817
                mov     [esp+0Ch], ebp
14818
                mov     ebp, [esp+4]
14819
                mov     ebx, [esp+10h]
14820
                mov     ecx, [esp+0Ch]
14821
                ror     eax, 0Bh
14822
                xor     ebx, ecx
14823
                mov     edi, [esp+14h]
14824
                and     ebx, [esp+18h]
14825
                and     edi, [esp+1Ch]
14826
                xor     ecx, ebx
14827
                and     ebp, [esp]
14828
                xor     edi, ecx
14829
                mov     edx, [esi+74h]
14830
                xor     ebp, edi
14831
                add     eax, edx
14832
                ror     ebp, 7
14833
                add     ebp, eax
14834
                mov     eax, [esp+4]
14835
                mov     [esp+8], ebp
14836
                mov     ebp, [esp]
14837
                mov     ebx, [esp+0Ch]
14838
                mov     ecx, [esp+8]
14839
                ror     eax, 0Bh
14840
                xor     ebx, ecx
14841
                mov     edi, [esp+10h]
14842
                and     ebx, [esp+14h]
14843
                and     edi, [esp+18h]
14844
                xor     ecx, ebx
14845
                and     ebp, [esp+1Ch]
14846
                xor     edi, ecx
14847
                mov     edx, [esi+78h]
14848
                xor     ebp, edi
14849
                add     eax, edx
14850
                ror     ebp, 7
14851
                add     ebp, eax
14852
                mov     eax, [esp]
14853
                mov     [esp+4], ebp
14854
                mov     ebp, [esp+1Ch]
14855
                mov     ebx, [esp+8]
14856
                mov     ecx, [esp+4]
14857
                ror     eax, 0Bh
14858
                xor     ebx, ecx
14859
                mov     edi, [esp+0Ch]
14860
                and     ebx, [esp+10h]
14861
                and     edi, [esp+14h]
14862
                xor     ecx, ebx
14863
                and     ebp, [esp+18h]
14864
                xor     edi, ecx
14865
                mov     edx, [esi+7Ch]
14866
                xor     ebp, edi
14867
                add     eax, edx
14868
                ror     ebp, 7
14869
                add     ebp, eax
14870
                mov     eax, [esp+1Ch]
14871
                mov     [esp], ebp
14872
                mov     ebp, [esp]
14873
                mov     ebx, [esp+8]
14874
                mov     edi, [esp+14h]
14875
                xor     ebp, 0FFFFFFFFh
14876
                mov     ecx, [esp+18h]
14877
                and     ebx, edi
14878
                mov     edx, [esp+10h]
14879
                and     ebp, ecx
14880
                xor     ebx, [esp+0Ch]
14881
                xor     ebp, edx
14882
                xor     ecx, edi
14883
                xor     ebx, ebp
14884
                and     ecx, [esp+8]
14885
                and     ebx, [esp+4]
14886
                ror     eax, 0Bh
14887
                xor     ecx, edx
14888
                mov     ebp, [esi+14h]
14889
                xor     ecx, ebx
14890
                and     edi, [esp]
14891
                xor     ecx, edi
14892
                lea     ebp, [eax+ebp+452821E6h]
14893
                ror     ecx, 7
14894
                add     ebp, ecx
14895
                mov     eax, [esp+18h]
14896
                mov     [esp+1Ch], ebp
14897
                mov     ebx, [esp+4]
14898
                mov     edi, [esp+10h]
14899
                xor     ebp, 0FFFFFFFFh
14900
                mov     ecx, [esp+14h]
14901
                and     ebx, edi
14902
                mov     edx, [esp+0Ch]
14903
                and     ebp, ecx
14904
                xor     ebx, [esp+8]
14905
                xor     ebp, edx
14906
                xor     ecx, edi
14907
                xor     ebx, ebp
14908
                and     ecx, [esp+4]
14909
                and     ebx, [esp]
14910
                ror     eax, 0Bh
14911
                xor     ecx, edx
14912
                mov     ebp, [esi+38h]
14913
                xor     ecx, ebx
14914
                and     edi, [esp+1Ch]
14915
                xor     ecx, edi
14916
                lea     ebp, [eax+ebp+38D01377h]
14917
                ror     ecx, 7
14918
                add     ebp, ecx
14919
                mov     eax, [esp+14h]
14920
                mov     [esp+18h], ebp
14921
                mov     ebx, [esp]
14922
                mov     edi, [esp+0Ch]
14923
                xor     ebp, 0FFFFFFFFh
14924
                mov     ecx, [esp+10h]
14925
                and     ebx, edi
14926
                mov     edx, [esp+8]
14927
                and     ebp, ecx
14928
                xor     ebx, [esp+4]
14929
                xor     ebp, edx
14930
                xor     ecx, edi
14931
                xor     ebx, ebp
14932
                and     ecx, [esp]
14933
                and     ebx, [esp+1Ch]
14934
                ror     eax, 0Bh
14935
                xor     ecx, edx
14936
                mov     ebp, [esi+68h]
14937
                xor     ecx, ebx
14938
                and     edi, [esp+18h]
14939
                xor     ecx, edi
14940
                lea     ebp, [eax+ebp-41AB9931h]
14941
                ror     ecx, 7
14942
                add     ebp, ecx
14943
                mov     eax, [esp+10h]
14944
                mov     [esp+14h], ebp
14945
                mov     ebx, [esp+1Ch]
14946
                mov     edi, [esp+8]
14947
                xor     ebp, 0FFFFFFFFh
14948
                mov     ecx, [esp+0Ch]
14949
                and     ebx, edi
14950
                mov     edx, [esp+4]
14951
                and     ebp, ecx
14952
                xor     ebx, [esp]
14953
                xor     ebp, edx
14954
                xor     ecx, edi
14955
                xor     ebx, ebp
14956
                and     ecx, [esp+1Ch]
14957
                and     ebx, [esp+18h]
14958
                ror     eax, 0Bh
14959
                xor     ecx, edx
14960
                mov     ebp, [esi+48h]
14961
                xor     ecx, ebx
14962
                and     edi, [esp+14h]
14963
                xor     ecx, edi
14964
                lea     ebp, [eax+ebp+34E90C6Ch]
14965
                ror     ecx, 7
14966
                add     ebp, ecx
14967
                mov     eax, [esp+0Ch]
14968
                mov     [esp+10h], ebp
14969
                mov     ebx, [esp+18h]
14970
                mov     edi, [esp+4]
14971
                xor     ebp, 0FFFFFFFFh
14972
                mov     ecx, [esp+8]
14973
                and     ebx, edi
14974
                mov     edx, [esp]
14975
                and     ebp, ecx
14976
                xor     ebx, [esp+1Ch]
14977
                xor     ebp, edx
14978
                xor     ecx, edi
14979
                xor     ebx, ebp
14980
                and     ecx, [esp+18h]
14981
                and     ebx, [esp+14h]
14982
                ror     eax, 0Bh
14983
                xor     ecx, edx
14984
                mov     ebp, [esi+2Ch]
14985
                xor     ecx, ebx
14986
                and     edi, [esp+10h]
14987
                xor     ecx, edi
14988
                lea     ebp, [eax+ebp-3F53D649h]
14989
                ror     ecx, 7
14990
                add     ebp, ecx
14991
                mov     eax, [esp+8]
14992
                mov     [esp+0Ch], ebp
14993
                mov     ebx, [esp+14h]
14994
                mov     edi, [esp]
14995
                xor     ebp, 0FFFFFFFFh
14996
                mov     ecx, [esp+4]
14997
                and     ebx, edi
14998
                mov     edx, [esp+1Ch]
14999
                and     ebp, ecx
15000
                xor     ebx, [esp+18h]
15001
                xor     ebp, edx
15002
                xor     ecx, edi
15003
                xor     ebx, ebp
15004
                and     ecx, [esp+14h]
15005
                and     ebx, [esp+10h]
15006
                ror     eax, 0Bh
15007
                xor     ecx, edx
15008
                mov     ebp, [esi+70h]
15009
                xor     ecx, ebx
15010
                and     edi, [esp+0Ch]
15011
                xor     ecx, edi
15012
                lea     ebp, [eax+ebp-3683AF23h]
15013
                ror     ecx, 7
15014
                add     ebp, ecx
15015
                mov     eax, [esp+4]
15016
                mov     [esp+8], ebp
15017
                mov     ebx, [esp+10h]
15018
                mov     edi, [esp+1Ch]
15019
                xor     ebp, 0FFFFFFFFh
15020
                mov     ecx, [esp]
15021
                and     ebx, edi
15022
                mov     edx, [esp+18h]
15023
                and     ebp, ecx
15024
                xor     ebx, [esp+14h]
15025
                xor     ebp, edx
15026
                xor     ecx, edi
15027
                xor     ebx, ebp
15028
                and     ecx, [esp+10h]
15029
                and     ebx, [esp+0Ch]
15030
                ror     eax, 0Bh
15031
                xor     ecx, edx
15032
                mov     ebp, [esi+1Ch]
15033
                xor     ecx, ebx
15034
                and     edi, [esp+8]
15035
                xor     ecx, edi
15036
                lea     ebp, [eax+ebp+3F84D5B5h]
15037
                ror     ecx, 7
15038
                add     ebp, ecx
15039
                mov     eax, [esp]
15040
                mov     [esp+4], ebp
15041
                mov     ebx, [esp+0Ch]
15042
                mov     edi, [esp+18h]
15043
                xor     ebp, 0FFFFFFFFh
15044
                mov     ecx, [esp+1Ch]
15045
                and     ebx, edi
15046
                mov     edx, [esp+14h]
15047
                and     ebp, ecx
15048
                xor     ebx, [esp+10h]
15049
                xor     ebp, edx
15050
                xor     ecx, edi
15051
                xor     ebx, ebp
15052
                and     ecx, [esp+0Ch]
15053
                and     ebx, [esp+8]
15054
                ror     eax, 0Bh
15055
                xor     ecx, edx
15056
                mov     ebp, [esi+40h]
15057
                xor     ecx, ebx
15058
                and     edi, [esp+4]
15059
                xor     ecx, edi
15060
                lea     ebp, [eax+ebp-4AB8F6E9h]
15061
                ror     ecx, 7
15062
                add     ebp, ecx
15063
                mov     eax, [esp+1Ch]
15064
                mov     [esp], ebp
15065
                mov     ebx, [esp+8]
15066
                mov     edi, [esp+14h]
15067
                xor     ebp, 0FFFFFFFFh
15068
                mov     ecx, [esp+18h]
15069
                and     ebx, edi
15070
                mov     edx, [esp+10h]
15071
                and     ebp, ecx
15072
                xor     ebx, [esp+0Ch]
15073
                xor     ebp, edx
15074
                xor     ecx, edi
15075
                xor     ebx, ebp
15076
                and     ecx, [esp+8]
15077
                and     ebx, [esp+4]
15078
                ror     eax, 0Bh
15079
                xor     ecx, edx
15080
                mov     ebp, [esi]
15081
                xor     ecx, ebx
15082
                and     edi, [esp]
15083
                xor     ecx, edi
15084
                lea     ebp, [eax+ebp-6DE92A27h]
15085
                ror     ecx, 7
15086
                add     ebp, ecx
15087
                mov     eax, [esp+18h]
15088
                mov     [esp+1Ch], ebp
15089
                mov     ebx, [esp+4]
15090
                mov     edi, [esp+10h]
15091
                xor     ebp, 0FFFFFFFFh
15092
                mov     ecx, [esp+14h]
15093
                and     ebx, edi
15094
                mov     edx, [esp+0Ch]
15095
                and     ebp, ecx
15096
                xor     ebx, [esp+8]
15097
                xor     ebp, edx
15098
                xor     ecx, edi
15099
                xor     ebx, ebp
15100
                and     ecx, [esp+4]
15101
                and     ebx, [esp]
15102
                ror     eax, 0Bh
15103
                xor     ecx, edx
15104
                mov     ebp, [esi+5Ch]
15105
                xor     ecx, ebx
15106
                and     edi, [esp+1Ch]
15107
                xor     ecx, edi
15108
                lea     ebp, [eax+ebp-768604E5h]
15109
                ror     ecx, 7
15110
                add     ebp, ecx
15111
                mov     eax, [esp+14h]
15112
                mov     [esp+18h], ebp
15113
                mov     ebx, [esp]
15114
                mov     edi, [esp+0Ch]
15115
                xor     ebp, 0FFFFFFFFh
15116
                mov     ecx, [esp+10h]
15117
                and     ebx, edi
15118
                mov     edx, [esp+8]
15119
                and     ebp, ecx
15120
                xor     ebx, [esp+4]
15121
                xor     ebp, edx
15122
                xor     ecx, edi
15123
                xor     ebx, ebp
15124
                and     ecx, [esp]
15125
                and     ebx, [esp+1Ch]
15126
                ror     eax, 0Bh
15127
                xor     ecx, edx
15128
                mov     ebp, [esi+50h]
15129
                xor     ecx, ebx
15130
                and     edi, [esp+18h]
15131
                xor     ecx, edi
15132
                lea     ebp, [eax+ebp-2ECEF45Ah]
15133
                ror     ecx, 7
15134
                add     ebp, ecx
15135
                mov     eax, [esp+10h]
15136
                mov     [esp+14h], ebp
15137
                mov     ebx, [esp+1Ch]
15138
                mov     edi, [esp+8]
15139
                xor     ebp, 0FFFFFFFFh
15140
                mov     ecx, [esp+0Ch]
15141
                and     ebx, edi
15142
                mov     edx, [esp+4]
15143
                and     ebp, ecx
15144
                xor     ebx, [esp]
15145
                xor     ebp, edx
15146
                xor     ecx, edi
15147
                xor     ebx, ebp
15148
                and     ecx, [esp+1Ch]
15149
                and     ebx, [esp+18h]
15150
                ror     eax, 0Bh
15151
                xor     ecx, edx
15152
                mov     ebp, [esi+58h]
15153
                xor     ecx, ebx
15154
                and     edi, [esp+14h]
15155
                xor     ecx, edi
15156
                lea     ebp, [eax+ebp-67204A54h]
15157
                ror     ecx, 7
15158
                add     ebp, ecx
15159
                mov     eax, [esp+0Ch]
15160
                mov     [esp+10h], ebp
15161
                mov     ebx, [esp+18h]
15162
                mov     edi, [esp+4]
15163
                xor     ebp, 0FFFFFFFFh
15164
                mov     ecx, [esp+8]
15165
                and     ebx, edi
15166
                mov     edx, [esp]
15167
                and     ebp, ecx
15168
                xor     ebx, [esp+1Ch]
15169
                xor     ebp, edx
15170
                xor     ecx, edi
15171
                xor     ebx, ebp
15172
                and     ecx, [esp+18h]
15173
                and     ebx, [esp+14h]
15174
                ror     eax, 0Bh
15175
                xor     ecx, edx
15176
                mov     ebp, [esi+4]
15177
                xor     ecx, ebx
15178
                and     edi, [esp+10h]
15179
                xor     ecx, edi
15180
                lea     ebp, [eax+ebp+2FFD72DBh]
15181
                ror     ecx, 7
15182
                add     ebp, ecx
15183
                mov     eax, [esp+8]
15184
                mov     [esp+0Ch], ebp
15185
                mov     ebx, [esp+14h]
15186
                mov     edi, [esp]
15187
                xor     ebp, 0FFFFFFFFh
15188
                mov     ecx, [esp+4]
15189
                and     ebx, edi
15190
                mov     edx, [esp+1Ch]
15191
                and     ebp, ecx
15192
                xor     ebx, [esp+18h]
15193
                xor     ebp, edx
15194
                xor     ecx, edi
15195
                xor     ebx, ebp
15196
                and     ecx, [esp+14h]
15197
                and     ebx, [esp+10h]
15198
                ror     eax, 0Bh
15199
                xor     ecx, edx
15200
                mov     ebp, [esi+28h]
15201
                xor     ecx, ebx
15202
                and     edi, [esp+0Ch]
15203
                xor     ecx, edi
15204
                lea     ebp, [eax+ebp-2FE52049h]
15205
                ror     ecx, 7
15206
                add     ebp, ecx
15207
                mov     eax, [esp+4]
15208
                mov     [esp+8], ebp
15209
                mov     ebx, [esp+10h]
15210
                mov     edi, [esp+1Ch]
15211
                xor     ebp, 0FFFFFFFFh
15212
                mov     ecx, [esp]
15213
                and     ebx, edi
15214
                mov     edx, [esp+18h]
15215
                and     ebp, ecx
15216
                xor     ebx, [esp+14h]
15217
                xor     ebp, edx
15218
                xor     ecx, edi
15219
                xor     ebx, ebp
15220
                and     ecx, [esp+10h]
15221
                and     ebx, [esp+0Ch]
15222
                ror     eax, 0Bh
15223
                xor     ecx, edx
15224
                mov     ebp, [esi+10h]
15225
                xor     ecx, ebx
15226
                and     edi, [esp+8]
15227
                xor     ecx, edi
15228
                lea     ebp, [eax+ebp-471E5013h]
15229
                ror     ecx, 7
15230
                add     ebp, ecx
15231
                mov     eax, [esp]
15232
                mov     [esp+4], ebp
15233
                mov     ebx, [esp+0Ch]
15234
                mov     edi, [esp+18h]
15235
                xor     ebp, 0FFFFFFFFh
15236
                mov     ecx, [esp+1Ch]
15237
                and     ebx, edi
15238
                mov     edx, [esp+14h]
15239
                and     ebp, ecx
15240
                xor     ebx, [esp+10h]
15241
                xor     ebp, edx
15242
                xor     ecx, edi
15243
                xor     ebx, ebp
15244
                and     ecx, [esp+0Ch]
15245
                and     ebx, [esp+8]
15246
                ror     eax, 0Bh
15247
                xor     ecx, edx
15248
                mov     ebp, [esi+20h]
15249
                xor     ecx, ebx
15250
                and     edi, [esp+4]
15251
                xor     ecx, edi
15252
                lea     ebp, [eax+ebp+6A267E96h]
15253
                ror     ecx, 7
15254
                add     ebp, ecx
15255
                mov     eax, [esp+1Ch]
15256
                mov     [esp], ebp
15257
                mov     ebx, [esp+8]
15258
                mov     edi, [esp+14h]
15259
                xor     ebp, 0FFFFFFFFh
15260
                mov     ecx, [esp+18h]
15261
                and     ebx, edi
15262
                mov     edx, [esp+10h]
15263
                and     ebp, ecx
15264
                xor     ebx, [esp+0Ch]
15265
                xor     ebp, edx
15266
                xor     ecx, edi
15267
                xor     ebx, ebp
15268
                and     ecx, [esp+8]
15269
                and     ebx, [esp+4]
15270
                ror     eax, 0Bh
15271
                xor     ecx, edx
15272
                mov     ebp, [esi+78h]
15273
                xor     ecx, ebx
15274
                and     edi, [esp]
15275
                xor     ecx, edi
15276
                lea     ebp, [eax+ebp-45836FBBh]
15277
                ror     ecx, 7
15278
                add     ebp, ecx
15279
                mov     eax, [esp+18h]
15280
                mov     [esp+1Ch], ebp
15281
                mov     ebx, [esp+4]
15282
                mov     edi, [esp+10h]
15283
                xor     ebp, 0FFFFFFFFh
15284
                mov     ecx, [esp+14h]
15285
                and     ebx, edi
15286
                mov     edx, [esp+0Ch]
15287
                and     ebp, ecx
15288
                xor     ebx, [esp+8]
15289
                xor     ebp, edx
15290
                xor     ecx, edi
15291
                xor     ebx, ebp
15292
                and     ecx, [esp+4]
15293
                and     ebx, [esp]
15294
                ror     eax, 0Bh
15295
                xor     ecx, edx
15296
                mov     ebp, [esi+0Ch]
15297
                xor     ecx, ebx
15298
                and     edi, [esp+1Ch]
15299
                xor     ecx, edi
15300
                lea     ebp, [eax+ebp-0ED38067h]
15301
                ror     ecx, 7
15302
                add     ebp, ecx
15303
                mov     eax, [esp+14h]
15304
                mov     [esp+18h], ebp
15305
                mov     ebx, [esp]
15306
                mov     edi, [esp+0Ch]
15307
                xor     ebp, 0FFFFFFFFh
15308
                mov     ecx, [esp+10h]
15309
                and     ebx, edi
15310
                mov     edx, [esp+8]
15311
                and     ebp, ecx
15312
                xor     ebx, [esp+4]
15313
                xor     ebp, edx
15314
                xor     ecx, edi
15315
                xor     ebx, ebp
15316
                and     ecx, [esp]
15317
                and     ebx, [esp+1Ch]
15318
                ror     eax, 0Bh
15319
                xor     ecx, edx
15320
                mov     ebp, [esi+54h]
15321
                xor     ecx, ebx
15322
                and     edi, [esp+18h]
15323
                xor     ecx, edi
15324
                lea     ebp, [eax+ebp+24A19947h]
15325
                ror     ecx, 7
15326
                add     ebp, ecx
15327
                mov     eax, [esp+10h]
15328
                mov     [esp+14h], ebp
15329
                mov     ebx, [esp+1Ch]
15330
                mov     edi, [esp+8]
15331
                xor     ebp, 0FFFFFFFFh
15332
                mov     ecx, [esp+0Ch]
15333
                and     ebx, edi
15334
                mov     edx, [esp+4]
15335
                and     ebp, ecx
15336
                xor     ebx, [esp]
15337
                xor     ebp, edx
15338
                xor     ecx, edi
15339
                xor     ebx, ebp
15340
                and     ecx, [esp+1Ch]
15341
                and     ebx, [esp+18h]
15342
                ror     eax, 0Bh
15343
                xor     ecx, edx
15344
                mov     ebp, [esi+24h]
15345
                xor     ecx, ebx
15346
                and     edi, [esp+14h]
15347
                xor     ecx, edi
15348
                lea     ebp, [eax+ebp-4C6E9309h]
15349
                ror     ecx, 7
15350
                add     ebp, ecx
15351
                mov     eax, [esp+0Ch]
15352
                mov     [esp+10h], ebp
15353
                mov     ebx, [esp+18h]
15354
                mov     edi, [esp+4]
15355
                xor     ebp, 0FFFFFFFFh
15356
                mov     ecx, [esp+8]
15357
                and     ebx, edi
15358
                mov     edx, [esp]
15359
                and     ebp, ecx
15360
                xor     ebx, [esp+1Ch]
15361
                xor     ebp, edx
15362
                xor     ecx, edi
15363
                xor     ebx, ebp
15364
                and     ecx, [esp+18h]
15365
                and     ebx, [esp+14h]
15366
                ror     eax, 0Bh
15367
                xor     ecx, edx
15368
                mov     ebp, [esi+44h]
15369
                xor     ecx, ebx
15370
                and     edi, [esp+10h]
15371
                xor     ecx, edi
15372
                lea     ebp, [eax+ebp+801F2E2h]
15373
                ror     ecx, 7
15374
                add     ebp, ecx
15375
                mov     eax, [esp+8]
15376
                mov     [esp+0Ch], ebp
15377
                mov     ebx, [esp+14h]
15378
                mov     edi, [esp]
15379
                xor     ebp, 0FFFFFFFFh
15380
                mov     ecx, [esp+4]
15381
                and     ebx, edi
15382
                mov     edx, [esp+1Ch]
15383
                and     ebp, ecx
15384
                xor     ebx, [esp+18h]
15385
                xor     ebp, edx
15386
                xor     ecx, edi
15387
                xor     ebx, ebp
15388
                and     ecx, [esp+14h]
15389
                and     ebx, [esp+10h]
15390
                ror     eax, 0Bh
15391
                xor     ecx, edx
15392
                mov     ebp, [esi+60h]
15393
                xor     ecx, ebx
15394
                and     edi, [esp+0Ch]
15395
                xor     ecx, edi
15396
                lea     ebp, [eax+ebp-7A7103EAh]
15397
                ror     ecx, 7
15398
                add     ebp, ecx
15399
                mov     eax, [esp+4]
15400
                mov     [esp+8], ebp
15401
                mov     ebx, [esp+10h]
15402
                mov     edi, [esp+1Ch]
15403
                xor     ebp, 0FFFFFFFFh
15404
                mov     ecx, [esp]
15405
                and     ebx, edi
15406
                mov     edx, [esp+18h]
15407
                and     ebp, ecx
15408
                xor     ebx, [esp+14h]
15409
                xor     ebp, edx
15410
                xor     ecx, edi
15411
                xor     ebx, ebp
15412
                and     ecx, [esp+10h]
15413
                and     ebx, [esp+0Ch]
15414
                ror     eax, 0Bh
15415
                xor     ecx, edx
15416
                mov     ebp, [esi+74h]
15417
                xor     ecx, ebx
15418
                and     edi, [esp+8]
15419
                xor     ecx, edi
15420
                lea     ebp, [eax+ebp+636920D8h]
15421
                ror     ecx, 7
15422
                add     ebp, ecx
15423
                mov     eax, [esp]
15424
                mov     [esp+4], ebp
15425
                mov     ebx, [esp+0Ch]
15426
                mov     edi, [esp+18h]
15427
                xor     ebp, 0FFFFFFFFh
15428
                mov     ecx, [esp+1Ch]
15429
                and     ebx, edi
15430
                mov     edx, [esp+14h]
15431
                and     ebp, ecx
15432
                xor     ebx, [esp+10h]
15433
                xor     ebp, edx
15434
                xor     ecx, edi
15435
                xor     ebx, ebp
15436
                and     ecx, [esp+0Ch]
15437
                and     ebx, [esp+8]
15438
                ror     eax, 0Bh
15439
                xor     ecx, edx
15440
                mov     ebp, [esi+18h]
15441
                xor     ecx, ebx
15442
                and     edi, [esp+4]
15443
                xor     ecx, edi
15444
                lea     ebp, [eax+ebp+71574E69h]
15445
                ror     ecx, 7
15446
                add     ebp, ecx
15447
                mov     eax, [esp+1Ch]
15448
                mov     [esp], ebp
15449
                mov     ebx, [esp+8]
15450
                mov     edi, [esp+14h]
15451
                xor     ebp, 0FFFFFFFFh
15452
                mov     ecx, [esp+18h]
15453
                and     ebx, edi
15454
                mov     edx, [esp+10h]
15455
                and     ebp, ecx
15456
                xor     ebx, [esp+0Ch]
15457
                xor     ebp, edx
15458
                xor     ecx, edi
15459
                xor     ebx, ebp
15460
                and     ecx, [esp+8]
15461
                and     ebx, [esp+4]
15462
                ror     eax, 0Bh
15463
                xor     ecx, edx
15464
                mov     ebp, [esi+4Ch]
15465
                xor     ecx, ebx
15466
                and     edi, [esp]
15467
                xor     ecx, edi
15468
                lea     ebp, [eax+ebp-5BA7015Dh]
15469
                ror     ecx, 7
15470
                add     ebp, ecx
15471
                mov     eax, [esp+18h]
15472
                mov     [esp+1Ch], ebp
15473
                mov     ebx, [esp+4]
15474
                mov     edi, [esp+10h]
15475
                xor     ebp, 0FFFFFFFFh
15476
                mov     ecx, [esp+14h]
15477
                and     ebx, edi
15478
                mov     edx, [esp+0Ch]
15479
                and     ebp, ecx
15480
                xor     ebx, [esp+8]
15481
                xor     ebp, edx
15482
                xor     ecx, edi
15483
                xor     ebx, ebp
15484
                and     ecx, [esp+4]
15485
                and     ebx, [esp]
15486
                ror     eax, 0Bh
15487
                xor     ecx, edx
15488
                mov     ebp, [esi+30h]
15489
                xor     ecx, ebx
15490
                and     edi, [esp+1Ch]
15491
                xor     ecx, edi
15492
                lea     ebp, [eax+ebp-0B6CC282h]
15493
                ror     ecx, 7
15494
                add     ebp, ecx
15495
                mov     eax, [esp+14h]
15496
                mov     [esp+18h], ebp
15497
                mov     ebx, [esp]
15498
                mov     edi, [esp+0Ch]
15499
                xor     ebp, 0FFFFFFFFh
15500
                mov     ecx, [esp+10h]
15501
                and     ebx, edi
15502
                mov     edx, [esp+8]
15503
                and     ebp, ecx
15504
                xor     ebx, [esp+4]
15505
                xor     ebp, edx
15506
                xor     ecx, edi
15507
                xor     ebx, ebp
15508
                and     ecx, [esp]
15509
                and     ebx, [esp+1Ch]
15510
                ror     eax, 0Bh
15511
                xor     ecx, edx
15512
                mov     ebp, [esi+3Ch]
15513
                xor     ecx, ebx
15514
                and     edi, [esp+18h]
15515
                xor     ecx, edi
15516
                lea     ebp, [eax+ebp+0D95748Fh]
15517
                ror     ecx, 7
15518
                add     ebp, ecx
15519
                mov     eax, [esp+10h]
15520
                mov     [esp+14h], ebp
15521
                mov     ebx, [esp+1Ch]
15522
                mov     edi, [esp+8]
15523
                xor     ebp, 0FFFFFFFFh
15524
                mov     ecx, [esp+0Ch]
15525
                and     ebx, edi
15526
                mov     edx, [esp+4]
15527
                and     ebp, ecx
15528
                xor     ebx, [esp]
15529
                xor     ebp, edx
15530
                xor     ecx, edi
15531
                xor     ebx, ebp
15532
                and     ecx, [esp+1Ch]
15533
                and     ebx, [esp+18h]
15534
                ror     eax, 0Bh
15535
                xor     ecx, edx
15536
                mov     ebp, [esi+34h]
15537
                xor     ecx, ebx
15538
                and     edi, [esp+14h]
15539
                xor     ecx, edi
15540
                lea     ebp, [eax+ebp+728EB658h]
15541
                ror     ecx, 7
15542
                add     ebp, ecx
15543
                mov     eax, [esp+0Ch]
15544
                mov     [esp+10h], ebp
15545
                mov     ebx, [esp+18h]
15546
                mov     edi, [esp+4]
15547
                xor     ebp, 0FFFFFFFFh
15548
                mov     ecx, [esp+8]
15549
                and     ebx, edi
15550
                mov     edx, [esp]
15551
                and     ebp, ecx
15552
                xor     ebx, [esp+1Ch]
15553
                xor     ebp, edx
15554
                xor     ecx, edi
15555
                xor     ebx, ebp
15556
                and     ecx, [esp+18h]
15557
                and     ebx, [esp+14h]
15558
                ror     eax, 0Bh
15559
                xor     ecx, edx
15560
                mov     ebp, [esi+8]
15561
                xor     ecx, ebx
15562
                and     edi, [esp+10h]
15563
                xor     ecx, edi
15564
                lea     ebp, [eax+ebp+718BCD58h]
15565
                ror     ecx, 7
15566
                add     ebp, ecx
15567
                mov     eax, [esp+8]
15568
                mov     [esp+0Ch], ebp
15569
                mov     ebx, [esp+14h]
15570
                mov     edi, [esp]
15571
                xor     ebp, 0FFFFFFFFh
15572
                mov     ecx, [esp+4]
15573
                and     ebx, edi
15574
                mov     edx, [esp+1Ch]
15575
                and     ebp, ecx
15576
                xor     ebx, [esp+18h]
15577
                xor     ebp, edx
15578
                xor     ecx, edi
15579
                xor     ebx, ebp
15580
                and     ecx, [esp+14h]
15581
                and     ebx, [esp+10h]
15582
                ror     eax, 0Bh
15583
                xor     ecx, edx
15584
                mov     ebp, [esi+64h]
15585
                xor     ecx, ebx
15586
                and     edi, [esp+0Ch]
15587
                xor     ecx, edi
15588
                lea     ebp, [eax+ebp-7DEAB512h]
15589
                ror     ecx, 7
15590
                add     ebp, ecx
15591
                mov     eax, [esp+4]
15592
                mov     [esp+8], ebp
15593
                mov     ebx, [esp+10h]
15594
                mov     edi, [esp+1Ch]
15595
                xor     ebp, 0FFFFFFFFh
15596
                mov     ecx, [esp]
15597
                and     ebx, edi
15598
                mov     edx, [esp+18h]
15599
                and     ebp, ecx
15600
                xor     ebx, [esp+14h]
15601
                xor     ebp, edx
15602
                xor     ecx, edi
15603
                xor     ebx, ebp
15604
                and     ecx, [esp+10h]
15605
                and     ebx, [esp+0Ch]
15606
                ror     eax, 0Bh
15607
                xor     ecx, edx
15608
                mov     ebp, [esi+7Ch]
15609
                xor     ecx, ebx
15610
                and     edi, [esp+8]
15611
                xor     ecx, edi
15612
                lea     ebp, [eax+ebp+7B54A41Dh]
15613
                ror     ecx, 7
15614
                add     ebp, ecx
15615
                mov     eax, [esp]
15616
                mov     [esp+4], ebp
15617
                mov     ebx, [esp+0Ch]
15618
                mov     edi, [esp+18h]
15619
                xor     ebp, 0FFFFFFFFh
15620
                mov     ecx, [esp+1Ch]
15621
                and     ebx, edi
15622
                mov     edx, [esp+14h]
15623
                and     ebp, ecx
15624
                xor     ebx, [esp+10h]
15625
                xor     ebp, edx
15626
                xor     ecx, edi
15627
                xor     ebx, ebp
15628
                and     ecx, [esp+0Ch]
15629
                and     ebx, [esp+8]
15630
                ror     eax, 0Bh
15631
                xor     ecx, edx
15632
                mov     ebp, [esi+6Ch]
15633
                xor     ecx, ebx
15634
                and     edi, [esp+4]
15635
                xor     ecx, edi
15636
                lea     ebp, [eax+ebp-3DA5A64Bh]
15637
                ror     ecx, 7
15638
                add     ebp, ecx
15639
                mov     eax, [esp+1Ch]
15640
                mov     [esp], ebp
15641
                mov     ebp, [esp+14h]
15642
                mov     ebx, [esp]
15643
                mov     ecx, [esp+8]
15644
                mov     edi, ebx
15645
                and     ebx, [esp+10h]
15646
                and     edi, ecx
15647
                xor     ebx, ebp
15648
                ror     eax, 0Bh
15649
                xor     edi, ebp
15650
                mov     ebp, [esi+4Ch]
15651
                xor     edi, [esp+4]
15652
                and     ecx, [esp+0Ch]
15653
                and     edi, [esp+18h]
15654
                xor     ecx, ebx
15655
                lea     ebp, [eax+ebp-63CF2AC7h]
15656
                xor     ecx, edi
15657
                ror     ecx, 7
15658
                add     ebp, ecx
15659
                mov     eax, [esp+18h]
15660
                mov     [esp+1Ch], ebp
15661
                mov     ebp, [esp+10h]
15662
                mov     ebx, [esp+1Ch]
15663
                mov     ecx, [esp+4]
15664
                mov     edi, ebx
15665
                and     ebx, [esp+0Ch]
15666
                and     edi, ecx
15667
                xor     ebx, ebp
15668
                ror     eax, 0Bh
15669
                xor     edi, ebp
15670
                mov     ebp, [esi+24h]
15671
                xor     edi, [esp]
15672
                and     ecx, [esp+8]
15673
                and     edi, [esp+14h]
15674
                xor     ecx, ebx
15675
                lea     ebp, [eax+ebp+2AF26013h]
15676
                xor     ecx, edi
15677
                ror     ecx, 7
15678
                add     ebp, ecx
15679
                mov     eax, [esp+14h]
15680
                mov     [esp+18h], ebp
15681
                mov     ebp, [esp+0Ch]
15682
                mov     ebx, [esp+18h]
15683
                mov     ecx, [esp]
15684
                mov     edi, ebx
15685
                and     ebx, [esp+8]
15686
                and     edi, ecx
15687
                xor     ebx, ebp
15688
                ror     eax, 0Bh
15689
                xor     edi, ebp
15690
                mov     ebp, [esi+10h]
15691
                xor     edi, [esp+1Ch]
15692
                and     ecx, [esp+4]
15693
                and     edi, [esp+10h]
15694
                xor     ecx, ebx
15695
                lea     ebp, [eax+ebp-3A2E4FDDh]
15696
                xor     ecx, edi
15697
                ror     ecx, 7
15698
                add     ebp, ecx
15699
                mov     eax, [esp+10h]
15700
                mov     [esp+14h], ebp
15701
                mov     ebp, [esp+8]
15702
                mov     ebx, [esp+14h]
15703
                mov     ecx, [esp+1Ch]
15704
                mov     edi, ebx
15705
                and     ebx, [esp+4]
15706
                and     edi, ecx
15707
                xor     ebx, ebp
15708
                ror     eax, 0Bh
15709
                xor     edi, ebp
15710
                mov     ebp, [esi+50h]
15711
                xor     edi, [esp+18h]
15712
                and     ecx, [esp]
15713
                and     edi, [esp+0Ch]
15714
                xor     ecx, ebx
15715
                lea     ebp, [eax+ebp+286085F0h]
15716
                xor     ecx, edi
15717
                ror     ecx, 7
15718
                add     ebp, ecx
15719
                mov     eax, [esp+0Ch]
15720
                mov     [esp+10h], ebp
15721
                mov     ebp, [esp+4]
15722
                mov     ebx, [esp+10h]
15723
                mov     ecx, [esp+18h]
15724
                mov     edi, ebx
15725
                and     ebx, [esp]
15726
                and     edi, ecx
15727
                xor     ebx, ebp
15728
                ror     eax, 0Bh
15729
                xor     edi, ebp
15730
                mov     ebp, [esi+70h]
15731
                xor     edi, [esp+14h]
15732
                and     ecx, [esp+1Ch]
15733
                and     edi, [esp+8]
15734
                xor     ecx, ebx
15735
                lea     ebp, [eax+ebp-35BE86E8h]
15736
                xor     ecx, edi
15737
                ror     ecx, 7
15738
                add     ebp, ecx
15739
                mov     eax, [esp+8]
15740
                mov     [esp+0Ch], ebp
15741
                mov     ebp, [esp]
15742
                mov     ebx, [esp+0Ch]
15743
                mov     ecx, [esp+14h]
15744
                mov     edi, ebx
15745
                and     ebx, [esp+1Ch]
15746
                and     edi, ecx
15747
                xor     ebx, ebp
15748
                ror     eax, 0Bh
15749
                xor     edi, ebp
15750
                mov     ebp, [esi+44h]
15751
                xor     edi, [esp+10h]
15752
                and     ecx, [esp+18h]
15753
                and     edi, [esp+4]
15754
                xor     ecx, ebx
15755
                lea     ebp, [eax+ebp-4724C711h]
15756
                xor     ecx, edi
15757
                ror     ecx, 7
15758
                add     ebp, ecx
15759
                mov     eax, [esp+4]
15760
                mov     [esp+8], ebp
15761
                mov     ebp, [esp+1Ch]
15762
                mov     ebx, [esp+8]
15763
                mov     ecx, [esp+10h]
15764
                mov     edi, ebx
15765
                and     ebx, [esp+18h]
15766
                and     edi, ecx
15767
                xor     ebx, ebp
15768
                ror     eax, 0Bh
15769
                xor     edi, ebp
15770
                mov     ebp, [esi+20h]
15771
                xor     edi, [esp+0Ch]
15772
                and     ecx, [esp+14h]
15773
                and     edi, [esp]
15774
                xor     ecx, ebx
15775
                lea     ebp, [eax+ebp-71862350h]
15776
                xor     ecx, edi
15777
                ror     ecx, 7
15778
                add     ebp, ecx
15779
                mov     eax, [esp]
15780
                mov     [esp+4], ebp
15781
                mov     ebp, [esp+18h]
15782
                mov     ebx, [esp+4]
15783
                mov     ecx, [esp+0Ch]
15784
                mov     edi, ebx
15785
                and     ebx, [esp+14h]
15786
                and     edi, ecx
15787
                xor     ebx, ebp
15788
                ror     eax, 0Bh
15789
                xor     edi, ebp
15790
                mov     ebp, [esi+58h]
15791
                xor     edi, [esp+8]
15792
                and     ecx, [esp+10h]
15793
                and     edi, [esp+1Ch]
15794
                xor     ecx, ebx
15795
                lea     ebp, [eax+ebp+603A180Eh]
15796
                xor     ecx, edi
15797
                ror     ecx, 7
15798
                add     ebp, ecx
15799
                mov     eax, [esp+1Ch]
15800
                mov     [esp], ebp
15801
                mov     ebp, [esp+14h]
15802
                mov     ebx, [esp]
15803
                mov     ecx, [esp+8]
15804
                mov     edi, ebx
15805
                and     ebx, [esp+10h]
15806
                and     edi, ecx
15807
                xor     ebx, ebp
15808
                ror     eax, 0Bh
15809
                xor     edi, ebp
15810
                mov     ebp, [esi+74h]
15811
                xor     edi, [esp+4]
15812
                and     ecx, [esp+0Ch]
15813
                and     edi, [esp+18h]
15814
                xor     ecx, ebx
15815
                lea     ebp, [eax+ebp+6C9E0E8Bh]
15816
                xor     ecx, edi
15817
                ror     ecx, 7
15818
                add     ebp, ecx
15819
                mov     eax, [esp+18h]
15820
                mov     [esp+1Ch], ebp
15821
                mov     ebp, [esp+10h]
15822
                mov     ebx, [esp+1Ch]
15823
                mov     ecx, [esp+4]
15824
                mov     edi, ebx
15825
                and     ebx, [esp+0Ch]
15826
                and     edi, ecx
15827
                xor     ebx, ebp
15828
                ror     eax, 0Bh
15829
                xor     edi, ebp
15830
                mov     ebp, [esi+38h]
15831
                xor     edi, [esp]
15832
                and     ecx, [esp+8]
15833
                and     edi, [esp+14h]
15834
                xor     ecx, ebx
15835
                lea     ebp, [eax+ebp-4FE175C2h]
15836
                xor     ecx, edi
15837
                ror     ecx, 7
15838
                add     ebp, ecx
15839
                mov     eax, [esp+14h]
15840
                mov     [esp+18h], ebp
15841
                mov     ebp, [esp+0Ch]
15842
                mov     ebx, [esp+18h]
15843
                mov     ecx, [esp]
15844
                mov     edi, ebx
15845
                and     ebx, [esp+8]
15846
                and     edi, ecx
15847
                xor     ebx, ebp
15848
                ror     eax, 0Bh
15849
                xor     edi, ebp
15850
                mov     ebp, [esi+64h]
15851
                xor     edi, [esp+1Ch]
15852
                and     ecx, [esp+4]
15853
                and     edi, [esp+10h]
15854
                xor     ecx, ebx
15855
                lea     ebp, [eax+ebp-28EA883Fh]
15856
                xor     ecx, edi
15857
                ror     ecx, 7
15858
                add     ebp, ecx
15859
                mov     eax, [esp+10h]
15860
                mov     [esp+14h], ebp
15861
                mov     ebp, [esp+8]
15862
                mov     ebx, [esp+14h]
15863
                mov     ecx, [esp+1Ch]
15864
                mov     edi, ebx
15865
                and     ebx, [esp+4]
15866
                and     edi, ecx
15867
                xor     ebx, ebp
15868
                ror     eax, 0Bh
15869
                xor     edi, ebp
15870
                mov     ebp, [esi+30h]
15871
                xor     edi, [esp+18h]
15872
                and     ecx, [esp]
15873
                and     edi, [esp+0Ch]
15874
                xor     ecx, ebx
15875
                lea     ebp, [eax+ebp-42CEB4D9h]
15876
                xor     ecx, edi
15877
                ror     ecx, 7
15878
                add     ebp, ecx
15879
                mov     eax, [esp+0Ch]
15880
                mov     [esp+10h], ebp
15881
                mov     ebp, [esp+4]
15882
                mov     ebx, [esp+10h]
15883
                mov     ecx, [esp+18h]
15884
                mov     edi, ebx
15885
                and     ebx, [esp]
15886
                and     edi, ecx
15887
                xor     ebx, ebp
15888
                ror     eax, 0Bh
15889
                xor     edi, ebp
15890
                mov     ebp, [esi+60h]
15891
                xor     edi, [esp+14h]
15892
                and     ecx, [esp+1Ch]
15893
                and     edi, [esp+8]
15894
                xor     ecx, ebx
15895
                lea     ebp, [eax+ebp+78AF2FDAh]
15896
                xor     ecx, edi
15897
                ror     ecx, 7
15898
                add     ebp, ecx
15899
                mov     eax, [esp+8]
15900
                mov     [esp+0Ch], ebp
15901
                mov     ebp, [esp]
15902
                mov     ebx, [esp+0Ch]
15903
                mov     ecx, [esp+14h]
15904
                mov     edi, ebx
15905
                and     ebx, [esp+1Ch]
15906
                and     edi, ecx
15907
                xor     ebx, ebp
15908
                ror     eax, 0Bh
15909
                xor     edi, ebp
15910
                mov     ebp, [esi+78h]
15911
                xor     edi, [esp+10h]
15912
                and     ecx, [esp+18h]
15913
                and     edi, [esp+4]
15914
                xor     ecx, ebx
15915
                lea     ebp, [eax+ebp+55605C60h]
15916
                xor     ecx, edi
15917
                ror     ecx, 7
15918
                add     ebp, ecx
15919
                mov     eax, [esp+4]
15920
                mov     [esp+8], ebp
15921
                mov     ebp, [esp+1Ch]
15922
                mov     ebx, [esp+8]
15923
                mov     ecx, [esp+10h]
15924
                mov     edi, ebx
15925
                and     ebx, [esp+18h]
15926
                and     edi, ecx
15927
                xor     ebx, ebp
15928
                ror     eax, 0Bh
15929
                xor     edi, ebp
15930
                mov     ebp, [esi+40h]
15931
                xor     edi, [esp+0Ch]
15932
                and     ecx, [esp+14h]
15933
                and     edi, [esp]
15934
                xor     ecx, ebx
15935
                lea     ebp, [eax+ebp-19AADA0Dh]
15936
                xor     ecx, edi
15937
                ror     ecx, 7
15938
                add     ebp, ecx
15939
                mov     eax, [esp]
15940
                mov     [esp+4], ebp
15941
                mov     ebp, [esp+18h]
15942
                mov     ebx, [esp+4]
15943
                mov     ecx, [esp+0Ch]
15944
                mov     edi, ebx
15945
                and     ebx, [esp+14h]
15946
                and     edi, ecx
15947
                xor     ebx, ebp
15948
                ror     eax, 0Bh
15949
                xor     edi, ebp
15950
                mov     ebp, [esi+68h]
15951
                xor     edi, [esp+8]
15952
                and     ecx, [esp+10h]
15953
                and     edi, [esp+1Ch]
15954
                xor     ecx, ebx
15955
                lea     ebp, [eax+ebp-55AA546Ch]
15956
                xor     ecx, edi
15957
                ror     ecx, 7
15958
                add     ebp, ecx
15959
                mov     eax, [esp+1Ch]
15960
                mov     [esp], ebp
15961
                mov     ebp, [esp+14h]
15962
                mov     ebx, [esp]
15963
                mov     ecx, [esp+8]
15964
                mov     edi, ebx
15965
                and     ebx, [esp+10h]
15966
                and     edi, ecx
15967
                xor     ebx, ebp
15968
                ror     eax, 0Bh
15969
                xor     edi, ebp
15970
                mov     ebp, [esi+7Ch]
15971
                xor     edi, [esp+4]
15972
                and     ecx, [esp+0Ch]
15973
                and     edi, [esp+18h]
15974
                xor     ecx, ebx
15975
                lea     ebp, [eax+ebp+57489862h]
15976
                xor     ecx, edi
15977
                ror     ecx, 7
15978
                add     ebp, ecx
15979
                mov     eax, [esp+18h]
15980
                mov     [esp+1Ch], ebp
15981
                mov     ebp, [esp+10h]
15982
                mov     ebx, [esp+1Ch]
15983
                mov     ecx, [esp+4]
15984
                mov     edi, ebx
15985
                and     ebx, [esp+0Ch]
15986
                and     edi, ecx
15987
                xor     ebx, ebp
15988
                ror     eax, 0Bh
15989
                xor     edi, ebp
15990
                mov     ebp, [esi+3Ch]
15991
                xor     edi, [esp]
15992
                and     ecx, [esp+8]
15993
                and     edi, [esp+14h]
15994
                xor     ecx, ebx
15995
                lea     ebp, [eax+ebp+63E81440h]
15996
                xor     ecx, edi
15997
                ror     ecx, 7
15998
                add     ebp, ecx
15999
                mov     eax, [esp+14h]
16000
                mov     [esp+18h], ebp
16001
                mov     ebp, [esp+0Ch]
16002
                mov     ebx, [esp+18h]
16003
                mov     ecx, [esp]
16004
                mov     edi, ebx
16005
                and     ebx, [esp+8]
16006
                and     edi, ecx
16007
                xor     ebx, ebp
16008
                ror     eax, 0Bh
16009
                xor     edi, ebp
16010
                mov     ebp, [esi+1Ch]
16011
                xor     edi, [esp+1Ch]
16012
                and     ecx, [esp+4]
16013
                and     edi, [esp+10h]
16014
                xor     ecx, ebx
16015
                lea     ebp, [eax+ebp+55CA396Ah]
16016
                xor     ecx, edi
16017
                ror     ecx, 7
16018
                add     ebp, ecx
16019
                mov     eax, [esp+10h]
16020
                mov     [esp+14h], ebp
16021
                mov     ebp, [esp+8]
16022
                mov     ebx, [esp+14h]
16023
                mov     ecx, [esp+1Ch]
16024
                mov     edi, ebx
16025
                and     ebx, [esp+4]
16026
                and     edi, ecx
16027
                xor     ebx, ebp
16028
                ror     eax, 0Bh
16029
                xor     edi, ebp
16030
                mov     ebp, [esi+0Ch]
16031
                xor     edi, [esp+18h]
16032
                and     ecx, [esp]
16033
                and     edi, [esp+0Ch]
16034
                xor     ecx, ebx
16035
                lea     ebp, [eax+ebp+2AAB10B6h]
16036
                xor     ecx, edi
16037
                ror     ecx, 7
16038
                add     ebp, ecx
16039
                mov     eax, [esp+0Ch]
16040
                mov     [esp+10h], ebp
16041
                mov     ebp, [esp+4]
16042
                mov     ebx, [esp+10h]
16043
                mov     ecx, [esp+18h]
16044
                mov     edi, ebx
16045
                and     ebx, [esp]
16046
                and     edi, ecx
16047
                xor     ebx, ebp
16048
                ror     eax, 0Bh
16049
                xor     edi, ebp
16050
                mov     ebp, [esi+4]
16051
                xor     edi, [esp+14h]
16052
                and     ecx, [esp+1Ch]
16053
                and     edi, [esp+8]
16054
                xor     ecx, ebx
16055
                lea     ebp, [eax+ebp-4B33A3CCh]
16056
                xor     ecx, edi
16057
                ror     ecx, 7
16058
                add     ebp, ecx
16059
                mov     eax, [esp+8]
16060
                mov     [esp+0Ch], ebp
16061
                mov     ebp, [esp]
16062
                mov     ebx, [esp+0Ch]
16063
                mov     ecx, [esp+14h]
16064
                mov     edi, ebx
16065
                and     ebx, [esp+1Ch]
16066
                and     edi, ecx
16067
                xor     ebx, ebp
16068
                ror     eax, 0Bh
16069
                xor     edi, ebp
16070
                mov     ebp, [esi]
16071
                xor     edi, [esp+10h]
16072
                and     ecx, [esp+18h]
16073
                and     edi, [esp+4]
16074
                xor     ecx, ebx
16075
                lea     ebp, [eax+ebp+1141E8CEh]
16076
                xor     ecx, edi
16077
                ror     ecx, 7
16078
                add     ebp, ecx
16079
                mov     eax, [esp+4]
16080
                mov     [esp+8], ebp
16081
                mov     ebp, [esp+1Ch]
16082
                mov     ebx, [esp+8]
16083
                mov     ecx, [esp+10h]
16084
                mov     edi, ebx
16085
                and     ebx, [esp+18h]
16086
                and     edi, ecx
16087
                xor     ebx, ebp
16088
                ror     eax, 0Bh
16089
                xor     edi, ebp
16090
                mov     ebp, [esi+48h]
16091
                xor     edi, [esp+0Ch]
16092
                and     ecx, [esp+14h]
16093
                and     edi, [esp]
16094
                xor     ecx, ebx
16095
                lea     ebp, [eax+ebp-5EAB7951h]
16096
                xor     ecx, edi
16097
                ror     ecx, 7
16098
                add     ebp, ecx
16099
                mov     eax, [esp]
16100
                mov     [esp+4], ebp
16101
                mov     ebp, [esp+18h]
16102
                mov     ebx, [esp+4]
16103
                mov     ecx, [esp+0Ch]
16104
                mov     edi, ebx
16105
                and     ebx, [esp+14h]
16106
                and     edi, ecx
16107
                xor     ebx, ebp
16108
                ror     eax, 0Bh
16109
                xor     edi, ebp
16110
                mov     ebp, [esi+6Ch]
16111
                xor     edi, [esp+8]
16112
                and     ecx, [esp+10h]
16113
                and     edi, [esp+1Ch]
16114
                xor     ecx, ebx
16115
                lea     ebp, [eax+ebp+7C72E993h]
16116
                xor     ecx, edi
16117
                ror     ecx, 7
16118
                add     ebp, ecx
16119
                mov     eax, [esp+1Ch]
16120
                mov     [esp], ebp
16121
                mov     ebp, [esp+14h]
16122
                mov     ebx, [esp]
16123
                mov     ecx, [esp+8]
16124
                mov     edi, ebx
16125
                and     ebx, [esp+10h]
16126
                and     edi, ecx
16127
                xor     ebx, ebp
16128
                ror     eax, 0Bh
16129
                xor     edi, ebp
16130
                mov     ebp, [esi+34h]
16131
                xor     edi, [esp+4]
16132
                and     ecx, [esp+0Ch]
16133
                and     edi, [esp+18h]
16134
                xor     ecx, ebx
16135
                lea     ebp, [eax+ebp-4C11EBEFh]
16136
                xor     ecx, edi
16137
                ror     ecx, 7
16138
                add     ebp, ecx
16139
                mov     eax, [esp+18h]
16140
                mov     [esp+1Ch], ebp
16141
                mov     ebp, [esp+10h]
16142
                mov     ebx, [esp+1Ch]
16143
                mov     ecx, [esp+4]
16144
                mov     edi, ebx
16145
                and     ebx, [esp+0Ch]
16146
                and     edi, ecx
16147
                xor     ebx, ebp
16148
                ror     eax, 0Bh
16149
                xor     edi, ebp
16150
                mov     ebp, [esi+18h]
16151
                xor     edi, [esp]
16152
                and     ecx, [esp+8]
16153
                and     edi, [esp+14h]
16154
                xor     ecx, ebx
16155
                lea     ebp, [eax+ebp+636FBC2Ah]
16156
                xor     ecx, edi
16157
                ror     ecx, 7
16158
                add     ebp, ecx
16159
                mov     eax, [esp+14h]
16160
                mov     [esp+18h], ebp
16161
                mov     ebp, [esp+0Ch]
16162
                mov     ebx, [esp+18h]
16163
                mov     ecx, [esp]
16164
                mov     edi, ebx
16165
                and     ebx, [esp+8]
16166
                and     edi, ecx
16167
                xor     ebx, ebp
16168
                ror     eax, 0Bh
16169
                xor     edi, ebp
16170
                mov     ebp, [esi+54h]
16171
                xor     edi, [esp+1Ch]
16172
                and     ecx, [esp+4]
16173
                and     edi, [esp+10h]
16174
                xor     ecx, ebx
16175
                lea     ebp, [eax+ebp+2BA9C55Dh]
16176
                xor     ecx, edi
16177
                ror     ecx, 7
16178
                add     ebp, ecx
16179
                mov     eax, [esp+10h]
16180
                mov     [esp+14h], ebp
16181
                mov     ebp, [esp+8]
16182
                mov     ebx, [esp+14h]
16183
                mov     ecx, [esp+1Ch]
16184
                mov     edi, ebx
16185
                and     ebx, [esp+4]
16186
                and     edi, ecx
16187
                xor     ebx, ebp
16188
                ror     eax, 0Bh
16189
                xor     edi, ebp
16190
                mov     ebp, [esi+28h]
16191
                xor     edi, [esp+18h]
16192
                and     ecx, [esp]
16193
                and     edi, [esp+0Ch]
16194
                xor     ecx, ebx
16195
                lea     ebp, [eax+ebp+741831F6h]
16196
                xor     ecx, edi
16197
                ror     ecx, 7
16198
                add     ebp, ecx
16199
                mov     eax, [esp+0Ch]
16200
                mov     [esp+10h], ebp
16201
                mov     ebp, [esp+4]
16202
                mov     ebx, [esp+10h]
16203
                mov     ecx, [esp+18h]
16204
                mov     edi, ebx
16205
                and     ebx, [esp]
16206
                and     edi, ecx
16207
                xor     ebx, ebp
16208
                ror     eax, 0Bh
16209
                xor     edi, ebp
16210
                mov     ebp, [esi+5Ch]
16211
                xor     edi, [esp+14h]
16212
                and     ecx, [esp+1Ch]
16213
                and     edi, [esp+8]
16214
                xor     ecx, ebx
16215
                lea     ebp, [eax+ebp-31A3C1EAh]
16216
                xor     ecx, edi
16217
                ror     ecx, 7
16218
                add     ebp, ecx
16219
                mov     eax, [esp+8]
16220
                mov     [esp+0Ch], ebp
16221
                mov     ebp, [esp]
16222
                mov     ebx, [esp+0Ch]
16223
                mov     ecx, [esp+14h]
16224
                mov     edi, ebx
16225
                and     ebx, [esp+1Ch]
16226
                and     edi, ecx
16227
                xor     ebx, ebp
16228
                ror     eax, 0Bh
16229
                xor     edi, ebp
16230
                mov     ebp, [esi+2Ch]
16231
                xor     edi, [esp+10h]
16232
                and     ecx, [esp+18h]
16233
                and     edi, [esp+4]
16234
                xor     ecx, ebx
16235
                lea     ebp, [eax+ebp-64786CE2h]
16236
                xor     ecx, edi
16237
                ror     ecx, 7
16238
                add     ebp, ecx
16239
                mov     eax, [esp+4]
16240
                mov     [esp+8], ebp
16241
                mov     ebp, [esp+1Ch]
16242
                mov     ebx, [esp+8]
16243
                mov     ecx, [esp+10h]
16244
                mov     edi, ebx
16245
                and     ebx, [esp+18h]
16246
                and     edi, ecx
16247
                xor     ebx, ebp
16248
                ror     eax, 0Bh
16249
                xor     edi, ebp
16250
                mov     ebp, [esi+14h]
16251
                xor     edi, [esp+0Ch]
16252
                and     ecx, [esp+14h]
16253
                and     edi, [esp]
16254
                xor     ecx, ebx
16255
                lea     ebp, [eax+ebp-502945CDh]
16256
                xor     ecx, edi
16257
                ror     ecx, 7
16258
                add     ebp, ecx
16259
                mov     eax, [esp]
16260
                mov     [esp+4], ebp
16261
                mov     ebp, [esp+18h]
16262
                mov     ebx, [esp+4]
16263
                mov     ecx, [esp+0Ch]
16264
                mov     edi, ebx
16265
                and     ebx, [esp+14h]
16266
                and     edi, ecx
16267
                xor     ebx, ebp
16268
                ror     eax, 0Bh
16269
                xor     edi, ebp
16270
                mov     ebp, [esi+8]
16271
                xor     edi, [esp+8]
16272
                and     ecx, [esp+10h]
16273
                and     edi, [esp+1Ch]
16274
                xor     ecx, ebx
16275
                lea     ebp, [eax+ebp+6C24CF5Ch]
16276
                xor     ecx, edi
16277
                ror     ecx, 7
16278
                add     ebp, ecx
16279
                mov     eax, [esp+1Ch]
16280
                mov     [esp], ebp
16281
                mov     ebp, [esp+8]
16282
                mov     ecx, [esp+10h]
16283
                mov     edx, [esp+18h]
16284
                mov     edi, ebp
16285
                mov     ebx, edx
16286
                xor     ebp, 0FFFFFFFFh
16287
                xor     ebx, 0FFFFFFFFh
16288
                and     ebp, ecx
16289
                and     ebx, [esp+14h]
16290
                xor     ebp, [esp+4]
16291
                xor     ebx, edx
16292
                xor     ebp, [esp+0Ch]
16293
                xor     ebx, ebp
16294
                mov     ebp, edi
16295
                and     ebx, [esp]
16296
                and     ebp, [esp+4]
16297
                and     edi, edx
16298
                xor     ebp, ecx
16299
                xor     ebx, [esp+0Ch]
16300
                ror     eax, 0Bh
16301
                xor     ebp, edx
16302
                mov     edx, [esi+60h]
16303
                and     ebp, [esp+14h]
16304
                xor     ebx, edi
16305
                xor     ebp, ebx
16306
                lea     edx, [eax+edx+7A325381h]
16307
                ror     ebp, 7
16308
                add     ebp, edx
16309
                mov     eax, [esp+18h]
16310
                mov     [esp+1Ch], ebp
16311
                mov     ebp, [esp+4]
16312
                mov     ecx, [esp+0Ch]
16313
                mov     edx, [esp+14h]
16314
                mov     edi, ebp
16315
                mov     ebx, edx
16316
                xor     ebp, 0FFFFFFFFh
16317
                xor     ebx, 0FFFFFFFFh
16318
                and     ebp, ecx
16319
                and     ebx, [esp+10h]
16320
                xor     ebp, [esp]
16321
                xor     ebx, edx
16322
                xor     ebp, [esp+8]
16323
                xor     ebx, ebp
16324
                mov     ebp, edi
16325
                and     ebx, [esp+1Ch]
16326
                and     ebp, [esp]
16327
                and     edi, edx
16328
                xor     ebp, ecx
16329
                xor     ebx, [esp+8]
16330
                ror     eax, 0Bh
16331
                xor     ebp, edx
16332
                mov     edx, [esi+10h]
16333
                and     ebp, [esp+10h]
16334
                xor     ebx, edi
16335
                xor     ebp, ebx
16336
                lea     edx, [eax+edx+28958677h]
16337
                ror     ebp, 7
16338
                add     ebp, edx
16339
                mov     eax, [esp+14h]
16340
                mov     [esp+18h], ebp
16341
                mov     ebp, [esp]
16342
                mov     ecx, [esp+8]
16343
                mov     edx, [esp+10h]
16344
                mov     edi, ebp
16345
                mov     ebx, edx
16346
                xor     ebp, 0FFFFFFFFh
16347
                xor     ebx, 0FFFFFFFFh
16348
                and     ebp, ecx
16349
                and     ebx, [esp+0Ch]
16350
                xor     ebp, [esp+1Ch]
16351
                xor     ebx, edx
16352
                xor     ebp, [esp+4]
16353
                xor     ebx, ebp
16354
                mov     ebp, edi
16355
                and     ebx, [esp+18h]
16356
                and     ebp, [esp+1Ch]
16357
                and     edi, edx
16358
                xor     ebp, ecx
16359
                xor     ebx, [esp+4]
16360
                ror     eax, 0Bh
16361
                xor     ebp, edx
16362
                mov     edx, [esi]
16363
                and     ebp, [esp+0Ch]
16364
                xor     ebx, edi
16365
                xor     ebp, ebx
16366
                lea     edx, [eax+edx+3B8F4898h]
16367
                ror     ebp, 7
16368
                add     ebp, edx
16369
                mov     eax, [esp+10h]
16370
                mov     [esp+14h], ebp
16371
                mov     ebp, [esp+1Ch]
16372
                mov     ecx, [esp+4]
16373
                mov     edx, [esp+0Ch]
16374
                mov     edi, ebp
16375
                mov     ebx, edx
16376
                xor     ebp, 0FFFFFFFFh
16377
                xor     ebx, 0FFFFFFFFh
16378
                and     ebp, ecx
16379
                and     ebx, [esp+8]
16380
                xor     ebp, [esp+18h]
16381
                xor     ebx, edx
16382
                xor     ebp, [esp]
16383
                xor     ebx, ebp
16384
                mov     ebp, edi
16385
                and     ebx, [esp+14h]
16386
                and     ebp, [esp+18h]
16387
                and     edi, edx
16388
                xor     ebp, ecx
16389
                xor     ebx, [esp]
16390
                ror     eax, 0Bh
16391
                xor     ebp, edx
16392
                mov     edx, [esi+38h]
16393
                and     ebp, [esp+8]
16394
                xor     ebx, edi
16395
                xor     ebp, ebx
16396
                lea     edx, [eax+edx+6B4BB9AFh]
16397
                ror     ebp, 7
16398
                add     ebp, edx
16399
                mov     eax, [esp+0Ch]
16400
                mov     [esp+10h], ebp
16401
                mov     ebp, [esp+18h]
16402
                mov     ecx, [esp]
16403
                mov     edx, [esp+8]
16404
                mov     edi, ebp
16405
                mov     ebx, edx
16406
                xor     ebp, 0FFFFFFFFh
16407
                xor     ebx, 0FFFFFFFFh
16408
                and     ebp, ecx
16409
                and     ebx, [esp+4]
16410
                xor     ebp, [esp+14h]
16411
                xor     ebx, edx
16412
                xor     ebp, [esp+1Ch]
16413
                xor     ebx, ebp
16414
                mov     ebp, edi
16415
                and     ebx, [esp+10h]
16416
                and     ebp, [esp+14h]
16417
                and     edi, edx
16418
                xor     ebp, ecx
16419
                xor     ebx, [esp+1Ch]
16420
                ror     eax, 0Bh
16421
                xor     ebp, edx
16422
                mov     edx, [esi+8]
16423
                and     ebp, [esp+4]
16424
                xor     ebx, edi
16425
                xor     ebp, ebx
16426
                lea     edx, [eax+edx-3B4017E5h]
16427
                ror     ebp, 7
16428
                add     ebp, edx
16429
                mov     eax, [esp+8]
16430
                mov     [esp+0Ch], ebp
16431
                mov     ebp, [esp+14h]
16432
                mov     ecx, [esp+1Ch]
16433
                mov     edx, [esp+4]
16434
                mov     edi, ebp
16435
                mov     ebx, edx
16436
                xor     ebp, 0FFFFFFFFh
16437
                xor     ebx, 0FFFFFFFFh
16438
                and     ebp, ecx
16439
                and     ebx, [esp]
16440
                xor     ebp, [esp+10h]
16441
                xor     ebx, edx
16442
                xor     ebp, [esp+18h]
16443
                xor     ebx, ebp
16444
                mov     ebp, edi
16445
                and     ebx, [esp+0Ch]
16446
                and     ebp, [esp+10h]
16447
                and     edi, edx
16448
                xor     ebp, ecx
16449
                xor     ebx, [esp+18h]
16450
                ror     eax, 0Bh
16451
                xor     ebp, edx
16452
                mov     edx, [esi+1Ch]
16453
                and     ebp, [esp]
16454
                xor     ebx, edi
16455
                xor     ebp, ebx
16456
                lea     edx, [eax+edx+66282193h]
16457
                ror     ebp, 7
16458
                add     ebp, edx
16459
                mov     eax, [esp+4]
16460
                mov     [esp+8], ebp
16461
                mov     ebp, [esp+10h]
16462
                mov     ecx, [esp+18h]
16463
                mov     edx, [esp]
16464
                mov     edi, ebp
16465
                mov     ebx, edx
16466
                xor     ebp, 0FFFFFFFFh
16467
                xor     ebx, 0FFFFFFFFh
16468
                and     ebp, ecx
16469
                and     ebx, [esp+1Ch]
16470
                xor     ebp, [esp+0Ch]
16471
                xor     ebx, edx
16472
                xor     ebp, [esp+14h]
16473
                xor     ebx, ebp
16474
                mov     ebp, edi
16475
                and     ebx, [esp+8]
16476
                and     ebp, [esp+0Ch]
16477
                and     edi, edx
16478
                xor     ebp, ecx
16479
                xor     ebx, [esp+14h]
16480
                ror     eax, 0Bh
16481
                xor     ebp, edx
16482
                mov     edx, [esi+70h]
16483
                and     ebp, [esp+1Ch]
16484
                xor     ebx, edi
16485
                xor     ebp, ebx
16486
                lea     edx, [eax+edx+61D809CCh]
16487
                ror     ebp, 7
16488
                add     ebp, edx
16489
                mov     eax, [esp]
16490
                mov     [esp+4], ebp
16491
                mov     ebp, [esp+0Ch]
16492
                mov     ecx, [esp+14h]
16493
                mov     edx, [esp+1Ch]
16494
                mov     edi, ebp
16495
                mov     ebx, edx
16496
                xor     ebp, 0FFFFFFFFh
16497
                xor     ebx, 0FFFFFFFFh
16498
                and     ebp, ecx
16499
                and     ebx, [esp+18h]
16500
                xor     ebp, [esp+8]
16501
                xor     ebx, edx
16502
                xor     ebp, [esp+10h]
16503
                xor     ebx, ebp
16504
                mov     ebp, edi
16505
                and     ebx, [esp+4]
16506
                and     ebp, [esp+8]
16507
                and     edi, edx
16508
                xor     ebp, ecx
16509
                xor     ebx, [esp+10h]
16510
                ror     eax, 0Bh
16511
                xor     ebp, edx
16512
                mov     edx, [esi+5Ch]
16513
                and     ebp, [esp+18h]
16514
                xor     ebx, edi
16515
                xor     ebp, ebx
16516
                lea     edx, [eax+edx-4DE566Fh]
16517
                ror     ebp, 7
16518
                add     ebp, edx
16519
                mov     eax, [esp+1Ch]
16520
                mov     [esp], ebp
16521
                mov     ebp, [esp+8]
16522
                mov     ecx, [esp+10h]
16523
                mov     edx, [esp+18h]
16524
                mov     edi, ebp
16525
                mov     ebx, edx
16526
                xor     ebp, 0FFFFFFFFh
16527
                xor     ebx, 0FFFFFFFFh
16528
                and     ebp, ecx
16529
                and     ebx, [esp+14h]
16530
                xor     ebp, [esp+4]
16531
                xor     ebx, edx
16532
                xor     ebp, [esp+0Ch]
16533
                xor     ebx, ebp
16534
                mov     ebp, edi
16535
                and     ebx, [esp]
16536
                and     ebp, [esp+4]
16537
                and     edi, edx
16538
                xor     ebp, ecx
16539
                xor     ebx, [esp+0Ch]
16540
                ror     eax, 0Bh
16541
                xor     ebp, edx
16542
                mov     edx, [esi+68h]
16543
                and     ebp, [esp+14h]
16544
                xor     ebx, edi
16545
                xor     ebp, ebx
16546
                lea     edx, [eax+edx+487CAC60h]
16547
                ror     ebp, 7
16548
                add     ebp, edx
16549
                mov     eax, [esp+18h]
16550
                mov     [esp+1Ch], ebp
16551
                mov     ebp, [esp+4]
16552
                mov     ecx, [esp+0Ch]
16553
                mov     edx, [esp+14h]
16554
                mov     edi, ebp
16555
                mov     ebx, edx
16556
                xor     ebp, 0FFFFFFFFh
16557
                xor     ebx, 0FFFFFFFFh
16558
                and     ebp, ecx
16559
                and     ebx, [esp+10h]
16560
                xor     ebp, [esp]
16561
                xor     ebx, edx
16562
                xor     ebp, [esp+8]
16563
                xor     ebx, ebp
16564
                mov     ebp, edi
16565
                and     ebx, [esp+1Ch]
16566
                and     ebp, [esp]
16567
                and     edi, edx
16568
                xor     ebp, ecx
16569
                xor     ebx, [esp+8]
16570
                ror     eax, 0Bh
16571
                xor     ebp, edx
16572
                mov     edx, [esi+18h]
16573
                and     ebp, [esp+10h]
16574
                xor     ebx, edi
16575
                xor     ebp, ebx
16576
                lea     edx, [eax+edx+5DEC8032h]
16577
                ror     ebp, 7
16578
                add     ebp, edx
16579
                mov     eax, [esp+14h]
16580
                mov     [esp+18h], ebp
16581
                mov     ebp, [esp]
16582
                mov     ecx, [esp+8]
16583
                mov     edx, [esp+10h]
16584
                mov     edi, ebp
16585
                mov     ebx, edx
16586
                xor     ebp, 0FFFFFFFFh
16587
                xor     ebx, 0FFFFFFFFh
16588
                and     ebp, ecx
16589
                and     ebx, [esp+0Ch]
16590
                xor     ebp, [esp+1Ch]
16591
                xor     ebx, edx
16592
                xor     ebp, [esp+4]
16593
                xor     ebx, ebp
16594
                mov     ebp, edi
16595
                and     ebx, [esp+18h]
16596
                and     ebp, [esp+1Ch]
16597
                and     edi, edx
16598
                xor     ebp, ecx
16599
                xor     ebx, [esp+4]
16600
                ror     eax, 0Bh
16601
                xor     ebp, edx
16602
                mov     edx, [esi+78h]
16603
                and     ebp, [esp+0Ch]
16604
                xor     ebx, edi
16605
                xor     ebp, ebx
16606
                lea     edx, [eax+edx-107BA2A3h]
16607
                ror     ebp, 7
16608
                add     ebp, edx
16609
                mov     eax, [esp+10h]
16610
                mov     [esp+14h], ebp
16611
                mov     ebp, [esp+1Ch]
16612
                mov     ecx, [esp+4]
16613
                mov     edx, [esp+0Ch]
16614
                mov     edi, ebp
16615
                mov     ebx, edx
16616
                xor     ebp, 0FFFFFFFFh
16617
                xor     ebx, 0FFFFFFFFh
16618
                and     ebp, ecx
16619
                and     ebx, [esp+8]
16620
                xor     ebp, [esp+18h]
16621
                xor     ebx, edx
16622
                xor     ebp, [esp]
16623
                xor     ebx, ebp
16624
                mov     ebp, edi
16625
                and     ebx, [esp+14h]
16626
                and     ebp, [esp+18h]
16627
                and     edi, edx
16628
                xor     ebp, ecx
16629
                xor     ebx, [esp]
16630
                ror     eax, 0Bh
16631
                xor     ebp, edx
16632
                mov     edx, [esi+50h]
16633
                and     ebp, [esp+8]
16634
                xor     ebx, edi
16635
                xor     ebp, ebx
16636
                lea     edx, [eax+edx-167A8A4Fh]
16637
                ror     ebp, 7
16638
                add     ebp, edx
16639
                mov     eax, [esp+0Ch]
16640
                mov     [esp+10h], ebp
16641
                mov     ebp, [esp+18h]
16642
                mov     ecx, [esp]
16643
                mov     edx, [esp+8]
16644
                mov     edi, ebp
16645
                mov     ebx, edx
16646
                xor     ebp, 0FFFFFFFFh
16647
                xor     ebx, 0FFFFFFFFh
16648
                and     ebp, ecx
16649
                and     ebx, [esp+4]
16650
                xor     ebp, [esp+14h]
16651
                xor     ebx, edx
16652
                xor     ebp, [esp+1Ch]
16653
                xor     ebx, ebp
16654
                mov     ebp, edi
16655
                and     ebx, [esp+10h]
16656
                and     ebp, [esp+14h]
16657
                and     edi, edx
16658
                xor     ebp, ecx
16659
                xor     ebx, [esp+1Ch]
16660
                ror     eax, 0Bh
16661
                xor     ebp, edx
16662
                mov     edx, [esi+48h]
16663
                and     ebp, [esp+4]
16664
                xor     ebx, edi
16665
                xor     ebp, ebx
16666
                lea     edx, [eax+edx-23D9DCFEh]
16667
                ror     ebp, 7
16668
                add     ebp, edx
16669
                mov     eax, [esp+8]
16670
                mov     [esp+0Ch], ebp
16671
                mov     ebp, [esp+14h]
16672
                mov     ecx, [esp+1Ch]
16673
                mov     edx, [esp+4]
16674
                mov     edi, ebp
16675
                mov     ebx, edx
16676
                xor     ebp, 0FFFFFFFFh
16677
                xor     ebx, 0FFFFFFFFh
16678
                and     ebp, ecx
16679
                and     ebx, [esp]
16680
                xor     ebp, [esp+10h]
16681
                xor     ebx, edx
16682
                xor     ebp, [esp+18h]
16683
                xor     ebx, ebp
16684
                mov     ebp, edi
16685
                and     ebx, [esp+0Ch]
16686
                and     ebp, [esp+10h]
16687
                and     edi, edx
16688
                xor     ebp, ecx
16689
                xor     ebx, [esp+18h]
16690
                ror     eax, 0Bh
16691
                xor     ebp, edx
16692
                mov     edx, [esi+64h]
16693
                and     ebp, [esp]
16694
                xor     ebx, edi
16695
                xor     ebp, ebx
16696
                lea     edx, [eax+edx-149AE478h]
16697
                ror     ebp, 7
16698
                add     ebp, edx
16699
                mov     eax, [esp+4]
16700
                mov     [esp+8], ebp
16701
                mov     ebp, [esp+10h]
16702
                mov     ecx, [esp+18h]
16703
                mov     edx, [esp]
16704
                mov     edi, ebp
16705
                mov     ebx, edx
16706
                xor     ebp, 0FFFFFFFFh
16707
                xor     ebx, 0FFFFFFFFh
16708
                and     ebp, ecx
16709
                and     ebx, [esp+1Ch]
16710
                xor     ebp, [esp+0Ch]
16711
                xor     ebx, edx
16712
                xor     ebp, [esp+14h]
16713
                xor     ebx, ebp
16714
                mov     ebp, edi
16715
                and     ebx, [esp+8]
16716
                and     ebp, [esp+0Ch]
16717
                and     edi, edx
16718
                xor     ebp, ecx
16719
                xor     ebx, [esp+14h]
16720
                ror     eax, 0Bh
16721
                xor     ebp, edx
16722
                mov     edx, [esi+4Ch]
16723
                and     ebp, [esp+1Ch]
16724
                xor     ebx, edi
16725
                xor     ebp, ebx
16726
                lea     edx, [eax+edx+23893E81h]
16727
                ror     ebp, 7
16728
                add     ebp, edx
16729
                mov     eax, [esp]
16730
                mov     [esp+4], ebp
16731
                mov     ebp, [esp+0Ch]
16732
                mov     ecx, [esp+14h]
16733
                mov     edx, [esp+1Ch]
16734
                mov     edi, ebp
16735
                mov     ebx, edx
16736
                xor     ebp, 0FFFFFFFFh
16737
                xor     ebx, 0FFFFFFFFh
16738
                and     ebp, ecx
16739
                and     ebx, [esp+18h]
16740
                xor     ebp, [esp+8]
16741
                xor     ebx, edx
16742
                xor     ebp, [esp+10h]
16743
                xor     ebx, ebp
16744
                mov     ebp, edi
16745
                and     ebx, [esp+4]
16746
                and     ebp, [esp+8]
16747
                and     edi, edx
16748
                xor     ebp, ecx
16749
                xor     ebx, [esp+10h]
16750
                ror     eax, 0Bh
16751
                xor     ebp, edx
16752
                mov     edx, [esi+0Ch]
16753
                and     ebp, [esp+18h]
16754
                xor     ebx, edi
16755
                xor     ebp, ebx
16756
                lea     edx, [eax+edx-2C69533Bh]
16757
                ror     ebp, 7
16758
                add     ebp, edx
16759
                mov     eax, [esp+1Ch]
16760
                mov     [esp], ebp
16761
                mov     ebp, [esp+8]
16762
                mov     ecx, [esp+10h]
16763
                mov     edx, [esp+18h]
16764
                mov     edi, ebp
16765
                mov     ebx, edx
16766
                xor     ebp, 0FFFFFFFFh
16767
                xor     ebx, 0FFFFFFFFh
16768
                and     ebp, ecx
16769
                and     ebx, [esp+14h]
16770
                xor     ebp, [esp+4]
16771
                xor     ebx, edx
16772
                xor     ebp, [esp+0Ch]
16773
                xor     ebx, ebp
16774
                mov     ebp, edi
16775
                and     ebx, [esp]
16776
                and     ebp, [esp+4]
16777
                and     edi, edx
16778
                xor     ebp, ecx
16779
                xor     ebx, [esp+0Ch]
16780
                ror     eax, 0Bh
16781
                xor     ebp, edx
16782
                mov     edx, [esi+58h]
16783
                and     ebp, [esp+14h]
16784
                xor     ebx, edi
16785
                xor     ebp, ebx
16786
                lea     edx, [eax+edx+0F6D6FF3h]
16787
                ror     ebp, 7
16788
                add     ebp, edx
16789
                mov     eax, [esp+18h]
16790
                mov     [esp+1Ch], ebp
16791
                mov     ebp, [esp+4]
16792
                mov     ecx, [esp+0Ch]
16793
                mov     edx, [esp+14h]
16794
                mov     edi, ebp
16795
                mov     ebx, edx
16796
                xor     ebp, 0FFFFFFFFh
16797
                xor     ebx, 0FFFFFFFFh
16798
                and     ebp, ecx
16799
                and     ebx, [esp+10h]
16800
                xor     ebp, [esp]
16801
                xor     ebx, edx
16802
                xor     ebp, [esp+8]
16803
                xor     ebx, ebp
16804
                mov     ebp, edi
16805
                and     ebx, [esp+1Ch]
16806
                and     ebp, [esp]
16807
                and     edi, edx
16808
                xor     ebp, ecx
16809
                xor     ebx, [esp+8]
16810
                ror     eax, 0Bh
16811
                xor     ebp, edx
16812
                mov     edx, [esi+2Ch]
16813
                and     ebp, [esp+10h]
16814
                xor     ebx, edi
16815
                xor     ebp, ebx
16816
                lea     edx, [eax+edx-7C0BBDC7h]
16817
                ror     ebp, 7
16818
                add     ebp, edx
16819
                mov     eax, [esp+14h]
16820
                mov     [esp+18h], ebp
16821
                mov     ebp, [esp]
16822
                mov     ecx, [esp+8]
16823
                mov     edx, [esp+10h]
16824
                mov     edi, ebp
16825
                mov     ebx, edx
16826
                xor     ebp, 0FFFFFFFFh
16827
                xor     ebx, 0FFFFFFFFh
16828
                and     ebp, ecx
16829
                and     ebx, [esp+0Ch]
16830
                xor     ebp, [esp+1Ch]
16831
                xor     ebx, edx
16832
                xor     ebp, [esp+4]
16833
                xor     ebx, ebp
16834
                mov     ebp, edi
16835
                and     ebx, [esp+18h]
16836
                and     ebp, [esp+1Ch]
16837
                and     edi, edx
16838
                xor     ebp, ecx
16839
                xor     ebx, [esp+4]
16840
                ror     eax, 0Bh
16841
                xor     ebp, edx
16842
                mov     edx, [esi+7Ch]
16843
                and     ebp, [esp+0Ch]
16844
                xor     ebx, edi
16845
                xor     ebp, ebx
16846
                lea     edx, [eax+edx+2E0B4482h]
16847
                ror     ebp, 7
16848
                add     ebp, edx
16849
                mov     eax, [esp+10h]
16850
                mov     [esp+14h], ebp
16851
                mov     ebp, [esp+1Ch]
16852
                mov     ecx, [esp+4]
16853
                mov     edx, [esp+0Ch]
16854
                mov     edi, ebp
16855
                mov     ebx, edx
16856
                xor     ebp, 0FFFFFFFFh
16857
                xor     ebx, 0FFFFFFFFh
16858
                and     ebp, ecx
16859
                and     ebx, [esp+8]
16860
                xor     ebp, [esp+18h]
16861
                xor     ebx, edx
16862
                xor     ebp, [esp]
16863
                xor     ebx, ebp
16864
                mov     ebp, edi
16865
                and     ebx, [esp+14h]
16866
                and     ebp, [esp+18h]
16867
                and     edi, edx
16868
                xor     ebp, ecx
16869
                xor     ebx, [esp]
16870
                ror     eax, 0Bh
16871
                xor     ebp, edx
16872
                mov     edx, [esi+54h]
16873
                and     ebp, [esp+8]
16874
                xor     ebx, edi
16875
                xor     ebp, ebx
16876
                lea     edx, [eax+edx-5B7BDFFCh]
16877
                ror     ebp, 7
16878
                add     ebp, edx
16879
                mov     eax, [esp+0Ch]
16880
                mov     [esp+10h], ebp
16881
                mov     ebp, [esp+18h]
16882
                mov     ecx, [esp]
16883
                mov     edx, [esp+8]
16884
                mov     edi, ebp
16885
                mov     ebx, edx
16886
                xor     ebp, 0FFFFFFFFh
16887
                xor     ebx, 0FFFFFFFFh
16888
                and     ebp, ecx
16889
                and     ebx, [esp+4]
16890
                xor     ebp, [esp+14h]
16891
                xor     ebx, edx
16892
                xor     ebp, [esp+1Ch]
16893
                xor     ebx, ebp
16894
                mov     ebp, edi
16895
                and     ebx, [esp+10h]
16896
                and     ebp, [esp+14h]
16897
                and     edi, edx
16898
                xor     ebp, ecx
16899
                xor     ebx, [esp+1Ch]
16900
                ror     eax, 0Bh
16901
                xor     ebp, edx
16902
                mov     edx, [esi+20h]
16903
                and     ebp, [esp+4]
16904
                xor     ebx, edi
16905
                xor     ebp, ebx
16906
                lea     edx, [eax+edx+69C8F04Ah]
16907
                ror     ebp, 7
16908
                add     ebp, edx
16909
                mov     eax, [esp+8]
16910
                mov     [esp+0Ch], ebp
16911
                mov     ebp, [esp+14h]
16912
                mov     ecx, [esp+1Ch]
16913
                mov     edx, [esp+4]
16914
                mov     edi, ebp
16915
                mov     ebx, edx
16916
                xor     ebp, 0FFFFFFFFh
16917
                xor     ebx, 0FFFFFFFFh
16918
                and     ebp, ecx
16919
                and     ebx, [esp]
16920
                xor     ebp, [esp+10h]
16921
                xor     ebx, edx
16922
                xor     ebp, [esp+18h]
16923
                xor     ebx, ebp
16924
                mov     ebp, edi
16925
                and     ebx, [esp+0Ch]
16926
                and     ebp, [esp+10h]
16927
                and     edi, edx
16928
                xor     ebp, ecx
16929
                xor     ebx, [esp+18h]
16930
                ror     eax, 0Bh
16931
                xor     ebp, edx
16932
                mov     edx, [esi+6Ch]
16933
                and     ebp, [esp]
16934
                xor     ebx, edi
16935
                xor     ebp, ebx
16936
                lea     edx, [eax+edx-61E064A2h]
16937
                ror     ebp, 7
16938
                add     ebp, edx
16939
                mov     eax, [esp+4]
16940
                mov     [esp+8], ebp
16941
                mov     ebp, [esp+10h]
16942
                mov     ecx, [esp+18h]
16943
                mov     edx, [esp]
16944
                mov     edi, ebp
16945
                mov     ebx, edx
16946
                xor     ebp, 0FFFFFFFFh
16947
                xor     ebx, 0FFFFFFFFh
16948
                and     ebp, ecx
16949
                and     ebx, [esp+1Ch]
16950
                xor     ebp, [esp+0Ch]
16951
                xor     ebx, edx
16952
                xor     ebp, [esp+14h]
16953
                xor     ebx, ebp
16954
                mov     ebp, edi
16955
                and     ebx, [esp+8]
16956
                and     ebp, [esp+0Ch]
16957
                and     edi, edx
16958
                xor     ebp, ecx
16959
                xor     ebx, [esp+14h]
16960
                ror     eax, 0Bh
16961
                xor     ebp, edx
16962
                mov     edx, [esi+30h]
16963
                and     ebp, [esp+1Ch]
16964
                xor     ebx, edi
16965
                xor     ebp, ebx
16966
                lea     edx, [eax+edx+21C66842h]
16967
                ror     ebp, 7
16968
                add     ebp, edx
16969
                mov     eax, [esp]
16970
                mov     [esp+4], ebp
16971
                mov     ebp, [esp+0Ch]
16972
                mov     ecx, [esp+14h]
16973
                mov     edx, [esp+1Ch]
16974
                mov     edi, ebp
16975
                mov     ebx, edx
16976
                xor     ebp, 0FFFFFFFFh
16977
                xor     ebx, 0FFFFFFFFh
16978
                and     ebp, ecx
16979
                and     ebx, [esp+18h]
16980
                xor     ebp, [esp+8]
16981
                xor     ebx, edx
16982
                xor     ebp, [esp+10h]
16983
                xor     ebx, ebp
16984
                mov     ebp, edi
16985
                and     ebx, [esp+4]
16986
                and     ebp, [esp+8]
16987
                and     edi, edx
16988
                xor     ebp, ecx
16989
                xor     ebx, [esp+10h]
16990
                ror     eax, 0Bh
16991
                xor     ebp, edx
16992
                mov     edx, [esi+24h]
16993
                and     ebp, [esp+18h]
16994
                xor     ebx, edi
16995
                xor     ebp, ebx
16996
                lea     edx, [eax+edx-9169366h]
16997
                ror     ebp, 7
16998
                add     ebp, edx
16999
                mov     eax, [esp+1Ch]
17000
                mov     [esp], ebp
17001
                mov     ebp, [esp+8]
17002
                mov     ecx, [esp+10h]
17003
                mov     edx, [esp+18h]
17004
                mov     edi, ebp
17005
                mov     ebx, edx
17006
                xor     ebp, 0FFFFFFFFh
17007
                xor     ebx, 0FFFFFFFFh
17008
                and     ebp, ecx
17009
                and     ebx, [esp+14h]
17010
                xor     ebp, [esp+4]
17011
                xor     ebx, edx
17012
                xor     ebp, [esp+0Ch]
17013
                xor     ebx, ebp
17014
                mov     ebp, edi
17015
                and     ebx, [esp]
17016
                and     ebp, [esp+4]
17017
                and     edi, edx
17018
                xor     ebp, ecx
17019
                xor     ebx, [esp+0Ch]
17020
                ror     eax, 0Bh
17021
                xor     ebp, edx
17022
                mov     edx, [esi+4]
17023
                and     ebp, [esp+14h]
17024
                xor     ebx, edi
17025
                xor     ebp, ebx
17026
                lea     edx, [eax+edx+670C9C61h]
17027
                ror     ebp, 7
17028
                add     ebp, edx
17029
                mov     eax, [esp+18h]
17030
                mov     [esp+1Ch], ebp
17031
                mov     ebp, [esp+4]
17032
                mov     ecx, [esp+0Ch]
17033
                mov     edx, [esp+14h]
17034
                mov     edi, ebp
17035
                mov     ebx, edx
17036
                xor     ebp, 0FFFFFFFFh
17037
                xor     ebx, 0FFFFFFFFh
17038
                and     ebp, ecx
17039
                and     ebx, [esp+10h]
17040
                xor     ebp, [esp]
17041
                xor     ebx, edx
17042
                xor     ebp, [esp+8]
17043
                xor     ebx, ebp
17044
                mov     ebp, edi
17045
                and     ebx, [esp+1Ch]
17046
                and     ebp, [esp]
17047
                and     edi, edx
17048
                xor     ebp, ecx
17049
                xor     ebx, [esp+8]
17050
                ror     eax, 0Bh
17051
                xor     ebp, edx
17052
                mov     edx, [esi+74h]
17053
                and     ebp, [esp+10h]
17054
                xor     ebx, edi
17055
                xor     ebp, ebx
17056
                lea     edx, [eax+edx-542C7710h]
17057
                ror     ebp, 7
17058
                add     ebp, edx
17059
                mov     eax, [esp+14h]
17060
                mov     [esp+18h], ebp
17061
                mov     ebp, [esp]
17062
                mov     ecx, [esp+8]
17063
                mov     edx, [esp+10h]
17064
                mov     edi, ebp
17065
                mov     ebx, edx
17066
                xor     ebp, 0FFFFFFFFh
17067
                xor     ebx, 0FFFFFFFFh
17068
                and     ebp, ecx
17069
                and     ebx, [esp+0Ch]
17070
                xor     ebp, [esp+1Ch]
17071
                xor     ebx, edx
17072
                xor     ebp, [esp+4]
17073
                xor     ebx, ebp
17074
                mov     ebp, edi
17075
                and     ebx, [esp+18h]
17076
                and     ebp, [esp+1Ch]
17077
                and     edi, edx
17078
                xor     ebp, ecx
17079
                xor     ebx, [esp+4]
17080
                ror     eax, 0Bh
17081
                xor     ebp, edx
17082
                mov     edx, [esi+14h]
17083
                and     ebp, [esp+0Ch]
17084
                xor     ebx, edi
17085
                xor     ebp, ebx
17086
                lea     edx, [eax+edx+6A51A0D2h]
17087
                ror     ebp, 7
17088
                add     ebp, edx
17089
                mov     eax, [esp+10h]
17090
                mov     [esp+14h], ebp
17091
                mov     ebp, [esp+1Ch]
17092
                mov     ecx, [esp+4]
17093
                mov     edx, [esp+0Ch]
17094
                mov     edi, ebp
17095
                mov     ebx, edx
17096
                xor     ebp, 0FFFFFFFFh
17097
                xor     ebx, 0FFFFFFFFh
17098
                and     ebp, ecx
17099
                and     ebx, [esp+8]
17100
                xor     ebp, [esp+18h]
17101
                xor     ebx, edx
17102
                xor     ebp, [esp]
17103
                xor     ebx, ebp
17104
                mov     ebp, edi
17105
                and     ebx, [esp+14h]
17106
                and     ebp, [esp+18h]
17107
                and     edi, edx
17108
                xor     ebp, ecx
17109
                xor     ebx, [esp]
17110
                ror     eax, 0Bh
17111
                xor     ebp, edx
17112
                mov     edx, [esi+3Ch]
17113
                and     ebp, [esp+8]
17114
                xor     ebx, edi
17115
                xor     ebp, ebx
17116
                lea     edx, [eax+edx-27ABD098h]
17117
                ror     ebp, 7
17118
                add     ebp, edx
17119
                mov     eax, [esp+0Ch]
17120
                mov     [esp+10h], ebp
17121
                mov     ebp, [esp+18h]
17122
                mov     ecx, [esp]
17123
                mov     edx, [esp+8]
17124
                mov     edi, ebp
17125
                mov     ebx, edx
17126
                xor     ebp, 0FFFFFFFFh
17127
                xor     ebx, 0FFFFFFFFh
17128
                and     ebp, ecx
17129
                and     ebx, [esp+4]
17130
                xor     ebp, [esp+14h]
17131
                xor     ebx, edx
17132
                xor     ebp, [esp+1Ch]
17133
                xor     ebx, ebp
17134
                mov     ebp, edi
17135
                and     ebx, [esp+10h]
17136
                and     ebp, [esp+14h]
17137
                and     edi, edx
17138
                xor     ebp, ecx
17139
                xor     ebx, [esp+1Ch]
17140
                ror     eax, 0Bh
17141
                xor     ebp, edx
17142
                mov     edx, [esi+44h]
17143
                and     ebp, [esp+4]
17144
                xor     ebx, edi
17145
                xor     ebp, ebx
17146
                lea     edx, [eax+edx-69F058D8h]
17147
                ror     ebp, 7
17148
                add     ebp, edx
17149
                mov     eax, [esp+8]
17150
                mov     [esp+0Ch], ebp
17151
                mov     ebp, [esp+14h]
17152
                mov     ecx, [esp+1Ch]
17153
                mov     edx, [esp+4]
17154
                mov     edi, ebp
17155
                mov     ebx, edx
17156
                xor     ebp, 0FFFFFFFFh
17157
                xor     ebx, 0FFFFFFFFh
17158
                and     ebp, ecx
17159
                and     ebx, [esp]
17160
                xor     ebp, [esp+10h]
17161
                xor     ebx, edx
17162
                xor     ebp, [esp+18h]
17163
                xor     ebx, ebp
17164
                mov     ebp, edi
17165
                and     ebx, [esp+0Ch]
17166
                and     ebp, [esp+10h]
17167
                and     edi, edx
17168
                xor     ebp, ecx
17169
                xor     ebx, [esp+18h]
17170
                ror     eax, 0Bh
17171
                xor     ebp, edx
17172
                mov     edx, [esi+28h]
17173
                and     ebp, [esp]
17174
                xor     ebx, edi
17175
                xor     ebp, ebx
17176
                lea     edx, [eax+edx-54AECC5Dh]
17177
                ror     ebp, 7
17178
                add     ebp, edx
17179
                mov     eax, [esp+4]
17180
                mov     [esp+8], ebp
17181
                mov     ebp, [esp+10h]
17182
                mov     ecx, [esp+18h]
17183
                mov     edx, [esp]
17184
                mov     edi, ebp
17185
                mov     ebx, edx
17186
                xor     ebp, 0FFFFFFFFh
17187
                xor     ebx, 0FFFFFFFFh
17188
                and     ebp, ecx
17189
                and     ebx, [esp+1Ch]
17190
                xor     ebp, [esp+0Ch]
17191
                xor     ebx, edx
17192
                xor     ebp, [esp+14h]
17193
                xor     ebx, ebp
17194
                mov     ebp, edi
17195
                and     ebx, [esp+8]
17196
                and     ebp, [esp+0Ch]
17197
                and     edi, edx
17198
                xor     ebp, ecx
17199
                xor     ebx, [esp+14h]
17200
                ror     eax, 0Bh
17201
                xor     ebp, edx
17202
                mov     edx, [esi+40h]
17203
                and     ebp, [esp+1Ch]
17204
                xor     ebx, edi
17205
                xor     ebp, ebx
17206
                lea     edx, [eax+edx+6EEF0B6Ch]
17207
                ror     ebp, 7
17208
                add     ebp, edx
17209
                mov     eax, [esp]
17210
                mov     [esp+4], ebp
17211
                mov     ebp, [esp+0Ch]
17212
                mov     ecx, [esp+14h]
17213
                mov     edx, [esp+1Ch]
17214
                mov     edi, ebp
17215
                mov     ebx, edx
17216
                xor     ebp, 0FFFFFFFFh
17217
                xor     ebx, 0FFFFFFFFh
17218
                and     ebp, ecx
17219
                and     ebx, [esp+18h]
17220
                xor     ebp, [esp+8]
17221
                xor     ebx, edx
17222
                xor     ebp, [esp+10h]
17223
                xor     ebx, ebp
17224
                mov     ebp, edi
17225
                and     ebx, [esp+4]
17226
                and     ebp, [esp+8]
17227
                and     edi, edx
17228
                xor     ebp, ecx
17229
                xor     ebx, [esp+10h]
17230
                ror     eax, 0Bh
17231
                xor     ebp, edx
17232
                mov     edx, [esi+34h]
17233
                and     ebp, [esp+18h]
17234
                xor     ebx, edi
17235
                xor     ebp, ebx
17236
                lea     edx, [eax+edx+137A3BE4h]
17237
                ror     ebp, 7
17238
                add     ebp, edx
17239
                mov     eax, [esp+1Ch]
17240
                mov     [esp], ebp
17241
                mov     edi, [esp+24h]
17242
                mov     eax, [esp]
17243
                mov     ebx, [esp+4]
17244
                add     [edi], eax
17245
                add     [edi+4], ebx
17246
                mov     ecx, [esp+8]
17247
                mov     edx, [esp+0Ch]
17248
                add     [edi+8], ecx
17249
                add     [edi+0Ch], edx
17250
                mov     eax, [esp+10h]
17251
                mov     ebx, [esp+14h]
17252
                add     [edi+10h], eax
17253
                add     [edi+14h], ebx
17254
                mov     ebp, [esp+28h]
17255
                mov     ecx, [esp+18h]
17256
                mov     edx, [esp+1Ch]
17257
                mov     esp, ebp
17258
                add     [edi+18h], ecx
17259
                add     [edi+1Ch], edx
17260
                pop     ebp
17261
                pop     edi
17262
                pop     esi
17263
                pop     ebx
17264
end;
17265
 
17266
procedure THashBaseHaval.DoTransform5(Buffer: PLongArray);
17267
asm
17268
                push    ebx
17269
                push    esi
17270
                push    edi
17271
                lea     edi, [eax].THashBaseHaval.FDigest
17272
                mov     esi, edx
17273
                push    ebp
17274
                mov     ebp, esp
17275
                add     esp, 0FFFFFFD4h
17276
                and     esp, 0FFFFFFC0h
17277
                mov     eax, [edi]
17278
                mov     ebx, [edi+4]
17279
                mov     [esp+20h], esi
17280
                mov     [esp+24h], edi
17281
                mov     [esp+28h], ebp
17282
                mov     [esp], eax
17283
                mov     [esp+4], ebx
17284
                mov     ecx, [edi+8]
17285
                mov     edx, [edi+0Ch]
17286
                mov     [esp+8], ecx
17287
                mov     [esp+0Ch], edx
17288
                mov     eax, [edi+10h]
17289
                mov     ebx, [edi+14h]
17290
                mov     [esp+10h], eax
17291
                mov     [esp+14h], ebx
17292
                mov     ecx, [edi+18h]
17293
                mov     edx, [edi+1Ch]
17294
                mov     [esp+18h], ecx
17295
                mov     [esp+1Ch], edx
17296
                mov     eax, edx
17297
                mov     ebp, [esp+10h]
17298
                mov     ebx, [esp+4]
17299
                mov     ecx, [esp+18h]
17300
                ror     eax, 0Bh
17301
                xor     ebx, ecx
17302
                mov     edi, [esp+0Ch]
17303
                and     ebx, [esp+8]
17304
                and     edi, [esp]
17305
                xor     ecx, ebx
17306
                and     ebp, [esp+14h]
17307
                xor     edi, ecx
17308
                mov     edx, [esi]
17309
                xor     ebp, edi
17310
                add     eax, edx
17311
                ror     ebp, 7
17312
                add     ebp, eax
17313
                mov     eax, [esp+18h]
17314
                mov     [esp+1Ch], ebp
17315
                mov     ebp, [esp+0Ch]
17316
                mov     ebx, [esp]
17317
                mov     ecx, [esp+14h]
17318
                ror     eax, 0Bh
17319
                xor     ebx, ecx
17320
                mov     edi, [esp+8]
17321
                and     ebx, [esp+4]
17322
                and     edi, [esp+1Ch]
17323
                xor     ecx, ebx
17324
                and     ebp, [esp+10h]
17325
                xor     edi, ecx
17326
                mov     edx, [esi+4]
17327
                xor     ebp, edi
17328
                add     eax, edx
17329
                ror     ebp, 7
17330
                add     ebp, eax
17331
                mov     eax, [esp+14h]
17332
                mov     [esp+18h], ebp
17333
                mov     ebp, [esp+8]
17334
                mov     ebx, [esp+1Ch]
17335
                mov     ecx, [esp+10h]
17336
                ror     eax, 0Bh
17337
                xor     ebx, ecx
17338
                mov     edi, [esp+4]
17339
                and     ebx, [esp]
17340
                and     edi, [esp+18h]
17341
                xor     ecx, ebx
17342
                and     ebp, [esp+0Ch]
17343
                xor     edi, ecx
17344
                mov     edx, [esi+8]
17345
                xor     ebp, edi
17346
                add     eax, edx
17347
                ror     ebp, 7
17348
                add     ebp, eax
17349
                mov     eax, [esp+10h]
17350
                mov     [esp+14h], ebp
17351
                mov     ebp, [esp+4]
17352
                mov     ebx, [esp+18h]
17353
                mov     ecx, [esp+0Ch]
17354
                ror     eax, 0Bh
17355
                xor     ebx, ecx
17356
                mov     edi, [esp]
17357
                and     ebx, [esp+1Ch]
17358
                and     edi, [esp+14h]
17359
                xor     ecx, ebx
17360
                and     ebp, [esp+8]
17361
                xor     edi, ecx
17362
                mov     edx, [esi+0Ch]
17363
                xor     ebp, edi
17364
                add     eax, edx
17365
                ror     ebp, 7
17366
                add     ebp, eax
17367
                mov     eax, [esp+0Ch]
17368
                mov     [esp+10h], ebp
17369
                mov     ebp, [esp]
17370
                mov     ebx, [esp+14h]
17371
                mov     ecx, [esp+8]
17372
                ror     eax, 0Bh
17373
                xor     ebx, ecx
17374
                mov     edi, [esp+1Ch]
17375
                and     ebx, [esp+18h]
17376
                and     edi, [esp+10h]
17377
                xor     ecx, ebx
17378
                and     ebp, [esp+4]
17379
                xor     edi, ecx
17380
                mov     edx, [esi+10h]
17381
                xor     ebp, edi
17382
                add     eax, edx
17383
                ror     ebp, 7
17384
                add     ebp, eax
17385
                mov     eax, [esp+8]
17386
                mov     [esp+0Ch], ebp
17387
                mov     ebp, [esp+1Ch]
17388
                mov     ebx, [esp+10h]
17389
                mov     ecx, [esp+4]
17390
                ror     eax, 0Bh
17391
                xor     ebx, ecx
17392
                mov     edi, [esp+18h]
17393
                and     ebx, [esp+14h]
17394
                and     edi, [esp+0Ch]
17395
                xor     ecx, ebx
17396
                and     ebp, [esp]
17397
                xor     edi, ecx
17398
                mov     edx, [esi+14h]
17399
                xor     ebp, edi
17400
                add     eax, edx
17401
                ror     ebp, 7
17402
                add     ebp, eax
17403
                mov     eax, [esp+4]
17404
                mov     [esp+8], ebp
17405
                mov     ebp, [esp+18h]
17406
                mov     ebx, [esp+0Ch]
17407
                mov     ecx, [esp]
17408
                ror     eax, 0Bh
17409
                xor     ebx, ecx
17410
                mov     edi, [esp+14h]
17411
                and     ebx, [esp+10h]
17412
                and     edi, [esp+8]
17413
                xor     ecx, ebx
17414
                and     ebp, [esp+1Ch]
17415
                xor     edi, ecx
17416
                mov     edx, [esi+18h]
17417
                xor     ebp, edi
17418
                add     eax, edx
17419
                ror     ebp, 7
17420
                add     ebp, eax
17421
                mov     eax, [esp]
17422
                mov     [esp+4], ebp
17423
                mov     ebp, [esp+14h]
17424
                mov     ebx, [esp+8]
17425
                mov     ecx, [esp+1Ch]
17426
                ror     eax, 0Bh
17427
                xor     ebx, ecx
17428
                mov     edi, [esp+10h]
17429
                and     ebx, [esp+0Ch]
17430
                and     edi, [esp+4]
17431
                xor     ecx, ebx
17432
                and     ebp, [esp+18h]
17433
                xor     edi, ecx
17434
                mov     edx, [esi+1Ch]
17435
                xor     ebp, edi
17436
                add     eax, edx
17437
                ror     ebp, 7
17438
                add     ebp, eax
17439
                mov     eax, [esp+1Ch]
17440
                mov     [esp], ebp
17441
                mov     ebp, [esp+10h]
17442
                mov     ebx, [esp+4]
17443
                mov     ecx, [esp+18h]
17444
                ror     eax, 0Bh
17445
                xor     ebx, ecx
17446
                mov     edi, [esp+0Ch]
17447
                and     ebx, [esp+8]
17448
                and     edi, [esp]
17449
                xor     ecx, ebx
17450
                and     ebp, [esp+14h]
17451
                xor     edi, ecx
17452
                mov     edx, [esi+20h]
17453
                xor     ebp, edi
17454
                add     eax, edx
17455
                ror     ebp, 7
17456
                add     ebp, eax
17457
                mov     eax, [esp+18h]
17458
                mov     [esp+1Ch], ebp
17459
                mov     ebp, [esp+0Ch]
17460
                mov     ebx, [esp]
17461
                mov     ecx, [esp+14h]
17462
                ror     eax, 0Bh
17463
                xor     ebx, ecx
17464
                mov     edi, [esp+8]
17465
                and     ebx, [esp+4]
17466
                and     edi, [esp+1Ch]
17467
                xor     ecx, ebx
17468
                and     ebp, [esp+10h]
17469
                xor     edi, ecx
17470
                mov     edx, [esi+24h]
17471
                xor     ebp, edi
17472
                add     eax, edx
17473
                ror     ebp, 7
17474
                add     ebp, eax
17475
                mov     eax, [esp+14h]
17476
                mov     [esp+18h], ebp
17477
                mov     ebp, [esp+8]
17478
                mov     ebx, [esp+1Ch]
17479
                mov     ecx, [esp+10h]
17480
                ror     eax, 0Bh
17481
                xor     ebx, ecx
17482
                mov     edi, [esp+4]
17483
                and     ebx, [esp]
17484
                and     edi, [esp+18h]
17485
                xor     ecx, ebx
17486
                and     ebp, [esp+0Ch]
17487
                xor     edi, ecx
17488
                mov     edx, [esi+28h]
17489
                xor     ebp, edi
17490
                add     eax, edx
17491
                ror     ebp, 7
17492
                add     ebp, eax
17493
                mov     eax, [esp+10h]
17494
                mov     [esp+14h], ebp
17495
                mov     ebp, [esp+4]
17496
                mov     ebx, [esp+18h]
17497
                mov     ecx, [esp+0Ch]
17498
                ror     eax, 0Bh
17499
                xor     ebx, ecx
17500
                mov     edi, [esp]
17501
                and     ebx, [esp+1Ch]
17502
                and     edi, [esp+14h]
17503
                xor     ecx, ebx
17504
                and     ebp, [esp+8]
17505
                xor     edi, ecx
17506
                mov     edx, [esi+2Ch]
17507
                xor     ebp, edi
17508
                add     eax, edx
17509
                ror     ebp, 7
17510
                add     ebp, eax
17511
                mov     eax, [esp+0Ch]
17512
                mov     [esp+10h], ebp
17513
                mov     ebp, [esp]
17514
                mov     ebx, [esp+14h]
17515
                mov     ecx, [esp+8]
17516
                ror     eax, 0Bh
17517
                xor     ebx, ecx
17518
                mov     edi, [esp+1Ch]
17519
                and     ebx, [esp+18h]
17520
                and     edi, [esp+10h]
17521
                xor     ecx, ebx
17522
                and     ebp, [esp+4]
17523
                xor     edi, ecx
17524
                mov     edx, [esi+30h]
17525
                xor     ebp, edi
17526
                add     eax, edx
17527
                ror     ebp, 7
17528
                add     ebp, eax
17529
                mov     eax, [esp+8]
17530
                mov     [esp+0Ch], ebp
17531
                mov     ebp, [esp+1Ch]
17532
                mov     ebx, [esp+10h]
17533
                mov     ecx, [esp+4]
17534
                ror     eax, 0Bh
17535
                xor     ebx, ecx
17536
                mov     edi, [esp+18h]
17537
                and     ebx, [esp+14h]
17538
                and     edi, [esp+0Ch]
17539
                xor     ecx, ebx
17540
                and     ebp, [esp]
17541
                xor     edi, ecx
17542
                mov     edx, [esi+34h]
17543
                xor     ebp, edi
17544
                add     eax, edx
17545
                ror     ebp, 7
17546
                add     ebp, eax
17547
                mov     eax, [esp+4]
17548
                mov     [esp+8], ebp
17549
                mov     ebp, [esp+18h]
17550
                mov     ebx, [esp+0Ch]
17551
                mov     ecx, [esp]
17552
                ror     eax, 0Bh
17553
                xor     ebx, ecx
17554
                mov     edi, [esp+14h]
17555
                and     ebx, [esp+10h]
17556
                and     edi, [esp+8]
17557
                xor     ecx, ebx
17558
                and     ebp, [esp+1Ch]
17559
                xor     edi, ecx
17560
                mov     edx, [esi+38h]
17561
                xor     ebp, edi
17562
                add     eax, edx
17563
                ror     ebp, 7
17564
                add     ebp, eax
17565
                mov     eax, [esp]
17566
                mov     [esp+4], ebp
17567
                mov     ebp, [esp+14h]
17568
                mov     ebx, [esp+8]
17569
                mov     ecx, [esp+1Ch]
17570
                ror     eax, 0Bh
17571
                xor     ebx, ecx
17572
                mov     edi, [esp+10h]
17573
                and     ebx, [esp+0Ch]
17574
                and     edi, [esp+4]
17575
                xor     ecx, ebx
17576
                and     ebp, [esp+18h]
17577
                xor     edi, ecx
17578
                mov     edx, [esi+3Ch]
17579
                xor     ebp, edi
17580
                add     eax, edx
17581
                ror     ebp, 7
17582
                add     ebp, eax
17583
                mov     eax, [esp+1Ch]
17584
                mov     [esp], ebp
17585
                mov     ebp, [esp+10h]
17586
                mov     ebx, [esp+4]
17587
                mov     ecx, [esp+18h]
17588
                ror     eax, 0Bh
17589
                xor     ebx, ecx
17590
                mov     edi, [esp+0Ch]
17591
                and     ebx, [esp+8]
17592
                and     edi, [esp]
17593
                xor     ecx, ebx
17594
                and     ebp, [esp+14h]
17595
                xor     edi, ecx
17596
                mov     edx, [esi+40h]
17597
                xor     ebp, edi
17598
                add     eax, edx
17599
                ror     ebp, 7
17600
                add     ebp, eax
17601
                mov     eax, [esp+18h]
17602
                mov     [esp+1Ch], ebp
17603
                mov     ebp, [esp+0Ch]
17604
                mov     ebx, [esp]
17605
                mov     ecx, [esp+14h]
17606
                ror     eax, 0Bh
17607
                xor     ebx, ecx
17608
                mov     edi, [esp+8]
17609
                and     ebx, [esp+4]
17610
                and     edi, [esp+1Ch]
17611
                xor     ecx, ebx
17612
                and     ebp, [esp+10h]
17613
                xor     edi, ecx
17614
                mov     edx, [esi+44h]
17615
                xor     ebp, edi
17616
                add     eax, edx
17617
                ror     ebp, 7
17618
                add     ebp, eax
17619
                mov     eax, [esp+14h]
17620
                mov     [esp+18h], ebp
17621
                mov     ebp, [esp+8]
17622
                mov     ebx, [esp+1Ch]
17623
                mov     ecx, [esp+10h]
17624
                ror     eax, 0Bh
17625
                xor     ebx, ecx
17626
                mov     edi, [esp+4]
17627
                and     ebx, [esp]
17628
                and     edi, [esp+18h]
17629
                xor     ecx, ebx
17630
                and     ebp, [esp+0Ch]
17631
                xor     edi, ecx
17632
                mov     edx, [esi+48h]
17633
                xor     ebp, edi
17634
                add     eax, edx
17635
                ror     ebp, 7
17636
                add     ebp, eax
17637
                mov     eax, [esp+10h]
17638
                mov     [esp+14h], ebp
17639
                mov     ebp, [esp+4]
17640
                mov     ebx, [esp+18h]
17641
                mov     ecx, [esp+0Ch]
17642
                ror     eax, 0Bh
17643
                xor     ebx, ecx
17644
                mov     edi, [esp]
17645
                and     ebx, [esp+1Ch]
17646
                and     edi, [esp+14h]
17647
                xor     ecx, ebx
17648
                and     ebp, [esp+8]
17649
                xor     edi, ecx
17650
                mov     edx, [esi+4Ch]
17651
                xor     ebp, edi
17652
                add     eax, edx
17653
                ror     ebp, 7
17654
                add     ebp, eax
17655
                mov     eax, [esp+0Ch]
17656
                mov     [esp+10h], ebp
17657
                mov     ebp, [esp]
17658
                mov     ebx, [esp+14h]
17659
                mov     ecx, [esp+8]
17660
                ror     eax, 0Bh
17661
                xor     ebx, ecx
17662
                mov     edi, [esp+1Ch]
17663
                and     ebx, [esp+18h]
17664
                and     edi, [esp+10h]
17665
                xor     ecx, ebx
17666
                and     ebp, [esp+4]
17667
                xor     edi, ecx
17668
                mov     edx, [esi+50h]
17669
                xor     ebp, edi
17670
                add     eax, edx
17671
                ror     ebp, 7
17672
                add     ebp, eax
17673
                mov     eax, [esp+8]
17674
                mov     [esp+0Ch], ebp
17675
                mov     ebp, [esp+1Ch]
17676
                mov     ebx, [esp+10h]
17677
                mov     ecx, [esp+4]
17678
                ror     eax, 0Bh
17679
                xor     ebx, ecx
17680
                mov     edi, [esp+18h]
17681
                and     ebx, [esp+14h]
17682
                and     edi, [esp+0Ch]
17683
                xor     ecx, ebx
17684
                and     ebp, [esp]
17685
                xor     edi, ecx
17686
                mov     edx, [esi+54h]
17687
                xor     ebp, edi
17688
                add     eax, edx
17689
                ror     ebp, 7
17690
                add     ebp, eax
17691
                mov     eax, [esp+4]
17692
                mov     [esp+8], ebp
17693
                mov     ebp, [esp+18h]
17694
                mov     ebx, [esp+0Ch]
17695
                mov     ecx, [esp]
17696
                ror     eax, 0Bh
17697
                xor     ebx, ecx
17698
                mov     edi, [esp+14h]
17699
                and     ebx, [esp+10h]
17700
                and     edi, [esp+8]
17701
                xor     ecx, ebx
17702
                and     ebp, [esp+1Ch]
17703
                xor     edi, ecx
17704
                mov     edx, [esi+58h]
17705
                xor     ebp, edi
17706
                add     eax, edx
17707
                ror     ebp, 7
17708
                add     ebp, eax
17709
                mov     eax, [esp]
17710
                mov     [esp+4], ebp
17711
                mov     ebp, [esp+14h]
17712
                mov     ebx, [esp+8]
17713
                mov     ecx, [esp+1Ch]
17714
                ror     eax, 0Bh
17715
                xor     ebx, ecx
17716
                mov     edi, [esp+10h]
17717
                and     ebx, [esp+0Ch]
17718
                and     edi, [esp+4]
17719
                xor     ecx, ebx
17720
                and     ebp, [esp+18h]
17721
                xor     edi, ecx
17722
                mov     edx, [esi+5Ch]
17723
                xor     ebp, edi
17724
                add     eax, edx
17725
                ror     ebp, 7
17726
                add     ebp, eax
17727
                mov     eax, [esp+1Ch]
17728
                mov     [esp], ebp
17729
                mov     ebp, [esp+10h]
17730
                mov     ebx, [esp+4]
17731
                mov     ecx, [esp+18h]
17732
                ror     eax, 0Bh
17733
                xor     ebx, ecx
17734
                mov     edi, [esp+0Ch]
17735
                and     ebx, [esp+8]
17736
                and     edi, [esp]
17737
                xor     ecx, ebx
17738
                and     ebp, [esp+14h]
17739
                xor     edi, ecx
17740
                mov     edx, [esi+60h]
17741
                xor     ebp, edi
17742
                add     eax, edx
17743
                ror     ebp, 7
17744
                add     ebp, eax
17745
                mov     eax, [esp+18h]
17746
                mov     [esp+1Ch], ebp
17747
                mov     ebp, [esp+0Ch]
17748
                mov     ebx, [esp]
17749
                mov     ecx, [esp+14h]
17750
                ror     eax, 0Bh
17751
                xor     ebx, ecx
17752
                mov     edi, [esp+8]
17753
                and     ebx, [esp+4]
17754
                and     edi, [esp+1Ch]
17755
                xor     ecx, ebx
17756
                and     ebp, [esp+10h]
17757
                xor     edi, ecx
17758
                mov     edx, [esi+64h]
17759
                xor     ebp, edi
17760
                add     eax, edx
17761
                ror     ebp, 7
17762
                add     ebp, eax
17763
                mov     eax, [esp+14h]
17764
                mov     [esp+18h], ebp
17765
                mov     ebp, [esp+8]
17766
                mov     ebx, [esp+1Ch]
17767
                mov     ecx, [esp+10h]
17768
                ror     eax, 0Bh
17769
                xor     ebx, ecx
17770
                mov     edi, [esp+4]
17771
                and     ebx, [esp]
17772
                and     edi, [esp+18h]
17773
                xor     ecx, ebx
17774
                and     ebp, [esp+0Ch]
17775
                xor     edi, ecx
17776
                mov     edx, [esi+68h]
17777
                xor     ebp, edi
17778
                add     eax, edx
17779
                ror     ebp, 7
17780
                add     ebp, eax
17781
                mov     eax, [esp+10h]
17782
                mov     [esp+14h], ebp
17783
                mov     ebp, [esp+4]
17784
                mov     ebx, [esp+18h]
17785
                mov     ecx, [esp+0Ch]
17786
                ror     eax, 0Bh
17787
                xor     ebx, ecx
17788
                mov     edi, [esp]
17789
                and     ebx, [esp+1Ch]
17790
                and     edi, [esp+14h]
17791
                xor     ecx, ebx
17792
                and     ebp, [esp+8]
17793
                xor     edi, ecx
17794
                mov     edx, [esi+6Ch]
17795
                xor     ebp, edi
17796
                add     eax, edx
17797
                ror     ebp, 7
17798
                add     ebp, eax
17799
                mov     eax, [esp+0Ch]
17800
                mov     [esp+10h], ebp
17801
                mov     ebp, [esp]
17802
                mov     ebx, [esp+14h]
17803
                mov     ecx, [esp+8]
17804
                ror     eax, 0Bh
17805
                xor     ebx, ecx
17806
                mov     edi, [esp+1Ch]
17807
                and     ebx, [esp+18h]
17808
                and     edi, [esp+10h]
17809
                xor     ecx, ebx
17810
                and     ebp, [esp+4]
17811
                xor     edi, ecx
17812
                mov     edx, [esi+70h]
17813
                xor     ebp, edi
17814
                add     eax, edx
17815
                ror     ebp, 7
17816
                add     ebp, eax
17817
                mov     eax, [esp+8]
17818
                mov     [esp+0Ch], ebp
17819
                mov     ebp, [esp+1Ch]
17820
                mov     ebx, [esp+10h]
17821
                mov     ecx, [esp+4]
17822
                ror     eax, 0Bh
17823
                xor     ebx, ecx
17824
                mov     edi, [esp+18h]
17825
                and     ebx, [esp+14h]
17826
                and     edi, [esp+0Ch]
17827
                xor     ecx, ebx
17828
                and     ebp, [esp]
17829
                xor     edi, ecx
17830
                mov     edx, [esi+74h]
17831
                xor     ebp, edi
17832
                add     eax, edx
17833
                ror     ebp, 7
17834
                add     ebp, eax
17835
                mov     eax, [esp+4]
17836
                mov     [esp+8], ebp
17837
                mov     ebp, [esp+18h]
17838
                mov     ebx, [esp+0Ch]
17839
                mov     ecx, [esp]
17840
                ror     eax, 0Bh
17841
                xor     ebx, ecx
17842
                mov     edi, [esp+14h]
17843
                and     ebx, [esp+10h]
17844
                and     edi, [esp+8]
17845
                xor     ecx, ebx
17846
                and     ebp, [esp+1Ch]
17847
                xor     edi, ecx
17848
                mov     edx, [esi+78h]
17849
                xor     ebp, edi
17850
                add     eax, edx
17851
                ror     ebp, 7
17852
                add     ebp, eax
17853
                mov     eax, [esp]
17854
                mov     [esp+4], ebp
17855
                mov     ebp, [esp+14h]
17856
                mov     ebx, [esp+8]
17857
                mov     ecx, [esp+1Ch]
17858
                ror     eax, 0Bh
17859
                xor     ebx, ecx
17860
                mov     edi, [esp+10h]
17861
                and     ebx, [esp+0Ch]
17862
                and     edi, [esp+4]
17863
                xor     ecx, ebx
17864
                and     ebp, [esp+18h]
17865
                xor     edi, ecx
17866
                mov     edx, [esi+7Ch]
17867
                xor     ebp, edi
17868
                add     eax, edx
17869
                ror     ebp, 7
17870
                add     ebp, eax
17871
                mov     eax, [esp+1Ch]
17872
                mov     [esp], ebp
17873
                mov     ebp, [esp]
17874
                mov     ebx, [esp+4]
17875
                mov     edi, [esp+8]
17876
                xor     ebp, 0FFFFFFFFh
17877
                mov     ecx, [esp+10h]
17878
                and     ebx, edi
17879
                mov     edx, [esp+14h]
17880
                and     ebp, ecx
17881
                xor     ebx, [esp+18h]
17882
                xor     ebp, edx
17883
                xor     ecx, edi
17884
                xor     ebx, ebp
17885
                and     ecx, [esp+4]
17886
                and     ebx, [esp+0Ch]
17887
                ror     eax, 0Bh
17888
                xor     ecx, edx
17889
                mov     ebp, [esi+14h]
17890
                xor     ecx, ebx
17891
                and     edi, [esp]
17892
                xor     ecx, edi
17893
                lea     ebp, [eax+ebp+452821E6h]
17894
                ror     ecx, 7
17895
                add     ebp, ecx
17896
                mov     eax, [esp+18h]
17897
                mov     [esp+1Ch], ebp
17898
                mov     ebx, [esp]
17899
                mov     edi, [esp+4]
17900
                xor     ebp, 0FFFFFFFFh
17901
                mov     ecx, [esp+0Ch]
17902
                and     ebx, edi
17903
                mov     edx, [esp+10h]
17904
                and     ebp, ecx
17905
                xor     ebx, [esp+14h]
17906
                xor     ebp, edx
17907
                xor     ecx, edi
17908
                xor     ebx, ebp
17909
                and     ecx, [esp]
17910
                and     ebx, [esp+8]
17911
                ror     eax, 0Bh
17912
                xor     ecx, edx
17913
                mov     ebp, [esi+38h]
17914
                xor     ecx, ebx
17915
                and     edi, [esp+1Ch]
17916
                xor     ecx, edi
17917
                lea     ebp, [eax+ebp+38D01377h]
17918
                ror     ecx, 7
17919
                add     ebp, ecx
17920
                mov     eax, [esp+14h]
17921
                mov     [esp+18h], ebp
17922
                mov     ebx, [esp+1Ch]
17923
                mov     edi, [esp]
17924
                xor     ebp, 0FFFFFFFFh
17925
                mov     ecx, [esp+8]
17926
                and     ebx, edi
17927
                mov     edx, [esp+0Ch]
17928
                and     ebp, ecx
17929
                xor     ebx, [esp+10h]
17930
                xor     ebp, edx
17931
                xor     ecx, edi
17932
                xor     ebx, ebp
17933
                and     ecx, [esp+1Ch]
17934
                and     ebx, [esp+4]
17935
                ror     eax, 0Bh
17936
                xor     ecx, edx
17937
                mov     ebp, [esi+68h]
17938
                xor     ecx, ebx
17939
                and     edi, [esp+18h]
17940
                xor     ecx, edi
17941
                lea     ebp, [eax+ebp-41AB9931h]
17942
                ror     ecx, 7
17943
                add     ebp, ecx
17944
                mov     eax, [esp+10h]
17945
                mov     [esp+14h], ebp
17946
                mov     ebx, [esp+18h]
17947
                mov     edi, [esp+1Ch]
17948
                xor     ebp, 0FFFFFFFFh
17949
                mov     ecx, [esp+4]
17950
                and     ebx, edi
17951
                mov     edx, [esp+8]
17952
                and     ebp, ecx
17953
                xor     ebx, [esp+0Ch]
17954
                xor     ebp, edx
17955
                xor     ecx, edi
17956
                xor     ebx, ebp
17957
                and     ecx, [esp+18h]
17958
                and     ebx, [esp]
17959
                ror     eax, 0Bh
17960
                xor     ecx, edx
17961
                mov     ebp, [esi+48h]
17962
                xor     ecx, ebx
17963
                and     edi, [esp+14h]
17964
                xor     ecx, edi
17965
                lea     ebp, [eax+ebp+34E90C6Ch]
17966
                ror     ecx, 7
17967
                add     ebp, ecx
17968
                mov     eax, [esp+0Ch]
17969
                mov     [esp+10h], ebp
17970
                mov     ebx, [esp+14h]
17971
                mov     edi, [esp+18h]
17972
                xor     ebp, 0FFFFFFFFh
17973
                mov     ecx, [esp]
17974
                and     ebx, edi
17975
                mov     edx, [esp+4]
17976
                and     ebp, ecx
17977
                xor     ebx, [esp+8]
17978
                xor     ebp, edx
17979
                xor     ecx, edi
17980
                xor     ebx, ebp
17981
                and     ecx, [esp+14h]
17982
                and     ebx, [esp+1Ch]
17983
                ror     eax, 0Bh
17984
                xor     ecx, edx
17985
                mov     ebp, [esi+2Ch]
17986
                xor     ecx, ebx
17987
                and     edi, [esp+10h]
17988
                xor     ecx, edi
17989
                lea     ebp, [eax+ebp-3F53D649h]
17990
                ror     ecx, 7
17991
                add     ebp, ecx
17992
                mov     eax, [esp+8]
17993
                mov     [esp+0Ch], ebp
17994
                mov     ebx, [esp+10h]
17995
                mov     edi, [esp+14h]
17996
                xor     ebp, 0FFFFFFFFh
17997
                mov     ecx, [esp+1Ch]
17998
                and     ebx, edi
17999
                mov     edx, [esp]
18000
                and     ebp, ecx
18001
                xor     ebx, [esp+4]
18002
                xor     ebp, edx
18003
                xor     ecx, edi
18004
                xor     ebx, ebp
18005
                and     ecx, [esp+10h]
18006
                and     ebx, [esp+18h]
18007
                ror     eax, 0Bh
18008
                xor     ecx, edx
18009
                mov     ebp, [esi+70h]
18010
                xor     ecx, ebx
18011
                and     edi, [esp+0Ch]
18012
                xor     ecx, edi
18013
                lea     ebp, [eax+ebp-3683AF23h]
18014
                ror     ecx, 7
18015
                add     ebp, ecx
18016
                mov     eax, [esp+4]
18017
                mov     [esp+8], ebp
18018
                mov     ebx, [esp+0Ch]
18019
                mov     edi, [esp+10h]
18020
                xor     ebp, 0FFFFFFFFh
18021
                mov     ecx, [esp+18h]
18022
                and     ebx, edi
18023
                mov     edx, [esp+1Ch]
18024
                and     ebp, ecx
18025
                xor     ebx, [esp]
18026
                xor     ebp, edx
18027
                xor     ecx, edi
18028
                xor     ebx, ebp
18029
                and     ecx, [esp+0Ch]
18030
                and     ebx, [esp+14h]
18031
                ror     eax, 0Bh
18032
                xor     ecx, edx
18033
                mov     ebp, [esi+1Ch]
18034
                xor     ecx, ebx
18035
                and     edi, [esp+8]
18036
                xor     ecx, edi
18037
                lea     ebp, [eax+ebp+3F84D5B5h]
18038
                ror     ecx, 7
18039
                add     ebp, ecx
18040
                mov     eax, [esp]
18041
                mov     [esp+4], ebp
18042
                mov     ebx, [esp+8]
18043
                mov     edi, [esp+0Ch]
18044
                xor     ebp, 0FFFFFFFFh
18045
                mov     ecx, [esp+14h]
18046
                and     ebx, edi
18047
                mov     edx, [esp+18h]
18048
                and     ebp, ecx
18049
                xor     ebx, [esp+1Ch]
18050
                xor     ebp, edx
18051
                xor     ecx, edi
18052
                xor     ebx, ebp
18053
                and     ecx, [esp+8]
18054
                and     ebx, [esp+10h]
18055
                ror     eax, 0Bh
18056
                xor     ecx, edx
18057
                mov     ebp, [esi+40h]
18058
                xor     ecx, ebx
18059
                and     edi, [esp+4]
18060
                xor     ecx, edi
18061
                lea     ebp, [eax+ebp-4AB8F6E9h]
18062
                ror     ecx, 7
18063
                add     ebp, ecx
18064
                mov     eax, [esp+1Ch]
18065
                mov     [esp], ebp
18066
                mov     ebx, [esp+4]
18067
                mov     edi, [esp+8]
18068
                xor     ebp, 0FFFFFFFFh
18069
                mov     ecx, [esp+10h]
18070
                and     ebx, edi
18071
                mov     edx, [esp+14h]
18072
                and     ebp, ecx
18073
                xor     ebx, [esp+18h]
18074
                xor     ebp, edx
18075
                xor     ecx, edi
18076
                xor     ebx, ebp
18077
                and     ecx, [esp+4]
18078
                and     ebx, [esp+0Ch]
18079
                ror     eax, 0Bh
18080
                xor     ecx, edx
18081
                mov     ebp, [esi]
18082
                xor     ecx, ebx
18083
                and     edi, [esp]
18084
                xor     ecx, edi
18085
                lea     ebp, [eax+ebp-6DE92A27h]
18086
                ror     ecx, 7
18087
                add     ebp, ecx
18088
                mov     eax, [esp+18h]
18089
                mov     [esp+1Ch], ebp
18090
                mov     ebx, [esp]
18091
                mov     edi, [esp+4]
18092
                xor     ebp, 0FFFFFFFFh
18093
                mov     ecx, [esp+0Ch]
18094
                and     ebx, edi
18095
                mov     edx, [esp+10h]
18096
                and     ebp, ecx
18097
                xor     ebx, [esp+14h]
18098
                xor     ebp, edx
18099
                xor     ecx, edi
18100
                xor     ebx, ebp
18101
                and     ecx, [esp]
18102
                and     ebx, [esp+8]
18103
                ror     eax, 0Bh
18104
                xor     ecx, edx
18105
                mov     ebp, [esi+5Ch]
18106
                xor     ecx, ebx
18107
                and     edi, [esp+1Ch]
18108
                xor     ecx, edi
18109
                lea     ebp, [eax+ebp-768604E5h]
18110
                ror     ecx, 7
18111
                add     ebp, ecx
18112
                mov     eax, [esp+14h]
18113
                mov     [esp+18h], ebp
18114
                mov     ebx, [esp+1Ch]
18115
                mov     edi, [esp]
18116
                xor     ebp, 0FFFFFFFFh
18117
                mov     ecx, [esp+8]
18118
                and     ebx, edi
18119
                mov     edx, [esp+0Ch]
18120
                and     ebp, ecx
18121
                xor     ebx, [esp+10h]
18122
                xor     ebp, edx
18123
                xor     ecx, edi
18124
                xor     ebx, ebp
18125
                and     ecx, [esp+1Ch]
18126
                and     ebx, [esp+4]
18127
                ror     eax, 0Bh
18128
                xor     ecx, edx
18129
                mov     ebp, [esi+50h]
18130
                xor     ecx, ebx
18131
                and     edi, [esp+18h]
18132
                xor     ecx, edi
18133
                lea     ebp, [eax+ebp-2ECEF45Ah]
18134
                ror     ecx, 7
18135
                add     ebp, ecx
18136
                mov     eax, [esp+10h]
18137
                mov     [esp+14h], ebp
18138
                mov     ebx, [esp+18h]
18139
                mov     edi, [esp+1Ch]
18140
                xor     ebp, 0FFFFFFFFh
18141
                mov     ecx, [esp+4]
18142
                and     ebx, edi
18143
                mov     edx, [esp+8]
18144
                and     ebp, ecx
18145
                xor     ebx, [esp+0Ch]
18146
                xor     ebp, edx
18147
                xor     ecx, edi
18148
                xor     ebx, ebp
18149
                and     ecx, [esp+18h]
18150
                and     ebx, [esp]
18151
                ror     eax, 0Bh
18152
                xor     ecx, edx
18153
                mov     ebp, [esi+58h]
18154
                xor     ecx, ebx
18155
                and     edi, [esp+14h]
18156
                xor     ecx, edi
18157
                lea     ebp, [eax+ebp-67204A54h]
18158
                ror     ecx, 7
18159
                add     ebp, ecx
18160
                mov     eax, [esp+0Ch]
18161
                mov     [esp+10h], ebp
18162
                mov     ebx, [esp+14h]
18163
                mov     edi, [esp+18h]
18164
                xor     ebp, 0FFFFFFFFh
18165
                mov     ecx, [esp]
18166
                and     ebx, edi
18167
                mov     edx, [esp+4]
18168
                and     ebp, ecx
18169
                xor     ebx, [esp+8]
18170
                xor     ebp, edx
18171
                xor     ecx, edi
18172
                xor     ebx, ebp
18173
                and     ecx, [esp+14h]
18174
                and     ebx, [esp+1Ch]
18175
                ror     eax, 0Bh
18176
                xor     ecx, edx
18177
                mov     ebp, [esi+4]
18178
                xor     ecx, ebx
18179
                and     edi, [esp+10h]
18180
                xor     ecx, edi
18181
                lea     ebp, [eax+ebp+2FFD72DBh]
18182
                ror     ecx, 7
18183
                add     ebp, ecx
18184
                mov     eax, [esp+8]
18185
                mov     [esp+0Ch], ebp
18186
                mov     ebx, [esp+10h]
18187
                mov     edi, [esp+14h]
18188
                xor     ebp, 0FFFFFFFFh
18189
                mov     ecx, [esp+1Ch]
18190
                and     ebx, edi
18191
                mov     edx, [esp]
18192
                and     ebp, ecx
18193
                xor     ebx, [esp+4]
18194
                xor     ebp, edx
18195
                xor     ecx, edi
18196
                xor     ebx, ebp
18197
                and     ecx, [esp+10h]
18198
                and     ebx, [esp+18h]
18199
                ror     eax, 0Bh
18200
                xor     ecx, edx
18201
                mov     ebp, [esi+28h]
18202
                xor     ecx, ebx
18203
                and     edi, [esp+0Ch]
18204
                xor     ecx, edi
18205
                lea     ebp, [eax+ebp-2FE52049h]
18206
                ror     ecx, 7
18207
                add     ebp, ecx
18208
                mov     eax, [esp+4]
18209
                mov     [esp+8], ebp
18210
                mov     ebx, [esp+0Ch]
18211
                mov     edi, [esp+10h]
18212
                xor     ebp, 0FFFFFFFFh
18213
                mov     ecx, [esp+18h]
18214
                and     ebx, edi
18215
                mov     edx, [esp+1Ch]
18216
                and     ebp, ecx
18217
                xor     ebx, [esp]
18218
                xor     ebp, edx
18219
                xor     ecx, edi
18220
                xor     ebx, ebp
18221
                and     ecx, [esp+0Ch]
18222
                and     ebx, [esp+14h]
18223
                ror     eax, 0Bh
18224
                xor     ecx, edx
18225
                mov     ebp, [esi+10h]
18226
                xor     ecx, ebx
18227
                and     edi, [esp+8]
18228
                xor     ecx, edi
18229
                lea     ebp, [eax+ebp-471E5013h]
18230
                ror     ecx, 7
18231
                add     ebp, ecx
18232
                mov     eax, [esp]
18233
                mov     [esp+4], ebp
18234
                mov     ebx, [esp+8]
18235
                mov     edi, [esp+0Ch]
18236
                xor     ebp, 0FFFFFFFFh
18237
                mov     ecx, [esp+14h]
18238
                and     ebx, edi
18239
                mov     edx, [esp+18h]
18240
                and     ebp, ecx
18241
                xor     ebx, [esp+1Ch]
18242
                xor     ebp, edx
18243
                xor     ecx, edi
18244
                xor     ebx, ebp
18245
                and     ecx, [esp+8]
18246
                and     ebx, [esp+10h]
18247
                ror     eax, 0Bh
18248
                xor     ecx, edx
18249
                mov     ebp, [esi+20h]
18250
                xor     ecx, ebx
18251
                and     edi, [esp+4]
18252
                xor     ecx, edi
18253
                lea     ebp, [eax+ebp+6A267E96h]
18254
                ror     ecx, 7
18255
                add     ebp, ecx
18256
                mov     eax, [esp+1Ch]
18257
                mov     [esp], ebp
18258
                mov     ebx, [esp+4]
18259
                mov     edi, [esp+8]
18260
                xor     ebp, 0FFFFFFFFh
18261
                mov     ecx, [esp+10h]
18262
                and     ebx, edi
18263
                mov     edx, [esp+14h]
18264
                and     ebp, ecx
18265
                xor     ebx, [esp+18h]
18266
                xor     ebp, edx
18267
                xor     ecx, edi
18268
                xor     ebx, ebp
18269
                and     ecx, [esp+4]
18270
                and     ebx, [esp+0Ch]
18271
                ror     eax, 0Bh
18272
                xor     ecx, edx
18273
                mov     ebp, [esi+78h]
18274
                xor     ecx, ebx
18275
                and     edi, [esp]
18276
                xor     ecx, edi
18277
                lea     ebp, [eax+ebp-45836FBBh]
18278
                ror     ecx, 7
18279
                add     ebp, ecx
18280
                mov     eax, [esp+18h]
18281
                mov     [esp+1Ch], ebp
18282
                mov     ebx, [esp]
18283
                mov     edi, [esp+4]
18284
                xor     ebp, 0FFFFFFFFh
18285
                mov     ecx, [esp+0Ch]
18286
                and     ebx, edi
18287
                mov     edx, [esp+10h]
18288
                and     ebp, ecx
18289
                xor     ebx, [esp+14h]
18290
                xor     ebp, edx
18291
                xor     ecx, edi
18292
                xor     ebx, ebp
18293
                and     ecx, [esp]
18294
                and     ebx, [esp+8]
18295
                ror     eax, 0Bh
18296
                xor     ecx, edx
18297
                mov     ebp, [esi+0Ch]
18298
                xor     ecx, ebx
18299
                and     edi, [esp+1Ch]
18300
                xor     ecx, edi
18301
                lea     ebp, [eax+ebp-0ED38067h]
18302
                ror     ecx, 7
18303
                add     ebp, ecx
18304
                mov     eax, [esp+14h]
18305
                mov     [esp+18h], ebp
18306
                mov     ebx, [esp+1Ch]
18307
                mov     edi, [esp]
18308
                xor     ebp, 0FFFFFFFFh
18309
                mov     ecx, [esp+8]
18310
                and     ebx, edi
18311
                mov     edx, [esp+0Ch]
18312
                and     ebp, ecx
18313
                xor     ebx, [esp+10h]
18314
                xor     ebp, edx
18315
                xor     ecx, edi
18316
                xor     ebx, ebp
18317
                and     ecx, [esp+1Ch]
18318
                and     ebx, [esp+4]
18319
                ror     eax, 0Bh
18320
                xor     ecx, edx
18321
                mov     ebp, [esi+54h]
18322
                xor     ecx, ebx
18323
                and     edi, [esp+18h]
18324
                xor     ecx, edi
18325
                lea     ebp, [eax+ebp+24A19947h]
18326
                ror     ecx, 7
18327
                add     ebp, ecx
18328
                mov     eax, [esp+10h]
18329
                mov     [esp+14h], ebp
18330
                mov     ebx, [esp+18h]
18331
                mov     edi, [esp+1Ch]
18332
                xor     ebp, 0FFFFFFFFh
18333
                mov     ecx, [esp+4]
18334
                and     ebx, edi
18335
                mov     edx, [esp+8]
18336
                and     ebp, ecx
18337
                xor     ebx, [esp+0Ch]
18338
                xor     ebp, edx
18339
                xor     ecx, edi
18340
                xor     ebx, ebp
18341
                and     ecx, [esp+18h]
18342
                and     ebx, [esp]
18343
                ror     eax, 0Bh
18344
                xor     ecx, edx
18345
                mov     ebp, [esi+24h]
18346
                xor     ecx, ebx
18347
                and     edi, [esp+14h]
18348
                xor     ecx, edi
18349
                lea     ebp, [eax+ebp-4C6E9309h]
18350
                ror     ecx, 7
18351
                add     ebp, ecx
18352
                mov     eax, [esp+0Ch]
18353
                mov     [esp+10h], ebp
18354
                mov     ebx, [esp+14h]
18355
                mov     edi, [esp+18h]
18356
                xor     ebp, 0FFFFFFFFh
18357
                mov     ecx, [esp]
18358
                and     ebx, edi
18359
                mov     edx, [esp+4]
18360
                and     ebp, ecx
18361
                xor     ebx, [esp+8]
18362
                xor     ebp, edx
18363
                xor     ecx, edi
18364
                xor     ebx, ebp
18365
                and     ecx, [esp+14h]
18366
                and     ebx, [esp+1Ch]
18367
                ror     eax, 0Bh
18368
                xor     ecx, edx
18369
                mov     ebp, [esi+44h]
18370
                xor     ecx, ebx
18371
                and     edi, [esp+10h]
18372
                xor     ecx, edi
18373
                lea     ebp, [eax+ebp+801F2E2h]
18374
                ror     ecx, 7
18375
                add     ebp, ecx
18376
                mov     eax, [esp+8]
18377
                mov     [esp+0Ch], ebp
18378
                mov     ebx, [esp+10h]
18379
                mov     edi, [esp+14h]
18380
                xor     ebp, 0FFFFFFFFh
18381
                mov     ecx, [esp+1Ch]
18382
                and     ebx, edi
18383
                mov     edx, [esp]
18384
                and     ebp, ecx
18385
                xor     ebx, [esp+4]
18386
                xor     ebp, edx
18387
                xor     ecx, edi
18388
                xor     ebx, ebp
18389
                and     ecx, [esp+10h]
18390
                and     ebx, [esp+18h]
18391
                ror     eax, 0Bh
18392
                xor     ecx, edx
18393
                mov     ebp, [esi+60h]
18394
                xor     ecx, ebx
18395
                and     edi, [esp+0Ch]
18396
                xor     ecx, edi
18397
                lea     ebp, [eax+ebp-7A7103EAh]
18398
                ror     ecx, 7
18399
                add     ebp, ecx
18400
                mov     eax, [esp+4]
18401
                mov     [esp+8], ebp
18402
                mov     ebx, [esp+0Ch]
18403
                mov     edi, [esp+10h]
18404
                xor     ebp, 0FFFFFFFFh
18405
                mov     ecx, [esp+18h]
18406
                and     ebx, edi
18407
                mov     edx, [esp+1Ch]
18408
                and     ebp, ecx
18409
                xor     ebx, [esp]
18410
                xor     ebp, edx
18411
                xor     ecx, edi
18412
                xor     ebx, ebp
18413
                and     ecx, [esp+0Ch]
18414
                and     ebx, [esp+14h]
18415
                ror     eax, 0Bh
18416
                xor     ecx, edx
18417
                mov     ebp, [esi+74h]
18418
                xor     ecx, ebx
18419
                and     edi, [esp+8]
18420
                xor     ecx, edi
18421
                lea     ebp, [eax+ebp+636920D8h]
18422
                ror     ecx, 7
18423
                add     ebp, ecx
18424
                mov     eax, [esp]
18425
                mov     [esp+4], ebp
18426
                mov     ebx, [esp+8]
18427
                mov     edi, [esp+0Ch]
18428
                xor     ebp, 0FFFFFFFFh
18429
                mov     ecx, [esp+14h]
18430
                and     ebx, edi
18431
                mov     edx, [esp+18h]
18432
                and     ebp, ecx
18433
                xor     ebx, [esp+1Ch]
18434
                xor     ebp, edx
18435
                xor     ecx, edi
18436
                xor     ebx, ebp
18437
                and     ecx, [esp+8]
18438
                and     ebx, [esp+10h]
18439
                ror     eax, 0Bh
18440
                xor     ecx, edx
18441
                mov     ebp, [esi+18h]
18442
                xor     ecx, ebx
18443
                and     edi, [esp+4]
18444
                xor     ecx, edi
18445
                lea     ebp, [eax+ebp+71574E69h]
18446
                ror     ecx, 7
18447
                add     ebp, ecx
18448
                mov     eax, [esp+1Ch]
18449
                mov     [esp], ebp
18450
                mov     ebx, [esp+4]
18451
                mov     edi, [esp+8]
18452
                xor     ebp, 0FFFFFFFFh
18453
                mov     ecx, [esp+10h]
18454
                and     ebx, edi
18455
                mov     edx, [esp+14h]
18456
                and     ebp, ecx
18457
                xor     ebx, [esp+18h]
18458
                xor     ebp, edx
18459
                xor     ecx, edi
18460
                xor     ebx, ebp
18461
                and     ecx, [esp+4]
18462
                and     ebx, [esp+0Ch]
18463
                ror     eax, 0Bh
18464
                xor     ecx, edx
18465
                mov     ebp, [esi+4Ch]
18466
                xor     ecx, ebx
18467
                and     edi, [esp]
18468
                xor     ecx, edi
18469
                lea     ebp, [eax+ebp-5BA7015Dh]
18470
                ror     ecx, 7
18471
                add     ebp, ecx
18472
                mov     eax, [esp+18h]
18473
                mov     [esp+1Ch], ebp
18474
                mov     ebx, [esp]
18475
                mov     edi, [esp+4]
18476
                xor     ebp, 0FFFFFFFFh
18477
                mov     ecx, [esp+0Ch]
18478
                and     ebx, edi
18479
                mov     edx, [esp+10h]
18480
                and     ebp, ecx
18481
                xor     ebx, [esp+14h]
18482
                xor     ebp, edx
18483
                xor     ecx, edi
18484
                xor     ebx, ebp
18485
                and     ecx, [esp]
18486
                and     ebx, [esp+8]
18487
                ror     eax, 0Bh
18488
                xor     ecx, edx
18489
                mov     ebp, [esi+30h]
18490
                xor     ecx, ebx
18491
                and     edi, [esp+1Ch]
18492
                xor     ecx, edi
18493
                lea     ebp, [eax+ebp-0B6CC282h]
18494
                ror     ecx, 7
18495
                add     ebp, ecx
18496
                mov     eax, [esp+14h]
18497
                mov     [esp+18h], ebp
18498
                mov     ebx, [esp+1Ch]
18499
                mov     edi, [esp]
18500
                xor     ebp, 0FFFFFFFFh
18501
                mov     ecx, [esp+8]
18502
                and     ebx, edi
18503
                mov     edx, [esp+0Ch]
18504
                and     ebp, ecx
18505
                xor     ebx, [esp+10h]
18506
                xor     ebp, edx
18507
                xor     ecx, edi
18508
                xor     ebx, ebp
18509
                and     ecx, [esp+1Ch]
18510
                and     ebx, [esp+4]
18511
                ror     eax, 0Bh
18512
                xor     ecx, edx
18513
                mov     ebp, [esi+3Ch]
18514
                xor     ecx, ebx
18515
                and     edi, [esp+18h]
18516
                xor     ecx, edi
18517
                lea     ebp, [eax+ebp+0D95748Fh]
18518
                ror     ecx, 7
18519
                add     ebp, ecx
18520
                mov     eax, [esp+10h]
18521
                mov     [esp+14h], ebp
18522
                mov     ebx, [esp+18h]
18523
                mov     edi, [esp+1Ch]
18524
                xor     ebp, 0FFFFFFFFh
18525
                mov     ecx, [esp+4]
18526
                and     ebx, edi
18527
                mov     edx, [esp+8]
18528
                and     ebp, ecx
18529
                xor     ebx, [esp+0Ch]
18530
                xor     ebp, edx
18531
                xor     ecx, edi
18532
                xor     ebx, ebp
18533
                and     ecx, [esp+18h]
18534
                and     ebx, [esp]
18535
                ror     eax, 0Bh
18536
                xor     ecx, edx
18537
                mov     ebp, [esi+34h]
18538
                xor     ecx, ebx
18539
                and     edi, [esp+14h]
18540
                xor     ecx, edi
18541
                lea     ebp, [eax+ebp+728EB658h]
18542
                ror     ecx, 7
18543
                add     ebp, ecx
18544
                mov     eax, [esp+0Ch]
18545
                mov     [esp+10h], ebp
18546
                mov     ebx, [esp+14h]
18547
                mov     edi, [esp+18h]
18548
                xor     ebp, 0FFFFFFFFh
18549
                mov     ecx, [esp]
18550
                and     ebx, edi
18551
                mov     edx, [esp+4]
18552
                and     ebp, ecx
18553
                xor     ebx, [esp+8]
18554
                xor     ebp, edx
18555
                xor     ecx, edi
18556
                xor     ebx, ebp
18557
                and     ecx, [esp+14h]
18558
                and     ebx, [esp+1Ch]
18559
                ror     eax, 0Bh
18560
                xor     ecx, edx
18561
                mov     ebp, [esi+8]
18562
                xor     ecx, ebx
18563
                and     edi, [esp+10h]
18564
                xor     ecx, edi
18565
                lea     ebp, [eax+ebp+718BCD58h]
18566
                ror     ecx, 7
18567
                add     ebp, ecx
18568
                mov     eax, [esp+8]
18569
                mov     [esp+0Ch], ebp
18570
                mov     ebx, [esp+10h]
18571
                mov     edi, [esp+14h]
18572
                xor     ebp, 0FFFFFFFFh
18573
                mov     ecx, [esp+1Ch]
18574
                and     ebx, edi
18575
                mov     edx, [esp]
18576
                and     ebp, ecx
18577
                xor     ebx, [esp+4]
18578
                xor     ebp, edx
18579
                xor     ecx, edi
18580
                xor     ebx, ebp
18581
                and     ecx, [esp+10h]
18582
                and     ebx, [esp+18h]
18583
                ror     eax, 0Bh
18584
                xor     ecx, edx
18585
                mov     ebp, [esi+64h]
18586
                xor     ecx, ebx
18587
                and     edi, [esp+0Ch]
18588
                xor     ecx, edi
18589
                lea     ebp, [eax+ebp-7DEAB512h]
18590
                ror     ecx, 7
18591
                add     ebp, ecx
18592
                mov     eax, [esp+4]
18593
                mov     [esp+8], ebp
18594
                mov     ebx, [esp+0Ch]
18595
                mov     edi, [esp+10h]
18596
                xor     ebp, 0FFFFFFFFh
18597
                mov     ecx, [esp+18h]
18598
                and     ebx, edi
18599
                mov     edx, [esp+1Ch]
18600
                and     ebp, ecx
18601
                xor     ebx, [esp]
18602
                xor     ebp, edx
18603
                xor     ecx, edi
18604
                xor     ebx, ebp
18605
                and     ecx, [esp+0Ch]
18606
                and     ebx, [esp+14h]
18607
                ror     eax, 0Bh
18608
                xor     ecx, edx
18609
                mov     ebp, [esi+7Ch]
18610
                xor     ecx, ebx
18611
                and     edi, [esp+8]
18612
                xor     ecx, edi
18613
                lea     ebp, [eax+ebp+7B54A41Dh]
18614
                ror     ecx, 7
18615
                add     ebp, ecx
18616
                mov     eax, [esp]
18617
                mov     [esp+4], ebp
18618
                mov     ebx, [esp+8]
18619
                mov     edi, [esp+0Ch]
18620
                xor     ebp, 0FFFFFFFFh
18621
                mov     ecx, [esp+14h]
18622
                and     ebx, edi
18623
                mov     edx, [esp+18h]
18624
                and     ebp, ecx
18625
                xor     ebx, [esp+1Ch]
18626
                xor     ebp, edx
18627
                xor     ecx, edi
18628
                xor     ebx, ebp
18629
                and     ecx, [esp+8]
18630
                and     ebx, [esp+10h]
18631
                ror     eax, 0Bh
18632
                xor     ecx, edx
18633
                mov     ebp, [esi+6Ch]
18634
                xor     ecx, ebx
18635
                and     edi, [esp+4]
18636
                xor     ecx, edi
18637
                lea     ebp, [eax+ebp-3DA5A64Bh]
18638
                ror     ecx, 7
18639
                add     ebp, ecx
18640
                mov     eax, [esp+1Ch]
18641
                mov     [esp], ebp
18642
                mov     ebp, [esp+14h]
18643
                mov     ebx, [esp+0Ch]
18644
                mov     ecx, [esp+4]
18645
                mov     edi, ebx
18646
                and     ebx, [esp+18h]
18647
                and     edi, ecx
18648
                xor     ebx, ebp
18649
                ror     eax, 0Bh
18650
                xor     edi, ebp
18651
                mov     ebp, [esi+4Ch]
18652
                xor     edi, [esp+8]
18653
                and     ecx, [esp]
18654
                and     edi, [esp+10h]
18655
                xor     ecx, ebx
18656
                lea     ebp, [eax+ebp-63CF2AC7h]
18657
                xor     ecx, edi
18658
                ror     ecx, 7
18659
                add     ebp, ecx
18660
                mov     eax, [esp+18h]
18661
                mov     [esp+1Ch], ebp
18662
                mov     ebp, [esp+10h]
18663
                mov     ebx, [esp+8]
18664
                mov     ecx, [esp]
18665
                mov     edi, ebx
18666
                and     ebx, [esp+14h]
18667
                and     edi, ecx
18668
                xor     ebx, ebp
18669
                ror     eax, 0Bh
18670
                xor     edi, ebp
18671
                mov     ebp, [esi+24h]
18672
                xor     edi, [esp+4]
18673
                and     ecx, [esp+1Ch]
18674
                and     edi, [esp+0Ch]
18675
                xor     ecx, ebx
18676
                lea     ebp, [eax+ebp+2AF26013h]
18677
                xor     ecx, edi
18678
                ror     ecx, 7
18679
                add     ebp, ecx
18680
                mov     eax, [esp+14h]
18681
                mov     [esp+18h], ebp
18682
                mov     ebp, [esp+0Ch]
18683
                mov     ebx, [esp+4]
18684
                mov     ecx, [esp+1Ch]
18685
                mov     edi, ebx
18686
                and     ebx, [esp+10h]
18687
                and     edi, ecx
18688
                xor     ebx, ebp
18689
                ror     eax, 0Bh
18690
                xor     edi, ebp
18691
                mov     ebp, [esi+10h]
18692
                xor     edi, [esp]
18693
                and     ecx, [esp+18h]
18694
                and     edi, [esp+8]
18695
                xor     ecx, ebx
18696
                lea     ebp, [eax+ebp-3A2E4FDDh]
18697
                xor     ecx, edi
18698
                ror     ecx, 7
18699
                add     ebp, ecx
18700
                mov     eax, [esp+10h]
18701
                mov     [esp+14h], ebp
18702
                mov     ebp, [esp+8]
18703
                mov     ebx, [esp]
18704
                mov     ecx, [esp+18h]
18705
                mov     edi, ebx
18706
                and     ebx, [esp+0Ch]
18707
                and     edi, ecx
18708
                xor     ebx, ebp
18709
                ror     eax, 0Bh
18710
                xor     edi, ebp
18711
                mov     ebp, [esi+50h]
18712
                xor     edi, [esp+1Ch]
18713
                and     ecx, [esp+14h]
18714
                and     edi, [esp+4]
18715
                xor     ecx, ebx
18716
                lea     ebp, [eax+ebp+286085F0h]
18717
                xor     ecx, edi
18718
                ror     ecx, 7
18719
                add     ebp, ecx
18720
                mov     eax, [esp+0Ch]
18721
                mov     [esp+10h], ebp
18722
                mov     ebp, [esp+4]
18723
                mov     ebx, [esp+1Ch]
18724
                mov     ecx, [esp+14h]
18725
                mov     edi, ebx
18726
                and     ebx, [esp+8]
18727
                and     edi, ecx
18728
                xor     ebx, ebp
18729
                ror     eax, 0Bh
18730
                xor     edi, ebp
18731
                mov     ebp, [esi+70h]
18732
                xor     edi, [esp+18h]
18733
                and     ecx, [esp+10h]
18734
                and     edi, [esp]
18735
                xor     ecx, ebx
18736
                lea     ebp, [eax+ebp-35BE86E8h]
18737
                xor     ecx, edi
18738
                ror     ecx, 7
18739
                add     ebp, ecx
18740
                mov     eax, [esp+8]
18741
                mov     [esp+0Ch], ebp
18742
                mov     ebp, [esp]
18743
                mov     ebx, [esp+18h]
18744
                mov     ecx, [esp+10h]
18745
                mov     edi, ebx
18746
                and     ebx, [esp+4]
18747
                and     edi, ecx
18748
                xor     ebx, ebp
18749
                ror     eax, 0Bh
18750
                xor     edi, ebp
18751
                mov     ebp, [esi+44h]
18752
                xor     edi, [esp+14h]
18753
                and     ecx, [esp+0Ch]
18754
                and     edi, [esp+1Ch]
18755
                xor     ecx, ebx
18756
                lea     ebp, [eax+ebp-4724C711h]
18757
                xor     ecx, edi
18758
                ror     ecx, 7
18759
                add     ebp, ecx
18760
                mov     eax, [esp+4]
18761
                mov     [esp+8], ebp
18762
                mov     ebp, [esp+1Ch]
18763
                mov     ebx, [esp+14h]
18764
                mov     ecx, [esp+0Ch]
18765
                mov     edi, ebx
18766
                and     ebx, [esp]
18767
                and     edi, ecx
18768
                xor     ebx, ebp
18769
                ror     eax, 0Bh
18770
                xor     edi, ebp
18771
                mov     ebp, [esi+20h]
18772
                xor     edi, [esp+10h]
18773
                and     ecx, [esp+8]
18774
                and     edi, [esp+18h]
18775
                xor     ecx, ebx
18776
                lea     ebp, [eax+ebp-71862350h]
18777
                xor     ecx, edi
18778
                ror     ecx, 7
18779
                add     ebp, ecx
18780
                mov     eax, [esp]
18781
                mov     [esp+4], ebp
18782
                mov     ebp, [esp+18h]
18783
                mov     ebx, [esp+10h]
18784
                mov     ecx, [esp+8]
18785
                mov     edi, ebx
18786
                and     ebx, [esp+1Ch]
18787
                and     edi, ecx
18788
                xor     ebx, ebp
18789
                ror     eax, 0Bh
18790
                xor     edi, ebp
18791
                mov     ebp, [esi+58h]
18792
                xor     edi, [esp+0Ch]
18793
                and     ecx, [esp+4]
18794
                and     edi, [esp+14h]
18795
                xor     ecx, ebx
18796
                lea     ebp, [eax+ebp+603A180Eh]
18797
                xor     ecx, edi
18798
                ror     ecx, 7
18799
                add     ebp, ecx
18800
                mov     eax, [esp+1Ch]
18801
                mov     [esp], ebp
18802
                mov     ebp, [esp+14h]
18803
                mov     ebx, [esp+0Ch]
18804
                mov     ecx, [esp+4]
18805
                mov     edi, ebx
18806
                and     ebx, [esp+18h]
18807
                and     edi, ecx
18808
                xor     ebx, ebp
18809
                ror     eax, 0Bh
18810
                xor     edi, ebp
18811
                mov     ebp, [esi+74h]
18812
                xor     edi, [esp+8]
18813
                and     ecx, [esp]
18814
                and     edi, [esp+10h]
18815
                xor     ecx, ebx
18816
                lea     ebp, [eax+ebp+6C9E0E8Bh]
18817
                xor     ecx, edi
18818
                ror     ecx, 7
18819
                add     ebp, ecx
18820
                mov     eax, [esp+18h]
18821
                mov     [esp+1Ch], ebp
18822
                mov     ebp, [esp+10h]
18823
                mov     ebx, [esp+8]
18824
                mov     ecx, [esp]
18825
                mov     edi, ebx
18826
                and     ebx, [esp+14h]
18827
                and     edi, ecx
18828
                xor     ebx, ebp
18829
                ror     eax, 0Bh
18830
                xor     edi, ebp
18831
                mov     ebp, [esi+38h]
18832
                xor     edi, [esp+4]
18833
                and     ecx, [esp+1Ch]
18834
                and     edi, [esp+0Ch]
18835
                xor     ecx, ebx
18836
                lea     ebp, [eax+ebp-4FE175C2h]
18837
                xor     ecx, edi
18838
                ror     ecx, 7
18839
                add     ebp, ecx
18840
                mov     eax, [esp+14h]
18841
                mov     [esp+18h], ebp
18842
                mov     ebp, [esp+0Ch]
18843
                mov     ebx, [esp+4]
18844
                mov     ecx, [esp+1Ch]
18845
                mov     edi, ebx
18846
                and     ebx, [esp+10h]
18847
                and     edi, ecx
18848
                xor     ebx, ebp
18849
                ror     eax, 0Bh
18850
                xor     edi, ebp
18851
                mov     ebp, [esi+64h]
18852
                xor     edi, [esp]
18853
                and     ecx, [esp+18h]
18854
                and     edi, [esp+8]
18855
                xor     ecx, ebx
18856
                lea     ebp, [eax+ebp-28EA883Fh]
18857
                xor     ecx, edi
18858
                ror     ecx, 7
18859
                add     ebp, ecx
18860
                mov     eax, [esp+10h]
18861
                mov     [esp+14h], ebp
18862
                mov     ebp, [esp+8]
18863
                mov     ebx, [esp]
18864
                mov     ecx, [esp+18h]
18865
                mov     edi, ebx
18866
                and     ebx, [esp+0Ch]
18867
                and     edi, ecx
18868
                xor     ebx, ebp
18869
                ror     eax, 0Bh
18870
                xor     edi, ebp
18871
                mov     ebp, [esi+30h]
18872
                xor     edi, [esp+1Ch]
18873
                and     ecx, [esp+14h]
18874
                and     edi, [esp+4]
18875
                xor     ecx, ebx
18876
                lea     ebp, [eax+ebp-42CEB4D9h]
18877
                xor     ecx, edi
18878
                ror     ecx, 7
18879
                add     ebp, ecx
18880
                mov     eax, [esp+0Ch]
18881
                mov     [esp+10h], ebp
18882
                mov     ebp, [esp+4]
18883
                mov     ebx, [esp+1Ch]
18884
                mov     ecx, [esp+14h]
18885
                mov     edi, ebx
18886
                and     ebx, [esp+8]
18887
                and     edi, ecx
18888
                xor     ebx, ebp
18889
                ror     eax, 0Bh
18890
                xor     edi, ebp
18891
                mov     ebp, [esi+60h]
18892
                xor     edi, [esp+18h]
18893
                and     ecx, [esp+10h]
18894
                and     edi, [esp]
18895
                xor     ecx, ebx
18896
                lea     ebp, [eax+ebp+78AF2FDAh]
18897
                xor     ecx, edi
18898
                ror     ecx, 7
18899
                add     ebp, ecx
18900
                mov     eax, [esp+8]
18901
                mov     [esp+0Ch], ebp
18902
                mov     ebp, [esp]
18903
                mov     ebx, [esp+18h]
18904
                mov     ecx, [esp+10h]
18905
                mov     edi, ebx
18906
                and     ebx, [esp+4]
18907
                and     edi, ecx
18908
                xor     ebx, ebp
18909
                ror     eax, 0Bh
18910
                xor     edi, ebp
18911
                mov     ebp, [esi+78h]
18912
                xor     edi, [esp+14h]
18913
                and     ecx, [esp+0Ch]
18914
                and     edi, [esp+1Ch]
18915
                xor     ecx, ebx
18916
                lea     ebp, [eax+ebp+55605C60h]
18917
                xor     ecx, edi
18918
                ror     ecx, 7
18919
                add     ebp, ecx
18920
                mov     eax, [esp+4]
18921
                mov     [esp+8], ebp
18922
                mov     ebp, [esp+1Ch]
18923
                mov     ebx, [esp+14h]
18924
                mov     ecx, [esp+0Ch]
18925
                mov     edi, ebx
18926
                and     ebx, [esp]
18927
                and     edi, ecx
18928
                xor     ebx, ebp
18929
                ror     eax, 0Bh
18930
                xor     edi, ebp
18931
                mov     ebp, [esi+40h]
18932
                xor     edi, [esp+10h]
18933
                and     ecx, [esp+8]
18934
                and     edi, [esp+18h]
18935
                xor     ecx, ebx
18936
                lea     ebp, [eax+ebp-19AADA0Dh]
18937
                xor     ecx, edi
18938
                ror     ecx, 7
18939
                add     ebp, ecx
18940
                mov     eax, [esp]
18941
                mov     [esp+4], ebp
18942
                mov     ebp, [esp+18h]
18943
                mov     ebx, [esp+10h]
18944
                mov     ecx, [esp+8]
18945
                mov     edi, ebx
18946
                and     ebx, [esp+1Ch]
18947
                and     edi, ecx
18948
                xor     ebx, ebp
18949
                ror     eax, 0Bh
18950
                xor     edi, ebp
18951
                mov     ebp, [esi+68h]
18952
                xor     edi, [esp+0Ch]
18953
                and     ecx, [esp+4]
18954
                and     edi, [esp+14h]
18955
                xor     ecx, ebx
18956
                lea     ebp, [eax+ebp-55AA546Ch]
18957
                xor     ecx, edi
18958
                ror     ecx, 7
18959
                add     ebp, ecx
18960
                mov     eax, [esp+1Ch]
18961
                mov     [esp], ebp
18962
                mov     ebp, [esp+14h]
18963
                mov     ebx, [esp+0Ch]
18964
                mov     ecx, [esp+4]
18965
                mov     edi, ebx
18966
                and     ebx, [esp+18h]
18967
                and     edi, ecx
18968
                xor     ebx, ebp
18969
                ror     eax, 0Bh
18970
                xor     edi, ebp
18971
                mov     ebp, [esi+7Ch]
18972
                xor     edi, [esp+8]
18973
                and     ecx, [esp]
18974
                and     edi, [esp+10h]
18975
                xor     ecx, ebx
18976
                lea     ebp, [eax+ebp+57489862h]
18977
                xor     ecx, edi
18978
                ror     ecx, 7
18979
                add     ebp, ecx
18980
                mov     eax, [esp+18h]
18981
                mov     [esp+1Ch], ebp
18982
                mov     ebp, [esp+10h]
18983
                mov     ebx, [esp+8]
18984
                mov     ecx, [esp]
18985
                mov     edi, ebx
18986
                and     ebx, [esp+14h]
18987
                and     edi, ecx
18988
                xor     ebx, ebp
18989
                ror     eax, 0Bh
18990
                xor     edi, ebp
18991
                mov     ebp, [esi+3Ch]
18992
                xor     edi, [esp+4]
18993
                and     ecx, [esp+1Ch]
18994
                and     edi, [esp+0Ch]
18995
                xor     ecx, ebx
18996
                lea     ebp, [eax+ebp+63E81440h]
18997
                xor     ecx, edi
18998
                ror     ecx, 7
18999
                add     ebp, ecx
19000
                mov     eax, [esp+14h]
19001
                mov     [esp+18h], ebp
19002
                mov     ebp, [esp+0Ch]
19003
                mov     ebx, [esp+4]
19004
                mov     ecx, [esp+1Ch]
19005
                mov     edi, ebx
19006
                and     ebx, [esp+10h]
19007
                and     edi, ecx
19008
                xor     ebx, ebp
19009
                ror     eax, 0Bh
19010
                xor     edi, ebp
19011
                mov     ebp, [esi+1Ch]
19012
                xor     edi, [esp]
19013
                and     ecx, [esp+18h]
19014
                and     edi, [esp+8]
19015
                xor     ecx, ebx
19016
                lea     ebp, [eax+ebp+55CA396Ah]
19017
                xor     ecx, edi
19018
                ror     ecx, 7
19019
                add     ebp, ecx
19020
                mov     eax, [esp+10h]
19021
                mov     [esp+14h], ebp
19022
                mov     ebp, [esp+8]
19023
                mov     ebx, [esp]
19024
                mov     ecx, [esp+18h]
19025
                mov     edi, ebx
19026
                and     ebx, [esp+0Ch]
19027
                and     edi, ecx
19028
                xor     ebx, ebp
19029
                ror     eax, 0Bh
19030
                xor     edi, ebp
19031
                mov     ebp, [esi+0Ch]
19032
                xor     edi, [esp+1Ch]
19033
                and     ecx, [esp+14h]
19034
                and     edi, [esp+4]
19035
                xor     ecx, ebx
19036
                lea     ebp, [eax+ebp+2AAB10B6h]
19037
                xor     ecx, edi
19038
                ror     ecx, 7
19039
                add     ebp, ecx
19040
                mov     eax, [esp+0Ch]
19041
                mov     [esp+10h], ebp
19042
                mov     ebp, [esp+4]
19043
                mov     ebx, [esp+1Ch]
19044
                mov     ecx, [esp+14h]
19045
                mov     edi, ebx
19046
                and     ebx, [esp+8]
19047
                and     edi, ecx
19048
                xor     ebx, ebp
19049
                ror     eax, 0Bh
19050
                xor     edi, ebp
19051
                mov     ebp, [esi+4]
19052
                xor     edi, [esp+18h]
19053
                and     ecx, [esp+10h]
19054
                and     edi, [esp]
19055
                xor     ecx, ebx
19056
                lea     ebp, [eax+ebp-4B33A3CCh]
19057
                xor     ecx, edi
19058
                ror     ecx, 7
19059
                add     ebp, ecx
19060
                mov     eax, [esp+8]
19061
                mov     [esp+0Ch], ebp
19062
                mov     ebp, [esp]
19063
                mov     ebx, [esp+18h]
19064
                mov     ecx, [esp+10h]
19065
                mov     edi, ebx
19066
                and     ebx, [esp+4]
19067
                and     edi, ecx
19068
                xor     ebx, ebp
19069
                ror     eax, 0Bh
19070
                xor     edi, ebp
19071
                mov     ebp, [esi]
19072
                xor     edi, [esp+14h]
19073
                and     ecx, [esp+0Ch]
19074
                and     edi, [esp+1Ch]
19075
                xor     ecx, ebx
19076
                lea     ebp, [eax+ebp+1141E8CEh]
19077
                xor     ecx, edi
19078
                ror     ecx, 7
19079
                add     ebp, ecx
19080
                mov     eax, [esp+4]
19081
                mov     [esp+8], ebp
19082
                mov     ebp, [esp+1Ch]
19083
                mov     ebx, [esp+14h]
19084
                mov     ecx, [esp+0Ch]
19085
                mov     edi, ebx
19086
                and     ebx, [esp]
19087
                and     edi, ecx
19088
                xor     ebx, ebp
19089
                ror     eax, 0Bh
19090
                xor     edi, ebp
19091
                mov     ebp, [esi+48h]
19092
                xor     edi, [esp+10h]
19093
                and     ecx, [esp+8]
19094
                and     edi, [esp+18h]
19095
                xor     ecx, ebx
19096
                lea     ebp, [eax+ebp-5EAB7951h]
19097
                xor     ecx, edi
19098
                ror     ecx, 7
19099
                add     ebp, ecx
19100
                mov     eax, [esp]
19101
                mov     [esp+4], ebp
19102
                mov     ebp, [esp+18h]
19103
                mov     ebx, [esp+10h]
19104
                mov     ecx, [esp+8]
19105
                mov     edi, ebx
19106
                and     ebx, [esp+1Ch]
19107
                and     edi, ecx
19108
                xor     ebx, ebp
19109
                ror     eax, 0Bh
19110
                xor     edi, ebp
19111
                mov     ebp, [esi+6Ch]
19112
                xor     edi, [esp+0Ch]
19113
                and     ecx, [esp+4]
19114
                and     edi, [esp+14h]
19115
                xor     ecx, ebx
19116
                lea     ebp, [eax+ebp+7C72E993h]
19117
                xor     ecx, edi
19118
                ror     ecx, 7
19119
                add     ebp, ecx
19120
                mov     eax, [esp+1Ch]
19121
                mov     [esp], ebp
19122
                mov     ebp, [esp+14h]
19123
                mov     ebx, [esp+0Ch]
19124
                mov     ecx, [esp+4]
19125
                mov     edi, ebx
19126
                and     ebx, [esp+18h]
19127
                and     edi, ecx
19128
                xor     ebx, ebp
19129
                ror     eax, 0Bh
19130
                xor     edi, ebp
19131
                mov     ebp, [esi+34h]
19132
                xor     edi, [esp+8]
19133
                and     ecx, [esp]
19134
                and     edi, [esp+10h]
19135
                xor     ecx, ebx
19136
                lea     ebp, [eax+ebp-4C11EBEFh]
19137
                xor     ecx, edi
19138
                ror     ecx, 7
19139
                add     ebp, ecx
19140
                mov     eax, [esp+18h]
19141
                mov     [esp+1Ch], ebp
19142
                mov     ebp, [esp+10h]
19143
                mov     ebx, [esp+8]
19144
                mov     ecx, [esp]
19145
                mov     edi, ebx
19146
                and     ebx, [esp+14h]
19147
                and     edi, ecx
19148
                xor     ebx, ebp
19149
                ror     eax, 0Bh
19150
                xor     edi, ebp
19151
                mov     ebp, [esi+18h]
19152
                xor     edi, [esp+4]
19153
                and     ecx, [esp+1Ch]
19154
                and     edi, [esp+0Ch]
19155
                xor     ecx, ebx
19156
                lea     ebp, [eax+ebp+636FBC2Ah]
19157
                xor     ecx, edi
19158
                ror     ecx, 7
19159
                add     ebp, ecx
19160
                mov     eax, [esp+14h]
19161
                mov     [esp+18h], ebp
19162
                mov     ebp, [esp+0Ch]
19163
                mov     ebx, [esp+4]
19164
                mov     ecx, [esp+1Ch]
19165
                mov     edi, ebx
19166
                and     ebx, [esp+10h]
19167
                and     edi, ecx
19168
                xor     ebx, ebp
19169
                ror     eax, 0Bh
19170
                xor     edi, ebp
19171
                mov     ebp, [esi+54h]
19172
                xor     edi, [esp]
19173
                and     ecx, [esp+18h]
19174
                and     edi, [esp+8]
19175
                xor     ecx, ebx
19176
                lea     ebp, [eax+ebp+2BA9C55Dh]
19177
                xor     ecx, edi
19178
                ror     ecx, 7
19179
                add     ebp, ecx
19180
                mov     eax, [esp+10h]
19181
                mov     [esp+14h], ebp
19182
                mov     ebp, [esp+8]
19183
                mov     ebx, [esp]
19184
                mov     ecx, [esp+18h]
19185
                mov     edi, ebx
19186
                and     ebx, [esp+0Ch]
19187
                and     edi, ecx
19188
                xor     ebx, ebp
19189
                ror     eax, 0Bh
19190
                xor     edi, ebp
19191
                mov     ebp, [esi+28h]
19192
                xor     edi, [esp+1Ch]
19193
                and     ecx, [esp+14h]
19194
                and     edi, [esp+4]
19195
                xor     ecx, ebx
19196
                lea     ebp, [eax+ebp+741831F6h]
19197
                xor     ecx, edi
19198
                ror     ecx, 7
19199
                add     ebp, ecx
19200
                mov     eax, [esp+0Ch]
19201
                mov     [esp+10h], ebp
19202
                mov     ebp, [esp+4]
19203
                mov     ebx, [esp+1Ch]
19204
                mov     ecx, [esp+14h]
19205
                mov     edi, ebx
19206
                and     ebx, [esp+8]
19207
                and     edi, ecx
19208
                xor     ebx, ebp
19209
                ror     eax, 0Bh
19210
                xor     edi, ebp
19211
                mov     ebp, [esi+5Ch]
19212
                xor     edi, [esp+18h]
19213
                and     ecx, [esp+10h]
19214
                and     edi, [esp]
19215
                xor     ecx, ebx
19216
                lea     ebp, [eax+ebp-31A3C1EAh]
19217
                xor     ecx, edi
19218
                ror     ecx, 7
19219
                add     ebp, ecx
19220
                mov     eax, [esp+8]
19221
                mov     [esp+0Ch], ebp
19222
                mov     ebp, [esp]
19223
                mov     ebx, [esp+18h]
19224
                mov     ecx, [esp+10h]
19225
                mov     edi, ebx
19226
                and     ebx, [esp+4]
19227
                and     edi, ecx
19228
                xor     ebx, ebp
19229
                ror     eax, 0Bh
19230
                xor     edi, ebp
19231
                mov     ebp, [esi+2Ch]
19232
                xor     edi, [esp+14h]
19233
                and     ecx, [esp+0Ch]
19234
                and     edi, [esp+1Ch]
19235
                xor     ecx, ebx
19236
                lea     ebp, [eax+ebp-64786CE2h]
19237
                xor     ecx, edi
19238
                ror     ecx, 7
19239
                add     ebp, ecx
19240
                mov     eax, [esp+4]
19241
                mov     [esp+8], ebp
19242
                mov     ebp, [esp+1Ch]
19243
                mov     ebx, [esp+14h]
19244
                mov     ecx, [esp+0Ch]
19245
                mov     edi, ebx
19246
                and     ebx, [esp]
19247
                and     edi, ecx
19248
                xor     ebx, ebp
19249
                ror     eax, 0Bh
19250
                xor     edi, ebp
19251
                mov     ebp, [esi+14h]
19252
                xor     edi, [esp+10h]
19253
                and     ecx, [esp+8]
19254
                and     edi, [esp+18h]
19255
                xor     ecx, ebx
19256
                lea     ebp, [eax+ebp-502945CDh]
19257
                xor     ecx, edi
19258
                ror     ecx, 7
19259
                add     ebp, ecx
19260
                mov     eax, [esp]
19261
                mov     [esp+4], ebp
19262
                mov     ebp, [esp+18h]
19263
                mov     ebx, [esp+10h]
19264
                mov     ecx, [esp+8]
19265
                mov     edi, ebx
19266
                and     ebx, [esp+1Ch]
19267
                and     edi, ecx
19268
                xor     ebx, ebp
19269
                ror     eax, 0Bh
19270
                xor     edi, ebp
19271
                mov     ebp, [esi+8]
19272
                xor     edi, [esp+0Ch]
19273
                and     ecx, [esp+4]
19274
                and     edi, [esp+14h]
19275
                xor     ecx, ebx
19276
                lea     ebp, [eax+ebp+6C24CF5Ch]
19277
                xor     ecx, edi
19278
                ror     ecx, 7
19279
                add     ebp, ecx
19280
                mov     eax, [esp+1Ch]
19281
                mov     [esp], ebp
19282
                mov     ebp, [esp]
19283
                mov     ecx, [esp+14h]
19284
                mov     edx, [esp+4]
19285
                mov     edi, ebp
19286
                mov     ebx, edx
19287
                xor     ebp, 0FFFFFFFFh
19288
                xor     ebx, 0FFFFFFFFh
19289
                and     ebp, ecx
19290
                and     ebx, [esp+8]
19291
                xor     ebp, [esp+10h]
19292
                xor     ebx, edx
19293
                xor     ebp, [esp+18h]
19294
                xor     ebx, ebp
19295
                mov     ebp, edi
19296
                and     ebx, [esp+0Ch]
19297
                and     ebp, [esp+10h]
19298
                and     edi, edx
19299
                xor     ebp, ecx
19300
                xor     ebx, [esp+18h]
19301
                ror     eax, 0Bh
19302
                xor     ebp, edx
19303
                mov     edx, [esi+60h]
19304
                and     ebp, [esp+8]
19305
                xor     ebx, edi
19306
                xor     ebp, ebx
19307
                lea     edx, [eax+edx+7A325381h]
19308
                ror     ebp, 7
19309
                add     ebp, edx
19310
                mov     eax, [esp+18h]
19311
                mov     [esp+1Ch], ebp
19312
                mov     ecx, [esp+10h]
19313
                mov     edx, [esp]
19314
                mov     edi, ebp
19315
                mov     ebx, edx
19316
                xor     ebp, 0FFFFFFFFh
19317
                xor     ebx, 0FFFFFFFFh
19318
                and     ebp, ecx
19319
                and     ebx, [esp+4]
19320
                xor     ebp, [esp+0Ch]
19321
                xor     ebx, edx
19322
                xor     ebp, [esp+14h]
19323
                xor     ebx, ebp
19324
                mov     ebp, edi
19325
                and     ebx, [esp+8]
19326
                and     ebp, [esp+0Ch]
19327
                and     edi, edx
19328
                xor     ebp, ecx
19329
                xor     ebx, [esp+14h]
19330
                ror     eax, 0Bh
19331
                xor     ebp, edx
19332
                mov     edx, [esi+10h]
19333
                and     ebp, [esp+4]
19334
                xor     ebx, edi
19335
                xor     ebp, ebx
19336
                lea     edx, [eax+edx+28958677h]
19337
                ror     ebp, 7
19338
                add     ebp, edx
19339
                mov     eax, [esp+14h]
19340
                mov     [esp+18h], ebp
19341
                mov     ecx, [esp+0Ch]
19342
                mov     edx, [esp+1Ch]
19343
                mov     edi, ebp
19344
                mov     ebx, edx
19345
                xor     ebp, 0FFFFFFFFh
19346
                xor     ebx, 0FFFFFFFFh
19347
                and     ebp, ecx
19348
                and     ebx, [esp]
19349
                xor     ebp, [esp+8]
19350
                xor     ebx, edx
19351
                xor     ebp, [esp+10h]
19352
                xor     ebx, ebp
19353
                mov     ebp, edi
19354
                and     ebx, [esp+4]
19355
                and     ebp, [esp+8]
19356
                and     edi, edx
19357
                xor     ebp, ecx
19358
                xor     ebx, [esp+10h]
19359
                ror     eax, 0Bh
19360
                xor     ebp, edx
19361
                mov     edx, [esi]
19362
                and     ebp, [esp]
19363
                xor     ebx, edi
19364
                xor     ebp, ebx
19365
                lea     edx, [eax+edx+3B8F4898h]
19366
                ror     ebp, 7
19367
                add     ebp, edx
19368
                mov     eax, [esp+10h]
19369
                mov     [esp+14h], ebp
19370
                mov     ecx, [esp+8]
19371
                mov     edx, [esp+18h]
19372
                mov     edi, ebp
19373
                mov     ebx, edx
19374
                xor     ebp, 0FFFFFFFFh
19375
                xor     ebx, 0FFFFFFFFh
19376
                and     ebp, ecx
19377
                and     ebx, [esp+1Ch]
19378
                xor     ebp, [esp+4]
19379
                xor     ebx, edx
19380
                xor     ebp, [esp+0Ch]
19381
                xor     ebx, ebp
19382
                mov     ebp, edi
19383
                and     ebx, [esp]
19384
                and     ebp, [esp+4]
19385
                and     edi, edx
19386
                xor     ebp, ecx
19387
                xor     ebx, [esp+0Ch]
19388
                ror     eax, 0Bh
19389
                xor     ebp, edx
19390
                mov     edx, [esi+38h]
19391
                and     ebp, [esp+1Ch]
19392
                xor     ebx, edi
19393
                xor     ebp, ebx
19394
                lea     edx, [eax+edx+6B4BB9AFh]
19395
                ror     ebp, 7
19396
                add     ebp, edx
19397
                mov     eax, [esp+0Ch]
19398
                mov     [esp+10h], ebp
19399
                mov     ecx, [esp+4]
19400
                mov     edx, [esp+14h]
19401
                mov     edi, ebp
19402
                mov     ebx, edx
19403
                xor     ebp, 0FFFFFFFFh
19404
                xor     ebx, 0FFFFFFFFh
19405
                and     ebp, ecx
19406
                and     ebx, [esp+18h]
19407
                xor     ebp, [esp]
19408
                xor     ebx, edx
19409
                xor     ebp, [esp+8]
19410
                xor     ebx, ebp
19411
                mov     ebp, edi
19412
                and     ebx, [esp+1Ch]
19413
                and     ebp, [esp]
19414
                and     edi, edx
19415
                xor     ebp, ecx
19416
                xor     ebx, [esp+8]
19417
                ror     eax, 0Bh
19418
                xor     ebp, edx
19419
                mov     edx, [esi+8]
19420
                and     ebp, [esp+18h]
19421
                xor     ebx, edi
19422
                xor     ebp, ebx
19423
                lea     edx, [eax+edx-3B4017E5h]
19424
                ror     ebp, 7
19425
                add     ebp, edx
19426
                mov     eax, [esp+8]
19427
                mov     [esp+0Ch], ebp
19428
                mov     ecx, [esp]
19429
                mov     edx, [esp+10h]
19430
                mov     edi, ebp
19431
                mov     ebx, edx
19432
                xor     ebp, 0FFFFFFFFh
19433
                xor     ebx, 0FFFFFFFFh
19434
                and     ebp, ecx
19435
                and     ebx, [esp+14h]
19436
                xor     ebp, [esp+1Ch]
19437
                xor     ebx, edx
19438
                xor     ebp, [esp+4]
19439
                xor     ebx, ebp
19440
                mov     ebp, edi
19441
                and     ebx, [esp+18h]
19442
                and     ebp, [esp+1Ch]
19443
                and     edi, edx
19444
                xor     ebp, ecx
19445
                xor     ebx, [esp+4]
19446
                ror     eax, 0Bh
19447
                xor     ebp, edx
19448
                mov     edx, [esi+1Ch]
19449
                and     ebp, [esp+14h]
19450
                xor     ebx, edi
19451
                xor     ebp, ebx
19452
                lea     edx, [eax+edx+66282193h]
19453
                ror     ebp, 7
19454
                add     ebp, edx
19455
                mov     eax, [esp+4]
19456
                mov     [esp+8], ebp
19457
                mov     ecx, [esp+1Ch]
19458
                mov     edx, [esp+0Ch]
19459
                mov     edi, ebp
19460
                mov     ebx, edx
19461
                xor     ebp, 0FFFFFFFFh
19462
                xor     ebx, 0FFFFFFFFh
19463
                and     ebp, ecx
19464
                and     ebx, [esp+10h]
19465
                xor     ebp, [esp+18h]
19466
                xor     ebx, edx
19467
                xor     ebp, [esp]
19468
                xor     ebx, ebp
19469
                mov     ebp, edi
19470
                and     ebx, [esp+14h]
19471
                and     ebp, [esp+18h]
19472
                and     edi, edx
19473
                xor     ebp, ecx
19474
                xor     ebx, [esp]
19475
                ror     eax, 0Bh
19476
                xor     ebp, edx
19477
                mov     edx, [esi+70h]
19478
                and     ebp, [esp+10h]
19479
                xor     ebx, edi
19480
                xor     ebp, ebx
19481
                lea     edx, [eax+edx+61D809CCh]
19482
                ror     ebp, 7
19483
                add     ebp, edx
19484
                mov     eax, [esp]
19485
                mov     [esp+4], ebp
19486
                mov     ecx, [esp+18h]
19487
                mov     edx, [esp+8]
19488
                mov     edi, ebp
19489
                mov     ebx, edx
19490
                xor     ebp, 0FFFFFFFFh
19491
                xor     ebx, 0FFFFFFFFh
19492
                and     ebp, ecx
19493
                and     ebx, [esp+0Ch]
19494
                xor     ebp, [esp+14h]
19495
                xor     ebx, edx
19496
                xor     ebp, [esp+1Ch]
19497
                xor     ebx, ebp
19498
                mov     ebp, edi
19499
                and     ebx, [esp+10h]
19500
                and     ebp, [esp+14h]
19501
                and     edi, edx
19502
                xor     ebp, ecx
19503
                xor     ebx, [esp+1Ch]
19504
                ror     eax, 0Bh
19505
                xor     ebp, edx
19506
                mov     edx, [esi+5Ch]
19507
                and     ebp, [esp+0Ch]
19508
                xor     ebx, edi
19509
                xor     ebp, ebx
19510
                lea     edx, [eax+edx-4DE566Fh]
19511
                ror     ebp, 7
19512
                add     ebp, edx
19513
                mov     eax, [esp+1Ch]
19514
                mov     [esp], ebp
19515
                mov     ecx, [esp+14h]
19516
                mov     edx, [esp+4]
19517
                mov     edi, ebp
19518
                mov     ebx, edx
19519
                xor     ebp, 0FFFFFFFFh
19520
                xor     ebx, 0FFFFFFFFh
19521
                and     ebp, ecx
19522
                and     ebx, [esp+8]
19523
                xor     ebp, [esp+10h]
19524
                xor     ebx, edx
19525
                xor     ebp, [esp+18h]
19526
                xor     ebx, ebp
19527
                mov     ebp, edi
19528
                and     ebx, [esp+0Ch]
19529
                and     ebp, [esp+10h]
19530
                and     edi, edx
19531
                xor     ebp, ecx
19532
                xor     ebx, [esp+18h]
19533
                ror     eax, 0Bh
19534
                xor     ebp, edx
19535
                mov     edx, [esi+68h]
19536
                and     ebp, [esp+8]
19537
                xor     ebx, edi
19538
                xor     ebp, ebx
19539
                lea     edx, [eax+edx+487CAC60h]
19540
                ror     ebp, 7
19541
                add     ebp, edx
19542
                mov     eax, [esp+18h]
19543
                mov     [esp+1Ch], ebp
19544
                mov     ecx, [esp+10h]
19545
                mov     edx, [esp]
19546
                mov     edi, ebp
19547
                mov     ebx, edx
19548
                xor     ebp, 0FFFFFFFFh
19549
                xor     ebx, 0FFFFFFFFh
19550
                and     ebp, ecx
19551
                and     ebx, [esp+4]
19552
                xor     ebp, [esp+0Ch]
19553
                xor     ebx, edx
19554
                xor     ebp, [esp+14h]
19555
                xor     ebx, ebp
19556
                mov     ebp, edi
19557
                and     ebx, [esp+8]
19558
                and     ebp, [esp+0Ch]
19559
                and     edi, edx
19560
                xor     ebp, ecx
19561
                xor     ebx, [esp+14h]
19562
                ror     eax, 0Bh
19563
                xor     ebp, edx
19564
                mov     edx, [esi+18h]
19565
                and     ebp, [esp+4]
19566
                xor     ebx, edi
19567
                xor     ebp, ebx
19568
                lea     edx, [eax+edx+5DEC8032h]
19569
                ror     ebp, 7
19570
                add     ebp, edx
19571
                mov     eax, [esp+14h]
19572
                mov     [esp+18h], ebp
19573
                mov     ecx, [esp+0Ch]
19574
                mov     edx, [esp+1Ch]
19575
                mov     edi, ebp
19576
                mov     ebx, edx
19577
                xor     ebp, 0FFFFFFFFh
19578
                xor     ebx, 0FFFFFFFFh
19579
                and     ebp, ecx
19580
                and     ebx, [esp]
19581
                xor     ebp, [esp+8]
19582
                xor     ebx, edx
19583
                xor     ebp, [esp+10h]
19584
                xor     ebx, ebp
19585
                mov     ebp, edi
19586
                and     ebx, [esp+4]
19587
                and     ebp, [esp+8]
19588
                and     edi, edx
19589
                xor     ebp, ecx
19590
                xor     ebx, [esp+10h]
19591
                ror     eax, 0Bh
19592
                xor     ebp, edx
19593
                mov     edx, [esi+78h]
19594
                and     ebp, [esp]
19595
                xor     ebx, edi
19596
                xor     ebp, ebx
19597
                lea     edx, [eax+edx-107BA2A3h]
19598
                ror     ebp, 7
19599
                add     ebp, edx
19600
                mov     eax, [esp+10h]
19601
                mov     [esp+14h], ebp
19602
                mov     ecx, [esp+8]
19603
                mov     edx, [esp+18h]
19604
                mov     edi, ebp
19605
                mov     ebx, edx
19606
                xor     ebp, 0FFFFFFFFh
19607
                xor     ebx, 0FFFFFFFFh
19608
                and     ebp, ecx
19609
                and     ebx, [esp+1Ch]
19610
                xor     ebp, [esp+4]
19611
                xor     ebx, edx
19612
                xor     ebp, [esp+0Ch]
19613
                xor     ebx, ebp
19614
                mov     ebp, edi
19615
                and     ebx, [esp]
19616
                and     ebp, [esp+4]
19617
                and     edi, edx
19618
                xor     ebp, ecx
19619
                xor     ebx, [esp+0Ch]
19620
                ror     eax, 0Bh
19621
                xor     ebp, edx
19622
                mov     edx, [esi+50h]
19623
                and     ebp, [esp+1Ch]
19624
                xor     ebx, edi
19625
                xor     ebp, ebx
19626
                lea     edx, [eax+edx-167A8A4Fh]
19627
                ror     ebp, 7
19628
                add     ebp, edx
19629
                mov     eax, [esp+0Ch]
19630
                mov     [esp+10h], ebp
19631
                mov     ecx, [esp+4]
19632
                mov     edx, [esp+14h]
19633
                mov     edi, ebp
19634
                mov     ebx, edx
19635
                xor     ebp, 0FFFFFFFFh
19636
                xor     ebx, 0FFFFFFFFh
19637
                and     ebp, ecx
19638
                and     ebx, [esp+18h]
19639
                xor     ebp, [esp]
19640
                xor     ebx, edx
19641
                xor     ebp, [esp+8]
19642
                xor     ebx, ebp
19643
                mov     ebp, edi
19644
                and     ebx, [esp+1Ch]
19645
                and     ebp, [esp]
19646
                and     edi, edx
19647
                xor     ebp, ecx
19648
                xor     ebx, [esp+8]
19649
                ror     eax, 0Bh
19650
                xor     ebp, edx
19651
                mov     edx, [esi+48h]
19652
                and     ebp, [esp+18h]
19653
                xor     ebx, edi
19654
                xor     ebp, ebx
19655
                lea     edx, [eax+edx-23D9DCFEh]
19656
                ror     ebp, 7
19657
                add     ebp, edx
19658
                mov     eax, [esp+8]
19659
                mov     [esp+0Ch], ebp
19660
                mov     ecx, [esp]
19661
                mov     edx, [esp+10h]
19662
                mov     edi, ebp
19663
                mov     ebx, edx
19664
                xor     ebp, 0FFFFFFFFh
19665
                xor     ebx, 0FFFFFFFFh
19666
                and     ebp, ecx
19667
                and     ebx, [esp+14h]
19668
                xor     ebp, [esp+1Ch]
19669
                xor     ebx, edx
19670
                xor     ebp, [esp+4]
19671
                xor     ebx, ebp
19672
                mov     ebp, edi
19673
                and     ebx, [esp+18h]
19674
                and     ebp, [esp+1Ch]
19675
                and     edi, edx
19676
                xor     ebp, ecx
19677
                xor     ebx, [esp+4]
19678
                ror     eax, 0Bh
19679
                xor     ebp, edx
19680
                mov     edx, [esi+64h]
19681
                and     ebp, [esp+14h]
19682
                xor     ebx, edi
19683
                xor     ebp, ebx
19684
                lea     edx, [eax+edx-149AE478h]
19685
                ror     ebp, 7
19686
                add     ebp, edx
19687
                mov     eax, [esp+4]
19688
                mov     [esp+8], ebp
19689
                mov     ecx, [esp+1Ch]
19690
                mov     edx, [esp+0Ch]
19691
                mov     edi, ebp
19692
                mov     ebx, edx
19693
                xor     ebp, 0FFFFFFFFh
19694
                xor     ebx, 0FFFFFFFFh
19695
                and     ebp, ecx
19696
                and     ebx, [esp+10h]
19697
                xor     ebp, [esp+18h]
19698
                xor     ebx, edx
19699
                xor     ebp, [esp]
19700
                xor     ebx, ebp
19701
                mov     ebp, edi
19702
                and     ebx, [esp+14h]
19703
                and     ebp, [esp+18h]
19704
                and     edi, edx
19705
                xor     ebp, ecx
19706
                xor     ebx, [esp]
19707
                ror     eax, 0Bh
19708
                xor     ebp, edx
19709
                mov     edx, [esi+4Ch]
19710
                and     ebp, [esp+10h]
19711
                xor     ebx, edi
19712
                xor     ebp, ebx
19713
                lea     edx, [eax+edx+23893E81h]
19714
                ror     ebp, 7
19715
                add     ebp, edx
19716
                mov     eax, [esp]
19717
                mov     [esp+4], ebp
19718
                mov     ecx, [esp+18h]
19719
                mov     edx, [esp+8]
19720
                mov     edi, ebp
19721
                mov     ebx, edx
19722
                xor     ebp, 0FFFFFFFFh
19723
                xor     ebx, 0FFFFFFFFh
19724
                and     ebp, ecx
19725
                and     ebx, [esp+0Ch]
19726
                xor     ebp, [esp+14h]
19727
                xor     ebx, edx
19728
                xor     ebp, [esp+1Ch]
19729
                xor     ebx, ebp
19730
                mov     ebp, edi
19731
                and     ebx, [esp+10h]
19732
                and     ebp, [esp+14h]
19733
                and     edi, edx
19734
                xor     ebp, ecx
19735
                xor     ebx, [esp+1Ch]
19736
                ror     eax, 0Bh
19737
                xor     ebp, edx
19738
                mov     edx, [esi+0Ch]
19739
                and     ebp, [esp+0Ch]
19740
                xor     ebx, edi
19741
                xor     ebp, ebx
19742
                lea     edx, [eax+edx-2C69533Bh]
19743
                ror     ebp, 7
19744
                add     ebp, edx
19745
                mov     eax, [esp+1Ch]
19746
                mov     [esp], ebp
19747
                mov     ecx, [esp+14h]
19748
                mov     edx, [esp+4]
19749
                mov     edi, ebp
19750
                mov     ebx, edx
19751
                xor     ebp, 0FFFFFFFFh
19752
                xor     ebx, 0FFFFFFFFh
19753
                and     ebp, ecx
19754
                and     ebx, [esp+8]
19755
                xor     ebp, [esp+10h]
19756
                xor     ebx, edx
19757
                xor     ebp, [esp+18h]
19758
                xor     ebx, ebp
19759
                mov     ebp, edi
19760
                and     ebx, [esp+0Ch]
19761
                and     ebp, [esp+10h]
19762
                and     edi, edx
19763
                xor     ebp, ecx
19764
                xor     ebx, [esp+18h]
19765
                ror     eax, 0Bh
19766
                xor     ebp, edx
19767
                mov     edx, [esi+58h]
19768
                and     ebp, [esp+8]
19769
                xor     ebx, edi
19770
                xor     ebp, ebx
19771
                lea     edx, [eax+edx+0F6D6FF3h]
19772
                ror     ebp, 7
19773
                add     ebp, edx
19774
                mov     eax, [esp+18h]
19775
                mov     [esp+1Ch], ebp
19776
                mov     ecx, [esp+10h]
19777
                mov     edx, [esp]
19778
                mov     edi, ebp
19779
                mov     ebx, edx
19780
                xor     ebp, 0FFFFFFFFh
19781
                xor     ebx, 0FFFFFFFFh
19782
                and     ebp, ecx
19783
                and     ebx, [esp+4]
19784
                xor     ebp, [esp+0Ch]
19785
                xor     ebx, edx
19786
                xor     ebp, [esp+14h]
19787
                xor     ebx, ebp
19788
                mov     ebp, edi
19789
                and     ebx, [esp+8]
19790
                and     ebp, [esp+0Ch]
19791
                and     edi, edx
19792
                xor     ebp, ecx
19793
                xor     ebx, [esp+14h]
19794
                ror     eax, 0Bh
19795
                xor     ebp, edx
19796
                mov     edx, [esi+2Ch]
19797
                and     ebp, [esp+4]
19798
                xor     ebx, edi
19799
                xor     ebp, ebx
19800
                lea     edx, [eax+edx-7C0BBDC7h]
19801
                ror     ebp, 7
19802
                add     ebp, edx
19803
                mov     eax, [esp+14h]
19804
                mov     [esp+18h], ebp
19805
                mov     ecx, [esp+0Ch]
19806
                mov     edx, [esp+1Ch]
19807
                mov     edi, ebp
19808
                mov     ebx, edx
19809
                xor     ebp, 0FFFFFFFFh
19810
                xor     ebx, 0FFFFFFFFh
19811
                and     ebp, ecx
19812
                and     ebx, [esp]
19813
                xor     ebp, [esp+8]
19814
                xor     ebx, edx
19815
                xor     ebp, [esp+10h]
19816
                xor     ebx, ebp
19817
                mov     ebp, edi
19818
                and     ebx, [esp+4]
19819
                and     ebp, [esp+8]
19820
                and     edi, edx
19821
                xor     ebp, ecx
19822
                xor     ebx, [esp+10h]
19823
                ror     eax, 0Bh
19824
                xor     ebp, edx
19825
                mov     edx, [esi+7Ch]
19826
                and     ebp, [esp]
19827
                xor     ebx, edi
19828
                xor     ebp, ebx
19829
                lea     edx, [eax+edx+2E0B4482h]
19830
                ror     ebp, 7
19831
                add     ebp, edx
19832
                mov     eax, [esp+10h]
19833
                mov     [esp+14h], ebp
19834
                mov     ecx, [esp+8]
19835
                mov     edx, [esp+18h]
19836
                mov     edi, ebp
19837
                mov     ebx, edx
19838
                xor     ebp, 0FFFFFFFFh
19839
                xor     ebx, 0FFFFFFFFh
19840
                and     ebp, ecx
19841
                and     ebx, [esp+1Ch]
19842
                xor     ebp, [esp+4]
19843
                xor     ebx, edx
19844
                xor     ebp, [esp+0Ch]
19845
                xor     ebx, ebp
19846
                mov     ebp, edi
19847
                and     ebx, [esp]
19848
                and     ebp, [esp+4]
19849
                and     edi, edx
19850
                xor     ebp, ecx
19851
                xor     ebx, [esp+0Ch]
19852
                ror     eax, 0Bh
19853
                xor     ebp, edx
19854
                mov     edx, [esi+54h]
19855
                and     ebp, [esp+1Ch]
19856
                xor     ebx, edi
19857
                xor     ebp, ebx
19858
                lea     edx, [eax+edx-5B7BDFFCh]
19859
                ror     ebp, 7
19860
                add     ebp, edx
19861
                mov     eax, [esp+0Ch]
19862
                mov     [esp+10h], ebp
19863
                mov     ecx, [esp+4]
19864
                mov     edx, [esp+14h]
19865
                mov     edi, ebp
19866
                mov     ebx, edx
19867
                xor     ebp, 0FFFFFFFFh
19868
                xor     ebx, 0FFFFFFFFh
19869
                and     ebp, ecx
19870
                and     ebx, [esp+18h]
19871
                xor     ebp, [esp]
19872
                xor     ebx, edx
19873
                xor     ebp, [esp+8]
19874
                xor     ebx, ebp
19875
                mov     ebp, edi
19876
                and     ebx, [esp+1Ch]
19877
                and     ebp, [esp]
19878
                and     edi, edx
19879
                xor     ebp, ecx
19880
                xor     ebx, [esp+8]
19881
                ror     eax, 0Bh
19882
                xor     ebp, edx
19883
                mov     edx, [esi+20h]
19884
                and     ebp, [esp+18h]
19885
                xor     ebx, edi
19886
                xor     ebp, ebx
19887
                lea     edx, [eax+edx+69C8F04Ah]
19888
                ror     ebp, 7
19889
                add     ebp, edx
19890
                mov     eax, [esp+8]
19891
                mov     [esp+0Ch], ebp
19892
                mov     ecx, [esp]
19893
                mov     edx, [esp+10h]
19894
                mov     edi, ebp
19895
                mov     ebx, edx
19896
                xor     ebp, 0FFFFFFFFh
19897
                xor     ebx, 0FFFFFFFFh
19898
                and     ebp, ecx
19899
                and     ebx, [esp+14h]
19900
                xor     ebp, [esp+1Ch]
19901
                xor     ebx, edx
19902
                xor     ebp, [esp+4]
19903
                xor     ebx, ebp
19904
                mov     ebp, edi
19905
                and     ebx, [esp+18h]
19906
                and     ebp, [esp+1Ch]
19907
                and     edi, edx
19908
                xor     ebp, ecx
19909
                xor     ebx, [esp+4]
19910
                ror     eax, 0Bh
19911
                xor     ebp, edx
19912
                mov     edx, [esi+6Ch]
19913
                and     ebp, [esp+14h]
19914
                xor     ebx, edi
19915
                xor     ebp, ebx
19916
                lea     edx, [eax+edx-61E064A2h]
19917
                ror     ebp, 7
19918
                add     ebp, edx
19919
                mov     eax, [esp+4]
19920
                mov     [esp+8], ebp
19921
                mov     ecx, [esp+1Ch]
19922
                mov     edx, [esp+0Ch]
19923
                mov     edi, ebp
19924
                mov     ebx, edx
19925
                xor     ebp, 0FFFFFFFFh
19926
                xor     ebx, 0FFFFFFFFh
19927
                and     ebp, ecx
19928
                and     ebx, [esp+10h]
19929
                xor     ebp, [esp+18h]
19930
                xor     ebx, edx
19931
                xor     ebp, [esp]
19932
                xor     ebx, ebp
19933
                mov     ebp, edi
19934
                and     ebx, [esp+14h]
19935
                and     ebp, [esp+18h]
19936
                and     edi, edx
19937
                xor     ebp, ecx
19938
                xor     ebx, [esp]
19939
                ror     eax, 0Bh
19940
                xor     ebp, edx
19941
                mov     edx, [esi+30h]
19942
                and     ebp, [esp+10h]
19943
                xor     ebx, edi
19944
                xor     ebp, ebx
19945
                lea     edx, [eax+edx+21C66842h]
19946
                ror     ebp, 7
19947
                add     ebp, edx
19948
                mov     eax, [esp]
19949
                mov     [esp+4], ebp
19950
                mov     ecx, [esp+18h]
19951
                mov     edx, [esp+8]
19952
                mov     edi, ebp
19953
                mov     ebx, edx
19954
                xor     ebp, 0FFFFFFFFh
19955
                xor     ebx, 0FFFFFFFFh
19956
                and     ebp, ecx
19957
                and     ebx, [esp+0Ch]
19958
                xor     ebp, [esp+14h]
19959
                xor     ebx, edx
19960
                xor     ebp, [esp+1Ch]
19961
                xor     ebx, ebp
19962
                mov     ebp, edi
19963
                and     ebx, [esp+10h]
19964
                and     ebp, [esp+14h]
19965
                and     edi, edx
19966
                xor     ebp, ecx
19967
                xor     ebx, [esp+1Ch]
19968
                ror     eax, 0Bh
19969
                xor     ebp, edx
19970
                mov     edx, [esi+24h]
19971
                and     ebp, [esp+0Ch]
19972
                xor     ebx, edi
19973
                xor     ebp, ebx
19974
                lea     edx, [eax+edx-9169366h]
19975
                ror     ebp, 7
19976
                add     ebp, edx
19977
                mov     eax, [esp+1Ch]
19978
                mov     [esp], ebp
19979
                mov     ecx, [esp+14h]
19980
                mov     edx, [esp+4]
19981
                mov     edi, ebp
19982
                mov     ebx, edx
19983
                xor     ebp, 0FFFFFFFFh
19984
                xor     ebx, 0FFFFFFFFh
19985
                and     ebp, ecx
19986
                and     ebx, [esp+8]
19987
                xor     ebp, [esp+10h]
19988
                xor     ebx, edx
19989
                xor     ebp, [esp+18h]
19990
                xor     ebx, ebp
19991
                mov     ebp, edi
19992
                and     ebx, [esp+0Ch]
19993
                and     ebp, [esp+10h]
19994
                and     edi, edx
19995
                xor     ebp, ecx
19996
                xor     ebx, [esp+18h]
19997
                ror     eax, 0Bh
19998
                xor     ebp, edx
19999
                mov     edx, [esi+4]
20000
                and     ebp, [esp+8]
20001
                xor     ebx, edi
20002
                xor     ebp, ebx
20003
                lea     edx, [eax+edx+670C9C61h]
20004
                ror     ebp, 7
20005
                add     ebp, edx
20006
                mov     eax, [esp+18h]
20007
                mov     [esp+1Ch], ebp
20008
                mov     ecx, [esp+10h]
20009
                mov     edx, [esp]
20010
                mov     edi, ebp
20011
                mov     ebx, edx
20012
                xor     ebp, 0FFFFFFFFh
20013
                xor     ebx, 0FFFFFFFFh
20014
                and     ebp, ecx
20015
                and     ebx, [esp+4]
20016
                xor     ebp, [esp+0Ch]
20017
                xor     ebx, edx
20018
                xor     ebp, [esp+14h]
20019
                xor     ebx, ebp
20020
                mov     ebp, edi
20021
                and     ebx, [esp+8]
20022
                and     ebp, [esp+0Ch]
20023
                and     edi, edx
20024
                xor     ebp, ecx
20025
                xor     ebx, [esp+14h]
20026
                ror     eax, 0Bh
20027
                xor     ebp, edx
20028
                mov     edx, [esi+74h]
20029
                and     ebp, [esp+4]
20030
                xor     ebx, edi
20031
                xor     ebp, ebx
20032
                lea     edx, [eax+edx-542C7710h]
20033
                ror     ebp, 7
20034
                add     ebp, edx
20035
                mov     eax, [esp+14h]
20036
                mov     [esp+18h], ebp
20037
                mov     ecx, [esp+0Ch]
20038
                mov     edx, [esp+1Ch]
20039
                mov     edi, ebp
20040
                mov     ebx, edx
20041
                xor     ebp, 0FFFFFFFFh
20042
                xor     ebx, 0FFFFFFFFh
20043
                and     ebp, ecx
20044
                and     ebx, [esp]
20045
                xor     ebp, [esp+8]
20046
                xor     ebx, edx
20047
                xor     ebp, [esp+10h]
20048
                xor     ebx, ebp
20049
                mov     ebp, edi
20050
                and     ebx, [esp+4]
20051
                and     ebp, [esp+8]
20052
                and     edi, edx
20053
                xor     ebp, ecx
20054
                xor     ebx, [esp+10h]
20055
                ror     eax, 0Bh
20056
                xor     ebp, edx
20057
                mov     edx, [esi+14h]
20058
                and     ebp, [esp]
20059
                xor     ebx, edi
20060
                xor     ebp, ebx
20061
                lea     edx, [eax+edx+6A51A0D2h]
20062
                ror     ebp, 7
20063
                add     ebp, edx
20064
                mov     eax, [esp+10h]
20065
                mov     [esp+14h], ebp
20066
                mov     ecx, [esp+8]
20067
                mov     edx, [esp+18h]
20068
                mov     edi, ebp
20069
                mov     ebx, edx
20070
                xor     ebp, 0FFFFFFFFh
20071
                xor     ebx, 0FFFFFFFFh
20072
                and     ebp, ecx
20073
                and     ebx, [esp+1Ch]
20074
                xor     ebp, [esp+4]
20075
                xor     ebx, edx
20076
                xor     ebp, [esp+0Ch]
20077
                xor     ebx, ebp
20078
                mov     ebp, edi
20079
                and     ebx, [esp]
20080
                and     ebp, [esp+4]
20081
                and     edi, edx
20082
                xor     ebp, ecx
20083
                xor     ebx, [esp+0Ch]
20084
                ror     eax, 0Bh
20085
                xor     ebp, edx
20086
                mov     edx, [esi+3Ch]
20087
                and     ebp, [esp+1Ch]
20088
                xor     ebx, edi
20089
                xor     ebp, ebx
20090
                lea     edx, [eax+edx-27ABD098h]
20091
                ror     ebp, 7
20092
                add     ebp, edx
20093
                mov     eax, [esp+0Ch]
20094
                mov     [esp+10h], ebp
20095
                mov     ecx, [esp+4]
20096
                mov     edx, [esp+14h]
20097
                mov     edi, ebp
20098
                mov     ebx, edx
20099
                xor     ebp, 0FFFFFFFFh
20100
                xor     ebx, 0FFFFFFFFh
20101
                and     ebp, ecx
20102
                and     ebx, [esp+18h]
20103
                xor     ebp, [esp]
20104
                xor     ebx, edx
20105
                xor     ebp, [esp+8]
20106
                xor     ebx, ebp
20107
                mov     ebp, edi
20108
                and     ebx, [esp+1Ch]
20109
                and     ebp, [esp]
20110
                and     edi, edx
20111
                xor     ebp, ecx
20112
                xor     ebx, [esp+8]
20113
                ror     eax, 0Bh
20114
                xor     ebp, edx
20115
                mov     edx, [esi+44h]
20116
                and     ebp, [esp+18h]
20117
                xor     ebx, edi
20118
                xor     ebp, ebx
20119
                lea     edx, [eax+edx-69F058D8h]
20120
                ror     ebp, 7
20121
                add     ebp, edx
20122
                mov     eax, [esp+8]
20123
                mov     [esp+0Ch], ebp
20124
                mov     ecx, [esp]
20125
                mov     edx, [esp+10h]
20126
                mov     edi, ebp
20127
                mov     ebx, edx
20128
                xor     ebp, 0FFFFFFFFh
20129
                xor     ebx, 0FFFFFFFFh
20130
                and     ebp, ecx
20131
                and     ebx, [esp+14h]
20132
                xor     ebp, [esp+1Ch]
20133
                xor     ebx, edx
20134
                xor     ebp, [esp+4]
20135
                xor     ebx, ebp
20136
                mov     ebp, edi
20137
                and     ebx, [esp+18h]
20138
                and     ebp, [esp+1Ch]
20139
                and     edi, edx
20140
                xor     ebp, ecx
20141
                xor     ebx, [esp+4]
20142
                ror     eax, 0Bh
20143
                xor     ebp, edx
20144
                mov     edx, [esi+28h]
20145
                and     ebp, [esp+14h]
20146
                xor     ebx, edi
20147
                xor     ebp, ebx
20148
                lea     edx, [eax+edx-54AECC5Dh]
20149
                ror     ebp, 7
20150
                add     ebp, edx
20151
                mov     eax, [esp+4]
20152
                mov     [esp+8], ebp
20153
                mov     ecx, [esp+1Ch]
20154
                mov     edx, [esp+0Ch]
20155
                mov     edi, ebp
20156
                mov     ebx, edx
20157
                xor     ebp, 0FFFFFFFFh
20158
                xor     ebx, 0FFFFFFFFh
20159
                and     ebp, ecx
20160
                and     ebx, [esp+10h]
20161
                xor     ebp, [esp+18h]
20162
                xor     ebx, edx
20163
                xor     ebp, [esp]
20164
                xor     ebx, ebp
20165
                mov     ebp, edi
20166
                and     ebx, [esp+14h]
20167
                and     ebp, [esp+18h]
20168
                and     edi, edx
20169
                xor     ebp, ecx
20170
                xor     ebx, [esp]
20171
                ror     eax, 0Bh
20172
                xor     ebp, edx
20173
                mov     edx, [esi+40h]
20174
                and     ebp, [esp+10h]
20175
                xor     ebx, edi
20176
                xor     ebp, ebx
20177
                lea     edx, [eax+edx+6EEF0B6Ch]
20178
                ror     ebp, 7
20179
                add     ebp, edx
20180
                mov     eax, [esp]
20181
                mov     [esp+4], ebp
20182
                mov     ecx, [esp+18h]
20183
                mov     edx, [esp+8]
20184
                mov     edi, ebp
20185
                mov     ebx, edx
20186
                xor     ebp, 0FFFFFFFFh
20187
                xor     ebx, 0FFFFFFFFh
20188
                and     ebp, ecx
20189
                and     ebx, [esp+0Ch]
20190
                xor     ebp, [esp+14h]
20191
                xor     ebx, edx
20192
                xor     ebp, [esp+1Ch]
20193
                xor     ebx, ebp
20194
                mov     ebp, edi
20195
                and     ebx, [esp+10h]
20196
                and     ebp, [esp+14h]
20197
                and     edi, edx
20198
                xor     ebp, ecx
20199
                xor     ebx, [esp+1Ch]
20200
                ror     eax, 0Bh
20201
                xor     ebp, edx
20202
                mov     edx, [esi+34h]
20203
                and     ebp, [esp+0Ch]
20204
                xor     ebx, edi
20205
                xor     ebp, ebx
20206
                lea     edx, [eax+edx+137A3BE4h]
20207
                ror     ebp, 7
20208
                add     ebp, edx
20209
                mov     eax, [esp+1Ch]
20210
                mov     [esp], ebp
20211
                nop
20212
                nop
20213
                nop
20214
                nop
20215
                mov     ebx, [esp+0Ch]
20216
                mov     ecx, [esp+10h]
20217
                and     ebp, ebx
20218
                mov     edx, [esp+14h]
20219
                and     ebx, ecx
20220
                mov     edi, [esp+18h]
20221
                and     ecx, edx
20222
                xor     edx, 0FFFFFFFFh
20223
                and     ebx, edi
20224
                and     edi, [esp+8]
20225
                xor     ebx, edx
20226
                ror     eax, 0Bh
20227
                xor     ecx, edi
20228
                mov     edi, [esi+6Ch]
20229
                and     ebx, [esp+4]
20230
                xor     ebp, ecx
20231
                lea     edi, [eax+edi-45C40FB0h]
20232
                xor     ebp, ebx
20233
                ror     ebp, 7
20234
                add     ebp, edi
20235
                mov     eax, [esp+18h]
20236
                mov     [esp+1Ch], ebp
20237
                mov     ebx, [esp+8]
20238
                mov     ecx, [esp+0Ch]
20239
                and     ebp, ebx
20240
                mov     edx, [esp+10h]
20241
                and     ebx, ecx
20242
                mov     edi, [esp+14h]
20243
                and     ecx, edx
20244
                xor     edx, 0FFFFFFFFh
20245
                and     ebx, edi
20246
                and     edi, [esp+4]
20247
                xor     ebx, edx
20248
                ror     eax, 0Bh
20249
                xor     ecx, edi
20250
                mov     edi, [esi+0Ch]
20251
                and     ebx, [esp]
20252
                xor     ebp, ecx
20253
                lea     edi, [eax+edi+7EFB2A98h]
20254
                xor     ebp, ebx
20255
                ror     ebp, 7
20256
                add     ebp, edi
20257
                mov     eax, [esp+14h]
20258
                mov     [esp+18h], ebp
20259
                mov     ebx, [esp+4]
20260
                mov     ecx, [esp+8]
20261
                and     ebp, ebx
20262
                mov     edx, [esp+0Ch]
20263
                and     ebx, ecx
20264
                mov     edi, [esp+10h]
20265
                and     ecx, edx
20266
                xor     edx, 0FFFFFFFFh
20267
                and     ebx, edi
20268
                and     edi, [esp]
20269
                xor     ebx, edx
20270
                ror     eax, 0Bh
20271
                xor     ecx, edi
20272
                mov     edi, [esi+54h]
20273
                and     ebx, [esp+1Ch]
20274
                xor     ebp, ecx
20275
                lea     edi, [eax+edi-5E0E9AE3h]
20276
                xor     ebp, ebx
20277
                ror     ebp, 7
20278
                add     ebp, edi
20279
                mov     eax, [esp+10h]
20280
                mov     [esp+14h], ebp
20281
                mov     ebx, [esp]
20282
                mov     ecx, [esp+4]
20283
                and     ebp, ebx
20284
                mov     edx, [esp+8]
20285
                and     ebx, ecx
20286
                mov     edi, [esp+0Ch]
20287
                and     ecx, edx
20288
                xor     edx, 0FFFFFFFFh
20289
                and     ebx, edi
20290
                and     edi, [esp+1Ch]
20291
                xor     ebx, edx
20292
                ror     eax, 0Bh
20293
                xor     ecx, edi
20294
                mov     edi, [esi+68h]
20295
                and     ebx, [esp+18h]
20296
                xor     ebp, ecx
20297
                lea     edi, [eax+edi+39AF0176h]
20298
                xor     ebp, ebx
20299
                ror     ebp, 7
20300
                add     ebp, edi
20301
                mov     eax, [esp+0Ch]
20302
                mov     [esp+10h], ebp
20303
                mov     ebx, [esp+1Ch]
20304
                mov     ecx, [esp]
20305
                and     ebp, ebx
20306
                mov     edx, [esp+4]
20307
                and     ebx, ecx
20308
                mov     edi, [esp+8]
20309
                and     ecx, edx
20310
                xor     edx, 0FFFFFFFFh
20311
                and     ebx, edi
20312
                and     edi, [esp+18h]
20313
                xor     ebx, edx
20314
                ror     eax, 0Bh
20315
                xor     ecx, edi
20316
                mov     edi, [esi+44h]
20317
                and     ebx, [esp+14h]
20318
                xor     ebp, ecx
20319
                lea     edi, [eax+edi+66CA593Eh]
20320
                xor     ebp, ebx
20321
                ror     ebp, 7
20322
                add     ebp, edi
20323
                mov     eax, [esp+8]
20324
                mov     [esp+0Ch], ebp
20325
                mov     ebx, [esp+18h]
20326
                mov     ecx, [esp+1Ch]
20327
                and     ebp, ebx
20328
                mov     edx, [esp]
20329
                and     ebx, ecx
20330
                mov     edi, [esp+4]
20331
                and     ecx, edx
20332
                xor     edx, 0FFFFFFFFh
20333
                and     ebx, edi
20334
                and     edi, [esp+14h]
20335
                xor     ebx, edx
20336
                ror     eax, 0Bh
20337
                xor     ecx, edi
20338
                mov     edi, [esi+2Ch]
20339
                and     ebx, [esp+10h]
20340
                xor     ebp, ecx
20341
                lea     edi, [eax+edi-7DBCF178h]
20342
                xor     ebp, ebx
20343
                ror     ebp, 7
20344
                add     ebp, edi
20345
                mov     eax, [esp+4]
20346
                mov     [esp+8], ebp
20347
                mov     ebx, [esp+14h]
20348
                mov     ecx, [esp+18h]
20349
                and     ebp, ebx
20350
                mov     edx, [esp+1Ch]
20351
                and     ebx, ecx
20352
                mov     edi, [esp]
20353
                and     ecx, edx
20354
                xor     edx, 0FFFFFFFFh
20355
                and     ebx, edi
20356
                and     edi, [esp+10h]
20357
                xor     ebx, edx
20358
                ror     eax, 0Bh
20359
                xor     ecx, edi
20360
                mov     edi, [esi+50h]
20361
                and     ebx, [esp+0Ch]
20362
                xor     ebp, ecx
20363
                lea     edi, [eax+edi-731179E7h]
20364
                xor     ebp, ebx
20365
                ror     ebp, 7
20366
                add     ebp, edi
20367
                mov     eax, [esp]
20368
                mov     [esp+4], ebp
20369
                mov     ebx, [esp+10h]
20370
                mov     ecx, [esp+14h]
20371
                and     ebp, ebx
20372
                mov     edx, [esp+18h]
20373
                and     ebx, ecx
20374
                mov     edi, [esp+1Ch]
20375
                and     ecx, edx
20376
                xor     edx, 0FFFFFFFFh
20377
                and     ebx, edi
20378
                and     edi, [esp+0Ch]
20379
                xor     ebx, edx
20380
                ror     eax, 0Bh
20381
                xor     ecx, edi
20382
                mov     edi, [esi+74h]
20383
                and     ebx, [esp+8]
20384
                xor     ebp, ecx
20385
                lea     edi, [eax+edi+456F9FB4h]
20386
                xor     ebp, ebx
20387
                ror     ebp, 7
20388
                add     ebp, edi
20389
                mov     eax, [esp+1Ch]
20390
                mov     [esp], ebp
20391
                mov     ebx, [esp+0Ch]
20392
                mov     ecx, [esp+10h]
20393
                and     ebp, ebx
20394
                mov     edx, [esp+14h]
20395
                and     ebx, ecx
20396
                mov     edi, [esp+18h]
20397
                and     ecx, edx
20398
                xor     edx, 0FFFFFFFFh
20399
                and     ebx, edi
20400
                and     edi, [esp+8]
20401
                xor     ebx, edx
20402
                ror     eax, 0Bh
20403
                xor     ecx, edi
20404
                mov     edi, [esi+4Ch]
20405
                and     ebx, [esp+4]
20406
                xor     ebp, ecx
20407
                lea     edi, [eax+edi+7D84A5C3h]
20408
                xor     ebp, ebx
20409
                ror     ebp, 7
20410
                add     ebp, edi
20411
                mov     eax, [esp+18h]
20412
                mov     [esp+1Ch], ebp
20413
                mov     ebx, [esp+8]
20414
                mov     ecx, [esp+0Ch]
20415
                and     ebp, ebx
20416
                mov     edx, [esp+10h]
20417
                and     ebx, ecx
20418
                mov     edi, [esp+14h]
20419
                and     ecx, edx
20420
                xor     edx, 0FFFFFFFFh
20421
                and     ebx, edi
20422
                and     edi, [esp+4]
20423
                xor     ebx, edx
20424
                ror     eax, 0Bh
20425
                xor     ecx, edi
20426
                mov     edi, [esi]
20427
                and     ebx, [esp]
20428
                xor     ebp, ecx
20429
                lea     edi, [eax+edi+3B8B5EBEh]
20430
                xor     ebp, ebx
20431
                ror     ebp, 7
20432
                add     ebp, edi
20433
                mov     eax, [esp+14h]
20434
                mov     [esp+18h], ebp
20435
                mov     ebx, [esp+4]
20436
                mov     ecx, [esp+8]
20437
                and     ebp, ebx
20438
                mov     edx, [esp+0Ch]
20439
                and     ebx, ecx
20440
                mov     edi, [esp+10h]
20441
                and     ecx, edx
20442
                xor     edx, 0FFFFFFFFh
20443
                and     ebx, edi
20444
                and     edi, [esp]
20445
                xor     ebx, edx
20446
                ror     eax, 0Bh
20447
                xor     ecx, edi
20448
                mov     edi, [esi+30h]
20449
                and     ebx, [esp+1Ch]
20450
                xor     ebp, ecx
20451
                lea     edi, [eax+edi-1F908A28h]
20452
                xor     ebp, ebx
20453
                ror     ebp, 7
20454
                add     ebp, edi
20455
                mov     eax, [esp+10h]
20456
                mov     [esp+14h], ebp
20457
                mov     ebx, [esp]
20458
                mov     ecx, [esp+4]
20459
                and     ebp, ebx
20460
                mov     edx, [esp+8]
20461
                and     ebx, ecx
20462
                mov     edi, [esp+0Ch]
20463
                and     ecx, edx
20464
                xor     edx, 0FFFFFFFFh
20465
                and     ebx, edi
20466
                and     edi, [esp+1Ch]
20467
                xor     ebx, edx
20468
                ror     eax, 0Bh
20469
                xor     ecx, edi
20470
                mov     edi, [esi+1Ch]
20471
                and     ebx, [esp+18h]
20472
                xor     ebp, ecx
20473
                lea     edi, [eax+edi-7A3EDF8Dh]
20474
                xor     ebp, ebx
20475
                ror     ebp, 7
20476
                add     ebp, edi
20477
                mov     eax, [esp+0Ch]
20478
                mov     [esp+10h], ebp
20479
                mov     ebx, [esp+1Ch]
20480
                mov     ecx, [esp]
20481
                and     ebp, ebx
20482
                mov     edx, [esp+4]
20483
                and     ebx, ecx
20484
                mov     edi, [esp+8]
20485
                and     ecx, edx
20486
                xor     edx, 0FFFFFFFFh
20487
                and     ebx, edi
20488
                and     edi, [esp+18h]
20489
                xor     ebx, edx
20490
                ror     eax, 0Bh
20491
                xor     ecx, edi
20492
                mov     edi, [esi+34h]
20493
                and     ebx, [esp+14h]
20494
                xor     ebp, ecx
20495
                lea     edi, [eax+edi+401A449Fh]
20496
                xor     ebp, ebx
20497
                ror     ebp, 7
20498
                add     ebp, edi
20499
                mov     eax, [esp+8]
20500
                mov     [esp+0Ch], ebp
20501
                mov     ebx, [esp+18h]
20502
                mov     ecx, [esp+1Ch]
20503
                and     ebp, ebx
20504
                mov     edx, [esp]
20505
                and     ebx, ecx
20506
                mov     edi, [esp+4]
20507
                and     ecx, edx
20508
                xor     edx, 0FFFFFFFFh
20509
                and     ebx, edi
20510
                and     edi, [esp+14h]
20511
                xor     ebx, edx
20512
                ror     eax, 0Bh
20513
                xor     ecx, edi
20514
                mov     edi, [esi+20h]
20515
                and     ebx, [esp+10h]
20516
                xor     ebp, ecx
20517
                lea     edi, [eax+edi+56C16AA6h]
20518
                xor     ebp, ebx
20519
                ror     ebp, 7
20520
                add     ebp, edi
20521
                mov     eax, [esp+4]
20522
                mov     [esp+8], ebp
20523
                mov     ebx, [esp+14h]
20524
                mov     ecx, [esp+18h]
20525
                and     ebp, ebx
20526
                mov     edx, [esp+1Ch]
20527
                and     ebx, ecx
20528
                mov     edi, [esp]
20529
                and     ecx, edx
20530
                xor     edx, 0FFFFFFFFh
20531
                and     ebx, edi
20532
                and     edi, [esp+10h]
20533
                xor     ebx, edx
20534
                ror     eax, 0Bh
20535
                xor     ecx, edi
20536
                mov     edi, [esi+7Ch]
20537
                and     ebx, [esp+0Ch]
20538
                xor     ebp, ecx
20539
                lea     edi, [eax+edi+4ED3AA62h]
20540
                xor     ebp, ebx
20541
                ror     ebp, 7
20542
                add     ebp, edi
20543
                mov     eax, [esp]
20544
                mov     [esp+4], ebp
20545
                mov     ebx, [esp+10h]
20546
                mov     ecx, [esp+14h]
20547
                and     ebp, ebx
20548
                mov     edx, [esp+18h]
20549
                and     ebx, ecx
20550
                mov     edi, [esp+1Ch]
20551
                and     ecx, edx
20552
                xor     edx, 0FFFFFFFFh
20553
                and     ebx, edi
20554
                and     edi, [esp+0Ch]
20555
                xor     ebx, edx
20556
                ror     eax, 0Bh
20557
                xor     ecx, edi
20558
                mov     edi, [esi+28h]
20559
                and     ebx, [esp+8]
20560
                xor     ebp, ecx
20561
                lea     edi, [eax+edi+363F7706h]
20562
                xor     ebp, ebx
20563
                ror     ebp, 7
20564
                add     ebp, edi
20565
                mov     eax, [esp+1Ch]
20566
                mov     [esp], ebp
20567
                mov     ebx, [esp+0Ch]
20568
                mov     ecx, [esp+10h]
20569
                and     ebp, ebx
20570
                mov     edx, [esp+14h]
20571
                and     ebx, ecx
20572
                mov     edi, [esp+18h]
20573
                and     ecx, edx
20574
                xor     edx, 0FFFFFFFFh
20575
                and     ebx, edi
20576
                and     edi, [esp+8]
20577
                xor     ebx, edx
20578
                ror     eax, 0Bh
20579
                xor     ecx, edi
20580
                mov     edi, [esi+14h]
20581
                and     ebx, [esp+4]
20582
                xor     ebp, ecx
20583
                lea     edi, [eax+edi+1BFEDF72h]
20584
                xor     ebp, ebx
20585
                ror     ebp, 7
20586
                add     ebp, edi
20587
                mov     eax, [esp+18h]
20588
                mov     [esp+1Ch], ebp
20589
                mov     ebx, [esp+8]
20590
                mov     ecx, [esp+0Ch]
20591
                and     ebp, ebx
20592
                mov     edx, [esp+10h]
20593
                and     ebx, ecx
20594
                mov     edi, [esp+14h]
20595
                and     ecx, edx
20596
                xor     edx, 0FFFFFFFFh
20597
                and     ebx, edi
20598
                and     edi, [esp+4]
20599
                xor     ebx, edx
20600
                ror     eax, 0Bh
20601
                xor     ecx, edi
20602
                mov     edi, [esi+24h]
20603
                and     ebx, [esp]
20604
                xor     ebp, ecx
20605
                lea     edi, [eax+edi+429B023Dh]
20606
                xor     ebp, ebx
20607
                ror     ebp, 7
20608
                add     ebp, edi
20609
                mov     eax, [esp+14h]
20610
                mov     [esp+18h], ebp
20611
                mov     ebx, [esp+4]
20612
                mov     ecx, [esp+8]
20613
                and     ebp, ebx
20614
                mov     edx, [esp+0Ch]
20615
                and     ebx, ecx
20616
                mov     edi, [esp+10h]
20617
                and     ecx, edx
20618
                xor     edx, 0FFFFFFFFh
20619
                and     ebx, edi
20620
                and     edi, [esp]
20621
                xor     ebx, edx
20622
                ror     eax, 0Bh
20623
                xor     ecx, edi
20624
                mov     edi, [esi+38h]
20625
                and     ebx, [esp+1Ch]
20626
                xor     ebp, ecx
20627
                lea     edi, [eax+edi+37D0D724h]
20628
                xor     ebp, ebx
20629
                ror     ebp, 7
20630
                add     ebp, edi
20631
                mov     eax, [esp+10h]
20632
                mov     [esp+14h], ebp
20633
                mov     ebx, [esp]
20634
                mov     ecx, [esp+4]
20635
                and     ebp, ebx
20636
                mov     edx, [esp+8]
20637
                and     ebx, ecx
20638
                mov     edi, [esp+0Ch]
20639
                and     ecx, edx
20640
                xor     edx, 0FFFFFFFFh
20641
                and     ebx, edi
20642
                and     edi, [esp+1Ch]
20643
                xor     ebx, edx
20644
                ror     eax, 0Bh
20645
                xor     ecx, edi
20646
                mov     edi, [esi+78h]
20647
                and     ebx, [esp+18h]
20648
                xor     ebp, ecx
20649
                lea     edi, [eax+edi-2FF5EDB8h]
20650
                xor     ebp, ebx
20651
                ror     ebp, 7
20652
                add     ebp, edi
20653
                mov     eax, [esp+0Ch]
20654
                mov     [esp+10h], ebp
20655
                mov     ebx, [esp+1Ch]
20656
                mov     ecx, [esp]
20657
                and     ebp, ebx
20658
                mov     edx, [esp+4]
20659
                and     ebx, ecx
20660
                mov     edi, [esp+8]
20661
                and     ecx, edx
20662
                xor     edx, 0FFFFFFFFh
20663
                and     ebx, edi
20664
                and     edi, [esp+18h]
20665
                xor     ebx, edx
20666
                ror     eax, 0Bh
20667
                xor     ecx, edi
20668
                mov     edi, [esi+48h]
20669
                and     ebx, [esp+14h]
20670
                xor     ebp, ecx
20671
                lea     edi, [eax+edi-24F0152Dh]
20672
                xor     ebp, ebx
20673
                ror     ebp, 7
20674
                add     ebp, edi
20675
                mov     eax, [esp+8]
20676
                mov     [esp+0Ch], ebp
20677
                mov     ebx, [esp+18h]
20678
                mov     ecx, [esp+1Ch]
20679
                and     ebp, ebx
20680
                mov     edx, [esp]
20681
                and     ebx, ecx
20682
                mov     edi, [esp+4]
20683
                and     ecx, edx
20684
                xor     edx, 0FFFFFFFFh
20685
                and     ebx, edi
20686
                and     edi, [esp+14h]
20687
                xor     ebx, edx
20688
                ror     eax, 0Bh
20689
                xor     ecx, edi
20690
                mov     edi, [esi+18h]
20691
                and     ebx, [esp+10h]
20692
                xor     ebp, ecx
20693
                lea     edi, [eax+edi+49F1C09Bh]
20694
                xor     ebp, ebx
20695
                ror     ebp, 7
20696
                add     ebp, edi
20697
                mov     eax, [esp+4]
20698
                mov     [esp+8], ebp
20699
                mov     ebx, [esp+14h]
20700
                mov     ecx, [esp+18h]
20701
                and     ebp, ebx
20702
                mov     edx, [esp+1Ch]
20703
                and     ebx, ecx
20704
                mov     edi, [esp]
20705
                and     ecx, edx
20706
                xor     edx, 0FFFFFFFFh
20707
                and     ebx, edi
20708
                and     edi, [esp+10h]
20709
                xor     ebx, edx
20710
                ror     eax, 0Bh
20711
                xor     ecx, edi
20712
                mov     edi, [esi+70h]
20713
                and     ebx, [esp+0Ch]
20714
                xor     ebp, ecx
20715
                lea     edi, [eax+edi+75372C9h]
20716
                xor     ebp, ebx
20717
                ror     ebp, 7
20718
                add     ebp, edi
20719
                mov     eax, [esp]
20720
                mov     [esp+4], ebp
20721
                mov     ebx, [esp+10h]
20722
                mov     ecx, [esp+14h]
20723
                and     ebp, ebx
20724
                mov     edx, [esp+18h]
20725
                and     ebx, ecx
20726
                mov     edi, [esp+1Ch]
20727
                and     ecx, edx
20728
                xor     edx, 0FFFFFFFFh
20729
                and     ebx, edi
20730
                and     edi, [esp+0Ch]
20731
                xor     ebx, edx
20732
                ror     eax, 0Bh
20733
                xor     ecx, edi
20734
                mov     edi, [esi+60h]
20735
                and     ebx, [esp+8]
20736
                xor     ebp, ecx
20737
                lea     edi, [eax+edi-7F66E485h]
20738
                xor     ebp, ebx
20739
                ror     ebp, 7
20740
                add     ebp, edi
20741
                mov     eax, [esp+1Ch]
20742
                mov     [esp], ebp
20743
                mov     ebx, [esp+0Ch]
20744
                mov     ecx, [esp+10h]
20745
                and     ebp, ebx
20746
                mov     edx, [esp+14h]
20747
                and     ebx, ecx
20748
                mov     edi, [esp+18h]
20749
                and     ecx, edx
20750
                xor     edx, 0FFFFFFFFh
20751
                and     ebx, edi
20752
                and     edi, [esp+8]
20753
                xor     ebx, edx
20754
                ror     eax, 0Bh
20755
                xor     ecx, edi
20756
                mov     edi, [esi+8]
20757
                and     ebx, [esp+4]
20758
                xor     ebp, ecx
20759
                lea     edi, [eax+edi+25D479D8h]
20760
                xor     ebp, ebx
20761
                ror     ebp, 7
20762
                add     ebp, edi
20763
                mov     eax, [esp+18h]
20764
                mov     [esp+1Ch], ebp
20765
                mov     ebx, [esp+8]
20766
                mov     ecx, [esp+0Ch]
20767
                and     ebp, ebx
20768
                mov     edx, [esp+10h]
20769
                and     ebx, ecx
20770
                mov     edi, [esp+14h]
20771
                and     ecx, edx
20772
                xor     edx, 0FFFFFFFFh
20773
                and     ebx, edi
20774
                and     edi, [esp+4]
20775
                xor     ebx, edx
20776
                ror     eax, 0Bh
20777
                xor     ecx, edi
20778
                mov     edi, [esi+5Ch]
20779
                and     ebx, [esp]
20780
                xor     ebp, ecx
20781
                lea     edi, [eax+edi-9172109h]
20782
                xor     ebp, ebx
20783
                ror     ebp, 7
20784
                add     ebp, edi
20785
                mov     eax, [esp+14h]
20786
                mov     [esp+18h], ebp
20787
                mov     ebx, [esp+4]
20788
                mov     ecx, [esp+8]
20789
                and     ebp, ebx
20790
                mov     edx, [esp+0Ch]
20791
                and     ebx, ecx
20792
                mov     edi, [esp+10h]
20793
                and     ecx, edx
20794
                xor     edx, 0FFFFFFFFh
20795
                and     ebx, edi
20796
                and     edi, [esp]
20797
                xor     ebx, edx
20798
                ror     eax, 0Bh
20799
                xor     ecx, edi
20800
                mov     edi, [esi+40h]
20801
                and     ebx, [esp+1Ch]
20802
                xor     ebp, ecx
20803
                lea     edi, [eax+edi-1C01AFE6h]
20804
                xor     ebp, ebx
20805
                ror     ebp, 7
20806
                add     ebp, edi
20807
                mov     eax, [esp+10h]
20808
                mov     [esp+14h], ebp
20809
                mov     ebx, [esp]
20810
                mov     ecx, [esp+4]
20811
                and     ebp, ebx
20812
                mov     edx, [esp+8]
20813
                and     ebx, ecx
20814
                mov     edi, [esp+0Ch]
20815
                and     ecx, edx
20816
                xor     edx, 0FFFFFFFFh
20817
                and     ebx, edi
20818
                and     edi, [esp+1Ch]
20819
                xor     ebx, edx
20820
                ror     eax, 0Bh
20821
                xor     ecx, edi
20822
                mov     edi, [esi+58h]
20823
                and     ebx, [esp+18h]
20824
                xor     ebp, ecx
20825
                lea     edi, [eax+edi-4986B3C5h]
20826
                xor     ebp, ebx
20827
                ror     ebp, 7
20828
                add     ebp, edi
20829
                mov     eax, [esp+0Ch]
20830
                mov     [esp+10h], ebp
20831
                mov     ebx, [esp+1Ch]
20832
                mov     ecx, [esp]
20833
                and     ebp, ebx
20834
                mov     edx, [esp+4]
20835
                and     ebx, ecx
20836
                mov     edi, [esp+8]
20837
                and     ecx, edx
20838
                xor     edx, 0FFFFFFFFh
20839
                and     ebx, edi
20840
                and     edi, [esp+18h]
20841
                xor     ebx, edx
20842
                ror     eax, 0Bh
20843
                xor     ecx, edi
20844
                mov     edi, [esi+10h]
20845
                and     ebx, [esp+14h]
20846
                xor     ebp, ecx
20847
                lea     edi, [eax+edi-68931F43h]
20848
                xor     ebp, ebx
20849
                ror     ebp, 7
20850
                add     ebp, edi
20851
                mov     eax, [esp+8]
20852
                mov     [esp+0Ch], ebp
20853
                mov     ebx, [esp+18h]
20854
                mov     ecx, [esp+1Ch]
20855
                and     ebp, ebx
20856
                mov     edx, [esp]
20857
                and     ebx, ecx
20858
                mov     edi, [esp+4]
20859
                and     ecx, edx
20860
                xor     edx, 0FFFFFFFFh
20861
                and     ebx, edi
20862
                and     edi, [esp+14h]
20863
                xor     ebx, edx
20864
                ror     eax, 0Bh
20865
                xor     ecx, edi
20866
                mov     edi, [esi+4]
20867
                and     ebx, [esp+10h]
20868
                xor     ebp, ecx
20869
                lea     edi, [eax+edi+4C006BAh]
20870
                xor     ebp, ebx
20871
                ror     ebp, 7
20872
                add     ebp, edi
20873
                mov     eax, [esp+4]
20874
                mov     [esp+8], ebp
20875
                mov     ebx, [esp+14h]
20876
                mov     ecx, [esp+18h]
20877
                and     ebp, ebx
20878
                mov     edx, [esp+1Ch]
20879
                and     ebx, ecx
20880
                mov     edi, [esp]
20881
                and     ecx, edx
20882
                xor     edx, 0FFFFFFFFh
20883
                and     ebx, edi
20884
                and     edi, [esp+10h]
20885
                xor     ebx, edx
20886
                ror     eax, 0Bh
20887
                xor     ecx, edi
20888
                mov     edi, [esi+64h]
20889
                and     ebx, [esp+0Ch]
20890
                xor     ebp, ecx
20891
                lea     edi, [eax+edi-3E56B04Ah]
20892
                xor     ebp, ebx
20893
                ror     ebp, 7
20894
                add     ebp, edi
20895
                mov     eax, [esp]
20896
                mov     [esp+4], ebp
20897
                mov     ebx, [esp+10h]
20898
                mov     ecx, [esp+14h]
20899
                and     ebp, ebx
20900
                mov     edx, [esp+18h]
20901
                and     ebx, ecx
20902
                mov     edi, [esp+1Ch]
20903
                and     ecx, edx
20904
                xor     edx, 0FFFFFFFFh
20905
                and     ebx, edi
20906
                and     edi, [esp+0Ch]
20907
                xor     ebx, edx
20908
                ror     eax, 0Bh
20909
                xor     ecx, edi
20910
                mov     edi, [esi+3Ch]
20911
                and     ebx, [esp+8]
20912
                xor     ebp, ecx
20913
                lea     edi, [eax+edi+409F60C4h]
20914
                xor     ebp, ebx
20915
                ror     ebp, 7
20916
                add     ebp, edi
20917
                mov     eax, [esp+1Ch]
20918
                mov     [esp], ebp
20919
                mov     edi, [esp+24h]
20920
                mov     eax, [esp]
20921
                mov     ebx, [esp+4]
20922
                add     [edi], eax
20923
                add     [edi+4], ebx
20924
                mov     ecx, [esp+8]
20925
                mov     edx, [esp+0Ch]
20926
                add     [edi+8], ecx
20927
                add     [edi+0Ch], edx
20928
                mov     eax, [esp+10h]
20929
                mov     ebx, [esp+14h]
20930
                add     [edi+10h], eax
20931
                add     [edi+14h], ebx
20932
                mov     ebp, [esp+28h]
20933
                mov     ecx, [esp+18h]
20934
                mov     edx, [esp+1Ch]
20935
                mov     esp, ebp
20936
                add     [edi+18h], ecx
20937
                add     [edi+1Ch], edx
20938
                pop     ebp
20939
                pop     edi
20940
                pop     esi
20941
                pop     ebx
20942
end;
20943
{$ENDIF}
20944
 
20945
{$IFDEF THash_Tiger_asm}
20946
procedure THash_Tiger.DoTransform(Buffer: PLongArray);
20947
asm
20948
                push    ebx
20949
                push    esi
20950
                push    edi
20951
                lea     edi, [eax].THash_Tiger.FDigest
20952
                mov     esi, edx
20953
                push    ebp
20954
                mov     ebp, [eax].THash_Tiger.FRounds
20955
                lea     eax, Tiger_Data
20956
 
20957
                mov     ecx, esp
20958
                add     esp, 0FFFFFF94h
20959
                and     esp, 0FFFFFFC0h
20960
                sub     ebp, 3
20961
                mov     [esp+58h], esi
20962
                mov     [esp+5Ch], edi
20963
                mov     [esp+60h], ebp
20964
                mov     [esp+64h], eax
20965
                mov     [esp+68h], ecx
20966
                mov     eax, [esi]
20967
                mov     ebx, [esi+4]
20968
                mov     [esp], eax
20969
                mov     [esp+4], ebx
20970
                mov     ecx, [esi+8]
20971
                mov     edx, [esi+0Ch]
20972
                mov     [esp+8], ecx
20973
                mov     [esp+0Ch], edx
20974
                mov     eax, [esi+10h]
20975
                mov     ebx, [esi+14h]
20976
                mov     [esp+10h], eax
20977
                mov     [esp+14h], ebx
20978
                mov     ecx, [esi+18h]
20979
                mov     edx, [esi+1Ch]
20980
                mov     [esp+18h], ecx
20981
                mov     [esp+1Ch], edx
20982
                mov     eax, [esi+20h]
20983
                mov     ebx, [esi+24h]
20984
                mov     [esp+20h], eax
20985
                mov     [esp+24h], ebx
20986
                mov     ecx, [esi+28h]
20987
                mov     edx, [esi+2Ch]
20988
                mov     [esp+28h], ecx
20989
                mov     [esp+2Ch], edx
20990
                mov     eax, [esi+30h]
20991
                mov     ebx, [esi+34h]
20992
                mov     [esp+30h], eax
20993
                mov     [esp+34h], ebx
20994
                mov     ecx, [esi+38h]
20995
                mov     edx, [esi+3Ch]
20996
                mov     [esp+38h], ecx
20997
                mov     [esp+3Ch], edx
20998
                mov     eax, [edi]
20999
                mov     ebx, [edi+4]
21000
                mov     [esp+40h], eax
21001
                mov     [esp+44h], ebx
21002
                mov     ecx, [edi+8]
21003
                mov     edx, [edi+0Ch]
21004
                mov     [esp+48h], ecx
21005
                mov     [esp+4Ch], edx
21006
                mov     eax, [edi+10h]
21007
                mov     ebx, [edi+14h]
21008
                mov     [esp+50h], eax
21009
                mov     [esp+54h], ebx
21010
                mov     esi, [esp+64h]
21011
                mov     eax, [esp]
21012
                mov     ebx, [esp+4]
21013
                mov     ecx, [esp+50h]
21014
                mov     edx, [esp+54h]
21015
                xor     eax, ecx
21016
                xor     ebx, edx
21017
                mov     edi, eax
21018
                mov     [esp+50h], eax
21019
                shr     eax, 0Dh
21020
                mov     ebp, ebx
21021
                and     edi, 0FFh
21022
                mov     [esp+54h], ebx
21023
                shl     edi, 3
21024
                and     ebp, 0FFh
21025
                shr     ebx, 0Dh
21026
                and     eax, 7F8h
21027
                shl     ebp, 3
21028
                mov     ecx, [esi+edi]
21029
                mov     edx, [esi+edi+4]
21030
                xor     ecx, [esi+eax+800h]
21031
                xor     edx, [esi+eax+804h]
21032
                and     ebx, 7F8h
21033
                xor     ecx, [esi+ebp+1000h]
21034
                xor     edx, [esi+ebp+1004h]
21035
                xor     ecx, [esi+ebx+1800h]
21036
                xor     edx, [esi+ebx+1804h]
21037
                mov     edi, [esp+40h]
21038
                mov     ebp, [esp+44h]
21039
                sub     edi, ecx
21040
                mov     eax, [esp+50h]
21041
                sbb     ebp, edx
21042
                mov     ebx, [esp+54h]
21043
                mov     [esp+40h], edi
21044
                mov     edi, eax
21045
                shr     eax, 5
21046
                mov     [esp+44h], ebp
21047
                shr     edi, 15h
21048
                mov     ebp, ebx
21049
                shr     ebx, 5
21050
                and     eax, 7F8h
21051
                shr     ebp, 15h
21052
                and     edi, 7F8h
21053
                and     ebx, 7F8h
21054
                mov     ecx, [esi+eax+1800h]
21055
                mov     edx, [esi+eax+1804h]
21056
                xor     ecx, [esi+edi+1000h]
21057
                and     ebp, 7F8h
21058
                xor     edx, [esi+edi+1004h]
21059
                xor     ecx, [esi+ebx+800h]
21060
                xor     edx, [esi+ebx+804h]
21061
                xor     ecx, [esi+ebp]
21062
                xor     edx, [esi+ebp+4]
21063
                mov     eax, [esp+48h]
21064
                mov     ebx, [esp+4Ch]
21065
                add     eax, ecx
21066
                adc     ebx, edx
21067
                mov     ecx, eax
21068
                shr     ecx, 1Eh
21069
                mov     ebp, ebx
21070
                shl     ebx, 2
21071
                mov     edi, eax
21072
                shl     eax, 2
21073
                or      ebx, ecx
21074
                add     eax, edi
21075
                adc     ebx, ebp
21076
                mov     [esp+48h], eax
21077
                mov     [esp+4Ch], ebx
21078
                mov     eax, [esp+8]
21079
                mov     ebx, [esp+0Ch]
21080
                mov     ecx, [esp+40h]
21081
                mov     edx, [esp+44h]
21082
                xor     eax, ecx
21083
                xor     ebx, edx
21084
                mov     edi, eax
21085
                mov     [esp+40h], eax
21086
                shr     eax, 0Dh
21087
                mov     ebp, ebx
21088
                and     edi, 0FFh
21089
                mov     [esp+44h], ebx
21090
                shl     edi, 3
21091
                and     ebp, 0FFh
21092
                shr     ebx, 0Dh
21093
                and     eax, 7F8h
21094
                shl     ebp, 3
21095
                mov     ecx, [esi+edi]
21096
                mov     edx, [esi+edi+4]
21097
                xor     ecx, [esi+eax+800h]
21098
                xor     edx, [esi+eax+804h]
21099
                and     ebx, 7F8h
21100
                xor     ecx, [esi+ebp+1000h]
21101
                xor     edx, [esi+ebp+1004h]
21102
                xor     ecx, [esi+ebx+1800h]
21103
                xor     edx, [esi+ebx+1804h]
21104
                mov     edi, [esp+48h]
21105
                mov     ebp, [esp+4Ch]
21106
                sub     edi, ecx
21107
                mov     eax, [esp+40h]
21108
                sbb     ebp, edx
21109
                mov     ebx, [esp+44h]
21110
                mov     [esp+48h], edi
21111
                mov     edi, eax
21112
                shr     eax, 5
21113
                mov     [esp+4Ch], ebp
21114
                shr     edi, 15h
21115
                mov     ebp, ebx
21116
                shr     ebx, 5
21117
                and     eax, 7F8h
21118
                shr     ebp, 15h
21119
                and     edi, 7F8h
21120
                and     ebx, 7F8h
21121
                mov     ecx, [esi+eax+1800h]
21122
                mov     edx, [esi+eax+1804h]
21123
                xor     ecx, [esi+edi+1000h]
21124
                and     ebp, 7F8h
21125
                xor     edx, [esi+edi+1004h]
21126
                xor     ecx, [esi+ebx+800h]
21127
                xor     edx, [esi+ebx+804h]
21128
                xor     ecx, [esi+ebp]
21129
                xor     edx, [esi+ebp+4]
21130
                mov     eax, [esp+50h]
21131
                mov     ebx, [esp+54h]
21132
                add     eax, ecx
21133
                adc     ebx, edx
21134
                mov     ecx, eax
21135
                shr     ecx, 1Eh
21136
                mov     ebp, ebx
21137
                shl     ebx, 2
21138
                mov     edi, eax
21139
                shl     eax, 2
21140
                or      ebx, ecx
21141
                add     eax, edi
21142
                adc     ebx, ebp
21143
                mov     [esp+50h], eax
21144
                mov     [esp+54h], ebx
21145
                mov     eax, [esp+10h]
21146
                mov     ebx, [esp+14h]
21147
                mov     ecx, [esp+48h]
21148
                mov     edx, [esp+4Ch]
21149
                xor     eax, ecx
21150
                xor     ebx, edx
21151
                mov     edi, eax
21152
                mov     [esp+48h], eax
21153
                shr     eax, 0Dh
21154
                mov     ebp, ebx
21155
                and     edi, 0FFh
21156
                mov     [esp+4Ch], ebx
21157
                shl     edi, 3
21158
                and     ebp, 0FFh
21159
                shr     ebx, 0Dh
21160
                and     eax, 7F8h
21161
                shl     ebp, 3
21162
                mov     ecx, [esi+edi]
21163
                mov     edx, [esi+edi+4]
21164
                xor     ecx, [esi+eax+800h]
21165
                xor     edx, [esi+eax+804h]
21166
                and     ebx, 7F8h
21167
                xor     ecx, [esi+ebp+1000h]
21168
                xor     edx, [esi+ebp+1004h]
21169
                xor     ecx, [esi+ebx+1800h]
21170
                xor     edx, [esi+ebx+1804h]
21171
                mov     edi, [esp+50h]
21172
                mov     ebp, [esp+54h]
21173
                sub     edi, ecx
21174
                mov     eax, [esp+48h]
21175
                sbb     ebp, edx
21176
                mov     ebx, [esp+4Ch]
21177
                mov     [esp+50h], edi
21178
                mov     edi, eax
21179
                shr     eax, 5
21180
                mov     [esp+54h], ebp
21181
                shr     edi, 15h
21182
                mov     ebp, ebx
21183
                shr     ebx, 5
21184
                and     eax, 7F8h
21185
                shr     ebp, 15h
21186
                and     edi, 7F8h
21187
                and     ebx, 7F8h
21188
                mov     ecx, [esi+eax+1800h]
21189
                mov     edx, [esi+eax+1804h]
21190
                xor     ecx, [esi+edi+1000h]
21191
                and     ebp, 7F8h
21192
                xor     edx, [esi+edi+1004h]
21193
                xor     ecx, [esi+ebx+800h]
21194
                xor     edx, [esi+ebx+804h]
21195
                xor     ecx, [esi+ebp]
21196
                xor     edx, [esi+ebp+4]
21197
                mov     eax, [esp+40h]
21198
                mov     ebx, [esp+44h]
21199
                add     eax, ecx
21200
                adc     ebx, edx
21201
                mov     ecx, eax
21202
                shr     ecx, 1Eh
21203
                mov     ebp, ebx
21204
                shl     ebx, 2
21205
                mov     edi, eax
21206
                shl     eax, 2
21207
                or      ebx, ecx
21208
                add     eax, edi
21209
                adc     ebx, ebp
21210
                mov     [esp+40h], eax
21211
                mov     [esp+44h], ebx
21212
                mov     eax, [esp+18h]
21213
                mov     ebx, [esp+1Ch]
21214
                mov     ecx, [esp+50h]
21215
                mov     edx, [esp+54h]
21216
                xor     eax, ecx
21217
                xor     ebx, edx
21218
                mov     edi, eax
21219
                mov     [esp+50h], eax
21220
                shr     eax, 0Dh
21221
                mov     ebp, ebx
21222
                and     edi, 0FFh
21223
                mov     [esp+54h], ebx
21224
                shl     edi, 3
21225
                and     ebp, 0FFh
21226
                shr     ebx, 0Dh
21227
                and     eax, 7F8h
21228
                shl     ebp, 3
21229
                mov     ecx, [esi+edi]
21230
                mov     edx, [esi+edi+4]
21231
                xor     ecx, [esi+eax+800h]
21232
                xor     edx, [esi+eax+804h]
21233
                and     ebx, 7F8h
21234
                xor     ecx, [esi+ebp+1000h]
21235
                xor     edx, [esi+ebp+1004h]
21236
                xor     ecx, [esi+ebx+1800h]
21237
                xor     edx, [esi+ebx+1804h]
21238
                mov     edi, [esp+40h]
21239
                mov     ebp, [esp+44h]
21240
                sub     edi, ecx
21241
                mov     eax, [esp+50h]
21242
                sbb     ebp, edx
21243
                mov     ebx, [esp+54h]
21244
                mov     [esp+40h], edi
21245
                mov     edi, eax
21246
                shr     eax, 5
21247
                mov     [esp+44h], ebp
21248
                shr     edi, 15h
21249
                mov     ebp, ebx
21250
                shr     ebx, 5
21251
                and     eax, 7F8h
21252
                shr     ebp, 15h
21253
                and     edi, 7F8h
21254
                and     ebx, 7F8h
21255
                mov     ecx, [esi+eax+1800h]
21256
                mov     edx, [esi+eax+1804h]
21257
                xor     ecx, [esi+edi+1000h]
21258
                and     ebp, 7F8h
21259
                xor     edx, [esi+edi+1004h]
21260
                xor     ecx, [esi+ebx+800h]
21261
                xor     edx, [esi+ebx+804h]
21262
                xor     ecx, [esi+ebp]
21263
                xor     edx, [esi+ebp+4]
21264
                mov     eax, [esp+48h]
21265
                mov     ebx, [esp+4Ch]
21266
                add     eax, ecx
21267
                adc     ebx, edx
21268
                mov     ecx, eax
21269
                shr     ecx, 1Eh
21270
                mov     ebp, ebx
21271
                shl     ebx, 2
21272
                mov     edi, eax
21273
                shl     eax, 2
21274
                or      ebx, ecx
21275
                add     eax, edi
21276
                adc     ebx, ebp
21277
                mov     [esp+48h], eax
21278
                mov     [esp+4Ch], ebx
21279
                mov     eax, [esp+20h]
21280
                mov     ebx, [esp+24h]
21281
                mov     ecx, [esp+40h]
21282
                mov     edx, [esp+44h]
21283
                xor     eax, ecx
21284
                xor     ebx, edx
21285
                mov     edi, eax
21286
                mov     [esp+40h], eax
21287
                shr     eax, 0Dh
21288
                mov     ebp, ebx
21289
                and     edi, 0FFh
21290
                mov     [esp+44h], ebx
21291
                shl     edi, 3
21292
                and     ebp, 0FFh
21293
                shr     ebx, 0Dh
21294
                and     eax, 7F8h
21295
                shl     ebp, 3
21296
                mov     ecx, [esi+edi]
21297
                mov     edx, [esi+edi+4]
21298
                xor     ecx, [esi+eax+800h]
21299
                xor     edx, [esi+eax+804h]
21300
                and     ebx, 7F8h
21301
                xor     ecx, [esi+ebp+1000h]
21302
                xor     edx, [esi+ebp+1004h]
21303
                xor     ecx, [esi+ebx+1800h]
21304
                xor     edx, [esi+ebx+1804h]
21305
                mov     edi, [esp+48h]
21306
                mov     ebp, [esp+4Ch]
21307
                sub     edi, ecx
21308
                mov     eax, [esp+40h]
21309
                sbb     ebp, edx
21310
                mov     ebx, [esp+44h]
21311
                mov     [esp+48h], edi
21312
                mov     edi, eax
21313
                shr     eax, 5
21314
                mov     [esp+4Ch], ebp
21315
                shr     edi, 15h
21316
                mov     ebp, ebx
21317
                shr     ebx, 5
21318
                and     eax, 7F8h
21319
                shr     ebp, 15h
21320
                and     edi, 7F8h
21321
                and     ebx, 7F8h
21322
                mov     ecx, [esi+eax+1800h]
21323
                mov     edx, [esi+eax+1804h]
21324
                xor     ecx, [esi+edi+1000h]
21325
                and     ebp, 7F8h
21326
                xor     edx, [esi+edi+1004h]
21327
                xor     ecx, [esi+ebx+800h]
21328
                xor     edx, [esi+ebx+804h]
21329
                xor     ecx, [esi+ebp]
21330
                xor     edx, [esi+ebp+4]
21331
                mov     eax, [esp+50h]
21332
                mov     ebx, [esp+54h]
21333
                add     eax, ecx
21334
                adc     ebx, edx
21335
                mov     ecx, eax
21336
                shr     ecx, 1Eh
21337
                mov     ebp, ebx
21338
                shl     ebx, 2
21339
                mov     edi, eax
21340
                shl     eax, 2
21341
                or      ebx, ecx
21342
                add     eax, edi
21343
                adc     ebx, ebp
21344
                mov     [esp+50h], eax
21345
                mov     [esp+54h], ebx
21346
                mov     eax, [esp+28h]
21347
                mov     ebx, [esp+2Ch]
21348
                mov     ecx, [esp+48h]
21349
                mov     edx, [esp+4Ch]
21350
                xor     eax, ecx
21351
                xor     ebx, edx
21352
                mov     edi, eax
21353
                mov     [esp+48h], eax
21354
                shr     eax, 0Dh
21355
                mov     ebp, ebx
21356
                and     edi, 0FFh
21357
                mov     [esp+4Ch], ebx
21358
                shl     edi, 3
21359
                and     ebp, 0FFh
21360
                shr     ebx, 0Dh
21361
                and     eax, 7F8h
21362
                shl     ebp, 3
21363
                mov     ecx, [esi+edi]
21364
                mov     edx, [esi+edi+4]
21365
                xor     ecx, [esi+eax+800h]
21366
                xor     edx, [esi+eax+804h]
21367
                and     ebx, 7F8h
21368
                xor     ecx, [esi+ebp+1000h]
21369
                xor     edx, [esi+ebp+1004h]
21370
                xor     ecx, [esi+ebx+1800h]
21371
                xor     edx, [esi+ebx+1804h]
21372
                mov     edi, [esp+50h]
21373
                mov     ebp, [esp+54h]
21374
                sub     edi, ecx
21375
                mov     eax, [esp+48h]
21376
                sbb     ebp, edx
21377
                mov     ebx, [esp+4Ch]
21378
                mov     [esp+50h], edi
21379
                mov     edi, eax
21380
                shr     eax, 5
21381
                mov     [esp+54h], ebp
21382
                shr     edi, 15h
21383
                mov     ebp, ebx
21384
                shr     ebx, 5
21385
                and     eax, 7F8h
21386
                shr     ebp, 15h
21387
                and     edi, 7F8h
21388
                and     ebx, 7F8h
21389
                mov     ecx, [esi+eax+1800h]
21390
                mov     edx, [esi+eax+1804h]
21391
                xor     ecx, [esi+edi+1000h]
21392
                and     ebp, 7F8h
21393
                xor     edx, [esi+edi+1004h]
21394
                xor     ecx, [esi+ebx+800h]
21395
                xor     edx, [esi+ebx+804h]
21396
                xor     ecx, [esi+ebp]
21397
                xor     edx, [esi+ebp+4]
21398
                mov     eax, [esp+40h]
21399
                mov     ebx, [esp+44h]
21400
                add     eax, ecx
21401
                adc     ebx, edx
21402
                mov     ecx, eax
21403
                shr     ecx, 1Eh
21404
                mov     ebp, ebx
21405
                shl     ebx, 2
21406
                mov     edi, eax
21407
                shl     eax, 2
21408
                or      ebx, ecx
21409
                add     eax, edi
21410
                adc     ebx, ebp
21411
                mov     [esp+40h], eax
21412
                mov     [esp+44h], ebx
21413
                mov     eax, [esp+30h]
21414
                mov     ebx, [esp+34h]
21415
                mov     ecx, [esp+50h]
21416
                mov     edx, [esp+54h]
21417
                xor     eax, ecx
21418
                xor     ebx, edx
21419
                mov     edi, eax
21420
                mov     [esp+50h], eax
21421
                shr     eax, 0Dh
21422
                mov     ebp, ebx
21423
                and     edi, 0FFh
21424
                mov     [esp+54h], ebx
21425
                shl     edi, 3
21426
                and     ebp, 0FFh
21427
                shr     ebx, 0Dh
21428
                and     eax, 7F8h
21429
                shl     ebp, 3
21430
                mov     ecx, [esi+edi]
21431
                mov     edx, [esi+edi+4]
21432
                xor     ecx, [esi+eax+800h]
21433
                xor     edx, [esi+eax+804h]
21434
                and     ebx, 7F8h
21435
                xor     ecx, [esi+ebp+1000h]
21436
                xor     edx, [esi+ebp+1004h]
21437
                xor     ecx, [esi+ebx+1800h]
21438
                xor     edx, [esi+ebx+1804h]
21439
                mov     edi, [esp+40h]
21440
                mov     ebp, [esp+44h]
21441
                sub     edi, ecx
21442
                mov     eax, [esp+50h]
21443
                sbb     ebp, edx
21444
                mov     ebx, [esp+54h]
21445
                mov     [esp+40h], edi
21446
                mov     edi, eax
21447
                shr     eax, 5
21448
                mov     [esp+44h], ebp
21449
                shr     edi, 15h
21450
                mov     ebp, ebx
21451
                shr     ebx, 5
21452
                and     eax, 7F8h
21453
                shr     ebp, 15h
21454
                and     edi, 7F8h
21455
                and     ebx, 7F8h
21456
                mov     ecx, [esi+eax+1800h]
21457
                mov     edx, [esi+eax+1804h]
21458
                xor     ecx, [esi+edi+1000h]
21459
                and     ebp, 7F8h
21460
                xor     edx, [esi+edi+1004h]
21461
                xor     ecx, [esi+ebx+800h]
21462
                xor     edx, [esi+ebx+804h]
21463
                xor     ecx, [esi+ebp]
21464
                xor     edx, [esi+ebp+4]
21465
                mov     eax, [esp+48h]
21466
                mov     ebx, [esp+4Ch]
21467
                add     eax, ecx
21468
                adc     ebx, edx
21469
                mov     ecx, eax
21470
                shr     ecx, 1Eh
21471
                mov     ebp, ebx
21472
                shl     ebx, 2
21473
                mov     edi, eax
21474
                shl     eax, 2
21475
                or      ebx, ecx
21476
                add     eax, edi
21477
                adc     ebx, ebp
21478
                mov     [esp+48h], eax
21479
                mov     [esp+4Ch], ebx
21480
                mov     eax, [esp+38h]
21481
                mov     ebx, [esp+3Ch]
21482
                mov     ecx, [esp+40h]
21483
                mov     edx, [esp+44h]
21484
                xor     eax, ecx
21485
                xor     ebx, edx
21486
                mov     edi, eax
21487
                mov     [esp+40h], eax
21488
                shr     eax, 0Dh
21489
                mov     ebp, ebx
21490
                and     edi, 0FFh
21491
                mov     [esp+44h], ebx
21492
                shl     edi, 3
21493
                and     ebp, 0FFh
21494
                shr     ebx, 0Dh
21495
                and     eax, 7F8h
21496
                shl     ebp, 3
21497
                mov     ecx, [esi+edi]
21498
                mov     edx, [esi+edi+4]
21499
                xor     ecx, [esi+eax+800h]
21500
                xor     edx, [esi+eax+804h]
21501
                and     ebx, 7F8h
21502
                xor     ecx, [esi+ebp+1000h]
21503
                xor     edx, [esi+ebp+1004h]
21504
                xor     ecx, [esi+ebx+1800h]
21505
                xor     edx, [esi+ebx+1804h]
21506
                mov     edi, [esp+48h]
21507
                mov     ebp, [esp+4Ch]
21508
                sub     edi, ecx
21509
                mov     eax, [esp+40h]
21510
                sbb     ebp, edx
21511
                mov     ebx, [esp+44h]
21512
                mov     [esp+48h], edi
21513
                mov     edi, eax
21514
                shr     eax, 5
21515
                mov     [esp+4Ch], ebp
21516
                shr     edi, 15h
21517
                mov     ebp, ebx
21518
                shr     ebx, 5
21519
                and     eax, 7F8h
21520
                shr     ebp, 15h
21521
                and     edi, 7F8h
21522
                and     ebx, 7F8h
21523
                mov     ecx, [esi+eax+1800h]
21524
                mov     edx, [esi+eax+1804h]
21525
                xor     ecx, [esi+edi+1000h]
21526
                and     ebp, 7F8h
21527
                xor     edx, [esi+edi+1004h]
21528
                xor     ecx, [esi+ebx+800h]
21529
                xor     edx, [esi+ebx+804h]
21530
                xor     ecx, [esi+ebp]
21531
                xor     edx, [esi+ebp+4]
21532
                mov     eax, [esp+50h]
21533
                mov     ebx, [esp+54h]
21534
                add     eax, ecx
21535
                adc     ebx, edx
21536
                mov     ecx, eax
21537
                shr     ecx, 1Eh
21538
                mov     ebp, ebx
21539
                shl     ebx, 2
21540
                mov     edi, eax
21541
                shl     eax, 2
21542
                or      ebx, ecx
21543
                add     eax, edi
21544
                adc     ebx, ebp
21545
                mov     [esp+50h], eax
21546
                mov     [esp+54h], ebx
21547
                mov     eax, [esp+38h]
21548
                mov     ebx, [esp+3Ch]
21549
                xor     eax, 0A5A5A5A5h
21550
                xor     ebx, 0A5A5A5A5h
21551
                mov     ecx, [esp]
21552
                mov     edx, [esp+4]
21553
                sub     ecx, eax
21554
                sbb     edx, ebx
21555
                mov     [esp], ecx
21556
                mov     [esp+4], edx
21557
                mov     eax, [esp+8]
21558
                mov     ebx, [esp+0Ch]
21559
                xor     eax, ecx
21560
                xor     ebx, edx
21561
                mov     [esp+8], eax
21562
                mov     edi, eax
21563
                mov     esi, eax
21564
                shr     edi, 0Dh
21565
                xor     eax, 0FFFFFFFFh
21566
                mov     [esp+0Ch], ebx
21567
                mov     ecx, [esp+10h]
21568
                shl     eax, 13h
21569
                mov     ebp, ebx
21570
                shl     ebx, 13h
21571
                mov     edx, [esp+14h]
21572
                add     esi, ecx
21573
                mov     ecx, [esp+20h]
21574
                adc     ebp, edx
21575
                or      edi, ebx
21576
                mov     [esp+10h], esi
21577
                xor     esi, eax
21578
                mov     [esp+14h], ebp
21579
                mov     eax, [esp+18h]
21580
                xor     ebp, 0FFFFFFFFh
21581
                mov     ebx, [esp+1Ch]
21582
                xor     ebp, edi
21583
                sub     eax, esi
21584
                sbb     ebx, ebp
21585
                mov     edx, [esp+24h]
21586
                mov     [esp+18h], eax
21587
                xor     eax, ecx
21588
                mov     [esp+1Ch], ebx
21589
                xor     ebx, edx
21590
                mov     ecx, [esp+28h]
21591
                mov     edx, [esp+2Ch]
21592
                mov     edi, ebx
21593
                mov     ebp, ebx
21594
                mov     [esp+20h], eax
21595
                xor     ebp, 0FFFFFFFFh
21596
                shl     ebx, 9
21597
                add     ecx, eax
21598
                adc     edx, edi
21599
                mov     [esp+24h], edi
21600
                shr     ebp, 17h
21601
                mov     [esp+28h], ecx
21602
                shr     eax, 17h
21603
                xor     ecx, 0FFFFFFFFh
21604
                or      ebx, eax
21605
                mov     [esp+2Ch], edx
21606
                mov     eax, [esp+30h]
21607
                xor     ecx, ebx
21608
                mov     ebx, [esp+34h]
21609
                xor     edx, ebp
21610
                mov     edi, [esp+38h]
21611
                sub     eax, ecx
21612
                mov     ebp, [esp+3Ch]
21613
                mov     [esp+30h], eax
21614
                sbb     ebx, edx
21615
                xor     edi, eax
21616
                xor     ebp, ebx
21617
                mov     [esp+34h], ebx
21618
                mov     eax, [esp]
21619
                mov     ecx, edi
21620
                xor     edi, 0FFFFFFFFh
21621
                mov     ebx, [esp+4]
21622
                shl     edi, 13h
21623
                mov     [esp+38h], ecx
21624
                add     eax, ecx
21625
                mov     [esp+3Ch], ebp
21626
                adc     ebx, ebp
21627
                xor     edi, eax
21628
                shr     ecx, 0Dh
21629
                mov     [esp], eax
21630
                shl     ebp, 13h
21631
                mov     [esp+4], ebx
21632
                mov     esi, [esp+8]
21633
                xor     ebx, 0FFFFFFFFh
21634
                or      ebp, ecx
21635
                mov     edx, [esp+0Ch]
21636
                xor     ebp, ebx
21637
                sub     esi, edi
21638
                mov     eax, [esp+10h]
21639
                mov     ebx, [esp+14h]
21640
                sbb     edx, ebp
21641
                mov     [esp+8], esi
21642
                xor     eax, esi
21643
                mov     [esp+0Ch], edx
21644
                mov     edi, [esp+18h]
21645
                mov     ebp, [esp+1Ch]
21646
                xor     ebx, edx
21647
                mov     [esp+10h], eax
21648
                add     edi, eax
21649
                mov     esi, ebx
21650
                adc     ebp, ebx
21651
                mov     [esp+14h], ebx
21652
                shr     eax, 17h
21653
                mov     ecx, [esp+20h]
21654
                xor     ebx, 0FFFFFFFFh
21655
                mov     edx, [esp+24h]
21656
                shl     esi, 9
21657
                mov     [esp+18h], edi
21658
                or      eax, esi
21659
                xor     edi, 0FFFFFFFFh
21660
                shr     ebx, 17h
21661
                mov     [esp+1Ch], ebp
21662
                xor     eax, edi
21663
                mov     edi, [esp+28h]
21664
                xor     ebx, ebp
21665
                sub     ecx, eax
21666
                mov     ebp, [esp+2Ch]
21667
                mov     [esp+20h], ecx
21668
                sbb     edx, ebx
21669
                xor     edi, ecx
21670
                mov     [esp+24h], edx
21671
                xor     ebp, edx
21672
                mov     eax, [esp+30h]
21673
                mov     ebx, [esp+34h]
21674
                mov     [esp+28h], edi
21675
                add     eax, edi
21676
                mov     [esp+2Ch], ebp
21677
                mov     ecx, [esp+38h]
21678
                adc     ebx, ebp
21679
                mov     edx, [esp+3Ch]
21680
                mov     [esp+30h], eax
21681
                xor     eax, 89ABCDEFh
21682
                mov     [esp+34h], ebx
21683
                xor     ebx, 1234567h
21684
                sub     ecx, eax
21685
                sbb     edx, ebx
21686
                mov     [esp+38h], ecx
21687
                mov     [esp+3Ch], edx
21688
                mov     esi, [esp+64h]
21689
                mov     eax, [esp]
21690
                mov     ebx, [esp+4]
21691
                mov     ecx, [esp+48h]
21692
                mov     edx, [esp+4Ch]
21693
                xor     eax, ecx
21694
                xor     ebx, edx
21695
                mov     edi, eax
21696
                mov     [esp+48h], eax
21697
                shr     eax, 0Dh
21698
                mov     ebp, ebx
21699
                and     edi, 0FFh
21700
                mov     [esp+4Ch], ebx
21701
                shl     edi, 3
21702
                and     ebp, 0FFh
21703
                shr     ebx, 0Dh
21704
                and     eax, 7F8h
21705
                shl     ebp, 3
21706
                mov     ecx, [esi+edi]
21707
                mov     edx, [esi+edi+4]
21708
                xor     ecx, [esi+eax+800h]
21709
                xor     edx, [esi+eax+804h]
21710
                and     ebx, 7F8h
21711
                xor     ecx, [esi+ebp+1000h]
21712
                xor     edx, [esi+ebp+1004h]
21713
                xor     ecx, [esi+ebx+1800h]
21714
                xor     edx, [esi+ebx+1804h]
21715
                mov     edi, [esp+50h]
21716
                mov     ebp, [esp+54h]
21717
                sub     edi, ecx
21718
                mov     eax, [esp+48h]
21719
                sbb     ebp, edx
21720
                mov     ebx, [esp+4Ch]
21721
                mov     [esp+50h], edi
21722
                mov     edi, eax
21723
                shr     eax, 5
21724
                mov     [esp+54h], ebp
21725
                shr     edi, 15h
21726
                mov     ebp, ebx
21727
                shr     ebx, 5
21728
                and     eax, 7F8h
21729
                shr     ebp, 15h
21730
                and     edi, 7F8h
21731
                and     ebx, 7F8h
21732
                mov     ecx, [esi+eax+1800h]
21733
                mov     edx, [esi+eax+1804h]
21734
                xor     ecx, [esi+edi+1000h]
21735
                and     ebp, 7F8h
21736
                xor     edx, [esi+edi+1004h]
21737
                xor     ecx, [esi+ebx+800h]
21738
                xor     edx, [esi+ebx+804h]
21739
                xor     ecx, [esi+ebp]
21740
                xor     edx, [esi+ebp+4]
21741
                mov     eax, [esp+40h]
21742
                mov     ebx, [esp+44h]
21743
                add     eax, ecx
21744
                adc     ebx, edx
21745
                mov     ecx, eax
21746
                shr     ecx, 1Dh
21747
                mov     ebp, ebx
21748
                shl     ebx, 3
21749
                mov     edi, eax
21750
                shl     eax, 3
21751
                or      ebx, ecx
21752
                sub     eax, edi
21753
                sbb     ebx, ebp
21754
                mov     [esp+40h], eax
21755
                mov     [esp+44h], ebx
21756
                mov     eax, [esp+8]
21757
                mov     ebx, [esp+0Ch]
21758
                mov     ecx, [esp+50h]
21759
                mov     edx, [esp+54h]
21760
                xor     eax, ecx
21761
                xor     ebx, edx
21762
                mov     edi, eax
21763
                mov     [esp+50h], eax
21764
                shr     eax, 0Dh
21765
                mov     ebp, ebx
21766
                and     edi, 0FFh
21767
                mov     [esp+54h], ebx
21768
                shl     edi, 3
21769
                and     ebp, 0FFh
21770
                shr     ebx, 0Dh
21771
                and     eax, 7F8h
21772
                shl     ebp, 3
21773
                mov     ecx, [esi+edi]
21774
                mov     edx, [esi+edi+4]
21775
                xor     ecx, [esi+eax+800h]
21776
                xor     edx, [esi+eax+804h]
21777
                and     ebx, 7F8h
21778
                xor     ecx, [esi+ebp+1000h]
21779
                xor     edx, [esi+ebp+1004h]
21780
                xor     ecx, [esi+ebx+1800h]
21781
                xor     edx, [esi+ebx+1804h]
21782
                mov     edi, [esp+40h]
21783
                mov     ebp, [esp+44h]
21784
                sub     edi, ecx
21785
                mov     eax, [esp+50h]
21786
                sbb     ebp, edx
21787
                mov     ebx, [esp+54h]
21788
                mov     [esp+40h], edi
21789
                mov     edi, eax
21790
                shr     eax, 5
21791
                mov     [esp+44h], ebp
21792
                shr     edi, 15h
21793
                mov     ebp, ebx
21794
                shr     ebx, 5
21795
                and     eax, 7F8h
21796
                shr     ebp, 15h
21797
                and     edi, 7F8h
21798
                and     ebx, 7F8h
21799
                mov     ecx, [esi+eax+1800h]
21800
                mov     edx, [esi+eax+1804h]
21801
                xor     ecx, [esi+edi+1000h]
21802
                and     ebp, 7F8h
21803
                xor     edx, [esi+edi+1004h]
21804
                xor     ecx, [esi+ebx+800h]
21805
                xor     edx, [esi+ebx+804h]
21806
                xor     ecx, [esi+ebp]
21807
                xor     edx, [esi+ebp+4]
21808
                mov     eax, [esp+48h]
21809
                mov     ebx, [esp+4Ch]
21810
                add     eax, ecx
21811
                adc     ebx, edx
21812
                mov     ecx, eax
21813
                shr     ecx, 1Dh
21814
                mov     ebp, ebx
21815
                shl     ebx, 3
21816
                mov     edi, eax
21817
                shl     eax, 3
21818
                or      ebx, ecx
21819
                sub     eax, edi
21820
                sbb     ebx, ebp
21821
                mov     [esp+48h], eax
21822
                mov     [esp+4Ch], ebx
21823
                mov     eax, [esp+10h]
21824
                mov     ebx, [esp+14h]
21825
                mov     ecx, [esp+40h]
21826
                mov     edx, [esp+44h]
21827
                xor     eax, ecx
21828
                xor     ebx, edx
21829
                mov     edi, eax
21830
                mov     [esp+40h], eax
21831
                shr     eax, 0Dh
21832
                mov     ebp, ebx
21833
                and     edi, 0FFh
21834
                mov     [esp+44h], ebx
21835
                shl     edi, 3
21836
                and     ebp, 0FFh
21837
                shr     ebx, 0Dh
21838
                and     eax, 7F8h
21839
                shl     ebp, 3
21840
                mov     ecx, [esi+edi]
21841
                mov     edx, [esi+edi+4]
21842
                xor     ecx, [esi+eax+800h]
21843
                xor     edx, [esi+eax+804h]
21844
                and     ebx, 7F8h
21845
                xor     ecx, [esi+ebp+1000h]
21846
                xor     edx, [esi+ebp+1004h]
21847
                xor     ecx, [esi+ebx+1800h]
21848
                xor     edx, [esi+ebx+1804h]
21849
                mov     edi, [esp+48h]
21850
                mov     ebp, [esp+4Ch]
21851
                sub     edi, ecx
21852
                mov     eax, [esp+40h]
21853
                sbb     ebp, edx
21854
                mov     ebx, [esp+44h]
21855
                mov     [esp+48h], edi
21856
                mov     edi, eax
21857
                shr     eax, 5
21858
                mov     [esp+4Ch], ebp
21859
                shr     edi, 15h
21860
                mov     ebp, ebx
21861
                shr     ebx, 5
21862
                and     eax, 7F8h
21863
                shr     ebp, 15h
21864
                and     edi, 7F8h
21865
                and     ebx, 7F8h
21866
                mov     ecx, [esi+eax+1800h]
21867
                mov     edx, [esi+eax+1804h]
21868
                xor     ecx, [esi+edi+1000h]
21869
                and     ebp, 7F8h
21870
                xor     edx, [esi+edi+1004h]
21871
                xor     ecx, [esi+ebx+800h]
21872
                xor     edx, [esi+ebx+804h]
21873
                xor     ecx, [esi+ebp]
21874
                xor     edx, [esi+ebp+4]
21875
                mov     eax, [esp+50h]
21876
                mov     ebx, [esp+54h]
21877
                add     eax, ecx
21878
                adc     ebx, edx
21879
                mov     ecx, eax
21880
                shr     ecx, 1Dh
21881
                mov     ebp, ebx
21882
                shl     ebx, 3
21883
                mov     edi, eax
21884
                shl     eax, 3
21885
                or      ebx, ecx
21886
                sub     eax, edi
21887
                sbb     ebx, ebp
21888
                mov     [esp+50h], eax
21889
                mov     [esp+54h], ebx
21890
                mov     eax, [esp+18h]
21891
                mov     ebx, [esp+1Ch]
21892
                mov     ecx, [esp+48h]
21893
                mov     edx, [esp+4Ch]
21894
                xor     eax, ecx
21895
                xor     ebx, edx
21896
                mov     edi, eax
21897
                mov     [esp+48h], eax
21898
                shr     eax, 0Dh
21899
                mov     ebp, ebx
21900
                and     edi, 0FFh
21901
                mov     [esp+4Ch], ebx
21902
                shl     edi, 3
21903
                and     ebp, 0FFh
21904
                shr     ebx, 0Dh
21905
                and     eax, 7F8h
21906
                shl     ebp, 3
21907
                mov     ecx, [esi+edi]
21908
                mov     edx, [esi+edi+4]
21909
                xor     ecx, [esi+eax+800h]
21910
                xor     edx, [esi+eax+804h]
21911
                and     ebx, 7F8h
21912
                xor     ecx, [esi+ebp+1000h]
21913
                xor     edx, [esi+ebp+1004h]
21914
                xor     ecx, [esi+ebx+1800h]
21915
                xor     edx, [esi+ebx+1804h]
21916
                mov     edi, [esp+50h]
21917
                mov     ebp, [esp+54h]
21918
                sub     edi, ecx
21919
                mov     eax, [esp+48h]
21920
                sbb     ebp, edx
21921
                mov     ebx, [esp+4Ch]
21922
                mov     [esp+50h], edi
21923
                mov     edi, eax
21924
                shr     eax, 5
21925
                mov     [esp+54h], ebp
21926
                shr     edi, 15h
21927
                mov     ebp, ebx
21928
                shr     ebx, 5
21929
                and     eax, 7F8h
21930
                shr     ebp, 15h
21931
                and     edi, 7F8h
21932
                and     ebx, 7F8h
21933
                mov     ecx, [esi+eax+1800h]
21934
                mov     edx, [esi+eax+1804h]
21935
                xor     ecx, [esi+edi+1000h]
21936
                and     ebp, 7F8h
21937
                xor     edx, [esi+edi+1004h]
21938
                xor     ecx, [esi+ebx+800h]
21939
                xor     edx, [esi+ebx+804h]
21940
                xor     ecx, [esi+ebp]
21941
                xor     edx, [esi+ebp+4]
21942
                mov     eax, [esp+40h]
21943
                mov     ebx, [esp+44h]
21944
                add     eax, ecx
21945
                adc     ebx, edx
21946
                mov     ecx, eax
21947
                shr     ecx, 1Dh
21948
                mov     ebp, ebx
21949
                shl     ebx, 3
21950
                mov     edi, eax
21951
                shl     eax, 3
21952
                or      ebx, ecx
21953
                sub     eax, edi
21954
                sbb     ebx, ebp
21955
                mov     [esp+40h], eax
21956
                mov     [esp+44h], ebx
21957
                mov     eax, [esp+20h]
21958
                mov     ebx, [esp+24h]
21959
                mov     ecx, [esp+50h]
21960
                mov     edx, [esp+54h]
21961
                xor     eax, ecx
21962
                xor     ebx, edx
21963
                mov     edi, eax
21964
                mov     [esp+50h], eax
21965
                shr     eax, 0Dh
21966
                mov     ebp, ebx
21967
                and     edi, 0FFh
21968
                mov     [esp+54h], ebx
21969
                shl     edi, 3
21970
                and     ebp, 0FFh
21971
                shr     ebx, 0Dh
21972
                and     eax, 7F8h
21973
                shl     ebp, 3
21974
                mov     ecx, [esi+edi]
21975
                mov     edx, [esi+edi+4]
21976
                xor     ecx, [esi+eax+800h]
21977
                xor     edx, [esi+eax+804h]
21978
                and     ebx, 7F8h
21979
                xor     ecx, [esi+ebp+1000h]
21980
                xor     edx, [esi+ebp+1004h]
21981
                xor     ecx, [esi+ebx+1800h]
21982
                xor     edx, [esi+ebx+1804h]
21983
                mov     edi, [esp+40h]
21984
                mov     ebp, [esp+44h]
21985
                sub     edi, ecx
21986
                mov     eax, [esp+50h]
21987
                sbb     ebp, edx
21988
                mov     ebx, [esp+54h]
21989
                mov     [esp+40h], edi
21990
                mov     edi, eax
21991
                shr     eax, 5
21992
                mov     [esp+44h], ebp
21993
                shr     edi, 15h
21994
                mov     ebp, ebx
21995
                shr     ebx, 5
21996
                and     eax, 7F8h
21997
                shr     ebp, 15h
21998
                and     edi, 7F8h
21999
                and     ebx, 7F8h
22000
                mov     ecx, [esi+eax+1800h]
22001
                mov     edx, [esi+eax+1804h]
22002
                xor     ecx, [esi+edi+1000h]
22003
                and     ebp, 7F8h
22004
                xor     edx, [esi+edi+1004h]
22005
                xor     ecx, [esi+ebx+800h]
22006
                xor     edx, [esi+ebx+804h]
22007
                xor     ecx, [esi+ebp]
22008
                xor     edx, [esi+ebp+4]
22009
                mov     eax, [esp+48h]
22010
                mov     ebx, [esp+4Ch]
22011
                add     eax, ecx
22012
                adc     ebx, edx
22013
                mov     ecx, eax
22014
                shr     ecx, 1Dh
22015
                mov     ebp, ebx
22016
                shl     ebx, 3
22017
                mov     edi, eax
22018
                shl     eax, 3
22019
                or      ebx, ecx
22020
                sub     eax, edi
22021
                sbb     ebx, ebp
22022
                mov     [esp+48h], eax
22023
                mov     [esp+4Ch], ebx
22024
                mov     eax, [esp+28h]
22025
                mov     ebx, [esp+2Ch]
22026
                mov     ecx, [esp+40h]
22027
                mov     edx, [esp+44h]
22028
                xor     eax, ecx
22029
                xor     ebx, edx
22030
                mov     edi, eax
22031
                mov     [esp+40h], eax
22032
                shr     eax, 0Dh
22033
                mov     ebp, ebx
22034
                and     edi, 0FFh
22035
                mov     [esp+44h], ebx
22036
                shl     edi, 3
22037
                and     ebp, 0FFh
22038
                shr     ebx, 0Dh
22039
                and     eax, 7F8h
22040
                shl     ebp, 3
22041
                mov     ecx, [esi+edi]
22042
                mov     edx, [esi+edi+4]
22043
                xor     ecx, [esi+eax+800h]
22044
                xor     edx, [esi+eax+804h]
22045
                and     ebx, 7F8h
22046
                xor     ecx, [esi+ebp+1000h]
22047
                xor     edx, [esi+ebp+1004h]
22048
                xor     ecx, [esi+ebx+1800h]
22049
                xor     edx, [esi+ebx+1804h]
22050
                mov     edi, [esp+48h]
22051
                mov     ebp, [esp+4Ch]
22052
                sub     edi, ecx
22053
                mov     eax, [esp+40h]
22054
                sbb     ebp, edx
22055
                mov     ebx, [esp+44h]
22056
                mov     [esp+48h], edi
22057
                mov     edi, eax
22058
                shr     eax, 5
22059
                mov     [esp+4Ch], ebp
22060
                shr     edi, 15h
22061
                mov     ebp, ebx
22062
                shr     ebx, 5
22063
                and     eax, 7F8h
22064
                shr     ebp, 15h
22065
                and     edi, 7F8h
22066
                and     ebx, 7F8h
22067
                mov     ecx, [esi+eax+1800h]
22068
                mov     edx, [esi+eax+1804h]
22069
                xor     ecx, [esi+edi+1000h]
22070
                and     ebp, 7F8h
22071
                xor     edx, [esi+edi+1004h]
22072
                xor     ecx, [esi+ebx+800h]
22073
                xor     edx, [esi+ebx+804h]
22074
                xor     ecx, [esi+ebp]
22075
                xor     edx, [esi+ebp+4]
22076
                mov     eax, [esp+50h]
22077
                mov     ebx, [esp+54h]
22078
                add     eax, ecx
22079
                adc     ebx, edx
22080
                mov     ecx, eax
22081
                shr     ecx, 1Dh
22082
                mov     ebp, ebx
22083
                shl     ebx, 3
22084
                mov     edi, eax
22085
                shl     eax, 3
22086
                or      ebx, ecx
22087
                sub     eax, edi
22088
                sbb     ebx, ebp
22089
                mov     [esp+50h], eax
22090
                mov     [esp+54h], ebx
22091
                mov     eax, [esp+30h]
22092
                mov     ebx, [esp+34h]
22093
                mov     ecx, [esp+48h]
22094
                mov     edx, [esp+4Ch]
22095
                xor     eax, ecx
22096
                xor     ebx, edx
22097
                mov     edi, eax
22098
                mov     [esp+48h], eax
22099
                shr     eax, 0Dh
22100
                mov     ebp, ebx
22101
                and     edi, 0FFh
22102
                mov     [esp+4Ch], ebx
22103
                shl     edi, 3
22104
                and     ebp, 0FFh
22105
                shr     ebx, 0Dh
22106
                and     eax, 7F8h
22107
                shl     ebp, 3
22108
                mov     ecx, [esi+edi]
22109
                mov     edx, [esi+edi+4]
22110
                xor     ecx, [esi+eax+800h]
22111
                xor     edx, [esi+eax+804h]
22112
                and     ebx, 7F8h
22113
                xor     ecx, [esi+ebp+1000h]
22114
                xor     edx, [esi+ebp+1004h]
22115
                xor     ecx, [esi+ebx+1800h]
22116
                xor     edx, [esi+ebx+1804h]
22117
                mov     edi, [esp+50h]
22118
                mov     ebp, [esp+54h]
22119
                sub     edi, ecx
22120
                mov     eax, [esp+48h]
22121
                sbb     ebp, edx
22122
                mov     ebx, [esp+4Ch]
22123
                mov     [esp+50h], edi
22124
                mov     edi, eax
22125
                shr     eax, 5
22126
                mov     [esp+54h], ebp
22127
                shr     edi, 15h
22128
                mov     ebp, ebx
22129
                shr     ebx, 5
22130
                and     eax, 7F8h
22131
                shr     ebp, 15h
22132
                and     edi, 7F8h
22133
                and     ebx, 7F8h
22134
                mov     ecx, [esi+eax+1800h]
22135
                mov     edx, [esi+eax+1804h]
22136
                xor     ecx, [esi+edi+1000h]
22137
                and     ebp, 7F8h
22138
                xor     edx, [esi+edi+1004h]
22139
                xor     ecx, [esi+ebx+800h]
22140
                xor     edx, [esi+ebx+804h]
22141
                xor     ecx, [esi+ebp]
22142
                xor     edx, [esi+ebp+4]
22143
                mov     eax, [esp+40h]
22144
                mov     ebx, [esp+44h]
22145
                add     eax, ecx
22146
                adc     ebx, edx
22147
                mov     ecx, eax
22148
                shr     ecx, 1Dh
22149
                mov     ebp, ebx
22150
                shl     ebx, 3
22151
                mov     edi, eax
22152
                shl     eax, 3
22153
                or      ebx, ecx
22154
                sub     eax, edi
22155
                sbb     ebx, ebp
22156
                mov     [esp+40h], eax
22157
                mov     [esp+44h], ebx
22158
                mov     eax, [esp+38h]
22159
                mov     ebx, [esp+3Ch]
22160
                mov     ecx, [esp+50h]
22161
                mov     edx, [esp+54h]
22162
                xor     eax, ecx
22163
                xor     ebx, edx
22164
                mov     edi, eax
22165
                mov     [esp+50h], eax
22166
                shr     eax, 0Dh
22167
                mov     ebp, ebx
22168
                and     edi, 0FFh
22169
                mov     [esp+54h], ebx
22170
                shl     edi, 3
22171
                and     ebp, 0FFh
22172
                shr     ebx, 0Dh
22173
                and     eax, 7F8h
22174
                shl     ebp, 3
22175
                mov     ecx, [esi+edi]
22176
                mov     edx, [esi+edi+4]
22177
                xor     ecx, [esi+eax+800h]
22178
                xor     edx, [esi+eax+804h]
22179
                and     ebx, 7F8h
22180
                xor     ecx, [esi+ebp+1000h]
22181
                xor     edx, [esi+ebp+1004h]
22182
                xor     ecx, [esi+ebx+1800h]
22183
                xor     edx, [esi+ebx+1804h]
22184
                mov     edi, [esp+40h]
22185
                mov     ebp, [esp+44h]
22186
                sub     edi, ecx
22187
                mov     eax, [esp+50h]
22188
                sbb     ebp, edx
22189
                mov     ebx, [esp+54h]
22190
                mov     [esp+40h], edi
22191
                mov     edi, eax
22192
                shr     eax, 5
22193
                mov     [esp+44h], ebp
22194
                shr     edi, 15h
22195
                mov     ebp, ebx
22196
                shr     ebx, 5
22197
                and     eax, 7F8h
22198
                shr     ebp, 15h
22199
                and     edi, 7F8h
22200
                and     ebx, 7F8h
22201
                mov     ecx, [esi+eax+1800h]
22202
                mov     edx, [esi+eax+1804h]
22203
                xor     ecx, [esi+edi+1000h]
22204
                and     ebp, 7F8h
22205
                xor     edx, [esi+edi+1004h]
22206
                xor     ecx, [esi+ebx+800h]
22207
                xor     edx, [esi+ebx+804h]
22208
                xor     ecx, [esi+ebp]
22209
                xor     edx, [esi+ebp+4]
22210
                mov     eax, [esp+48h]
22211
                mov     ebx, [esp+4Ch]
22212
                add     eax, ecx
22213
                adc     ebx, edx
22214
                mov     ecx, eax
22215
                shr     ecx, 1Dh
22216
                mov     ebp, ebx
22217
                shl     ebx, 3
22218
                mov     edi, eax
22219
                shl     eax, 3
22220
                or      ebx, ecx
22221
                sub     eax, edi
22222
                sbb     ebx, ebp
22223
                mov     [esp+48h], eax
22224
                mov     [esp+4Ch], ebx
22225
                mov     eax, [esp+38h]
22226
                mov     ebx, [esp+3Ch]
22227
                xor     eax, 0A5A5A5A5h
22228
                xor     ebx, 0A5A5A5A5h
22229
                mov     ecx, [esp]
22230
                mov     edx, [esp+4]
22231
                sub     ecx, eax
22232
                sbb     edx, ebx
22233
                mov     [esp], ecx
22234
                mov     [esp+4], edx
22235
                mov     eax, [esp+8]
22236
                mov     ebx, [esp+0Ch]
22237
                xor     eax, ecx
22238
                xor     ebx, edx
22239
                mov     [esp+8], eax
22240
                mov     edi, eax
22241
                mov     esi, eax
22242
                shr     edi, 0Dh
22243
                xor     eax, 0FFFFFFFFh
22244
                mov     [esp+0Ch], ebx
22245
                mov     ecx, [esp+10h]
22246
                shl     eax, 13h
22247
                mov     ebp, ebx
22248
                shl     ebx, 13h
22249
                mov     edx, [esp+14h]
22250
                add     esi, ecx
22251
                mov     ecx, [esp+20h]
22252
                adc     ebp, edx
22253
                or      edi, ebx
22254
                mov     [esp+10h], esi
22255
                xor     esi, eax
22256
                mov     [esp+14h], ebp
22257
                mov     eax, [esp+18h]
22258
                xor     ebp, 0FFFFFFFFh
22259
                mov     ebx, [esp+1Ch]
22260
                xor     ebp, edi
22261
                sub     eax, esi
22262
                sbb     ebx, ebp
22263
                mov     edx, [esp+24h]
22264
                mov     [esp+18h], eax
22265
                xor     eax, ecx
22266
                mov     [esp+1Ch], ebx
22267
                xor     ebx, edx
22268
                mov     ecx, [esp+28h]
22269
                mov     edx, [esp+2Ch]
22270
                mov     edi, ebx
22271
                mov     ebp, ebx
22272
                mov     [esp+20h], eax
22273
                xor     ebp, 0FFFFFFFFh
22274
                shl     ebx, 9
22275
                add     ecx, eax
22276
                adc     edx, edi
22277
                mov     [esp+24h], edi
22278
                shr     ebp, 17h
22279
                mov     [esp+28h], ecx
22280
                shr     eax, 17h
22281
                xor     ecx, 0FFFFFFFFh
22282
                or      ebx, eax
22283
                mov     [esp+2Ch], edx
22284
                mov     eax, [esp+30h]
22285
                xor     ecx, ebx
22286
                mov     ebx, [esp+34h]
22287
                xor     edx, ebp
22288
                mov     edi, [esp+38h]
22289
                sub     eax, ecx
22290
                mov     ebp, [esp+3Ch]
22291
                mov     [esp+30h], eax
22292
                sbb     ebx, edx
22293
                xor     edi, eax
22294
                xor     ebp, ebx
22295
                mov     [esp+34h], ebx
22296
                mov     eax, [esp]
22297
                mov     ecx, edi
22298
                xor     edi, 0FFFFFFFFh
22299
                mov     ebx, [esp+4]
22300
                shl     edi, 13h
22301
                mov     [esp+38h], ecx
22302
                add     eax, ecx
22303
                mov     [esp+3Ch], ebp
22304
                adc     ebx, ebp
22305
                xor     edi, eax
22306
                shr     ecx, 0Dh
22307
                mov     [esp], eax
22308
                shl     ebp, 13h
22309
                mov     [esp+4], ebx
22310
                mov     esi, [esp+8]
22311
                xor     ebx, 0FFFFFFFFh
22312
                or      ebp, ecx
22313
                mov     edx, [esp+0Ch]
22314
                xor     ebp, ebx
22315
                sub     esi, edi
22316
                mov     eax, [esp+10h]
22317
                mov     ebx, [esp+14h]
22318
                sbb     edx, ebp
22319
                mov     [esp+8], esi
22320
                xor     eax, esi
22321
                mov     [esp+0Ch], edx
22322
                mov     edi, [esp+18h]
22323
                mov     ebp, [esp+1Ch]
22324
                xor     ebx, edx
22325
                mov     [esp+10h], eax
22326
                add     edi, eax
22327
                mov     esi, ebx
22328
                adc     ebp, ebx
22329
                mov     [esp+14h], ebx
22330
                shr     eax, 17h
22331
                mov     ecx, [esp+20h]
22332
                xor     ebx, 0FFFFFFFFh
22333
                mov     edx, [esp+24h]
22334
                shl     esi, 9
22335
                mov     [esp+18h], edi
22336
                or      eax, esi
22337
                xor     edi, 0FFFFFFFFh
22338
                shr     ebx, 17h
22339
                mov     [esp+1Ch], ebp
22340
                xor     eax, edi
22341
                mov     edi, [esp+28h]
22342
                xor     ebx, ebp
22343
                sub     ecx, eax
22344
                mov     ebp, [esp+2Ch]
22345
                mov     [esp+20h], ecx
22346
                sbb     edx, ebx
22347
                xor     edi, ecx
22348
                mov     [esp+24h], edx
22349
                xor     ebp, edx
22350
                mov     eax, [esp+30h]
22351
                mov     ebx, [esp+34h]
22352
                mov     [esp+28h], edi
22353
                add     eax, edi
22354
                mov     [esp+2Ch], ebp
22355
                mov     ecx, [esp+38h]
22356
                adc     ebx, ebp
22357
                mov     edx, [esp+3Ch]
22358
                mov     [esp+30h], eax
22359
                xor     eax, 89ABCDEFh
22360
                mov     [esp+34h], ebx
22361
                xor     ebx, 1234567h
22362
                sub     ecx, eax
22363
                sbb     edx, ebx
22364
                mov     [esp+38h], ecx
22365
                mov     [esp+3Ch], edx
22366
 
22367
@_pass_loop:
22368
                mov     esi, [esp+64h]
22369
                mov     eax, [esp]
22370
                mov     ebx, [esp+4]
22371
                mov     ecx, [esp+40h]
22372
                mov     edx, [esp+44h]
22373
                xor     eax, ecx
22374
                xor     ebx, edx
22375
                mov     edi, eax
22376
                mov     [esp+40h], eax
22377
                shr     eax, 0Dh
22378
                mov     ebp, ebx
22379
                and     edi, 0FFh
22380
                mov     [esp+44h], ebx
22381
                shl     edi, 3
22382
                and     ebp, 0FFh
22383
                shr     ebx, 0Dh
22384
                and     eax, 7F8h
22385
                shl     ebp, 3
22386
                mov     ecx, [esi+edi]
22387
                mov     edx, [esi+edi+4]
22388
                xor     ecx, [esi+eax+800h]
22389
                xor     edx, [esi+eax+804h]
22390
                and     ebx, 7F8h
22391
                xor     ecx, [esi+ebp+1000h]
22392
                xor     edx, [esi+ebp+1004h]
22393
                xor     ecx, [esi+ebx+1800h]
22394
                xor     edx, [esi+ebx+1804h]
22395
                mov     edi, [esp+48h]
22396
                mov     ebp, [esp+4Ch]
22397
                sub     edi, ecx
22398
                mov     eax, [esp+40h]
22399
                sbb     ebp, edx
22400
                mov     ebx, [esp+44h]
22401
                mov     [esp+48h], edi
22402
                mov     edi, eax
22403
                shr     eax, 5
22404
                mov     [esp+4Ch], ebp
22405
                shr     edi, 15h
22406
                mov     ebp, ebx
22407
                shr     ebx, 5
22408
                and     eax, 7F8h
22409
                shr     ebp, 15h
22410
                and     edi, 7F8h
22411
                and     ebx, 7F8h
22412
                mov     ecx, [esi+eax+1800h]
22413
                mov     edx, [esi+eax+1804h]
22414
                xor     ecx, [esi+edi+1000h]
22415
                and     ebp, 7F8h
22416
                xor     edx, [esi+edi+1004h]
22417
                xor     ecx, [esi+ebx+800h]
22418
                xor     edx, [esi+ebx+804h]
22419
                xor     ecx, [esi+ebp]
22420
                xor     edx, [esi+ebp+4]
22421
                mov     eax, [esp+50h]
22422
                mov     ebx, [esp+54h]
22423
                add     eax, ecx
22424
                adc     ebx, edx
22425
                mov     ecx, eax
22426
                shr     ecx, 1Dh
22427
                mov     ebp, ebx
22428
                shl     ebx, 3
22429
                mov     edi, eax
22430
                shl     eax, 3
22431
                or      ebx, ecx
22432
                add     eax, edi
22433
                adc     ebx, ebp
22434
                mov     [esp+50h], eax
22435
                mov     [esp+54h], ebx
22436
                mov     eax, [esp+8]
22437
                mov     ebx, [esp+0Ch]
22438
                mov     ecx, [esp+48h]
22439
                mov     edx, [esp+4Ch]
22440
                xor     eax, ecx
22441
                xor     ebx, edx
22442
                mov     edi, eax
22443
                mov     [esp+48h], eax
22444
                shr     eax, 0Dh
22445
                mov     ebp, ebx
22446
                and     edi, 0FFh
22447
                mov     [esp+4Ch], ebx
22448
                shl     edi, 3
22449
                and     ebp, 0FFh
22450
                shr     ebx, 0Dh
22451
                and     eax, 7F8h
22452
                shl     ebp, 3
22453
                mov     ecx, [esi+edi]
22454
                mov     edx, [esi+edi+4]
22455
                xor     ecx, [esi+eax+800h]
22456
                xor     edx, [esi+eax+804h]
22457
                and     ebx, 7F8h
22458
                xor     ecx, [esi+ebp+1000h]
22459
                xor     edx, [esi+ebp+1004h]
22460
                xor     ecx, [esi+ebx+1800h]
22461
                xor     edx, [esi+ebx+1804h]
22462
                mov     edi, [esp+50h]
22463
                mov     ebp, [esp+54h]
22464
                sub     edi, ecx
22465
                mov     eax, [esp+48h]
22466
                sbb     ebp, edx
22467
                mov     ebx, [esp+4Ch]
22468
                mov     [esp+50h], edi
22469
                mov     edi, eax
22470
                shr     eax, 5
22471
                mov     [esp+54h], ebp
22472
                shr     edi, 15h
22473
                mov     ebp, ebx
22474
                shr     ebx, 5
22475
                and     eax, 7F8h
22476
                shr     ebp, 15h
22477
                and     edi, 7F8h
22478
                and     ebx, 7F8h
22479
                mov     ecx, [esi+eax+1800h]
22480
                mov     edx, [esi+eax+1804h]
22481
                xor     ecx, [esi+edi+1000h]
22482
                and     ebp, 7F8h
22483
                xor     edx, [esi+edi+1004h]
22484
                xor     ecx, [esi+ebx+800h]
22485
                xor     edx, [esi+ebx+804h]
22486
                xor     ecx, [esi+ebp]
22487
                xor     edx, [esi+ebp+4]
22488
                mov     eax, [esp+40h]
22489
                mov     ebx, [esp+44h]
22490
                add     eax, ecx
22491
                adc     ebx, edx
22492
                mov     ecx, eax
22493
                shr     ecx, 1Dh
22494
                mov     ebp, ebx
22495
                shl     ebx, 3
22496
                mov     edi, eax
22497
                shl     eax, 3
22498
                or      ebx, ecx
22499
                add     eax, edi
22500
                adc     ebx, ebp
22501
                mov     [esp+40h], eax
22502
                mov     [esp+44h], ebx
22503
                mov     eax, [esp+10h]
22504
                mov     ebx, [esp+14h]
22505
                mov     ecx, [esp+50h]
22506
                mov     edx, [esp+54h]
22507
                xor     eax, ecx
22508
                xor     ebx, edx
22509
                mov     edi, eax
22510
                mov     [esp+50h], eax
22511
                shr     eax, 0Dh
22512
                mov     ebp, ebx
22513
                and     edi, 0FFh
22514
                mov     [esp+54h], ebx
22515
                shl     edi, 3
22516
                and     ebp, 0FFh
22517
                shr     ebx, 0Dh
22518
                and     eax, 7F8h
22519
                shl     ebp, 3
22520
                mov     ecx, [esi+edi]
22521
                mov     edx, [esi+edi+4]
22522
                xor     ecx, [esi+eax+800h]
22523
                xor     edx, [esi+eax+804h]
22524
                and     ebx, 7F8h
22525
                xor     ecx, [esi+ebp+1000h]
22526
                xor     edx, [esi+ebp+1004h]
22527
                xor     ecx, [esi+ebx+1800h]
22528
                xor     edx, [esi+ebx+1804h]
22529
                mov     edi, [esp+40h]
22530
                mov     ebp, [esp+44h]
22531
                sub     edi, ecx
22532
                mov     eax, [esp+50h]
22533
                sbb     ebp, edx
22534
                mov     ebx, [esp+54h]
22535
                mov     [esp+40h], edi
22536
                mov     edi, eax
22537
                shr     eax, 5
22538
                mov     [esp+44h], ebp
22539
                shr     edi, 15h
22540
                mov     ebp, ebx
22541
                shr     ebx, 5
22542
                and     eax, 7F8h
22543
                shr     ebp, 15h
22544
                and     edi, 7F8h
22545
                and     ebx, 7F8h
22546
                mov     ecx, [esi+eax+1800h]
22547
                mov     edx, [esi+eax+1804h]
22548
                xor     ecx, [esi+edi+1000h]
22549
                and     ebp, 7F8h
22550
                xor     edx, [esi+edi+1004h]
22551
                xor     ecx, [esi+ebx+800h]
22552
                xor     edx, [esi+ebx+804h]
22553
                xor     ecx, [esi+ebp]
22554
                xor     edx, [esi+ebp+4]
22555
                mov     eax, [esp+48h]
22556
                mov     ebx, [esp+4Ch]
22557
                add     eax, ecx
22558
                adc     ebx, edx
22559
                mov     ecx, eax
22560
                shr     ecx, 1Dh
22561
                mov     ebp, ebx
22562
                shl     ebx, 3
22563
                mov     edi, eax
22564
                shl     eax, 3
22565
                or      ebx, ecx
22566
                add     eax, edi
22567
                adc     ebx, ebp
22568
                mov     [esp+48h], eax
22569
                mov     [esp+4Ch], ebx
22570
                mov     eax, [esp+18h]
22571
                mov     ebx, [esp+1Ch]
22572
                mov     ecx, [esp+40h]
22573
                mov     edx, [esp+44h]
22574
                xor     eax, ecx
22575
                xor     ebx, edx
22576
                mov     edi, eax
22577
                mov     [esp+40h], eax
22578
                shr     eax, 0Dh
22579
                mov     ebp, ebx
22580
                and     edi, 0FFh
22581
                mov     [esp+44h], ebx
22582
                shl     edi, 3
22583
                and     ebp, 0FFh
22584
                shr     ebx, 0Dh
22585
                and     eax, 7F8h
22586
                shl     ebp, 3
22587
                mov     ecx, [esi+edi]
22588
                mov     edx, [esi+edi+4]
22589
                xor     ecx, [esi+eax+800h]
22590
                xor     edx, [esi+eax+804h]
22591
                and     ebx, 7F8h
22592
                xor     ecx, [esi+ebp+1000h]
22593
                xor     edx, [esi+ebp+1004h]
22594
                xor     ecx, [esi+ebx+1800h]
22595
                xor     edx, [esi+ebx+1804h]
22596
                mov     edi, [esp+48h]
22597
                mov     ebp, [esp+4Ch]
22598
                sub     edi, ecx
22599
                mov     eax, [esp+40h]
22600
                sbb     ebp, edx
22601
                mov     ebx, [esp+44h]
22602
                mov     [esp+48h], edi
22603
                mov     edi, eax
22604
                shr     eax, 5
22605
                mov     [esp+4Ch], ebp
22606
                shr     edi, 15h
22607
                mov     ebp, ebx
22608
                shr     ebx, 5
22609
                and     eax, 7F8h
22610
                shr     ebp, 15h
22611
                and     edi, 7F8h
22612
                and     ebx, 7F8h
22613
                mov     ecx, [esi+eax+1800h]
22614
                mov     edx, [esi+eax+1804h]
22615
                xor     ecx, [esi+edi+1000h]
22616
                and     ebp, 7F8h
22617
                xor     edx, [esi+edi+1004h]
22618
                xor     ecx, [esi+ebx+800h]
22619
                xor     edx, [esi+ebx+804h]
22620
                xor     ecx, [esi+ebp]
22621
                xor     edx, [esi+ebp+4]
22622
                mov     eax, [esp+50h]
22623
                mov     ebx, [esp+54h]
22624
                add     eax, ecx
22625
                adc     ebx, edx
22626
                mov     ecx, eax
22627
                shr     ecx, 1Dh
22628
                mov     ebp, ebx
22629
                shl     ebx, 3
22630
                mov     edi, eax
22631
                shl     eax, 3
22632
                or      ebx, ecx
22633
                add     eax, edi
22634
                adc     ebx, ebp
22635
                mov     [esp+50h], eax
22636
                mov     [esp+54h], ebx
22637
                mov     eax, [esp+20h]
22638
                mov     ebx, [esp+24h]
22639
                mov     ecx, [esp+48h]
22640
                mov     edx, [esp+4Ch]
22641
                xor     eax, ecx
22642
                xor     ebx, edx
22643
                mov     edi, eax
22644
                mov     [esp+48h], eax
22645
                shr     eax, 0Dh
22646
                mov     ebp, ebx
22647
                and     edi, 0FFh
22648
                mov     [esp+4Ch], ebx
22649
                shl     edi, 3
22650
                and     ebp, 0FFh
22651
                shr     ebx, 0Dh
22652
                and     eax, 7F8h
22653
                shl     ebp, 3
22654
                mov     ecx, [esi+edi]
22655
                mov     edx, [esi+edi+4]
22656
                xor     ecx, [esi+eax+800h]
22657
                xor     edx, [esi+eax+804h]
22658
                and     ebx, 7F8h
22659
                xor     ecx, [esi+ebp+1000h]
22660
                xor     edx, [esi+ebp+1004h]
22661
                xor     ecx, [esi+ebx+1800h]
22662
                xor     edx, [esi+ebx+1804h]
22663
                mov     edi, [esp+50h]
22664
                mov     ebp, [esp+54h]
22665
                sub     edi, ecx
22666
                mov     eax, [esp+48h]
22667
                sbb     ebp, edx
22668
                mov     ebx, [esp+4Ch]
22669
                mov     [esp+50h], edi
22670
                mov     edi, eax
22671
                shr     eax, 5
22672
                mov     [esp+54h], ebp
22673
                shr     edi, 15h
22674
                mov     ebp, ebx
22675
                shr     ebx, 5
22676
                and     eax, 7F8h
22677
                shr     ebp, 15h
22678
                and     edi, 7F8h
22679
                and     ebx, 7F8h
22680
                mov     ecx, [esi+eax+1800h]
22681
                mov     edx, [esi+eax+1804h]
22682
                xor     ecx, [esi+edi+1000h]
22683
                and     ebp, 7F8h
22684
                xor     edx, [esi+edi+1004h]
22685
                xor     ecx, [esi+ebx+800h]
22686
                xor     edx, [esi+ebx+804h]
22687
                xor     ecx, [esi+ebp]
22688
                xor     edx, [esi+ebp+4]
22689
                mov     eax, [esp+40h]
22690
                mov     ebx, [esp+44h]
22691
                add     eax, ecx
22692
                adc     ebx, edx
22693
                mov     ecx, eax
22694
                shr     ecx, 1Dh
22695
                mov     ebp, ebx
22696
                shl     ebx, 3
22697
                mov     edi, eax
22698
                shl     eax, 3
22699
                or      ebx, ecx
22700
                add     eax, edi
22701
                adc     ebx, ebp
22702
                mov     [esp+40h], eax
22703
                mov     [esp+44h], ebx
22704
                mov     eax, [esp+28h]
22705
                mov     ebx, [esp+2Ch]
22706
                mov     ecx, [esp+50h]
22707
                mov     edx, [esp+54h]
22708
                xor     eax, ecx
22709
                xor     ebx, edx
22710
                mov     edi, eax
22711
                mov     [esp+50h], eax
22712
                shr     eax, 0Dh
22713
                mov     ebp, ebx
22714
                and     edi, 0FFh
22715
                mov     [esp+54h], ebx
22716
                shl     edi, 3
22717
                and     ebp, 0FFh
22718
                shr     ebx, 0Dh
22719
                and     eax, 7F8h
22720
                shl     ebp, 3
22721
                mov     ecx, [esi+edi]
22722
                mov     edx, [esi+edi+4]
22723
                xor     ecx, [esi+eax+800h]
22724
                xor     edx, [esi+eax+804h]
22725
                and     ebx, 7F8h
22726
                xor     ecx, [esi+ebp+1000h]
22727
                xor     edx, [esi+ebp+1004h]
22728
                xor     ecx, [esi+ebx+1800h]
22729
                xor     edx, [esi+ebx+1804h]
22730
                mov     edi, [esp+40h]
22731
                mov     ebp, [esp+44h]
22732
                sub     edi, ecx
22733
                mov     eax, [esp+50h]
22734
                sbb     ebp, edx
22735
                mov     ebx, [esp+54h]
22736
                mov     [esp+40h], edi
22737
                mov     edi, eax
22738
                shr     eax, 5
22739
                mov     [esp+44h], ebp
22740
                shr     edi, 15h
22741
                mov     ebp, ebx
22742
                shr     ebx, 5
22743
                and     eax, 7F8h
22744
                shr     ebp, 15h
22745
                and     edi, 7F8h
22746
                and     ebx, 7F8h
22747
                mov     ecx, [esi+eax+1800h]
22748
                mov     edx, [esi+eax+1804h]
22749
                xor     ecx, [esi+edi+1000h]
22750
                and     ebp, 7F8h
22751
                xor     edx, [esi+edi+1004h]
22752
                xor     ecx, [esi+ebx+800h]
22753
                xor     edx, [esi+ebx+804h]
22754
                xor     ecx, [esi+ebp]
22755
                xor     edx, [esi+ebp+4]
22756
                mov     eax, [esp+48h]
22757
                mov     ebx, [esp+4Ch]
22758
                add     eax, ecx
22759
                adc     ebx, edx
22760
                mov     ecx, eax
22761
                shr     ecx, 1Dh
22762
                mov     ebp, ebx
22763
                shl     ebx, 3
22764
                mov     edi, eax
22765
                shl     eax, 3
22766
                or      ebx, ecx
22767
                add     eax, edi
22768
                adc     ebx, ebp
22769
                mov     [esp+48h], eax
22770
                mov     [esp+4Ch], ebx
22771
                mov     eax, [esp+30h]
22772
                mov     ebx, [esp+34h]
22773
                mov     ecx, [esp+40h]
22774
                mov     edx, [esp+44h]
22775
                xor     eax, ecx
22776
                xor     ebx, edx
22777
                mov     edi, eax
22778
                mov     [esp+40h], eax
22779
                shr     eax, 0Dh
22780
                mov     ebp, ebx
22781
                and     edi, 0FFh
22782
                mov     [esp+44h], ebx
22783
                shl     edi, 3
22784
                and     ebp, 0FFh
22785
                shr     ebx, 0Dh
22786
                and     eax, 7F8h
22787
                shl     ebp, 3
22788
                mov     ecx, [esi+edi]
22789
                mov     edx, [esi+edi+4]
22790
                xor     ecx, [esi+eax+800h]
22791
                xor     edx, [esi+eax+804h]
22792
                and     ebx, 7F8h
22793
                xor     ecx, [esi+ebp+1000h]
22794
                xor     edx, [esi+ebp+1004h]
22795
                xor     ecx, [esi+ebx+1800h]
22796
                xor     edx, [esi+ebx+1804h]
22797
                mov     edi, [esp+48h]
22798
                mov     ebp, [esp+4Ch]
22799
                sub     edi, ecx
22800
                mov     eax, [esp+40h]
22801
                sbb     ebp, edx
22802
                mov     ebx, [esp+44h]
22803
                mov     [esp+48h], edi
22804
                mov     edi, eax
22805
                shr     eax, 5
22806
                mov     [esp+4Ch], ebp
22807
                shr     edi, 15h
22808
                mov     ebp, ebx
22809
                shr     ebx, 5
22810
                and     eax, 7F8h
22811
                shr     ebp, 15h
22812
                and     edi, 7F8h
22813
                and     ebx, 7F8h
22814
                mov     ecx, [esi+eax+1800h]
22815
                mov     edx, [esi+eax+1804h]
22816
                xor     ecx, [esi+edi+1000h]
22817
                and     ebp, 7F8h
22818
                xor     edx, [esi+edi+1004h]
22819
                xor     ecx, [esi+ebx+800h]
22820
                xor     edx, [esi+ebx+804h]
22821
                xor     ecx, [esi+ebp]
22822
                xor     edx, [esi+ebp+4]
22823
                mov     eax, [esp+50h]
22824
                mov     ebx, [esp+54h]
22825
                add     eax, ecx
22826
                adc     ebx, edx
22827
                mov     ecx, eax
22828
                shr     ecx, 1Dh
22829
                mov     ebp, ebx
22830
                shl     ebx, 3
22831
                mov     edi, eax
22832
                shl     eax, 3
22833
                or      ebx, ecx
22834
                add     eax, edi
22835
                adc     ebx, ebp
22836
                mov     [esp+50h], eax
22837
                mov     [esp+54h], ebx
22838
                mov     eax, [esp+38h]
22839
                mov     ebx, [esp+3Ch]
22840
                mov     ecx, [esp+48h]
22841
                mov     edx, [esp+4Ch]
22842
                xor     eax, ecx
22843
                xor     ebx, edx
22844
                mov     edi, eax
22845
                mov     [esp+48h], eax
22846
                shr     eax, 0Dh
22847
                mov     ebp, ebx
22848
                and     edi, 0FFh
22849
                mov     [esp+4Ch], ebx
22850
                shl     edi, 3
22851
                and     ebp, 0FFh
22852
                shr     ebx, 0Dh
22853
                and     eax, 7F8h
22854
                shl     ebp, 3
22855
                mov     ecx, [esi+edi]
22856
                mov     edx, [esi+edi+4]
22857
                xor     ecx, [esi+eax+800h]
22858
                xor     edx, [esi+eax+804h]
22859
                and     ebx, 7F8h
22860
                xor     ecx, [esi+ebp+1000h]
22861
                xor     edx, [esi+ebp+1004h]
22862
                xor     ecx, [esi+ebx+1800h]
22863
                xor     edx, [esi+ebx+1804h]
22864
                mov     edi, [esp+50h]
22865
                mov     ebp, [esp+54h]
22866
                sub     edi, ecx
22867
                mov     eax, [esp+48h]
22868
                sbb     ebp, edx
22869
                mov     ebx, [esp+4Ch]
22870
                mov     [esp+50h], edi
22871
                mov     edi, eax
22872
                shr     eax, 5
22873
                mov     [esp+54h], ebp
22874
                shr     edi, 15h
22875
                mov     ebp, ebx
22876
                shr     ebx, 5
22877
                and     eax, 7F8h
22878
                shr     ebp, 15h
22879
                and     edi, 7F8h
22880
                and     ebx, 7F8h
22881
                mov     ecx, [esi+eax+1800h]
22882
                mov     edx, [esi+eax+1804h]
22883
                xor     ecx, [esi+edi+1000h]
22884
                and     ebp, 7F8h
22885
                xor     edx, [esi+edi+1004h]
22886
                xor     ecx, [esi+ebx+800h]
22887
                xor     edx, [esi+ebx+804h]
22888
                xor     ecx, [esi+ebp]
22889
                xor     edx, [esi+ebp+4]
22890
                mov     eax, [esp+40h]
22891
                mov     ebx, [esp+44h]
22892
                add     eax, ecx
22893
                adc     ebx, edx
22894
                mov     ecx, eax
22895
                shr     ecx, 1Dh
22896
                mov     ebp, ebx
22897
                shl     ebx, 3
22898
                mov     edi, eax
22899
                shl     eax, 3
22900
                or      ebx, ecx
22901
                add     eax, edi
22902
                adc     ebx, ebp
22903
                mov     [esp+40h], eax
22904
                mov     [esp+44h], ebx
22905
                mov     esi, [esp+60h]
22906
                test    esi, esi
22907
                jnz     @_yet_more_cycles 
22908
                jmp     @_pass_loop_end
22909
 
22910
@_yet_more_cycles:
22911
 
22912
                dec     esi
22913
                mov     [esp+60h], esi
22914
                mov     eax, [esp+38h]
22915
                mov     ebx, [esp+3Ch]
22916
                xor     eax, 0A5A5A5A5h
22917
                xor     ebx, 0A5A5A5A5h
22918
                mov     ecx, [esp]
22919
                mov     edx, [esp+4]
22920
                sub     ecx, eax
22921
                sbb     edx, ebx
22922
                mov     [esp], ecx
22923
                mov     [esp+4], edx
22924
                mov     eax, [esp+8]
22925
                mov     ebx, [esp+0Ch]
22926
                xor     eax, ecx
22927
                xor     ebx, edx
22928
                mov     [esp+8], eax
22929
                mov     edi, eax
22930
                mov     esi, eax
22931
                shr     edi, 0Dh
22932
                xor     eax, 0FFFFFFFFh
22933
                mov     [esp+0Ch], ebx
22934
                mov     ecx, [esp+10h]
22935
                shl     eax, 13h
22936
                mov     ebp, ebx
22937
                shl     ebx, 13h
22938
                mov     edx, [esp+14h]
22939
                add     esi, ecx
22940
                mov     ecx, [esp+20h]
22941
                adc     ebp, edx
22942
                or      edi, ebx
22943
                mov     [esp+10h], esi
22944
                xor     esi, eax
22945
                mov     [esp+14h], ebp
22946
                mov     eax, [esp+18h]
22947
                xor     ebp, 0FFFFFFFFh
22948
                mov     ebx, [esp+1Ch]
22949
                xor     ebp, edi
22950
                sub     eax, esi
22951
                sbb     ebx, ebp
22952
                mov     edx, [esp+24h]
22953
                mov     [esp+18h], eax
22954
                xor     eax, ecx
22955
                mov     [esp+1Ch], ebx
22956
                xor     ebx, edx
22957
                mov     ecx, [esp+28h]
22958
                mov     edx, [esp+2Ch]
22959
                mov     edi, ebx
22960
                mov     ebp, ebx
22961
                mov     [esp+20h], eax
22962
                xor     ebp, 0FFFFFFFFh
22963
                shl     ebx, 9
22964
                add     ecx, eax
22965
                adc     edx, edi
22966
                mov     [esp+24h], edi
22967
                shr     ebp, 17h
22968
                mov     [esp+28h], ecx
22969
                shr     eax, 17h
22970
                xor     ecx, 0FFFFFFFFh
22971
                or      ebx, eax
22972
                mov     [esp+2Ch], edx
22973
                mov     eax, [esp+30h]
22974
                xor     ecx, ebx
22975
                mov     ebx, [esp+34h]
22976
                xor     edx, ebp
22977
                mov     edi, [esp+38h]
22978
                sub     eax, ecx
22979
                mov     ebp, [esp+3Ch]
22980
                mov     [esp+30h], eax
22981
                sbb     ebx, edx
22982
                xor     edi, eax
22983
                xor     ebp, ebx
22984
                mov     [esp+34h], ebx
22985
                mov     eax, [esp]
22986
                mov     ecx, edi
22987
                xor     edi, 0FFFFFFFFh
22988
                mov     ebx, [esp+4]
22989
                shl     edi, 13h
22990
                mov     [esp+38h], ecx
22991
                add     eax, ecx
22992
                mov     [esp+3Ch], ebp
22993
                adc     ebx, ebp
22994
                xor     edi, eax
22995
                shr     ecx, 0Dh
22996
                mov     [esp], eax
22997
                shl     ebp, 13h
22998
                mov     [esp+4], ebx
22999
                mov     esi, [esp+8]
23000
                xor     ebx, 0FFFFFFFFh
23001
                or      ebp, ecx
23002
                mov     edx, [esp+0Ch]
23003
                xor     ebp, ebx
23004
                sub     esi, edi
23005
                mov     eax, [esp+10h]
23006
                mov     ebx, [esp+14h]
23007
                sbb     edx, ebp
23008
                mov     [esp+8], esi
23009
                xor     eax, esi
23010
                mov     [esp+0Ch], edx
23011
                mov     edi, [esp+18h]
23012
                mov     ebp, [esp+1Ch]
23013
                xor     ebx, edx
23014
                mov     [esp+10h], eax
23015
                add     edi, eax
23016
                mov     esi, ebx
23017
                adc     ebp, ebx
23018
                mov     [esp+14h], ebx
23019
                shr     eax, 17h
23020
                mov     ecx, [esp+20h]
23021
                xor     ebx, 0FFFFFFFFh
23022
                mov     edx, [esp+24h]
23023
                shl     esi, 9
23024
                mov     [esp+18h], edi
23025
                or      eax, esi
23026
                xor     edi, 0FFFFFFFFh
23027
                shr     ebx, 17h
23028
                mov     [esp+1Ch], ebp
23029
                xor     eax, edi
23030
                mov     edi, [esp+28h]
23031
                xor     ebx, ebp
23032
                sub     ecx, eax
23033
                mov     ebp, [esp+2Ch]
23034
                mov     [esp+20h], ecx
23035
                sbb     edx, ebx
23036
                xor     edi, ecx
23037
                mov     [esp+24h], edx
23038
                xor     ebp, edx
23039
                mov     eax, [esp+30h]
23040
                mov     ebx, [esp+34h]
23041
                mov     [esp+28h], edi
23042
                add     eax, edi
23043
                mov     [esp+2Ch], ebp
23044
                mov     ecx, [esp+38h]
23045
                adc     ebx, ebp
23046
                mov     edx, [esp+3Ch]
23047
                mov     [esp+30h], eax
23048
                xor     eax, 89ABCDEFh
23049
                mov     [esp+34h], ebx
23050
                xor     ebx, 1234567h
23051
                sub     ecx, eax
23052
                sbb     edx, ebx
23053
                mov     [esp+38h], ecx
23054
                mov     [esp+3Ch], edx
23055
                mov     eax, [esp+40h]
23056
                mov     ebx, [esp+44h]
23057
                mov     ecx, [esp+48h]
23058
                mov     edx, [esp+4Ch]
23059
                mov     [esp+48h], eax
23060
                mov     [esp+4Ch], ebx
23061
                mov     edi, [esp+50h]
23062
                mov     ebp, [esp+54h]
23063
                mov     [esp+50h], ecx
23064
                mov     [esp+54h], edx
23065
                mov     [esp+40h], edi
23066
                mov     [esp+44h], ebp
23067
                jmp     @_pass_loop
23068
 
23069
@_pass_loop_end:
23070
                mov     esi, [esp+5Ch]
23071
                mov     eax, [esp+40h]
23072
                mov     ebx, [esp+44h]
23073
                mov     edi, [esp+48h]
23074
                mov     ebp, [esp+4Ch]
23075
                mov     ecx, [esi]
23076
                mov     edx, [esi+4]
23077
                xor     eax, ecx
23078
                xor     ebx, edx
23079
                mov     [esi], eax
23080
                mov     ecx, [esi+8]
23081
                mov     edx, [esi+0Ch]
23082
                mov     [esi+4], ebx
23083
                sub     edi, ecx
23084
                mov     ecx, [esi+10h]
23085
                mov     [esi+8], edi
23086
                sbb     ebp, edx
23087
                mov     edx, [esi+14h]
23088
                mov     [esi+0Ch], ebp
23089
                mov     eax, [esp+50h]
23090
                mov     ebx, [esp+54h]
23091
                add     ecx, eax
23092
                adc     edx, ebx
23093
                mov     [esi+10h], ecx
23094
                mov     [esi+14h], edx
23095
                mov     ebp, [esp+68h]
23096
                mov     esp, ebp
23097
                pop     ebp
23098
                pop     edi
23099
                pop     esi
23100
                pop     ebx
23101
end;
23102
{$ENDIF}
23103
 
23104
{$IFDEF THash_Panama_asm}
23105
procedure THash_Panama.DoPull;
23106
asm
23107
                push    ebx
23108
                push    esi
23109
                lea     edx, [eax].THash_Panama.FTap
23110
                push    edi
23111
                lea     edi, [eax].THash_Panama.FDigest
23112
                push    ebp
23113
                lea     eax, [eax].THash_Panama.FLFSRBuffer
23114
                mov     ebp, esp
23115
                add     esp, 0FFFFFF5Ch
23116
                and     esp, 0FFFFFFE0h
23117
                mov     [esp+88h], edi
23118
                mov     [esp+8Ch], edx
23119
                mov     ecx, 20h
23120
                mov     [esp+90h], eax
23121
                mov     [esp+0A0h], ebp
23122
                mov     eax, [edi]
23123
                mov     ebx, [edi+4]
23124
                mov     [esp], eax
23125
                mov     [esp+4], ebx
23126
                mov     ebp, [edi+8]
23127
                mov     esi, [edi+0Ch]
23128
                mov     [esp+8], ebp
23129
                mov     [esp+0Ch], esi
23130
                mov     eax, [edi+10h]
23131
                mov     ebx, [edi+14h]
23132
                mov     [esp+10h], eax
23133
                mov     [esp+14h], ebx
23134
                mov     ebp, [edi+18h]
23135
                mov     esi, [edi+1Ch]
23136
                mov     [esp+18h], ebp
23137
                mov     [esp+1Ch], esi
23138
                mov     eax, [edi+20h]
23139
                mov     ebx, [edi+24h]
23140
                mov     [esp+20h], eax
23141
                mov     [esp+24h], ebx
23142
                mov     ebp, [edi+28h]
23143
                mov     esi, [edi+2Ch]
23144
                mov     [esp+28h], ebp
23145
                mov     [esp+2Ch], esi
23146
                mov     eax, [edi+30h]
23147
                mov     ebx, [edi+34h]
23148
                mov     [esp+30h], eax
23149
                mov     [esp+34h], ebx
23150
                mov     ebp, [edi+38h]
23151
                mov     esi, [edi+3Ch]
23152
                mov     eax, [edi+40h]
23153
                mov     [esp+38h], ebp
23154
                mov     [esp+3Ch], esi
23155
                mov     [esp+40h], eax
23156
@@_loop_start:
23157
                mov     esi, [esp+8Ch]
23158
                dec     ecx
23159
                mov     ebp, [esp+90h]
23160
                mov     [esp+9Ch], ecx
23161
                mov     edx, [esi]
23162
                mov     eax, edx
23163
                mov     ecx, edx
23164
                add     edx, 10h
23165
                dec     eax
23166
                add     ecx, 4
23167
                and     edx, 1Fh
23168
                and     eax, 1Fh
23169
                and     ecx, 1Fh
23170
                shl     edx, 5
23171
                mov     [esi], eax
23172
                shl     ecx, 5
23173
                mov     ebx, eax
23174
                shl     eax, 5
23175
                add     edx, ebp
23176
                add     ebx, 19h
23177
                add     eax, ebp
23178
                and     ebx, 1Fh
23179
                add     ecx, ebp
23180
                shl     ebx, 5
23181
                mov     [esp+98h], edx
23182
                add     ebx, ebp
23183
                mov     [esp+94h], ecx
23184
                mov     ecx, [ebx]
23185
                mov     edx, [eax+8]
23186
                mov     edi, [ebx+4]
23187
                mov     ebp, [eax+0Ch]
23188
                xor     ecx, edx
23189
                xor     edi, ebp
23190
                mov     [ebx], ecx
23191
                mov     [ebx+4], edi
23192
                mov     ecx, [ebx+8]
23193
                mov     edx, [eax+10h]
23194
                mov     edi, [ebx+0Ch]
23195
                mov     ebp, [eax+14h]
23196
                xor     ecx, edx
23197
                xor     edi, ebp
23198
                mov     [ebx+8], ecx
23199
                mov     [ebx+0Ch], edi
23200
                mov     ecx, [ebx+10h]
23201
                mov     edx, [eax+18h]
23202
                mov     edi, [ebx+14h]
23203
                mov     ebp, [eax+1Ch]
23204
                xor     ecx, edx
23205
                xor     edi, ebp
23206
                mov     [ebx+10h], ecx
23207
                mov     [ebx+14h], edi
23208
                mov     ecx, [ebx+18h]
23209
                mov     edx, [eax]
23210
                mov     edi, [ebx+1Ch]
23211
                mov     ebp, [eax+4]
23212
                xor     ecx, edx
23213
                xor     edi, ebp
23214
                mov     [ebx+18h], ecx
23215
                mov     [ebx+1Ch], edi
23216
                mov     ecx, [eax]
23217
                mov     edx, [esp+4]
23218
                mov     edi, [eax+4]
23219
                mov     ebp, [esp+8]
23220
                xor     ecx, edx
23221
                xor     edi, ebp
23222
                mov     [eax], ecx
23223
                mov     [eax+4], edi
23224
                mov     ecx, [eax+8]
23225
                mov     edx, [esp+0Ch]
23226
                mov     edi, [eax+0Ch]
23227
                mov     ebp, [esp+10h]
23228
                xor     ecx, edx
23229
                xor     edi, ebp
23230
                mov     [eax+8], ecx
23231
                mov     [eax+0Ch], edi
23232
                mov     ecx, [eax+10h]
23233
                mov     edx, [esp+14h]
23234
                mov     edi, [eax+14h]
23235
                mov     ebp, [esp+18h]
23236
                xor     ecx, edx
23237
                xor     edi, ebp
23238
                mov     [eax+10h], ecx
23239
                mov     [eax+14h], edi
23240
                mov     ecx, [eax+18h]
23241
                mov     edx, [esp+1Ch]
23242
                mov     edi, [eax+1Ch]
23243
                mov     ebp, [esp+20h]
23244
                xor     ecx, edx
23245
                xor     edi, ebp
23246
                mov     [eax+18h], ecx
23247
                mov     [eax+1Ch], edi
23248
                mov     eax, [esp]
23249
                mov     ebx, [esp+4]
23250
                mov     ecx, [esp+8]
23251
                mov     esi, ecx
23252
                xor     ecx, 0FFFFFFFFh
23253
                mov     ebp, ebx
23254
                or      ecx, ebx
23255
                xor     ecx, eax
23256
                mov     [esp+44h], ecx
23257
                mov     ecx, [esp+0Ch]
23258
                mov     edx, [esp+10h]
23259
                mov     eax, ecx
23260
                xor     ecx, 0FFFFFFFFh
23261
                mov     ebx, edx
23262
                xor     edx, 0FFFFFFFFh
23263
                or      ecx, esi
23264
                or      edx, eax
23265
                xor     ebp, ecx
23266
                mov     ecx, [esp+14h]
23267
                rol     ebp, 0Fh
23268
                xor     esi, edx
23269
                mov     edx, [esp+18h]
23270
                ror     esi, 9
23271
                mov     [esp+58h], ebp
23272
                mov     ebp, ecx
23273
                xor     ecx, 0FFFFFFFFh
23274
                mov     [esp+6Ch], esi
23275
                mov     esi, edx
23276
                xor     edx, 0FFFFFFFFh
23277
                or      ecx, ebx
23278
                or      edx, ebp
23279
                xor     eax, ecx
23280
                mov     ecx, [esp+1Ch]
23281
                ror     eax, 8
23282
                xor     ebx, edx
23283
                mov     edx, [esp+20h]
23284
                rol     ebx, 6
23285
                mov     [esp+80h], eax
23286
                mov     eax, ecx
23287
                xor     ecx, 0FFFFFFFFh
23288
                mov     [esp+50h], ebx
23289
                mov     ebx, edx
23290
                xor     edx, 0FFFFFFFFh
23291
                or      ecx, esi
23292
                or      edx, eax
23293
                xor     ebp, ecx
23294
                mov     ecx, [esp+24h]
23295
                rol     ebp, 4
23296
                xor     esi, edx
23297
                mov     edx, [esp+28h]
23298
                ror     esi, 5
23299
                mov     [esp+64h], ebp
23300
                mov     ebp, ecx
23301
                xor     ecx, 0FFFFFFFFh
23302
                mov     [esp+78h], esi
23303
                mov     esi, edx
23304
                xor     edx, 0FFFFFFFFh
23305
                or      ecx, ebx
23306
                or      edx, ebp
23307
                xor     eax, ecx
23308
                mov     ecx, [esp+2Ch]
23309
                rol     eax, 1
23310
                xor     ebx, edx
23311
                mov     edx, [esp+30h]
23312
                ror     ebx, 0Bh
23313
                mov     [esp+48h], eax
23314
                mov     eax, ecx
23315
                xor     ecx, 0FFFFFFFFh
23316
                mov     [esp+5Ch], ebx
23317
                mov     ebx, edx
23318
                xor     edx, 0FFFFFFFFh
23319
                or      ecx, esi
23320
                or      edx, eax
23321
                xor     ebp, ecx
23322
                mov     ecx, [esp+34h]
23323
                rol     ebp, 2
23324
                xor     esi, edx
23325
                mov     edx, [esp+38h]
23326
                rol     esi, 8
23327
                mov     [esp+70h], ebp
23328
                mov     ebp, ecx
23329
                xor     ecx, 0FFFFFFFFh
23330
                mov     [esp+84h], esi
23331
                mov     esi, edx
23332
                xor     edx, 0FFFFFFFFh
23333
                or      ecx, ebx
23334
                or      edx, ebp
23335
                xor     eax, ecx
23336
                mov     ecx, [esp+3Ch]
23337
                rol     eax, 0Ah
23338
                xor     ebx, edx
23339
                mov     edx, [esp+40h]
23340
                rol     ebx, 0Dh
23341
                mov     [esp+54h], eax
23342
                mov     eax, ecx
23343
                xor     ecx, 0FFFFFFFFh
23344
                mov     [esp+68h], ebx
23345
                mov     ebx, edx
23346
                xor     edx, 0FFFFFFFFh
23347
                or      ecx, esi
23348
                or      edx, eax
23349
                xor     ebp, ecx
23350
                mov     ecx, [esp]
23351
                rol     ebp, 9
23352
                xor     esi, edx
23353
                mov     edx, [esp+4]
23354
                rol     esi, 3
23355
                mov     [esp+7Ch], ebp
23356
                mov     ebp, ecx
23357
                xor     ecx, 0FFFFFFFFh
23358
                mov     [esp+4Ch], esi
23359
                mov     esi, edx
23360
                xor     edx, 0FFFFFFFFh
23361
                or      ecx, ebx
23362
                or      edx, ebp
23363
                xor     eax, ecx
23364
                xor     ebx, edx
23365
                ror     eax, 4
23366
                rol     ebx, 0Eh
23367
                mov     [esp+60h], eax
23368
                mov     [esp+74h], ebx
23369
                mov     eax, [esp+44h]
23370
                mov     ebx, [esp+48h]
23371
                mov     ecx, [esp+4Ch]
23372
                xor     eax, 1
23373
                mov     edx, [esp+50h]
23374
                xor     eax, ebx
23375
                mov     ebp, [esp+54h]
23376
                xor     eax, ebp
23377
                mov     esi, [esp+94h]
23378
                mov     [esp], eax
23379
                xor     ebx, ecx
23380
                mov     eax, [esp+58h]
23381
                xor     ecx, edx
23382
                mov     edi, [esp+5Ch]
23383
                xor     ebx, eax
23384
                xor     ecx, edi
23385
                xor     ebx, [esi]
23386
                xor     ecx, [esi+4]
23387
                mov     [esp+4], ebx
23388
                mov     [esp+8], ecx
23389
                xor     edx, ebp
23390
                mov     ecx, [esp+60h]
23391
                xor     ebp, eax
23392
                mov     ebx, [esp+64h]
23393
                xor     edx, ecx
23394
                xor     ebp, ebx
23395
                xor     edx, [esi+8]
23396
                xor     ebp, [esi+0Ch]
23397
                mov     [esp+0Ch], edx
23398
                mov     [esp+10h], ebp
23399
                xor     eax, edi
23400
                mov     edx, [esp+68h]
23401
                xor     edi, ecx
23402
                mov     ebp, [esp+6Ch]
23403
                xor     eax, edx
23404
                xor     edi, ebp
23405
                xor     eax, [esi+10h]
23406
                xor     edi, [esi+14h]
23407
                mov     [esp+14h], eax
23408
                mov     [esp+18h], edi
23409
                xor     ecx, ebx
23410
                mov     eax, [esp+70h]
23411
                xor     ebx, edx
23412
                mov     edi, [esp+74h]
23413
                xor     ecx, eax
23414
                xor     ebx, edi
23415
                xor     ecx, [esi+18h]
23416
                xor     ebx, [esi+1Ch]
23417
                mov     [esp+1Ch], ecx
23418
                mov     [esp+20h], ebx
23419
                mov     esi, [esp+98h]
23420
                xor     edx, ebp
23421
                mov     ecx, [esp+78h]
23422
                xor     ebp, eax
23423
                mov     ebx, [esp+7Ch]
23424
                xor     edx, ecx
23425
                xor     ebp, ebx
23426
                xor     edx, [esi]
23427
                xor     ebp, [esi+4]
23428
                mov     [esp+24h], edx
23429
                mov     [esp+28h], ebp
23430
                xor     eax, edi
23431
                mov     edx, [esp+80h]
23432
                xor     edi, ecx
23433
                mov     ebp, [esp+84h]
23434
                xor     eax, edx
23435
                xor     edi, ebp
23436
                xor     eax, [esi+8]
23437
                xor     edi, [esi+0Ch]
23438
                mov     [esp+2Ch], eax
23439
                mov     [esp+30h], edi
23440
                xor     ecx, ebx
23441
                mov     eax, [esp+44h]
23442
                xor     ebx, edx
23443
                mov     edi, [esp+48h]
23444
                xor     ecx, eax
23445
                xor     ebx, edi
23446
                xor     ecx, [esi+10h]
23447
                xor     ebx, [esi+14h]
23448
                mov     [esp+34h], ecx
23449
                mov     [esp+38h], ebx
23450
                mov     ecx, [esp+4Ch]
23451
                xor     edx, ebp
23452
                mov     ebx, [esp+50h]
23453
                xor     ebp, eax
23454
                xor     edx, ecx
23455
                xor     ebp, ebx
23456
                xor     edx, [esi+18h]
23457
                xor     ebp, [esi+1Ch]
23458
                mov     [esp+3Ch], edx
23459
                mov     [esp+40h], ebp
23460
                mov     ecx, [esp+9Ch]
23461
                test    ecx, ecx
23462
                jnz     @@_loop_start
23463
                mov     edi, [esp+88h]
23464
                mov     ebp, [esp+0A0h]
23465
                mov     eax, [esp+24h]
23466
                mov     ebx, [esp+28h]
23467
                mov     [edi], eax
23468
                mov     [edi+4], ebx
23469
                mov     ecx, [esp+2Ch]
23470
                mov     edx, [esp+30h]
23471
                mov     [edi+8], ecx
23472
                mov     [edi+0Ch], edx
23473
                mov     eax, [esp+34h]
23474
                mov     ebx, [esp+38h]
23475
                mov     [edi+10h], eax
23476
                mov     [edi+14h], ebx
23477
                mov     ecx, [esp+3Ch]
23478
                mov     edx, [esp+40h]
23479
                mov     esp, ebp
23480
                mov     [edi+18h], ecx
23481
                mov     [edi+1Ch], edx
23482
                pop     ebp
23483
                pop     edi
23484
                pop     esi
23485
                pop     ebx
23486
end;
23487
 
23488
procedure THash_Panama.DoTransform(Buffer: PLongArray); assembler;
23489
asm
23490
                push    ebx
23491
                push    esi
23492
                mov     esi, edx
23493
                push    edi
23494
                lea     edi, [eax].THash_Panama.FDigest
23495
                lea     edx, [eax].THash_Panama.FTap
23496
                push    ebp
23497
                lea     eax, [eax].THash_Panama.FLFSRBuffer
23498
 
23499
                mov     ebp, esp
23500
                add     esp, 0FFFFFF5Ch
23501
                and     esp, 0FFFFFFE0h
23502
                mov     [esp+88h], edi
23503
                mov     [esp+8Ch], esi
23504
                mov     [esp+90h], edx
23505
                mov     [esp+94h], eax
23506
                mov     [esp+0A0h], ebp
23507
                mov     eax, [edi]
23508
                mov     ebx, [edi+4]
23509
                mov     [esp], eax
23510
                mov     [esp+4], ebx
23511
                mov     ebp, [edi+8]
23512
                mov     esi, [edi+0Ch]
23513
                mov     [esp+8], ebp
23514
                mov     [esp+0Ch], esi
23515
                mov     eax, [edi+10h]
23516
                mov     ebx, [edi+14h]
23517
                mov     [esp+10h], eax
23518
                mov     [esp+14h], ebx
23519
                mov     ebp, [edi+18h]
23520
                mov     esi, [edi+1Ch]
23521
                mov     [esp+18h], ebp
23522
                mov     [esp+1Ch], esi
23523
                mov     eax, [edi+20h]
23524
                mov     ebx, [edi+24h]
23525
                mov     [esp+20h], eax
23526
                mov     [esp+24h], ebx
23527
                mov     ebp, [edi+28h]
23528
                mov     esi, [edi+2Ch]
23529
                mov     [esp+28h], ebp
23530
                mov     [esp+2Ch], esi
23531
                mov     eax, [edi+30h]
23532
                mov     ebx, [edi+34h]
23533
                mov     [esp+30h], eax
23534
                mov     [esp+34h], ebx
23535
                mov     ebp, [edi+38h]
23536
                mov     esi, [edi+3Ch]
23537
                mov     eax, [edi+40h]
23538
                mov     [esp+38h], ebp
23539
                mov     [esp+3Ch], esi
23540
                mov     [esp+40h], eax
23541
 
23542
                mov     eax, [esp]
23543
                mov     ebx, [esp+4]
23544
                mov     ecx, [esp+8]
23545
                mov     esi, ecx
23546
                xor     ecx, 0FFFFFFFFh
23547
                mov     ebp, ebx
23548
                or      ecx, ebx
23549
                xor     ecx, eax
23550
                mov     [esp+44h], ecx
23551
                mov     ecx, [esp+0Ch]
23552
                mov     edx, [esp+10h]
23553
                mov     eax, ecx
23554
                xor     ecx, 0FFFFFFFFh
23555
                mov     ebx, edx
23556
                xor     edx, 0FFFFFFFFh
23557
                or      ecx, esi
23558
                or      edx, eax
23559
                xor     ebp, ecx
23560
                mov     ecx, [esp+14h]
23561
                rol     ebp, 0Fh
23562
                xor     esi, edx
23563
                mov     edx, [esp+18h]
23564
                ror     esi, 9
23565
                mov     [esp+58h], ebp
23566
                mov     ebp, ecx
23567
                xor     ecx, 0FFFFFFFFh
23568
                mov     [esp+6Ch], esi
23569
                mov     esi, edx
23570
                xor     edx, 0FFFFFFFFh
23571
                or      ecx, ebx
23572
                or      edx, ebp
23573
                xor     eax, ecx
23574
                mov     ecx, [esp+1Ch]
23575
                ror     eax, 8
23576
                xor     ebx, edx
23577
                mov     edx, [esp+20h]
23578
                rol     ebx, 6
23579
                mov     [esp+80h], eax
23580
                mov     eax, ecx
23581
                xor     ecx, 0FFFFFFFFh
23582
                mov     [esp+50h], ebx
23583
                mov     ebx, edx
23584
                xor     edx, 0FFFFFFFFh
23585
                or      ecx, esi
23586
                or      edx, eax
23587
                xor     ebp, ecx
23588
                mov     ecx, [esp+24h]
23589
                rol     ebp, 4
23590
                xor     esi, edx
23591
                mov     edx, [esp+28h]
23592
                ror     esi, 5
23593
                mov     [esp+64h], ebp
23594
                mov     ebp, ecx
23595
                xor     ecx, 0FFFFFFFFh
23596
                mov     [esp+78h], esi
23597
                mov     esi, edx
23598
                xor     edx, 0FFFFFFFFh
23599
                or      ecx, ebx
23600
                or      edx, ebp
23601
                xor     eax, ecx
23602
                mov     ecx, [esp+2Ch]
23603
                rol     eax, 1
23604
                xor     ebx, edx
23605
                mov     edx, [esp+30h]
23606
                ror     ebx, 0Bh
23607
                mov     [esp+48h], eax
23608
                mov     eax, ecx
23609
                xor     ecx, 0FFFFFFFFh
23610
                mov     [esp+5Ch], ebx
23611
                mov     ebx, edx
23612
                xor     edx, 0FFFFFFFFh
23613
                or      ecx, esi
23614
                or      edx, eax
23615
                xor     ebp, ecx
23616
                mov     ecx, [esp+34h]
23617
                rol     ebp, 2
23618
                xor     esi, edx
23619
                mov     edx, [esp+38h]
23620
                rol     esi, 8
23621
                mov     [esp+70h], ebp
23622
                mov     ebp, ecx
23623
                xor     ecx, 0FFFFFFFFh
23624
                mov     [esp+84h], esi
23625
                mov     esi, edx
23626
                xor     edx, 0FFFFFFFFh
23627
                or      ecx, ebx
23628
                or      edx, ebp
23629
                xor     eax, ecx
23630
                mov     ecx, [esp+3Ch]
23631
                rol     eax, 0Ah
23632
                xor     ebx, edx
23633
                mov     edx, [esp+40h]
23634
                rol     ebx, 0Dh
23635
                mov     [esp+54h], eax
23636
                mov     eax, ecx
23637
                xor     ecx, 0FFFFFFFFh
23638
                mov     [esp+68h], ebx
23639
                mov     ebx, edx
23640
                xor     edx, 0FFFFFFFFh
23641
                or      ecx, esi
23642
                or      edx, eax
23643
                xor     ebp, ecx
23644
                mov     ecx, [esp]
23645
                rol     ebp, 9
23646
                xor     esi, edx
23647
                mov     edx, [esp+4]
23648
                rol     esi, 3
23649
                mov     [esp+7Ch], ebp
23650
                mov     ebp, ecx
23651
                xor     ecx, 0FFFFFFFFh
23652
                mov     [esp+4Ch], esi
23653
                mov     esi, edx
23654
                xor     edx, 0FFFFFFFFh
23655
                or      ecx, ebx
23656
                or      edx, ebp
23657
                xor     eax, ecx
23658
                xor     ebx, edx
23659
                ror     eax, 4
23660
                rol     ebx, 0Eh
23661
                mov     [esp+60h], eax
23662
                mov     [esp+74h], ebx
23663
                mov     esi, [esp+90h]
23664
                mov     ebp, [esp+94h]
23665
                mov     edx, [esi]
23666
                mov     eax, edx
23667
                add     edx, 10h
23668
                dec     eax
23669
                and     edx, 1Fh
23670
                and     eax, 1Fh
23671
                shl     edx, 5
23672
                mov     [esi], eax
23673
                add     edx, ebp
23674
                mov     ebx, eax
23675
                shl     eax, 5
23676
                add     ebx, 19h
23677
                add     eax, ebp
23678
                and     ebx, 1Fh
23679
                shl     ebx, 5
23680
                mov     [esp+98h], edx
23681
                add     ebx, ebp
23682
                mov     ecx, [ebx]
23683
                mov     edx, [eax+8]
23684
                mov     edi, [ebx+4]
23685
                mov     ebp, [eax+0Ch]
23686
                xor     ecx, edx
23687
                xor     edi, ebp
23688
                mov     [ebx], ecx
23689
                mov     [ebx+4], edi
23690
                mov     ecx, [ebx+8]
23691
                mov     edx, [eax+10h]
23692
                mov     edi, [ebx+0Ch]
23693
                mov     ebp, [eax+14h]
23694
                xor     ecx, edx
23695
                xor     edi, ebp
23696
                mov     [ebx+8], ecx
23697
                mov     [ebx+0Ch], edi
23698
                mov     ecx, [ebx+10h]
23699
                mov     edx, [eax+18h]
23700
                mov     edi, [ebx+14h]
23701
                mov     ebp, [eax+1Ch]
23702
                xor     ecx, edx
23703
                xor     edi, ebp
23704
                mov     [ebx+10h], ecx
23705
                mov     [ebx+14h], edi
23706
                mov     ecx, [ebx+18h]
23707
                mov     edx, [eax]
23708
                mov     edi, [ebx+1Ch]
23709
                mov     ebp, [eax+4]
23710
                xor     ecx, edx
23711
                xor     edi, ebp
23712
                mov     [ebx+18h], ecx
23713
                mov     [ebx+1Ch], edi
23714
                mov     ebx, [esp+8Ch]
23715
                mov     ecx, [eax]
23716
                mov     edx, [ebx]
23717
                mov     edi, [eax+4]
23718
                mov     ebp, [ebx+4]
23719
                xor     ecx, edx
23720
                xor     edi, ebp
23721
                mov     [eax], ecx
23722
                mov     [eax+4], edi
23723
                mov     ecx, [eax+8]
23724
                mov     edx, [ebx+8]
23725
                mov     edi, [eax+0Ch]
23726
                mov     ebp, [ebx+0Ch]
23727
                xor     ecx, edx
23728
                xor     edi, ebp
23729
                mov     [eax+8], ecx
23730
                mov     [eax+0Ch], edi
23731
                mov     ecx, [eax+10h]
23732
                mov     edx, [ebx+10h]
23733
                mov     edi, [eax+14h]
23734
                mov     ebp, [ebx+14h]
23735
                xor     ecx, edx
23736
                xor     edi, ebp
23737
                mov     [eax+10h], ecx
23738
                mov     [eax+14h], edi
23739
                mov     ecx, [eax+18h]
23740
                mov     edx, [ebx+18h]
23741
                mov     edi, [eax+1Ch]
23742
                mov     ebp, [ebx+1Ch]
23743
                xor     ecx, edx
23744
                xor     edi, ebp
23745
                mov     [eax+18h], ecx
23746
                mov     [eax+1Ch], edi
23747
                mov     eax, [esp+44h]
23748
                mov     ebx, [esp+48h]
23749
                mov     ecx, [esp+4Ch]
23750
                xor     eax, 1
23751
                mov     edx, [esp+50h]
23752
                xor     eax, ebx
23753
                mov     ebp, [esp+54h]
23754
                xor     eax, ebp
23755
                mov     esi, [esp+8Ch]
23756
                mov     [esp], eax
23757
                xor     ebx, ecx
23758
                mov     eax, [esp+58h]
23759
                xor     ecx, edx
23760
                mov     edi, [esp+5Ch]
23761
                xor     ebx, eax
23762
                xor     ecx, edi
23763
                xor     ebx, [esi]
23764
                xor     ecx, [esi+4]
23765
                mov     [esp+4], ebx
23766
                mov     [esp+8], ecx
23767
                xor     edx, ebp
23768
                mov     ecx, [esp+60h]
23769
                xor     ebp, eax
23770
                mov     ebx, [esp+64h]
23771
                xor     edx, ecx
23772
                xor     ebp, ebx
23773
                xor     edx, [esi+8]
23774
                xor     ebp, [esi+0Ch]
23775
                mov     [esp+0Ch], edx
23776
                mov     [esp+10h], ebp
23777
                xor     eax, edi
23778
                mov     edx, [esp+68h]
23779
                xor     edi, ecx
23780
                mov     ebp, [esp+6Ch]
23781
                xor     eax, edx
23782
                xor     edi, ebp
23783
                xor     eax, [esi+10h]
23784
                xor     edi, [esi+14h]
23785
                mov     [esp+14h], eax
23786
                mov     [esp+18h], edi
23787
                xor     ecx, ebx
23788
                mov     eax, [esp+70h]
23789
                xor     ebx, edx
23790
                mov     edi, [esp+74h]
23791
                xor     ecx, eax
23792
                xor     ebx, edi
23793
                xor     ecx, [esi+18h]
23794
                xor     ebx, [esi+1Ch]
23795
                add     esi, 20h 
23796
                mov     [esp+1Ch], ecx
23797
                mov     [esp+20h], ebx
23798
                mov     [esp+8Ch], esi
23799
                mov     esi, [esp+98h]
23800
                xor     edx, ebp
23801
                mov     ecx, [esp+78h]
23802
                xor     ebp, eax
23803
                mov     ebx, [esp+7Ch]
23804
                xor     edx, ecx
23805
                xor     ebp, ebx
23806
                xor     edx, [esi]
23807
                xor     ebp, [esi+4]
23808
                mov     [esp+24h], edx
23809
                mov     [esp+28h], ebp
23810
                xor     eax, edi
23811
                mov     edx, [esp+80h]
23812
                xor     edi, ecx
23813
                mov     ebp, [esp+84h]
23814
                xor     eax, edx
23815
                xor     edi, ebp
23816
                xor     eax, [esi+8]
23817
                xor     edi, [esi+0Ch]
23818
                mov     [esp+2Ch], eax
23819
                mov     [esp+30h], edi
23820
                xor     ecx, ebx
23821
                mov     eax, [esp+44h]
23822
                xor     ebx, edx
23823
                mov     edi, [esp+48h]
23824
                xor     ecx, eax
23825
                xor     ebx, edi
23826
                xor     ecx, [esi+10h]
23827
                xor     ebx, [esi+14h]
23828
                mov     [esp+34h], ecx
23829
                mov     [esp+38h], ebx
23830
                mov     ecx, [esp+4Ch]
23831
                xor     edx, ebp
23832
                mov     ebx, [esp+50h]
23833
                xor     ebp, eax
23834
                xor     edx, ecx
23835
                xor     ebp, ebx
23836
                xor     edx, [esi+18h]
23837
                xor     ebp, [esi+1Ch]
23838
                mov     [esp+3Ch], edx
23839
                mov     [esp+40h], ebp
23840
 
23841
                mov     edi, [esp+88h]
23842
                mov     eax, [esp]
23843
                mov     ebx, [esp+4]
23844
                mov     [edi], eax
23845
                mov     [edi+4], ebx
23846
                mov     ebp, [esp+8]
23847
                mov     esi, [esp+0Ch]
23848
                mov     [edi+8], ebp
23849
                mov     [edi+0Ch], esi
23850
                mov     eax, [esp+10h]
23851
                mov     ebx, [esp+14h]
23852
                mov     [edi+10h], eax
23853
                mov     [edi+14h], ebx
23854
                mov     ebp, [esp+18h]
23855
                mov     esi, [esp+1Ch]
23856
                mov     [edi+18h], ebp
23857
                mov     [edi+1Ch], esi
23858
                mov     eax, [esp+20h]
23859
                mov     ebx, [esp+24h]
23860
                mov     [edi+20h], eax
23861
                mov     [edi+24h], ebx
23862
                mov     ebp, [esp+28h]
23863
                mov     esi, [esp+2Ch]
23864
                mov     [edi+28h], ebp
23865
                mov     [edi+2Ch], esi
23866
                mov     eax, [esp+30h]
23867
                mov     ebx, [esp+34h]
23868
                mov     [edi+30h], eax
23869
                mov     [edi+34h], ebx
23870
                mov     ebp, [esp+38h]
23871
                mov     esi, [esp+3Ch]
23872
                mov     eax, [esp+40h]
23873
                mov     [edi+38h], ebp
23874
                mov     [edi+3Ch], esi
23875
                mov     [edi+40h], eax
23876
                mov     ebp, [esp+0A0h]
23877
                mov     esp, ebp
23878
                pop     ebp
23879
                pop     edi
23880
                pop     esi
23881
                pop     ebx
23882
end;
23883
{$ENDIF}
23884
 
23885
{$IFDEF THashBaseWhirlpool_asm}
23886
procedure THashBaseWhirlpool.DoTransform(Buffer: PLongArray); assembler;
23887
asm
23888
                push    ebx
23889
                push    esi
23890
                push    edi
23891
                mov     esi, edx
23892
                lea     edi, [eax].THashBaseWhirlpool.FDigest
23893
                push    ebp
23894
                mov     ebx, [eax].THashBaseWhirlpool.FTableC
23895
                mov     eax, [eax].THashBaseWhirlpool.FTableR
23896
 
23897
                mov     ebp, esp
23898
                add     esp, 0FFFFFEE8h
23899
                and     esp, 0FFFFFFE0h
23900
                mov     [esp+100h], eax
23901
                mov     [esp+104h], ebx
23902
                mov     [esp+10Ch], edi
23903
                mov     [esp+110h], esi
23904
                mov     [esp+114h], ebp
23905
                xor     ebp, ebp
23906
                mov     eax, [edi]
23907
                mov     ebx, [edi+4]
23908
                mov     [esp+40h], eax
23909
                mov     ecx, [esi]
23910
                mov     edx, [esi+4]
23911
                mov     [esp+44h], ebx
23912
                xor     eax, ecx
23913
                xor     ebx, edx
23914
                mov     [esp], eax
23915
                mov     [esp+4], ebx
23916
                mov     eax, [edi+8]
23917
                mov     ebx, [edi+0Ch]
23918
                mov     [esp+48h], eax
23919
                mov     ecx, [esi+8]
23920
                mov     edx, [esi+0Ch]
23921
                mov     [esp+4Ch], ebx
23922
                xor     eax, ecx
23923
                xor     ebx, edx
23924
                mov     [esp+8], eax
23925
                mov     [esp+0Ch], ebx
23926
                mov     eax, [edi+10h]
23927
                mov     ebx, [edi+14h]
23928
                mov     [esp+50h], eax
23929
                mov     ecx, [esi+10h]
23930
                mov     edx, [esi+14h]
23931
                mov     [esp+54h], ebx
23932
                xor     eax, ecx
23933
                xor     ebx, edx
23934
                mov     [esp+10h], eax
23935
                mov     [esp+14h], ebx
23936
                mov     eax, [edi+18h]
23937
                mov     ebx, [edi+1Ch]
23938
                mov     [esp+58h], eax
23939
                mov     ecx, [esi+18h]
23940
                mov     edx, [esi+1Ch]
23941
                mov     [esp+5Ch], ebx
23942
                xor     eax, ecx
23943
                xor     ebx, edx
23944
                mov     [esp+18h], eax
23945
                mov     [esp+1Ch], ebx
23946
                mov     eax, [edi+20h]
23947
                mov     ebx, [edi+24h]
23948
                mov     [esp+60h], eax
23949
                mov     ecx, [esi+20h]
23950
                mov     edx, [esi+24h]
23951
                mov     [esp+64h], ebx
23952
                xor     eax, ecx
23953
                xor     ebx, edx
23954
                mov     [esp+20h], eax
23955
                mov     [esp+24h], ebx
23956
                mov     eax, [edi+28h]
23957
                mov     ebx, [edi+2Ch]
23958
                mov     [esp+68h], eax
23959
                mov     ecx, [esi+28h]
23960
                mov     edx, [esi+2Ch]
23961
                mov     [esp+6Ch], ebx
23962
                xor     eax, ecx
23963
                xor     ebx, edx
23964
                mov     [esp+28h], eax
23965
                mov     [esp+2Ch], ebx
23966
                mov     eax, [edi+30h]
23967
                mov     ebx, [edi+34h]
23968
                mov     [esp+70h], eax
23969
                mov     ecx, [esi+30h]
23970
                mov     edx, [esi+34h]
23971
                mov     [esp+74h], ebx
23972
                xor     eax, ecx
23973
                xor     ebx, edx
23974
                mov     [esp+30h], eax
23975
                mov     [esp+34h], ebx
23976
                mov     eax, [edi+38h]
23977
                mov     ebx, [edi+3Ch]
23978
                mov     [esp+78h], eax
23979
                mov     ecx, [esi+38h]
23980
                mov     edx, [esi+3Ch]
23981
                mov     [esp+7Ch], ebx
23982
                xor     eax, ecx
23983
                xor     ebx, edx
23984
                mov     [esp+38h], eax
23985
                mov     [esp+3Ch], ebx
23986
 
23987
@@_loop_start:                          
23988
                mov     [esp+108h], ebp
23989
                mov     edi, [esp+100h]
23990
                mov     esi, [esp+104h]
23991
                mov     eax, [edi+ebp]
23992
                mov     ebx, [edi+ebp+4]
23993
                mov     ecx, [esp+40h]
23994
                mov     edx, [esp+78h]
23995
                and     ecx, 0FFh
23996
                shr     edx, 5
23997
                mov     edi, [esi+ecx*8]
23998
                and     edx, 7F8h
23999
                mov     ebp, [esi+ecx*8+4]
24000
                xor     eax, edi
24001
                mov     ecx, [esp+70h]
24002
                mov     edi, [esi+edx+800h]
24003
                xor     ebx, ebp
24004
                shr     ecx, 0Dh
24005
                mov     ebp, [esi+edx+804h]
24006
                and     ecx, 7F8h
24007
                xor     eax, edi
24008
                mov     edx, [esp+68h]
24009
                xor     ebx, ebp
24010
                shr     edx, 18h
24011
                mov     edi, [esi+ecx+1000h]
24012
                mov     ebp, [esi+ecx+1004h]
24013
                xor     eax, edi
24014
                mov     edi, [esi+edx*8+1800h]
24015
                xor     ebx, ebp
24016
                mov     ebp, [esi+edx*8+1804h]
24017
                xor     eax, edi
24018
                xor     ebx, ebp
24019
                mov     ecx, [esp+64h]
24020
                mov     edx, [esp+5Ch]
24021
                and     ecx, 0FFh
24022
                shr     edx, 5
24023
                mov     edi, [esi+ecx*8+2000h]
24024
                and     edx, 7F8h
24025
                mov     ebp, [esi+ecx*8+2004h]
24026
                xor     eax, edi
24027
                mov     ecx, [esp+54h]
24028
                mov     edi, [esi+edx+2800h]
24029
                xor     ebx, ebp
24030
                shr     ecx, 0Dh
24031
                mov     ebp, [esi+edx+2804h]
24032
                and     ecx, 7F8h
24033
                xor     eax, edi
24034
                mov     edx, [esp+4Ch]
24035
                xor     ebx, ebp
24036
                shr     edx, 18h
24037
                mov     edi, [esi+ecx+3000h]
24038
                mov     ebp, [esi+ecx+3004h]
24039
                xor     eax, edi
24040
                mov     edi, [esi+edx*8+3800h]
24041
                xor     ebx, ebp
24042
                mov     ebp, [esi+edx*8+3804h]
24043
                xor     eax, edi
24044
                xor     ebx, ebp
24045
                mov     [esp+80h], eax
24046
                mov     [esp+84h], ebx
24047
                mov     ecx, [esp+48h]
24048
                mov     edx, [esp+40h]
24049
                and     ecx, 0FFh
24050
                shr     edx, 5
24051
                mov     eax, [esi+ecx*8]
24052
                and     edx, 7F8h
24053
                mov     ebx, [esi+ecx*8+4]
24054
                mov     ecx, [esp+78h]
24055
                mov     edi, [esi+edx+800h]
24056
                shr     ecx, 0Dh
24057
                mov     ebp, [esi+edx+804h]
24058
                and     ecx, 7F8h
24059
                mov     edx, [esp+70h]
24060
                xor     eax, edi
24061
                xor     ebx, ebp
24062
                shr     edx, 18h
24063
                mov     edi, [esi+ecx+1000h]
24064
                mov     ebp, [esi+ecx+1004h]
24065
                mov     ecx, [esp+6Ch]
24066
                xor     eax, edi
24067
                mov     edi, [esi+edx*8+1800h]
24068
                and     ecx, 0FFh
24069
                xor     ebx, ebp
24070
                mov     ebp, [esi+edx*8+1804h]
24071
                mov     edx, [esp+64h]
24072
                xor     eax, edi
24073
                xor     ebx, ebp
24074
                shr     edx, 5
24075
                mov     edi, [esi+ecx*8+2000h]
24076
                mov     ebp, [esi+ecx*8+2004h]
24077
                and     edx, 7F8h
24078
                mov     ecx, [esp+5Ch]
24079
                xor     eax, edi
24080
                shr     ecx, 0Dh
24081
                xor     ebx, ebp
24082
                mov     edi, [esi+edx+2800h]
24083
                and     ecx, 7F8h
24084
                mov     ebp, [esi+edx+2804h]
24085
                xor     eax, edi
24086
                mov     edx, [esp+54h]
24087
                xor     ebx, ebp
24088
                shr     edx, 18h
24089
                mov     edi, [esi+ecx+3000h]
24090
                mov     ebp, [esi+ecx+3004h]
24091
                xor     eax, edi
24092
                mov     edi, [esi+edx*8+3800h]
24093
                xor     ebx, ebp
24094
                mov     ebp, [esi+edx*8+3804h]
24095
                xor     eax, edi
24096
                xor     ebx, ebp
24097
                mov     [esp+88h], eax
24098
                mov     [esp+8Ch], ebx
24099
                mov     ecx, [esp+50h]
24100
                mov     edx, [esp+48h]
24101
                and     ecx, 0FFh
24102
                shr     edx, 5
24103
                mov     eax, [esi+ecx*8]
24104
                and     edx, 7F8h
24105
                mov     ebx, [esi+ecx*8+4]
24106
                mov     ecx, [esp+40h]
24107
                mov     edi, [esi+edx+800h]
24108
                shr     ecx, 0Dh
24109
                mov     ebp, [esi+edx+804h]
24110
                and     ecx, 7F8h
24111
                mov     edx, [esp+78h]
24112
                xor     eax, edi
24113
                xor     ebx, ebp
24114
                shr     edx, 18h
24115
                mov     edi, [esi+ecx+1000h]
24116
                mov     ebp, [esi+ecx+1004h]
24117
                mov     ecx, [esp+74h]
24118
                xor     eax, edi
24119
                mov     edi, [esi+edx*8+1800h]
24120
                and     ecx, 0FFh
24121
                xor     ebx, ebp
24122
                mov     ebp, [esi+edx*8+1804h]
24123
                mov     edx, [esp+6Ch]
24124
                xor     eax, edi
24125
                xor     ebx, ebp
24126
                shr     edx, 5
24127
                mov     edi, [esi+ecx*8+2000h]
24128
                mov     ebp, [esi+ecx*8+2004h]
24129
                and     edx, 7F8h
24130
                mov     ecx, [esp+64h]
24131
                xor     eax, edi
24132
                shr     ecx, 0Dh
24133
                xor     ebx, ebp
24134
                mov     edi, [esi+edx+2800h]
24135
                and     ecx, 7F8h
24136
                mov     ebp, [esi+edx+2804h]
24137
                xor     eax, edi
24138
                mov     edx, [esp+5Ch]
24139
                xor     ebx, ebp
24140
                shr     edx, 18h
24141
                mov     edi, [esi+ecx+3000h]
24142
                mov     ebp, [esi+ecx+3004h]
24143
                xor     eax, edi
24144
                mov     edi, [esi+edx*8+3800h]
24145
                xor     ebx, ebp
24146
                mov     ebp, [esi+edx*8+3804h]
24147
                xor     eax, edi
24148
                xor     ebx, ebp
24149
                mov     [esp+90h], eax
24150
                mov     [esp+94h], ebx
24151
                mov     ecx, [esp+58h]
24152
                mov     edx, [esp+50h]
24153
                and     ecx, 0FFh
24154
                shr     edx, 5
24155
                mov     eax, [esi+ecx*8]
24156
                and     edx, 7F8h
24157
                mov     ebx, [esi+ecx*8+4]
24158
                mov     ecx, [esp+48h]
24159
                mov     edi, [esi+edx+800h]
24160
                shr     ecx, 0Dh
24161
                mov     ebp, [esi+edx+804h]
24162
                and     ecx, 7F8h
24163
                mov     edx, [esp+40h]
24164
                xor     eax, edi
24165
                xor     ebx, ebp
24166
                shr     edx, 18h
24167
                mov     edi, [esi+ecx+1000h]
24168
                mov     ebp, [esi+ecx+1004h]
24169
                mov     ecx, [esp+7Ch]
24170
                xor     eax, edi
24171
                mov     edi, [esi+edx*8+1800h]
24172
                and     ecx, 0FFh
24173
                xor     ebx, ebp
24174
                mov     ebp, [esi+edx*8+1804h]
24175
                mov     edx, [esp+74h]
24176
                xor     eax, edi
24177
                xor     ebx, ebp
24178
                shr     edx, 5
24179
                mov     edi, [esi+ecx*8+2000h]
24180
                mov     ebp, [esi+ecx*8+2004h]
24181
                and     edx, 7F8h
24182
                mov     ecx, [esp+6Ch]
24183
                xor     eax, edi
24184
                shr     ecx, 0Dh
24185
                xor     ebx, ebp
24186
                mov     edi, [esi+edx+2800h]
24187
                and     ecx, 7F8h
24188
                mov     ebp, [esi+edx+2804h]
24189
                xor     eax, edi
24190
                mov     edx, [esp+64h]
24191
                xor     ebx, ebp
24192
                shr     edx, 18h
24193
                mov     edi, [esi+ecx+3000h]
24194
                mov     ebp, [esi+ecx+3004h]
24195
                xor     eax, edi
24196
                mov     edi, [esi+edx*8+3800h]
24197
                xor     ebx, ebp
24198
                mov     ebp, [esi+edx*8+3804h]
24199
                xor     eax, edi
24200
                xor     ebx, ebp
24201
                mov     [esp+98h], eax
24202
                mov     [esp+9Ch], ebx
24203
                mov     ecx, [esp+60h]
24204
                mov     edx, [esp+58h]
24205
                and     ecx, 0FFh
24206
                shr     edx, 5
24207
                mov     eax, [esi+ecx*8]
24208
                and     edx, 7F8h
24209
                mov     ebx, [esi+ecx*8+4]
24210
                mov     ecx, [esp+50h]
24211
                mov     edi, [esi+edx+800h]
24212
                shr     ecx, 0Dh
24213
                mov     ebp, [esi+edx+804h]
24214
                and     ecx, 7F8h
24215
                mov     edx, [esp+48h]
24216
                xor     eax, edi
24217
                xor     ebx, ebp
24218
                shr     edx, 18h
24219
                mov     edi, [esi+ecx+1000h]
24220
                mov     ebp, [esi+ecx+1004h]
24221
                mov     ecx, [esp+44h]
24222
                xor     eax, edi
24223
                mov     edi, [esi+edx*8+1800h]
24224
                and     ecx, 0FFh
24225
                xor     ebx, ebp
24226
                mov     ebp, [esi+edx*8+1804h]
24227
                mov     edx, [esp+7Ch]
24228
                xor     eax, edi
24229
                xor     ebx, ebp
24230
                shr     edx, 5
24231
                mov     edi, [esi+ecx*8+2000h]
24232
                mov     ebp, [esi+ecx*8+2004h]
24233
                and     edx, 7F8h
24234
                mov     ecx, [esp+74h]
24235
                xor     eax, edi
24236
                shr     ecx, 0Dh
24237
                xor     ebx, ebp
24238
                mov     edi, [esi+edx+2800h]
24239
                and     ecx, 7F8h
24240
                mov     ebp, [esi+edx+2804h]
24241
                xor     eax, edi
24242
                mov     edx, [esp+6Ch]
24243
                xor     ebx, ebp
24244
                shr     edx, 18h
24245
                mov     edi, [esi+ecx+3000h]
24246
                mov     ebp, [esi+ecx+3004h]
24247
                xor     eax, edi
24248
                mov     edi, [esi+edx*8+3800h]
24249
                xor     ebx, ebp
24250
                mov     ebp, [esi+edx*8+3804h]
24251
                xor     eax, edi
24252
                xor     ebx, ebp
24253
                mov     [esp+0A0h], eax
24254
                mov     [esp+0A4h], ebx
24255
                mov     ecx, [esp+68h]
24256
                mov     edx, [esp+60h]
24257
                and     ecx, 0FFh
24258
                shr     edx, 5
24259
                mov     eax, [esi+ecx*8]
24260
                and     edx, 7F8h
24261
                mov     ebx, [esi+ecx*8+4]
24262
                mov     ecx, [esp+58h]
24263
                mov     edi, [esi+edx+800h]
24264
                shr     ecx, 0Dh
24265
                mov     ebp, [esi+edx+804h]
24266
                and     ecx, 7F8h
24267
                mov     edx, [esp+50h]
24268
                xor     eax, edi
24269
                xor     ebx, ebp
24270
                shr     edx, 18h
24271
                mov     edi, [esi+ecx+1000h]
24272
                mov     ebp, [esi+ecx+1004h]
24273
                mov     ecx, [esp+4Ch]
24274
                xor     eax, edi
24275
                mov     edi, [esi+edx*8+1800h]
24276
                and     ecx, 0FFh
24277
                xor     ebx, ebp
24278
                mov     ebp, [esi+edx*8+1804h]
24279
                mov     edx, [esp+44h]
24280
                xor     eax, edi
24281
                xor     ebx, ebp
24282
                shr     edx, 5
24283
                mov     edi, [esi+ecx*8+2000h]
24284
                mov     ebp, [esi+ecx*8+2004h]
24285
                and     edx, 7F8h
24286
                mov     ecx, [esp+7Ch]
24287
                xor     eax, edi
24288
                shr     ecx, 0Dh
24289
                xor     ebx, ebp
24290
                mov     edi, [esi+edx+2800h]
24291
                and     ecx, 7F8h
24292
                mov     ebp, [esi+edx+2804h]
24293
                xor     eax, edi
24294
                mov     edx, [esp+74h]
24295
                xor     ebx, ebp
24296
                shr     edx, 18h
24297
                mov     edi, [esi+ecx+3000h]
24298
                mov     ebp, [esi+ecx+3004h]
24299
                xor     eax, edi
24300
                mov     edi, [esi+edx*8+3800h]
24301
                xor     ebx, ebp
24302
                mov     ebp, [esi+edx*8+3804h]
24303
                xor     eax, edi
24304
                xor     ebx, ebp
24305
                mov     [esp+0A8h], eax
24306
                mov     [esp+0ACh], ebx
24307
                mov     ecx, [esp+70h]
24308
                mov     edx, [esp+68h]
24309
                and     ecx, 0FFh
24310
                shr     edx, 5
24311
                mov     eax, [esi+ecx*8]
24312
                and     edx, 7F8h
24313
                mov     ebx, [esi+ecx*8+4]
24314
                mov     ecx, [esp+60h]
24315
                mov     edi, [esi+edx+800h]
24316
                shr     ecx, 0Dh
24317
                mov     ebp, [esi+edx+804h]
24318
                and     ecx, 7F8h
24319
                mov     edx, [esp+58h]
24320
                xor     eax, edi
24321
                xor     ebx, ebp
24322
                shr     edx, 18h
24323
                mov     edi, [esi+ecx+1000h]
24324
                mov     ebp, [esi+ecx+1004h]
24325
                mov     ecx, [esp+54h]
24326
                xor     eax, edi
24327
                mov     edi, [esi+edx*8+1800h]
24328
                and     ecx, 0FFh
24329
                xor     ebx, ebp
24330
                mov     ebp, [esi+edx*8+1804h]
24331
                mov     edx, [esp+4Ch]
24332
                xor     eax, edi
24333
                xor     ebx, ebp
24334
                shr     edx, 5
24335
                mov     edi, [esi+ecx*8+2000h]
24336
                mov     ebp, [esi+ecx*8+2004h]
24337
                and     edx, 7F8h
24338
                mov     ecx, [esp+44h]
24339
                xor     eax, edi
24340
                shr     ecx, 0Dh
24341
                xor     ebx, ebp
24342
                mov     edi, [esi+edx+2800h]
24343
                and     ecx, 7F8h
24344
                mov     ebp, [esi+edx+2804h]
24345
                xor     eax, edi
24346
                mov     edx, [esp+7Ch]
24347
                xor     ebx, ebp
24348
                shr     edx, 18h
24349
                mov     edi, [esi+ecx+3000h]
24350
                mov     ebp, [esi+ecx+3004h]
24351
                xor     eax, edi
24352
                mov     edi, [esi+edx*8+3800h]
24353
                xor     ebx, ebp
24354
                mov     ebp, [esi+edx*8+3804h]
24355
                xor     eax, edi
24356
                xor     ebx, ebp
24357
                mov     [esp+0B0h], eax
24358
                mov     [esp+0B4h], ebx
24359
                mov     ecx, [esp+78h]
24360
                mov     edx, [esp+70h]
24361
                and     ecx, 0FFh
24362
                shr     edx, 5
24363
                mov     eax, [esi+ecx*8]
24364
                and     edx, 7F8h
24365
                mov     ebx, [esi+ecx*8+4]
24366
                mov     ecx, [esp+68h]
24367
                mov     edi, [esi+edx+800h]
24368
                shr     ecx, 0Dh
24369
                mov     ebp, [esi+edx+804h]
24370
                and     ecx, 7F8h
24371
                mov     edx, [esp+60h]
24372
                xor     eax, edi
24373
                xor     ebx, ebp
24374
                shr     edx, 18h
24375
                mov     edi, [esi+ecx+1000h]
24376
                mov     ebp, [esi+ecx+1004h]
24377
                mov     ecx, [esp+5Ch]
24378
                xor     eax, edi
24379
                mov     edi, [esi+edx*8+1800h]
24380
                and     ecx, 0FFh
24381
                xor     ebx, ebp
24382
                mov     ebp, [esi+edx*8+1804h]
24383
                mov     edx, [esp+54h]
24384
                xor     eax, edi
24385
                xor     ebx, ebp
24386
                shr     edx, 5
24387
                mov     edi, [esi+ecx*8+2000h]
24388
                mov     ebp, [esi+ecx*8+2004h]
24389
                and     edx, 7F8h
24390
                mov     ecx, [esp+4Ch]
24391
                xor     eax, edi
24392
                shr     ecx, 0Dh
24393
                xor     ebx, ebp
24394
                mov     edi, [esi+edx+2800h]
24395
                and     ecx, 7F8h
24396
                mov     ebp, [esi+edx+2804h]
24397
                xor     eax, edi
24398
                mov     edx, [esp+44h]
24399
                xor     ebx, ebp
24400
                shr     edx, 18h
24401
                mov     edi, [esi+ecx+3000h]
24402
                mov     ebp, [esi+ecx+3004h]
24403
                xor     eax, edi
24404
                mov     edi, [esi+edx*8+3800h]
24405
                xor     ebx, ebp
24406
                mov     ebp, [esi+edx*8+3804h]
24407
                xor     eax, edi
24408
                xor     ebx, ebp
24409
                mov     [esp+0B8h], eax
24410
                mov     [esp+0BCh], ebx
24411
                mov     eax, [esp+80h]
24412
                mov     ebx, [esp+84h]
24413
                mov     ecx, [esp]
24414
                mov     edx, [esp+38h]
24415
                and     ecx, 0FFh
24416
                shr     edx, 5
24417
                mov     edi, [esi+ecx*8]
24418
                and     edx, 7F8h
24419
                mov     ebp, [esi+ecx*8+4]
24420
                xor     eax, edi
24421
                mov     ecx, [esp+30h]
24422
                mov     edi, [esi+edx+800h]
24423
                xor     ebx, ebp
24424
                shr     ecx, 0Dh
24425
                mov     ebp, [esi+edx+804h]
24426
                and     ecx, 7F8h
24427
                xor     eax, edi
24428
                mov     edx, [esp+28h]
24429
                xor     ebx, ebp
24430
                shr     edx, 18h
24431
                mov     edi, [esi+ecx+1000h]
24432
                mov     ebp, [esi+ecx+1004h]
24433
                xor     eax, edi
24434
                mov     edi, [esi+edx*8+1800h]
24435
                xor     ebx, ebp
24436
                mov     ebp, [esi+edx*8+1804h]
24437
                xor     eax, edi
24438
                xor     ebx, ebp
24439
                mov     ecx, [esp+24h]
24440
                mov     edx, [esp+1Ch]
24441
                and     ecx, 0FFh
24442
                shr     edx, 5
24443
                mov     edi, [esi+ecx*8+2000h]
24444
                and     edx, 7F8h
24445
                mov     ebp, [esi+ecx*8+2004h]
24446
                xor     eax, edi
24447
                mov     ecx, [esp+14h]
24448
                mov     edi, [esi+edx+2800h]
24449
                xor     ebx, ebp
24450
                shr     ecx, 0Dh
24451
                mov     ebp, [esi+edx+2804h]
24452
                and     ecx, 7F8h
24453
                xor     eax, edi
24454
                mov     edx, [esp+0Ch]
24455
                xor     ebx, ebp
24456
                shr     edx, 18h
24457
                mov     edi, [esi+ecx+3000h]
24458
                mov     ebp, [esi+ecx+3004h]
24459
                xor     eax, edi
24460
                mov     edi, [esi+edx*8+3800h]
24461
                xor     ebx, ebp
24462
                mov     ebp, [esi+edx*8+3804h]
24463
                xor     eax, edi
24464
                xor     ebx, ebp
24465
                mov     [esp+0C0h], eax
24466
                mov     [esp+0C4h], ebx
24467
                mov     eax, [esp+88h]
24468
                mov     ebx, [esp+8Ch]
24469
                mov     ecx, [esp+8]
24470
                mov     edx, [esp]
24471
                and     ecx, 0FFh
24472
                shr     edx, 5
24473
                mov     edi, [esi+ecx*8]
24474
                and     edx, 7F8h
24475
                mov     ebp, [esi+ecx*8+4]
24476
                xor     eax, edi
24477
                mov     ecx, [esp+38h]
24478
                mov     edi, [esi+edx+800h]
24479
                xor     ebx, ebp
24480
                shr     ecx, 0Dh
24481
                mov     ebp, [esi+edx+804h]
24482
                and     ecx, 7F8h
24483
                xor     eax, edi
24484
                mov     edx, [esp+30h]
24485
                xor     ebx, ebp
24486
                shr     edx, 18h
24487
                mov     edi, [esi+ecx+1000h]
24488
                mov     ebp, [esi+ecx+1004h]
24489
                xor     eax, edi
24490
                mov     edi, [esi+edx*8+1800h]
24491
                xor     ebx, ebp
24492
                mov     ebp, [esi+edx*8+1804h]
24493
                xor     eax, edi
24494
                xor     ebx, ebp
24495
                mov     ecx, [esp+2Ch]
24496
                mov     edx, [esp+24h]
24497
                and     ecx, 0FFh
24498
                shr     edx, 5
24499
                mov     edi, [esi+ecx*8+2000h]
24500
                and     edx, 7F8h
24501
                mov     ebp, [esi+ecx*8+2004h]
24502
                xor     eax, edi
24503
                mov     ecx, [esp+1Ch]
24504
                mov     edi, [esi+edx+2800h]
24505
                xor     ebx, ebp
24506
                shr     ecx, 0Dh
24507
                mov     ebp, [esi+edx+2804h]
24508
                and     ecx, 7F8h
24509
                xor     eax, edi
24510
                mov     edx, [esp+14h]
24511
                xor     ebx, ebp
24512
                shr     edx, 18h
24513
                mov     edi, [esi+ecx+3000h]
24514
                mov     ebp, [esi+ecx+3004h]
24515
                xor     eax, edi
24516
                mov     edi, [esi+edx*8+3800h]
24517
                xor     ebx, ebp
24518
                mov     ebp, [esi+edx*8+3804h]
24519
                xor     eax, edi
24520
                xor     ebx, ebp
24521
                mov     [esp+0C8h], eax
24522
                mov     [esp+0CCh], ebx
24523
                mov     eax, [esp+90h]
24524
                mov     ebx, [esp+94h]
24525
                mov     ecx, [esp+10h]
24526
                mov     edx, [esp+8]
24527
                and     ecx, 0FFh
24528
                shr     edx, 5
24529
                mov     edi, [esi+ecx*8]
24530
                and     edx, 7F8h
24531
                mov     ebp, [esi+ecx*8+4]
24532
                xor     eax, edi
24533
                mov     ecx, [esp]
24534
                mov     edi, [esi+edx+800h]
24535
                xor     ebx, ebp
24536
                shr     ecx, 0Dh
24537
                mov     ebp, [esi+edx+804h]
24538
                and     ecx, 7F8h
24539
                xor     eax, edi
24540
                mov     edx, [esp+38h]
24541
                xor     ebx, ebp
24542
                shr     edx, 18h
24543
                mov     edi, [esi+ecx+1000h]
24544
                mov     ebp, [esi+ecx+1004h]
24545
                xor     eax, edi
24546
                mov     edi, [esi+edx*8+1800h]
24547
                xor     ebx, ebp
24548
                mov     ebp, [esi+edx*8+1804h]
24549
                xor     eax, edi
24550
                xor     ebx, ebp
24551
                mov     ecx, [esp+34h]
24552
                mov     edx, [esp+2Ch]
24553
                and     ecx, 0FFh
24554
                shr     edx, 5
24555
                mov     edi, [esi+ecx*8+2000h]
24556
                and     edx, 7F8h
24557
                mov     ebp, [esi+ecx*8+2004h]
24558
                xor     eax, edi
24559
                mov     ecx, [esp+24h]
24560
                mov     edi, [esi+edx+2800h]
24561
                xor     ebx, ebp
24562
                shr     ecx, 0Dh
24563
                mov     ebp, [esi+edx+2804h]
24564
                and     ecx, 7F8h
24565
                xor     eax, edi
24566
                mov     edx, [esp+1Ch]
24567
                xor     ebx, ebp
24568
                shr     edx, 18h
24569
                mov     edi, [esi+ecx+3000h]
24570
                mov     ebp, [esi+ecx+3004h]
24571
                xor     eax, edi
24572
                mov     edi, [esi+edx*8+3800h]
24573
                xor     ebx, ebp
24574
                mov     ebp, [esi+edx*8+3804h]
24575
                xor     eax, edi
24576
                xor     ebx, ebp
24577
                mov     [esp+0D0h], eax
24578
                mov     [esp+0D4h], ebx
24579
                mov     eax, [esp+98h]
24580
                mov     ebx, [esp+9Ch]
24581
                mov     ecx, [esp+18h]
24582
                mov     edx, [esp+10h]
24583
                and     ecx, 0FFh
24584
                shr     edx, 5
24585
                mov     edi, [esi+ecx*8]
24586
                and     edx, 7F8h
24587
                mov     ebp, [esi+ecx*8+4]
24588
                xor     eax, edi
24589
                mov     ecx, [esp+8]
24590
                mov     edi, [esi+edx+800h]
24591
                xor     ebx, ebp
24592
                shr     ecx, 0Dh
24593
                mov     ebp, [esi+edx+804h]
24594
                and     ecx, 7F8h
24595
                xor     eax, edi
24596
                mov     edx, [esp]
24597
                xor     ebx, ebp
24598
                shr     edx, 18h
24599
                mov     edi, [esi+ecx+1000h]
24600
                mov     ebp, [esi+ecx+1004h]
24601
                xor     eax, edi
24602
                mov     edi, [esi+edx*8+1800h]
24603
                xor     ebx, ebp
24604
                mov     ebp, [esi+edx*8+1804h]
24605
                xor     eax, edi
24606
                xor     ebx, ebp
24607
                mov     ecx, [esp+3Ch]
24608
                mov     edx, [esp+34h]
24609
                and     ecx, 0FFh
24610
                shr     edx, 5
24611
                mov     edi, [esi+ecx*8+2000h]
24612
                and     edx, 7F8h
24613
                mov     ebp, [esi+ecx*8+2004h]
24614
                xor     eax, edi
24615
                mov     ecx, [esp+2Ch]
24616
                mov     edi, [esi+edx+2800h]
24617
                xor     ebx, ebp
24618
                shr     ecx, 0Dh
24619
                mov     ebp, [esi+edx+2804h]
24620
                and     ecx, 7F8h
24621
                xor     eax, edi
24622
                mov     edx, [esp+24h]
24623
                xor     ebx, ebp
24624
                shr     edx, 18h
24625
                mov     edi, [esi+ecx+3000h]
24626
                mov     ebp, [esi+ecx+3004h]
24627
                xor     eax, edi
24628
                mov     edi, [esi+edx*8+3800h]
24629
                xor     ebx, ebp
24630
                mov     ebp, [esi+edx*8+3804h]
24631
                xor     eax, edi
24632
                xor     ebx, ebp
24633
                mov     [esp+0D8h], eax
24634
                mov     [esp+0DCh], ebx
24635
                mov     eax, [esp+0A0h]
24636
                mov     ebx, [esp+0A4h]
24637
                mov     ecx, [esp+20h]
24638
                mov     edx, [esp+18h]
24639
                and     ecx, 0FFh
24640
                shr     edx, 5
24641
                mov     edi, [esi+ecx*8]
24642
                and     edx, 7F8h
24643
                mov     ebp, [esi+ecx*8+4]
24644
                xor     eax, edi
24645
                mov     ecx, [esp+10h]
24646
                mov     edi, [esi+edx+800h]
24647
                xor     ebx, ebp
24648
                shr     ecx, 0Dh
24649
                mov     ebp, [esi+edx+804h]
24650
                and     ecx, 7F8h
24651
                xor     eax, edi
24652
                mov     edx, [esp+8]
24653
                xor     ebx, ebp
24654
                shr     edx, 18h
24655
                mov     edi, [esi+ecx+1000h]
24656
                mov     ebp, [esi+ecx+1004h]
24657
                xor     eax, edi
24658
                mov     edi, [esi+edx*8+1800h]
24659
                xor     ebx, ebp
24660
                mov     ebp, [esi+edx*8+1804h]
24661
                xor     eax, edi
24662
                xor     ebx, ebp
24663
                mov     ecx, [esp+4]
24664
                mov     edx, [esp+3Ch]
24665
                and     ecx, 0FFh
24666
                shr     edx, 5
24667
                mov     edi, [esi+ecx*8+2000h]
24668
                and     edx, 7F8h
24669
                mov     ebp, [esi+ecx*8+2004h]
24670
                xor     eax, edi
24671
                mov     ecx, [esp+34h]
24672
                mov     edi, [esi+edx+2800h]
24673
                xor     ebx, ebp
24674
                shr     ecx, 0Dh
24675
                mov     ebp, [esi+edx+2804h]
24676
                and     ecx, 7F8h
24677
                xor     eax, edi
24678
                mov     edx, [esp+2Ch]
24679
                xor     ebx, ebp
24680
                shr     edx, 18h
24681
                mov     edi, [esi+ecx+3000h]
24682
                mov     ebp, [esi+ecx+3004h]
24683
                xor     eax, edi
24684
                mov     edi, [esi+edx*8+3800h]
24685
                xor     ebx, ebp
24686
                mov     ebp, [esi+edx*8+3804h]
24687
                xor     eax, edi
24688
                xor     ebx, ebp
24689
                mov     [esp+0E0h], eax
24690
                mov     [esp+0E4h], ebx
24691
                mov     eax, [esp+0A8h]
24692
                mov     ebx, [esp+0ACh]
24693
                mov     ecx, [esp+28h]
24694
                mov     edx, [esp+20h]
24695
                and     ecx, 0FFh
24696
                shr     edx, 5
24697
                mov     edi, [esi+ecx*8]
24698
                and     edx, 7F8h
24699
                mov     ebp, [esi+ecx*8+4]
24700
                xor     eax, edi
24701
                mov     ecx, [esp+18h]
24702
                mov     edi, [esi+edx+800h]
24703
                xor     ebx, ebp
24704
                shr     ecx, 0Dh
24705
                mov     ebp, [esi+edx+804h]
24706
                and     ecx, 7F8h
24707
                xor     eax, edi
24708
                mov     edx, [esp+10h]
24709
                xor     ebx, ebp
24710
                shr     edx, 18h
24711
                mov     edi, [esi+ecx+1000h]
24712
                mov     ebp, [esi+ecx+1004h]
24713
                xor     eax, edi
24714
                mov     edi, [esi+edx*8+1800h]
24715
                xor     ebx, ebp
24716
                mov     ebp, [esi+edx*8+1804h]
24717
                xor     eax, edi
24718
                xor     ebx, ebp
24719
                mov     ecx, [esp+0Ch]
24720
                mov     edx, [esp+4]
24721
                and     ecx, 0FFh
24722
                shr     edx, 5
24723
                mov     edi, [esi+ecx*8+2000h]
24724
                and     edx, 7F8h
24725
                mov     ebp, [esi+ecx*8+2004h]
24726
                xor     eax, edi
24727
                mov     ecx, [esp+3Ch]
24728
                mov     edi, [esi+edx+2800h]
24729
                xor     ebx, ebp
24730
                shr     ecx, 0Dh
24731
                mov     ebp, [esi+edx+2804h]
24732
                and     ecx, 7F8h
24733
                xor     eax, edi
24734
                mov     edx, [esp+34h]
24735
                xor     ebx, ebp
24736
                shr     edx, 18h
24737
                mov     edi, [esi+ecx+3000h]
24738
                mov     ebp, [esi+ecx+3004h]
24739
                xor     eax, edi
24740
                mov     edi, [esi+edx*8+3800h]
24741
                xor     ebx, ebp
24742
                mov     ebp, [esi+edx*8+3804h]
24743
                xor     eax, edi
24744
                xor     ebx, ebp
24745
                mov     [esp+0E8h], eax
24746
                mov     [esp+0ECh], ebx
24747
                mov     eax, [esp+0B0h]
24748
                mov     ebx, [esp+0B4h]
24749
                mov     ecx, [esp+30h]
24750
                mov     edx, [esp+28h]
24751
                and     ecx, 0FFh
24752
                shr     edx, 5
24753
                mov     edi, [esi+ecx*8]
24754
                and     edx, 7F8h
24755
                mov     ebp, [esi+ecx*8+4]
24756
                xor     eax, edi
24757
                mov     ecx, [esp+20h]
24758
                mov     edi, [esi+edx+800h]
24759
                xor     ebx, ebp
24760
                shr     ecx, 0Dh
24761
                mov     ebp, [esi+edx+804h]
24762
                and     ecx, 7F8h
24763
                xor     eax, edi
24764
                mov     edx, [esp+18h]
24765
                xor     ebx, ebp
24766
                shr     edx, 18h
24767
                mov     edi, [esi+ecx+1000h]
24768
                mov     ebp, [esi+ecx+1004h]
24769
                xor     eax, edi
24770
                mov     edi, [esi+edx*8+1800h]
24771
                xor     ebx, ebp
24772
                mov     ebp, [esi+edx*8+1804h]
24773
                xor     eax, edi
24774
                xor     ebx, ebp
24775
                mov     ecx, [esp+14h]
24776
                mov     edx, [esp+0Ch]
24777
                and     ecx, 0FFh
24778
                shr     edx, 5
24779
                mov     edi, [esi+ecx*8+2000h]
24780
                and     edx, 7F8h
24781
                mov     ebp, [esi+ecx*8+2004h]
24782
                xor     eax, edi
24783
                mov     ecx, [esp+4]
24784
                mov     edi, [esi+edx+2800h]
24785
                xor     ebx, ebp
24786
                shr     ecx, 0Dh
24787
                mov     ebp, [esi+edx+2804h]
24788
                and     ecx, 7F8h
24789
                xor     eax, edi
24790
                mov     edx, [esp+3Ch]
24791
                xor     ebx, ebp
24792
                shr     edx, 18h
24793
                mov     edi, [esi+ecx+3000h]
24794
                mov     ebp, [esi+ecx+3004h]
24795
                xor     eax, edi
24796
                mov     edi, [esi+edx*8+3800h]
24797
                xor     ebx, ebp
24798
                mov     ebp, [esi+edx*8+3804h]
24799
                xor     eax, edi
24800
                xor     ebx, ebp
24801
                mov     [esp+0F0h], eax
24802
                mov     [esp+0F4h], ebx
24803
                mov     eax, [esp+0B8h]
24804
                mov     ebx, [esp+0BCh]
24805
                mov     ecx, [esp+38h]
24806
                mov     edx, [esp+30h]
24807
                and     ecx, 0FFh
24808
                shr     edx, 5
24809
                mov     edi, [esi+ecx*8]
24810
                and     edx, 7F8h
24811
                mov     ebp, [esi+ecx*8+4]
24812
                xor     eax, edi
24813
                mov     ecx, [esp+28h]
24814
                mov     edi, [esi+edx+800h]
24815
                xor     ebx, ebp
24816
                shr     ecx, 0Dh
24817
                mov     ebp, [esi+edx+804h]
24818
                and     ecx, 7F8h
24819
                xor     eax, edi
24820
                mov     edx, [esp+20h]
24821
                xor     ebx, ebp
24822
                shr     edx, 18h
24823
                mov     edi, [esi+ecx+1000h]
24824
                mov     ebp, [esi+ecx+1004h]
24825
                xor     eax, edi
24826
                mov     edi, [esi+edx*8+1800h]
24827
                xor     ebx, ebp
24828
                mov     ebp, [esi+edx*8+1804h]
24829
                xor     eax, edi
24830
                xor     ebx, ebp
24831
                mov     ecx, [esp+1Ch]
24832
                mov     edx, [esp+14h]
24833
                and     ecx, 0FFh
24834
                shr     edx, 5
24835
                mov     edi, [esi+ecx*8+2000h]
24836
                and     edx, 7F8h
24837
                mov     ebp, [esi+ecx*8+2004h]
24838
                xor     eax, edi
24839
                mov     ecx, [esp+0Ch]
24840
                mov     edi, [esi+edx+2800h]
24841
                xor     ebx, ebp
24842
                shr     ecx, 0Dh
24843
                mov     ebp, [esi+edx+2804h]
24844
                and     ecx, 7F8h
24845
                xor     eax, edi
24846
                mov     edx, [esp+4]
24847
                xor     ebx, ebp
24848
                shr     edx, 18h
24849
                mov     edi, [esi+ecx+3000h]
24850
                mov     ebp, [esi+ecx+3004h]
24851
                xor     eax, edi
24852
                mov     edi, [esi+edx*8+3800h]
24853
                xor     ebx, ebp
24854
                mov     ebp, [esi+edx*8+3804h]
24855
                xor     eax, edi
24856
                xor     ebx, ebp
24857
                mov     [esp+0F8h], eax
24858
                mov     [esp+0FCh], ebx
24859
                mov     ebp, [esp+108h]
24860
                mov     edi, [esp+100h]
24861
                mov     eax, [edi+ebp+8]
24862
                mov     ebx, [edi+ebp+0Ch]
24863
                mov     ecx, [esp+80h]
24864
                mov     edx, [esp+0B8h]
24865
                and     ecx, 0FFh
24866
                shr     edx, 5
24867
                mov     edi, [esi+ecx*8]
24868
                and     edx, 7F8h
24869
                mov     ebp, [esi+ecx*8+4]
24870
                xor     eax, edi
24871
                mov     ecx, [esp+0B0h]
24872
                mov     edi, [esi+edx+800h]
24873
                xor     ebx, ebp
24874
                shr     ecx, 0Dh
24875
                mov     ebp, [esi+edx+804h]
24876
                and     ecx, 7F8h
24877
                xor     eax, edi
24878
                mov     edx, [esp+0A8h]
24879
                xor     ebx, ebp
24880
                shr     edx, 18h
24881
                mov     edi, [esi+ecx+1000h]
24882
                mov     ebp, [esi+ecx+1004h]
24883
                xor     eax, edi
24884
                mov     edi, [esi+edx*8+1800h]
24885
                xor     ebx, ebp
24886
                mov     ebp, [esi+edx*8+1804h]
24887
                xor     eax, edi
24888
                xor     ebx, ebp
24889
                mov     ecx, [esp+0A4h]
24890
                mov     edx, [esp+9Ch]
24891
                and     ecx, 0FFh
24892
                shr     edx, 5
24893
                mov     edi, [esi+ecx*8+2000h]
24894
                and     edx, 7F8h
24895
                mov     ebp, [esi+ecx*8+2004h]
24896
                xor     eax, edi
24897
                mov     ecx, [esp+94h]
24898
                mov     edi, [esi+edx+2800h]
24899
                xor     ebx, ebp
24900
                shr     ecx, 0Dh
24901
                mov     ebp, [esi+edx+2804h]
24902
                and     ecx, 7F8h
24903
                xor     eax, edi
24904
                mov     edx, [esp+8Ch]
24905
                xor     ebx, ebp
24906
                shr     edx, 18h
24907
                mov     edi, [esi+ecx+3000h]
24908
                mov     ebp, [esi+ecx+3004h]
24909
                xor     eax, edi
24910
                mov     edi, [esi+edx*8+3800h]
24911
                xor     ebx, ebp
24912
                mov     ebp, [esi+edx*8+3804h]
24913
                xor     eax, edi
24914
                xor     ebx, ebp
24915
                mov     [esp+40h], eax
24916
                mov     [esp+44h], ebx
24917
                mov     ecx, [esp+88h]
24918
                mov     edx, [esp+80h]
24919
                and     ecx, 0FFh
24920
                shr     edx, 5
24921
                mov     eax, [esi+ecx*8]
24922
                and     edx, 7F8h
24923
                mov     ebx, [esi+ecx*8+4]
24924
                mov     ecx, [esp+0B8h]
24925
                mov     edi, [esi+edx+800h]
24926
                shr     ecx, 0Dh
24927
                mov     ebp, [esi+edx+804h]
24928
                and     ecx, 7F8h
24929
                mov     edx, [esp+0B0h]
24930
                xor     eax, edi
24931
                xor     ebx, ebp
24932
                shr     edx, 18h
24933
                mov     edi, [esi+ecx+1000h]
24934
                mov     ebp, [esi+ecx+1004h]
24935
                mov     ecx, [esp+0ACh]
24936
                xor     eax, edi
24937
                mov     edi, [esi+edx*8+1800h]
24938
                and     ecx, 0FFh
24939
                xor     ebx, ebp
24940
                mov     ebp, [esi+edx*8+1804h]
24941
                mov     edx, [esp+0A4h]
24942
                xor     eax, edi
24943
                xor     ebx, ebp
24944
                shr     edx, 5
24945
                mov     edi, [esi+ecx*8+2000h]
24946
                mov     ebp, [esi+ecx*8+2004h]
24947
                and     edx, 7F8h
24948
                mov     ecx, [esp+9Ch]
24949
                xor     eax, edi
24950
                shr     ecx, 0Dh
24951
                xor     ebx, ebp
24952
                mov     edi, [esi+edx+2800h]
24953
                and     ecx, 7F8h
24954
                mov     ebp, [esi+edx+2804h]
24955
                xor     eax, edi
24956
                mov     edx, [esp+94h]
24957
                xor     ebx, ebp
24958
                shr     edx, 18h
24959
                mov     edi, [esi+ecx+3000h]
24960
                mov     ebp, [esi+ecx+3004h]
24961
                xor     eax, edi
24962
                mov     edi, [esi+edx*8+3800h]
24963
                xor     ebx, ebp
24964
                mov     ebp, [esi+edx*8+3804h]
24965
                xor     eax, edi
24966
                xor     ebx, ebp
24967
                mov     [esp+48h], eax
24968
                mov     [esp+4Ch], ebx
24969
                mov     ecx, [esp+90h]
24970
                mov     edx, [esp+88h]
24971
                and     ecx, 0FFh
24972
                shr     edx, 5
24973
                mov     eax, [esi+ecx*8]
24974
                and     edx, 7F8h
24975
                mov     ebx, [esi+ecx*8+4]
24976
                mov     ecx, [esp+80h]
24977
                mov     edi, [esi+edx+800h]
24978
                shr     ecx, 0Dh
24979
                mov     ebp, [esi+edx+804h]
24980
                and     ecx, 7F8h
24981
                mov     edx, [esp+0B8h]
24982
                xor     eax, edi
24983
                xor     ebx, ebp
24984
                shr     edx, 18h
24985
                mov     edi, [esi+ecx+1000h]
24986
                mov     ebp, [esi+ecx+1004h]
24987
                mov     ecx, [esp+0B4h]
24988
                xor     eax, edi
24989
                mov     edi, [esi+edx*8+1800h]
24990
                and     ecx, 0FFh
24991
                xor     ebx, ebp
24992
                mov     ebp, [esi+edx*8+1804h]
24993
                mov     edx, [esp+0ACh]
24994
                xor     eax, edi
24995
                xor     ebx, ebp
24996
                shr     edx, 5
24997
                mov     edi, [esi+ecx*8+2000h]
24998
                mov     ebp, [esi+ecx*8+2004h]
24999
                and     edx, 7F8h
25000
                mov     ecx, [esp+0A4h]
25001
                xor     eax, edi
25002
                shr     ecx, 0Dh
25003
                xor     ebx, ebp
25004
                mov     edi, [esi+edx+2800h]
25005
                and     ecx, 7F8h
25006
                mov     ebp, [esi+edx+2804h]
25007
                xor     eax, edi
25008
                mov     edx, [esp+9Ch]
25009
                xor     ebx, ebp
25010
                shr     edx, 18h
25011
                mov     edi, [esi+ecx+3000h]
25012
                mov     ebp, [esi+ecx+3004h]
25013
                xor     eax, edi
25014
                mov     edi, [esi+edx*8+3800h]
25015
                xor     ebx, ebp
25016
                mov     ebp, [esi+edx*8+3804h]
25017
                xor     eax, edi
25018
                xor     ebx, ebp
25019
                mov     [esp+50h], eax
25020
                mov     [esp+54h], ebx
25021
                mov     ecx, [esp+98h]
25022
                mov     edx, [esp+90h]
25023
                and     ecx, 0FFh
25024
                shr     edx, 5
25025
                mov     eax, [esi+ecx*8]
25026
                and     edx, 7F8h
25027
                mov     ebx, [esi+ecx*8+4]
25028
                mov     ecx, [esp+88h]
25029
                mov     edi, [esi+edx+800h]
25030
                shr     ecx, 0Dh
25031
                mov     ebp, [esi+edx+804h]
25032
                and     ecx, 7F8h
25033
                mov     edx, [esp+80h]
25034
                xor     eax, edi
25035
                xor     ebx, ebp
25036
                shr     edx, 18h
25037
                mov     edi, [esi+ecx+1000h]
25038
                mov     ebp, [esi+ecx+1004h]
25039
                mov     ecx, [esp+0BCh]
25040
                xor     eax, edi
25041
                mov     edi, [esi+edx*8+1800h]
25042
                and     ecx, 0FFh
25043
                xor     ebx, ebp
25044
                mov     ebp, [esi+edx*8+1804h]
25045
                mov     edx, [esp+0B4h]
25046
                xor     eax, edi
25047
                xor     ebx, ebp
25048
                shr     edx, 5
25049
                mov     edi, [esi+ecx*8+2000h]
25050
                mov     ebp, [esi+ecx*8+2004h]
25051
                and     edx, 7F8h
25052
                mov     ecx, [esp+0ACh]
25053
                xor     eax, edi
25054
                shr     ecx, 0Dh
25055
                xor     ebx, ebp
25056
                mov     edi, [esi+edx+2800h]
25057
                and     ecx, 7F8h
25058
                mov     ebp, [esi+edx+2804h]
25059
                xor     eax, edi
25060
                mov     edx, [esp+0A4h]
25061
                xor     ebx, ebp
25062
                shr     edx, 18h
25063
                mov     edi, [esi+ecx+3000h]
25064
                mov     ebp, [esi+ecx+3004h]
25065
                xor     eax, edi
25066
                mov     edi, [esi+edx*8+3800h]
25067
                xor     ebx, ebp
25068
                mov     ebp, [esi+edx*8+3804h]
25069
                xor     eax, edi
25070
                xor     ebx, ebp
25071
                mov     [esp+58h], eax
25072
                mov     [esp+5Ch], ebx
25073
                mov     ecx, [esp+0A0h]
25074
                mov     edx, [esp+98h]
25075
                and     ecx, 0FFh
25076
                shr     edx, 5
25077
                mov     eax, [esi+ecx*8]
25078
                and     edx, 7F8h
25079
                mov     ebx, [esi+ecx*8+4]
25080
                mov     ecx, [esp+90h]
25081
                mov     edi, [esi+edx+800h]
25082
                shr     ecx, 0Dh
25083
                mov     ebp, [esi+edx+804h]
25084
                and     ecx, 7F8h
25085
                mov     edx, [esp+88h]
25086
                xor     eax, edi
25087
                xor     ebx, ebp
25088
                shr     edx, 18h
25089
                mov     edi, [esi+ecx+1000h]
25090
                mov     ebp, [esi+ecx+1004h]
25091
                mov     ecx, [esp+84h]
25092
                xor     eax, edi
25093
                mov     edi, [esi+edx*8+1800h]
25094
                and     ecx, 0FFh
25095
                xor     ebx, ebp
25096
                mov     ebp, [esi+edx*8+1804h]
25097
                mov     edx, [esp+0BCh]
25098
                xor     eax, edi
25099
                xor     ebx, ebp
25100
                shr     edx, 5
25101
                mov     edi, [esi+ecx*8+2000h]
25102
                mov     ebp, [esi+ecx*8+2004h]
25103
                and     edx, 7F8h
25104
                mov     ecx, [esp+0B4h]
25105
                xor     eax, edi
25106
                shr     ecx, 0Dh
25107
                xor     ebx, ebp
25108
                mov     edi, [esi+edx+2800h]
25109
                and     ecx, 7F8h
25110
                mov     ebp, [esi+edx+2804h]
25111
                xor     eax, edi
25112
                mov     edx, [esp+0ACh]
25113
                xor     ebx, ebp
25114
                shr     edx, 18h
25115
                mov     edi, [esi+ecx+3000h]
25116
                mov     ebp, [esi+ecx+3004h]
25117
                xor     eax, edi
25118
                mov     edi, [esi+edx*8+3800h]
25119
                xor     ebx, ebp
25120
                mov     ebp, [esi+edx*8+3804h]
25121
                xor     eax, edi
25122
                xor     ebx, ebp
25123
                mov     [esp+60h], eax
25124
                mov     [esp+64h], ebx
25125
                mov     ecx, [esp+0A8h]
25126
                mov     edx, [esp+0A0h]
25127
                and     ecx, 0FFh
25128
                shr     edx, 5
25129
                mov     eax, [esi+ecx*8]
25130
                and     edx, 7F8h
25131
                mov     ebx, [esi+ecx*8+4]
25132
                mov     ecx, [esp+98h]
25133
                mov     edi, [esi+edx+800h]
25134
                shr     ecx, 0Dh
25135
                mov     ebp, [esi+edx+804h]
25136
                and     ecx, 7F8h
25137
                mov     edx, [esp+90h]
25138
                xor     eax, edi
25139
                xor     ebx, ebp
25140
                shr     edx, 18h
25141
                mov     edi, [esi+ecx+1000h]
25142
                mov     ebp, [esi+ecx+1004h]
25143
                mov     ecx, [esp+8Ch]
25144
                xor     eax, edi
25145
                mov     edi, [esi+edx*8+1800h]
25146
                and     ecx, 0FFh
25147
                xor     ebx, ebp
25148
                mov     ebp, [esi+edx*8+1804h]
25149
                mov     edx, [esp+84h]
25150
                xor     eax, edi
25151
                xor     ebx, ebp
25152
                shr     edx, 5
25153
                mov     edi, [esi+ecx*8+2000h]
25154
                mov     ebp, [esi+ecx*8+2004h]
25155
                and     edx, 7F8h
25156
                mov     ecx, [esp+0BCh]
25157
                xor     eax, edi
25158
                shr     ecx, 0Dh
25159
                xor     ebx, ebp
25160
                mov     edi, [esi+edx+2800h]
25161
                and     ecx, 7F8h
25162
                mov     ebp, [esi+edx+2804h]
25163
                xor     eax, edi
25164
                mov     edx, [esp+0B4h]
25165
                xor     ebx, ebp
25166
                shr     edx, 18h
25167
                mov     edi, [esi+ecx+3000h]
25168
                mov     ebp, [esi+ecx+3004h]
25169
                xor     eax, edi
25170
                mov     edi, [esi+edx*8+3800h]
25171
                xor     ebx, ebp
25172
                mov     ebp, [esi+edx*8+3804h]
25173
                xor     eax, edi
25174
                xor     ebx, ebp
25175
                mov     [esp+68h], eax
25176
                mov     [esp+6Ch], ebx
25177
                mov     ecx, [esp+0B0h]
25178
                mov     edx, [esp+0A8h]
25179
                and     ecx, 0FFh
25180
                shr     edx, 5
25181
                mov     eax, [esi+ecx*8]
25182
                and     edx, 7F8h
25183
                mov     ebx, [esi+ecx*8+4]
25184
                mov     ecx, [esp+0A0h]
25185
                mov     edi, [esi+edx+800h]
25186
                shr     ecx, 0Dh
25187
                mov     ebp, [esi+edx+804h]
25188
                and     ecx, 7F8h
25189
                mov     edx, [esp+98h]
25190
                xor     eax, edi
25191
                xor     ebx, ebp
25192
                shr     edx, 18h
25193
                mov     edi, [esi+ecx+1000h]
25194
                mov     ebp, [esi+ecx+1004h]
25195
                mov     ecx, [esp+94h]
25196
                xor     eax, edi
25197
                mov     edi, [esi+edx*8+1800h]
25198
                and     ecx, 0FFh
25199
                xor     ebx, ebp
25200
                mov     ebp, [esi+edx*8+1804h]
25201
                mov     edx, [esp+8Ch]
25202
                xor     eax, edi
25203
                xor     ebx, ebp
25204
                shr     edx, 5
25205
                mov     edi, [esi+ecx*8+2000h]
25206
                mov     ebp, [esi+ecx*8+2004h]
25207
                and     edx, 7F8h
25208
                mov     ecx, [esp+84h]
25209
                xor     eax, edi
25210
                shr     ecx, 0Dh
25211
                xor     ebx, ebp
25212
                mov     edi, [esi+edx+2800h]
25213
                and     ecx, 7F8h
25214
                mov     ebp, [esi+edx+2804h]
25215
                xor     eax, edi
25216
                mov     edx, [esp+0BCh]
25217
                xor     ebx, ebp
25218
                shr     edx, 18h
25219
                mov     edi, [esi+ecx+3000h]
25220
                mov     ebp, [esi+ecx+3004h]
25221
                xor     eax, edi
25222
                mov     edi, [esi+edx*8+3800h]
25223
                xor     ebx, ebp
25224
                mov     ebp, [esi+edx*8+3804h]
25225
                xor     eax, edi
25226
                xor     ebx, ebp
25227
                mov     [esp+70h], eax
25228
                mov     [esp+74h], ebx
25229
                mov     ecx, [esp+0B8h]
25230
                mov     edx, [esp+0B0h]
25231
                and     ecx, 0FFh
25232
                shr     edx, 5
25233
                mov     eax, [esi+ecx*8]
25234
                and     edx, 7F8h
25235
                mov     ebx, [esi+ecx*8+4]
25236
                mov     ecx, [esp+0A8h]
25237
                mov     edi, [esi+edx+800h]
25238
                shr     ecx, 0Dh
25239
                mov     ebp, [esi+edx+804h]
25240
                and     ecx, 7F8h
25241
                mov     edx, [esp+0A0h]
25242
                xor     eax, edi
25243
                xor     ebx, ebp
25244
                shr     edx, 18h
25245
                mov     edi, [esi+ecx+1000h]
25246
                mov     ebp, [esi+ecx+1004h]
25247
                mov     ecx, [esp+9Ch]
25248
                xor     eax, edi
25249
                mov     edi, [esi+edx*8+1800h]
25250
                and     ecx, 0FFh
25251
                xor     ebx, ebp
25252
                mov     ebp, [esi+edx*8+1804h]
25253
                mov     edx, [esp+94h]
25254
                xor     eax, edi
25255
                xor     ebx, ebp
25256
                shr     edx, 5
25257
                mov     edi, [esi+ecx*8+2000h]
25258
                mov     ebp, [esi+ecx*8+2004h]
25259
                and     edx, 7F8h
25260
                mov     ecx, [esp+8Ch]
25261
                xor     eax, edi
25262
                shr     ecx, 0Dh
25263
                xor     ebx, ebp
25264
                mov     edi, [esi+edx+2800h]
25265
                and     ecx, 7F8h
25266
                mov     ebp, [esi+edx+2804h]
25267
                xor     eax, edi
25268
                mov     edx, [esp+84h]
25269
                xor     ebx, ebp
25270
                shr     edx, 18h
25271
                mov     edi, [esi+ecx+3000h]
25272
                mov     ebp, [esi+ecx+3004h]
25273
                xor     eax, edi
25274
                mov     edi, [esi+edx*8+3800h]
25275
                xor     ebx, ebp
25276
                mov     ebp, [esi+edx*8+3804h]
25277
                xor     eax, edi
25278
                xor     ebx, ebp
25279
                mov     [esp+78h], eax
25280
                mov     [esp+7Ch], ebx
25281
                mov     eax, [esp+40h]
25282
                mov     ebx, [esp+44h]
25283
                mov     ecx, [esp+0C0h]
25284
                mov     edx, [esp+0F8h]
25285
                and     ecx, 0FFh
25286
                shr     edx, 5
25287
                mov     edi, [esi+ecx*8]
25288
                and     edx, 7F8h
25289
                mov     ebp, [esi+ecx*8+4]
25290
                xor     eax, edi
25291
                mov     ecx, [esp+0F0h]
25292
                mov     edi, [esi+edx+800h]
25293
                xor     ebx, ebp
25294
                shr     ecx, 0Dh
25295
                mov     ebp, [esi+edx+804h]
25296
                and     ecx, 7F8h
25297
                xor     eax, edi
25298
                mov     edx, [esp+0E8h]
25299
                xor     ebx, ebp
25300
                shr     edx, 18h
25301
                mov     edi, [esi+ecx+1000h]
25302
                mov     ebp, [esi+ecx+1004h]
25303
                xor     eax, edi
25304
                mov     edi, [esi+edx*8+1800h]
25305
                xor     ebx, ebp
25306
                mov     ebp, [esi+edx*8+1804h]
25307
                xor     eax, edi
25308
                xor     ebx, ebp
25309
                mov     ecx, [esp+0E4h]
25310
                mov     edx, [esp+0DCh]
25311
                and     ecx, 0FFh
25312
                shr     edx, 5
25313
                mov     edi, [esi+ecx*8+2000h]
25314
                and     edx, 7F8h
25315
                mov     ebp, [esi+ecx*8+2004h]
25316
                xor     eax, edi
25317
                mov     ecx, [esp+0D4h]
25318
                mov     edi, [esi+edx+2800h]
25319
                xor     ebx, ebp
25320
                shr     ecx, 0Dh
25321
                mov     ebp, [esi+edx+2804h]
25322
                and     ecx, 7F8h
25323
                xor     eax, edi
25324
                mov     edx, [esp+0CCh]
25325
                xor     ebx, ebp
25326
                shr     edx, 18h
25327
                mov     edi, [esi+ecx+3000h]
25328
                mov     ebp, [esi+ecx+3004h]
25329
                xor     eax, edi
25330
                mov     edi, [esi+edx*8+3800h]
25331
                xor     ebx, ebp
25332
                mov     ebp, [esi+edx*8+3804h]
25333
                xor     eax, edi
25334
                xor     ebx, ebp
25335
                mov     [esp], eax
25336
                mov     [esp+4], ebx
25337
                mov     eax, [esp+48h]
25338
                mov     ebx, [esp+4Ch]
25339
                mov     ecx, [esp+0C8h]
25340
                mov     edx, [esp+0C0h]
25341
                and     ecx, 0FFh
25342
                shr     edx, 5
25343
                mov     edi, [esi+ecx*8]
25344
                and     edx, 7F8h
25345
                mov     ebp, [esi+ecx*8+4]
25346
                xor     eax, edi
25347
                mov     ecx, [esp+0F8h]
25348
                mov     edi, [esi+edx+800h]
25349
                xor     ebx, ebp
25350
                shr     ecx, 0Dh
25351
                mov     ebp, [esi+edx+804h]
25352
                and     ecx, 7F8h
25353
                xor     eax, edi
25354
                mov     edx, [esp+0F0h]
25355
                xor     ebx, ebp
25356
                shr     edx, 18h
25357
                mov     edi, [esi+ecx+1000h]
25358
                mov     ebp, [esi+ecx+1004h]
25359
                xor     eax, edi
25360
                mov     edi, [esi+edx*8+1800h]
25361
                xor     ebx, ebp
25362
                mov     ebp, [esi+edx*8+1804h]
25363
                xor     eax, edi
25364
                xor     ebx, ebp
25365
                mov     ecx, [esp+0ECh]
25366
                mov     edx, [esp+0E4h]
25367
                and     ecx, 0FFh
25368
                shr     edx, 5
25369
                mov     edi, [esi+ecx*8+2000h]
25370
                and     edx, 7F8h
25371
                mov     ebp, [esi+ecx*8+2004h]
25372
                xor     eax, edi
25373
                mov     ecx, [esp+0DCh]
25374
                mov     edi, [esi+edx+2800h]
25375
                xor     ebx, ebp
25376
                shr     ecx, 0Dh
25377
                mov     ebp, [esi+edx+2804h]
25378
                and     ecx, 7F8h
25379
                xor     eax, edi
25380
                mov     edx, [esp+0D4h]
25381
                xor     ebx, ebp
25382
                shr     edx, 18h
25383
                mov     edi, [esi+ecx+3000h]
25384
                mov     ebp, [esi+ecx+3004h]
25385
                xor     eax, edi
25386
                mov     edi, [esi+edx*8+3800h]
25387
                xor     ebx, ebp
25388
                mov     ebp, [esi+edx*8+3804h]
25389
                xor     eax, edi
25390
                xor     ebx, ebp
25391
                mov     [esp+8], eax
25392
                mov     [esp+0Ch], ebx
25393
                mov     eax, [esp+50h]
25394
                mov     ebx, [esp+54h]
25395
                mov     ecx, [esp+0D0h]
25396
                mov     edx, [esp+0C8h]
25397
                and     ecx, 0FFh
25398
                shr     edx, 5
25399
                mov     edi, [esi+ecx*8]
25400
                and     edx, 7F8h
25401
                mov     ebp, [esi+ecx*8+4]
25402
                xor     eax, edi
25403
                mov     ecx, [esp+0C0h]
25404
                mov     edi, [esi+edx+800h]
25405
                xor     ebx, ebp
25406
                shr     ecx, 0Dh
25407
                mov     ebp, [esi+edx+804h]
25408
                and     ecx, 7F8h
25409
                xor     eax, edi
25410
                mov     edx, [esp+0F8h]
25411
                xor     ebx, ebp
25412
                shr     edx, 18h
25413
                mov     edi, [esi+ecx+1000h]
25414
                mov     ebp, [esi+ecx+1004h]
25415
                xor     eax, edi
25416
                mov     edi, [esi+edx*8+1800h]
25417
                xor     ebx, ebp
25418
                mov     ebp, [esi+edx*8+1804h]
25419
                xor     eax, edi
25420
                xor     ebx, ebp
25421
                mov     ecx, [esp+0F4h]
25422
                mov     edx, [esp+0ECh]
25423
                and     ecx, 0FFh
25424
                shr     edx, 5
25425
                mov     edi, [esi+ecx*8+2000h]
25426
                and     edx, 7F8h
25427
                mov     ebp, [esi+ecx*8+2004h]
25428
                xor     eax, edi
25429
                mov     ecx, [esp+0E4h]
25430
                mov     edi, [esi+edx+2800h]
25431
                xor     ebx, ebp
25432
                shr     ecx, 0Dh
25433
                mov     ebp, [esi+edx+2804h]
25434
                and     ecx, 7F8h
25435
                xor     eax, edi
25436
                mov     edx, [esp+0DCh]
25437
                xor     ebx, ebp
25438
                shr     edx, 18h
25439
                mov     edi, [esi+ecx+3000h]
25440
                mov     ebp, [esi+ecx+3004h]
25441
                xor     eax, edi
25442
                mov     edi, [esi+edx*8+3800h]
25443
                xor     ebx, ebp
25444
                mov     ebp, [esi+edx*8+3804h]
25445
                xor     eax, edi
25446
                xor     ebx, ebp
25447
                mov     [esp+10h], eax
25448
                mov     [esp+14h], ebx
25449
                mov     eax, [esp+58h]
25450
                mov     ebx, [esp+5Ch]
25451
                mov     ecx, [esp+0D8h]
25452
                mov     edx, [esp+0D0h]
25453
                and     ecx, 0FFh
25454
                shr     edx, 5
25455
                mov     edi, [esi+ecx*8]
25456
                and     edx, 7F8h
25457
                mov     ebp, [esi+ecx*8+4]
25458
                xor     eax, edi
25459
                mov     ecx, [esp+0C8h]
25460
                mov     edi, [esi+edx+800h]
25461
                xor     ebx, ebp
25462
                shr     ecx, 0Dh
25463
                mov     ebp, [esi+edx+804h]
25464
                and     ecx, 7F8h
25465
                xor     eax, edi
25466
                mov     edx, [esp+0C0h]
25467
                xor     ebx, ebp
25468
                shr     edx, 18h
25469
                mov     edi, [esi+ecx+1000h]
25470
                mov     ebp, [esi+ecx+1004h]
25471
                xor     eax, edi
25472
                mov     edi, [esi+edx*8+1800h]
25473
                xor     ebx, ebp
25474
                mov     ebp, [esi+edx*8+1804h]
25475
                xor     eax, edi
25476
                xor     ebx, ebp
25477
                mov     ecx, [esp+0FCh]
25478
                mov     edx, [esp+0F4h]
25479
                and     ecx, 0FFh
25480
                shr     edx, 5
25481
                mov     edi, [esi+ecx*8+2000h]
25482
                and     edx, 7F8h
25483
                mov     ebp, [esi+ecx*8+2004h]
25484
                xor     eax, edi
25485
                mov     ecx, [esp+0ECh]
25486
                mov     edi, [esi+edx+2800h]
25487
                xor     ebx, ebp
25488
                shr     ecx, 0Dh
25489
                mov     ebp, [esi+edx+2804h]
25490
                and     ecx, 7F8h
25491
                xor     eax, edi
25492
                mov     edx, [esp+0E4h]
25493
                xor     ebx, ebp
25494
                shr     edx, 18h
25495
                mov     edi, [esi+ecx+3000h]
25496
                mov     ebp, [esi+ecx+3004h]
25497
                xor     eax, edi
25498
                mov     edi, [esi+edx*8+3800h]
25499
                xor     ebx, ebp
25500
                mov     ebp, [esi+edx*8+3804h]
25501
                xor     eax, edi
25502
                xor     ebx, ebp
25503
                mov     [esp+18h], eax
25504
                mov     [esp+1Ch], ebx
25505
                mov     eax, [esp+60h]
25506
                mov     ebx, [esp+64h]
25507
                mov     ecx, [esp+0E0h]
25508
                mov     edx, [esp+0D8h]
25509
                and     ecx, 0FFh
25510
                shr     edx, 5
25511
                mov     edi, [esi+ecx*8]
25512
                and     edx, 7F8h
25513
                mov     ebp, [esi+ecx*8+4]
25514
                xor     eax, edi
25515
                mov     ecx, [esp+0D0h]
25516
                mov     edi, [esi+edx+800h]
25517
                xor     ebx, ebp
25518
                shr     ecx, 0Dh
25519
                mov     ebp, [esi+edx+804h]
25520
                and     ecx, 7F8h
25521
                xor     eax, edi
25522
                mov     edx, [esp+0C8h]
25523
                xor     ebx, ebp
25524
                shr     edx, 18h
25525
                mov     edi, [esi+ecx+1000h]
25526
                mov     ebp, [esi+ecx+1004h]
25527
                xor     eax, edi
25528
                mov     edi, [esi+edx*8+1800h]
25529
                xor     ebx, ebp
25530
                mov     ebp, [esi+edx*8+1804h]
25531
                xor     eax, edi
25532
                xor     ebx, ebp
25533
                mov     ecx, [esp+0C4h]
25534
                mov     edx, [esp+0FCh]
25535
                and     ecx, 0FFh
25536
                shr     edx, 5
25537
                mov     edi, [esi+ecx*8+2000h]
25538
                and     edx, 7F8h
25539
                mov     ebp, [esi+ecx*8+2004h]
25540
                xor     eax, edi
25541
                mov     ecx, [esp+0F4h]
25542
                mov     edi, [esi+edx+2800h]
25543
                xor     ebx, ebp
25544
                shr     ecx, 0Dh
25545
                mov     ebp, [esi+edx+2804h]
25546
                and     ecx, 7F8h
25547
                xor     eax, edi
25548
                mov     edx, [esp+0ECh]
25549
                xor     ebx, ebp
25550
                shr     edx, 18h
25551
                mov     edi, [esi+ecx+3000h]
25552
                mov     ebp, [esi+ecx+3004h]
25553
                xor     eax, edi
25554
                mov     edi, [esi+edx*8+3800h]
25555
                xor     ebx, ebp
25556
                mov     ebp, [esi+edx*8+3804h]
25557
                xor     eax, edi
25558
                xor     ebx, ebp
25559
                mov     [esp+20h], eax
25560
                mov     [esp+24h], ebx
25561
                mov     eax, [esp+68h]
25562
                mov     ebx, [esp+6Ch]
25563
                mov     ecx, [esp+0E8h]
25564
                mov     edx, [esp+0E0h]
25565
                and     ecx, 0FFh
25566
                shr     edx, 5
25567
                mov     edi, [esi+ecx*8]
25568
                and     edx, 7F8h
25569
                mov     ebp, [esi+ecx*8+4]
25570
                xor     eax, edi
25571
                mov     ecx, [esp+0D8h]
25572
                mov     edi, [esi+edx+800h]
25573
                xor     ebx, ebp
25574
                shr     ecx, 0Dh
25575
                mov     ebp, [esi+edx+804h]
25576
                and     ecx, 7F8h
25577
                xor     eax, edi
25578
                mov     edx, [esp+0D0h]
25579
                xor     ebx, ebp
25580
                shr     edx, 18h
25581
                mov     edi, [esi+ecx+1000h]
25582
                mov     ebp, [esi+ecx+1004h]
25583
                xor     eax, edi
25584
                mov     edi, [esi+edx*8+1800h]
25585
                xor     ebx, ebp
25586
                mov     ebp, [esi+edx*8+1804h]
25587
                xor     eax, edi
25588
                xor     ebx, ebp
25589
                mov     ecx, [esp+0CCh]
25590
                mov     edx, [esp+0C4h]
25591
                and     ecx, 0FFh
25592
                shr     edx, 5
25593
                mov     edi, [esi+ecx*8+2000h]
25594
                and     edx, 7F8h
25595
                mov     ebp, [esi+ecx*8+2004h]
25596
                xor     eax, edi
25597
                mov     ecx, [esp+0FCh]
25598
                mov     edi, [esi+edx+2800h]
25599
                xor     ebx, ebp
25600
                shr     ecx, 0Dh
25601
                mov     ebp, [esi+edx+2804h]
25602
                and     ecx, 7F8h
25603
                xor     eax, edi
25604
                mov     edx, [esp+0F4h]
25605
                xor     ebx, ebp
25606
                shr     edx, 18h
25607
                mov     edi, [esi+ecx+3000h]
25608
                mov     ebp, [esi+ecx+3004h]
25609
                xor     eax, edi
25610
                mov     edi, [esi+edx*8+3800h]
25611
                xor     ebx, ebp
25612
                mov     ebp, [esi+edx*8+3804h]
25613
                xor     eax, edi
25614
                xor     ebx, ebp
25615
                mov     [esp+28h], eax
25616
                mov     [esp+2Ch], ebx
25617
                mov     eax, [esp+70h]
25618
                mov     ebx, [esp+74h]
25619
                mov     ecx, [esp+0F0h]
25620
                mov     edx, [esp+0E8h]
25621
                and     ecx, 0FFh
25622
                shr     edx, 5
25623
                mov     edi, [esi+ecx*8]
25624
                and     edx, 7F8h
25625
                mov     ebp, [esi+ecx*8+4]
25626
                xor     eax, edi
25627
                mov     ecx, [esp+0E0h]
25628
                mov     edi, [esi+edx+800h]
25629
                xor     ebx, ebp
25630
                shr     ecx, 0Dh
25631
                mov     ebp, [esi+edx+804h]
25632
                and     ecx, 7F8h
25633
                xor     eax, edi
25634
                mov     edx, [esp+0D8h]
25635
                xor     ebx, ebp
25636
                shr     edx, 18h
25637
                mov     edi, [esi+ecx+1000h]
25638
                mov     ebp, [esi+ecx+1004h]
25639
                xor     eax, edi
25640
                mov     edi, [esi+edx*8+1800h]
25641
                xor     ebx, ebp
25642
                mov     ebp, [esi+edx*8+1804h]
25643
                xor     eax, edi
25644
                xor     ebx, ebp
25645
                mov     ecx, [esp+0D4h]
25646
                mov     edx, [esp+0CCh]
25647
                and     ecx, 0FFh
25648
                shr     edx, 5
25649
                mov     edi, [esi+ecx*8+2000h]
25650
                and     edx, 7F8h
25651
                mov     ebp, [esi+ecx*8+2004h]
25652
                xor     eax, edi
25653
                mov     ecx, [esp+0C4h]
25654
                mov     edi, [esi+edx+2800h]
25655
                xor     ebx, ebp
25656
                shr     ecx, 0Dh
25657
                mov     ebp, [esi+edx+2804h]
25658
                and     ecx, 7F8h
25659
                xor     eax, edi
25660
                mov     edx, [esp+0FCh]
25661
                xor     ebx, ebp
25662
                shr     edx, 18h
25663
                mov     edi, [esi+ecx+3000h]
25664
                mov     ebp, [esi+ecx+3004h]
25665
                xor     eax, edi
25666
                mov     edi, [esi+edx*8+3800h]
25667
                xor     ebx, ebp
25668
                mov     ebp, [esi+edx*8+3804h]
25669
                xor     eax, edi
25670
                xor     ebx, ebp
25671
                mov     [esp+30h], eax
25672
                mov     [esp+34h], ebx
25673
                mov     eax, [esp+78h]
25674
                mov     ebx, [esp+7Ch]
25675
                mov     ecx, [esp+0F8h]
25676
                mov     edx, [esp+0F0h]
25677
                and     ecx, 0FFh
25678
                shr     edx, 5
25679
                mov     edi, [esi+ecx*8]
25680
                and     edx, 7F8h
25681
                mov     ebp, [esi+ecx*8+4]
25682
                xor     eax, edi
25683
                mov     ecx, [esp+0E8h]
25684
                mov     edi, [esi+edx+800h]
25685
                xor     ebx, ebp
25686
                shr     ecx, 0Dh
25687
                mov     ebp, [esi+edx+804h]
25688
                and     ecx, 7F8h
25689
                xor     eax, edi
25690
                mov     edx, [esp+0E0h]
25691
                xor     ebx, ebp
25692
                shr     edx, 18h
25693
                mov     edi, [esi+ecx+1000h]
25694
                mov     ebp, [esi+ecx+1004h]
25695
                xor     eax, edi
25696
                mov     edi, [esi+edx*8+1800h]
25697
                xor     ebx, ebp
25698
                mov     ebp, [esi+edx*8+1804h]
25699
                xor     eax, edi
25700
                xor     ebx, ebp
25701
                mov     ecx, [esp+0DCh]
25702
                mov     edx, [esp+0D4h]
25703
                and     ecx, 0FFh
25704
                shr     edx, 5
25705
                mov     edi, [esi+ecx*8+2000h]
25706
                and     edx, 7F8h
25707
                mov     ebp, [esi+ecx*8+2004h]
25708
                xor     eax, edi
25709
                mov     ecx, [esp+0CCh]
25710
                mov     edi, [esi+edx+2800h]
25711
                xor     ebx, ebp
25712
                shr     ecx, 0Dh
25713
                mov     ebp, [esi+edx+2804h]
25714
                and     ecx, 7F8h
25715
                xor     eax, edi
25716
                mov     edx, [esp+0C4h]
25717
                xor     ebx, ebp
25718
                shr     edx, 18h
25719
                mov     edi, [esi+ecx+3000h]
25720
                mov     ebp, [esi+ecx+3004h]
25721
                xor     eax, edi
25722
                mov     edi, [esi+edx*8+3800h]
25723
                xor     ebx, ebp
25724
                mov     ebp, [esi+edx*8+3804h]
25725
                xor     eax, edi
25726
                xor     ebx, ebp
25727
                mov     [esp+38h], eax
25728
                mov     [esp+3Ch], ebx
25729
                mov     ebp, [esp+108h]
25730
                add     ebp, 10h
25731
                cmp     ebp, 50h 
25732
                jnz     @@_loop_start
25733
                mov     ebp, [esp+114h]
25734
                mov     edi, [esp+110h]
25735
                mov     esi, [esp+10Ch]
25736
                mov     eax, [esp]
25737
                mov     ebx, [esp+4]
25738
                mov     ecx, [edi]
25739
                mov     edx, [edi+4]
25740
                xor     eax, ecx
25741
                xor     ebx, edx
25742
                mov     ecx, [esi]
25743
                mov     edx, [esi+4]
25744
                xor     eax, ecx
25745
                xor     ebx, edx
25746
                mov     [esi], eax
25747
                mov     [esi+4], ebx
25748
                mov     eax, [esp+8]
25749
                mov     ebx, [esp+0Ch]
25750
                mov     ecx, [edi+8]
25751
                mov     edx, [edi+0Ch]
25752
                xor     eax, ecx
25753
                xor     ebx, edx
25754
                mov     ecx, [esi+8]
25755
                mov     edx, [esi+0Ch]
25756
                xor     eax, ecx
25757
                xor     ebx, edx
25758
                mov     [esi+8], eax
25759
                mov     [esi+0Ch], ebx
25760
                mov     eax, [esp+10h]
25761
                mov     ebx, [esp+14h]
25762
                mov     ecx, [edi+10h]
25763
                mov     edx, [edi+14h]
25764
                xor     eax, ecx
25765
                xor     ebx, edx
25766
                mov     ecx, [esi+10h]
25767
                mov     edx, [esi+14h]
25768
                xor     eax, ecx
25769
                xor     ebx, edx
25770
                mov     [esi+10h], eax
25771
                mov     [esi+14h], ebx
25772
                mov     eax, [esp+18h]
25773
                mov     ebx, [esp+1Ch]
25774
                mov     ecx, [edi+18h]
25775
                mov     edx, [edi+1Ch]
25776
                xor     eax, ecx
25777
                xor     ebx, edx
25778
                mov     ecx, [esi+18h]
25779
                mov     edx, [esi+1Ch]
25780
                xor     eax, ecx
25781
                xor     ebx, edx
25782
                mov     [esi+18h], eax
25783
                mov     [esi+1Ch], ebx
25784
                mov     eax, [esp+20h]
25785
                mov     ebx, [esp+24h]
25786
                mov     ecx, [edi+20h]
25787
                mov     edx, [edi+24h]
25788
                xor     eax, ecx
25789
                xor     ebx, edx
25790
                mov     ecx, [esi+20h]
25791
                mov     edx, [esi+24h]
25792
                xor     eax, ecx
25793
                xor     ebx, edx
25794
                mov     [esi+20h], eax
25795
                mov     [esi+24h], ebx
25796
                mov     eax, [esp+28h]
25797
                mov     ebx, [esp+2Ch]
25798
                mov     ecx, [edi+28h]
25799
                mov     edx, [edi+2Ch]
25800
                xor     eax, ecx
25801
                xor     ebx, edx
25802
                mov     ecx, [esi+28h]
25803
                mov     edx, [esi+2Ch]
25804
                xor     eax, ecx
25805
                xor     ebx, edx
25806
                mov     [esi+28h], eax
25807
                mov     [esi+2Ch], ebx
25808
                mov     eax, [esp+30h]
25809
                mov     ebx, [esp+34h]
25810
                mov     ecx, [edi+30h]
25811
                mov     edx, [edi+34h]
25812
                xor     eax, ecx
25813
                xor     ebx, edx
25814
                mov     ecx, [esi+30h]
25815
                mov     edx, [esi+34h]
25816
                xor     eax, ecx
25817
                xor     ebx, edx
25818
                mov     [esi+30h], eax
25819
                mov     [esi+34h], ebx
25820
                mov     eax, [esp+38h]
25821
                mov     ebx, [esp+3Ch]
25822
                mov     ecx, [edi+38h]
25823
                mov     edx, [edi+3Ch]
25824
                xor     eax, ecx
25825
                xor     ebx, edx
25826
                mov     ecx, [esi+38h]
25827
                mov     edx, [esi+3Ch]
25828
                xor     eax, ecx
25829
                xor     ebx, edx
25830
                mov     [esi+38h], eax
25831
                mov     [esi+3Ch], ebx
25832
                mov     esp, ebp
25833
                pop  ebp
25834
                pop  edi
25835
                pop  esi
25836
                pop  ebx
25837
end;
25838
{$ENDIF}
25839
 
25840
{$IFDEF THash_Square_asm}
25841
procedure THash_Square.DoTransform(Buffer: PLongArray);
25842
asm
25843
                push    ebx
25844
                push    esi
25845
                push    edi
25846
                mov     esi, edx
25847
                lea     edi, [eax].THash_Square.FDigest
25848
                push    ebp
25849
                lea     eax, Square_PHIr
25850
                lea     edx, Square_TE
25851
                lea     ecx, Square_SEint
25852
 
25853
                mov     ebp, esp
25854
                add     esp, 0FFFFFF58h
25855
                and     esp, 0FFFFFFE0h
25856
                mov     [esp+90h], edi
25857
                mov     [esp+94h], esi
25858
                mov     [esp+98h], eax
25859
                mov     [esp+9Ch], edx
25860
                mov     [esp+0A0h], ecx
25861
                mov     [esp+0A4h], ebp
25862
                mov     ecx, [edi]
25863
                mov     edx, [edi+4]
25864
                mov     [esp], ecx
25865
                mov     esi, eax
25866
                mov     [esp+4], edx
25867
                mov     ebp, [edi+8]
25868
                mov     edi, [edi+0Ch]
25869
                mov     [esp+8], ebp
25870
                mov     [esp+0Ch], edi
25871
                mov     eax, ecx
25872
                mov     ebx, edx
25873
                mov     ecx, ebp
25874
                mov     ebp, edi
25875
                xor     eax, 1
25876
                ror     ebp, 8
25877
                xor     eax, ebp
25878
                mov     ebp, 0FFh
25879
                xor     ebx, eax
25880
                mov     [esp+10h], eax
25881
                mov     eax, [esp]
25882
                xor     ecx, ebx
25883
                mov     [esp+14h], ebx
25884
                xor     edi, ecx
25885
                mov     [esp+18h], ecx
25886
                mov     [esp+1Ch], edi
25887
                mov     edx, eax
25888
                mov     ebx, eax
25889
                mov     ecx, eax
25890
                shr     eax, 8
25891
                and     ebx, ebp
25892
                shr     ecx, 10h
25893
                and     eax, ebp
25894
                and     ecx, ebp
25895
                mov     ebx, [esi+ebx*4]
25896
                shr     edx, 18h
25897
                mov     eax, [esi+eax*4+400h]
25898
                mov     ecx, [esi+ecx*4+800h]
25899
                xor     ebx, eax
25900
                mov     edx, [esi+edx*4+0C00h]
25901
                xor     ebx, ecx
25902
                mov     eax, [esp+4]
25903
                xor     ebx, edx
25904
                mov     edx, eax
25905
                mov     [esp], ebx
25906
                mov     ebx, eax
25907
                mov     ecx, eax
25908
                shr     eax, 8
25909
                and     ebx, ebp
25910
                shr     ecx, 10h
25911
                and     eax, ebp
25912
                and     ecx, ebp
25913
                mov     ebx, [esi+ebx*4]
25914
                shr     edx, 18h
25915
                mov     eax, [esi+eax*4+400h]
25916
                mov     ecx, [esi+ecx*4+800h]
25917
                xor     ebx, eax
25918
                mov     edx, [esi+edx*4+0C00h]
25919
                xor     ebx, ecx
25920
                mov     eax, [esp+8]
25921
                xor     ebx, edx
25922
                mov     edx, eax
25923
                mov     [esp+4], ebx
25924
                mov     ebx, eax
25925
                mov     ecx, eax
25926
                shr     eax, 8
25927
                and     ebx, ebp
25928
                shr     ecx, 10h
25929
                and     eax, ebp
25930
                and     ecx, ebp
25931
                mov     ebx, [esi+ebx*4]
25932
                shr     edx, 18h
25933
                mov     eax, [esi+eax*4+400h]
25934
                mov     ecx, [esi+ecx*4+800h]
25935
                xor     ebx, eax
25936
                mov     edx, [esi+edx*4+0C00h]
25937
                xor     ebx, ecx
25938
                mov     eax, [esp+0Ch]
25939
                xor     ebx, edx
25940
                mov     edx, eax
25941
                mov     [esp+8], ebx
25942
                mov     ebx, eax
25943
                mov     ecx, eax
25944
                shr     eax, 8
25945
                and     ebx, ebp
25946
                shr     ecx, 10h
25947
                and     eax, ebp
25948
                mov     ebx, [esi+ebx*4]
25949
                and     ecx, ebp
25950
                shr     edx, 18h
25951
                mov     eax, [esi+eax*4+400h]
25952
                mov     ecx, [esi+ecx*4+800h]
25953
                xor     ebx, eax
25954
                mov     edx, [esi+edx*4+0C00h]
25955
                xor     ebx, ecx
25956
                xor     ebx, edx
25957
                mov     [esp+0Ch], ebx
25958
                mov     eax, [esp+10h]
25959
                mov     ebx, [esp+14h]
25960
                mov     ecx, [esp+18h]
25961
                mov     ebp, [esp+1Ch]
25962
                xor     eax, 2
25963
                mov     edi, ebp
25964
                ror     ebp, 8
25965
                xor     eax, ebp
25966
                mov     ebp, 0FFh
25967
                xor     ebx, eax
25968
                mov     [esp+20h], eax
25969
                mov     eax, [esp+10h]
25970
                xor     ecx, ebx
25971
                mov     [esp+24h], ebx
25972
                xor     edi, ecx
25973
                mov     [esp+28h], ecx
25974
                mov     [esp+2Ch], edi
25975
                mov     edx, eax
25976
                mov     ebx, eax
25977
                mov     ecx, eax
25978
                shr     eax, 8
25979
                and     ebx, ebp
25980
                shr     ecx, 10h
25981
                and     eax, ebp
25982
                and     ecx, ebp
25983
                mov     ebx, [esi+ebx*4]
25984
                shr     edx, 18h
25985
                mov     eax, [esi+eax*4+400h]
25986
                mov     ecx, [esi+ecx*4+800h]
25987
                xor     ebx, eax
25988
                mov     edx, [esi+edx*4+0C00h]
25989
                xor     ebx, ecx
25990
                mov     eax, [esp+14h]
25991
                xor     ebx, edx
25992
                mov     edx, eax
25993
                mov     [esp+10h], ebx
25994
                mov     ebx, eax
25995
                mov     ecx, eax
25996
                shr     eax, 8
25997
                and     ebx, ebp
25998
                shr     ecx, 10h
25999
                and     eax, ebp
26000
                and     ecx, ebp
26001
                mov     ebx, [esi+ebx*4]
26002
                shr     edx, 18h
26003
                mov     eax, [esi+eax*4+400h]
26004
                mov     ecx, [esi+ecx*4+800h]
26005
                xor     ebx, eax
26006
                mov     edx, [esi+edx*4+0C00h]
26007
                xor     ebx, ecx
26008
                mov     eax, [esp+18h]
26009
                xor     ebx, edx
26010
                mov     edx, eax
26011
                mov     [esp+14h], ebx
26012
                mov     ebx, eax
26013
                mov     ecx, eax
26014
                shr     eax, 8
26015
                and     ebx, ebp
26016
                shr     ecx, 10h
26017
                and     eax, ebp
26018
                and     ecx, ebp
26019
                mov     ebx, [esi+ebx*4]
26020
                shr     edx, 18h
26021
                mov     eax, [esi+eax*4+400h]
26022
                mov     ecx, [esi+ecx*4+800h]
26023
                xor     ebx, eax
26024
                mov     edx, [esi+edx*4+0C00h]
26025
                xor     ebx, ecx
26026
                mov     eax, [esp+1Ch]
26027
                xor     ebx, edx
26028
                mov     edx, eax
26029
                mov     [esp+18h], ebx
26030
                mov     ebx, eax
26031
                mov     ecx, eax
26032
                shr     eax, 8
26033
                and     ebx, ebp
26034
                shr     ecx, 10h
26035
                and     eax, ebp
26036
                mov     ebx, [esi+ebx*4]
26037
                and     ecx, ebp
26038
                shr     edx, 18h
26039
                mov     eax, [esi+eax*4+400h]
26040
                mov     ecx, [esi+ecx*4+800h]
26041
                xor     ebx, eax
26042
                mov     edx, [esi+edx*4+0C00h]
26043
                xor     ebx, ecx
26044
                xor     ebx, edx
26045
                mov     [esp+1Ch], ebx
26046
                mov     eax, [esp+20h]
26047
                mov     ebx, [esp+24h]
26048
                mov     ecx, [esp+28h]
26049
                mov     ebp, [esp+2Ch]
26050
                xor     eax, 4
26051
                mov     edi, ebp
26052
                ror     ebp, 8
26053
                xor     eax, ebp
26054
                mov     ebp, 0FFh
26055
                xor     ebx, eax
26056
                mov     [esp+30h], eax
26057
                mov     eax, [esp+20h]
26058
                xor     ecx, ebx
26059
                mov     [esp+34h], ebx
26060
                xor     edi, ecx
26061
                mov     [esp+38h], ecx
26062
                mov     [esp+3Ch], edi
26063
                mov     edx, eax
26064
                mov     ebx, eax
26065
                mov     ecx, eax
26066
                shr     eax, 8
26067
                and     ebx, ebp
26068
                shr     ecx, 10h
26069
                and     eax, ebp
26070
                and     ecx, ebp
26071
                mov     ebx, [esi+ebx*4]
26072
                shr     edx, 18h
26073
                mov     eax, [esi+eax*4+400h]
26074
                mov     ecx, [esi+ecx*4+800h]
26075
                xor     ebx, eax
26076
                mov     edx, [esi+edx*4+0C00h]
26077
                xor     ebx, ecx
26078
                mov     eax, [esp+24h]
26079
                xor     ebx, edx
26080
                mov     edx, eax
26081
                mov     [esp+20h], ebx
26082
                mov     ebx, eax
26083
                mov     ecx, eax
26084
                shr     eax, 8
26085
                and     ebx, ebp
26086
                shr     ecx, 10h
26087
                and     eax, ebp
26088
                and     ecx, ebp
26089
                mov     ebx, [esi+ebx*4]
26090
                shr     edx, 18h
26091
                mov     eax, [esi+eax*4+400h]
26092
                mov     ecx, [esi+ecx*4+800h]
26093
                xor     ebx, eax
26094
                mov     edx, [esi+edx*4+0C00h]
26095
                xor     ebx, ecx
26096
                mov     eax, [esp+28h]
26097
                xor     ebx, edx
26098
                mov     edx, eax
26099
                mov     [esp+24h], ebx
26100
                mov     ebx, eax
26101
                mov     ecx, eax
26102
                shr     eax, 8
26103
                and     ebx, ebp
26104
                shr     ecx, 10h
26105
                and     eax, ebp
26106
                and     ecx, ebp
26107
                mov     ebx, [esi+ebx*4]
26108
                shr     edx, 18h
26109
                mov     eax, [esi+eax*4+400h]
26110
                mov     ecx, [esi+ecx*4+800h]
26111
                xor     ebx, eax
26112
                mov     edx, [esi+edx*4+0C00h]
26113
                xor     ebx, ecx
26114
                mov     eax, [esp+2Ch]
26115
                xor     ebx, edx
26116
                mov     edx, eax
26117
                mov     [esp+28h], ebx
26118
                mov     ebx, eax
26119
                mov     ecx, eax
26120
                shr     eax, 8
26121
                and     ebx, ebp
26122
                shr     ecx, 10h
26123
                and     eax, ebp
26124
                mov     ebx, [esi+ebx*4]
26125
                and     ecx, ebp
26126
                shr     edx, 18h
26127
                mov     eax, [esi+eax*4+400h]
26128
                mov     ecx, [esi+ecx*4+800h]
26129
                xor     ebx, eax
26130
                mov     edx, [esi+edx*4+0C00h]
26131
                xor     ebx, ecx
26132
                xor     ebx, edx
26133
                mov     [esp+2Ch], ebx
26134
                mov     eax, [esp+30h]
26135
                mov     ebx, [esp+34h]
26136
                mov     ecx, [esp+38h]
26137
                mov     ebp, [esp+3Ch]
26138
                xor     eax, 8
26139
                mov     edi, ebp
26140
                ror     ebp, 8
26141
                xor     eax, ebp
26142
                mov     ebp, 0FFh
26143
                xor     ebx, eax
26144
                mov     [esp+40h], eax
26145
                mov     eax, [esp+30h]
26146
                xor     ecx, ebx
26147
                mov     [esp+44h], ebx
26148
                xor     edi, ecx
26149
                mov     [esp+48h], ecx
26150
                mov     [esp+4Ch], edi
26151
                mov     edx, eax
26152
                mov     ebx, eax
26153
                mov     ecx, eax
26154
                shr     eax, 8
26155
                and     ebx, ebp
26156
                shr     ecx, 10h
26157
                and     eax, ebp
26158
                and     ecx, ebp
26159
                mov     ebx, [esi+ebx*4]
26160
                shr     edx, 18h
26161
                mov     eax, [esi+eax*4+400h]
26162
                mov     ecx, [esi+ecx*4+800h]
26163
                xor     ebx, eax
26164
                mov     edx, [esi+edx*4+0C00h]
26165
                xor     ebx, ecx
26166
                mov     eax, [esp+34h]
26167
                xor     ebx, edx
26168
                mov     edx, eax
26169
                mov     [esp+30h], ebx
26170
                mov     ebx, eax
26171
                mov     ecx, eax
26172
                shr     eax, 8
26173
                and     ebx, ebp
26174
                shr     ecx, 10h
26175
                and     eax, ebp
26176
                and     ecx, ebp
26177
                mov     ebx, [esi+ebx*4]
26178
                shr     edx, 18h
26179
                mov     eax, [esi+eax*4+400h]
26180
                mov     ecx, [esi+ecx*4+800h]
26181
                xor     ebx, eax
26182
                mov     edx, [esi+edx*4+0C00h]
26183
                xor     ebx, ecx
26184
                mov     eax, [esp+38h]
26185
                xor     ebx, edx
26186
                mov     edx, eax
26187
                mov     [esp+34h], ebx
26188
                mov     ebx, eax
26189
                mov     ecx, eax
26190
                shr     eax, 8
26191
                and     ebx, ebp
26192
                shr     ecx, 10h
26193
                and     eax, ebp
26194
                and     ecx, ebp
26195
                mov     ebx, [esi+ebx*4]
26196
                shr     edx, 18h
26197
                mov     eax, [esi+eax*4+400h]
26198
                mov     ecx, [esi+ecx*4+800h]
26199
                xor     ebx, eax
26200
                mov     edx, [esi+edx*4+0C00h]
26201
                xor     ebx, ecx
26202
                mov     eax, [esp+3Ch]
26203
                xor     ebx, edx
26204
                mov     edx, eax
26205
                mov     [esp+38h], ebx
26206
                mov     ebx, eax
26207
                mov     ecx, eax
26208
                shr     eax, 8
26209
                and     ebx, ebp
26210
                shr     ecx, 10h
26211
                and     eax, ebp
26212
                mov     ebx, [esi+ebx*4]
26213
                and     ecx, ebp
26214
                shr     edx, 18h
26215
                mov     eax, [esi+eax*4+400h]
26216
                mov     ecx, [esi+ecx*4+800h]
26217
                xor     ebx, eax
26218
                mov     edx, [esi+edx*4+0C00h]
26219
                xor     ebx, ecx
26220
                xor     ebx, edx
26221
                mov     [esp+3Ch], ebx
26222
                mov     eax, [esp+40h]
26223
                mov     ebx, [esp+44h]
26224
                mov     ecx, [esp+48h]
26225
                mov     ebp, [esp+4Ch]
26226
                xor     eax, 10h
26227
                mov     edi, ebp
26228
                ror     ebp, 8
26229
                xor     eax, ebp
26230
                mov     ebp, 0FFh
26231
                xor     ebx, eax
26232
                mov     [esp+50h], eax
26233
                mov     eax, [esp+40h]
26234
                xor     ecx, ebx
26235
                mov     [esp+54h], ebx
26236
                xor     edi, ecx
26237
                mov     [esp+58h], ecx
26238
                mov     [esp+5Ch], edi
26239
                mov     edx, eax
26240
                mov     ebx, eax
26241
                mov     ecx, eax
26242
                shr     eax, 8
26243
                and     ebx, ebp
26244
                shr     ecx, 10h
26245
                and     eax, ebp
26246
                and     ecx, ebp
26247
                mov     ebx, [esi+ebx*4]
26248
                shr     edx, 18h
26249
                mov     eax, [esi+eax*4+400h]
26250
                mov     ecx, [esi+ecx*4+800h]
26251
                xor     ebx, eax
26252
                mov     edx, [esi+edx*4+0C00h]
26253
                xor     ebx, ecx
26254
                mov     eax, [esp+44h]
26255
                xor     ebx, edx
26256
                mov     edx, eax
26257
                mov     [esp+40h], ebx
26258
                mov     ebx, eax
26259
                mov     ecx, eax
26260
                shr     eax, 8
26261
                and     ebx, ebp
26262
                shr     ecx, 10h
26263
                and     eax, ebp
26264
                and     ecx, ebp
26265
                mov     ebx, [esi+ebx*4]
26266
                shr     edx, 18h
26267
                mov     eax, [esi+eax*4+400h]
26268
                mov     ecx, [esi+ecx*4+800h]
26269
                xor     ebx, eax
26270
                mov     edx, [esi+edx*4+0C00h]
26271
                xor     ebx, ecx
26272
                mov     eax, [esp+48h]
26273
                xor     ebx, edx
26274
                mov     edx, eax
26275
                mov     [esp+44h], ebx
26276
                mov     ebx, eax
26277
                mov     ecx, eax
26278
                shr     eax, 8
26279
                and     ebx, ebp
26280
                shr     ecx, 10h
26281
                and     eax, ebp
26282
                and     ecx, ebp
26283
                mov     ebx, [esi+ebx*4]
26284
                shr     edx, 18h
26285
                mov     eax, [esi+eax*4+400h]
26286
                mov     ecx, [esi+ecx*4+800h]
26287
                xor     ebx, eax
26288
                mov     edx, [esi+edx*4+0C00h]
26289
                xor     ebx, ecx
26290
                mov     eax, [esp+4Ch]
26291
                xor     ebx, edx
26292
                mov     edx, eax
26293
                mov     [esp+48h], ebx
26294
                mov     ebx, eax
26295
                mov     ecx, eax
26296
                shr     eax, 8
26297
                and     ebx, ebp
26298
                shr     ecx, 10h
26299
                and     eax, ebp
26300
                mov     ebx, [esi+ebx*4]
26301
                and     ecx, ebp
26302
                shr     edx, 18h
26303
                mov     eax, [esi+eax*4+400h]
26304
                mov     ecx, [esi+ecx*4+800h]
26305
                xor     ebx, eax
26306
                mov     edx, [esi+edx*4+0C00h]
26307
                xor     ebx, ecx
26308
                xor     ebx, edx
26309
                mov     [esp+4Ch], ebx
26310
                mov     eax, [esp+50h]
26311
                mov     ebx, [esp+54h]
26312
                mov     ecx, [esp+58h]
26313
                mov     ebp, [esp+5Ch]
26314
                xor     eax, 20h
26315
                mov     edi, ebp
26316
                ror     ebp, 8
26317
                xor     eax, ebp
26318
                mov     ebp, 0FFh
26319
                xor     ebx, eax
26320
                mov     [esp+60h], eax
26321
                mov     eax, [esp+50h]
26322
                xor     ecx, ebx
26323
                mov     [esp+64h], ebx
26324
                xor     edi, ecx
26325
                mov     [esp+68h], ecx
26326
                mov     [esp+6Ch], edi
26327
                mov     edx, eax
26328
                mov     ebx, eax
26329
                mov     ecx, eax
26330
                shr     eax, 8
26331
                and     ebx, ebp
26332
                shr     ecx, 10h
26333
                and     eax, ebp
26334
                and     ecx, ebp
26335
                mov     ebx, [esi+ebx*4]
26336
                shr     edx, 18h
26337
                mov     eax, [esi+eax*4+400h]
26338
                mov     ecx, [esi+ecx*4+800h]
26339
                xor     ebx, eax
26340
                mov     edx, [esi+edx*4+0C00h]
26341
                xor     ebx, ecx
26342
                mov     eax, [esp+54h]
26343
                xor     ebx, edx
26344
                mov     edx, eax
26345
                mov     [esp+50h], ebx
26346
                mov     ebx, eax
26347
                mov     ecx, eax
26348
                shr     eax, 8
26349
                and     ebx, ebp
26350
                shr     ecx, 10h
26351
                and     eax, ebp
26352
                and     ecx, ebp
26353
                mov     ebx, [esi+ebx*4]
26354
                shr     edx, 18h
26355
                mov     eax, [esi+eax*4+400h]
26356
                mov     ecx, [esi+ecx*4+800h]
26357
                xor     ebx, eax
26358
                mov     edx, [esi+edx*4+0C00h]
26359
                xor     ebx, ecx
26360
                mov     eax, [esp+58h]
26361
                xor     ebx, edx
26362
                mov     edx, eax
26363
                mov     [esp+54h], ebx
26364
                mov     ebx, eax
26365
                mov     ecx, eax
26366
                shr     eax, 8
26367
                and     ebx, ebp
26368
                shr     ecx, 10h
26369
                and     eax, ebp
26370
                and     ecx, ebp
26371
                mov     ebx, [esi+ebx*4]
26372
                shr     edx, 18h
26373
                mov     eax, [esi+eax*4+400h]
26374
                mov     ecx, [esi+ecx*4+800h]
26375
                xor     ebx, eax
26376
                mov     edx, [esi+edx*4+0C00h]
26377
                xor     ebx, ecx
26378
                mov     eax, [esp+5Ch]
26379
                xor     ebx, edx
26380
                mov     edx, eax
26381
                mov     [esp+58h], ebx
26382
                mov     ebx, eax
26383
                mov     ecx, eax
26384
                shr     eax, 8
26385
                and     ebx, ebp
26386
                shr     ecx, 10h
26387
                and     eax, ebp
26388
                mov     ebx, [esi+ebx*4]
26389
                and     ecx, ebp
26390
                shr     edx, 18h
26391
                mov     eax, [esi+eax*4+400h]
26392
                mov     ecx, [esi+ecx*4+800h]
26393
                xor     ebx, eax
26394
                mov     edx, [esi+edx*4+0C00h]
26395
                xor     ebx, ecx
26396
                xor     ebx, edx
26397
                mov     [esp+5Ch], ebx
26398
                mov     eax, [esp+60h]
26399
                mov     ebx, [esp+64h]
26400
                mov     ecx, [esp+68h]
26401
                mov     ebp, [esp+6Ch]
26402
                xor     eax, 40h
26403
                mov     edi, ebp
26404
                ror     ebp, 8
26405
                xor     eax, ebp
26406
                mov     ebp, 0FFh
26407
                xor     ebx, eax
26408
                mov     [esp+70h], eax
26409
                mov     eax, [esp+60h]
26410
                xor     ecx, ebx
26411
                mov     [esp+74h], ebx
26412
                xor     edi, ecx
26413
                mov     [esp+78h], ecx
26414
                mov     [esp+7Ch], edi
26415
                mov     edx, eax
26416
                mov     ebx, eax
26417
                mov     ecx, eax
26418
                shr     eax, 8
26419
                and     ebx, ebp
26420
                shr     ecx, 10h
26421
                and     eax, ebp
26422
                and     ecx, ebp
26423
                mov     ebx, [esi+ebx*4]
26424
                shr     edx, 18h
26425
                mov     eax, [esi+eax*4+400h]
26426
                mov     ecx, [esi+ecx*4+800h]
26427
                xor     ebx, eax
26428
                mov     edx, [esi+edx*4+0C00h]
26429
                xor     ebx, ecx
26430
                mov     eax, [esp+64h]
26431
                xor     ebx, edx
26432
                mov     edx, eax
26433
                mov     [esp+60h], ebx
26434
                mov     ebx, eax
26435
                mov     ecx, eax
26436
                shr     eax, 8
26437
                and     ebx, ebp
26438
                shr     ecx, 10h
26439
                and     eax, ebp
26440
                and     ecx, ebp
26441
                mov     ebx, [esi+ebx*4]
26442
                shr     edx, 18h
26443
                mov     eax, [esi+eax*4+400h]
26444
                mov     ecx, [esi+ecx*4+800h]
26445
                xor     ebx, eax
26446
                mov     edx, [esi+edx*4+0C00h]
26447
                xor     ebx, ecx
26448
                mov     eax, [esp+68h]
26449
                xor     ebx, edx
26450
                mov     edx, eax
26451
                mov     [esp+64h], ebx
26452
                mov     ebx, eax
26453
                mov     ecx, eax
26454
                shr     eax, 8
26455
                and     ebx, ebp
26456
                shr     ecx, 10h
26457
                and     eax, ebp
26458
                and     ecx, ebp
26459
                mov     ebx, [esi+ebx*4]
26460
                shr     edx, 18h
26461
                mov     eax, [esi+eax*4+400h]
26462
                mov     ecx, [esi+ecx*4+800h]
26463
                xor     ebx, eax
26464
                mov     edx, [esi+edx*4+0C00h]
26465
                xor     ebx, ecx
26466
                mov     eax, [esp+6Ch]
26467
                xor     ebx, edx
26468
                mov     edx, eax
26469
                mov     [esp+68h], ebx
26470
                mov     ebx, eax
26471
                mov     ecx, eax
26472
                shr     eax, 8
26473
                and     ebx, ebp
26474
                shr     ecx, 10h
26475
                and     eax, ebp
26476
                mov     ebx, [esi+ebx*4]
26477
                and     ecx, ebp
26478
                shr     edx, 18h
26479
                mov     eax, [esi+eax*4+400h]
26480
                mov     ecx, [esi+ecx*4+800h]
26481
                xor     ebx, eax
26482
                mov     edx, [esi+edx*4+0C00h]
26483
                xor     ebx, ecx
26484
                xor     ebx, edx
26485
                mov     [esp+6Ch], ebx
26486
                mov     eax, [esp+70h]
26487
                mov     ebx, [esp+74h]
26488
                mov     ecx, [esp+78h]
26489
                mov     ebp, [esp+7Ch]
26490
                xor     eax, 80h
26491
                mov     edi, ebp
26492
                ror     ebp, 8
26493
                xor     eax, ebp
26494
                mov     ebp, 0FFh
26495
                xor     ebx, eax
26496
                mov     [esp+80h], eax
26497
                mov     eax, [esp+70h]
26498
                xor     ecx, ebx
26499
                mov     [esp+84h], ebx
26500
                xor     edi, ecx
26501
                mov     [esp+88h], ecx
26502
                mov     [esp+8Ch], edi
26503
                mov     edx, eax
26504
                mov     ebx, eax
26505
                mov     ecx, eax
26506
                shr     eax, 8
26507
                and     ebx, ebp
26508
                shr     ecx, 10h
26509
                and     eax, ebp
26510
                and     ecx, ebp
26511
                mov     ebx, [esi+ebx*4]
26512
                shr     edx, 18h
26513
                mov     eax, [esi+eax*4+400h]
26514
                mov     ecx, [esi+ecx*4+800h]
26515
                xor     ebx, eax
26516
                mov     edx, [esi+edx*4+0C00h]
26517
                xor     ebx, ecx
26518
                mov     eax, [esp+74h]
26519
                xor     ebx, edx
26520
                mov     edx, eax
26521
                mov     [esp+70h], ebx
26522
                mov     ebx, eax
26523
                mov     ecx, eax
26524
                shr     eax, 8
26525
                and     ebx, ebp
26526
                shr     ecx, 10h
26527
                and     eax, ebp
26528
                and     ecx, ebp
26529
                mov     ebx, [esi+ebx*4]
26530
                shr     edx, 18h
26531
                mov     eax, [esi+eax*4+400h]
26532
                mov     ecx, [esi+ecx*4+800h]
26533
                xor     ebx, eax
26534
                mov     edx, [esi+edx*4+0C00h]
26535
                xor     ebx, ecx
26536
                mov     eax, [esp+78h]
26537
                xor     ebx, edx
26538
                mov     edx, eax
26539
                mov     [esp+74h], ebx
26540
                mov     ebx, eax
26541
                mov     ecx, eax
26542
                shr     eax, 8
26543
                and     ebx, ebp
26544
                shr     ecx, 10h
26545
                and     eax, ebp
26546
                and     ecx, ebp
26547
                mov     ebx, [esi+ebx*4]
26548
                shr     edx, 18h
26549
                mov     eax, [esi+eax*4+400h]
26550
                mov     ecx, [esi+ecx*4+800h]
26551
                xor     ebx, eax
26552
                mov     edx, [esi+edx*4+0C00h]
26553
                xor     ebx, ecx
26554
                mov     eax, [esp+7Ch]
26555
                xor     ebx, edx
26556
                mov     edx, eax
26557
                mov     [esp+78h], ebx
26558
                mov     ebx, eax
26559
                mov     ecx, eax
26560
                shr     eax, 8
26561
                and     ebx, ebp
26562
                shr     ecx, 10h
26563
                and     eax, ebp
26564
                mov     ebx, [esi+ebx*4]
26565
                and     ecx, ebp
26566
                shr     edx, 18h
26567
                mov     eax, [esi+eax*4+400h]
26568
                mov     ecx, [esi+ecx*4+800h]
26569
                xor     ebx, eax
26570
                mov     edx, [esi+edx*4+0C00h]
26571
                xor     ebx, ecx
26572
                xor     ebx, edx
26573
                mov     [esp+7Ch], ebx
26574
                mov     esi, [esp+94h]
26575
                mov     eax, [esp]
26576
                mov     ebx, [esp+4]
26577
                mov     ecx, [esp+8]
26578
                mov     edx, [esp+0Ch]
26579
                mov     edi, [esi]
26580
                mov     ebp, [esi+4]
26581
                xor     eax, edi
26582
                xor     ebx, ebp
26583
                mov     edi, [esi+8]
26584
                mov     ebp, [esi+0Ch]
26585
                mov     [esp], eax
26586
                mov     [esp+4], ebx
26587
                xor     ecx, edi
26588
                xor     edx, ebp
26589
                mov     [esp+8], ecx
26590
                mov     [esp+0Ch], edx
26591
                mov     esi, [esp+9Ch]
26592
                mov     eax, [esp]
26593
                mov     ecx, [esp+4]
26594
                mov     ebx, eax
26595
                mov     edx, ecx
26596
                shr     eax, 8
26597
                mov     edi, [esp+8]
26598
                and     ebx, 0FFh
26599
                mov     ebp, [esp+0Ch]
26600
                shr     ecx, 8
26601
                and     eax, 0FFh
26602
                and     edx, 0FFh
26603
                and     ecx, 0FFh
26604
                mov     ebx, [esi+ebx*4]
26605
                mov     eax, [esi+eax*4]
26606
                mov     edx, [esi+edx*4+400h]
26607
                mov     ecx, [esi+ecx*4+400h]
26608
                xor     ebx, edx
26609
                mov     edx, edi
26610
                shr     edi, 8
26611
                xor     eax, ecx
26612
                mov     ecx, ebp
26613
                and     edx, 0FFh
26614
                shr     ebp, 8
26615
                and     edi, 0FFh
26616
                and     ecx, 0FFh
26617
                mov     edx, [esi+edx*4+800h]
26618
                and     ebp, 0FFh
26619
                mov     edi, [esi+edi*4+800h]
26620
                xor     ebx, edx
26621
                mov     edx, [esp+10h]
26622
                mov     ecx, [esi+ecx*4+0C00h]
26623
                xor     eax, edi
26624
                xor     ebx, ecx
26625
                mov     ecx, [esp+14h]
26626
                xor     ebx, edx
26627
                xor     eax, ecx
26628
                mov     ebp, [esi+ebp*4+0C00h]
26629
                mov     [esp+10h], ebx
26630
                xor     eax, ebp
26631
                mov     [esp+14h], eax
26632
                mov     ecx, [esp]
26633
                mov     edx, [esp+4]
26634
                mov     edi, ecx
26635
                shr     ecx, 10h
26636
                mov     eax, [esp+8]
26637
                mov     ebp, edx
26638
                mov     ebx, [esp+0Ch]
26639
                shr     edx, 10h
26640
                and     ecx, 0FFh
26641
                shr     edi, 18h
26642
                and     edx, 0FFh
26643
                shr     ebp, 18h
26644
                mov     ecx, [esi+ecx*4]
26645
                shr     eax, 10h
26646
                mov     edi, [esi+edi*4]
26647
                shr     ebx, 10h
26648
                mov     edx, [esi+edx*4+400h]
26649
                mov     ebp, [esi+ebp*4+400h]
26650
                xor     ecx, edx
26651
                mov     edx, eax
26652
                xor     edi, ebp
26653
                shr     eax, 8
26654
                mov     ebp, ebx
26655
                and     edx, 0FFh
26656
                and     ebx, 0FFh
26657
                shr     ebp, 8
26658
                mov     eax, [esi+eax*4+800h]
26659
                mov     edx, [esi+edx*4+800h]
26660
                xor     edi, eax
26661
                xor     ecx, edx
26662
                mov     ebx, [esi+ebx*4+0C00h]
26663
                mov     ebp, [esi+ebp*4+0C00h]
26664
                xor     ecx, ebx
26665
                xor     edi, ebp
26666
                mov     eax, [esp+18h]
26667
                mov     ebx, [esp+1Ch]
26668
                xor     ecx, eax
26669
                xor     edi, ebx
26670
                mov     [esp+18h], ecx
26671
                mov     [esp+1Ch], edi
26672
                mov     eax, [esp+10h]
26673
                mov     ecx, [esp+14h]
26674
                mov     ebx, eax
26675
                mov     edx, ecx
26676
                shr     eax, 8
26677
                mov     edi, [esp+18h]
26678
                and     ebx, 0FFh
26679
                mov     ebp, [esp+1Ch]
26680
                shr     ecx, 8
26681
                and     eax, 0FFh
26682
                and     edx, 0FFh
26683
                and     ecx, 0FFh
26684
                mov     ebx, [esi+ebx*4]
26685
                mov     eax, [esi+eax*4]
26686
                mov     edx, [esi+edx*4+400h]
26687
                mov     ecx, [esi+ecx*4+400h]
26688
                xor     ebx, edx
26689
                mov     edx, edi
26690
                shr     edi, 8
26691
                xor     eax, ecx
26692
                mov     ecx, ebp
26693
                and     edx, 0FFh
26694
                shr     ebp, 8
26695
                and     edi, 0FFh
26696
                and     ecx, 0FFh
26697
                mov     edx, [esi+edx*4+800h]
26698
                and     ebp, 0FFh
26699
                mov     edi, [esi+edi*4+800h]
26700
                xor     ebx, edx
26701
                mov     edx, [esp+20h]
26702
                mov     ecx, [esi+ecx*4+0C00h]
26703
                xor     eax, edi
26704
                xor     ebx, ecx
26705
                mov     ecx, [esp+24h]
26706
                xor     ebx, edx
26707
                xor     eax, ecx
26708
                mov     ebp, [esi+ebp*4+0C00h]
26709
                mov     [esp+20h], ebx
26710
                xor     eax, ebp
26711
                mov     [esp+24h], eax
26712
                mov     ecx, [esp+10h]
26713
                mov     edx, [esp+14h]
26714
                mov     edi, ecx
26715
                shr     ecx, 10h
26716
                mov     eax, [esp+18h]
26717
                mov     ebp, edx
26718
                mov     ebx, [esp+1Ch]
26719
                shr     edx, 10h
26720
                and     ecx, 0FFh
26721
                shr     edi, 18h
26722
                and     edx, 0FFh
26723
                shr     ebp, 18h
26724
                mov     ecx, [esi+ecx*4]
26725
                shr     eax, 10h
26726
                mov     edi, [esi+edi*4]
26727
                shr     ebx, 10h
26728
                mov     edx, [esi+edx*4+400h]
26729
                mov     ebp, [esi+ebp*4+400h]
26730
                xor     ecx, edx
26731
                mov     edx, eax
26732
                xor     edi, ebp
26733
                shr     eax, 8
26734
                mov     ebp, ebx
26735
                and     edx, 0FFh
26736
                and     ebx, 0FFh
26737
                shr     ebp, 8
26738
                mov     eax, [esi+eax*4+800h]
26739
                mov     edx, [esi+edx*4+800h]
26740
                xor     edi, eax
26741
                xor     ecx, edx
26742
                mov     ebx, [esi+ebx*4+0C00h]
26743
                mov     ebp, [esi+ebp*4+0C00h]
26744
                xor     ecx, ebx
26745
                xor     edi, ebp
26746
                mov     eax, [esp+28h]
26747
                mov     ebx, [esp+2Ch]
26748
                xor     ecx, eax
26749
                xor     edi, ebx
26750
                mov     [esp+28h], ecx
26751
                mov     [esp+2Ch], edi
26752
                mov     eax, [esp+20h]
26753
                mov     ecx, [esp+24h]
26754
                mov     ebx, eax
26755
                mov     edx, ecx
26756
                shr     eax, 8
26757
                mov     edi, [esp+28h]
26758
                and     ebx, 0FFh
26759
                mov     ebp, [esp+2Ch]
26760
                shr     ecx, 8
26761
                and     eax, 0FFh
26762
                and     edx, 0FFh
26763
                and     ecx, 0FFh
26764
                mov     ebx, [esi+ebx*4]
26765
                mov     eax, [esi+eax*4]
26766
                mov     edx, [esi+edx*4+400h]
26767
                mov     ecx, [esi+ecx*4+400h]
26768
                xor     ebx, edx
26769
                mov     edx, edi
26770
                shr     edi, 8
26771
                xor     eax, ecx
26772
                mov     ecx, ebp
26773
                and     edx, 0FFh
26774
                shr     ebp, 8
26775
                and     edi, 0FFh
26776
                and     ecx, 0FFh
26777
                mov     edx, [esi+edx*4+800h]
26778
                and     ebp, 0FFh
26779
                mov     edi, [esi+edi*4+800h]
26780
                xor     ebx, edx
26781
                mov     edx, [esp+30h]
26782
                mov     ecx, [esi+ecx*4+0C00h]
26783
                xor     eax, edi
26784
                xor     ebx, ecx
26785
                mov     ecx, [esp+34h]
26786
                xor     ebx, edx
26787
                xor     eax, ecx
26788
                mov     ebp, [esi+ebp*4+0C00h]
26789
                mov     [esp+30h], ebx
26790
                xor     eax, ebp
26791
                mov     [esp+34h], eax
26792
                mov     ecx, [esp+20h]
26793
                mov     edx, [esp+24h]
26794
                mov     edi, ecx
26795
                shr     ecx, 10h
26796
                mov     eax, [esp+28h]
26797
                mov     ebp, edx
26798
                mov     ebx, [esp+2Ch]
26799
                shr     edx, 10h
26800
                and     ecx, 0FFh
26801
                shr     edi, 18h
26802
                and     edx, 0FFh
26803
                shr     ebp, 18h
26804
                mov     ecx, [esi+ecx*4]
26805
                shr     eax, 10h
26806
                mov     edi, [esi+edi*4]
26807
                shr     ebx, 10h
26808
                mov     edx, [esi+edx*4+400h]
26809
                mov     ebp, [esi+ebp*4+400h]
26810
                xor     ecx, edx
26811
                mov     edx, eax
26812
                xor     edi, ebp
26813
                shr     eax, 8
26814
                mov     ebp, ebx
26815
                and     edx, 0FFh
26816
                and     ebx, 0FFh
26817
                shr     ebp, 8
26818
                mov     eax, [esi+eax*4+800h]
26819
                mov     edx, [esi+edx*4+800h]
26820
                xor     edi, eax
26821
                xor     ecx, edx
26822
                mov     ebx, [esi+ebx*4+0C00h]
26823
                mov     ebp, [esi+ebp*4+0C00h]
26824
                xor     ecx, ebx
26825
                xor     edi, ebp
26826
                mov     eax, [esp+38h]
26827
                mov     ebx, [esp+3Ch]
26828
                xor     ecx, eax
26829
                xor     edi, ebx
26830
                mov     [esp+38h], ecx
26831
                mov     [esp+3Ch], edi
26832
                mov     eax, [esp+30h]
26833
                mov     ecx, [esp+34h]
26834
                mov     ebx, eax
26835
                mov     edx, ecx
26836
                shr     eax, 8
26837
                mov     edi, [esp+38h]
26838
                and     ebx, 0FFh
26839
                mov     ebp, [esp+3Ch]
26840
                shr     ecx, 8
26841
                and     eax, 0FFh
26842
                and     edx, 0FFh
26843
                and     ecx, 0FFh
26844
                mov     ebx, [esi+ebx*4]
26845
                mov     eax, [esi+eax*4]
26846
                mov     edx, [esi+edx*4+400h]
26847
                mov     ecx, [esi+ecx*4+400h]
26848
                xor     ebx, edx
26849
                mov     edx, edi
26850
                shr     edi, 8
26851
                xor     eax, ecx
26852
                mov     ecx, ebp
26853
                and     edx, 0FFh
26854
                shr     ebp, 8
26855
                and     edi, 0FFh
26856
                and     ecx, 0FFh
26857
                mov     edx, [esi+edx*4+800h]
26858
                and     ebp, 0FFh
26859
                mov     edi, [esi+edi*4+800h]
26860
                xor     ebx, edx
26861
                mov     edx, [esp+40h]
26862
                mov     ecx, [esi+ecx*4+0C00h]
26863
                xor     eax, edi
26864
                xor     ebx, ecx
26865
                mov     ecx, [esp+44h]
26866
                xor     ebx, edx
26867
                xor     eax, ecx
26868
                mov     ebp, [esi+ebp*4+0C00h]
26869
                mov     [esp+40h], ebx
26870
                xor     eax, ebp
26871
                mov     [esp+44h], eax
26872
                mov     ecx, [esp+30h]
26873
                mov     edx, [esp+34h]
26874
                mov     edi, ecx
26875
                shr     ecx, 10h
26876
                mov     eax, [esp+38h]
26877
                mov     ebp, edx
26878
                mov     ebx, [esp+3Ch]
26879
                shr     edx, 10h
26880
                and     ecx, 0FFh
26881
                shr     edi, 18h
26882
                and     edx, 0FFh
26883
                shr     ebp, 18h
26884
                mov     ecx, [esi+ecx*4]
26885
                shr     eax, 10h
26886
                mov     edi, [esi+edi*4]
26887
                shr     ebx, 10h
26888
                mov     edx, [esi+edx*4+400h]
26889
                mov     ebp, [esi+ebp*4+400h]
26890
                xor     ecx, edx
26891
                mov     edx, eax
26892
                xor     edi, ebp
26893
                shr     eax, 8
26894
                mov     ebp, ebx
26895
                and     edx, 0FFh
26896
                and     ebx, 0FFh
26897
                shr     ebp, 8
26898
                mov     eax, [esi+eax*4+800h]
26899
                mov     edx, [esi+edx*4+800h]
26900
                xor     edi, eax
26901
                xor     ecx, edx
26902
                mov     ebx, [esi+ebx*4+0C00h]
26903
                mov     ebp, [esi+ebp*4+0C00h]
26904
                xor     ecx, ebx
26905
                xor     edi, ebp
26906
                mov     eax, [esp+48h]
26907
                mov     ebx, [esp+4Ch]
26908
                xor     ecx, eax
26909
                xor     edi, ebx
26910
                mov     [esp+48h], ecx
26911
                mov     [esp+4Ch], edi
26912
                mov     eax, [esp+40h]
26913
                mov     ecx, [esp+44h]
26914
                mov     ebx, eax
26915
                mov     edx, ecx
26916
                shr     eax, 8
26917
                mov     edi, [esp+48h]
26918
                and     ebx, 0FFh
26919
                mov     ebp, [esp+4Ch]
26920
                shr     ecx, 8
26921
                and     eax, 0FFh
26922
                and     edx, 0FFh
26923
                and     ecx, 0FFh
26924
                mov     ebx, [esi+ebx*4]
26925
                mov     eax, [esi+eax*4]
26926
                mov     edx, [esi+edx*4+400h]
26927
                mov     ecx, [esi+ecx*4+400h]
26928
                xor     ebx, edx
26929
                mov     edx, edi
26930
                shr     edi, 8
26931
                xor     eax, ecx
26932
                mov     ecx, ebp
26933
                and     edx, 0FFh
26934
                shr     ebp, 8
26935
                and     edi, 0FFh
26936
                and     ecx, 0FFh
26937
                mov     edx, [esi+edx*4+800h]
26938
                and     ebp, 0FFh
26939
                mov     edi, [esi+edi*4+800h]
26940
                xor     ebx, edx
26941
                mov     edx, [esp+50h]
26942
                mov     ecx, [esi+ecx*4+0C00h]
26943
                xor     eax, edi
26944
                xor     ebx, ecx
26945
                mov     ecx, [esp+54h]
26946
                xor     ebx, edx
26947
                xor     eax, ecx
26948
                mov     ebp, [esi+ebp*4+0C00h]
26949
                mov     [esp+50h], ebx
26950
                xor     eax, ebp
26951
                mov     [esp+54h], eax
26952
                mov     ecx, [esp+40h]
26953
                mov     edx, [esp+44h]
26954
                mov     edi, ecx
26955
                shr     ecx, 10h
26956
                mov     eax, [esp+48h]
26957
                mov     ebp, edx
26958
                mov     ebx, [esp+4Ch]
26959
                shr     edx, 10h
26960
                and     ecx, 0FFh
26961
                shr     edi, 18h
26962
                and     edx, 0FFh
26963
                shr     ebp, 18h
26964
                mov     ecx, [esi+ecx*4]
26965
                shr     eax, 10h
26966
                mov     edi, [esi+edi*4]
26967
                shr     ebx, 10h
26968
                mov     edx, [esi+edx*4+400h]
26969
                mov     ebp, [esi+ebp*4+400h]
26970
                xor     ecx, edx
26971
                mov     edx, eax
26972
                xor     edi, ebp
26973
                shr     eax, 8
26974
                mov     ebp, ebx
26975
                and     edx, 0FFh
26976
                and     ebx, 0FFh
26977
                shr     ebp, 8
26978
                mov     eax, [esi+eax*4+800h]
26979
                mov     edx, [esi+edx*4+800h]
26980
                xor     edi, eax
26981
                xor     ecx, edx
26982
                mov     ebx, [esi+ebx*4+0C00h]
26983
                mov     ebp, [esi+ebp*4+0C00h]
26984
                xor     ecx, ebx
26985
                xor     edi, ebp
26986
                mov     eax, [esp+58h]
26987
                mov     ebx, [esp+5Ch]
26988
                xor     ecx, eax
26989
                xor     edi, ebx
26990
                mov     [esp+58h], ecx
26991
                mov     [esp+5Ch], edi
26992
                mov     eax, [esp+50h]
26993
                mov     ecx, [esp+54h]
26994
                mov     ebx, eax
26995
                mov     edx, ecx
26996
                shr     eax, 8
26997
                mov     edi, [esp+58h]
26998
                and     ebx, 0FFh
26999
                mov     ebp, [esp+5Ch]
27000
                shr     ecx, 8
27001
                and     eax, 0FFh
27002
                and     edx, 0FFh
27003
                and     ecx, 0FFh
27004
                mov     ebx, [esi+ebx*4]
27005
                mov     eax, [esi+eax*4]
27006
                mov     edx, [esi+edx*4+400h]
27007
                mov     ecx, [esi+ecx*4+400h]
27008
                xor     ebx, edx
27009
                mov     edx, edi
27010
                shr     edi, 8
27011
                xor     eax, ecx
27012
                mov     ecx, ebp
27013
                and     edx, 0FFh
27014
                shr     ebp, 8
27015
                and     edi, 0FFh
27016
                and     ecx, 0FFh
27017
                mov     edx, [esi+edx*4+800h]
27018
                and     ebp, 0FFh
27019
                mov     edi, [esi+edi*4+800h]
27020
                xor     ebx, edx
27021
                mov     edx, [esp+60h]
27022
                mov     ecx, [esi+ecx*4+0C00h]
27023
                xor     eax, edi
27024
                xor     ebx, ecx
27025
                mov     ecx, [esp+64h]
27026
                xor     ebx, edx
27027
                xor     eax, ecx
27028
                mov     ebp, [esi+ebp*4+0C00h]
27029
                mov     [esp+60h], ebx
27030
                xor     eax, ebp
27031
                mov     [esp+64h], eax
27032
                mov     ecx, [esp+50h]
27033
                mov     edx, [esp+54h]
27034
                mov     edi, ecx
27035
                shr     ecx, 10h
27036
                mov     eax, [esp+58h]
27037
                mov     ebp, edx
27038
                mov     ebx, [esp+5Ch]
27039
                shr     edx, 10h
27040
                and     ecx, 0FFh
27041
                shr     edi, 18h
27042
                and     edx, 0FFh
27043
                shr     ebp, 18h
27044
                mov     ecx, [esi+ecx*4]
27045
                shr     eax, 10h
27046
                mov     edi, [esi+edi*4]
27047
                shr     ebx, 10h
27048
                mov     edx, [esi+edx*4+400h]
27049
                mov     ebp, [esi+ebp*4+400h]
27050
                xor     ecx, edx
27051
                mov     edx, eax
27052
                xor     edi, ebp
27053
                shr     eax, 8
27054
                mov     ebp, ebx
27055
                and     edx, 0FFh
27056
                and     ebx, 0FFh
27057
                shr     ebp, 8
27058
                mov     eax, [esi+eax*4+800h]
27059
                mov     edx, [esi+edx*4+800h]
27060
                xor     edi, eax
27061
                xor     ecx, edx
27062
                mov     ebx, [esi+ebx*4+0C00h]
27063
                mov     ebp, [esi+ebp*4+0C00h]
27064
                xor     ecx, ebx
27065
                xor     edi, ebp
27066
                mov     eax, [esp+68h]
27067
                mov     ebx, [esp+6Ch]
27068
                xor     ecx, eax
27069
                xor     edi, ebx
27070
                mov     [esp+68h], ecx
27071
                mov     [esp+6Ch], edi
27072
                mov     eax, [esp+60h]
27073
                mov     ecx, [esp+64h]
27074
                mov     ebx, eax
27075
                mov     edx, ecx
27076
                shr     eax, 8
27077
                mov     edi, [esp+68h]
27078
                and     ebx, 0FFh
27079
                mov     ebp, [esp+6Ch]
27080
                shr     ecx, 8
27081
                and     eax, 0FFh
27082
                and     edx, 0FFh
27083
                and     ecx, 0FFh
27084
                mov     ebx, [esi+ebx*4]
27085
                mov     eax, [esi+eax*4]
27086
                mov     edx, [esi+edx*4+400h]
27087
                mov     ecx, [esi+ecx*4+400h]
27088
                xor     ebx, edx
27089
                mov     edx, edi
27090
                shr     edi, 8
27091
                xor     eax, ecx
27092
                mov     ecx, ebp
27093
                and     edx, 0FFh
27094
                shr     ebp, 8
27095
                and     edi, 0FFh
27096
                and     ecx, 0FFh
27097
                mov     edx, [esi+edx*4+800h]
27098
                and     ebp, 0FFh
27099
                mov     edi, [esi+edi*4+800h]
27100
                xor     ebx, edx
27101
                mov     edx, [esp+70h]
27102
                mov     ecx, [esi+ecx*4+0C00h]
27103
                xor     eax, edi
27104
                xor     ebx, ecx
27105
                mov     ecx, [esp+74h]
27106
                xor     ebx, edx
27107
                xor     eax, ecx
27108
                mov     ebp, [esi+ebp*4+0C00h]
27109
                mov     [esp+70h], ebx
27110
                xor     eax, ebp
27111
                mov     [esp+74h], eax
27112
                mov     ecx, [esp+60h]
27113
                mov     edx, [esp+64h]
27114
                mov     edi, ecx
27115
                shr     ecx, 10h
27116
                mov     eax, [esp+68h]
27117
                mov     ebp, edx
27118
                mov     ebx, [esp+6Ch]
27119
                shr     edx, 10h
27120
                and     ecx, 0FFh
27121
                shr     edi, 18h
27122
                and     edx, 0FFh
27123
                shr     ebp, 18h
27124
                mov     ecx, [esi+ecx*4]
27125
                shr     eax, 10h
27126
                mov     edi, [esi+edi*4]
27127
                shr     ebx, 10h
27128
                mov     edx, [esi+edx*4+400h]
27129
                mov     ebp, [esi+ebp*4+400h]
27130
                xor     ecx, edx
27131
                mov     edx, eax
27132
                xor     edi, ebp
27133
                shr     eax, 8
27134
                mov     ebp, ebx
27135
                and     edx, 0FFh
27136
                and     ebx, 0FFh
27137
                shr     ebp, 8
27138
                mov     eax, [esi+eax*4+800h]
27139
                mov     edx, [esi+edx*4+800h]
27140
                xor     edi, eax
27141
                xor     ecx, edx
27142
                mov     ebx, [esi+ebx*4+0C00h]
27143
                mov     ebp, [esi+ebp*4+0C00h]
27144
                xor     ecx, ebx
27145
                xor     edi, ebp
27146
                mov     eax, [esp+78h]
27147
                mov     ebx, [esp+7Ch]
27148
                xor     ecx, eax
27149
                xor     edi, ebx
27150
                mov     [esp+78h], ecx
27151
                mov     [esp+7Ch], edi
27152
                mov     esi, [esp+0A0h]
27153
                mov     eax, [esp+70h]
27154
                mov     ebx, [esp+74h]
27155
                mov     ecx, eax
27156
                mov     edi, [esp+78h]
27157
                shr     eax, 8
27158
                mov     ebp, [esp+7Ch]
27159
                mov     edx, ebx
27160
                and     ecx, 0FFh
27161
                and     eax, 0FFh
27162
                shr     ebx, 8
27163
                and     edx, 0FFh
27164
                and     ebx, 0FFh
27165
                mov     ecx, [esi+ecx*4]
27166
                mov     edx, [esi+edx*4]
27167
                mov     eax, [esi+eax*4]
27168
                shl     edx, 8
27169
                mov     ebx, [esi+ebx*4]
27170
                shl     ebx, 8
27171
                xor     ecx, edx
27172
                mov     edx, edi
27173
                xor     eax, ebx
27174
                shr     edi, 8
27175
                mov     ebx, ebp
27176
                shr     ebp, 8
27177
                and     edx, 0FFh
27178
                and     edi, 0FFh
27179
                and     ebx, 0FFh
27180
                and     ebp, 0FFh
27181
                mov     edx, [esi+edx*4]
27182
                mov     edi, [esi+edi*4]
27183
                mov     ebx, [esi+ebx*4]
27184
                shl     edx, 10h
27185
                mov     ebp, [esi+ebp*4]
27186
                shl     edi, 10h
27187
                xor     ecx, edx
27188
                shl     ebx, 18h
27189
                xor     eax, edi
27190
                shl     ebp, 18h
27191
                mov     edx, [esp+94h]
27192
                xor     ecx, ebx
27193
                xor     eax, ebp
27194
                mov     ebx, [edx]
27195
                mov     ebp, [edx+4]
27196
                mov     edx, [esp+90h]
27197
                xor     ecx, ebx
27198
                xor     eax, ebp
27199
                mov     ebx, [esp+80h]
27200
                mov     ebp, [esp+84h]
27201
                xor     ecx, ebx
27202
                xor     eax, ebp
27203
                mov     [edx], ecx
27204
                mov     [edx+4], eax
27205
                mov     eax, [esp+70h]
27206
                mov     ebx, [esp+74h]
27207
                mov     ecx, eax
27208
                shr     eax, 10h
27209
                mov     edi, [esp+78h]
27210
                mov     ebp, [esp+7Ch]
27211
                mov     edx, ebx
27212
                shr     ebx, 10h
27213
                and     eax, 0FFh
27214
                shr     ecx, 18h
27215
                and     ebx, 0FFh
27216
                shr     edx, 18h
27217
                mov     eax, [esi+eax*4]
27218
                mov     ebx, [esi+ebx*4]
27219
                mov     ecx, [esi+ecx*4]
27220
                shl     ebx, 8
27221
                mov     edx, [esi+edx*4]
27222
                shl     edx, 8
27223
                xor     eax, ebx
27224
                mov     ebx, edi
27225
                xor     ecx, edx
27226
                shr     edi, 10h
27227
                mov     edx, ebp
27228
                shr     ebp, 10h
27229
                and     edi, 0FFh
27230
                shr     ebx, 18h
27231
                and     ebp, 0FFh
27232
                shr     edx, 18h
27233
                mov     edi, [esi+edi*4]
27234
                mov     ebx, [esi+ebx*4]
27235
                mov     ebp, [esi+ebp*4]
27236
                shl     edi, 10h
27237
                mov     edx, [esi+edx*4]
27238
                shl     ebp, 18h
27239
                xor     eax, edi
27240
                shl     ebx, 10h
27241
                xor     eax, ebp
27242
                shl     edx, 18h
27243
                mov     edi, [esp+94h]
27244
                xor     ecx, ebx
27245
                mov     ebx, [esp+88h]
27246
                xor     ecx, edx
27247
                mov     edx, [esp+8Ch]
27248
                xor     eax, ebx
27249
                mov     ebx, [edi+8]
27250
                mov     edi, [edi+0Ch]
27251
                xor     ecx, edx
27252
                mov     edx, [esp+90h]
27253
                mov     ebp, [esp+0A4h]
27254
                xor     eax, ebx
27255
                mov     esp, ebp
27256
                xor     ecx, edi
27257
                mov     [edx+8], eax
27258
                mov     [edx+0Ch], ecx
27259
                pop  ebp
27260
                pop  edi
27261
                pop  esi
27262
                pop  ebx
27263
end;
27264
{$ENDIF}
27265
 
27266
{$IFDEF THash_Snefru128_asm}
27267
procedure THash_Snefru128.DoTransform(Buffer: PLongArray);
27268
begin
27269
  SwapLongBuffer(Buffer[0], FDigest[4], 12);
27270
  asm
27271
                push    ebx
27272
                mov     eax, Self
27273
                push    esi
27274
                push    edi
27275
                lea     edi, [eax].THash_Snefru128.FDigest
27276
                push    ebp
27277
                lea     esi, Snefru_Data
27278
                mov     ecx, [eax].THash_Snefru128.FSecurity_Level
27279
 
27280
                mov     ebp, esp
27281
                add     esp, 0FFFFFF94h
27282
                and     esp, 0FFFFFFE0h
27283
                mov     [esp+60h], edi
27284
                mov     [esp+68h], ebp
27285
                mov     eax, [edi]
27286
                mov     ebx, [edi+4]
27287
                mov     ebp, [edi+8]
27288
                mov     edx, [edi+0Ch]
27289
                mov     [esp], eax
27290
                mov     [esp+4], ebx
27291
                mov     [esp+8], ebp
27292
                mov     [esp+0Ch], edx
27293
                mov     [esp+40h], eax
27294
                mov     [esp+44h], ebx
27295
                mov     [esp+48h], ebp
27296
                mov     [esp+4Ch], edx
27297
                mov     eax, [edi+10h]
27298
                mov     ebx, [edi+14h]
27299
                mov     ebp, [edi+18h]
27300
                mov     edx, [edi+1Ch]
27301
                mov     [esp+10h], eax
27302
                mov     [esp+14h], ebx
27303
                mov     [esp+18h], ebp
27304
                mov     [esp+1Ch], edx
27305
                mov     eax, [edi+20h]
27306
                mov     ebx, [edi+24h]
27307
                mov     ebp, [edi+28h]
27308
                mov     edx, [edi+2Ch]
27309
                mov     [esp+20h], eax
27310
                mov     [esp+24h], ebx
27311
                mov     [esp+28h], ebp
27312
                mov     [esp+2Ch], edx
27313
                mov     eax, [edi+30h]
27314
                mov     ebx, [edi+34h]
27315
                mov     ebp, [edi+38h]
27316
                mov     edx, [edi+3Ch]
27317
                mov     [esp+30h], eax
27318
                mov     [esp+34h], ebx
27319
                mov     [esp+38h], ebp
27320
                mov     [esp+3Ch], edx
27321
 
27322
@@_level_loop:
27323
                mov     [esp+64h], ecx
27324
                mov     ebx, [esp]
27325
                mov     ecx, [esp+4]
27326
                mov     edi, ebx
27327
                and     ebx, 0FFh
27328
                mov     eax, [esp+3Ch]
27329
                mov     ebx, [esi+ebx*4]
27330
                mov     edx, [esp+8]
27331
                xor     ecx, ebx
27332
                xor     eax, ebx
27333
                mov     ebp, ecx
27334
                and     ecx, 0FFh
27335
                mov     [esp+3Ch], eax
27336
                mov     ecx, [esi+ecx*4]
27337
                mov     ebx, [esp+0Ch]
27338
                xor     edx, ecx
27339
                xor     edi, ecx
27340
                mov     ecx, edx
27341
                and     edx, 0FFh
27342
                mov     [esp], edi
27343
                mov     edx, [esi+edx*4+400h]
27344
                mov     edi, [esp+10h]
27345
                xor     ebx, edx
27346
                xor     ebp, edx
27347
                mov     edx, ebx
27348
                and     ebx, 0FFh
27349
                ror     ebp, 10h
27350
                mov     ebx, [esi+ebx*4+400h]
27351
                mov     eax, [esp+14h]
27352
                mov     [esp+4], ebp
27353
                xor     edi, ebx
27354
                xor     ecx, ebx
27355
                mov     ebx, edi
27356
                and     edi, 0FFh
27357
                mov     ebp, [esp+18h]
27358
                ror     ecx, 10h
27359
                mov     edi, [esi+edi*4]
27360
                mov     [esp+8], ecx
27361
                xor     eax, edi
27362
                xor     edx, edi
27363
                mov     edi, eax
27364
                and     eax, 0FFh
27365
                ror     edx, 10h
27366
                mov     eax, [esi+eax*4]
27367
                mov     ecx, [esp+1Ch]
27368
                mov     [esp+0Ch], edx
27369
                xor     ebp, eax
27370
                xor     ebx, eax
27371
                mov     eax, ebp
27372
                and     ebp, 0FFh
27373
                mov     edx, [esp+20h]
27374
                ror     ebx, 10h
27375
                mov     ebp, [esi+ebp*4+400h]
27376
                mov     [esp+10h], ebx
27377
                xor     ecx, ebp
27378
                xor     edi, ebp
27379
                mov     ebp, ecx
27380
                and     ecx, 0FFh
27381
                ror     edi, 10h
27382
                mov     ecx, [esi+ecx*4+400h]
27383
                mov     ebx, [esp+24h]
27384
                mov     [esp+14h], edi
27385
                xor     edx, ecx
27386
                xor     eax, ecx
27387
                mov     ecx, edx
27388
                and     edx, 0FFh
27389
                mov     edi, [esp+28h]
27390
                ror     eax, 10h
27391
                mov     edx, [esi+edx*4]
27392
                mov     [esp+18h], eax
27393
                xor     ebx, edx
27394
                xor     ebp, edx
27395
                mov     edx, ebx
27396
                and     ebx, 0FFh
27397
                ror     ebp, 10h
27398
                mov     ebx, [esi+ebx*4]
27399
                mov     eax, [esp+2Ch]
27400
                mov     [esp+1Ch], ebp
27401
                xor     edi, ebx
27402
                xor     ecx, ebx
27403
                mov     ebx, edi
27404
                and     edi, 0FFh
27405
                mov     ebp, [esp+30h]
27406
                ror     ecx, 10h
27407
                mov     edi, [esi+edi*4+400h]
27408
                mov     [esp+20h], ecx
27409
                xor     eax, edi
27410
                xor     edx, edi
27411
                mov     edi, eax
27412
                and     eax, 0FFh
27413
                ror     edx, 10h
27414
                mov     eax, [esi+eax*4+400h]
27415
                mov     ecx, [esp+34h]
27416
                mov     [esp+24h], edx
27417
                xor     ebp, eax
27418
                xor     ebx, eax
27419
                mov     eax, ebp
27420
                and     ebp, 0FFh
27421
                mov     edx, [esp+38h]
27422
                ror     ebx, 10h
27423
                mov     ebp, [esi+ebp*4]
27424
                mov     [esp+28h], ebx
27425
                xor     ecx, ebp
27426
                xor     edi, ebp
27427
                mov     ebp, ecx
27428
                and     ecx, 0FFh
27429
                ror     edi, 10h
27430
                mov     ecx, [esi+ecx*4]
27431
                mov     ebx, [esp+3Ch]
27432
                mov     [esp+2Ch], edi
27433
                xor     edx, ecx
27434
                xor     eax, ecx
27435
                mov     ecx, edx
27436
                and     edx, 0FFh
27437
                mov     edi, [esp]
27438
                ror     eax, 10h
27439
                mov     edx, [esi+edx*4+400h]
27440
                mov     [esp+30h], eax
27441
                xor     ebx, edx
27442
                xor     ebp, edx
27443
                mov     edx, ebx
27444
                and     ebx, 0FFh
27445
                ror     ebp, 10h
27446
                ror     edx, 10h
27447
                mov     ebx, [esi+ebx*4+400h]
27448
                mov     [esp+34h], ebp
27449
                xor     edi, ebx
27450
                xor     ecx, ebx
27451
                ror     edi, 10h
27452
                ror     ecx, 10h
27453
                mov     [esp], edi
27454
                mov     [esp+38h], ecx
27455
                mov     [esp+3Ch], edx
27456
                mov     ebx, [esp]
27457
                mov     ecx, [esp+4]
27458
                mov     edi, ebx
27459
                and     ebx, 0FFh
27460
                mov     eax, [esp+3Ch]
27461
                mov     ebx, [esi+ebx*4]
27462
                mov     edx, [esp+8]
27463
                xor     ecx, ebx
27464
                xor     eax, ebx
27465
                mov     ebp, ecx
27466
                and     ecx, 0FFh
27467
                mov     [esp+3Ch], eax
27468
                mov     ecx, [esi+ecx*4]
27469
                mov     ebx, [esp+0Ch]
27470
                xor     edx, ecx
27471
                xor     edi, ecx
27472
                mov     ecx, edx
27473
                and     edx, 0FFh
27474
                mov     [esp], edi
27475
                mov     edx, [esi+edx*4+400h]
27476
                mov     edi, [esp+10h]
27477
                xor     ebx, edx
27478
                xor     ebp, edx
27479
                mov     edx, ebx
27480
                and     ebx, 0FFh
27481
                ror     ebp, 8
27482
                mov     ebx, [esi+ebx*4+400h]
27483
                mov     eax, [esp+14h]
27484
                mov     [esp+4], ebp
27485
                xor     edi, ebx
27486
                xor     ecx, ebx
27487
                mov     ebx, edi
27488
                and     edi, 0FFh
27489
                mov     ebp, [esp+18h]
27490
                ror     ecx, 8
27491
                mov     edi, [esi+edi*4]
27492
                mov     [esp+8], ecx
27493
                xor     eax, edi
27494
                xor     edx, edi
27495
                mov     edi, eax
27496
                and     eax, 0FFh
27497
                ror     edx, 8
27498
                mov     eax, [esi+eax*4]
27499
                mov     ecx, [esp+1Ch]
27500
                mov     [esp+0Ch], edx
27501
                xor     ebp, eax
27502
                xor     ebx, eax
27503
                mov     eax, ebp
27504
                and     ebp, 0FFh
27505
                mov     edx, [esp+20h]
27506
                ror     ebx, 8
27507
                mov     ebp, [esi+ebp*4+400h]
27508
                mov     [esp+10h], ebx
27509
                xor     ecx, ebp
27510
                xor     edi, ebp
27511
                mov     ebp, ecx
27512
                and     ecx, 0FFh
27513
                ror     edi, 8
27514
                mov     ecx, [esi+ecx*4+400h]
27515
                mov     ebx, [esp+24h]
27516
                mov     [esp+14h], edi
27517
                xor     edx, ecx
27518
                xor     eax, ecx
27519
                mov     ecx, edx
27520
                and     edx, 0FFh
27521
                mov     edi, [esp+28h]
27522
                ror     eax, 8
27523
                mov     edx, [esi+edx*4]
27524
                mov     [esp+18h], eax
27525
                xor     ebx, edx
27526
                xor     ebp, edx
27527
                mov     edx, ebx
27528
                and     ebx, 0FFh
27529
                ror     ebp, 8
27530
                mov     ebx, [esi+ebx*4]
27531
                mov     eax, [esp+2Ch]
27532
                mov     [esp+1Ch], ebp
27533
                xor     edi, ebx
27534
                xor     ecx, ebx
27535
                mov     ebx, edi
27536
                and     edi, 0FFh
27537
                mov     ebp, [esp+30h]
27538
                ror     ecx, 8
27539
                mov     edi, [esi+edi*4+400h]
27540
                mov     [esp+20h], ecx
27541
                xor     eax, edi
27542
                xor     edx, edi
27543
                mov     edi, eax
27544
                and     eax, 0FFh
27545
                ror     edx, 8
27546
                mov     eax, [esi+eax*4+400h]
27547
                mov     ecx, [esp+34h]
27548
                mov     [esp+24h], edx
27549
                xor     ebp, eax
27550
                xor     ebx, eax
27551
                mov     eax, ebp
27552
                and     ebp, 0FFh
27553
                mov     edx, [esp+38h]
27554
                ror     ebx, 8
27555
                mov     ebp, [esi+ebp*4]
27556
                mov     [esp+28h], ebx
27557
                xor     ecx, ebp
27558
                xor     edi, ebp
27559
                mov     ebp, ecx
27560
                and     ecx, 0FFh
27561
                ror     edi, 8
27562
                mov     ecx, [esi+ecx*4]
27563
                mov     ebx, [esp+3Ch]
27564
                mov     [esp+2Ch], edi
27565
                xor     edx, ecx
27566
                xor     eax, ecx
27567
                mov     ecx, edx
27568
                and     edx, 0FFh
27569
                mov     edi, [esp]
27570
                ror     eax, 8
27571
                mov     edx, [esi+edx*4+400h]
27572
                mov     [esp+30h], eax
27573
                xor     ebx, edx
27574
                xor     ebp, edx
27575
                mov     edx, ebx
27576
                and     ebx, 0FFh
27577
                ror     ebp, 8
27578
                ror     edx, 8
27579
                mov     ebx, [esi+ebx*4+400h]
27580
                mov     [esp+34h], ebp
27581
                xor     edi, ebx
27582
                xor     ecx, ebx
27583
                ror     edi, 8
27584
                ror     ecx, 8
27585
                mov     [esp], edi
27586
                mov     [esp+38h], ecx
27587
                mov     [esp+3Ch], edx
27588
                mov     ebx, [esp]
27589
                mov     ecx, [esp+4]
27590
                mov     edi, ebx
27591
                and     ebx, 0FFh
27592
                mov     eax, [esp+3Ch]
27593
                mov     ebx, [esi+ebx*4]
27594
                mov     edx, [esp+8]
27595
                xor     ecx, ebx
27596
                xor     eax, ebx
27597
                mov     ebp, ecx
27598
                and     ecx, 0FFh
27599
                mov     [esp+3Ch], eax
27600
                mov     ecx, [esi+ecx*4]
27601
                mov     ebx, [esp+0Ch]
27602
                xor     edx, ecx
27603
                xor     edi, ecx
27604
                mov     ecx, edx
27605
                and     edx, 0FFh
27606
                mov     [esp], edi
27607
                mov     edx, [esi+edx*4+400h]
27608
                mov     edi, [esp+10h]
27609
                xor     ebx, edx
27610
                xor     ebp, edx
27611
                mov     edx, ebx
27612
                and     ebx, 0FFh
27613
                ror     ebp, 10h
27614
                mov     ebx, [esi+ebx*4+400h]
27615
                mov     eax, [esp+14h]
27616
                mov     [esp+4], ebp
27617
                xor     edi, ebx
27618
                xor     ecx, ebx
27619
                mov     ebx, edi
27620
                and     edi, 0FFh
27621
                mov     ebp, [esp+18h]
27622
                ror     ecx, 10h
27623
                mov     edi, [esi+edi*4]
27624
                mov     [esp+8], ecx
27625
                xor     eax, edi
27626
                xor     edx, edi
27627
                mov     edi, eax
27628
                and     eax, 0FFh
27629
                ror     edx, 10h
27630
                mov     eax, [esi+eax*4]
27631
                mov     ecx, [esp+1Ch]
27632
                mov     [esp+0Ch], edx
27633
                xor     ebp, eax
27634
                xor     ebx, eax
27635
                mov     eax, ebp
27636
                and     ebp, 0FFh
27637
                mov     edx, [esp+20h]
27638
                ror     ebx, 10h
27639
                mov     ebp, [esi+ebp*4+400h]
27640
                mov     [esp+10h], ebx
27641
                xor     ecx, ebp
27642
                xor     edi, ebp
27643
                mov     ebp, ecx
27644
                and     ecx, 0FFh
27645
                ror     edi, 10h
27646
                mov     ecx, [esi+ecx*4+400h]
27647
                mov     ebx, [esp+24h]
27648
                mov     [esp+14h], edi
27649
                xor     edx, ecx
27650
                xor     eax, ecx
27651
                mov     ecx, edx
27652
                and     edx, 0FFh
27653
                mov     edi, [esp+28h]
27654
                ror     eax, 10h
27655
                mov     edx, [esi+edx*4]
27656
                mov     [esp+18h], eax
27657
                xor     ebx, edx
27658
                xor     ebp, edx
27659
                mov     edx, ebx
27660
                and     ebx, 0FFh
27661
                ror     ebp, 10h
27662
                mov     ebx, [esi+ebx*4]
27663
                mov     eax, [esp+2Ch]
27664
                mov     [esp+1Ch], ebp
27665
                xor     edi, ebx
27666
                xor     ecx, ebx
27667
                mov     ebx, edi
27668
                and     edi, 0FFh
27669
                mov     ebp, [esp+30h]
27670
                ror     ecx, 10h
27671
                mov     edi, [esi+edi*4+400h]
27672
                mov     [esp+20h], ecx
27673
                xor     eax, edi
27674
                xor     edx, edi
27675
                mov     edi, eax
27676
                and     eax, 0FFh
27677
                ror     edx, 10h
27678
                mov     eax, [esi+eax*4+400h]
27679
                mov     ecx, [esp+34h]
27680
                mov     [esp+24h], edx
27681
                xor     ebp, eax
27682
                xor     ebx, eax
27683
                mov     eax, ebp
27684
                and     ebp, 0FFh
27685
                mov     edx, [esp+38h]
27686
                ror     ebx, 10h
27687
                mov     ebp, [esi+ebp*4]
27688
                mov     [esp+28h], ebx
27689
                xor     ecx, ebp
27690
                xor     edi, ebp
27691
                mov     ebp, ecx
27692
                and     ecx, 0FFh
27693
                ror     edi, 10h
27694
                mov     ecx, [esi+ecx*4]
27695
                mov     ebx, [esp+3Ch]
27696
                mov     [esp+2Ch], edi
27697
                xor     edx, ecx
27698
                xor     eax, ecx
27699
                mov     ecx, edx
27700
                and     edx, 0FFh
27701
                mov     edi, [esp]
27702
                ror     eax, 10h
27703
                mov     edx, [esi+edx*4+400h]
27704
                mov     [esp+30h], eax
27705
                xor     ebx, edx
27706
                xor     ebp, edx
27707
                mov     edx, ebx
27708
                and     ebx, 0FFh
27709
                ror     ebp, 10h
27710
                ror     edx, 10h
27711
                mov     ebx, [esi+ebx*4+400h]
27712
                mov     [esp+34h], ebp
27713
                xor     edi, ebx
27714
                xor     ecx, ebx
27715
                ror     edi, 10h
27716
                ror     ecx, 10h
27717
                mov     [esp], edi
27718
                mov     [esp+38h], ecx
27719
                mov     [esp+3Ch], edx
27720
                mov     ebx, [esp]
27721
                mov     ecx, [esp+4]
27722
                mov     edi, ebx
27723
                and     ebx, 0FFh
27724
                mov     eax, [esp+3Ch]
27725
                mov     ebx, [esi+ebx*4]
27726
                mov     edx, [esp+8]
27727
                xor     ecx, ebx
27728
                xor     eax, ebx
27729
                mov     ebp, ecx
27730
                and     ecx, 0FFh
27731
                mov     [esp+3Ch], eax
27732
                mov     ecx, [esi+ecx*4]
27733
                mov     ebx, [esp+0Ch]
27734
                xor     edx, ecx
27735
                xor     edi, ecx
27736
                mov     ecx, edx
27737
                and     edx, 0FFh
27738
                mov     [esp], edi
27739
                mov     edx, [esi+edx*4+400h]
27740
                mov     edi, [esp+10h]
27741
                xor     ebx, edx
27742
                xor     ebp, edx
27743
                mov     edx, ebx
27744
                and     ebx, 0FFh
27745
                rol     ebp, 8
27746
                mov     ebx, [esi+ebx*4+400h]
27747
                mov     eax, [esp+14h]
27748
                mov     [esp+4], ebp
27749
                xor     edi, ebx
27750
                xor     ecx, ebx
27751
                mov     ebx, edi
27752
                and     edi, 0FFh
27753
                mov     ebp, [esp+18h]
27754
                rol     ecx, 8
27755
                mov     edi, [esi+edi*4]
27756
                mov     [esp+8], ecx
27757
                xor     eax, edi
27758
                xor     edx, edi
27759
                mov     edi, eax
27760
                and     eax, 0FFh
27761
                rol     edx, 8
27762
                mov     eax, [esi+eax*4]
27763
                mov     ecx, [esp+1Ch]
27764
                mov     [esp+0Ch], edx
27765
                xor     ebp, eax
27766
                xor     ebx, eax
27767
                mov     eax, ebp
27768
                and     ebp, 0FFh
27769
                mov     edx, [esp+20h]
27770
                rol     ebx, 8
27771
                mov     ebp, [esi+ebp*4+400h]
27772
                mov     [esp+10h], ebx
27773
                xor     ecx, ebp
27774
                xor     edi, ebp
27775
                mov     ebp, ecx
27776
                and     ecx, 0FFh
27777
                rol     edi, 8
27778
                mov     ecx, [esi+ecx*4+400h]
27779
                mov     ebx, [esp+24h]
27780
                mov     [esp+14h], edi
27781
                xor     edx, ecx
27782
                xor     eax, ecx
27783
                mov     ecx, edx
27784
                and     edx, 0FFh
27785
                mov     edi, [esp+28h]
27786
                rol     eax, 8
27787
                mov     edx, [esi+edx*4]
27788
                mov     [esp+18h], eax
27789
                xor     ebx, edx
27790
                xor     ebp, edx
27791
                mov     edx, ebx
27792
                and     ebx, 0FFh
27793
                rol     ebp, 8
27794
                mov     ebx, [esi+ebx*4]
27795
                mov     eax, [esp+2Ch]
27796
                mov     [esp+1Ch], ebp
27797
                xor     edi, ebx
27798
                xor     ecx, ebx
27799
                mov     ebx, edi
27800
                and     edi, 0FFh
27801
                mov     ebp, [esp+30h]
27802
                rol     ecx, 8
27803
                mov     edi, [esi+edi*4+400h]
27804
                mov     [esp+20h], ecx
27805
                xor     eax, edi
27806
                xor     edx, edi
27807
                mov     edi, eax
27808
                and     eax, 0FFh
27809
                rol     edx, 8
27810
                mov     eax, [esi+eax*4+400h]
27811
                mov     ecx, [esp+34h]
27812
                mov     [esp+24h], edx
27813
                xor     ebp, eax
27814
                xor     ebx, eax
27815
                mov     eax, ebp
27816
                and     ebp, 0FFh
27817
                mov     edx, [esp+38h]
27818
                rol     ebx, 8
27819
                mov     ebp, [esi+ebp*4]
27820
                mov     [esp+28h], ebx
27821
                xor     ecx, ebp
27822
                xor     edi, ebp
27823
                mov     ebp, ecx
27824
                and     ecx, 0FFh
27825
                rol     edi, 8
27826
                mov     ecx, [esi+ecx*4]
27827
                mov     ebx, [esp+3Ch]
27828
                mov     [esp+2Ch], edi
27829
                xor     edx, ecx
27830
                xor     eax, ecx
27831
                mov     ecx, edx
27832
                and     edx, 0FFh
27833
                mov     edi, [esp]
27834
                rol     eax, 8
27835
                mov     edx, [esi+edx*4+400h]
27836
                mov     [esp+30h], eax
27837
                xor     ebx, edx
27838
                xor     ebp, edx
27839
                mov     edx, ebx
27840
                and     ebx, 0FFh
27841
                rol     ebp, 8
27842
                rol     edx, 8
27843
                mov     ebx, [esi+ebx*4+400h]
27844
                mov     [esp+34h], ebp
27845
                xor     edi, ebx
27846
                xor     ecx, ebx
27847
                rol     edi, 8
27848
                rol     ecx, 8
27849
                mov     [esp], edi
27850
                mov     [esp+38h], ecx
27851
                mov     [esp+3Ch], edx
27852
                mov     ecx, [esp+64h]
27853
                add     esi, 800h
27854
                dec     ecx
27855
                jnz     @@_level_loop
27856
                mov     edi, [esp+60h]
27857
                mov     eax, [esp+40h]
27858
                mov     ebx, [esp+44h]
27859
                mov     ecx, [esp+3Ch]
27860
                mov     edx, [esp+38h]
27861
                xor     eax, ecx
27862
                xor     ebx, edx
27863
                mov     [edi], eax
27864
                mov     [edi+4], ebx
27865
                mov     eax, [esp+48h]
27866
                mov     ebx, [esp+4Ch]
27867
                mov     ecx, [esp+34h]
27868
                mov     edx, [esp+30h]
27869
                xor     eax, ecx
27870
                xor     ebx, edx
27871
                mov     [edi+8], eax
27872
                mov     [edi+0Ch], ebx
27873
                mov     ebp, [esp+68h]
27874
                mov     esp, ebp
27875
 
27876
 
27877
                pop  ebp
27878
                pop  edi
27879
                pop  esi
27880
                pop  ebx
27881
  end;
27882
end;
27883
{$ENDIF}
27884
 
27885
{$IFDEF THash_Snefru256_asm}
27886
procedure THash_Snefru256.DoTransform(Buffer: PLongArray);
27887
begin
27888
  SwapLongBuffer(Buffer[0], FDigest[8], 8);
27889
  asm
27890
                push    ebx
27891
                mov     eax, Self
27892
                push    esi
27893
                push    edi
27894
                lea     edi, [eax].THash_Snefru256.FDigest
27895
                push    ebp
27896
                lea     esi, Snefru_Data
27897
                mov     ecx, [eax].THash_Snefru256.FSecurity_Level
27898
                mov     ebp, esp
27899
                add     esp, 0FFFFFF94h
27900
                and     esp, 0FFFFFFE0h
27901
                mov     [esp+60h], edi
27902
                mov     [esp+68h], ebp
27903
                mov     eax, [edi]
27904
                mov     ebx, [edi+4]
27905
                mov     ebp, [edi+8]
27906
                mov     edx, [edi+0Ch]
27907
                mov     [esp], eax
27908
                mov     [esp+4], ebx
27909
                mov     [esp+8], ebp
27910
                mov     [esp+0Ch], edx
27911
                mov     [esp+40h], eax
27912
                mov     [esp+44h], ebx
27913
                mov     [esp+48h], ebp
27914
                mov     [esp+4Ch], edx
27915
                mov     eax, [edi+10h]
27916
                mov     ebx, [edi+14h]
27917
                mov     ebp, [edi+18h]
27918
                mov     edx, [edi+1Ch]
27919
                mov     [esp+10h], eax
27920
                mov     [esp+14h], ebx
27921
                mov     [esp+18h], ebp
27922
                mov     [esp+1Ch], edx
27923
                mov     [esp+50h], eax
27924
                mov     [esp+54h], ebx
27925
                mov     [esp+58h], ebp
27926
                mov     [esp+5Ch], edx
27927
                mov     eax, [edi+20h]
27928
                mov     ebx, [edi+24h]
27929
                mov     ebp, [edi+28h]
27930
                mov     edx, [edi+2Ch]
27931
                mov     [esp+20h], eax
27932
                mov     [esp+24h], ebx
27933
                mov     [esp+28h], ebp
27934
                mov     [esp+2Ch], edx
27935
                mov     eax, [edi+30h]
27936
                mov     ebx, [edi+34h]
27937
                mov     ebp, [edi+38h]
27938
                mov     edx, [edi+3Ch]
27939
                mov     [esp+30h], eax
27940
                mov     [esp+34h], ebx
27941
                mov     [esp+38h], ebp
27942
                mov     [esp+3Ch], edx
27943
 
27944
@@_level_loop:
27945
                mov     [esp+64h], ecx
27946
                mov     ebx, [esp]
27947
                mov     ecx, [esp+4]
27948
                mov     edi, ebx
27949
                and     ebx, 0FFh
27950
                mov     eax, [esp+3Ch]
27951
                mov     ebx, [esi+ebx*4]
27952
                mov     edx, [esp+8]
27953
                xor     ecx, ebx
27954
                xor     eax, ebx
27955
                mov     ebp, ecx
27956
                and     ecx, 0FFh
27957
                mov     [esp+3Ch], eax
27958
                mov     ecx, [esi+ecx*4]
27959
                mov     ebx, [esp+0Ch]
27960
                xor     edx, ecx
27961
                xor     edi, ecx
27962
                mov     ecx, edx
27963
                and     edx, 0FFh
27964
                mov     [esp], edi
27965
                mov     edx, [esi+edx*4+400h]
27966
                mov     edi, [esp+10h]
27967
                xor     ebx, edx
27968
                xor     ebp, edx
27969
                mov     edx, ebx
27970
                and     ebx, 0FFh
27971
                ror     ebp, 10h
27972
                mov     ebx, [esi+ebx*4+400h]
27973
                mov     eax, [esp+14h]
27974
                mov     [esp+4], ebp
27975
                xor     edi, ebx
27976
                xor     ecx, ebx
27977
                mov     ebx, edi
27978
                and     edi, 0FFh
27979
                mov     ebp, [esp+18h]
27980
                ror     ecx, 10h
27981
                mov     edi, [esi+edi*4]
27982
                mov     [esp+8], ecx
27983
                xor     eax, edi
27984
                xor     edx, edi
27985
                mov     edi, eax
27986
                and     eax, 0FFh
27987
                ror     edx, 10h
27988
                mov     eax, [esi+eax*4]
27989
                mov     ecx, [esp+1Ch]
27990
                mov     [esp+0Ch], edx
27991
                xor     ebp, eax
27992
                xor     ebx, eax
27993
                mov     eax, ebp
27994
                and     ebp, 0FFh
27995
                mov     edx, [esp+20h]
27996
                ror     ebx, 10h
27997
                mov     ebp, [esi+ebp*4+400h]
27998
                mov     [esp+10h], ebx
27999
                xor     ecx, ebp
28000
                xor     edi, ebp
28001
                mov     ebp, ecx
28002
                and     ecx, 0FFh
28003
                ror     edi, 10h
28004
                mov     ecx, [esi+ecx*4+400h]
28005
                mov     ebx, [esp+24h]
28006
                mov     [esp+14h], edi
28007
                xor     edx, ecx
28008
                xor     eax, ecx
28009
                mov     ecx, edx
28010
                and     edx, 0FFh
28011
                mov     edi, [esp+28h]
28012
                ror     eax, 10h
28013
                mov     edx, [esi+edx*4]
28014
                mov     [esp+18h], eax
28015
                xor     ebx, edx
28016
                xor     ebp, edx
28017
                mov     edx, ebx
28018
                and     ebx, 0FFh
28019
                ror     ebp, 10h
28020
                mov     ebx, [esi+ebx*4]
28021
                mov     eax, [esp+2Ch]
28022
                mov     [esp+1Ch], ebp
28023
                xor     edi, ebx
28024
                xor     ecx, ebx
28025
                mov     ebx, edi
28026
                and     edi, 0FFh
28027
                mov     ebp, [esp+30h]
28028
                ror     ecx, 10h
28029
                mov     edi, [esi+edi*4+400h]
28030
                mov     [esp+20h], ecx
28031
                xor     eax, edi
28032
                xor     edx, edi
28033
                mov     edi, eax
28034
                and     eax, 0FFh
28035
                ror     edx, 10h
28036
                mov     eax, [esi+eax*4+400h]
28037
                mov     ecx, [esp+34h]
28038
                mov     [esp+24h], edx
28039
                xor     ebp, eax
28040
                xor     ebx, eax
28041
                mov     eax, ebp
28042
                and     ebp, 0FFh
28043
                mov     edx, [esp+38h]
28044
                ror     ebx, 10h
28045
                mov     ebp, [esi+ebp*4]
28046
                mov     [esp+28h], ebx
28047
                xor     ecx, ebp
28048
                xor     edi, ebp
28049
                mov     ebp, ecx
28050
                and     ecx, 0FFh
28051
                ror     edi, 10h
28052
                mov     ecx, [esi+ecx*4]
28053
                mov     ebx, [esp+3Ch]
28054
                mov     [esp+2Ch], edi
28055
                xor     edx, ecx
28056
                xor     eax, ecx
28057
                mov     ecx, edx
28058
                and     edx, 0FFh
28059
                mov     edi, [esp]
28060
                ror     eax, 10h
28061
                mov     edx, [esi+edx*4+400h]
28062
                mov     [esp+30h], eax
28063
                xor     ebx, edx
28064
                xor     ebp, edx
28065
                mov     edx, ebx
28066
                and     ebx, 0FFh
28067
                ror     ebp, 10h
28068
                ror     edx, 10h
28069
                mov     ebx, [esi+ebx*4+400h]
28070
                mov     [esp+34h], ebp
28071
                xor     edi, ebx
28072
                xor     ecx, ebx
28073
                ror     edi, 10h
28074
                ror     ecx, 10h
28075
                mov     [esp], edi
28076
                mov     [esp+38h], ecx
28077
                mov     [esp+3Ch], edx
28078
                mov     ebx, [esp]
28079
                mov     ecx, [esp+4]
28080
                mov     edi, ebx
28081
                and     ebx, 0FFh
28082
                mov     eax, [esp+3Ch]
28083
                mov     ebx, [esi+ebx*4]
28084
                mov     edx, [esp+8]
28085
                xor     ecx, ebx
28086
                xor     eax, ebx
28087
                mov     ebp, ecx
28088
                and     ecx, 0FFh
28089
                mov     [esp+3Ch], eax
28090
                mov     ecx, [esi+ecx*4]
28091
                mov     ebx, [esp+0Ch]
28092
                xor     edx, ecx
28093
                xor     edi, ecx
28094
                mov     ecx, edx
28095
                and     edx, 0FFh
28096
                mov     [esp], edi
28097
                mov     edx, [esi+edx*4+400h]
28098
                mov     edi, [esp+10h]
28099
                xor     ebx, edx
28100
                xor     ebp, edx
28101
                mov     edx, ebx
28102
                and     ebx, 0FFh
28103
                ror     ebp, 8
28104
                mov     ebx, [esi+ebx*4+400h]
28105
                mov     eax, [esp+14h]
28106
                mov     [esp+4], ebp
28107
                xor     edi, ebx
28108
                xor     ecx, ebx
28109
                mov     ebx, edi
28110
                and     edi, 0FFh
28111
                mov     ebp, [esp+18h]
28112
                ror     ecx, 8
28113
                mov     edi, [esi+edi*4]
28114
                mov     [esp+8], ecx
28115
                xor     eax, edi
28116
                xor     edx, edi
28117
                mov     edi, eax
28118
                and     eax, 0FFh
28119
                ror     edx, 8
28120
                mov     eax, [esi+eax*4]
28121
                mov     ecx, [esp+1Ch]
28122
                mov     [esp+0Ch], edx
28123
                xor     ebp, eax
28124
                xor     ebx, eax
28125
                mov     eax, ebp
28126
                and     ebp, 0FFh
28127
                mov     edx, [esp+20h]
28128
                ror     ebx, 8
28129
                mov     ebp, [esi+ebp*4+400h]
28130
                mov     [esp+10h], ebx
28131
                xor     ecx, ebp
28132
                xor     edi, ebp
28133
                mov     ebp, ecx
28134
                and     ecx, 0FFh
28135
                ror     edi, 8
28136
                mov     ecx, [esi+ecx*4+400h]
28137
                mov     ebx, [esp+24h]
28138
                mov     [esp+14h], edi
28139
                xor     edx, ecx
28140
                xor     eax, ecx
28141
                mov     ecx, edx
28142
                and     edx, 0FFh
28143
                mov     edi, [esp+28h]
28144
                ror     eax, 8
28145
                mov     edx, [esi+edx*4]
28146
                mov     [esp+18h], eax
28147
                xor     ebx, edx
28148
                xor     ebp, edx
28149
                mov     edx, ebx
28150
                and     ebx, 0FFh
28151
                ror     ebp, 8
28152
                mov     ebx, [esi+ebx*4]
28153
                mov     eax, [esp+2Ch]
28154
                mov     [esp+1Ch], ebp
28155
                xor     edi, ebx
28156
                xor     ecx, ebx
28157
                mov     ebx, edi
28158
                and     edi, 0FFh
28159
                mov     ebp, [esp+30h]
28160
                ror     ecx, 8
28161
                mov     edi, [esi+edi*4+400h]
28162
                mov     [esp+20h], ecx
28163
                xor     eax, edi
28164
                xor     edx, edi
28165
                mov     edi, eax
28166
                and     eax, 0FFh
28167
                ror     edx, 8
28168
                mov     eax, [esi+eax*4+400h]
28169
                mov     ecx, [esp+34h]
28170
                mov     [esp+24h], edx
28171
                xor     ebp, eax
28172
                xor     ebx, eax
28173
                mov     eax, ebp
28174
                and     ebp, 0FFh
28175
                mov     edx, [esp+38h]
28176
                ror     ebx, 8
28177
                mov     ebp, [esi+ebp*4]
28178
                mov     [esp+28h], ebx
28179
                xor     ecx, ebp
28180
                xor     edi, ebp
28181
                mov     ebp, ecx
28182
                and     ecx, 0FFh
28183
                ror     edi, 8
28184
                mov     ecx, [esi+ecx*4]
28185
                mov     ebx, [esp+3Ch]
28186
                mov     [esp+2Ch], edi
28187
                xor     edx, ecx
28188
                xor     eax, ecx
28189
                mov     ecx, edx
28190
                and     edx, 0FFh
28191
                mov     edi, [esp]
28192
                ror     eax, 8
28193
                mov     edx, [esi+edx*4+400h]
28194
                mov     [esp+30h], eax
28195
                xor     ebx, edx
28196
                xor     ebp, edx
28197
                mov     edx, ebx
28198
                and     ebx, 0FFh
28199
                ror     ebp, 8
28200
                ror     edx, 8
28201
                mov     ebx, [esi+ebx*4+400h]
28202
                mov     [esp+34h], ebp
28203
                xor     edi, ebx
28204
                xor     ecx, ebx
28205
                ror     edi, 8
28206
                ror     ecx, 8
28207
                mov     [esp], edi
28208
                mov     [esp+38h], ecx
28209
                mov     [esp+3Ch], edx
28210
                mov     ebx, [esp]
28211
                mov     ecx, [esp+4]
28212
                mov     edi, ebx
28213
                and     ebx, 0FFh
28214
                mov     eax, [esp+3Ch]
28215
                mov     ebx, [esi+ebx*4]
28216
                mov     edx, [esp+8]
28217
                xor     ecx, ebx
28218
                xor     eax, ebx
28219
                mov     ebp, ecx
28220
                and     ecx, 0FFh
28221
                mov     [esp+3Ch], eax
28222
                mov     ecx, [esi+ecx*4]
28223
                mov     ebx, [esp+0Ch]
28224
                xor     edx, ecx
28225
                xor     edi, ecx
28226
                mov     ecx, edx
28227
                and     edx, 0FFh
28228
                mov     [esp], edi
28229
                mov     edx, [esi+edx*4+400h]
28230
                mov     edi, [esp+10h]
28231
                xor     ebx, edx
28232
                xor     ebp, edx
28233
                mov     edx, ebx
28234
                and     ebx, 0FFh
28235
                ror     ebp, 10h
28236
                mov     ebx, [esi+ebx*4+400h]
28237
                mov     eax, [esp+14h]
28238
                mov     [esp+4], ebp
28239
                xor     edi, ebx
28240
                xor     ecx, ebx
28241
                mov     ebx, edi
28242
                and     edi, 0FFh
28243
                mov     ebp, [esp+18h]
28244
                ror     ecx, 10h
28245
                mov     edi, [esi+edi*4]
28246
                mov     [esp+8], ecx
28247
                xor     eax, edi
28248
                xor     edx, edi
28249
                mov     edi, eax
28250
                and     eax, 0FFh
28251
                ror     edx, 10h
28252
                mov     eax, [esi+eax*4]
28253
                mov     ecx, [esp+1Ch]
28254
                mov     [esp+0Ch], edx
28255
                xor     ebp, eax
28256
                xor     ebx, eax
28257
                mov     eax, ebp
28258
                and     ebp, 0FFh
28259
                mov     edx, [esp+20h]
28260
                ror     ebx, 10h
28261
                mov     ebp, [esi+ebp*4+400h]
28262
                mov     [esp+10h], ebx
28263
                xor     ecx, ebp
28264
                xor     edi, ebp
28265
                mov     ebp, ecx
28266
                and     ecx, 0FFh
28267
                ror     edi, 10h
28268
                mov     ecx, [esi+ecx*4+400h]
28269
                mov     ebx, [esp+24h]
28270
                mov     [esp+14h], edi
28271
                xor     edx, ecx
28272
                xor     eax, ecx
28273
                mov     ecx, edx
28274
                and     edx, 0FFh
28275
                mov     edi, [esp+28h]
28276
                ror     eax, 10h
28277
                mov     edx, [esi+edx*4]
28278
                mov     [esp+18h], eax
28279
                xor     ebx, edx
28280
                xor     ebp, edx
28281
                mov     edx, ebx
28282
                and     ebx, 0FFh
28283
                ror     ebp, 10h
28284
                mov     ebx, [esi+ebx*4]
28285
                mov     eax, [esp+2Ch]
28286
                mov     [esp+1Ch], ebp
28287
                xor     edi, ebx
28288
                xor     ecx, ebx
28289
                mov     ebx, edi
28290
                and     edi, 0FFh
28291
                mov     ebp, [esp+30h]
28292
                ror     ecx, 10h
28293
                mov     edi, [esi+edi*4+400h]
28294
                mov     [esp+20h], ecx
28295
                xor     eax, edi
28296
                xor     edx, edi
28297
                mov     edi, eax
28298
                and     eax, 0FFh
28299
                ror     edx, 10h
28300
                mov     eax, [esi+eax*4+400h]
28301
                mov     ecx, [esp+34h]
28302
                mov     [esp+24h], edx
28303
                xor     ebp, eax
28304
                xor     ebx, eax
28305
                mov     eax, ebp
28306
                and     ebp, 0FFh
28307
                mov     edx, [esp+38h]
28308
                ror     ebx, 10h
28309
                mov     ebp, [esi+ebp*4]
28310
                mov     [esp+28h], ebx
28311
                xor     ecx, ebp
28312
                xor     edi, ebp
28313
                mov     ebp, ecx
28314
                and     ecx, 0FFh
28315
                ror     edi, 10h
28316
                mov     ecx, [esi+ecx*4]
28317
                mov     ebx, [esp+3Ch]
28318
                mov     [esp+2Ch], edi
28319
                xor     edx, ecx
28320
                xor     eax, ecx
28321
                mov     ecx, edx
28322
                and     edx, 0FFh
28323
                mov     edi, [esp]
28324
                ror     eax, 10h
28325
                mov     edx, [esi+edx*4+400h]
28326
                mov     [esp+30h], eax
28327
                xor     ebx, edx
28328
                xor     ebp, edx
28329
                mov     edx, ebx
28330
                and     ebx, 0FFh
28331
                ror     ebp, 10h
28332
                ror     edx, 10h
28333
                mov     ebx, [esi+ebx*4+400h]
28334
                mov     [esp+34h], ebp
28335
                xor     edi, ebx
28336
                xor     ecx, ebx
28337
                ror     edi, 10h
28338
                ror     ecx, 10h
28339
                mov     [esp], edi
28340
                mov     [esp+38h], ecx
28341
                mov     [esp+3Ch], edx
28342
                mov     ebx, [esp]
28343
                mov     ecx, [esp+4]
28344
                mov     edi, ebx
28345
                and     ebx, 0FFh
28346
                mov     eax, [esp+3Ch]
28347
                mov     ebx, [esi+ebx*4]
28348
                mov     edx, [esp+8]
28349
                xor     ecx, ebx
28350
                xor     eax, ebx
28351
                mov     ebp, ecx
28352
                and     ecx, 0FFh
28353
                mov     [esp+3Ch], eax
28354
                mov     ecx, [esi+ecx*4]
28355
                mov     ebx, [esp+0Ch]
28356
                xor     edx, ecx
28357
                xor     edi, ecx
28358
                mov     ecx, edx
28359
                and     edx, 0FFh
28360
                mov     [esp], edi
28361
                mov     edx, [esi+edx*4+400h]
28362
                mov     edi, [esp+10h]
28363
                xor     ebx, edx
28364
                xor     ebp, edx
28365
                mov     edx, ebx
28366
                and     ebx, 0FFh
28367
                rol     ebp, 8
28368
                mov     ebx, [esi+ebx*4+400h]
28369
                mov     eax, [esp+14h]
28370
                mov     [esp+4], ebp
28371
                xor     edi, ebx
28372
                xor     ecx, ebx
28373
                mov     ebx, edi
28374
                and     edi, 0FFh
28375
                mov     ebp, [esp+18h]
28376
                rol     ecx, 8
28377
                mov     edi, [esi+edi*4]
28378
                mov     [esp+8], ecx
28379
                xor     eax, edi
28380
                xor     edx, edi
28381
                mov     edi, eax
28382
                and     eax, 0FFh
28383
                rol     edx, 8
28384
                mov     eax, [esi+eax*4]
28385
                mov     ecx, [esp+1Ch]
28386
                mov     [esp+0Ch], edx
28387
                xor     ebp, eax
28388
                xor     ebx, eax
28389
                mov     eax, ebp
28390
                and     ebp, 0FFh
28391
                mov     edx, [esp+20h]
28392
                rol     ebx, 8
28393
                mov     ebp, [esi+ebp*4+400h]
28394
                mov     [esp+10h], ebx
28395
                xor     ecx, ebp
28396
                xor     edi, ebp
28397
                mov     ebp, ecx
28398
                and     ecx, 0FFh
28399
                rol     edi, 8
28400
                mov     ecx, [esi+ecx*4+400h]
28401
                mov     ebx, [esp+24h]
28402
                mov     [esp+14h], edi
28403
                xor     edx, ecx
28404
                xor     eax, ecx
28405
                mov     ecx, edx
28406
                and     edx, 0FFh
28407
                mov     edi, [esp+28h]
28408
                rol     eax, 8
28409
                mov     edx, [esi+edx*4]
28410
                mov     [esp+18h], eax
28411
                xor     ebx, edx
28412
                xor     ebp, edx
28413
                mov     edx, ebx
28414
                and     ebx, 0FFh
28415
                rol     ebp, 8
28416
                mov     ebx, [esi+ebx*4]
28417
                mov     eax, [esp+2Ch]
28418
                mov     [esp+1Ch], ebp
28419
                xor     edi, ebx
28420
                xor     ecx, ebx
28421
                mov     ebx, edi
28422
                and     edi, 0FFh
28423
                mov     ebp, [esp+30h]
28424
                rol     ecx, 8
28425
                mov     edi, [esi+edi*4+400h]
28426
                mov     [esp+20h], ecx
28427
                xor     eax, edi
28428
                xor     edx, edi
28429
                mov     edi, eax
28430
                and     eax, 0FFh
28431
                rol     edx, 8
28432
                mov     eax, [esi+eax*4+400h]
28433
                mov     ecx, [esp+34h]
28434
                mov     [esp+24h], edx
28435
                xor     ebp, eax
28436
                xor     ebx, eax
28437
                mov     eax, ebp
28438
                and     ebp, 0FFh
28439
                mov     edx, [esp+38h]
28440
                rol     ebx, 8
28441
                mov     ebp, [esi+ebp*4]
28442
                mov     [esp+28h], ebx
28443
                xor     ecx, ebp
28444
                xor     edi, ebp
28445
                mov     ebp, ecx
28446
                and     ecx, 0FFh
28447
                rol     edi, 8
28448
                mov     ecx, [esi+ecx*4]
28449
                mov     ebx, [esp+3Ch]
28450
                mov     [esp+2Ch], edi
28451
                xor     edx, ecx
28452
                xor     eax, ecx
28453
                mov     ecx, edx
28454
                and     edx, 0FFh
28455
                mov     edi, [esp]
28456
                rol     eax, 8
28457
                mov     edx, [esi+edx*4+400h]
28458
                mov     [esp+30h], eax
28459
                xor     ebx, edx
28460
                xor     ebp, edx
28461
                mov     edx, ebx
28462
                and     ebx, 0FFh
28463
                rol     ebp, 8
28464
                rol     edx, 8
28465
                mov     ebx, [esi+ebx*4+400h]
28466
                mov     [esp+34h], ebp
28467
                xor     edi, ebx
28468
                xor     ecx, ebx
28469
                rol     edi, 8
28470
                rol     ecx, 8
28471
                mov     [esp], edi
28472
                mov     [esp+38h], ecx
28473
                mov     [esp+3Ch], edx
28474
                mov     ecx, [esp+64h]
28475
                add     esi, 800h
28476
                dec     ecx
28477
                jnz     @@_level_loop
28478
                mov     edi, [esp+60h]
28479
                mov     eax, [esp+40h]
28480
                mov     ebx, [esp+44h]
28481
                mov     ecx, [esp+3Ch]
28482
                mov     edx, [esp+38h]
28483
                xor     eax, ecx
28484
                xor     ebx, edx
28485
                mov     [edi], eax
28486
                mov     [edi+4], ebx
28487
                mov     eax, [esp+48h]
28488
                mov     ebx, [esp+4Ch]
28489
                mov     ecx, [esp+34h]
28490
                mov     edx, [esp+30h]
28491
                xor     eax, ecx
28492
                xor     ebx, edx
28493
                mov     [edi+8], eax
28494
                mov     [edi+0Ch], ebx
28495
                mov     eax, [esp+50h]
28496
                mov     ebx, [esp+54h]
28497
                mov     ecx, [esp+2Ch]
28498
                mov     edx, [esp+28h]
28499
                xor     eax, ecx
28500
                xor     ebx, edx
28501
                mov     [edi+10h], eax
28502
                mov     [edi+14h], ebx
28503
                mov     eax, [esp+58h]
28504
                mov     ebx, [esp+5Ch]
28505
                mov     ecx, [esp+24h]
28506
                mov     edx, [esp+20h]
28507
                xor     eax, ecx
28508
                xor     ebx, edx
28509
                mov     [edi+18h], eax
28510
                mov     [edi+1Ch], ebx
28511
                mov     ebp, [esp+68h]
28512
                mov     esp, ebp
28513
                pop  ebp
28514
                pop  edi
28515
                pop  esi
28516
                pop  ebx
28517
  end;
28518
end;
28519
{$ENDIF}
28520
 
28521
{$IFDEF THash_Sapphire_asm}
28522
procedure THash_Sapphire.Calc(const Data; DataSize: Integer);
28523
asm
28524
                test    ecx,ecx
28525
                jle     @Exit
28526
 
28527
                push    ebx
28528
                push    esi
28529
                push    edi              // let edi points to Sapphire partial context (w/o cards array)
28530
                lea     esi,[eax].THash_Sapphire.FCards
28531
                lea     edi,[eax].THash_Sapphire.FRotor // let esi points to Sapphire cards array
28532
                push    ebp            // edx points to data, ecx contains DataSize
28533
 
28534
                mov     ebp, esp
28535
                sub     esp, 18h
28536
                and     esp, 0FFFFFFE0h
28537
                mov     eax, [edi]
28538
                mov     ebx, [edi+4]
28539
                mov     [esp+14h], ebp
28540
                mov     ebp, [edi+8]
28541
                mov     [esp], ebx
28542
                mov     [esp+4], ebp
28543
                mov     ebp, eax
28544
                mov     eax, [edi+0Ch]
28545
                mov     ebx, [edi+10h]
28546
                mov     [esp+8], edx
28547
                mov     [esp+10h], edi
28548
@@data_loop:
28549
                mov     [esp+0Ch], ecx
28550
                mov     ecx, [esi+ebp*4]
28551
                mov     edi, [esp]
28552
                inc     ebp
28553
                add     edi, ecx
28554
                mov     ecx, [esi+ebx*4]
28555
                and     edi, 0FFh
28556
                and     ebp, 0FFh
28557
                mov     edx, [esi+edi*4]
28558
                mov     [esp], edi
28559
                mov     [esi+ebx*4], edx
28560
                mov     edx, [esi+eax*4]
28561
                mov     [esi+edi*4], edx
28562
                mov     edx, [esi+ebp*4]
28563
                mov     [esi+eax*4], edx
28564
                mov     [esi+ebp*4], ecx
28565
                mov     ecx, [esi+ecx*4]
28566
                mov     edx, [esi+eax*4]
28567
                mov     eax, [esp+4]
28568
                mov     edi, [esi+edi*4]
28569
                add     ecx, eax
28570
                mov     eax, [esi+ebp*4]
28571
                and     ecx, 0FFh
28572
                add     edi, eax
28573
                mov     [esp+4], ecx
28574
                and     edi, 0FFh
28575
                mov     eax, [esi+ecx*4]
28576
                mov     ecx, [esp+8]
28577
                add     edx, eax
28578
                mov     eax, [esi+ebx*4]
28579
                add     edx, eax
28580
                movzx   eax, byte ptr [ecx]
28581
                and     edx, 0FFh
28582
                mov     edi, [esi+edi*4]
28583
                inc     ecx
28584
                mov     ebx, eax
28585
                mov     edx, [esi+edx*4]
28586
                mov     [esp+8], ecx
28587
                xor     ebx, edi
28588
                mov     edx, [esi+edx*4]
28589
                mov     ecx, [esp+0Ch]
28590
                xor     ebx, edx
28591
                dec     ecx
28592
                jnz     @@data_loop
28593
                mov     edi, [esp+10h]
28594
                mov     ecx, [esp]
28595
                mov     esi, [esp+4]
28596
                mov     edx, [esp+14h]
28597
                mov     [edi], ebp
28598
                mov     [edi+4], ecx
28599
                mov     esp, edx
28600
                mov     [edi+8], esi
28601
                mov     [edi+0Ch], eax
28602
                mov     [edi+10h], ebx
28603
                pop     ebp
28604
                pop     edi
28605
                pop     esi
28606
                pop     ebx
28607
@Exit:
28608
end;
28609
{$ENDIF}
28610