~webapps/unity-js-scopes/node.js

« back to all changes in this revision

Viewing changes to deps/openssl/asm_obsolete/x86-win32-masm/cast/cast-586.asm

  • Committer: Marcus Tomlinson
  • Date: 2015-11-13 07:59:04 UTC
  • Revision ID: marcus.tomlinson@canonical.com-20151113075904-h0swczmoq1rvstfc
Node v4 (stable)

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
TITLE   cast-586.asm
 
2
IF @Version LT 800
 
3
ECHO MASM version 8.00 or later is strongly recommended.
 
4
ENDIF
 
5
.686
 
6
.MODEL  FLAT
 
7
OPTION  DOTNAME
 
8
IF @Version LT 800
 
9
.text$  SEGMENT PAGE 'CODE'
 
10
ELSE
 
11
.text$  SEGMENT ALIGN(64) 'CODE'
 
12
ENDIF
 
13
EXTERN  _CAST_S_table0:NEAR
 
14
EXTERN  _CAST_S_table1:NEAR
 
15
EXTERN  _CAST_S_table2:NEAR
 
16
EXTERN  _CAST_S_table3:NEAR
 
17
ALIGN   16
 
18
_CAST_encrypt   PROC PUBLIC
 
19
$L_CAST_encrypt_begin::
 
20
        ;
 
21
        push    ebp
 
22
        push    ebx
 
23
        mov     ebx,DWORD PTR 12[esp]
 
24
        mov     ebp,DWORD PTR 16[esp]
 
25
        push    esi
 
26
        push    edi
 
27
        ; Load the 2 words
 
28
        mov     edi,DWORD PTR [ebx]
 
29
        mov     esi,DWORD PTR 4[ebx]
 
30
        ; Get short key flag
 
31
        mov     eax,DWORD PTR 128[ebp]
 
32
        push    eax
 
33
        xor     eax,eax
 
34
        ; round 0
 
35
        mov     edx,DWORD PTR [ebp]
 
36
        mov     ecx,DWORD PTR 4[ebp]
 
37
        add     edx,esi
 
38
        rol     edx,cl
 
39
        mov     ebx,edx
 
40
        xor     ecx,ecx
 
41
        mov     cl,dh
 
42
        and     ebx,255
 
43
        shr     edx,16
 
44
        xor     eax,eax
 
45
        mov     al,dh
 
46
        and     edx,255
 
47
        mov     ecx,DWORD PTR _CAST_S_table0[ecx*4]
 
48
        mov     ebx,DWORD PTR _CAST_S_table1[ebx*4]
 
49
        xor     ecx,ebx
 
50
        mov     ebx,DWORD PTR _CAST_S_table2[eax*4]
 
51
        sub     ecx,ebx
 
52
        mov     ebx,DWORD PTR _CAST_S_table3[edx*4]
 
53
        add     ecx,ebx
 
54
        xor     edi,ecx
 
55
        ; round 1
 
56
        mov     edx,DWORD PTR 8[ebp]
 
57
        mov     ecx,DWORD PTR 12[ebp]
 
58
        xor     edx,edi
 
59
        rol     edx,cl
 
60
        mov     ebx,edx
 
61
        xor     ecx,ecx
 
62
        mov     cl,dh
 
63
        and     ebx,255
 
64
        shr     edx,16
 
65
        xor     eax,eax
 
66
        mov     al,dh
 
67
        and     edx,255
 
68
        mov     ecx,DWORD PTR _CAST_S_table0[ecx*4]
 
69
        mov     ebx,DWORD PTR _CAST_S_table1[ebx*4]
 
70
        sub     ecx,ebx
 
71
        mov     ebx,DWORD PTR _CAST_S_table2[eax*4]
 
72
        add     ecx,ebx
 
73
        mov     ebx,DWORD PTR _CAST_S_table3[edx*4]
 
74
        xor     ecx,ebx
 
75
        xor     esi,ecx
 
76
        ; round 2
 
77
        mov     edx,DWORD PTR 16[ebp]
 
78
        mov     ecx,DWORD PTR 20[ebp]
 
79
        sub     edx,esi
 
80
        rol     edx,cl
 
81
        mov     ebx,edx
 
82
        xor     ecx,ecx
 
83
        mov     cl,dh
 
84
        and     ebx,255
 
85
        shr     edx,16
 
86
        xor     eax,eax
 
87
        mov     al,dh
 
88
        and     edx,255
 
89
        mov     ecx,DWORD PTR _CAST_S_table0[ecx*4]
 
90
        mov     ebx,DWORD PTR _CAST_S_table1[ebx*4]
 
91
        add     ecx,ebx
 
92
        mov     ebx,DWORD PTR _CAST_S_table2[eax*4]
 
93
        xor     ecx,ebx
 
94
        mov     ebx,DWORD PTR _CAST_S_table3[edx*4]
 
95
        sub     ecx,ebx
 
96
        xor     edi,ecx
 
97
        ; round 3
 
98
        mov     edx,DWORD PTR 24[ebp]
 
99
        mov     ecx,DWORD PTR 28[ebp]
 
100
        add     edx,edi
 
101
        rol     edx,cl
 
102
        mov     ebx,edx
 
103
        xor     ecx,ecx
 
104
        mov     cl,dh
 
105
        and     ebx,255
 
106
        shr     edx,16
 
107
        xor     eax,eax
 
108
        mov     al,dh
 
109
        and     edx,255
 
110
        mov     ecx,DWORD PTR _CAST_S_table0[ecx*4]
 
111
        mov     ebx,DWORD PTR _CAST_S_table1[ebx*4]
 
112
        xor     ecx,ebx
 
113
        mov     ebx,DWORD PTR _CAST_S_table2[eax*4]
 
114
        sub     ecx,ebx
 
115
        mov     ebx,DWORD PTR _CAST_S_table3[edx*4]
 
116
        add     ecx,ebx
 
117
        xor     esi,ecx
 
118
        ; round 4
 
119
        mov     edx,DWORD PTR 32[ebp]
 
120
        mov     ecx,DWORD PTR 36[ebp]
 
121
        xor     edx,esi
 
122
        rol     edx,cl
 
123
        mov     ebx,edx
 
124
        xor     ecx,ecx
 
125
        mov     cl,dh
 
126
        and     ebx,255
 
127
        shr     edx,16
 
128
        xor     eax,eax
 
129
        mov     al,dh
 
130
        and     edx,255
 
131
        mov     ecx,DWORD PTR _CAST_S_table0[ecx*4]
 
132
        mov     ebx,DWORD PTR _CAST_S_table1[ebx*4]
 
133
        sub     ecx,ebx
 
134
        mov     ebx,DWORD PTR _CAST_S_table2[eax*4]
 
135
        add     ecx,ebx
 
136
        mov     ebx,DWORD PTR _CAST_S_table3[edx*4]
 
137
        xor     ecx,ebx
 
138
        xor     edi,ecx
 
139
        ; round 5
 
140
        mov     edx,DWORD PTR 40[ebp]
 
141
        mov     ecx,DWORD PTR 44[ebp]
 
142
        sub     edx,edi
 
143
        rol     edx,cl
 
144
        mov     ebx,edx
 
145
        xor     ecx,ecx
 
146
        mov     cl,dh
 
147
        and     ebx,255
 
148
        shr     edx,16
 
149
        xor     eax,eax
 
150
        mov     al,dh
 
151
        and     edx,255
 
152
        mov     ecx,DWORD PTR _CAST_S_table0[ecx*4]
 
153
        mov     ebx,DWORD PTR _CAST_S_table1[ebx*4]
 
154
        add     ecx,ebx
 
155
        mov     ebx,DWORD PTR _CAST_S_table2[eax*4]
 
156
        xor     ecx,ebx
 
157
        mov     ebx,DWORD PTR _CAST_S_table3[edx*4]
 
158
        sub     ecx,ebx
 
159
        xor     esi,ecx
 
160
        ; round 6
 
161
        mov     edx,DWORD PTR 48[ebp]
 
162
        mov     ecx,DWORD PTR 52[ebp]
 
163
        add     edx,esi
 
164
        rol     edx,cl
 
165
        mov     ebx,edx
 
166
        xor     ecx,ecx
 
167
        mov     cl,dh
 
168
        and     ebx,255
 
169
        shr     edx,16
 
170
        xor     eax,eax
 
171
        mov     al,dh
 
172
        and     edx,255
 
173
        mov     ecx,DWORD PTR _CAST_S_table0[ecx*4]
 
174
        mov     ebx,DWORD PTR _CAST_S_table1[ebx*4]
 
175
        xor     ecx,ebx
 
176
        mov     ebx,DWORD PTR _CAST_S_table2[eax*4]
 
177
        sub     ecx,ebx
 
178
        mov     ebx,DWORD PTR _CAST_S_table3[edx*4]
 
179
        add     ecx,ebx
 
180
        xor     edi,ecx
 
181
        ; round 7
 
182
        mov     edx,DWORD PTR 56[ebp]
 
183
        mov     ecx,DWORD PTR 60[ebp]
 
184
        xor     edx,edi
 
185
        rol     edx,cl
 
186
        mov     ebx,edx
 
187
        xor     ecx,ecx
 
188
        mov     cl,dh
 
189
        and     ebx,255
 
190
        shr     edx,16
 
191
        xor     eax,eax
 
192
        mov     al,dh
 
193
        and     edx,255
 
194
        mov     ecx,DWORD PTR _CAST_S_table0[ecx*4]
 
195
        mov     ebx,DWORD PTR _CAST_S_table1[ebx*4]
 
196
        sub     ecx,ebx
 
197
        mov     ebx,DWORD PTR _CAST_S_table2[eax*4]
 
198
        add     ecx,ebx
 
199
        mov     ebx,DWORD PTR _CAST_S_table3[edx*4]
 
200
        xor     ecx,ebx
 
201
        xor     esi,ecx
 
202
        ; round 8
 
203
        mov     edx,DWORD PTR 64[ebp]
 
204
        mov     ecx,DWORD PTR 68[ebp]
 
205
        sub     edx,esi
 
206
        rol     edx,cl
 
207
        mov     ebx,edx
 
208
        xor     ecx,ecx
 
209
        mov     cl,dh
 
210
        and     ebx,255
 
211
        shr     edx,16
 
212
        xor     eax,eax
 
213
        mov     al,dh
 
214
        and     edx,255
 
215
        mov     ecx,DWORD PTR _CAST_S_table0[ecx*4]
 
216
        mov     ebx,DWORD PTR _CAST_S_table1[ebx*4]
 
217
        add     ecx,ebx
 
218
        mov     ebx,DWORD PTR _CAST_S_table2[eax*4]
 
219
        xor     ecx,ebx
 
220
        mov     ebx,DWORD PTR _CAST_S_table3[edx*4]
 
221
        sub     ecx,ebx
 
222
        xor     edi,ecx
 
223
        ; round 9
 
224
        mov     edx,DWORD PTR 72[ebp]
 
225
        mov     ecx,DWORD PTR 76[ebp]
 
226
        add     edx,edi
 
227
        rol     edx,cl
 
228
        mov     ebx,edx
 
229
        xor     ecx,ecx
 
230
        mov     cl,dh
 
231
        and     ebx,255
 
232
        shr     edx,16
 
233
        xor     eax,eax
 
234
        mov     al,dh
 
235
        and     edx,255
 
236
        mov     ecx,DWORD PTR _CAST_S_table0[ecx*4]
 
237
        mov     ebx,DWORD PTR _CAST_S_table1[ebx*4]
 
238
        xor     ecx,ebx
 
239
        mov     ebx,DWORD PTR _CAST_S_table2[eax*4]
 
240
        sub     ecx,ebx
 
241
        mov     ebx,DWORD PTR _CAST_S_table3[edx*4]
 
242
        add     ecx,ebx
 
243
        xor     esi,ecx
 
244
        ; round 10
 
245
        mov     edx,DWORD PTR 80[ebp]
 
246
        mov     ecx,DWORD PTR 84[ebp]
 
247
        xor     edx,esi
 
248
        rol     edx,cl
 
249
        mov     ebx,edx
 
250
        xor     ecx,ecx
 
251
        mov     cl,dh
 
252
        and     ebx,255
 
253
        shr     edx,16
 
254
        xor     eax,eax
 
255
        mov     al,dh
 
256
        and     edx,255
 
257
        mov     ecx,DWORD PTR _CAST_S_table0[ecx*4]
 
258
        mov     ebx,DWORD PTR _CAST_S_table1[ebx*4]
 
259
        sub     ecx,ebx
 
260
        mov     ebx,DWORD PTR _CAST_S_table2[eax*4]
 
261
        add     ecx,ebx
 
262
        mov     ebx,DWORD PTR _CAST_S_table3[edx*4]
 
263
        xor     ecx,ebx
 
264
        xor     edi,ecx
 
265
        ; round 11
 
266
        mov     edx,DWORD PTR 88[ebp]
 
267
        mov     ecx,DWORD PTR 92[ebp]
 
268
        sub     edx,edi
 
269
        rol     edx,cl
 
270
        mov     ebx,edx
 
271
        xor     ecx,ecx
 
272
        mov     cl,dh
 
273
        and     ebx,255
 
274
        shr     edx,16
 
275
        xor     eax,eax
 
276
        mov     al,dh
 
277
        and     edx,255
 
278
        mov     ecx,DWORD PTR _CAST_S_table0[ecx*4]
 
279
        mov     ebx,DWORD PTR _CAST_S_table1[ebx*4]
 
280
        add     ecx,ebx
 
281
        mov     ebx,DWORD PTR _CAST_S_table2[eax*4]
 
282
        xor     ecx,ebx
 
283
        mov     ebx,DWORD PTR _CAST_S_table3[edx*4]
 
284
        sub     ecx,ebx
 
285
        xor     esi,ecx
 
286
        ; test short key flag
 
287
        pop     edx
 
288
        or      edx,edx
 
289
        jnz     $L000cast_enc_done
 
290
        ; round 12
 
291
        mov     edx,DWORD PTR 96[ebp]
 
292
        mov     ecx,DWORD PTR 100[ebp]
 
293
        add     edx,esi
 
294
        rol     edx,cl
 
295
        mov     ebx,edx
 
296
        xor     ecx,ecx
 
297
        mov     cl,dh
 
298
        and     ebx,255
 
299
        shr     edx,16
 
300
        xor     eax,eax
 
301
        mov     al,dh
 
302
        and     edx,255
 
303
        mov     ecx,DWORD PTR _CAST_S_table0[ecx*4]
 
304
        mov     ebx,DWORD PTR _CAST_S_table1[ebx*4]
 
305
        xor     ecx,ebx
 
306
        mov     ebx,DWORD PTR _CAST_S_table2[eax*4]
 
307
        sub     ecx,ebx
 
308
        mov     ebx,DWORD PTR _CAST_S_table3[edx*4]
 
309
        add     ecx,ebx
 
310
        xor     edi,ecx
 
311
        ; round 13
 
312
        mov     edx,DWORD PTR 104[ebp]
 
313
        mov     ecx,DWORD PTR 108[ebp]
 
314
        xor     edx,edi
 
315
        rol     edx,cl
 
316
        mov     ebx,edx
 
317
        xor     ecx,ecx
 
318
        mov     cl,dh
 
319
        and     ebx,255
 
320
        shr     edx,16
 
321
        xor     eax,eax
 
322
        mov     al,dh
 
323
        and     edx,255
 
324
        mov     ecx,DWORD PTR _CAST_S_table0[ecx*4]
 
325
        mov     ebx,DWORD PTR _CAST_S_table1[ebx*4]
 
326
        sub     ecx,ebx
 
327
        mov     ebx,DWORD PTR _CAST_S_table2[eax*4]
 
328
        add     ecx,ebx
 
329
        mov     ebx,DWORD PTR _CAST_S_table3[edx*4]
 
330
        xor     ecx,ebx
 
331
        xor     esi,ecx
 
332
        ; round 14
 
333
        mov     edx,DWORD PTR 112[ebp]
 
334
        mov     ecx,DWORD PTR 116[ebp]
 
335
        sub     edx,esi
 
336
        rol     edx,cl
 
337
        mov     ebx,edx
 
338
        xor     ecx,ecx
 
339
        mov     cl,dh
 
340
        and     ebx,255
 
341
        shr     edx,16
 
342
        xor     eax,eax
 
343
        mov     al,dh
 
344
        and     edx,255
 
345
        mov     ecx,DWORD PTR _CAST_S_table0[ecx*4]
 
346
        mov     ebx,DWORD PTR _CAST_S_table1[ebx*4]
 
347
        add     ecx,ebx
 
