Advertisement
Guest User

Untitled

a guest
Jan 26th, 2024
22
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 34.84 KB | None | 0 0
  1. 0x0000000000510ff0 <+0>: push %r15
  2. 0x0000000000510ff2 <+2>: mov $0x1,%eax
  3. 0x0000000000510ff7 <+7>: lea 0x20(%rdi),%r15
  4. 0x0000000000510ffb <+11>: mov %rdx,%r9
  5. 0x0000000000510ffe <+14>: push %r14
  6. 0x0000000000511000 <+16>: mov %rax,%r14
  7. 0x0000000000511003 <+19>: lea 0x38(%rsi),%r11
  8. 0x0000000000511007 <+23>: lea 0x28(%rsi),%r10
  9. 0x000000000051100b <+27>: push %r13
  10. 0x000000000051100d <+29>: mov %rdx,%r13
  11. 0x0000000000511010 <+32>: push %r12
  12. 0x0000000000511012 <+34>: push %rbp
  13. 0x0000000000511013 <+35>: mov %rsi,%rbp
  14. 0x0000000000511016 <+38>: push %rbx
  15. 0x0000000000511017 <+39>: sub $0x38,%rsp
  16. 0x000000000051101b <+43>: movzbl 0x9(%rdi),%ecx
  17. 0x000000000051101f <+47>: shl %cl,%r14
  18. 0x0000000000511022 <+50>: movzbl 0x8(%rdi),%ecx
  19. 0x0000000000511026 <+54>: add %r15,%r14
  20. 0x0000000000511029 <+57>: shl %cl,%rax
  21. 0x000000000051102c <+60>: lea -0x1(%rax),%rbx
  22. 0x0000000000511030 <+64>: mov %rbx,%r8
  23. 0x0000000000511033 <+67>: and %rdx,%r8
  24. 0x0000000000511036 <+70>: cmp $0x7,%ecx
  25. 0x0000000000511039 <+73>: jg 0x5110c0 <unicodekeys_lookup_unicode+208>
  26. 0x000000000051103f <+79>: movsbq (%r15,%r8,1),%r12
  27. 0x0000000000511044 <+84>: test %r12,%r12
  28. 0x0000000000511047 <+87>: js 0x511128 <unicodekeys_lookup_unicode+312>
  29. 0x000000000051104d <+93>: mov %r12,%rax
  30. 0x0000000000511050 <+96>: shl $0x4,%rax
  31. 0x0000000000511054 <+100>: mov (%r14,%rax,1),%rax
  32. 0x0000000000511058 <+104>: cmp %rbp,%rax
  33. 0x000000000051105b <+107>: je 0x511112 <unicodekeys_lookup_unicode+290>
  34. 0x0000000000511061 <+113>: cmp 0x18(%rax),%r13
  35. 0x0000000000511065 <+117>: je 0x511140 <unicodekeys_lookup_unicode+336>
  36. 0x000000000051106b <+123>: mov %r9,%rdx
  37. 0x000000000051106e <+126>: lea (%r8,%r8,4),%r12
  38. 0x0000000000511072 <+130>: shr $0x5,%rdx
  39. 0x0000000000511076 <+134>: lea 0x1(%r12,%rdx,1),%r8
  40. 0x000000000051107b <+139>: and %rbx,%r8
  41. 0x000000000051107e <+142>: cmp $0x7,%ecx
  42. 0x0000000000511081 <+145>: jg 0x5110f0 <unicodekeys_lookup_unicode+256>
  43. 0x0000000000511083 <+147>: movsbq (%r15,%r8,1),%r12
  44. 0x0000000000511088 <+152>: test %r12,%r12
  45. 0x000000000051108b <+155>: js 0x511108 <unicodekeys_lookup_unicode+280>
  46. 0x000000000051108d <+157>: mov %r12,%rdi
  47. 0x0000000000511090 <+160>: shl $0x4,%rdi
  48. 0x0000000000511094 <+164>: mov (%r14,%rdi,1),%rax
  49. 0x0000000000511098 <+168>: cmp %rbp,%rax
  50. 0x000000000051109b <+171>: je 0x511112 <unicodekeys_lookup_unicode+290>
  51. 0x000000000051109d <+173>: cmp 0x18(%rax),%r13
  52. 0x00000000005110a1 <+177>: je 0x5111fd <unicodekeys_lookup_unicode+525>
  53. 0x00000000005110a7 <+183>: shr $0xa,%r9
  54. 0x00000000005110ab <+187>: lea (%r8,%r8,4),%rdx
  55. 0x00000000005110af <+191>: lea 0x1(%r9,%rdx,1),%r8
  56. 0x00000000005110b4 <+196>: and %rbx,%r8
  57. 0x00000000005110b7 <+199>: cmp $0x7,%ecx
  58. 0x00000000005110ba <+202>: jle 0x51103f <unicodekeys_lookup_unicode+79>
  59. 0x00000000005110bc <+204>: nopl 0x0(%rax)
  60. 0x00000000005110c0 <+208>: cmp $0xf,%ecx
  61. 0x00000000005110c3 <+211>: jg 0x5112b8 <unicodekeys_lookup_unicode+712>
  62. 0x00000000005110c9 <+217>: movswq (%r15,%r8,2),%r12
  63. 0x00000000005110ce <+222>: test %r12,%r12
  64. 0x00000000005110d1 <+225>: jns 0x51104d <unicodekeys_lookup_unicode+93>
  65. 0x00000000005110d7 <+231>: cmp $0xffffffffffffffff,%r12
  66. 0x00000000005110db <+235>: je 0x511132 <unicodekeys_lookup_unicode+322>
  67. 0x00000000005110dd <+237>: mov %r9,%rdx
  68. 0x00000000005110e0 <+240>: lea (%r8,%r8,4),%r8
  69. 0x00000000005110e4 <+244>: shr $0x5,%rdx
  70. 0x00000000005110e8 <+248>: lea 0x1(%r8,%rdx,1),%r8
  71. 0x00000000005110ed <+253>: and %rbx,%r8
  72. 0x00000000005110f0 <+256>: cmp $0xf,%ecx
  73. 0x00000000005110f3 <+259>: jg 0x5112eb <unicodekeys_lookup_unicode+763>
  74. 0x00000000005110f9 <+265>: movswq (%r15,%r8,2),%r12
  75. 0x00000000005110fe <+270>: test %r12,%r12
  76. 0x0000000000511101 <+273>: jns 0x51108d <unicodekeys_lookup_unicode+157>
  77. 0x0000000000511103 <+275>: nopl 0x0(%rax,%rax,1)
  78. 0x0000000000511108 <+280>: cmp $0xffffffffffffffff,%r12
  79. 0x000000000051110c <+284>: jne 0x51129e <unicodekeys_lookup_unicode+686>
  80. 0x0000000000511112 <+290>: add $0x38,%rsp
  81. 0x0000000000511116 <+294>: mov %r12,%rax
  82. 0x0000000000511119 <+297>: pop %rbx
  83. 0x000000000051111a <+298>: pop %rbp
  84. 0x000000000051111b <+299>: pop %r12
  85. 0x000000000051111d <+301>: pop %r13
  86. 0x000000000051111f <+303>: pop %r14
  87. 0x0000000000511121 <+305>: pop %r15
  88. 0x0000000000511123 <+307>: retq
  89. 0x0000000000511124 <+308>: nopl 0x0(%rax)
  90. 0x0000000000511128 <+312>: cmp $0xffffffffffffffff,%r12
  91. 0x000000000051112c <+316>: jne 0x5112d3 <unicodekeys_lookup_unicode+739>
  92. 0x0000000000511132 <+322>: mov $0xffffffffffffffff,%r12
  93. 0x0000000000511139 <+329>: jmp 0x511112 <unicodekeys_lookup_unicode+290>
  94. 0x000000000051113b <+331>: nopl 0x0(%rax,%rax,1)
  95. 0x0000000000511140 <+336>: mov 0x10(%rax),%rsi
  96. 0x0000000000511144 <+340>: cmp 0x10(%rbp),%rsi
  97. 0x0000000000511148 <+344>: jne 0x5111dc <unicodekeys_lookup_unicode+492>
  98. 0x000000000051114e <+350>: test %rsi,%rsi
  99. 0x0000000000511151 <+353>: je 0x511112 <unicodekeys_lookup_unicode+290>
  100. 0x0000000000511153 <+355>: movzbl 0x20(%rax),%edi
  101. 0x0000000000511157 <+359>: movzbl 0x20(%rbp),%edx
  102. 0x000000000051115b <+363>: xor %edi,%edx
  103. 0x000000000051115d <+365>: and $0x1c,%edx
  104. 0x0000000000511160 <+368>: jne 0x5111dc <unicodekeys_lookup_unicode+492>
  105. 0x0000000000511162 <+370>: mov %edi,%edx
  106. 0x0000000000511164 <+372>: shr $0x2,%dl
  107. 0x0000000000511167 <+375>: and $0x7,%edx
  108. 0x000000000051116a <+378>: imul %rsi,%rdx
  109. 0x000000000051116e <+382>: movzbl 0x20(%rbp),%esi
  110. 0x0000000000511172 <+386>: test $0x20,%sil
  111. 0x0000000000511176 <+390>: je 0x4224a8 <unicodekeys_lookup_unicode-977736>
  112. 0x000000000051117c <+396>: and $0x40,%esi
  113. 0x000000000051117f <+399>: je 0x511306 <unicodekeys_lookup_unicode+790>
  114. 0x0000000000511185 <+405>: mov %r10,%rsi
  115. 0x0000000000511188 <+408>: test $0x20,%dil
  116. 0x000000000051118c <+412>: je 0x511329 <unicodekeys_lookup_unicode+825>
  117. 0x0000000000511192 <+418>: and $0x40,%edi
  118. 0x0000000000511195 <+421>: je 0x5112fd <unicodekeys_lookup_unicode+781>
  119. 0x000000000051119b <+427>: lea 0x28(%rax),%rdi
  120. 0x000000000051119f <+431>: mov %r10,0x28(%rsp)
  121. 0x00000000005111a4 <+436>: mov %r11,0x20(%rsp)
  122. 0x00000000005111a9 <+441>: mov %r8,0x18(%rsp)
  123. 0x00000000005111ae <+446>: mov %r9,0x10(%rsp)
  124. 0x00000000005111b3 <+451>: mov %ecx,0xc(%rsp)
  125. 0x00000000005111b7 <+455>: callq 0x41c140 <memcmp@plt>
  126. 0x00000000005111bc <+460>: mov 0xc(%rsp),%ecx
  127. 0x00000000005111c0 <+464>: mov 0x10(%rsp),%r9
  128. 0x00000000005111c5 <+469>: test %eax,%eax
  129. 0x00000000005111c7 <+471>: mov 0x18(%rsp),%r8
  130. 0x00000000005111cc <+476>: mov 0x20(%rsp),%r11
  131. 0x00000000005111d1 <+481>: mov 0x28(%rsp),%r10
  132. 0x00000000005111d6 <+486>: je 0x511112 <unicodekeys_lookup_unicode+290>
  133. 0x00000000005111dc <+492>: mov %r9,%rax
  134. 0x00000000005111df <+495>: lea (%r8,%r8,4),%r8
  135. 0x00000000005111e3 <+499>: shr $0x5,%rax
  136. 0x00000000005111e7 <+503>: lea 0x1(%r8,%rax,1),%r8
  137. 0x00000000005111ec <+508>: and %rbx,%r8
  138. 0x00000000005111ef <+511>: cmp $0x7,%ecx
  139. 0x00000000005111f2 <+514>: jle 0x511083 <unicodekeys_lookup_unicode+147>
  140. 0x00000000005111f8 <+520>: jmpq 0x5110f0 <unicodekeys_lookup_unicode+256>
  141. 0x00000000005111fd <+525>: mov 0x10(%rax),%rsi
  142. 0x0000000000511201 <+529>: cmp 0x10(%rbp),%rsi
  143. 0x0000000000511205 <+533>: jne 0x51129e <unicodekeys_lookup_unicode+686>
  144. 0x000000000051120b <+539>: test %rsi,%rsi
  145. 0x000000000051120e <+542>: je 0x511112 <unicodekeys_lookup_unicode+290>
  146. 0x0000000000511214 <+548>: movzbl 0x20(%rax),%edi
  147. 0x0000000000511218 <+552>: mov %edi,%edx
  148. 0x000000000051121a <+554>: xor 0x20(%rbp),%edx
  149. 0x000000000051121d <+557>: and $0x1c,%dl
  150. 0x0000000000511220 <+560>: jne 0x51129e <unicodekeys_lookup_unicode+686>
  151. 0x0000000000511222 <+562>: mov %edi,%edx
  152. 0x0000000000511224 <+564>: shr $0x2,%dl
  153. 0x0000000000511227 <+567>: and $0x7,%edx
  154. 0x000000000051122a <+570>: imul %rsi,%rdx
  155. 0x000000000051122e <+574>: movzbl 0x20(%rbp),%esi
  156. 0x0000000000511232 <+578>: test $0x20,%sil
  157. 0x0000000000511236 <+582>: je 0x422484 <unicodekeys_lookup_unicode.cold>
  158. 0x000000000051123c <+588>: and $0x40,%sil
  159. 0x0000000000511240 <+592>: je 0x511321 <unicodekeys_lookup_unicode+817>
  160. 0x0000000000511246 <+598>: mov %r10,%rsi
  161. 0x0000000000511249 <+601>: test $0x20,%dil
  162. 0x000000000051124d <+605>: je 0x42248d <unicodekeys_lookup_unicode-977763>
  163. 0x0000000000511253 <+611>: and $0x40,%dil
  164. 0x0000000000511257 <+615>: je 0x511318 <unicodekeys_lookup_unicode+808>
  165. 0x000000000051125d <+621>: lea 0x28(%rax),%rdi
  166. 0x0000000000511261 <+625>: mov %r10,0x28(%rsp)
  167. 0x0000000000511266 <+630>: mov %r11,0x20(%rsp)
  168. 0x000000000051126b <+635>: mov %r8,0x18(%rsp)
  169. 0x0000000000511270 <+640>: mov %r9,0x10(%rsp)
  170. 0x0000000000511275 <+645>: mov %ecx,0xc(%rsp)
  171. 0x0000000000511279 <+649>: callq 0x41c140 <memcmp@plt>
  172. 0x000000000051127e <+654>: mov 0xc(%rsp),%ecx
  173. 0x0000000000511282 <+658>: mov 0x10(%rsp),%r9
  174. 0x0000000000511287 <+663>: test %eax,%eax
  175. 0x0000000000511289 <+665>: mov 0x18(%rsp),%r8
  176. 0x000000000051128e <+670>: mov 0x20(%rsp),%r11
  177. 0x0000000000511293 <+675>: mov 0x28(%rsp),%r10
  178. 0x0000000000511298 <+680>: je 0x511112 <unicodekeys_lookup_unicode+290>
  179. 0x000000000051129e <+686>: shr $0xa,%r9
  180. 0x00000000005112a2 <+690>: lea (%r8,%r8,4),%r8
  181. 0x00000000005112a6 <+694>: lea 0x1(%r9,%r8,1),%r8
  182. 0x00000000005112ab <+699>: and %rbx,%r8
  183. 0x00000000005112ae <+702>: jmpq 0x511036 <unicodekeys_lookup_unicode+70>
  184. 0x00000000005112b3 <+707>: nopl 0x0(%rax,%rax,1)
  185. 0x00000000005112b8 <+712>: cmp $0x1f,%ecx
  186. 0x00000000005112bb <+715>: jg 0x42249f <unicodekeys_lookup_unicode-977745>
  187. 0x00000000005112c1 <+721>: movslq (%r15,%r8,4),%r12
  188. 0x00000000005112c5 <+725>: test %r12,%r12
  189. 0x00000000005112c8 <+728>: jns 0x51104d <unicodekeys_lookup_unicode+93>
  190. 0x00000000005112ce <+734>: jmpq 0x5110d7 <unicodekeys_lookup_unicode+231>
  191. 0x00000000005112d3 <+739>: mov %r9,%rsi
  192. 0x00000000005112d6 <+742>: lea (%r8,%r8,4),%rdi
  193. 0x00000000005112da <+746>: shr $0x5,%rsi
  194. 0x00000000005112de <+750>: lea 0x1(%rsi,%rdi,1),%r8
  195. 0x00000000005112e3 <+755>: and %rbx,%r8
  196. 0x00000000005112e6 <+758>: jmpq 0x511083 <unicodekeys_lookup_unicode+147>
  197. 0x00000000005112eb <+763>: cmp $0x1f,%ecx
  198. 0x00000000005112ee <+766>: jg 0x4224b1 <unicodekeys_lookup_unicode-977727>
  199. 0x00000000005112f4 <+772>: movslq (%r15,%r8,4),%r12
  200. 0x00000000005112f8 <+776>: jmpq 0x5110fe <unicodekeys_lookup_unicode+270>
  201. 0x00000000005112fd <+781>: lea 0x38(%rax),%rdi
  202. 0x0000000000511301 <+785>: jmpq 0x51119f <unicodekeys_lookup_unicode+431>
  203. 0x0000000000511306 <+790>: mov %r11,%rsi
  204. 0x0000000000511309 <+793>: test $0x20,%dil
  205. 0x000000000051130d <+797>: jne 0x511192 <unicodekeys_lookup_unicode+418>
  206. 0x0000000000511313 <+803>: jmpq 0x422496 <unicodekeys_lookup_unicode-977754>
  207. 0x0000000000511318 <+808>: lea 0x38(%rax),%rdi
  208. 0x000000000051131c <+812>: jmpq 0x511261 <unicodekeys_lookup_unicode+625>
  209. 0x0000000000511321 <+817>: mov %r11,%rsi
  210. 0x0000000000511324 <+820>: jmpq 0x511249 <unicodekeys_lookup_unicode+601>
  211. 0x0000000000511329 <+825>: jmpq 0x422496 <unicodekeys_lookup_unicode-977754>
  212. Address range 0x422484 to 0x4224ba:
  213. 0x0000000000422484 <-977772>: mov 0x38(%rbp),%rsi
  214. 0x0000000000422488 <-977768>: jmpq 0x511249 <unicodekeys_lookup_unicode+601>
  215. 0x000000000042248d <-977763>: mov 0x38(%rax),%rdi
  216. 0x0000000000422491 <-977759>: jmpq 0x511261 <unicodekeys_lookup_unicode+625>
  217. 0x0000000000422496 <-977754>: mov 0x38(%rax),%rdi
  218. 0x000000000042249a <-977750>: jmpq 0x51119f <unicodekeys_lookup_unicode+431>
  219. 0x000000000042249f <-977745>: mov (%r15,%r8,8),%r12
  220. 0x00000000004224a3 <-977741>: jmpq 0x5112c5 <unicodekeys_lookup_unicode+725>
  221. 0x00000000004224a8 <-977736>: mov 0x38(%rbp),%rsi
  222. 0x00000000004224ac <-977732>: jmpq 0x511309 <unicodekeys_lookup_unicode+793>
  223. 0x00000000004224b1 <-977727>: mov (%r15,%r8,8),%r12
  224. 0x00000000004224b5 <-977723>: jmpq 0x5110fe <unicodekeys_lookup_unicode+270>
  225.  
  226.  
  227. 0x0000000000511289 <+665>: mov 0x18(%rsp),%r8
  228. Dump of assembler code for function unicodekeys_lookup_unicode:
  229. Address range 0x510ff0 to 0x51132e:
  230. ./Include/internal/pycore_dict.h:
  231. 193 static inline void* _DK_ENTRIES(PyDictKeysObject *dk) {
  232. 194 int8_t *indices = (int8_t*)(dk->dk_indices);
  233. 195 size_t index = (size_t)1 << dk->dk_log2_index_bytes;
  234. 196 return (&indices[index]);
  235. 197 }
  236. 198 static inline PyDictKeyEntry* DK_ENTRIES(PyDictKeysObject *dk) {
  237. 199 assert(dk->dk_kind == DICT_KEYS_GENERAL);
  238. 200 return (PyDictKeyEntry*)_DK_ENTRIES(dk);
  239. 201 }
  240. 202 static inline PyDictUnicodeEntry* DK_UNICODE_ENTRIES(PyDictKeysObject *dk) {
  241. 203 assert(dk->dk_kind != DICT_KEYS_GENERAL);
  242. 204 return (PyDictUnicodeEntry*)_DK_ENTRIES(dk);
  243. 0x0000000000510ff0 <+0>: push %r15
  244. 0x0000000000510ff2 <+2>: mov $0x1,%eax
  245. 0x0000000000510ff7 <+7>: lea 0x20(%rdi),%r15
  246.  
  247. 196 return (&indices[index]);
  248. 0x0000000000510ffb <+11>: mov %rdx,%r9
  249. 0x0000000000510ffe <+14>: push %r14
  250. 0x0000000000511000 <+16>: mov %rax,%r14
  251. 0x0000000000511003 <+19>: lea 0x38(%rsi),%r11
  252. 0x0000000000511007 <+23>: lea 0x28(%rsi),%r10
  253. 0x000000000051100b <+27>: push %r13
  254. 0x000000000051100d <+29>: mov %rdx,%r13
  255. 0x0000000000511010 <+32>: push %r12
  256. 0x0000000000511012 <+34>: push %rbp
  257. 0x0000000000511013 <+35>: mov %rsi,%rbp
  258. 0x0000000000511016 <+38>: push %rbx
  259. 0x0000000000511017 <+39>: sub $0x38,%rsp
  260. 0x000000000051101b <+43>: movzbl 0x9(%rdi),%ecx
  261. 0x000000000051101f <+47>: shl %cl,%r14
  262. 0x0000000000511022 <+50>: movzbl 0x8(%rdi),%ecx
  263. 0x0000000000511026 <+54>: add %r15,%r14
  264.  
  265. Objects/dictobject.c:
  266. 929 size_t mask = DK_MASK(dk);
  267. 0x0000000000511029 <+57>: shl %cl,%rax
  268. 0x000000000051102c <+60>: lea -0x1(%rax),%rbx
  269.  
  270. 930 size_t perturb = hash;
  271. 931 size_t i = (size_t)hash & mask;
  272. 0x0000000000511030 <+64>: mov %rbx,%r8
  273. 0x0000000000511033 <+67>: and %rdx,%r8
  274.  
  275. 934 ix = dictkeys_get_index(dk, i);
  276. 0x0000000000511036 <+70>: cmp $0x7,%ecx
  277. 0x0000000000511039 <+73>: jg 0x5110c0 <unicodekeys_lookup_unicode+208>
  278. 348 ix = indices[i];
  279. 0x000000000051103f <+79>: movsbq (%r15,%r8,1),%r12
  280.  
  281. 935 if (ix >= 0) {
  282. 0x0000000000511044 <+84>: test %r12,%r12
  283. 0x0000000000511047 <+87>: js 0x511128 <unicodekeys_lookup_unicode+312>
  284.  
  285. 936 PyDictUnicodeEntry *ep = &ep0[ix];
  286. 937 assert(ep->me_key != NULL);
  287. 938 assert(PyUnicode_CheckExact(ep->me_key));
  288. 939 if (ep->me_key == key ||
  289. 0x000000000051104d <+93>: mov %r12,%rax
  290. 0x0000000000511050 <+96>: shl $0x4,%rax
  291. 0x0000000000511054 <+100>: mov (%r14,%rax,1),%rax
  292. 0x0000000000511058 <+104>: cmp %rbp,%rax
  293. 0x000000000051105b <+107>: je 0x511112 <unicodekeys_lookup_unicode+290>
  294.  
  295. 286 return _PyASCIIObject_CAST(o)->hash;
  296. 0x0000000000511061 <+113>: cmp 0x18(%rax),%r13
  297. 0x0000000000511065 <+117>: je 0x511140 <unicodekeys_lookup_unicode+336>
  298.  
  299. 945 return DKIX_EMPTY;
  300. 946 }
  301. 947 perturb >>= PERTURB_SHIFT;
  302. 948 i = mask & (i*5 + perturb + 1);
  303. 0x000000000051106b <+123>: mov %r9,%rdx
  304. 0x000000000051106e <+126>: lea (%r8,%r8,4),%r12
  305. 0x0000000000511072 <+130>: shr $0x5,%rdx
  306. 0x0000000000511076 <+134>: lea 0x1(%r12,%rdx,1),%r8
  307. 0x000000000051107b <+139>: and %rbx,%r8
  308.  
  309. 949 // Manual loop unrolling
  310. 950 ix = dictkeys_get_index(dk, i);
  311. 0x000000000051107e <+142>: cmp $0x7,%ecx
  312. 0x0000000000511081 <+145>: jg 0x5110f0 <unicodekeys_lookup_unicode+256>
  313.  
  314. 348 ix = indices[i];
  315. 0x0000000000511083 <+147>: movsbq (%r15,%r8,1),%r12
  316.  
  317. 951 if (ix >= 0) {
  318. 0x0000000000511088 <+152>: test %r12,%r12
  319. 0x000000000051108b <+155>: js 0x511108 <unicodekeys_lookup_unicode+280>
  320.  
  321. 952 PyDictUnicodeEntry *ep = &ep0[ix];
  322. 953 assert(ep->me_key != NULL);
  323. 954 assert(PyUnicode_CheckExact(ep->me_key));
  324. 955 if (ep->me_key == key ||
  325. 0x000000000051108d <+157>: mov %r12,%rdi
  326. 0x0000000000511090 <+160>: shl $0x4,%rdi
  327. 0x0000000000511094 <+164>: mov (%r14,%rdi,1),%rax
  328. 0x0000000000511098 <+168>: cmp %rbp,%rax
  329. 0x000000000051109b <+171>: je 0x511112 <unicodekeys_lookup_unicode+290>
  330.  
  331. 286 return _PyASCIIObject_CAST(o)->hash;
  332. 0x000000000051109d <+173>: cmp 0x18(%rax),%r13
  333. 0x00000000005110a1 <+177>: je 0x5111fd <unicodekeys_lookup_unicode+525>
  334.  
  335. 961 return DKIX_EMPTY;
  336. 962 }
  337. 963 perturb >>= PERTURB_SHIFT;
  338. 0x00000000005110a7 <+183>: shr $0xa,%r9
  339.  
  340. 964 i = mask & (i*5 + perturb + 1);
  341. 0x00000000005110ab <+187>: lea (%r8,%r8,4),%rdx
  342. 0x00000000005110af <+191>: lea 0x1(%r9,%rdx,1),%r8
  343. 0x00000000005110b4 <+196>: and %rbx,%r8
  344.  
  345. 934 ix = dictkeys_get_index(dk, i);
  346. 0x00000000005110b7 <+199>: cmp $0x7,%ecx
  347. 0x00000000005110ba <+202>: jle 0x51103f <unicodekeys_lookup_unicode+79>
  348. 0x00000000005110bc <+204>: nopl 0x0(%rax)
  349.  
  350. 350 else if (log2size < 16) {
  351. 0x00000000005110c0 <+208>: cmp $0xf,%ecx
  352. 0x00000000005110c3 <+211>: jg 0x5112b8 <unicodekeys_lookup_unicode+712>
  353.  
  354. 351 const int16_t *indices = (const int16_t*)(keys->dk_indices);
  355. 352 ix = indices[i];
  356. 0x00000000005110c9 <+217>: movswq (%r15,%r8,2),%r12
  357.  
  358. 935 if (ix >= 0) {
  359. 0x00000000005110ce <+222>: test %r12,%r12
  360. 0x00000000005110d1 <+225>: jns 0x51104d <unicodekeys_lookup_unicode+93>
  361.  
  362. 940 (unicode_get_hash(ep->me_key) == hash && unicode_eq(ep->me_key, key))) {
  363. 941 return ix;
  364. 942 }
  365. 943 }
  366. 944 else if (ix == DKIX_EMPTY) {
  367. 0x00000000005110d7 <+231>: cmp $0xffffffffffffffff,%r12
  368. 0x00000000005110db <+235>: je 0x511132 <unicodekeys_lookup_unicode+322>
  369.  
  370. 945 return DKIX_EMPTY;
  371. 946 }
  372. 947 perturb >>= PERTURB_SHIFT;
  373. 948 i = mask & (i*5 + perturb + 1);
  374. 0x00000000005110dd <+237>: mov %r9,%rdx
  375. 0x00000000005110e0 <+240>: lea (%r8,%r8,4),%r8
  376. 0x00000000005110e4 <+244>: shr $0x5,%rdx
  377. 0x00000000005110e8 <+248>: lea 0x1(%r8,%rdx,1),%r8
  378. 0x00000000005110ed <+253>: and %rbx,%r8
  379. 949 // Manual loop unrolling
  380. 950 ix = dictkeys_get_index(dk, i);
  381. 0x00000000005110f0 <+256>: cmp $0xf,%ecx
  382. 0x00000000005110f3 <+259>: jg 0x5112eb <unicodekeys_lookup_unicode+763>
  383.  
  384. 352 ix = indices[i];
  385. 0x00000000005110f9 <+265>: movswq (%r15,%r8,2),%r12
  386.  
  387. 951 if (ix >= 0) {
  388. 0x00000000005110fe <+270>: test %r12,%r12
  389. 0x0000000000511101 <+273>: jns 0x51108d <unicodekeys_lookup_unicode+157>
  390. 0x0000000000511103 <+275>: nopl 0x0(%rax,%rax,1)
  391.  
  392. 956 (unicode_get_hash(ep->me_key) == hash && unicode_eq(ep->me_key, key))) {
  393. 957 return ix;
  394. 958 }
  395. 959 }
  396. 960 else if (ix == DKIX_EMPTY) {
  397. 0x0000000000511108 <+280>: cmp $0xffffffffffffffff,%r12
  398. 0x000000000051110c <+284>: jne 0x51129e <unicodekeys_lookup_unicode+686>
  399. 0x0000000000511112 <+290>: add $0x38,%rsp
  400. 0x0000000000511116 <+294>: mov %r12,%rax
  401. 0x0000000000511119 <+297>: pop %rbx
  402. 0x000000000051111a <+298>: pop %rbp
  403. 0x000000000051111b <+299>: pop %r12
  404. 0x000000000051111d <+301>: pop %r13
  405. 0x000000000051111f <+303>: pop %r14
  406. 0x0000000000511121 <+305>: pop %r15
  407. 0x0000000000511123 <+307>: retq
  408. 0x0000000000511124 <+308>: nopl 0x0(%rax)
  409.  
  410. 944 else if (ix == DKIX_EMPTY) {
  411. 0x0000000000511128 <+312>: cmp $0xffffffffffffffff,%r12
  412. 0x000000000051112c <+316>: jne 0x5112d3 <unicodekeys_lookup_unicode+739>
  413. 0x0000000000511132 <+322>: mov $0xffffffffffffffff,%r12
  414. 0x0000000000511139 <+329>: jmp 0x511112 <unicodekeys_lookup_unicode+290>
  415. 0x000000000051113b <+331>: nopl 0x0(%rax,%rax,1)
  416.  
  417. ./Include/cpython/unicodeobject.h:
  418. 280 return _PyASCIIObject_CAST(op)->length;
  419. 0x0000000000511140 <+336>: mov 0x10(%rax),%rsi
  420. 0x0000000000511144 <+340>: cmp 0x10(%rbp),%rsi
  421. 0x0000000000511148 <+344>: jne 0x5111dc <unicodekeys_lookup_unicode+492>
  422.  
  423. Objects/stringlib/eq.h:
  424. 11 if (PyUnicode_GET_LENGTH(a) == 0)
  425. 0x000000000051114e <+350>: test %rsi,%rsi
  426. 0x0000000000511151 <+353>: je 0x511112 <unicodekeys_lookup_unicode+290>
  427.  
  428. 12 return 1;
  429. 13 if (PyUnicode_KIND(a) != PyUnicode_KIND(b))
  430. 0x0000000000511153 <+355>: movzbl 0x20(%rax),%edi
  431. 0x0000000000511157 <+359>: movzbl 0x20(%rbp),%edx
  432. 0x000000000051115b <+363>: xor %edi,%edx
  433. 0x000000000051115d <+365>: and $0x1c,%edx
  434. 0x0000000000511160 <+368>: jne 0x5111dc <unicodekeys_lookup_unicode+492>
  435.  
  436. 14 return 0;
  437. 15 return memcmp(PyUnicode_1BYTE_DATA(a), PyUnicode_1BYTE_DATA(b),
  438. 0x0000000000511162 <+370>: mov %edi,%edx
  439. 0x0000000000511164 <+372>: shr $0x2,%dl
  440. 0x0000000000511167 <+375>: and $0x7,%edx
  441. 0x000000000051116a <+378>: imul %rsi,%rdx
  442.  
  443. ./Include/cpython/unicodeobject.h:
  444. 262 if (PyUnicode_IS_COMPACT(op)) {
  445. 0x000000000051116e <+382>: movzbl 0x20(%rbp),%esi
  446. 0x0000000000511172 <+386>: test $0x20,%sil
  447. 0x0000000000511176 <+390>: je 0x4224a8 <unicodekeys_lookup_unicode-977736>
  448.  
  449. 263 return _PyUnicode_COMPACT_DATA(op);
  450. 0x000000000051117c <+396>: and $0x40,%esi
  451. 0x000000000051117f <+399>: je 0x511306 <unicodekeys_lookup_unicode+790>
  452.  
  453. 248 return _Py_STATIC_CAST(void*, (_PyASCIIObject_CAST(op) + 1));
  454. 0x0000000000511185 <+405>: mov %r10,%rsi
  455.  
  456. 251 }
  457. 252
  458. 253 static inline void* _PyUnicode_NONCOMPACT_DATA(PyObject *op) {
  459. 254 void *data;
  460. 255 assert(!PyUnicode_IS_COMPACT(op));
  461. 256 data = _PyUnicodeObject_CAST(op)->data.any;
  462. 257 assert(data != NULL);
  463. 258 return data;
  464. 259 }
  465. 260
  466. 261 static inline void* PyUnicode_DATA(PyObject *op) {
  467. 262 if (PyUnicode_IS_COMPACT(op)) {
  468. 0x0000000000511188 <+408>: test $0x20,%dil
  469. 0x000000000051118c <+412>: je 0x511329 <unicodekeys_lookup_unicode+825>
  470.  
  471. 263 return _PyUnicode_COMPACT_DATA(op);
  472. 0x0000000000511192 <+418>: and $0x40,%edi
  473. 0x0000000000511195 <+421>: je 0x5112fd <unicodekeys_lookup_unicode+781>
  474.  
  475. 248 return _Py_STATIC_CAST(void*, (_PyASCIIObject_CAST(op) + 1));
  476. 0x000000000051119b <+427>: lea 0x28(%rax),%rdi
  477. 0x000000000051119f <+431>: mov %r10,0x28(%rsp)
  478. 0x00000000005111a4 <+436>: mov %r11,0x20(%rsp)
  479. 0x00000000005111a9 <+441>: mov %r8,0x18(%rsp)
  480. 0x00000000005111ae <+446>: mov %r9,0x10(%rsp)
  481. 0x00000000005111b3 <+451>: mov %ecx,0xc(%rsp)
  482. 0x00000000005111b7 <+455>: callq 0x41c140 <memcmp@plt>
  483. 0x00000000005111bc <+460>: mov 0xc(%rsp),%ecx
  484. 0x00000000005111c0 <+464>: mov 0x10(%rsp),%r9
  485. 0x00000000005111c5 <+469>: test %eax,%eax
  486. 0x00000000005111c7 <+471>: mov 0x18(%rsp),%r8
  487. 0x00000000005111cc <+476>: mov 0x20(%rsp),%r11
  488. 0x00000000005111d1 <+481>: mov 0x28(%rsp),%r10
  489. 0x00000000005111d6 <+486>: je 0x511112 <unicodekeys_lookup_unicode+290>
  490.  
  491. Objects/dictobject.c:
  492. 948 i = mask & (i*5 + perturb + 1);
  493. 0x00000000005111dc <+492>: mov %r9,%rax
  494. 0x00000000005111df <+495>: lea (%r8,%r8,4),%r8
  495. 0x00000000005111e3 <+499>: shr $0x5,%rax
  496. 0x00000000005111e7 <+503>: lea 0x1(%r8,%rax,1),%r8
  497. 0x00000000005111ec <+508>: and %rbx,%r8
  498.  
  499. 949 // Manual loop unrolling
  500. 950 ix = dictkeys_get_index(dk, i);
  501. 0x00000000005111ef <+511>: cmp $0x7,%ecx
  502. 0x00000000005111f2 <+514>: jle 0x511083 <unicodekeys_lookup_unicode+147>
  503. 0x00000000005111f8 <+520>: jmpq 0x5110f0 <unicodekeys_lookup_unicode+256>
  504.  
  505. ./Include/cpython/unicodeobject.h:
  506. 280 return _PyASCIIObject_CAST(op)->length;
  507. 0x00000000005111fd <+525>: mov 0x10(%rax),%rsi
  508. 0x0000000000511201 <+529>: cmp 0x10(%rbp),%rsi
  509. 0x0000000000511205 <+533>: jne 0x51129e <unicodekeys_lookup_unicode+686>
  510.  
  511. Objects/stringlib/eq.h:
  512. 11 if (PyUnicode_GET_LENGTH(a) == 0)
  513. 0x000000000051120b <+539>: test %rsi,%rsi
  514. 0x000000000051120e <+542>: je 0x511112 <unicodekeys_lookup_unicode+290>
  515.  
  516. 12 return 1;
  517. 13 if (PyUnicode_KIND(a) != PyUnicode_KIND(b))
  518. 0x0000000000511214 <+548>: movzbl 0x20(%rax),%edi
  519. 0x0000000000511218 <+552>: mov %edi,%edx
  520. 0x000000000051121a <+554>: xor 0x20(%rbp),%edx
  521. 0x000000000051121d <+557>: and $0x1c,%dl
  522. 0x0000000000511220 <+560>: jne 0x51129e <unicodekeys_lookup_unicode+686>
  523.  
  524. 14 return 0;
  525. 15 return memcmp(PyUnicode_1BYTE_DATA(a), PyUnicode_1BYTE_DATA(b),
  526. 0x0000000000511222 <+562>: mov %edi,%edx
  527. 0x0000000000511224 <+564>: shr $0x2,%dl
  528. 0x0000000000511227 <+567>: and $0x7,%edx
  529. 0x000000000051122a <+570>: imul %rsi,%rdx
  530.  
  531. ./Include/cpython/unicodeobject.h:
  532. 262 if (PyUnicode_IS_COMPACT(op)) {
  533. 0x000000000051122e <+574>: movzbl 0x20(%rbp),%esi
  534. 0x0000000000511232 <+578>: test $0x20,%sil
  535. 0x0000000000511236 <+582>: je 0x422484 <unicodekeys_lookup_unicode.cold>
  536.  
  537. 263 return _PyUnicode_COMPACT_DATA(op);
  538. 0x000000000051123c <+588>: and $0x40,%sil
  539. 0x0000000000511240 <+592>: je 0x511321 <unicodekeys_lookup_unicode+817>
  540.  
  541. 248 return _Py_STATIC_CAST(void*, (_PyASCIIObject_CAST(op) + 1));
  542. 0x0000000000511246 <+598>: mov %r10,%rsi
  543.  
  544. 251 }
  545. 252
  546. 253 static inline void* _PyUnicode_NONCOMPACT_DATA(PyObject *op) {
  547. 254 void *data;
  548. 255 assert(!PyUnicode_IS_COMPACT(op));
  549. 256 data = _PyUnicodeObject_CAST(op)->data.any;
  550. 257 assert(data != NULL);
  551. 258 return data;
  552. 259 }
  553. 260
  554. 261 static inline void* PyUnicode_DATA(PyObject *op) {
  555. 262 if (PyUnicode_IS_COMPACT(op)) {
  556. 0x0000000000511249 <+601>: test $0x20,%dil
  557. 0x000000000051124d <+605>: je 0x42248d <unicodekeys_lookup_unicode-977763>
  558.  
  559. 263 return _PyUnicode_COMPACT_DATA(op);
  560. 0x0000000000511253 <+611>: and $0x40,%dil
  561. 0x0000000000511257 <+615>: je 0x511318 <unicodekeys_lookup_unicode+808>
  562.  
  563. 248 return _Py_STATIC_CAST(void*, (_PyASCIIObject_CAST(op) + 1));
  564. 0x000000000051125d <+621>: lea 0x28(%rax),%rdi
  565. 0x0000000000511261 <+625>: mov %r10,0x28(%rsp)
  566. 0x0000000000511266 <+630>: mov %r11,0x20(%rsp)
  567. 0x000000000051126b <+635>: mov %r8,0x18(%rsp)
  568. 0x0000000000511270 <+640>: mov %r9,0x10(%rsp)
  569. 0x0000000000511275 <+645>: mov %ecx,0xc(%rsp)
  570. 0x0000000000511279 <+649>: callq 0x41c140 <memcmp@plt>
  571. 0x000000000051127e <+654>: mov 0xc(%rsp),%ecx
  572. 0x0000000000511282 <+658>: mov 0x10(%rsp),%r9
  573. 0x0000000000511287 <+663>: test %eax,%eax
  574. 0x0000000000511289 <+665>: mov 0x18(%rsp),%r8
  575. 0x000000000051128e <+670>: mov 0x20(%rsp),%r11
  576. 0x0000000000511293 <+675>: mov 0x28(%rsp),%r10
  577. 0x0000000000511298 <+680>: je 0x511112 <unicodekeys_lookup_unicode+290>
  578.  
  579. Objects/dictobject.c:
  580. 963 perturb >>= PERTURB_SHIFT;
  581. 0x000000000051129e <+686>: shr $0xa,%r9
  582. 964 i = mask & (i*5 + perturb + 1);
  583. 0x00000000005112a2 <+690>: lea (%r8,%r8,4),%r8
  584. 0x00000000005112a6 <+694>: lea 0x1(%r9,%r8,1),%r8
  585. 0x00000000005112ab <+699>: and %rbx,%r8
  586.  
  587. 933 for (;;) {
  588. 0x00000000005112ae <+702>: jmpq 0x511036 <unicodekeys_lookup_unicode+70>
  589. 0x00000000005112b3 <+707>: nopl 0x0(%rax,%rax,1)
  590.  
  591. 355 else if (log2size >= 32) {
  592. 0x00000000005112b8 <+712>: cmp $0x1f,%ecx
  593. 0x00000000005112bb <+715>: jg 0x42249f <unicodekeys_lookup_unicode-977745>
  594.  
  595. 356 const int64_t *indices = (const int64_t*)(keys->dk_indices);
  596. 357 ix = indices[i];
  597. 358 }
  598. 359 #endif
  599. 360 else {
  600. 361 const int32_t *indices = (const int32_t*)(keys->dk_indices);
  601. 362 ix = indices[i];
  602. 0x00000000005112c1 <+721>: movslq (%r15,%r8,4),%r12
  603.  
  604. 935 if (ix >= 0) {
  605. 0x00000000005112c5 <+725>: test %r12,%r12
  606. 0x00000000005112c8 <+728>: jns 0x51104d <unicodekeys_lookup_unicode+93>
  607. 0x00000000005112ce <+734>: jmpq 0x5110d7 <unicodekeys_lookup_unicode+231>
  608.  
  609. 945 return DKIX_EMPTY;
  610. 946 }
  611. 947 perturb >>= PERTURB_SHIFT;
  612. 948 i = mask & (i*5 + perturb + 1);
  613. 0x00000000005112d3 <+739>: mov %r9,%rsi
  614. 0x00000000005112d6 <+742>: lea (%r8,%r8,4),%rdi
  615. 0x00000000005112da <+746>: shr $0x5,%rsi
  616. 0x00000000005112de <+750>: lea 0x1(%rsi,%rdi,1),%r8
  617. 0x00000000005112e3 <+755>: and %rbx,%r8
  618.  
  619. 949 // Manual loop unrolling
  620. 950 ix = dictkeys_get_index(dk, i);
  621. 0x00000000005112e6 <+758>: jmpq 0x511083 <unicodekeys_lookup_unicode+147>
  622.  
  623. 355 else if (log2size >= 32) {
  624. 0x00000000005112eb <+763>: cmp $0x1f,%ecx
  625. 0x00000000005112ee <+766>: jg 0x4224b1 <unicodekeys_lookup_unicode-977727>
  626.  
  627. 356 const int64_t *indices = (const int64_t*)(keys->dk_indices);
  628. 357 ix = indices[i];
  629. 358 }
  630. 359 #endif
  631. 360 else {
  632. 361 const int32_t *indices = (const int32_t*)(keys->dk_indices);
  633. 362 ix = indices[i];
  634. 0x00000000005112f4 <+772>: movslq (%r15,%r8,4),%r12
  635. 0x00000000005112f8 <+776>: jmpq 0x5110fe <unicodekeys_lookup_unicode+270>
  636.  
  637. ./Include/cpython/unicodeobject.h:
  638. 250 return _Py_STATIC_CAST(void*, (_PyCompactUnicodeObject_CAST(op) + 1));
  639. 0x00000000005112fd <+781>: lea 0x38(%rax),%rdi
  640. 0x0000000000511301 <+785>: jmpq 0x51119f <unicodekeys_lookup_unicode+431>
  641. 0x0000000000511306 <+790>: mov %r11,%rsi
  642.  
  643. 251 }
  644. 252
  645. 253 static inline void* _PyUnicode_NONCOMPACT_DATA(PyObject *op) {
  646. 254 void *data;
  647. 255 assert(!PyUnicode_IS_COMPACT(op));
  648. 256 data = _PyUnicodeObject_CAST(op)->data.any;
  649. 257 assert(data != NULL);
  650. 258 return data;
  651. 259 }
  652. 260
  653. 261 static inline void* PyUnicode_DATA(PyObject *op) {
  654. 262 if (PyUnicode_IS_COMPACT(op)) {
  655. 0x0000000000511309 <+793>: test $0x20,%dil
  656. 0x000000000051130d <+797>: jne 0x511192 <unicodekeys_lookup_unicode+418>
  657. 0x0000000000511313 <+803>: jmpq 0x422496 <unicodekeys_lookup_unicode-977754>
  658.  
  659. 250 return _Py_STATIC_CAST(void*, (_PyCompactUnicodeObject_CAST(op) + 1));
  660. 0x0000000000511318 <+808>: lea 0x38(%rax),%rdi
  661. 0x000000000051131c <+812>: jmpq 0x511261 <unicodekeys_lookup_unicode+625>
  662. 0x0000000000511321 <+817>: mov %r11,%rsi
  663. 0x0000000000511324 <+820>: jmpq 0x511249 <unicodekeys_lookup_unicode+601>
  664. 0x0000000000511329 <+825>: jmpq 0x422496 <unicodekeys_lookup_unicode-977754>
  665. Address range 0x422484 to 0x4224ba:
  666. ./Include/cpython/unicodeobject.h:
  667. 253 static inline void* _PyUnicode_NONCOMPACT_DATA(PyObject *op) {
  668. 254 void *data;
  669. 255 assert(!PyUnicode_IS_COMPACT(op));
  670. 256 data = _PyUnicodeObject_CAST(op)->data.any;
  671. 257 assert(data != NULL);
  672. 258 return data;
  673. 259 }
  674. 260
  675. 261 static inline void* PyUnicode_DATA(PyObject *op) {
  676. 262 if (PyUnicode_IS_COMPACT(op)) {
  677. 263 return _PyUnicode_COMPACT_DATA(op);
  678. 264 }
  679. 265 return _PyUnicode_NONCOMPACT_DATA(op);
  680. 0x0000000000422484 <-977772>: mov 0x38(%rbp),%rsi
  681.  
  682. 258 return data;
  683. 0x0000000000422488 <-977768>: jmpq 0x511249 <unicodekeys_lookup_unicode+601>
  684. 259 }
  685. 260
  686. 261 static inline void* PyUnicode_DATA(PyObject *op) {
  687. 262 if (PyUnicode_IS_COMPACT(op)) {
  688. 263 return _PyUnicode_COMPACT_DATA(op);
  689. 264 }
  690. 265 return _PyUnicode_NONCOMPACT_DATA(op);
  691. 0x000000000042248d <-977763>: mov 0x38(%rax),%rdi
  692.  
  693. 258 return data;
  694. 0x0000000000422491 <-977759>: jmpq 0x511261 <unicodekeys_lookup_unicode+625>
  695.  
  696. 259 }
  697. 260
  698. 261 static inline void* PyUnicode_DATA(PyObject *op) {
  699. 262 if (PyUnicode_IS_COMPACT(op)) {
  700. 263 return _PyUnicode_COMPACT_DATA(op);
  701. 264 }
  702. 265 return _PyUnicode_NONCOMPACT_DATA(op);
  703. 0x0000000000422496 <-977754>: mov 0x38(%rax),%rdi
  704.  
  705. 258 return data;
  706. 0x000000000042249a <-977750>: jmpq 0x51119f <unicodekeys_lookup_unicode+431>
  707.  
  708. Objects/dictobject.c:
  709. 357 ix = indices[i];
  710. 0x000000000042249f <-977745>: mov (%r15,%r8,8),%r12
  711. 0x00000000004224a3 <-977741>: jmpq 0x5112c5 <unicodekeys_lookup_unicode+725>
  712.  
  713. ./Include/cpython/unicodeobject.h:
  714. 265 return _PyUnicode_NONCOMPACT_DATA(op);
  715. 0x00000000004224a8 <-977736>: mov 0x38(%rbp),%rsi
  716.  
  717. 258 return data;
  718. 0x00000000004224ac <-977732>: jmpq 0x511309 <unicodekeys_lookup_unicode+793>
  719.  
  720. Objects/dictobject.c:
  721. 357 ix = indices[i];
  722. 0x00000000004224b1 <-977727>: mov (%r15,%r8,8),%r12
  723. 0x00000000004224b5 <-977723>: jmpq 0x5110fe <unicodekeys_lookup_unicode+270>
  724. End of assembler dump.
  725.  
  726.  
  727.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement