• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1#
2# Copyright (c) 2017-2021 The Khronos Group Inc.
3# Copyright (c) 2017-2021 Valve Corporation
4# Copyright (c) 2017-2021 LunarG, Inc.
5#
6# Licensed under the Apache License, Version 2.0 (the "License");
7# you may not use this file except in compliance with the License.
8# You may obtain a copy of the License at
9#
10#     http://www.apache.org/licenses/LICENSE-2.0
11#
12# Unless required by applicable law or agreed to in writing, software
13# distributed under the License is distributed on an "AS IS" BASIS,
14# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15# See the License for the specific language governing permissions and
16# limitations under the License.
17#
18# Author: Lenny Komow <lenny@lunarg.com>
19# Author: Charles Giessen <charles@lunarg.com>
20#
21
22# This code is used to pass on device (including physical device) extensions through the call chain. It must do this without
23# creating a stack frame, because the actual parameters of the call are not known. Since the first parameter is known to be a
24# VkPhysicalDevice or a dispatchable object it can unwrap the object, possibly overwriting the wrapped physical device, and then
25# jump to the next function in the call chain
26
27#ifdef HAVE_CET_H
28#include <cet.h>
29#else
30#define _CET_ENDBR
31#endif
32
33.intel_syntax noprefix
34.include "gen_defines.asm"
35
36.ifdef X86_64
37
38.macro PhysDevExtTramp num
39.global vkPhysDevExtTramp\num
40vkPhysDevExtTramp\num:
41    _CET_ENDBR
42    mov     rax, [rdi]
43    mov     rdi, [rdi + PHYS_DEV_OFFSET_PHYS_DEV_TRAMP]
44    jmp     [rax + (PHYS_DEV_OFFSET_INST_DISPATCH + (PTR_SIZE * \num))]
45.endm
46
47.macro PhysDevExtTermin num
48.global vkPhysDevExtTermin\num
49vkPhysDevExtTermin\num:
50    _CET_ENDBR
51    mov     rax, [rdi + ICD_TERM_OFFSET_PHYS_DEV_TERM]                          # Store the loader_icd_term* in rax
52    cmp     qword ptr [rax + (DISPATCH_OFFSET_ICD_TERM + (PTR_SIZE * \num))], 0 # Check if the next function in the chain is NULL
53    je      terminError\num                                                     # Go to the error section if it is NULL
54    mov     rdi, [rdi + PHYS_DEV_OFFSET_PHYS_DEV_TERM]                          # Load the unwrapped VkPhysicalDevice into the first arg
55    jmp     [rax + (DISPATCH_OFFSET_ICD_TERM + (PTR_SIZE * \num))]              # Jump to the next function in the chain
56terminError\num:
57    sub     rsp, 56                                                             # Create the stack frame
58    mov     rdi, [rax + INSTANCE_OFFSET_ICD_TERM]                               # Load the loader_instance into rdi (first arg)
59    lea     rsi, [VULKAN_LOADER_ERROR_BIT]                                      # Write the error logging bit to rsi (second arg)
60    xor     rdx, rdx                                                            # Set rdx to zero (third arg)
61    lea     rcx, [rip + termin_error_string]                                   # Load the error string into rcx (fourth arg)
62    mov     r8, [rdi + (FUNCTION_OFFSET_INSTANCE + (CHAR_PTR_SIZE * \num))]     # Load the func name into r8 (fifth arg)
63    call    loader_log                                                          # Log the error message before we crash
64    add     rsp, 56                                                             # Clean up the stack frame
65    mov     rax, 0
66    jmp     rax                                                                 # Crash intentionally by jumping to address zero
67.endm
68
69.macro DevExtTramp num
70.global vkdev_ext\num
71vkdev_ext\num:
72    _CET_ENDBR
73    mov     rax, [rdi]                                                          # Dereference the handle to get the dispatch table
74    jmp     [rax + (EXT_OFFSET_DEVICE_DISPATCH + (PTR_SIZE * \num))]            # Jump to the appropriate call chain
75.endm
76
77.else
78
79.macro PhysDevExtTramp num
80.global vkPhysDevExtTramp\num
81vkPhysDevExtTramp\num:
82    _CET_ENDBR
83    mov     eax, [esp + 4]                              # Load the wrapped VkPhysicalDevice into eax
84    mov     ecx, [eax + PHYS_DEV_OFFSET_PHYS_DEV_TRAMP] # Load the unwrapped VkPhysicalDevice into ecx
85    mov     [esp + 4], ecx                              # Overwrite the wrapped VkPhysicalDevice with the unwrapped one (on the stack)
86    mov     eax, [eax]                                  # Dereference the wrapped VkPhysicalDevice to get the dispatch table in eax
87    jmp     [eax + (PHYS_DEV_OFFSET_INST_DISPATCH + (PTR_SIZE * \num))] # Dereference the wrapped VkPhysicalDevice to get the dispatch table in eax
88.endm
89
90.macro PhysDevExtTermin num
91.global vkPhysDevExtTermin\num
92vkPhysDevExtTermin\num:
93    _CET_ENDBR
94    mov     ecx, [esp + 4]                                                      # Move the wrapped VkPhysicalDevice into ecx
95    mov     eax, [ecx + ICD_TERM_OFFSET_PHYS_DEV_TERM]                          # Store the loader_icd_term* in eax
96    cmp     dword ptr [eax + (DISPATCH_OFFSET_ICD_TERM + (PTR_SIZE * \num))], 0 # Check if the next function in the chain is NULL
97    je      terminError\num                                                     # Go to the error section if it is NULL
98    mov     ecx, [ecx + PHYS_DEV_OFFSET_PHYS_DEV_TERM]                          # Unwrap the VkPhysicalDevice in ecx
99    mov     [esp + 4], ecx                                                      # Copy the unwrapped VkPhysicalDevice into the first arg
100    jmp     [eax + (DISPATCH_OFFSET_ICD_TERM + (PTR_SIZE * \num))]              # Jump to the next function in the chain
101terminError\num:
102    mov     eax, dword ptr [eax + INSTANCE_OFFSET_ICD_TERM]                       # Load the loader_instance into eax
103    push    dword ptr [eax + (FUNCTION_OFFSET_INSTANCE + (CHAR_PTR_SIZE * \num))] # Push the func name (fifth arg)
104    push    offset termin_error_string@GOT                                        # Push the error string (fourth arg)
105    push    0                                                                     # Push zero (third arg)
106    push    VULKAN_LOADER_ERROR_BIT                                               # Push the error logging bit (second arg)
107    push    eax                                                                   # Push the loader_instance (first arg)
108    call    loader_log                                                            # Log the error message before we crash
109    add     esp, 20                                                               # Clean up the args
110    mov     eax, 0
111    jmp     eax                                                         # Crash intentionally by jumping to address zero
112.endm
113
114.macro DevExtTramp num
115.global vkdev_ext\num
116vkdev_ext\num:
117    _CET_ENDBR
118    mov     eax, dword ptr [esp + 4]                                            # Dereference the handle to get the dispatch table
119    mov     eax, dword ptr [eax]                                                # Dereference the chain_device to get the loader_dispatch
120    jmp     dword ptr [eax + (EXT_OFFSET_DEVICE_DISPATCH + (PTR_SIZE * \num))]  # Jump to the appropriate call chain
121.endm
122
123.endif
124
125#if defined(__ELF__)
126.section .note.GNU-stack,"",%progbits
127#endif
128
129.data
130
131termin_error_string:
132.string "Extension %s not supported for this physical device"
133
134.text
135
136    PhysDevExtTramp 0
137    PhysDevExtTramp 1
138    PhysDevExtTramp 2
139    PhysDevExtTramp 3
140    PhysDevExtTramp 4
141    PhysDevExtTramp 5
142    PhysDevExtTramp 6
143    PhysDevExtTramp 7
144    PhysDevExtTramp 8
145    PhysDevExtTramp 9
146    PhysDevExtTramp 10
147    PhysDevExtTramp 11
148    PhysDevExtTramp 12
149    PhysDevExtTramp 13
150    PhysDevExtTramp 14
151    PhysDevExtTramp 15
152    PhysDevExtTramp 16
153    PhysDevExtTramp 17
154    PhysDevExtTramp 18
155    PhysDevExtTramp 19
156    PhysDevExtTramp 20
157    PhysDevExtTramp 21
158    PhysDevExtTramp 22
159    PhysDevExtTramp 23
160    PhysDevExtTramp 24
161    PhysDevExtTramp 25
162    PhysDevExtTramp 26
163    PhysDevExtTramp 27
164    PhysDevExtTramp 28
165    PhysDevExtTramp 29
166    PhysDevExtTramp 30
167    PhysDevExtTramp 31
168    PhysDevExtTramp 32
169    PhysDevExtTramp 33
170    PhysDevExtTramp 34
171    PhysDevExtTramp 35
172    PhysDevExtTramp 36
173    PhysDevExtTramp 37
174    PhysDevExtTramp 38
175    PhysDevExtTramp 39
176    PhysDevExtTramp 40
177    PhysDevExtTramp 41
178    PhysDevExtTramp 42
179    PhysDevExtTramp 43
180    PhysDevExtTramp 44
181    PhysDevExtTramp 45
182    PhysDevExtTramp 46
183    PhysDevExtTramp 47
184    PhysDevExtTramp 48
185    PhysDevExtTramp 49
186    PhysDevExtTramp 50
187    PhysDevExtTramp 51
188    PhysDevExtTramp 52
189    PhysDevExtTramp 53
190    PhysDevExtTramp 54
191    PhysDevExtTramp 55
192    PhysDevExtTramp 56
193    PhysDevExtTramp 57
194    PhysDevExtTramp 58
195    PhysDevExtTramp 59
196    PhysDevExtTramp 60
197    PhysDevExtTramp 61
198    PhysDevExtTramp 62
199    PhysDevExtTramp 63
200    PhysDevExtTramp 64
201    PhysDevExtTramp 65
202    PhysDevExtTramp 66
203    PhysDevExtTramp 67
204    PhysDevExtTramp 68
205    PhysDevExtTramp 69
206    PhysDevExtTramp 70
207    PhysDevExtTramp 71
208    PhysDevExtTramp 72
209    PhysDevExtTramp 73
210    PhysDevExtTramp 74
211    PhysDevExtTramp 75
212    PhysDevExtTramp 76
213    PhysDevExtTramp 77
214    PhysDevExtTramp 78
215    PhysDevExtTramp 79
216    PhysDevExtTramp 80
217    PhysDevExtTramp 81
218    PhysDevExtTramp 82
219    PhysDevExtTramp 83
220    PhysDevExtTramp 84
221    PhysDevExtTramp 85
222    PhysDevExtTramp 86
223    PhysDevExtTramp 87
224    PhysDevExtTramp 88
225    PhysDevExtTramp 89
226    PhysDevExtTramp 90
227    PhysDevExtTramp 91
228    PhysDevExtTramp 92
229    PhysDevExtTramp 93
230    PhysDevExtTramp 94
231    PhysDevExtTramp 95
232    PhysDevExtTramp 96
233    PhysDevExtTramp 97
234    PhysDevExtTramp 98
235    PhysDevExtTramp 99
236    PhysDevExtTramp 100
237    PhysDevExtTramp 101
238    PhysDevExtTramp 102
239    PhysDevExtTramp 103
240    PhysDevExtTramp 104
241    PhysDevExtTramp 105
242    PhysDevExtTramp 106
243    PhysDevExtTramp 107
244    PhysDevExtTramp 108
245    PhysDevExtTramp 109
246    PhysDevExtTramp 110
247    PhysDevExtTramp 111
248    PhysDevExtTramp 112
249    PhysDevExtTramp 113
250    PhysDevExtTramp 114
251    PhysDevExtTramp 115
252    PhysDevExtTramp 116
253    PhysDevExtTramp 117
254    PhysDevExtTramp 118
255    PhysDevExtTramp 119
256    PhysDevExtTramp 120
257    PhysDevExtTramp 121
258    PhysDevExtTramp 122
259    PhysDevExtTramp 123
260    PhysDevExtTramp 124
261    PhysDevExtTramp 125
262    PhysDevExtTramp 126
263    PhysDevExtTramp 127
264    PhysDevExtTramp 128
265    PhysDevExtTramp 129
266    PhysDevExtTramp 130
267    PhysDevExtTramp 131
268    PhysDevExtTramp 132
269    PhysDevExtTramp 133
270    PhysDevExtTramp 134
271    PhysDevExtTramp 135
272    PhysDevExtTramp 136
273    PhysDevExtTramp 137
274    PhysDevExtTramp 138
275    PhysDevExtTramp 139
276    PhysDevExtTramp 140
277    PhysDevExtTramp 141
278    PhysDevExtTramp 142
279    PhysDevExtTramp 143
280    PhysDevExtTramp 144
281    PhysDevExtTramp 145
282    PhysDevExtTramp 146
283    PhysDevExtTramp 147
284    PhysDevExtTramp 148
285    PhysDevExtTramp 149
286    PhysDevExtTramp 150
287    PhysDevExtTramp 151
288    PhysDevExtTramp 152
289    PhysDevExtTramp 153
290    PhysDevExtTramp 154
291    PhysDevExtTramp 155
292    PhysDevExtTramp 156
293    PhysDevExtTramp 157
294    PhysDevExtTramp 158
295    PhysDevExtTramp 159
296    PhysDevExtTramp 160
297    PhysDevExtTramp 161
298    PhysDevExtTramp 162
299    PhysDevExtTramp 163
300    PhysDevExtTramp 164
301    PhysDevExtTramp 165
302    PhysDevExtTramp 166
303    PhysDevExtTramp 167
304    PhysDevExtTramp 168
305    PhysDevExtTramp 169
306    PhysDevExtTramp 170
307    PhysDevExtTramp 171
308    PhysDevExtTramp 172
309    PhysDevExtTramp 173
310    PhysDevExtTramp 174
311    PhysDevExtTramp 175
312    PhysDevExtTramp 176
313    PhysDevExtTramp 177
314    PhysDevExtTramp 178
315    PhysDevExtTramp 179
316    PhysDevExtTramp 180
317    PhysDevExtTramp 181
318    PhysDevExtTramp 182
319    PhysDevExtTramp 183
320    PhysDevExtTramp 184
321    PhysDevExtTramp 185
322    PhysDevExtTramp 186
323    PhysDevExtTramp 187
324    PhysDevExtTramp 188
325    PhysDevExtTramp 189
326    PhysDevExtTramp 190
327    PhysDevExtTramp 191
328    PhysDevExtTramp 192
329    PhysDevExtTramp 193
330    PhysDevExtTramp 194
331    PhysDevExtTramp 195
332    PhysDevExtTramp 196
333    PhysDevExtTramp 197
334    PhysDevExtTramp 198
335    PhysDevExtTramp 199
336    PhysDevExtTramp 200
337    PhysDevExtTramp 201
338    PhysDevExtTramp 202
339    PhysDevExtTramp 203
340    PhysDevExtTramp 204
341    PhysDevExtTramp 205
342    PhysDevExtTramp 206
343    PhysDevExtTramp 207
344    PhysDevExtTramp 208
345    PhysDevExtTramp 209
346    PhysDevExtTramp 210
347    PhysDevExtTramp 211
348    PhysDevExtTramp 212
349    PhysDevExtTramp 213
350    PhysDevExtTramp 214
351    PhysDevExtTramp 215
352    PhysDevExtTramp 216
353    PhysDevExtTramp 217
354    PhysDevExtTramp 218
355    PhysDevExtTramp 219
356    PhysDevExtTramp 220
357    PhysDevExtTramp 221
358    PhysDevExtTramp 222
359    PhysDevExtTramp 223
360    PhysDevExtTramp 224
361    PhysDevExtTramp 225
362    PhysDevExtTramp 226
363    PhysDevExtTramp 227
364    PhysDevExtTramp 228
365    PhysDevExtTramp 229
366    PhysDevExtTramp 230
367    PhysDevExtTramp 231
368    PhysDevExtTramp 232
369    PhysDevExtTramp 233
370    PhysDevExtTramp 234
371    PhysDevExtTramp 235
372    PhysDevExtTramp 236
373    PhysDevExtTramp 237
374    PhysDevExtTramp 238
375    PhysDevExtTramp 239
376    PhysDevExtTramp 240
377    PhysDevExtTramp 241
378    PhysDevExtTramp 242
379    PhysDevExtTramp 243
380    PhysDevExtTramp 244
381    PhysDevExtTramp 245
382    PhysDevExtTramp 246
383    PhysDevExtTramp 247
384    PhysDevExtTramp 248
385    PhysDevExtTramp 249
386
387    PhysDevExtTermin 0
388    PhysDevExtTermin 1
389    PhysDevExtTermin 2
390    PhysDevExtTermin 3
391    PhysDevExtTermin 4
392    PhysDevExtTermin 5
393    PhysDevExtTermin 6
394    PhysDevExtTermin 7
395    PhysDevExtTermin 8
396    PhysDevExtTermin 9
397    PhysDevExtTermin 10
398    PhysDevExtTermin 11
399    PhysDevExtTermin 12
400    PhysDevExtTermin 13
401    PhysDevExtTermin 14
402    PhysDevExtTermin 15
403    PhysDevExtTermin 16
404    PhysDevExtTermin 17
405    PhysDevExtTermin 18
406    PhysDevExtTermin 19
407    PhysDevExtTermin 20
408    PhysDevExtTermin 21
409    PhysDevExtTermin 22
410    PhysDevExtTermin 23
411    PhysDevExtTermin 24
412    PhysDevExtTermin 25
413    PhysDevExtTermin 26
414    PhysDevExtTermin 27
415    PhysDevExtTermin 28
416    PhysDevExtTermin 29
417    PhysDevExtTermin 30
418    PhysDevExtTermin 31
419    PhysDevExtTermin 32
420    PhysDevExtTermin 33
421    PhysDevExtTermin 34
422    PhysDevExtTermin 35
423    PhysDevExtTermin 36
424    PhysDevExtTermin 37
425    PhysDevExtTermin 38
426    PhysDevExtTermin 39
427    PhysDevExtTermin 40
428    PhysDevExtTermin 41
429    PhysDevExtTermin 42
430    PhysDevExtTermin 43
431    PhysDevExtTermin 44
432    PhysDevExtTermin 45
433    PhysDevExtTermin 46
434    PhysDevExtTermin 47
435    PhysDevExtTermin 48
436    PhysDevExtTermin 49
437    PhysDevExtTermin 50
438    PhysDevExtTermin 51
439    PhysDevExtTermin 52
440    PhysDevExtTermin 53
441    PhysDevExtTermin 54
442    PhysDevExtTermin 55
443    PhysDevExtTermin 56
444    PhysDevExtTermin 57
445    PhysDevExtTermin 58
446    PhysDevExtTermin 59
447    PhysDevExtTermin 60
448    PhysDevExtTermin 61
449    PhysDevExtTermin 62
450    PhysDevExtTermin 63
451    PhysDevExtTermin 64
452    PhysDevExtTermin 65
453    PhysDevExtTermin 66
454    PhysDevExtTermin 67
455    PhysDevExtTermin 68
456    PhysDevExtTermin 69
457    PhysDevExtTermin 70
458    PhysDevExtTermin 71
459    PhysDevExtTermin 72
460    PhysDevExtTermin 73
461    PhysDevExtTermin 74
462    PhysDevExtTermin 75
463    PhysDevExtTermin 76
464    PhysDevExtTermin 77
465    PhysDevExtTermin 78
466    PhysDevExtTermin 79
467    PhysDevExtTermin 80
468    PhysDevExtTermin 81
469    PhysDevExtTermin 82
470    PhysDevExtTermin 83
471    PhysDevExtTermin 84
472    PhysDevExtTermin 85
473    PhysDevExtTermin 86
474    PhysDevExtTermin 87
475    PhysDevExtTermin 88
476    PhysDevExtTermin 89
477    PhysDevExtTermin 90
478    PhysDevExtTermin 91
479    PhysDevExtTermin 92
480    PhysDevExtTermin 93
481    PhysDevExtTermin 94
482    PhysDevExtTermin 95
483    PhysDevExtTermin 96
484    PhysDevExtTermin 97
485    PhysDevExtTermin 98
486    PhysDevExtTermin 99
487    PhysDevExtTermin 100
488    PhysDevExtTermin 101
489    PhysDevExtTermin 102
490    PhysDevExtTermin 103
491    PhysDevExtTermin 104
492    PhysDevExtTermin 105
493    PhysDevExtTermin 106
494    PhysDevExtTermin 107
495    PhysDevExtTermin 108
496    PhysDevExtTermin 109
497    PhysDevExtTermin 110
498    PhysDevExtTermin 111
499    PhysDevExtTermin 112
500    PhysDevExtTermin 113
501    PhysDevExtTermin 114
502    PhysDevExtTermin 115
503    PhysDevExtTermin 116
504    PhysDevExtTermin 117
505    PhysDevExtTermin 118
506    PhysDevExtTermin 119
507    PhysDevExtTermin 120
508    PhysDevExtTermin 121
509    PhysDevExtTermin 122
510    PhysDevExtTermin 123
511    PhysDevExtTermin 124
512    PhysDevExtTermin 125
513    PhysDevExtTermin 126
514    PhysDevExtTermin 127
515    PhysDevExtTermin 128
516    PhysDevExtTermin 129
517    PhysDevExtTermin 130
518    PhysDevExtTermin 131
519    PhysDevExtTermin 132
520    PhysDevExtTermin 133
521    PhysDevExtTermin 134
522    PhysDevExtTermin 135
523    PhysDevExtTermin 136
524    PhysDevExtTermin 137
525    PhysDevExtTermin 138
526    PhysDevExtTermin 139
527    PhysDevExtTermin 140
528    PhysDevExtTermin 141
529    PhysDevExtTermin 142
530    PhysDevExtTermin 143
531    PhysDevExtTermin 144
532    PhysDevExtTermin 145
533    PhysDevExtTermin 146
534    PhysDevExtTermin 147
535    PhysDevExtTermin 148
536    PhysDevExtTermin 149
537    PhysDevExtTermin 150
538    PhysDevExtTermin 151
539    PhysDevExtTermin 152
540    PhysDevExtTermin 153
541    PhysDevExtTermin 154
542    PhysDevExtTermin 155
543    PhysDevExtTermin 156
544    PhysDevExtTermin 157
545    PhysDevExtTermin 158
546    PhysDevExtTermin 159
547    PhysDevExtTermin 160
548    PhysDevExtTermin 161
549    PhysDevExtTermin 162
550    PhysDevExtTermin 163
551    PhysDevExtTermin 164
552    PhysDevExtTermin 165
553    PhysDevExtTermin 166
554    PhysDevExtTermin 167
555    PhysDevExtTermin 168
556    PhysDevExtTermin 169
557    PhysDevExtTermin 170
558    PhysDevExtTermin 171
559    PhysDevExtTermin 172
560    PhysDevExtTermin 173
561    PhysDevExtTermin 174
562    PhysDevExtTermin 175
563    PhysDevExtTermin 176
564    PhysDevExtTermin 177
565    PhysDevExtTermin 178
566    PhysDevExtTermin 179
567    PhysDevExtTermin 180
568    PhysDevExtTermin 181
569    PhysDevExtTermin 182
570    PhysDevExtTermin 183
571    PhysDevExtTermin 184
572    PhysDevExtTermin 185
573    PhysDevExtTermin 186
574    PhysDevExtTermin 187
575    PhysDevExtTermin 188
576    PhysDevExtTermin 189
577    PhysDevExtTermin 190
578    PhysDevExtTermin 191
579    PhysDevExtTermin 192
580    PhysDevExtTermin 193
581    PhysDevExtTermin 194
582    PhysDevExtTermin 195
583    PhysDevExtTermin 196
584    PhysDevExtTermin 197
585    PhysDevExtTermin 198
586    PhysDevExtTermin 199
587    PhysDevExtTermin 200
588    PhysDevExtTermin 201
589    PhysDevExtTermin 202
590    PhysDevExtTermin 203
591    PhysDevExtTermin 204
592    PhysDevExtTermin 205
593    PhysDevExtTermin 206
594    PhysDevExtTermin 207
595    PhysDevExtTermin 208
596    PhysDevExtTermin 209
597    PhysDevExtTermin 210
598    PhysDevExtTermin 211
599    PhysDevExtTermin 212
600    PhysDevExtTermin 213
601    PhysDevExtTermin 214
602    PhysDevExtTermin 215
603    PhysDevExtTermin 216
604    PhysDevExtTermin 217
605    PhysDevExtTermin 218
606    PhysDevExtTermin 219
607    PhysDevExtTermin 220
608    PhysDevExtTermin 221
609    PhysDevExtTermin 222
610    PhysDevExtTermin 223
611    PhysDevExtTermin 224
612    PhysDevExtTermin 225
613    PhysDevExtTermin 226
614    PhysDevExtTermin 227
615    PhysDevExtTermin 228
616    PhysDevExtTermin 229
617    PhysDevExtTermin 230
618    PhysDevExtTermin 231
619    PhysDevExtTermin 232
620    PhysDevExtTermin 233
621    PhysDevExtTermin 234
622    PhysDevExtTermin 235
623    PhysDevExtTermin 236
624    PhysDevExtTermin 237
625    PhysDevExtTermin 238
626    PhysDevExtTermin 239
627    PhysDevExtTermin 240
628    PhysDevExtTermin 241
629    PhysDevExtTermin 242
630    PhysDevExtTermin 243
631    PhysDevExtTermin 244
632    PhysDevExtTermin 245
633    PhysDevExtTermin 246
634    PhysDevExtTermin 247
635    PhysDevExtTermin 248
636    PhysDevExtTermin 249
637
638    DevExtTramp 0
639    DevExtTramp 1
640    DevExtTramp 2
641    DevExtTramp 3
642    DevExtTramp 4
643    DevExtTramp 5
644    DevExtTramp 6
645    DevExtTramp 7
646    DevExtTramp 8
647    DevExtTramp 9
648    DevExtTramp 10
649    DevExtTramp 11
650    DevExtTramp 12
651    DevExtTramp 13
652    DevExtTramp 14
653    DevExtTramp 15
654    DevExtTramp 16
655    DevExtTramp 17
656    DevExtTramp 18
657    DevExtTramp 19
658    DevExtTramp 20
659    DevExtTramp 21
660    DevExtTramp 22
661    DevExtTramp 23
662    DevExtTramp 24
663    DevExtTramp 25
664    DevExtTramp 26
665    DevExtTramp 27
666    DevExtTramp 28
667    DevExtTramp 29
668    DevExtTramp 30
669    DevExtTramp 31
670    DevExtTramp 32
671    DevExtTramp 33
672    DevExtTramp 34
673    DevExtTramp 35
674    DevExtTramp 36
675    DevExtTramp 37
676    DevExtTramp 38
677    DevExtTramp 39
678    DevExtTramp 40
679    DevExtTramp 41
680    DevExtTramp 42
681    DevExtTramp 43
682    DevExtTramp 44
683    DevExtTramp 45
684    DevExtTramp 46
685    DevExtTramp 47
686    DevExtTramp 48
687    DevExtTramp 49
688    DevExtTramp 50
689    DevExtTramp 51
690    DevExtTramp 52
691    DevExtTramp 53
692    DevExtTramp 54
693    DevExtTramp 55
694    DevExtTramp 56
695    DevExtTramp 57
696    DevExtTramp 58
697    DevExtTramp 59
698    DevExtTramp 60
699    DevExtTramp 61
700    DevExtTramp 62
701    DevExtTramp 63
702    DevExtTramp 64
703    DevExtTramp 65
704    DevExtTramp 66
705    DevExtTramp 67
706    DevExtTramp 68
707    DevExtTramp 69
708    DevExtTramp 70
709    DevExtTramp 71
710    DevExtTramp 72
711    DevExtTramp 73
712    DevExtTramp 74
713    DevExtTramp 75
714    DevExtTramp 76
715    DevExtTramp 77
716    DevExtTramp 78
717    DevExtTramp 79
718    DevExtTramp 80
719    DevExtTramp 81
720    DevExtTramp 82
721    DevExtTramp 83
722    DevExtTramp 84
723    DevExtTramp 85
724    DevExtTramp 86
725    DevExtTramp 87
726    DevExtTramp 88
727    DevExtTramp 89
728    DevExtTramp 90
729    DevExtTramp 91
730    DevExtTramp 92
731    DevExtTramp 93
732    DevExtTramp 94
733    DevExtTramp 95
734    DevExtTramp 96
735    DevExtTramp 97
736    DevExtTramp 98
737    DevExtTramp 99
738    DevExtTramp 100
739    DevExtTramp 101
740    DevExtTramp 102
741    DevExtTramp 103
742    DevExtTramp 104
743    DevExtTramp 105
744    DevExtTramp 106
745    DevExtTramp 107
746    DevExtTramp 108
747    DevExtTramp 109
748    DevExtTramp 110
749    DevExtTramp 111
750    DevExtTramp 112
751    DevExtTramp 113
752    DevExtTramp 114
753    DevExtTramp 115
754    DevExtTramp 116
755    DevExtTramp 117
756    DevExtTramp 118
757    DevExtTramp 119
758    DevExtTramp 120
759    DevExtTramp 121
760    DevExtTramp 122
761    DevExtTramp 123
762    DevExtTramp 124
763    DevExtTramp 125
764    DevExtTramp 126
765    DevExtTramp 127
766    DevExtTramp 128
767    DevExtTramp 129
768    DevExtTramp 130
769    DevExtTramp 131
770    DevExtTramp 132
771    DevExtTramp 133
772    DevExtTramp 134
773    DevExtTramp 135
774    DevExtTramp 136
775    DevExtTramp 137
776    DevExtTramp 138
777    DevExtTramp 139
778    DevExtTramp 140
779    DevExtTramp 141
780    DevExtTramp 142
781    DevExtTramp 143
782    DevExtTramp 144
783    DevExtTramp 145
784    DevExtTramp 146
785    DevExtTramp 147
786    DevExtTramp 148
787    DevExtTramp 149
788    DevExtTramp 150
789    DevExtTramp 151
790    DevExtTramp 152
791    DevExtTramp 153
792    DevExtTramp 154
793    DevExtTramp 155
794    DevExtTramp 156
795    DevExtTramp 157
796    DevExtTramp 158
797    DevExtTramp 159
798    DevExtTramp 160
799    DevExtTramp 161
800    DevExtTramp 162
801    DevExtTramp 163
802    DevExtTramp 164
803    DevExtTramp 165
804    DevExtTramp 166
805    DevExtTramp 167
806    DevExtTramp 168
807    DevExtTramp 169
808    DevExtTramp 170
809    DevExtTramp 171
810    DevExtTramp 172
811    DevExtTramp 173
812    DevExtTramp 174
813    DevExtTramp 175
814    DevExtTramp 176
815    DevExtTramp 177
816    DevExtTramp 178
817    DevExtTramp 179
818    DevExtTramp 180
819    DevExtTramp 181
820    DevExtTramp 182
821    DevExtTramp 183
822    DevExtTramp 184
823    DevExtTramp 185
824    DevExtTramp 186
825    DevExtTramp 187
826    DevExtTramp 188
827    DevExtTramp 189
828    DevExtTramp 190
829    DevExtTramp 191
830    DevExtTramp 192
831    DevExtTramp 193
832    DevExtTramp 194
833    DevExtTramp 195
834    DevExtTramp 196
835    DevExtTramp 197
836    DevExtTramp 198
837    DevExtTramp 199
838    DevExtTramp 200
839    DevExtTramp 201
840    DevExtTramp 202
841    DevExtTramp 203
842    DevExtTramp 204
843    DevExtTramp 205
844    DevExtTramp 206
845    DevExtTramp 207
846    DevExtTramp 208
847    DevExtTramp 209
848    DevExtTramp 210
849    DevExtTramp 211
850    DevExtTramp 212
851    DevExtTramp 213
852    DevExtTramp 214
853    DevExtTramp 215
854    DevExtTramp 216
855    DevExtTramp 217
856    DevExtTramp 218
857    DevExtTramp 219
858    DevExtTramp 220
859    DevExtTramp 221
860    DevExtTramp 222
861    DevExtTramp 223
862    DevExtTramp 224
863    DevExtTramp 225
864    DevExtTramp 226
865    DevExtTramp 227
866    DevExtTramp 228
867    DevExtTramp 229
868    DevExtTramp 230
869    DevExtTramp 231
870    DevExtTramp 232
871    DevExtTramp 233
872    DevExtTramp 234
873    DevExtTramp 235
874    DevExtTramp 236
875    DevExtTramp 237
876    DevExtTramp 238
877    DevExtTramp 239
878    DevExtTramp 240
879    DevExtTramp 241
880    DevExtTramp 242
881    DevExtTramp 243
882    DevExtTramp 244
883    DevExtTramp 245
884    DevExtTramp 246
885    DevExtTramp 247
886    DevExtTramp 248
887    DevExtTramp 249
888