11 #if (defined __WATCOMC__)
13 static long dmval = 0;
15 long is_vmware_running(
void);
16 #pragma aux is_vmware_running modify exact [eax ebx ecx edx];
18 unsigned long getkensmessagecrc(
long param);
19 #pragma aux getkensmessagecrc =\
22 "beg: mov edx, dword ptr [ebx+ecx*4-4]",\
28 modify exact [eax ebx ecx edx]\
30 long msqrtasm(
int param);
31 #pragma aux msqrtasm =\
32 "mov eax, 0x40000000",\
33 "mov ebx, 0x20000000",\
34 "begit: cmp ecx, eax",\
37 "lea eax, [eax+ebx*4]",\
38 "skip: sub eax, ebx",\
46 modify exact [eax ebx ecx]\
55 long scale(
long i1,
long i2,
long i3);
59 parm nomemory [eax][edx][ecx]\
60 modify exact [eax edx]\
62 long mulscale(
long i1,
long i2,
long i3);
63 #pragma aux mulscale =\
66 parm nomemory [eax][edx][ecx]\
67 modify exact [eax edx]\
69 long mulscale1(
long i1,
long i2);
70 #pragma aux mulscale1 =\
73 parm nomemory [eax][edx]\
74 modify exact [eax edx]\
76 long mulscale2(
long i1,
long i2);
77 #pragma aux mulscale2 =\
80 parm nomemory [eax][edx]\
81 modify exact [eax edx]\
83 long mulscale3(
long i1,
long i2);
84 #pragma aux mulscale3 =\
87 parm nomemory [eax][edx]\
88 modify exact [eax edx]\
90 long mulscale4(
long i1,
long i2);
91 #pragma aux mulscale4 =\
94 parm nomemory [eax][edx]\
95 modify exact [eax edx]\
97 long mulscale5(
long i1,
long i2);
98 #pragma aux mulscale5 =\
101 parm nomemory [eax][edx]\
102 modify exact [eax edx]\
104 long mulscale6(
long i1,
long i2);
105 #pragma aux mulscale6 =\
108 parm nomemory [eax][edx]\
109 modify exact [eax edx]\
111 long mulscale7(
long i1,
long i2);
112 #pragma aux mulscale7 =\
115 parm nomemory [eax][edx]\
116 modify exact [eax edx]\
118 long mulscale8(
long i1,
long i2);
119 #pragma aux mulscale8 =\
122 parm nomemory [eax][edx]\
123 modify exact [eax edx]\
125 long mulscale9(
long i1,
long i2);
126 #pragma aux mulscale9 =\
129 parm nomemory [eax][edx]\
130 modify exact [eax edx]\
132 long mulscale10(
long i1,
long i2);
133 #pragma aux mulscale10 =\
135 "shrd eax, edx, 10",\
136 parm nomemory [eax][edx]\
137 modify exact [eax edx]\
139 long mulscale11(
long i1,
long i2);
140 #pragma aux mulscale11 =\
142 "shrd eax, edx, 11",\
143 parm nomemory [eax][edx]\
144 modify exact [eax edx]\
146 long mulscale12(
long i1,
long i2);
147 #pragma aux mulscale12 =\
149 "shrd eax, edx, 12",\
150 parm nomemory [eax][edx]\
151 modify exact [eax edx]\
153 long mulscale13(
long i1,
long i2);
154 #pragma aux mulscale13 =\
156 "shrd eax, edx, 13",\
157 parm nomemory [eax][edx]\
158 modify exact [eax edx]\
160 long mulscale14(
long i1,
long i2);
161 #pragma aux mulscale14 =\
163 "shrd eax, edx, 14",\
164 parm nomemory [eax][edx]\
165 modify exact [eax edx]\
167 long mulscale15(
long i1,
long i2);
168 #pragma aux mulscale15 =\
170 "shrd eax, edx, 15",\
171 parm nomemory [eax][edx]\
172 modify exact [eax edx]\
174 long mulscale16(
long i1,
long i2);
175 #pragma aux mulscale16 =\
177 "shrd eax, edx, 16",\
178 parm nomemory [eax][edx]\
179 modify exact [eax edx]\
181 long mulscale17(
long i1,
long i2);
182 #pragma aux mulscale17 =\
184 "shrd eax, edx, 17",\
185 parm nomemory [eax][edx]\
186 modify exact [eax edx]\
188 long mulscale18(
long i1,
long i2);
189 #pragma aux mulscale18 =\
191 "shrd eax, edx, 18",\
192 parm nomemory [eax][edx]\
193 modify exact [eax edx]\
195 long mulscale19(
long i1,
long i2);
196 #pragma aux mulscale19 =\
198 "shrd eax, edx, 19",\
199 parm nomemory [eax][edx]\
200 modify exact [eax edx]\
202 long mulscale20(
long i1,
long i2);
203 #pragma aux mulscale20 =\
205 "shrd eax, edx, 20",\
206 parm nomemory [eax][edx]\
207 modify exact [eax edx]\
209 long mulscale21(
long i1,
long i2);
210 #pragma aux mulscale21 =\
212 "shrd eax, edx, 21",\
213 parm nomemory [eax][edx]\
214 modify exact [eax edx]\
216 long mulscale22(
long i1,
long i2);
217 #pragma aux mulscale22 =\
219 "shrd eax, edx, 22",\
220 parm nomemory [eax][edx]\
221 modify exact [eax edx]\
223 long mulscale23(
long i1,
long i2);
224 #pragma aux mulscale23 =\
226 "shrd eax, edx, 23",\
227 parm nomemory [eax][edx]\
228 modify exact [eax edx]\
230 long mulscale24(
long i1,
long i2);
231 #pragma aux mulscale24 =\
233 "shrd eax, edx, 24",\
234 parm nomemory [eax][edx]\
235 modify exact [eax edx]\
237 long mulscale25(
long i1,
long i2);
238 #pragma aux mulscale25 =\
240 "shrd eax, edx, 25",\
241 parm nomemory [eax][edx]\
242 modify exact [eax edx]\
244 long mulscale26(
long i1,
long i2);
245 #pragma aux mulscale26 =\
247 "shrd eax, edx, 26",\
248 parm nomemory [eax][edx]\
249 modify exact [eax edx]\
251 long mulscale27(
long i1,
long i2);
252 #pragma aux mulscale27 =\
254 "shrd eax, edx, 27",\
255 parm nomemory [eax][edx]\
256 modify exact [eax edx]\
258 long mulscale28(
long i1,
long i2);
259 #pragma aux mulscale28 =\
261 "shrd eax, edx, 28",\
262 parm nomemory [eax][edx]\
263 modify exact [eax edx]\
265 long mulscale29(
long i1,
long i2);
266 #pragma aux mulscale29 =\
268 "shrd eax, edx, 29",\
269 parm nomemory [eax][edx]\
270 modify exact [eax edx]\
272 long mulscale30(
long i1,
long i2);
273 #pragma aux mulscale30 =\
275 "shrd eax, edx, 30",\
276 parm nomemory [eax][edx]\
277 modify exact [eax edx]\
279 long mulscale31(
long i1,
long i2);
280 #pragma aux mulscale31 =\
282 "shrd eax, edx, 31",\
283 parm nomemory [eax][edx]\
284 modify exact [eax edx]\
286 long mulscale32(
long i1,
long i2);
287 #pragma aux mulscale32 =\
289 parm nomemory [eax][edx]\
290 modify exact [eax edx]\
293 long dmulscale(
long i1,
long i2,
long i3,
long i4,
long i5);
294 #pragma aux dmulscale =\
302 "shrd eax, edx, cl",\
303 parm nomemory [eax][edx][esi][edi][ecx]\
304 modify exact [eax ebx edx esi]\
306 long dmulscale1(
long i1,
long i2,
long i3,
long i4);
307 #pragma aux dmulscale1 =\
316 parm nomemory [eax][edx][esi][edi]\
317 modify exact [eax ebx edx esi]\
319 long dmulscale2(
long i1,
long i2,
long i3,
long i4);
320 #pragma aux dmulscale2 =\
329 parm nomemory [eax][edx][esi][edi]\
330 modify exact [eax ebx edx esi]\
332 long dmulscale3(
long i1,
long i2,
long i3,
long i4);
333 #pragma aux dmulscale3 =\
342 parm nomemory [eax][edx][esi][edi]\
343 modify exact [eax ebx edx esi]\
345 long dmulscale4(
long i1,
long i2,
long i3,
long i4);
346 #pragma aux dmulscale4 =\
355 parm nomemory [eax][edx][esi][edi]\
356 modify exact [eax ebx edx esi]\
358 long dmulscale5(
long i1,
long i2,
long i3,
long i4);
359 #pragma aux dmulscale5 =\
368 parm nomemory [eax][edx][esi][edi]\
369 modify exact [eax ebx edx esi]\
371 long dmulscale6(
long i1,
long i2,
long i3,
long i4);
372 #pragma aux dmulscale6 =\
381 parm nomemory [eax][edx][esi][edi]\
382 modify exact [eax ebx edx esi]\
384 long dmulscale7(
long i1,
long i2,
long i3,
long i4);
385 #pragma aux dmulscale7 =\
394 parm nomemory [eax][edx][esi][edi]\
395 modify exact [eax ebx edx esi]\
397 long dmulscale8(
long i1,
long i2,
long i3,
long i4);
398 #pragma aux dmulscale8 =\
407 parm nomemory [eax][edx][esi][edi]\
408 modify exact [eax ebx edx esi]\
410 long dmulscale9(
long i1,
long i2,
long i3,
long i4);
411 #pragma aux dmulscale9 =\
420 parm nomemory [eax][edx][esi][edi]\
421 modify exact [eax ebx edx esi]\
423 long dmulscale10(
long i1,
long i2,
long i3,
long i4);
424 #pragma aux dmulscale10 =\
432 "shrd eax, edx, 10",\
433 parm nomemory [eax][edx][esi][edi]\
434 modify exact [eax ebx edx esi]\
436 long dmulscale11(
long i1,
long i2,
long i3,
long i4);
437 #pragma aux dmulscale11 =\
445 "shrd eax, edx, 11",\
446 parm nomemory [eax][edx][esi][edi]\
447 modify exact [eax ebx edx esi]\
449 long dmulscale12(
long i1,
long i2,
long i3,
long i4);
450 #pragma aux dmulscale12 =\
458 "shrd eax, edx, 12",\
459 parm nomemory [eax][edx][esi][edi]\
460 modify exact [eax ebx edx esi]\
462 long dmulscale13(
long i1,
long i2,
long i3,
long i4);
463 #pragma aux dmulscale13 =\
471 "shrd eax, edx, 13",\
472 parm nomemory [eax][edx][esi][edi]\
473 modify exact [eax ebx edx esi]\
475 long dmulscale14(
long i1,
long i2,
long i3,
long i4);
476 #pragma aux dmulscale14 =\
484 "shrd eax, edx, 14",\
485 parm nomemory [eax][edx][esi][edi]\
486 modify exact [eax ebx edx esi]\
488 long dmulscale15(
long i1,
long i2,
long i3,
long i4);
489 #pragma aux dmulscale15 =\
497 "shrd eax, edx, 15",\
498 parm nomemory [eax][edx][esi][edi]\
499 modify exact [eax ebx edx esi]\
501 long dmulscale16(
long i1,
long i2,
long i3,
long i4);
502 #pragma aux dmulscale16 =\
510 "shrd eax, edx, 16",\
511 parm nomemory [eax][edx][esi][edi]\
512 modify exact [eax ebx edx esi]\
514 long dmulscale17(
long i1,
long i2,
long i3,
long i4);
515 #pragma aux dmulscale17 =\
523 "shrd eax, edx, 17",\
524 parm nomemory [eax][edx][esi][edi]\
525 modify exact [eax ebx edx esi]\
527 long dmulscale18(
long i1,
long i2,
long i3,
long i4);
528 #pragma aux dmulscale18 =\
536 "shrd eax, edx, 18",\
537 parm nomemory [eax][edx][esi][edi]\
538 modify exact [eax ebx edx esi]\
540 long dmulscale19(
long i1,
long i2,
long i3,
long i4);
541 #pragma aux dmulscale19 =\
549 "shrd eax, edx, 19",\
550 parm nomemory [eax][edx][esi][edi]\
551 modify exact [eax ebx edx esi]\
553 long dmulscale20(
long i1,
long i2,
long i3,
long i4);
554 #pragma aux dmulscale20 =\
562 "shrd eax, edx, 20",\
563 parm nomemory [eax][edx][esi][edi]\
564 modify exact [eax ebx edx esi]\
566 long dmulscale21(
long i1,
long i2,
long i3,
long i4);
567 #pragma aux dmulscale21 =\
575 "shrd eax, edx, 21",\
576 parm nomemory [eax][edx][esi][edi]\
577 modify exact [eax ebx edx esi]\
579 long dmulscale22(
long i1,
long i2,
long i3,
long i4);
580 #pragma aux dmulscale22 =\
588 "shrd eax, edx, 22",\
589 parm nomemory [eax][edx][esi][edi]\
590 modify exact [eax ebx edx esi]\
592 long dmulscale23(
long i1,
long i2,
long i3,
long i4);
593 #pragma aux dmulscale23 =\
601 "shrd eax, edx, 23",\
602 parm nomemory [eax][edx][esi][edi]\
603 modify exact [eax ebx edx esi]\
605 long dmulscale24(
long i1,
long i2,
long i3,
long i4);
606 #pragma aux dmulscale24 =\
614 "shrd eax, edx, 24",\
615 parm nomemory [eax][edx][esi][edi]\
616 modify exact [eax ebx edx esi]\
618 long dmulscale25(
long i1,
long i2,
long i3,
long i4);
619 #pragma aux dmulscale25 =\
627 "shrd eax, edx, 25",\
628 parm nomemory [eax][edx][esi][edi]\
629 modify exact [eax ebx edx esi]\
631 long dmulscale26(
long i1,
long i2,
long i3,
long i4);
632 #pragma aux dmulscale26 =\
640 "shrd eax, edx, 26",\
641 parm nomemory [eax][edx][esi][edi]\
642 modify exact [eax ebx edx esi]\
644 long dmulscale27(
long i1,
long i2,
long i3,
long i4);
645 #pragma aux dmulscale27 =\
653 "shrd eax, edx, 27",\
654 parm nomemory [eax][edx][esi][edi]\
655 modify exact [eax ebx edx esi]\
657 long dmulscale28(
long i1,
long i2,
long i3,
long i4);
658 #pragma aux dmulscale28 =\
666 "shrd eax, edx, 28",\
667 parm nomemory [eax][edx][esi][edi]\
668 modify exact [eax ebx edx esi]\
670 long dmulscale29(
long i1,
long i2,
long i3,
long i4);
671 #pragma aux dmulscale29 =\
679 "shrd eax, edx, 29",\
680 parm nomemory [eax][edx][esi][edi]\
681 modify exact [eax ebx edx esi]\
683 long dmulscale30(
long i1,
long i2,
long i3,
long i4);
684 #pragma aux dmulscale30 =\
692 "shrd eax, edx, 30",\
693 parm nomemory [eax][edx][esi][edi]\
694 modify exact [eax ebx edx esi]\
696 long dmulscale31(
long i1,
long i2,
long i3,
long i4);
697 #pragma aux dmulscale31 =\
705 "shrd eax, edx, 31",\
706 parm nomemory [eax][edx][esi][edi]\
707 modify exact [eax ebx edx esi]\
709 long dmulscale32(
long i1,
long i2,
long i3,
long i4);
710 #pragma aux dmulscale32 =\
718 parm nomemory [eax][edx][esi][edi]\
719 modify exact [eax ebx edx esi]\
722 long tmulscale1(
long i1,
long i2,
long i3,
long i4,
long i5,
long i6);
723 #pragma aux tmulscale1 =\
735 parm nomemory [eax][edx][ebx][ecx][esi][edi]\
736 modify exact [eax ebx ecx edx]\
738 long tmulscale2(
long i1,
long i2,
long i3,
long i4,
long i5,
long i6);
739 #pragma aux tmulscale2 =\
751 parm nomemory [eax][edx][ebx][ecx][esi][edi]\
752 modify exact [eax ebx ecx edx]\
754 long tmulscale3(
long i1,
long i2,
long i3,
long i4,
long i5,
long i6);
755 #pragma aux tmulscale3 =\
767 parm nomemory [eax][edx][ebx][ecx][esi][edi]\
768 modify exact [eax ebx ecx edx]\
770 long tmulscale4(
long i1,
long i2,
long i3,
long i4,
long i5,
long i6);
771 #pragma aux tmulscale4 =\
783 parm nomemory [eax][edx][ebx][ecx][esi][edi]\
784 modify exact [eax ebx ecx edx]\
786 long tmulscale5(
long i1,
long i2,
long i3,
long i4,
long i5,
long i6);
787 #pragma aux tmulscale5 =\
799 parm nomemory [eax][edx][ebx][ecx][esi][edi]\
800 modify exact [eax ebx ecx edx]\
802 long tmulscale6(
long i1,
long i2,
long i3,
long i4,
long i5,
long i6);
803 #pragma aux tmulscale6 =\
815 parm nomemory [eax][edx][ebx][ecx][esi][edi]\
816 modify exact [eax ebx ecx edx]\
818 long tmulscale7(
long i1,
long i2,
long i3,
long i4,
long i5,
long i6);
819 #pragma aux tmulscale7 =\
831 parm nomemory [eax][edx][ebx][ecx][esi][edi]\
832 modify exact [eax ebx ecx edx]\
834 long tmulscale8(
long i1,
long i2,
long i3,
long i4,
long i5,
long i6);
835 #pragma aux tmulscale8 =\
847 parm nomemory [eax][edx][ebx][ecx][esi][edi]\
848 modify exact [eax ebx ecx edx]\
850 long tmulscale9(
long i1,
long i2,
long i3,
long i4,
long i5,
long i6);
851 #pragma aux tmulscale9 =\
863 parm nomemory [eax][edx][ebx][ecx][esi][edi]\
864 modify exact [eax ebx ecx edx]\
866 long tmulscale10(
long i1,
long i2,
long i3,
long i4,
long i5,
long i6);
867 #pragma aux tmulscale10 =\
878 "shrd eax, edx, 10",\
879 parm nomemory [eax][edx][ebx][ecx][esi][edi]\
880 modify exact [eax ebx ecx edx]\
882 long tmulscale11(
long i1,
long i2,
long i3,
long i4,
long i5,
long i6);
883 #pragma aux tmulscale11 =\
894 "shrd eax, edx, 11",\
895 parm nomemory [eax][edx][ebx][ecx][esi][edi]\
896 modify exact [eax ebx ecx edx]\
898 long tmulscale12(
long i1,
long i2,
long i3,
long i4,
long i5,
long i6);
899 #pragma aux tmulscale12 =\
910 "shrd eax, edx, 12",\
911 parm nomemory [eax][edx][ebx][ecx][esi][edi]\
912 modify exact [eax ebx ecx edx]\
914 long tmulscale13(
long i1,
long i2,
long i3,
long i4,
long i5,
long i6);
915 #pragma aux tmulscale13 =\
926 "shrd eax, edx, 13",\
927 parm nomemory [eax][edx][ebx][ecx][esi][edi]\
928 modify exact [eax ebx ecx edx]\
930 long tmulscale14(
long i1,
long i2,
long i3,
long i4,
long i5,
long i6);
931 #pragma aux tmulscale14 =\
942 "shrd eax, edx, 14",\
943 parm nomemory [eax][edx][ebx][ecx][esi][edi]\
944 modify exact [eax ebx ecx edx]\
946 long tmulscale15(
long i1,
long i2,
long i3,
long i4,
long i5,
long i6);
947 #pragma aux tmulscale15 =\
958 "shrd eax, edx, 15",\
959 parm nomemory [eax][edx][ebx][ecx][esi][edi]\
960 modify exact [eax ebx ecx edx]\
962 long tmulscale16(
long i1,
long i2,
long i3,
long i4,
long i5,
long i6);
963 #pragma aux tmulscale16 =\
974 "shrd eax, edx, 16",\
975 parm nomemory [eax][edx][ebx][ecx][esi][edi]\
976 modify exact [eax ebx ecx edx]\
978 long tmulscale17(
long i1,
long i2,
long i3,
long i4,
long i5,
long i6);
979 #pragma aux tmulscale17 =\
990 "shrd eax, edx, 17",\
991 parm nomemory [eax][edx][ebx][ecx][esi][edi]\
992 modify exact [eax ebx ecx edx]\
994 long tmulscale18(
long i1,
long i2,
long i3,
long i4,
long i5,
long i6);
995 #pragma aux tmulscale18 =\
1006 "shrd eax, edx, 18",\
1007 parm nomemory [eax][edx][ebx][ecx][esi][edi]\
1008 modify exact [eax ebx ecx edx]\
1010 long tmulscale19(
long i1,
long i2,
long i3,
long i4,
long i5,
long i6);
1011 #pragma aux tmulscale19 =\
1022 "shrd eax, edx, 19",\
1023 parm nomemory [eax][edx][ebx][ecx][esi][edi]\
1024 modify exact [eax ebx ecx edx]\
1026 long tmulscale20(
long i1,
long i2,
long i3,
long i4,
long i5,
long i6);
1027 #pragma aux tmulscale20 =\
1038 "shrd eax, edx, 20",\
1039 parm nomemory [eax][edx][ebx][ecx][esi][edi]\
1040 modify exact [eax ebx ecx edx]\
1042 long tmulscale21(
long i1,
long i2,
long i3,
long i4,
long i5,
long i6);
1043 #pragma aux tmulscale21 =\
1054 "shrd eax, edx, 21",\
1055 parm nomemory [eax][edx][ebx][ecx][esi][edi]\
1056 modify exact [eax ebx ecx edx]\
1058 long tmulscale22(
long i1,
long i2,
long i3,
long i4,
long i5,
long i6);
1059 #pragma aux tmulscale22 =\
1070 "shrd eax, edx, 22",\
1071 parm nomemory [eax][edx][ebx][ecx][esi][edi]\
1072 modify exact [eax ebx ecx edx]\
1074 long tmulscale23(
long i1,
long i2,
long i3,
long i4,
long i5,
long i6);
1075 #pragma aux tmulscale23 =\
1086 "shrd eax, edx, 23",\
1087 parm nomemory [eax][edx][ebx][ecx][esi][edi]\
1088 modify exact [eax ebx ecx edx]\
1090 long tmulscale24(
long i1,
long i2,
long i3,
long i4,
long i5,
long i6);
1091 #pragma aux tmulscale24 =\
1102 "shrd eax, edx, 24",\
1103 parm nomemory [eax][edx][ebx][ecx][esi][edi]\
1104 modify exact [eax ebx ecx edx]\
1106 long tmulscale25(
long i1,
long i2,
long i3,
long i4,
long i5,
long i6);
1107 #pragma aux tmulscale25 =\
1118 "shrd eax, edx, 25",\
1119 parm nomemory [eax][edx][ebx][ecx][esi][edi]\
1120 modify exact [eax ebx ecx edx]\
1122 long tmulscale26(
long i1,
long i2,
long i3,
long i4,
long i5,
long i6);
1123 #pragma aux tmulscale26 =\
1134 "shrd eax, edx, 26",\
1135 parm nomemory [eax][edx][ebx][ecx][esi][edi]\
1136 modify exact [eax ebx ecx edx]\
1138 long tmulscale27(
long i1,
long i2,
long i3,
long i4,
long i5,
long i6);
1139 #pragma aux tmulscale27 =\
1150 "shrd eax, edx, 27",\
1151 parm nomemory [eax][edx][ebx][ecx][esi][edi]\
1152 modify exact [eax ebx ecx edx]\
1154 long tmulscale28(
long i1,
long i2,
long i3,
long i4,
long i5,
long i6);
1155 #pragma aux tmulscale28 =\
1166 "shrd eax, edx, 28",\
1167 parm nomemory [eax][edx][ebx][ecx][esi][edi]\
1168 modify exact [eax ebx ecx edx]\
1170 long tmulscale29(
long i1,
long i2,
long i3,
long i4,
long i5,
long i6);
1171 #pragma aux tmulscale29 =\
1182 "shrd eax, edx, 29",\
1183 parm nomemory [eax][edx][ebx][ecx][esi][edi]\
1184 modify exact [eax ebx ecx edx]\
1186 long tmulscale30(
long i1,
long i2,
long i3,
long i4,
long i5,
long i6);
1187 #pragma aux tmulscale30 =\
1198 "shrd eax, edx, 30",\
1199 parm nomemory [eax][edx][ebx][ecx][esi][edi]\
1200 modify exact [eax ebx ecx edx]\
1202 long tmulscale31(
long i1,
long i2,
long i3,
long i4,
long i5,
long i6);
1203 #pragma aux tmulscale31 =\
1214 "shrd eax, edx, 31",\
1215 parm nomemory [eax][edx][ebx][ecx][esi][edi]\
1216 modify exact [eax ebx ecx edx]\
1218 long tmulscale32(
long i1,
long i2,
long i3,
long i4,
long i5,
long i6);
1219 #pragma aux tmulscale32 =\
1230 parm nomemory [eax][edx][ebx][ecx][esi][edi]\
1231 modify exact [eax ebx ecx edx]\
1234 long boundmulscale(
long i1,
long i2,
long i3);
1235 #pragma aux boundmulscale =\
1238 "shrd eax, edx, cl",\
1244 "cmp edx, 0xffffffff",\
1249 "xor eax, 0x7fffffff",\
1251 parm nomemory [eax][ebx][ecx]\
1252 modify exact [eax ebx edx]\
1254 long divscale(
long i1,
long i2,
long i3);
1255 #pragma aux divscale =\
1261 parm nomemory [eax][ebx][ecx]\
1262 modify exact [eax ecx edx]\
1264 long divscale1(
long i1,
long i2);
1265 #pragma aux divscale1 =\
1269 parm nomemory [eax][ebx]\
1270 modify exact [eax edx]\
1272 long divscale2(
long i1,
long i2);
1273 #pragma aux divscale2 =\
1276 "lea eax, [eax*4]",\
1278 parm nomemory [eax][ebx]\
1279 modify exact [eax edx]\
1281 long divscale3(
long i1,
long i2);
1282 #pragma aux divscale3 =\
1285 "lea eax, [eax*8]",\
1287 parm nomemory [eax][ebx]\
1288 modify exact [eax edx]\
1290 long divscale4(
long i1,
long i2);
1291 #pragma aux divscale4 =\
1296 parm nomemory [eax][ebx]\
1297 modify exact [eax edx]\
1299 long divscale5(
long i1,
long i2);
1300 #pragma aux divscale5 =\
1305 parm nomemory [eax][ebx]\
1306 modify exact [eax edx]\
1308 long divscale6(
long i1,
long i2);
1309 #pragma aux divscale6 =\
1314 parm nomemory [eax][ebx]\
1315 modify exact [eax edx]\
1317 long divscale7(
long i1,
long i2);
1318 #pragma aux divscale7 =\
1323 parm nomemory [eax][ebx]\
1324 modify exact [eax edx]\
1326 long divscale8(
long i1,
long i2);
1327 #pragma aux divscale8 =\
1332 parm nomemory [eax][ebx]\
1333 modify exact [eax edx]\
1335 long divscale9(
long i1,
long i2);
1336 #pragma aux divscale9 =\
1341 parm nomemory [eax][ebx]\
1342 modify exact [eax edx]\
1344 long divscale10(
long i1,
long i2);
1345 #pragma aux divscale10 =\
1350 parm nomemory [eax][ebx]\
1351 modify exact [eax edx]\
1353 long divscale11(
long i1,
long i2);
1354 #pragma aux divscale11 =\
1359 parm nomemory [eax][ebx]\
1360 modify exact [eax edx]\
1362 long divscale12(
long i1,
long i2);
1363 #pragma aux divscale12 =\
1368 parm nomemory [eax][ebx]\
1369 modify exact [eax edx]\
1371 long divscale13(
long i1,
long i2);
1372 #pragma aux divscale13 =\
1377 parm nomemory [eax][ebx]\
1378 modify exact [eax edx]\
1380 long divscale14(
long i1,
long i2);
1381 #pragma aux divscale14 =\
1386 parm nomemory [eax][ebx]\
1387 modify exact [eax edx]\
1389 long divscale15(
long i1,
long i2);
1390 #pragma aux divscale15 =\
1395 parm nomemory [eax][ebx]\
1396 modify exact [eax edx]\
1398 long divscale16(
long i1,
long i2);
1399 #pragma aux divscale16 =\
1404 parm nomemory [eax][ebx]\
1405 modify exact [eax edx]\
1407 long divscale17(
long i1,
long i2);
1408 #pragma aux divscale17 =\
1413 parm nomemory [eax][ebx]\
1414 modify exact [eax edx]\
1416 long divscale18(
long i1,
long i2);
1417 #pragma aux divscale18 =\
1422 parm nomemory [eax][ebx]\
1423 modify exact [eax edx]\
1425 long divscale19(
long i1,
long i2);
1426 #pragma aux divscale19 =\
1431 parm nomemory [eax][ebx]\
1432 modify exact [eax edx]\
1434 long divscale20(
long i1,
long i2);
1435 #pragma aux divscale20 =\
1440 parm nomemory [eax][ebx]\
1441 modify exact [eax edx]\
1443 long divscale21(
long i1,
long i2);
1444 #pragma aux divscale21 =\
1449 parm nomemory [eax][ebx]\
1450 modify exact [eax edx]\
1452 long divscale22(
long i1,
long i2);
1453 #pragma aux divscale22 =\
1458 parm nomemory [eax][ebx]\
1459 modify exact [eax edx]\
1461 long divscale23(
long i1,
long i2);
1462 #pragma aux divscale23 =\
1467 parm nomemory [eax][ebx]\
1468 modify exact [eax edx]\
1470 long divscale24(
long i1,
long i2);
1471 #pragma aux divscale24 =\
1476 parm nomemory [eax][ebx]\
1477 modify exact [eax edx]\
1479 long divscale25(
long i1,
long i2);
1480 #pragma aux divscale25 =\
1485 parm nomemory [eax][ebx]\
1486 modify exact [eax edx]\
1488 long divscale26(
long i1,
long i2);
1489 #pragma aux divscale26 =\
1494 parm nomemory [eax][ebx]\
1495 modify exact [eax edx]\
1497 long divscale27(
long i1,
long i2);
1498 #pragma aux divscale27 =\
1503 parm nomemory [eax][ebx]\
1504 modify exact [eax edx]\
1506 long divscale28(
long i1,
long i2);
1507 #pragma aux divscale28 =\
1512 parm nomemory [eax][ebx]\
1513 modify exact [eax edx]\
1515 long divscale29(
long i1,
long i2);
1516 #pragma aux divscale29 =\
1521 parm nomemory [eax][ebx]\
1522 modify exact [eax edx]\
1524 long divscale30(
long i1,
long i2);
1525 #pragma aux divscale30 =\
1530 parm nomemory [eax][ebx]\
1531 modify exact [eax edx]\
1533 long divscale31(
long i1,
long i2);
1534 #pragma aux divscale31 =\
1539 parm nomemory [eax][ebx]\
1540 modify exact [eax edx]\
1542 long divscale32(
long i1,
long i2);
1543 #pragma aux divscale32 =\
1546 parm nomemory [edx][ebx]\
1547 modify exact [eax edx]\
1556 int setupmouse(
void);
1557 #pragma aux setupmouse =\
1560 "and eax, 0x0000ffff",\
1563 void readmousexy(
short *x,
short *y);
1564 #pragma aux readmousexy =\
1570 modify exact [eax ebx ecx edx]\
1572 void readmousebstatus(
short *buttons);
1573 #pragma aux readmousebstatus =\
1578 modify exact [eax ebx ecx edx]\
1580 unsigned char readpixel(
long offset);
1581 #pragma aux readpixel =\
1582 "mov al, byte ptr [edi]",\
1583 parm nomemory [edi]\
1586 void drawpixel(
long offset,
unsigned char p);
1587 #pragma aux drawpixel =\
1588 "mov byte ptr [edi], al",\
1592 void drawpixels(
long offset,
unsigned short p);
1593 #pragma aux drawpixels =\
1594 "mov word ptr [edi], ax",\
1598 void drawpixelses(
long offset,
unsigned long p);
1599 #pragma aux drawpixelses =\
1600 "mov dword ptr [edi], eax",\
1607 void clearbuf(
void *buf,
long i2,
long i3);
1608 #pragma aux clearbuf =\
1610 parm [edi][ecx][eax]\
1611 modify exact [edi ecx]\
1613 void clearbufbyte(
void *buf,
long i2,
long i3);
1614 #pragma aux clearbufbyte =\
1620 "preskip: shr ecx, 1",\
1623 "longcopy: test edi, 1",\
1627 "skip1: test edi, 2",\
1631 "skip2: mov ebx, ecx",\
1637 "skip3: test bl, 1",\
1641 parm [edi][ecx][eax]\
1644 void copybuf(
void *src,
void *dst,
long len);
1645 #pragma aux copybuf =\
1647 parm [esi][edi][ecx]\
1648 modify exact [ecx esi edi]\
1650 void copybufbyte(
void *src,
void *dst,
long len);
1651 #pragma aux copybufbyte =\
1657 "preskip: shr ecx, 1",\
1660 "longcopy: test edi, 1",\
1664 "skip1: test edi, 2",\
1668 "skip2: mov ebx, ecx",\
1674 "skip3: test bl, 1",\
1678 parm [esi][edi][ecx]\
1681 void copybufreverse(
void *src,
void *dst,
long len);
1682 #pragma aux copybufreverse =\
1685 "mov al, byte ptr [esi]",\
1687 "mov byte ptr [edi], al",\
1689 "skipit1: shr ecx, 1",\
1691 "mov ax, word ptr [esi-1]",\
1694 "mov word ptr [edi], ax",\
1696 "skipit2: test ecx, ecx",\
1698 "begloop: mov eax, dword ptr [esi-3]",\
1701 "mov dword ptr [edi], eax",\
1706 parm [esi][edi][ecx]\
1708 void qinterpolatedown16(
long *i1,
long i2,
long i3,
long i4);
1709 #pragma aux qinterpolatedown16 =\
1713 "begqcalc: lea edi, [edx+esi]",\
1715 "mov dword ptr [eax], edx",\
1716 "lea edx, [edi+esi]",\
1718 "mov dword ptr [eax+4], edi",\
1723 "jz skipbegqcalc2",\
1724 "skipbegcalc: sar edx, 16",\
1725 "mov dword ptr [eax], edx",\
1727 parm [eax][ecx][edx][esi]\
1728 modify exact [eax ebx ecx edx edi]\
1730 void qinterpolatedown16short(
long *i1,
long i2,
long i3,
long i4);
1731 #pragma aux qinterpolatedown16short =\
1738 "mov word ptr [eax], bx",\
1743 "skipalignit: sub ecx, 2",\
1745 "begqcalc: mov ebx, edx",\
1749 "and edi, 0ffff0000h",\
1752 "mov dword ptr [eax], ebx",\
1758 "finishit: mov ebx, edx",\
1760 "mov word ptr [eax], bx",\
1762 parm [eax][ecx][edx][esi]\
1763 modify exact [eax ebx ecx edx edi]\
1766 #if (defined PLATFORM_DOS)
1768 void setcolor16(
int i1);
1769 #pragma aux setcolor16 =\
1774 modify exact [eax edx]\
1779 void vlin16first(
long i1,
long i2);
1780 #pragma aux vlin16first =\
1781 "mov al, byte ptr [edi]",\
1784 "begvlin16firsta: mov byte ptr [edi], al",\
1785 "mov byte ptr [edi+80], al",\
1786 "mov byte ptr [edi+160], al",\
1787 "mov byte ptr [edi+240], al",\
1790 "jnz begvlin16firsta",\
1794 "begvlin16firstb: mov byte ptr [edi], al",\
1797 "jnz begvlin16firstb",\
1800 modify exact [eax ecx edi]\
1802 void vlin16(
long i1,
long i2);
1803 #pragma aux vlin16 =\
1805 "begvlin16: movsb",\
1811 modify exact [ecx esi edi]\
1813 #if (defined PLATFORM_DOS)
1815 void drawpixel16(
long offset);
1816 #pragma aux drawpixel16 =\
1818 "mov eax, 0x00008008",\
1823 "mov cl, byte ptr [edi+0xa0000]",\
1824 "mov byte ptr [edi+0xa0000], al",\
1826 modify exact [eax ecx edx edi]\
1828 void fillscreen16(
long i1,
long i2,
long i3);
1829 #pragma aux fillscreen16 =\
1836 "add edi, 0xa0000",\
1838 parm [edi][eax][ecx]\
1839 modify exact [eax ecx edx edi]\
1841 void koutp(
long i1,
long i);
1842 #pragma aux koutp =\
1847 void koutpw(
long i1,
long i);
1848 #pragma aux koutpw =\
1856 parm nomemory [edx]\
1864 "lea eax, [eax+eax*2]",\
1865 parm nomemory [eax]\
1869 "lea eax, [eax+eax*4]",\
1870 parm nomemory [eax]\
1874 "lea eax, [eax+eax*8]",\
1875 parm nomemory [eax]\
1878 long divmod(
long i1,
long i2);
1879 #pragma aux divmod =\
1884 modify exact [eax edx]\
1888 long moddiv(
long i1,
long i2);
1889 #pragma aux moddiv =\
1894 modify exact [eax edx]\
1897 long klabs(
long i1);
1898 #pragma aux klabs =\
1903 parm nomemory [eax]\
1911 parm nomemory [ebx]\
1912 modify exact [eax ebx]\
1915 long umin(
long i1,
long i2);
1921 parm nomemory [eax][ebx]\
1922 modify exact [eax ecx]\
1925 long umax(
long i1,
long i2);
1929 "xor ecx, 0xffffffff",\
1932 parm nomemory [eax][ebx]\
1933 modify exact [eax ecx]\
1935 long kmin(
long i1,
long i2);
1941 parm nomemory [eax][ebx]\
1944 long kmax(
long i1,
long i2);
1950 parm nomemory [eax][ebx]\
1953 #if (defined PLATFORM_DOS)
1954 void limitrate(
void);
1955 #pragma aux limitrate =\
1957 "wait1: in al, dx",\
1960 "wait2: in al, dx",\
1963 modify exact [eax edx]\
1965 long readtimer(
void);
1966 #pragma aux readtimer =\
1975 void redblueblit(
void *i1,
void *i2,
long i3);
1976 #pragma aux redblueblit = \
1978 "begblit: mov eax, dword ptr [edx+ecx]",\
1980 "add eax, dword ptr [ebx+ecx]",\
1981 "mov dword ptr [ecx+0xa0000], eax",\
1985 parm [ebx][edx][esi]\
1986 modify exact [eax ecx]\
1988 #pragma aux chainblit =\
1991 "mov al, byte ptr [esi+8]",\
1992 "mov ah, byte ptr [esi+12]",\
1994 "mov al, byte ptr [esi]",\
1995 "mov ah, byte ptr [esi+4]",\
1996 "mov dword ptr [edi], eax",\
2000 "prebeg: jz endit",\
2001 "beg: mov al, byte ptr [esi+8]",\
2002 "mov bl, byte ptr [esi+24]",\
2003 "mov ah, byte ptr [esi+12]",\
2004 "mov bh, byte ptr [esi+28]",\
2008 "mov al, byte ptr [esi]",\
2009 "mov bl, byte ptr [esi+16]",\
2010 "mov ah, byte ptr [esi+4]",\
2011 "mov bh, byte ptr [esi+20]",\
2013 "mov dword ptr [edi-8], eax",\
2015 "mov dword ptr [edi-4], ebx",\
2018 parm [esi][edi][ecx]\
2019 modify exact [eax ebx ecx esi edi]\
2024 void swapchar(
char *i1,
char *i2);
2025 #pragma aux swapchar =\
2033 void swapshort(
short *i1,
short *i2);
2034 #pragma aux swapshort =\
2040 modify exact [ecx edx]\
2042 void swaplong(
long *i1,
long *i2);
2043 #pragma aux swaplong =\
2049 modify exact [ecx edx]\
2051 #pragma aux swapbuf4 =\
2060 "jnz short begswap",\
2061 parm [eax][ebx][ecx]\
2062 modify exact [eax ebx ecx esi edi]\
2064 #pragma aux swap64bit =\
2068 "mov ecx, [eax+4]",\
2070 "mov edx, [ebx+4]",\
2071 "mov [ebx+4], ecx",\
2072 "mov [eax+4], edx",\
2074 modify exact [ecx edx]\
2081 void swapchar2(
char *ptr1,
char *ptr2,
long xsiz);
2082 #pragma aux swapchar2 =\
2090 parm [eax][ebx][esi]\
2091 modify exact [ecx edx esi]\
2093 static long timeroffs1mhz;
2095 #pragma aux inittimer1mhz =\
2129 "mov timeroffs1mhz, ebx",\
2130 modify exact [eax ebx ecx]\
2132 #pragma aux uninittimer1mhz =\
2139 #pragma aux gettime1mhz =\
2140 "mov ebx, timeroffs1mhz",\
2157 "and ebx, 0x0000fff0",\
2161 modify exact [eax ebx ecx]\
2165 #pragma aux deltatime1mhz =\
2168 "add eax, 0x0fff0000",\
2172 #pragma aux boundmulscale =\
2175 "shrd eax, edx, cl",\
2181 "cmp edx, 0xffffffff",\
2186 "xor eax, 0x7fffffff",\
2188 parm nomemory [eax][ebx][ecx]\
2189 modify exact [eax ebx edx]\
2193 long divscale(
long i1,
long i2,
long i3);
2194 #pragma aux divscale =\
2200 parm nomemory [eax][ebx][ecx]\
2201 modify exact [eax ecx edx]
2203 long divscale1(
long i1,
long i2);
2204 #pragma aux divscale1 =\
2208 parm nomemory [eax][ebx]\
2209 modify exact [eax edx]
2211 long divscale2(
long i1,
long i2);
2212 #pragma aux divscale2 =\
2215 "lea eax, [eax*4]",\
2217 parm nomemory [eax][ebx]\
2218 modify exact [eax edx]\
2220 long divscale3(
long i1,
long i2);
2221 #pragma aux divscale3 =\
2224 "lea eax, [eax*8]",\
2226 parm nomemory [eax][ebx]\
2227 modify exact [eax edx]\
2229 long divscale4(
long i1,
long i2);
2230 #pragma aux divscale4 =\
2235 parm nomemory [eax][ebx]\
2236 modify exact [eax edx]\
2238 long divscale5(
long i1,
long i2);
2239 #pragma aux divscale5 =\
2244 parm nomemory [eax][ebx]\
2245 modify exact [eax edx]\
2247 long divscale6(
long i1,
long i2);
2248 #pragma aux divscale6 =\
2253 parm nomemory [eax][ebx]\
2254 modify exact [eax edx]\
2256 long divscale7(
long i1,
long i2);
2257 #pragma aux divscale7 =\
2262 parm nomemory [eax][ebx]\
2263 modify exact [eax edx]\
2265 long divscale8(
long i1,
long i2);
2266 #pragma aux divscale8 =\
2271 parm nomemory [eax][ebx]\
2272 modify exact [eax edx]\
2274 long divscale9(
long i1,
long i2);
2275 #pragma aux divscale9 =\
2280 parm nomemory [eax][ebx]\
2281 modify exact [eax edx]\
2283 long divscale10(
long i1,
long i2);
2284 #pragma aux divscale10 =\
2289 parm nomemory [eax][ebx]\
2290 modify exact [eax edx]\
2292 long divscale11(
long i1,
long i2);
2293 #pragma aux divscale11 =\
2298 parm nomemory [eax][ebx]\
2299 modify exact [eax edx]\
2301 long divscale12(
long i1,
long i2);
2302 #pragma aux divscale12 =\
2307 parm nomemory [eax][ebx]\
2308 modify exact [eax edx]\
2310 long divscale13(
long i1,
long i2);
2311 #pragma aux divscale13 =\
2316 parm nomemory [eax][ebx]\
2317 modify exact [eax edx]\
2319 long divscale14(
long i1,
long i2);
2320 #pragma aux divscale14 =\
2325 parm nomemory [eax][ebx]\
2326 modify exact [eax edx]\
2328 long divscale15(
long i1,
long i2);
2329 #pragma aux divscale15 =\
2334 parm nomemory [eax][ebx]\
2335 modify exact [eax edx]\
2337 long divscale16(
long i1,
long i2);
2338 #pragma aux divscale16 =\
2343 parm nomemory [eax][ebx]\
2344 modify exact [eax edx]\
2346 long divscale17(
long i1,
long i2);
2347 #pragma aux divscale17 =\
2352 parm nomemory [eax][ebx]\
2353 modify exact [eax edx]\
2355 long divscale18(
long i1,
long i2);
2356 #pragma aux divscale18 =\
2361 parm nomemory [eax][ebx]\
2362 modify exact [eax edx]\
2364 long divscale19(
long i1,
long i2);
2365 #pragma aux divscale19 =\
2370 parm nomemory [eax][ebx]\
2371 modify exact [eax edx]\
2373 long divscale20(
long i1,
long i2);
2374 #pragma aux divscale20 =\
2379 parm nomemory [eax][ebx]\
2380 modify exact [eax edx]\
2382 long divscale21(
long i1,
long i2);
2383 #pragma aux divscale21 =\
2388 parm nomemory [eax][ebx]\
2389 modify exact [eax edx]\
2391 long divscale22(
long i1,
long i2);
2392 #pragma aux divscale22 =\
2397 parm nomemory [eax][ebx]\
2398 modify exact [eax edx]\
2400 long divscale23(
long i1,
long i2);
2401 #pragma aux divscale23 =\
2406 parm nomemory [eax][ebx]\
2407 modify exact [eax edx]\
2409 long divscale24(
long i1,
long i2);
2410 #pragma aux divscale24 =\
2415 parm nomemory [eax][ebx]\
2416 modify exact [eax edx]\
2418 long divscale25(
long i1,
long i2);
2419 #pragma aux divscale25 =\
2424 parm nomemory [eax][ebx]\
2425 modify exact [eax edx]\
2427 long divscale26(
long i1,
long i2);
2428 #pragma aux divscale26 =\
2433 parm nomemory [eax][ebx]\
2434 modify exact [eax edx]\
2436 long divscale27(
long i1,
long i2);
2437 #pragma aux divscale27 =\
2442 parm nomemory [eax][ebx]\
2443 modify exact [eax edx]\
2445 long divscale28(
long i1,
long i2);
2446 #pragma aux divscale28 =\
2451 parm nomemory [eax][ebx]\
2452 modify exact [eax edx]\
2454 long divscale29(
long i1,
long i2);
2455 #pragma aux divscale29 =\
2460 parm nomemory [eax][ebx]\
2461 modify exact [eax edx]\
2463 long divscale30(
long i1,
long i2);
2464 #pragma aux divscale30 =\
2469 parm nomemory [eax][ebx]\
2470 modify exact [eax edx]\
2472 long divscale31(
long i1,
long i2);
2473 #pragma aux divscale31 =\
2478 parm nomemory [eax][ebx]\
2479 modify exact [eax edx]\
2481 long divscale32(
long i1,
long i2);
2482 #pragma aux divscale32 =\
2485 parm nomemory [edx][ebx]\
2486 modify exact [eax edx]
2490 #include "platform.h"
2492 static __inline
void swapchar(
unsigned char *p1,
unsigned char *p2)
2493 {
unsigned char tmp = *p1; *p1 = *p2; *p2 = tmp; }
2494 static __inline
void swapshort(
short *p1,
short *p2)
2495 {
short tmp = *p1; *p1 = *p2; *p2 = tmp; }
2496 static __inline
void swaplong(
long *p1,
long *p2)
2497 {
long tmp = *p1; *p1 = *p2; *p2 = tmp; }
2498 static __inline
void swapchar2(
unsigned char *p1,
unsigned char *p2,
int xsiz)
2501 swapchar(p1 + 1, p2 + xsiz);
2505 unsigned long getkensmessagecrc(
long param);
2506 long msqrtasm(
int i1);
2508 void vlin16first (
long i1,
long i2);
2510 static __inline
int sqr (
int input1) {
return input1*input1; }
2513 static __inline __int64 mul32_64(
int i1,
int i2)
2515 return (__int64)i1*i2;
2517 static __inline
int scale (
int input1,
int input2,
int input3)
2519 return mul32_64(input1,input2)/input3;
2521 static __inline
int mulscale (
int input1,
int input2,
int input3)
2523 return mul32_64(input1,input2)>>input3;
2525 static __inline
int dmulscale (
int input1,
int input2,
int input3,
int input4,
int input5)
2527 return (mul32_64(input1,input2) + mul32_64(input3,input4))>>input5;
2529 static __inline
int tmulscale(
int i1,
int i2,
int i3,
int i4,
int i5,
int i6,
int shift)
2531 return (mul32_64(i1,i2) + mul32_64(i3,i4) + mul32_64(i5,i6))>>shift;
2533 static __inline
int divscale(
int i1,
int i2,
int i3)
2535 return ((__int64)i1<<i3)/i2;
2573 static __inline int mulscale##N(int input1, int input2) \
2574 { return mulscale(input1,input2,N); }
2579 static __inline int dmulscale##N(int input1, int input2,int input3,int input4) \
2580 { return dmulscale(input1,input2,input3,input4,N); }
2585 static __inline int tmulscale##N(int i1, int i2,int i3,int i4,int i5,int i6) \
2586 { return tmulscale(i1,i2,i3,i4,i5,i6,N); }
2591 static __inline int divscale##N(int input1, int input2) \
2592 { return divscale(input1,input2,N); }
2596 static __inline
int ksgn(
int i1)
2598 if (i1 < 0)
return -1;
2599 else if (i1 > 0)
return 1;
2603 static __inline
int sgn(
int i1) {
return ksgn(i1); }
2604 static __inline
int klabs (
int i1)
2606 if (i1 < 0) i1 = -i1;
2609 static __inline
int mul3 (
int i1) {
return i1*3; }
2610 static __inline
int mul5 (
int i1) {
return i1*5; }
2611 static __inline
int mul9 (
int i1) {
return i1*9; }
2613 void copybufreverse(
void *source,
void *dest,
int size);
2614 void copybuf(
void *source,
void *dest,
int size);
2615 void clearbuf(
void *buffer,
int size,
long fill_value);
2616 void clearbufbyte(
void *buffer,
int size,
long fill_value);
2617 void copybufbyte(
void *source,
void *dest,
int size);
2619 void qinterpolatedown16 (
long *source,
int size,
int linum,
int linum_inc);
2620 void qinterpolatedown16short (
long *source,
int size,
int linum,
int linum_inc);