348
        mov     ebx,DWORD PTR _CAST_S_table2[eax*4]
 
349
        xor     ecx,ebx
 
350
        mov     ebx,DWORD PTR _CAST_S_table3[edx*4]
 
351
        sub     ecx,ebx
 
352
        xor     edi,ecx
 
353
        ; round 15
 
354
        mov     edx,DWORD PTR 120[ebp]
 
355
        mov     ecx,DWORD PTR 124[ebp]
 
356
        add     edx,edi
 
357
        rol     edx,cl
 
358
        mov     ebx,edx
 
359
        xor     ecx,ecx
 
360
        mov     cl,dh
 
361
        and     ebx,255
 
362
        shr     edx,16
 
363
        xor     eax,eax
 
364
        mov     al,dh
 
365
        and     edx,255
 
366
        mov     ecx,DWORD PTR _CAST_S_table0[ecx*4]
 
367
        mov     ebx,DWORD PTR _CAST_S_table1[ebx*4]
 
368
        xor     ecx,ebx
 
369
        mov     ebx,DWORD PTR _CAST_S_table2[eax*4]
 
370
        sub     ecx,ebx
 
371
        mov     ebx,DWORD PTR _CAST_S_table3[edx*4]
 
372
        add     ecx,ebx
 
373
        xor     esi,ecx
 
374
$L000cast_enc_done:
 
375
        nop
 
376
        mov     eax,DWORD PTR 20[esp]
 
377
        mov     DWORD PTR 4[eax],edi
 
378
        mov     DWORD PTR [eax],esi
 
379
        pop     edi
 
380
        pop     esi
 
381
        pop     ebx
 
382
        pop     ebp
 
383
        ret
 
384
_CAST_encrypt ENDP
 
385
EXTERN  _CAST_S_table0:NEAR
 
386
EXTERN  _CAST_S_table1:NEAR
 
387
EXTERN  _CAST_S_table2:NEAR
 
388
EXTERN  _CAST_S_table3:NEAR
 
389
ALIGN   16
 
390
_CAST_decrypt   PROC PUBLIC
 
391
$L_CAST_decrypt_begin::
 
392
        ;
 
393
        push    ebp
 
394
        push    ebx
 
395
        mov     ebx,DWORD PTR 12[esp]
 
396
        mov     ebp,DWORD PTR 16[esp]
 
397
        push    esi
 
398
        push    edi
 
399
        ; Load the 2 words
 
400
        mov     edi,DWORD PTR [ebx]
 
401
        mov     esi,DWORD PTR 4[ebx]
 
402
        ; Get short key flag
 
403
        mov     eax,DWORD PTR 128[ebp]
 
404
        or      eax,eax
 
405
        jnz     $L001cast_dec_skip
 
406
        xor     eax,eax
 
407
        ; round 15
 
408
        mov     edx,DWORD PTR 120[ebp]
 
409
        mov     ecx,DWORD PTR 124[ebp]
 
410
        add     edx,esi
 
411
        rol     edx,cl
 
412
        mov     ebx,edx
 
413
        xor     ecx,ecx
 
414
        mov     cl,dh
 
415
        and     ebx,255
 
416
        shr     edx,16
 
417
        xor     eax,eax
 
418
        mov     al,dh
 
419
        and     edx,255
 
420
        mov     ecx,DWORD PTR _CAST_S_table0[ecx*4]
 
421
        mov     ebx,DWORD PTR _CAST_S_table1[ebx*4]
 
422
        xor     ecx,ebx
 
423
        mov     ebx,DWORD PTR _CAST_S_table2[eax*4]
 
424
        sub     ecx,ebx
 
425
        mov     ebx,DWORD PTR _CAST_S_table3[edx*4]
 
426
        add     ecx,ebx
 
427
        xor     edi,ecx
 
428
        ; round 14
 
429
        mov     edx,DWORD PTR 112[ebp]
 
430
        mov     ecx,DWORD PTR 116[ebp]
 
431
        sub     edx,edi
 
432
        rol     edx,cl
 
433
        mov     ebx,edx
 
434
        xor     ecx,ecx
 
435
        mov     cl,dh
 
436
        and     ebx,255
 
437
        shr     edx,16
 
438
        xor     eax,eax
 
439
        mov     al,dh
 
440
        and     edx,255
 
441
        mov     ecx,DWORD PTR _CAST_S_table0[ecx*4]
 
442
        mov     ebx,DWORD PTR _CAST_S_table1[ebx*4]
 
443
        add     ecx,ebx
 
444
        mov     ebx,DWORD PTR _CAST_S_table2[eax*4]
 
445
        xor     ecx,ebx
 
446
        mov     ebx,DWORD PTR _CAST_S_table3[edx*4]
 
447
        sub     ecx,ebx
 
448
        xor     esi,ecx
 
449
        ; round 13
 
450
        mov     edx,DWORD PTR 104[ebp]
 
451
        mov     ecx,DWORD PTR 108[ebp]
 
452
        xor     edx,esi
 
453
        rol     edx,cl
 
454
        mov     ebx,edx
 
455
        xor     ecx,ecx
 
456
        mov     cl,dh
 
457
        and     ebx,255
 
458
        shr     edx,16
 
459
        xor     eax,eax
 
460
        mov     al,dh
 
461
        and     edx,255
 
462
        mov     ecx,DWORD PTR _CAST_S_table0[ecx*4]
 
463
        mov     ebx,DWORD PTR _CAST_S_table1[ebx*4]
 
464
        sub     ecx,ebx
 
465
        mov     ebx,DWORD PTR _CAST_S_table2[eax*4]
 
466
        add     ecx,ebx
 
467
        mov     ebx,DWORD PTR _CAST_S_table3[edx*4]
 
