Advertisement
Guest User

Untitled

a guest
Oct 9th, 2015
541
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 59.78 KB | None | 0 0
  1. __int64 __fastcall AppleUSBXHCIPCI::createPorts(AppleUSBXHCIPCI *this)
  2. {
  3.   AppleUSBXHCIPCI *v1; // r14@1
  4.   __int64 v2; // rax@1
  5.   __int64 v3; // rax@1
  6.   __int64 v4; // rdi@2
  7.   __int64 v5; // rax@3
  8.   __int64 v6; // rax@4
  9.   __int64 v7; // rsi@4
  10.   __int64 v8; // rax@4
  11.   int v9; // eax@5
  12.   signed int v10; // ecx@5
  13.   unsigned __int64 v11; // rax@8
  14.   unsigned __int64 v12; // r9@8
  15.   int v13; // er15@8
  16.   int v14; // er10@10
  17.   unsigned __int64 v15; // r13@11
  18.   __int64 v16; // STA8_8@12
  19.   int v17; // ST88_4@12
  20.   OSNumber *v18; // rax@12
  21.   OSNumber *v19; // ST58_8@12
  22.   __int64 v20; // rax@12
  23.   unsigned int v21; // ebx@15
  24.   int v22; // er15@15
  25.   signed int v23; // eax@16
  26.   int v24; // eax@24
  27.   __int64 v25; // STA8_8@26
  28.   int v26; // ST88_4@26
  29.   OSNumber *v27; // rax@26
  30.   OSNumber *v28; // ST58_8@26
  31.   __int64 v29; // rax@26
  32.   __int64 v30; // rbx@27
  33.   int v31; // eax@27
  34.   int v32; // ebx@31
  35.   int v33; // er12@33
  36.   int v34; // er15@34
  37.   int v35; // er15@35
  38.   AppleUSBXHCIPCI *v36; // r13@35
  39.   unsigned __int64 v37; // r14@35
  40.   __int64 v38; // r9@36
  41.   int v39; // eax@36
  42.   __int64 v40; // STA8_8@38
  43.   int v41; // STBC_4@38
  44.   __int64 v42; // rax@38
  45.   __int64 v43; // rbx@38
  46.   __int64 v44; // rax@38
  47.   __int64 v45; // rax@41
  48.   __int64 v46; // r13@42
  49.   __int64 v47; // rax@42
  50.   unsigned int v48; // edx@42
  51.   __int64 v49; // STA8_8@43
  52.   int v50; // STBC_4@43
  53.   __int64 v51; // rax@43
  54.   __int64 v52; // rbx@43
  55.   __int64 v53; // rax@43
  56.   int v54; // eax@45
  57.   __int64 v55; // rbx@47
  58.   char v56; // r15@47
  59.   __int64 v57; // r15@49
  60.   __int64 v58; // rax@49
  61.   __int64 v59; // rax@49
  62.   __int64 v60; // rax@53
  63.   __int64 v61; // r15@53
  64.   int v62; // eax@55
  65.   __int64 v63; // ST40_8@57
  66.   int v64; // ST38_4@57
  67.   __int64 v65; // rax@57
  68.   __int64 v66; // ST30_8@57
  69.   __int64 v67; // rax@57
  70.   __int64 v68; // ST48_8@57
  71.   __int64 v69; // rbx@57
  72.   int *v70; // rax@57
  73.   __int64 v71; // r8@57
  74.   __int64 v72; // ST40_8@58
  75.   int v73; // ST38_4@58
  76.   __int64 v74; // rax@58
  77.   __int64 v75; // ST30_8@58
  78.   __int64 v76; // rax@58
  79.   __int64 v77; // ST48_8@58
  80.   __int64 v78; // rbx@58
  81.   int *v79; // rax@58
  82.   __int64 v80; // r8@58
  83.   __int64 v81; // rax@59
  84.   __int64 v82; // rax@61
  85.   __int64 v83; // r9@67
  86.   int v84; // eax@67
  87.   __int64 v85; // ST40_8@69
  88.   int v86; // ST48_4@69
  89.   __int64 v87; // rax@69
  90.   __int64 v88; // r15@69
  91.   __int64 v89; // rbx@69
  92.   __int64 v90; // rax@69
  93.   __int64 v91; // rcx@69
  94.   __int64 v92; // ST40_8@70
  95.   int v93; // ST48_4@70
  96.   __int64 v94; // rax@70
  97.   __int64 v95; // r15@70
  98.   __int64 v96; // rbx@70
  99.   __int64 v97; // rax@70
  100.   __int64 v98; // rcx@70
  101.   __int64 v99; // r9@77
  102.   int v100; // eax@77
  103.   __int64 v101; // ST40_8@79
  104.   int v102; // ST48_4@79
  105.   __int64 v103; // rax@79
  106.   __int64 v104; // r15@79
  107.   __int64 v105; // rax@79
  108.   __int64 v106; // r9@81
  109.   int v107; // eax@81
  110.   __int64 v108; // ST40_8@83
  111.   int v109; // ST48_4@83
  112.   __int64 v110; // rax@83
  113.   __int64 v111; // r15@83
  114.   __int64 v112; // rbx@83
  115.   __int64 v113; // rax@83
  116.   __int64 v114; // rcx@83
  117.   __int64 v115; // ST40_8@84
  118.   int v116; // ST48_4@84
  119.   __int64 v117; // rax@84
  120.   __int64 v118; // r15@84
  121.   __int64 v119; // rbx@84
  122.   __int64 v120; // rax@84
  123.   __int64 v121; // rcx@84
  124.   __int64 v122; // rax@86
  125.   __int64 v123; // rdx@86
  126.   __int64 v124; // rdi@86
  127.   __int64 v125; // rsi@86
  128.   __int64 v126; // ST40_8@87
  129.   int v127; // ST48_4@87
  130.   __int64 v128; // rax@87
  131.   __int64 v129; // r15@87
  132.   __int64 v130; // rbx@87
  133.   __int64 v131; // rax@87
  134.   __int64 v132; // rcx@87
  135.   __int64 v133; // r9@95
  136.   int v134; // eax@95
  137.   __int64 v135; // r15@97
  138.   int v136; // er13@97
  139.   __int64 v137; // rax@97
  140.   __int64 v138; // rbx@97
  141.   __int64 v139; // rax@97
  142.   __int64 v140; // r15@98
  143.   int v141; // er13@98
  144.   __int64 v142; // rax@98
  145.   __int64 v143; // rbx@98
  146.   __int64 v144; // rax@98
  147.   int v145; // eax@100
  148.   __int64 v146; // r12@103
  149.   __int64 v147; // rbx@103
  150.   __int64 v148; // rax@105
  151.   __int64 v149; // r13@105
  152.   unsigned __int64 v150; // rsi@105
  153.   __int64 v151; // rbx@108
  154.   unsigned __int64 v152; // r15@111
  155.   AppleUSB30XHCIPort *v153; // r12@111
  156.   int v154; // eax@112
  157.   __int64 v155; // ST40_8@114
  158.   int v156; // er12@114
  159.   __int64 v157; // rax@114
  160.   __int64 v158; // rbx@114
  161.   __int64 v159; // rax@114
  162.   __int64 v160; // ST40_8@115
  163.   int v161; // er12@115
  164.   __int64 v162; // rax@115
  165.   __int64 v163; // rbx@115
  166.   __int64 v164; // rax@115
  167.   int v165; // eax@119
  168.   __int64 v166; // ST40_8@121
  169.   int v167; // er12@121
  170.   AppleUSBXHCIPCI *v168; // rbx@121
  171.   __int64 v169; // rax@121
  172.   __int64 v170; // r14@121
  173.   __int64 v171; // rax@121
  174.   int v172; // eax@123
  175.   __int64 v173; // r15@125
  176.   int v174; // er12@125
  177.   AppleUSBXHCIPCI *v175; // rbx@125
  178.   __int64 v176; // rax@125
  179.   __int64 v177; // r14@125
  180.   __int64 v178; // rax@125
  181.   __int64 v179; // ST40_8@126
  182.   int v180; // er12@126
  183.   __int64 v181; // rax@126
  184.   __int64 v182; // rbx@126
  185.   __int64 v183; // rax@126
  186.   __int64 v184; // r15@127
  187.   int v185; // er12@127
  188.   __int64 v186; // rax@127
  189.   __int64 v187; // rbx@127
  190.   __int64 v188; // rax@127
  191.   int v189; // eax@131
  192.   AppleUSB30XHCIPort *v190; // rax@132
  193.   AppleUSB30XHCIPort *v191; // rax@137
  194.   __int64 v192; // rax@141
  195.   __int64 v193; // rax@144
  196.   __int64 v194; // rax@144
  197.   void (__fastcall *v195)(_QWORD, _QWORD, _QWORD); // rbx@145
  198.   __int64 v196; // rax@145
  199.   AppleUSBXHCIPCI *v197; // rbx@151
  200.   unsigned __int64 v198; // r14@151
  201.   __int64 v199; // r9@151
  202.   int v200; // eax@151
  203.   __int64 v201; // r15@153
  204.   int v202; // er12@153
  205.   __int64 v203; // rax@153
  206.   __int64 v204; // r13@153
  207.   __int64 v205; // rax@153
  208.   signed __int64 v206; // rsi@153
  209.   __int64 v207; // r15@154
  210.   int v208; // er12@154
  211.   __int64 v209; // rax@154
  212.   __int64 v210; // r13@154
  213.   __int64 v211; // rax@154
  214.   int (__fastcall *v212)(_QWORD, _QWORD); // rbx@159
  215.   __int64 v213; // rax@159
  216.   unsigned __int64 v214; // rax@159
  217.   __int64 v215; // r9@162
  218.   int v216; // eax@162
  219.   __int64 v217; // STC0_8@164
  220.   int v218; // er13@164
  221.   __int64 v219; // rax@164
  222.   __int64 v220; // r12@164
  223.   __int64 v221; // rax@164
  224.   int v222; // eax@166
  225.   __int64 v223; // STC0_8@168
  226.   int v224; // STBC_4@168
  227.   __int64 v225; // rax@168
  228.   __int64 v226; // r13@168
  229.   __int64 v227; // rax@168
  230.   int v228; // ST10_4@168
  231.   __int64 v229; // r8@170
  232.   __int64 v230; // r9@170
  233.   int v231; // eax@170
  234.   __int64 v232; // r15@172
  235.   int v233; // er12@172
  236.   __int64 v234; // rax@172
  237.   __int64 v235; // rbx@172
  238.   __int64 v236; // rax@172
  239.   __int64 v237; // STC0_8@173
  240.   int v238; // er13@173
  241.   __int64 v239; // rax@173
  242.   __int64 v240; // r12@173
  243.   __int64 v241; // rax@173
  244.   __int64 v242; // STC0_8@174
  245.   int v243; // STBC_4@174
  246.   __int64 v244; // rax@174
  247.   __int64 v245; // r13@174
  248.   __int64 v246; // rax@174
  249.   int v247; // ST10_4@174
  250.   __int64 v248; // r15@175
  251.   int v249; // er12@175
  252.   __int64 v250; // rax@175
  253.   __int64 v251; // rbx@175
  254.   __int64 v252; // rax@175
  255.   __int64 v253; // r9@181
  256.   int v254; // eax@181
  257.   __int64 v255; // STC0_8@183
  258.   int v256; // er13@183
  259.   __int64 v257; // rax@183
  260.   __int64 v258; // r15@183
  261.   __int64 v259; // rax@183
  262.   __int64 v260; // r9@185
  263.   int v261; // eax@185
  264.   __int64 v262; // STC0_8@187
  265.   int v263; // er13@187
  266.   __int64 v264; // rax@187
  267.   __int64 v265; // rbx@187
  268.   __int64 v266; // rax@187
  269.   __int64 v267; // STC0_8@188
  270.   int v268; // er13@188
  271.   __int64 v269; // rax@188
  272.   __int64 v270; // r15@188
  273.   __int64 v271; // rax@188
  274.   int v272; // eax@197
  275.   __int64 v273; // r12@199
  276.   int v274; // er13@199
  277.   __int64 v275; // rax@199
  278.   __int64 v276; // rbx@199
  279.   __int64 v277; // rax@199
  280.   int v278; // ST20_4@199
  281.   int v279; // ST18_4@199
  282.   int v280; // ST10_4@199
  283.   int v281; // ST08_4@199
  284.   __int64 v282; // r12@200
  285.   int v283; // er13@200
  286.   __int64 v284; // rax@200
  287.   __int64 v285; // rbx@200
  288.   __int64 v286; // rax@200
  289.   int v287; // ST20_4@200
  290.   int v288; // ST18_4@200
  291.   int v289; // ST10_4@200
  292.   int v290; // ST08_4@200
  293.   int v291; // ST08_4@201
  294.   int v292; // ST00_4@201
  295.   __int64 v294; // STC0_8@204
  296.   int v295; // er13@204
  297.   __int64 v296; // rax@204
  298.   __int64 v297; // rbx@204
  299.   __int64 v298; // rax@204
  300.   __int64 v299; // [sp+0h] [bp-210h]@0
  301.   __int64 v300; // [sp+8h] [bp-208h]@0
  302.   int *v301; // [sp+10h] [bp-200h]@0
  303.   __int64 v302; // [sp+18h] [bp-1F8h]@0
  304.   __int64 v303; // [sp+20h] [bp-1F0h]@0
  305.   __int64 v304; // [sp+48h] [bp-1C8h]@112
  306.   __int64 v305; // [sp+48h] [bp-1C8h]@119
  307.   __int64 v306; // [sp+48h] [bp-1C8h]@123
  308.   const void *v307; // [sp+50h] [bp-1C0h]@32
  309.   OSNumber *v308; // [sp+58h] [bp-1B8h]@32
  310.   __int64 v309; // [sp+60h] [bp-1B0h]@9
  311.   char v310; // [sp+68h] [bp-1A8h]@8
  312.   int v311; // [sp+6Ch] [bp-1A4h]@8
  313.   __int64 v312; // [sp+70h] [bp-1A0h]@9
  314.   __int64 v313; // [sp+78h] [bp-198h]@8
  315.   signed __int64 v314; // [sp+78h] [bp-198h]@9
  316.   unsigned int v315; // [sp+84h] [bp-18Ch]@10
  317.   int v316; // [sp+88h] [bp-188h]@42
  318.   __int64 v317; // [sp+90h] [bp-180h]@1
  319.   signed int v318; // [sp+9Ch] [bp-174h]@9
  320.   __int64 v319; // [sp+A0h] [bp-170h]@1
  321.   __int64 v320; // [sp+A8h] [bp-168h]@41
  322.   unsigned __int64 v321; // [sp+B0h] [bp-160h]@10
  323.   int v322; // [sp+BCh] [bp-154h]@24
  324.   int v323; // [sp+BCh] [bp-154h]@42
  325.   unsigned int v324; // [sp+BCh] [bp-154h]@105
  326.   int v325; // [sp+C0h] [bp-150h]@10
  327.   int v326; // [sp+C0h] [bp-150h]@31
  328.   int v327; // [sp+CCh] [bp-144h]@197
  329.   __int64 v328; // [sp+D0h] [bp-140h]@197
  330.   int v329; // [sp+DCh] [bp-134h]@181
  331.   __int64 v330; // [sp+E0h] [bp-130h]@181
  332.   int v331; // [sp+ECh] [bp-124h]@185
  333.   __int64 v332; // [sp+F0h] [bp-120h]@185
  334.   int v333; // [sp+FCh] [bp-114h]@112
  335.   __int64 v334; // [sp+100h] [bp-110h]@112
  336.   int v335; // [sp+10Ch] [bp-104h]@111
  337.   char v336; // [sp+110h] [bp-100h]@111
  338.   int v337; // [sp+114h] [bp-FCh]@123
  339.   __int64 v338; // [sp+118h] [bp-F8h]@123
  340.   int v339; // [sp+124h] [bp-ECh]@119
  341.   __int64 v340; // [sp+128h] [bp-E8h]@119
  342.   int v341; // [sp+134h] [bp-DCh]@95
  343.   __int64 v342; // [sp+138h] [bp-D8h]@95
  344.   int v343; // [sp+144h] [bp-CCh]@77
  345.   __int64 v344; // [sp+148h] [bp-C8h]@77
  346.   int v345; // [sp+154h] [bp-BCh]@81
  347.   __int64 v346; // [sp+158h] [bp-B8h]@81
  348.   int v347; // [sp+164h] [bp-ACh]@67
  349.   __int64 v348; // [sp+168h] [bp-A8h]@67
  350.   int v349; // [sp+174h] [bp-9Ch]@55
  351.   __int64 v350; // [sp+178h] [bp-98h]@55
  352.   __int64 v351; // [sp+180h] [bp-90h]@51
  353.   int v352; // [sp+18Ch] [bp-84h]@151
  354.   __int64 v353; // [sp+190h] [bp-80h]@151
  355.   int v354; // [sp+19Ch] [bp-74h]@36
  356.   __int64 v355; // [sp+1A0h] [bp-70h]@36
  357.   int v356; // [sp+1ACh] [bp-64h]@166
  358.   __int64 v357; // [sp+1B0h] [bp-60h]@166
  359.   int v358; // [sp+1BCh] [bp-54h]@12
  360.   __int64 v359; // [sp+1C0h] [bp-50h]@12
  361.   int v360; // [sp+1CCh] [bp-44h]@162
  362.   __int64 v361; // [sp+1D0h] [bp-40h]@162
  363.   int v362; // [sp+1DCh] [bp-34h]@170
  364.   __int64 v363; // [sp+1E0h] [bp-30h]@170
  365.  
  366.   v1 = this;
  367.   LODWORD(v2) = (*(int (__fastcall **)(AppleUSBXHCIPCI *, _QWORD))(*(_QWORD *)this + 696LL))(this, "ports");
  368.   v317 = *(_QWORD *)off_E010[0];
  369.   LODWORD(v3) = OSMetaClassBase::safeMetaCast(v2, *(_QWORD *)off_E010[0]);
  370.   v319 = v3;
  371.   if ( v3
  372.     || (v4 = *((_QWORD *)this + 154)) != 0
  373.     && (LODWORD(v5) = (*(int (__fastcall **)(__int64, _QWORD))(*(_QWORD *)v4 + 816LL))(v4, *(_QWORD *)off_E088[0]), v5) )
  374.   {
  375.     LODWORD(v6) = (*(int (__fastcall **)(AppleUSBXHCIPCI *, _QWORD, _QWORD, signed __int64))(*(_QWORD *)v1 + 720LL))(
  376.                     v1,
  377.                     "locationID",
  378.                     *(_QWORD *)off_E090[0],
  379.                     3LL);
  380.     v7 = *(_QWORD *)off_E040[0];
  381.     LODWORD(v8) = OSMetaClassBase::safeMetaCast(v6, *(_QWORD *)off_E040[0]);
  382.     if ( v8 )
  383.     {
  384.       v9 = (*(int (__fastcall **)(__int64, __int64))(*(_QWORD *)v8 + 328LL))(v8, v7);
  385.       v10 = 20;
  386.       do
  387.       {
  388.         if ( !((15 << v10) & v9) )
  389.           break;
  390.         v10 -= 4;
  391.       }
  392.       while ( v10 >= 0 );
  393.       v310 = v10;
  394.       v311 = v9;
  395.       v313 = **((_BYTE **)v1 + 122);
  396.       LODWORD(v11) = (*(int (__fastcall **)(AppleUSBXHCIPCI *, _QWORD))(*(_QWORD *)v1 + 2800LL))(
  397.                        v1,
  398.                        *((_QWORD *)v1 + 123));
  399.       v12 = v11;
  400.       v13 = 0;
  401.       if ( !v11 )
  402.         goto LABEL_191;
  403.       v314 = v313 + 1024;
  404.       v309 = *(_QWORD *)off_E048[0];
  405.       v312 = *(_QWORD *)off_E0A0;
  406.       v318 = 1;
  407.       while ( 1 )
  408.       {
  409.         v321 = v12;
  410.         v14 = *(_DWORD *)(v12 + 8);
  411.         v325 = *(_DWORD *)(v12 + 8);
  412.         v315 = *(_DWORD *)(v12 + 8) >> 28;
  413.         if ( v315 )
  414.         {
  415.           v15 = 0LL;
  416.           do
  417.           {
  418.             v21 = *(_DWORD *)(v12 + 4 * v15 + 16) >> 16;
  419.             v22 = *(_DWORD *)(v12 + 4 * v15 + 16) & 0x30;
  420.             if ( v21 == 1500 && (v23 = 0, v22 == 16)
  421.               || (v23 = 1, v21 == 12 && v22 == 32)
  422.               || v22 == 16 && v21 == 12000
  423.               || v21 == 480 && (v23 = 2, v22 == 32)
  424.               || (v23 = 3, v21 == 5 && v22 == 48)
  425.               || v22 == 32 && v21 == 5000 )
  426.             {
  427.               v30 = (unsigned int)v23;
  428.               v31 = *((_DWORD *)v1 + (unsigned int)v23 + 262);
  429.               if ( v31 && v31 != (*(_DWORD *)(v12 + 4 * v15 + 16) & 0xF) )
  430.               {
  431.                 v13 = -536870201;
  432.                 if ( *((_BYTE *)v1 + 804) & 1 )
  433.                 {
  434.                   clock_get_system_microtime(&v357, &v356);
  435.                   v222 = *((_DWORD *)v1 + 201);
  436.                   if ( v222 & 0x40000000 )
  437.                   {
  438.                     v242 = v357;
  439.                     v243 = v356;
  440.                     LODWORD(v244) = (*(int (__fastcall **)(AppleUSBXHCIPCI *, _QWORD))(*(_QWORD *)v1 + 904LL))(v1, 0LL);
  441.                     v245 = v244;
  442.                     LODWORD(v246) = (*(int (__fastcall **)(AppleUSBXHCIPCI *, _QWORD))(*(_QWORD *)v1 + 952LL))(v1, 0LL);
  443.                     v247 = *((_DWORD *)v1 + 262);
  444.                     kprintf(
  445.                       "%06lu.%06u %s@%s: %s::%s: speed index %d has inconsistent speed IDs (%d and %d)\n",
  446.                       v242,
  447.                       (unsigned int)v243,
  448.                       v245,
  449.                       v246,
  450.                       "AppleUSBXHCIPCI");
  451.                   }
  452.                   else if ( v222 & 0x20000000 )
  453.                   {
  454.                     generateTracepoint(
  455.                       "AppleUSBXHCIPCI",
  456.                       670LL,
  457.                       3LL,
  458.                       "speed index %d has inconsistent speed IDs (%d and %d)\n",
  459.                       (unsigned int)v30,
  460.                       *((_DWORD *)v1 + 262));
  461.                   }
  462.                   else
  463.                   {
  464.                     v223 = v357;
  465.                     v224 = v356;
  466.                     LODWORD(v225) = (*(int (__fastcall **)(AppleUSBXHCIPCI *, _QWORD))(*(_QWORD *)v1 + 904LL))(v1, 0LL);
  467.                     v226 = v225;
  468.                     LODWORD(v227) = (*(int (__fastcall **)(AppleUSBXHCIPCI *, _QWORD))(*(_QWORD *)v1 + 952LL))(v1, 0LL);
  469.                     v228 = *((_DWORD *)v1 + 262);
  470.                     IOLog(
  471.                       "%06lu.%06u %s@%s: %s::%s: speed index %d has inconsistent speed IDs (%d and %d)\n",
  472.                       v223,
  473.                       (unsigned int)v224,
  474.                       v226,
  475.                       v227,
  476.                       "AppleUSBXHCIPCI");
  477.                   }
  478.                 }
  479.                 return (unsigned int)v13;
  480.               }
  481.               *((_DWORD *)v1 + v30 + 262) = *(_DWORD *)(v12 + 4 * v15 + 16) & 0xF;
  482.             }
  483.             else if ( *((_BYTE *)v1 + 804) & 1 )
  484.             {
  485.               v322 = v14;
  486.               v321 = v12;
  487.               clock_get_system_microtime(&v359, &v358);
  488.               v24 = *((_DWORD *)v1 + 201);
  489.               if ( v24 & 0x40000000 )
  490.               {
  491.                 v16 = v359;
  492.                 v17 = v358;
  493.                 LODWORD(v18) = (*(int (__fastcall **)(AppleUSBXHCIPCI *, _QWORD))(*(_QWORD *)v1 + 904LL))(v1, 0LL);
  494.                 v19 = v18;
  495.                 LODWORD(v20) = (*(int (__fastcall **)(AppleUSBXHCIPCI *, _QWORD))(*(_QWORD *)v1 + 952LL))(v1, 0LL);
  496.                 LODWORD(v301) = (unsigned int)v22 >> 4;
  497.                 LODWORD(v300) = v21;
  498.                 v299 = (__int64)"createPorts";
  499.                 kprintf(
  500.                   "%06lu.%06u %s@%s: %s::%s: unsupported speed mantissa %d exponent %d\n",
  501.                   v16,
  502.                   (unsigned int)v17,
  503.                   v19,
  504.                   v20,
  505.                   "AppleUSBXHCIPCI");
  506.               }
  507.               else if ( v24 & 0x20000000 )
  508.               {
  509.                 generateTracepoint(
  510.                   "AppleUSBXHCIPCI",
  511.                   663LL,
  512.                   2LL,
  513.                   "unsupported speed mantissa %d exponent %d\n",
  514.                   v21,
  515.                   (unsigned int)v22 >> 4);
  516.               }
  517.               else
  518.               {
  519.                 v25 = v359;
  520.                 v26 = v358;
  521.                 LODWORD(v27) = (*(int (__fastcall **)(AppleUSBXHCIPCI *, _QWORD))(*(_QWORD *)v1 + 904LL))(v1, 0LL);
  522.                 v28 = v27;
  523.                 LODWORD(v29) = (*(int (__fastcall **)(AppleUSBXHCIPCI *, _QWORD))(*(_QWORD *)v1 + 952LL))(v1, 0LL);
  524.                 LODWORD(v301) = (unsigned int)v22 >> 4;
  525.                 LODWORD(v300) = v21;
  526.                 v299 = (__int64)"createPorts";
  527.                 IOLog(
  528.                   "%06lu.%06u %s@%s: %s::%s: unsupported speed mantissa %d exponent %d\n",
  529.                   v25,
  530.                   (unsigned int)v26,
  531.                   v28,
  532.                   v29,
  533.                   "AppleUSBXHCIPCI");
  534.               }
  535.               v12 = v321;
  536.               v14 = v322;
  537.             }
  538.             ++v15;
  539.           }
  540.           while ( v15 < v315 );
  541.         }
  542.         v32 = (unsigned __int8)v14 - 1;
  543.         v326 = BYTE1(v325) + (unsigned __int8)v14 - 1;
  544.         if ( v32 >= (unsigned int)v326 )
  545.           goto LABEL_159;
  546.         v308 = (OSNumber *)(unsigned int)v32;
  547.         v307 = (const void *)(v12 + 4);
  548.         while ( 2 )
  549.         {
  550.           v33 = 16 * v32 + 1024;
  551.           while ( 1 )
  552.           {
  553.             v34 = v32++;
  554.             if ( (unsigned int)v32 > *((_DWORD *)v1 + 206) )
  555.             {
  556.               v35 = v32;
  557.               v36 = v1;
  558.               v37 = v12;
  559.               if ( *((_BYTE *)v36 + 804) & 0x18 )
  560.               {
  561.                 clock_get_system_microtime(&v355, &v354);
  562.                 v39 = *((_DWORD *)v36 + 201);
  563.                 if ( v39 & 0x40000000 )
  564.                 {
  565.                   v49 = v355;
  566.                   v50 = v354;
  567.                   LODWORD(v51) = (*(int (__fastcall **)(AppleUSBXHCIPCI *, _QWORD))(*(_QWORD *)v36 + 904LL))(v36, 0LL);
  568.                   v52 = v51;
  569.                   LODWORD(v53) = (*(int (__fastcall **)(AppleUSBXHCIPCI *, _QWORD))(*(_QWORD *)v36 + 952LL))(v36, 0LL);
  570.                   LODWORD(v300) = v35;
  571.                   v299 = (__int64)"createPorts";
  572.                   kprintf(
  573.                     "%06lu.%06u %s@%s: %s::%s: powering off unused port %d\n",
  574.                     v49,
  575.                     (unsigned int)v50,
  576.                     v52,
  577.                     v53,
  578.                     "AppleUSBXHCIPCI");
  579.                 }
  580.                 else if ( v39 & 0x20000000 )
  581.                 {
  582.                   generateTracepoint(
  583.                     "AppleUSBXHCIPCI",
  584.                     683LL,
  585.                     1LL,
  586.                     "powering off unused port %d\n",
  587.                     (unsigned int)v32,
  588.                     v38);
  589.                 }
  590.                 else
  591.                 {
  592.                   v40 = v355;
  593.                   v41 = v354;
  594.                   LODWORD(v42) = (*(int (__fastcall **)(AppleUSBXHCIPCI *, _QWORD))(*(_QWORD *)v36 + 904LL))(v36, 0LL);
  595.                   v43 = v42;
  596.                   LODWORD(v44) = (*(int (__fastcall **)(AppleUSBXHCIPCI *, _QWORD))(*(_QWORD *)v36 + 952LL))(v36, 0LL);
  597.                   LODWORD(v300) = v35;
  598.                   v299 = (__int64)"createPorts";
  599.                   IOLog(
  600.                     "%06lu.%06u %s@%s: %s::%s: powering off unused port %d\n",
  601.                     v40,
  602.                     (unsigned int)v41,
  603.                     v43,
  604.                     v44,
  605.                     "AppleUSBXHCIPCI");
  606.                 }
  607.               }
  608.               v54 = (*(int (__fastcall **)(AppleUSBXHCIPCI *, _QWORD, _QWORD))(*(_QWORD *)v36 + 2824LL))(
  609.                       v36,
  610.                       *((_QWORD *)v36 + 124),
  611.                       (unsigned int)v33);
  612.               (*(void (__fastcall **)(AppleUSBXHCIPCI *, _QWORD, _QWORD, _QWORD))(*(_QWORD *)v36 + 2840LL))(
  613.                 v36,
  614.                 *((_QWORD *)v36 + 124),
  615.                 (unsigned int)v33,
  616.                 v54 & 0xFFFFFDFF);
  617.               v12 = v37;
  618.               v1 = v36;
  619.               v32 = v35;
  620.               goto LABEL_101;
  621.             }
  622.             if ( !*(_QWORD *)(*((_QWORD *)v1 + 102) + 8LL * (unsigned int)v34) )
  623.               break;
  624. LABEL_101:
  625.             v33 += 16;
  626.             if ( v32 >= (unsigned int)v326 )
  627.               goto LABEL_159;
  628.           }
  629.           if ( (unsigned int)v318 >= 0x10 )
  630.           {
  631.             if ( *((_DWORD *)v1 + 201) & 0x80000001 )
  632.             {
  633.               v197 = v1;
  634.               v198 = v12;
  635.               clock_get_system_microtime(&v353, &v352);
  636.               v200 = *((_DWORD *)v197 + 201);
  637.               if ( v200 & 0x40000000 )
  638.               {
  639.                 v207 = v353;
  640.                 v208 = v352;
  641.                 LODWORD(v209) = (*(int (__fastcall **)(AppleUSBXHCIPCI *, _QWORD))(*(_QWORD *)v197 + 904LL))(v197, 0LL);
  642.                 v210 = v209;
  643.                 LODWORD(v211) = (*(int (__fastcall **)(AppleUSBXHCIPCI *, _QWORD))(*(_QWORD *)v197 + 952LL))(v197, 0LL);
  644.                 LODWORD(v300) = *((_DWORD *)v197 + 206) - 15;
  645.                 v299 = (__int64)"createPorts";
  646.                 v206 = v207;
  647.                 kprintf(
  648.                   "%06lu.%06u %s@%s: %s::%s: ports limit reached.  Not creating the remaining %d ports\n",
  649.                   v207,
  650.                   (unsigned int)v208,
  651.                   v210,
  652.                   v211,
  653.                   "AppleUSBXHCIPCI");
  654.               }
  655.               else if ( v200 & 0x20000000 )
  656.               {
  657.                 v206 = 700LL;
  658.                 generateTracepoint(
  659.                   "AppleUSBXHCIPCI",
  660.                   700LL,
  661.                   1LL,
  662.                   "ports limit reached.  Not creating the remaining %d ports\n",
  663.                   (unsigned int)(*((_DWORD *)v197 + 206) - 15),
  664.                   v199);
  665.               }
  666.               else
  667.               {
  668.                 v201 = v353;
  669.                 v202 = v352;
  670.                 LODWORD(v203) = (*(int (__fastcall **)(AppleUSBXHCIPCI *, _QWORD))(*(_QWORD *)v197 + 904LL))(v197, 0LL);
  671.                 v204 = v203;
  672.                 LODWORD(v205) = (*(int (__fastcall **)(AppleUSBXHCIPCI *, _QWORD))(*(_QWORD *)v197 + 952LL))(v197, 0LL);
  673.                 LODWORD(v300) = *((_DWORD *)v197 + 206) - 15;
  674.                 v299 = (__int64)"createPorts";
  675.                 v206 = v201;
  676.                 IOLog(
  677.                   "%06lu.%06u %s@%s: %s::%s: ports limit reached.  Not creating the remaining %d ports\n",
  678.                   v201,
  679.                   (unsigned int)v202,
  680.                   v204,
  681.                   v205,
  682.                   "AppleUSBXHCIPCI");
  683.               }
  684.               v12 = v198;
  685.               if ( *((_DWORD *)v197 + 201) < 0 )
  686.               {
  687.                 panic(
  688.                   "@/BuildRoot/Library/Caches/com.apple.xbs/Sources/IOUSBHostFamily/IOUSBHostFamily-149.1.27/AppleUSBXHCI/AppleUSBXHCIPCI.cpp:700",
  689.                   v206,
  690.                   v299,
  691.                   v300,
  692.                   v301,
  693.                   v302,
  694.                   v303);
  695.                 v12 = v198;
  696.               }
  697.               v1 = v197;
  698.             }
  699.             break;
  700.           }
  701.           v320 = (unsigned int)v34;
  702.           LODWORD(v45) = (*(int (__fastcall **)(AppleUSBXHCIPCI *, _QWORD))(*(_QWORD *)v1 + 2888LL))(
  703.                            v1,
  704.                            (unsigned int)v32);
  705.           if ( v319 )
  706.           {
  707.             v316 = v34;
  708.             v323 = v32;
  709.             v46 = v45;
  710.             LODWORD(v47) = (*(int (__fastcall **)(AppleUSBXHCIPCI *, _QWORD))(*(_QWORD *)v1 + 2896LL))(
  711.                              v1,
  712.                              (unsigned int)v32);
  713.           }
  714.           else
  715.           {
  716.             v316 = v34;
  717.             v46 = v45;
  718.             v323 = v32;
  719.             LODWORD(v47) = (*(int (__fastcall **)(AppleUSBXHCIPCI *, __int64, _QWORD))(*(_QWORD *)v1 + 2904LL))(
  720.                              v1,
  721.                              v45,
  722.                              (unsigned int)v32);
  723.           }
  724.           v55 = v47;
  725.           v56 = 0;
  726.           if ( v46 && v47 )
  727.           {
  728.             v57 = v47;
  729.             LODWORD(v58) = (*(int (__fastcall **)(__int64, _QWORD))(*(_QWORD *)v46 + 696LL))(v46, "device-properties");
  730.             LODWORD(v59) = OSMetaClassBase::safeMetaCast(v58, v317);
  731.             if ( v59 )
  732.               (*(void (__fastcall **)(__int64, _QWORD, __int64))(*(_QWORD *)v57 + 464LL))(v57, "device-properties", v59);
  733.             v351 = 0LL;
  734.             v55 = v57;
  735.             if ( !(*(int (__fastcall **)(__int64, _QWORD))(*(_QWORD *)v46 + 2224LL))(v46, "MUXS")
  736.               && !(*(int (__fastcall **)(__int64, _QWORD, __int64 *, _QWORD, _QWORD, _QWORD))(*(_QWORD *)v46 + 2240LL))(
  737.                     v46,
  738.                     "MUXS",
  739.                     &v351,
  740.                     0LL,
  741.                     0LL,
  742.                     0LL) )
  743.             {
  744.               LODWORD(v60) = OSMetaClassBase::safeMetaCast(v351, v309);
  745.               v61 = v60;
  746.               if ( v60 )
  747.               {
  748.                 if ( *((_BYTE *)v1 + 804) & 8 )
  749.                 {
  750.                   clock_get_system_microtime(&v350, &v349);
  751.                   v62 = *((_DWORD *)v1 + 201);
  752.                   if ( v62 & 0x40000000 )
  753.                   {
  754.                     v72 = v350;
  755.                     v73 = v349;
  756.                     LODWORD(v74) = (*(int (__fastcall **)(AppleUSBXHCIPCI *, _QWORD))(*(_QWORD *)v1 + 904LL))(v1, 0LL);
  757.                     v75 = v74;
  758.                     LODWORD(v76) = (*(int (__fastcall **)(AppleUSBXHCIPCI *, _QWORD))(*(_QWORD *)v1 + 952LL))(v1, 0LL);
  759.                     v77 = v55;
  760.                     v78 = v76;
  761.                     LODWORD(v79) = (*(int (__fastcall **)(__int64))(*(_QWORD *)v61 + 328LL))(v61);
  762.                     v301 = v79;
  763.                     LODWORD(v300) = v323;
  764.                     v299 = (__int64)"createPorts";
  765.                     v80 = v78;
  766.                     v55 = v77;
  767.                     kprintf(
  768.                       "%06lu.%06u %s@%s: %s::%s: port %d has mux %s\n",
  769.                       v72,
  770.                       (unsigned int)v73,
  771.                       v75,
  772.                       v80,
  773.                       "AppleUSBXHCIPCI");
  774.                   }
  775.                   else if ( v62 & 0x20000000 )
  776.                   {
  777.                     LODWORD(v81) = (*(int (__fastcall **)(__int64, int *))(*(_QWORD *)v61 + 328LL))(v61, &v349);
  778.                     generateTracepoint("AppleUSBXHCIPCI", 732LL, 2LL, "port %d has mux %s\n", (unsigned int)v323, v81);
  779.                   }
  780.                   else
  781.                   {
  782.                     v63 = v350;
  783.                     v64 = v349;
  784.                     LODWORD(v65) = (*(int (__fastcall **)(AppleUSBXHCIPCI *, _QWORD))(*(_QWORD *)v1 + 904LL))(v1, 0LL);
  785.                     v66 = v65;
  786.                     LODWORD(v67) = (*(int (__fastcall **)(AppleUSBXHCIPCI *, _QWORD))(*(_QWORD *)v1 + 952LL))(v1, 0LL);
  787.                     v68 = v55;
  788.                     v69 = v67;
  789.                     LODWORD(v70) = (*(int (__fastcall **)(__int64))(*(_QWORD *)v61 + 328LL))(v61);
  790.                     v301 = v70;
  791.                     LODWORD(v300) = v323;
  792.                     v299 = (__int64)"createPorts";
  793.                     v71 = v69;
  794.                     v55 = v68;
  795.                     IOLog(
  796.                       "%06lu.%06u %s@%s: %s::%s: port %d has mux %s\n",
  797.                       v63,
  798.                       (unsigned int)v64,
  799.                       v66,
  800.                       v71,
  801.                       "AppleUSBXHCIPCI");
  802.                   }
  803.                 }
  804.                 (*(void (__fastcall **)(__int64, _QWORD, __int64))(*(_QWORD *)v55 + 464LL))(v55, "UsbMux", v61);
  805.               }
  806.             }
  807.             LODWORD(v82) = (*(int (__fastcall **)(__int64, _QWORD))(*(_QWORD *)v55 + 520LL))(
  808.                              v55,
  809.                              "kUSBHostPortPropertyCardReader");
  810.             if ( v82
  811.               && (unsigned __int8)(*(int (__fastcall **)(__int64, _QWORD))(*(_QWORD *)v82 + 64LL))(v82, *(_QWORD *)v312) )
  812.             {
  813.               if ( (*(int (__fastcall **)(_QWORD, _QWORD))(**((_QWORD **)v1 + 154) + 2224LL))(
  814.                      *((_QWORD *)v1 + 154),
  815.                      "SPWR") )
  816.               {
  817.                 v56 = 0;
  818.               }
  819.               else
  820.               {
  821.                 if ( *((_BYTE *)v1 + 804) & 8 )
  822.                 {
  823.                   clock_get_system_microtime(&v348, &v347);
  824.                   v84 = *((_DWORD *)v1 + 201);
  825.                   if ( v84 & 0x40000000 )
  826.                   {
  827.                     v92 = v348;
  828.                     v93 = v347;
  829.                     LODWORD(v94) = (*(int (__fastcall **)(AppleUSBXHCIPCI *, _QWORD))(*(_QWORD *)v1 + 904LL))(v1, 0LL);
  830.                     v95 = v55;
  831.                     v96 = v94;
  832.                     LODWORD(v97) = (*(int (__fastcall **)(AppleUSBXHCIPCI *, _QWORD))(*(_QWORD *)v1 + 952LL))(v1, 0LL);
  833.                     LODWORD(v300) = v323;
  834.                     v299 = (__int64)"createPorts";
  835.                     v98 = v96;
  836.                     v55 = v95;
  837.                     kprintf(
  838.                       "%06lu.%06u %s@%s: %s::%s: port %d has external power gpio\n",
  839.                       v92,
  840.                       (unsigned int)v93,
  841.                       v98,
  842.                       v97,
  843.                       "AppleUSBXHCIPCI");
  844.                   }
  845.                   else if ( v84 & 0x20000000 )
  846.                   {
  847.                     generateTracepoint(
  848.                       "AppleUSBXHCIPCI",
  849.                       744LL,
  850.                       1LL,
  851.                       "port %d has external power gpio\n",
  852.                       (unsigned int)v323,
  853.                       v83);
  854.                   }
  855.                   else
  856.                   {
  857.                     v85 = v348;
  858.                     v86 = v347;
  859.                     LODWORD(v87) = (*(int (__fastcall **)(AppleUSBXHCIPCI *, _QWORD))(*(_QWORD *)v1 + 904LL))(v1, 0LL);
  860.                     v88 = v55;
  861.                     v89 = v87;
  862.                     LODWORD(v90) = (*(int (__fastcall **)(AppleUSBXHCIPCI *, _QWORD))(*(_QWORD *)v1 + 952LL))(v1, 0LL);
  863.                     LODWORD(v300) = v323;
  864.                     v299 = (__int64)"createPorts";
  865.                     v91 = v89;
  866.                     v55 = v88;
  867.                     IOLog(
  868.                       "%06lu.%06u %s@%s: %s::%s: port %d has external power gpio\n",
  869.                       v85,
  870.                       (unsigned int)v86,
  871.                       v91,
  872.                       v90,
  873.                       "AppleUSBXHCIPCI");
  874.                   }
  875.                 }
  876.                 (*(void (__fastcall **)(__int64, _QWORD, _QWORD))(*(_QWORD *)v55 + 464LL))(
  877.                   v55,
  878.                   "kUSBHostPortExternalDevicePowerController",
  879.                   *((_QWORD *)v1 + 154));
  880.                 v56 = 1;
  881.               }
  882.               if ( (*(int (__fastcall **)(_QWORD, _QWORD))(**((_QWORD **)v1 + 154) + 2224LL))(
  883.                      *((_QWORD *)v1 + 154),
  884.                      "SRST") )
  885.               {
  886.                 if ( !(*(int (__fastcall **)(__int64, _QWORD))(*(_QWORD *)v46 + 2224LL))(v46, "U3SD")
  887.                   && !(*(int (__fastcall **)(__int64, _QWORD))(*(_QWORD *)v46 + 2224LL))(v46, "SRST") )
  888.                 {
  889.                   if ( *((_BYTE *)v1 + 804) & 8 )
  890.                   {
  891.                     clock_get_system_microtime(&v344, &v343);
  892.                     v100 = *((_DWORD *)v1 + 201);
  893.                     if ( v100 & 0x40000000 )
  894.                     {
  895.                       v126 = v344;
  896.                       v127 = v343;
  897.                       LODWORD(v128) = (*(int (__fastcall **)(AppleUSBXHCIPCI *, _QWORD))(*(_QWORD *)v1 + 904LL))(
  898.                                         v1,
  899.                                         0LL);
  900.                       v129 = v55;
  901.                       v130 = v128;
  902.                       LODWORD(v131) = (*(int (__fastcall **)(AppleUSBXHCIPCI *, _QWORD))(*(_QWORD *)v1 + 952LL))(
  903.                                         v1,
  904.                                         0LL);
  905.                       LODWORD(v300) = v323;
  906.                       v299 = (__int64)"createPorts";
  907.                       v132 = v130;
  908.                       v55 = v129;
  909.                       kprintf(
  910.                         "%06lu.%06u %s@%s: %s::%s: port %d has external power gpio\n",
  911.                         v126,
  912.                         (unsigned int)v127,
  913.                         v132,
  914.                         v131,
  915.                         "AppleUSBXHCIPCI");
  916.                     }
  917.                     else if ( v100 & 0x20000000 )
  918.                     {
  919.                       generateTracepoint(
  920.                         "AppleUSBXHCIPCI",
  921.                         761LL,
  922.                         1LL,
  923.                         "port %d has external power gpio\n",
  924.                         (unsigned int)v323,
  925.                         v99);
  926.                     }
  927.                     else
  928.                     {
  929.                       v101 = v344;
  930.                       v102 = v343;
  931.                       LODWORD(v103) = (*(int (__fastcall **)(_QWORD, _QWORD))(*(_QWORD *)v1 + 904LL))(v1, 0LL);
  932.                       v104 = v103;
  933.                       LODWORD(v105) = (*(int (__fastcall **)(_QWORD, _QWORD))(*(_QWORD *)v1 + 952LL))(v1, 0LL);
  934.                       LODWORD(v300) = v323;
  935.                       v299 = (__int64)"createPorts";
  936.                       IOLog(
  937.                         "%06lu.%06u %s@%s: %s::%s: port %d has external power gpio\n",
  938.                         v101,
  939.                         (unsigned int)v102,
  940.                         v104,
  941.                         v105,
  942.                         "AppleUSBXHCIPCI");
  943.                     }
  944.                   }
  945.                   v122 = *(_QWORD *)v55;
  946.                   v124 = v55;
  947.                   v125 = (__int64)"kUSBHostPortExternalDeviceResetController";
  948.                   v123 = v46;
  949.                   goto LABEL_90;
  950.                 }
  951.               }
  952.               else
  953.               {
  954.                 if ( *((_BYTE *)v1 + 804) & 8 )
  955.                 {
  956.                   clock_get_system_microtime(&v346, &v345);
  957.                   v107 = *((_DWORD *)v1 + 201);
  958.                   if ( v107 & 0x40000000 )
  959.                   {
  960.                     v115 = v346;
  961.                     v116 = v345;
  962.                     LODWORD(v117) = (*(int (__fastcall **)(_QWORD, _QWORD))(*(_QWORD *)v1 + 904LL))(v1, 0LL);
  963.                     v118 = v55;
  964.                     v119 = v117;
  965.                     LODWORD(v120) = (*(int (__fastcall **)(_QWORD, _QWORD))(*(_QWORD *)v1 + 952LL))(v1, 0LL);
  966.                     LODWORD(v300) = v323;
  967.                     v299 = (__int64)"createPorts";
  968.                     v121 = v119;
  969.                     v55 = v118;
  970.                     kprintf(
  971.                       "%06lu.%06u %s@%s: %s::%s: port %d has external reset gpio\n",
  972.                       v115,
  973.                       (unsigned int)v116,
  974.                       v121,
  975.                       v120,
  976.                       "AppleUSBXHCIPCI");
  977.                   }
  978.                   else if ( v107 & 0x20000000 )
  979.                   {
  980.                     generateTracepoint(
  981.                       "AppleUSBXHCIPCI",
  982.                       753LL,
  983.                       1LL,
  984.                       "port %d has external reset gpio\n",
  985.                       (unsigned int)v323,
  986.                       v106);
  987.                   }
  988.                   else
  989.                   {
  990.                     v108 = v346;
  991.                     v109 = v345;
  992.                     LODWORD(v110) = (*(int (__fastcall **)(_QWORD, _QWORD))(*(_QWORD *)v1 + 904LL))(v1, 0LL);
  993.                     v111 = v55;
  994.                     v112 = v110;
  995.                     LODWORD(v113) = (*(int (__fastcall **)(_QWORD, _QWORD))(*(_QWORD *)v1 + 952LL))(v1, 0LL);
  996.                     LODWORD(v300) = v323;
  997.                     v299 = (__int64)"createPorts";
  998.                     v114 = v112;
  999.                     v55 = v111;
  1000.                     IOLog(
  1001.                       "%06lu.%06u %s@%s: %s::%s: port %d has external reset gpio\n",
  1002.                       v108,
  1003.                       (unsigned int)v109,
  1004.                       v114,
  1005.                       v113,
  1006.                       "AppleUSBXHCIPCI");
  1007.                   }
  1008.                 }
  1009.                 v122 = *(_QWORD *)v55;
  1010.                 v123 = *((_QWORD *)v1 + 154);
  1011.                 v124 = v55;
  1012.                 v125 = (__int64)"kUSBHostPortExternalDeviceResetController";
  1013. LABEL_90:
  1014.                 (*(void (__fastcall **)(__int64, __int64, __int64))(v122 + 464))(v124, v125, v123);
  1015.                 v56 = 1;
  1016.               }
  1017.             }
  1018.             else
  1019.             {
  1020.               v56 = 0;
  1021.             }
  1022.           }
  1023.           if ( v46 )
  1024.             (*(void (__fastcall **)(__int64))(*(_QWORD *)v46 + 40LL))(v46);
  1025.           if ( !v55 )
  1026.           {
  1027.             if ( *((_BYTE *)v1 + 804) & 0x18 )
  1028.             {
  1029.               clock_get_system_microtime(&v342, &v341);
  1030.               v134 = *((_DWORD *)v1 + 201);
  1031.               if ( v134 & 0x40000000 )
  1032.               {
  1033.                 v140 = v342;
  1034.                 v141 = v341;
  1035.                 LODWORD(v142) = (*(int (__fastcall **)(_QWORD, _QWORD))(*(_QWORD *)v1 + 904LL))(v1, 0LL);
  1036.                 v143 = v142;
  1037.                 LODWORD(v144) = (*(int (__fastcall **)(_QWORD, _QWORD))(*(_QWORD *)v1 + 952LL))(v1, 0LL);
  1038.                 LODWORD(v300) = v323;
  1039.                 v299 = (__int64)"createPorts";
  1040.                 kprintf(
  1041.                   "%06lu.%06u %s@%s: %s::%s: powering off unused port %d\n",
  1042.                   v140,
  1043.                   (unsigned int)v141,
  1044.                   v143,
  1045.                   v144,
  1046.                   "AppleUSBXHCIPCI");
  1047.               }
  1048.               else if ( v134 & 0x20000000 )
  1049.               {
  1050.                 generateTracepoint(
  1051.                   "AppleUSBXHCIPCI",
  1052.                   773LL,
  1053.                   1LL,
  1054.                   "powering off unused port %d\n",
  1055.                   (unsigned int)v323,
  1056.                   v133);
  1057.               }
  1058.               else
  1059.               {
  1060.                 v135 = v342;
  1061.                 v136 = v341;
  1062.                 LODWORD(v137) = (*(int (__fastcall **)(_QWORD, _QWORD))(*(_QWORD *)v1 + 904LL))(v1, 0LL);
  1063.                 v138 = v137;
  1064.                 LODWORD(v139) = (*(int (__fastcall **)(_QWORD, _QWORD))(*(_QWORD *)v1 + 952LL))(v1, 0LL);
  1065.                 LODWORD(v300) = v323;
  1066.                 v299 = (__int64)"createPorts";
  1067.                 IOLog(
  1068.                   "%06lu.%06u %s@%s: %s::%s: powering off unused port %d\n",
  1069.                   v135,
  1070.                   (unsigned int)v136,
  1071.                   v138,
  1072.                   v139,
  1073.                   "AppleUSBXHCIPCI");
  1074.               }
  1075.             }
  1076.             v145 = (*(int (__fastcall **)(AppleUSBXHCIPCI *, _QWORD, _QWORD))(*(_QWORD *)v1 + 2824LL))(
  1077.                      v1,
  1078.                      *((_QWORD *)v1 + 124),
  1079.                      (unsigned int)v33);
  1080.             (*(void (__fastcall **)(AppleUSBXHCIPCI *, _QWORD, _QWORD, _QWORD))(*(_QWORD *)v1 + 2840LL))(
  1081.               v1,
  1082.               *((_QWORD *)v1 + 124),
  1083.               (unsigned int)v33,
  1084.               v145 & 0xFFFFFDFF);
  1085.             v12 = v321;
  1086.             v32 = v323;
  1087.             goto LABEL_101;
  1088.           }
  1089.           v146 = v55;
  1090.           v147 = OSNumber::withNumber(v308, 0x20uLL, v48);
  1091.           if ( v147 )
  1092.           {
  1093.             (*(void (__fastcall **)(__int64, _QWORD, __int64))(*(_QWORD *)v146 + 464LL))(
  1094.               v146,
  1095.               "kUSBHostPortPropertyOffset",
  1096.               v147);
  1097.             (*(void (__fastcall **)(__int64))(*(_QWORD *)v147 + 40LL))(v147);
  1098.           }
  1099.           v324 = v316 + 1;
  1100.           LODWORD(v148) = IODeviceMemory::withSubRange(*((_QWORD *)v1 + 120), v314 + 16 * v320, 16LL);
  1101.           v149 = v148;
  1102.           v150 = v321;
  1103.           if ( *(_DWORD *)v307 == 541217621
  1104.             && (*(_DWORD *)v321 & 0xFF000000) == 50331648
  1105.             && !(*(_DWORD *)v321 & 0xFF0000) )
  1106.           {
  1107.             v151 = v146;
  1108.             if ( *((_BYTE *)v1 + 804) & 8 )
  1109.             {
  1110.               v305 = v146;
  1111.               clock_get_system_microtime(&v340, &v339);
  1112.               v165 = *((_DWORD *)v1 + 201);
  1113.               if ( v165 & 0x40000000 )
  1114.               {
  1115.                 v179 = v340;
  1116.                 v180 = v339;
  1117.                 LODWORD(v181) = (*(int (__fastcall **)(_QWORD, _QWORD))(*(_QWORD *)v1 + 904LL))(v1, 0LL);
  1118.                 v182 = v181;
  1119.                 LODWORD(v183) = (*(int (__fastcall **)(_QWORD, _QWORD))(*(_QWORD *)v1 + 952LL))(v1, 0LL);
  1120.                 LODWORD(v301) = v315;
  1121.                 LODWORD(v300) = v316 + 1;
  1122.                 v299 = (__int64)"createPorts";
  1123.                 kprintf(
  1124.                   "%06lu.%06u %s@%s: %s::%s: port %d USB 3.0 with %d speed IDs\n",
  1125.                   v179,
  1126.                   (unsigned int)v180,
  1127.                   v182,
  1128.                   v183,
  1129.                   "AppleUSBXHCIPCI");
  1130.               }
  1131.               else
  1132.               {
  1133.                 if ( !(v165 & 0x20000000) )
  1134.                 {
  1135.                   v166 = v340;
  1136.                   v167 = v339;
  1137.                   v168 = v1;
  1138.                   LODWORD(v169) = (*(int (__fastcall **)(_QWORD, _QWORD))(*(_QWORD *)v1 + 904LL))(v1, 0LL);
  1139.                   v170 = v169;
  1140.                   LODWORD(v171) = (*(int (__fastcall **)(AppleUSBXHCIPCI *, _QWORD))(*(_QWORD *)v168 + 952LL))(
  1141.                                     v168,
  1142.                                     0LL);
  1143.                   LODWORD(v301) = v315;
  1144.                   LODWORD(v300) = v316 + 1;
  1145.                   v299 = (__int64)"createPorts";
  1146.                   IOLog(
  1147.                     "%06lu.%06u %s@%s: %s::%s: port %d USB 3.0 with %d speed IDs\n",
  1148.                     v166,
  1149.                     (unsigned int)v167,
  1150.                     v170,
  1151.                     v171,
  1152.                     "AppleUSBXHCIPCI");
  1153.                   v150 = v321;
  1154.                   v1 = v168;
  1155.                   goto LABEL_130;
  1156.                 }
  1157.                 generateTracepoint("AppleUSBXHCIPCI", 799LL, 2LL, "port %d USB 3.0 with %d speed IDs\n", v324, v315);
  1158.               }
  1159.               v150 = v321;
  1160. LABEL_130:
  1161.               v151 = v305;
  1162.             }
  1163.             v189 = v311 | (v318 << v310);
  1164.             if ( v56 )
  1165.             {
  1166.               v152 = v150;
  1167.               v153 = AppleUSB30XHCICardReaderPort::withDeviceMemory(v149, v150, v324, v189);
  1168.             }
  1169.             else
  1170.             {
  1171.               v152 = v150;
  1172.               LODWORD(v190) = AppleUSB30XHCIPort::withDeviceMemory(v149, v150, v324, (unsigned int)v189);
  1173.               v153 = v190;
  1174.             }
  1175.             goto LABEL_138;
  1176.           }
  1177.           v151 = v146;
  1178.           if ( *(_DWORD *)v307 == 541217621
  1179.             && (*(_DWORD *)v321 & 0xFF000000) == 0x2000000
  1180.             && !(*(_DWORD *)v321 & 0xFF0000) )
  1181.           {
  1182.             if ( *((_BYTE *)v1 + 804) & 8 )
  1183.             {
  1184.               v306 = v146;
  1185.               clock_get_system_microtime(&v338, &v337);
  1186.               v172 = *((_DWORD *)v1 + 201);
  1187.               if ( v172 & 0x40000000 )
  1188.               {
  1189.                 v184 = v338;
  1190.                 v185 = v337;
  1191.                 LODWORD(v186) = (*(int (__fastcall **)(_QWORD, _QWORD))(*(_QWORD *)v1 + 904LL))(v1, 0LL);
  1192.                 v187 = v186;
  1193.                 LODWORD(v188) = (*(int (__fastcall **)(_QWORD, _QWORD))(*(_QWORD *)v1 + 952LL))(v1, 0LL);
  1194.                 LODWORD(v301) = v315;
  1195.                 LODWORD(v300) = v316 + 1;
  1196.                 v299 = (__int64)"createPorts";
  1197.                 kprintf(
  1198.                   "%06lu.%06u %s@%s: %s::%s: port %d USB 2.0 with %d speed IDs\n",
  1199.                   v184,
  1200.                   (unsigned int)v185,
  1201.                   v187,
  1202.                   v188,
  1203.                   "AppleUSBXHCIPCI");
  1204.               }
  1205.               else
  1206.               {
  1207.                 if ( !(v172 & 0x20000000) )
  1208.                 {
  1209.                   v173 = v338;
  1210.                   v174 = v337;
  1211.                   v175 = v1;
  1212.                   LODWORD(v176) = (*(int (__fastcall **)(_QWORD, _QWORD))(*(_QWORD *)v1 + 904LL))(v1, 0LL);
  1213.                   v177 = v176;
  1214.                   LODWORD(v178) = (*(int (__fastcall **)(AppleUSBXHCIPCI *, _QWORD))(*(_QWORD *)v175 + 952LL))(
  1215.                                     v175,
  1216.                                     0LL);
  1217.                   LODWORD(v301) = v315;
  1218.                   LODWORD(v300) = v316 + 1;
  1219.                   v299 = (__int64)"createPorts";
  1220.                   IOLog(
  1221.                     "%06lu.%06u %s@%s: %s::%s: port %d USB 2.0 with %d speed IDs\n",
  1222.                     v173,
  1223.                     (unsigned int)v174,
  1224.                     v177,
  1225.                     v178,
  1226.                     "AppleUSBXHCIPCI");
  1227.                   v150 = v321;
  1228.                   v1 = v175;
  1229.                   goto LABEL_136;
  1230.                 }
  1231.                 generateTracepoint("AppleUSBXHCIPCI", 814LL, 2LL, "port %d USB 2.0 with %d speed IDs\n", v324, v315);
  1232.               }
  1233.               v150 = v321;
  1234. LABEL_136:
  1235.               v151 = v306;
  1236.             }
  1237.             v152 = v150;
  1238.             LODWORD(v191) = AppleUSB20XHCIPort::withDeviceMemory(v149, v150, v324, v311 | (unsigned int)(v318 << v310));
  1239.             v153 = v191;
  1240.             goto LABEL_138;
  1241.           }
  1242.           v152 = v321;
  1243.           v336 = 0;
  1244.           v335 = 0;
  1245.           v150 = (unsigned __int64)&v335;
  1246.           bcopy(v307, &v335, 4uLL);
  1247.           v153 = 0LL;
  1248.           if ( *((_BYTE *)v1 + 804) & 1 )
  1249.           {
  1250.             v304 = v151;
  1251.             clock_get_system_microtime(&v334, &v333);
  1252.             v154 = *((_DWORD *)v1 + 201);
  1253.             if ( v154 & 0x40000000 )
  1254.             {
  1255.               v160 = v334;
  1256.               v161 = v333;
  1257.               LODWORD(v162) = (*(int (__fastcall **)(_QWORD, _QWORD))(*(_QWORD *)v1 + 904LL))(v1, 0LL);
  1258.               v163 = v162;
  1259.               LODWORD(v164) = (*(int (__fastcall **)(_QWORD, _QWORD))(*(_QWORD *)v1 + 952LL))(v1, 0LL);
  1260.               LODWORD(v302) = *(_DWORD *)v321 >> 24;
  1261.               v301 = &v335;
  1262.               LODWORD(v300) = v316 + 1;
  1263.               v299 = (__int64)"createPorts";
  1264.               LODWORD(v303) = (unsigned __int8)(*(_DWORD *)v321 >> 16);
  1265.               v150 = v160;
  1266.               kprintf(
  1267.                 "%06lu.%06u %s@%s: %s::%s: port %d unsupported protocol %s %02x.%02x\n",
  1268.                 v160,
  1269.                 (unsigned int)v161,
  1270.                 v163,
  1271.                 v164,
  1272.                 "AppleUSBXHCIPCI");
  1273.             }
  1274.             else if ( v154 & 0x20000000 )
  1275.             {
  1276.               LODWORD(v299) = *(_DWORD *)v321 >> 24;
  1277.               LODWORD(v300) = (unsigned __int8)(*(_DWORD *)v321 >> 16);
  1278.               v150 = 825LL;
  1279.               generateTracepoint(
  1280.                 "AppleUSBXHCIPCI",
  1281.                 825LL,
  1282.                 4LL,
  1283.                 "port %d unsupported protocol %s %02x.%02x\n",
  1284.                 v324,
  1285.                 &v335);
  1286.             }
  1287.             else
  1288.             {
  1289.               v155 = v334;
  1290.               v156 = v333;
  1291.               LODWORD(v157) = (*(int (__fastcall **)(_QWORD, _QWORD))(*(_QWORD *)v1 + 904LL))(v1, 0LL);
  1292.               v158 = v157;
  1293.               LODWORD(v159) = (*(int (__fastcall **)(_QWORD, _QWORD))(*(_QWORD *)v1 + 952LL))(v1, 0LL);
  1294.               LODWORD(v302) = *(_DWORD *)v321 >> 24;
  1295.               v301 = &v335;
  1296.               LODWORD(v300) = v316 + 1;
  1297.               v299 = (__int64)"createPorts";
  1298.               LODWORD(v303) = (unsigned __int8)(*(_DWORD *)v321 >> 16);
  1299.               v150 = v155;
  1300.               IOLog(
  1301.                 "%06lu.%06u %s@%s: %s::%s: port %d unsupported protocol %s %02x.%02x\n",
  1302.                 v155,
  1303.                 (unsigned int)v156,
  1304.                 v158,
  1305.                 v159,
  1306.                 "AppleUSBXHCIPCI");
  1307.             }
  1308.             v153 = 0LL;
  1309.             v151 = v304;
  1310.           }
  1311. LABEL_138:
  1312.           if ( v149 )
  1313.             (*(void (__fastcall **)(__int64, unsigned __int64))(*(_QWORD *)v149 + 40LL))(v149, v150);
  1314.           if ( !v153 )
  1315.           {
  1316.             v13 = -536870211;
  1317.             if ( *((_BYTE *)v1 + 804) & 1 )
  1318.             {
  1319.               clock_get_system_microtime(&v332, &v331);
  1320.               v261 = *((_DWORD *)v1 + 201);
  1321.               if ( v261 & 0x40000000 )
  1322.               {
  1323.                 v294 = v332;
  1324.                 v295 = v331;
  1325.                 LODWORD(v296) = (*(int (__fastcall **)(_QWORD, _QWORD))(*(_QWORD *)v1 + 904LL))(v1, 0LL);
  1326.                 v297 = v296;
  1327.                 LODWORD(v298) = (*(int (__fastcall **)(_QWORD, _QWORD))(*(_QWORD *)v1 + 952LL))(v1, 0LL);
  1328.                 kprintf(
  1329.                   "%06lu.%06u %s@%s: %s::%s: failed to allocate port %d\n",
  1330.                   v294,
  1331.                   (unsigned int)v295,
  1332.                   v297,
  1333.                   v298,
  1334.                   "AppleUSBXHCIPCI");
  1335.               }
  1336.               else if ( v261 & 0x20000000 )
  1337.               {
  1338.                 generateTracepoint(
  1339.                   "AppleUSBXHCIPCI",
  1340.                   832LL,
  1341.                   1LL,
  1342.                   "failed to allocate port %d\n",
  1343.                   (unsigned int)(v316 + 1),
  1344.                   v260);
  1345.               }
  1346.               else
  1347.               {
  1348.                 v262 = v332;
  1349.                 v263 = v331;
  1350.                 LODWORD(v264) = (*(int (__fastcall **)(_QWORD, _QWORD))(*(_QWORD *)v1 + 904LL))(v1, 0LL);
  1351.                 v265 = v264;
  1352.                 LODWORD(v266) = (*(int (__fastcall **)(_QWORD, _QWORD))(*(_QWORD *)v1 + 952LL))(v1, 0LL);
  1353.                 IOLog(
  1354.                   "%06lu.%06u %s@%s: %s::%s: failed to allocate port %d\n",
  1355.                   v262,
  1356.                   (unsigned int)v263,
  1357.                   v265,
  1358.                   v266,
  1359.                   "AppleUSBXHCIPCI");
  1360.               }
  1361.             }
  1362.             goto LABEL_191;
  1363.           }
  1364.           v192 = IORegistryEntry::getPropertyTable(v153);
  1365.           if ( v192 )
  1366.           {
  1367.             (*(void (__fastcall **)(__int64, __int64))(*(_QWORD *)v192 + 496LL))(v192, v151);
  1368.           }
  1369.           else
  1370.           {
  1371.             (*(void (__fastcall **)(AppleUSB30XHCIPort *, __int64))(*(_QWORD *)v153 + 592LL))(v153, v151);
  1372.             (*(void (__fastcall **)(AppleUSB30XHCIPort *, _QWORD, _QWORD, signed __int64))(*(_QWORD *)v153 + 640LL))(
  1373.               v153,
  1374.               "locationID",
  1375.               v311 | (unsigned int)(v318 << v310),
  1376.               32LL);
  1377.           }
  1378.           (*(void (__fastcall **)(__int64))(*(_QWORD *)v151 + 40LL))(v151);
  1379.           LODWORD(v193) = (*(int (__fastcall **)(AppleUSB30XHCIPort *, _QWORD))(*(_QWORD *)v153 + 696LL))(v153, "name");
  1380.           LODWORD(v194) = OSMetaClassBase::safeMetaCast(v193, v309);
  1381.           if ( v194 )
  1382.           {
  1383.             v195 = *(void (__fastcall **)(_QWORD, _QWORD, _QWORD))(*(_QWORD *)v153 + 944LL);
  1384.             LODWORD(v196) = (*(int (__fastcall **)(__int64, __int64))(*(_QWORD *)v194 + 328LL))(v194, v309);
  1385.             v195(v153, v196, 0LL);
  1386.           }
  1387.           if ( !(unsigned __int8)(*(int (__fastcall **)(AppleUSB30XHCIPort *, AppleUSBXHCIPCI *))(*(_QWORD *)v153
  1388.                                                                                                 + 1648LL))(
  1389.                                    v153,
  1390.                                    v1)
  1391.             || !(unsigned __int8)(*(int (__fastcall **)(AppleUSB30XHCIPort *, AppleUSBXHCIPCI *))(*(_QWORD *)v153
  1392.                                                                                                 + 1472LL))(
  1393.                                    v153,
  1394.                                    v1) )
  1395.           {
  1396.             if ( *((_BYTE *)v1 + 804) & 1 )
  1397.             {
  1398.               clock_get_system_microtime(&v330, &v329);
  1399.               v254 = *((_DWORD *)v1 + 201);
  1400.               if ( v254 & 0x40000000 )
  1401.               {
  1402.                 v267 = v330;
  1403.                 v268 = v329;
  1404.                 LODWORD(v269) = (*(int (__fastcall **)(_QWORD, _QWORD))(*(_QWORD *)v1 + 904LL))(v1, 0LL);
  1405.                 v270 = v269;
  1406.                 LODWORD(v271) = (*(int (__fastcall **)(_QWORD, _QWORD))(*(_QWORD *)v1 + 952LL))(v1, 0LL);
  1407.                 kprintf(
  1408.                   "%06lu.%06u %s@%s: %s::%s: failed to attach or start port %d\n",
  1409.                   v267,
  1410.                   (unsigned int)v268,
  1411.                   v270,
  1412.                   v271,
  1413.                   "AppleUSBXHCIPCI");
  1414.               }
  1415.               else if ( v254 & 0x20000000 )
  1416.               {
  1417.                 generateTracepoint(
  1418.                   "AppleUSBXHCIPCI",
  1419.                   858LL,
  1420.                   1LL,
  1421.                   "failed to attach or start port %d\n",
  1422.                   (unsigned int)(v316 + 1),
  1423.                   v253);
  1424.               }
  1425.               else
  1426.               {
  1427.                 v255 = v330;
  1428.                 v256 = v329;
  1429.                 LODWORD(v257) = (*(int (__fastcall **)(_QWORD, _QWORD))(*(_QWORD *)v1 + 904LL))(v1, 0LL);
  1430.                 v258 = v257;
  1431.                 LODWORD(v259) = (*(int (__fastcall **)(_QWORD, _QWORD))(*(_QWORD *)v1 + 952LL))(v1, 0LL);
  1432.                 IOLog(
  1433.                   "%06lu.%06u %s@%s: %s::%s: failed to attach or start port %d\n",
  1434.                   v255,
  1435.                   (unsigned int)v256,
  1436.                   v258,
  1437.                   v259,
  1438.                   "AppleUSBXHCIPCI");
  1439.               }
  1440.             }
  1441.             (*(void (__fastcall **)(AppleUSB30XHCIPort *, AppleUSBXHCIPCI *))(*(_QWORD *)v153 + 1656LL))(v153, v1);
  1442.             (*(void (__fastcall **)(AppleUSB30XHCIPort *))(*(_QWORD *)v153 + 40LL))(v153);
  1443.             v13 = -536870199;
  1444.             goto LABEL_191;
  1445.           }
  1446.           *(_QWORD *)(*((_QWORD *)v1 + 102) + 8 * v320) = v153;
  1447.           ++v318;
  1448.           v12 = v152;
  1449.           v32 = v316 + 1;
  1450.           if ( v324 < v326 )
  1451.             continue;
  1452.           break;
  1453.         }
  1454. LABEL_159:
  1455.         v212 = *(int (__fastcall **)(_QWORD, _QWORD))(*(_QWORD *)v1 + 2800LL);
  1456.         LODWORD(v213) = (*(int (__fastcall **)(AppleUSBXHCIPCI *, unsigned __int64))(*(_QWORD *)v1 + 2784LL))(v1, v12);
  1457.         LODWORD(v214) = v212(v1, v213);
  1458.         v12 = v214;
  1459.         v13 = 0;
  1460.         if ( !v214 )
  1461.         {
  1462. LABEL_191:
  1463.           if ( !*((_DWORD *)v1 + 262) && !*((_DWORD *)v1 + 263) && !*((_DWORD *)v1 + 264) && !*((_DWORD *)v1 + 265) )
  1464.           {
  1465.             *((_QWORD *)v1 + 131) = 4294967298LL;
  1466.             *((_QWORD *)v1 + 132) = 17179869187LL;
  1467.           }
  1468.           if ( *((_BYTE *)v1 + 804) & 8 )
  1469.           {
  1470.             clock_get_system_microtime(&v328, &v327);
  1471.             v272 = *((_DWORD *)v1 + 201);
  1472.             if ( v272 & 0x40000000 )
  1473.             {
  1474.               v282 = v328;
  1475.               v283 = v327;
  1476.               LODWORD(v284) = (*(int (__fastcall **)(_QWORD, _QWORD))(*(_QWORD *)v1 + 904LL))(v1, 0LL);
  1477.               v285 = v284;
  1478.               LODWORD(v286) = (*(int (__fastcall **)(_QWORD, _QWORD))(*(_QWORD *)v1 + 952LL))(v1, 0LL);
  1479.               v287 = *((_DWORD *)v1 + 265);
  1480.               v288 = *((_DWORD *)v1 + 264);
  1481.               v289 = *((_DWORD *)v1 + 263);
  1482.               v290 = *((_DWORD *)v1 + 262);
  1483.               kprintf(
  1484.                 "%06lu.%06u %s@%s: %s::%s: speed mappings low -> %d full -> %d high -> %d super -> %d\n",
  1485.                 v282,
  1486.                 (unsigned int)v283,
  1487.                 v285,
  1488.                 v286,
  1489.                 "AppleUSBXHCIPCI");
  1490.             }
  1491.             else if ( v272 & 0x20000000 )
  1492.             {
  1493.               v291 = *((_DWORD *)v1 + 265);
  1494.               v292 = *((_DWORD *)v1 + 264);
  1495.               generateTracepoint(
  1496.                 "AppleUSBXHCIPCI",
  1497.                 898LL,
  1498.                 4LL,
  1499.                 "speed mappings low -> %d full -> %d high -> %d super -> %d\n",
  1500.                 *((_DWORD *)v1 + 262),
  1501.                 *((_DWORD *)v1 + 263));
  1502.             }
  1503.             else
  1504.             {
  1505.               v273 = v328;
  1506.               v274 = v327;
  1507.               LODWORD(v275) = (*(int (__fastcall **)(_QWORD, _QWORD))(*(_QWORD *)v1 + 904LL))(v1, 0LL);
  1508.               v276 = v275;
  1509.               LODWORD(v277) = (*(int (__fastcall **)(_QWORD, _QWORD))(*(_QWORD *)v1 + 952LL))(v1, 0LL);
  1510.               v278 = *((_DWORD *)v1 + 265);
  1511.               v279 = *((_DWORD *)v1 + 264);
  1512.               v280 = *((_DWORD *)v1 + 263);
  1513.               v281 = *((_DWORD *)v1 + 262);
  1514.               IOLog(
  1515.                 "%06lu.%06u %s@%s: %s::%s: speed mappings low -> %d full -> %d high -> %d super -> %d\n",
  1516.                 v273,
  1517.                 (unsigned int)v274,
  1518.                 v276,
  1519.                 v277,
  1520.                 "AppleUSBXHCIPCI");
  1521.             }
  1522.           }
  1523.           *((_BYTE *)v1 + 1016) = 1;
  1524.           (*(void (__fastcall **)(_QWORD, signed __int64, _QWORD))(**((_QWORD **)v1 + 19) + 488LL))(
  1525.             *((_QWORD *)v1 + 19),
  1526.             (char *)v1 + 1016,
  1527.             0LL);
  1528.           return (unsigned int)v13;
  1529.         }
  1530.       }
  1531.     }
  1532.     v13 = -536870160;
  1533.     if ( *((_BYTE *)v1 + 804) & 1 )
  1534.     {
  1535.       clock_get_system_microtime(&v361, &v360);
  1536.       v216 = *((_DWORD *)v1 + 201);
  1537.       if ( v216 & 0x40000000 )
  1538.       {
  1539.         v237 = v361;
  1540.         v238 = v360;
  1541.         LODWORD(v239) = (*(int (__fastcall **)(_QWORD, _QWORD))(*(_QWORD *)v1 + 904LL))(v1, 0LL);
  1542.         v240 = v239;
  1543.         LODWORD(v241) = (*(int (__fastcall **)(_QWORD, _QWORD))(*(_QWORD *)v1 + 952LL))(v1, 0LL);
  1544.         kprintf(
  1545.           "%06lu.%06u %s@%s: %s::%s: %s property is unavailable\n",
  1546.           v237,
  1547.           (unsigned int)v238,
  1548.           v240,
  1549.           v241,
  1550.           "AppleUSBXHCIPCI");
  1551.       }
  1552.       else if ( v216 & 0x20000000 )
  1553.       {
  1554.         generateTracepoint("AppleUSBXHCIPCI", 610LL, 1LL, "%s property is unavailable\n", "locationID", v215);
  1555.       }
  1556.       else
  1557.       {
  1558.         v217 = v361;
  1559.         v218 = v360;
  1560.         LODWORD(v219) = (*(int (__fastcall **)(_QWORD, _QWORD))(*(_QWORD *)v1 + 904LL))(v1, 0LL);
  1561.         v220 = v219;
  1562.         LODWORD(v221) = (*(int (__fastcall **)(_QWORD, _QWORD))(*(_QWORD *)v1 + 952LL))(v1, 0LL);
  1563.         IOLog(
  1564.           "%06lu.%06u %s@%s: %s::%s: %s property is unavailable\n",
  1565.           v217,
  1566.           (unsigned int)v218,
  1567.           v220,
  1568.           v221,
  1569.           "AppleUSBXHCIPCI");
  1570.       }
  1571.     }
  1572.   }
  1573.   else
  1574.   {
  1575.     if ( *((_BYTE *)v1 + 804) & 8 )
  1576.     {
  1577.       clock_get_system_microtime(&v363, &v362);
  1578.       v231 = *((_DWORD *)v1 + 201);
  1579.       if ( v231 & 0x40000000 )
  1580.       {
  1581.         v248 = v363;
  1582.         v249 = v362;
  1583.         LODWORD(v250) = (*(int (__fastcall **)(_QWORD, _QWORD))(*(_QWORD *)v1 + 904LL))(v1, 0LL);
  1584.         v251 = v250;
  1585.         LODWORD(v252) = (*(int (__fastcall **)(_QWORD, _QWORD))(*(_QWORD *)v1 + 952LL))(v1, 0LL);
  1586.         kprintf("%06lu.%06u %s@%s: %s::%s: calling super\n", v248, (unsigned int)v249, v251, v252, "AppleUSBXHCIPCI");
  1587.       }
  1588.       else if ( v231 & 0x20000000 )
  1589.       {
  1590.         generateTracepoint("AppleUSBXHCIPCI", 602LL, 0LL, "calling super\n", v229, v230);
  1591.       }
  1592.       else
  1593.       {
  1594.         v232 = v363;
  1595.         v233 = v362;
  1596.         LODWORD(v234) = (*(int (__fastcall **)(_QWORD, _QWORD))(*(_QWORD *)v1 + 904LL))(v1, 0LL);
  1597.         v235 = v234;
  1598.         LODWORD(v236) = (*(int (__fastcall **)(_QWORD, _QWORD))(*(_QWORD *)v1 + 952LL))(v1, 0LL);
  1599.         IOLog("%06lu.%06u %s@%s: %s::%s: calling super\n", v232, (unsigned int)v233, v235, v236, "AppleUSBXHCIPCI");
  1600.       }
  1601.     }
  1602.     v13 = (*(int (__fastcall **)(AppleUSBXHCIPCI *))(off_E060[0] + 2688))(v1);
  1603.   }
  1604.   return (unsigned int)v13;
  1605. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement