884 lines
24 KiB
NASM
884 lines
24 KiB
NASM
;
|
|
; Copyright (c) 2017 The Khronos Group Inc.
|
|
; Copyright (c) 2017 Valve Corporation
|
|
; Copyright (c) 2017 LunarG, Inc.
|
|
;
|
|
; Licensed under the Apache License, Version 2.0 (the "License");
|
|
; you may not use this file except in compliance with the License.
|
|
; You may obtain a copy of the License at
|
|
;
|
|
; http://www.apache.org/licenses/LICENSE-2.0
|
|
;
|
|
; Unless required by applicable law or agreed to in writing, software
|
|
; distributed under the License is distributed on an "AS IS" BASIS,
|
|
; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
; See the License for the specific language governing permissions and
|
|
; limitations under the License.
|
|
;
|
|
; Author: Lenny Komow <lenny@lunarg.com>
|
|
;
|
|
|
|
; This code is used to pass on device (including physical device) extensions through the call chain. It must do this without
|
|
; creating a stack frame, because the actual parameters of the call are not known. Since the first parameter is known to be a
|
|
; VkPhysicalDevice or a dispatchable object it can unwrap the object, possibly overwriting the wrapped physical device, and then
|
|
; jump to the next function in the call chain
|
|
|
|
; Codegen defines a number of values, chiefly offsets of members within structs and sizes of data types within gen_defines.asm.
|
|
; Struct member offsets are defined in the format "XX_OFFSET_YY" where XX indicates the member within the struct and YY indicates
|
|
; 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.
|
|
INCLUDE gen_defines.asm
|
|
|
|
; 64-bit values and macro
|
|
IFDEF rax
|
|
|
|
PhysDevExtTramp macro num:req
|
|
public vkPhysDevExtTramp&num&
|
|
vkPhysDevExtTramp&num&:
|
|
mov rax, qword ptr [rcx] ; Dereference the wrapped VkPhysicalDevice to get the dispatch table in rax
|
|
mov rcx, qword ptr [rcx + PHYS_DEV_OFFSET_PHYS_DEV_TRAMP] ; Load the unwrapped VkPhysicalDevice into rcx
|
|
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
|
|
endm
|
|
|
|
PhysDevExtTermin macro num
|
|
public vkPhysDevExtTermin&num&
|
|
vkPhysDevExtTermin&num&:
|
|
mov rax, qword ptr [rcx + ICD_TERM_OFFSET_PHYS_DEV_TERM] ; Store the loader_icd_term* in rax
|
|
cmp qword ptr [rax + (DISPATCH_OFFSET_ICD_TERM + (PTR_SIZE * num))], 0 ; Check if the next function in the chain is NULL
|
|
je terminError&num& ; Go to the error section if it is NULL
|
|
mov rcx, qword ptr [rcx + PHYS_DEV_OFFSET_PHYS_DEV_TERM] ; Load the unwrapped VkPhysicalDevice into the first arg
|
|
jmp qword ptr [rax + (DISPATCH_OFFSET_ICD_TERM + (PTR_SIZE * num))] ; Jump to the next function in the chain
|
|
terminError&num&:
|
|
sub rsp, 56 ; Create the stack frame
|
|
mov rcx, qword ptr [rax + INSTANCE_OFFSET_ICD_TERM] ; Load the loader_instance into rcx (first arg)
|
|
mov rax, qword ptr [rcx + (HASH_OFFSET_INSTANCE + (HASH_SIZE * num) + FUNC_NAME_OFFSET_HASH)] ; Load the func name into rax
|
|
lea r9, termin_error_string ; Load the error string into r9 (fourth arg)
|
|
xor r8d, r8d ; Set r8 to zero (third arg)
|
|
mov qword ptr [rsp + 32], rax ; Move the func name onto the stack (fifth arg)
|
|
lea edx, [r8 + VK_DEBUG_REPORT_ERROR_BIT_EXT] ; Write the error logging bit to rdx (second arg)
|
|
call loader_log ; Log the error message before we crash
|
|
add rsp, 56 ; Clean up the stack frame
|
|
mov rax, 0
|
|
jmp rax ; Crash intentionally by jumping to address zero
|
|
endm
|
|
|
|
DevExtTramp macro num
|
|
public vkdev_ext&num&
|
|
vkdev_ext&num&:
|
|
mov rax, qword ptr [rcx] ; Dereference the handle to get the dispatch table
|
|
jmp qword ptr [rax + (EXT_OFFSET_DEVICE_DISPATCH + (PTR_SIZE * num))] ; Jump to the appropriate call chain
|
|
endm
|
|
|
|
; 32-bit values and macro
|
|
ELSE
|
|
|
|
PhysDevExtTramp macro num
|
|
public _vkPhysDevExtTramp&num&@4
|
|
_vkPhysDevExtTramp&num&@4:
|
|
mov eax, dword ptr [esp + 4] ; Load the wrapped VkPhysicalDevice into eax
|
|
mov ecx, [eax + PHYS_DEV_OFFSET_PHYS_DEV_TRAMP] ; Load the unwrapped VkPhysicalDevice into ecx
|
|
mov [esp + 4], ecx ; Overwrite the wrapped VkPhysicalDevice with the unwrapped one (on the stack)
|
|
mov eax, [eax] ; Dereference the wrapped VkPhysicalDevice to get the dispatch table in eax
|
|
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
|
|
endm
|
|
|
|
PhysDevExtTermin macro num
|
|
public _vkPhysDevExtTermin&num&@4
|
|
_vkPhysDevExtTermin&num&@4:
|
|
mov ecx, dword ptr [esp + 4] ; Move the wrapped VkPhysicalDevice into ecx
|
|
mov eax, dword ptr [ecx + ICD_TERM_OFFSET_PHYS_DEV_TERM] ; Store the loader_icd_term* in eax
|
|
cmp dword ptr [eax + (DISPATCH_OFFSET_ICD_TERM + (PTR_SIZE * num))], 0 ; Check if the next function in the chain is NULL
|
|
je terminError&num& ; Go to the error section if it is NULL
|
|
mov ecx, dword ptr [ecx + PHYS_DEV_OFFSET_PHYS_DEV_TERM] ; Unwrap the VkPhysicalDevice in ecx
|
|
mov dword ptr [esp + 4], ecx ; Copy the unwrapped VkPhysicalDevice into the first arg
|
|
jmp dword ptr [eax + (DISPATCH_OFFSET_ICD_TERM + (PTR_SIZE * num))] ; Jump to the next function in the chain
|
|
terminError&num&:
|
|
mov eax, dword ptr [eax + INSTANCE_OFFSET_ICD_TERM] ; Load the loader_instance into eax
|
|
push dword ptr [eax + (HASH_OFFSET_INSTANCE + (HASH_SIZE * num) + FUNC_NAME_OFFSET_HASH)] ; Push the func name (fifth arg)
|
|
push offset termin_error_string ; Push the error string (fourth arg)
|
|
push 0 ; Push zero (third arg)
|
|
push VK_DEBUG_REPORT_ERROR_BIT_EXT ; Push the error logging bit (second arg)
|
|
push eax ; Push the loader_instance (first arg)
|
|
call _loader_log ; Log the error message before we crash
|
|
add esp, 20 ; Clean up the args
|
|
mov eax, 0
|
|
jmp eax ; Crash intentionally by jumping to address zero
|
|
endm
|
|
|
|
DevExtTramp macro num
|
|
public _vkdev_ext&num&@4
|
|
_vkdev_ext&num&@4:
|
|
mov eax, dword ptr [esp + 4] ; Dereference the handle to get the dispatch table
|
|
jmp dword ptr [eax + (EXT_OFFSET_DEVICE_DISPATCH + (PTR_SIZE * num))] ; Jump to the appropriate call chain
|
|
endm
|
|
|
|
; This is also needed for 32-bit only
|
|
.model flat
|
|
|
|
ENDIF
|
|
|
|
.const
|
|
termin_error_string db 'Extension %s not supported for this physical device', 0
|
|
|
|
.code
|
|
|
|
IFDEF rax
|
|
extrn loader_log:near
|
|
ELSE
|
|
extrn _loader_log:near
|
|
ENDIF
|
|
|
|
PhysDevExtTramp 0
|
|
PhysDevExtTramp 1
|
|
PhysDevExtTramp 2
|
|
PhysDevExtTramp 3
|
|
PhysDevExtTramp 4
|
|
PhysDevExtTramp 5
|
|
PhysDevExtTramp 6
|
|
PhysDevExtTramp 7
|
|
PhysDevExtTramp 8
|
|
PhysDevExtTramp 9
|
|
PhysDevExtTramp 10
|
|
PhysDevExtTramp 11
|
|
PhysDevExtTramp 12
|
|
PhysDevExtTramp 13
|
|
PhysDevExtTramp 14
|
|
PhysDevExtTramp 15
|
|
PhysDevExtTramp 16
|
|
PhysDevExtTramp 17
|
|
PhysDevExtTramp 18
|
|
PhysDevExtTramp 19
|
|
PhysDevExtTramp 20
|
|
PhysDevExtTramp 21
|
|
PhysDevExtTramp 22
|
|
PhysDevExtTramp 23
|
|
PhysDevExtTramp 24
|
|
PhysDevExtTramp 25
|
|
PhysDevExtTramp 26
|
|
PhysDevExtTramp 27
|
|
PhysDevExtTramp 28
|
|
PhysDevExtTramp 29
|
|
PhysDevExtTramp 30
|
|
PhysDevExtTramp 31
|
|
PhysDevExtTramp 32
|
|
PhysDevExtTramp 33
|
|
PhysDevExtTramp 34
|
|
PhysDevExtTramp 35
|
|
PhysDevExtTramp 36
|
|
PhysDevExtTramp 37
|
|
PhysDevExtTramp 38
|
|
PhysDevExtTramp 39
|
|
PhysDevExtTramp 40
|
|
PhysDevExtTramp 41
|
|
PhysDevExtTramp 42
|
|
PhysDevExtTramp 43
|
|
PhysDevExtTramp 44
|
|
PhysDevExtTramp 45
|
|
PhysDevExtTramp 46
|
|
PhysDevExtTramp 47
|
|
PhysDevExtTramp 48
|
|
PhysDevExtTramp 49
|
|
PhysDevExtTramp 50
|
|
PhysDevExtTramp 51
|
|
PhysDevExtTramp 52
|
|
PhysDevExtTramp 53
|
|
PhysDevExtTramp 54
|
|
PhysDevExtTramp 55
|
|
PhysDevExtTramp 56
|
|
PhysDevExtTramp 57
|
|
PhysDevExtTramp 58
|
|
PhysDevExtTramp 59
|
|
PhysDevExtTramp 60
|
|
PhysDevExtTramp 61
|
|
PhysDevExtTramp 62
|
|
PhysDevExtTramp 63
|
|
PhysDevExtTramp 64
|
|
PhysDevExtTramp 65
|
|
PhysDevExtTramp 66
|
|
PhysDevExtTramp 67
|
|
PhysDevExtTramp 68
|
|
PhysDevExtTramp 69
|
|
PhysDevExtTramp 70
|
|
PhysDevExtTramp 71
|
|
PhysDevExtTramp 72
|
|
PhysDevExtTramp 73
|
|
PhysDevExtTramp 74
|
|
PhysDevExtTramp 75
|
|
PhysDevExtTramp 76
|
|
PhysDevExtTramp 77
|
|
PhysDevExtTramp 78
|
|
PhysDevExtTramp 79
|
|
PhysDevExtTramp 80
|
|
PhysDevExtTramp 81
|
|
PhysDevExtTramp 82
|
|
PhysDevExtTramp 83
|
|
PhysDevExtTramp 84
|
|
PhysDevExtTramp 85
|
|
PhysDevExtTramp 86
|
|
PhysDevExtTramp 87
|
|
PhysDevExtTramp 88
|
|
PhysDevExtTramp 89
|
|
PhysDevExtTramp 90
|
|
PhysDevExtTramp 91
|
|
PhysDevExtTramp 92
|
|
PhysDevExtTramp 93
|
|
PhysDevExtTramp 94
|
|
PhysDevExtTramp 95
|
|
PhysDevExtTramp 96
|
|
PhysDevExtTramp 97
|
|
PhysDevExtTramp 98
|
|
PhysDevExtTramp 99
|
|
PhysDevExtTramp 100
|
|
PhysDevExtTramp 101
|
|
PhysDevExtTramp 102
|
|
PhysDevExtTramp 103
|
|
PhysDevExtTramp 104
|
|
PhysDevExtTramp 105
|
|
PhysDevExtTramp 106
|
|
PhysDevExtTramp 107
|
|
PhysDevExtTramp 108
|
|
PhysDevExtTramp 109
|
|
PhysDevExtTramp 110
|
|
PhysDevExtTramp 111
|
|
PhysDevExtTramp 112
|
|
PhysDevExtTramp 113
|
|
PhysDevExtTramp 114
|
|
PhysDevExtTramp 115
|
|
PhysDevExtTramp 116
|
|
PhysDevExtTramp 117
|
|
PhysDevExtTramp 118
|
|
PhysDevExtTramp 119
|
|
PhysDevExtTramp 120
|
|
PhysDevExtTramp 121
|
|
PhysDevExtTramp 122
|
|
PhysDevExtTramp 123
|
|
PhysDevExtTramp 124
|
|
PhysDevExtTramp 125
|
|
PhysDevExtTramp 126
|
|
PhysDevExtTramp 127
|
|
PhysDevExtTramp 128
|
|
PhysDevExtTramp 129
|
|
PhysDevExtTramp 130
|
|
PhysDevExtTramp 131
|
|
PhysDevExtTramp 132
|
|
PhysDevExtTramp 133
|
|
PhysDevExtTramp 134
|
|
PhysDevExtTramp 135
|
|
PhysDevExtTramp 136
|
|
PhysDevExtTramp 137
|
|
PhysDevExtTramp 138
|
|
PhysDevExtTramp 139
|
|
PhysDevExtTramp 140
|
|
PhysDevExtTramp 141
|
|
PhysDevExtTramp 142
|
|
PhysDevExtTramp 143
|
|
PhysDevExtTramp 144
|
|
PhysDevExtTramp 145
|
|
PhysDevExtTramp 146
|
|
PhysDevExtTramp 147
|
|
PhysDevExtTramp 148
|
|
PhysDevExtTramp 149
|
|
PhysDevExtTramp 150
|
|
PhysDevExtTramp 151
|
|
PhysDevExtTramp 152
|
|
PhysDevExtTramp 153
|
|
PhysDevExtTramp 154
|
|
PhysDevExtTramp 155
|
|
PhysDevExtTramp 156
|
|
PhysDevExtTramp 157
|
|
PhysDevExtTramp 158
|
|
PhysDevExtTramp 159
|
|
PhysDevExtTramp 160
|
|
PhysDevExtTramp 161
|
|
PhysDevExtTramp 162
|
|
PhysDevExtTramp 163
|
|
PhysDevExtTramp 164
|
|
PhysDevExtTramp 165
|
|
PhysDevExtTramp 166
|
|
PhysDevExtTramp 167
|
|
PhysDevExtTramp 168
|
|
PhysDevExtTramp 169
|
|
PhysDevExtTramp 170
|
|
PhysDevExtTramp 171
|
|
PhysDevExtTramp 172
|
|
PhysDevExtTramp 173
|
|
PhysDevExtTramp 174
|
|
PhysDevExtTramp 175
|
|
PhysDevExtTramp 176
|
|
PhysDevExtTramp 177
|
|
PhysDevExtTramp 178
|
|
PhysDevExtTramp 179
|
|
PhysDevExtTramp 180
|
|
PhysDevExtTramp 181
|
|
PhysDevExtTramp 182
|
|
PhysDevExtTramp 183
|
|
PhysDevExtTramp 184
|
|
PhysDevExtTramp 185
|
|
PhysDevExtTramp 186
|
|
PhysDevExtTramp 187
|
|
PhysDevExtTramp 188
|
|
PhysDevExtTramp 189
|
|
PhysDevExtTramp 190
|
|
PhysDevExtTramp 191
|
|
PhysDevExtTramp 192
|
|
PhysDevExtTramp 193
|
|
PhysDevExtTramp 194
|
|
PhysDevExtTramp 195
|
|
PhysDevExtTramp 196
|
|
PhysDevExtTramp 197
|
|
PhysDevExtTramp 198
|
|
PhysDevExtTramp 199
|
|
PhysDevExtTramp 200
|
|
PhysDevExtTramp 201
|
|
PhysDevExtTramp 202
|
|
PhysDevExtTramp 203
|
|
PhysDevExtTramp 204
|
|
PhysDevExtTramp 205
|
|
PhysDevExtTramp 206
|
|
PhysDevExtTramp 207
|
|
PhysDevExtTramp 208
|
|
PhysDevExtTramp 209
|
|
PhysDevExtTramp 210
|
|
PhysDevExtTramp 211
|
|
PhysDevExtTramp 212
|
|
PhysDevExtTramp 213
|
|
PhysDevExtTramp 214
|
|
PhysDevExtTramp 215
|
|
PhysDevExtTramp 216
|
|
PhysDevExtTramp 217
|
|
PhysDevExtTramp 218
|
|
PhysDevExtTramp 219
|
|
PhysDevExtTramp 220
|
|
PhysDevExtTramp 221
|
|
PhysDevExtTramp 222
|
|
PhysDevExtTramp 223
|
|
PhysDevExtTramp 224
|
|
PhysDevExtTramp 225
|
|
PhysDevExtTramp 226
|
|
PhysDevExtTramp 227
|
|
PhysDevExtTramp 228
|
|
PhysDevExtTramp 229
|
|
PhysDevExtTramp 230
|
|
PhysDevExtTramp 231
|
|
PhysDevExtTramp 232
|
|
PhysDevExtTramp 233
|
|
PhysDevExtTramp 234
|
|
PhysDevExtTramp 235
|
|
PhysDevExtTramp 236
|
|
PhysDevExtTramp 237
|
|
PhysDevExtTramp 238
|
|
PhysDevExtTramp 239
|
|
PhysDevExtTramp 240
|
|
PhysDevExtTramp 241
|
|
PhysDevExtTramp 242
|
|
PhysDevExtTramp 243
|
|
PhysDevExtTramp 244
|
|
PhysDevExtTramp 245
|
|
PhysDevExtTramp 246
|
|
PhysDevExtTramp 247
|
|
PhysDevExtTramp 248
|
|
PhysDevExtTramp 249
|
|
|
|
PhysDevExtTermin 0
|
|
PhysDevExtTermin 1
|
|
PhysDevExtTermin 2
|
|
PhysDevExtTermin 3
|
|
PhysDevExtTermin 4
|
|
PhysDevExtTermin 5
|
|
PhysDevExtTermin 6
|
|
PhysDevExtTermin 7
|
|
PhysDevExtTermin 8
|
|
PhysDevExtTermin 9
|
|
PhysDevExtTermin 10
|
|
PhysDevExtTermin 11
|
|
PhysDevExtTermin 12
|
|
PhysDevExtTermin 13
|
|
PhysDevExtTermin 14
|
|
PhysDevExtTermin 15
|
|
PhysDevExtTermin 16
|
|
PhysDevExtTermin 17
|
|
PhysDevExtTermin 18
|
|
PhysDevExtTermin 19
|
|
PhysDevExtTermin 20
|
|
PhysDevExtTermin 21
|
|
PhysDevExtTermin 22
|
|
PhysDevExtTermin 23
|
|
PhysDevExtTermin 24
|
|
PhysDevExtTermin 25
|
|
PhysDevExtTermin 26
|
|
PhysDevExtTermin 27
|
|
PhysDevExtTermin 28
|
|
PhysDevExtTermin 29
|
|
PhysDevExtTermin 30
|
|
PhysDevExtTermin 31
|
|
PhysDevExtTermin 32
|
|
PhysDevExtTermin 33
|
|
PhysDevExtTermin 34
|
|
PhysDevExtTermin 35
|
|
PhysDevExtTermin 36
|
|
PhysDevExtTermin 37
|
|
PhysDevExtTermin 38
|
|
PhysDevExtTermin 39
|
|
PhysDevExtTermin 40
|
|
PhysDevExtTermin 41
|
|
PhysDevExtTermin 42
|
|
PhysDevExtTermin 43
|
|
PhysDevExtTermin 44
|
|
PhysDevExtTermin 45
|
|
PhysDevExtTermin 46
|
|
PhysDevExtTermin 47
|
|
PhysDevExtTermin 48
|
|
PhysDevExtTermin 49
|
|
PhysDevExtTermin 50
|
|
PhysDevExtTermin 51
|
|
PhysDevExtTermin 52
|
|
PhysDevExtTermin 53
|
|
PhysDevExtTermin 54
|
|
PhysDevExtTermin 55
|
|
PhysDevExtTermin 56
|
|
PhysDevExtTermin 57
|
|
PhysDevExtTermin 58
|
|
PhysDevExtTermin 59
|
|
PhysDevExtTermin 60
|
|
PhysDevExtTermin 61
|
|
PhysDevExtTermin 62
|
|
PhysDevExtTermin 63
|
|
PhysDevExtTermin 64
|
|
PhysDevExtTermin 65
|
|
PhysDevExtTermin 66
|
|
PhysDevExtTermin 67
|
|
PhysDevExtTermin 68
|
|
PhysDevExtTermin 69
|
|
PhysDevExtTermin 70
|
|
PhysDevExtTermin 71
|
|
PhysDevExtTermin 72
|
|
PhysDevExtTermin 73
|
|
PhysDevExtTermin 74
|
|
PhysDevExtTermin 75
|
|
PhysDevExtTermin 76
|
|
PhysDevExtTermin 77
|
|
PhysDevExtTermin 78
|
|
PhysDevExtTermin 79
|
|
PhysDevExtTermin 80
|
|
PhysDevExtTermin 81
|
|
PhysDevExtTermin 82
|
|
PhysDevExtTermin 83
|
|
PhysDevExtTermin 84
|
|
PhysDevExtTermin 85
|
|
PhysDevExtTermin 86
|
|
PhysDevExtTermin 87
|
|
PhysDevExtTermin 88
|
|
PhysDevExtTermin 89
|
|
PhysDevExtTermin 90
|
|
PhysDevExtTermin 91
|
|
PhysDevExtTermin 92
|
|
PhysDevExtTermin 93
|
|
PhysDevExtTermin 94
|
|
PhysDevExtTermin 95
|
|
PhysDevExtTermin 96
|
|
PhysDevExtTermin 97
|
|
PhysDevExtTermin 98
|
|
PhysDevExtTermin 99
|
|
PhysDevExtTermin 100
|
|
PhysDevExtTermin 101
|
|
PhysDevExtTermin 102
|
|
PhysDevExtTermin 103
|
|
PhysDevExtTermin 104
|
|
PhysDevExtTermin 105
|
|
PhysDevExtTermin 106
|
|
PhysDevExtTermin 107
|
|
PhysDevExtTermin 108
|
|
PhysDevExtTermin 109
|
|
PhysDevExtTermin 110
|
|
PhysDevExtTermin 111
|
|
PhysDevExtTermin 112
|
|
PhysDevExtTermin 113
|
|
PhysDevExtTermin 114
|
|
PhysDevExtTermin 115
|
|
PhysDevExtTermin 116
|
|
PhysDevExtTermin 117
|
|
PhysDevExtTermin 118
|
|
PhysDevExtTermin 119
|
|
PhysDevExtTermin 120
|
|
PhysDevExtTermin 121
|
|
PhysDevExtTermin 122
|
|
PhysDevExtTermin 123
|
|
PhysDevExtTermin 124
|
|
PhysDevExtTermin 125
|
|
PhysDevExtTermin 126
|
|
PhysDevExtTermin 127
|
|
PhysDevExtTermin 128
|
|
PhysDevExtTermin 129
|
|
PhysDevExtTermin 130
|
|
PhysDevExtTermin 131
|
|
PhysDevExtTermin 132
|
|
PhysDevExtTermin 133
|
|
PhysDevExtTermin 134
|
|
PhysDevExtTermin 135
|
|
PhysDevExtTermin 136
|
|
PhysDevExtTermin 137
|
|
PhysDevExtTermin 138
|
|
PhysDevExtTermin 139
|
|
PhysDevExtTermin 140
|
|
PhysDevExtTermin 141
|
|
PhysDevExtTermin 142
|
|
PhysDevExtTermin 143
|
|
PhysDevExtTermin 144
|
|
PhysDevExtTermin 145
|
|
PhysDevExtTermin 146
|
|
PhysDevExtTermin 147
|
|
PhysDevExtTermin 148
|
|
PhysDevExtTermin 149
|
|
PhysDevExtTermin 150
|
|
PhysDevExtTermin 151
|
|
PhysDevExtTermin 152
|
|
PhysDevExtTermin 153
|
|
PhysDevExtTermin 154
|
|
PhysDevExtTermin 155
|
|
PhysDevExtTermin 156
|
|
PhysDevExtTermin 157
|
|
PhysDevExtTermin 158
|
|
PhysDevExtTermin 159
|
|
PhysDevExtTermin 160
|
|
PhysDevExtTermin 161
|
|
PhysDevExtTermin 162
|
|
PhysDevExtTermin 163
|
|
PhysDevExtTermin 164
|
|
PhysDevExtTermin 165
|
|
PhysDevExtTermin 166
|
|
PhysDevExtTermin 167
|
|
PhysDevExtTermin 168
|
|
PhysDevExtTermin 169
|
|
PhysDevExtTermin 170
|
|
PhysDevExtTermin 171
|
|
PhysDevExtTermin 172
|
|
PhysDevExtTermin 173
|
|
PhysDevExtTermin 174
|
|
PhysDevExtTermin 175
|
|
PhysDevExtTermin 176
|
|
PhysDevExtTermin 177
|
|
PhysDevExtTermin 178
|
|
PhysDevExtTermin 179
|
|
PhysDevExtTermin 180
|
|
PhysDevExtTermin 181
|
|
PhysDevExtTermin 182
|
|
PhysDevExtTermin 183
|
|
PhysDevExtTermin 184
|
|
PhysDevExtTermin 185
|
|
PhysDevExtTermin 186
|
|
PhysDevExtTermin 187
|
|
PhysDevExtTermin 188
|
|
PhysDevExtTermin 189
|
|
PhysDevExtTermin 190
|
|
PhysDevExtTermin 191
|
|
PhysDevExtTermin 192
|
|
PhysDevExtTermin 193
|
|
PhysDevExtTermin 194
|
|
PhysDevExtTermin 195
|
|
PhysDevExtTermin 196
|
|
PhysDevExtTermin 197
|
|
PhysDevExtTermin 198
|
|
PhysDevExtTermin 199
|
|
PhysDevExtTermin 200
|
|
PhysDevExtTermin 201
|
|
PhysDevExtTermin 202
|
|
PhysDevExtTermin 203
|
|
PhysDevExtTermin 204
|
|
PhysDevExtTermin 205
|
|
PhysDevExtTermin 206
|
|
PhysDevExtTermin 207
|
|
PhysDevExtTermin 208
|
|
PhysDevExtTermin 209
|
|
PhysDevExtTermin 210
|
|
PhysDevExtTermin 211
|
|
PhysDevExtTermin 212
|
|
PhysDevExtTermin 213
|
|
PhysDevExtTermin 214
|
|
PhysDevExtTermin 215
|
|
PhysDevExtTermin 216
|
|
PhysDevExtTermin 217
|
|
PhysDevExtTermin 218
|
|
PhysDevExtTermin 219
|
|
PhysDevExtTermin 220
|
|
PhysDevExtTermin 221
|
|
PhysDevExtTermin 222
|
|
PhysDevExtTermin 223
|
|
PhysDevExtTermin 224
|
|
PhysDevExtTermin 225
|
|
PhysDevExtTermin 226
|
|
PhysDevExtTermin 227
|
|
PhysDevExtTermin 228
|
|
PhysDevExtTermin 229
|
|
PhysDevExtTermin 230
|
|
PhysDevExtTermin 231
|
|
PhysDevExtTermin 232
|
|
PhysDevExtTermin 233
|
|
PhysDevExtTermin 234
|
|
PhysDevExtTermin 235
|
|
PhysDevExtTermin 236
|
|
PhysDevExtTermin 237
|
|
PhysDevExtTermin 238
|
|
PhysDevExtTermin 239
|
|
PhysDevExtTermin 240
|
|
PhysDevExtTermin 241
|
|
PhysDevExtTermin 242
|
|
PhysDevExtTermin 243
|
|
PhysDevExtTermin 244
|
|
PhysDevExtTermin 245
|
|
PhysDevExtTermin 246
|
|
PhysDevExtTermin 247
|
|
PhysDevExtTermin 248
|
|
PhysDevExtTermin 249
|
|
|
|
DevExtTramp 0
|
|
DevExtTramp 1
|
|
DevExtTramp 2
|
|
DevExtTramp 3
|
|
DevExtTramp 4
|
|
DevExtTramp 5
|
|
DevExtTramp 6
|
|
DevExtTramp 7
|
|
DevExtTramp 8
|
|
DevExtTramp 9
|
|
DevExtTramp 10
|
|
DevExtTramp 11
|
|
DevExtTramp 12
|
|
DevExtTramp 13
|
|
DevExtTramp 14
|
|
DevExtTramp 15
|
|
DevExtTramp 16
|
|
DevExtTramp 17
|
|
DevExtTramp 18
|
|
DevExtTramp 19
|
|
DevExtTramp 20
|
|
DevExtTramp 21
|
|
DevExtTramp 22
|
|
DevExtTramp 23
|
|
DevExtTramp 24
|
|
DevExtTramp 25
|
|
DevExtTramp 26
|
|
DevExtTramp 27
|
|
DevExtTramp 28
|
|
DevExtTramp 29
|
|
DevExtTramp 30
|
|
DevExtTramp 31
|
|
DevExtTramp 32
|
|
DevExtTramp 33
|
|
DevExtTramp 34
|
|
DevExtTramp 35
|
|
DevExtTramp 36
|
|
DevExtTramp 37
|
|
DevExtTramp 38
|
|
DevExtTramp 39
|
|
DevExtTramp 40
|
|
DevExtTramp 41
|
|
DevExtTramp 42
|
|
DevExtTramp 43
|
|
DevExtTramp 44
|
|
DevExtTramp 45
|
|
DevExtTramp 46
|
|
DevExtTramp 47
|
|
DevExtTramp 48
|
|
DevExtTramp 49
|
|
DevExtTramp 50
|
|
DevExtTramp 51
|
|
DevExtTramp 52
|
|
DevExtTramp 53
|
|
DevExtTramp 54
|
|
DevExtTramp 55
|
|
DevExtTramp 56
|
|
DevExtTramp 57
|
|
DevExtTramp 58
|
|
DevExtTramp 59
|
|
DevExtTramp 60
|
|
DevExtTramp 61
|
|
DevExtTramp 62
|
|
DevExtTramp 63
|
|
DevExtTramp 64
|
|
DevExtTramp 65
|
|
DevExtTramp 66
|
|
DevExtTramp 67
|
|
DevExtTramp 68
|
|
DevExtTramp 69
|
|
DevExtTramp 70
|
|
DevExtTramp 71
|
|
DevExtTramp 72
|
|
DevExtTramp 73
|
|
DevExtTramp 74
|
|
DevExtTramp 75
|
|
DevExtTramp 76
|
|
DevExtTramp 77
|
|
DevExtTramp 78
|
|
DevExtTramp 79
|
|
DevExtTramp 80
|
|
DevExtTramp 81
|
|
DevExtTramp 82
|
|
DevExtTramp 83
|
|
DevExtTramp 84
|
|
DevExtTramp 85
|
|
DevExtTramp 86
|
|
DevExtTramp 87
|
|
DevExtTramp 88
|
|
DevExtTramp 89
|
|
DevExtTramp 90
|
|
DevExtTramp 91
|
|
DevExtTramp 92
|
|
DevExtTramp 93
|
|
DevExtTramp 94
|
|
DevExtTramp 95
|
|
DevExtTramp 96
|
|
DevExtTramp 97
|
|
DevExtTramp 98
|
|
DevExtTramp 99
|
|
DevExtTramp 100
|
|
DevExtTramp 101
|
|
DevExtTramp 102
|
|
DevExtTramp 103
|
|
DevExtTramp 104
|
|
DevExtTramp 105
|
|
DevExtTramp 106
|
|
DevExtTramp 107
|
|
DevExtTramp 108
|
|
DevExtTramp 109
|
|
DevExtTramp 110
|
|
DevExtTramp 111
|
|
DevExtTramp 112
|
|
DevExtTramp 113
|
|
DevExtTramp 114
|
|
DevExtTramp 115
|
|
DevExtTramp 116
|
|
DevExtTramp 117
|
|
DevExtTramp 118
|
|
DevExtTramp 119
|
|
DevExtTramp 120
|
|
DevExtTramp 121
|
|
DevExtTramp 122
|
|
DevExtTramp 123
|
|
DevExtTramp 124
|
|
DevExtTramp 125
|
|
DevExtTramp 126
|
|
DevExtTramp 127
|
|
DevExtTramp 128
|
|
DevExtTramp 129
|
|
DevExtTramp 130
|
|
DevExtTramp 131
|
|
DevExtTramp 132
|
|
DevExtTramp 133
|
|
DevExtTramp 134
|
|
DevExtTramp 135
|
|
DevExtTramp 136
|
|
DevExtTramp 137
|
|
DevExtTramp 138
|
|
DevExtTramp 139
|
|
DevExtTramp 140
|
|
DevExtTramp 141
|
|
DevExtTramp 142
|
|
DevExtTramp 143
|
|
DevExtTramp 144
|
|
DevExtTramp 145
|
|
DevExtTramp 146
|
|
DevExtTramp 147
|
|
DevExtTramp 148
|
|
DevExtTramp 149
|
|
DevExtTramp 150
|
|
DevExtTramp 151
|
|
DevExtTramp 152
|
|
DevExtTramp 153
|
|
DevExtTramp 154
|
|
DevExtTramp 155
|
|
DevExtTramp 156
|
|
DevExtTramp 157
|
|
DevExtTramp 158
|
|
DevExtTramp 159
|
|
DevExtTramp 160
|
|
DevExtTramp 161
|
|
DevExtTramp 162
|
|
DevExtTramp 163
|
|
DevExtTramp 164
|
|
DevExtTramp 165
|
|
DevExtTramp 166
|
|
DevExtTramp 167
|
|
DevExtTramp 168
|
|
DevExtTramp 169
|
|
DevExtTramp 170
|
|
DevExtTramp 171
|
|
DevExtTramp 172
|
|
DevExtTramp 173
|
|
DevExtTramp 174
|
|
DevExtTramp 175
|
|
DevExtTramp 176
|
|
DevExtTramp 177
|
|
DevExtTramp 178
|
|
DevExtTramp 179
|
|
DevExtTramp 180
|
|
DevExtTramp 181
|
|
DevExtTramp 182
|
|
DevExtTramp 183
|
|
DevExtTramp 184
|
|
DevExtTramp 185
|
|
DevExtTramp 186
|
|
DevExtTramp 187
|
|
DevExtTramp 188
|
|
DevExtTramp 189
|
|
DevExtTramp 190
|
|
DevExtTramp 191
|
|
DevExtTramp 192
|
|
DevExtTramp 193
|
|
DevExtTramp 194
|
|
DevExtTramp 195
|
|
DevExtTramp 196
|
|
DevExtTramp 197
|
|
DevExtTramp 198
|
|
DevExtTramp 199
|
|
DevExtTramp 200
|
|
DevExtTramp 201
|
|
DevExtTramp 202
|
|
DevExtTramp 203
|
|
DevExtTramp 204
|
|
DevExtTramp 205
|
|
DevExtTramp 206
|
|
DevExtTramp 207
|
|
DevExtTramp 208
|
|
DevExtTramp 209
|
|
DevExtTramp 210
|
|
DevExtTramp 211
|
|
DevExtTramp 212
|
|
DevExtTramp 213
|
|
DevExtTramp 214
|
|
DevExtTramp 215
|
|
DevExtTramp 216
|
|
DevExtTramp 217
|
|
DevExtTramp 218
|
|
DevExtTramp 219
|
|
DevExtTramp 220
|
|
DevExtTramp 221
|
|
DevExtTramp 222
|
|
DevExtTramp 223
|
|
DevExtTramp 224
|
|
DevExtTramp 225
|
|
DevExtTramp 226
|
|
DevExtTramp 227
|
|
DevExtTramp 228
|
|
DevExtTramp 229
|
|
DevExtTramp 230
|
|
DevExtTramp 231
|
|
DevExtTramp 232
|
|
DevExtTramp 233
|
|
DevExtTramp 234
|
|
DevExtTramp 235
|
|
DevExtTramp 236
|
|
DevExtTramp 237
|
|
DevExtTramp 238
|
|
DevExtTramp 239
|
|
DevExtTramp 240
|
|
DevExtTramp 241
|
|
DevExtTramp 242
|
|
DevExtTramp 243
|
|
DevExtTramp 244
|
|
DevExtTramp 245
|
|
DevExtTramp 246
|
|
DevExtTramp 247
|
|
DevExtTramp 248
|
|
DevExtTramp 249
|
|
|
|
end
|