468
        xor     ecx,ebx
 
469
        xor     edi,ecx
 
470
        ; round 12
 
471
        mov     edx,DWORD PTR 96[ebp]
 
472
        mov     ecx,DWORD PTR 100[ebp]
 
473
        add     edx,edi
 
474
        rol     edx,cl
 
475
        mov     ebx,edx
 
476
        xor     ecx,ecx
 
477
        mov     cl,dh
 
478
        and     ebx,255
 
479
        shr     edx,16
 
480
        xor     eax,eax
 
481
        mov     al,dh
 
482
        and     edx,255
 
483
        mov     ecx,DWORD PTR _CAST_S_table0[ecx*4]
 
484
        mov     ebx,DWORD PTR _CAST_S_table1[ebx*4]
 
485
        xor     ecx,ebx
 
486
        mov     ebx,DWORD PTR _CAST_S_table2[eax*4]
 
487
        sub     ecx,ebx
 
488
        mov     ebx,DWORD PTR _CAST_S_table3[edx*4]
 
489
        add     ecx,ebx
 
490
        xor     esi,ecx
 
491
$L001cast_dec_skip:
 
492
        ; round 11
 
493
        mov     edx,DWORD PTR 88[ebp]
 
494
        mov     ecx,DWORD PTR 92[ebp]
 
495
        sub     edx,esi
 
496
        rol     edx,cl
 
497
        mov     ebx,edx
 
498
        xor     ecx,ecx
 
499
        mov     cl,dh
 
500
        and     ebx,255
 
501
        shr     edx,16
 
502
        xor     eax,eax
 
503
        mov     al,dh
 
504
        and     edx,255
 
505
        mov     ecx,DWORD PTR _CAST_S_table0[ecx*4]
 
506
        mov     ebx,DWORD PTR _CAST_S_table1[ebx*4]
 
507
        add     ecx,ebx
 
508
        mov     ebx,DWORD PTR _CAST_S_table2[eax*4]
 
509
        xor     ecx,ebx
 
510
        mov     ebx,DWORD PTR _CAST_S_table3[edx*4]
 
511
        sub     ecx,ebx
 
512
        xor     edi,ecx
 
513
        ; round 10
 
514
        mov     edx,DWORD PTR 80[ebp]
 
515
        mov     ecx,DWORD PTR 84[ebp]
 
516
        xor     edx,edi
 
517
        rol     edx,cl
 
518
        mov     ebx,edx
 
519
        xor     ecx,ecx
 
520
        mov     cl,dh
 
521
        and     ebx,255
 
522
        shr     edx,16
 
523
        xor     eax,eax
 
524
        mov     al,dh
 
525
        and     edx,255
 
526
        mov     ecx,DWORD PTR _CAST_S_table0[ecx*4]
 
527
        mov     ebx,DWORD PTR _CAST_S_table1[ebx*4]
 
528
        sub     ecx,ebx
 
529
        mov     ebx,DWORD PTR _CAST_S_table2[eax*4]
 
530
        add     ecx,ebx
 
531
        mov     ebx,DWORD PTR _CAST_S_table3[edx*4]
 
532
        xor     ecx,ebx
 
533
        xor     esi,ecx
 
534
        ; round 9
 
535
        mov     edx,DWORD PTR 72[ebp]
 
536
        mov     ecx,DWORD PTR 76[ebp]
 
537
        add     edx,esi
 
538
        rol     edx,cl
 
539
        mov     ebx,edx
 
540
        xor     ecx,ecx
 
541
        mov     cl,dh
 
542
        and     ebx,255
 
543
        shr     edx,16
 
544
        xor     eax,eax
 
545
        mov     al,dh
 
546
        and     edx,255
 
547
        mov     ecx,DWORD PTR _CAST_S_table0[ecx*4]
 
548
        mov     ebx,DWORD PTR _CAST_S_table1[ebx*4]
 
549
        xor     ecx,ebx
 
550
        mov     ebx,DWORD PTR _CAST_S_table2[eax*4]
 
551
        sub     ecx,ebx
 
552
        mov     ebx,DWORD PTR _CAST_S_table3[edx*4]
 
553
        add     ecx,ebx
 
554
        xor     edi,ecx
 
555
        ; round 8
 
556
        mov     edx,DWORD PTR 64[ebp]
 
557
        mov     ecx,DWORD PTR 68[ebp]
 
558
        sub     edx,edi
 
559
        rol     edx,cl
 
560
        mov     ebx,edx
 
561
        xor     ecx,ecx
 
562
        mov     cl,dh
 
563
        and     ebx,255
 
564
        shr     edx,16
 
565
        xor     eax,eax
 
566
        mov     al,dh
 
567
        and     edx,255
 
568
        mov     ecx,DWORD PTR _CAST_S_table0[ecx*4]
 
569
        mov     ebx,DWORD PTR _CAST_S_table1[ebx*4]
 
570
        add     ecx,ebx
 
571
        mov     ebx,DWORD PTR _CAST_S_table2[eax*4]
 
572
        xor     ecx,ebx
 
573
        mov     ebx,DWORD PTR _CAST_S_table3[edx*4]
 
574
        sub     ecx,ebx
 
575
        xor     esi,ecx
 
576
        ; round 7
 
577
        mov     edx,DWORD PTR 56[ebp]
 
578
        mov     ecx,DWORD PTR 60[ebp]
 
579
        xor     edx,esi
 
580
        rol     edx,cl
 
581
        mov     ebx,edx
 
582
        xor     ecx,ecx
 
583
        mov     cl,dh
 
584
        and     ebx,255
 
585
        shr     edx,16
 
