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