Home | History | Annotate | Download | only in loader
      1 /*
      2  * Copyright (c) 2017 The Khronos Group Inc.
      3  * Copyright (c) 2017 Valve Corporation
      4  * Copyright (c) 2017 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 Jon Ashburn <jon (at) lunarg.com>
     19  * Author: Lenny Komow <lenny (at) lunarg.com>
     20  */
     21 
     22  // This code is used to pass on physical device extensions through the call chain. It must do this without creating a stack frame,
     23  // because the actual parameters of the call are not known. Since the first parameter is known to be a VkPhysicalDevice, it can
     24 // unwrap the physical device, overwriting the wrapped device, and then jump to the next function in the call chain. This code
     25 // attempts to accomplish this by relying on tail-call optimizations, but there is no guarantee that this will work. As a result,
     26 // this code is only compiled on systems where an assembly alternative has not been written.
     27 
     28  #include "vk_loader_platform.h"
     29  #include "loader.h"
     30 
     31  #if defined(__GNUC__) && !defined(__clang__)
     32  #pragma GCC optimize(3)  // force gcc to use tail-calls
     33  #endif
     34 
     35  // Trampoline function macro for unknown physical device extension command.
     36  #define PhysDevExtTramp(num)                                                              \
     37      VKAPI_ATTR void VKAPI_CALL vkPhysDevExtTramp##num(VkPhysicalDevice physical_device) { \
     38          const struct loader_instance_dispatch_table *disp;                                \
     39          disp = loader_get_instance_dispatch(physical_device);                             \
     40          disp->phys_dev_ext[num](loader_unwrap_physical_device(physical_device));          \
     41      }
     42 
     43 // Terminator function macro for unknown physical device extension command.
     44 #define PhysDevExtTermin(num)                                                                                         \
     45     VKAPI_ATTR void VKAPI_CALL vkPhysDevExtTermin##num(VkPhysicalDevice physical_device) {                            \
     46          struct loader_physical_device_term *phys_dev_term = (struct loader_physical_device_term *)physical_device;    \
     47          struct loader_icd_term *icd_term = phys_dev_term->this_icd_term;                                              \
     48          struct loader_instance *inst = (struct loader_instance *)icd_term->this_instance;                             \
     49          if (NULL == icd_term->phys_dev_ext[num]) {                                                                    \
     50              loader_log(inst, VK_DEBUG_REPORT_ERROR_BIT_EXT, 0, "Extension %s not supported for this physical device", \
     51                         inst->phys_dev_ext_disp_hash[num].func_name);                                                  \
     52          }                                                                                                             \
     53          icd_term->phys_dev_ext[num](phys_dev_term->phys_dev);                                                         \
     54     }
     55 
     56 // Trampoline function macro for unknown physical device extension command.
     57 #define DevExtTramp(num)                                                          \
     58    VKAPI_ATTR void VKAPI_CALL vkdev_ext##num(VkDevice device) {                   \
     59            const struct loader_dev_dispatch_table *disp;                          \
     60            disp = loader_get_dev_dispatch(device);                                \
     61            disp->ext_dispatch.dev_ext[num](device);                               \
     62        }
     63 
     64 
     65 // Instantiations of the trampoline
     66 PhysDevExtTramp(0)
     67 PhysDevExtTramp(1)
     68 PhysDevExtTramp(2)
     69 PhysDevExtTramp(3)
     70 PhysDevExtTramp(4)
     71 PhysDevExtTramp(5)
     72 PhysDevExtTramp(6)
     73 PhysDevExtTramp(7)
     74 PhysDevExtTramp(8)
     75 PhysDevExtTramp(9)
     76 PhysDevExtTramp(10)
     77 PhysDevExtTramp(11)
     78 PhysDevExtTramp(12)
     79 PhysDevExtTramp(13)
     80 PhysDevExtTramp(14)
     81 PhysDevExtTramp(15)
     82 PhysDevExtTramp(16)
     83 PhysDevExtTramp(17)
     84 PhysDevExtTramp(18)
     85 PhysDevExtTramp(19)
     86 PhysDevExtTramp(20)
     87 PhysDevExtTramp(21)
     88 PhysDevExtTramp(22)
     89 PhysDevExtTramp(23)
     90 PhysDevExtTramp(24)
     91 PhysDevExtTramp(25)
     92 PhysDevExtTramp(26)
     93 PhysDevExtTramp(27)
     94 PhysDevExtTramp(28)
     95 PhysDevExtTramp(29)
     96 PhysDevExtTramp(30)
     97 PhysDevExtTramp(31)
     98 PhysDevExtTramp(32)
     99 PhysDevExtTramp(33)
    100 PhysDevExtTramp(34)
    101 PhysDevExtTramp(35)
    102 PhysDevExtTramp(36)
    103 PhysDevExtTramp(37)
    104 PhysDevExtTramp(38)
    105 PhysDevExtTramp(39)
    106 PhysDevExtTramp(40)
    107 PhysDevExtTramp(41)
    108 PhysDevExtTramp(42)
    109 PhysDevExtTramp(43)
    110 PhysDevExtTramp(44)
    111 PhysDevExtTramp(45)
    112 PhysDevExtTramp(46)
    113 PhysDevExtTramp(47)
    114 PhysDevExtTramp(48)
    115 PhysDevExtTramp(49)
    116 PhysDevExtTramp(50)
    117 PhysDevExtTramp(51)
    118 PhysDevExtTramp(52)
    119 PhysDevExtTramp(53)
    120 PhysDevExtTramp(54)
    121 PhysDevExtTramp(55)
    122 PhysDevExtTramp(56)
    123 PhysDevExtTramp(57)
    124 PhysDevExtTramp(58)
    125 PhysDevExtTramp(59)
    126 PhysDevExtTramp(60)
    127 PhysDevExtTramp(61)
    128 PhysDevExtTramp(62)
    129 PhysDevExtTramp(63)
    130 PhysDevExtTramp(64)
    131 PhysDevExtTramp(65)
    132 PhysDevExtTramp(66)
    133 PhysDevExtTramp(67)
    134 PhysDevExtTramp(68)
    135 PhysDevExtTramp(69)
    136 PhysDevExtTramp(70)
    137 PhysDevExtTramp(71)
    138 PhysDevExtTramp(72)
    139 PhysDevExtTramp(73)
    140 PhysDevExtTramp(74)
    141 PhysDevExtTramp(75)
    142 PhysDevExtTramp(76)
    143 PhysDevExtTramp(77)
    144 PhysDevExtTramp(78)
    145 PhysDevExtTramp(79)
    146 PhysDevExtTramp(80)
    147 PhysDevExtTramp(81)
    148 PhysDevExtTramp(82)
    149 PhysDevExtTramp(83)
    150 PhysDevExtTramp(84)
    151 PhysDevExtTramp(85)
    152 PhysDevExtTramp(86)
    153 PhysDevExtTramp(87)
    154 PhysDevExtTramp(88)
    155 PhysDevExtTramp(89)
    156 PhysDevExtTramp(90)
    157 PhysDevExtTramp(91)
    158 PhysDevExtTramp(92)
    159 PhysDevExtTramp(93)
    160 PhysDevExtTramp(94)
    161 PhysDevExtTramp(95)
    162 PhysDevExtTramp(96)
    163 PhysDevExtTramp(97)
    164 PhysDevExtTramp(98)
    165 PhysDevExtTramp(99)
    166 PhysDevExtTramp(100)
    167 PhysDevExtTramp(101)
    168 PhysDevExtTramp(102)
    169 PhysDevExtTramp(103)
    170 PhysDevExtTramp(104)
    171 PhysDevExtTramp(105)
    172 PhysDevExtTramp(106)
    173 PhysDevExtTramp(107)
    174 PhysDevExtTramp(108)
    175 PhysDevExtTramp(109)
    176 PhysDevExtTramp(110)
    177 PhysDevExtTramp(111)
    178 PhysDevExtTramp(112)
    179 PhysDevExtTramp(113)
    180 PhysDevExtTramp(114)
    181 PhysDevExtTramp(115)
    182 PhysDevExtTramp(116)
    183 PhysDevExtTramp(117)
    184 PhysDevExtTramp(118)
    185 PhysDevExtTramp(119)
    186 PhysDevExtTramp(120)
    187 PhysDevExtTramp(121)
    188 PhysDevExtTramp(122)
    189 PhysDevExtTramp(123)
    190 PhysDevExtTramp(124)
    191 PhysDevExtTramp(125)
    192 PhysDevExtTramp(126)
    193 PhysDevExtTramp(127)
    194 PhysDevExtTramp(128)
    195 PhysDevExtTramp(129)
    196 PhysDevExtTramp(130)
    197 PhysDevExtTramp(131)
    198 PhysDevExtTramp(132)
    199 PhysDevExtTramp(133)
    200 PhysDevExtTramp(134)
    201 PhysDevExtTramp(135)
    202 PhysDevExtTramp(136)
    203 PhysDevExtTramp(137)
    204 PhysDevExtTramp(138)
    205 PhysDevExtTramp(139)
    206 PhysDevExtTramp(140)
    207 PhysDevExtTramp(141)
    208 PhysDevExtTramp(142)
    209 PhysDevExtTramp(143)
    210 PhysDevExtTramp(144)
    211 PhysDevExtTramp(145)
    212 PhysDevExtTramp(146)
    213 PhysDevExtTramp(147)
    214 PhysDevExtTramp(148)
    215 PhysDevExtTramp(149)
    216 PhysDevExtTramp(150)
    217 PhysDevExtTramp(151)
    218 PhysDevExtTramp(152)
    219 PhysDevExtTramp(153)
    220 PhysDevExtTramp(154)
    221 PhysDevExtTramp(155)
    222 PhysDevExtTramp(156)
    223 PhysDevExtTramp(157)
    224 PhysDevExtTramp(158)
    225 PhysDevExtTramp(159)
    226 PhysDevExtTramp(160)
    227 PhysDevExtTramp(161)
    228 PhysDevExtTramp(162)
    229 PhysDevExtTramp(163)
    230 PhysDevExtTramp(164)
    231 PhysDevExtTramp(165)
    232 PhysDevExtTramp(166)
    233 PhysDevExtTramp(167)
    234 PhysDevExtTramp(168)
    235 PhysDevExtTramp(169)
    236 PhysDevExtTramp(170)
    237 PhysDevExtTramp(171)
    238 PhysDevExtTramp(172)
    239 PhysDevExtTramp(173)
    240 PhysDevExtTramp(174)
    241 PhysDevExtTramp(175)
    242 PhysDevExtTramp(176)
    243 PhysDevExtTramp(177)
    244 PhysDevExtTramp(178)
    245 PhysDevExtTramp(179)
    246 PhysDevExtTramp(180)
    247 PhysDevExtTramp(181)
    248 PhysDevExtTramp(182)
    249 PhysDevExtTramp(183)
    250 PhysDevExtTramp(184)
    251 PhysDevExtTramp(185)
    252 PhysDevExtTramp(186)
    253 PhysDevExtTramp(187)
    254 PhysDevExtTramp(188)
    255 PhysDevExtTramp(189)
    256 PhysDevExtTramp(190)
    257 PhysDevExtTramp(191)
    258 PhysDevExtTramp(192)
    259 PhysDevExtTramp(193)
    260 PhysDevExtTramp(194)
    261 PhysDevExtTramp(195)
    262 PhysDevExtTramp(196)
    263 PhysDevExtTramp(197)
    264 PhysDevExtTramp(198)
    265 PhysDevExtTramp(199)
    266 PhysDevExtTramp(200)
    267 PhysDevExtTramp(201)
    268 PhysDevExtTramp(202)
    269 PhysDevExtTramp(203)
    270 PhysDevExtTramp(204)
    271 PhysDevExtTramp(205)
    272 PhysDevExtTramp(206)
    273 PhysDevExtTramp(207)
    274 PhysDevExtTramp(208)
    275 PhysDevExtTramp(209)
    276 PhysDevExtTramp(210)
    277 PhysDevExtTramp(211)
    278 PhysDevExtTramp(212)
    279 PhysDevExtTramp(213)
    280 PhysDevExtTramp(214)
    281 PhysDevExtTramp(215)
    282 PhysDevExtTramp(216)
    283 PhysDevExtTramp(217)
    284 PhysDevExtTramp(218)
    285 PhysDevExtTramp(219)
    286 PhysDevExtTramp(220)
    287 PhysDevExtTramp(221)
    288 PhysDevExtTramp(222)
    289 PhysDevExtTramp(223)
    290 PhysDevExtTramp(224)
    291 PhysDevExtTramp(225)
    292 PhysDevExtTramp(226)
    293 PhysDevExtTramp(227)
    294 PhysDevExtTramp(228)
    295 PhysDevExtTramp(229)
    296 PhysDevExtTramp(230)
    297 PhysDevExtTramp(231)
    298 PhysDevExtTramp(232)
    299 PhysDevExtTramp(233)
    300 PhysDevExtTramp(234)
    301 PhysDevExtTramp(235)
    302 PhysDevExtTramp(236)
    303 PhysDevExtTramp(237)
    304 PhysDevExtTramp(238)
    305 PhysDevExtTramp(239)
    306 PhysDevExtTramp(240)
    307 PhysDevExtTramp(241)
    308 PhysDevExtTramp(242)
    309 PhysDevExtTramp(243)
    310 PhysDevExtTramp(244)
    311 PhysDevExtTramp(245)
    312 PhysDevExtTramp(246)
    313 PhysDevExtTramp(247)
    314 PhysDevExtTramp(248)
    315 PhysDevExtTramp(249)
    316 
    317 // Instantiations of the terminator
    318 PhysDevExtTermin(0)
    319 PhysDevExtTermin(1)
    320 PhysDevExtTermin(2)
    321 PhysDevExtTermin(3)
    322 PhysDevExtTermin(4)
    323 PhysDevExtTermin(5)
    324 PhysDevExtTermin(6)
    325 PhysDevExtTermin(7)
    326 PhysDevExtTermin(8)
    327 PhysDevExtTermin(9)
    328 PhysDevExtTermin(10)
    329 PhysDevExtTermin(11)
    330 PhysDevExtTermin(12)
    331 PhysDevExtTermin(13)
    332 PhysDevExtTermin(14)
    333 PhysDevExtTermin(15)
    334 PhysDevExtTermin(16)
    335 PhysDevExtTermin(17)
    336 PhysDevExtTermin(18)
    337 PhysDevExtTermin(19)
    338 PhysDevExtTermin(20)
    339 PhysDevExtTermin(21)
    340 PhysDevExtTermin(22)
    341 PhysDevExtTermin(23)
    342 PhysDevExtTermin(24)
    343 PhysDevExtTermin(25)
    344 PhysDevExtTermin(26)
    345 PhysDevExtTermin(27)
    346 PhysDevExtTermin(28)
    347 PhysDevExtTermin(29)
    348 PhysDevExtTermin(30)
    349 PhysDevExtTermin(31)
    350 PhysDevExtTermin(32)
    351 PhysDevExtTermin(33)
    352 PhysDevExtTermin(34)
    353 PhysDevExtTermin(35)
    354 PhysDevExtTermin(36)
    355 PhysDevExtTermin(37)
    356 PhysDevExtTermin(38)
    357 PhysDevExtTermin(39)
    358 PhysDevExtTermin(40)
    359 PhysDevExtTermin(41)
    360 PhysDevExtTermin(42)
    361 PhysDevExtTermin(43)
    362 PhysDevExtTermin(44)
    363 PhysDevExtTermin(45)
    364 PhysDevExtTermin(46)
    365 PhysDevExtTermin(47)
    366 PhysDevExtTermin(48)
    367 PhysDevExtTermin(49)
    368 PhysDevExtTermin(50)
    369 PhysDevExtTermin(51)
    370 PhysDevExtTermin(52)
    371 PhysDevExtTermin(53)
    372 PhysDevExtTermin(54)
    373 PhysDevExtTermin(55)
    374 PhysDevExtTermin(56)
    375 PhysDevExtTermin(57)
    376 PhysDevExtTermin(58)
    377 PhysDevExtTermin(59)
    378 PhysDevExtTermin(60)
    379 PhysDevExtTermin(61)
    380 PhysDevExtTermin(62)
    381 PhysDevExtTermin(63)
    382 PhysDevExtTermin(64)
    383 PhysDevExtTermin(65)
    384 PhysDevExtTermin(66)
    385 PhysDevExtTermin(67)
    386 PhysDevExtTermin(68)
    387 PhysDevExtTermin(69)
    388 PhysDevExtTermin(70)
    389 PhysDevExtTermin(71)
    390 PhysDevExtTermin(72)
    391 PhysDevExtTermin(73)
    392 PhysDevExtTermin(74)
    393 PhysDevExtTermin(75)
    394 PhysDevExtTermin(76)
    395 PhysDevExtTermin(77)
    396 PhysDevExtTermin(78)
    397 PhysDevExtTermin(79)
    398 PhysDevExtTermin(80)
    399 PhysDevExtTermin(81)
    400 PhysDevExtTermin(82)
    401 PhysDevExtTermin(83)
    402 PhysDevExtTermin(84)
    403 PhysDevExtTermin(85)
    404 PhysDevExtTermin(86)
    405 PhysDevExtTermin(87)
    406 PhysDevExtTermin(88)
    407 PhysDevExtTermin(89)
    408 PhysDevExtTermin(90)
    409 PhysDevExtTermin(91)
    410 PhysDevExtTermin(92)
    411 PhysDevExtTermin(93)
    412 PhysDevExtTermin(94)
    413 PhysDevExtTermin(95)
    414 PhysDevExtTermin(96)
    415 PhysDevExtTermin(97)
    416 PhysDevExtTermin(98)
    417 PhysDevExtTermin(99)
    418 PhysDevExtTermin(100)
    419 PhysDevExtTermin(101)
    420 PhysDevExtTermin(102)
    421 PhysDevExtTermin(103)
    422 PhysDevExtTermin(104)
    423 PhysDevExtTermin(105)
    424 PhysDevExtTermin(106)
    425 PhysDevExtTermin(107)
    426 PhysDevExtTermin(108)
    427 PhysDevExtTermin(109)
    428 PhysDevExtTermin(110)
    429 PhysDevExtTermin(111)
    430 PhysDevExtTermin(112)
    431 PhysDevExtTermin(113)
    432 PhysDevExtTermin(114)
    433 PhysDevExtTermin(115)
    434 PhysDevExtTermin(116)
    435 PhysDevExtTermin(117)
    436 PhysDevExtTermin(118)
    437 PhysDevExtTermin(119)
    438 PhysDevExtTermin(120)
    439 PhysDevExtTermin(121)
    440 PhysDevExtTermin(122)
    441 PhysDevExtTermin(123)
    442 PhysDevExtTermin(124)
    443 PhysDevExtTermin(125)
    444 PhysDevExtTermin(126)
    445 PhysDevExtTermin(127)
    446 PhysDevExtTermin(128)
    447 PhysDevExtTermin(129)
    448 PhysDevExtTermin(130)
    449 PhysDevExtTermin(131)
    450 PhysDevExtTermin(132)
    451 PhysDevExtTermin(133)
    452 PhysDevExtTermin(134)
    453 PhysDevExtTermin(135)
    454 PhysDevExtTermin(136)
    455 PhysDevExtTermin(137)
    456 PhysDevExtTermin(138)
    457 PhysDevExtTermin(139)
    458 PhysDevExtTermin(140)
    459 PhysDevExtTermin(141)
    460 PhysDevExtTermin(142)
    461 PhysDevExtTermin(143)
    462 PhysDevExtTermin(144)
    463 PhysDevExtTermin(145)
    464 PhysDevExtTermin(146)
    465 PhysDevExtTermin(147)
    466 PhysDevExtTermin(148)
    467 PhysDevExtTermin(149)
    468 PhysDevExtTermin(150)
    469 PhysDevExtTermin(151)
    470 PhysDevExtTermin(152)
    471 PhysDevExtTermin(153)
    472 PhysDevExtTermin(154)
    473 PhysDevExtTermin(155)
    474 PhysDevExtTermin(156)
    475 PhysDevExtTermin(157)
    476 PhysDevExtTermin(158)
    477 PhysDevExtTermin(159)
    478 PhysDevExtTermin(160)
    479 PhysDevExtTermin(161)
    480 PhysDevExtTermin(162)
    481 PhysDevExtTermin(163)
    482 PhysDevExtTermin(164)
    483 PhysDevExtTermin(165)
    484 PhysDevExtTermin(166)
    485 PhysDevExtTermin(167)
    486 PhysDevExtTermin(168)
    487 PhysDevExtTermin(169)
    488 PhysDevExtTermin(170)
    489 PhysDevExtTermin(171)
    490 PhysDevExtTermin(172)
    491 PhysDevExtTermin(173)
    492 PhysDevExtTermin(174)
    493 PhysDevExtTermin(175)
    494 PhysDevExtTermin(176)
    495 PhysDevExtTermin(177)
    496 PhysDevExtTermin(178)
    497 PhysDevExtTermin(179)
    498 PhysDevExtTermin(180)
    499 PhysDevExtTermin(181)
    500 PhysDevExtTermin(182)
    501 PhysDevExtTermin(183)
    502 PhysDevExtTermin(184)
    503 PhysDevExtTermin(185)
    504 PhysDevExtTermin(186)
    505 PhysDevExtTermin(187)
    506 PhysDevExtTermin(188)
    507 PhysDevExtTermin(189)
    508 PhysDevExtTermin(190)
    509 PhysDevExtTermin(191)
    510 PhysDevExtTermin(192)
    511 PhysDevExtTermin(193)
    512 PhysDevExtTermin(194)
    513 PhysDevExtTermin(195)
    514 PhysDevExtTermin(196)
    515 PhysDevExtTermin(197)
    516 PhysDevExtTermin(198)
    517 PhysDevExtTermin(199)
    518 PhysDevExtTermin(200)
    519 PhysDevExtTermin(201)
    520 PhysDevExtTermin(202)
    521 PhysDevExtTermin(203)
    522 PhysDevExtTermin(204)
    523 PhysDevExtTermin(205)
    524 PhysDevExtTermin(206)
    525 PhysDevExtTermin(207)
    526 PhysDevExtTermin(208)
    527 PhysDevExtTermin(209)
    528 PhysDevExtTermin(210)
    529 PhysDevExtTermin(211)
    530 PhysDevExtTermin(212)
    531 PhysDevExtTermin(213)
    532 PhysDevExtTermin(214)
    533 PhysDevExtTermin(215)
    534 PhysDevExtTermin(216)
    535 PhysDevExtTermin(217)
    536 PhysDevExtTermin(218)
    537 PhysDevExtTermin(219)
    538 PhysDevExtTermin(220)
    539 PhysDevExtTermin(221)
    540 PhysDevExtTermin(222)
    541 PhysDevExtTermin(223)
    542 PhysDevExtTermin(224)
    543 PhysDevExtTermin(225)
    544 PhysDevExtTermin(226)
    545 PhysDevExtTermin(227)
    546 PhysDevExtTermin(228)
    547 PhysDevExtTermin(229)
    548 PhysDevExtTermin(230)
    549 PhysDevExtTermin(231)
    550 PhysDevExtTermin(232)
    551 PhysDevExtTermin(233)
    552 PhysDevExtTermin(234)
    553 PhysDevExtTermin(235)
    554 PhysDevExtTermin(236)
    555 PhysDevExtTermin(237)
    556 PhysDevExtTermin(238)
    557 PhysDevExtTermin(239)
    558 PhysDevExtTermin(240)
    559 PhysDevExtTermin(241)
    560 PhysDevExtTermin(242)
    561 PhysDevExtTermin(243)
    562 PhysDevExtTermin(244)
    563 PhysDevExtTermin(245)
    564 PhysDevExtTermin(246)
    565 PhysDevExtTermin(247)
    566 PhysDevExtTermin(248)
    567 PhysDevExtTermin(249)
    568 
    569 // Instantiations of the device trampoline
    570 DevExtTramp(0)
    571 DevExtTramp(1)
    572 DevExtTramp(2)
    573 DevExtTramp(3)
    574 DevExtTramp(4)
    575 DevExtTramp(5)
    576 DevExtTramp(6)
    577 DevExtTramp(7)
    578 DevExtTramp(8)
    579 DevExtTramp(9)
    580 DevExtTramp(10)
    581 DevExtTramp(11)
    582 DevExtTramp(12)
    583 DevExtTramp(13)
    584 DevExtTramp(14)
    585 DevExtTramp(15)
    586 DevExtTramp(16)
    587 DevExtTramp(17)
    588 DevExtTramp(18)
    589 DevExtTramp(19)
    590 DevExtTramp(20)
    591 DevExtTramp(21)
    592 DevExtTramp(22)
    593 DevExtTramp(23)
    594 DevExtTramp(24)
    595 DevExtTramp(25)
    596 DevExtTramp(26)
    597 DevExtTramp(27)
    598 DevExtTramp(28)
    599 DevExtTramp(29)
    600 DevExtTramp(30)
    601 DevExtTramp(31)
    602 DevExtTramp(32)
    603 DevExtTramp(33)
    604 DevExtTramp(34)
    605 DevExtTramp(35)
    606 DevExtTramp(36)
    607 DevExtTramp(37)
    608 DevExtTramp(38)
    609 DevExtTramp(39)
    610 DevExtTramp(40)
    611 DevExtTramp(41)
    612 DevExtTramp(42)
    613 DevExtTramp(43)
    614 DevExtTramp(44)
    615 DevExtTramp(45)
    616 DevExtTramp(46)
    617 DevExtTramp(47)
    618 DevExtTramp(48)
    619 DevExtTramp(49)
    620 DevExtTramp(50)
    621 DevExtTramp(51)
    622 DevExtTramp(52)
    623 DevExtTramp(53)
    624 DevExtTramp(54)
    625 DevExtTramp(55)
    626 DevExtTramp(56)
    627 DevExtTramp(57)
    628 DevExtTramp(58)
    629 DevExtTramp(59)
    630 DevExtTramp(60)
    631 DevExtTramp(61)
    632 DevExtTramp(62)
    633 DevExtTramp(63)
    634 DevExtTramp(64)
    635 DevExtTramp(65)
    636 DevExtTramp(66)
    637 DevExtTramp(67)
    638 DevExtTramp(68)
    639 DevExtTramp(69)
    640 DevExtTramp(70)
    641 DevExtTramp(71)
    642 DevExtTramp(72)
    643 DevExtTramp(73)
    644 DevExtTramp(74)
    645 DevExtTramp(75)
    646 DevExtTramp(76)
    647 DevExtTramp(77)
    648 DevExtTramp(78)
    649 DevExtTramp(79)
    650 DevExtTramp(80)
    651 DevExtTramp(81)
    652 DevExtTramp(82)
    653 DevExtTramp(83)
    654 DevExtTramp(84)
    655 DevExtTramp(85)
    656 DevExtTramp(86)
    657 DevExtTramp(87)
    658 DevExtTramp(88)
    659 DevExtTramp(89)
    660 DevExtTramp(90)
    661 DevExtTramp(91)
    662 DevExtTramp(92)
    663 DevExtTramp(93)
    664 DevExtTramp(94)
    665 DevExtTramp(95)
    666 DevExtTramp(96)
    667 DevExtTramp(97)
    668 DevExtTramp(98)
    669 DevExtTramp(99)
    670 DevExtTramp(100)
    671 DevExtTramp(101)
    672 DevExtTramp(102)
    673 DevExtTramp(103)
    674 DevExtTramp(104)
    675 DevExtTramp(105)
    676 DevExtTramp(106)
    677 DevExtTramp(107)
    678 DevExtTramp(108)
    679 DevExtTramp(109)
    680 DevExtTramp(110)
    681 DevExtTramp(111)
    682 DevExtTramp(112)
    683 DevExtTramp(113)
    684 DevExtTramp(114)
    685 DevExtTramp(115)
    686 DevExtTramp(116)
    687 DevExtTramp(117)
    688 DevExtTramp(118)
    689 DevExtTramp(119)
    690 DevExtTramp(120)
    691 DevExtTramp(121)
    692 DevExtTramp(122)
    693 DevExtTramp(123)
    694 DevExtTramp(124)
    695 DevExtTramp(125)
    696 DevExtTramp(126)
    697 DevExtTramp(127)
    698 DevExtTramp(128)
    699 DevExtTramp(129)
    700 DevExtTramp(130)
    701 DevExtTramp(131)
    702 DevExtTramp(132)
    703 DevExtTramp(133)
    704 DevExtTramp(134)
    705 DevExtTramp(135)
    706 DevExtTramp(136)
    707 DevExtTramp(137)
    708 DevExtTramp(138)
    709 DevExtTramp(139)
    710 DevExtTramp(140)
    711 DevExtTramp(141)
    712 DevExtTramp(142)
    713 DevExtTramp(143)
    714 DevExtTramp(144)
    715 DevExtTramp(145)
    716 DevExtTramp(146)
    717 DevExtTramp(147)
    718 DevExtTramp(148)
    719 DevExtTramp(149)
    720 DevExtTramp(150)
    721 DevExtTramp(151)
    722 DevExtTramp(152)
    723 DevExtTramp(153)
    724 DevExtTramp(154)
    725 DevExtTramp(155)
    726 DevExtTramp(156)
    727 DevExtTramp(157)
    728 DevExtTramp(158)
    729 DevExtTramp(159)
    730 DevExtTramp(160)
    731 DevExtTramp(161)
    732 DevExtTramp(162)
    733 DevExtTramp(163)
    734 DevExtTramp(164)
    735 DevExtTramp(165)
    736 DevExtTramp(166)
    737 DevExtTramp(167)
    738 DevExtTramp(168)
    739 DevExtTramp(169)
    740 DevExtTramp(170)
    741 DevExtTramp(171)
    742 DevExtTramp(172)
    743 DevExtTramp(173)
    744 DevExtTramp(174)
    745 DevExtTramp(175)
    746 DevExtTramp(176)
    747 DevExtTramp(177)
    748 DevExtTramp(178)
    749 DevExtTramp(179)
    750 DevExtTramp(180)
    751 DevExtTramp(181)
    752 DevExtTramp(182)
    753 DevExtTramp(183)
    754 DevExtTramp(184)
    755 DevExtTramp(185)
    756 DevExtTramp(186)
    757 DevExtTramp(187)
    758 DevExtTramp(188)
    759 DevExtTramp(189)
    760 DevExtTramp(190)
    761 DevExtTramp(191)
    762 DevExtTramp(192)
    763 DevExtTramp(193)
    764 DevExtTramp(194)
    765 DevExtTramp(195)
    766 DevExtTramp(196)
    767 DevExtTramp(197)
    768 DevExtTramp(198)
    769 DevExtTramp(199)
    770 DevExtTramp(200)
    771 DevExtTramp(201)
    772 DevExtTramp(202)
    773 DevExtTramp(203)
    774 DevExtTramp(204)
    775 DevExtTramp(205)
    776 DevExtTramp(206)
    777 DevExtTramp(207)
    778 DevExtTramp(208)
    779 DevExtTramp(209)
    780 DevExtTramp(210)
    781 DevExtTramp(211)
    782 DevExtTramp(212)
    783 DevExtTramp(213)
    784 DevExtTramp(214)
    785 DevExtTramp(215)
    786 DevExtTramp(216)
    787 DevExtTramp(217)
    788 DevExtTramp(218)
    789 DevExtTramp(219)
    790 DevExtTramp(220)
    791 DevExtTramp(221)
    792 DevExtTramp(222)
    793 DevExtTramp(223)
    794 DevExtTramp(224)
    795 DevExtTramp(225)
    796 DevExtTramp(226)
    797 DevExtTramp(227)
    798 DevExtTramp(228)
    799 DevExtTramp(229)
    800 DevExtTramp(230)
    801 DevExtTramp(231)
    802 DevExtTramp(232)
    803 DevExtTramp(233)
    804 DevExtTramp(234)
    805 DevExtTramp(235)
    806 DevExtTramp(236)
    807 DevExtTramp(237)
    808 DevExtTramp(238)
    809 DevExtTramp(239)
    810 DevExtTramp(240)
    811 DevExtTramp(241)
    812 DevExtTramp(242)
    813 DevExtTramp(243)
    814 DevExtTramp(244)
    815 DevExtTramp(245)
    816 DevExtTramp(246)
    817 DevExtTramp(247)
    818 DevExtTramp(248)
    819 DevExtTramp(249)
    820