586
        xor     eax,eax
 
587
        mov     al,dh
 
588
        and     edx,255
 
589
        mov     ecx,DWORD PTR _CAST_S_table0[ecx*4]
 
590
        mov     ebx,DWORD PTR _CAST_S_table1[ebx*4]
 
591
        sub     ecx,ebx
 
592
        mov     ebx,DWORD PTR _CAST_S_table2[eax*4]
 
593
        add     ecx,ebx
 
594
        mov     ebx,DWORD PTR _CAST_S_table3[edx*4]
 
595
        xor     ecx,ebx
 
596
        xor     edi,ecx
 
597
        ; round 6
 
598
        mov     edx,DWORD PTR 48[ebp]
 
599
        mov     ecx,DWORD PTR 52[ebp]
 
600
        add     edx,edi
 
601
        rol     edx,cl
 
602
        mov     ebx,edx
 
603
        xor     ecx,ecx
 
604
        mov     cl,dh
 
605
        and     ebx,255
 
606
        shr     edx,16
 
607
        xor     eax,eax
 
608
        mov     al,dh
 
609
        and     edx,255
 
610
        mov     ecx,DWORD PTR _CAST_S_table0[ecx*4]
 
611
        mov     ebx,DWORD PTR _CAST_S_table1[ebx*4]
 
612
        xor     ecx,ebx
 
613
        mov     ebx,DWORD PTR _CAST_S_table2[eax*4]
 
614
        sub     ecx,ebx
 
615
        mov     ebx,DWORD PTR _CAST_S_table3[edx*4]
 
616
        add     ecx,ebx
 
617
        xor     esi,ecx
 
618
        ; round 5
 
619
        mov     edx,DWORD PTR 40[ebp]
 
620
        mov     ecx,DWORD PTR 44[ebp]
 
621
        sub     edx,esi
 
622
        rol     edx,cl
 
623
        mov     ebx,edx
 
624
        xor     ecx,ecx
 
625
        mov     cl,dh
 
626
        and     ebx,255
 
627
        shr     edx,16
 
628
        xor     eax,eax
 
629
        mov     al,dh
 
630
        and     edx,255
 
631
        mov     ecx,DWORD PTR _CAST_S_table0[ecx*4]
 
632
        mov     ebx,DWORD PTR _CAST_S_table1[ebx*4]
 
633
        add     ecx,ebx
 
634
        mov     ebx,DWORD PTR _CAST_S_table2[eax*4]
 
635
        xor     ecx,ebx
 
636
        mov     ebx,DWORD PTR _CAST_S_table3[edx*4]
 
637
        sub     ecx,ebx
 
638
        xor     edi,ecx
 
639
        ; round 4
 
640
        mov     edx,DWORD PTR 32[ebp]
 
641
        mov     ecx,DWORD PTR 36[ebp]
 
642
        xor     edx,edi
 
643
        rol     edx,cl
 
644
        mov     ebx,edx
 
645
        xor     ecx,ecx
 
646
        mov     cl,dh
 
647
        and     ebx,255
 
648
        shr     edx,16
 
649
        xor     eax,eax
 
650
        mov     al,dh
 
651
        and     edx,255
 
652
        mov     ecx,DWORD PTR _CAST_S_table0[ecx*4]
 
653
        mov     ebx,DWORD PTR _CAST_S_table1[ebx*4]
 
654
        sub     ecx,ebx
 
655
        mov     ebx,DWORD PTR _CAST_S_table2[eax*4]
 
656
        add     ecx,ebx
 
657
        mov     ebx,DWORD PTR _CAST_S_table3[edx*4]
 
658
        xor     ecx,ebx
 
659
        xor     esi,ecx
 
660
        ; round 3
 
661
        mov     edx,DWORD PTR 24[ebp]
 
662
        mov     ecx,DWORD PTR 28[ebp]
 
663
        add     edx,esi
 
664
        rol     edx,cl
 
665
        mov     ebx,edx
 
666
        xor     ecx,ecx
 
667
        mov     cl,dh
 
668
        and     ebx,255
 
669
        shr     edx,16
 
670
        xor     eax,eax
 
671
        mov     al,dh
 
672
        and     edx,255
 
673
        mov     ecx,DWORD PTR _CAST_S_table0[ecx*4]
 
674
        mov     ebx,DWORD PTR _CAST_S_table1[ebx*4]
 
675
        xor     ecx,ebx
 
676
        mov     ebx,DWORD PTR _CAST_S_table2[eax*4]
 
677
        sub     ecx,ebx
 
678
        mov     ebx,DWORD PTR _CAST_S_table3[edx*4]
 
679
        add     ecx,ebx
 
680
        xor     edi,ecx
 
681
        ; round 2
 
682
        mov     edx,DWORD PTR 16[ebp]
 
683
        mov     ecx,DWORD PTR 20[ebp]
 
684
        sub     edx,edi
 
685
        rol     edx,cl
 
686
        mov     ebx,edx
 
687
        xor     ecx,ecx
 
688
        mov     cl,dh
 
689
        and     ebx,255
 
690
        shr     edx,16
 
691
        xor     eax,eax
 
692
        mov     al,dh
 
693
        and     edx,255
 
694
        mov     ecx,DWORD PTR _CAST_S_table0[ecx*4]
 
695
        mov     ebx,DWORD PTR _CAST_S_table1[ebx*4]
 
696
        add     ecx,ebx
 
697
        mov     ebx,DWORD PTR _CAST_S_table2[eax*4]
 
698
        xor     ecx,ebx
 
699
        mov     ebx,DWORD PTR _CAST_S_table3[edx*4]
 
700
        sub     ecx,ebx
 
701
        xor     esi,ecx
 
702
        ; round 1
 
703
        mov     edx,DWORD PTR 8[ebp]
 
704
        mov     ecx,DWORD PTR 12[ebp]
 
705
        xor     edx,esi
 
706
        rol     edx,cl
 
707
        mov     ebx,edx
 
708
        xor     ecx,ecx
 
709
        mov     cl,dh
 
710
        and     ebx,255
 
711
        shr     edx,16
 
712
        xor     eax,eax
 
713
        mov     al,dh
 
714
        and     edx,255
 
715
        mov     ecx,DWORD PTR _CAST_S_table0[ecx*4]
 
716
        mov     ebx,DWORD PTR _CAST_S_table1[ebx*4]
 
717
        sub     ecx,ebx
 
718
        mov     ebx,DWORD PTR _CAST_S_table2[eax*4]
 
719
        add     ecx,ebx
 
720
        mov     ebx,DWORD PTR _CAST_S_table3[edx*4]
 
721
        xor     ecx,ebx
 
722
        xor     edi,ecx
 
723
        ; round 0
 
724
        mov     edx,DWORD PTR [ebp]
 
725
        mov     ecx,DWORD PTR 4[ebp]
 
726
        add     edx,edi
 
727
        rol     edx,cl
 
728
        mov     ebx,edx
 
729
        xor     ecx,ecx
 
730
        mov     cl,dh
 
731
        and     ebx,255
 
732
        shr     edx,16
 
733
        xor     eax,eax
 
734
        mov     al,dh
 
735
        and     edx,255
 
736
        mov     ecx,DWORD PTR _CAST_S_table0[ecx*4]
 
737
        mov     ebx,DWORD PTR _CAST_S_table1[ebx*4]
 
738
        xor     ecx,ebx
 
739
        mov     ebx,DWORD PTR _CAST_S_table2[eax*4]
 
740
        sub     ecx,ebx
 
741
        mov     ebx,DWORD PTR _CAST_S_table3[edx*4]
 
742
        add     ecx,ebx
 
743
        xor     esi,ecx
 
744
        nop
 
745
        mov     eax,DWORD PTR 20[esp]
 
746
        mov     DWORD PTR 4[eax],edi
 
747
        mov     DWORD PTR [eax],esi
 
748
        pop     edi
 
749
        pop     esi
 
750
        pop     ebx
 
751
        pop     ebp
 
752
        ret
 
753
_CAST_decrypt ENDP
 
754
ALIGN   16
 
755
_CAST_cbc_encrypt       PROC PUBLIC
 
756
$L_CAST_cbc_encrypt_begin::
 
757
        ;
 
758
        push    ebp
 
759
        push    ebx
 
760
        push    esi
 
761
        push    edi
 
762
        mov     ebp,DWORD PTR 28[esp]
 
763
        ; getting iv ptr from parameter 4
 
764
        mov     ebx,DWORD PTR 36[esp]
 
765
        mov     esi,DWORD PTR [ebx]
 
766
        mov     edi,DWORD PTR 4[ebx]
 
767
        push    edi
 
768
        push    esi
 
769
        push    edi
 
770
        push    esi
 
771
        mov     ebx,esp
 
772
        mov     esi,DWORD PTR 36[esp]
 
773
        mov     edi,DWORD PTR 40[esp]
 
774
        ; getting encrypt flag from parameter 5
 
775
        mov     ecx,DWORD PTR 56[esp]
 
776
        ; get and push parameter 3
 
777
        mov     eax,DWORD PTR 48[esp]
 
778
        push    eax
 
779
        push    ebx
 
780
        cmp     ecx,0
 
781
        jz      $L002decrypt
 
782
        and     ebp,4294967288
 
783
        mov     eax,DWORD PTR 8[esp]
 
784
        mov     ebx,DWORD PTR 12[esp]
 
785
        jz      $L003encrypt_finish
 
786
$L004encrypt_loop:
 
787
        mov     ecx,DWORD PTR [esi]
 
788
        mov     edx,DWORD PTR 4[esi]
 
789
        xor     eax,ecx
 
790
        xor     ebx,edx
 
791
        bswap   eax
 
792
        bswap   ebx
 
793
        mov     DWORD PTR 8[esp],eax
 
794
        mov     DWORD PTR 12[esp],ebx
 
795
        call    $L_CAST_encrypt_begin
 
796
        mov     eax,DWORD PTR 8[esp]
 
797
        mov     ebx,DWORD PTR 12[esp]
 
798
        bswap   eax
 
799
        bswap   ebx
 
800
        mov     DWORD PTR [edi],eax
 
801
        mov     DWORD PTR 4[edi],ebx
 
802
        add     esi,8
 
803
        add     edi,8
 
804
        sub     ebp,8
 
805
        jnz     $L004encrypt_loop
 
806
$L003encrypt_finish:
 
807
        mov     ebp,DWORD PTR 52[esp]
 
808
        and     ebp,7
 
809
        jz      $L005finish
 
810
        call    $L006PIC_point
 
811
$L006PIC_point:
 
812
        pop     edx
 
813
        lea     ecx,DWORD PTR ($L007cbc_enc_jmp_table-$L006PIC_point)[edx]
 
814
        mov     ebp,DWORD PTR [ebp*4+ecx]
 
815
        add     ebp,edx
 
816
        xor     ecx,ecx
 
817
        xor     edx,edx
 
818
        jmp     ebp
 
819
$L008ej7:
 
820
        mov     dh,BYTE PTR 6[esi]
 
821
        shl     edx,8
 
822
$L009ej6:
 
823
        mov     dh,BYTE PTR 5[esi]
 
824
$L010ej5:
 
