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