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