825
        mov     dl,BYTE PTR 4[esi]
 
826
$L011ej4:
 
827
        mov     ecx,DWORD PTR [esi]
 
828
        jmp     $L012ejend
 
829
$L013ej3:
 
830
        mov     ch,BYTE PTR 2[esi]
 
831
        shl     ecx,8
 
832
$L014ej2:
 
833
        mov     ch,BYTE PTR 1[esi]
 
834
$L015ej1:
 
835
        mov     cl,BYTE PTR [esi]
 
836
$L012ejend:
 
837
        xor     eax,ecx
 
838
        xor     ebx,edx
 
839
        bswap   eax
 
840
        bswap   ebx
 
841
        mov     DWORD PTR 8[esp],eax
 
842
        mov     DWORD PTR 12[esp],ebx
 
843
        call    $L_CAST_encrypt_begin
 
844
        mov     eax,DWORD PTR 8[esp]
 
845
        mov     ebx,DWORD PTR 12[esp]
 
846
        bswap   eax
 
847
        bswap   ebx
 
848
        mov     DWORD PTR [edi],eax
 
849
        mov     DWORD PTR 4[edi],ebx
 
850
        jmp     $L005finish
 
851
$L002decrypt:
 
852
        and     ebp,4294967288
 
853
        mov     eax,DWORD PTR 16[esp]
 
854
        mov     ebx,DWORD PTR 20[esp]
 
855
        jz      $L016decrypt_finish
 
856
$L017decrypt_loop:
 
857
        mov     eax,DWORD PTR [esi]
 
858
        mov     ebx,DWORD PTR 4[esi]
 
859
        bswap   eax
 
860
        bswap   ebx
 
861
        mov     DWORD PTR 8[esp],eax
 
862
        mov     DWORD PTR 12[esp],ebx
 
863
        call    $L_CAST_decrypt_begin
 
864
        mov     eax,DWORD PTR 8[esp]
 
865
        mov     ebx,DWORD PTR 12[esp]
 
866
        bswap   eax
 
867
        bswap   ebx
 
868
        mov     ecx,DWORD PTR 16[esp]
 
869
        mov     edx,DWORD PTR 20[esp]
 
870
        xor     ecx,eax
 
871
        xor     edx,ebx
 
872
        mov     eax,DWORD PTR [esi]
 
873
        mov     ebx,DWORD PTR 4[esi]
 
874
        mov     DWORD PTR [edi],ecx
 
875
        mov     DWORD PTR 4[edi],edx
 
876
        mov     DWORD PTR 16[esp],eax
 
877
        mov     DWORD PTR 20[esp],ebx
 
878
        add     esi,8
 
879
        add     edi,8
 
880
        sub     ebp,8
 
881
        jnz     $L017decrypt_loop
 
882
$L016decrypt_finish:
 
883
        mov     ebp,DWORD PTR 52[esp]
 
884
        and     ebp,7
 
885
        jz      $L005finish
 
886
        mov     eax,DWORD PTR [esi]
 
887
        mov     ebx,DWORD PTR 4[esi]
 
888
        bswap   eax
 
889
        bswap   ebx
 
890
        mov     DWORD PTR 8[esp],eax
 
891
        mov     DWORD PTR 12[esp],ebx
 
892
        call    $L_CAST_decrypt_begin
 
893
        mov     eax,DWORD PTR 8[esp]
 
894
        mov     ebx,DWORD PTR 12[esp]
 
895
        bswap   eax
 
896
        bswap   ebx
 
897
        mov     ecx,DWORD PTR 16[esp]
 
898
        mov     edx,DWORD PTR 20[esp]
 
899
        xor     ecx,eax
 
900
        xor     edx,ebx
 
901
        mov     eax,DWORD PTR [esi]
 
902
        mov     ebx,DWORD PTR 4[esi]
 
903
$L018dj7:
 
904
        ror     edx,16
 
905
        mov     BYTE PTR 6[edi],dl
 
906
        shr     edx,16
 
907
$L019dj6:
 
908
        mov     BYTE PTR 5[edi],dh
 
909
$L020dj5:
 
910
        mov     BYTE PTR 4[edi],dl
 
911
$L021dj4:
 
912
        mov     DWORD PTR [edi],ecx
 
913
        jmp     $L022djend
 
914
$L023dj3:
 
915
        ror     ecx,16
 
916
        mov     BYTE PTR 2[edi],cl
 
917
        shl     ecx,16
 
918
$L024dj2:
 
919
        mov     BYTE PTR 1[esi],ch
 
920
$L025dj1:
 
921
        mov     BYTE PTR [esi],cl
 
922
$L022djend:
 
923
        jmp     $L005finish
 
924
$L005finish:
 
925
        mov     ecx,DWORD PTR 60[esp]
 
926
        add     esp,24
 
927
        mov     DWORD PTR [ecx],eax
 
928
        mov     DWORD PTR 4[ecx],ebx
 
929
        pop     edi
 
930
        pop     esi
 
931
        pop     ebx
 
932
        pop     ebp
 
933
        ret
 
934
ALIGN   64
 
935
$L007cbc_enc_jmp_table:
 
936
DD      0
 
937
DD      $L015ej1-$L006PIC_point
 
938
DD      $L014ej2-$L006PIC_point
 
939
DD      $L013ej3-$L006PIC_point
 
940
DD      $L011ej4-$L006PIC_point
 
941
DD      $L010ej5-$L006PIC_point
 
942
DD      $L009ej6-$L006PIC_point
 
943
DD      $L008ej7-$L006PIC_point
 
944
ALIGN   64
 
945
_CAST_cbc_encrypt ENDP
 
946
.text$  ENDS
 
947
END