(gdb) disas/m 0x7ffff7bc7ad0 Dump of assembler code for function view_spatial_reduce(char*, size_t*, nodelist const*, int, void*): 236 mbb->num = decode_raw16(*((raw_16 *) key)); 0x00007ffff7bc7941 <+33>: movzwl (%r12),%edi 0x00007ffff7bc794b <+43>: callq 0x7ffff7ba23f0 0x00007ffff7bc7954 <+52>: mov %ax,0x6(%rsp) 0x00007ffff7bc7a29 <+265>: movzwl 0x0(%rbp),%edi 0x00007ffff7bc7a32 <+274>: callq 0x7ffff7ba23f0 237 mbb->mbb = (double *)(key + 2); 0x00007ffff7bc7946 <+38>: lea 0x2(%r12),%r15 0x00007ffff7bc7a3c <+284>: lea 0x2(%rbp),%r10 238 return COUCHSTORE_SUCCESS; 239 } 240 241 242 STATIC couchstore_error_t encode_spatial_key(const sized_mbb_t *mbb, 243 char *key, 244 size_t nkey) 245 { 246 raw_16 num = encode_raw16(mbb->num); 0x00007ffff7bc7cfc <+988>: mov %r14d,%edi 0x00007ffff7bc7cff <+991>: callq 0x7ffff7ba1e70 247 248 memcpy(key, &num, 2); 0x00007ffff7bc7d0a <+1002>: mov 0x50(%rsp),%rcx 0x00007ffff7bc7d0f <+1007>: mov %ax,(%rcx) 249 key += 2; 0x00007ffff7bc7d12 <+1010>: lea 0x2(%rcx),%rdi 250 251 cb_assert(mbb->num * sizeof(double) <= nkey); 0x00007ffff7bc7d04 <+996>: movzwl 0x6(%rsp),%r14d 0x00007ffff7bc7d16 <+1014>: shl $0x3,%r14 0x00007ffff7bc7d1a <+1018>: cmp $0xffff,%r14 0x00007ffff7bc7d21 <+1025>: ja 0x7ffff7bc7e09 0x00007ffff7bc7e09 <+1257>: lea 0xaa18(%rip),%rsi # 0x7ffff7bd2828 0x00007ffff7bc7e10 <+1264>: lea 0xaa89(%rip),%rdi # 0x7ffff7bd28a0 0x00007ffff7bc7e17 <+1271>: mov $0xfb,%edx 0x00007ffff7bc7e1c <+1276>: callq 0x7ffff7ba2170 0x00007ffff7bc7e21: nopl 0x0(%rax,%rax,1) 0x00007ffff7bc7e26: nopw %cs:0x0(%rax,%rax,1) 252 memcpy(key, mbb->mbb, mbb->num * sizeof(double)); 0x00007ffff7bc7d27 <+1031>: mov %r14,%rdx 0x00007ffff7bc7d2a <+1034>: mov %r15,%rsi 0x00007ffff7bc7d31 <+1041>: callq 0x7ffff7ba1e00 253 254 return COUCHSTORE_SUCCESS; 255 } 256 257 258 /* Expands the `original` MBB with the `expander` */ 259 STATIC couchstore_error_t expand_mbb(sized_mbb_t *original, 260 sized_mbb_t *expander) { 261 int i; 262 263 cb_assert(original->num == expander->num); 0x00007ffff7bc7a37 <+279>: cmp %ax,0x6(%rsp) 0x00007ffff7bc7a40 <+288>: mov 0x8(%rsp),%rdx 0x00007ffff7bc7a45 <+293>: mov 0x10(%rsp),%rsi 0x00007ffff7bc7a4a <+298>: jne 0x7ffff7bc7df1 0x00007ffff7bc7df1 <+1233>: lea 0xaa30(%rip),%rsi # 0x7ffff7bd2828 0x00007ffff7bc7df8 <+1240>: lea 0xaa81(%rip),%rdi # 0x7ffff7bd2880 0x00007ffff7bc7dff <+1247>: mov $0x107,%edx 0x00007ffff7bc7e04 <+1252>: callq 0x7ffff7ba2170 264 265 for (i = 0; i < original->num; ++i) { 0x00007ffff7bc796d <+77>: movzwl %ax,%r14d 0x00007ffff7bc7971 <+81>: mov %r15,%rax 0x00007ffff7bc7974 <+84>: shr $0x3,%rax 0x00007ffff7bc7978 <+88>: mov %r14d,%esi 0x00007ffff7bc797b <+91>: mov %eax,%ebx 0x00007ffff7bc797d <+93>: lea -0x1(%r14),%eax 0x00007ffff7bc7981 <+97>: and $0x1,%ebx 0x00007ffff7bc7984 <+100>: lea 0x1(%rbx),%edi 0x00007ffff7bc7987 <+103>: cmp $0x1,%ebx 0x00007ffff7bc798a <+106>: mov %eax,0x18(%rsp) 0x00007ffff7bc798e <+110>: sbb %eax,%eax 0x00007ffff7bc7990 <+112>: sub %ebx,%esi 0x00007ffff7bc7992 <+114>: mov %ebx,0x34(%rsp) 0x00007ffff7bc7996 <+118>: mov %edi,0x8(%rsp) 0x00007ffff7bc799a <+122>: lea 0x2(%rbx),%edi 0x00007ffff7bc799d <+125>: add $0x4,%eax 0x00007ffff7bc79a0 <+128>: mov %esi,%r13d 0x00007ffff7bc79a3 <+131>: mov %eax,0x1c(%rsp) 0x00007ffff7bc79a7 <+135>: mov %esi,0x40(%rsp) 0x00007ffff7bc79ab <+139>: mov %edi,0x10(%rsp) 0x00007ffff7bc79af <+143>: lea 0x3(%rbx),%edi 0x00007ffff7bc79b2 <+146>: and $0xfffffffc,%esi 0x00007ffff7bc79b5 <+149>: movd 0x10(%rsp),%xmm0 0x00007ffff7bc79bb <+155>: mov %ebx,0x10(%rsp) 0x00007ffff7bc79bf <+159>: mov %ebx,%eax 0x00007ffff7bc79c1 <+161>: mov %edi,0x30(%rsp) 0x00007ffff7bc79c5 <+165>: movd 0x10(%rsp),%xmm1 0x00007ffff7bc79cb <+171>: mov %ebx,%edi 0x00007ffff7bc79cd <+173>: movd 0x30(%rsp),%xmm7 0x00007ffff7bc79d3 <+179>: add %esi,%eax 0x00007ffff7bc79d5 <+181>: shl $0x3,%rdi 0x00007ffff7bc79d9 <+185>: lea 0x2(%rdi),%rbx 0x00007ffff7bc79dd <+189>: mov %eax,0x30(%rsp) 0x00007ffff7bc79e1 <+193>: cltq 0x00007ffff7bc79e3 <+195>: punpckldq %xmm7,%xmm0 0x00007ffff7bc79e7 <+199>: movd 0x8(%rsp),%xmm7 0x00007ffff7bc79ed <+205>: shl $0x3,%rax 0x00007ffff7bc79f1 <+209>: mov %rbx,0x38(%rsp) 0x00007ffff7bc79f6 <+214>: mov %esi,0x44(%rsp) 0x00007ffff7bc79fa <+218>: punpckldq %xmm7,%xmm1 0x00007ffff7bc79fe <+222>: mov %r15,%rsi 0x00007ffff7bc7a01 <+225>: shr $0x2,%r13d 0x00007ffff7bc7a05 <+229>: mov %r14d,%r15d 0x00007ffff7bc7a08 <+232>: add %r12,%rbx 0x00007ffff7bc7a0b <+235>: mov %rax,0x48(%rsp) 0x00007ffff7bc7a10 <+240>: mov %ecx,%r14d 0x00007ffff7bc7a13 <+243>: movdqa %xmm1,%xmm7 0x00007ffff7bc7a17 <+247>: punpcklqdq %xmm0,%xmm7 0x00007ffff7bc7a1b <+251>: movaps %xmm7,0x20(%rsp) 0x00007ffff7bc7a50 <+304>: test %r15d,%r15d 0x00007ffff7bc7a53 <+307>: je 0x7ffff7bc7ce0 0x00007ffff7bc7a59 <+313>: lea 0x22(%r12),%rax 0x00007ffff7bc7a5e <+318>: cmp %rax,%r10 0x00007ffff7bc7a61 <+321>: lea 0x22(%rbp),%rax 0x00007ffff7bc7a65 <+325>: setae %dil 0x00007ffff7bc7a69 <+329>: cmp %rax,%rsi 0x00007ffff7bc7a6c <+332>: setae %al 0x00007ffff7bc7a6f <+335>: or %al,%dil 0x00007ffff7bc7a72 <+338>: je 0x7ffff7bc7da0 0x00007ffff7bc7a78 <+344>: cmpw $0x5,0x6(%rsp) 0x00007ffff7bc7a7e <+350>: jbe 0x7ffff7bc7da0 0x00007ffff7bc7a84 <+356>: mov 0x1c(%rsp),%ecx 0x00007ffff7bc7a88 <+360>: cmp %ecx,0x18(%rsp) 0x00007ffff7bc7a8c <+364>: jb 0x7ffff7bc7d50 0x00007ffff7bc7a92 <+370>: mov 0x34(%rsp),%eax 0x00007ffff7bc7a96 <+374>: test %eax,%eax 0x00007ffff7bc7a98 <+376>: je 0x7ffff7bc7aad 0x00007ffff7bc7a9a <+378>: movsd 0x2(%r12),%xmm0 0x00007ffff7bc7c48 <+808>: lea 0x1(%rax),%r9d 0x00007ffff7bc7c4c <+812>: cmp %r9d,%r15d 0x00007ffff7bc7c4f <+815>: jle 0x7ffff7bc7ce0 0x00007ffff7bc7c55 <+821>: movslq %r9d,%rdi 0x00007ffff7bc7c58 <+824>: shl $0x3,%rdi 0x00007ffff7bc7c7e <+862>: lea 0x2(%rax),%edi 0x00007ffff7bc7c81 <+865>: cmp %edi,%r15d 0x00007ffff7bc7c84 <+868>: jle 0x7ffff7bc7ce0 0x00007ffff7bc7c86 <+870>: movslq %edi,%r9 0x00007ffff7bc7caa <+906>: add $0x3,%eax 0x00007ffff7bc7cad <+909>: cmp %eax,%r15d 0x00007ffff7bc7cb0 <+912>: jle 0x7ffff7bc7ce0 0x00007ffff7bc7cb2 <+914>: movslq %eax,%rdi 0x00007ffff7bc7cb5 <+917>: shl $0x3,%rdi 0x00007ffff7bc7d57 <+1079>: mov %rsi,%rdi 0x00007ffff7bc7d5a <+1082>: movsd 0x2(%rbp),%xmm0 0x00007ffff7bc7d5f <+1087>: xor %eax,%eax 0x00007ffff7bc7da4 <+1156>: xor %eax,%eax 0x00007ffff7bc7da6 <+1158>: add $0x1,%rdi 0x00007ffff7bc7daa <+1162>: jmp 0x7ffff7bc7dc8 0x00007ffff7bc7dac <+1164>: nopl 0x0(%rax) 0x00007ffff7bc7dbf <+1183>: cmp %rax,%rdi 0x00007ffff7bc7dc2 <+1186>: je 0x7ffff7bc7ce0 266 if (i % 2 == 0) { 0x00007ffff7bc7ab2 <+402>: pxor %xmm5,%xmm5 0x00007ffff7bc7b15 <+501>: movdqa 0xae53(%rip),%xmm3 # 0x7ffff7bd2970 0x00007ffff7bc7b27 <+519>: pand %xmm7,%xmm3 0x00007ffff7bc7b2b <+523>: paddd 0x8d1d(%rip),%xmm7 # 0x7ffff7bd0850 0x00007ffff7bc7b3b <+539>: pcmpeqd %xmm5,%xmm3 0x00007ffff7bc7b3f <+543>: shufps $0x88,%xmm1,%xmm0 0x00007ffff7bc7b6e <+590>: movdqa %xmm3,%xmm2 0x00007ffff7bc7b77 <+599>: pcmpeqd %xmm5,%xmm2 0x00007ffff7bc7b7b <+603>: pand %xmm2,%xmm1 0x00007ffff7bc7c30 <+784>: mov 0x30(%rsp),%eax 0x00007ffff7bc7c34 <+788>: movsd (%rdi),%xmm1 0x00007ffff7bc7c38 <+792>: test $0x1,%al 0x00007ffff7bc7c3a <+794>: je 0x7ffff7bc7d61 0x00007ffff7bc7c5c <+828>: and $0x1,%r9d 0x00007ffff7bc7c60 <+832>: lea (%rsi,%rdi,1),%r11 0x00007ffff7bc7c64 <+836>: movsd 0x2(%rbp,%rdi,1),%xmm0 0x00007ffff7bc7c6a <+842>: movsd (%r11),%xmm1 0x00007ffff7bc7c6f <+847>: je 0x7ffff7bc7d70 0x00007ffff7bc7c89 <+873>: and $0x1,%edi 0x00007ffff7bc7c8c <+876>: lea (%rsi,%r9,8),%r11 0x00007ffff7bc7c90 <+880>: movsd (%r10,%r9,8),%xmm0 0x00007ffff7bc7c96 <+886>: movsd (%r11),%xmm1 0x00007ffff7bc7c9b <+891>: je 0x7ffff7bc7d80 0x00007ffff7bc7cb9 <+921>: test $0x1,%al 0x00007ffff7bc7cbb <+923>: lea (%rsi,%rdi,1),%r9 0x00007ffff7bc7cbf <+927>: movsd 0x2(%rbp,%rdi,1),%xmm0 0x00007ffff7bc7cc5 <+933>: movsd (%r9),%xmm1 0x00007ffff7bc7cca <+938>: jne 0x7ffff7bc7d90 0x00007ffff7bc7dc8 <+1192>: test $0x1,%al 0x00007ffff7bc7dca <+1194>: movsd 0x2(%r12,%rax,8),%xmm1 0x00007ffff7bc7dd1 <+1201>: movsd 0x2(%rbp,%rax,8),%xmm0 0x00007ffff7bc7dd7 <+1207>: jne 0x7ffff7bc7db0 267 original->mbb[i] = MIN(original->mbb[i], expander->mbb[i]); 0x00007ffff7bc7aa1 <+385>: minsd 0x2(%rbp),%xmm0 0x00007ffff7bc7aa6 <+390>: movsd %xmm0,0x2(%r12) 0x00007ffff7bc7aad <+397>: mov 0x38(%rsp),%rax 0x00007ffff7bc7ab6 <+406>: pcmpeqd %xmm6,%xmm6 0x00007ffff7bc7aba <+410>: xor %edi,%edi 0x00007ffff7bc7abc <+412>: movdqa 0x20(%rsp),%xmm7 0x00007ffff7bc7ac2 <+418>: lea 0x0(%rbp,%rax,1),%r9 0x00007ffff7bc7ac7 <+423>: xor %eax,%eax 0x00007ffff7bc7ac9 <+425>: nopl 0x0(%rax) 0x00007ffff7bc7ad0 <+432>: movapd (%rbx,%rax,1),%xmm15 0x00007ffff7bc7aea <+458>: movapd %xmm15,%xmm0 0x00007ffff7bc7aef <+463>: movupd (%r9,%rax,1),%xmm14 0x00007ffff7bc7af5 <+469>: movapd %xmm9,%xmm1 0x00007ffff7bc7afa <+474>: movupd 0x10(%r9,%rax,1),%xmm4 0x00007ffff7bc7b01 <+481>: cmpltpd %xmm14,%xmm0 0x00007ffff7bc7b10 <+496>: cmpltpd %xmm4,%xmm1 0x00007ffff7bc7b1d <+509>: pxor %xmm6,%xmm0 0x00007ffff7bc7b33 <+531>: pxor %xmm6,%xmm1 0x00007ffff7bc7cd0 <+944>: minsd %xmm0,%xmm1 0x00007ffff7bc7cd4 <+948>: movsd %xmm1,(%r9) 0x00007ffff7bc7cd9 <+953>: nopl 0x0(%rax) 0x00007ffff7bc7d61 <+1089>: minsd %xmm0,%xmm1 0x00007ffff7bc7d65 <+1093>: movsd %xmm1,(%rdi) 0x00007ffff7bc7d69 <+1097>: jmpq 0x7ffff7bc7c48 0x00007ffff7bc7d6e <+1102>: xchg %ax,%ax 0x00007ffff7bc7d70 <+1104>: minsd %xmm0,%xmm1 0x00007ffff7bc7d74 <+1108>: movsd %xmm1,(%r11) 0x00007ffff7bc7d79 <+1113>: jmpq 0x7ffff7bc7c7e 0x00007ffff7bc7d7e <+1118>: xchg %ax,%ax 0x00007ffff7bc7d80 <+1120>: minsd %xmm0,%xmm1 0x00007ffff7bc7d84 <+1124>: movsd %xmm1,(%r11) 0x00007ffff7bc7d89 <+1129>: jmpq 0x7ffff7bc7caa 0x00007ffff7bc7d8e <+1134>: xchg %ax,%ax 0x00007ffff7bc7dd9 <+1209>: minsd %xmm0,%xmm1 0x00007ffff7bc7ddd <+1213>: movsd %xmm1,0x2(%r12,%rax,8) 0x00007ffff7bc7de4 <+1220>: jmp 0x7ffff7bc7dbb 0x00007ffff7bc7de6 <+1222>: movzwl 0x6(%rsp),%r14d 0x00007ffff7bc7dec <+1228>: jmpq 0x7ffff7bc7cfc 268 } else { 269 original->mbb[i] = MAX(original->mbb[i], expander->mbb[i]); 0x00007ffff7bc7ad6 <+438>: movdqa %xmm5,%xmm12 0x00007ffff7bc7adb <+443>: movdqa %xmm5,%xmm13 0x00007ffff7bc7ae0 <+448>: add $0x1,%edi 0x00007ffff7bc7ae3 <+451>: movapd 0x10(%rbx,%rax,1),%xmm9 0x00007ffff7bc7b07 <+487>: movapd %xmm14,%xmm10 0x00007ffff7bc7b0c <+492>: movapd %xmm4,%xmm2 0x00007ffff7bc7b21 <+513>: cmpltpd %xmm9,%xmm2 0x00007ffff7bc7b37 <+535>: pxor %xmm6,%xmm2 0x00007ffff7bc7b43 <+547>: movapd %xmm14,%xmm1 0x00007ffff7bc7b48 <+552>: movdqa %xmm3,%xmm8 0x00007ffff7bc7b4d <+557>: pcmpgtd %xmm3,%xmm13 0x00007ffff7bc7b52 <+562>: cmpltpd %xmm15,%xmm1 0x00007ffff7bc7b58 <+568>: pand %xmm3,%xmm0 0x00007ffff7bc7b5c <+572>: punpckldq %xmm13,%xmm8 0x00007ffff7bc7b61 <+577>: pxor %xmm6,%xmm1 0x00007ffff7bc7b65 <+581>: pcmpgtd %xmm0,%xmm12 0x00007ffff7bc7b6a <+586>: shufps $0x88,%xmm2,%xmm1 0x00007ffff7bc7b72 <+594>: punpckhdq %xmm13,%xmm3 0x00007ffff7bc7b7f <+607>: movdqa %xmm0,%xmm2 0x00007ffff7bc7b83 <+611>: punpckhdq %xmm12,%xmm0 0x00007ffff7bc7b88 <+616>: punpckldq %xmm12,%xmm2 0x00007ffff7bc7b8d <+621>: movdqa %xmm1,%xmm11 0x00007ffff7bc7b92 <+626>: andpd %xmm2,%xmm10 0x00007ffff7bc7b97 <+631>: andnpd %xmm15,%xmm2 0x00007ffff7bc7b9c <+636>: orpd %xmm10,%xmm2 0x00007ffff7bc7ba1 <+641>: movdqa %xmm5,%xmm10 0x00007ffff7bc7ba6 <+646>: pcmpgtd %xmm1,%xmm10 0x00007ffff7bc7bab <+651>: andpd %xmm8,%xmm2 0x00007ffff7bc7bb0 <+656>: punpckldq %xmm10,%xmm11 0x00007ffff7bc7bb5 <+661>: punpckhdq %xmm10,%xmm1 0x00007ffff7bc7bba <+666>: andpd %xmm11,%xmm14 0x00007ffff7bc7bbf <+671>: andnpd %xmm15,%xmm11 0x00007ffff7bc7bc4 <+676>: orpd %xmm14,%xmm11 0x00007ffff7bc7bc9 <+681>: andnpd %xmm11,%xmm8 0x00007ffff7bc7bce <+686>: orpd %xmm8,%xmm2 0x00007ffff7bc7bd3 <+691>: movaps %xmm2,(%rbx,%rax,1) 0x00007ffff7bc7bd7 <+695>: movapd %xmm4,%xmm2 0x00007ffff7bc7bdb <+699>: andpd %xmm1,%xmm4 0x00007ffff7bc7bdf <+703>: andpd %xmm0,%xmm2 0x00007ffff7bc7be3 <+707>: andnpd %xmm9,%xmm1 0x00007ffff7bc7be8 <+712>: andnpd %xmm9,%xmm0 0x00007ffff7bc7bed <+717>: orpd %xmm4,%xmm1 0x00007ffff7bc7bf1 <+721>: orpd %xmm2,%xmm0 0x00007ffff7bc7bf5 <+725>: andpd %xmm3,%xmm0 0x00007ffff7bc7bf9 <+729>: andnpd %xmm1,%xmm3 0x00007ffff7bc7bfd <+733>: orpd %xmm3,%xmm0 0x00007ffff7bc7c01 <+737>: movaps %xmm0,0x10(%rbx,%rax,1) 0x00007ffff7bc7c06 <+742>: add $0x20,%rax 0x00007ffff7bc7c0a <+746>: cmp %r13d,%edi 0x00007ffff7bc7c0d <+749>: jb 0x7ffff7bc7ad0 0x00007ffff7bc7c13 <+755>: mov 0x44(%rsp),%ecx 0x00007ffff7bc7c17 <+759>: cmp %ecx,0x40(%rsp) 0x00007ffff7bc7c1b <+763>: je 0x7ffff7bc7ce0 0x00007ffff7bc7c21 <+769>: mov 0x48(%rsp),%rax 0x00007ffff7bc7c26 <+774>: lea (%rsi,%rax,1),%rdi 0x00007ffff7bc7c2a <+778>: movsd 0x2(%rbp,%rax,1),%xmm0 0x00007ffff7bc7c40 <+800>: maxsd %xmm0,%xmm1 0x00007ffff7bc7c44 <+804>: movsd %xmm1,(%rdi) 0x00007ffff7bc7c75 <+853>: maxsd %xmm0,%xmm1 0x00007ffff7bc7c79 <+857>: movsd %xmm1,(%r11) 0x00007ffff7bc7ca1 <+897>: maxsd %xmm0,%xmm1 0x00007ffff7bc7ca5 <+901>: movsd %xmm1,(%r11) 0x00007ffff7bc7d90 <+1136>: maxsd %xmm0,%xmm1 0x00007ffff7bc7d94 <+1140>: movsd %xmm1,(%r9) 0x00007ffff7bc7d99 <+1145>: jmpq 0x7ffff7bc7ce0 0x00007ffff7bc7d9e <+1150>: xchg %ax,%ax 0x00007ffff7bc7da0 <+1152>: mov 0x18(%rsp),%edi 0x00007ffff7bc7db0 <+1168>: maxsd %xmm0,%xmm1 0x00007ffff7bc7db4 <+1172>: movsd %xmm1,0x2(%r12,%rax,8) 0x00007ffff7bc7dbb <+1179>: add $0x1,%rax 270 } 271 } 272 273 return COUCHSTORE_SUCCESS; 274 } 275 276 277 /* This reduce function is also used for the re-reduce */ 278 couchstore_error_t view_spatial_reduce(char *dst, 279 size_t *size_r, 280 const nodelist *leaflist, 281 int count, 282 void *ctx) 283 { 0x00007ffff7bc7920 <+0>: push %r15 0x00007ffff7bc7922 <+2>: push %r14 0x00007ffff7bc7924 <+4>: push %r13 0x00007ffff7bc7926 <+6>: push %r12 0x00007ffff7bc7928 <+8>: push %rbp 0x00007ffff7bc7929 <+9>: push %rbx 0x00007ffff7bc792a <+10>: mov %rdx,%rbx 0x00007ffff7bc792d <+13>: mov %ecx,%ebp 0x00007ffff7bc792f <+15>: sub $0x68,%rsp 0x00007ffff7bc7937 <+23>: mov %rdi,0x50(%rsp) 0x00007ffff7bc793c <+28>: mov %rsi,0x58(%rsp) 284 sized_mbb_t enclosing; 285 sized_mbb_t tmp_mbb; 286 const nodelist *i; 287 (void) ctx; 288 289 decode_spatial_key(leaflist->key.buf, &enclosing); 0x00007ffff7bc7933 <+19>: mov 0x10(%rdx),%r12 290 count--; 291 292 for (i = leaflist->next; i != NULL && count > 0; i = i->next, count--) { 0x00007ffff7bc7950 <+48>: mov 0x28(%rbx),%rdx 0x00007ffff7bc7959 <+57>: test %rdx,%rdx 0x00007ffff7bc795c <+60>: je 0x7ffff7bc7de6 0x00007ffff7bc7962 <+66>: lea -0x1(%rbp),%ecx 0x00007ffff7bc7965 <+69>: test %ecx,%ecx 0x00007ffff7bc7967 <+71>: jle 0x7ffff7bc7de6 0x00007ffff7bc7ce0 <+960>: mov 0x28(%rdx),%rdx 0x00007ffff7bc7ce4 <+964>: sub $0x1,%r14d 0x00007ffff7bc7ce8 <+968>: test %rdx,%rdx 0x00007ffff7bc7ceb <+971>: je 0x7ffff7bc7cf6 0x00007ffff7bc7ced <+973>: test %r14d,%r14d 0x00007ffff7bc7cf0 <+976>: jg 0x7ffff7bc7a20 0x00007ffff7bc7cf6 <+982>: mov %r15d,%r14d 0x00007ffff7bc7cf9 <+985>: mov %rsi,%r15 293 decode_spatial_key(i->key.buf, &tmp_mbb); 0x00007ffff7bc7a20 <+256>: mov 0x10(%rdx),%rbp 0x00007ffff7bc7a24 <+260>: mov %rsi,0x10(%rsp) 0x00007ffff7bc7a2d <+269>: mov %rdx,0x8(%rsp) 294 expand_mbb(&enclosing, &tmp_mbb); 295 } 296 297 encode_spatial_key(&enclosing, dst, MAX_REDUCTION_SIZE); 298 /* 2 is the prefix with the number of doubles */ 299 *size_r = 2 + (enclosing.num * sizeof(double)); 0x00007ffff7bc7d2d <+1037>: add $0x2,%r14 0x00007ffff7bc7d36 <+1046>: mov 0x58(%rsp),%rax 0x00007ffff7bc7d3b <+1051>: mov %r14,(%rax) 300 301 return COUCHSTORE_SUCCESS; 302 } 0x00007ffff7bc7d3e <+1054>: add $0x68,%rsp 0x00007ffff7bc7d42 <+1058>: xor %eax,%eax 0x00007ffff7bc7d44 <+1060>: pop %rbx 0x00007ffff7bc7d45 <+1061>: pop %rbp 0x00007ffff7bc7d46 <+1062>: pop %r12 0x00007ffff7bc7d48 <+1064>: pop %r13 0x00007ffff7bc7d4a <+1066>: pop %r14 0x00007ffff7bc7d4c <+1068>: pop %r15 0x00007ffff7bc7d4e <+1070>: retq 0x00007ffff7bc7d4f <+1071>: nop 0x00007ffff7bc7d50 <+1072>: movsd 0x2(%r12),%xmm1 End of assembler dump.